summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:49 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:49 +0000
commit3e77e75b5a28b1b5a258396f4f15a61c9f3dc87c (patch)
tree42d6da65aa200c129a1d52dd9e9e33168f626df6
R6.6 is the Xorg base-lineXORG-MAIN
-rw-r--r--hardcopy/BDF/bdf.PS.gzbin0 -> 7679 bytes
-rw-r--r--hardcopy/CTEXT/ctext.PS.gzbin0 -> 12274 bytes
-rw-r--r--hardcopy/FSProtocol/fsproto.PS.gzbin0 -> 50115 bytes
-rw-r--r--hardcopy/ICCCM/icccm.PS.gzbin0 -> 115718 bytes
-rw-r--r--hardcopy/ICCCM/icccm.idx.PS.gzbin0 -> 4881 bytes
-rw-r--r--hardcopy/ICE/ICElib.PS.gzbin0 -> 53783 bytes
-rw-r--r--hardcopy/ICE/ice.PS.gzbin0 -> 28767 bytes
-rw-r--r--hardcopy/RX/RX.PS.gzbin0 -> 32232 bytes
-rw-r--r--hardcopy/SM/SMlib.PS.gzbin0 -> 47603 bytes
-rw-r--r--hardcopy/SM/xsmp.PS.gzbin0 -> 26280 bytes
-rw-r--r--hardcopy/X11/xlib.PS.gzbin0 -> 585804 bytes
-rw-r--r--hardcopy/X11/xlib.idx.PS.gzbin0 -> 32810 bytes
-rw-r--r--hardcopy/XDMCP/xdmcp.PS.gzbin0 -> 27984 bytes
-rw-r--r--hardcopy/XIM/xim.PS.gzbin0 -> 56133 bytes
-rw-r--r--hardcopy/XKB/XKBlib.ps.gzbin0 -> 429591 bytes
-rw-r--r--hardcopy/XKB/XKBproto.ps.gzbin0 -> 247084 bytes
-rw-r--r--hardcopy/XLFD/xlfd.PS.gzbin0 -> 45434 bytes
-rw-r--r--hardcopy/XPRINT/xp_library.PS.gzbin0 -> 79072 bytes
-rw-r--r--hardcopy/XPRINT/xp_proto.PS.gzbin0 -> 58410 bytes
-rw-r--r--hardcopy/XProtocol/proto.PS.gzbin0 -> 203675 bytes
-rw-r--r--hardcopy/XProtocol/proto.idx.PS.gzbin0 -> 10950 bytes
-rw-r--r--hardcopy/Xaw/widg.idx.PS.gzbin0 -> 9522 bytes
-rw-r--r--hardcopy/Xaw/widgets.PS.gzbin0 -> 191315 bytes
-rw-r--r--hardcopy/Xext/AppGroup.PS.gzbin0 -> 38732 bytes
-rw-r--r--hardcopy/Xext/DPMS.PS.gzbin0 -> 9342 bytes
-rw-r--r--hardcopy/Xext/DPMSLib.PS.gzbin0 -> 7948 bytes
-rw-r--r--hardcopy/Xext/bigreq.PS.gzbin0 -> 6182 bytes
-rw-r--r--hardcopy/Xext/buffer.PS.gzbin0 -> 24499 bytes
-rw-r--r--hardcopy/Xext/dbe.PS.gzbin0 -> 53990 bytes
-rw-r--r--hardcopy/Xext/dbelib.PS.gzbin0 -> 48063 bytes
-rw-r--r--hardcopy/Xext/evi.PS.gzbin0 -> 8170 bytes
-rw-r--r--hardcopy/Xext/lbx.PS.gzbin0 -> 67712 bytes
-rw-r--r--hardcopy/Xext/lbx.html3331
-rw-r--r--hardcopy/Xext/lbxTOC.html308
-rw-r--r--hardcopy/Xext/lbxalg.PS.gzbin0 -> 21700 bytes
-rw-r--r--hardcopy/Xext/mit-shm.PS.gzbin0 -> 13217 bytes
-rw-r--r--hardcopy/Xext/record.PS.gzbin0 -> 22701 bytes
-rw-r--r--hardcopy/Xext/recordlib.PS.gzbin0 -> 20652 bytes
-rw-r--r--hardcopy/Xext/security.PS.gzbin0 -> 54147 bytes
-rw-r--r--hardcopy/Xext/shape.PS.gzbin0 -> 15263 bytes
-rw-r--r--hardcopy/Xext/shapelib.PS.gzbin0 -> 12560 bytes
-rw-r--r--hardcopy/Xext/sync.PS.gzbin0 -> 50578 bytes
-rw-r--r--hardcopy/Xext/synclib.PS.gzbin0 -> 44580 bytes
-rw-r--r--hardcopy/Xext/tog-cup.PS.gzbin0 -> 9431 bytes
-rw-r--r--hardcopy/Xext/xc-misc.PS.gzbin0 -> 6262 bytes
-rw-r--r--hardcopy/Xext/xtest.PS.gzbin0 -> 10832 bytes
-rw-r--r--hardcopy/Xext/xtestlib.PS.gzbin0 -> 9869 bytes
-rw-r--r--hardcopy/Xi/lib.PS.gzbin0 -> 77589 bytes
-rw-r--r--hardcopy/Xi/port.PS.gzbin0 -> 19489 bytes
-rw-r--r--hardcopy/Xi/proto.PS.gzbin0 -> 63660 bytes
-rw-r--r--hardcopy/Xmu/xmu.PS.gzbin0 -> 30231 bytes
-rw-r--r--hardcopy/Xserver/Xprt.PS.gzbin0 -> 75720 bytes
-rw-r--r--hardcopy/Xserver/analysis.PS.gzbin0 -> 63144 bytes
-rw-r--r--hardcopy/Xserver/appgroup.PS.gzbin0 -> 7458 bytes
-rw-r--r--hardcopy/Xserver/ddx.PS.gzbin0 -> 101969 bytes
-rw-r--r--hardcopy/Xserver/fontlib.PS.gzbin0 -> 10474 bytes
-rw-r--r--hardcopy/Xserver/secint.PS.gzbin0 -> 29100 bytes
-rw-r--r--hardcopy/Xt/intr.idx.PS.gzbin0 -> 20362 bytes
-rw-r--r--hardcopy/Xt/intrinsics.PS.gzbin0 -> 382552 bytes
-rw-r--r--hardcopy/i18n/Framework.PS.gzbin0 -> 19798 bytes
-rw-r--r--hardcopy/i18n/LocaleDB.PS.gzbin0 -> 10194 bytes
-rw-r--r--hardcopy/i18n/Trans.PS.gzbin0 -> 15350 bytes
-rw-r--r--hardcopy/man/man.PS.gzbin0 -> 602262 bytes
-rw-r--r--hardcopy/rstart/rstart.PS.gzbin0 -> 29840 bytes
-rw-r--r--hardcopy/xfs/design.PS.gzbin0 -> 36144 bytes
-rw-r--r--hardcopy/xtrans/Xtrans.PS.gzbin0 -> 21239 bytes
-rw-r--r--misc/xlogo.epsi100
-rw-r--r--registry1676
-rw-r--r--sgml/LynxOS.sgml736
-rw-r--r--sgml/NetBSD.sgml601
-rw-r--r--sgml/OpenBSD.sgml488
-rw-r--r--sgml/README.sgml1103
-rw-r--r--sgml/SCO.sgml536
-rw-r--r--specs/BDF/bdf.ms270
-rw-r--r--specs/BDF/fig1.ps160
-rw-r--r--specs/BDF/fig2.ps147
-rw-r--r--specs/CTEXT/ctext.tbl.ms449
-rw-r--r--specs/FSProtocol/protocol.ms3601
-rw-r--r--specs/ICCCM/icccm.ms5719
-rw-r--r--specs/ICCCM/indexmacros.t3
-rw-r--r--specs/ICE/ICElib.ms3399
-rw-r--r--specs/ICE/ice.ms1877
-rw-r--r--specs/PM/PM_spec153
-rw-r--r--specs/RX/RX.mif6185
-rw-r--r--specs/SM/SMlib.ms2709
-rw-r--r--specs/SM/xsmp.ms1620
-rw-r--r--specs/X11/AppA604
-rw-r--r--specs/X11/AppB101
-rw-r--r--specs/X11/AppC2230
-rw-r--r--specs/X11/AppD1183
-rw-r--r--specs/X11/CH01663
-rw-r--r--specs/X11/CH022043
-rw-r--r--specs/X11/CH033121
-rw-r--r--specs/X11/CH041595
-rw-r--r--specs/X11/CH05518
-rw-r--r--specs/X11/CH064773
-rw-r--r--specs/X11/CH072357
-rw-r--r--specs/X11/CH083468
-rw-r--r--specs/X11/CH091260
-rw-r--r--specs/X11/CH103886
-rw-r--r--specs/X11/CH111664
-rw-r--r--specs/X11/CH122680
-rw-r--r--specs/X11/CH137673
-rw-r--r--specs/X11/CH143590
-rw-r--r--specs/X11/CH151628
-rw-r--r--specs/X11/CH162364
-rw-r--r--specs/X11/abstract.t102
-rw-r--r--specs/X11/credits.t216
-rw-r--r--specs/X11/glossary1484
-rw-r--r--specs/X11/indexmacros.t3
-rw-r--r--specs/X11/postproc17
-rw-r--r--specs/XDMCP/xdmcp.ms2170
-rw-r--r--specs/XIM/xim.ms4276
-rw-r--r--specs/XKB/Proto/XKBproto.bookbin0 -> 24576 bytes
-rw-r--r--specs/XKB/Proto/dflttrns.fm5bin0 -> 136192 bytes
-rw-r--r--specs/XKB/Proto/encoding.fm5bin0 -> 150528 bytes
-rw-r--r--specs/XKB/Proto/keysyms.fm5bin0 -> 118784 bytes
-rw-r--r--specs/XKB/Proto/protocol.fm5bin0 -> 705536 bytes
-rw-r--r--specs/XKB/Proto/prototoc.docbin0 -> 61440 bytes
-rw-r--r--specs/XKB/Proto/title.fm5bin0 -> 23552 bytes
-rw-r--r--specs/XKB/Proto/types.fm5bin0 -> 49152 bytes
-rw-r--r--specs/XKB/XKBlib/XKBlib.bookbin0 -> 20480 bytes
-rw-r--r--specs/XKB/XKBlib/allchaps.fm5bin0 -> 1544192 bytes
-rw-r--r--specs/XKB/XKBlib/allchaps.ixbin0 -> 133120 bytes
-rw-r--r--specs/XKB/XKBlib/allchaps.lofbin0 -> 36864 bytes
-rw-r--r--specs/XKB/XKBlib/allchaps.lotbin0 -> 41984 bytes
-rw-r--r--specs/XKB/XKBlib/allchaps.ps74364
-rw-r--r--specs/XKB/XKBlib/allchaps.tocbin0 -> 57344 bytes
-rw-r--r--specs/XKB/XKBlib/fonts.fm5bin0 -> 45056 bytes
-rw-r--r--specs/XKB/XKBlib/title.fm5bin0 -> 22528 bytes
-rw-r--r--specs/XLFD/xlfd.tbl.ms2826
-rw-r--r--specs/XPRINT/xp_library.bookbin0 -> 23552 bytes
-rw-r--r--specs/XPRINT/xp_library.mif34917
-rw-r--r--specs/XPRINT/xp_libraryIX.docbin0 -> 29696 bytes
-rw-r--r--specs/XPRINT/xp_libraryTOC.docbin0 -> 19456 bytes
-rw-r--r--specs/XPRINT/xp_library_cov.mif3473
-rw-r--r--specs/XPRINT/xp_proto.bookbin0 -> 22528 bytes
-rw-r--r--specs/XPRINT/xp_proto.mif73304
-rw-r--r--specs/XPRINT/xp_protoIX.docbin0 -> 34816 bytes
-rw-r--r--specs/XPRINT/xp_protoTOC.docbin0 -> 19456 bytes
-rw-r--r--specs/XPRINT/xp_proto_cov.mif3467
-rw-r--r--specs/XProtocol/X11.encoding4431
-rw-r--r--specs/XProtocol/X11.keysyms1411
-rw-r--r--specs/XProtocol/X11.protocol10303
-rw-r--r--specs/XProtocol/glossary1028
-rw-r--r--specs/XProtocol/indexmacros.t3
-rw-r--r--specs/XProtocol/postproc14
-rw-r--r--specs/Xaw/AsciiSink77
-rw-r--r--specs/Xaw/AsciiSource208
-rw-r--r--specs/Xaw/AsciiText166
-rw-r--r--specs/Xaw/Box139
-rw-r--r--specs/Xaw/CH1411
-rw-r--r--specs/Xaw/CH21103
-rw-r--r--specs/Xaw/CH3.intro67
-rw-r--r--specs/Xaw/CH4.intro87
-rw-r--r--specs/Xaw/CH5.intro292
-rw-r--r--specs/Xaw/CH6.intro84
-rw-r--r--specs/Xaw/CH7.intro99
-rw-r--r--specs/Xaw/Command205
-rw-r--r--specs/Xaw/Dialog280
-rw-r--r--specs/Xaw/Form200
-rw-r--r--specs/Xaw/Grip157
-rw-r--r--specs/Xaw/Label122
-rw-r--r--specs/Xaw/List341
-rw-r--r--specs/Xaw/MenuButton215
-rw-r--r--specs/Xaw/Paned492
-rw-r--r--specs/Xaw/Panner247
-rw-r--r--specs/Xaw/Porthole125
-rw-r--r--specs/Xaw/Repeater184
-rw-r--r--specs/Xaw/Scrollbar386
-rw-r--r--specs/Xaw/Simple95
-rw-r--r--specs/Xaw/SimpleMenu315
-rw-r--r--specs/Xaw/Sme106
-rw-r--r--specs/Xaw/SmeBSB125
-rw-r--r--specs/Xaw/SmeLine72
-rw-r--r--specs/Xaw/StripChart160
-rw-r--r--specs/Xaw/TPage_Credits153
-rw-r--r--specs/Xaw/Template426
-rw-r--r--specs/Xaw/Text123
-rw-r--r--specs/Xaw/TextActions506
-rw-r--r--specs/Xaw/TextCustom63
-rw-r--r--specs/Xaw/TextFuncs397
-rw-r--r--specs/Xaw/TextSink420
-rw-r--r--specs/Xaw/TextSource330
-rw-r--r--specs/Xaw/Toggle370
-rw-r--r--specs/Xaw/Tree181
-rw-r--r--specs/Xaw/Viewport156
-rw-r--r--specs/Xaw/Xtk.widg.front134
-rw-r--r--specs/Xaw/Xtk.widgets5960
-rw-r--r--specs/Xaw/block.awk22
-rw-r--r--specs/Xaw/fixindex.awk73
-rw-r--r--specs/Xaw/strings.mit10
-rw-r--r--specs/Xaw/strings.xaw714
-rw-r--r--specs/Xaw/widg.idxmac.t3
-rw-r--r--specs/Xext/AppGroup.mif10667
-rw-r--r--specs/Xext/DPMS.ms462
-rw-r--r--specs/Xext/DPMSLib.ms330
-rw-r--r--specs/Xext/bigreq.ms223
-rw-r--r--specs/Xext/buffer.ms1296
-rw-r--r--specs/Xext/dbe.tex782
-rw-r--r--specs/Xext/dbelib.tex621
-rw-r--r--specs/Xext/evi.ms338
-rw-r--r--specs/Xext/lbx.bookbin0 -> 22528 bytes
-rw-r--r--specs/Xext/lbx.mif56495
-rw-r--r--specs/Xext/lbxalg.mif2690
-rw-r--r--specs/Xext/mit-shm.ms351
-rw-r--r--specs/Xext/record.ms1471
-rw-r--r--specs/Xext/recordlib.ms1408
-rw-r--r--specs/Xext/security.tex830
-rw-r--r--specs/Xext/shape.ms879
-rw-r--r--specs/Xext/shapelib.ms555
-rw-r--r--specs/Xext/sync.tex1006
-rw-r--r--specs/Xext/synclib.tex772
-rw-r--r--specs/Xext/tog-cup.ms395
-rw-r--r--specs/Xext/xc-misc.ms221
-rw-r--r--specs/Xext/xtest.ms483
-rw-r--r--specs/Xext/xtest1.info90
-rw-r--r--specs/Xext/xtest1.mm494
-rw-r--r--specs/Xext/xtestlib.ms446
-rw-r--r--specs/Xi/encoding.ms2016
-rw-r--r--specs/Xi/library.ms6312
-rw-r--r--specs/Xi/porting.ms990
-rw-r--r--specs/Xi/protocol.ms3156
-rw-r--r--specs/Xmu/Xmu.ms2478
-rw-r--r--specs/Xserver/Xprt.bookbin0 -> 25600 bytes
-rw-r--r--specs/Xserver/Xprt.mif42787
-rw-r--r--specs/Xserver/XprtIX.docbin0 -> 38912 bytes
-rw-r--r--specs/Xserver/XprtTOC.docbin0 -> 24576 bytes
-rw-r--r--specs/Xserver/Xprt_cov.mif3054
-rw-r--r--specs/Xserver/analysis.tex1526
-rw-r--r--specs/Xserver/appgroup.ms188
-rw-r--r--specs/Xserver/ddx.tbl.ms5186
-rw-r--r--specs/Xserver/fontlib.ms403
-rw-r--r--specs/Xserver/secint.tex217
-rw-r--r--specs/Xt/CH012471
-rw-r--r--specs/Xt/CH023165
-rw-r--r--specs/Xt/CH031031
-rw-r--r--specs/Xt/CH041998
-rw-r--r--specs/Xt/CH05783
-rw-r--r--specs/Xt/CH061110
-rw-r--r--specs/Xt/CH073555
-rw-r--r--specs/Xt/CH08452
-rw-r--r--specs/Xt/CH093211
-rw-r--r--specs/Xt/CH101521
-rw-r--r--specs/Xt/CH113566
-rw-r--r--specs/Xt/CH121067
-rw-r--r--specs/Xt/CH13805
-rw-r--r--specs/Xt/Xtk.intr.front334
-rw-r--r--specs/Xt/appA107
-rw-r--r--specs/Xt/appB783
-rw-r--r--specs/Xt/appC1204
-rw-r--r--specs/Xt/appD602
-rw-r--r--specs/Xt/appE606
-rw-r--r--specs/Xt/appF125
-rw-r--r--specs/Xt/intr.idxmac.t3
-rw-r--r--specs/Xt/postproc19
-rw-r--r--specs/Xt/strings.mit17
-rw-r--r--specs/i18n/Framework.ms1565
-rw-r--r--specs/i18n/LocaleDB.ms501
-rw-r--r--specs/i18n/Trans.ms1145
-rw-r--r--specs/rstart/fix.awk23
-rw-r--r--specs/rstart/fix.nawk24
-rw-r--r--specs/rstart/fix.sed12
-rw-r--r--specs/rstart/rstart.ms840
-rw-r--r--specs/rstart/rstartd.txt229
-rw-r--r--specs/rstart/tmac.rfc81
-rw-r--r--specs/xfs/FSlib.doc222
-rw-r--r--specs/xfs/design.ms1498
-rw-r--r--specs/xtrans/Xtrans.mm774
-rw-r--r--util/block.awk22
-rw-r--r--util/fixindex.awk73
-rw-r--r--util/indexmacros.t42
-rw-r--r--util/macros.t226
273 files changed, 504412 insertions, 0 deletions
diff --git a/hardcopy/BDF/bdf.PS.gz b/hardcopy/BDF/bdf.PS.gz
new file mode 100644
index 0000000..d6f78a6
--- /dev/null
+++ b/hardcopy/BDF/bdf.PS.gz
Binary files differ
diff --git a/hardcopy/CTEXT/ctext.PS.gz b/hardcopy/CTEXT/ctext.PS.gz
new file mode 100644
index 0000000..227044c
--- /dev/null
+++ b/hardcopy/CTEXT/ctext.PS.gz
Binary files differ
diff --git a/hardcopy/FSProtocol/fsproto.PS.gz b/hardcopy/FSProtocol/fsproto.PS.gz
new file mode 100644
index 0000000..65233d4
--- /dev/null
+++ b/hardcopy/FSProtocol/fsproto.PS.gz
Binary files differ
diff --git a/hardcopy/ICCCM/icccm.PS.gz b/hardcopy/ICCCM/icccm.PS.gz
new file mode 100644
index 0000000..e0d9454
--- /dev/null
+++ b/hardcopy/ICCCM/icccm.PS.gz
Binary files differ
diff --git a/hardcopy/ICCCM/icccm.idx.PS.gz b/hardcopy/ICCCM/icccm.idx.PS.gz
new file mode 100644
index 0000000..9745373
--- /dev/null
+++ b/hardcopy/ICCCM/icccm.idx.PS.gz
Binary files differ
diff --git a/hardcopy/ICE/ICElib.PS.gz b/hardcopy/ICE/ICElib.PS.gz
new file mode 100644
index 0000000..64d544e
--- /dev/null
+++ b/hardcopy/ICE/ICElib.PS.gz
Binary files differ
diff --git a/hardcopy/ICE/ice.PS.gz b/hardcopy/ICE/ice.PS.gz
new file mode 100644
index 0000000..4b5f8d5
--- /dev/null
+++ b/hardcopy/ICE/ice.PS.gz
Binary files differ
diff --git a/hardcopy/RX/RX.PS.gz b/hardcopy/RX/RX.PS.gz
new file mode 100644
index 0000000..695ecc2
--- /dev/null
+++ b/hardcopy/RX/RX.PS.gz
Binary files differ
diff --git a/hardcopy/SM/SMlib.PS.gz b/hardcopy/SM/SMlib.PS.gz
new file mode 100644
index 0000000..06858ff
--- /dev/null
+++ b/hardcopy/SM/SMlib.PS.gz
Binary files differ
diff --git a/hardcopy/SM/xsmp.PS.gz b/hardcopy/SM/xsmp.PS.gz
new file mode 100644
index 0000000..3c6d0b6
--- /dev/null
+++ b/hardcopy/SM/xsmp.PS.gz
Binary files differ
diff --git a/hardcopy/X11/xlib.PS.gz b/hardcopy/X11/xlib.PS.gz
new file mode 100644
index 0000000..d197ff5
--- /dev/null
+++ b/hardcopy/X11/xlib.PS.gz
Binary files differ
diff --git a/hardcopy/X11/xlib.idx.PS.gz b/hardcopy/X11/xlib.idx.PS.gz
new file mode 100644
index 0000000..eeab2ab
--- /dev/null
+++ b/hardcopy/X11/xlib.idx.PS.gz
Binary files differ
diff --git a/hardcopy/XDMCP/xdmcp.PS.gz b/hardcopy/XDMCP/xdmcp.PS.gz
new file mode 100644
index 0000000..b69d845
--- /dev/null
+++ b/hardcopy/XDMCP/xdmcp.PS.gz
Binary files differ
diff --git a/hardcopy/XIM/xim.PS.gz b/hardcopy/XIM/xim.PS.gz
new file mode 100644
index 0000000..9e4c38a
--- /dev/null
+++ b/hardcopy/XIM/xim.PS.gz
Binary files differ
diff --git a/hardcopy/XKB/XKBlib.ps.gz b/hardcopy/XKB/XKBlib.ps.gz
new file mode 100644
index 0000000..d1ba224
--- /dev/null
+++ b/hardcopy/XKB/XKBlib.ps.gz
Binary files differ
diff --git a/hardcopy/XKB/XKBproto.ps.gz b/hardcopy/XKB/XKBproto.ps.gz
new file mode 100644
index 0000000..177dbe6
--- /dev/null
+++ b/hardcopy/XKB/XKBproto.ps.gz
Binary files differ
diff --git a/hardcopy/XLFD/xlfd.PS.gz b/hardcopy/XLFD/xlfd.PS.gz
new file mode 100644
index 0000000..e814c9b
--- /dev/null
+++ b/hardcopy/XLFD/xlfd.PS.gz
Binary files differ
diff --git a/hardcopy/XPRINT/xp_library.PS.gz b/hardcopy/XPRINT/xp_library.PS.gz
new file mode 100644
index 0000000..80e8355
--- /dev/null
+++ b/hardcopy/XPRINT/xp_library.PS.gz
Binary files differ
diff --git a/hardcopy/XPRINT/xp_proto.PS.gz b/hardcopy/XPRINT/xp_proto.PS.gz
new file mode 100644
index 0000000..c06d5a0
--- /dev/null
+++ b/hardcopy/XPRINT/xp_proto.PS.gz
Binary files differ
diff --git a/hardcopy/XProtocol/proto.PS.gz b/hardcopy/XProtocol/proto.PS.gz
new file mode 100644
index 0000000..c7e3d0e
--- /dev/null
+++ b/hardcopy/XProtocol/proto.PS.gz
Binary files differ
diff --git a/hardcopy/XProtocol/proto.idx.PS.gz b/hardcopy/XProtocol/proto.idx.PS.gz
new file mode 100644
index 0000000..445e5c0
--- /dev/null
+++ b/hardcopy/XProtocol/proto.idx.PS.gz
Binary files differ
diff --git a/hardcopy/Xaw/widg.idx.PS.gz b/hardcopy/Xaw/widg.idx.PS.gz
new file mode 100644
index 0000000..a0f6240
--- /dev/null
+++ b/hardcopy/Xaw/widg.idx.PS.gz
Binary files differ
diff --git a/hardcopy/Xaw/widgets.PS.gz b/hardcopy/Xaw/widgets.PS.gz
new file mode 100644
index 0000000..078b7d7
--- /dev/null
+++ b/hardcopy/Xaw/widgets.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/AppGroup.PS.gz b/hardcopy/Xext/AppGroup.PS.gz
new file mode 100644
index 0000000..ee2cb7e
--- /dev/null
+++ b/hardcopy/Xext/AppGroup.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/DPMS.PS.gz b/hardcopy/Xext/DPMS.PS.gz
new file mode 100644
index 0000000..543f8c5
--- /dev/null
+++ b/hardcopy/Xext/DPMS.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/DPMSLib.PS.gz b/hardcopy/Xext/DPMSLib.PS.gz
new file mode 100644
index 0000000..8bb9254
--- /dev/null
+++ b/hardcopy/Xext/DPMSLib.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/bigreq.PS.gz b/hardcopy/Xext/bigreq.PS.gz
new file mode 100644
index 0000000..63e884e
--- /dev/null
+++ b/hardcopy/Xext/bigreq.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/buffer.PS.gz b/hardcopy/Xext/buffer.PS.gz
new file mode 100644
index 0000000..6babc2b
--- /dev/null
+++ b/hardcopy/Xext/buffer.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/dbe.PS.gz b/hardcopy/Xext/dbe.PS.gz
new file mode 100644
index 0000000..b10a073
--- /dev/null
+++ b/hardcopy/Xext/dbe.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/dbelib.PS.gz b/hardcopy/Xext/dbelib.PS.gz
new file mode 100644
index 0000000..2c50305
--- /dev/null
+++ b/hardcopy/Xext/dbelib.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/evi.PS.gz b/hardcopy/Xext/evi.PS.gz
new file mode 100644
index 0000000..385ec8b
--- /dev/null
+++ b/hardcopy/Xext/evi.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/lbx.PS.gz b/hardcopy/Xext/lbx.PS.gz
new file mode 100644
index 0000000..b9a3432
--- /dev/null
+++ b/hardcopy/Xext/lbx.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/lbx.html b/hardcopy/Xext/lbx.html
new file mode 100644
index 0000000..1e77a47
--- /dev/null
+++ b/hardcopy/Xext/lbx.html
@@ -0,0 +1,3331 @@
+<HTML>
+<H1><A NAME="MMM0"><HR>Low Bandwidth X Extension
+</A></H1>
+
+Protocol Version 1.0
+<P>
+
+X Consortium Standard
+<P>
+
+<P ALIGN=CENTER>D. Converse, J. Fulton, C. Kantarjiev, D. Lemke, R. Mor, K. Packard, R. Tice, D. Tonogai
+</P><P ALIGN=CENTER>$Xorg: lbx.html,v 1.3 2000/08/17 19:41:53 cpqbld Exp $
+</P> Copyright (c) 1996 X Consortium
+<P>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+ documentation files (the "Software"), to deal in the Software without restriction, including without limita
+ tion the rights to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+<P>
+
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions
+ of the Software.
+<P>
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT
+ NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X
+ CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+<P>
+
+ Except as contained in this notice, the name of the X Consortium shall not be used in advertising or other
+ wise to promote the sale, use or other dealings in this Software without prior written authorization from the
+ X Consortium.
+<P>
+
+<H1><A NAME="MMM1">1 Introduction
+</A><A HREF="lbxTOC.html">..</A><HR></H1>
+
+ Low Bandwidth X (LBX) is a network-transparent protocol for running X Window System applications
+ over transport channels whose bandwidth and latency are significantly worse than that used in local area net
+ works. It combines a variety of caching and reencoding techniques to reduce the volume of data that must be
+ sent over the wire. It can be used with existing clients by placing a proxy between the clients and server, so
+ that the low bandwidth/high latency communication occurs between the proxy and server.
+<P>
+
+ This extension was designed and implemented by Jim Fulton, David Lemke, Keith Packard, and Dale
+ Tonogai, all of Network Computing Devices (NCD). Chris Kent Kantarjiev (Xerox PARC) participated in
+ early design discussions. Ralph Mor (X Consortium) designed and implemented additional sections. Donna
+ Converse (X Consortium) authored the protocol description and encoding from design notes and the imple
+ mentation. Ray Tice (X Consortium) resolved the open issues in the design and specification. Bob Scheifler
+ (X Consortium) helped out in many areas.
+<P>
+
+ The extension name is "LBX".
+<P>
+
+<H1><A NAME="MMM2">2 Description
+</A><A HREF="lbxTOC.html">..</A><HR></H1>
+
+ The design center for LBX is to use a proxy as an intermediary between the client and server. The proxy
+ reencodes and compresses requests, events, replies and errors, as well as the resulting data stream. Addition
+ ally, the proxy can cache information from the server to provide low-latency replies to clients. This reply
+ generation by the proxy is known as short-circuiting. A proxy can handle multiple clients for a given server,
+ but does not prevent clients from connecting directly to the server. The design allows the proxy to multiplex
+ multiple clients into a single data stream to the server.
+<P>
+
+ Much of LBX is implemented as an extension. The compression and reencoding changes can be isolated to
+ the transport and dispatch portions of the server, while short-circuiting requires minor changes to the
+ server's colormap and property code.
+<P>
+
+ LBX employs several different compression and short-circuiting methods. Use of these methods is negotia
+ ble, and in some cases, the algorithm used by a given method is negotiable as well. LBX also provides for
+ negotiation of extensions to LBX.
+<P>
+
+<H2><A NAME="MMM3">2.1 Data Flow
+</A></H2>
+
+ The LBX data stream goes through a number of layers:
+<P>
+
+ 0. Client requests
+<P>
+ 1. Read by LBX and potential byte-swapping
+<P>
+ 2. Request-specific compression
+<P>
+ 3. Potential byte swapping
+<P>
+ 4. Multiplexing of client request streams
+<P>
+ 5. Delta replacement
+<P>
+ 6. Stream compression
+<P>
+ Transport
+<P>
+
+ 6. Stream decompression
+<P>
+ 5. Delta substitution
+<P>
+ 4. Demultiplexing of client request streams
+<P>
+ 3. Potential byte swapping
+<P>
+ 2. Reencoding
+<P>
+ 1. Request processing
+<P>
+ The reverse process occurs with X server replies, events, and errors.
+<P>
+
+<H2>2.2 <A NAME="11018">Tags</A>
+</H2>
+
+ Tags are used to support caching of large data items that are expected to be queried multiple times. Such
+ things as the keyboard map and font metrics are often requested by multiple clients. Rather than send the
+ data each time, the first time the data is sent it includes a tag. The proxy saves this data, so that subsequent
+ requests can send only the tag to refer to that same data. The different types of tags are used for connection
+ information, keyboard maps, modifier maps, fonts information and properties.
+<P>
+
+ Tag usage is negotiated as a boolean in the LbxStartProxy message. The proxy controls how many tags
+ are stored in the proxy. The server may wish to observe the proxy's InvalidateTag behavior to limit how
+ many tags are cached at any one time. Tagged data is not shared across types of tags, but the number space
+ used for the tag ids is. The tag ids are generated by the server.
+<P>
+
+ The X server keeps track of what tags are known to the proxy. The proxy can invalidate a tag if no tag bear
+ ing replies of that type are pending. The proxy sends an LbxInvalidateTag message to release the
+ tagged data. The proxy must not invalidate connection tags unless instructed to do so by the server.
+<P>
+
+ If the server wishes to discard tagged data, it must either have received an LbxInvalidateTag request
+ from the proxy or send an LbxInvalidateTag event to the proxy for that tag.
+<P>
+
+<H3>2.2.1 <A NAME="26534">Tag Substitution in Requests</A>
+</H3>
+
+ Many substitution requests have a tag field, followed by fields marked optional. For these requests, if the
+ optional fields are present, the data in them is stored in the indicated tag, unless the tag is 0. If the optional
+ fields are absent, the tag field indicates the tag that contains the data for the "optional" fields.
+<P>
+
+<H3><A NAME="MMM4">2.2.2 Property Tags
+</A></H3>
+
+ Property data makes special use of tags. A common use of properties is for inter-client communication. If
+ both clients use the proxy, it is wasteful to send the data to the server and then back, when the server may
+ never need it. LbxChangeProperty request does the same work as the core ChangeProperty
+ request, but it does not send the data. The reply to this request contains a tag id corresponding to the data. If
+ the property information is used locally, the server responds to LbxGetProperty with the tag, and the
+ property data need never be sent to the server. If the server does require the data, it can issue an LbxQue
+ ryTag message. The proxy can also send the data on at any time if it judges it appropriate (i.e., when the
+ wire goes idle). Since the proxy owns the property data, it must not invalidate the tag before sending the data
+ back to the server via an LbxTagData request.
+<P>
+
+<H2><A NAME="MMM5">2.3 Short-circuiting
+</A></H2>
+
+ Short-circuiting is used to handle constant data. This includes atoms, color name/RGB mappings, and
+ AllocColor calls. Atoms and color name/RGB mappings stay constant for the life of the server. Alloc
+ Color replies are constant for each colormap. Short-circuiting replaces round-trip requests with one-way
+ requests, and can sometimes use one in place of many.
+<P>
+
+ Atoms are used heavily for ICCCM communication. Once the proxy knows the string to atom mapping, it
+ has no need to send subsequent requests for this atom to the server.
+<P>
+
+ Colorname/RGB mappings are constant, so once the proxy sees the response from LookupColor, it need
+ not forward any subsequent requests.
+<P>
+
+ Clients often use the same color cells, so once a read-only color allocation has occurred, the proxy knows
+ what RGB values should be returned to the client. The proxy doesn't need to forward any AllocColor
+ requests it can resolve, but it must tell the server to modify the color cell's reference count. LbxIncre
+ mentPixel is used to support this.
+<P>
+
+ For all three classes of short-circuiting, the proxy must still tell the server a request has occurred, so that the
+ request sequence numbers stay in sync. This is done with LbxModifySequence.
+<P>
+
+ Sequence numbers cause the major complication with short-circuiting. X guarantees that any replies, events
+ or errors generated by a previous request will be sent before those of a later request. This means that any
+ requests that can be handled by the proxy must have their reply sent after any previous events or errors.
+<P>
+
+ If a proxy's applications do not require strict adherence to the X protocol ordering of errors or events, a
+ proxy might provide further optimization by avoiding the overhead of maintaining this ordering, however,
+ the resulting protocol is not strictly X11 compliant.
+<P>
+
+<H2><A NAME="MMM6">2.4 Graphics Re-encoding
+</A></H2>
+
+ The LBX proxy attempts to reencode PolyPoint, PolyLine, PolySegment, PolyRectangle,
+ PolyArc, FillPoly, PolyFillRectangle, PolyFillArc, CopyArea, CopyPlane,
+ PolyText8, PolyText16, ImageText8, and ImageText16 requests. If the request can be reen
+ coded, it may be replaced by an equivalent LBX form of the request. The requests are reencoded by attempt
+ ing to reduce 2-byte coordinate, length, width and angle fields to 1 byte. Where applicable, the coordinate
+ mode is also converted to Previous to improve the compressibility of the resulting data. In image
+ requests, the image data may also be compressed.
+<P>
+
+<H2>2.5 <A NAME="15503">Motion events</A>
+</H2>
+
+ To prevent clogging the wire with MotionNotify events, the server and proxy work together to control
+ the number of events on the wire. This is done with the LbxAllowMotion request. The request adds an
+ amount to an allowed motion count in the server, which is kept on a per-proxy basis. Every motion notify
+ event sent to the proxy decrements the allowed motion counter. If the allowed motion count is less than or
+ equal to zero, motion events not required by the X protocol definition are not sent to the proxy. The allowed
+ motion counter has a minimum value of -2^31.
+<P>
+
+<H2><A NAME="MMM7">2.6 Event Squishing
+</A></H2>
+
+ In the core protocol, all events are padded as needed to be 32 bytes long. The LBX extension reduces traffic
+ by removing padding at the end of events, and implying the event length from its type. This is known as
+ squishing.
+<P>
+
+<H2><A NAME="MMM8">2.7 Master Client
+</A></H2>
+
+ When the initial X connection between the proxy and the server is converted to LBX mode, the proxy itself
+ becomes the master client. New client requests and some tag messages are sent in the context of the master
+ client.
+<P>
+
+<H2><A NAME="MMM9">2.8 Multiplexing of Clients
+</A></H2>
+
+ The LBX proxy multiplexes the data streams of all its clients into one stream, and then splits them apart
+ again when they are received. The LbxSwitch message is used to tell each end which client is using the
+ wire at the time.
+<P>
+
+ The server should process delta requests in the order that they appear on the LBX connection. If the server
+ does not maintain the interclient request order for requests sent by the proxy, it must still obey the semantics
+ implied by the interclient request order so that the delta cache functions correctly.
+<P>
+
+ The server can affect the multiplexing of clients by the proxy using the LbxListenToOne and LbxLis
+ tenToAll messages. This is useful during grabs, since the master connection can not be blocked during
+ grabs like other clients. The proxy is responsible for tracking server grabs issued by its clients so that the
+ proxy can multiplex the client streams in an order executable by the server.
+<P>
+
+ Replies must be ordered in the multiplexed data stream from the server to the proxy such that the reply car
+ rying tagged data precedes replies that refer to that tagged data.
+<P>
+
+<H2><A NAME="MMM10">2.9 Swapping
+</A></H2>
+
+ Swapping is handled as with any X extension, with one caveat. Since a proxy can be supporting clients with
+ different byte orders, and they all share the same wire, the length fields of all messages between the server
+ and proxy are expressed in the proxy byte order. This prevents any problems with length computation that
+ may occur when clients are switched.
+<P>
+
+<H2>2.10 <A NAME="22595">Delta cache</A>
+</H2>
+
+ LBX takes advantage of the fact that an X message may be very similar to one that has been previously sent.
+ For example, a KeyPress event may differ from a previous KeyPress event in just a few bytes. By send
+ ing just the bytes that differ (or "deltas"), the number of bytes sent over the wire can be substantially
+ reduced. Delta compaction is used on requests being sent by the proxy as well as on replies and events being
+ sent by the server.
+<P>
+
+ The server and the proxy each keep per-proxy request and response caches. The response cache contains
+ events, errors and replies. All messages are saved in the appropriate delta cache if they are of an appropriate
+ type and more than 8 bytes long but fit within the delta cache. The number of entries in the delta cache and
+ the maximum saved message size are negotiated in the LbxStartProxy request.
+<P>
+
+ The LBX requests that are never stored in the request delta cache are the LbxQueryVersion, Lbx
+ StartProxy, LbxSwitch, LbxNewClient, LbxAllowMotion, LbxDelta, LbxQueryExten
+ sion, LbxPutImage, LbxGetImage, LbxBeginLargeRequest, LbxLargeRequestData,
+ LbxEndLargeRequest and LbxInternAtoms requests. The responses that are never stored in the
+ response cache are LbxSwitchEvent and LbxDeltaResponse. The message carried by a delta
+ message is also cached, if it meets the other requirements. Messages after the LbxStartProxy request are
+ cached starting at index 0, and incrementing the index, modulo the number of entries, thereafter. The request
+ and response caches are independently indexed.
+<P>
+
+ If the current message is cachable and the same length as a message in the corresponding delta cache, a delta
+ message may be substituted in place of the original message in the protocol stream.
+<P>
+
+<H2>2.11 Stream <A NAME="11596">Compression</A>
+</H2>
+
+ Before being passed down to the transport layer messages can be passed through a general purpose data
+ compressor. The choice of compression algorithm is negotiated with <A HREF="#20870">"LbxStartProxy" on page 9</A>. The proxy
+ and server are not required to support any specific stream compressor. As an example, however, the X Con
+ sortium implementation of a ZLIB based compressor is described below.
+<P>
+
+<BLOCKQUOTE> The XC-ZLIB compressor is presented with a simple byte stream - the X and
+ LBX message boundaries are not apparent. The data is broken up into fixed sized
+ blocks. Each block is compressed using zlib 1.0 (by Gailly &amp; Adler), then a two
+ byte header is prepended, and then the entire packet is transmitted. The header
+ has the following information:
+</BLOCKQUOTE><BLOCKQUOTE> out[0] = (length &amp; 0xfff) &gt;&gt; 8 | ((compflag) ? 0x80 : 0);
+</BLOCKQUOTE><BLOCKQUOTE> out[1] = length &amp; 0xff;
+</BLOCKQUOTE><H2><A NAME="MMM11">2.12 Authentication Protocols
+</A></H2>
+
+ The current version of LBX does not support multipass authentication protocols for clients of the proxy.
+ These authentication protocols return an Authenticate message in response to a connection setup
+ request, and require additional authentication data from the client after the LbxNewClient request, and
+ before the reply to LbxNewClient. One example of such a protocol is XC-QUERY-SECURITY-1.
+<P>
+
+<H1>3 <A NAME="33319">C Library Interfaces </A>
+<A HREF="lbxTOC.html">..</A><HR></H1>
+
+ The C Library routines for LBX are in the Xext library. The prototypes are located in a file named "XLbx.h".
+<P>
+
+<H2><A NAME="MMM12">3.1 Application Library Interfaces
+</A></H2>
+
+ In a proxy environment, applications do not need to call these routines to take advantage of LBX. Clients
+ can, however, obtain information about the LBX extension to the server using this interface. Use of this rou
+ tine may be altered when connected through a proxy, as described in <A HREF="#33319">"C Library Interfaces" on page 5</A>.
+<P>
+
+<H3><A NAME="MMM13">3.1.1 XLbxQueryVersion
+</A></H3>
+
+ To determine the version of LBX supported by the X server, call XLbxQueryVersion.
+<P>
+
+<PRE> Bool XLbxQueryVersion(display, major_version_return, minor_version_return)
+ Display * display;
+ int * major_version_return;
+ int * minor_version_return;
+ display Specifies the connection to the X server.
+ major_version_return Returns the extension major version number.
+ minor_version_return Returns the extension minor version number.
+</PRE>
+
+ The XLbxQueryVersion function determines if the LBX extension is present. If the extension is not
+ present, XLbxQueryVersion returns False; otherwise, it returns True. If the extension is present,
+ XLbxQueryVersion returns the major and minor version numbers of the extension as supported by the X
+ server.
+<P>
+
+<H2><A NAME="MMM14">3.2 Proxy Library Interfaces
+</A></H2>
+
+ The following interfaces are intended for use by the proxy.
+<P>
+
+<H3><A NAME="MMM15">3.2.1 XLbxQueryExtension
+</A></H3>
+
+ To determine the dynamically assigned codes for the extension, use the Xlib function XQueryExtension
+ or the LBX function XLbxQueryExtension.
+<P>
+
+<PRE> Bool XLbxQueryExtension(display, major_opcode_return, first_event_return, first_error_return)
+ Display * display; Specifies the connection to the X server.
+ int * major_opcode_return; Returns the major opcode.
+ int * first_event_return; Returns the first event code.
+ int * first_error_return; Returns the first error code.
+</PRE>
+
+ The XLbxQueryExtension function determines if the LBX extension is present. If the extension is not
+ present, XLbxQueryExtension returns False; otherwise, it returns True. If the extension is present,
+ XLbxQueryExtension returns the major opcode for the extension to major_opcode_return, the base
+ event type code to first_event_return, and the base error code to first_error_return; otherwise, the return val
+ ues are undefined.
+<P>
+
+<H3><A NAME="MMM16">3.2.2 XLbxGetEventBase
+</A></H3>
+
+ To determine the base event type code, use the Xlib function XQueryExtension or the LBX function
+ XLbxGetEventBase.
+<P>
+
+<PRE> int XLbxGetEventBase(display)
+ Display * display; Specifies the connection to the X server.
+</PRE>
+
+ The XLbxGetEventBase function returns the base event type code if the extension is present; otherwise,
+ it returns -1.
+<P>
+
+<H1><A NAME="MMM17">4 Protocol
+</A><A HREF="lbxTOC.html">..</A><HR></H1>
+
+<H2><A NAME="MMM18">4.1 Syntactic Conventions and Common Types
+</A></H2>
+
+ Please refer to the X Window System Protocol specification, as this document uses the syntactic conventions
+ established there and references types defined there.
+<P>
+
+ The following additional types are defined by this extension:
+<P>
+
+ DIFFITEM
+<P>
+
+<UL>
+<P> 1 CARD8 offset
+<P> 1 CARD8 diff
+</UL>
+ LBXANGLE: CARD8 or 2 BYTE
+<P>
+
+<UL>
+<P> where (in order of precedence):
+<P> (0 &lt;= in &lt;= A(95)) &amp;&amp; !(in % A(5)) out = 0x5a + (in / A(5))
+<P> A(105) &lt;= in &lt;= A(360) &amp;&amp; !(in % A(15)) out = 0x67 + (in / A(15))
+<P> -A(100) &lt;= in &lt;= -A(5) &amp;&amp; !(in % A(5)) out = 0xa6 + (in / A(5))
+<P> -A(360) &lt; in &lt;= -A(105) &amp;&amp; !(in % A(15)) out = 0x98 + (in / A(15))
+<P> -A(360) &lt; in &lt;= A(360) out[0] = in &gt;&gt; 8; out[1] = in
+</UL>
+ LBXARC:
+<P>
+
+<UL>
+<P> [x, y: LBXINT16,
+<P> width, height: LBXCARD16,
+<P> angle1, angle2: LBXANGLE]
+<P>
+<P> Within a list of arcs, after the first arc, x and y are relative to the corresponding fields of the prior arc.
+</UL>
+ LBXCARD16: CARD8 or 2 BYTE
+<P>
+
+<UL>
+<P> where:
+<P> 0x0000 &lt;= in &lt; 0x00F0 CARD8
+<P> 0x00F0 &lt;= in &lt; 0x10F0 out[0] = 0xF0 | ((in - 0xF0) &gt;&gt; 8)
+<P> out[1] = in - 0xF0
+</UL>
+ LBXGCANDDRAWENT
+<P>
+
+<UL>
+<P> [ gc-cache-index, drawable-cache-index: CARD4 ]
+</UL>
+ LBXGCANDDRAWUPDATE
+<P>
+
+<UL>
+<P> drawable: DRAWABLE /* present only if drawable-cache-index == 0 */
+<P> gc: GC] /* present only if gc-cache-index == 0 */
+</UL>
+ LBXGCANDDRAWABLE
+<P>
+
+<UL>
+<P> cache-entries: LBXGCANDDRAWENT
+<P> updates: LBXGCANDDRAWUPDATE
+</UL>
+ LBXINT16 : INT8 or 2 BYTE
+<P>
+
+<UL>
+<P> where:
+<P> 0xF790 &lt;= in &lt; 0xFF90 out[0] = 0x80 | (((in + 0x70) &gt;&gt; 8) &amp; 0x0F)
+<P> out[1] = in + 0x70
+<P> 0xFF90 &lt;= in &lt; 0x0080 CARD8
+<P> 0x0080 &lt;= in &lt; 0x0880 out[0] = 0x80 | (((in - 0x80) &gt;&gt; 8) &amp; 0x0F)
+<P> out[1] = in - 0x80
+</UL>
+ LBXPINT16 : CARD8 or 2 BYTE /* for usually positive numbers */
+<P>
+
+<UL>
+<P> where:
+<P> 0xFE00 &lt;= in &lt; 0x0000 out[0] = 0xF0 | (((in + 0x1000) &gt;&gt; 8) &amp; 0x0F)
+<P> out[1] = in + 0x1000
+<P> 0x0000 &lt;= in &lt; 0x00F0 CARD8
+<P> 0x00F0 &lt;= in &lt; 0x0EF0 out[0] = 0xF0 | ((in - 0xF0) &gt;&gt;8)
+<P> out[1] = in - 0xF0
+</UL>
+ LBXPOINT : [x, y: LBXINT16]
+<P>
+
+<UL>
+<P> Within a list of points, after the first rectangle, x and y are relative to the corresponding fields of the
+ prior point.
+</UL>
+ LBXRECTANGLE :
+<P>
+
+<UL>
+<P> [x, y: LBXINT16,
+<P> width, height: LBXCARD16]
+<P>
+<P> Within a list of rectangles, after the first rectangle, x and y are relative to the corresponding fields of
+ the prior rectangle.
+</UL>
+ MASK: CARD8
+<P>
+
+<H2><A NAME="MMM19">4.2 Errors
+</A></H2>
+
+ As with the X11 protocol, when a request terminates with an error, the request has no side effects (that is,
+ there is no partial execution).
+<P>
+
+ There is one error, LbxClient. This error indicates that the client field of an LBX request was invalid, or
+ that the proxy's connection was in an invalid state for a start or stop proxy request.
+<P>
+
+<H2><A NAME="MMM20">4.3 Requests
+</A></H2>
+
+ There is one request that is expected to be used only by the client: LbxQueryVersion
+<P>
+
+ There is one request that is expected to be used by the client or the proxy: LbxQueryExtension.
+<P>
+
+ The following requests are expected to be used only by the proxy, and are instigated by the proxy: Lbx
+ StartProxy, LbxStopProxy, LbxNewClient, LbxSwitch, LbxCloseClient, LbxModify
+ Sequence, LbxAllowMotion, LbxInvalidateTag, LbxTagData and LbxQueryTag.
+<P>
+
+ All other requests are sent by the proxy to the LBX server and are instigated by reception of an X request
+ from the client. They replace the X request.
+<P>
+
+<H3><A NAME="MMM21">4.3.1 Requests Initiated by the Proxy or by the Client
+</A></H3>
+
+<H4> <A NAME="18761">LbxQueryVersion</A>
+</H4>
+
+<P> -->
+<UL>
+<P> majorVersion: CARD16
+<P> minorVersion: CARD16
+</UL>
+ This request returns the major and minor version numbers of the LBX protocol.
+<P>
+
+ The encoding of this request is on <A HREF="#34166">page 30</A>.
+<P>
+
+<H3><A NAME="MMM22">4.3.2 Requests Initiated or Substituted by the Proxy
+</A></H3>
+
+<H4> <A NAME="36662">LbxQueryExtension</A>
+</H4>
+
+<UL>
+<P> nbytes: CARD32
+<P> name: STRING8
+</UL>
+<P> -->
+<UL>
+<P> num-requests: CARD8
+<P> present: BOOL
+<P> major-opcode: CARD8
+<P> first-event: CARD8
+<P> first-error: CARD8
+<P> reply-mask: LISTofMASK /* optional */
+<P> event-mask:LISTofMASK /* optional */
+<P> Errors: Alloc
+</UL>
+ This request is identical to the QueryExtension request, with an additional field, and two optional addi
+ tional fields. When the client issues an QueryExtension request, the proxy will substitute an LbxQue
+ ryExtension request.
+<P>
+
+ This request determines if the named extension is present. If so, the major opcode for the extension is
+ returned, if it has one. Otherwise, zero is returned. Any minor opcode and the request formats are specific to
+ the extension. If the extension involves additional event types, the base event type code is returned. Other
+ wise, zero is returned. The format of events is specific to the extension. If the extension involves additional
+ error codes, the base error code is returned. Otherwise, zero is returned. The format of additional data in the
+ errors is specific to the extension.
+<P>
+
+ In addition, the number of requests defined by the named extension is returned. If the number of requests is
+ nonzero, and if the information is available, reply-mask and event-mask will be included in the reply. The
+ reply-mask represents a bit-wise one-to-one correspondence with the extension requests. The least signifi
+ cant bit corresponds to the first request, and the next bit corresponds to the next request, and so on. Each ele
+ ment in the list contains eight meaningful bits, except for the last element, which contains eight or fewer
+ meaningful bits. Unused bits are not guaranteed to be zero. The bit corresponding to a request is set if the
+ request could generate a reply, otherwise it is zero. In the same way, the event-mask represents a bit-wise
+ one-to-one correspondence with the extension requests. A bit is set if the corresponding request could result
+ in the generation of one or more extension or X11 events. If reply-mask is present in the reply, event-mask
+ will also be present.
+<P>
+
+ The encoding of this request is on <A HREF="#37117">page 41</A>.
+<P>
+
+<H3><A NAME="MMM23">4.3.3 Control Requests Initiated by the Proxy
+</A></H3>
+
+<H4> <A NAME="20870">LbxStartProxy</A>
+</H4>
+
+<UL>
+<P> <A NAME="StartProxy Request">options</A>: LISTofOPTION
+</UL>
+<P> -->
+<UL>
+<P> choices: LISTofCHOICE
+<P> Errors: LbxClient, Alloc
+</UL>
+ where:
+<P>
+
+<UL>
+<P> OPTION [optcode: CARD8,
+<P> len: OPTLEN,
+<P> option: (See <A HREF="#35444">Table 1, "StartProxy Options," on page 10</A>) ]
+<P> CHOICE [optcode: CARD8,
+<P> len: OPTLEN,
+<P> choice: (See <A HREF="#35444">Table 1, "StartProxy Options," on page 10</A>) ]
+<P>
+</UL>
+ TABLE 1. <A NAME="35444"><PRE>--------------------------------------------------------------------------------------
+| optcode | option | choice | default |
+======================================================================================
+| delta-proxy | DELTAOPT | DELTACHOICE | entries=16, maxlen=64 |
+--------------------------------------------------------------------------------------
+| delta-server | DELTAOPT | DELTACHOICE | entries=16, maxlen=64 |
+--------------------------------------------------------------------------------------
+| stream-comp | LISTofNAMEDOPT | INDEXEDCHOICE | No Compression |
+--------------------------------------------------------------------------------------
+| bitmap-comp | LISTofSTRING8 | LISTofINDEXEDOPT | No Compression |
+--------------------------------------------------------------------------------------
+| pixmap-comp | LISTofPIXMAPMETHOD | LISTofPIXMAPCHOICE | No Compression |
+--------------------------------------------------------------------------------------
+| use-squish | BOOL | BOOL | True |
+--------------------------------------------------------------------------------------
+| use-tags | BOOL | BOOL | True |
+--------------------------------------------------------------------------------------
+| colormap | LISTofSTRING8 | INDEXEDCHOICE | No Colormap Grabbing |
+--------------------------------------------------------------------------------------
+| extension | NAMEDOPT | INDEXEDCHOICE | Extension Disabled |
+--------------------------------------------------------------------------------------
+</PRE>
+StartProxy Options</A>
+<P>
+
+<UL>
+<P>
+<P> DELTAOPT [minN, maxN, prefN: CARD8
+<P> minMaxMsgLen, maxMaxMsgLen, prefMaxMsgLen: CARD8]
+<P> DELTACHOICE [entries, maxlen: CARD8]
+<P> INDEXEDCHOICE [index: CARD8,
+<P> data: LISTofBYTE]
+<P> INDEXEDOPT [index, opcode: CARD8]
+<P> NAMEDOPT [name: STRING8,
+<P> detail: LISTofBYTE]
+<P> OPTLEN 1 or 3 CARD8
+<P> where:
+<P> (0 &lt; in &lt;= 0xFF): out = in
+<P> (0 &lt;= in&lt;= 0xFFFF): out[0] = 0; out[1] = in &gt;&gt; 8; out[2] = in&amp; 0xFF;
+<P> PIXMAPMETHOD [name: STRING8,
+<P> format-mask: BITMASK,
+<P> depths: LISTofCARD8]
+<P> PIXMAPCHOICE [index, opcode: CARD8,
+<P> format-mask: BITMASK,
+<P> depths: LISTofCARD8]
+<P>
+</UL>
+ This request negotiates LBX protocol options, and switches the proxy-server connection from X11 protocol
+ to LBX protocol.
+<P>
+
+ The proxy gives the preferred protocol options in the request. The server chooses from the given options and
+ informs the proxy which to use. The options may be listed in any order, and the proxy may choose which
+ options to negotiate. If an option is not successfully negotiated, the default is used.
+<P>
+
+ The server delta cache and proxy delta caches can be configured for number of entries, and the length of
+ entries. (See <A HREF="#22595">"Delta cache" on page 4</A> for details.) The delta caches are configured using the delta-server and
+ delta-proxy options. To configure a cache, the proxy sends the minimum, maximum and preferred values for
+ the number of cache entries, (minN, maxN, prefN), and the length of the cache entries, (minMaxMsgLen,
+ maxMaxMsgLen, prefMaxMsgLen). The server's reply fields, entries and maxlen, contains the values to use.
+ These values must be within the ranges specified by the proxy. The server may also specify an entries value
+ of 0 to disable delta caching. The cache entry lengths are specified in units of 4 bytes.
+<P>
+
+ The stream compression algorithm is selected using the stream-comp option. (Stream compression is
+ described in <A HREF="#11596">"Stream Compression" on page 5</A>.) Each algorithm has a name that follows the naming conven
+ tions in <A HREF="#13570">"Algorithm Naming" on page 29</A>. To negotiate using the stream-comp option, the proxy lists its
+ available compressors. For each candidate algorithm, the proxy sends the name in the name field, and uses
+ the detail field to send any additional data specific to each compression algorithm. The reply contains a 0-
+ based index into the list of algorithms to indicate which algorithm to use, followed by data specific to that
+ algorithm.
+<P>
+
+ Bitmap compression is negotiated using the bitmap-comp option. The proxy sends a list of names of avail
+ able algorithms, and the server reply lists the algorithms to use. For each bitmap algorithm in the reply, a 0-
+ based index into the list of algorithms indicates the algorithm, and the opcode field gives the value for use in
+ requests. The algorithm names follow the conventions in <A HREF="#13570">"Algorithm Naming" on page 29</A>.
+<P>
+
+ Pixmap compression is negotiated using the pixmap-comp option. The proxy sends a list of available algo
+ rithms. For each algorithm, the list includes, the name, a bitmask of supported formats, and a list of depths
+ that the format supports. The server reply lists the algorithms to use. For each pixmap algorithm in the reply,
+ the reply contains a 0-based index into the list of proxy algorithms, the opcode to use in requests when refer
+ ring to this algorithm, a mask of valid formats, and a list of valid depths. Algorithm names follow the con
+ ventions in <A HREF="#13570">"Algorithm Naming" on page 29</A>.
+<P>
+
+ Squishing is negotiated using the use-squish option. If the proxy desires squishing, it sends a true value. The
+ reply from the server indicates whether to do squishing, and will indicate squishing only if use-squish is set
+ to true in the request.
+<P>
+
+ Tag caching, described in <A HREF="#11018">"Tags" on page 2</A>, is negotiated using the use-tag option. If the proxy desires tag
+ caching, it sends a true value. The reply from the server indicates whether to do tag caching, and will
+ demand caching only if use-tag is set to true in the request.
+<P>
+
+ The colormap option is used to negotiate what color matching algorithm will be used by the proxy when the
+ proxy uses the LbxAllocColor request to allocate pixels in a grabbed colormap. To negotiate using the
+ colormap option, the proxy lists the names of available colormap algorithms. The choice in the reply con
+ tains a 0-based index into the list of algorithms to indicate which algorithm to use, followed by data specific
+ to that algorithm. If no colormap algorithm is successfully negotiated, then the LbxAllocColor,
+ LbxGrabCmap, and LbxReleaseCmap requests will not be used.
+<P>
+
+ The extension option is used to control extensions to LBX. These extensions may, for example, enable other
+ types of compression. To negotiate an extension, the name of the extension is sent, followed by any data spe
+ cific to that extension. The extension name follows the conventions in <A HREF="#13570">"Algorithm Naming" on page 29</A>. The
+ extension option may occur multiple times in the start proxy message, since multiple extensions can be
+ negotiated. The reply to an extension option contains the zero-based index of the extension option, as
+ counted in the LbxStartProxy message. This index is followed by extension-specific information. The
+ server does not respond to extensions it does not recognize.
+<P>
+
+ An LbxClient error is returned when a client which is already communicating through an LBX proxy to
+ the X server sends a LbxStartProxy request.
+<P>
+
+ The encoding for this request is on <A HREF="#27452">page 31</A>.
+<P>
+
+<H4> <A NAME="27455">LbxStopProxy</A>
+</H4>
+
+<UL>
+<P> Errors: LbxClient
+</UL>
+ This request terminates the connection between the proxy and X server, and terminates any clients con
+ nected through the proxy.
+<P>
+
+ The encoding for this request is on <A HREF="#23471">page 33</A>.
+<P>
+
+ An LbxClient error is returned if the requesting client is not an LBX proxy.
+<P>
+
+<H4> <A NAME="17810">LbxNewClient</A>
+</H4>
+
+<UL>
+<P> byte-order: CARD8
+<P> client-id: CARD32
+<P> protocol-major-version: CARD16
+<P> protocol-minor-version: CARD16
+<P> authorization-protocol-name: STRING8
+<P> authorization-protocol-data: STRING8
+</UL>
+<P> -->
+<UL>
+<P> Core X reply (if connection is rejected)
+<P>
+<P> OR
+<P>
+<P> success: BOOL
+<P> change-type: {NoDeltas, NormalClientDeltas, AppGroupDeltas}
+<P> protocol-major-version: CARD16
+<P> protocol-minor-version: CARD16
+<P> tag-id: CARD32
+<P> length: CARD16
+<P> connection-data: CONINFO or CONDIF or CONDIFROOT
+<P>
+<P> where:
+<P> CONINFO: (the "additional data" portion of the core connection reply for successes)
+<P> CONDIF: [resource-id-base: CARD32,
+<P> root-input-masks: LISTofSETofEVENT]
+<P> CONDIFROOT: [resource-id-base: CARD32,
+<P> root: WINDOW
+<P> root-visual: VISUALID
+<P> default-colormap: COLORMAP
+<P> white-pixel, black-pixel: CARD32
+<P> root-input-masks: LISTofSETofEVENT]
+</UL>
+ Errors: LbxClient, Alloc
+<P>
+
+ This request, which is sent by the proxy over the control connection, creates a new virtual connection to the
+ server.
+<P>
+
+ Much of the information in the LbxNewClient request and reply is identical to the connection setup and
+ reply information in the core X protocol.
+<P>
+
+ For the LbxNewClient request, the field unique to LBX is client-id. For the LbxNewClient reply, tag-
+ id and change-type are fields unique to LBX, and the contents of connection-data may be different in LBX
+ from the core X protocol (see below).
+<P>
+
+ The proxy assigns each virtual connection a unique identifier using the client-id field in the LbxNewCli
+ ent request. This client-id is used in the LBX protocol to specify the current client (see the LbxSwitch
+ request and the LbxSwitchEvent). client-id 0 is reserved for the proxy control connection. An LbxCli
+ ent error will result if the LbxNewClient request contains a client-id of 0 or an already in use client-id.
+<P>
+
+ If the server rejects this new virtual connection, the server sends a core X connection failure reply to the
+ proxy. The current version of LBX does not support the return of an Authenticate reply.
+<P>
+
+ If the change-type field is set to NoDeltas, then connection-data is sent using the CONINFO structure,
+ which is identical to the additional data of the core connection reply. If the tag-id is non-zero, then the con
+ nection-data is stored by the proxy using this tag value. Tagged connection data must be stored by the proxy,
+ and can not be invalidated by the proxy until an LbxInvalidateTag event is received for that tag.
+<P>
+
+ When the change-type field is not set to NoDeltas, then connection data is sent as changes against connec
+ tion information previously sent to the proxy. The tag-id field, if non-zero, has the tag of the previously sent
+ data to apply the changes to. A zero tag-id indicates that the changes are with respect to the connection infor
+ mation sent when the proxy connected to the server.
+<P>
+
+ If the change-type field is set to NormalClientDeltas, then connection-data is sent using the CONDIF
+ structure. The values in the CONDIF structure are substituted for the identically named fields of the connec
+ tion information for the new connection.
+<P>
+
+ If the change-type field is set to AppGroupDeltas, then connection-data is sent using the CONDI
+ FROOT structure. The root, root-visual, and default-colormap fields, when nonzero, are substituted for the
+ corresponding fields in the reference connection information. The white-pixel and black-pixel fields are sub
+ stituted only when the default-colormap field of the reply is non-zero. When default-colormap field of the
+ reply is zero, so are white-pixel and black-pixel. The first entry in the root-input-masks field is the current-
+ input-mask for the default root window. The remaining entries in root-input-masks are input masks for non-
+ video screens, as defined by the X Print Extension. The number of non-video screens is one less than the
+ number of entries in root-input-masks. These screens are at the end of screen list in the reference connection
+ information.
+<P>
+
+ The encoding for this request is on <A HREF="#15166">page 33</A>.
+<P>
+
+<H4> <A NAME="21625">LbxCloseClient</A>
+</H4>
+
+<UL>
+<P> client: CARD32
+<P> Errors: LbxClient
+</UL>
+ This requests the server to close down the connection represented by the specified proxy's client identifier. If
+ the specified client wasn't previously registered with the server by a LbxNewClient request, the server
+ will send the LbxClient error.
+<P>
+
+ The encoding for this request is on <A HREF="#21121">page 34</A>.
+<P>
+
+<H4> <A NAME="33500">LbxSwitch</A>
+</H4>
+
+<UL>
+<P> client: CARD32
+<P> Errors: LbxClient
+</UL>
+ This request causes the X server to treat subsequent requests as being from a connection to the X server rep
+ resented by the specified client identifier.
+<P>
+
+ If the client making the request is not the proxy, or if the client identifier sent in the request was not previ
+ ously sent in a LbxNewClient request, an LbxClient error is returned.
+<P>
+
+ The encoding for this request is on <A HREF="#36790">page 33</A>.
+<P>
+
+<H4> <A NAME="30719">LbxSync</A>
+</H4>
+
+<P> -->
+ The sync request causes the server to send a reply when all requests before the sync request have been pro
+ cessed.
+<P>
+
+ The encoding for this client is on <A HREF="#21186">page 46</A>.
+<P>
+
+<H4> <A NAME="36693">LbxModifySequence</A>
+</H4>
+
+<UL>
+<P> adjust: CARD32
+<P> Errors: None
+</UL>
+ This request advances the sequence number of the virtual client connection by the specified amount. The
+ proxy sends the LbxModifySequence request to the server when it replies to a client request without for
+ warding the client request on to the X server.
+<P>
+
+ The encoding for this client is on <A HREF="#10940">page 34</A>.
+<P>
+
+<H4> <A NAME="15895">LbxAllowMotion</A>
+</H4>
+
+<UL>
+<P> num: CARD32
+<P> Errors: None
+</UL>
+ This request controls the delivery of optional motion notify events, as described in <A HREF="#15503">"Motion events" on
+ page 3</A>. The num field specifies an increase in the allowed number of motion notify events sent.
+<P>
+
+ The encoding for this request is on <A HREF="#11897">page 34</A>.
+<P>
+
+<H4> <A NAME="12515">LbxInvalidateTag</A>
+</H4>
+
+<UL>
+<P> tag: CARD32
+</UL>
+ The LBX proxy sends this notification to the X server when it refuses to store tagged data, or when it
+ releases tagged data which was previously stored and which was not invalidated by a notification from the X
+ server.
+<P>
+
+ The encoding for this request is on <A HREF="#37545">page 35</A>.
+<P>
+
+<H4> <A NAME="17987">LbxTagData</A>
+</H4>
+
+<UL>
+<P> tag: CARD32
+<P> real-length: CARD32
+<P> data: LISTofBYTE
+</UL>
+ This request specifies the data associated with a previously assigned tag. It is sent in two circumstances: in
+ response to receiving a SendTagDataEvent, and spontaneously, when the proxy must rely on the server
+ to store data which was not previously received from the server. The data is carried in the byte order and
+ structure as would have originally been sent in the core protocol request.
+<P>
+
+ The encoding for this request is on <A HREF="#37174">page 39</A>.
+<P>
+
+<H4> <A NAME="10922">LbxGrabCmap</A>
+</H4>
+
+<UL>
+<P> cmap: Colormap
+</UL>
+<P> -&gt;
+<UL>
+<P> smart-grab: BOOL
+<P> large-pixel: BOOL /* optional */
+<P> auto-release: BOOL /* optional */
+<P> three-channels: BOOL /* optional */
+<P> bits-per-rgb: CARD4 /* optional */
+<P> cells: LISTofCHAN /* optional */
+<P>
+<P> where:
+<P> CHAN: LISTofLBXPIXEL
+<P> LBXPIXEL: PIXELPRIVATE or PIXELPRIVATERANGE or
+<P> PIXELALLOC or PIXELALLOCRANGE
+<P> PIXEL: CARD8 or CARD16
+<P> PIXELPRIVATE: [ pixel: PIXEL ]
+<P> PIXELPRIVATERANGE: [ first-pixel, last-pixel: PIXEL]
+<P> PIXELALLOC: [ pixel: PIXEL,
+<P> color: COLORSINGLE or COLORTRIPLE]
+<P> PIXELALLOCRANGE: [ first-pixel, last-pixel: PIXEL,
+<P> colors: LISTofCOLORSINGLE or LISTofCOLORTRIPLE]
+<P> COLORSINGLE: [ value: CARD8 or CARD16 ]
+<P> COLORTRIPLE: [ r, g, b: COLORSINGLE]
+<P> Errors: Colormap
+</UL>
+ This request asks the server for control of allocating new colormap cells in the specified colormap. The
+ server grants control by replying to this request. If no changes have occurred since the last time this proxy
+ grabbed this colormap, then the smart-grab field of the reply is set to true, and the optional fields are not
+ sent. Otherwise, the current contents of the colormap are placed in the reply, as described later in this sec
+ tion.
+<P>
+
+ Once the proxy has received the reply, it can use the LbxAllocColor request to allocate new colormap
+ cells without the performance penalty of round trips. The proxy is still permitted to use the normal colormap
+ and LbxIncrementPixel requests while the colormap is grabbed. The grab is valid across all virtual
+ connections of the proxy.
+<P>
+
+ The LbxGrabCmap request is limited to colormaps for the visual types negotiated as part of the colormap
+ algorithm negotiation in the start proxy request at connection setup.
+<P>
+
+ The server and other proxies may not allocate new colormap cells in the colormap while the colormap is
+ grabbed by this proxy. If the server or another proxy needs to allocate new colormap cells, the server sends a
+ LbxReleaseCmap event to the proxy holding the grab, which then issues an LbxReleaseCmap request.
+<P>
+
+ The server and other proxies may free colormap cells in a colormap grabbed by a proxy. The server will send
+ an LbxFreeCells event to the proxy that currently has the colormap grabbed when the cell reference
+ count reaches 0.
+<P>
+
+ If the colormap is a of a static visual type, such as StaticGray, StaticColor, GrayScale, or
+ TrueColor, then the proxy's grab is immediately released by the server, and the proxy must use LbxIn
+ crementPixel requests in place of LbxAllocColor requests for this colormap.
+<P>
+
+ If the cmap field does not refer to a valid colormap or the colormap is already grabbed by this proxy then a
+ Colormap error is generated.
+<P>
+
+ The reply describes the contents of the colormap via several arguments and a descriptive list containing one
+ or three channels, with each channel describing allocations in the colormap.
+<P>
+
+ The large-pixel argument, if True, specifies that PIXEL indices will be listed as CARD16 quantities instead
+ of CARD8. The auto-release field, if True, indicates that this colormap is of a static visual type and the
+ proxy's grab is immediately released by the server.
+<P>
+
+ If three-channels is False, a single channel is enclosed and color values are described using COLORTRI
+ PLE, which has fields for red, green and blue. A single channel is used when the visual type is not Direct
+ Color or TrueColor.
+<P>
+
+ If three-channels is True, separate red, green and blue channel lists are enclosed, for describing a Direct
+ Color or TrueColor colormap. Color values for entries in each channel are sent using COLORSINGLE
+ and the corresponding PIXEL value refers to the RGB subfield of the current channel, as defined by the cor
+ responding red-mask, green-mask and blue-mask of the visual.
+<P>
+
+ The bits-per-rgb value is one less than the bits-per-rgb-value field of the visual that the colormap belongs to.
+ If the value is 7 or less, then COLORSINGLE values in the descriptive list are sent using CARD8 fields.
+ Otherwise these values are sent using CARD16 fields.
+<P>
+
+ The list describing current colormap allocations contains entries of the following types:
+<P>
+
+ An LBXPIXELPRIVATE entry indicates that the pixel in the pixel field is unavailable for allocation.
+<P>
+
+ An LBXPIXELPRIVATERANGE entry indicates that a contiguous range of pixels are unavailable for allo
+ cation. The range is first-pixel to last-pixel, and includes last-pixel.
+<P>
+
+ An LBXPIXELALLOC entry indicates that the pixel in the pixel field is allocated as a read-only pixel. The
+ color field carries the color information of the pixel.
+<P>
+
+ An LBXPIXELALLOCRANGE entry indicates that a contiguous range of pixels are allocated as read-only.
+ The range starts first-pixel to last-pixel, and includes last-pixel. These fields are followed by a list of COL
+ ORSINGLE or COLORTRIPLE, depending on the value of three-channels.
+<P>
+
+ A NEXTCHANNEL entry indicates that the next channel of the colormap will be described.
+<P>
+
+ A LISTEND entry indicates the end of the colormap description.
+<P>
+
+ All pixels not described in the reply are unallocated.
+<P>
+
+ The encoding for this request is on <A HREF="#17198">page 44</A>.
+<P>
+
+<H4> <A NAME="34675">LbxReleaseCmap</A>
+</H4>
+
+<UL>
+<P> cmap: Colormap
+</UL>
+ This request releases the specified grabbed colormap. If the cmap field does not refer to a colormap, a Bad
+ Colormap error is produced.
+<P>
+
+ The proxy must remember the state of the colormap when the LbxReleaseCmap request is issued if this
+ proxy may at some future time issue another LbxGrabCmap request on this colormap before the state of
+ the colormap changes.
+<P>
+
+ The encoding for this request is on <A HREF="#14796">page 46</A>.
+<P>
+
+<H4> <A NAME="21636">LbxInternAtoms</A>
+</H4>
+
+<UL>
+<P> count: CARD16
+<P> names: LISTofSTRING8
+</UL>
+<P> -->
+<UL>
+<P> atoms: LISTofATOM
+<P> Errors: Alloc
+</UL>
+ This request allows the proxy to intern a group of atoms in a single round trip. The server will create any
+ atoms that do not exist.
+<P>
+
+ The encoding for this request is on <A HREF="#34140">page 43</A>.
+<P>
+
+<H3><A NAME="MMM24">4.3.4 Substitution Requests
+</A></H3>
+
+<H4> <A NAME="10446">LbxAllocColor</A>
+</H4>
+
+<UL>
+<P> cmap: Colormap
+<P> pixel: CARD32
+<P> red, green, blue: CARD16
+</UL>
+ This request is sent by a proxy that has given colormap grabbed to allocate a new read-only cell in the color
+ map. The proxy may substitute this request for the core AllocColor and AllocNamedColor requests.
+<P>
+
+ The pixel field identifies the colormap cell to allocate. The red, green, and blue fields are the hardware spe
+ cific color values of the corresponding fields of the core AllocColor request. The mapping to hardware
+ specific colormap values by the proxy is performed using the color algorithm negotiated by LbxStart
+ Proxy.
+<P>
+
+ For colormaps of static visual types, the LbxIncrementPixel request is used instead of LBX Alloc
+ Color.
+<P>
+
+ If the cmap field does not identify a grabbed colormap then a BadAccess error is produced. If the pixel
+ field refers to a read-write entry, or the pixel field refers to a pixel outside of the range of this colormap, a
+ BadAlloc error is produced.
+<P>
+
+ The encoding for this request is on <A HREF="#28429">page 46</A>.
+<P>
+
+<H4> <A NAME="27227">LbxIncrementPixel</A>
+</H4>
+
+<UL>
+<P> cmap: COLORMAP
+<P> pixel: CARD32
+<P> Errors: None
+</UL>
+ This request replaces the AllocColor request for read-only pixels currently allocated for the current cli
+ ent. If the visual type of the colormap is of a static type, this request may be used on currently unallocated
+ pixels. The colormap is not required to be grabbed to use this request.
+<P>
+
+ The encoding for this request is on <A HREF="#38053">page 34</A>.
+<P>
+
+<H4> <A NAME="26857">LbxDelta</A>
+</H4>
+
+<UL>
+<P> count: CARD8
+<P> cache-index: CARD8
+<P> diffs: LISTofDIFFITEM
+</UL>
+ This request contains a minimal amount of information relative to a similar prior request. The information is
+ in the form of a difference comparison to a prior request. The prior request is specified by an index to a
+ cache, independently maintained by both the proxy and the server.
+<P>
+
+ The encoding for this request is on <A HREF="#39838">page 34</A>.
+<P>
+
+<H4> <A NAME="37687">LbxGetModifierMapping</A>
+</H4>
+
+<P> -->
+<UL>
+<P> keyspermod: CARD8
+<P> tag: CARD32
+<P> keycodes: LISTofKEYCODE /* optional */
+</UL>
+ This request is identical to the core GetModifierMapping request, with the addition of a tag being
+ returned in the reply. See <A HREF="#26534">"Tag Substitution in Requests" on page 2</A> for a description of the tag field and
+ optional fields.
+<P>
+
+ The encoding for this request is on <A HREF="#40057">page 35</A>.
+<P>
+
+<H4> <A NAME="33719">LbxGetKeyboardMapping</A>
+</H4>
+
+<UL>
+<P> firstKeyCode: KEYCODE
+<P> count: CARD8
+</UL>
+<P> -->
+<UL>
+<P> keysperkeycode: CARD8
+<P> tag: CARD32
+<P> keysyms: LISTofKEYSYM /* optional */
+<P> Errors: Value
+</UL>
+ This request is identical to the X GetKeyboardMapping protocol request, with the addition that a tag is
+ returned in the reply. See <A HREF="#26534">"Tag Substitution in Requests" on page 2</A> for a description of the tag field and
+ optional fields.
+<P>
+
+ The encoding for this request is on <A HREF="#21702">page 37</A>.
+<P>
+
+<H4> <A NAME="39382">LbxGetWinAttrAndGeom</A>
+</H4>
+
+<UL>
+<P> window: WINDOW
+</UL>
+<P> -->
+<UL>
+<P> visual: VISUALID
+<P> class: {InputOutput, InputOnly}
+<P> bit-gravity: BITGRAVITY
+<P> win-gravity: WINGRAVITY
+<P> backing-store: {NotUseful, WhenMapped, Always}
+<P> backing-planes: CARD32
+<P> backing-pixel: CARD32
+<P> save-under: BOOL
+<P> colormap: COLORMAP or None
+<P> map-is-installed: BOOL
+<P> map-state: {Unmapped, Unviewable, Viewable}
+<P> all-event-masks, your-event-mask: SETofEVENT
+<P> do-not-propagate-mask: SETofDEVICEEVENT
+<P> override-redirect: BOOL
+<P> root: WINDOW
+<P> depth: CARD8
+<P> x, y: INT16
+<P> width, height, border-width: CARD16
+<P> Errors: Window
+</UL>
+ GetWindowAttributes and GetGeometry are frequently used together in the X protocol.
+ LbxGetWinAttrAndGeom allows the proxy to request the same information in one round trip.
+<P>
+
+ <A NAME="32802">.</A>The encoding for this request is on <A HREF="#41440">page 43</A>.
+<P>
+
+<H4> <A NAME="18818">LbxQueryFont</A>
+</H4>
+
+<UL>
+<P> font: FONTABLE
+</UL>
+<P> -->
+<UL>
+<P> compression: BOOL
+<P> tag: CARD32
+<P> font-info: FONTINFO /* optional */
+<P> char-infos: LISTofCHARINFO or LISTofLBXCHARINFO /* optional */
+<P> where:
+<P> LBXCHARINFO: [left-side-bearing: INT6
+<P> right-side-bearing: INT7
+<P> character-width: INT6
+<P> ascent: INT6
+<P> descent: INT7]
+<P> Errors: Font,Alloc
+</UL>
+ This request is used to replace the core QueryFont request and has identical semantics.
+<P>
+
+ See <A HREF="#26534">"Tag Substitution in Requests" on page 2</A> for a description of the tag field and optional fields.
+<P>
+
+ The compression field is True if the char-infos field is represented using LBXCHARINFO.
+<P>
+
+ The per-character information will be encoded in an LBXCHARINFO when, for every character, the charac
+ ter-width, left-side-bearing, and ascent can each be represented in not more than 6 bits, and the right-side-
+ bearing and descent can each be represented in not more than 7 bits, and the attributes field is identical the
+ attributes field of the max_bounds of the font_info field of the font.
+<P>
+
+ The encoding for this request is on <A HREF="#24597">page 37</A>.
+<P>
+
+<H4> <A NAME="40098">LbxChangeProperty</A>
+</H4>
+
+<UL>
+<P> window: WINDOW
+<P> property: ATOM
+<P> type: ATOM
+<P> format: {0,8,16,32}
+<P> mode: {Replace, Prepend, Append}
+<P> nUnits: CARD32
+</UL>
+<P> -->
+<UL>
+<P> tag: CARD32
+</UL>
+ This request is sent to the server when the client sends an X ChangeProperty request through the proxy.
+ The size of the data is sent with this request, but not the property data itself. The server reply contains a tag
+ identifier for the data, which is stored in the proxy. The proxy must not discard this data before it is sent to
+ the server, or invalidated by the server. This means that before issuing an LbxStopProxy request, or exit
+ ing, the proxy must send LbxTagData requests for these items. If the server loses the connection before the
+ information is sent back, the server should revert the property value to its last known value, if possible.
+<P>
+
+ If the mode field is Prepend or Append, the tag refers only to the prepended or appended data.
+<P>
+
+ If the tag in the reply is zero, then the change was ignored by the server, as defined in the security extension.
+ The proxy should dump the associated data, since the server will never ask for it.
+<P>
+
+ The encoding for this request is on <A HREF="#18013">page 38</A>.
+<P>
+
+<H4> <A NAME="31397">LbxGetProperty</A>
+</H4>
+
+<UL>
+<P> window: WINDOW
+<P> property: ATOM
+<P> type: ATOM or AnyPropertyType
+<P> long-offset: CARD32
+<P> long-length: CARD32
+<P> delete: CARD8
+</UL>
+<P> -->
+<UL>
+<P> type: ATOM or None
+<P> format: {0, 8, 16, 32}
+<P> bytes-after: CARD32
+<P> nItems: CARD32
+<P> tag: CARD32
+<P> value: LISTofINT8 or LISTofINT16 or LISTofINT32
+</UL>
+ This request may be used by the proxy as a substitution for a core GetProperty request. It allows tags to
+ be used for property data that is unlikely to change often in value, but is likely to be fetched by multiple cli
+ ents.
+<P>
+
+ The LbxGetProperty request has the same arguments as the core GetProperty request. The reply for
+ LbxGetProperty has all of the fields from the core GetProperty reply, but has the additional fields of
+ nItems and tag.
+<P>
+
+ In order to utilize tags in LbxGetProperty for a specific property, the server must first send the complete
+ property data to the proxy and associate this data with a tag. More precisely, the server sends an LbxGet
+ Property reply with a new tag, nItems set to the number of items in the property, the size of the property
+ data in the reply length field, and the complete property data in value. The proxy stores the property data in
+ its tag cache and associates it with the specified tag.
+<P>
+
+ In response to future LbxGetProperty requests for the same property, if the server thinks that the proxy
+ has the actual property data in its tag cache, it may choose to send an LbxGetProperty reply without the
+ actual property data. In this case, the reply would include a non-zero tag, a zero reply length, and no data for
+ value.
+<P>
+
+ If the server chooses not to generate a tagged reply to LbxGetProperty, or for some reason is unable to
+ do so, it would send a reply with a tag of zero, the size of the property data in the reply length field, and the
+ complete property data in value.
+<P>
+
+ The encoding for this request is on <A HREF="#13863">page 38</A>.
+<P>
+
+<H4> <A NAME="37179">LbxPolyPoint</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> points: LISTofLBXPOINT
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyPoint request. Not all PolyPoint requests can be represented as Lbx
+ PolyPoint requests.
+<P>
+
+ The proxy will convert the representation of the points to be relative to the previous point, as described by
+ previous coordinate mode in the X protocol.
+<P>
+
+ The encoding for this request is on <A HREF="#29719">page 35</A>.
+<P>
+
+<H4> <A NAME="16574">LbxPolyLine</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> points: LISTofLBXPOINT
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyLine request. Not all PolyLine requests can be represented as Lbx
+ Polyline requests.
+<P>
+
+ The proxy will convert the representation of the points to be relative to the previous point, as described by
+ previous coordinate mode in the X protocol.
+<P>
+
+ The encoding for this request is on <A HREF="#31086">page 35</A>.
+<P>
+
+<H4> <A NAME="26077">LbxPolySegment</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> segments: LISTofLBXSEGMENT
+<P>
+<P> where:
+<P> LBXSEGEMENT; [x1, y1, x2, y2: LBXINT16]
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the PolySegment request. Not all PolySegment requests can be represented as
+ LbxPolySegment requests.
+<P>
+
+ For segments other than the first segment of the request, [x1, y1] is relative to [x1, y1] of the previous seg
+ ment. For all segments, [x2, y2] is relative to that segment's [x1, y1].
+<P>
+
+ The encoding for this request is on <A HREF="#27528">page 35</A>.
+<P>
+
+<H4> <A NAME="40958">LbxPolyRectangle</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> rectangles: LISTofLBXRECTANGLE
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyRectangle request. Not all PolyRectangle requests can be repre
+ sented as LbxPolyRectangle requests.
+<P>
+
+ The encoding for this request is on <A HREF="#33628">page 36</A>.
+<P>
+
+<H4> <A NAME="15317">LbxPolyArc</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> arcs: LISTofLBXARC
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyArc request. Not all PolyArc requests can be represented as LbxPol
+ yArc requests.
+<P>
+
+ The encoding for this request is on <A HREF="#25855">page 36</A>.
+<P>
+
+<H4> <A NAME="25511">LbxPolyFillRectangle</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> rectangles: LISTofLBXRECTANGLE
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyFillRectangle request. Not all PolyFillRectangle requests can
+ be represented as LbxPolyFillRectangle requests.
+<P>
+
+ The encoding for this request is on <A HREF="#26399">page 36</A>.
+<P>
+
+<H4> <A NAME="42698">LbxPolyFillArc</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> arcs: LISTofLBXARC
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyFillArc request. Not all PolyFillArc requests can be represented as
+ LbxPolyFillArc requests.
+<P>
+
+ The encoding for this request is on <A HREF="#19081">page 37</A>.
+<P>
+
+<H4> <A NAME="35796">LbxFillPoly</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> shape: BYTE
+<P> points: LISTofLBXPOINT
+<P> Errors: Alloc and those given for the corresponding X request.
+</UL>
+ This request replaces the FillPoly request. Not all FillPoly requests can be represented as Lbx
+ FillPoly requests.
+<P>
+
+ The proxy will convert the representation of the points to be relative to the previous point, as described by
+ previous coordinate mode in the X protocol.
+<P>
+
+ The encoding for this request is on <A HREF="#24998">page 36</A>.
+<P>
+
+<H4> <A NAME="11409">LbxCopyArea</A>
+</H4>
+
+<UL>
+<P> srcCache: CARD8 /* source drawable */
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> src-Drawable: CARD32
+<P> src-x: LBXPINT16
+<P> src-y: LBXPINT16
+<P> width: LBXCARD16
+<P> height: LBXCARD16
+<P> dst-x: LBXPINT16
+<P> dst-y: LBXPINT16
+<P> Errors: Those given for the corresponding X request.
+</UL>
+ This request replaces the CopyArea request for requests within its encoding range.
+<P>
+
+ The encoding for this request is on <A HREF="#10231">page 39</A>.
+<P>
+
+<H4> <A NAME="36772">LbxCopyPlane</A>
+</H4>
+
+<UL>
+<P> bit-plane: CARD32
+<P> src-cache: CARD8 /* cache reference for source drawable */
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> src-drawable: CARD32
+<P> src-x: LBXPINT16
+<P> src-y: LBXPINT16
+<P> width: LBXCARD16
+<P> height: LBXCARD16
+<P> dst-x: LBXPINT16
+<P> dst-y: LBXPINT16
+<P> Errors: Those given for the corresponding X request.
+</UL>
+ This request replaces the CopyPlane request for requests within its coding range.
+<P>
+
+ The encoding for this request is on <A HREF="#18847">page 40</A>.
+<P>
+
+<H4> <A NAME="23201">LbxPolyText8</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> x: LBXPINT16
+<P> y: LBXPINT16
+<P> items: LISTofTEXTITEM8
+<P> Errors: Alloc, and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyText8 request for requests within its encoding range.
+<P>
+
+ The encoding for this request is on <A HREF="#39640">page 40</A>.
+<P>
+
+<H4> <A NAME="13228">LbxPolyText16</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> x: LBXPINT16
+<P> y: LBXPINT16
+<P> items: LISTofTEXTITEM16
+<P> Errors: Alloc, and those given for the corresponding X request.
+</UL>
+ This request replaces the PolyText16 request for requests within its encoding range.
+<P>
+
+ The encoding for this request is on <A HREF="#32634">page 40</A>.
+<P>
+
+<H4> <A NAME="10990">LbxImageText8</A>
+</H4>
+
+<UL>
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> nChars: CARD8
+<P> x: LBXPINT16
+<P> y: LBXPINT16
+<P> string: STRING8
+<P> Errors: Alloc, and those given for the corresponding X request.
+</UL>
+ This request replaces the ImageText8 request for requests within its encoding range.
+<P>
+
+ The encoding for this request is on <A HREF="#17018">page 40</A>.
+<P>
+
+<H4> <A NAME="39584">LbxImageText16</A>
+</H4>
+
+<UL>
+<P> nChars: CARD8
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> x: LBXPINT16
+<P> y: LBXPINT16
+<P> string: STRING16
+<P> Errors: Alloc, and those given for the corresponding X request.
+</UL>
+ This request replaces the ImageText16 request for requests within its encoding range.
+<P>
+
+ The encoding for this request is on <A HREF="#23910">page 41</A>.
+<P>
+
+<H4> <A NAME="21218">LbxPutImage</A>
+</H4>
+
+<UL>
+<P> compression-method: CARD8
+<P> format: {Bitmap, XYPixmap, ZPixmap} /* packed */
+<P> gc-and-drawable: LBXGCANDDRAWABLE
+<P> width, height: LBXCARD16
+<P> dst-x, dst-y: LBXPINT16
+<P> depth: CARD8 /* packed */
+<P> left-pad: CARD8 /* packed */
+<P> pad-bytes: CARD8 /* packed */
+<P> data:LISTofBYTE
+<P> Errors: Alloc, Value
+</UL>
+ When the request can be usefully compressed, this request replaces the PutImage request. The compres
+ sion-method parameter contains the opcode of a compression method returned in the LbxStartProxy
+ reply. The pad-bytes parameter gives the number of unused pad bytes that follow the compressed image
+ data. All other parameters are as in the X request. If the specified compression method is not recognized, the
+ server returns a Value error.
+<P>
+
+ The encoding for this request is on <A HREF="#12268">page 41</A>.
+<P>
+
+<H4> <A NAME="26896">LbxGetImage</A>
+</H4>
+
+<UL>
+<P> drawable: DRAWABLE
+<P> x, y: INT16
+<P> width, height: CARD16
+<P> plane-mask: CARD32
+<P> format: {XYPixmap, ZPixmap}
+</UL>
+<P> -->
+<UL>
+<P> depth: CARD8
+<P> x-length: CARD32
+<P> visual: VISUALID or None
+<P> compression-method: CARD8
+<P> data: LISTofBYTE
+<P> Errors: Alloc,Match,Value
+</UL>
+ This request can replace the GetImage request. The same semantics apply, with the following exceptions.
+<P>
+
+ The compression-method field contains the opcode of the compression method used in the reply. The com
+ pression opcodes are supplied in the LbxStartProxy reply. The x-length field contains the length of the
+ uncompressed version of the reply in 4 byte units.
+<P>
+
+ A Value error is returned if the format is not recognized by the X server. A Match error is returned under
+ the same circumstances as described by the GetImage request.
+<P>
+
+ The encoding for this request is on <A HREF="#10066">page 42</A>.
+<P>
+
+<H4> <A NAME="31209">LbxBeginLargeRequest</A>
+</H4>
+
+<UL>
+<P> large-request-length: CARD32
+<P> Errors: Alloc
+</UL>
+ This request, along with the LbxLargeRequestData and LbxEndLargeRequest requests, is used to
+ transport a large request in pieces. The smaller size of the resulting requests allows smoother multiplexing of
+ clients on a single low bandwidth connection to the server. The resulting finer-grained multiplexing
+ improves responsiveness for the other clients.
+<P>
+
+ After a LbxBeginLargeRequest request is sent, multiple LbxLargeRequestData requests are sent
+ to transport all of the data in the large request, and finally an LbxEndLargeRequest request is sent. The
+ large-request-length field expresses the total length of the transported large request, expressed as the number
+ of bytes in the transported request divided by four.
+<P>
+
+ The encoding for this request is on <A HREF="#22013">page 42</A>.
+<P>
+
+<H4> <A NAME="36982">LbxLargeRequestData</A>
+</H4>
+
+<UL>
+<P> data: LISTofBYTE
+<P> Errors: Alloc
+</UL>
+ This request is used to carry the segments of a larger request, as described in the definition of LbxBegin
+ LargeRequest. The data must be carried in order, starting with the request header, and each segment
+ must be multiples of 4 bytes long. If the LbxLargeRequestData is not preceded by a corresponding
+ LbxBeginLargeRequest, a BadAlloc error is generated.
+<P>
+
+ The encoding for this request is on <A HREF="#31469">page 43</A>.
+<P>
+
+<H4> <A NAME="31841">LbxEndLargeRequest</A>
+</H4>
+
+<UL>
+<P> Errors: Length, Alloc
+</UL>
+ As described in the definition of LbxBeginLargeRequest, LbxEndLargeRequest is used to signal
+ the end of a series of LargeRequestData requests. If the total length of the data transported by the
+ LbxLargeRequestData requests does not match the large-request-length field of the preceding Lbx
+ BeginLargeRequest request, then a Length error occurs. If the LbxEndLargeRequest is not pre
+ ceded by a corresponding LbxBeginLargeRequest, a BadAlloc error is generated. The request is
+ executed in order for that client as if it were the request after the request preceding LbxEndLargeRe
+ quest.
+<P>
+
+ The encoding for this request is on <A HREF="#31037">page 43</A>.
+<P>
+
+<H2><A NAME="MMM25">4.4 Events
+</A></H2>
+
+<H4> <A NAME="33748">LbxSwitchEvent</A>
+</H4>
+
+<UL>
+<P> client: CARD32
+</UL>
+ Notify the proxy that the subsequent replies, events, and errors are relative to the specified client.
+<P>
+
+ The encoding for this event is on <A HREF="#17348">page 46</A>.
+<P>
+
+<H4> <A NAME="17292">LbxCloseEvent</A>
+</H4>
+
+<UL>
+<P> client: CARD32
+</UL>
+ Notify the proxy that the specified client's connection to the server is closed.
+<P>
+
+ The encoding for this event is on <A HREF="#41814">page 47</A>.
+<P>
+
+<H4> <A NAME="23016">LbxInvalidateTagEvent</A>
+</H4>
+
+<UL>
+<P> tag: CARD32
+<P> tag-type: {Modmap, Keymap, Property, Font, ConnInfo}
+</UL>
+ This message informs the proxy that the tag and the server data referenced by the tag are obsolete, and
+ should be discarded. The tag type may be one of the following values: LbxTagTypeModmap, LbxTag
+ TypeKeymap, LbxTagTypeProperty, LbxTagTypeFont, LbxTagTypeConnInfo.
+<P>
+
+ The encoding for this event is on <A HREF="#34406">page 47</A>.
+<P>
+
+<H4> <A NAME="20373">LbxSendTagDataEvent</A>
+</H4>
+
+<UL>
+<P> tag: CARD32
+<P> tag-type: {Property}
+</UL>
+ The server sends this event to the proxy to request a copy of tagged data which is being stored by the proxy.
+ The request contains a tag which was previously assigned to the data by the server. The proxy should
+ respond to SendTagData by sending a TagData request to the server. The tag type may be one of the
+ following values: LbxTagTypeProperty.
+<P>
+
+ The encoding for this event is on <A HREF="#22353">page 47</A>.
+<P>
+
+<H4> <A NAME="25209">LbxListenToOne</A>
+</H4>
+
+<UL>
+<P> client: CARD32 or 0xffffffff
+</UL>
+ When the server is grabbed, ListenToOne is sent to the proxy. As an X client, the proxy itself is unaf
+ fected by grabs, in order that it may respond to requests for data from the X server.
+<P>
+
+ When the client grabbing the server is managed through the proxy, the proxy will permit messages from
+ itself and the grabbing client to be sent immediately to the server, and may buffer requests from other clients
+ of the proxy. The client is identified in the event.
+<P>
+
+ When the client grabbing the server is not managed through the proxy, the client field in the event will be
+ 0xffffffff. The proxy will communicate with the server, and it may buffer requests from other clients.
+ The proxy will continue to handle new connections while the server is grabbed.
+<P>
+
+ The server will send ListenToAll to the proxy when the server is ungrabbed. There is no time-out for
+ this interval in the protocol.
+<P>
+
+ The encoding for this event is on <A HREF="#18630">page 47</A>.
+<P>
+
+<H4> <A NAME="11095">LbxListenToAll</A>
+</H4>
+
+ Notify the proxy that the server has been ungrabbed, and that the proxy may now send all buffered client
+ requests on to the server.
+<P>
+
+ The encoding for this event is on <A HREF="#30610">page 47</A>.
+<P>
+
+<H4> <A NAME="40268">LbxQuickMotionDeltaEvent</A>
+</H4>
+
+<UL>
+<P> deltaTime: CARD8
+<P> deltaX: INT8
+<P> deltaY: INT8
+</UL>
+ This event is used as a replacement for the MotionNotify event when possible. The fields are used as
+ deltas to the most recent MotionNotify event encoded as a MotionNotify event, LbxQuickMo
+ tionDeltaEvent, or LbxMotionDeltaEvent. Not every MotionNotify event can be encoded as
+ a LbxQuickMotionDeltaEvent.
+<P>
+
+ The encoding for this event is on <A HREF="#35213">page 48</A>.
+<P>
+
+<H4> <A NAME="30033">LbxMotionDeltaEvent</A>
+</H4>
+
+<UL>
+<P> deltaX: INT8
+<P> deltaY: INT8
+<P> deltaTime: CARD16
+<P> deltaSequence: CARD16
+</UL>
+ This event is used as a replacement for the MotionNotify event when possible. The fields are used as
+ deltas to the most recent MotionNotify event encoded as a MotionNotify event, LbxQuickMo
+ tionDeltaEvent, or LbxMotionDeltaEvent. Not every MotionNotify event can be encoded as
+ a LbxMotionDeltaEvent.
+<P>
+
+ <A NAME="33682">.</A>The encoding for this event is on <A HREF="#35310">page 48</A>.
+<P>
+
+<H4> <A NAME="19129">LbxReleaseCmapEvent</A>
+</H4>
+
+<UL>
+<P> colormap: Colormap
+</UL>
+ This event notifies the proxy that it must release the grab on this colormap via the ReleaseCmap request. <A HREF="#34675">See
+ "LbxReleaseCmap" on page 17.</A>
+<P>
+
+ The encoding for this event is on <A HREF="#14052">page 48</A>.
+<P>
+
+<H4> <A NAME="38041">LbxFreeCellsEvent</A>
+</H4>
+
+<UL>
+<P> colormap: Colormap
+<P> pixelStart, pixelEnd: CARD32
+</UL>
+ The LbxFreeCells event is sent to a proxy that has a colormap grabbed to notify the proxy that the refer
+ ence count of the described cells were decremented to zero by the server or another proxy. The reference
+ count includes those by this proxy. The proxy must update its copy of the colormap state accordingly if the
+ colormap is still grabbed, or if the proxy may in the future grab the colormap using smart-grab mode. <A HREF="#10922">See
+ "LbxGrabCmap" on page 15.</A>
+<P>
+
+ The pixelStart and pixelEnd fields of the event denote a continuous range of cells that were freed.
+<P>
+
+ The encoding for this event is on <A HREF="#14731">page 48</A>.
+<P>
+
+<H2><A NAME="MMM26">4.5 Responses
+</A></H2>
+
+ Responses are messages from the server to the proxy that not, strictly speaking, events, replies or errors.
+<P>
+
+<H4> <A NAME="34042">.</A>LbxDeltaResponse
+</H4>
+
+<UL>
+<P> count: CARD8
+<P> cache-index: CARD8
+<P> diffs: LISTofDIFFITEM
+</UL>
+ This response carries an event, reply, or error that has been encoded relative to a message in the response
+ delta cache. The cache-index field is the index into the cache. Each entry in diffs provides a byte offset and
+ replacement value to use in reconstructing the response.
+<P>
+
+ The encoding for this event is on <A HREF="#17100">page 49</A>.
+<P>
+
+<H1>5 <A NAME="13570">Algorithm Naming</A>
+<A HREF="lbxTOC.html">..</A><HR></H1>
+
+ To avoid potential clashes between different but similar algorithms for stream, bitmap, and pixmap compres
+ sion, the following naming scheme will be adhered to:
+<P>
+
+ Each algorithm has a unique name, which is a STRING8, of the following form:
+<P>
+
+ &lt;organization&gt;-&lt;some-descriptive-name&gt;
+<P>
+
+ The organization field above is the organization name as registered in section 1 of the X Registry (the regis
+ try is provided as a free service by the X Consortium.) This prevents conflicts among different vendor's
+ extensions.
+<P>
+
+ As an example, the X Consortium defines a zlib-based stream compression algorithm called XC-ZLIB.
+<P>
+
+<H1><A NAME="MMM27">6 Encoding
+</A><A HREF="lbxTOC.html">..</A><HR></H1>
+
+ The syntax and types used in the encoding are taken from the X protocol encoding. Where LBX defines new
+ types, they are defined earlier in this document.
+<P>
+
+ As in the X protocol, in various cases, the number of bytes occupied by a component will be specified by a
+ lowercase single-letter variable name instead of a specific numeric value, and often some other component
+ will have its value specified as a simple numeric expression involving these variables. Components specified
+ with such expressions are always interpreted as unsigned integers. The scope of such variables is always just
+ the enclosing request, reply, error, event, or compound type structure.
+<P>
+
+ For unused bytes, the encode-form is:
+<P>
+
+<UL>
+<P> N unused
+</UL>
+ If the number of unused bytes is variable, the encode-form typically is:
+<P>
+
+<UL>
+<P> p unused, p=pad(E)
+</UL>
+ where E is some expression, and pad(E) is the number of bytes needed to round E up to a multiple of four.
+<P>
+
+ pad(E) = (4 - (E mod 4)) mod 4
+<P>
+
+ In many of the encodings, the length depends on many variable length fields. The variable L is used to indi
+ cate the number of padded 4 byte units needed to carry the request. Similarly, the variable Lpad indicates the
+ number of bytes needed to pad the request to a 4 byte boundary.
+<P>
+
+ For counted lists there is a common encoding of NLISTofFOO:
+<P>
+
+ NLISTofFOO
+<P>
+
+<UL>
+<P> 1 m num items
+<P> m LISTofFOO items
+</UL>
+ For cached GC and Drawables:
+<P>
+
+<UL>
+<P> LBXGCANDDRAWUPDATE
+<P> 4 or 0 DRAWBLE optional drawable
+<P> 4 or 0 GC optional GC
+<P>
+<P> LBXGCANDDRAWABLE
+<P> 8 LBXGCANDDRAWENT cache-entries
+<P> 8 unused
+<P> m LBXGCANDDRAWUPDATE optional GC and Drawable
+</UL>
+<H2><A NAME="MMM28">6.1 Errors
+</A></H2>
+
+<H4><A NAME="MMM29"> LbxClient
+</A></H4>
+
+<UL>
+<P> 1 0 Error
+<P> 1 CARD8 error-base + 0
+<P> 2 CARD16 sequence number
+<P> 4 unused
+<P> 2 CARD16 lbx opcode
+<P> 1 CARD8 major opcode
+<P> 21 unused
+</UL>
+<H2><A NAME="MMM30">6.2 Requests
+</A></H2>
+
+<H4> <A NAME="34166">LbxQueryVersion</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 0 lbx opcode
+<P> 2 1 request length
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 unused
+<P> 2 CARD16 sequence number
+<P> 4 0 reply length
+<P> 2 CARD16 major version
+<P> 2 CARD16 minor version
+<P> 20 unused
+</UL>
+ The description of this request is on <A HREF="#18761">page 8</A>.
+<P>
+
+<H4> <A NAME="27452">LbxStartProxy</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 1 lbx opcode
+<P> 2 L request length
+<P> n NLISTofOPTION-REQUEST options
+<P> p unused, p=pad(n)
+</UL>
+ OPTION-REQUEST
+<P>
+
+<UL>
+<P> 1 OPTCODE option-code
+<P> m OPTLEN option-request-byte-length, (b=m+a+1)
+<P> a DELTAOPT or option
+<P> NLISTofNAMEDOPT or
+<P> NLISTofSTR or
+<P> NLISTofPIXMAPMETHOD or
+<P> BOOL
+<P>
+</UL>
+ The encoding of the option field depends on the option-code. See <A HREF="#35444">Table 1, "StartProxy Options," on page 10</A>.
+<P>
+
+<UL>
+<P> 1 OPTCODE option-code
+<UL>
+<P> 0 LbxOptionDeltaProxy
+<P> 1 LbxOptionDeltaServer
+<P> 2 LbxOptionStreamCompression
+<P> 3 LbxOptionBitmapCompression
+<P> 4 LbxOptionPixmapCompression
+<P> 5 LbxOptionMessageCompression /* also known as squishing */
+<P> 6 LbxOptionUseTags
+<P> 7 LbxOptionColormapAllocation
+<P> 255 LbxOptionExtension
+</UL>
+</UL>
+ OPTLEN has two possible encodings, depending on the size of the value carried:
+<P>
+
+<UL>
+<P> OPTLEN
+<P> 1 CARD8 b (0 &lt; b &lt;= 255)
+<P>
+<P> OPTLEN
+<P> 1 0 long length header
+<P> 1 c length0, c = b &gt;&gt; 8
+<P> 1 d length1, d= b &amp; #xff
+</UL>
+ DELTAOPT
+<P>
+
+<UL>
+<P> 1 CARD8 min-cache-size
+<P> 1 CARD8 max-cache-size
+<P> 1 CARD8 preferred-cache-size
+<P> 1 CARD8 min-message-length
+<P> 1 CARD8 max-message-length (in 4-byte units)
+<P> 1 CARD8 preferred-message-length
+</UL>
+ NAMEDOPT
+<P>
+
+<UL>
+<P> f STR type-name
+<P> 1 g+1 option-data-length
+<P> g LISTofBYTE option-data (option specific)
+</UL>
+ PIXMAPMETHOD
+<P>
+
+<UL>
+<P> h STR name
+<P> 1 BITMASK format mask
+<P> 1 j depth count
+<P> j LISTofCARD8 depths
+</UL>
+<P>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 CARD8 count
+<UL>
+<P> 0xff options in request cannot be decoded
+</UL>
+<P> 2 CARD16 sequence number
+<P> 4 (a+p-32)/4 reply length
+<P> a LISTofCHOICE options-reply
+<P> p unused, if (n&lt;24) p=24-n else p=pad(n)
+</UL>
+ CHOICE
+<P>
+
+<UL>
+<P> 1 CARD8 request-option-index
+<P> b OPTLEN reply-option-byte-length
+<P> c DELTACHOICE or choice
+<P> INDEXEDCHOICE or
+<P> NLISTofINDEXEDOPT or
+<P> NLISTofPIXMAPCHOICE or
+<P> BOOL or
+<P> INDEXEDCHOICE
+</UL>
+ The encoding of the choice field depends on the option-code. See <A HREF="#35444">Table 1, "StartProxy Options," on page 10</A>.
+<P>
+
+ DELTACHOICE
+<P>
+
+<UL>
+<P> 1 CARD8 preferred cache size
+<P> 1 CARD8 preferred message length in 4-byte units
+</UL>
+ INDEXEDCHOICE
+<P>
+
+<UL>
+<P> 1 CARD8 index
+<P> d LISTofBYTE data
+</UL>
+ PIXMAPCHOICE
+<P>
+
+<UL>
+<P> 1 CARD8 index
+<P> 1 CARD8 opcode
+<P> 1 BITMASK format mask
+<P> e NLISTofCARD8 depths
+</UL>
+ The description of this request is on <A HREF="#20870">page 9</A>.
+<P>
+
+<H4> <A NAME="23471">LbxStopProxy</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 2 lbx opcode
+<P> 2 1 request length
+</UL>
+ The description of this request is on <A HREF="#27455">page 12</A>.
+<P>
+
+<H4> <A NAME="36790">LbxSwitch</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 3 lbx opcode
+<P> 2 2 request length
+<P> 4 CARD32 client
+</UL>
+ <A NAME="15166">.</A>The description of this request is on <A HREF="#33500">page 13</A>.
+<P>
+
+<H4><A NAME="MMM31"> LbxNewClient
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 4 lbx opcode
+<P> 2 L request length
+<P> 4 CARD32 client
+<P> The remaining bytes of the request are the core connection setup.
+</UL>
+<P> -->
+<UL>
+<P> If the connection is rejected, a core connection reply is sent. Otherwise the reply has the form:
+<P> 1 BOOL success
+<P> 1 change type
+<P> 0 no-deltas
+<P> 1 normal-client-deltas
+<P> 2 app-group-deltas
+<P> 2 CARD16 major version
+<P> 2 CARD16 minor version
+<P> 2 1 + a length
+<P> 4 CARD32 tag id
+</UL>
+ The remaining bytes depend on the value of change-type and length.
+<P>
+
+ For no-deltas, the remaining bytes are the "additional data" bytes of the core reply. (a = length of core reply,
+ in 4 byte quantities).
+<P>
+
+ For normal-client-deltas, the additional bytes have the form, with a length (a = 1 +b):
+<P>
+
+<UL>
+<P> 4 CARD32 resource id base
+<P> 4b LISTofSETofEVENT root input masks
+</UL>
+ For app-group-deltas, the additional bytes have the following form, with a length of (a = 1 + 4c):
+<P>
+
+<UL>
+<P> 4 CARD32 resource id base
+<P> 4 WINDOW root id base
+<P> 4 VISUALID visual
+<P> 4 COLORMAP colormap
+<P> 4 CARD32 white pixel
+<P> 4 CARD32 black pixel
+<P> 4c LISTofSETofEVENT root input masks
+</UL>
+ <A NAME="21121">.</A>The description of this request is on <A HREF="#17810">page 12</A>.
+<P>
+
+<H4><A NAME="MMM32"> LbxCloseClient
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 5 lbx opcode
+<P> 2 2 request length
+<P> 4 CARD32 client
+</UL>
+ <A NAME="10940">.</A>The description of this request is on <A HREF="#21625">page 13</A>.
+<P>
+
+<H4><A NAME="MMM33"> LbxModifySequence
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 6 lbx opcode
+<P> 2 2 request length
+<P> 4 CARD32 offset to sequence number
+</UL>
+ <A NAME="11897">.</A>The description of this request is on <A HREF="#36693">page 14</A>.
+<P>
+
+<H4><A NAME="MMM34"> LbxAllowMotion
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 7 lbx opcode
+<P> 2 2 request length
+<P> 4 CARD32 number of MotionNotify events
+</UL>
+ <A NAME="38053">.</A>The description of this request is on <A HREF="#15895">page 14</A>.
+<P>
+
+<H4><A NAME="MMM35"> LbxIncrementPixel
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 8 lbx opcode
+<P> 2 3 request length
+<P> 4 COLORMAP colormap
+<P> 4 CARD32 pixel
+</UL>
+ <A NAME="39838">.</A>The description of this request is on <A HREF="#27227">page 18</A>.
+<P>
+
+<H4><A NAME="MMM36"> LbxDelta
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 9 lbx opcode
+<P> 2 1+(2n +p+2)/4 request length
+<P> 1 n count of diffs
+<P> 1 CARD8 cache index
+<P> 2n LISTofDIFFITEM offsets and differences
+<P> p unused, p=pad(2n + 2)
+</UL>
+ The description of this request is on <A HREF="#26857">page 18</A>.
+<P>
+
+<H4> <A NAME="40057">LbxGetModifierMapping</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 10 lbx opcode
+<P> 2 1 request length
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 n keycodes-per-modifier
+<P> 2 CARD16 sequence number
+<P> 4 2n reply length
+<P> 4 CARD32 tag
+<P> 20 unused
+<P> 8n LISTofKEYCODE keycodes
+</UL>
+ The description of this request is on <A HREF="#37687">page 18</A>.
+<P>
+
+<H4> <A NAME="37545">LbxInvalidateTag</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 12 lbx opcode
+<P> 2 2 request length
+<P> 4 CARD32 tag
+</UL>
+ The description of this request is on <A HREF="#12515">page 14</A>.
+<P>
+
+<H4> <A NAME="29719">LbxPolyPoint</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 13 lbx opcode
+<P> 2 1+(m+n+p)/4 request length
+<P> m LBXGCANDDRAWABLE cache entries
+<P> n LISTofLBXPOINT points (n is data-dependent)
+<P> p 0 unused, p=Lpad
+</UL>
+ <A NAME="31086">.</A>The description of this request is on <A HREF="#37179">page 21</A>.
+<P>
+
+<H4><A NAME="MMM37"> LbxPolyLine
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 14 lbx opcode
+<P> 2 1+(m+n+p)/4 request length
+<P> m LBXGCANDDRAWABLE cache entries
+<P> n LISTofLBXPOINT points (n is data-dependent)
+<P> p 0 unused, p=Lpad
+</UL>
+ The description of this request is on <A HREF="#16574">page 21</A>.
+<P>
+
+<H4> <A NAME="27528">LbxPolySegment</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 15 lbx opcode
+<P> 2 1+(m+n+p)/4 request length
+<P> m LBXGCANDDRAWABLE cache entries
+<P> n LISTofLBXSEGMENT segments (n is data-dependent)
+<P> p 0 unused, p=Lpad
+</UL>
+ <A NAME="33628">.</A>The description of this request is on <A HREF="#26077">page 22</A>.
+<P>
+
+<H4><A NAME="MMM38"> LbxPolyRectangle
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 16 lbx opcode
+<P> 2 1+(m+n+p)/4 request length
+<P> m LBXGCANDDRAWABLE cache entries
+<P> n LISTofLBXRECTANGLE rectangles (n is data-dependent)
+<P> p 0 unused, p=pad(m+n)
+</UL>
+ The description of this request is on <A HREF="#40958">page 22</A>.
+<P>
+
+<H4> <A NAME="25855">LbxPolyArc</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 17 lbx opcode
+<P> 2 1+(m+n+p)/4 request length
+<P> m LBXGCANDDRAWABLE cache entries
+<P> n LISTofLBXARCS arcs (n is data-dependent)
+<P> p 0 unused, p=Lpad
+</UL>
+ The description of this request is on <A HREF="#15317">page 22</A>.
+<P>
+
+<H4> <A NAME="24998">LbxFillPoly</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 18 lbx opcode
+<P> 2 1+(3+m+n+p)/4 request length
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> 1 shape
+<UL>
+<P> 0 Complex
+<P> 1 Nonconvex
+<P> 2 Convex
+</UL>
+<P> 1 p pad byte count
+<P> m LBXGCANDDRAWUPDATE optional gc and drawable
+<P> n LISTofLBXPOINT points (n is data-dependent)
+<P> p 0 unused, p=Lpad
+</UL>
+ The description of this request is on <A HREF="#35796">page 23</A>.
+<P>
+
+<H4> <A NAME="26399">LbxPolyFillRectangle</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 19 lbx opcode
+<P> 2 1+(m+n+p)/4 request length
+<P> m LBXGCANDDRAWABLE cache entries
+<P> n LISTofLBXRECTANGLE rectangles (n is data-dependent)
+<P> p 0 unused, p=Lpad
+</UL>
+ <A NAME="19081">.</A>The description of this request is on <A HREF="#25511">page 22</A>.
+<P>
+
+<H4><A NAME="MMM39"> LbxPolyFillArc
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 20 lbx opcode
+<P> 2 1+(m+n+p)/4 request length
+<P> m LBXGCANDDRAWABLE cache entries
+<P> n LISTofLBXARC arcs (n is data-dependent)
+<P> p 0 unused, p=Lpad
+</UL>
+ The description of this request is on <A HREF="#42698">page 23</A>.
+<P>
+
+<H4> <A NAME="21702">LbxGetKeyboardMapping</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 21 lbx opcode
+<P> 2 2 request length
+<P> 1 KEYCODE first keycode
+<P> 1 m count
+<P> 2 unused
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 n keysyms-per-keycode
+<P> 2 CARD16 sequence number
+<P> 4 nm reply length (m = count field from the request)
+<P> 4 CARD32 tag
+<P> 20 unused
+<P> 4nm LISTofKEYSYM keysyms
+</UL>
+ The description of this request is on <A HREF="#33719">page 18</A>.
+<P>
+
+<H4> <A NAME="24597">LbxQueryFont</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 22 lbx opcode
+<P> 2 2 request length
+<P> 4 FONTABLE font
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 BOOL compression
+<P> 2 CARD16 sequence number
+<P> 4 L reply length
+<P> 4 CARD32 tag
+<P> 20 unused
+<P> All of the following is conditional:
+<P> 12 CHARINFO min-bounds
+<P> 4 unused
+<P> 12 CHARINFO max-bounds
+<P> 4 unused
+<P> 2 CARD16 min-char-or-byte2
+<P> 2 CARD16 max-char-or-byte2
+<P> 2 CARD16 default-char
+<P> 2 n number of FONTPROPs in properties
+<P> 1 draw-direction
+<UL>
+<P> 0 LeftToRight
+<P> 1 RightToLeft
+</UL>
+<P> 1 CARD8 min-byte1
+<P> 1 CARD8 max-byte1
+<P> 1 BOOL all-chars-exist
+<P> 2 INT16 font-ascent
+<P> 2 INT16 font-descent
+<P> 4 m number of elements in char-infos
+<P> 8n LISTofFONTPROP properties
+<P> and either
+<P> 12m LISTofCHARINFO char-infos
+<P> or
+<P> m LISTofLBXCHARINFO char-infos
+</UL>
+ The description of this request is on <A HREF="#18818">page 19</A>.
+<P>
+
+<H4> <A NAME="18013">LbxChangeProperty</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 23 lbx opcode
+<P> 2 6 request length
+<P> 4 WINDOW window
+<P> 4 ATOM property
+<P> 4 ATOM type
+<P> 1 CARD8 format
+<P> 1 mode
+<UL>
+<P> 0 Replace
+<P> 1 Preprend
+<P> 2 Append
+</UL>
+<P> 2 unused
+<P> 4 CARD32 length of data in format units
+<P> (= n for format = 8)
+<P> (= n/2 for format = 16)
+<P> (= n/4 for format = 32)
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 unused
+<P> 2 CARD16 sequence number
+<P> 4 0 reply length
+<P> 4 CARD32 tag
+<P> 20 unused
+</UL>
+ The description of this request is on <A HREF="#40098">page 20</A>.
+<P>
+
+<H4> <A NAME="13863">LbxGetProperty</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 24 lbx opcode
+<P> 2 7 request length
+<P> 4 WINDOW window
+<P> 4 ATOM property
+<P> 4 ATOM type
+<UL>
+<P> 0 AnyPropertyType
+</UL>
+<P> 1 CARD8 delete
+<P> 3 unused
+<P> 4 CARD32 long-offset
+<P> 4 CARD32 long-length
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 CARD8 format
+<P> 2 CARD16 sequence number
+<P> 4 CARD32 reply length
+<P> 4 ATOM type
+<UL>
+<P> 0 None
+</UL>
+<P> 4 CARD32 bytes-after
+<P> 4 CARD32 length of value in format units
+<P> (= 0 for format = 0)
+<P> (= n for format = 8)
+<P> (= n/2 for format = 16)
+<P> (= n/4 for format = 32)
+<P> 4 CARD32 tag
+<P> 8 unused
+</UL>
+ The description of this request is on <A HREF="#31397">page 20</A>.
+<P>
+
+<H4> <A NAME="37174">LbxTagData</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 25 lbx opcode
+<P> 2 3+(n+p)/4 request length
+<P> 4 CARD32 tag
+<P> 4 CARD32 length of data in bytes
+<P> n LISTofBYTE data
+<P> p unused, p=pad(n)
+</UL>
+ The description of this request is on <A HREF="#17987">page 14</A>.
+<P>
+
+<H4> <A NAME="10231">LbxCopyArea</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 26 lbx opcode
+<P> 2 L request length
+<P> 1 CARD8 source drawable cache entry
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> 4 or 0 DRAWABLE optional source drawable
+<P> b LBXGCANDDRAWUPDATE optional gc and dest drawable
+<P> c LBXPINT16 src-x
+<P> d LBXPINT16 src-y
+<P> e LBXPINT16 dst-x
+<P> f LBXPINT16 dst-y
+<P> g LBXCARD16 width
+<P> h LBXCARD16 height
+<P> p unused, p=Lpad
+</UL>
+ The description of this request is on <A HREF="#11409">page 23</A>.
+<P>
+
+<H4> <A NAME="18847">LbxCopyPlane</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 27 lbx opcode
+<P> 2 L request length
+<P> 4 CARD32 bit plane
+<P> 1 CARD8 source drawable cache entry
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> 4 or 0 DRAWABLE optional source drawable
+<P> b LBXGCANDDRAWUPDATE optional gc and dest drawable
+<P> c LBXPINT16 src-x
+<P> d LBXPINT16 src-y
+<P> e LBXPINT16 dst-x
+<P> f LBXPINT16 dst-y
+<P> g LBXCARD16 width
+<P> h LBXCARD16 height
+<P> p unused, p=Lpad
+</UL>
+ <A NAME="39640">.</A>The description of this request is on <A HREF="#36772">page 23</A>.
+<P>
+
+<H4><A NAME="MMM40"> LbxPolyText8
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 28 lbx opcode
+<P> 2 L request length
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> a LBXGCANDDRAWUPDATE optional gc and drawable
+<P> b LBXPINT16 x
+<P> c LBXPINT16 y
+<P> n LISTofTEXTITEM8 items
+<P> p unused, p=Lpad
+</UL>
+ <A NAME="32634">.</A>The description of this request is on <A HREF="#23201">page 24</A>.
+<P>
+
+<H4><A NAME="MMM41"> LbxPolyText16
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 29 lbx opcode
+<P> 2 L request length
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> a LBXGCANDDRAWUPDATE optional gc and drawable
+<P> b LBXPINT16 x
+<P> c LBXPINT16 y
+<P> 2n LISTofTEXTITEM16 items
+<P> p unused, p=Lpad
+</UL>
+ <A NAME="17018">.</A>The description of this request is on <A HREF="#13228">page 24</A>.
+<P>
+
+<H4><A NAME="MMM42"> LbxImageText8
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 30 lbx opcode
+<P> 2 L request length
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> a LBXGCANDDRAWUPDATE optional gc and drawable
+<P> b LBXPINT16 x
+<P> c LBXPINT16 y
+<P> n STRING8 string
+<P> p unused, p=Lpad
+</UL>
+ <A NAME="23910">.</A>The description of this request is on <A HREF="#10990">page 24</A>.
+<P>
+
+<H4><A NAME="MMM43"> LbxImageText16
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 31 lbx opcode
+<P> 2 L request length
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> a LBXGCANDDRAWUPDATE optional gc and drawable
+<P> b LBXPINT16 x
+<P> c LBXPINT16 y
+<P> 2n STRING16 string
+<P> p unused, p=Lpad
+</UL>
+ The description of this request is on <A HREF="#39584">page 25</A>.
+<P>
+
+<H4> <A NAME="37117">LbxQueryExtension</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 32 lbx opcode
+<P> 2 2+(n+p)/4 request length
+<P> 4 n length of extension name
+<P> n STRING8 extension name
+<P> p unused, p=pad(n)
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 n number of requests in the extension
+<P> 2 CARD16 sequence number
+<P> 4 0 or 2*(m + p) reply length, m = (n+7)/8
+<P> 1 BOOL present
+<P> 1 CARD8 major opcode
+<P> 1 CARD8 first event
+<P> 1 CARD8 first error
+<P> 20 unused
+<P> m LISTofMASK optional reply-mask
+<P> p unused, p=pad(m)
+<P> m LISTofMASK optional event-mask
+<P> p unused, p=pad(m)
+</UL>
+ The description of this request is on <A HREF="#36662">page 9</A>.
+<P>
+
+<H4> <A NAME="12268">LbxPutImage</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 33 lbx opcode
+<P> 2 L request length
+<P> 1 CARD8 compression method
+<P> 1 LBXGCANDDRAWENT cache entries
+<P> a PIPACKED bit-packed
+<P> b LBXGCANDDRAWUPDATE optional gc and drawable
+<P> c LBXCARD16 width
+<P> d LBXCARD16 height
+<P> e LBXPINT16 x
+<P> f LBXPINT16 y
+<P> n LISTofBYTE compressed image data
+<P> p unused, p=Lpad
+</UL>
+ If there is no left padding and the depth is less than or equal to nine, PIPPACKED is encoded as follows:
+<P>
+
+<UL>
+<P> PIPACKED
+<P> 1 #x80 | (format &lt;&lt; 5) | ((depth -1) &lt;&lt; 2)
+</UL>
+ Otherwise PIPACKED is defined as:
+<P>
+
+<UL>
+<P> PIPACKED
+<P> 1 (depth -1) &lt;&lt; 2)
+<P> 1 (format &lt;&lt; 5) | left-pad
+</UL>
+ The description of this request is on <A HREF="#21218">page 25</A>.
+<P>
+
+<H4> <A NAME="10066">LbxGetImage</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 34 lbx opcode
+<P> 2 6 request length
+<P> 4 DRAWABLE drawable
+<P> 2 INT16 x
+<P> 2 INT16 y
+<P> 2 CARD16 width
+<P> 2 CARD16 height
+<P> 4 CARD32 plane mask
+<P> 1 CARD8 format
+<P> 3 unused
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 CARD8 depth
+<P> 2 CARD16 sequence number
+<P> 4 (n+p)/4 reply length
+<P> 4 (m+p)/4 X reply length; if uncompressed, m=n
+<P> 4 VISUALID visual
+<UL>
+<P> 0 None
+</UL>
+<P> 1 compression method
+<P> 15 unused
+<P> n LISTofBYTE data
+<P> p unused, p=pad(n)
+</UL>
+ <A NAME="22013">.</A>The description of this request is on <A HREF="#26896">page 25</A>.
+<P>
+
+<H4><A NAME="MMM44"> LbxBeginLargeRequest
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 35 lbx opcode
+<P> 2 2 request length
+<P> 4 CARD32 large request length
+</UL>
+ <A NAME="31469">.</A>The description of this request is on <A HREF="#31209">page 26</A>.
+<P>
+
+<H4><A NAME="MMM45"> LbxLargeRequestData
+</A></H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 36 lbx opcode
+<P> 2 1+n request length
+<P> 4n LISTofBYTE data
+</UL>
+ The description of this request is on <A HREF="#36982">page 26</A>.
+<P>
+
+<H4> <A NAME="31037">LbxEndLargeRequest</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 37 lbx opcode
+<P> 2 1 request length
+</UL>
+ The description of this request is on <A HREF="#31841">page 26</A>.
+<P>
+
+<H4> <A NAME="34140">LbxInternAtoms</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 38 lbx opcode
+<P> 2 1+(2+m+n+p)/4 request length
+<P> 2 m num-atoms
+<P> n LISTofLONGSTR names
+<P> p pad p=Lpad
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 unused
+<P> 2 CARD16 sequence number
+<P> 4 a reply length, a = MAX(m - 6, 0)
+<P> 4*m LISTofATOM atoms
+<P> p pad p = MAX(0, 4*(6 - m))
+<P>
+<P> LONGSTR
+<P> 2 c string length
+<P> c STRING8 string
+</UL>
+ The description of this request is on <A HREF="#21636">page 17</A>.
+<P>
+
+<H4> <A NAME="41440">LbxGetWinAttrAndGeom</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 39 lbx opcode
+<P> 2 2 request length
+<P> 4 CARD32 window id
+</UL>
+<P> -->
+<UL>
+<P>
+<P> 1 1 Reply
+<P> 1 backing store
+<UL>
+<P> 0 NotUseful
+<P> 1 WhenMapped
+<P> 2 Always
+</UL>
+<P> 2 CARD16 sequence number
+<P> 4 7 reply length
+<P> 4 VISUALID visual id
+<P> 2 class
+<UL>
+<P> 1 InputOutput
+<P> 2 InputOnly
+</UL>
+<P> 1 BITGRAVITY bit gravity
+<P> 1 WINGRAVITY window gravity
+<P> 4 CARD32 backing bit planes
+<P> 4 CARD32 backing pixel
+<P> 1 BOOL save under
+<P> 1 BOOL map installed
+<P> 1 map state
+<UL>
+<P> 0 Unmapped
+<P> 1 Unviewable
+<P> 2 Viewable
+</UL>
+<P> 1 BOOL override
+<P> 4 COLORMAP colormap
+<P> 4 SETofEVENT all events mask
+<P> 4 SETofEVENT your event mask
+<P> 2 SETofDEVICEEVENT do not propagate mask
+<P> 2 unused
+<P> 4 WINDOW root
+<P> 2 INT16 x
+<P> 2 INT16 y
+<P> 2 CARD16 width
+<P> 2 CARD16 height
+<P> 2 CARD16 border width
+<P> 1 CARD8 depth
+<P> 1 unused
+</UL>
+ The description of this request is on <A HREF="#39382">page 19</A>.
+<P>
+
+<H4> <A NAME="17198">LbxGrabCmap</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 40 lbx opcode
+<P> 2 2 request length
+<P> 4 COLORMAP colormap
+</UL>
+<P> -->
+ If smart-grab is true, the reply is as follows:
+<P>
+
+<UL>
+<P> 1 1 Reply
+<P> 1 #x80 flags
+<P> 2 CARD16 sequence number
+<P> 4 0 reply length
+<P> 24 unused
+<P>
+<P> If smart-grab is false, the reply is as follows:
+<P>
+<P> 1 1 Reply
+<P> 1 flags (set of)
+<UL>
+<P> #x40 auto-release
+<P> #x20 three-channels
+<P> #x10 two-byte-pixels
+<P> lower four bits specifies bits-per-pixel
+</UL>
+<P> 2 CARD16 sequence number
+<P> 4 L reply length
+<P> m CHAN or CHANNELS cells (CHAN if !three-channels)
+<P> p 0 pad(m)
+<P>
+<P> CHANNELS
+<P> a CHAN red
+<P> 1 5 next channel
+<P> b CHAN green
+<P> 1 5 next channel
+<P> c CHAN blue
+<P> 1 0 list end
+<P>
+<P> CHAN
+<P> d LISTofLBXPIXEL
+<P>
+<P> LBXPIXEL
+<P> e PIXELPRIVATE or
+<P> PIXELPRIVATERANGE or
+<P> PIXELALLOC or
+<P> PIXELALLOCRANGE
+<P>
+<P> PIXELPRIVATE
+<P> 1 1 pixel-private
+<P> f PIXEL pixel
+<P>
+<P> PIXEL
+<P> f CARD8 or CARD16 (CARD8 if !two-byte-pixels)
+<P>
+<P> PIXELPRIVATERANGE
+<P> 1 2 pixel-private-range
+<P> f PIXEL fist-pixel
+<P> f PIXEL last-pixel
+<P>
+<P> PIXELALLOC
+<P> 1 3 pixel-private
+<P> f PIXEL pixel
+<P> g COLORSINGLE or COLORTRIPLE color (COLORSINGLE if three-channels)
+<P>
+<P> COLORSINGLE
+<P> h CARD8 or CARD16 value (CARD8 if bits-per-rgb =&lt; 7)
+<P>
+<P> COLORTRIPLE
+<P> h COLORSINGLE red
+<P> h COLORSINGLE green
+<P> h COLORSINGLE blue
+<P>
+<P> PIXELALLOCRANGE
+<P> 1 4 pixel-private
+<P> f PIXEL first-pixel
+<P> f PIXEL last-pixel
+<P> j LISTofCOLORSINGLE or color (COLORSINGLE if three-channels)
+<P> LISTofCOLORTRIPLE
+</UL>
+ The description of this request is on <A HREF="#10922">page 15</A>.
+<P>
+
+<H4> <A NAME="14796">LbxReleaseCmap</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 41 lbx opcode
+<P> 2 2 request length
+<P> 4 COLORMAP cmap
+</UL>
+ The description of this request is on <A HREF="#34675">page 17</A>.
+<P>
+
+<H4> <A NAME="28429">LbxAllocColor</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 42 lbx opcode
+<P> 2 5 request length
+<P> 4 COLORMAP colormap
+<P> 4 CARD32 pixel
+<P> 2 CARD16 red
+<P> 2 CARD16 green
+<P> 2 CARD16 blue
+<P> 2 unused
+</UL>
+ The description of this request is on <A HREF="#10446">page 17</A>.
+<P>
+
+<H4> <A NAME="21186">LbxSync</A>
+</H4>
+
+<UL>
+<P> 1 CARD8 opcode
+<P> 1 43 lbx opcode
+<P> 2 1 request length
+</UL>
+<P> -->
+<UL>
+<P> 1 1 Reply
+<P> 1 n unused
+<P> 2 CARD16 sequence number
+<P> 4 0 reply length
+<P> 24 unused
+</UL>
+ The description of this request is on <A HREF="#30719">page 14</A>.
+<P>
+
+<H2><A NAME="MMM46">6.3 Events
+</A></H2>
+
+<H4> <A NAME="17348">LbxSwitchEvent</A>
+</H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 0 lbx type
+<P> 2 CARD16 sequence number
+<P> 4 CARD32 client
+<P> 24 unused
+</UL>
+ <A NAME="41814">.</A>The description of this event is on <A HREF="#33748">page 27</A>.
+<P>
+
+<H4><A NAME="MMM47"> LbxCloseEvent
+</A></H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 1 lbx type
+<P> 2 CARD16 sequence number
+<P> 4 CARD32 client
+<P> 24 unused
+</UL>
+ The description of this event is on <A HREF="#17292">page 27</A>.
+<P>
+
+<H4> <A NAME="34406">LbxInvalidateTagEvent</A>
+</H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 3 lbx type
+<P> 2 CARD16 sequence number
+<P> 4 CARD32 tag
+<P> 4 tag-type
+<UL>
+<P> 1 LbxTagTypeModmap
+<P> 2 LbxTagTypeKeymap
+<P> 3 LbxTagTypeProperty
+<P> 4 LbxTagTypeFont
+<P> 5 LbxTagTypeConnInfo
+</UL>
+<P> 20 unused
+</UL>
+ The description of this event is on <A HREF="#23016">page 27</A>.
+<P>
+
+<H4> <A NAME="22353">LbxSendTagDataEvent</A>
+</H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 4 lbx type
+<P> 2 CARD16 sequence number
+<P> 4 CARD32 tag
+<P> 4 tag-type
+<UL>
+<P> 3 LbxTagTypeProperty
+</UL>
+<P> 20 unused
+</UL>
+ <A NAME="18630">.</A>The description of this event is on <A HREF="#20373">page 27</A>.
+<P>
+
+<H4><A NAME="MMM48"> LbxListenToOne
+</A></H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 5 lbx type
+<P> 2 CARD16 sequence number
+<P> 4 CARD32 client
+<UL>
+<P> #xFFFFFFFF a client not managed by the proxy
+</UL>
+<P> 24 unused
+</UL>
+ <A NAME="30610">.</A>The description of this event is on <A HREF="#25209">page 27</A>.
+<P>
+
+<H4><A NAME="MMM49"> LbxListenToAll
+</A></H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 6 lbx type
+<P> 2 CARD16 sequence number
+<P> 28 unused
+</UL>
+ The description of this event is on <A HREF="#11095">page 28</A>.
+<P>
+
+<H4> Lbx<A NAME="35213">QuickMotionDeltaEvent</A>
+</H4>
+
+<UL>
+<P> 1 base + 1 code
+<P> 1 CARD8 delta-time
+<P> 1 INT8 delta-x
+<P> 1 INT8 delta-y
+</UL>
+ This event is not padded to 32 bytes.
+<P>
+
+ The description of this event is on <A HREF="#40268">page 28</A>.
+<P>
+
+<H4> <A NAME="35310">LbxMotionDeltaEvent</A>
+</H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 7 lbx type
+<P> 1 INT8 delta-x
+<P> 1 INT8 delta-y
+<P> 2 CARD16 delta-time
+<P> 2 CARD16 delta-sequence
+</UL>
+ This event is not padded to 32 bytes.
+<P>
+
+ The description of this event is on <A HREF="#30033">page 28</A>.
+<P>
+
+<H4> <A NAME="14052">LbxReleaseCmapEvent</A>
+</H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 8 lbx type
+<P> 2 CARD16 sequence number
+<P> 4 COLORMAP colormap
+<P> 24 unused
+</UL>
+ The description of this event is on <A HREF="#19129">page 28</A>.
+<P>
+
+<H4> <A NAME="14731">LbxFreeCellsEvent</A>
+</H4>
+
+<UL>
+<P> 1 base + 0 code
+<P> 1 9 lbx type
+<P> 2 CARD16 sequence number
+<P> 4 COLORMAP colormap
+<P> 4 PIXEL pixel start
+<P> 4 PIXEL pixel end
+<P> 16 unused
+</UL>
+ The description of this event is on <A HREF="#38041">page 28</A>.
+<P>
+
+<H2><A NAME="MMM50">6.4 Re-encoding of X Events
+</A></H2>
+
+ The X protocol requires all X events to be 32 bytes. The LBX server reduces the number of bytes sent
+ between the server and the proxy for some X events by not appending unused pad bytes to the event data.
+ The offsets of X event data are unchanged. The proxy will pad the events to 32 bytes before passing them on
+ to the client.
+<P>
+
+ LBX reencodes X event representations into the following sizes, if squishing is enabled:
+<P>
+
+<PRE> KeyOrButton 32
+ EnterOrLeave 32
+ Keymap 32
+ Expose 20
+ GraphicsExposure 24
+ NoExposure 12
+ VisibilityNotify 12
+ CreateNotify 24
+ DestroyNotify 12
+ UnmapNotify 16
+ MapNotify 16
+ MapRequest 12
+ Reparent 24
+ ConfigureNotify 28
+ ConfigureRequest 28
+ GravityNotify 16
+ ResizeRequest 12
+ Circulate 20
+ Property Notify 20
+ SelectionClear 20
+ SelectionRequest 28
+ SelectionNotify 24
+ Colormap Notify 16
+ MappingNotify 8
+ ClientMessage 32
+ Unknown 32
+</PRE>
+
+<H2><A NAME="MMM51">6.5 Responses
+</A></H2>
+
+<H4> <A NAME="17100">LbxDeltaResponse</A>
+</H4>
+
+<UL>
+<P> 1 event_base + 0 event code
+<P> 1 2 lbx type
+<P> 2 1+(2+2n+p)/4 request length
+<P> 1 n count of diffs
+<P> 1 CARD8 cache index
+<P> 2n LISTofDIFFITEM offsets and differences
+<P> p unused, p=pad(2n)
+</UL>
+ The description of this response is on <A HREF="#34042">page 29</A>.
+<P>
+
+
diff --git a/hardcopy/Xext/lbxTOC.html b/hardcopy/Xext/lbxTOC.html
new file mode 100644
index 0000000..fbebcba
--- /dev/null
+++ b/hardcopy/Xext/lbxTOC.html
@@ -0,0 +1,308 @@
+
+<HTML>
+
+<HEAD>
+<TITLE>Table of Contents</TITLE>
+</HEAD>
+
+<BODY>
+<H2> <A HREF="lbx.html#MMM0">Low Bandwidth X Extension</A></H2>
+
+<H2> <A HREF="lbx.html#MMM1">1 Introduction</A></H2>
+
+<H2> <A HREF="lbx.html#MMM2">2 Description</A></H2>
+
+<H3> <A HREF="lbx.html#MMM3">2.1 Data Flow</A></H3>
+
+<H3> <A HREF="lbx.html#11018">2.2 Tags</A></H3>
+
+<H4> <A HREF="lbx.html#26534">2.2.1 Tag Substitution in Requests</A></H4>
+
+<H4> <A HREF="lbx.html#MMM4">2.2.2 Property Tags</A></H4>
+
+<H3> <A HREF="lbx.html#MMM5">2.3 Short-circuiting</A></H3>
+
+<H3> <A HREF="lbx.html#MMM6">2.4 Graphics Re-encoding</A></H3>
+
+<H3> <A HREF="lbx.html#15503">2.5 Motion events</A></H3>
+
+<H3> <A HREF="lbx.html#MMM7">2.6 Event Squishing</A></H3>
+
+<H3> <A HREF="lbx.html#MMM8">2.7 Master Client</A></H3>
+
+<H3> <A HREF="lbx.html#MMM9">2.8 Multiplexing of Clients</A></H3>
+
+<H3> <A HREF="lbx.html#MMM10">2.9 Swapping</A></H3>
+
+<H3> <A HREF="lbx.html#22595">2.10 Delta cache</A></H3>
+
+<H3> <A HREF="lbx.html#11596">2.11 Stream Compression</A></H3>
+
+<H3> <A HREF="lbx.html#MMM11">2.12 Authentication Protocols</A></H3>
+
+<H2> <A HREF="lbx.html#33319">3 C Library Interfaces</A></H2>
+
+<H3> <A HREF="lbx.html#MMM12">3.1 Application Library Interfaces</A></H3>
+
+<H4> <A HREF="lbx.html#MMM13">3.1.1 XLbxQueryVersion</A></H4>
+
+<H3> <A HREF="lbx.html#MMM14">3.2 Proxy Library Interfaces</A></H3>
+
+<H4> <A HREF="lbx.html#MMM15">3.2.1 XLbxQueryExtension</A></H4>
+
+<H4> <A HREF="lbx.html#MMM16">3.2.2 XLbxGetEventBase</A></H4>
+
+<H2> <A HREF="lbx.html#MMM17">4 Protocol</A></H2>
+
+<H3> <A HREF="lbx.html#MMM18">4.1 Syntactic Conventions and Common Types</A></H3>
+
+<H3> <A HREF="lbx.html#MMM19">4.2 Errors</A></H3>
+
+<H3> <A HREF="lbx.html#MMM20">4.3 Requests</A></H3>
+
+<H4> <A HREF="lbx.html#MMM21">4.3.1 Requests Initiated by the Proxy or by the Client</A></H4>
+
+<UL> <A HREF="lbx.html#18761">LbxQueryVersion</A></UL>
+
+<H4> <A HREF="lbx.html#MMM22">4.3.2 Requests Initiated or Substituted by the Proxy</A></H4>
+
+<UL> <A HREF="lbx.html#36662">LbxQueryExtension</A></UL>
+
+<H4> <A HREF="lbx.html#MMM23">4.3.3 Control Requests Initiated by the Proxy</A></H4>
+
+<UL> <A HREF="lbx.html#20870">LbxStartProxy</A></UL>
+
+<UL> <A HREF="lbx.html#27455">LbxStopProxy</A></UL>
+
+<UL> <A HREF="lbx.html#17810">LbxNewClient</A></UL>
+
+<UL> <A HREF="lbx.html#21625">LbxCloseClient</A></UL>
+
+<UL> <A HREF="lbx.html#33500">LbxSwitch</A></UL>
+
+<UL> <A HREF="lbx.html#30719">LbxSync</A></UL>
+
+<UL> <A HREF="lbx.html#36693">LbxModifySequence</A></UL>
+
+<UL> <A HREF="lbx.html#15895">LbxAllowMotion</A></UL>
+
+<UL> <A HREF="lbx.html#12515">LbxInvalidateTag</A></UL>
+
+<UL> <A HREF="lbx.html#17987">LbxTagData</A></UL>
+
+<UL> <A HREF="lbx.html#10922">LbxGrabCmap</A></UL>
+
+<UL> <A HREF="lbx.html#34675">LbxReleaseCmap</A></UL>
+
+<UL> <A HREF="lbx.html#21636">LbxInternAtoms</A></UL>
+
+<H4> <A HREF="lbx.html#MMM24">4.3.4 Substitution Requests</A></H4>
+
+<UL> <A HREF="lbx.html#10446">LbxAllocColor</A></UL>
+
+<UL> <A HREF="lbx.html#27227">LbxIncrementPixel</A></UL>
+
+<UL> <A HREF="lbx.html#26857">LbxDelta</A></UL>
+
+<UL> <A HREF="lbx.html#37687">LbxGetModifierMapping</A></UL>
+
+<UL> <A HREF="lbx.html#33719">LbxGetKeyboardMapping</A></UL>
+
+<UL> <A HREF="lbx.html#39382">LbxGetWinAttrAndGeom</A></UL>
+
+<UL> <A HREF="lbx.html#18818">LbxQueryFont</A></UL>
+
+<UL> <A HREF="lbx.html#40098">LbxChangeProperty</A></UL>
+
+<UL> <A HREF="lbx.html#31397">LbxGetProperty</A></UL>
+
+<UL> <A HREF="lbx.html#37179">LbxPolyPoint</A></UL>
+
+<UL> <A HREF="lbx.html#16574">LbxPolyLine</A></UL>
+
+<UL> <A HREF="lbx.html#26077">LbxPolySegment</A></UL>
+
+<UL> <A HREF="lbx.html#40958">LbxPolyRectangle</A></UL>
+
+<UL> <A HREF="lbx.html#15317">LbxPolyArc</A></UL>
+
+<UL> <A HREF="lbx.html#25511">LbxPolyFillRectangle</A></UL>
+
+<UL> <A HREF="lbx.html#42698">LbxPolyFillArc</A></UL>
+
+<UL> <A HREF="lbx.html#35796">LbxFillPoly</A></UL>
+
+<UL> <A HREF="lbx.html#11409">LbxCopyArea</A></UL>
+
+<UL> <A HREF="lbx.html#36772">LbxCopyPlane</A></UL>
+
+<UL> <A HREF="lbx.html#23201">LbxPolyText8</A></UL>
+
+<UL> <A HREF="lbx.html#13228">LbxPolyText16</A></UL>
+
+<UL> <A HREF="lbx.html#10990">LbxImageText8</A></UL>
+
+<UL> <A HREF="lbx.html#39584">LbxImageText16</A></UL>
+
+<UL> <A HREF="lbx.html#21218">LbxPutImage</A></UL>
+
+<UL> <A HREF="lbx.html#26896">LbxGetImage</A></UL>
+
+<UL> <A HREF="lbx.html#31209">LbxBeginLargeRequest</A></UL>
+
+<UL> <A HREF="lbx.html#36982">LbxLargeRequestData</A></UL>
+
+<UL> <A HREF="lbx.html#31841">LbxEndLargeRequest</A></UL>
+
+<H3> <A HREF="lbx.html#MMM25">4.4 Events</A></H3>
+
+<UL> <A HREF="lbx.html#33748">LbxSwitchEvent</A></UL>
+
+<UL> <A HREF="lbx.html#17292">LbxCloseEvent</A></UL>
+
+<UL> <A HREF="lbx.html#23016">LbxInvalidateTagEvent</A></UL>
+
+<UL> <A HREF="lbx.html#20373">LbxSendTagDataEvent</A></UL>
+
+<UL> <A HREF="lbx.html#25209">LbxListenToOne</A></UL>
+
+<UL> <A HREF="lbx.html#11095">LbxListenToAll</A></UL>
+
+<UL> <A HREF="lbx.html#40268">LbxQuickMotionDeltaEvent</A></UL>
+
+<UL> <A HREF="lbx.html#30033">LbxMotionDeltaEvent</A></UL>
+
+<UL> <A HREF="lbx.html#19129">LbxReleaseCmapEvent</A></UL>
+
+<UL> <A HREF="lbx.html#38041">LbxFreeCellsEvent</A></UL>
+
+<H3> <A HREF="lbx.html#MMM26">4.5 Responses</A></H3>
+
+<UL> <A HREF="lbx.html#34042">LbxDeltaResponse</A></UL>
+
+<H2> <A HREF="lbx.html#13570">5 Algorithm Naming</A></H2>
+
+<H2> <A HREF="lbx.html#MMM27">6 Encoding</A></H2>
+
+<H3> <A HREF="lbx.html#MMM28">6.1 Errors</A></H3>
+
+<UL> <A HREF="lbx.html#MMM29">LbxClient</A></UL>
+
+<H3> <A HREF="lbx.html#MMM30">6.2 Requests</A></H3>
+
+<UL> <A HREF="lbx.html#34166">LbxQueryVersion</A></UL>
+
+<UL> <A HREF="lbx.html#27452">LbxStartProxy</A></UL>
+
+<UL> <A HREF="lbx.html#23471">LbxStopProxy</A></UL>
+
+<UL> <A HREF="lbx.html#36790">LbxSwitch</A></UL>
+
+<UL> <A HREF="lbx.html#MMM31">LbxNewClient</A></UL>
+
+<UL> <A HREF="lbx.html#MMM32">LbxCloseClient</A></UL>
+
+<UL> <A HREF="lbx.html#MMM33">LbxModifySequence</A></UL>
+
+<UL> <A HREF="lbx.html#MMM34">LbxAllowMotion</A></UL>
+
+<UL> <A HREF="lbx.html#MMM35">LbxIncrementPixel</A></UL>
+
+<UL> <A HREF="lbx.html#MMM36">LbxDelta</A></UL>
+
+<UL> <A HREF="lbx.html#40057">LbxGetModifierMapping</A></UL>
+
+<UL> <A HREF="lbx.html#37545">LbxInvalidateTag</A></UL>
+
+<UL> <A HREF="lbx.html#29719">LbxPolyPoint</A></UL>
+
+<UL> <A HREF="lbx.html#MMM37">LbxPolyLine</A></UL>
+
+<UL> <A HREF="lbx.html#27528">LbxPolySegment</A></UL>
+
+<UL> <A HREF="lbx.html#MMM38">LbxPolyRectangle</A></UL>
+
+<UL> <A HREF="lbx.html#25855">LbxPolyArc</A></UL>
+
+<UL> <A HREF="lbx.html#24998">LbxFillPoly</A></UL>
+
+<UL> <A HREF="lbx.html#26399">LbxPolyFillRectangle</A></UL>
+
+<UL> <A HREF="lbx.html#MMM39">LbxPolyFillArc</A></UL>
+
+<UL> <A HREF="lbx.html#21702">LbxGetKeyboardMapping</A></UL>
+
+<UL> <A HREF="lbx.html#24597">LbxQueryFont</A></UL>
+
+<UL> <A HREF="lbx.html#18013">LbxChangeProperty</A></UL>
+
+<UL> <A HREF="lbx.html#13863">LbxGetProperty</A></UL>
+
+<UL> <A HREF="lbx.html#37174">LbxTagData</A></UL>
+
+<UL> <A HREF="lbx.html#10231">LbxCopyArea</A></UL>
+
+<UL> <A HREF="lbx.html#18847">LbxCopyPlane</A></UL>
+
+<UL> <A HREF="lbx.html#MMM40">LbxPolyText8</A></UL>
+
+<UL> <A HREF="lbx.html#MMM41">LbxPolyText16</A></UL>
+
+<UL> <A HREF="lbx.html#MMM42">LbxImageText8</A></UL>
+
+<UL> <A HREF="lbx.html#MMM43">LbxImageText16</A></UL>
+
+<UL> <A HREF="lbx.html#37117">LbxQueryExtension</A></UL>
+
+<UL> <A HREF="lbx.html#12268">LbxPutImage</A></UL>
+
+<UL> <A HREF="lbx.html#10066">LbxGetImage</A></UL>
+
+<UL> <A HREF="lbx.html#MMM44">LbxBeginLargeRequest</A></UL>
+
+<UL> <A HREF="lbx.html#MMM45">LbxLargeRequestData</A></UL>
+
+<UL> <A HREF="lbx.html#31037">LbxEndLargeRequest</A></UL>
+
+<UL> <A HREF="lbx.html#34140">LbxInternAtoms</A></UL>
+
+<UL> <A HREF="lbx.html#41440">LbxGetWinAttrAndGeom</A></UL>
+
+<UL> <A HREF="lbx.html#17198">LbxGrabCmap</A></UL>
+
+<UL> <A HREF="lbx.html#14796">LbxReleaseCmap</A></UL>
+
+<UL> <A HREF="lbx.html#28429">LbxAllocColor</A></UL>
+
+<UL> <A HREF="lbx.html#21186">LbxSync</A></UL>
+
+<H3> <A HREF="lbx.html#MMM46">6.3 Events</A></H3>
+
+<UL> <A HREF="lbx.html#17348">LbxSwitchEvent</A></UL>
+
+<UL> <A HREF="lbx.html#MMM47">LbxCloseEvent</A></UL>
+
+<UL> <A HREF="lbx.html#34406">LbxInvalidateTagEvent</A></UL>
+
+<UL> <A HREF="lbx.html#22353">LbxSendTagDataEvent</A></UL>
+
+<UL> <A HREF="lbx.html#MMM48">LbxListenToOne</A></UL>
+
+<UL> <A HREF="lbx.html#MMM49">LbxListenToAll</A></UL>
+
+<UL> <A HREF="lbx.html#35213">LbxQuickMotionDeltaEvent</A></UL>
+
+<UL> <A HREF="lbx.html#35310">LbxMotionDeltaEvent</A></UL>
+
+<UL> <A HREF="lbx.html#14052">LbxReleaseCmapEvent</A></UL>
+
+<UL> <A HREF="lbx.html#14731">LbxFreeCellsEvent</A></UL>
+
+<H3> <A HREF="lbx.html#MMM50">6.4 Re-encoding of X Events</A></H3>
+
+<H3> <A HREF="lbx.html#MMM51">6.5 Responses</A></H3>
+
+<UL> <A HREF="lbx.html#17100">LbxDeltaResponse</A></UL>
+
+</BODY>
+</HTML>
diff --git a/hardcopy/Xext/lbxalg.PS.gz b/hardcopy/Xext/lbxalg.PS.gz
new file mode 100644
index 0000000..cceeab0
--- /dev/null
+++ b/hardcopy/Xext/lbxalg.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/mit-shm.PS.gz b/hardcopy/Xext/mit-shm.PS.gz
new file mode 100644
index 0000000..ca0d6ed
--- /dev/null
+++ b/hardcopy/Xext/mit-shm.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/record.PS.gz b/hardcopy/Xext/record.PS.gz
new file mode 100644
index 0000000..a75c54e
--- /dev/null
+++ b/hardcopy/Xext/record.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/recordlib.PS.gz b/hardcopy/Xext/recordlib.PS.gz
new file mode 100644
index 0000000..79a95b2
--- /dev/null
+++ b/hardcopy/Xext/recordlib.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/security.PS.gz b/hardcopy/Xext/security.PS.gz
new file mode 100644
index 0000000..740b427
--- /dev/null
+++ b/hardcopy/Xext/security.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/shape.PS.gz b/hardcopy/Xext/shape.PS.gz
new file mode 100644
index 0000000..a0e1330
--- /dev/null
+++ b/hardcopy/Xext/shape.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/shapelib.PS.gz b/hardcopy/Xext/shapelib.PS.gz
new file mode 100644
index 0000000..8785f61
--- /dev/null
+++ b/hardcopy/Xext/shapelib.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/sync.PS.gz b/hardcopy/Xext/sync.PS.gz
new file mode 100644
index 0000000..24c369c
--- /dev/null
+++ b/hardcopy/Xext/sync.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/synclib.PS.gz b/hardcopy/Xext/synclib.PS.gz
new file mode 100644
index 0000000..11fa3e9
--- /dev/null
+++ b/hardcopy/Xext/synclib.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/tog-cup.PS.gz b/hardcopy/Xext/tog-cup.PS.gz
new file mode 100644
index 0000000..d6836c6
--- /dev/null
+++ b/hardcopy/Xext/tog-cup.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/xc-misc.PS.gz b/hardcopy/Xext/xc-misc.PS.gz
new file mode 100644
index 0000000..1eae2f9
--- /dev/null
+++ b/hardcopy/Xext/xc-misc.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/xtest.PS.gz b/hardcopy/Xext/xtest.PS.gz
new file mode 100644
index 0000000..fc9147e
--- /dev/null
+++ b/hardcopy/Xext/xtest.PS.gz
Binary files differ
diff --git a/hardcopy/Xext/xtestlib.PS.gz b/hardcopy/Xext/xtestlib.PS.gz
new file mode 100644
index 0000000..2d2e695
--- /dev/null
+++ b/hardcopy/Xext/xtestlib.PS.gz
Binary files differ
diff --git a/hardcopy/Xi/lib.PS.gz b/hardcopy/Xi/lib.PS.gz
new file mode 100644
index 0000000..d96925d
--- /dev/null
+++ b/hardcopy/Xi/lib.PS.gz
Binary files differ
diff --git a/hardcopy/Xi/port.PS.gz b/hardcopy/Xi/port.PS.gz
new file mode 100644
index 0000000..19e9651
--- /dev/null
+++ b/hardcopy/Xi/port.PS.gz
Binary files differ
diff --git a/hardcopy/Xi/proto.PS.gz b/hardcopy/Xi/proto.PS.gz
new file mode 100644
index 0000000..30eb0eb
--- /dev/null
+++ b/hardcopy/Xi/proto.PS.gz
Binary files differ
diff --git a/hardcopy/Xmu/xmu.PS.gz b/hardcopy/Xmu/xmu.PS.gz
new file mode 100644
index 0000000..eabecfb
--- /dev/null
+++ b/hardcopy/Xmu/xmu.PS.gz
Binary files differ
diff --git a/hardcopy/Xserver/Xprt.PS.gz b/hardcopy/Xserver/Xprt.PS.gz
new file mode 100644
index 0000000..b77d45d
--- /dev/null
+++ b/hardcopy/Xserver/Xprt.PS.gz
Binary files differ
diff --git a/hardcopy/Xserver/analysis.PS.gz b/hardcopy/Xserver/analysis.PS.gz
new file mode 100644
index 0000000..eeb85eb
--- /dev/null
+++ b/hardcopy/Xserver/analysis.PS.gz
Binary files differ
diff --git a/hardcopy/Xserver/appgroup.PS.gz b/hardcopy/Xserver/appgroup.PS.gz
new file mode 100644
index 0000000..88d1b66
--- /dev/null
+++ b/hardcopy/Xserver/appgroup.PS.gz
Binary files differ
diff --git a/hardcopy/Xserver/ddx.PS.gz b/hardcopy/Xserver/ddx.PS.gz
new file mode 100644
index 0000000..6bf443d
--- /dev/null
+++ b/hardcopy/Xserver/ddx.PS.gz
Binary files differ
diff --git a/hardcopy/Xserver/fontlib.PS.gz b/hardcopy/Xserver/fontlib.PS.gz
new file mode 100644
index 0000000..24a2c0d
--- /dev/null
+++ b/hardcopy/Xserver/fontlib.PS.gz
Binary files differ
diff --git a/hardcopy/Xserver/secint.PS.gz b/hardcopy/Xserver/secint.PS.gz
new file mode 100644
index 0000000..68e1808
--- /dev/null
+++ b/hardcopy/Xserver/secint.PS.gz
Binary files differ
diff --git a/hardcopy/Xt/intr.idx.PS.gz b/hardcopy/Xt/intr.idx.PS.gz
new file mode 100644
index 0000000..d6bca14
--- /dev/null
+++ b/hardcopy/Xt/intr.idx.PS.gz
Binary files differ
diff --git a/hardcopy/Xt/intrinsics.PS.gz b/hardcopy/Xt/intrinsics.PS.gz
new file mode 100644
index 0000000..e0cee8f
--- /dev/null
+++ b/hardcopy/Xt/intrinsics.PS.gz
Binary files differ
diff --git a/hardcopy/i18n/Framework.PS.gz b/hardcopy/i18n/Framework.PS.gz
new file mode 100644
index 0000000..7c48a4d
--- /dev/null
+++ b/hardcopy/i18n/Framework.PS.gz
Binary files differ
diff --git a/hardcopy/i18n/LocaleDB.PS.gz b/hardcopy/i18n/LocaleDB.PS.gz
new file mode 100644
index 0000000..7cc6db2
--- /dev/null
+++ b/hardcopy/i18n/LocaleDB.PS.gz
Binary files differ
diff --git a/hardcopy/i18n/Trans.PS.gz b/hardcopy/i18n/Trans.PS.gz
new file mode 100644
index 0000000..1d66350
--- /dev/null
+++ b/hardcopy/i18n/Trans.PS.gz
Binary files differ
diff --git a/hardcopy/man/man.PS.gz b/hardcopy/man/man.PS.gz
new file mode 100644
index 0000000..bfdeeab
--- /dev/null
+++ b/hardcopy/man/man.PS.gz
Binary files differ
diff --git a/hardcopy/rstart/rstart.PS.gz b/hardcopy/rstart/rstart.PS.gz
new file mode 100644
index 0000000..b7075a6
--- /dev/null
+++ b/hardcopy/rstart/rstart.PS.gz
Binary files differ
diff --git a/hardcopy/xfs/design.PS.gz b/hardcopy/xfs/design.PS.gz
new file mode 100644
index 0000000..2ed0702
--- /dev/null
+++ b/hardcopy/xfs/design.PS.gz
Binary files differ
diff --git a/hardcopy/xtrans/Xtrans.PS.gz b/hardcopy/xtrans/Xtrans.PS.gz
new file mode 100644
index 0000000..593f735
--- /dev/null
+++ b/hardcopy/xtrans/Xtrans.PS.gz
Binary files differ
diff --git a/misc/xlogo.epsi b/misc/xlogo.epsi
new file mode 100644
index 0000000..f1d1df5
--- /dev/null
+++ b/misc/xlogo.epsi
@@ -0,0 +1,100 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: X Logo
+%%Creator: Stephen Gildea <gildea@x.org>
+%%BoundingBox: 0 0 44 44
+%%EndComments
+% $Xorg: xlogo.epsi,v 1.3 2000/08/17 19:42:05 cpqbld Exp $
+%%BeginPreview: 44 44 1 44
+% fff0000000f0
+% 7ff8000001e0
+% 3ff8000003c0
+% 1ffc00000780
+% 1ffe00000780
+% 0fff00000f00
+% 07ff00001e00
+% 07ff80003c00
+% 03ffc0007800
+% 01ffc0007800
+% 00ffe000f000
+% 00fff001e000
+% 007ff803c000
+% 003ff8078000
+% 001ffc078000
+% 001ffe0f0000
+% 000fff1e0000
+% 0007ff3c0000
+% 0003ff3c0000
+% 0003fe780000
+% 0001fcf00000
+% 0000f9e00000
+% 000079f00000
+% 0000f3f80000
+% 0001e7fc0000
+% 0003cffc0000
+% 0003cffe0000
+% 00078fff0000
+% 000f07ff8000
+% 001e03ff8000
+% 001e01ffc000
+% 003c01ffe000
+% 007800fff000
+% 00f0007ff000
+% 01e0003ff800
+% 01e0003ffc00
+% 03c0001ffe00
+% 0780000ffe00
+% 0f00000fff00
+% 1e000007ff80
+% 1e000003ff80
+% 3c000001ffc0
+% 78000001ffe0
+% f0000000fff0
+%%EndPreview
+% Draw the "official" X Window System Logo, designed by Danny Chong.
+% Code translated from Xmu/DrawLogo.c by gildea, July 1994.
+/size 44 def
+/thin size 11 idiv def
+/gap thin 3 add 4 idiv def
+/d31 thin gap thin add add def
+% Draw what will be the thin strokes.
+newpath
+size dup moveto
+size d31 sub size lineto
+0 0 lineto
+d31 0 lineto
+closepath
+fill
+% Erase area not needed for lower thin stroke.
+1 setgray
+newpath
+d31 2 idiv 0 moveto
+size 2 idiv dup lineto
+size 2 idiv d31 d31 2 idiv sub add size 2 idiv lineto
+d31 0 lineto
+closepath
+% Erase area not needed for upper thin stroke.
+size d31 2 idiv sub size moveto
+size 2 idiv dup lineto
+size 2 idiv d31 dup 2 idiv sub sub size 2 idiv lineto
+size d31 sub size lineto
+closepath
+fill
+% Draw thick stroke.
+0 setgray
+newpath
+0 size moveto
+size 4 idiv size lineto
+size 0 lineto
+size dup 4 idiv sub 0 lineto
+closepath
+fill
+% Erase to create gap.
+1 setgray
+newpath
+size thin sub size moveto
+size thin gap add sub size lineto
+thin 0 lineto
+thin gap add 0 lineto
+closepath
+fill
+%%EOF
diff --git a/registry b/registry
new file mode 100644
index 0000000..66aff9d
--- /dev/null
+++ b/registry
@@ -0,0 +1,1676 @@
+/* $Xorg: registry,v 1.6 2001/03/29 20:23:56 coskrey Exp $ */
+
+ X Registry
+
+The X.Org Group is maintaining a registry of certain X-related
+items, to aid in avoiding conflicts and to aid in sharing of such items.
+Requests to register items, or questions about registration, should be
+addressed to
+ xregistry@x.org
+or to
+ The X.Org Group -- X11 Registry
+ c/o X.Org Chair
+ Steve Swales
+ Sun Microsystems, Inc.
+ 901 San Antonio Road, MS MPK29-203
+ Palo Alto, CA 94303-4900
+
+Electronic mail will be acknowledged upon receipt.
+Please allow up to 4 weeks for a formal response to registration and inquiries.
+
+The registry is published as part of the X software distribution
+from The X.Org Group.
+
+All registered items must have the postal address of someone responsible for
+the item, or a reference to a document describing the item and the postal
+address of where to write to obtain the document.
+
+Registration of conflicting items will not be permitted (the same value will
+not be assigned two different meanings) except where explicitly indicated.
+
+1. ORGANIZATION NAMES
+
+These should generally be used as prefixes for other registered names.
+
+Name Reference
+---- ---------
+"Acorn" [49]
+"Adobe" [69]
+"AIX" [33]
+"ALLINK" [99]
+"APOLLO" [1]
+"Apple" [22]
+"ARDENT" [2]
+"BBN" [61]
+"Compaq" [82]
+"CRAB" [84]
+"CRUC" [30]
+"DEC" [82]
+"DG" [48]
+"DME" [7]
+"Dt" [114]
+"EFW" [124]
+"ES" [75]
+"FXD" [55]
+"FUJITSU" [87]
+"HP" [35]
+"IBM" [33]
+"ICS" [31]
+"ILA" [62]
+"IPSYS" [59]
+"IXI" [20]
+"JCC" [90]
+"JUP" [93]
+"KPC" [98]
+"LJK" [56]
+"LTA" [60]
+"MEGATEK" [112]
+"Metheus" [117]
+"MIT" [8]
+"MOTIF" [7]
+"NCD" [66]
+"OMRON" [45]
+"ORL" [65]
+"OSF" [7]
+"Panasonic" [52]
+"PERITEK" [116]
+"PFU" [32]
+"RATIONAL" [88]
+"SGCS" [83]
+"SGI" [6]
+"SONY" [37]
+"stellar" [28]
+"STI" [73]
+"Sun" [58]
+"Tech-Source" [106]
+"TEK" [43]
+"TOG" [133]
+"visual" [5]
+"VIT" [46]
+"WN" [103]
+"WRI" [102]
+"WYSE" [68]
+"X/software" [115]
+"X3D" [8]
+"XC" [104]
+"Xerox" [91]
+"XFree86" [113]
+"XUG" [31]
+
+
+2. KEYSYMS
+
+Only "private" keysyms (with 29th bit set) can be registered by organizations;
+standard keysyms must be approved by the X.Org Group. Since keysym numeric
+values are explicitly private, we will permit (but not encourage) conflicting
+registration here.
+
+Name Value Reference
+---- ----- ---------
+hpXK_mute_acute 0x100000A8 [36]
+hpXK_mute_grave 0x100000A9 [36]
+hpXK_mute_asciicircum 0x100000AA [36]
+hpXK_mute_diaeresis 0x100000AB [36]
+hpXK_mute_asciitilde 0x100000AC [36]
+hpXK_lira 0x100000AF [36]
+hpXK_guilder 0x100000BE [36]
+hpXK_Ydiaeresis 0x100000EE [36]
+hpXK_IO 0x100000EE [36]
+hpXK_longminus 0x100000F6 [36]
+hpXK_block 0x100000FC [36]
+apXK_LineDel 0x1000FF00 [1]
+apXK_CharDel 0x1000FF01 [1]
+apXK_Copy 0x1000FF02 [1]
+apXK_Cut 0x1000FF03 [1]
+apXK_Paste 0x1000FF04 [1]
+apXK_Move 0x1000FF05 [1]
+apXK_Grow 0x1000FF06 [1]
+apXK_Cmd 0x1000FF07 [1]
+apXK_Shell 0x1000FF08 [1]
+apXK_LeftBar 0x1000FF09 [1]
+apXK_RightBar 0x1000FF0A [1]
+apXK_LeftBox 0x1000FF0B [1]
+apXK_RightBox 0x1000FF0C [1]
+apXK_UpBox 0x1000FF0D [1]
+apXK_DownBox 0x1000FF0E [1]
+apXK_Pop 0x1000FF0F [1]
+apXK_Read 0x1000FF10 [1]
+apXK_Edit 0x1000FF11 [1]
+apXK_Save 0x1000FF12 [1]
+apXK_Exit 0x1000FF13 [1]
+apXK_Repeat 0x1000FF14 [1]
+hpXK_Modelock1 0x1000FF48 [36]
+hpXK_Modelock2 0x1000FF49 [36]
+hpXK_Reset 0x1000FF6C [36]
+hpXK_System 0x1000FF6D [36]
+hpXK_User 0x1000FF6E [36]
+hpXK_ClearLine 0x1000FF6F [36]
+hpXK_InsertLine 0x1000FF70 [36]
+hpXK_DeleteLine 0x1000FF71 [36]
+hpXK_InsertChar 0x1000FF72 [36]
+hpXK_DeleteChar 0x1000FF73 [36]
+hpXK_BackTab 0x1000FF74 [36]
+hpXK_KP_BackTab 0x1000FF75 [36]
+apXK_KP_parenleft 0x1000FFA8 [1]
+apXK_KP_parenright 0x1000FFA9 [1]
+
+IXK_2ND_FUNC_L 0x10004001 [50]
+IXK_2ND_FUNC_R 0x10004002 [50]
+IXK_REMOVE 0x10004003 [50]
+IXK_REPEAT 0x10004004 [50]
+IXK_A1 0x10004101 [50]
+IXK_A2 0x10004102 [50]
+IXK_A3 0x10004103 [50]
+IXK_A4 0x10004104 [50]
+IXK_A5 0x10004105 [50]
+IXK_A6 0x10004106 [50]
+IXK_A7 0x10004107 [50]
+IXK_A8 0x10004108 [50]
+IXK_A9 0x10004109 [50]
+IXK_A10 0x1000410A [50]
+IXK_A11 0x1000410B [50]
+IXK_A12 0x1000410C [50]
+IXK_A13 0x1000410D [50]
+IXK_A14 0x1000410E [50]
+IXK_A15 0x1000410F [50]
+IXK_B1 0x10004201 [50]
+IXK_B2 0x10004202 [50]
+IXK_B3 0x10004203 [50]
+IXK_B4 0x10004204 [50]
+IXK_B5 0x10004205 [50]
+IXK_B6 0x10004206 [50]
+IXK_B7 0x10004207 [50]
+IXK_B8 0x10004208 [50]
+IXK_B9 0x10004209 [50]
+IXK_B10 0x1000420A [50]
+IXK_B11 0x1000420B [50]
+IXK_B12 0x1000420C [50]
+IXK_B13 0x1000420D [50]
+IXK_B14 0x1000420E [50]
+IXK_B15 0x1000420F [50]
+IXK_B16 0x10004210 [50]
+
+DXK_Remove 0x1000FF00 [27]
+DXK_ring_accent 0x1000FEB0 [27]
+DXK_circumflex_accent 0x1000FE5E [27]
+DXK_cedilla_accent 0x1000FE2C [27]
+DXK_acute_accent 0x1000FE27 [27]
+DXK_grave_accent 0x1000FE60 [27]
+DXK_tilde 0x1000FE7E [27]
+DXK_diaeresis 0x1000FE22 [27]
+
+osfXK_Copy 0x1004FF02 [7]
+osfXK_Cut 0x1004FF03 [7]
+osfXK_Paste 0x1004FF04 [7]
+osfXK_BackTab 0x1004FF07 [7]
+osfXK_BackSpace 0x1004FF08 [7]
+osfXK_Clear 0x1004FF0B [7]
+osfXK_Escape 0x1004FF1B [7]
+osfXK_AddMode 0x1004FF31 [7]
+osfXK_PrimaryPaste 0x1004FF32 [7]
+osfXK_QuickPaste 0x1004FF33 [7]
+osfXK_PageLeft 0x1004FF40 [7]
+osfXK_PageUp 0x1004FF41 [7]
+osfXK_PageDown 0x1004FF42 [7]
+osfXK_PageRight 0x1004FF43 [7]
+osfXK_Activate 0x1004FF44 [7]
+osfXK_MenuBar 0x1004FF45 [7]
+osfXK_Left 0x1004FF51 [7]
+osfXK_Up 0x1004FF52 [7]
+osfXK_Right 0x1004FF53 [7]
+osfXK_Down 0x1004FF54 [7]
+osfXK_Prior 0x1004FF55 [7]
+osfXK_Next 0x1004FF56 [7]
+osfXK_EndLine 0x1004FF57 [7]
+osfXK_BeginLine 0x1004FF58 [7]
+osfXK_EndData 0x1004FF59 [7]
+osfXK_BeginData 0x1004FF5A [7]
+osfXK_PrevMenu 0x1004FF5B [7]
+osfXK_NextMenu 0x1004FF5C [7]
+osfXK_PrevField 0x1004FF5D [7]
+osfXK_NextField 0x1004FF5E [7]
+osfXK_Select 0x1004FF60 [7]
+osfXK_Insert 0x1004FF63 [7]
+osfXK_Undo 0x1004FF65 [7]
+osfXK_Menu 0x1004FF67 [7]
+osfXK_Cancel 0x1004FF69 [7]
+osfXK_Help 0x1004FF6A [7]
+osfXK_SelectAll 0x1004FF71 [7]
+osfXK_DeselectAll 0x1004FF72 [7]
+osfXK_Reselect 0x1004FF73 [7]
+osfXK_Extend 0x1004FF74 [7]
+osfXK_Restore 0x1004FF78 [7]
+osfXK_SwitchDirection 0x1004FF7E [7]
+osfXK_PriorMinor 0x1004FFF5 [7]
+osfXK_NextMinor 0x1004FFF6 [7]
+osfXK_RightLine 0x1004FFF7 [7]
+osfXK_LeftLine 0x1004FFF8 [7]
+osfXK_Delete 0x1004FFFF [7]
+
+SunXK_FA_Grave 0x1005FF00 [58]
+SunXK_FA_Circum 0x1005FF01 [58]
+SunXK_FA_Tilde 0x1005FF02 [58]
+SunXK_FA_Acute 0x1005FF03 [58]
+SunXK_FA_Diaeresis 0x1005FF04 [58]
+SunXK_FA_Cedilla 0x1005FF05 [58]
+SunXK_F36 0x1005FF10 [58]
+SunXK_F37 0x1005FF11 [58]
+SunXK_Sys_Req 0x1005FF60 [58]
+SunXK_Props 0x1005FF70 [58]
+SunXK_Front 0x1005FF71 [58]
+SunXK_Copy 0x1005FF72 [58]
+SunXK_Open 0x1005FF73 [58]
+SunXK_Paste 0x1005FF74 [58]
+SunXK_Cut 0x1005FF75 [58]
+SunXK_PowerSwitch 0x1005FF76 [58]
+SunXK_AudioLowerVolume 0x1005FF77 [58]
+SunXK_AudioMute 0x1005FF78 [58]
+SunXK_AudioRaiseVolume 0x1005FF79 [58]
+SunXK_VideoDegauss 0x1005FF7A [58]
+SunXK_VideoLowerBrightness 0x1005FF7B [58]
+SunXK_VideoRaiseBrightness 0x1005FF7C [58]
+SunXK_PowerSwitchShift 0x1005FF7D [58]
+
+WYXK_Setup 0x1006FF00 [68]
+
+ncdXK_Setup 0x1006FF00 [66]
+
+XeroxXK_PointerButton1 0x10070001 [91]
+XeroxXK_PointerButton2 0x10070002 [91]
+XeroxXK_PointerButton3 0x10070003 [91]
+XeroxXK_PointerButton4 0x10070004 [91]
+XeroxXK_PointerButton5 0x10070005 [91]
+
+XF86XK_ModeLock 0x1008FF01 [113]
+
+Range 0x11000000 to 0x1100FFFF is allocated for keypad keysyms.
+
+
+3. AUTHORIZATION PROTOCOL NAMES
+
+See Section 8 of the protocol. Names should generally have an organizational
+prefix.
+
+Name Reference
+---- ---------
+"MIT-KERBEROS-4" [21]
+"MIT-KERBEROS-5" [21]
+"MIT-MAGIC-COOKIE-1" [8]
+"SUN-DES-1" [57]
+"XC-QUERY-SECURITY-1" [8]
+"XDM-AUTHORIZATION-1" [8], [11]
+
+4. VENDOR STRING FORMATS
+
+See Section 8 of the protocol.
+
+String Reference
+---- ---------
+"Acorn Computers Ltd" [49]
+"Apollo Computer Inc." [1]
+"Apple Computer, Inc." [22]
+"Ardent Computer Corporation" [2]
+"Compaq Computer Corporation" [82]
+"Crab Advanced Technologies Ltd" [84]
+"Crucible" [30]
+"Data General Corporation" [48]
+"Digital Equipment Corporation" [82]
+"EFW, Inc." [124]
+"Evans & Sutherland" [75]
+"FUJITSU LIMITED" [87]
+"Hewlett-Packard Company" [35]
+"International Business Machines" [33]
+"JAPAN COMPUTER CORP." [90]
+"Jupiter Systems Inc." [93]
+"Kubota Pacific Computer" [98]
+"Matsushita Electric Industrial Co., Ltd." [52]
+"Megatek Corporation" [112]
+"Metheus Corporation" [117]
+"MIT X Consortium" [8]
+"Network Computing Devices Inc." [66]
+"OMRON Corporation" [45]
+"Peritek Corporation" [116]
+"PFU LIMITED" [32]
+"Silicon Graphics Computer Systems" [6]
+"Snitily Graphics Consulting Services" [83]
+"Sony Corporation" [37]
+"Stellar Computer Inc." [28]
+"Sun Microsystems, Inc." [101]
+"Tech-Source Inc." [106]
+"The XFree86 Project, Inc" [113]
+"The X.Org Group" [8]
+"The X.Org Group / The XFree86 Project, Inc" [113] [8]
+"VIT-Visual Information Technologies, Inc (VITec)" [46]
+"Wolfram Research, Inc." [102]
+"Wyse Technology Inc." [68]
+"X/software Germany" [115]
+"X11/NeWS - Sun Microsystems, Inc." [58]
+"X Consortium" [104]
+
+5. PROTOCOL EXTENSION NAMES
+
+As used in the QueryExtension and ListExtensions protocol requests.
+The name should generally have an organizational prefix.
+
+Name Reference
+---- ---------
+"Acorn-Noise" [49]
+"Adobe-DPS-Extension" [42]
+"AixDeviceControlExtension" [33]
+"AixExtension" [33]
+"AixEventControlExtension" [33]
+"AixStatExtension" [33]
+"AixDialExtension" [33]
+"AixLpfkExtension" [33]
+"APOLLO-SHARE" [1]
+"ARDENT-XDoubleBuffer" [2], [3]
+"ARDENT-XTitan" [2], [4]
+"bezier" [34]
+"BIG-REQUESTS" [97]
+"DEC-XTRAP" [51]
+"DOUBLE-BUFFER" [123]
+"DPMS" [132]
+"ESMultiScreenExtension" [75]
+"ESSetBitsExtension" [75]
+"ESTraverse3DExtension" [75]
+"ESVideoModeExtension" [75]
+"ESLayersExtension" [75]
+"ESCursorAttrExtension" [75]
+"ESPickExtension" [75]
+"FUJITSU-Control-Modifiers" [87]
+"FUJITSU-VX-VideoControl" [87]
+"FUJITSU-VX-DeviceControl" [87]
+"JUPMISC" [93]
+"KPC-XPeer" [98]
+"LBX" [125]
+"MEX-Metheus-Extension-to-X" [117]
+"MIT-SCREEN-SAVER" [96]
+"MIT-SHM" [8]
+"MIT-SUNDRY-NONSTANDARD" [8]
+"Multi-Buffering" [8], [10]
+"NCD-SIE" [66]
+"ORL-SYNC" [65]
+"PanasonicDosEmulatorExtension" [52]
+"PFU-GAOpAttr" [32]
+"RECORD" [122]
+"SECURITY" [126]
+"SGI-GLX" [6]
+"SGI-XGL" [6]
+"SGI-MISCELLANEOUS" [6]
+"SHAPE" [8], [13]
+"SonyKeyboardExtension" [37]
+"SonySoundExtension" [37]
+"SonyVideoExtension" [37]
+"SonyPrinterExtension" [37]
+"stellar-cm" [29]
+"stellar-db" [29]
+"stellar-im" [29]
+"stellar-shmLink" [28]
+"stellar-xfdi" [29]
+"stellar-xtest" [28]
+"SUN_TSOL" [121]
+"SYNC" [108]
+"TsiOvlExtension" [106]
+"TekCms" [43]
+"TeKDisplayListExtension" [43]
+"TeKHardCopySupport" [43]
+"TeKPeerWindows" [43]
+"TOG-CUP" [131]
+"VEX" [14]
+"VIT-Image Display List Extension" [46]
+"X/software X/bigX" [115]
+"X/software X/keymapX" [115]
+"X/software X/metaX" [115]
+"X/software X/shadowX" [115]
+"X/software X/translucentX" [115]
+"X3D-PEX" [8], [9]
+"XC-APPGROUP" [127]
+"XC-MISC" [109]
+"XFree86-VidModeExtension" [113]
+"XIE" [110]
+"XInputExtension" [128]
+"XINERAMA" [130]
+"XKEYBOARD" [111]
+"XPRINT" [129]
+"XTEST" [8]
+"XTestExtension1" [35]
+"XVideo" [118]
+"ZoidExtension" [34]
+
+6. HOST FAMILIES
+
+See the "family" component of the HOST structure in the protocol.
+Values for private families will be assigned by The X.Org Group.
+
+Value Name Reference
+----- ---- ---------
+0 Internet [23]
+1 DECnet [23]
+2 Chaos [23]
+252 LocalHost [105]
+253 Kerberos5Principal [94]
+254 Netname [57]
+
+7. PROPERTY NAMES
+
+As stored on windows in the server. See Sections 4.1.2, 4.1.3, 5.1.1, and
+6.4 of the ICCCM, and Section 14.1 of the Xlib manual. Registration must
+include the context in which the property is used (e.g. root window, top-level
+client window). In general, private property names should start with a
+leading underscore, followed by the organizational prefix, followed by another
+underscore.
+
+Name Reference
+---- ---------
+"RGB_DEFAULT_MAP" [18]
+"RGB_BEST_MAP" [18]
+"RGB_RED_MAP" [18]
+"RGB_GREEN_MAP" [18]
+"RGB_BLUE_MAP" [18]
+"RGB_GRAY_MAP" [18]
+"WM_CLASS" [16]
+"WM_CLIENT_MACHINE" [16]
+"WM_COLORMAP_WINDOW" [16]
+"WM_COMMAND" [16]
+"WM_HINTS" [16]
+"WM_ICON_NAME" [16]
+"WM_ICON_SIZE" [16]
+"WM_NAME" [16]
+"WM_NORMAL_HINTS" [16]
+"WM_PROTOCOLS" [16]
+"WM_STATE" [16]
+"WM_TRANSIENT_FOR" [16]
+"WM_ZOOM_HINTS" [17], [18]
+"_MIT_OBJ_CLASS" [94]
+"_NCD_WM_RUNNING" [66]
+"_RATIONAL_ROSE_TAG" [88]
+"_RATIONAL_ROSE_MSG" [88]
+"_SGI_GL_COLORMAP" [6]
+
+8. PROPERTY TYPE NAMES
+
+See "PROPERTY NAMES" above.
+
+Name Reference
+---- ---------
+"ATOM" [16]
+"ATOM_PAIR" [16]
+"BITMAP" [16]
+"COMPOUND_TEXT" [8], [12]
+"DRAWABLE" [16]
+"INCR" [16]
+"INCREMENTAL" [17], [16]
+"INTEGER" [16]
+"PIXMAP" [16]
+"RGB_COLOR_MAP" [18]
+"SPAN" [16]
+"STRING" [16]
+"UTF8_STRING" [134]
+"WINDOW" [16]
+"WM_HINTS" [16]
+"WM_ICON_SIZE" [16]
+"WM_SIZE_HINTS" [16]
+"WM_STATE" [16]
+"_SONY_CDFF" [37]
+"_SONY_XWD" [37]
+"_SONY_XPICT" [37]
+"_SJIS_STRING" [37]
+"_EUC_STRING" [37]
+"_JIS_STRING" [37]
+"_WRI_XWD_RLED" [102]
+"_XWNMO" [45]
+
+9. SELECTION NAMES
+
+See Section 2.6.1 of the ICCCM. In general, private selection names should
+start with a leading underscore, followed by the organizational prefix,
+followed by another underscore.
+
+Name Reference
+---- ---------
+"CLIPBOARD" [16]
+"PD_SELECTION" [37]
+"PRIMARY" [16]
+"PRIMARY_FONT" [47]
+"SECONDARY" [16]
+"_JAPANESE_CONVERSION" [37]
+"_CHINESE_CONVERSION" [37]
+"_HUNGLE_CONVERSION" [37]
+"_EUROPEAN_CONVERSION" [37]
+"__SAM_" (prefix) [67]
+
+10. SELECTION TARGETS
+
+See Section 2.6.2 of the ICCCM. In general, private selection targets should
+start with a leading underscore, followed by the organizational prefix,
+followed by another underscore.
+
+Name Reference
+---- ---------
+"BACKGROUND" [16]
+"BITMAP" [16]
+"CHARACTER_POSITION" [16]
+"CLASS" [16]
+"CLIENT_WINDOW" [16]
+"COLORMAP" [16]
+"COLUMN_NUMBER" [16]
+"COMPOUND_TEXT" [8], [12]
+"DELETE" [16]
+"DRAWABLE" [16]
+"FILE_NAME" [16]
+"FOREGROUND" [16]
+"HOST_NAME" [16]
+"INSERT_PROPERTY" [16]
+"INSERT_SELECTION" [16]
+"LENGTH" [16]
+"LINE_NUMBER" [16]
+"LIST_LENGTH" [16]
+"MODULE" [16]
+"MULTIPLE" [16]
+"NAME" [16]
+"ODIF" [16]
+"OWNER_OS" [16]
+"PIXMAP" [16]
+"PROCEDURE" [16]
+"PROCESS" [16]
+"STRING" [16]
+"TARGETS" [16]
+"TASK" [16]
+"TEXT" [16]
+"TIMESTAMP" [16]
+"USER" [16]
+"UTF8_STRING" [134]
+"_ADOBE_EPS" [69]
+"_ADOBE_EPSI" [69]
+"_SONY_CDFF" [37]
+"_SONY_XWD" [37]
+"_SONY_XPICT" [37]
+"_SJIS_STRING" [37]
+"_EUC_STRING" [37]
+"_JIS_STRING" [37]
+"_WRI_XWD_RLED" [102]
+
+11. WM_PROTOCOLS PROTOCOLS
+
+See Section 4.1.2.7 of the ICCCM. In general, private protocols should start
+with a leading underscore, followed by the organizational prefix, followed by
+another underscore.
+
+Name Reference
+---- ---------
+"WM_DELETE_WINDOW" [16]
+"WM_TAKE_FOCUS" [16]
+"WM_SAVE_YOURSELF" [16]
+
+12. CLIENTMESSAGE TYPES
+
+See the "type" field in the ClientMessage event in the protocol, and Section
+4.2.8 of the ICCCM. In general, private types should start with a leading
+underscore, followed by the organizational prefix, followed by another
+underscore.
+
+Name Reference
+---- ---------
+"PD_ACTIVE" [37]
+"WM_CHANGE_STATE" [16]
+"WM_PROTOCOLS" [16]
+"_CONVERSION_REQUEST" [37]
+"_CONVERSION_NOTIFY" [37]
+"_CONVERSION_END" [37]
+
+13. FONT FOUNDRY NAMES
+
+See Section 3.1.2.1 of the XLFD. This will typically be an organization name.
+
+Name Reference
+---- ---------
+"Acorn" [49]
+"Adobe" [24]
+"AIX" [33]
+"Apple" [22]
+"Bitstream" [25]
+"Cognition" [89]
+"Cronyx" [120]
+"DEC" [27]
+"eands" [75]
+"fujitsu" [87]
+"FujiXerox" [64]
+"IBM" [33]
+"IPSYS" [59]
+"Metheus" [117]
+"MISC" [8]
+"NCD" [66]
+"omron" [45]
+"Panasonic" [52]
+"Sony" [37]
+"Sun" [92]
+
+14. FONT CHARSET (REGISTRY AND ENCODING) NAMES
+
+See Sections 3.1.2.12 of the XLFD. For ISO standards, the format
+will generally be: "ISO" + <standard-number> + "-" + <part-number>
+
+Name Reference
+---- ---------
+"DEC" [27]
+ registry prefix
+"DEC.CNS11643.1986-2" [53]
+ CNS11643 2-plane using the encoding
+ suggested in that standard
+"DEC.DTSCS.1990-2" [54]
+ DEC Taiwan Supplemental Character Set
+"fujitsu.u90x01.1991-0" [87]
+"fujitsu.u90x03.1991-0" [87]
+"GB2312.1980-0" [39],[12]
+ China (PRC) Hanzi, GL encoding
+"GB2312.1980-1" [39]
+ (deprecated)
+ China (PRC) Hanzi, GR encoding
+"HP-Arabic8" [36]
+ HPARABIC8 8-bit character set
+"HP-East8" [36]
+ HPEAST8 8-bit character set
+"HP-Greek8" [36]
+ HPGREEK8 8-bit character set
+"HP-Hebrew8" [36]
+ HPHEBREW8 8-bit character set
+"HP-Japanese15" [36]
+ HPJAPAN15 15-bit characer set,
+ modified from industry defacto
+ standard Shift-JIS
+"HP-Kana8" [36]
+ HPKANA8 8-bit character set
+"HP-Korean15" [36]
+ HPKOREAN15 15-bit character set
+"HP-Roman8" [36]
+ HPROMAN8 8-bit character set
+"HP-SChinese15" [36]
+ HPSCHINA15 15-bit character set for
+ support of Simplified Chinese
+"HP-TChinese15" [36]
+ HPTCHINA15 15-bit character set for
+ support of Traditional Chinese
+"HP-Turkish8" [36]
+ HPTURKISH8 8-bit character set
+"IPSYS" [59]
+ registry prefix
+"IPSYS.IE-1" [59]
+"ISO2022"<REG>"-"<ENC> [44]
+"ISO646.1991-IRV" [107]
+ ISO 646 International Reference Version
+"ISO8859-1" [15],[12]
+ ISO Latin alphabet No. 1
+"ISO8859-2" [15],[12]
+ ISO Latin alphabet No. 2
+"ISO8859-3" [15],[12]
+ ISO Latin alphabet No. 3
+"ISO8859-4" [15],[12]
+ ISO Latin alphabet No. 4
+"ISO8859-5" [15],[12]
+ ISO Latin/Cyrillic alphabet
+"ISO8859-6" [15],[12]
+ ISO Latin/Arabic alphabet
+"ISO8859-7" [15],[12]
+ ISO Latin/Greek alphabet
+"ISO8859-8" [15],[12]
+ ISO Latin/Hebrew alphabet
+"ISO8859-9" [15],[12]
+ ISO Latin alphabet No. 5
+"ISO8859-10" [15],[12]
+ ISO Latin alphabet No. 6
+"FCD8859-15" [7]
+ ISO Latin alphabet No. 9, Final Committee Draft
+"ISO10646-1" [133]
+ Unicode Universal Multiple-Octet Coded Character Set
+"ISO10646-MES" [133]
+ Unicode Minimum European Subset
+"JISX0201.1976-0" [38],[12]
+ 8-Bit Alphanumeric-Katakana Code
+"JISX0208.1983-0" [40],[12]
+ Japanese Graphic Character Set,
+ GL encoding
+"JISX0208.1990-0" [71]
+ Japanese Graphic Character Set,
+ GL encoding
+"JISX0208.1983-1" [40]
+ (deprecated)
+ Japanese Graphic Character Set,
+ GR encoding
+"JISX0212.1990-0" [72]
+ Supplementary Japanese Graphic Character Set,
+ GL encoding
+"KOI8-R" [119]
+ Cyrillic alphabet
+"KSC5601.1987-0" [41],[12]
+ Korean Graphic Character Set,
+ GL encoding
+"KSC5601.1987-1" [41]
+ (deprecated)
+ Korean Graphic Character Set,
+ GR encoding
+"omron_CNS11643-0" [45]
+"omron_CNS11643-1" [45]
+"omron_BIG5-0" [45]
+"omron_BIG5-1" [45]
+"wn.tamil.1993" [103]
+
+
+15. FONT PROPERTY NAMES
+
+See QueryFont in the protocol, and Section 3.2 of the XLFD. In general,
+private properties should start with a leading underscore, followed by the
+organizational prefix, followed by another underscore.
+
+Name Reference
+---- ---------
+"ADD_STYLE_NAME" [19]
+"AVERAGE_WIDTH" [19]
+"AVG_CAPITAL_WIDTH" [19]
+"AVG_LOWERCASE_WIDTH" [19]
+"CAP_HEIGHT" [19]
+"CHARSET_ENCODING" [19]
+"CHARSET_REGISTRY" [19]
+"COPYRIGHT" [19]
+"DESTINATION" [19]
+"END_SPACE" [19]
+"FACE_NAME" [19]
+"FIGURE_WIDTH" [19]
+"FOUNDRY" [19]
+"FAMILY_NAME" [19]
+"ITALIC_ANGLE" [19]
+"MAX_SPACE" [19]
+"MIN_SPACE" [19]
+"NORM_SPACE" [19]
+"NOTICE" [19]
+"PIXEL_SIZE" [19]
+"POINT_SIZE" [19]
+"QUAD_WIDTH" [17], [19]
+"RELATIVE_SETWIDTH" [19]
+"RELATIVE_WEIGHT" [19]
+"RESOLUTION" [17], [19]
+"RESOLUTION_X" [19]
+"RESOLUTION_Y" [19]
+"SETWIDTH_NAME" [19]
+"SLANT" [19]
+"SMALL_CAP_SIZE" [19]
+"SPACING" [19]
+"STRIKEOUT_ASCENT" [19]
+"STRIKEOUT_DESCENT" [19]
+"SUBSCRIPT_SIZE" [19]
+"SUBSCRIPT_X" [19]
+"SUBSCRIPT_Y" [19]
+"SUPERSCRIPT_SIZE" [19]
+"SUPERSCRIPT_X" [19]
+"SUPERSCRIPT_Y" [19]
+"UNDERLINE_POSITION" [19]
+"UNDERLINE_THICKNESS" [19]
+"X_HEIGHT" [19]
+"WEIGHT" [19]
+"WEIGHT_NAME" [19]
+"_ADOBE_POSTSCRIPT_FONTNAME" [69]
+
+16. RESOURCE TYPES
+
+See Chapter 15 of the Xlib manual and Section 9.1 of the Xt manual.
+
+Name Reference
+---- ---------
+"AcceleratorTable" [26]
+"Bool" [26]
+"Boolean" [26]
+"Callback" [26]
+"CallProc" [26]
+"CharSet" [37]
+"Color" [26]
+"CompoundText" [12]
+"Cursor" [26]
+"Dimension" [26]
+"Display" [26]
+"EditMode" [26]
+"File" [26]
+"Float" [26]
+"Font" [26]
+"FontList" [37]
+"FontStruct" [26]
+"Function" [26]
+"Geometry" [26]
+"Immediate" [26]
+"Int" [26]
+"Justify" [26]
+"KeyboardType" [37]
+"Language" [37]
+"Orientation" [26]
+"PEXtClipIndicator" [75]
+"PEXtColorBundle" [75]
+"PEXtControlFlag" [75]
+"PEXtCullMode" [75]
+"PEXtDeferralMode" [75]
+"PEXtDepthCueMode" [75]
+"PEXtDistinguishMode" [75]
+"PEXtEdgeFlag" [75]
+"PEXtGeneralColor" [75]
+"PEXtGravity" [75]
+"PEXtHLHSRMode" [75]
+"PEXtIntList" [75]
+"PEXtInteriorStyle" [75]
+"PEXtLightSourceType" [75]
+"PEXtLimit" [75]
+"PEXtLimit3" [75]
+"PEXtLineType" [75]
+"PEXtModificationMode" [75]
+"PEXtPickHighlightMode" [75]
+"PEXtPickMode" [75]
+"PEXtPoint" [75]
+"PEXtPoint3" [75]
+"PEXtProjectionType" [75]
+"PEXtReflectanceEquation" [75]
+"PEXtResizePolicy" [75]
+"PEXtShadingMethod" [75]
+"PEXtTraversalPolicy" [75]
+"PEXtVector" [75]
+"PEXtVector3" [75]
+"PEXtWorkstationType" [75]
+"Pixel" [26]
+"Pixmap" [26]
+"Pointer" [26]
+"Position" [26]
+"Short" [26]
+"String" [18],[26]
+"StringTable" [26]
+"TranslationTable" [26]
+"UnsignedChar" [26]
+"Widget" [26]
+"Window" [26]
+"Xai" (prefix) [59]
+"Xi" (prefix) [31]
+"XMex" (prefix) [117]
+
+17. APPLICATION CLASSES
+
+See Section 4.1.2.5 of the ICCCM and Section 14.1.8 of the Xlib manual.
+[Only class names, not instance names.]
+
+Name Reference
+---- ---------
+"BuilderXcessory" [31]
+"BX" [31]
+"Clock" [47]
+"Csm" [75]
+"Exterm" [45]
+"Listres" [47]
+"Medit" [45]
+"Xai" [59]
+"Xbiff" [47]
+"XCalc" [47]
+"XClipboard" [47]
+"XClock" [47]
+"XCutsel" [47]
+"Xditview" [47]
+"Xedit" [47]
+"XEyes" [47]
+"Xfd" [47]
+"XFontSel" [47]
+"Xgc" [47]
+"XLogo" [47]
+"Xman" [47]
+"Xmh" [47]
+"Xsm" [49]
+"XTerm" [47]
+"Xwnmo" [45]
+
+
+18. CLASS EXTENSION RECORD TYPES
+
+See Section 1.4.12 of the Xt Intrinsics manual.
+
+Name Reference
+---- ---------
+"Xai" (prefix) [59]
+"XaiCoreClassExtension" [59]
+
+19. DISPLAY MANUFACTURER ID
+
+See Section 9 of the X Display Manager Control Protocol.
+
+Name Reference
+---- ---------
+"Acorn" [49]
+"CRAB" [84]
+"EFW" [124]
+"FUJITSU" [87]
+"HDS" [70]
+"JCC" [90]
+"Jupiter" [93]
+"TD" [63]
+"Metheus" [117]
+"MIT" [8]
+"NCD" [66]
+"PERITEK" [116]
+"WYSE" [68]
+"X/software-X/bigX" [115]
+
+
+20. NON-STANDARD CHARACTER SET ENCODINGS
+
+See Section 6 of the Compound Text standard.
+
+Name Reference
+---- ---------
+"DEC.CNS11643.1986-2" [53]
+ CNS11643 2-plane using the recommended
+ internal representation scheme
+"DEC.DTSCS.1990-2" [54]
+ DEC Taiwan Supplemental Character Set
+"fujitsu.u90x03" [87]
+"ILA" [62]
+ registry prefix
+"IPSYS" [59]
+ registry prefix
+"omron_UDC" [45]
+ omron User Defined Charset
+"omron_UDC_ja" [45]
+ omron User Defined Charset for Japanese
+"omron_UDC_zh" [45]
+ omron User Defined Charset for Chinese(Main land)
+"omron_UDC_tw" [45]
+ omron User Defined Charset for Chinese(Taiwan)
+
+
+21. PEX VENDOR ID
+
+For identifying GDPs, GSEs, enum values/types, OC types, table types.
+See PEX 5.1 interoperability conventions.
+
+Value Name Reference
+----- ---- ---------
+1 MIT [8]
+2 GfxBase, Inc. [74]
+3 Silicon Graphics Computer Systems [6]
+4 Evans & Sutherland [75]
+5 Sun Microsystems, Inc. [76]
+6 Sumitomo Electric Workstation Corp. [77]
+7 Hewlett-Packard Co. [78]
+8 Metro Link Inc. [79]
+9 Stardent Computer [80]
+10 Sony Microsystems [81]
+11 Digital Equipment Corp. [82]
+12 Network Computing Devices [66]
+13 ShoGraphics, Inc. [85]
+14 Tektronix, Inc. [86]
+15 FUJITSU LIMITED [87]
+16 International Business Machines [33]
+17 Kubota Pacific Computer [95]
+18 Hitachi, Ltd. [100]
+19 Megatek Corporation [112]
+20 The XFree86 Project, Inc [113]
+21 Metheus Corp. [117]
+
+
+22. XIM ENCODINGS
+
+Names of encodings used for text exchanged in the Input Method Protocol.
+See XIM_ENCODING_NEGOTIATION in section 4.6 of the XIM standard.
+
+"COMPOUND_TEXT" [104]
+
+
+REFERENCES
+
+[1] Keith Dawson
+ MS: CHR 03 DE
+ Apollo Computer Inc.
+ 300 Apollo Drive
+ Chelmsford, MA 01824
+
+[2] Mark Patrick
+ Ardent Computer
+ 880 West Maude Avenue
+ Sunnyvale, CA 94086
+
+[3] X+ Multiple Buffering/Stereo Library Extension
+ Mark Patrick, Ardent
+
+[4] Ardent X Server Private Extension
+ Mark Patrick, Ardent
+
+[5] Visual Technology, Inc.
+
+[6] Philip Karlton
+ System Software Division
+ Silicon Graphics Computer Systems
+ 2011 N. Shoreline Blvd.
+ Mountain View, CA 94309-7311
+
+[7] The Open Group
+ Apex Plaza,Forbury Road,
+ Reading,Berks.RG1 1AX,England
+ Howard Greenwell
+ h.greenwell@opengroup.org
+
+[8] The X standards body maintaining X11 and related standards:
+ 1988-1993 The MIT X Consortium
+ 1993-1996 The X Consortium
+ 1997-1998 The Open Group X Project Team
+ 1998- The X.Org Group
+
+ The X.Org Group current contact information
+ (website, mail-lists, Manager, Chair, Co-Chair)
+
+ X.Org website:
+ www.x.org
+
+ X.Org mail-lists: (See web site for additional mail-lists.)
+ xregistry@x.org X.Org X registry
+ xorg_team@x.org X.Org general business
+ xorg_stds@x.org X.Org standards
+
+ X.Org Non-Profit Business Manager:
+ The Open Group
+ Apex Plaza,Forbury Road,
+ Reading,Berks.RG1 1AX,England
+ Howard Greenwell
+ h.greenwell@opengroup.org
+
+ X.Org Chair:
+ Steve Swales
+ Sun Microsystems, Inc.
+ 901 San Antonio Road, MS MPK29-203
+ Palo Alto, CA 94303-4900
+ steve.swales@eng.sun.com
+
+ X.Org Co-Chair:
+ Irene McCartney
+ Compaq Computer Corporation
+ 110 Spitbrook Road, ZKO3-3/T79
+ Nashua, NH 03062
+ irene@zk3.dec.com
+
+[9] PEX Protocol Specification
+ PEX Protocol Encoding
+ PEX Introduction and Overview
+ Randi Rost, Digital, document editor
+
+[10] Extending X for Double-Buffering, Multi-Buffering, and Stereo
+ The X.Org Group
+ See Reference [8]
+
+[11] X Display Manager Control Protocol
+ The X.Org Group
+ See Reference [8]
+
+[12] Compound Text Encoding
+ The X.Org Group
+ See Reference [8]
+
+[13] X11 Nonrectangular Window Shape Extension
+ The X.Org Group
+ See Reference [8]
+
+[14] VEX - Video Extension to X
+ Todd Brunhoff, Tektronix
+
+[15] ISO 8859, Information processing - 8-bit single-byte coded graphic
+ character sets, parts 1 through 10
+
+[16] Inter-Client Communication Conventions Manual
+ The X.Org Group
+ See Reference [8]
+
+[17] Obsolete
+
+[18] Xlib Manual
+ The X.Org Group
+ See Reference [8]
+
+[19] X Logical Font Description Conventions
+ The X.Org Group
+ See Reference [8]
+
+[20] IXI Limited
+
+[21] MIT Project Athena
+
+[22] Apple Computer, Inc.
+
+[23] X Window System Protocol
+ The X.Org Group
+ See Reference [8]
+
+[24] Adobe Systems, Inc.
+
+[25] Bitstream, Inc.
+
+[26] Xt Intrinsics Manual
+ The X.Org Group
+ See Reference [8]
+
+[27] Digital Equipment Corporation
+ Irene McCartney
+ Compaq Computer Corporation
+ 110 Spitbrook Road, ZKO3-3/T79
+ Nashua, NH 03062
+ irene@zk3.dec.com
+
+[28] Steve Pitschke
+ Stellar Computer, Inc.
+ 95 Wells Ave.
+ Newton, MA 02159
+
+[29] Jeff Vroom
+ Stellar Computer, Inc.
+ 95 Wells Ave.
+ Newton, MA 02159
+
+[30] Crucible
+ Santa Cruz, CA
+
+[31] Mark Hatch
+ Integrated Computer Solutions, Inc.
+ 201 Broadway
+ Cambridge, MA 02139
+
+[32] Kyou Katoh
+ PFU LIMITED
+ 687-1 Tsuruma 7 Gou Machida-shi
+ Tokyo 194, Japan
+
+[33] Dan McNichol /IMAD 9564
+ International Business Machines
+ 11400 Burnet Road
+ Austin, TX 78758
+
+[34] Anonymous
+ MIT Software Distribution
+
+[35] (Originally Larry Woestman)
+ Paul Anderson
+ Hewlett Packard
+ 3404 E. Harmony Road, MS-74
+ Fort Collins, CO 80528-9599
+
+[36] (Originally Tom McFarland)
+ See Reference [35]
+
+[37] Hideo Irie
+ Work Station Division
+ SuperMicro Systems Group
+ Sony Corporation
+ 6-7-35 Kitasinagawa Sinagawa-ku
+ Tokyo, Japan
+
+[38] JIS X 0201-1976 (reaffirmed 1984)
+
+[39] GB2312-1980
+
+[40] JIS X 0208-1983
+
+[41] KS C5601-1987
+
+[42] Linda Gass
+ Adobe Systems
+ PO Box 7900
+ Mountain View, CA 94039-7900
+
+[43] (Originally Dave Cassing)
+ X Strategy Team
+ Tektronix, Inc.
+ PO Box 1000
+ Wilsonville, Oregon 97070-1000
+
+[44] ISO2022<REG>-<ENC>
+
+ REG := [_L_<GL_register>][_R_<GR_register>]
+ ENC := [L<GL_EscapeSequence>][R<GR_EscapeSequence>]
+ <GL_EscapeSequence> :=
+ <Left_set><intermediate characters><Final_byte>
+ <GR_EscapeSequence> :=
+ <Right_set><intermediate characters><Final_byte>
+ <Left_set> :=
+ '4' /* 94-character sets */
+ | 'M' /* Multiple-byte character sets */
+ <Right_set> :=
+ <Left_set>
+ | '6' /* 96-character sets */
+ <Final_byte> :=
+ "30" - "7E" /* hex encoding of Latin-1 3/0 - 7/14 */
+ <intermediate characters> :=
+ <empty>
+ | <intermediate character><intermediate characters>
+ <intermediate character> :=
+ "20" - "2F" /* hex encoding of Latin-1 2/0 - Latin-1 2/15 */
+
+ The "ISO2022" prefix identifies this as an ISO2022-conforming encoding.
+ [] denotes an optional construct. <GL_register> and <GR_register> are
+ organizational strings that identify this encoding as having a GL or GR
+ component that is not registered with ECMA, but rather is private to
+ the given organization. At least one of L<GL_EscapeSequence> or
+ R<GR_EscapeSequence> must be present. If one is missing, the contents
+ of the font in that graphics half is undefined.
+
+[45] Hiroshi Kuribayashi
+ OMRON Corporation
+ Computer System R&D Laboratory
+ Shimokaiinji, Nagaokakyo-city
+ Kyoto, 617, Japan
+
+[46] Kyle Marvin
+ Visual Information Technologies, Inc. (VITec)
+ 3460 Lotus Drive
+ Plano, TX 75075
+
+[47] X11R4
+ See Reference [8]
+
+[48] Data General Corp.
+ 62 T.W. Alexander Dr.
+ R.T.P. NC, 27709
+ Attn: Janet Leising
+
+[49] John Bowler
+ Acorn Computers Limited
+ Cambridge Technopark
+ 645 Newmarket Road
+ Cambridge
+ CB5 8PB
+ England
+
+[50] Rick Franklin
+ Intergraph Corporation
+ One Madison Industrial Park
+ Huntsville, Al. 35894-0001
+
+[51] Dan Coutu
+ Digital Equipment Corporation ZKO 3-3/T13
+ 110 Spitbrook Rd.
+ Nashua, NH 03062-2698
+
+[52] Takayuki Kageyama
+ Computer Division
+ Information Equipment Sector
+ Matsushita Electric Industrial Co., Ltd.
+ 1006, Kadoma, Osaka, 571 Japan
+
+[53] CNS11643
+ National Bureau of Standards
+ Taiwan, Republic of China
+
+[54] KH Chan
+ Digital Equipment Co.
+ 2-4/F Henan Building
+ 90 Jaffe Road, Wanchai,
+ Hong Kong
+
+[55] Mike Wexler
+ FXD/Telerate, Inc.
+ 2091 Landings Drive
+ Mountain View, CA 94043
+
+[56] Lawrence J. Kilgallen
+ Box 81
+ MIT Station
+ Cambridge, MA 02139-0901
+
+[57] (Originally David Rosenthal)
+ Steve Swales
+ Sun Microsystems, Inc.
+ 901 San Antonio Road, MS MPK29-203
+ Palo Alto, CA 94303-4900
+ steve.swales@eng.sun.com
+
+[58] (Originally Murali V. Srinivasan)
+ See Reference [57]
+
+[59] Keith Robson
+ Ipsys Software plc
+ Marlborough Court, Pickford St.,
+ Macclesfield, Cheshire, SK11 6JD
+ England
+
+[60] David Lewis
+ Lewis, Trachtenberg & Associates
+ One Kendall Square (Building 200, Fourth Floor)
+ Cambridge, MA 02139-1564
+ dbl@ics.com
+
+[61] James J Dempsey
+ Bolt Beranek and Newman Inc.
+ 150 CambridgePark Drive
+ Cambridge MA 02140
+
+[62] Glenn Adams
+ International Lisp Associates
+ 114 Mount Auburn Street
+ Cambridge, MA 02138
+
+[63] Sigvald Refsum
+ Tandberg Data A/S
+ PO Box 9
+ Korsvoll, N-0808 OSLO 8
+
+[64] Masahiko Muramatsu
+ System Techonology Development Center
+ Fuji Xerox Co.,LTD.
+ KSP/R&D Business Park Bldg.
+ 100-1, Sakado, Takatsu-ku, Kawasaki-City, Kanagawa-Ken,
+ 213 JAPAN
+
+[65] Tim Glauert
+ Olivetti Research Limited
+ 24a Trumpington Street
+ Cambridge, England
+
+[66] Jim Fulton
+ Network Computing Devices
+ 350 North Bernardo Ave.
+ Mountain View, CA 94043
+
+[67] John Mackin
+ 6/23 Northwood Street
+ Camperdown 2050
+ AUSTRALIA
+
+[68] Bill Rainey
+ Wyse Technology
+ 3471 N. First Street
+ San Jose, CA 95134
+
+[69] PostScript Developer Support
+ Adobe Systems Incorporated
+ PO Box 7900
+ Mountain View, CA 94039-7900
+
+[70] Adrian Bereanu
+ Human Designed Systems
+
+[71] JIS X 0208-1990
+
+[72] JIS X 0212-1990
+
+[73] Dan Greening
+ Software Transformation
+ 1601 Saratoga-Sunnyvale Rd
+ Cupertino, CA 95014
+
+[74] Dale Luck
+ GfxBase, Inc.
+ 1881 Ellwell Dr.
+ Milpitas, CA 95035
+
+[75] Gary G. Cannon
+ Evans & Sutherland
+ 580 Arapeen Dr.
+ P.O. Box 58700
+ Salt Lake City, UT 84158
+
+[76] Cheryl Huntington
+ MS. MTV21-04
+ Sun Microsystems
+ 2550 Garcia Ave.
+ Mountain View, CA. 94043-1100
+
+[77] Junichi Hiramoto
+ Manager, Engineering Department
+ Sumitomo Electric Workstation Corp.
+ No. 30 Kowa Bldg. 2-4-5 Roppongi, Minato-ku
+ Tokyo, 106 Japan
+
+[78] (Originally Jeff Stevenson)
+ See Reference [35]
+
+[79] Garry M. Paxinos
+ Metro Link Incorporated
+ 5807 N. Andrews Way
+ Ft. Lauderdale, FL 33309
+
+[80] John Dennis
+ Stardent Computer
+ 6 New England Tech Center
+ 521 Virginia Road
+ Concord, MA 01742
+
+[81] Mark Patrick
+ Sony Microsystems
+ 651 River Oaks Parkway
+ San Jose, CA 95134
+
+[82] Dick Coulter
+ MLO1-2/U2
+ Digital Equipment Corp.
+ 146 Main St.
+ Maynard, MA 01754
+
+ Irene McCartney
+ Compaq Computer Corporation
+ 110 Spitbrook Road, ZKO3-3/T79
+ Nashua, NH 03062
+
+[83] Mark W. Snitily
+ Snitily Graphics Consulting Services
+ 894 Brookgrove Lane
+ Cupertino, CA 95014
+
+[84] Paul Verey
+ Crab Advanced Technologies Ltd.
+ First Base, Beacontree Plaza, Gillette Way
+ Reading, RG2 0BP
+
+[85] Ken Garnett
+ ShoGraphics, Inc.
+ 1890 N. Shoreline Blvd.
+ Mountain View, CA 94043
+
+[86] Michael F. Cripps
+ Tektronix, Inc
+ P.O Boc 1000 MS 60-850
+ Wilsonville, OR 97070-1000
+
+[87] Kyou Katoh
+ FUJITSU LIMITED
+ 1015 Kamikodanaka Nakahara-ku
+ Kawasaki 221, Japan
+
+[88] David Kaelbling
+ Rational
+ 12 Mountain Rock Ln.
+ Norfolk, MA 02056
+
+[89] Hal Berman
+ Cognition Corporation
+ 755 Middlesex Turnpike
+ Billerica, MA 01821
+
+[90] Takatoshi Ishii
+ Japan Computer Corp.
+ 2-6-9, Higashi Kanda, Chiyoda-ku,
+ Tokyo 101 Japan
+
+[91] Bill Janssen
+ Xerox PARC
+ 3333 Coyote Hill Rd.
+ Palo Alto, CA 94304
+
+[92] (Originally Rick Heli)
+ See Reference [57]
+
+[93] Russell Leefer
+ Jupiter Systems
+ Suite 200
+ 1351 Harbor Bay Parkway
+ Alameda, CA 94501
+
+[94] The X.Org Group
+ See Reference [8]
+
+[95] Greg Stiehl
+ Kubota Pacific Computer
+ 2630 Walsh Avenue
+ Santa Clara, CA 95051-0905
+
+[96] MIT Screen Saver Extension
+ The X.Org Group
+ See Reference [8]
+
+[97] Big Requests Extension
+ The X.Org Group
+ See Reference [8]
+
+[98] Randi Rost
+ Kubota Pacific Computer
+ 2630 Walsh Avenue
+ Santa Clara, CA 95051-0905
+
+[99] Ilan Aisic
+ NYNEX ALLINK Co.
+ 4 Gannett Drive
+ White Plains, NY 10604
+
+[100] Toshiyuki Kuwana
+ Information Equipment Engineering Dept.
+ Omika Works, Hitatchi Ltd.
+ 5-2-1 Omika-cho, Hitachi-shi, Ibaraki-ken, 319-12 Japan
+
+[101] (Originally Milind Pansare)
+ See Reference [57]
+
+[102] John L. Cwikla
+ Wolfram Research, Inc.
+ 100 Trade Center Drive
+ Champaign IL, 61820-7237
+
+[103] University of Washington
+ for WM Tamil fonts
+
+[104] The X Consortium
+ See Reference [8]
+
+[105] The Open Group X Project Team
+ See Reference [8]
+
+[106] Selwyn Henriques
+ Tech-Source, Inc.
+ 442 S North Lake Blvd.
+ Altamonte Springs FL 32701
+
+[107] ISO/IEC 646:1991, Information technology -- ISO 7-bit coded
+ character set for information interchange
+
+[108] X Synchronization Extension
+ The X.Org Group
+ See Reference [8]
+
+[109] XC-MISC Extension
+ The X.Org Group
+ See Reference [8]
+
+[110] X Image Extension
+ The X.Org Group
+ See Reference [8]
+
+[111] X Keyboard Extension
+ The X.Org Group
+ See Reference [8]
+
+[112] Allan Frankel
+ Megatek Corporation
+ 16868 Via Del Campo Court
+ San Diego, CA 92127-1714
+
+[113] David Wexelblat
+ The XFree86 Project, Inc.
+ c/o AIB Software Corporation
+ 46030 Manekin Plaza, Suite 160
+ Dulles, VA 20166
+
+[114] (Originally Stuart W. Marks)
+ See Reference [57]
+
+[115] Michael Gehret
+ X/software
+ Marktstrasse 8, D-87730
+ Groenenbach, Germany
+
+[116] Bob Schulman
+ Peritek Corp.
+ 5550 Redwood Road
+ Oakland, CA 94619
+
+[117] Alan Ricker
+ Metheus Coporation
+ 1600 NW Compton Dr.
+ Beaverton OR, 97006
+
+[118] X Video Extension Protocol Description
+ Version 2, 25-JUL-91
+ David Carver
+
+[119] Network Working Group's RFC1489
+
+[120] Cronyx Ltd.
+ Research Computer Center
+ Moscow State University
+ Moscow 119899, Russia
+ Phone: +7 (095) 939-2323
+ Fax: +7 (095) 939-0300
+ E-mail: info@cronyx.ru
+
+[121] Sun Microsystems Federal, Inc. Trusted Solaris Extension,
+ (Originally Milind Pansare)
+ See Reference [57]
+
+[122] Record Extension
+ The X.Org Group
+ See Reference [8]
+
+[123] Double Buffer Extension Specification
+ The X.Org Group
+ See Reference [8]
+
+[124] James A. Moulton
+ EFW, Inc
+ 4700 Marine Creek Parkway
+ Ft. Worth, Texas 76136
+
+[125] Low Bandwidth X Extension Specification
+ The X.Org Group
+ See Reference [8]
+
+[126] Security Extension Specification
+ The X.Org Group
+ See Reference [8]
+
+[127] Application Group Extension Specification
+ The X.Org Group
+ See Reference [8]
+
+[128] X11 Input Extension Protocol Specification
+ The X.Org Group
+ See Reference [8]
+
+[129] X Print Extension Protocol Specification
+ The X.Org Group
+ See Reference [8]
+
+[130] XINERAMA
+ The X.Org Group
+ See Reference [8]
+
+[131] Colormap Utilization Policy Extension Protocol Specification
+ The X.Org Group
+ See Reference [8]
+
+[132] Display Power Management Signaling Extension Protocol Specification
+ The X.Org Group
+ See Reference [8]
+
+[133] ISO10646 Information technology -- Universal Multiple-Octet Coded
+ Character Set (UCS), part 1
+ Markus G. Kuhn
+ University of Cambridge
+ Computer Laboratory
+ New Museums Site, Pembroke Street
+ Cambridge CB2 3QG
+ United Kingdom
+
+[134] In R6.6 X.Org is reserving the string UTF8_STRING for use as an ICCCM
+ property type and selection target. The ICCCM spec will be updated
+ in a future release to fully specify UTF8_STRING.
diff --git a/sgml/LynxOS.sgml b/sgml/LynxOS.sgml
new file mode 100644
index 0000000..052cf71
--- /dev/null
+++ b/sgml/LynxOS.sgml
@@ -0,0 +1,736 @@
+<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
+
+<article>
+
+<title>README for XFree86 3.3.2 on LynxOS
+<author>Thomas Mueller
+<date>Last modified on: 24 February 1998
+<toc>
+
+<sect>What and Where is XFree86?<p>
+XFree86 is a port of X11R6.3 that supports several versions of
+Intel-based Unix. It is derived from X386 1.2, which was the X server
+distributed with X11R5. This release consists of many new features
+and performance improvements as well as many bug fixes. The release
+is available as source patches against the X Consortium X11R6.3 code, as
+well as binary distributions for many architectures.
+
+See the Copyright Notice in <htmlurl url="COPYRIGHT.html"
+name="Copyright Notice">.
+
+The sources for XFree86 are available by anonymous ftp from:
+
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current"
+url="ftp://ftp.XFree86.org/pub/XFree86/current">
+
+Binaries of the 3.3.2 release for LynxOS AT are available from:
+
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/LynxOS"
+url="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/LynxOS">
+
+The binaries are built on `LynxOS 2.5.0 012797-G i386'. These binaries
+don't run on earlier LynxOS versions because of the changes made to
+the networking code in LynxOS 2.5.0. This XFree86 version has never
+been tested on LynxOS versions earlier than 2.4.0.
+
+XFree86 supports LynxOS on the AT, on the microSPARC and
+on the PowerPC platform. X servers are currently available on
+the AT and microSPARC platform. Refer to section <ref id="others"
+name="Building on microSPARC and PowerPC"> for details on XFree86
+on the non-AT platforms.
+
+If you need binaries for other platforms than the one on the
+XFree86 FTP server contact me (<htmlurl name="tmueller@sysgo.de"
+url="mailto:tmueller@sysgo.de">).
+
+Send email to <it>tmueller@sysgo.de</it> (Thomas Mueller) or
+<it>XFree86@XFree86.org</it> if you have comments or suggestions about
+this file and we'll revise it.
+
+<sect>Installing the Binaries
+<p>
+The binary distribution is composed of a number of tar archives
+which are the executables, servers, fonts, libraries, include files,
+man pages, config files, and the server link kit. The full distribution
+takes over 95MB of disk space.
+
+At minimum you need to unpack the 'required' <tt/X332*.tgz/ archives
+plus at least one server that matches your vga card. If you will be
+using the new <tt/XF86Setup/ utility you will also need the VGA16
+server. You'll need about 40Mb for the minimum required run-time
+binaries only.
+
+<descrip>
+<tag/REQUIRED:/
+ <descrip>
+ <tag/preinst.sh/ Pre-installation script
+ <tag/postinst.sh/ Post-installation script
+ <tag/extract/ XFree86 extraction utility
+ <tag/X332bin/ Clients, run-time libs, and app-defaults files
+ <tag/X332doc/ Documentation
+ <tag/X332cfg/ sample config files for xinit, xdm
+ <tag/X332fnts/ 75dpi and misc fonts
+ <tag/X332lib/ Data files required at run-time
+ <tag/X332set/ XF86Setup utility
+ <tag/X332VG16/ 16 colour VGA server (XF86Setup needs this server)
+ </descrip>
+
+ The following are required for an upgrade from XFree86 3.3.1:
+
+ <descrip>
+ <tag/UPDATE from 3.3.1:/
+ <descrip>
+ <tag/preinst.sh/ Pre-installation script
+ <tag/postinst.sh/ Post-installation script
+ <tag/extract/ XFree86 extraction utility
+ <tag/X332upd.tgz/ Changes since 3.3.1 (except the servers)
+ <tag/X332doc.tgz/ Documentation
+ <tag/X332set.tgz/ XF86Setup utility
+ <tag/X332VG16.tgz/ 16 colour VGA server (XF86Setup needs this server)
+ </descrip>
+
+ Choose at least one of the following server to match your hardware:
+
+ <descrip>
+ <tag/X3328514/ 8514/A server
+ <tag/X332AGX/ AGX server
+ <tag/X332I128/ I128 server
+ <tag/X332Ma64/ Mach 64 server
+ <tag/X332Ma32/ Mach 32 server
+ <tag/X332Ma8/ Mach 8 server
+ <tag/X332Mono/ Monochrome server
+ <tag/X332P9K/ P9000 server
+ <tag/X332S3/ S3 server
+ <tag/X332S3V/ old S3 ViRGE server (please use SVGA server)
+ <tag/X332SVGA/ SVGA server
+ <tag/X332VG16/ 16 colour VGA server (XF86Setup needs this server)
+ <tag/X332W32/ ET4000W32, ET6000 server
+ </descrip>
+
+<tag/OPTIONAL:/
+
+ <descrip>
+ <tag/X332f100/ 100dpi fonts
+ <tag/X332fcyr/ Cyrillic fonts
+ <tag/X332fnon/ Other fonts (Chinese, Japanese, Korean, Hebrew)
+ <tag/X332fscl/ Scalable fonts (Speedo and Type1)
+ <tag/X332fsrv/ Font server and config files
+ <tag/X332prog/ X header files, config files and compile-time libs
+ <tag/X332man/ Manual pages
+ <tag/X332nest/ Nested X server
+ <tag/X332prt/ X Print server
+ <tag/X332vfb/ Virtual frame buffer X server
+ <tag/X332lkit/ The X server LinkKit
+ <tag/X332ps/ PostScript version of the documentation
+ <tag/X332html/ HTML version of the documentation
+ <tag/X332jdoc/ Documentation in Japanese
+ <tag/X332jhtm/ HTML version of the documentation in Japanese
+ </descrip>
+</descrip>
+
+If this is your first time, then you can safely install all of the
+packages. As a minimal install, you'll need doc, bin, fonts lib,
+config, and one X server. If you already have a version of XFree86
+installed, <bf>MAKE A BACKUP OF</bf> <tt>/usr/X11R6</tt>
+<bf>BEFORE DOING ANYTHING ELSE</bf>. The standard installation
+procedure will overwrite your existing version of XFree86.
+Also, be sure to read the Release Notes <htmlurl url="RELNOTES.html"
+name="Release Notes"> before installing.
+
+If you plan to install XF86Setup you'll have to install
+<tt/X332prog/ as well since XF86Setup checks for the existence of
+a certain file name pattern which is satisfied only if you install
+the library files from <tt/X332prog/. This restriction will be
+fixed in future XFree86 releases for LynxOS.
+
+It may be necessary to increase the process stack limit in order to
+run XFree86 on your system. Edit <tt>/etc/startab</tt> and reboot your
+system to make the changes active before you begin the installation.
+
+Also, be sure to include <tt>/usr/X11R6/bin</tt> in your PATH
+environment variable.
+
+<sect1>Full Install
+<p>
+<enum>
+<item>You must be logged in as root to unpack the archives because
+ several executables are set-user-id. Otherwise the server may
+ abort if you unpack it as an ordinary user.
+
+ For the purposes of these installation instructions, it is assumed that
+ you have downloaded all the files to the <tt>/usr/tmp</tt> directory.
+ If you've put them in another directory, that's fine -- just replace
+ all occurrences of ``<tt>/usr/tmp</tt>'' with the name of that directory.
+
+<item>If you have about 80Mb free in the <tt>/usr</tt> partition create
+ a directory <tt>/usr/X11R6</tt> and skip to no. 3.
+ Otherwise, create a directory on another partition and sym link it into
+ <tt>/usr</tt>:
+
+<tscreen><verb>
+ # cd /usr/local
+ # mkdir X11R6
+ # ln -s /usr/local/X11R6 /usr/X11R6
+</verb></tscreen>
+
+<item>Unpack everything:
+
+ Make the installation utility executable. To do this,
+ make sure the `extract' file is in the same directory as all the X332*.tgz
+ files, and run the following from that directory:
+<tscreen><verb>
+ chmod 755 /usr/tmp/extract
+</verb></tscreen>
+
+ The installation utility ``extract'' is used to unpack the .tgz files
+ that make up the XFree86 distribution. The .tgz files are gzipped
+ tar files. However, ``tar'' in its standard form on most OSs is not
+ well-suited to the task of installing XFree86. The extract utility is
+ a modified version of GNU tar 1.12 built with the options required to
+ make it suitable for installing XFree86. The source for extract is
+ available from the same place you got the XFree86 distribution.
+
+ It is strongly recommended that you use the provided extract utility to
+ unpack the XFree86 distribution. If you choose to ignore this and use
+ something else, we don't want to hear from you if you run into problems.
+ It is also important that you do not rename the extract utility. If
+ renamed, it behaves just like the normal GNU tar.
+
+ To extract the XFree86 binaries, run the following as <bf>root</bf>:
+ If you are using bash:
+
+<tscreen><verb>
+ # cd /usr/X11R6
+ # for i in /usr/tmp/X332*.tgz; do
+ # extract $i
+ # done
+</verb></tscreen>
+
+ Else, if you are using csh:
+<tscreen><verb>
+ % cd /usr/X11R6
+ % foreach i (/usr/tmp/X332*.tgz)
+ % /usr/tmp/extract $i
+ % end
+</verb></tscreen>
+
+<item>Create a symbolic link ``<tt/X/'' that points to the server
+ that matches your video card. The <em/XF86_*/ man pages list which
+ vga chip sets are supported by each server. For example, if you
+ have an ET4000 based card you will use the XF86_SVGA server:
+
+<tscreen><verb>
+ # cd /usr/X11R6/bin; rm -f X; ln -s XF86_SVGA X
+</verb></tscreen>
+</enum>
+
+<sect1>Minimal Install
+<p>
+First do numbers 1 and 2 above. Then unpack the required archives:
+
+<tscreen><verb>
+ # cd /usr/X11R6
+ # for i in bin fnts lib cfg prog; do
+ # /usr/tmp/extract /usr/tmp/X332$i.tgz
+ # done
+</verb></tscreen>
+
+Then unpack a server archive corresponding to your vga card. The
+server man pages, <tt>X11R6/man/man1/XF86_*</tt>, list the vga chip
+sets supported by each server. For example, if you have an ET4000
+based card you will use the XF86_SVGA server:
+
+<tscreen><verb>
+ # /usr/tmp/extract /usr/tmp/X332SVGA.tgz
+ # cd /usr/X11R6/bin; rm -f X; ln -s XF86_SVGA X
+</verb></tscreen>
+
+<sect1>After either Full or Minimal Install above
+<p>
+
+Be sure to include <tt>/usr/X11R6/bin</tt> in your PATH environment
+variable. If you plan to use clients of the MetroLink X package with
+the XFree86 X server make sure to remove <tt>/usr/bin/X11/X</tt>
+file or put <tt>/usr/bin/X11</tt> after <tt>/usr/X11R6/bin</tt> in
+your PATH environment variable.
+
+If you had already configured <tt>X11R6/lib/X11/xinit/xinitrc</tt> or
+<tt>X11R6/lib/X11/xdm/*</tt> omit the <tt/xinit-config/ or
+<tt/xdm-config/ archive or unpack it separately and merge in your
+customizations.
+
+The <tt/fscl/, <tt/fcyr/ and <tt/f100/ font archives are optional and
+can be omitted if you are short on space. The optional <tt/lkit/ archive
+allows you to reconfigure and customize a X server binary.
+
+The optional <tt/prog/ archive is needed only for writing or compiling
+X applications. Before building programs check wether
+<tt>X11R6/lib/X11/config/lynx.cf</tt> has correct settings for
+OSMajorVersion, OSMinorVersion and OSTeenyVersion for your operating
+system version.
+
+Refer to section <ref id="running" name="Running XFree86"> for further
+information on necessary configuration steps before running XFree86 on
+LynxOS.
+
+<sect>Compiling the XFree86 Distribution<p>
+<sect1>Disk space requirements<p>
+Currently there is no support for shared libraries in the LynxOS
+XFree86 port. A complete binary installation along with manual pages
+will require approximately 90-100 MBytes of disk space. To compile
+the system you will need at least 230 MBytes of free disk space.
+
+<sect1>Changes to system environment (LynxOS AT)<p>
+Before compiling the XFree86 distribution you will have to make a
+few little adjustments to your system:
+
+ <descrip>
+ <tag>LynxOS AT 2.5</tag>
+ <itemize>
+ <item>Create a shell script named <tt>/lib/cpp</tt> as follows:
+ <tscreen><verb>
+ #!/bin/sh
+ /usr/lib/gcc-lib/i386-unknown-lynxos2.5/2.7-96q1/cpp \
+ -traditional "$@"
+ </verb></tscreen>
+ On other platforms than the AT the paths for the compiler support
+ programs are different. You may use
+ <tscreen><verb>
+ gcc -v
+ </verb></tscreen>
+ to find out the correct path. Set the file mode of <tt>/lib/cpp</tt> with
+ <tscreen><verb>
+ # chown root /lib/cpp
+ # chmod 755 /lib/cpp
+ </verb></tscreen>
+ <item>Modify <tt>/lib/liblynx.a</tt>. The X servers need the
+ <tt>smem_create()</tt> system call to map the frame buffer into their
+ address space. The system call is in <tt>liblynx</tt> library along
+ with other Lynx proprietary calls which (unfortunately) overlap
+ with calls in <tt>libc</tt>. To reduce confusion you should modify
+ <tt>liblynx</tt> as follows:
+ <tscreen><verb>
+ # mv /lib/liblynx.a /lib/liblynx.a.ORG
+ # mkdir /tmp/xx; cd /tmp/xx
+ # ar xv /lib/liblynx.a.ORG
+ # ar rv /lib/liblynx.a *smem*
+ # ranlib /lib/liblynx.a
+ </verb></tscreen>
+
+ </itemize>
+ <tag>LynxOS AT 2.4</tag>
+ <itemize>
+ <item>Use the CYGNUS GNU-C Compiler to build XFree86. With LynxOS
+ 2.4.0 you must execute the shell script <tt>/CYGNUS.bash</tt> to
+ apply the necessary changes to your environment.
+ <item>Create a shell script named <tt>/lib/cpp</tt> as follows:
+ <tscreen><verb>
+ #!/bin/sh
+ /cygnus/94q4-lynxos-x86/lib/gcc-lib/i386-lynx/2.6-94q4/cpp \
+ -traditional "$@"
+ </verb></tscreen>
+ It is possible that future releases use a different path for
+ the CYGNUS compiler support programs. You may use
+ <tscreen><verb>
+ gcc -v
+ </verb></tscreen>
+ to find out the correct path. Set the file mode of <tt>/lib/cpp</tt> with
+ <tscreen><verb>
+ # chown root /lib/cpp
+ # chmod 755 /lib/cpp
+ </verb></tscreen>
+ </itemize>
+ <tag>LynxOS AT 2.3</tag>
+ This has actually not been tested, but the steps for described
+ for 2.4 should apply to 2.3 as well.
+ <tag>LynxOS AT 2.2.1</tag>
+ This has actually never been tested, be prepared that the build will
+ fail somewhere!
+ <itemize>
+ <item>Create a shell script named <tt>/lib/cpp</tt> as follows:
+ <tscreen><verb>
+ #!/bin/sh
+ /usr/local/lib/gcc-cpp -traditional "$@"
+ </verb></tscreen>
+ <item>The loader /bin/ld of LynxOS 2.2.1 does not support the -L option
+ which is heavily used by X11R6 makefiles. To work around this
+ problem you must install a small wrapper program which replaces
+ the original /bin/ld program. Use the following steps to install
+ it:
+ <tscreen><verb>
+ # cd xc/programs/Xserver/hw/xfree/etc
+ # cc -o ld ld-wrapper.c
+ # mv /bin/ld /bin/ld.org
+ # mv ld /bin/ld
+ # chmod 511 /bin/ld
+ # chown root /bin/ld
+ </verb></tscreen>
+ <item>Modify system header files as follows:
+ <descrip>
+ <tag><tt>/usr/include/uio.h</tt></tag> surrounded by
+ <tscreen><verb>
+ #ifndef _UIO_H
+ #define _UIO_H
+ ...
+ #endif
+ </verb></tscreen>
+ <tag><tt>/usr/include/utmp.h</tt></tag> surrounded by
+ <tscreen><verb>
+ #ifndef _UTMP_H
+ #define _UTMP_H
+ ...
+ #endif
+ </verb></tscreen>
+ <tag><tt>/usr/include/unistd.h</tt></tag> add
+ <tscreen><verb>
+ extern int read();
+ </verb></tscreen>
+ </descrip>
+ </itemize>
+ </descrip>
+
+<sect1> make World<p>
+
+ Read <htmlurl url="BUILD.html" name="Building XFree86"> before
+ trying to rebuild XFree86 from the source distribution.
+
+ Before you start compilation you must edit <tt>xc/config/cf/lynx.cf</tt> to
+ match your operating system version (defaults set up for 2.5.0). Change
+ the definitions of OSMajorVersion, OSMinorVersion and OSTeenyVersion
+ accordingly.
+
+ You may now issue a
+
+ <tscreen><verb>
+ make World
+ </verb></tscreen>
+
+ to compile XFree86. After a few hours (and hopefully a successful
+ build of the XFree86 system) you can install the software using
+
+ <tscreen><verb>
+ make install
+ </verb></tscreen>
+
+ You must be logged in as super-user (root) when you invoke `make
+ install'. Be sure to set your environment to use the same compiler
+ (LynxOS 2.3.0/2.4.0, CYGNUS GNU-C) as you did during the `make World'. To
+ install the LinkKit use
+
+ <tscreen><verb>
+ make install.linkkit
+ </verb></tscreen>
+
+ With LynxOS 2.2.1 programs will not be stripped during
+ installation. This is due to a problem with the strip program which
+ shows up when installing across file system boundaries.
+
+ Refer to section <ref id="installman" name="Installing XFree86 manual pages">
+ for manual page installation.
+
+ On LynxOS AT 2.5.0 you may encounter problems with <tt>make</tt> in
+ deeply nested subdirectories (eg core dumps, hangups). In this case
+ update to GNU make version 3.75 or higher.
+
+<sect>Running XFree86<p><label id="running">
+<sect1>System requirements<p>
+ A minimum of 16MB of memory is required to run X. If you want to run
+ real-world applications you should think of upgrading to 32MB (or more).
+
+<sect1>System tuning<p>
+<sect2>Tunable parameters<p>
+ To reasonably run XFree86 you may have to adjust a few system parameters.
+
+ On LynxOS 2.5.0 include a line
+<verb>
+ #define X_WINDOWS
+</verb>
+
+ in <tt>/sys/lynx.os/uparam.h</tt>.
+
+ For earlier versions you'll have to edit <tt>/usr/include/param.h</tt>:
+<verb>
+ Tunable Old New
+ USR_NFDS number of open files per process 20 64
+ NPROC number of tasks 50 150
+ NFILES number of open files in system 100 250
+ NINODES number of incore inodes (same value as NFILES)
+ QUANTUM clock ticks until preemption 64 20
+ CACHEBLKS number of cache memory blocks 202 >= 4096
+</verb>
+
+ The new values are those suggested by the LynxOS documentation for
+ their X Window package.
+
+<sect2>Increase number of ptys<p>
+
+ You should also increase the number of ptys to be able run a couple
+ more xterms. You may replace <tt>/sys/lynx.os/pty.cfg</tt> with
+ <tt>/usr/X11R6/lib/X11/etc/pty.cfg</tt>.
+
+<sect2>Kernel build<p>
+
+ If you plan to use PS/2 or Bus mice refer to the following section
+ before rebuilding the kernel, if not, you should rebuild the kernel
+ now:
+
+ <tscreen><verb>
+ # cd /sys/lynx.os
+ # make install
+ # reboot -N
+ </verb></tscreen>
+
+<sect1>Mouse support in 3.3.2<p>
+
+ XFree86 3.3.2 includes support for PnP mice (see also
+ <htmlurl url="mouse.html" name="Mouse Support in XFree86">). The
+ current LynxOS TTY device driver doesn't allow the necessary
+ manipulation of the RTS line and therefore the support for
+ PnP mice has been disabled for LynxOS.
+
+<sect1>Bus mouse drivers<p>
+
+ Starting with LynxOS AT 2.4.0 LynxOS includes a PS/2 mouse driver.
+ Currently this driver is not fully supported by XFree86 (you'll
+ probably have to specify a mouse type which doesn't match the
+ real mouse type and in some cases lose mouse buttons).
+ <tt>/usr/X11R6/lib/X11/etc/BM-Lynx.shar</tt> contains a LynxOS port
+ of the Linux bus mouse drivers. To install the drivers
+ unpack the shar archive
+
+ <tscreen><verb>
+ # cd /
+ # bash /usr/X11R6/lib/X11/etc/BM-Lynx.shar
+ </verb></tscreen>
+
+ and follow the notes in <tt>/BMOUSE.Readme</tt> for further installation and
+ configuration notes.
+
+ The XFree86 PS/2 mouse driver works also with MetroLink X 2.3.3.1 as
+ shipped with LynxOS AT 2.4.0 unless you have the LynxOS patch
+ 000055-00 installed.
+
+<sect1> ATC console driver and VT switching<p>
+
+ The XFree86 servers will only run with the default LynxOS console
+ driver, sorry for those of you who use the alternative vdt console
+ driver. Currently there is no support for virtual terminal switching
+ once the server has started.
+
+ You will need a free console which the X server will use for
+ keyboard input. You must disable login on at least one of the four
+ virtual terminals in <tt>/etc/ttys</tt>, e.g. <tt>/dev/atc3</tt>:
+
+ <tscreen>
+ change
+ <verb>
+ /dev/atc3:1:default:vt100at:/bin/login
+ </verb>
+ to
+ <verb>
+ /dev/atc3:0:default:vt100at:/bin/login
+ ^
+ </verb></tscreen>
+
+<sect1>X Server debug diagnostics output and other VT peculiarities<p>
+
+ The XFree86 X servers will produce a lot of diagnostics output on
+ stderr during startup. This output will be lost after the server
+ reached a certain point in its console initialization process. You
+ should redirect stdout and stderr if you want to analyze the
+ diagnostics produced by the server.
+
+ When the X server is running output made to other consoles will be
+ lost. After server shutdown the screen contents of other consoles
+ may be inconsistent with what one would expect (i.e. random).
+
+<sect>Installing XFree86 manual pages<p><label id="installman">
+
+ LynxOS uses cat-able manual pages, and because a doc preparation
+ system is definitely not a vital component of a real-time operating
+ system you must first install groff-1.09 (or newer). Starting with
+ LynxOS 2.3.0 it should compile right out of the box (or better tar archive).
+
+ XFree86 manual pages may be installed using
+
+ <tscreen><verb>
+ make install.man
+ </verb></tscreen>
+
+ The index and whatis database for the XFree86 manual pages will be
+ created automatically. If you already have a whatis database or
+ index file in the destination directories you should perform a
+ sort/uniq operation to remove duplicate entries:
+
+ <tscreen><verb>
+ for i in 1 3 5
+ do
+ rm -f /tmp/tmpfile
+ sort /usr/X11R6/man/cat$i/LIST$i | uniq > /tmp/tmpfile
+ mv /tmp/tmpfile /usr/X11R6/man/cat$i/LIST$i
+ done
+ sort /usr/X11R6/man/whatis | uniq > /tmp/tmpfile
+ mv /tmp/tmpfile /usr/X11R6/man/whatis
+ </verb></tscreen>
+
+ With LynxOS 2.3.0 you should include <tt>/usr/X11R6/man</tt> in the MANPATH
+ environment variable.
+
+ <tscreen>
+ bash: <tt>MANPATH=&dollar;MANPATH:/usr/X11R6/man</tt>
+ </tscreen>
+
+ The man command of LynxOS 2.2.1 does not support the MANPATH
+ environment variable properly. The XFree86 manual pages must be
+ copied (or linked) to the standard manual page locations
+ (<tt>/usr/man/catx</tt>) in order to be read the man command:
+
+ <tscreen><verb>
+ for i in 1 3 5
+ do
+ ln -s /usr/X11R6/man/cat$i/*.* /usr/man/cat$i
+ cat /usr/X11R6/man/cat$i/LIST$i >> /usr/man/cat$i/LIST$i
+ sort -o /usr/man/cat$i/LIST$i /usr/man/cat$i/LIST$i
+ cat /usr/X11R6/man/cat$i/whatis$i >> /usr/man/whatis
+ done
+ </verb></tscreen>
+
+<sect>Using XFree86 with Motif<p>
+
+ The Motif libraries shipped with LynxOS AT 2.3.0 and 2.4.0 can be
+ used with the XFree86 libraries. Follow the steps outlined below after
+ you have installed XFree86 and LynxOS Motif on your system.
+
+<sect1>Copy Motif files<p>
+
+ You must create symbolic links for the Motif libraries and
+ utilities in the <tt>/usr/X11R6</tt> directory tree.
+ <tscreen><verb>
+ ln -s /usr/bin/X11/uil /usr/X11R6/bin
+ ln -s /usr/lib/libUil.a /usr/X11R6/lib
+ ln -s /usr/lib/libMrm.a /usr/X11R6/lib
+ ln -s /usr/lib/libXm.a /usr/X11R6/lib
+ ln -s /usr/lib/X11/uid /usr/X11R6/lib/X11
+ ln -s /usr/include/Xm /usr/X11R6/include
+ ln -s /usr/include/Mrm /usr/X11R6/include
+ ln -s /usr/include/uil /usr/X11R6/include
+ </verb></tscreen>
+
+ The Motif imake-configuration files are part of the LynxOS X Window
+ package. They must be copied to the <tt>/usr/X11R6</tt> directory tree.
+ <tscreen><verb>
+ cp /usr/lib/X11/config/Motif.* /usr/X11R6/lib/X11/config
+ </verb></tscreen>
+
+<sect1>Motif library patch for LynxOS AT 2.3.0<p>
+
+ The XFree86 libraries are compiled with the -mposix compiler option
+ while the Motif libraries shipped with LynxOS AT 2.3.0 are not. This
+ incompatibility will cause Motif <tt>XmFileSelection</tt> widgets to be linked
+ with the wrong (i.e. POSIX) directory routines. To circumvent this
+ problem apply the following patch to the library:
+ <tscreen><verb>
+ cp /usr/lib/libXm.a /usr/X11R6/lib
+ ar x /usr/X11R6/lib/libXm.a Xmos.o
+ ar x /lib/libc.a directory.s.o
+ ld -r -o x.o Xmos.o directory.s.o
+ mv x.o Xmos.o
+ ar r /usr/X11R6/lib/libXm.a Xmos.o
+ </verb></tscreen>
+
+ This patch is not necessary for LynxOS revisions after 2.3.0.
+
+<sect1>X11R6 config file patch<p>
+
+ Edit <tt>/usr/X11R6/lib/X11/config/lynx.cf</tt> and change the definition
+ of <tt>HasMotif</tt>
+ <tscreen>
+ from
+ <verb>
+ #define HasMotif NO
+ </verb>
+ to
+ <verb>
+ #define HasMotif YES
+ </verb></tscreen>
+
+<sect1>Motif config file patch<p>
+
+ The file <tt>Motif.tmpl</tt> shipped with LynxOS Motif must be modified
+ to work with XFree86. In every reference to <tt>UnsharedLibReferences</tt>
+ the first argument must be changed
+ <tscreen>
+ from
+ <verb>
+ UnsharedLibReferences(<Something>LIB, Arg2, Arg3)
+ </verb>
+ to
+ <verb>
+ UnsharedLibReferences(<Something>, Arg2, Arg3)
+ </verb></tscreen>
+ Be sure to apply the change to the file copied to
+ <tt>/usr/X11R6/lib/X11/config</tt>.
+
+<sect>Building on microSPARC and PowerPC<label id="others"><p>
+
+ XFree86 3.3 compiles on LynxOS microSPARC and on LynxOS PPC as well. On the
+ microSPARC there is X server support for the colour frame buffers CG3 and CG6
+ while on the PPC there is no X server available at this time. Before you
+ start the build (on versions earlier than 2.5.0) you must create a symbolic
+ link from the CYGNUS gcc to a file named <tt>cc</tt> somewhere in a
+ directory included in your PATH environment variable.
+
+<sect1>Console driver patch for microSPARC<p>
+
+ Before building on the microSPARC you should install the patch for the console
+ driver supplied in <tt>xc/programs/Xserver/hw/sunLynx/patch.Console</tt>.
+ (<tt>xc/programs/Xserver/hw/sunLynx/patch.Console-2.4.0</tt> for LynxOS
+ revisions earlier than 2.5.0).
+ The patch fixes minor problems in the original LynxOS driver and adds
+ functionalities to detect the keyboard type and control the key click.
+ To create a backup of the original driver and install the patch issue
+ the commands
+<tscreen><verb>
+ # cd /
+ # tar cf /sys/drivers/console.tar /sys/drivers/console
+ # patch -p -E < xc/programs/Xserver/hw/sunLynx/patch.Console
+ # cd /sys/drivers/console
+ # make install
+ # cd /sys/lynx.os
+ # make install
+ # reboot -a
+</verb></tscreen>
+
+ If you opt not to install the patch you must edit <tt>xc/config/cf/lynx.cf</tt>
+ and change the definition of <tt>SparcConsoleDefines</tt>
+ <tscreen>
+ from
+ <verb>
+ #define SparcConsoleDefines -DPATCHED_CONSOLE
+ </verb>
+ to
+ <verb>
+ #define SparcConsoleDefines /* -DPATCHED_CONSOLE */
+ </verb></tscreen>
+
+<sect1>Known Bug of the microSPARC server<p>
+
+ On the first start of the X server on the microSPARC you will notice that
+ the pointer follows mouse movements with a certain delay (especially if
+ you're moving the mouse real fast). You will also notice that moving
+ windows with certain window managers (eg mwm) is not working correctly.
+ These effects should go away on the next server start.
+
+ The server for monochrome cards builds properly if you enable it in
+ <tt>lynx.cf</tt> but it has never been tested (reports are welcome).
+
+<verb>
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/LynxOS.sgml,v 3.14.2.5 1998/02/26 13:59:06 dawes Exp $
+
+
+
+
+
+$Xorg: LynxOS.sgml,v 1.3 2000/08/17 19:50:55 cpqbld Exp $
+</verb>
+</article>
diff --git a/sgml/NetBSD.sgml b/sgml/NetBSD.sgml
new file mode 100644
index 0000000..e2d527b
--- /dev/null
+++ b/sgml/NetBSD.sgml
@@ -0,0 +1,601 @@
+<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
+
+<article>
+<title>README for XFree86 3.3.2 on NetBSD
+<author>Rich Murphey,
+David Dawes,
+Marc Wandschneider,
+Mark Weaver,
+Matthieu Herrb
+<Date>Last modified on: 21 February 1998
+
+<toc>
+
+
+<sect>What and Where is XFree86?
+
+<p>
+XFree86 3.3.2 is a port of X11R6.3 that supports several versions of
+Intel-based Unix. It is derived from X386 1.2, which was the X server
+distributed with X11R5. This release consists of many new features
+and performance improvements as well as many bug fixes. The release
+is available as source patches against the X Consortium X11R6.3 code, as
+well as binary distributions for many architectures.
+
+See the <htmlurl url="COPYRIGHT.html" name="Copyright Notice">.
+
+The sources for XFree86 are available by anonymous ftp from:
+
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current"
+url="ftp://ftp.XFree86.org/pub/XFree86/current">
+
+Binaries for NetBSD 1.2 and later are available from:
+
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/"
+url="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/NetBSD">
+
+A list of mirror sites is provided by
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/MIRRORS"
+url="ftp://ftp.XFree86.org/pub/XFree86/MIRRORS">
+
+<p>
+Other NetBSD versions:
+
+These binaries are not compatible with earlier NetBSD versions. If
+you're still running NetBSD 0.9, 1.0 or 1.1, you should think about
+upgrading to a newer version of NetBSD first.
+
+If you don't upgrade, you'll have to build XFree86 from the sources.
+XFree86 3.3.2 should compile cleanly under earlier versions of
+NetBSD, although this has not been tested.
+
+XFree86 3.3.2 also builds on NetBSD/sparc. See section
+<ref id="sparc" name="Building on other architectures"> for details.
+
+The client side of XFree86 also builds on NetBSD/alpha and many other
+architecture supported by NetBSD.
+
+XFree86 3.3.2 also supports NetBSD on PC98 machines.
+
+
+<sect>Bug Reports for This Document
+
+<p>
+Send email to <em/matthieu@laas.fr/ (Matthieu Herrb) or
+<em/XFree86@XFree86.org/ if you have comments or suggestions about
+this file and we'll revise it.
+
+<sect>New features in this release
+
+<p>
+<enum>
+<item>See the <htmlurl url="RELNOTES.html" name="Release Notes"> for
+non-OS dependent new features in XFree86 3.3.2.
+</enum>
+
+<sect>Installing the Binaries
+
+<p>
+Refer to section 5 of the <htmlurl url="RELNOTES.html" name="Release
+Notes"> for detailed installation instructions.
+
+
+<sect1>Installing Xdm, the display manager
+
+<p>
+The file <tt>xc/lib/Xdmcp/WrapHelp.c</tt> is not available in
+France (where the binary distribution is built) so support for
+XDM-AUTHORIZATION-1 is not included here. You'll have to get
+WrapHelp.c and rebuild xdm after having set <tt/HasXdmAuth/ in
+<tt/xf86site.def/.
+
+The file is available within the US; for
+details see <htmlurl name="ftp.x.org:/pub/R6/xdm-auth/README"
+url="ftp://ftp.x.org/pub/R6/xdm-auth/README">.
+
+To start the display manager, log in as root on the console and type:
+``<tt/xdm -nodaemon/''.
+
+You can start xdm automatically on bootup by disabling the console getty
+and adding the following code to <tt>/etc/rc.local</tt>:
+
+<tscreen><verb>
+ if [ -x /usr/X11R6/bin/xdm ]; then
+ echo -n ' xdm'; /usr/X11R6/bin/xdm
+ fi
+</verb></tscreen>
+
+To disable the console getty, change ``<bf/on/'' to ``<bf/off/'' in
+the console entry in <tt>/etc/ttys</tt>:
+
+<tscreen><verb>
+ ttyv0 "/usr/libexec/getty Pc" pc off secure
+</verb></tscreen>
+
+
+<sect>Configuring X for Your Hardware
+
+<p>
+The <tt/XF86Config/ file tells the X server what kind of monitor,
+video card and mouse you have. You <em/must/ create it to tell the
+server what specific hardware you have.
+<p>
+XFree86 3.2 introduced a new, user-friendly configuration utility
+called <bf/XF86Setup/. It has to be run as root. Refer to its
+documentation for details about its use.
+<p>
+You'll need info on your hardware:
+<itemize>
+<item>Your mouse type, baud rate and its /dev entry.
+<item>The video card's chipset (e.g. ET4000, S3, etc).
+<item>Your monitor's sync frequencies.
+</itemize>
+
+
+The recommended way to generate an <tt/XF86Config/ file is to use the
+<tt/XF86Setup/ utility. The xf86config text utility is still there
+for the (few) cases where XF86Setup can't be used. Also, there is a
+sample file installed as <tt>/usr/X11R6/lib/X11/XF86Config.eg</tt>,
+which can be used as a starting point.
+
+For details about the <tt/XF86Config/ file format, refer to the
+<em>XF86Config(5)</em> manual page.
+
+In order to protect your hardware from damage, the server will no
+longer read <tt>XF86Config</tt> files from a user's home directory,
+but requires that it be in <tt>/etc/XF86Config</tt>,
+<tt>/usr/X11R6/lib/X11/XF86Config.hostname</tt> or
+<tt>/usr/X11R6/lib/X11/XF86Config</tt>.
+
+Once you've set up a XF86Config file, you can fine tune the video
+modes with the <tt>xvidtune</tt> utility.
+
+<sect1>About mouse configuration
+
+<p>
+If your serial mouse does not work try using <tt>kermit</tt> or
+<tt>tip</tt> to connect to the mouse serial port and verify that it
+does indeed generate characters.
+<p>
+The NetBSD pms mouse driver handles PS/2 style mice as
+Busmouse. Specify the protocol <bf/busmouse/ in the mouse section of your
+<tt/XF86Config/ file if you're using a PS/2 mouse.
+<p>
+Only standard PS/2 mice are supported by this driver. Newest PS/2
+mice that send more than three bytes at a time (especially
+intellimouse, or mouseman+ with a "3D" roller) are not supported yet.
+<p>
+See <htmlurl url="mouse.html" name="README.mouse"> for general
+instruction on mouse configuration in XFree86.
+
+<sect1>Other input devices
+<p>
+XFree86 supports the dynamic loading of drivers for external
+input devices using the <tt/XInput/ extension. Currently supported
+devices are:
+<itemize>
+<item>Joystick (<tt/xf86Jstk.so/)
+<item>Wacom tablets (Wacom IV protocol only, <tt/xf86Wacom.so/)
+<item>SummaSketch tablets (<tt/xf86Summa.so/)
+<item>Elographics touchscreen (<tt/xf86Elo.so/)
+</itemize>
+
+To use a specific device, add the line
+<tscreen>
+<tt/load/ <tt/"/<em/module/<tt/"/
+</tscreen>
+in the <bf/Module/ section of <tt/XF86Config/, where <em/module/ is
+the name of the <tt/.so/ file corresponding to your device.
+You also need to set up a <bf/XInput/ section in <tt/XF86Config/.
+Refer to the <em>XF86Config(5)</em> man page for detailed
+configuration instructions.
+<p>
+You can then change the device used to drive the X pointer with the
+<em/xsetpointer(1)/ command.
+<p>
+For joystick support, you'll need to install the joystick device
+driver in the kernel. It is included in NetBSD 1.2. See
+<em/joy(4)/ for details.
+
+<sect1>Configuring PEX and XIE extensions
+<p>
+The PEX and XIE extensions are supported as external modules.
+If you want to have access to these extensions, add the following
+lines to the <bf/Module/ section of <tt/XF86Config/:
+<tscreen><verb>
+ load "pex5.so"
+ load "xie.so"
+</verb></tscreen>
+
+
+<sect>Running X
+
+<p>
+8mb of memory is a recommended minimum for running X. The server,
+window manager and an xterm take about 4 Mb of memory themselves. On
+a 4Mb system that would leave nothing left over for other applications
+like gcc that expect a few meg free. X will work with 4Mb of memory,
+but in practice compilation while running X can take 5 or 10 times as
+long due to constant paging.
+
+The easiest way for new users to start X windows is to type: ``<tt/startx
+>&amp; startx.log/''. Error messages are lost unless you redirect them
+because the server takes over the screen.
+
+To get out of X windows, type: ``<tt/exit/'' in the console xterm.
+You can customize your X by creating <tt/.xinitrc/, <tt/.xserverrc/,
+and <tt/.twmrc/ files in your home directory as described in the xinit
+and startx man pages.
+
+<sect>Kernel Support for X
+
+<p>
+To make sure X support is enabled under NetBSD, the following
+line must be in your config file in <tt>/sys/arch/i386/conf</tt>:
+
+<tscreen>
+ options XSERVER, UCONSOLE
+</tscreen>
+
+The server supports the two standard NetBSD/i386
+console drivers: pccons and pcvt. They are detected at runtime and no
+configuration of the server itself is required.
+
+<p>
+The pccons driver is the most widely tested and is the console driver
+contained in the NetBSD binary distribution's kernels.
+
+<p>
+The pcvt console driver is bundled with NetBSD. The pcvt X
+mode is compatible with the pccons driver X mode. It offers several
+virtual consoles and international keyboard support. In order to use
+this driver, change the line:
+
+<tscreen>
+ device pc0 at isa? port "IO_KBD" irq 1
+</tscreen>
+
+to
+
+<tscreen>
+ device vt0 at isa? port "IO_KBD" irq 1
+</tscreen>
+
+in your kernel config file, and rebuild and install your kernel.
+
+<p>
+When not using XKB, the server can read the actual keymap from
+the keyboard driver and use to build the X keymap. Be sure to use
+``<tt/RightAlt ModeShift/'' in <tt/XF86Config/ to have the right <bf/Alt/ key
+behave as <bf/AltGr/.
+
+<p>
+Syscons and codrv are not bundled with NetBSD. They are
+available by anonymous FTP from a number of sites. They are not
+supported by the XFree86 binary distribution anymore. You can compile
+support for them by adding -DSYSCONS_SUPPORT or -DCODRV_SUPPORT to
+<tt/XFree86ConsoleDefines/ in <tt/xf86site.def/. See the section <ref
+id="console-drivers" name="Console drivers"> for details.
+
+
+If using pccons you get the message:
+<tscreen><verb>
+> Fatal server error:
+> xf86OpenConsole: CONSOLE_X_MODE_OFF failed (Inappropriate ioctl for device)
+> Was expecting pccons driver with X support
+> Check your kernel's console driver configuration and /dev entries
+>
+</verb></tscreen>
+
+then delete <tt>/dev/ttyv0</tt>. I don't know why ``<tt/MAKEDEV/''
+move <tt>/dev/ttyqf</tt> to <tt>/dev/ttyv0</tt>. (from Hung-Chi Chu
+<em/hcchu@r350.ee.ntu.edu.tw/)
+
+
+<sect1>Aperture Driver
+<p>
+By default NetBSD 0.9C and higher include the BSD 4.4 kernel security
+feature that disable access to the <tt>/dev/mem</tt> device when in
+multi-users mode. But XFree86 servers can take advantage (or require)
+linear access to the display memory.
+
+The P9000, Mach64 and AGX servers require linear memory access, other
+accelerated servers can take advantage of it, but do not require it.
+
+There are two ways to allow XFree86 to access linear memory:
+<enum>
+<item>Disable the kernel security feature by adding
+ `option INSECURE' in the kernel configuration file and build a new
+ kernel.
+
+ On NetBSD-1.0 you have to disable kernel security by initializing
+ the ``<bf/securelevel/'' variable to <bf/-1/ in
+ <tt>/sys/kern/kern_sysctl.c</tt>, line 205. For more informations,
+ see the comments in <tt>/usr/include/sys/systm.h</tt>.
+
+<item>Install the aperture driver:
+<enum>
+<item> The first step is highly dependent from your exact operating
+system version:
+<itemize>
+<item> NetBSD 1.0, 1.1, 1.2, 1.2.1:
+ <p>
+ Add the following lines to the end of <tt>/etc/rc.local</tt>:
+<tscreen><verb>
+ KERNDIR=/usr/X11R6/lib/X11/kernel
+ if [ -f ${KERNDIR}/ap.o ]; then
+ modload -o ${KERNDIR}/ap -e ap -p ${KERNDIR}/apinstall ${KERNDIR}/ap.o
+ fi
+</verb></tscreen>
+
+<item> NetBSD 1.2D and later
+ <p>
+ Add the following line to <tt>/etc/lkm.conf</tt>:
+<tscreen><verb>
+/usr/X11R6/lib/X11/kernel/ap.o - ap /usr/X11R6/lib/X11/kernel/apinstall -
+</verb></tscreen>
+
+<item> NetBSD 1.2G, 1.3 and later
+ <p>
+ The <tt>lkm.conf</tt> format changed in 1.2G.
+ Add the following line to <tt>/etc/lkm.conf</tt>:
+<tscreen><verb>
+/usr/X11R6/lib/X11/kernel/ap.o - ap /usr/X11R6/lib/X11/kernel/apinstall - -AFTERMOUNT
+</verb></tscreen>
+</itemize>
+
+<item> Reboot your system. XFree86 will auto-detect the aperture
+ driver if available.
+</enum>
+
+ <bf/Warning:/ if you boot another kernel than <tt>/netbsd</tt> or
+ <tt>/bsd</tt>,
+ loadable kernel modules can crash your system. Always boot in
+ single user mode when you want to run another kernel.
+
+<p>
+<quote>
+ <bf/Caveat:/ the aperture driver only allows one access at a time
+ (so that the system is in the same security state once X is
+ launched). This means that if you run multiple servers on multiples
+ VT, only the first one will have linear memory access.
+ Use 'option INSECURE' if you need more that one X server at a time.
+</quote>
+
+</enum>
+
+
+<sect1>MIT-SHM
+<p>
+NetBSD 1.0 and later supports System V shared memory. If XFree86
+detects this support in your kernel, it will support the MIT-SHM
+extension.
+
+ To add support for system V shared memory to your kernel add the
+ lines:
+
+<tscreen><verb>
+ # System V-like IPC
+ options SYSVMSG
+ options SYSVSEM
+ options SYSVSHM
+</verb></tscreen>
+
+ to your kernel config file. Then from <tt>/sys/arch/i386/config</tt>, type:
+
+<tscreen><verb>
+ # rm -f ../compile/<KERNEL-NAME>/*
+ # config <KERNEL-NAME>
+ # cd ../compile/<KERNEL-NAME>
+ # make depend
+ # make
+</verb></tscreen>
+
+ Then install your new kernel and re-boot:
+
+<tscreen><verb>
+ # cp /netbsd /onetbsd
+ # cp netbsd /
+ # reboot
+</verb></tscreen>
+
+
+<sect> Rebuilding the XFree86 Distribution
+
+<p>
+The server link kit allow you to rebuild just the X server with a
+minimum amount of disk space. Just unpack it, make the appropriate
+changes to the <tt/xf86site.def/, type ``<tt>./mkmf</tt>'' and
+``<tt/make/'' to link the server. See <tt>/usr/X11R6/lib/Server/README</tt>
+for more info.
+
+See <htmlurl url="INSTALL.html" name="INSTALL"> for instructions on
+unbundling and building the source distribution.
+
+You should configure the distribution by editing
+<tt>xc/config/cf/xf86site.def</tt> before compiling. To compile the
+sources, invoke ``<tt/make World/'' in the xc directory.
+
+<sect1>Console drivers<label id="console-drivers">
+
+<p>
+XFree86 3.3.2 has a configuration option to select the console
+drivers to use in <tt/xf86site.def/:
+<itemize>
+<item> if you're using pccons put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DPCCONS_SUPPORT
+</verb></tscreen>
+<item>if you're using pcvt put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DPCVT_SUPPORT
+</verb></tscreen>
+<item>if you're using syscons put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DSYSCONS_SUPPORT
+</verb></tscreen>
+<item>if you're running codrv put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DCODRV_SUPPORT
+</verb></tscreen>
+</itemize>
+If you don't define <bf/XFree86ConsoleDefines/ in <tt/xf86site.def/ the
+pccons and pcvt drivers will be supported.
+
+<sect1>pcvt_ioctl.h file:
+
+<p>
+XFree86's defaults config includes support for the PCVT console
+driver. Unfortunately, NetBSD doesn't install the <tt/pcvt_ioctl.h/
+file in <tt>/usr/include/machine</tt>. If you want to build XFree86
+with PCVT support, execute the following command as root before
+starting <tt/make World/:
+<tscreen><verb>
+cp /usr/src/sys/arch/i386/isa/pcvt/pcvt_ioctl.h /usr/include/machine
+</verb></tscreen>
+
+If you don't have kernel sources, you can grab this file from
+ftp.netbsd.org or one of its mirrors. If you're not running PCVT, you
+can remove -DPCVT_SUPPORT from <bf/XFree86ConsoleDefines/ in
+<tt/xf86site.def/ too.
+
+If you have a full source tree, you may want to copy this file to
+<tt>/usr/src/sys/arch/i386/include</tt>, so that it gets reinstalled
+every time you run <tt/make includes/.
+
+This problem is documented in NetBSD PR&num;1391, which has not been
+handled yes.
+
+<sect1>console.h and ioctl_pc.h files:
+
+<p>
+If you want to build a server supporting codrv and you
+don't already have the corresponding header file
+<tt/ioctl_pc.h/ installed in <tt>/usr/include/machine</tt>, then
+install the copy that is supplied in
+<tt>xc/programs/Xserver/hw/xfree86/etc</tt>. If you run
+NetBSD-current you probably want to install it in
+<tt>/usr/src/sys/arch/i386/include</tt> too, so that it get
+reinstalled each time you run <tt/make includes/.
+
+If you have installed the codrv console driver, this
+file should be taken from your installed version of the driver.
+
+The <tt/console.h/ file for syscons isn't distributed with XFree86
+anymore. You should get it from the syscons distribution.
+
+<sect1>Support for shared libs under NetBSD 1.0 and later
+
+<p>
+ By default XFree86 3.3.2 builds for NetBSD with shared libraries
+ support. If you're building on 0.9 or don't want shared libraries
+ add the following line to <tt/xf86site.def/:
+
+<tscreen>
+ #define BuildBsdSharedLibs NO
+</tscreen>
+
+<sect1>Building on other architectures<label id="sparc">
+
+<p>
+XFree86 3.3.2 also compiles on NetBSD/sparc. The Sun server
+patches from Dennis Ferguson and Matthew Green have been integrated in
+<tt>xc/programs/Xserver/hw/sun</tt>. Small
+modifications to <tt/xf86site.def/ are needed:
+<itemize>
+<item>Set all variables defining the servers to build to
+<bf/NO/. (The variables controlling the Sun servers to build
+<bf/Xsun24Server/, <bf/XsunServer/ and <bf/XsunMonoServer/ are
+defined at the end of <tt/NetBSD.cf/.)
+<item>Set <bf/ServerToInstall/ to the sun server of your
+choice. (Xsun or XsunMono).
+<item>Look at other applicable options in the <htmlurl name="INSTALL document"
+url="INSTALL.html">.
+</itemize>
+
+Problems with this port should be reported to the
+<em/port-sparc@NetBSD.Org/ mailing list or directly to me
+<em/matthieu@laas.fr/ rather than to the xfree86 mailing list.
+
+<p>
+Note that the NetBSD project has now its own source tree, based on the
+XFree86 source tree, with some local modifications. You may want to
+start with this tree to rebuild from sources.
+The NetBSD xsrc source tree is available at:
+<htmlurl url="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/xsrc/"
+name="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/xsrc/">
+
+<sect>Building New X Clients
+
+<p>
+The easiest way to build a new client (X application) is to use
+<tt/xmkmf/ if an <tt/Imakefile/ is included in the sources. Type
+``<tt/xmkmf -a/'' to create the Makefiles, check the configuration if
+necessary and type ``<tt/make/''. Whenever you install additional man
+pages you should update <tt/whatis.db/ by running ``<tt>makewhatis
+/usr/X11R6/man</tt>''.
+
+To avoid the ``Virtual memory exhausted'' message from cc while
+compiling, increase the data and stack size limits (in csh type ``<tt/limit
+datasize 32M/'' and ``<tt/limit stacksize 16M/'').
+
+Note: Starting with XFree86 2.1 and NetBSD 0.9A, the symbol
+<bf/__386BSD__/ no longer gets defined either by the compiler or via the
+X config files for *BSD systems. When porting clients to *BSD
+systems, make use of the symbol <bf/BSD/ for code which is truly
+BSD-specific. The value of the symbol can be used to distinguish
+different BSD releases. For example, code specific to the Net-2 and
+later releases can use:
+
+<tscreen>
+#if (BSD >= 199103)
+</tscreen>
+
+To ensure that this symbol is correctly defined, include
+<tt>&lt;sys/param.h&gt;</tt> in the source that requires it. Note that
+the symbol <bf/CSRG_BASED/ is defined for *BSD systems in XFree86 3.1.1
+and later. This should be used to protect the inclusion of
+<tt>&lt;sys/param.h&gt;</tt>.
+
+For code that really is specific to a particular i386 BSD port, use
+<bf/__FreeBSD__/ for FreeBSD, <bf/__NetBSD__/ for NetBSD,
+<bf/__OpenBSD__/ for OpenBSD,
+<bf/__386BSD__/ for 386BSD, and <bf/__bsdi__/ for BSD/386.
+
+Another note: If you get the message:
+
+<tscreen>
+ ld.so: undefined symbol _XtCvtStringToFont
+</tscreen>
+
+at run-time, you've stumbled on a semantic weakness of the NetBSD
+dynamic linker. Applications that use libXmu also need libXt. If the
+client uses a standard <tt/Imakefile/, this dependency will probably by
+included in the Makefile automagically -- you'll not see the
+problem. Otherwise, just add ``<tt/-lXt/'' to your library list in the
+Imakefile or Makefile and relink.
+
+<sect> Thanks
+<p>
+Many thanks to:
+<itemize>
+<item><bf/Pace Willison/ for providing the initial port to 386BSD.
+<item><bf/Amancio Hasty/ for fixing cursor restoration, mouse bugs
+and many others.
+<item><bf/Christoph Robitschko/ for fixing <tt/com.c/ and thus select().
+<item><bf/Nate Williams/ for the patchkit support for X.
+<item><bf/Rod Grimes/ and <bf/Jack Velte/ of Walnut Creek Cdrom for use
+ of their machines in preparing the FreeBSD binary release.
+</itemize>
+
+<verb>
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/NetBSD.sgml,v 3.45.2.7 1998/02/26 13:59:07 dawes Exp $
+
+
+
+
+
+$Xorg: NetBSD.sgml,v 1.3 2000/08/17 19:50:56 cpqbld Exp $
+</verb>
+
+</article>
diff --git a/sgml/OpenBSD.sgml b/sgml/OpenBSD.sgml
new file mode 100644
index 0000000..37d274f
--- /dev/null
+++ b/sgml/OpenBSD.sgml
@@ -0,0 +1,488 @@
+<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
+
+<article>
+<title>README for XFree86 3.3.2 on OpenBSD
+<author>
+Matthieu Herrb
+<Date>Last modified on: 20 February 1998
+
+<toc>
+
+
+<sect>What and Where is XFree86?
+
+<p>
+XFree86 3.3.2 is a port of X11R6.3 that supports several versions of
+Intel-based Unix. It is derived from X386 1.2, which was the X server
+distributed with X11R5. This release consists of many new features
+and performance improvements as well as many bug fixes. The release
+is available as source patches against the X Consortium X11R6.3 code, as
+well as binary distributions for many architectures.
+
+See the <htmlurl url="COPYRIGHT.html" name="Copyright Notice">.
+
+The sources for XFree86 are available by anonymous ftp from:
+
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current"
+url="ftp://ftp.XFree86.org/pub/XFree86/current">
+
+Binaries for OpenBSD 2.2 are available from:
+
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/"
+url="ftp://ftp.XFree86.org/pub/XFree86/current/binaries/OpenBSD">
+
+A list of mirror sites is provided by
+<htmlurl name="ftp://ftp.XFree86.org/pub/XFree86/MIRRORS"
+url="ftp://ftp.XFree86.org/pub/XFree86/MIRRORS">
+
+<p>
+
+XFree86 3.3.2 also builds on other OpenBSD architectures. See section
+<ref id="otherarch" name="Building on other architectures"> for details.
+
+
+<sect>Bug Reports for This Document
+
+<p>
+Send email to <em/matthieu@laas.fr/ (Matthieu Herrb) or
+<em/XFree86@XFree86.org/ if you have comments or suggestions about
+this file and we'll revise it.
+
+<sect>New features in this release
+<p>
+<enum>
+<item>See the <htmlurl url="RELNOTES.html" name="Release Notes"> for
+non-OS dependent new features in XFree86 3.3.2.
+</enum>
+
+<sect>Installing the Binaries
+
+<p>
+Refer to section 5 of the <htmlurl url="RELNOTES.html" name="Release
+Notes"> for detailed installation instructions.
+
+<sect>Configuring X for Your Hardware
+
+<p>
+The <tt/XF86Config/ file tells the X server what kind of monitor,
+video card and mouse you have. You <em/must/ create it to tell the
+server what specific hardware you have.
+<p>
+XFree86 3.2 introduced a new, user-friendly configuration utility
+called <bf/XF86Setup/. It has to be run as root. Refer to its
+documentation for details about its use.
+<p>
+You'll need info on your hardware:
+<itemize>
+<item>Your mouse type, baud rate and its /dev entry.
+<item>The video card's chipset (e.g. ET4000, S3, etc).
+<item>Your monitor's sync frequencies.
+</itemize>
+
+
+The recommended way to generate an <tt/XF86Config/ file is to use the
+<tt/XF86Setup/ utility. The xf86config text utility is still there
+for the (few) cases where XF86Setup can't be used. Also, there is a
+sample file installed as <tt>/usr/X11R6/lib/X11/XF86Config.eg</tt>,
+which can be used as a starting point.
+
+For details about the <tt/XF86Config/ file format, refer to the
+<em>XF86Config(5)</em> manual page.
+
+In order to protect your hardware from damage, the server will no
+longer read <tt>XF86Config</tt> files from a user's home directory,
+but requires that it be in <tt>/etc/XF86Config</tt>,
+<tt>/usr/X11R6/lib/X11/XF86Config.hostname</tt> or
+<tt>/usr/X11R6/lib/X11/XF86Config</tt>.
+
+Once you've set up a XF86Config file, you can fine tune the video
+modes with the <tt>xvidtune</tt> utility.
+
+<sect1>About mouse configuration
+
+<p>
+If your serial mouse does not work try using <tt>kermit</tt> or
+<tt>tip</tt> to connect to the mouse serial port and verify that it
+does indeed generate characters.
+<p>
+The OpenBSD pms driver provides both "raw" and "cooked"
+(translated) modes. "raw" mode does not do protocol translation, so
+XFree86 would use the <bf>PS/2</bf> protocol for talking to the device
+in that mode. "cooked" mode is the old BusMouse translation.
+By default, the driver runs in "cooked" mode. It can be switched using
+ioctls or by opening the first minor device which is <tt>/dev/psm0</tt>.
+<p>
+Only standard PS/2 mice are supported by this driver. Newest PS/2
+mice that send more than three bytes at a time (especially
+intellimouse, or mouseman+ with a "3D" roller) are not supported yet.
+<p>
+See <htmlurl url="mouse.html" name="README.mouse"> for general
+instruction on mouse configuration in XFree86.
+
+<sect1>Other input devices
+<p>
+XFree86 supports the dynamic loading of drivers for external
+input devices using the <tt/XInput/ extension. Currently supported
+devices are:
+<itemize>
+<item>Joystick (<tt/xf86Jstk.so/)
+<item>Wacom tablets (Wacom IV protocol only, <tt/xf86Wacom.so/)
+<item>SummaSketch tablets (<tt/xf86Summa.so/)
+<item>Elographics touchscreen (<tt/xf86Elo.so/)
+</itemize>
+
+To use a specific device, add the line
+<tscreen>
+<tt/load/ <tt/"/<em/module/<tt/"/
+</tscreen>
+in the <bf/Module/ section of <tt/XF86Config/, where <em/module/ is
+the name of the <tt/.so/ file corresponding to your device.
+You also need to set up a <bf/XInput/ section in <tt/XF86Config/.
+Refer to the <em>XF86Config(5)</em> man page for detailed
+configuration instructions.
+<p>
+You can then change the device used to drive the X pointer with the
+<em/xsetpointer(1)/ command.
+<p>
+For joystick support, you'll need to enable the joystick device
+driver in the kernel. See <em/joy(4)/ for details.
+
+<sect1>Configuring PEX and XIE extensions
+<p>
+The PEX and XIE extensions are supported as external modules.
+If you want to have access to these extensions, add the following
+lines to the <bf/Module/ section of <tt/XF86Config/:
+<tscreen><verb>
+ load "pex5.so"
+ load "xie.so"
+</verb></tscreen>
+
+<sect>Installing Xdm, the display manager
+
+<p>
+The file <tt>xc/lib/Xdmcp/WrapHelp.c</tt> is not available in
+France (where the binary distribution is built) so support for
+XDM-AUTHORIZATION-1 is not included here. You'll have to get
+WrapHelp.c and rebuild xdm after having set <tt/HasXdmAuth/ in
+<tt/host.def/.
+
+The file is available within the US; for
+details see <htmlurl name="ftp.x.org:/pub/R6/xdm-auth/README"
+url="ftp://ftp.x.org/pub/R6/xdm-auth/README">.
+
+To start the display manager, log in as root on the console and type:
+``<tt/xdm -nodaemon/''.
+
+You can start xdm automatically on bootup un-commenting the following
+code in <tt>/etc/rc.local</tt>:
+
+<tscreen><verb>
+ if [ -x /usr/X11R6/bin/xdm ]; then
+ echo -n ' xdm'; /usr/X11R6/bin/xdm
+ fi
+</verb></tscreen>
+
+On the default OpenBSD 2.2 installation, you will also need to create
+the virtual console device for the X server:
+<tscreen><verb>
+cd /dev
+ ./MAKEDEV ttyC5
+</verb></tscreen>
+
+It's also better to specify explicitly the virtual console to be used
+by the X server. If you're experimenting keyboards lockup with xdm, in
+<tt>/usr/X11R6/lib/X11/xdm/Xservers</tt>, replace the line:
+<tscreen><verb>
+:0 local /usr/X11R6/bin/X
+</verb></tscreen>
+by:
+<tscreen><verb>
+:0 local /usr/X11R6/bin/X vt06
+</verb></tscreen>
+
+<sect>Running X
+
+<p>
+8mb of memory is a recommended minimum for running X. The server,
+window manager and an xterm take about 4 Mb of memory themselves. On
+a 4Mb system that would leave nothing left over for other applications
+like gcc that expect a few meg free. X will work with 4Mb of memory,
+but in practice compilation while running X can take 5 or 10 times as
+long due to constant paging.
+
+The easiest way for new users to start X windows is to type: ``<tt/startx
+>&amp; startx.log/''. Error messages are lost unless you redirect them
+because the server takes over the screen.
+
+To get out of X windows, type: ``<tt/exit/'' in the console xterm.
+You can customize your X by creating <tt/.xinitrc/, <tt/.xserverrc/,
+and <tt/.twmrc/ files in your home directory as described in the xinit
+and startx man pages.
+
+<sect>Kernel Support for X
+
+<p>
+To make sure X support is enabled under OpenBSD, the following
+line must be in your config file in <tt>/sys/arch/i386/conf</tt>:
+
+<tscreen>
+ options XSERVER
+</tscreen>
+
+The server supports the two standard OpenBSD/i386
+console drivers: pccons and pcvt. They are detected at runtime and no
+configuration of the server itself is required.
+
+
+<p>
+The pcvt console driver is now the default in OpenBSD. It offers
+several virtual consoles and international keyboard support.
+
+<p>
+When not using XKB, the server can read the actual keymap from
+the keyboard driver and use to build the X keymap. Be sure to use
+``<tt/RightAlt ModeShift/'' in <tt/XF86Config/ to have the right <bf/Alt/ key
+behave as <bf/AltGr/.
+
+<p>
+Syscons and codrv are not bundled with OpenBSD. They are available by
+anonymous FTP from a number of sites. They are not supported by the
+XFree86 binary distribution anymore. You can compile support for them
+by adding -DSYSCONS_SUPPORT or -DCODRV_SUPPORT to
+<tt/XFree86ConsoleDefines/ in <tt/xf86site.def/. See the section <ref
+id="console-drivers" name="Console drivers"> for details.
+
+
+
+<sect1>Aperture Driver
+<p>
+By default OpenBSD includes the BSD 4.4 kernel security
+feature that disable access to the <tt>/dev/mem</tt> device when in
+multi-users mode. But XFree86 servers can take advantage (or require)
+linear access to the display memory.
+
+The P9000, Mach64 and AGX servers require linear memory access, other
+accelerated servers can take advantage of it, but do not require it.
+Some drivers in the SVGA server require linear memory access too,
+notably the Matrox driver.
+
+There are two ways to allow XFree86 to access linear memory:
+<enum>
+<item>Disable the kernel security feature by adding
+ `option INSECURE' in the kernel configuration file and build a new
+ kernel.
+
+In OpenBSD 2.2 and later, you will also need to comment out the line
+initializing <tt/securelevel/ to 1 in <tt>/etc/rc.securelevel</tt>.
+
+
+<item>Install the aperture driver:
+<enum>
+<item> The first step is highly dependent from your exact operating
+system version:
+<itemize>
+<item> OpenBSD 2.0
+ <p>
+ Use the aperture driver from /usr/lkm:
+
+ add the following lines to the end of <tt>/etc/rc.local</tt>:
+<tscreen><verb>
+ KERNDIR=/usr/lkm
+ if [ -f ${KERNDIR}/ap.o ]; then
+ modload -o ${KERNDIR}/ap -e ap -p ${KERNDIR}/apinstall ${KERNDIR}/ap.o
+ fi
+</verb></tscreen>
+
+<item> OpenBSD 2.1, 2.2
+ <p>
+ Uncomment the lines loading the aperture driver from
+ <tt>/etc/rc.securelevel</tt>
+
+<item> OpenBSD-current
+ <p>
+ In addition to the loadable kernel module, you can now use an
+ in-kernel aperture driver. Add 'option APERTURE' to your kernel
+ configuration file, build and install the new kernel and run
+ <tt>./MAKEDEV std</tt> in <tt>/dev</tt>. Edit
+ <tt>/etc/sysctl.conf</tt> to set the variable
+ <bf>machdep.allowaperture</bf> to 1.
+</itemize>
+
+<item> Reboot your system. XFree86 will auto-detect the aperture
+ driver if available.
+</enum>
+
+ <bf/Warning:/ if you boot another kernel than <tt>/bsd</tt>,
+ loadable kernel modules can crash your system. Always boot in
+ single user mode when you want to run another kernel.
+
+<p>
+<quote>
+ <bf/Caveat:/ the aperture driver only allows one access at a time
+ (so that the system is in the same security state once X is
+ launched). This means that if you run multiple servers on multiples
+ VT, only the first one will have linear memory access.
+ Use 'option INSECURE' if you need more that one X server at a time.
+</quote>
+
+</enum>
+
+
+<sect1>MIT-SHM
+<p>
+OpenBSD supports System V shared memory. If XFree86
+detects this support in your kernel, it will support the MIT-SHM
+extension.
+
+ To add support for system V shared memory to your kernel add the
+ lines:
+
+<tscreen><verb>
+ # System V-like IPC
+ options SYSVMSG
+ options SYSVSEM
+ options SYSVSHM
+</verb></tscreen>
+
+ to your kernel config file. Then from <tt>/sys/arch/i386/config</tt>, type:
+
+<tscreen><verb>
+ # rm -f ../compile/<KERNEL-NAME>/*
+ # config <KERNEL-NAME>
+ # cd ../compile/<KERNEL-NAME>
+ # make depend
+ # make
+</verb></tscreen>
+
+ Then install your new kernel and re-boot:
+
+<tscreen><verb>
+ # cp /bsd /obsd
+ # cp bsd /
+ # reboot
+</verb></tscreen>
+
+
+<sect> Rebuilding the XFree86 Distribution
+
+<p>
+The server link kit allow you to rebuild just the X server with a
+minimum amount of disk space. Just unpack it, make the appropriate
+changes to the <tt/xf86site.def/, type ``<tt>./mkmf</tt>'' and
+``<tt/make/'' to link the server. See <tt>/usr/X11R6/lib/Server/README</tt>
+for more info.
+
+See <htmlurl url="INSTALL.html" name="INSTALL"> for instructions on
+unbundling and building the source distribution.
+
+You should configure the distribution by editing
+<tt>xc/config/cf/xf86site.def</tt> before compiling. To compile the
+sources, invoke ``<tt/make World/'' in the xc directory.
+
+<sect1>Console drivers<label id="console-drivers">
+
+<p>
+XFree86 3.3.2 has a configuration option to select the console
+drivers to use in <tt/xf86site.def/:
+<itemize>
+<item> if you're using pccons put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DPCCONS_SUPPORT
+</verb></tscreen>
+<item>if you're using pcvt put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DPCVT_SUPPORT
+</verb></tscreen>
+<item>if you're using syscons put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DSYSCONS_SUPPORT
+</verb></tscreen>
+<item>if you're running codrv put:
+<tscreen><verb>
+ #define XFree86ConsoleDefines -DCODRV_SUPPORT
+</verb></tscreen>
+</itemize>
+If you don't define <bf/XFree86ConsoleDefines/ in <tt/xf86site.def/ the
+pccons and pcvt drivers will be supported.
+
+
+<sect1>console.h and ioctl_pc.h files:
+
+<p>
+If you want to build a server supporting codrv and you
+don't already have the corresponding header file
+<tt/ioctl_pc.h/ installed in <tt>/usr/include/machine</tt>, then
+install the copy that is supplied in
+<tt>xc/programs/Xserver/hw/xfree86/etc</tt>. If you run
+OpenBSD-current you probably want to install it in
+<tt>/usr/src/sys/arch/i386/include</tt> too, so that it get
+reinstalled each time you run <tt/make includes/.
+
+If you have installed the codrv console driver, this
+file should be taken from your installed version of the driver.
+
+The <tt/console.h/ file for syscons isn't distributed with XFree86
+anymore. You should get it from the syscons distribution.
+
+
+<sect1>Building on other architectures<label id="otherarch">
+
+<p>
+XFree86 3.3.2 also compiles on other OpenBSD architectures.
+
+The XFree86 servers can also been built on OpenBSD/mips. The S3 server
+has been tested on an Acer Mips system with a S3/928 board. Contact
+Per Fogelstrom (pefo@OpenBSD.org) for details.
+
+The Xsun server patches from Dennis Ferguson and Matthew Green for
+NetBSD have been integrated in
+<tt>xc/programs/Xserver/hw/sun</tt>. The Xsun server can be built on
+the sparc and the sun3.
+
+The client side of XFree86 also builds on the alpha, pmax, amiga,
+mac68k and mvme68k architectures.
+
+Problems with this port should be reported directly to the OpenBSD
+mailing lists rather than to the xfree86 mailing list.
+
+
+<sect>Building New X Clients
+
+<p>
+The easiest way to build a new client (X application) is to use
+<tt/xmkmf/ if an <tt/Imakefile/ is included in the sources. Type
+``<tt/xmkmf -a/'' to create the Makefiles, check the configuration if
+necessary and type ``<tt/make/''. Whenever you install additional man
+pages you should update <tt/whatis.db/ by running ``<tt>makewhatis
+/usr/X11R6/man</tt>''.
+
+To avoid the ``Virtual memory exhausted'' message from cc while
+compiling, increase the data and stack size limits (in csh type ``<tt/limit
+datasize 32M/'' and ``<tt/limit stacksize 16M/'').
+
+
+<sect> Thanks
+<p>
+Many thanks to:
+<itemize>
+<item><bf/Pace Willison/ for providing the initial port to 386BSD.
+<item><bf/Amancio Hasty/ for fixing cursor restoration, mouse bugs
+and many others.
+<item><bf/Christoph Robitschko/ for fixing <tt/com.c/ and thus select().
+<item><bf/Nate Williams/ for the patchkit support for X.
+<item><bf/Rod Grimes/ and <bf/Jack Velte/ of Walnut Creek Cdrom for use
+ of their machines in preparing the FreeBSD binary release.
+</itemize>
+
+<verb>
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/OpenBSD.sgml,v 1.1.2.5 1998/02/26 13:59:07 dawes Exp $
+
+
+
+
+
+$Xorg: OpenBSD.sgml,v 1.3 2000/08/17 19:51:02 cpqbld Exp $
+</verb>
+
+</article>
+
diff --git a/sgml/README.sgml b/sgml/README.sgml
new file mode 100644
index 0000000..71bceee
--- /dev/null
+++ b/sgml/README.sgml
@@ -0,0 +1,1103 @@
+<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
+
+
+ <article>
+
+ <title>README for XFree86&tm; 3.3.2
+ <author>The XFree86 Project, Inc
+ <date>28 January 1998
+
+
+<abstract>
+
+XFree86 is a port of X11R6.3 that supports several Unix and Unix-like
+operating systems on Intel and other platforms. This release is a
+maintenance release, fixing bugs found in XFree86 3.3.1.
+The release is available
+as source patches against the X Consortium X11R6.3 code and the XFree86
+3.3.1 release. Binary distributions for many architectures are also
+available, including a binary upgrade for XFree86 3.3.1.
+
+</abstract>
+
+<toc>
+
+<sect>What's new in XFree86 3.3.2
+<p>
+
+For a summary of new features in this release, please refer to the
+<htmlurl name="RELNOTES" url="RELNOTES.html"> file.
+For a detailed list of changes, refer to the CHANGELOG file in the
+source distribution.
+
+
+<sect>Systems XFree86 has been tested on
+<p>
+
+Note: Not all systems listed here have been tested with the current release.
+
+ <DESCRIP>
+ <tag/SVR4.0:/
+ <itemize>
+ <ITEM>Esix: 4.0.3A, 4.0.4, 4.0.4.1
+ <ITEM>Microport: 2.2, 3.1, 4.1, 4.2
+ <ITEM>Dell: 2.1, 2.2, 2.2.1
+ <ITEM>UHC: 2.0, 3.6
+ <ITEM>Consensys: 1.2
+ <ITEM>MST: 4.0.3 (Load 2.07 and Load 3.02)
+ <ITEM>ISC: 4.0.3
+ <ITEM>AT&amp;T: 2.1, 4.0
+ <ITEM>NCR: MP-RAS
+ <ITEM>SunSoft: Solaris x86 2.1, 2.4, 2.5, 2.5.1, 2.6
+ <ITEM>PANIX 5.0 for AT
+ </itemize>
+
+ <tag/SVR4.2:/
+ <itemize>
+ <ITEM>Consensys
+ <ITEM>Novell UnixWare
+ </itemize>
+
+ <tag/SVR3:/
+ <itemize>
+<!--
+ <ITEM>SCO: 3.2.2, 3.2.4
+-->
+ <ITEM>ISC: 3.0, 4.0, 4.1
+ </itemize>
+
+ <tag/Others:/
+ <itemize>
+ <ITEM>NetBSD 1.0, 1.1, 1.2, 1.2.1, 1.3
+ <ITEM>OpenBSD 2.0, 2.1
+ <ITEM>FreeBSD 2.0.5, 2.1, 2.1.5, 2.1.6, 2.1.7, 2.1.7.1, 2.2,
+ 2.2.1, 2.2.2, 2.2.5, 3.0-current
+<!--
+ <ITEM>BSD/386 1.1, BSD/OS 2.0
+ <ITEM>Mach 386
+-->
+ <ITEM>Linux (Intel x86, DEC Alpha/AXP and m68k)
+<!--
+ <ITEM>Amoeba
+ <ITEM>Minix-386
+-->
+ <ITEM>LynxOS AT 2.3.0, 2.4.0, 2.5.0
+ <ITEM>LynxOS microSPARC 2.4.0, 2.5.0
+ <ITEM>LynxOS PowerPC 2.4.0, 2.5.0
+ <ITEM>OS/2 Warp 3 FP5/17/22, Warp 4 -/FP1
+ </itemize>
+
+ <tag/PC98:/
+ <itemize>
+ <ITEM>FreeBSD(98) 2.0.5, 2.1, 2.1.5, 2.1.7.1, 2.2, 2.2.1,
+ 2.2.2, 2.2.5
+ <ITEM>NetBSD/pc98 (based on NetBSD 1.2, 1.2.1)
+ <ITEM>PANIX 5.0 for 98
+ <ITEM>Linux/98
+ </itemize>
+
+ </DESCRIP>
+
+<sect> Supported video-card chip-sets
+<p>
+
+At this time, XFree86 3.3.2 supports the following chipsets:
+
+ <DESCRIP>
+ <tag/Ark Logic/
+ ARK1000PV, ARK1000VL, ARK2000PV, ARK2000MT
+ <tag/Alliance/
+ AP6422, AT24
+ <tag/ATI /
+ 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3, 68800-6,
+ 68800AX, 68800LX, 88800GX-C, 88800GX-D, 88800GX-E, 88800GX-F, 88800CX,
+ 264CT, 264ET, 264VT, 264GT, 264VT-B, 264VT3, 264GT-B, 264GT3
+ (this list includes the Mach8, Mach32, Mach64, 3D Rage, 3D Rage II and
+ 3D Rage Pro)
+ <tag/Avance Logic /
+ ALG2101, ALG2228, ALG2301, ALG2302, ALG2308, ALG2401
+ <tag/Chips &amp; Technologies /
+ 65520, 65530, 65540, 65545, 65520, 65530, 65540,
+ 65545, 65546, 65548, 65550, 65554, 65555, 68554, 64200, 64300
+ <tag/Cirrus Logic /
+ CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428,
+ CLGD5429, CLGD5430, CLGD5434, CLGD5436, CLGD5440, CLGD5446, CLGD5462,
+ CLGD5464, CLGD5465, CLGD5480, CLGD6205, CLGD6215,
+ CLGD6225, CLGD6235, CLGD6410, CLGD6412, CLGD6420,
+ CLGD6440, CLGD7541(*), CLGD7543(*), CLGD7548(*), CLGD7555(*)
+ <tag/Digital Equipment Corporation /
+ TGA
+ <tag/Compaq /
+ AVGA
+ <tag/Genoa /
+ GVGA
+ <tag/IBM /
+ 8514/A (and true clones), XGA-2
+ <tag/IIT /
+ AGX-014, AGX-015, AGX-016
+ <tag/Matrox/
+ MGA2064W (Millennium), MGA1064SG (Mystique and Mystique 220),
+ MGA2164W (Millennium II PCI and AGP)
+ <tag/MX /
+ MX68000(*), MX680010(*)
+ <tag/NCR /
+ 77C22(*), 77C22E(*), 77C22E+(*)
+ <tag/Number Nine/
+ I128 (series I and II), Revolution 3D (T2R)
+ <tag>NVidia/SGS Thomson </tag>
+ NV1, STG2000, RIVA128
+ <tag/OAK /
+ OTI067, OTI077, OTI087
+ <tag/RealTek/
+ RTG3106(*)
+ <tag/S3 /
+ 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964,
+ 86C732, 86C764, 86C765, 86C767, 86C775, 86C785, 86C868, 86C968,
+ 86C325, 86C357, 86C375, 86C375, 86C385, 86C988, 86CM65, 86C260
+ <tag/SiS/
+ 86C201, 86C202, 86C205
+ <tag/Tseng /
+ ET3000, ET4000AX, ET4000/W32, ET4000/W32i, ET4000/W32p, ET6000, ET6100
+ <tag/Trident /
+ TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000,
+ TVGA9000i, TVGA9100B, TVGA9200CXR, Cyber9320(*), TVGA9400CXi,
+ TVGA9420, TGUI9420DGi, TGUI9430DGi, TGUI9440AGi, TGUI9660XGi,
+ TGUI9680, ProVidia 9682, ProVidia 9685(*), Cyber 9382,
+ Cyber 9385, Cyber 9388, 3DImage975(PCI), 3DImage985(AGP), Cyber 9397,
+ Cyber 9520
+ <tag>Video 7/Headland Technologies </tag>
+ HT216-32(*)
+ <tag/Weitek /
+ P9000
+ <tag>Western Digital/Paradise </tag>
+ PVGA1
+ <tag/Western Digital /
+ WD90C00, WD90C10, WD90C11, WD90C24, WD90C24A, WD90C30, WD90C31,
+ WD90C33
+ </DESCRIP>
+
+(*) Note, chips marked in this way have either limited support or
+the drivers for them are not actively maintained.
+
+All of the above are supported in both 256 color, and some are supported
+in mono and 16 color modes, and some are supported an higher color depths.
+
+Refer to the chipset-specific <tt>README</tt> files (currently for
+<htmlurl name=TGA url=DECtga.html>, <htmlurl name=Matrox url=MGA.html>,
+<htmlurl name=Mach32 url=Mach32.html>, <htmlurl name=Mach64 url=Mach64.html>,
+<htmlurl name=NVidia url=NV1.html>, <htmlurl name=Oak url=Oak.html>,
+<htmlurl name=P9000 url=P9000.html>,
+<htmlurl name="S3 (except ViRGE)" url=S3.html>,
+<htmlurl name="S3 ViRGE" url=S3V.html>, <htmlurl name=SiS url=SiS.html>,
+<htmlurl name=Video7 url=Video7.html>,
+<htmlurl name="Western Digital" url=WstDig.html>,
+<htmlurl name="Tseng (W32)" url=W32.html>,
+<htmlurl name="Tseng (all)" url=tseng.html>,
+<htmlurl name="AGX/XGA" url=agx.html>, <htmlurl name=ARK url=ark.html>,
+<htmlurl name="ATI (SVGA server)" url=ati.html>,
+<htmlurl name="Chips and Technologies" url=chips.html>,
+<htmlurl name=Cirrus url=cirrus.html>,
+<htmlurl name=Trident url=trident.html>)
+for more information about using those chipsets.
+
+The monochrome server also supports generic VGA cards, using 64k of video
+memory in a single bank,
+the Hercules monochrome card,
+the Hyundai HGC1280,
+Sigma LaserView, Visa and Apollo monochrome cards.
+
+The VGA16 server supports memory banking with the ET4000, Trident, ATI,
+NCR, OAK and Cirrus 6420 chipsets allowing virtual display sizes up to
+about 1600x1200 (with 1MB of video memory). For other chipsets the display
+size is limited to approximately 800x600.
+
+
+<bf>Notes:</bf>
+ The Diamond SpeedStar 24 (and possibly some SpeedStar+) boards are
+ NOT supported, even though they use the ET4000.
+
+ The Weitek 9100 and 9130 chipsets are not supported (these are used on
+ the Diamond Viper Pro and Viper SE boards).
+ Most other Diamond boards
+ will work with this release of XFree86. Diamond is actively
+ supporting The XFree86 Project, Inc.
+
+ 3DLabs GLINT, Permedia and Permedia 2 support could unfortunately not
+ be included in XFree86 3.3.2 since there are open issues regarding the
+ documentation and whether or not they were provided to us under NDA.
+
+ S.u.S.E. will continue to make available binary only servers for these
+ cards. These servers can be freely distributed just like XFree86,
+ but sources cannot be made available. S.u.S.E. will continue to develop
+ these servers and will continue to try to donate the code back to
+ XFree86. For the time being S.u.S.E. will try to not only make Linux
+ binaries available, but binaries for other platforms as well.
+
+ Please contact <htmlurl name="x@suse.de" url="mailto:x@suse.de">
+ with further questions. You can find the
+ servers at <htmlurl name="http://www.suse.de/XSuSE/XSuSE_E.html"
+ url="http://www.suse.de/XSuSE/XSuSE_E.html">
+
+<sect>Where to get more information
+<p>
+
+Additional documentation is available in the <em>XFree86(1)</em>,
+<em>XF86Config(4/5)</em>, <em>XF86_SVGA(1)</em>,
+<em>XF86_Mono(1)</em>, <em>XF86_VGA16(1)</em>,
+<em>XF86_Accel(1)</em>, <em>XF86Setup(1)</em> and <em>xvidtune(1)</em>
+manual pages.
+In addition, several <tt>README</tt> files and tutorial documents are provided.
+These are available in <tt>/usr/X11R6/lib/X11/doc</tt> in the binary
+distributions, and in <tt>xc/programs/Xserver/hw/xfree86/doc</tt> in
+the source distribution.
+
+The files <htmlurl name="QuickStart.doc" url="QuickStart.html"> and
+<htmlurl name="README.Config" url="Config.html"> should be
+consulted for
+information on how to set up the XFree86 servers. All supplied
+documents, manual pages, and the <url name="XFree86 FAQ"
+url="http://www.XFree86.org/FAQ"> should be read before contacting the
+XFree86 team for assistance.
+
+Documentation on SVGA driver development can be found in the directory
+<tt>/usr/X11R6/lib/Server/VGADriverDoc</tt> in the binary
+distribution, and in the directory
+<tt>xc/programs/Xserver/hw/xfree86/VGADriverDoc</tt> in the source
+distribution.
+
+If you are totally at a loss, you can contact the XFree86 Support Team at
+<it/&lt;XFree86@XFree86.Org&gt;/. Before doing so, please make sure that
+you are using the latest release of XFree86. Check the versions listed
+on <htmlurl name="ftp://ftp.xfree86.org/pub/XFree86"
+url="ftp://ftp.xfree86.org/pub/XFree86">.
+
+There is a Usenet news group <htmlurl name="comp.windows.x.i386unix"
+url="news:comp.windows.x.i386unix"> that contains mostly discussions
+about XFree86 and related topics. Many questions can be answered there.
+
+
+<sect>Thanks
+<p>
+ The XFree86 Project wants to express a special thanks to
+S.u.S.E. GmbH, Fuerth, Germany, for the long and successful
+cooperation over the last few years. S.u.S.E. GmbH at one point hired our
+Core Team member and Vice President Dirk Hohndel as an employee and
+allowed him to work more or less full time on XFree86 for almost nine
+months. S.u.S.E. continues to be a significant source of input and
+help to XFree86. This manifested itself in the XSuSE series of X
+servers that have all except for the GLINT server (due to unresolved
+legal issues) been integrated into XFree86 3.3.2.
+
+<sect>Credits
+<p>
+
+XFree86 was originally put together by:
+<itemize>
+ <item>David Dawes <it>&lt;dawes@XFree86.org&gt;</it>
+ <item>Glenn Lai <it>&lt;glenn@cs.utexas.edu&gt;</it>
+ <item>Jim Tsillas <it>&lt;jtsilla@ccs.neu.edu&gt;</it>
+ <item>David Wexelblat <it>&lt;dwex@XFree86.org&gt;</it>
+</itemize>
+
+XFree86 support was integrated into the base X11R6 distribution by:
+<itemize>
+ <item>Stuart Anderson <it>&lt;anderson@metrolink.com&gt;</it>
+ <item>Doug Anson <it>&lt;danson@lgc.com&gt;</it>
+ <item>Gertjan Akkerman <it>&lt;akkerman@dutiba.twi.tudelft.nl&gt;</it>
+ <item>Mike Bernson <it>&lt;mike@mbsun.mlb.org&gt;</it>
+ <item>Robin Cutshaw <it>&lt;robin@XFree86.org&gt;</it>
+ <item>David Dawes <it>&lt;dawes@XFree86.org&gt;</it>
+ <item>Marc Evans <it>&lt;marc@XFree86.org&gt;</it>
+ <item>Pascal Haible <it>&lt;haible@izfm.uni-stuttgart.de&gt;</it>
+ <item>Matthieu Herrb <it>&lt;Matthieu.Herrb@laas.fr&gt;</it>
+ <item>Dirk Hohndel <it>&lt;hohndel@XFree86.org&gt;</it>
+ <item>David Holland <it>&lt;davidh@use.com&gt;</it>
+ <item>Alan Hourihane <it>&lt;alanh@fairlite.demon.co.uk&gt;</it>
+ <item>Jeffrey Hsu <it>&lt;hsu@soda.berkeley.edu&gt;</it>
+ <item>Glenn Lai <it>&lt;glenn@cs.utexas.edu&gt;</it>
+ <item>Ted Lemon <it>&lt;mellon@ncd.com&gt;</it>
+ <item>Rich Murphey <it>&lt;rich@XFree86.org&gt;</it>
+ <item>Hans Nasten <it>&lt;nasten@everyware.se&gt;</it>
+ <item>Mark Snitily <it>&lt;mark@sgcs.com&gt;</it>
+ <item>Randy Terbush <it>&lt;randyt@cse.unl.edu&gt;</it>
+ <item>Jon Tombs <it>&lt;tombs@XFree86.org&gt;</it>
+ <item>Kees Verstoep <it>&lt;versto@cs.vu.nl&gt;</it>
+ <item>Paul Vixie <it>&lt;paul@vix.com&gt;</it>
+ <item>Mark Weaver <it>&lt;Mark_Weaver@brown.edu&gt;</it>
+ <item>David Wexelblat <it>&lt;dwex@XFree86.org&gt;</it>
+ <item>Philip Wheatley <it>&lt;Philip.Wheatley@ColumbiaSC.NCR.COM&gt;</it>
+ <item>Thomas Wolfram <it>&lt;wolf@prz.tu-berlin.de&gt;</it>
+ <item>Orest Zborowski <it>&lt;orestz@eskimo.com&gt;</it>
+</itemize>
+
+<descrip>
+<tag/386BSD, FreeBSD, NetBSD support by: /
+<itemize>
+ <item>Rich Murphey <it>&lt;Rich@XFree86.org&gt;</it>
+</itemize>
+<tag/NetBSD, OpenBSD support by: /
+<itemize>
+ <item>Matthieu Herrb <it>&lt;Matthieu.Herrb.@laas.fr&gt;</it>
+</itemize>
+<tag/Original 386BSD port by: /
+<itemize>
+ <item>Pace Willison,
+ <item>Amancio Hasty Jr <it>&lt;hasty@netcom.com&gt;</it>
+</itemize>
+<tag/Mach 386 support by: /
+<itemize>
+ <item>Robert Baron <it>&lt;Robert.Baron@ernst.mach.cs.cmu.edu&gt;</it>
+</itemize>
+<tag/Linux support by: /
+<itemize>
+ <item>Orest Zborowski <it>&lt;orestz@eskimo.com&gt;</it>
+</itemize>
+<tag/SCO Unix support by: /
+<itemize>
+ <item>David McCullough <it>&lt;davidm@stallion.oz.au&gt;</it>
+</itemize>
+<tag/Amoeba support by: /
+<itemize>
+ <item>Kees Verstoep <it>&lt;versto@cs.vu.nl&gt;</it>
+</itemize>
+<tag/Minix-386 support by: /
+<itemize>
+ <item>Philip Homburg <it>&lt;philip@cs.vu.nl&gt;</it>
+</itemize>
+<tag>OSF/1 support by: </tag>
+<itemize>
+ <item>Marc Evans <it>&lt;Marc@XFree86.org&gt;</it>
+</itemize>
+<tag>BSD/OS support by: </tag>
+<itemize>
+ <item>Hans Nasten <it>&lt;nasten@everyware.se&gt;</it>,
+ <item>Paul Vixie <it>&lt;paul@vix.com&gt;</it>
+</itemize>
+<tag/Solaris support by: /
+<itemize>
+ <item>Doug Anson <it>&lt;danson@lgc.com&gt;</it>,
+ <item>David Holland <it>&lt;davidh@use.com&gt;</it>
+</itemize>
+<tag/ISC SVR3 support by: /
+<itemize>
+ <item>Michael Rohleder <it>&lt;michael.rohleder@stadt-frankfurt.de&gt</it>
+</itemize>
+<tag/LynxOS support by: /
+<itemize>
+ <item>Thomas Mueller <it>&lt;tmueller@sysgo.de&gt</it>
+</itemize>
+<tag>OS/2 support by: </tag>
+<itemize>
+ <item>Holger Veit <it>&lt;Holger.Veit@gmd.de&gt;</it>
+ <item>Sebastien Marineau <it>&lt;s521936@aix1.uottawa.ca&gt;</it>
+</itemize>
+<tag/Linux shared libraries by: /
+<itemize>
+ <item>Orest Zborowski <it>&lt;orestz@eskimo.com&gt;</it>,
+ <item>Dirk Hohndel <it>&lt;hohndel@XFree86.org&gt;</it>
+</itemize>
+<tag/PC98 support by: /
+<itemize>
+ <item>Toyonori Fujiura <it>&lt;toyo@ibbsal.or.jp&gt;</it>,
+ <item>Hiroyuki Aizu <it>&lt;aizu@jaist.ac.jp&gt;</it>,
+ <item>Tetsuya Kakefuda <it>&lt;kakefuda@tag.iijnet.or.jp&gt;</it>,
+ <item>Takefumi Tsukada <it>&lt;tsuka@linkt.imasy.or.jp&gt;</it>,
+ <item>H.Komatsuzaki,
+ <item>Naoki Katsurakawa <it>&lt;katsura@prc.tsukuba.ac.jp&gt;</it>,
+ <item>Shuichiro Urata <it>&lt;s-urata@nmit.tmg.nec.co.jp&gt;</it>,
+ <item>Yasuyuki Kato <it>&lt;yasuyuki@acaets0.anritsu.co.jp&gt;</it>,
+ <item>Michio Jinbo <it>&lt;karl@spnet.ne.jp&gt;</it>,
+ <item>Tatsuya Koike <it>&lt;koiket@focus.rim.or.jp&gt;</it>,
+ <item>Koichiro Suzuki <it>&lt;s-koichi@nims.nec.co.jp&gt;</it>,
+ <item>Tsuyoshi Tamaki <it>&lt;tamaki@sail.t.u-tokyo.ac.jp&gt;</it>,
+ <item>Isao Ohishi <it>&lt;ohishi@hf.rim.or.jp&gt;</it>,
+ <item>Kohji Ohishi <it>&lt;atena@njk.co.jp&gt;</it>,
+ <item>Shin'ichi Yairo <it>&lt;QZR00522@niftyserve.or.jp&gt;</it>,
+ <item>Kazuo Ito <it>&lt;ft4k-itu@asahi-net.or.jp&gt;</it>,
+ <item>Jun Sakuma <it>&lt;i931361@jks.is.tsukuba.ac.jp&gt;</it>,
+ <item>Shuichi Ueno <it>&lt;uenos@ppp.bekkoame.or.jp&gt;</it>,
+ <item>Ishida Kazuo <it>&lt;ishidakz@obp.cl.nec.co.jp&gt;</it>,
+ <item>Takaaki Nomura <it>&lt;amadeus@yk.rim.or.jp&gt;</it>,
+ <item>Tadaaki Nagao <it>&lt;nagao@cs.titech.ac.jp&gt;</it>,
+ <item>Minoru Noda <it>&lt;mnoda@cv.tottori-u.ac.jp&gt;</it>,
+ <item>Naofumi Honda <it>&lt;honda@Kururu.math.hokudai.ac.jp&gt;</it>,
+ <item>Akio Morita <it>&lt;amorita@bird.scphys.kyoto-u.ac.jp&gt;</it>,
+ <item>Takashi Sakamoto <it>&lt;sakamoto@yajima.kuis.kyoto-u.ac.jp&gt;</it>,
+ <item>Yasuhiro Ichikawa <it>&lt;cs94006@mbox.sist.ac.jp&gt;</it>,
+ <item>Kazunori Ueno <it>&lt;jagarl@creator.club.or.jp&gt;</it>,
+ <item>Yasushi Suzuki <it>&lt;suz@d2.bs1.fc.nec.co.jp&gt;</it>,
+ <item>Satoshi Kimura <it>&lt;KFB03633@niftyserve.or.jp&gt;</it>,
+ <item>Kazuhiko Uno <it>&lt;Kazuhiko.Uno@softvision.co.jp&gt;</it>,
+ <item>Tomiharu Takigami <it>&lt;takigami@elsd.mt.nec.co.jp&gt;</it>,
+ <item>Tomomi Suzuki <it>&lt;suzuki@grelot.elec.ryukoku.ac.jp&gt;</it>,
+ <item>Toshihiko Yagi <it>&lt;j2297222@ed.kagu.sut.ac.jp&gt;</it>,
+ <item>Masato Yoshida (Contributor of PW805i support)
+</itemize>
+
+<tag/Original accelerated code by: /
+<itemize>
+ <item>Kevin Martin <it>&lt;martin@cs.unc.edu&gt;</it>,
+ <item>Rik Faith <it>&lt;faith@cs.unc.edu&gt;</it>,
+ <item>Jon Tombs <it>&lt;tombs@XFree86.org&gt;</it>
+</itemize>
+<tag/XFree86 Acceleration Architecture (XAA) by: /
+<itemize>
+ <item>Harm Hanemaayer <it>&lt;H.Hanemaayer@inter.nl.net&gt;</it>,
+</itemize>
+<tag/S3 accelerated code by: /
+<itemize>
+ <item>Jon Tombs <it>&lt;tombs@XFree86.org&gt;</it>,
+ <item>Harald Koenig <it>&lt;koenig@tat.physik.uni-tuebingen.de&gt;</it>,
+ <item>David Wexelblat <it>&lt;dwex@XFree86.org&gt;</it>,
+ <item>David Dawes <it>&lt;dawes@XFree86.org&gt;</it>,
+ <item>Robin Cutshaw <it>&lt;robin@XFree86.org&gt;</it>,
+ <item>Amancio Hasty <it>&lt;hasty@netcom.com&gt;</it>,
+ <item>Norbert Distler <it>&lt;Norbert.Distler@physik.tu-muenchen.de&gt;</it>,
+ <item>Leonard N. Zubkoff <it>&lt;lnz@dandelion.com&gt;</it>,
+ <item>Bernhard Bender <it>&lt;br@elsa.mhs.compuserve.com&gt;</it>,
+ <item>Dirk Hohndel <it>&lt;hohndel@XFree86.org&gt;</it>,
+ <item>Joe Moss <it>&lt;joe@XFree86.org&gt;</it>
+</itemize>
+<tag/S3V accelerated code by: /
+<itemize>
+ <item>Harald Koenig <it>&lt;koenig@tat.physik.uni-tuebingen.de&gt;</it>,
+ <item>Kevin Brosius <it>&lt;Cobra@compuserve.com&gt;</it>
+ <item>Berry Dijk <it>&lt;berry_dijk@tasking.nl&gt;</it>
+ <item>Dirk Hohndel <it>&lt;hohndel@XFree86.org&gt;</it>
+ <item>Huver Hu <it>&lt;huver@amgraf.com&gt;</it>
+ <item>Dirk Vangestel <it>&lt;gesteld@sh.bel.alcatel.be&gt;</it>
+</itemize>
+<tag/Mach32 accelerated code by: /
+<itemize>
+ <item>Kevin Martin <it>&lt;martin@cs.unc.edu&gt;</it>,
+ <item>Rik Faith <it>&lt;faith@cs.unc.edu&gt;</it>,
+ <item>Mike Bernson <it>&lt;mike@mbsun.mlb.org&gt;</it>,
+ <item>Mark Weaver <it>&lt;Mark_Weaver@brown.edu&gt;</it>,
+ <item>Craig Groeschel <it>&lt;craig@metrolink.com&gt;</it>
+ <item>Bryan Feir <it>&lt;jenora@istar.ca&gt;</it>
+</itemize>
+<tag/Mach64 accelerated code by: /
+<itemize>
+ <item>Kevin Martin <it>&lt;martin@cs.unc.edu&gt;</it>,
+</itemize>
+<tag/Mach8, 8514 accelerated code by: /
+<itemize>
+ <item>Kevin Martin <it>&lt;martin@cs.unc.edu&gt;</it>,
+ <item>Rik Faith <it>&lt;faith@cs.unc.edu&gt;</it>,
+ <item>Tiago Gons <it>&lt;tiago@comosjn.hobby.nl&gt;</it>,
+ <item>Hans Nasten <it>&lt;nasten@everyware.se&gt;</it>,
+ <item>Scott Laird <it>&lt;scott@laird.com&gt;</it>
+</itemize>
+<tag/Cirrus accelerated code by: /
+<itemize>
+ <item>Simon Cooper <it>&lt;scooper@vizlab.rutgers.edu&gt;</it>,
+ <item>Harm Hanemaayer <it>&lt;H.Hanemaayer@inter.nl.net&gt;</it>,
+ <item>Bill Reynolds <it>&lt;bill@goshawk.lanl.gov&gt;</it>,
+ <item>Corin Anderson <it>&lt;corina@the4cs.com&gt;</it>
+</itemize>
+<tag/Western Digital accelerated code by: /
+<itemize>
+ <item>Mike Tierney <it>&lt;floyd@pepsi.eng.umd.edu&gt;</it>,
+ <item>Bill Conn <it>&lt;conn@bnr.ca&gt;</it>
+</itemize>
+<tag/P9000 accelerated code by: /
+<itemize>
+ <item>Erik Nygren <it>&lt;nygren@mit.edu&gt;</it>,
+ <item>Harry Langenbacher <it>&lt;harry@brain.jpl.nasa.gov&gt;</it>
+ <item>Chris Mason <it>&lt;mason@mail.csh.rit.edu&gt;</it>
+ <item>Henrik Harmsen <it>&lt;harmsen@eritel.se&gt;</it>
+</itemize>
+<tag/AGX accelerated code by: /
+<itemize>
+ <item>Henry Worth <it>&lt;haworth@wco.com&gt;</it>,
+</itemize>
+<tag/Number Nine I128 driver by: /
+<itemize>
+ <item>Robin Cutshaw <it>&lt;robin@XFree86.org&gt;</it>,
+</itemize>
+<tag>ET4000/W32 accelerated code by: </tag>
+<itemize>
+ <item>Glenn Lai <it>&lt;glenn@cs.utexas.edu&gt;</it>,
+</itemize>
+<tag>ET6000 SVGA and accelerated support (both based on the existing W32 code) by: </tag>
+<itemize>
+ <item>Koen Gadeyne <it>&lt;koen.gadeyne@barco.com&gt;</it>,
+</itemize>
+<tag/Oak Technologies Inc. accelerated code by: /
+<itemize>
+ <item>Jorge Delgado <it>&lt;ernar@dit.upm.es&gt;</it>,
+</itemize>
+
+<tag/16 color VGA server by: /
+<itemize>
+ <item>Gertjan Akkerman <it>&lt;akkerman@dutiba.twi.tudelft.nl&gt;</it>
+</itemize>
+
+<tag/2 color VGA and non-VGA mono servers by: /
+<itemize>
+ <item>Pascal Haible <it>&lt;haible@izfm.uni-stuttgart.de&gt;</it>
+</itemize>
+
+<tag/ATI SVGA driver by: /
+<itemize>
+ <item>Per Lindqvist <it>&lt;pgd@compuram.bbt.se&gt;</it> and Doug Evans
+ <it>&lt;dje@cygnus.com&gt;</it>.
+ <item>Ported to X11R5 by Rik Faith <it>&lt;faith@cs.unc.edu&gt;</it>.
+ <item>Rewritten by Marc Aurele La France <it>&lt;tsi@ualberta.ca&gt;</it>
+</itemize>
+<tag/WD90C24 support by:/
+<itemize>
+ <item>Brad Bosch <it>&lt;brad@lachman.com&gt;</it>
+</itemize>
+<tag/Trident SVGA driver by: /
+<itemize>
+ <item>Alan Hourihane <it>&lt;alanh@fairlite.demon.co.uk&gt;</it>
+</itemize>
+<tag/SiS SVGA driver by: /
+<itemize>
+ <item>Alan Hourihane <it>&lt;alanh@fairlite.demon.co.uk&gt;</it>
+ <item>Xavier Ducoin <it>&lt;xavier@rd.lectra.fr&gt;</it>
+</itemize>
+<tag/DEC 21030 (TGA) server by: /
+<itemize>
+ <item>Alan Hourihane <it>&lt;alanh@fairlite.demon.co.uk&gt;</it>
+ <item>Harald Koenig <it>&lt;koenig@tat.physik.uni-tuebingen.de&gt;</it>
+</itemize>
+<tag/NCR SVGA driver by: /
+<itemize>
+ <item>Stuart Anderson <it>&lt;anderson@metrolink.com&gt;</it>
+ with the permission of NCR Corporation
+</itemize>
+<tag/Cirrus SVGA driver by: /
+<itemize>
+ <item>Bill Reynolds <it>&lt;bill@goshawk.lanl.gov&gt;</it>,
+ <item>Hank Dietz <it>&lt;hankd@ecn.purdue.edu&gt;</it>,
+ <item>Simon Cooper <it>&lt;scooper@vizlab.rutgers.edu&gt;</it>,
+ <item>Harm Hanemaayer <it>&lt;H.Hanemaayer@inter.nl.net&gt;</it>,
+ <item>Corin Anderson <it>&lt;corina@the4cs.com&gt;</it>
+</itemize>
+<tag/Cirrus CL64xx driver by: /
+<itemize>
+ <item>Manfred Brands <it>&lt;mb@oceonics.nl&gt;</it>
+ <item>Randy Hendry <it>&lt;randy@sgi.com&gt;</it>
+ <item>Jeff Kirk <it>&lt;jeff@bambam.dsd.ES.COM&gt;</it>
+</itemize>
+<tag/Compaq SVGA driver by: /
+<itemize>
+ <item>Hans Oey <it>&lt;hans@mo.hobby.nl&gt;</it>
+ <item>Ming Yu <it>&lt;yum@itp.ac.cn&gt;</it>
+ <item>Gerry Toll <it>&lt;gtoll@tc.cornell.edu&gt;</it>
+</itemize>
+<tag/Oak SVGA driver by: /
+<itemize>
+ <item>Steve Goldman <it>&lt;sgoldman@encore.com&gt;</it>
+ <item>Jorge Delgado <it>&lt;ernar@dit.upm.es&gt;</it>
+</itemize>
+<tag/ARK Logic SVGA driver by: /
+<itemize>
+ <item>Harm Hanemaayer <it>&lt;H.Hanemaayer@inter.nl.net&gt;</it>
+ <item>Leon Bottou <it>&lt;bottou@laforia.ibp.fr&gt;</it>
+</itemize>
+<tag/AL2101 SVGA driver by: /
+<itemize>
+ <item>Paolo Severini <it>&lt;lendl@dist.dist.unige.it&gt;</it>
+</itemize>
+<tag/Avance Logic ``ali'' SVGA driver by: /
+<itemize>
+ <item>Ching-Tai Chiu <it>&lt;cchiu@netcom.com&gt;</it>
+</itemize>
+<tag/Chips &amp; Technologies SVGA driver by:/
+<itemize>
+ <item>Regis Cridlig <it>&lt;cridlig@dmi.ens.fr&gt;</it>
+ <item>Jon Block <it>&lt;block@frc.com&gt;</it>
+ <item>Mike Hollick <it>&lt;hollick@graphics.cis.upenn.edu&gt;</it>
+ <item>Nozomi Ytow
+ <item>Egbert Eich <it>&lt;Egbert.Eich@Physik.TH-Darmstadt.DE&gt;</it>
+ <item>David Bateman <it>&lt;dbateman@ee.uts.edu.au&gt;</it>
+ <item>Xavier Ducoin <it>&lt;xavier@rd.lectra.fr&gt;</it>
+</itemize>
+<tag/MX SVGA driver by: /
+<itemize>
+ <item>Frank Dikker <it>&lt;dikker@cs.utwente.nl&gt;</it>
+</itemize>
+<tag/Video7 SVGA driver by: /
+<itemize>
+ <item>Craig Struble <it>&lt;cstruble@acm.vt.edu&gt;</it>
+</itemize>
+<tag/RealTek SVGA driver by: /
+<itemize>
+ <item>Peter Trattler <it>&lt;peter@sbox.tu-graz.ac.at&gt;</it>
+</itemize>
+
+<tag/Apollo Mono driver by: /
+<itemize>
+ <item>Hamish Coleman <it>&lt;hamish@zot.apana.org.au&gt;</it>
+</itemize>
+
+<tag/Matrox SVGA driver by: /
+<itemize>
+ <item>Guy Desbief <it>&lt;g.desbief@aix.pacwan.net&gt;</it>
+ <item>Radoslaw Kapitan <it>&lt;kapitan@student.uci.agh.edu.pl&gt;</it>
+ <item>Andrew Vanderstock <it>&lt;vanderaj@mail2.svhm.org.au&gt;</it>
+ <item>Angsar Hockmann <it>&lt;Ansgar.Hockmann@hrz.uni-dortmund.de&gt;</it>
+ <item>Michael Will <it>&lt;Michael.Will@student.uni-tuebingen.de&gt;</it>
+ <item>Andrew Mileski <it>&lt;aem@ott.hookup.net&gt;</it>
+ <item>Stephen Pitts <it>&lt;pitts2@memphisonline.com&gt;</it>
+ <item>Dirk Hohndel <it>&lt;hohndel@XFree86.Org&gt;</it>
+ <item>Leonard N. Zubkoff <it>&lt;lnz@dandelion.com&gt;</it>
+</itemize>
+
+<tag/ViRGE SVGA driver by: /
+<itemize>
+ <item>Sebastien Marineau <it>&lt;marineau@genie.uottawa.ca&gt;</it>,
+ <item>Harald Koenig <it>&lt;koenig@tat.physik.uni-tuebingen.de&gt;</it>
+</itemize>
+
+<tag>Linux/m68k Frame Buffer Device driver by: </tag>
+<itemize>
+ <item>Martin Schaller
+ <item>Geert Uytterhoeven <it>&lt;Geert.Uytterhoeven@cs.kuleuven.ac.be&gt;</it>
+ <item>Andreas Schwab <it>&lt;schwab@issan.informatik.uni-dortmund.de&gt;</it>
+ <item>Guenther Kelleter <it>&lt;guenther@Pool.Informatik.RWTH-Aachen.de&gt;</it>
+</itemize>
+
+<tag/Tseng ET4000 and ET6000 SVGA driver by: /
+<itemize>
+ <item>[Unknown authors]
+ <item>Dirk Hohndel <it>&lt;hohndel@XFree86.Org&gt;</it>
+ <item>Koen Gadeyne <it>&lt;koen.gadeyne@barco.com&gt;</it>
+ <item>... and others
+</itemize>
+
+<tag/XFree86-VidModeExtension and xvidtune client by: /
+<itemize>
+ <item>Kaleb S. Keithley <it>&lt;kaleb@x.org&gt;</it>
+ <item>David Dawes <it>&lt;dawes@XFree86.org&gt;</it>
+ <item>Jon Tombs <it>&lt;tombs@XFree86.org&gt;</it>
+ <item>Joe Moss <it>&lt;joe@XFree86.org&gt;</it>
+</itemize>
+
+<tag/XFree86-Misc extension by: /
+<itemize>
+ <item>Joe Moss <it>&lt;joe@XFree86.org&gt;</it>
+ <item>David Dawes <it>&lt;dawes@XFree86.org&gt;</it>
+</itemize>
+
+<tag/XFree86-DGA extension by: /
+<itemize>
+ <item>Jon Tombs <it>&lt;tombs@XFree86.org&gt;</it>
+ <item>Mark Vojkovich <it>&lt;mvojkovi@ucsd.edu&gt;</it>
+ <item>Harm Hanemaayer <it>&lt;H.Hanemaayer@inter.nl.net&gt;</it>,
+ <item>David Dawes <it>&lt;dawes@XFree86.org&gt;</it>
+</itemize>
+
+<tag/XInput integration, devices and clients by: /
+<itemize>
+ <item>Frederic Lepied <it>&lt;lepied@XFree86.Org&gt;</it> (XInput integration, Wacom tablet, Joystick and extended mouse devices, xsetpointer and xsetmode clients)
+ <item>Patrick Lecoanet <it>&lt;lecoanet@cena.dgac.fr&gt;</it> (Elographics touchscreen device)
+ <item>Steven Lang <it>&lt;tiger@tyger.org&gt;</it> (Summagraphics tablet device)
+</itemize>
+
+<tag/Other contributors: /
+<itemize>
+ <item>Joerg Wunsch <it>&lt;joerg_wunsch@uriah.sax.de&gt;</it> (ET3000 banked mono),
+ <item>Thomas Dickey <it>&lt;dickey@clark.net&gt;</it>
+ (xterm "new" model ANSI colors and VT220, VT520 emulation).
+ <item>Eric Raymond <it>&lt;esr@snark.thyrsus.com&gt;</it> (new video mode documentation),
+
+ <item>and an entire horde of beta-testers around the world!
+</itemize>
+</descrip>
+
+<sect>Contact information
+<p>
+
+Ongoing development planning and support is coordinated by the XFree86
+Core Team. At this time the Core Team consists of (in alphabetical order):
+<itemize>
+ <item>Robin Cutshaw <it>&lt;robin@XFree86.org&gt;</it>
+ <item>David Dawes <it>&lt;dawes@XFree86.org&gt;</it>
+ <item>Marc Evans <it>&lt;marc@XFree86.org&gt;</it>
+ <item>Harm Hanemaayer <it>&lt;H.Hanemaayer@inter.nl.net&gt;</it>
+ <item>Dirk Hohndel <it>&lt;hohndel@XFree86.org&gt;</it>
+ <item>Harald Koenig <it>&lt;koenig@XFree86.org&gt;</it>
+ <item>Rich Murphey <it>&lt;rich@XFree86.org&gt;</it>
+ <item>Jon Tombs <it>&lt;tombs@XFree86.org&gt;</it>
+ <item>David Wexelblat <it>&lt;dwex@XFree86.org&gt;</it>
+</itemize>
+Mail sent to <it>&lt;Core@XFree86.org&gt;</it> will reach the core team.
+Please note that support questions should be sent to
+<it>&lt;XFree86@XFree86.org&gt;</it>.
+
+<sect>The XFree86 Project, Inc.
+<p>
+
+The XFree86 Project, Inc, was founded to accomplish two major goals:
+<enum>
+ <item>To provide a vehicle by which XFree86 can be represented in
+ X Consortium, Inc, the organization responsible for the
+ design, development, and release of The X Window System.
+ <item>To provide some basic funding for acquisition of facilities for
+ ongoing XFree86 development, largely to consist of new video
+ hardware and basic computing facilities.
+</enum>
+The first of these was the primary motivation. We have held discussions
+with the X Consortium on and off for many months, attempting to find an
+avenue by which our loosely-organized free software project could be
+given a voice within the X Consortium. The bylaws of the Consortium
+would not recognize such an organization. After an initial investigation
+about funding, we decided to form our own corporation to provide the
+avenue we needed to meet the requirements of the X Consortium bylaws.
+
+By doing this, we were able to be involved in the beta-test interval for
+X11R6, and have contributed the majority of XFree86 to the X11R6 and X11R6.1
+core
+release. The version of XFree86 in the initial X11R6 core is 3.0. The
+version of XFree86 in the current X11R6.3 release is 3.2.
+
+An additional benefit of this incorporation is that The XFree86 Project,
+Inc has obtained outside financial support for our work. This will
+hopefully give us the freedom to be more pro-active in obtaining new
+video hardware, and enable us to release better products more quickly,
+as we will be able to go and get what we need, and get it into the hands
+of the people who can do the work.
+
+The current Board of Directors and Officers of the The XFree86 Project,
+Inc, are:
+<itemize>
+ <item>David Dawes, President and Secretary
+ <item>Dirk Hohndel, Vice-President
+ <item>Glenn Lai, Director
+ <item>Rich Murphey, Treasurer
+ <item>Jim Tsillas, Director
+ <item>Jon Tombs, Director
+ <item>David Wexelblat, Director
+</itemize>
+Email to <it>&lt;BOD@XFree86.org&gt;</it> reaches the board of directors.
+
+Our bylaws have been crafted in such a way to ensure that XFree86 is and
+always will be a free software project. There is no personal financial
+benefit to any member of the Core Team or any other XFree86 participant.
+All assets of the corporation remain with the corporation, and, in the
+event of the dissolution of the corporation, all assets will be turned over
+to the X Consortium, Inc. It is hoped that by doing this, our corporation
+will be merely a formalization of what we have been doing in the past,
+rather than something entirely new.
+
+As of March 1997, The XFree86 Project has revised its source/binary
+access and release policy. The main points of the new policy are:
+<itemize>
+ <item>There will be no more time-limited public binary-only beta
+ releases. Instead we plan to increase the frequency of full
+ public releases to about four releases per year.
+ <item>The source access/use is divided into three categories:
+ <itemize>
+ <item>End users. End users have access to only the source
+ of full public releases. The main reason for this
+ restriction is that our development code often contains
+ code from other sources which cannot be released to the
+ public immediately.
+ <item>Active developers (members of the XFree86 ``developer team'').
+ Active developers must formally become non-voting members
+ of the XFree86 Project, and have full access to our
+ internal development source. They are permitted to make
+ time-limited binaries (in coordination with the Core Team)
+ of the servers they are actively working on available to
+ external testers for specific testing.
+ <item>Commercial members. Commercial members are non-voting
+ members of The XFree86 Project who donate
+ US&dollar;5000/year to the Project. Additionally, companies
+ who contribute significantly to the development effort of
+ XFree86 can be awarded commercial membership by the Core
+ Team on a yearly bases. Commercial members can use the
+ internal XFree86 development source for derived binary-only
+ products providing that they take full responsibility for
+ supporting the product, and don't call it ``XFree86''
+ (although the derivation of the product must be
+ acknowledged in any accompanying documentation). Binary
+ packages for the OSs we support which are simply compiled
+ from our internal source without significant added value
+ are explicitly NOT allowed.
+ </itemize>
+</itemize>
+
+Here is a list of the organizations and individuals who have provided
+sponsorship to The XFree86 Project, Inc, either by financial contribution
+or by the donation of equipment and resources. The XFree86 Project, Inc
+gratefully acknowledges these contributions, and hopes that we can do
+justice to them by continuing to release high-quality free software for
+the betterment of the Internet community as a whole.
+<itemize>
+ <item><url url="http://www.uu.net/"
+ name = "UUNET Communications Services, Inc.">
+</itemize>
+UUNET Communications Services, Inc, deserves special mention. This
+organization stepped forward and contributed the entire 1994 X Consortium
+membership fee on a moment's notice. This single act ensured XFree86's
+involvement in X11R6.
+
+<itemize>
+ <item>GUUG -- 1st German Linux Congress
+</itemize>
+Also deserving of special mention are the organizers and attendees of the
+1st German Linux Congress in Heidelberg. Significant funding to The
+XFree86 Project has been provided from its proceeds.
+
+<itemize>
+ <item><url url="http://www.aib.com/"
+ name="AIB Software Corporation">, Herndon, VA
+ <item>Roland Alder, Armin Fessler, Patrick Seemann, Martin Wunderli
+ <item>American Micro Group
+ <item><url url="http://www.atitech.ca/"
+ name="ATI Technologies Inc">
+ <item>Andrew Burgess
+ <item><url url="http://www.bsdi.com/"
+ name="Berkeley Software Design, Inc">, Falls Church, VA
+ <item><url url="http://www.caldera.com/"
+ name="Caldera, Inc.">
+ <item><url url="http://www.delix.de/"
+ name="Delix Computer GmbH">, Stuttgart, Germany
+ <item><url url="http://www.destek.net/Destek/"
+ name="The Destek Group, Inc.">, Nashua, NH (formerly Synergytics)
+ <item><url url="http://www.diamondmm.com/"
+ name="Diamond Multimedia Systems, Inc.">
+ <item><url url="http://www.digital.com/"
+ name="Digital Equipment Corporation">
+ <item><url url="http://www.elsa.de/"
+ name="Elsa GmbH">, Aachen, Germany
+ <item>Genoa Systems Corporation
+ <item><url url="http://www.helius.com/"
+ name="Helius, Inc.">
+ <item><url url="http://www.hercules.com/"
+ name="Hercules Computer Technology, Inc.">
+ <item>Ralf Hockens
+ <item>Dirk Hohndel
+ <item><url url="http://www.infomagic.com/"
+ name="InfoMagic">, Flagstaff, AZ
+ <item>Daniel Kraemer
+ <item><url url="http://www.eni.net/"
+ name="Epoch Networks, Inc.">, Irvine, CA
+ <item>Frank &amp; Paige McCormick
+ <item>Internet Labs, Inc.
+ <item>Linux International
+ <item>Linux Support Team, Erlangen, Germany
+ <item><url url="http://www.lunetix.de"
+ name="LunetIX Softfair">, Berlin, Germany
+ <item><url url="http://www.morse.net"
+ name="Morse Telecommunications">, Long Beach, NY
+ <item><url url="http://www.melcoinc.co.jp"
+ name="MELCO, Inc">
+ <item>MIRO Computer Products AG, Braunschweig, Germany
+ <item>Rich &amp; Amy Murphey
+ <item><url url="http://www.ncr.com/"
+ name="NCR Corp">
+ <item>Brett Neumeier
+ <item>Number Nine, Lexington, MA
+ <item>Kazuyuki Okamoto, Japan
+ <item><url url="http://www.ptf.com/"
+ name="Prime Time Freeware">, San Bruno, CA
+ <item><url url="http://www.redhat.com/"
+ name="Red Hat Software">, Chapel Hill, NC
+ <item>Norbert Reithinger
+ <item>SPEA Software AG, Starnberg, Germany
+ <item>STB Systems
+ <item>Clifford M Stein
+ <item>Joel Storm
+ <item><url url="http://www.suse.de"
+ name="S.u.S.E. GmbH">, Fuerth, Germany
+ <item><url url="http://www.tekelec.com"
+ name="Tekelec Airtronic GmbH">, Muenchen, Germany
+ <item>Jim Tsillas
+ <item>Trans-Ameritech Enterprises, Inc., Santa Clara, CA
+ <item>Unifix Software GmbH, Braunschweig, Germany
+ <item><url url="http://www.vix.com/"
+ name="Vixie Enterprises">, La Honda, CA
+ <item><url url="http://www.cdrom.com/"
+ name="Walnut Creek CDROM">, Concord, CA
+ <item><url url="http://www.xfree86.org/xtreme"
+ name="Xtreme s.a.s.">, Livorno, Italy
+</itemize>
+The XFree86 Project, Inc, welcomes the additional contribution of funding
+and/or equipment. Such contributions should be tax-deductible; we will
+know for certain when the lawyers get finished with the papers. For more
+information, contact The XFree86 Project, Inc, at
+<it>&lt;BOD@XFree86.org&gt;</it>
+
+<sect>Source and binary archive sites
+<p>
+
+Source patches are available to upgrade X11R6.3 PL2 from the X Consortium
+(now The Open Group)
+to XFree86 3.3.2. Binaries for many OSs are also available. The distribution
+is available from:
+
+<itemize>
+<item><htmlurl url="ftp://ftp.XFree86.org/pub/XFree86"
+ name="ftp://ftp.XFree86.org/pub/XFree86">
+</itemize>
+
+and the following mirror sites:
+<itemize>
+<item>North America:
+<itemize>
+<item><htmlurl url="ftp://ftp2.XFree86.org/pub/XFree86"
+ name="ftp://ftp2.XFree86.org/pub/XFree86">
+ (source and binaries)
+<!--
+<item><htmlurl url="ftp://ftp.bsdi.com/contrib/X11/XFree86"
+ name="ftp://ftp.bsdi.com/contrib/X11/XFree86">
+ (source and BSD/OS binaries)
+-->
+<!--
+<item><htmlurl url="ftp://XFree86.cdrom.com/pub/XFree86"
+ name="ftp://XFree86.cdrom.com/pub/XFree86">
+ (source and binaries)
+-->
+<!--
+<item><htmlurl url="ftp://ftp.gw.com/pub/unix/XFree86"
+ name="ftp://ftp.gw.com/pub/unix/XFree86">
+ (source and NetBSD binaries)
+-->
+<item><htmlurl url="ftp://ftp.infomagic.com/pub/mirrors/XFree86-current"
+ name="ftp://ftp.infomagic.com/pub/mirrors/XFree86-current">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.rge.com/pub/X/XFree86"
+ name="ftp://ftp.rge.com/pub/X/XFree86"> and
+ <htmlurl url="http://www.rge.com/pub/X/XFree86"
+ name="http://www.rge.com/pub/X/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.varesearch.com/pub/mirrors/xfree86"
+ name="ftp://ftp.varesearch.com/pub/mirrors/xfree86">
+ (source and binaries)
+<!--
+<item><htmlurl url="ftp://ftp.iastate.edu/pub/XFree86/XFree86-3.3"
+ name="ftp://ftp.iastate.edu/pub/XFree86/XFree86-3.3">
+ (source patches and NetBSD binaries)<newline>
+ (Also via AFS: /afs/iastate.edu/public/ftp/pub/XFree86/XFree86-3.3)
+-->
+<item><htmlurl url="ftp://ftp.cs.umn.edu/pub/XFree86"
+ name="ftp://ftp.cs.umn.edu/pub/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.kernel.org/pub/mirrors/xfree86"
+ name="ftp://ftp.kernel.org/pub/mirrors/xfree86">
+ (source and binaries)
+</itemize>
+
+<item>Europe:
+<itemize>
+<item><htmlurl url="ftp://fvkma.tu-graz.ac.at/pub/XFree86"
+ name="ftp://fvkma.tu-graz.ac.at/pub/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://gd.tuwien.ac.at/hci/X11/XFree86"
+ name="ftp://gd.tuwien.ac.at/hci/X11/XFree86"> and
+ <htmlurl url="http://gd.tuwien.ac.at/hci/X11/XFree86"
+ name="http://gd.tuwien.ac.at/hci/X11/XFree86">
+ (source and binaries)
+<!--
+<item><htmlurl url="ftp://sunsite.mff.cuni.cz/X11/XFree86"
+ name="ftp://sunsite.mff.cuni.cz/X11/XFree86">
+ (source and binaries)
+-->
+<item><htmlurl url="ftp://ftp.fee.vutbr.cz/pub/XFree86"
+ name="ftp://ftp.fee.vutbr.cz/pub/XFree86">
+ (source patches and binaries)
+<item><htmlurl url="ftp://ftp.gwdg.de/pub/xfree86/XFree86"
+ name="ftp://ftp.gwdg.de/pub/xfree86/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.mpi-sb.mpg.de/pub/X/mirror/ftp.xfree86.org"
+ name="ftp://ftp.mpi-sb.mpg.de/pub/X/mirror/ftp.xfree86.org">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.cs.tu-berlin.de/pub/X/XFree86"
+ name="ftp://ftp.cs.tu-berlin.de/pub/X/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.uni-erlangen.de/pub/Linux/MIRROR.xfree86"
+ name="ftp://ftp.uni-erlangen.de/pub/Linux/MIRROR.xfree86">
+ (source and Linux binaries)
+<item><htmlurl url="ftp://ftp.uni-stuttgart.de/pub/X11/Xfree86"
+ name="ftp://ftp.uni-stuttgart.de/pub/X11/Xfree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.funet.fi/pub/X11/XFree86"
+ name="ftp://ftp.funet.fi/pub/X11/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.ibp.fr/pub/X11/XFree86"
+ name="ftp://ftp.ibp.fr/pub/X11/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.unina.it/pub/XFree86"
+ name="ftp://ftp.unina.it/pub/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.pvv.unit.no/pub/XFree86"
+ name="ftp://ftp.pvv.unit.no/pub/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://sunsite.doc.ic.ac.uk/packages/XFree86"
+ name="ftp://sunsite.doc.ic.ac.uk/packages/XFree86">
+ (source and binaries)
+<!--
+<item><htmlurl url="ftp://ftp.demon.co.uk/pub/Xwindows/XFree86"
+ name="ftp.demon.co.uk:/pub/Xwindows/XFree86">
+ (source and binaries)
+-->
+</itemize>
+
+
+<!--
+<item>Middle East:
+<itemize>
+</itemize>
+-->
+
+<item>Asia/Australia:
+<itemize>
+<item><htmlurl url="ftp://x.physics.usyd.edu.au/pub/XFree86"
+ name="ftp://x.physics.usyd.edu.au/pub/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.netlab.is.tsukuba.ac.jp/pub/XFree86"
+ name="ftp://ftp.netlab.is.tsukuba.ac.jp/pub/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.iij.ad.jp/pub/X/XFree86/XFree86"
+ name="ftp://ftp.iij.ad.jp/pub/X/XFree86/XFree86">
+ (source and binaries)
+<item><htmlurl url="ftp://ftp.kreonet.re.kr/pub/Linux/xfree86"
+ name="ftp://ftp.kreonet.re.kr/pub/Linux/xfree86">
+ (source and binaries)
+<!--
+<item><htmlurl url="ftp://ftp.hk.super.net/mirror/XFree86"
+ name="ftp://ftp.hk.super.net/mirror/XFree86">
+ (source and binaries)
+-->
+<!--
+<item><htmlurl url="ftp://ftp.nectec.or.th/pub/mirrors/XFree86"
+ name="ftp://ftp.nectec.or.th/pub/mirrors/XFree86">
+ (source patches and binaries)
+-->
+<!--
+<item><htmlurl url="ftp://ftp.edu.tw/X/XFree86"
+ name="ftp://ftp.edu.tw/X/XFree86">
+ (source and binaries)
+-->
+</itemize>
+
+</itemize>
+
+
+
+<!--
+Refer to the <tt>README</tt> file under the specified directory for information on
+which files you need to get to build your distribution.
+-->
+
+Ensure that you are getting XFree86 3.3.2 - some of these sites may archive
+older releases as well. Check the <htmlurl name="RELNOTES"
+url="RELNOTES.html"> to find which files you need to take from the
+archive.
+
+<verb>
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/README.sgml,v 3.75.2.33 1998/02/28 15:49:46 robin Exp $
+
+
+
+
+
+$Xorg: README.sgml,v 1.3 2000/08/17 19:51:03 cpqbld Exp $
+</verb>
+
+</article>
diff --git a/sgml/SCO.sgml b/sgml/SCO.sgml
new file mode 100644
index 0000000..73dadfc
--- /dev/null
+++ b/sgml/SCO.sgml
@@ -0,0 +1,536 @@
+<!DOCTYPE linuxdoc PUBLIC "-//XFree86//DTD linuxdoc//EN">
+<article>
+
+<!-- TitleS information -->
+
+<title>Information for SCO Users
+<author>J. Kean Johnston (hug@netcom.com)
+<date>30 November 1996
+
+
+<!-- Table of contents -->
+<toc>
+
+<!-- Begin the document -->
+
+<sect>Binary Distribution<p>
+
+The following files are provided in the binary distribution:
+<quote>
+<descrip>
+<tag/README.SCO/ This file.
+<tag/gunzip.Z/ The GNU <tt>uncompress</tt> utility.
+
+<tag/*X312Xdoc.tgz/ The XFree86 specific documentation.
+
+<tag/X312Mono.tgz/ The Mono server
+<tag/X312VG16.tgz/ The 16 colour VGA server
+<tag/X312SVGA.tgz/ The Super VGA server
+<tag/X312S3.tgz/ The S3 server
+<tag/X3128514.tgz/ The 8514 server
+<tag/X312AGX.tgz/ The AGX server
+<tag/X312Mc32.tgz/ The Mach 32 server
+<tag/X312Mc64.tgz/ The Mach 64 server
+<tag/X312Mc8.tgz/ The Mach 8 server
+<tag/X312P9k.tgz/ The P9000 server
+<tag/X312W32.tgz/ The ET4000/W32 server
+<tag/*X312cfg.tgz/ The local configuration files for
+<tt>xdm/fs/xinit</tt>.
+<tag/*X312bin.tgz/ The <tt>bin</tt> directory, contains most executables.
+<tag/*X312lib.tgz/ The shared and unshared libraries.
+<tag/*X312fnt1.tgz/ <tt>75dpi</tt> and <tt>misc</tt> fonts.
+<tag/X312fnt2.tgz/ <tt>100dpi</tt> and <tt>Speedo</tt> fonts.
+<tag/*X312inc.tgz/ The X11 include files.
+<tag/X312man.tgz/ The formatted man pages.
+<tag/X312lkit.tgz/ The server link kit (all drivers + PEX).
+<tag/X312util.tgz/ Lots of PD utilities provided as is.
+<tag/X312pex.tgz/ All files relating to PEX including libraries
+ and header files. The LinkKit is required to
+ obtain servers capable of running PEX.
+</descrip></quote>
+
+To obtain a minimum XFree86 installation you will require the archives
+marked with a `*' above, the server binary best suited to your machine
+and optionally "<tt>gunzip.Z</tt>". All the files are compressed
+with "<tt>gzip</tt>" except
+of course "<tt>gunzip.Z</tt>" which is compressed using the
+conventional <tt>compress</tt>
+program.<p>
+
+To install the XFree86 binaries just follow these steps.
+<enum>
+<item>Obtain the files you require.<p>
+ The rest of this procedure must be done as root. If you do not run
+ the extraction as root the permissions on the files will not be
+ correct. For example, the `X' server is s-bit root and will not
+ function correctly if extracted as an ordinary user. <p>
+<item>create a directory <tt>/usr/X11R6</tt>, permissions <tt>755</tt>
+ should do nicely.
+<item>cd <tt>/usr/X11R6</tt>
+<item>extract the archives, for example:
+<verb>
+ gunzip < X312bin.tgz | tar xvpf -
+</verb>
+<item>if you have installed man pages see the later section on
+ setting up man pages.
+<item>Look through <tt>/usr/X11R6/lib/X11/doc/INSTALL</tt>,
+ especially section 2
+ on configuring and using XFree86. This should allow you to get
+ a server up and running. Before starting the server check in
+ the later section <ref id="sec-runxf86" name="Before Running XFree86">,
+ in this document, to
+ see if there are any system requirements you have to make for the
+ server to operate correctly.
+</enum>
+
+<sect>Source Distribution<p>
+
+The SCO port comes as part of the standard XFree86 distribution. Consult
+the XFree86 <tt>README</tt> for more information on the location of sources.
+
+Please note that as of XFree86 3.2, Only SCO Open Server Release 5 and
+onwards are supported. If you are using a previous version of SCO UNIX
+and you want to use XFree86, use the 3.1 series, or be prepared for build
+failures.
+
+For people who want and need to look around the source, there
+are now two files in ``<tt>xc/config/cf</tt>''. Firstly, ``<tt>sco.cf</tt>'' is
+the old original SCO configuration file, and ``<tt>sco5.cf</tt>'', which is
+the currently used configuration file.
+
+<sect>Before Running XFree86<p><label id="sec-runxf86">
+
+The SCO <tt/xterm/ terminfo description is not compatible with the <tt/xterm/
+in the R5 distribution.<p>
+
+To use a Bus/Keyboard or PS2 mouse you should configure the mouse drivers
+under SCO as above using '<tt>mkdev mouse</tt>'. You may then use the
+<tt>OsMouse</tt> option
+in your XF86Config to specify that XFree86 should use the SCO mouse drivers.
+To do this, set the <tt>Protocol</tt> to "<tt>OsMouse</tt>" in the
+Pointer section of your
+XF86Config file. You can also use "<tt>OsMouse</tt>" for your
+serial mouse,
+especially if you are having trouble getting your mouse to work using the
+XFree86 mouse drivers.<p>
+
+If you do not have the SCO TCP/IP package installed do not panic.
+XFree86 will work fine without TCP/IP but you will most likely have to do
+some or all of these things:
+<itemize>
+ <item>Do not worry about errors from the X server complaining about
+ ``/dev/socksys''. The X server is configured to run on systems with
+ and without TCP/IP. This error is just pointing out that you do
+ not have TCP/IP and that this method of connecting to the server
+ has been disabled.
+
+ <item>Do worry about errors involving ``/dev/spx'' or the ``sco''
+ connection
+ type. This means something is wrong with the streams pipes that
+ are used for connections on the local machine. First be sure that
+ your server has the ``s-bit'' set. You can do this by running this
+ command for the X server you are using:
+
+ ls -al /usr/X11R6/bin/XF86_XXXXXX
+
+ The output should contain the `s' character instead of the `x'
+ character. For example:
+ <quote><verb>
+-rwsr-xr-x 1 root bin 1074060 Jul 24 11:54 XF86_W32
+ </verb></quote>
+ is correct while:
+ <quote><verb>
+-rwxr-xr-x 1 root bin 1074060 Jul 24 11:54 XF86_W32
+ </verb></quote>
+ is not.
+
+ <item>you may have to install streams into the kernel with
+ ``mkdev streams''
+ Check the SCO Manuals for more information on this.
+
+ <item>you may have to configure some devices in /dev, check in the
+ "Trouble Shooting" section of this document for the entry which
+ comments on ``/dev/spx'' and ``Xsco''.
+
+ <item>Your streams resources may be configured too low. You should check
+ your streams parameters against the following values, if the are
+ higher then you do not need to changes them. To check these
+ values, login as root, change directory to ``/etc/conf/cf.d'' and
+ then run ``./configure''.
+
+ Once you are running configure, choose the ``Streams Data'' option
+ and step through the entries. Just press &lt;ENTER&gt; at each prompt
+ unless you want to change a value. The values to look for, and
+ their minimum values, are:
+
+ <quote><verb>
+ NSTREAM 128
+ NQUEUE 512
+ NBLK4096 4
+ NBLK2048 32
+ NBLK1024 32
+ NBLK512 32
+ NBLK256 64
+ NBLK128 256
+ NBLK64 256
+ NBLK16 256
+ NBLK4 128
+ NUMSP 128
+ </verb></quote>
+
+ You will not normally need to change any of these, if however you
+ do have to change some, configure will confirm that you want to
+ save the changes before exiting, and will give you further
+ instructions on rebuilding the unix kernel.
+</itemize>
+
+<sect>Switching Consoles<p>
+
+XFree86 uses similar console switching keys as the SCO R4 and R5
+servers. That is, <tt>Ctrl-PrntScr</tt> takes you to the next console along
+from the one X is running on. If this is the last console it will take
+you to console 1. <tt>Ctrl-Alt-FXX</tt>, where <tt>XX</tt> is a function
+key between <tt>F1</tt> and <tt>F12</tt> will switch you to the console
+number assigned to that function key. <tt>F1</tt> corresponds to
+<tt>tty01</tt> (or console 1), <tt>F2</tt> corresponds to <tt>tty02</tt>
+(or console 2) etc. Those interested in modifying the console switching
+should look in <tt>xc/programs/Xserver/hw/xfree86/common/xf86Events.c</tt>.
+
+<sect>Setting up Man Pages<p>
+
+After compiling the tree, or after installing the binary distribution you
+can get man to recognise the XFree86 man pages by adding
+<tt>/usr/X11R6/man</tt> to
+the <tt>MANPATH</tt> in <tt>/etc/default/man</tt>, the line should
+look similar to:
+<tscreen><verb>
+ MANPATH=/usr/man:/usr/X11R6/man
+</verb></tscreen>
+This allows all users to view the X man pages. You may change your own
+<tt>MANPATH</tt> environment variable if you do not want everyone to access the
+man pages.<p>
+
+By default the man pages are compressed using ``<tt>compress</tt>'' to
+conserve space. If you do not want to compress the man pages change
+<tt>CompressManPages</tt> to <tt>NO</tt> in your ``<tt>xf86site.def</tt>''
+file. Those using the binary distribution can use ``<tt>uncompress</tt>''
+to uncompress the man pages.
+
+<sect>Using SCO binaries/servers.<p>
+
+XFree86 will accept connections from SCO binaries (R3 upwards) and the
+SCO R5 server will also accept connections from XFree86 binaries. This
+means you may mix and match the two if you have ODT. For example you may
+still use the Motif window manager (mwm) if you prefer.
+
+<sect>Compiling XFree86 under Open Server 5<p>
+
+As of GCC version 2.8.0, Open Server is supported. Configure it by
+using the following:
+<tscreen><verb>
+ ./configure i486-sco3.2v5.0
+</verb></tscreen><p>
+
+There is no reason to modify gcc in any way. It compiles cleanly on
+Open Server 5.<p>
+
+SCO Open Server 5.0 is recognised automatically by XFree86. You do not
+need to specify any <tt>BOOTSTRAPCFLAGS</tt> parameters when doing a
+<tt>make World</tt>. You can ignore the warning message about
+<tt>BOOTSTRAPCFLAGS</tt> at the very beginning of a <tt>make World</tt>.
+
+<enum>
+<item>Fine tune ``<tt>site.def/xf86site.def</tt>''<p>
+Use GCC if you can. XFree should compile with the DevSys cc, but GCC has
+better optimizations, and is guaranteed to work.
+
+<item>SCO Open Server comes with Visual
+TCL, which is an old (and incompatible) version of TCL. If you want to
+use XF86Setup you will have to compile Tcl and Tk yourself. Both are
+supported well on SCO Open Server 5. Tcl 7.6 and Tk 4.2 are available
+from <tt>ftp://ftp.smli.com/pub/tcl</tt>.
+
+<item>You may want to disable dynamic loading support. Several users have
+reported trouble with this. XIE and PEX5 definitely do not work. If
+you want to experiment, try enabling this. Please report successes or
+failures to me.
+
+<item>Do <bf>not</bf> enable the <tt>HasSVR3mmapDrv</tt> as you may have done
+in older versions of SCO. Open Server 5 has full mmap() support, and
+this is used for direct frame buffer access.
+
+<item>If you know you will not ever be using COFF binaries, and you are
+short of space, set <tt>ForceNormalLib</tt> to <tt>NO</tt>. Doing this
+will cause only the ELF versions of the libraries to be built.
+``<tt>sco5.cf</tt>'' sets this to <tt>YES</tt> by default, so you must
+explicitly set it to <tt>NO</tt> in ``<tt>xf86site.def</tt>''.
+All binaries are compiled in ELF mode to reduce space.
+
+</enum>
+
+<sect>Relevant Documentation<p>
+
+Some relevant documentation for SCO Users and Developers can be found in
+the following files.
+<descrip>
+<tag/README/
+the standard XFree86 <tt>README</tt> (<tt>/usr/X11R6/lib/X11/doc</tt>)
+<tag/README.SVR3/ Although a lot of this readme is based on Interactive
+ a substantial proportion is still relevant.
+<tag>All of the VGA/Config documentation.</tag>
+ <tt>/usr/X11R6/lib/X11/doc/VideoModes.doc</tt> and the <tt>README</tt>
+ files for particular video cards.
+</descrip>
+
+<sect>Known Problems<p>
+<itemize>
+<item>After running the server you may see some strange characters in your
+input to the shell. This is due to some unprocessed scancodes and is
+of no concern. This will be fixed in a future release.<p>
+<item>Not all of the applications in <tt>/usr/X11R6/bin</tt> have
+been debugged.<p>
+</itemize>
+
+<sect>Trouble Shooting<p>
+<descrip>
+<tag/Problem:/
+<quote>
+ The server does not start up, and I cannot tell what is going
+ wrong as it did not print any error messages.
+</quote>
+<tag/Causes:/
+<quote>
+ There can be any number of causes why the server doesn't start.
+ The first step is to find out what the server has to say. To do
+ this we have to catch the error output of the server into a file.
+ This output contains a log of what the server is finding/doing as
+ it starts up. To get this output run:
+ <verb>
+ startx 2> /tmp/errs
+ </verb>
+ The output of the server will now be in "/tmp/errs". You should
+ look through this output for possible problems, and then check
+ here in this document for any references to the problems you are
+ seeing.
+</quote>
+<tag/Problem:/
+<quote>
+ The server starts up, the screen goes blank, and I never see
+ anything else. It appears that my machine has hung.
+</quote>
+<tag/Causes:/
+<quote>
+ Again this can have many causes. Most likely your XF86Config is
+ wrong. You should be able to kill the server by typing
+ Ctrl-Alt-BackSpace, if it is still running. If this does not
+ restore your display then you may have to drive your system blind.
+ Always keep another login running at the shell prompt so that you
+ may switch to that screen and run commands even if you cannot see
+ anything on the screen. Try these things, usually in the order
+ given:
+ <itemize>
+ <item>log out of the login where you started ``X'' and then
+ change consoles. This will cause the SCO screen
+ switching code to try to reset the card.
+ <item>run ``vidi v80x25'', this command will also try to set
+ your card into a viewable mode.
+ <item>shutdown the machine cleanly with ``shutdown'' and try
+ again.
+ </itemize>
+ When first trying to get XFree86 to run, be sure to use a simple
+ setup. Get 640x480 working first then move on to higher
+ resolutions. Always trap the output of the server as shown earlier.
+ Once you have the valid clocks for your video card (as provided
+ in the server output), hard code them into your XF86Config as
+ this will take some strain off your monitor during XFree86
+ startup where it usually probes the various clock frequencies.
+ Getting the ``X'' screen to appear can be a painfully slow task.
+ Be patient and read as much of the doco as you can handle. You
+ will get it to work.
+</quote>
+<tag/Problem:/
+<quote>
+<verb>
+ Fatal server error:
+ xf86MapVidMem:No class map defined for (XXXXX,XXXXX)
+</verb>
+</quote>
+<tag/Causes:/
+<quote>
+<enum>
+ <item>Your system does not have the correct
+ /etc/conf/pack.d/cn/class.h, You can confirm this by
+ editing the file and looking for the string "SVGA", if it
+ is not there then you should re-install this file from
+ the "Extended Utilities" diskettes provided with your OS.
+ If this is not possible then installing the "dmmap"
+ driver from the distribution may allow the server to
+ operate correctly.
+
+</enum>
+</quote>
+<tag/Problem:/
+<quote>
+ <tt>xf86install</tt> does not work.
+</quote>
+<tag/Causes:/
+<quote>
+ You should not be running <tt>xf86install</tt> when using the
+ XFree86 server
+ under SCO. It is used for Interactive (ISC) installations.
+</quote>
+<tag/Problem:/
+<quote>
+ The server starts but the screen is not aligned correctly or is shaky
+ and impossible to view.
+</quote>
+<tag/Causes:/
+<quote>
+ This is most likely due to an incorrect <tt>XF86Config</tt> setup.
+ Look for the
+ files <tt>README.Config</tt> <tt>VideoModes.doc</tt> (in
+ <tt>/usr/X11R6/lib/X11/doc</tt> with
+ the binary distribution). These files explains how to fix up your
+ video modes.
+</quote>
+<tag/Problem:/
+<enum>
+<item>Can only run a limited number of xterms.
+<item><tt>xterm</tt> does not work but other programs like
+<tt>xclock</tt> do work.
+</enum>
+
+<tag/Causes:/
+<quote>
+ Not enough or no pseudo ttys devices are present on your system.
+ Run "<tt>mkdev ptty</tt>" and increase the number of ptty's.
+</quote>
+<tag/Problem:/
+<quote>
+ When running curses/termcap applications in an <tt>xterm</tt>
+ the output gets
+ corrupted especially when scrolling.
+</quote>
+<tag/Causes:/
+<enum>
+<item>You are running an original 1.3 distribution of XFree86. Update
+ to the latest version (3.2 or greater).
+<item>You have resized the window and not ran "<tt>eval `resize`</tt>"
+ before using
+ your application. The SCO operating system does not support dynamic
+ resizing of xterms fully so this command must be run after resizing
+ an <tt>xterm</tt> in order for curses/termcap applications to operate
+ correctly.
+</enum>
+<tag/Problem:/
+<enum>
+<item>When starting X it dies with an error "Cannot access a needed shared
+ library".
+<item>When starting an X application is dies with the above error.
+</enum>
+<tag/Causes:/
+<enum>
+<item>You do not have the binaries installed in the correct directory.
+ Check that they are in <tt>/usr/X11R6</tt>
+<item>You have upgraded to a new binary distribution which has a new
+ version of the shared libraries which are not compatible with your
+ old binaries. To fix this you will need to re-install the old
+ shared libraries or recompile your application against the new
+ libraries.
+</enum>
+<tag/Problem:/
+<quote>
+ When linking against the SCO motif library I get an unresolved external
+ for "<tt>XtDisplayStringConversionWarning</tt>" when using gcc.
+</quote>
+<tag/Causes:/
+<quote>
+ The SCO library is compiled with limited length identifiers. To work
+ around this add the following code to your application when compiling
+ under XFree86 with gcc and SCO motif.
+<verb>
+ #ifdef SCO
+ void XtDisplayStringConversionWarnin(dpy, from, toType)
+ Display* dpy;
+ String from;
+ String toType;
+ { XtDisplayStringConversionWarning(dpy, from, toType); }
+ #endif
+</verb></quote>
+<tag/Problem:/
+<quote>
+ The server fails to run and prints out a line similar to:<p>
+<tt>XFree86: Cannot open /dev/spx for ???? listener: No such file or directory
+</tt></quote>
+<tag/Causes:/
+<quote>
+ All SCO unix installations appear to have the Streams pseudo tty driver
+ installed, but not all the devices are present.<p>
+<enum>
+<item>there should be a <tt>/etc/conf/pack.d/sp</tt> directory,
+<item><tt>/etc/conf/sdevice.d/sp</tt> should have a '<tt>Y</tt>' in it.
+<item>You need a file in <tt>/etc/conf/node.d</tt>
+ which contains something like:
+<verb>
+ clone spx c sp
+ sp X0S c 127
+ sp X0R c 126
+ sp X1S c 125
+ sp X1R c 124
+ sp X2S c 123
+ sp X2R c 122
+ sp X3S c 121
+ sp X3R c 120
+ sp X4S c 119
+ sp X4R c 118
+ sp X5S c 117
+ sp X5R c 116
+ sp X6S c 115
+ sp X6R c 114
+ sp X7S c 113
+ sp X7R c 112
+</verb>
+</enum>
+ if you don't have something like this (maybe called "Xsco") then create
+ one and that should fix your problem. As far as I can tell the streams
+ pseudo tty driver should be there.<p>
+ The simplest way to get the devices if you had to create this file is
+ to rebuild the kernel and the environment. If you don't want to do this
+ then:
+<verb>
+ touch /etc/.new_unix
+ cd /etc/conf/bin
+ ./idmkenv
+ </verb>
+ and try it out.
+</quote>
+</descrip>
+<sect>Acknowledgements<p>
+
+Thanks to the Core team for their previous and continuing help with the SCO
+work. Many thanks to <bf/Stacey Campbell/ at SCO for all the advice and
+insights provided. Thanks to SCO in general for making information available
+for XFree86 development.
+
+Thanks also to <bf/Peter Eubert/ (<em/peter.eubert@iwb.mw.tu-muenchen.dbp.de/)
+and <bf/Kent Hamilton/ (<em/kenth@stl.scscom.COM/) for
+input on compiling under 3.2.4
+systems. <bf/Larry Plona/ (<em/faxi@world.std.com/) and
+<bf/Didier Poirot/ (<em/dp@chorus.fr/)
+for their input on xdm and 3.2.4 compilation under 3.1. And of course the
+beta list for its input on everything.
+
+Special thanks to <bf/Jerry Whelan/ (<em/guru@stasi.bradley.edu/)
+for providing an
+ftp site for the binary distribution.
+
+<verb>
+$XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/SCO.sgml,v 3.16 1997/01/25 03:22:12 dawes Exp $
+
+
+
+
+
+$Xorg: SCO.sgml,v 1.3 2000/08/17 19:51:04 cpqbld Exp $
+</verb>
+</article>
diff --git a/specs/BDF/bdf.ms b/specs/BDF/bdf.ms
new file mode 100644
index 0000000..328e345
--- /dev/null
+++ b/specs/BDF/bdf.ms
@@ -0,0 +1,270 @@
+.\" $Xorg: bdf.ms,v 1.3 2000/08/17 19:42:06 cpqbld Exp $
+\&
+.sp 1
+.ce 4
+\s+1\fBBitmap Distribution Format\fP\s-1
+
+\s+1\fBVersion 2.1\fP\s-1
+
+X Consortium Standard
+
+X Version 11, Release 6.4
+.sp 3
+Copyright 1984, 1987, 1988 Adobe Systems, Inc.
+.sp 1
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation.
+.sp 3
+.na
+.LP
+.XS
+Bitmap Distribution Format
+.XE
+.LP
+The Bitmap Distribution Format (BDF), Version 2.1,
+is an X Consortium standard for font interchange,
+intended to be easily understood by both humans and computers.
+.SH
+File Format
+.LP
+Character bitmap information will be distributed in an USASCII-encoded,
+human-readable form.
+Each file is encoded in the printable characters (octal 40 through 176) of
+USASCII plus carriage return and linefeed.
+Each file consists of a sequence of variable-length lines.
+Each line is terminated either by a carriage return (octal 015)
+and linefeed (octal 012) or by just a linefeed.
+.LP
+The information about a particular family and face at one size
+and orientation will be contained in one file.
+The file begins with information pertaining to the face as a whole,
+followed by the information and bitmaps for the individual characters.
+.LP
+A font bitmap description file has the following general form,
+where each item is contained on a separate line of text in the file.
+Tokens on a line are separated by spaces.
+Keywords are in upper case, and must appear in upper case in the file.
+.IP 1. 5
+The word STARTFONT followed by a version number indicating the exact
+file format used.
+The version described here is 2.1.
+.IP 2. 5
+Lines beginning with the word COMMENT may appear anywhere between the
+STARTFONT line and the ENDFONT line.
+These lines are ignored by font compilers.
+.IP 3. 5
+The word FONT followed by either the XLFD font name (as specified in part III)
+or some private font name.
+Creators of private font name syntaxes are encouraged to register unique font
+name prefixes with the X Consortium to prevent naming conflicts.
+Note that the name continues all the way to the end of the line
+and may contain spaces.
+.IP 4. 5
+The word SIZE followed by the \fIpoint size\fP
+of the characters, the \fIx resolution\fP, and the \fIy resolution\fP
+of the device for which these characters were intended.
+.IP 5. 5
+The word FONTBOUNDINGBOX followed by the \fIwidth in x\fP,
+\fIheight in y\fP, and the x and y displacement of the lower left corner
+from the \fIorigin\fP.
+(See the examples in the next section.)
+.IP 6. 5
+Optionally, the word STARTPROPERTIES followed by the number of properties
+(\^\fIp\fP\^) that follow.
+.IP 7. 5
+Then come \fIp\fP lines consisting of a word for the \fIproperty name\fP
+followed by either an integer or string surrounded by double-quote (octal 042).
+Internal double-quote characters are indicated by using two in a row.
+.IP
+Properties named FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR
+should be provided to define the logical font-ascent and font-descent
+and the default-char for the font.
+These properties will be removed from the actual font properties
+in the binary form produced by a compiler.
+If these properties are not provided,
+a compiler may reject the font or may compute (arbitrary) values
+for these properties.
+.IP 8. 5
+The property section, if it exists, is terminated by ENDPROPERTIES.
+.IP 9. 5
+The word CHARS followed by the number of character segments (\^\fIc\fP\^)
+that follow.
+.IP 10. 5
+Then come \fIc\fP character segments of the form:
+.RS
+.IP a. 5
+The word STARTCHAR followed by up to 14 characters (no blanks) of
+descriptive \fIname\fP of the glyph.
+.IP b. 5
+The word ENCODING followed by one of the following forms:
+.RS
+.IP i. 5
+<n> \- the glyph index, that is, a positive integer representing
+the character code used to access the glyph in X requests,
+as defined by the encoded character set given by the
+CHARSET_REGISTRY-CHARSET_ENCODING font properties for XLFD conforming fonts.
+If these XLFD font properties are not defined,
+the encoding scheme is font-dependent.
+.IP ii. 5
+\-1 <n> \- equivalent to form above.
+This syntax is provided for backward compatibility with previous versions
+of this specification and is not recommended for use with new fonts.
+.IP iii. 5
+\-1 \- an unencoded glyph.
+Some font compilers may discard unencoded glyphs,
+but, in general, the glyph names may be used by font compilers
+and X servers to implement dynamic mapping of glyph repertoires
+to character encodings as seen through the X protocol.
+.RE
+.IP c. 5
+The word SWIDTH followed by the \fIscalable width\fP in x and y of character.
+Scalable widths are in units of 1/1000th of the size of the character.
+If the size of the character is \fIp\fP points,
+the width information must be scaled by \fIp\fP/1000 to get the width
+of the character in printer's points.
+This width information should be considered as a vector indicating the position
+of the next character's origin relative to the origin of this character.
+To convert the scalable width to the width in device pixels,
+multiply SWIDTH times \fIp\fP/1000 times \fIr\fP/72,
+where \fIr\fP is the device resolution in pixels per inch.
+The result is a real number giving the ideal print width in device pixels.
+The actual device width must of course be an integral number of device pixels
+and is given in the next entry.
+The SWIDTH y value should always be zero for a standard X font.
+.IP d. 5
+The word DWIDTH followed by the width in x and y of the character
+in device units.
+Like the SWIDTH,
+this width information is a vector indicating the position
+of the next character's origin relative to the origin of this character.
+Note that the DWIDTH of a given ``hand-tuned'' WYSIWYG glyph may deviate
+slightly from its ideal device-independent width given by SWIDTH in order
+to improve its typographic characteristics on a display.
+The DWIDTH y value should always be zero for a standard X font.
+.IP e. 5
+The word BBX followed by the width in x (\^\fIBBw\fP\^), \fIheight\fP in y
+(\^\fIBBh\fP\^), and x and y displacement (\^\fIBBox\fP, \fIBBoy\fP\^)
+of the lower left corner from the \fIorigin\fP of the character.
+.IP f. 5
+The optional word ATTRIBUTES followed by the attributes
+as 4 \fIhex-encoded\fP characters.
+The interpretation of these attributes is undefined in this document.
+.IP g. 5
+The word BITMAP.
+.IP h. 5
+\fIh\fP lines of \fIhex-encoded\fP bitmap,
+padded on the right with zeros to the nearest byte (that is, multiple of 8).
+.IP i. 5
+The word ENDCHAR.
+.RE
+.IP 11. 5
+The file is terminated with the word ENDFONT.
+.SH
+Metric Information
+.LP
+Figures 1 and 2 best illustrate the bitmap format and
+character metric information.
+.bp
+\&
+.sp 30
+.ce 5
+BBw = 9, BBh = 22, BBox = -2, BBoy = -6
+DWIDTH = 8 0
+SWIDTH = 355 0
+``+'' = character origin and width
+
+Figure 1: An example of a descender
+.bp
+\&
+.sp 30
+.ce 4
+BBh = 6, BBw = 4, BBox = +2, BBoy = +12
+DWIDTH = 5 0
+SWIDTH = 223 0
+
+Figure 2: An example with the origin outside the bounding box
+.bp
+.SH
+An Example File
+.LP
+The following is an abbreviated example of a bitmap file containing
+the specification of two characters (the j and quoteright
+in figures 1 and 2).
+.LP
+.Ds
+STARTFONT 2.1
+COMMENT This is a sample font in 2.1 format.
+FONT -Adobe-Helvetica-Bold-R-Normal--24-240-75-75-P-65-ISO8859-1
+SIZE 24 75 75
+FONTBOUNDINGBOX 9 24 -2 -6
+STARTPROPERTIES 19
+FOUNDRY "Adobe"
+FAMILY "Helvetica"
+WEIGHT_NAME "Bold"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 24
+POINT_SIZE 240
+RESOLUTION_X 75
+RESOLUTION_Y 75
+SPACING "P"
+AVERAGE_WIDTH 65
+CHARSET_REGISTRY "ISO8859"
+CHARSET_ENCODING "1"
+MIN_SPACE 4
+FONT_ASCENT 21
+FONT_DESCENT 7
+COPYRIGHT "Copyright (c) 1987 Adobe Systems, Inc."
+NOTICE "Helvetica is a registered trademark of Linotype Inc."
+ENDPROPERTIES
+CHARS 2
+STARTCHAR j
+ENCODING 106
+SWIDTH 355 0
+DWIDTH 8 0
+BBX 9 22 -2 -6
+BITMAP
+0380
+0380
+0380
+0380
+0000
+0700
+0700
+0700
+0700
+0E00
+0E00
+0E00
+0E00
+0E00
+1C00
+1C00
+1C00
+1C00
+3C00
+7800
+F000
+E000
+ENDCHAR
+STARTCHAR quoteright
+ENCODING 39
+SWIDTH 223 0
+DWIDTH 5 0
+BBX 4 6 2 12
+ATTRIBUTES 01C0
+BITMAP
+70
+70
+70
+60
+E0
+C0
+ENDCHAR
+ENDFONT
+.De
diff --git a/specs/BDF/fig1.ps b/specs/BDF/fig1.ps
new file mode 100644
index 0000000..f103bae
--- /dev/null
+++ b/specs/BDF/fig1.ps
@@ -0,0 +1,160 @@
+%!PS-Adobe-1.0
+mark
+/inch {72 mul}def
+
+/Helvetica findfont [10 0 0 10 0 0] makefont setfont
+
+/ShowCache
+ {$sc begin
+ gsave
+(Helvetica-Oblique) (/adobe/fonts/Helvetica/Oblique/)(j)
+0.0208333 -1.82131e-09 -1.82131e-09 -0.0208333 0 0
+22 9 7.5625 0 -2 -16 CachedChar
+0 [6 8 ] Bits
+1 [6 8 ] Bits
+2 [6 8 ] Bits
+3 [6 8 ] Bits
+5 [5 7 ] Bits
+6 [5 7 ] Bits
+7 [5 7 ] Bits
+8 [5 7 ] Bits
+9 [4 6 ] Bits
+10 [4 6 ] Bits
+11 [4 6 ] Bits
+12 [4 6 ] Bits
+13 [4 6 ] Bits
+14 [3 5 ] Bits
+15 [3 5 ] Bits
+16 [3 5 ] Bits
+17 [3 5 ] Bits
+18 [2 5 ] Bits
+19 [1 4 ] Bits
+20 [0 3 ] Bits
+21 [0 2 ] Bits
+ EndCachedChar
+ grestore
+ end
+ } def
+
+/$sc 120 dict def
+$sc begin
+
+/CN 100 string def
+/CachedChar
+ {/sl save def
+ /yo exch def /xo exch def
+ /yi exch def /xi exch def
+ /wb exch def /hb exch def
+ 6 array astore /cmat exch def
+ /cname exch def
+ /fpath exch def
+ /fname exch def
+ DoScale % fit the character maximally onto the page
+ Grid
+ gsave
+ DoLabs
+ xo neg yo neg translate
+ OrigMarks
+ } def
+
+/DoLabs
+ {gsave
+ /Helvetica findfont [1 0 0 1 0 0] makefont setfont
+ 0.1 setlinewidth
+ newpath
+ 0 -1.5 moveto
+ 0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto
+ 0 -1.5 moveto wb -1.5 lineto
+ -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto
+ stroke newpath
+ wb 0.5 sub (BBw ) stringwidth pop sub -0.5 moveto
+ gsave 1 -1 scale (BBw) show grestore
+ -1 0.5 moveto -1.5 0 lineto -2 0.5 lineto
+ -1.5 0 moveto -1.5 hb lineto
+ -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto
+ stroke newpath
+ -1.5 (BBh ) stringwidth pop sub hb 1 sub moveto
+ gsave 1 -1 scale (BBh) show grestore
+ xo neg -3 moveto 0 -3 lineto
+ 0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto
+ stroke newpath
+ newpath
+ xo neg -3 moveto
+ gsave 1 -1 scale ( BBox) show grestore
+ newpath
+% -3 yo neg moveto -3 0 lineto
+% 0.5 0.5 rmoveto -0.5 -0.5 rlineto -0.5 0.5 rlineto
+% stroke newpath
+ -4 yo neg moveto -4 hb lineto % ???? lower left??????
+ -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto
+ stroke newpath
+ -4 (BBoy ) stringwidth pop sub yo neg moveto
+ gsave 1 -1 scale (BBoy) show grestore
+ grestore
+ } def
+
+/DoScale
+ {3 72 mul hb div dup scale % hb == 3 inches
+ 0 hb translate
+ 1 -1 scale
+ } def
+
+/OrigMarks
+ {gsave
+ 0 setgray
+ .17 setlinewidth
+ newpath 0 -1 moveto 0 1 lineto stroke
+ newpath -1 0 moveto 1 0 lineto stroke
+ .13 setlinewidth
+ /xii xi round def
+ newpath xii -.8 moveto 0 1.6 rlineto stroke
+ newpath xii .8 sub 0 moveto 1.6 0 rlineto stroke
+ grestore
+ } def
+
+/Bits
+ {/xa exch def
+ /yy exch yo add def
+ gsave 0.2 setgray
+ 0 2 xa length 1 sub
+ {/i exch def
+ xa i get 1 xa i 1 add get
+ {/xx exch xo add def
+ newpath xx 0.2 add yy 0.2 add moveto
+ 0 0.6 rlineto 0.6 0 rlineto 0 -0.6 rlineto closepath fill
+ } for
+ } for
+ grestore
+ } def
+
+/EndCachedChar
+ {
+ grestore
+ sl restore
+ } def
+
+/Grid
+ {gsave
+ /wbround wb 8 div 0.5 add round cvi 8 mul def
+ wbround 1 add
+ {newpath 0 0 moveto 0 hb lineto closepath fill
+ 1 0 translate
+ (-) print
+ } repeat
+ grestore
+ gsave
+ hb 1 add
+ {newpath 0 0 moveto wbround 0 lineto closepath fill
+ 0 1 translate
+ (|) print
+ } repeat
+ grestore
+ () =
+ } def
+end
+
+250 400 translate
+ShowCache
+cleartomark
+
+showpage
diff --git a/specs/BDF/fig2.ps b/specs/BDF/fig2.ps
new file mode 100644
index 0000000..cc2ae91
--- /dev/null
+++ b/specs/BDF/fig2.ps
@@ -0,0 +1,147 @@
+%!PS-Adobe-1.0
+mark
+/inch {72 mul}def
+
+/Helvetica findfont [10 0 0 10 0 0] makefont setfont
+
+/ShowCache
+ {$sc begin
+ gsave
+(Helvetica-Oblique) (FontPath)(rightquote)
+0.0222222 -1.94273e-09 -1.94273e-09 -0.0222222 0 0
+6 4 4.95555 0 2 -18 CachedChar
+0 [1 3 ] Bits
+1 [1 3 ] Bits
+2 [1 3 ] Bits
+3 [1 2 ] Bits
+4 [0 2 ] Bits
+5 [0 1 ] Bits
+ EndCachedChar
+
+ grestore
+ end
+ } def
+
+/$sc 120 dict def
+$sc begin
+
+/CN 100 string def
+/CachedChar
+ {/sl save def
+ /yo exch def /xo exch def
+ /yi exch def /xi exch def
+ /wb exch def /hb exch def
+ 6 array astore /cmat exch def
+ /cname exch def
+ /fpath exch def
+ /fname exch def
+ DoScale % fit the character maximally onto the page
+ Grid
+ gsave
+ DoLabs
+ xo neg yo neg translate
+ OrigMarks
+ } def
+
+/DoLabs
+ {gsave
+ /Helvetica findfont [1 0 0 1 0 0] makefont setfont
+ 0.1 setlinewidth
+ newpath
+ 0 -1.5 moveto
+ 0.5 0.5 rmoveto -0.5 -0.5 rlineto 0.5 -0.5 rlineto
+ 0 -1.5 moveto wb -1.5 lineto
+ -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto
+ stroke newpath
+ wb 0.5 sub (BBw ) stringwidth pop sub -0.5 moveto
+ gsave 1 -1 scale (BBw) show grestore
+ -1 0.5 moveto -1.5 0 lineto -2 0.5 lineto
+ -1.5 0 moveto -1.5 hb lineto
+ -0.5 -0.5 rmoveto 0.5 0.5 rlineto 0.5 -0.5 rlineto
+ stroke newpath
+ -1.5 (BBh ) stringwidth pop sub hb 1 sub moveto
+ gsave 1 -1 scale (BBh) show grestore
+ xo neg -3 moveto 0 -3 lineto
+ -0.5 0.5 rmoveto 0.5 -0.5 rlineto -0.5 -0.5 rlineto
+ stroke newpath
+ newpath
+ 0.5 -3 moveto gsave 1 -1 scale ( BBox) show grestore
+ newpath
+ -4 yo neg moveto 0 -12 rlineto
+% -3 yo neg moveto -3 yo neg hb add lineto % ???? lowerleft?
+ 0.5 0.5 rmoveto -0.5 -0.5 rlineto -0.5 0.5 rlineto
+ stroke newpath
+ -4 (BBoy ) stringwidth pop sub yo neg moveto
+ gsave 1 -1 scale (BBoy) show grestore
+ grestore
+ } def
+
+/DoScale
+ {
+% 3 72 mul hb div dup scale % hb == 3 inches
+% 0 hb translate
+% 1 -1 scale
+ 3 72 mul 22 div dup scale
+ 0 22 translate
+ 1 -1 scale
+ } def
+
+/OrigMarks
+ {gsave
+ 0 setgray
+ .17 setlinewidth
+ newpath 0 -1 moveto 0 1 lineto stroke
+ newpath -1 0 moveto 1 0 lineto stroke
+ .13 setlinewidth
+ /xii xi round def
+ newpath xii -.8 moveto 0 1.6 rlineto stroke
+ newpath xii .8 sub 0 moveto 1.6 0 rlineto stroke
+ grestore
+ } def
+
+/Bits
+ {/xa exch def
+ /yy exch yo add def
+ gsave 0.2 setgray
+ 0 2 xa length 1 sub
+ {/i exch def
+ xa i get 1 xa i 1 add get
+ {/xx exch xo add def
+ newpath xx 0.2 add yy 0.2 add moveto
+ 0 0.6 rlineto 0.6 0 rlineto 0 -0.6 rlineto closepath fill
+ } for
+ } for
+ grestore
+ } def
+
+/EndCachedChar
+ {
+ grestore
+ sl restore
+ } def
+
+/Grid
+ {gsave
+ /wbround wb 8 div 0.5 add round cvi 8 mul def
+ wbround 1 add
+ {newpath 0 0 moveto 0 hb lineto closepath fill
+ 1 0 translate
+ (-) print
+ } repeat
+ grestore
+ gsave
+ hb 1 add
+ {newpath 0 0 moveto wbround 0 lineto closepath fill
+ 0 1 translate
+ (|) print
+ } repeat
+ grestore
+ () =
+ } def
+end
+
+300 400 translate
+ShowCache
+cleartomark
+
+showpage
diff --git a/specs/CTEXT/ctext.tbl.ms b/specs/CTEXT/ctext.tbl.ms
new file mode 100644
index 0000000..4aa08bc
--- /dev/null
+++ b/specs/CTEXT/ctext.tbl.ms
@@ -0,0 +1,449 @@
+.\" Use tbl and -ms
+.sp 8
+.ce 5
+\s+2\fBCompound Text Encoding\fP\s-2
+.sp 6p
+Version 1.1
+X Consortium Standard
+X Version 11, Release 6.4
+Robert W. Scheifler
+.sp 2
+.LP
+Copyright \(co 1989 by X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 2
+.NH 1
+Overview
+.LP
+Compound Text is a format for multiple character set data, such as
+multi-lingual text. The format is based on ISO
+standards for encoding and combining character sets. Compound Text is intended
+to be used in three main contexts: inter-client communication using selections,
+as defined in the \fIInter-Client Communication Conventions Manual\fP (ICCCM);
+window properties (e.g., window manager hints as defined in the ICCCM);
+and resources (e.g., as defined in Xlib and the Xt Intrinsics).
+.LP
+Compound Text is intended as an external representation, or interchange format,
+not as an internal representation. It is expected (but not required) that
+clients will convert Compound Text to some internal representation for
+processing and rendering, and convert from that internal representation to
+Compound Text when providing textual data to another client.
+.NH 1
+Values
+.LP
+The name of this encoding is ``COMPOUND_TEXT''. When text values are used in
+the ICCCM-compliant selection mechanism or are stored as window properties in
+the server, the type used should be the atom for ``COMPOUND_TEXT''.
+.LP
+Octet values are represented in this document as two decimal numbers in the
+form col/row. This means the value (col * 16) + row. For example, 02/01 means
+the value 33.
+.LP
+For our purposes, the octet encoding space is divided into four ranges:
+.RS
+.TS
+l l.
+C0 octets from 00/00 to 01/15
+GL octets from 02/00 to 07/15
+C1 octets from 08/00 to 09/15
+GR octets from 10/00 to 15/15
+.TE
+.RE
+.LP
+C0 and C1 are ``control character'' sets, while GL and GR are ``graphic
+character'' sets. Only a subset of C0 and C1 octets are used in the encoding,
+and depending on the character set encoding defined as GL or GR, a subset of
+GL and GR octets may be used; see below for details. All octets (00/00 to
+15/15) may appear inside the text of extended segments (defined below).
+.LP
+[For those familiar with ISO 2022, we will use only an 8-bit environment, and
+we will always use G0 for GL and G1 for GR.]
+.NH 1
+Control Characters
+.LP
+In C0, only the following values will be used:
+.RS
+.TS
+l l l.
+00/09 HT HORIZONTAL TABULATION
+00/10 NL NEW LINE
+01/11 ESC (ESCAPE)
+.TE
+.RE
+.LP
+In C1, only the following value will be used:
+.RS
+.TS
+l l l.
+09/11 CSI CONTROL SEQUENCE INTRODUCER
+.TE
+.RE
+.LP
+[The alternate 7-bit CSI encoding 01/11 05/11 is not used in Compound Text.]
+.LP
+No control sequences are defined in Compound Text for changing the C0 and C1
+sets.
+.LP
+A horizontal tab can be represented with the octet 00/09. Specification of
+tabulation width settings is not part of Compound Text and must be obtained
+from context (in an unspecified manner).
+.LP
+[Inclusion of horizontal tab is for consistency with the STRING type currently
+defined in the ICCCM.]
+.LP
+A newline (line separator/terminator) can be represented with the octet 00/10.
+.LP
+[Note that 00/10 is normally LINEFEED, but is being interpreted as NEWLINE.
+This can be thought of as using the (deprecated) NEW LINE mode, E.1.3, in ISO
+6429. Use of this value instead of 08/05 (NEL, NEXT LINE) is for consistency
+with the STRING type currently defined in the ICCCM.]
+.LP
+The remaining C0 and C1 values (01/11 and 09/11) are only used in the control
+sequences defined below.
+.NH 1
+Standard Character Set Encodings
+.LP
+The default GL and GR sets in Compound Text correspond to the left and right
+halves of ISO 8859-1 (Latin 1). As such, any legal instance of a STRING type
+(as defined in the ICCCM) is also a legal instance of type COMPOUND_TEXT.
+.LP
+.nf
+[The implied initial state in ISO 2022 is defined with the sequence:
+ 01/11 02/00 04/03 GO and G1 in an 8-bit environment only. Designation also invokes.
+ 01/11 02/00 04/07 In an 8-bit environment, C1 represented as 8-bits.
+ 01/11 02/00 04/09 Graphic character sets can be 94 or 96.
+ 01/11 02/00 04/11 8-bit code is used.
+ 01/11 02/08 04/02 Designate ASCII into G0.
+ 01/11 02/13 04/01 Designate right-hand part of ISO Latin-1 into G1.
+]
+.fi
+.LP
+To define one of the approved standard character set encodings to be
+the GL set, one of the following control sequences is used:
+.RS
+.TS
+l l.
+01/11 02/08 {I} F 94 character set
+01/11 02/04 02/08 {I} F 94\u\s-2N\s+2\d character set
+.TE
+.RE
+.LP
+To define one of the approved standard character set encodings to be
+the GR set, one of the following control sequences is used:
+.RS
+.TS
+l l.
+01/11 02/09 {I} F 94 character set
+01/11 02/13 {I} F 96 character set
+01/11 02/04 02/09 {I} F 94\u\s-2N\s+2\d character set
+.TE
+.RE
+.LP
+The ``F''in the control sequences above stands for ``Final character'', which
+is always in the range 04/00 to 07/14. The ``{I}'' stands for zero or more
+``intermediate characters'', which are always in the range 02/00 to 02/15, with
+the first intermediate character always in the range 02/01 to 02/03. The
+registration authority has defined an ``{I} F'' sequence for each registered
+character set encoding.
+.LP
+[Final characters for private encodings (in the range 03/00 to 03/15) are not
+permitted here in Compound Text.]
+.LP
+For GL, octet 02/00 is always defined as SPACE, and octet 07/15 (normally
+DELETE) is never used. For a 94-character set defined as GR, octets 10/00 and
+15/15 are never used.
+.LP
+[This is consistent with ISO 2022.]
+.LP
+A 94\u\s-2N\s+2\d character set uses N octets (N > 1) for each character.
+The value of N is derived from the column value for F:
+.RS
+.TS
+l l.
+column 04 or 05 2 octets
+column 06 3 octets
+column 07 4 or more octets
+.TE
+.RE
+.LP
+In a 94\u\s-2N\s+2\d encoding, the octet values 02/00 and 07/15 (in GL) and
+10/00 and 15/15 (in GR) are never used.
+.LP
+[The column definitions come from ISO 2022.]
+.LP
+Once a GL or GR set has been defined, all further octets in that range (except
+within control sequences and extended segments) are interpreted with respect to
+that character set encoding, until the GL or GR set is redefined. GL and GR
+sets can be defined independently, they do not have to be defined in pairs.
+.LP
+Note that when actually using a character set encoding as the GR set, you must
+force the most significant bit (08/00) of each octet to be a one, so that it
+falls in the range 10/00 to 15/15.
+.LP
+[Control sequences to specify character set encoding revisions (as in section
+6.3.13 of ISO 2022) are not used in Compound Text. Revision indicators do not
+appear to provide useful information in the context of Compound Text. The most
+recent revision can always be assumed, since revisions are upward compatible.]
+.NH 1
+Approved Standard Encodings
+.LP
+The following are the approved standard encodings to be used with Compound
+Text. Note that none have Intermediate characters; however, a good parser will
+still deal with Intermediate characters in the event that additional encodings
+are later added to this list.
+.RS
+.TS
+l l l.
+_
+.sp 4p
+\fB{I} F\fP \fB94/96\fP \fBDescription\fP
+.sp 4p
+_
+.sp 6p
+4/02 94 7-bit ASCII graphics (ANSI X3.4-1968),
+ Left half of ISO 8859 sets
+04/09 94 Right half of JIS X0201-1976 (reaffirmed 1984),
+ 8-Bit Alphanumeric-Katakana Code
+04/10 94 Left half of JIS X0201-1976 (reaffirmed 1984),
+ 8-Bit Alphanumeric-Katakana Code
+.sp 6p
+04/01 96 Right half of ISO 8859-1, Latin alphabet No. 1
+04/02 96 Right half of ISO 8859-2, Latin alphabet No. 2
+04/03 96 Right half of ISO 8859-3, Latin alphabet No. 3
+04/04 96 Right half of ISO 8859-4, Latin alphabet No. 4
+04/06 96 Right half of ISO 8859-7, Latin/Greek alphabet
+04/07 96 Right half of ISO 8859-6, Latin/Arabic alphabet
+04/08 96 Right half of ISO 8859-8, Latin/Hebrew alphabet
+04/12 96 Right half of ISO 8859-5, Latin/Cyrillic alphabet
+04/13 96 Right half of ISO 8859-9, Latin alphabet No. 5
+.sp 6p
+04/01 94\u\s-22\s+2\d GB2312-1980, China (PRC) Hanzi
+04/02 94\u\s-22\s+2\d JIS X0208-1983, Japanese Graphic Character Set
+04/03 94\u\s-22\s+2\d KS C5601-1987, Korean Graphic Character Set
+.sp 6p
+_
+.TE
+.RE
+.LP
+The sets listed as ``Left half of ...'' should always be defined as GL. The
+sets listed as ``Right half of ...'' should always be defined as GR. Other
+sets can be defined either as GL or GR.
+.NH 1
+Non-Standard Character Set Encodings
+.LP
+Character set encodings that are not in the list of approved standard
+encodings can be included
+using ``extended segments''. An extended segment begins with one of the
+following sequences:
+.RS
+.TS
+l l.
+01/11 02/05 02/15 03/00 M L variable number of octets per character
+01/11 02/05 02/15 03/01 M L 1 octet per character
+01/11 02/05 02/15 03/02 M L 2 octets per character
+01/11 02/05 02/15 03/03 M L 3 octets per character
+01/11 02/05 02/15 03/04 M L 4 octets per character
+.TE
+.RE
+[This uses the ``other coding system'' of ISO 2022, using private Final
+characters.]
+.LP
+The ``M'' and ``L'' octets represent a 14-bit unsigned value giving the number
+of octets that appear in the remainder of the segment. The number is computed
+as ((M - 128) * 128) + (L - 128). The most significant bit M and L are always
+set to one. The remainder of the segment consists of two parts, the name of
+the character set encoding and the actual text. The name of the encoding comes
+first and is separated from the text by the octet 00/02 (STX, START OF TEXT).
+Note that the length defined by M and L includes the encoding name and
+separator.
+.LP
+[The encoding of the length is chosen to avoid having zero octets in Compound
+Text when possible, because embedded NUL values are problematic in many C
+language routines. The use of zero octets cannot be ruled out entirely
+however, since some octets in the actual text of the extended segment may have
+to be zero.]
+.LP
+The name of the encoding should be registered with the X Consortium to avoid
+conflicts and should when appropriate match the CharSet Registry and Encoding
+registration used in the X Logical Font Description. The name itself should be
+encoded using ISO 8859-1 (Latin 1), should not use question mark (03/15) or
+asterisk (02/10), and should use hyphen (02/13) only in accordance with the X
+Logical Font Description.
+.LP
+Extended segments are not to be used for any character set encoding that can
+be constructed from a GL/GR pair of approved standard encodings. For
+example, it is incorrect to use an extended segment for any of the ISO 8859
+family of encodings.
+.LP
+It should be noted that the contents of an extended segment are arbitrary;
+for example,
+they may contain octets in the C0 and C1 ranges, including 00/00, and
+octets comprising a given character may differ in their most significant bit.
+.LP
+[ISO-registered ``other coding systems'' are not used in Compound Text;
+extended segments are the only mechanism for non-2022 encodings.]
+.NH 1
+Directionality
+.LP
+If desired, horizontal text direction can be indicated using the following
+control sequences:
+.RS
+.TS
+l l.
+09/11 03/01 05/13 begin left-to-right text
+09/11 03/02 05/13 begin right-to-left text
+09/11 05/13 end of string
+.TE
+.RE
+.LP
+[This is a subset of the SDS (START DIRECTED STRING) control in the Draft
+Bidirectional Addendum to ISO 6429.]
+.LP
+Directionality can be nested. Logically, a stack of directions is maintained.
+Each of the first two control sequences pushes a new direction on the stack,
+and the third sequence (revert) pops a direction from the stack. The stack
+starts out empty at the beginning of a Compound Text string. When the stack is
+empty, the directionality of the text is unspecified.
+.LP
+Directionality applies to all subsequent text, whether in GL, GR, or an
+extended segment. If the desired directionality of GL, GR, or extended
+segments differs, then directionality control sequences must be inserted when
+switching between them.
+.LP
+Note that definition of GL and GR sets is independent of directionality;
+defining a new GL or GR set does not change the current directionality, and
+pushing or popping a directionality does not change the current GL and GR
+definitions.
+.LP
+Specification of directionality is entirely optional; text direction should be
+clear from context in most cases. However, it must be the case that either
+all characters in a Compound Text string have explicitly specified direction
+or that all characters have unspecified direction. That is, if directionality
+control sequences are used, the first such control sequence must precede the
+first graphic character in a Compound Text string, and graphic characters are
+not permitted whenever the directionality stack is empty.
+.NH 1
+Resources
+.LP
+To use Compound Text in a resource, you can simply treat all octets as if they
+were ASCII/Latin-1 and just replace all ``\\'' octets (05/12) with the two
+octets ``\\\\'', all newline octets (00/10) with the two octets ``\\n'', and
+all zero octets with the four octets ``\\000''.
+It is up to the client making use of the resource to interpret the data as
+Compound Text; the policy by which this is ascertained is not constrained by
+the Compound Text specification.
+.NH 1
+Font Names
+.LP
+The following CharSet names for the standard character set encodings are
+registered for use in font names under the X Logical Font Description:
+.RS
+.TS
+l l l.
+_
+.sp 6p
+\fBName\fP \fBEncoding Standard\fP \fBDescription\fP
+.sp 6p
+_
+.sp 6p
+ISO8859-1 ISO 8859-1 Latin alphabet No. 1
+ISO8859-2 ISO 8859-2 Latin alphabet No. 2
+ISO8859-3 ISO 8859-3 Latin alphabet No. 3
+ISO8859-4 ISO 8859-4 Latin alphabet No. 4
+ISO8859-5 ISO 8859-5 Latin/Cyrillic alphabet
+ISO8859-6 ISO 8859-6 Latin/Arabic alphabet
+ISO8859-7 ISO 8859-7 Latin/Greek alphabet
+ISO8859-8 ISO 8859-8 Latin/Hebrew alphabet
+ISO8859-9 ISO 8859-9 Latin alphabet No. 5
+JISX0201.1976-0 JIS X0201-1976 (reaffirmed 1984) 8-bit Alphanumeric-Katakana Code
+GB2312.1980-0 GB2312-1980, GL encoding China (PRC) Hanzi
+JISX0208.1983-0 JIS X0208-1983, GL encoding Japanese Graphic Character Set
+KSC5601.1987-0 KS C5601-1987, GL encoding Korean Graphic Character Set
+.sp 6p
+_
+.TE
+.RE
+.LP
+.NH 1
+Extensions
+.LP
+There is no absolute requirement for a parser to deal with anything but the
+particular encoding syntax defined in this specification. However, it is
+possible that Compound Text may be extended in the future, and as such it may
+be desirable to construct the parser to handle 2022/6429 syntax more generally.
+.LP
+There are two general formats covering all control sequences that are expected
+to appear in extensions:
+.LP
+01/11 {I} F
+.IP
+For this format, I is always in the range 02/00 to 02/15, and F is always
+in the range 03/00 to 07/14.
+.LP
+09/11 {P} {I} F
+.IP
+For this format, P is always in the range 03/00 to 03/15, I is always in
+the range 02/00 to 02/15, and F is always in the range 04/00 to 07/14.
+.LP
+In addition, new (singleton) control characters (in the C0 and C1 ranges) might
+be defined in the future.
+.LP
+Finally, new kinds of ``segments'' might be defined in the future using syntax
+similar to extended segments:
+.LP
+01/11 02/05 02/15 F M L
+.IP
+For this format, F is in the range 03/05 to 3/15. M and L are as defined
+in extended segments. Such a segment will always be followed by the number
+of octets defined by M and L. These octets can have arbitrary values and
+need not follow the internal structure defined for current extended
+segments.
+.LP
+If extensions to this specification are defined in the future, then any string
+incorporating instances of such extensions must start with one of the following
+control sequences:
+.RS
+.TS
+l l.
+01/11 02/03 V 03/00 ignoring extensions is OK
+01/11 02/03 V 03/01 ignoring extensions is not OK
+.TE
+.RE
+.LP
+In either case, V is in the range 02/00 to 02/15 and indicates the major
+version
+minus one of the specification being used. These version control sequences are
+for use by clients that implement earlier versions, but have implemented a
+general parser. The first control sequence indicates that it is acceptable to
+ignore all extension control sequences; no mandatory information will be lost
+in the process. The second control sequence indicates that it is unacceptable
+to ignore any extension control sequences; mandatory information would be lost
+in the process. In general, it will be up to the client generating the
+Compound Text to decide which control sequence to use.
+.NH 1
+Errors
+.LP
+If a Compound Text string does not match the specification here (e.g., uses
+undefined control characters, or undefined control sequences, or incorrectly
+formatted extended segments), it is best to treat the entire string as invalid,
+except as indicated by a version control sequence.
diff --git a/specs/FSProtocol/protocol.ms b/specs/FSProtocol/protocol.ms
new file mode 100644
index 0000000..613e8c1
--- /dev/null
+++ b/specs/FSProtocol/protocol.ms
@@ -0,0 +1,3601 @@
+.\" $Xorg: protocol.ms,v 1.3 2000/08/17 19:42:07 cpqbld Exp $
+.\" Use tbl, -ms, and macros.t
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 50
+\s+3\fBThe X Font Service Protocol\fP\s-3
+.sp
+\fBVersion 2.0\fP
+\fBX Consortium Standard\fR
+.sp
+\fBX Version 11, Release 6.4\fR
+.sp 6
+Jim Fulton
+Network Computing Devices, Inc.
+.sp 6
+Revised May 2, 1994
+.ce 0
+.bp
+.br
+\&
+.sp 15
+.ps 9
+.nr PS 9
+.LP
+Copyright \(co 1991 Network Computing Devices, Inc.
+.LP
+Permission to use, copy, modify, distribute, and sell this
+documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice and this permission
+notice appear in all copies. Network Computing Devices, Inc.
+makes no representations about the suitability for any purpose
+of the information in this document. This documentation is
+provided ``as is'' without express or implied warranty.
+.LP
+Copyright \(co 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 11
+.nr PS 11
+.bp 1
+.EH '\fBX Font Service Protocol\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Font Service Protocol\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB\\\\n(PN\fP''
+.OF ''\fB\\\\n(PN\fP''
+.NH 1
+Introduction
+.XS
+\*(SN Introduction
+.XE
+.LP
+The management of fonts in large, heterogeneous environments is one of the
+hardest aspects of using the X Window System.*
+.FS
+* \fIX Window System\fP is a trademark of X Consortium, Inc.
+.FE
+Multiple formats and the lack of
+a consistent mechanism for exporting font data to all displays on a network
+prevent the transparent use of applications across different display platforms.
+The X Font Service protocol is designed to address this and other issues, with
+specific emphasis on the needs of the core X protocol. Upward-compatible
+changes (typically in the form of new requests) are expected as consensus is
+reached on new features (particularly outline font support).
+.LP
+Currently, most X displays use network file protocols such as NFS and TFTP to
+obtain raw font data which they parse directly. Since a common binary format
+for this data doesn't exist, displays must be able to interpret a variety of
+formats if they are to be used with different application hosts. This leads to
+wasted code and data space and a loss of interoperability as displays are used
+in unforeseen environments.
+.LP
+By moving the interpretation of font data out of the X server into a separate
+service on the network, these problems can be greatly reduced. In addition,
+new technologies, such as dynamically generating bitmaps from scaled or outline
+fonts, can be provided to all displays transparently. For horizontal text,
+caching techniques and increased processor power can potentially make
+rasterization more efficient on large, centralized hosts than on individual
+displays.
+.LP
+Each font server provides sets of fonts that may be listed and queried for
+header, property, glyph extents, and bitmap information. This data is
+transmitted over the network using a binary format (with variations to support
+different bit- and byte-orders) designed to minimize the amount of processing
+required by the display. Since the font server, rather than the display, is
+responsible for parsing the raw font data, new formats can be used by all
+displays by modifying a single font server.
+.LP
+From the user's point of view, font servers are simply a new type of name in
+the X font path. Network name services allow descriptive names (such as
+DEPARTMENT-FONTS or APPLICATION-FONTS) to be translated into proper network
+addresses. X displays send requests to and read replies from the font server
+rather than reading directly from files. Since the X Font Service protocol is
+designed to allow subsets of the font data to be requested, displays may easily
+implement a variety of strategies for fine-grained demand-loading of glyphs.
+.NH 1
+Architectural Model
+.XS
+\*(SN Architectural Model
+.XE
+.LP
+In this document, the words ``client'' and ``server'' refer to the consumer and
+provider of a font, respectively, unless otherwise indicated. It is important
+to note that in this context, the X server is also a font client.
+.LP
+The X Font Service protocol does not require any changes to the core X protocol
+or to any applications. To the user, font servers are simply additional types
+of font path elements. As such, X servers may connect to multiple font
+servers, as shown in Figure 2.1. Although the font protocol is geared towards
+the X Window System, it may be also used by other consumers of font data (such
+as printer drivers).
+.DS
+.ft C
+ +--------+ +---------------+
+ | X1 |--------------| |
+ | Server | | Font Server |
+ +--------+ +-------| 1 |
+ | +---------------+
+ +--------+ |
+ | X2 |------+ +---------------+
+ | Server |--------------| |
+ +--------+ | Font Server |
+ +-------| 2 |
++---------+ | +---------------+
+| other | |
+| clients |------+
++---------+
+.ft
+.DE
+.ce
+Figure \*(SN1: Connecting to a Font Server
+.LP
+Clients communicate with the font server using the request/reply/event model
+over any mutually-understood virtual stream connection (such as TCP/IP, DECnet,*
+.FS
+*DECnet is a trademark of Digital Equipment Corporation.
+.FE
+etc.). Font servers are responsible for providing data in the bit and byte
+orders requested by the client. The set of requests and events provided in the
+first version of the X Font Service protocol is limited to supporting the needs
+of the bitmap-oriented core X Window System protocol. Extensions are expected
+as new needs evolve.
+.LP
+A font server reads raw font data from a variety of sources (possibly
+including other font servers) and converts it into a common format that is
+transmitted to the client using the protocol described in Section 4. New font
+formats are handled by adding new converters to a font server, as shown in
+Figure 2.2.
+.DS
+.ft C
+ +------------+
+ | client |
+ | (X server) |
+ +------------+
+ |
+ network
+ |
++--------------------------------------------+
+| |
+| font server 1 |
+| |
++-----+-----+-----+-----+----+-----+---+-----+
+| bdf | snf | pcf | atm | f3 | dwf | | | ... |
++-----+-----+-----+-----+----+-----+-|-+-----+
+ |
+ network
+ |
+ +----------+
+ | font |
+ | server 2 |
+ +----------+
+.ft
+.DE
+.ce
+Figure \*(SN2: Where Font Data Comes From
+.LP
+The server may choose to provide named sets of fonts called ``catalogues.''
+Clients may specify which of the sets should be used in listing or opening a
+font.
+.LP
+An event mechanism similar to that used in the X protocol is provided for
+asynchronous notification of clients by the server.
+.LP
+Clients may provide authorization data for the server to be used in determining
+(according to the server's licensing policy) whether or not access should be
+granted to particular fonts. This is particularly useful for clients whose
+authorization changes over time (such as an X server that can verify the
+identity of the user).
+.LP
+Implementations that wish to provide additional requests or events may use the
+extension mechanism. Adding to the core font service protocol (with the
+accompanying change in the major or minor version numbers) is reserved to the X
+Consortium.
+.NH 1
+Font Server Naming
+.XS
+\*(SN Font Server Naming
+.XE
+.LP
+Font clients that expose font server names to the user are encouraged to
+provide ways of naming font servers symbolically (e.g. DEPARTMENT-FONTS).
+However, for environments that lack appropriate name services
+transport-specific names are necessary. Since these names do occur in the
+protocol, clients and servers should support at least the applicable formats
+described below. Formats for additional transports may be registered with the
+X Consortium.
+.NH 2
+TCP/IP Names
+.XS
+\*(SN TCP/IP Names
+.XE
+.LP
+The following syntax should be used for TCP/IP names:
+.DS
+ <TCP name> ::= "tcp/" <hostname>":" <ipportnumber> ["/" <cataloguelist>]
+.DE
+where <hostname> is either symbolic (such as expo.lcs.mit.edu) or numeric
+decimal (such as 18.30.0.212). The <ipportnumber> is the port on which the
+font server is listening for connections. The <cataloguelist> string at
+the end is optional and specifies a plus-separated list of catalogues
+that may be requested. For example:
+.DS
+ tcp/expo.lcs.mit.edu:8012/available+special
+ tcp/18.30.0.212:7890
+.DE
+.NH 2
+DECnet Names
+.XS
+\*(SN DECnet Names
+.XE
+.LP
+The following syntax should be used for DECnet names:
+.DS
+ <DECnet name> ::= "decnet/" <nodename> "::font$" <objname>
+ ["/" <cataloguelist>]
+.DE
+where <nodename> is either symbolic (such as SRVNOD) or the numeric decimal
+form of the DECnet address (such as 44.70). The <objname> is normal,
+case-insensitive DECnet object name. The <cataloguelist> string at the end is
+optional and specifies a plus-separated list of catalogues that may be
+requested. For example:
+.DS
+ DECNET/SRVNOD::FONT$DEFAULT/AVAILABLE
+ decnet/44.70::font$other
+.DE
+.NH 1
+Protocol
+.XS
+\*(SN Protocol
+.XE
+.LP
+The protocol described below uses the request/reply/error model and is
+specified using the same conventions outlined in Section 2 of the core X Window
+System protocol [1]:
+.IP \(bu 5
+Data type names are spelled in upper case with no word separators,
+as in: FONTID
+.IP \(bu 5
+Alternate values are capitalized with no word separators,
+as in: MaxWidth
+.IP \(bu 5
+Structure element declarations are in lower case with hyphens
+as word separators, as in: byte-order-msb
+.NT
+Structure element names are referred to in
+upper case (e.g. BYTE-ORDER-MSB) when used in
+descriptions to set them off from the surrounding
+text. When this document is typeset they will be
+printed in lower case in a distinct font.
+.NE
+.IP \(bu 5
+Type declarations have the form ``name: type'',
+as in: CARD8: 8-bit byte
+.IP \(bu 5
+Comma-separated lists of alternate values are enclosed in
+braces, as in: { Min, MaxWidth, Max }
+.IP \(bu 5
+Comma-separated lists of structure elements are enclosed in
+brackets, as in: [ byte1: CARD8, byte2: CARD8 ]
+.LP
+A type with a prefix ``LISTof'' represents a counted list of
+elements of that type, as in: LISTofCARD8
+.NH 2
+Data Types
+.XS
+\*(SN Data Types
+.XE
+.LP
+The following data types are used in the core X Font Server protocol:
+.LP
+ACCESSCONTEXT: ID
+.IP
+This value is specified in the CreateAC request as the identifier
+to be used when referring to a particular AccessContext resource
+within the server. These resources are used by the server to
+store client-specified authorization information. This
+information may be used by the server to determine whether or not
+the client should be granted access to particular font data.
+.sp
+In order to preserve the integrity of font licensing being performed by
+the font server, care must be taken by a client to properly represent the
+identity of the true user of the font. Some font clients will in fact
+be servers (for example, X servers) requesting fonts for their own clients.
+Other font clients may be doing work on behalf of a number of different
+users over time (for example, print spoolers).
+.sp
+.PN AccessContexts
+must be created (with
+.PN CreateAC )
+and switched among (with
+.PN SetAuthorization )
+to represent all of these ``font users'' properly.
+.LP
+ALTERNATESERVER: [ name: STRING8,
+.br
+ subset: BOOL ]
+.IP
+This structure specifies the NAME, encoded in ISO 8859-1 according
+to Section 3, of another font server that may be useful as a
+substitute for this font server. The SUBSET field indicates
+whether or not the alternate server is likely to only contain a
+subset of the fonts available from this font server. This
+information is returned during the initial connection setup and
+may be used by the client to find a backup server in case of
+failure.
+.LP
+AUTH: [ name: STRING8,
+.br
+ data: LISTofBYTE ]
+.IP
+This structure specifies the name of an authorization protocol and
+initial data for that protocol. It is used in the authorization
+negotiation in the initial connection setup and in the CreateAC
+request.
+.ne 5
+.LP
+BITMAPFORMAT:
+.IP
+CARD32 containing the following fields defined by the
+sets of values given further below
+.RS
+.DS
+.TA .75i .75i .75i .75i
+[
+ byte-order-msb: 1 bit,
+ bit-order-msb: 1 bit,
+ image-rect: 2 bits { Min,
+ MaxWidth,
+ Max },
+ zero-pad: 4 bits,
+ scanline-pad: 2 bits { ScanlinePad8,
+ ScanlinePad16,
+ ScanlinePad32,
+ ScanlinePad64 },
+ zero-pad: 2 bits,
+ scanline-unit: 2 bits { ScanlineUnit8,
+ ScanlineUnit16,
+ ScanlineUnit32,
+ ScanlineUnit64 },
+ zero-pad: 2 bits,
+ zero-pad: 16 bits,
+]
+.DE
+.RE
+This structure specifies how glyph images are transmitted in
+response to
+.PN QueryXBitmaps8
+and
+.PN QueryXBitmaps16
+requests.
+.sp
+If the BYTE-ORDER-MSB bit (1 << 0) is set, the Most Significant
+Byte of each scanline unit is returned first. Otherwise, the
+Least Significant Byte is returned first.
+.sp
+If the BIT-ORDER-MSB bit (1 << 1) is set, the left-most bit in
+each glyph scanline unit is stored in the Most Significant Bit of
+each transmitted scanline unit. Otherwise, the left-most bit is
+stored in the Least Significant Bit.
+.sp
+The IMAGE-RECT field specifies a rectangle of pixels within the
+glyph image. It contains one of the following alternate values:
+.RS
+.DS
+
+ ImageRectMin (0 << 2)
+ ImageRectMaxWidth (1 << 2)
+ ImageRectMax (2 << 2)
+.DE
+.RE
+For a glyph with extents XCHARINFO in a font with header information
+XFONTINFO, the IMAGE-RECT values have the following meanings:
+.RS
+.in +5n
+.IP
+.PN ImageRectMin -
+This refers to the minimal bounding rectangle
+surrounding the inked pixels in the glyph. This is the
+most compact representation. The edges of the rectangle
+are:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+ left: XCHARINFO.LBEARING
+ right: XCHARINFO.RBEARING
+ top: XCHARINFO.ASCENT
+ bottom: XCHARINFO.DESCENT
+.DE
+.RE
+.IP
+.PN ImageRectMaxWidth -
+This refers to the scanlines between the
+glyph's ascent and descent, padded on the left to the minimum
+left-bearing (or 0, whichever is less) and on the right to
+the maximum right-bearing (or logical-width, whichever is
+greater). All glyph images share a common horizontal
+origin. This is a combination of ImageRectMax in the
+horizontal direction and ImageRectMin in the vertical
+direction. The edges of the rectangle are:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+left: min (XFONTINFO.MIN-BOUNDS.LBEARING, 0)
+right: max (XFONTINFO.MAX-BOUNDS.RBEARING,
+ XFONTINFO.MAX-BOUNDS.WIDTH)
+top: XCHARINFO.ASCENT
+bottom: XCHARINFO.DESCENT
+.DE
+.RE
+.IP
+ImageRectMax - This refers to all scanlines, from the maximum
+ascent (or the font ascent, whichever is greater) to the
+maximum descent (or the font descent, whichever is greater),
+padded to the same horizontal extents as MaxWidth.
+All glyph images have the same sized bitmap and share a
+common origin. This is the least compact representation,
+but may be the easiest or most efficient (particularly for
+character cell fonts) for some clients to use. The edges of
+the rectangle are:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+left: min (XFONTINFO.MIN-BOUNDS.LBEARING, 0)
+right: max (XFONTINFO.MAX-BOUNDS.RBEARING,
+ XFONTINFO.MAX-BOUNDS.WIDTH)
+top: max (XFONTINFO.FONT-ASCENT,
+ XFONTINFO.MAX-BOUNDS.ASCENT)
+bottom: max (XFONTINFO.FONT-DESCENT,
+ XFONTINFO.MAX-BOUNDS.DESCENT)
+.DE
+.RE
+The SCANLINE-PAD field specifies the number of bits (8, 16, 32,
+or 64) to which each glyph scanline is padded before transmitting.
+It contains one of the following alternate values:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+ ScanlinePad8 (0 << 8)
+ ScanlinePad16 (1 << 8)
+ ScanlinePad32 (2 << 8)
+ ScanlinePad64 (3 << 8)
+.DE
+.RE
+The SCANLINE-UNIT field specifies the number of bits (8, 16, 32,
+or 64) that should be treated as a unit for swapping. This value
+must be less than or equal to the number of bits specified by the
+SCANLINE-PAD. It contains one of the following alternate values:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+ ScanlineUnit8 (0 << 12)
+ ScanlineUnit16 (1 << 12)
+ ScanlineUnit32 (2 << 12)
+ ScanlineUnit64 (3 << 12)
+.DE
+.RE
+BITMAPFORMATs are byte-swapped as CARD32s. All unspecified bits
+must be zero.
+.sp
+Use of an invalid BITMAPFORMAT causes a Format error to
+be returned.
+.in -5n
+.RE
+.LP
+BITMAPFORMATMASK: CARD32 mask
+.IP
+This is a mask of bits representing the fields in a BITMAPFORMAT:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+ ByteOrderMask (1 << 0)
+ BitOrderMask (1 << 1)
+ ImageRectMask (1 << 2)
+ ScanlinePadMask (1 << 3)
+ ScanlineUnitMask (1 << 4)
+.DE
+.RE
+Unspecified bits are required to be zero or else a Format error
+is returned.
+.LP
+BOOL: CARD8
+.IP
+This is a boolean value containing one of the following alternate
+values:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+
+ False 0
+ True 1
+.DE
+.RE
+.LP
+BYTE: 8-bit value
+.IP
+This is an unsigned byte of data whose encoding
+is determined by the context in which it is used.
+.sp 12p
+.LP
+CARD8: 8-bit unsigned integer
+.sp 12p
+.LP
+CARD16: 16-bit unsigned integer
+.sp 12p
+.LP
+CARD32: 32-bit unsigned integer
+.IP
+These are unsigned numbers. The latter two are byte-swapped when
+the server and client have different byte orders.
+.sp 12p
+.LP
+CHAR2B: [ byte1, byte2: CARD8 ]
+.IP
+This structure specifies an individual character code within
+either a 2-dimensional matrix (using BYTE1 and BYTE2 as the row
+and column indices, respectively) or a vector (using BYTE1 and
+BYTE2 as most- and least-significant bytes, respectively). This
+data type is treated as a pair of 8-bit values and is never
+byte-swapped. Therefore, the client should always transmit BYTE1
+first.
+.sp 12p
+.LP
+EVENTMASK: CARD32 mask
+.IP
+This is a mask of bits indicating which of an extension's (or the
+core's) maskable events the client would like to receive. Each
+bit indicates one or more events, and a bit value of one indicates
+interest in a corresponding set of events. The following bits are
+defined for event masks specified for the core protocol (i.e. an
+EXTENSION-OPCODE of zero in
+.PN SetEventMask
+and
+.PN GetEventMask
+requests):
+.RS
+.DS
+.TA .75i .75i .75i .75i
+
+ CatalogueListChangeMask (1 << 0)
+ FontListChangeMask (1 << 1)
+.DE
+.RE
+If
+.PN CatalogueListChangeMask
+is set, client is interested in
+receiving
+.PN CatalogueListNotify
+events. If
+.PN FontListChangeMask
+is set, the client is interested in
+receiving
+.PN FontListNotify
+events.
+.sp
+Extensions that provide additional events may define their own
+event masks. These event masks have their own scope and may use
+the same bit values as the core or other extensions.
+.sp
+All unused bits must be set to zero. In
+.PN SetEventMask
+requests, if
+any bits are set that are not defined for the extension (or core)
+for which this EVENTMASK is intended (according to the EXTENSION-
+OPCODE given in the
+.PN SetEventMask
+request), an
+.PN EventMask
+error is generated.
+.sp
+This value is swapped as a CARD32.
+.LP
+FONTID: ID
+.IP
+This is specified by the client in the request
+.PN OpenBitmapFont
+as the identifier to be used when referring to a particular open
+font.
+.LP
+ID: CARD32
+.IP
+This is a 32-bit value in which the top 3 bits must be clear, and
+at least 1 other bit must be set (yielding a range of 1 through
+2^29-1). It is specified by the client to represent objects in
+the server. Identifiers are scoped according to their type are
+private to the client; thus, the same identifier may be used for
+both a FONTID and an ACCESSCONTEXT as well as by multiple clients.
+.sp
+An ID of zero is referred to as None.
+.LP
+INT8: 8-bit signed integer
+.LP
+INT16: 16-bit signed integer
+.LP
+INT32: 32-bit signed integer
+.IP
+These are signed numbers. The latter two are byte-swapped when
+the client and server have different byte orders.
+.LP
+OFFSET32: [ position: CARD32,
+.br
+ length: CARD32 ]
+.IP
+This structure indicates a position and length within a block of
+data.
+.LP
+PROPINFO: [ offsets: LISTofPROPOFFSET,
+.br
+ data: LISTofBYTE ]
+.IP
+This structure describes the list of properties provided by a
+font. Strings for all of the properties names and values are
+stored within the data block and are located using a table of
+offsets and lengths.
+.sp
+This structure is padded to 32-bit alignment.
+.LP
+PROPOFFSET: [ name: OFFSET32,
+.br
+ value: OFFSET32,
+.br
+ type: CARD8,
+.br
+ zero-pad3: BYTE, BYTE, BYTE ]
+.IP
+This structure specifies the position, length, and type of
+of data for a property.
+.sp
+The NAME field specifies the position and length (which must be
+greater than zero) of the property name relative to the beginning
+of the PROPINFO.DATA block for this font. The interpretation of
+the position and length of the VALUE field is determined by the
+TYPE field, which contains one of the following alternate values:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+ String 0
+ Unsigned 1
+ Signed 2
+.DE
+.RE
+.IP
+which have the following meanings:
+.RS
+.in +5n
+.IP String
+.br
+This property contains a counted string of bytes. The
+data is stored in the PROPINFO.DATA block beginning at
+relative byte VALUE.POSITION (beginning with zero), extending
+for VALUE.LENGTH (at least zero) bytes.
+.IP Unsigned
+This property contains a unsigned, 32-bit number stored
+as a CARD32 in VALUE.POSITION (VALUE.LENGTH is zero).
+.IP Signed
+.br
+This property contains a signed, 32-bit number stored as
+an INT32 in VALUE.POSITION (VALUE.LENGTH is zero).
+.in -5n
+.RE
+.sp
+This structure is zero-padded to 32-bit alignment.
+.LP
+RANGE: [ min-char, max-char: CHAR2B ]
+.IP
+This structure specifies a range of character codes. A single
+character is represented by MIN-CHAR equals MAX-CHAR. If the
+linear interpretation of MAX-CHAR is less than that of MIN-CHAR,
+or if MIN-CHAR is less than the font's
+XFONTINFO.CHAR-RANGE.MIN-CHAR, or if MAX-CHAR is greater than the
+font's XFONTINFO.CHAR-RANGE.MAX-CHAR, the range is invalid.
+.LP
+RESOLUTION: [ x-resolution: CARD16,
+.br
+ y-resolution: CARD16,
+.br
+ decipoint-size: CARD16 ]
+.IP
+This structure specifies resolution and point size to be used in
+resolving partially-specified scaled font names. The X-RESOLUTION
+and Y-RESOLUTION are measured in pixels-per-inch and must be
+greater than zero. The DECIPOINT-SIZE is the preferred font
+size, measured in tenths of a point, and must be greater than zero.
+.LP
+STRING8: LISTofCARD8
+.IP
+This is a counted list of 1-byte character codes, typically
+encoded in ISO 8859-1. A character code ``c'' is equivalent to a
+CHAR2B structure whose BYTE1 is zero and whose BYTE2 is ``c''.
+.LP
+TIMESTAMP: CARD32
+.IP
+This is the number of milliseconds that have passed since a server-
+dependent origin. It is provided in errors and events and is
+permitted to wrap.
+.LP
+XCHARINFO: [ lbearing, rbearing: INT16,
+.br
+ width: INT16,
+.br
+ ascent, descent: INT16,
+.br
+ attributes: CARD16 ]
+.IP
+This structure specifies the ink extents and horizontal escapement
+(also known as the set- or logical width) of an individual
+character. The first five values represent directed distances in
+a coordinate system whose origin is aligned with the lower-left
+edge of the left-most pixel of the glyph baseline (i.e. the
+baseline falls between two pixels as shown in Figure 3-1 of the
+``Bitmap Distribution Format 2.1'' Consortium standard [2]).
+.sp
+The LBEARING field specifies the directed distance measured to the
+right from the origin to the left edge of the left-most inked
+pixel in the glyph.
+.sp
+The RBEARING field specifies the directed distance (measured to
+the right) from the origin to the right edge of the right-most
+inked pixel in the glyph.
+.sp
+The WIDTH field specifies the directed distance (measured to the
+right) from the origin to the position where the next character
+should appear (called the ``escapement point''). This distance
+includes any whitespace used for intercharacter padding and is
+also referred to as the ``logical width'' or ``horizontal
+escapement.''
+.sp
+The ASCENT field specifies the directed distance (measured up)
+from the baseline to the top edge of the top-most inked pixel
+in the glyph.
+.sp
+The DESCENT field specifies the directed distance (measured
+down) from the baseline to the bottom edge of the bottom-most
+inked pixel.
+.sp
+The ATTRIBUTES field specifies glyph-specific information that
+is passed through the application. If this value is not being
+used, it should be zero.
+.sp
+The ink bounding box of a glyph is defined to be the smallest
+rectangle that encloses all of the inked pixels. This box has
+a width of RBEARING - LBEARING pixels and a height of
+ASCENT + DESCENT pixels.
+.LP
+XFONTINFO: [ flags: CARD32,
+.br
+ drawing-direction: { LeftToRight, RightToLeft }
+.br
+ char-range: RANGE,
+.br
+ default-char: CHAR2B,
+.br
+ min-bounds: XCHARINFO,
+.br
+ max-bounds: XCHARINFO,
+.br
+ font-ascent: INT16,
+.br
+ font-descent: INT16,
+.br
+ properties: PROPINFO ]
+.IP
+This structure specifies attributes related to the font as a
+whole.
+.sp
+The FLAGS field is a bit mask containing zero or more of the
+following boolean values (unspecified bits must be zero):
+.RS
+.DS
+.TA .75i .75i .75i .75i
+ AllCharactersExist (1 << 0)
+ InkInside (1 << 1)
+ HorizontalOverlap (1 << 2)
+.DE
+.RE
+.IP
+which have the following meanings:
+.RS
+.in +5n
+.IP AllCharactersExist
+If this bit is set, all of the characters
+in the range given by CHAR-RANGE have glyphs encoded in
+the font. If this bit is clear, some of the characters
+may not have encoded glyphs.
+.IP InkInside
+If this bit is set, the inked pixels of each glyph
+fall within the rectangle described by the font's ascent,
+descent, origin, and the glyph's escapement point. If
+this bit is clear, there may be glyphs whose ink extends
+outside this rectangle.
+.IP HorizontalOverlap
+If this bit is set, the two ink bounding
+boxes (smallest rectangle enclosing the inked pixels) of
+some pairs of glyphs in the font may overlap when displayed
+side-by-side (i.e. the second character is imaged at the
+escapement point of the first) on a common baseline. If
+this bit is clear, there are no pairs of glyphs whose ink
+bounding boxes overlap.
+.in -5n
+.RE
+.IP
+The DRAWING-DIRECTION field contains a hint indicating whether
+most of the character metrics have a positive (or ``LeftToRight'')
+logical width or a negative (``RightToLeft'') logical width. It
+contains the following alternate values:
+.RS
+.DS
+
+ LeftToRight 0
+ RightToLeft 1
+.DE
+.RE
+The CHAR-RANGE.MIN-CHAR and CHAR-RANGE.MAX-CHAR fields specify the
+first and last character codes that have glyphs encoded in this font.
+All fonts must have at least one encoded glyph (in which case the
+MIN-CHAR and MAX-CHAR are equal), but are not required to have glyphs
+encoded at all positions between the first and last characters.
+.sp
+The DEFAULT-CHAR field specifies the character code of the glyph
+that the client should substitute for unencoded characters. Requests
+for extents or bitmaps for an unencoded character generate zero-filled
+metrics and a zero-length glyph bitmap, respectively.
+.sp
+The MIN-BOUNDS and MAX-BOUNDS fields contain the minimum and maximum
+values of each of the extents field of all encoded characters in the
+font (i.e. non-existent characters are ignored).
+.sp
+The FONT-ASCENT and FONT-DESCENT fields specify the font designer's
+logical height of the font, above and below the baseline,
+respectively. The sum of the two values is often used as the
+vertical line spacing of the font. Individual glyphs are permitted
+to have ascents and descents that are greater than these values.
+.sp
+The PROPERTIES field contains the property data associated with
+this font.
+.sp
+This structure is padded to 32-bit alignment.
+.NH 2
+Requests
+.XS
+\*(SN Requests
+.XE
+.LP
+This section describes the requests that may be sent by the client and the
+replies or errors that are generated in response. Versions of the protocol
+with the same major version are required to be upward-compatible.
+.LP
+Every request on a given connection is implicitly assigned a sequence number,
+starting with 1, that is used in replies, error, and events. Servers are
+required to generate replies and errors in the order in which the corresponding
+requests are received. Servers are permitted to add or remove fonts to the
+list visible to the client between any two requests, but requests must be
+processed atomically. Each request packet is at least 4 bytes long and
+contains the following fields:
+.RS
+.DS
+ major-opcode: CARD8
+ minor-opcode: CARD8
+ length: CARD16
+.DE
+.RE
+The MAJOR-OPCODE specifies which core request or extension package this packet
+represents. If the MAJOR-OPCODE corresponds to a core request, the
+MINOR-OPCODE contains 8 bits of request-specific data. Otherwise, the
+MINOR-OPCODE specifies which extension request this packet represents. The
+LENGTH field specifies the number of 4-byte units contained within the packet
+and must be at least one. If this field contains a value greater than one it
+is followed by (LENGTH - 1) * 4 bytes of request-specific data. Unless
+otherwise specified, unused bytes are not required to be zero.
+.LP
+If a request packet contains too little or too much data, the server returns
+a Length error. If the server runs out of internal resources (such as
+memory) while processing a request, it returns an Alloc error. If a server is
+deficient (and therefore non-compliant) and is unable to process a request, it
+may return an Implementation error. If a client uses an extension request
+without previously having issued a
+.PN QueryExtension
+request for that extension, the server responds with a
+.PN Request
+error. If the server encounters a request
+with an unknown MAJOR-OPCODE or MINOR-OPCODE, it responds with a
+.PN Request
+error.
+At most one error is generated per request. If more than one error condition
+is encountered in processing a requests, the choice of which error is returned
+is server-dependent.
+.LP
+Core requests have MAJOR-OPCODE values between 0 and 127, inclusive. Extension
+requests have MAJOR-OPCODE values between 128 and 255, inclusive, that are
+assigned by by the server. All MINOR-OPCODE values in extension requests are
+between 0 and 255, inclusive.
+.LP
+Each reply is at least 8 bytes long and contains the following fields:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+
+ type: CARD8 value of 0
+ data-or-unused: CARD8
+ sequence-number: CARD16
+ length: CARD32
+.DE
+.RE
+The TYPE field has a value of zero. The DATA-OR-UNUSED field may be used to
+encode one byte of reply-specific data (see Section 5.2 on request encoding).
+The least-significant 16 bits of the sequence number of the request that
+generated the reply are stored in the SEQUENCE-NUMBER field. The LENGTH field
+specifies the number of 4-byte units in this reply packet, including the fields
+described above, and must be at least two. If LENGTH is greater than two, the
+fields described above are followed by (LENGTH - 2) * 4 bytes of additional
+data.
+.LP
+Requests that have replies are described using the following syntax:
+.RS
+.DS
+
+ RequestName
+ \fIarg1\fP\^: type1
+ \fIarg2\fP\^: type2
+ ...
+ \fIargN\fP\^: typeN
+ =>
+ \fIresult1\fP\^: type1
+ \fIresult2\fP\^: type2
+ ...
+ \fIresultM\fP\^: typeM
+
+ Errors: \fIkind1\fR, \fIkind2\fR ..., \fIkindK\fR
+
+ Description
+.DE
+.RE
+If a request does not generate a reply, the``=>'' and result lines are
+omitted. If a request may generate multiple replies, the ``=>'' is replaced by
+a ``=>+''. In the authorization data exchanges in the initial connection setup
+and the CreateAC request, ``->'' indicates data sent by the client in response
+to data sent by the server.
+.LP
+The protocol begins with the establishment of a connection over a
+mutually-understood virtual stream:
+.RS
+.DS
+
+ open connection
+ byte-order: BYTE
+ client-major-protocol-version: CARD16
+ client-minor-protocol-version: CARD16
+ authorization-protocols: LISTofAUTH
+.DE
+.RE
+The initial byte of the connection specifies the BYTE-ORDER in
+which subsequent 16-bit and 32-bit numeric values are to be
+transmitted. The octal value 102 (ASCII uppercase `B')
+indicates that the most-significant byte is to be transmitted
+first; the octal value 154 (ASCII lowercase `l') indicates
+that the least-significant byte is to be transmitted first.
+If any other value is encountered the server closes the
+connection without any response.
+.IP
+The CLIENT-MAJOR-PROTOCOL-VERSION and
+CLIENT-MINOR-PROTOCOL-VERSION specify which version of the
+font service protocol the client would like to use. If the
+client can support multiple versions, the highest version
+should be given. This version of the protocol has a
+major version of 2 and a minor version of 0.
+.IP
+The AUTHORIZATION-PROTOCOLS contains a list of protocol names and
+optional initial data for which the client can provide
+information. The server may use this to determine which
+protocol to use or as part of the initial exchange of
+authorization data.
+.RS
+.DS
+=>
+status: { Success, Continue,
+ Busy, Denied }
+server-major-protocol-version: CARD16
+server-minor-protocol-version: CARD16
+alternate-servers-hint: LISTofALTERNATESERVER
+authorization-index: CARD8
+authorization-data: LISTofBYTE
+.DE
+.RE
+The SERVER-MAJOR-PROTOCOL-VERSION and
+SERVER-MINOR-PROTOCOL-VERSION specify the version of the font
+service protocol that the server expects from the client. If
+the server supports the version specified by the client, this
+version number should be returned. If the client has
+requested a higher version than is supported by the server,
+the server's highest version should be returned. Otherwise,
+if the client has requested a lower version than is supported
+by the server, the server's lowest version should be returned.
+It is the client's responsibility to decide whether or not it
+can match this version of the protocol.
+.IP
+The ALTERNATE-SERVERS-HINT is a list of other font servers
+that may have related sets of fonts (determined by means
+outside this protocol, typically by the system administrator).
+Clients may choose to contact these font servers if the
+connection is rejected or lost.
+.IP
+The STATUS field indicates whether the server accepted,
+rejected, or would like more information about the connection.
+It has one of the following alternate values:
+.RS
+.DS
+
+ Success 0
+ Continue 1
+ Busy 2
+ Denied 3
+.DE
+.RE
+If STATUS is Denied, the server has rejected the client's
+authorization information. If STATUS is Busy, the server has
+simply decided that it cannot provide fonts to this client at
+this time (it may be able to at a later time). In both cases,
+AUTHORIZATION-INDEX is set to zero, no authorization-data is
+returned, and the server closes the connection after sending
+the data described so far.
+.IP
+Otherwise the AUTHORIZATION-INDEX is set to the index
+(beginning with 1) into the AUTHORIZATION-PROTOCOLS list of
+the protocol that the server will use for this connection. If
+the server does not want to use any of the given protocols,
+this value is set to zero. The AUTHORIZATION-DATA field is
+used to send back authorization protocol-dependent data to the
+client (such as a challenge, authentication of the server,
+etc.).
+.LP
+If STATUS is Success, the following section of protocol is
+omitted. Otherwise, if STATUS is Continue, the server expects
+more authorization data from the client (i.e. the connection
+setup is not finished, so no requests or events may be sent):
+.RS
+.DS
+->
+more-authorization-data: STRING8
+=>
+status: { Success, Continue,
+ Busy, Denied }
+more-authorization-data: LISTofBYTE
+.DE
+.RE
+The values in STATUS have the same meanings as described
+above. This section of protocol is repeated until the server
+either accepts (sets STATUS to Success) or rejects (sets
+STATUS to Denied or Busy) the connection.
+.LP
+Once the connection has been accepted and STATUS is Success,
+an implicit AccessContext is created for the authorization
+data and the protocol continues with the following data sent
+from the server:
+.RS
+.DS
+=>
+remaining-length: CARD32
+maximum-request-length: CARD16
+release-number: CARD32
+vendor: STRING8
+.DE
+.RE
+The REMAINING-LENGTH specifies the length in 4-byte units of
+the remaining data to be transmitted to the client. The
+MAXIMUM-REQUEST-LENGTH specifies the largest request size in
+4-byte units that is accepted by the server and must have a
+value of at least 4096. Requests with a length field larger
+than this value are ignored and a Length error is returned.
+The VENDOR string specifies the name of the manufacturer of
+the font server. The RELEASE-NUMBER specifies the particular
+release of the server in a manufacturer-dependent manner.
+.LP
+After the connection is established and the setup information has been
+exchanged, the client may issue any of requests described below:
+.LP
+.IN "NoOp" "" "@DEF@"
+.PN NoOp
+.IP
+Errors: Alloc
+.IP
+This request does nothing. It is typically used in response
+to a
+.PN KeepAlive
+event.
+.LP
+.IN "ListExtensions" "" "@DEF@"
+.PN ListExtensions
+.LP
+ =>
+.IP
+\fInames\fP\^: LISTofSTRING8
+.IP
+Errors: Alloc
+.IP
+This request returns the names of the extension packages
+that are supported by the server. Extension names are
+case-sensitive and are encoded in ISO 8859-1.
+.LP
+.IN "QueryExtension" "" "@DEF@"
+.PN QueryExtension
+.IP
+\fIname\fP\^: STRING8
+.LP
+ =>
+.IP
+\fIpresent\fP\^: BOOL
+.br
+\fImajor-version\fP\^: CARD16
+.br
+\fIminor-version\fP\^: CARD16
+.br
+\fImajor-opcode\fP\^: CARD8
+.br
+\fIfirst-event\fP\^: CARD8
+.br
+\fInumber-events\fP\^: CARD8
+.br
+\fIfirst-error\fP\^: CARD8
+.br
+\fInumber-errors\fP\^: CARD8
+.IP
+Errors:
+.PN Alloc
+.IP
+This request determines whether or not the extension package
+specified by NAME (encoded in ISO 8859-1) is supported by the
+server and that there is sufficient number of major opcode,
+event, and error codes available. If so, then PRESENT is set
+to True, MAJOR-VERSION and MINOR-VERSION are set to the
+respective major and minor version numbers of the protocol
+that the server would prefer; MAJOR-OPCODE is set to the value
+to use in extension requests; FIRST-EVENT is set to the value
+of the first extension-specific event code or zero if the
+extension does not have any events; NUMBER-EVENTS is set to
+the number of new events that the event defines; FIRST-ERROR
+is set to the value of the first extension-specific error code
+or zero if the extension does not define any new errors; and
+NUMBER-ERRORS is set to the number of new errors the extension
+defines.
+.sp
+Otherwise, PRESENT is set to False and the remaining fields are
+set to zero.
+.sp
+The server is free to return different values to different
+clients. Therefore, clients must use this request before
+issuing any of the requests in the named extension package or
+using the
+.PN SetEventMask request to express interest in any of
+this extension's events. Otherwise, a
+.PN Request
+error is returned.
+.LP
+.IN "ListCatalogues" "" "@DEF@"
+.PN ListCatalogues
+.IP
+\fIpattern\fP\^: STRING8
+\fImax-names\fP\^: CARD32
+.LP
+ =>+
+.IP
+\fIreplies-following-hint\fP\^: CARD32
+.br
+\fInames\fP\^: LISTofSTRING8
+.IP
+Errors:
+.PN Alloc
+.IP
+This request returns a list of at most MAX-NAMES names
+of collections (called catalogues) of fonts that match
+the specified PATTERN. In the pattern (which is encoded
+in ISO 8859-1), the `?' character (octal 77) matches any
+single character; the `*' character (octal 52) matches
+any series of zero or more characters; and alphabetic
+characters match either upper- or lowercase. The
+returned NAMES are encoded in ISO 8859-1 and may contain
+mixed character cases.
+.sp
+If PATTERN is of zero length or MAX-NAMES is equal to zero,
+one reply containing a zero-length list of names is returned.
+This may be used to synchronize the client with the server.
+.sp
+Servers are free to add or remove catalogues to the set returned by
+.PN ListCatalogues
+between any two requests. This request is not
+cumulative; repeated uses are processed in isolation and do
+result in an iteration through the list.
+.sp
+To reduce the amount of buffering needed by the server, the
+list of names may be split across several reply packets, so
+long as the names arrive in the same order that they would
+have appeared had they been in a single packet. The
+REPLIES-FOLLOWING-HINT field in all but the last reply
+contains a positive value that specifies the number of
+replies that are likely, but not required, to follow. In the
+last reply, which may contain zero or more names, this field
+is set to zero.
+.LP
+.IN "SetCatalogues" "" "@DEF@"
+.PN SetCatalogues
+.IP
+\fInames\fP\^: LISTofSTRING8
+.IP
+Errors:
+.PN Alloc ,
+.PN Name
+.IP
+This request sets the list of catalogues whose fonts should be
+visible to the client. The union of the fonts provided by
+each of the named catalogues forms the set of fonts whose
+names match patterns in
+.PN ListFonts ,
+.PN ListFontsWithXInfo ,
+and
+.PN OpenBitmapFont
+requests. The catalogue names are
+case-insensitive and are encoded in ISO 8859-1. A zero-length
+list resets the client's catalogue list to the
+server-dependent default.
+.sp
+If any of the catalogue names are invalid, a
+.PN Name
+error is returned and the request is ignored.
+.LP
+.IN "GetCatalogues" "" "@DEF@"
+.PN GetCatalogues
+.LP
+ =>
+.IP
+\fInames\fP\^: LISTofSTRING8
+.IP
+Errors:
+.PN Alloc
+.IP
+This request returns the current list of catalogue names
+(encoded in ISO 8859-1) associated with the client. These
+catalogues determine the set of fonts that are visible
+to
+.PN ListFonts ,
+.PN ListFontsWithXInfo ,
+and
+.PN OpenBitmapFont .
+A zero-length list indicates the server's default set of
+fonts. Catalogue names are case-insensitive and may be
+returned in mixed case.
+.LP
+.IN "SetEventMask" "" "@DEF@"
+.PN SetEventMask
+.IP
+\fIextension-opcode\fP\^: CARD8
+.br
+\fIevent-mask\fP\^: EVENTMASK
+.IP
+Errors:
+.PN EventMask ,
+.PN Request
+.IP
+This request specifies the set of maskable events that the
+extension indicated by EXTENSION-OPCODE (or zero for the core)
+should generate for the client. Event masks are limited in
+scope to the extension (or core) for which they are defined,
+so expressing interest in events from one or more extensions
+requires multiple uses of this request.
+.sp
+The default event mask if
+.PN SetEventMask
+has not been called
+is zero, indicating no interest in any maskable events.
+Some events are not maskable and cannot be blocked.
+.sp
+If EXTENSION-OPCODE is not a valid extension opcode previously
+returned by
+.PN QueryExtension
+or zero, a
+.PN Request
+error is
+returned. If EVENT-MASK contains any bits that do not
+correspond to valid events for the specified extension (or
+core), an
+.PN EventMask
+error is returned and the request is
+ignored.
+.LP
+.IN "GetEventMask" "" "@DEF@"
+.PN GetEventMask
+.IP
+\fIextension-opcode\fP\^: CARD8
+.LP
+ =>
+.IP
+\fIevent-mask\fP\^: EVENTMASK
+.IP
+Errors:
+.PN Request
+.IP
+This request returns the set of maskable core events the
+extension indicated by EXTENSION-OPCODE (or the core if zero)
+should generate for the client. Non-maskable events are
+always sent to the client.
+
+If EXTENSION-OPCODE is not a valid extension opcode
+previously returned by
+.PN QueryExtension
+or zero, a
+.PN Request
+error is returned.
+.LP
+.IN "CreateAC" "" "@DEF@"
+.PN CreateAC
+.IP
+\fIac\fP\^: ACCESSCONTEXT
+.br
+\fIauthorization-protocols\fP\^: LISTofAUTH
+.LP
+ =>
+.IP
+\fIstatus\fP\^: { Success, Continue, Denied }
+.br
+\fIauthorization-index\fP\^: CARD8
+.br
+\fIauthorization-data\fP\^: LISTofBYTE
+.IP
+Errors:
+.PN IDChoice
+.IP
+This request creates a new
+.PN AccessContext
+object within the
+server containing the specified authorization data. When
+this
+.PN AccessContext
+is selected by the client using the
+.PN SetAuthorization
+request, the data may be used by the server
+to determine whether or not the client should be granted
+access to particular font information.
+.sp
+If STATUS is Denied, the server rejects the client's
+authorization information and does not associate AC with any
+valid
+.PN AccessContext .
+In this case, AUTHORIZATION-INDEX is set
+to zero, and zero bytes of AUTHORIZATION-DATA is returned.
+.sp
+Otherwise, AUTHORIZATION-INDEX is set to the index (beginning
+with 1) into the AUTHORIZATION-PROTOCOLS list of the protocol
+that the server will use for this connection. If the server
+does not want to use any of the given protocols, this value is
+set to zero. The AUTHORIZATION-DATA field is used to send
+back authorization protocol-dependent data to the client (such
+as a challenge, authentication of the server, etc.).
+.sp
+If STATUS is Continue, the client is expected to continue
+the request by sending the following protocol and receiving
+the indicated response from the server. This continues
+until STATUS is set to either Success or Denied.
+.RS
+.DS
+ \->
+ more-authorization-data: STRING8
+ =>
+ status: { Success, Continue, Denied }
+ more-authorization-data: LISTofBYTE
+.DE
+.RE
+Once the connection has been accepted and STATUS is Success,
+the request is complete.
+.sp
+If AC is not in the range [1..2^29-1] or is already associated
+with an access context, an IDChoice error is returned.
+.LP
+.IN "FreeAC" "" "@DEF@"
+.PN FreeAC
+.IP
+\fIac\fP\^: ACCESSCONTEXT
+.IP
+Errors:
+.PN AccessContext ,
+.PN Alloc
+.IP
+This request indicates that the specified AC should no longer
+be associated with a valid access context. If AC is also the
+current
+.PN AccessContext
+(as set by the
+.PN SetAuthorization
+request), an implicit
+.PN SetAuthorization
+of None is done to
+restore the
+.PN AccessContext
+established for the initial
+connection setup. Operations on fonts that were opened under
+AC are not affected. The client may reuse the value of AC in
+a subsequent
+.PN CreateAC
+request.
+.sp
+If AC isn't associated with any valid authorization previously
+created by
+.PN CreateAC , an
+.PN AccessContext
+error is returned.
+.LP
+.IN "SetAuthorization" "" "@DEF@"
+.PN SetAuthorization
+.IP
+\fIac\fP\^: ACCESSCONTEXT
+.IP
+Errors:
+.PN AccessContext
+.IP
+This request sets the
+.PN AccessContext
+to be used for subsequent
+requests (except for
+.PN QueryXInfo ,
+.PN QueryXExtents8 ,
+.PN QueryXExtents16 ,
+.PN QueryXBitmaps8 ,
+.PN QueryXBitmaps16 ,
+and
+.PN CloseFont
+which are done under the
+.PN AccessContext
+of the
+corresponding
+.PN OpenBitmapFont ")."
+An AC of None restores the
+.PN AccessContext
+established for the initial connection setup.
+.sp
+If AC is neither None nor a value associated with a valid
+.PN AccessContext
+previously created by
+.PN CreateAC ,
+an
+.PN AccessContext
+error is returned.
+.LP
+.IN "SetResolution" "" "@DEF@"
+.PN SetResolution
+.IP
+\fIresolutions\fP\^: LISTofRESOLUTION
+.IP
+Errors:
+.PN Resolution ,
+.PN Alloc
+.IP
+This request provides a hint as to the resolution and
+preferred point size of the drawing surfaces for which the
+client will be requesting fonts. The server may use this
+information to set the RESOLUTION_X and RESOLUTION_Y fields
+of scalable XLFD font names, to order sets of names based on
+their resolutions, and to choose the server-dependent
+instance that is used when a partially-specified scalable
+fontname is opened.
+.sp
+If a zero-length list of RESOLUTIONS is given, the
+server-dependent default value is restored. Otherwise, if
+elements of all of the specified RESOLUTIONS are non-zero, the
+default resolutions for this client are changed.
+.sp
+If a RESOLUTION entry contains a zero, a Resolution error is
+returned and the default resolutions are not changed.
+.LP
+.IN "GetResolution" "" "@DEF@"
+.PN GetResolution
+.LP
+ =>
+.IP
+\fIresolutions\fP\^: LISTofRESOLUTION
+.IP
+Errors:
+.PN Alloc
+.IP
+This request returns the current list of default resolutions.
+If a client has not performed a
+.PN SetResolution ,
+a server-dependent default value is returned.
+.LP
+.IN "ListFonts" "" "@DEF@"
+.PN ListFonts
+.IP
+\fIpattern\fP\^: STRING8
+\fImax-names\fP\^: CARD32
+.LP
+ =>+
+.IP
+\fIreplies-following-hint\fP\^: CARD32
+.br
+\fInames\fP\^: LISTofSTRING8
+.IP
+Errors:
+.PN Alloc
+.IP
+This request returns a list of at most MAX-NAMES font names
+that match the specified PATTERN, according to matching rules
+of the X Logical Font Description Conventions [3]. In the
+pattern (which is encoded in ISO 8859-1) the `?' character
+(octal 77) matches any single character; the `*' character
+(octal 52) matches any series of zero or more characters; and
+alphabetic characters match either upper- or lowercase. The
+returned NAMES are encoded in ISO 8859-1 and may contain mixed
+character cases. Font names are not required to be in XLFD
+format.
+.sp
+If PATTERN is of zero length or MAX-NAMES is equal to zero,
+one reply containing a zero-length list of names is returned.
+This may be used to synchronize the client with the server.
+.sp
+Servers are free to add or remove fonts to the set returned by
+.PN ListFonts
+between any two requests. This request is not
+cumulative; repeated uses are processed in isolation and do
+result in an iteration through the list.
+.sp
+To reduce the amount of buffering needed by the server, the
+list of names may be split across several reply packets, so
+long as the names arrive in the same order that they would
+have appeared had they been in a single packet. The
+REPLIES-FOLLOWING-HINT field in all but the last reply
+contains a positive value that specifies the number of
+replies that are likely, but not required, to follow. In the
+last reply, which may contain zero or more names, this field
+is set to zero.
+.LP
+.IN "ListFontsWithXInfo" "" "@DEF@"
+.PN ListFontsWithXInfo
+.IP
+\fIpattern\fP\^: STRING8
+.br
+\fImax-names\fP\^: CARD32
+.LP
+ =>+
+.IP
+\fIreplies-following-hint\fP\^: CARD32
+.br
+\fIinfo\fP\^: XFONTINFO
+.br
+\fIname\fP\^: STRING8
+.IP
+Errors:
+.PN Alloc
+.IP
+This request is similar to
+.PN ListFonts
+except that a separate
+reply containing the name, header, and property data is
+generated for each matching font name. Following these
+replies, if any, a final reply containing a zero-length NAME
+and no INFO is sent.
+.sp
+The REPLIES-FOLLOWING-HINT field in all but the last reply
+contains a positive value that specifies the number of replies
+that are likely, but not required, to follow. In the last
+reply, this field is set to zero.
+.sp
+If PATTERN is of zero length or if MAX-NAMES is equal to
+zero, only the final reply containing a zero-length NAME and
+no INFO is returned. This may be used to synchronize the
+client with the server.
+.LP
+.IN "OpenBitmapFont" "" "@DEF@"
+.PN OpenBitmapFont
+.IP
+\fIfontid\fP\^: FONTID
+.br
+\fIpattern\fP\^: STRING8
+.br
+\fIformat-mask\fP\^: BITMAPFORMATMASK
+.br
+\fIformat-hint\fP\^: BITMAPFORMAT
+.LP
+ =>
+.IP
+\fIotherid\fP\^: FONTID or None
+.br
+\fIotherid-valid\fP\^: BOOL
+.br
+\fIcachable\fP\^: BOOL
+.IP
+Errors:
+.PN IDChoice ,
+.PN Name ,
+.PN Format ,
+.PN AccessContext ,
+.PN Alloc
+.IP
+This request looks for a server-dependent choice of the
+font names that match the specified PATTERN according to the
+rules described for
+.PN ListFonts .
+If no matches are found, a
+.PN Name
+error is returned. Otherwise, the server attempts to
+open the font associated with the chosen name.
+.sp
+Permission to access the font is determined by the server
+according the licensing policy used for this font. The server
+may use the client's current
+.PN AccessContext
+(as set by the most
+recent
+.PN SetAuthorization
+request or the original connection
+setup) to determine any client-specific sets of permissions.
+After the font has been opened, the client is allowed to
+specify a new
+.PN AccessContext
+with
+.PN SetAuthorization
+or release
+the
+.PN AccessContext
+using
+.PN FreeAC . Subsequent
+.PN QueryXInfo ,
+.PN QueryXExtents8 ,
+.PN QueryXExtents16 ,
+.PN QueryXBitmaps8 ,
+.PN QueryXBitmaps16 , and
+.PN CloseFont
+requests on this FONTID are
+performed according to permissions granted at the time of the
+.PN OpenBitmapFont
+request.
+.sp
+If the server is willing and able to detect that the client
+has already opened the font successfully (possibly under a
+different name), the OTHERID field may be set to one of the
+identifiers previously used to open the font. The
+OTHERID-VALID field indicates whether or not OTHERID is
+still associated with an open font: if it is True, the
+client may use OTHERID as an alternative to FONTID.
+Otherwise, if OTHERID-VALID is False, OTHERID is no longer
+open but has not been reused by a subsequent
+.PN OpenBitmapFont
+request.
+.sp
+If OTHERID is set to None, then OTHERID-VALID should be set
+to False.
+.sp
+The FORMAT-MASK indicates which fields in FORMAT-HINT
+the client is likely to use in subsequent
+.PN GetXBitmaps8
+and
+.PN GetXBitmaps16
+requests. Servers may wish to use
+this information to precompute certain values.
+.sp
+If CACHABLE is set to True, the client may cache the font
+(so that redundant opens of the same font may be avoided)
+and use it with all
+.PN AccessContexts
+during the life of the
+client without violating the font's licensing policy. This
+flag is typically set whenever a font is unlicensed or is
+licensed on a per-display basis. If CACHABLE is False, the
+client should reopen the font for each
+.PN AccessContext .
+.sp
+The server is permitted to add to or remove from the set of
+fonts returned by
+.PN ListFonts
+between any two requests, though
+mechanisms outside the protocol. Therefore, it is possible
+for this request (which is atomic) to return a different font
+than would result from separate a
+.PN ListFonts
+followed by an
+.PN OpenBitmapFont
+with a non-wildcarded font name.
+.sp
+If FONTID is not in the range [1..2^29-1] or if it is already
+associated with an open font, an
+.PN IDChoice
+error is returned.
+If no font is available that matches the specified PATTERN, a
+.PN Name
+error is returned. If the font is present but the client
+is not permitted access, an
+.PN AccessContext
+error is returned.
+If FORMAT-MASK has any unspecified bits set or if any of the
+fields in FORMAT-HINT indicated by FORMAT-MASK are invalid, a
+.PN Format
+error is returned.
+.LP
+.IN "QueryXInfo" "" "@DEF@"
+.PN QueryXInfo
+.IP
+\fIfontid\fP\^: FONTID
+.LP
+ =>
+.IP
+\fIinfo\fP\^: XFONTINFO
+.IP
+Errors:
+.PN Font ,
+.PN Alloc
+.IP
+This request returns the font header and property information
+for the open font associated with FONTID.
+.sp
+If FONTID is not associated with any open fonts, a
+.PN Font
+error
+is returned.
+.LP
+.IN "QueryXExtents8" "" "@DEF@"
+.PN QueryXExtents8
+.IP
+\fIfontid\fP\^: FONTID
+.br
+\fIrange\fP\^: BOOL
+.br
+\fIchars\fP\^: STRING8
+.LP
+ =>
+.IP
+\fIextents\fP\^: LISTofXCHARINFO
+.IP
+Errors:
+.PN Font ,
+.PN Range ,
+.PN Alloc
+.IP
+This request is equivalent to
+.PN QueryXExtents16
+except that it
+uses 1-byte character codes.
+.LP
+.IN "QueryXExtents16" "" "@DEF@"
+.PN QueryXExtents16
+.IP
+\fIfontid\fP\^: FONTID
+.br
+\fIrange\fP\^: BOOL
+.br
+\fIchars\fP\^: LISTofCHAR2B
+.LP
+ =>
+.IP
+\fIextents\fP\^: LISTofXCHARINFO
+.IP
+Errors:
+.PN Font ,
+.PN Range ,
+.PN Alloc
+.IP
+This request returns a list of glyph extents from the open
+font associated with FONTID for the series of characters
+specified by RANGE and CHARS.
+.sp
+If RANGE is True, each succeeding pair of elements in CHARS is
+treated as a range of characters for which extents should be
+returned. If CHARS contains an odd number of elements, the
+font's XFONTINFO.CHAR-RANGE.MAX-CHAR is implicitly appended to
+the list. If CHARS contains no elements, the list is
+implicitly replaced with the font's XFONTINFO.CHAR-RANGE. If
+any of the resulting character ranges are invalid, a Range
+error is returned. Otherwise, the character ranges are
+concatenated in the order given by CHARS to produce a set of
+character codes for which extents are returned.
+.sp
+If RANGE is False, then CHARS specifies the set of character
+codes for which extents are returned. If CHARS is of
+zero length, then a zero-length list of extents is returned.
+.sp
+The extents for each character code in the resulting set (which
+may contain duplicates) are returned in the order in
+which the character codes appear in the set.
+At least one metric for each character shall be non-zero
+unless the character is not encoded in the font, in which case
+all-zero metrics are returned.
+A blank, zero-width character can be encoded
+with non-zero but equal left and right bearings.
+.sp
+If FONTID is not associated with any open fonts, a
+.PN Font
+error is
+returned. If RANGE is True and CHARS contains any invalid
+ranges, a
+.PN Range
+error is returned.
+.LP
+.IN "QueryXBitmaps8" "" "@DEF@"
+.PN QueryXBitmaps8
+.IP
+\fIfontid\fP\^: FONTID
+.br
+\fIrange\fP\^: BOOL
+.br
+\fIchars\fP\^: STRING8
+.br
+\fIformat\fP\^: BITMAPFORMAT
+.LP
+ =>+
+.IP
+\fIreplies-following-hint\fP\^: CARD32
+.br
+\fIoffsets\fP\^: LISTofOFFSET32
+.br
+\fIbitmaps\fP\^: LISTofBYTE
+.IP
+Errors:
+.PN Font ,
+.PN Range ,
+.PN Format ,
+.PN Alloc
+.IP
+This request is equivalent to
+.PN QueryXBitmaps16
+except that it
+uses 1-byte character codes.
+.LP
+.IN "QueryXBitmaps16" "" "@DEF@"
+.PN QueryXBitmaps16
+.IP
+\fIfontid\fP\^: FONTID
+.br
+\fIrange\fP\^: BOOL
+.br
+\fIchars\fP\^: LISTofCHAR2B
+.br
+\fIformat\fP\^: BITMAPFORMAT
+.LP
+ =>+
+.IP
+\fIreplies-following-hint\fP\^: CARD32
+.br
+\fIoffsets\fP\^: LISTofOFFSET32
+.br
+\fIbitmaps\fP\^: LISTofBYTE
+.IP
+Errors:
+.PN Font ,
+.PN Range ,
+.PN Format ,
+.PN Alloc
+.IP
+This request returns a list of glyph bitmaps from the open
+font associated with FONTID for the series of characters
+specified by RANGE and CHARS.
+.sp
+If RANGE is True, each succeeding pair of elements in CHARS is
+treated as a range of characters for which bitmaps should be
+returned. If CHARS contains an odd number of elements, the
+font's XFONTINFO.CHAR-RANGE.MAX-CHAR is implicitly appended to
+the list. If CHARS contains no elements, the list is
+implicitly replaced with the font's XFONTINFO.CHAR-RANGE. If
+any of the resulting character ranges are invalid, a Range
+error is returned. Otherwise, the character ranges are
+concatenated in the order given by CHARS to produce a set of
+character codes for which bitmaps are returned.
+.sp
+If RANGE is False, then CHARS specifies the set of character
+codes for which bitmaps are returned. If CHARS is of zero
+length, then a single reply containing a zero-length list of
+offsets and bitmaps is returned.
+.sp
+If any of the resulting character ranges are invalid, a Range
+error is returned. Otherwise, the resulting character ranges
+are concatenated in the order given by CHARS to produce a set
+of character codes for which bitmaps are returned.
+.sp
+The server is free to return the glyph bitmaps in multiple
+replies to reduce the amount of buffering that is necessary.
+In this situation, the set of characters obtained above is
+partitioned into an implementation-dependent number of
+ordered, non-overlapping subsets containing runs of one or
+more consecutive characters. The global ordering of
+characters must be maintained such that concatenating the
+subsets in order that they were produced yields the original
+set. A reply is generated for each subset, in the order that
+it was produced.
+.sp
+For each character in a subset, an image of that character's
+glyph is described by a rectangle of bits corresponding to the
+pixels specified by FORMAT.IMAGE-RECT. Within the image, set
+and clear bits represent inked and non-inked pixels,
+respectively.
+.sp
+Each scanline of a glyph image, from top to bottom, is zero-padded
+on the right to a multiple of the number of bits specified by
+FORMAT.SCANLINE-PAD. The scanline is then divided from left
+to right into a sequence of FORMAT.SCANLINE-UNIT bits. The
+bits of each unit are then arranged such that the left-most
+pixel is stored in the most- or least-significant bit,
+according to FORMAT.BIT-ORDER-MSB. The bytes of each unit are
+then arranged such that the most- or least-significant byte,
+according to FORMAT.BYTE-ORDER-MSB, is transmitted first.
+Finally, the units are arranged such that the left-most is
+transmitted first and the right-most is transmitted last.
+.sp
+The individual images within a subset are then concatenated in
+a server-dependent order to form the BITMAPS data of the
+reply. If a glyph image is duplicated within a reply, the
+server is free to return fewer (but at least one) copies of
+the image. If a character is not encoded within the font, a
+zero-length bitmap is substituted for this character. Each
+glyph image must begin at a bit position that is a multiple of
+the FORMAT.SCANLINE-UNIT.
+.sp
+The OFFSETS array in a reply contains one entry for each
+character in the subset being returned, in the order that the
+characters appear in the subset. Each entry specifies the
+starting location in bytes and size in bytes of the
+corresponding glyph image in the BITMAPS data of that reply
+(i.e. an offset may not refer to data in another reply).
+.sp
+The REPLIES-FOLLOWING-HINT field in all but the last reply
+contains a positive value that specifies the number of replies
+that are likely, but not required, to follow. In the last
+reply, which may contain data for zero or more characters,
+this field is set to zero.
+.sp
+If FONTID is not associated with any open fonts, a Font error
+is returned. If RANGE is True and CHARS contains any invalid
+ranges, a Range error is returned. If FORMAT is invalid, a
+Format error is returned.
+.LP
+.IN "CloseFont" "" "@DEF@"
+.PN CloseFont
+.IP
+\fIfontid\fP\^: FONTID
+.IP
+Errors:
+.PN Font ,
+.PN Alloc
+.IP
+This request indicates that the specified FONTID should no
+longer be associated with an open font. The server is free to
+release any client-specific storage or licenses allocated for
+the font. The client may reuse the value of FONTID in a
+subsequent
+.PN OpenBitmapFont
+request.
+.sp
+If FONTID is not associated with any open fonts, a
+.PN Font
+error is returned.
+.LP
+.PN "close connection"
+.IN "close connection" "" "@DEF@"
+.IP
+When a connection is closed, a
+.PN CloseFont
+is done on all fonts
+that are open on the connection. In addition, the server is
+free to release any storage or licenses allocated on behalf of
+the client that made the connection.
+.NH 2
+Errors
+.XS
+\*(SN Errors
+.XE
+.LP
+All errors are at least 16 bytes long and contain the following fields:
+.TA .75i
+.ta .75i
+.IP
+\fItype\fP\^: CARD8 value of 1
+.br
+\fIerror-code\fP\^: CARD8
+.br
+\fIsequence-number\fP\^: CARD16
+.br
+\fIlength\fP\^: CARD32
+.br
+\fItimestamp\fP\^: TIMESTAMP
+.br
+\fImajor-opcode\fP\^: CARD8
+.br
+\fIminor-opcode\fP\^: CARD8
+.br
+\fIdata-or-unused\fP\^: CARD16
+.LP
+The TYPE field has a value of one. The ERROR-CODE field specifies which error
+occurred. Core errors codes are in the range 0 through 127, extension error
+codes are in the range 128 through 255. The SEQUENCE-NUMBER field contains the
+least significant 16 bits of the sequence number of the request that caused the
+error. The LENGTH field specifies the length of the error packet in 4-byte
+units and must have a value of at least 4. The TIMESTAMP specifies the server
+time when the error occurred. The MAJOR-OPCODE and MINOR-OPCODE (zero for core
+requests) fields specify the type of request that generated the error. The
+DATA-OR-UNUSED field may be used for 16 bits of error-specific information. If
+LENGTH is greater than four, these fields are followed by (LENGTH - 4) * 4
+bytes of extra data.
+.LP
+The following errors are defined for the core protocol:
+.LP
+.IN "Error Codes" "Request" "@DEF@"
+.PN Request
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.IP
+This error is generated by any request that has an unknown
+combination of major and minor request numbers, or by any
+extension request that is issued before a
+.PN QueryExtension
+of that extension.
+.LP
+.IN "Error Codes" "Format" "@DEF@"
+.PN Format
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.br
+\fIformat\fP\^: BITMAPFORMAT bad format value
+.IP
+This error is generated by the use of an invalid BITMAPFORMAT
+in the
+.PN OpenBitmapFont ,
+.PN QueryXBitmaps8 ,
+and
+.PN QueryXBitmaps16
+requests.
+The value that caused the error is included as extra data.
+.LP
+.IN "Error Codes" "Font" "@DEF@"
+.PN Font
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.br
+\fIfontid\fP\^: FONTID bad font identifier
+.IP
+This error is generated by an invalid FONTID in the
+.PN QueryXInfo ,
+.PN QueryXExtents8 ,
+.PN QueryXExtents16 ,
+.PN QueryXBitmaps8 ,
+.PN QueryXBitmaps16 ,
+and
+.PN CloseFont
+requests. The value that caused
+the error is included as extra data.
+.LP
+.IN "Error Codes" "Range" "@DEF@"
+.PN Range
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.br
+\fIrange\fP\^: RANGE bad range
+.IP
+This error is generated by an invalid RANGE in the
+.PN QueryXExtents8 ,
+.PN QueryXExtents16 ,
+.PN QueryXBitmaps8 , and
+.PN QueryXBitmaps16
+requests. The
+value that caused the error is included as extra data.
+.LP
+.IN "Error Codes" "EventMask" "@DEF@"
+.PN EventMask
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.br
+\fIevent-mask\fP\^: EVENTMASK bad event mask
+.IP
+This error is generated by an invalid EVENTMASK in the
+.PN SetEventMask
+request. The value that caused the error is
+included as extra data.
+.LP
+.IN "Error Codes" "AccessContext" "@DEF@"
+.PN AccessContext
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.br
+\fIac\fP\^: ACCESSCONTEXT unaccepted
+.PN AccessContext
+.IP
+This error is generated by an invalid ACCESSCONTEXT in the
+.PN FreeAC
+or
+.PN SetAuthorization
+request or by an
+.PN OpenBitmapFont
+request performed without sufficient authorization. In the
+first two cases, the ACCESSCONTEXT of the errant request is
+returned as extra data. In the third case, the current
+ACCESSCONTEXT is returned as extra data.
+.LP
+.IN "Error Codes" "IDChoice" "@DEF@"
+.PN IDChoice
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.br
+\fIid\fP\^: ID bad identifier
+.IP
+This error is generated by an invalid or already associated
+ACCESSCONTEXT identifier in a
+.PN CreateAC
+request or FONTID identifier
+in an
+.PN OpenBitmapFont
+request. The value that caused the error
+is included as extra data.
+.LP
+.IN "Error Codes" "Name" "@DEF@"
+.PN Name
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.IP
+This error is generated by a font name pattern that matches
+no fonts in an
+.PN OpenBitmapFont
+request or no catalogue names in a
+.PN SetCatalogues
+request.
+.LP
+.IN "Error Codes" "Resolution" "@DEF@"
+.PN Resolution
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 X value of errant resolution
+.br
+\fIy-resolution\fP\^: CARD16 Y value of errant resolution
+.br
+\fIpoint-size\fP\^: CARD16 point size of errant resolution
+.IP
+This error is generated in response to an invalid RESOLUTION
+structure in a
+.PN SetResolution
+request. The value that caused the
+error is included in the DATA-OR-UNUSED field and as extra data.
+.LP
+.IN "Error Codes" "Alloc" "@DEF@"
+.PN Alloc
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.IP
+This error is generated by any request for which the server
+lacks sufficient resources (especially memory).
+.LP
+.IN "Error Codes" "Length" "@DEF@"
+.PN Length
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.br
+\fIlength\fP\^: CARD32 bad length value
+.IP
+This error is generated by any request that has a length field
+greater than (MAXIMUM-REQUEST-LENGTH * 4) bytes. The value that
+caused the error is included as extra data.
+.LP
+.IN "Error Codes" "Implementation" "@DEF@"
+.PN Implementation
+.IP
+.TA .75i .75i .75i .75i
+\fIdata-or-unused\fP\^: CARD16 unused
+.IP
+This error may be generated in response to any request that
+the server is unable to process because it is deficient. Use
+of this error is highly discouraged and indicates lack of
+conformance to the protocol.
+.sp
+Additional errors may be defined by extensions.
+.NH 2
+Events
+.XS
+\*(SN Events
+.XE
+.LP
+Events may be generated in response to requests or at the server's discretion
+after the initial connection setup information has been exchanged. Each event
+is at least 12 bytes long and contains the following fields:
+.IP
+.TA .75i .75i .75i .75i
+\fItype\fP\^: CARD8 value of 2
+.br
+\fIevent-code\fP\^: CARD8
+.br
+\fIsequence-number\fP\^: CARD16
+.br
+\fIlength\fP\^: CARD32
+.br
+\fItimestamp\fP\^: TIMESTAMP
+.LP
+The TYPE field contains the value 2. The EVENT-CODE field specifies the number
+of the event and is in the range 0-127 for core events or the range 128-255 for
+extensions. The SEQUENCE-NUMBER field specifies the least significant 16 bits
+of the sequence number of the last request to have been processed by the
+server. The LENGTH field specifies the number of 4-byte units in this event
+packet and must always have a value of at least 3. The TIMESTAMP field
+specifies the server time when the event occurred. If LENGTH is greater than
+three, these fields are followed by (LENGTH - 3) * 4 bytes of additional data.
+.LP
+Events are described using the following syntax:
+.LP
+.RS
+.DS
+.TA .75i
+.ta .75i
+.PN EventName
+ \fIarg1\fP\^: type1
+ ...
+ \fIargN\fP\^: typeN
+
+ Description
+.DE
+.RE
+If an event does not provide any extra arguments, the \fIarg1\fP...\fIargN\fP
+lines are omitted from the description.
+.LP
+The core X Font Service protocol defines the following events:
+.LP
+.IN "KeepAlive" "" "@DEF@"
+.PN KeepAlive
+.IP
+This unsolicited, nonmaskable event may be sent by the
+server to verify that the connection has not been broken
+(for transports that do not provide this information).
+Clients should acknowledge receipt of this request
+by sending any request (such as
+.PN NoOp ")."
+.LP
+.IN "CatalogueListNotify" "" "@DEF@"
+.PN CatalogueListNotify
+.IP
+\fIadded\fP\^: BOOL
+.br
+\fIdeleted\fP\^: BOOL
+.IP
+This event is sent to clients that have included
+.PN CatalogueListChangeMask
+in their core event mask
+whenever the list of catalogues that are available has
+changed. The ADDED field is True if new catalogues have
+been added to the server, otherwise it is False. The
+DELETED field is True if any existing catalogues have
+been removed from the server, otherwise it is False.
+.LP
+.IN "FontListNotify" "" "@DEF@"
+.PN FontListNotify
+.IP
+\fIadded\fP\^: BOOL
+.br
+\fIdeleted\fP\^: BOOL
+.IP
+This event is sent to clients that have included
+.PN FontListChangeMask
+in their event mask whenever the
+list of fonts that are provided by the currently selected
+catalogues has changed. The ADDED field is True if new
+fonts have been added to any of the catalogues currently
+used by the client, otherwise it is False. The DELETED
+field is True if any existing fonts have been removed
+from any of catalogues used by the client, otherwise it
+is False.
+.sp
+Additional events may be defined by extensions.
+.NH 1
+Protocol Encoding
+.XS
+\*(SN Protocol Encoding
+.XE
+.LP
+Numbers that are prefixed with ``#x'' are in hexadecimal (base 16). All other
+numbers are in decimal. Requests, replies, errors, events, and compound types
+are described using the syntax:
+.RS
+.DS
+.TA .75i .75i .75i .75i
+
+ Name
+ \fIcount\fP \fIcontents\fP \fIname\fP
+ ...
+ \fIcount\fP \fIcontents\fP \fIname\fP
+.DE
+.RE
+where COUNT is the number of bytes in the data stream occupied by this
+field, CONTENTS is the name of the type as given in Section 4 or the value if
+this field contains a constant, and NAME is a description of this field.
+.LP
+Objects containing counted lists use a lowercase single-letter variable (whose
+scope is limited to the request, reply, event, or error in which it is found)
+to represent the number of objects in the list. These variables, and any
+expressions in which they are used, should be treated as unsigned integers.
+Multiple copies of an object are indicated by CONTENTS prefix ``LISTof''.
+.LP
+Unused bytes (whose value is undefined) will have a blank CONTENTS field and a
+NAME field of ``unused''. Zeroed bytes (whose value must be zero) will have a
+blank CONTENTS field and a NAME field of ``zero''. The expression pad(e)
+refers to the number of bytes needed to round a value ``e'' up to the closed
+multiple of four:
+.RS
+.DS
+
+ pad(e) = (4 - (e mod 4)) mod 4
+.DE
+.RE
+.NH 2
+Data Types
+.XS
+\*(SN Data Types
+.XE
+.sp 6p
+.LP
+ACCESSCONTEXT
+.sp 6p
+.TA .75i .75i .75i .75i
+4 CARD32 access context with at least one of the following bits set:
+.sp 6p
+#x1fffffff
+.sp 6p
+but none of the following bits set:
+.sp 6p
+#xe0000000 zero
+.sp 18p
+.LP
+.TS
+tab (@) ;
+l s s
+l l l.
+ALTERNATESERVER
+.sp 6p
+1@BOOL@subset
+1@n@length of name
+n@STRING8@name
+p@@unused, p=pad(n+2)
+.TE
+.sp 6p
+.TS
+tab (@) ;
+l s s
+l l l.
+AUTH
+.sp 6p
+2@n@length of name
+2@d@length of data
+n@STRING8@name
+p@@unused, p=pad(n)
+d@STRING8@data
+q@@unused, q=pad(d)
+.TE
+.sp 12p
+.LP
+BITMAPFORMAT
+.TA .75i .75i .75i .75i
+.sp 6p
+4 CARD32 value, union of the following bits:
+.TS
+tab (@) ;
+n l.
+#x00000001@ByteOrderMSB
+#x00000002@BitOrderMSB
+#x00000000@ImageRectMin
+#x00000004@ImageRectMaxWidth
+#x00000008@ImageRectMax
+#x00000000@ScanlinePad8
+#x00000100@ScanlinePad16
+#x00000200@ScanlinePad32
+#x00000300@ScanlinePad64
+#x00000000@ScanlineUnit8
+#x00001000@ScanlineUnit16
+#x00002000@ScanlineUnit32
+#x00003000@ScanlineUnit64
+.T&
+l s
+n l.
+.sp 6p
+except for the following bits which must be zero:
+.sp 6p
+#xffffccf0@zero
+.T&
+l s
+n l.
+.sp 6p
+and the following of which at most one bit may be set:
+.sp 6p
+#x0000000c@at most one bit can be set
+.TE
+.sp 12p
+.LP
+BITMAPFORMATMASK
+.sp 6p
+.TA .75i .75i .75i .75i
+4 CARD32 value, mask of the following bits:
+.TS
+tab (@) ;
+n l.
+#x00000001@ByteOrderMask
+#x00000002@BitOrderMask
+#x00000004@ImageRectMask
+#x00000008@ScanlinePadMask
+#x00000010@ScanlineUnitMask
+.T&
+l s
+n l.
+.sp 6p
+except for the following bits which must be zero:
+.sp 6p
+#xffffffe0@zero
+.TE
+.sp 12p
+.KS
+.LP
+BOOL
+.sp 6p
+.TA .75i .75i .75i .75i
+1 BOOL boolean, one of the following values:
+.sp 6p
+ 0 False
+.br
+ 1 True
+.sp 6p
+.KE
+.sp 18p
+.LP
+BYTE
+.sp 6p
+.TA .75i .75i .75i .75i
+1 BYTE unsigned byte of data
+.sp 18p
+.LP
+CARD8
+.sp 6p
+.TA .75i .75i .75i .75i
+1 CARD8 8-bit unsigned integer
+.sp 18p
+.LP
+CARD16
+.sp 6p
+.TA .75i .75i .75i .75i
+2 CARD16 16-bit unsigned integer
+.sp 18p
+.LP
+CARD32
+.sp 6p
+.TA .75i .75i .75i .75i
+4 CARD32 32-bit unsigned integer
+.sp 18p
+.LP
+CHAR2B
+.sp 6p
+.TA .75i .75i .75i .75i
+1 CARD8 byte1
+.br
+1 CARD8 byte2
+.sp 18p
+.LP
+EVENTMASK
+.sp 6p
+.TA .75i .75i .75i .75i
+4 CARD32 event mask
+.br
+.TS
+tab (@) ;
+l s
+n l.
+for core events, this is union of the following bits:
+.sp 6p
+#00000001@CatalogueListChangeMask
+#00000002@FontListChangeMask
+.T&
+l s
+n l.
+.sp 6p
+but none of the following bits set:
+.sp 6p
+#fffffffc@
+.TE
+extensions define their own sets of bits
+.sp 18p
+.LP
+FONTID
+.sp 6p
+.TA .75i .75i .75i .75i
+4 CARD32 font identifier with at least one of
+.br
+ the following bits set:
+.TS
+tab (@) ;
+n l.
+#x1fffffff
+.sp 6p
+.T&
+l s
+n l.
+but none of the following bits set:
+.sp 6p
+#xe0000000@zero
+.TE
+.sp 18p
+.LP
+INT8
+.br
+.TA .75i .75i .75i .75i
+1 INT8 8-bit signed integer
+.sp 18p
+.LP
+INT16
+.br
+.TA .75i .75i .75i .75i
+2 INT16 16-bit signed integer
+.sp 18p
+.LP
+INT32
+.br
+.TA .75i .75i .75i .75i
+4 INT32 32-bit signed integer
+.sp 18p
+.LP
+OFFSET32
+.br
+.TA .75i .75i .75i .75i
+4 CARD32 position (or integer value)
+.br
+4 CARD32 length
+.sp 18p
+.LP
+PROPINFO
+.br
+.TA .75i .75i .75i .75i
+4 n number of PROPOFFSET components
+.br
+4 m number of bytes of property data
+.br
+20*n PROPOFFSET property offsets into data block
+.br
+m LISTofBYTE property data block
+.sp 18p
+.LP
+PROPOFFSET
+.br
+.TA .75i .75i .75i .75i
+8 OFFSET32 name in data block
+.br
+8 OFFSET32 value in data block
+.br
+1 CARD8 type, one of the following values:
+.sp 6p
+ 0 String
+.br
+ 1 Unsigned
+.br
+ 2 Signed
+.br
+3 zero
+.sp 18p
+.LP
+RANGE
+.sp 6p
+.TA .75i .75i .75i .75i
+2 CHAR2B minimum character code
+.br
+2 CHAR2B maximum character code
+.sp 18p
+.LP
+RESOLUTION
+.sp 6p
+.TA .75i .75i .75i .75i
+2 CARD16 x resolution in pixels per inch
+.br
+2 CARD16 y resolution in pixels per inch
+.br
+2 CARD16 point size in decipoints
+.sp 18p
+.LP
+STRNAME
+.sp 6p
+.TA .75i .75i .75i .75i
+1 n length of name
+.br
+n STRING8 name
+.sp 18p
+.LP
+STRING8
+.sp 6p
+.TA .75i .75i .75i .75i
+n LISTofBYTE array of 8-bit character values
+.sp 18p
+.LP
+TIMESTAMP
+.sp 6p
+.TA .75i .75i .75i .75i
+4 CARD32 milliseconds since server time origin
+.sp 18p
+.LP
+XCHARINFO
+.sp 6p
+.TA .75i .75i .75i .75i
+2 INT16 left bearing
+.br
+2 INT16 right bearing
+.br
+2 INT16 width
+.br
+2 INT16 ascent
+.br
+2 INT16 descent
+.br
+2 CARD16 attributes
+.sp 18p
+.LP
+XFONTINFO
+.sp 6p
+.TA .75i .75i .75i .75i
+4 CARD32 flags, union of the following bits:
+.TS
+n l.
+#x00000001 AllCharactersExist
+#x00000002 InkInside
+#x00000004 HorizontalOverlap
+.T&
+l s
+n l.
+.sp 6p
+but none of the following bits set:
+.sp 6p
+#xfffffff8 zero
+.TE
+.TA .75i .75i .75i .75i
+4 RANGE range of characters in font
+.br
+1 CARD8 drawing direction
+.sp 6p
+ 0 LeftToRight
+.br
+ 1 RightToLeft
+.sp 6p
+1 unused
+.br
+2 CHAR2B default character
+.br
+12 XCHARINFO minimum bounds
+.br
+12 XCHARINFO maximum bounds
+.br
+2 INT16 font ascent
+.br
+2 INT16 font descent
+.br
+n PROPINFO property data
+.NH 2
+Requests
+.XS
+\*(SN Requests
+.XE
+.LP
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+open connection
+.sp 6p
+1@BYTE@byte order, one of the values:
+@#x42@Most Significant Byte first
+@#x6c@Least Significant Byte first
+1@CARD8@number of auth in auth-data
+2@2@client-major-protocol-version
+2@0@client-minor-protocol-version
+2@a/4@length of auth-data
+a@LISTofAUTH@auth-data
+=>@@
+2@CARD16@status
+@0@Success
+@1@Continue
+@2@Busy
+@3@Denied
+2@2@major version
+2@0@minor version
+1@CARD8@number of alternate-servers-hint
+1@CARD8@authorization-index
+2@a/4@length of alternate-servers-hint
+2@(d+q)/4@length of authorization-data
+a@LISTofALTERNATESERVER@alternate-servers-hint
+d@LISTofBYTE@authorization-data
+q@@unused, q=pad(d)
+.TE
+.LP
+If STATUS is Busy or Denied, the protocol stops and
+the connection is closed. If STATUS is Continue, the
+client is expected to respond with additional data, to
+which the server responds with a new status value and
+more data. This dialog continues until the status is
+set to Success, or until the server sets STATUS to Busy
+or Denied and closes the connection:
+.LP
+.TS
+tab (@) ;
+lw(.25i) lw(2i) l.
+->
+4@1+(d+q)/4@length
+d@LISTofBYTE@more-authorization-data
+q@@unused, q=pad(d)
+=>
+4@2+(d+q)/4@length
+2@CARD16@status
+@0@Success
+@1@Continue
+@2@Busy
+@3@Denied
+2@@unused
+d@LISTofBYTE@more-authorization-data
+q@@unused, q=pad(d)
+.TE
+.LP
+When STATUS is Success, the protocol resumes with the
+following sent by the server:
+.LP
+.TS
+tab (@) ;
+lw(.25i) lw(2i) l.
+4@3+(v+w)/4@length of rest of data
+2@CARD16@maximum-request-length
+2@v@length of vendor string
+4@CARD32@release-number
+v@STRING8@vendor-string
+w@@unused, w=pad(v)
+.TE
+.LP
+Once the connection has been established, the client may send the
+following requests:
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+NoOp
+.sp 6p
+1@0@major-opcode
+1@@unused
+2@1@length
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+ListExtensions
+1@1@major-opcode
+1@@unused
+2@1@length
+=>
+1@0@type reply
+1@CARD8@number of names
+2@CARD16@sequence-number
+4@2+(n+p)/4@length
+n@LISTofSTRNAME@names
+p@@unused, p=pad(n)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+QueryExtension
+.sp 6p
+1@2@major-opcode
+1@n@length of name
+2@1+(n+p)/4@length
+n@STRING8@name
+p@@unused, p=pad(n)
+=>
+1@0@type reply
+1@BOOL@present
+2@CARD16@sequence-number
+4@5@length
+2@CARD16@major-version
+2@CARD16@minor-version
+1@CARD8@major-opcode
+1@CARD8@first-event
+1@CARD8@number-events
+1@CARD8@first-error
+1@CARD8@number-errors
+3@@unused
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+ListCatalogues
+1@3@major-opcode
+1@@unused
+2@3+(n+p)/4@length
+4@CARD32@max-names
+2@n@length of pattern
+2@@unused
+n@STRING8@pattern
+p@@unused, p=pad(n)
+=>+
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@4+(n+p)/4@length
+4@CARD32@replies-following-hint
+4@CARD32@number of catalogue-names
+n@LISTofSTRNAME@catalogue-names
+p@@unused, p=pad(n)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+SetCatalogues
+1@4@major-opcode
+1@CARD8@number of catalogue-names
+2@1+(n+p)/4@length
+n@LISTofSTRNAME@catalogue-names
+p@@unused, p=pad(n)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+GetCatalogues
+.sp 6p
+1@5@major-opcode
+1@@unused
+2@1@length
+=>
+1@0@type reply
+1@CARD8@number of catalogue-names
+2@CARD16@sequence-number
+4@2+(n+p)/4@length
+n@LISTofSTRNAME@catalogue-names
+p@@unused, p=pad(n)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+SetEventMask
+.sp 6p
+1@6@major-opcode
+1@CARD8@extension-opcode
+2@2@length
+4@EVENTMASK@event-mask
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+GetEventMask
+.sp 6p
+1@7@major-opcode
+1@CARD8@extension-opcode
+2@1@length
+=>
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@3@length
+4@EVENTMASK@event-mask
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+CreateAC
+.sp 6p
+1@8@major-opcode
+1@CARD8@number of authorization-protocols
+2@2+a/4@length
+4@ACCESSCONTEXT@ac
+a@LISTofAUTH@authorization-protocols
+=>
+1@0@type reply
+1@CARD8@authorization-index
+2@CARD16@sequence-number
+4@3+(d+q)/4@length
+2@CARD16@status
+@0@Success
+@1@Continue
+@2@Busy
+@3@Denied
+2@@unused
+d@LISTofBYTE@authorization-data
+q@@unused, q=pad(d)
+.TE
+.LP
+If STATUS is Continue, the client is expected to respond
+with additional data, to which the server responds with
+a new status value and more data. This dialog continues
+until the status is set to Success, Busy, or Denied at
+which point the request is finished.
+.LP
+.TS
+tab (@) ;
+lw(.25i) lw(2i) l.
+->
+4@1+(d+q)/4@length
+d@LISTofBYTE@more-authorization-data
+q@@unused, q=pad(d)
+=>
+4@2+(d+q)/4@length
+2@CARD16@status
+@0@Success
+@1@Continue
+@2@Busy
+@3@Denied
+2@@unused
+d@LISTofBYTE@authorization-data
+q@@unused, q=pad(d)
+.TE
+.sp 12p
+.ne 3
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+FreeAC
+.sp 6p
+1@9@major-opcode
+1@@unused
+2@2@length
+4@ACCESSCONTEXT@ac
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+SetAuthorization
+.sp 6p
+1@10@major-opcode
+1@@unused
+2@2@length
+4@ACCESSCONTEXT@ac
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+SetResolution
+.sp 6p
+1@11@major-opcode
+1@n@number of resolutions
+2@1+(6*n+p)/4@length
+6*n@LISTofRESOLUTION@resolutions
+p@p=pad(6*n)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+GetResolution
+.sp 6p
+1@12@major-opcode
+1@@unused
+2@1@length
+=>
+1@0@type reply
+1@n@number of resolutions
+2@CARD16@sequence-number
+4@2+(6*n+p)/4@length
+6*n@LISTofRESOLUTION@resolutions
+p@@p=pad(6*n)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+ListFonts
+.sp 6p
+1@13@major-opcode
+1@@unused
+2@3+(n+p)/4@length
+4@CARD32@max-names
+2@n@length of pattern
+2@@unused
+n@STRING8@pattern
+p@@unused, p=pad(n)
+=>+
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@4+(n+p)/4@length
+4@CARD32@replies-following-hint
+4@CARD32@number of font-names
+n@LISTofSTRNAME@font-names
+p@@unused, p=pad(n)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+ListFontsWithXInfo
+.sp 6p
+1@14@major-opcode
+1@@unused
+2@3+(n+p)/4@length
+4@CARD32@max-names
+2@n@length of pattern
+2@@unused
+n@STRING8@pattern
+p@@unused, p=pad(n)
+.T&
+l s s
+lw(.25i) lw(2i) l.
+=>+(except for last in series)
+1@0@type reply
+1@n@length of name
+2@CARD16@sequence-number
+4@3+(n+p+f)/4@length
+4@CARD32@replies-hint
+f@XFONTINFO@font info
+n@STRING8@name
+p@@unused, p=pad(n)
+@@@
+.T&
+l s s
+lw(.25i) lw(2i) l.
+=>(last in series)
+1@0@type reply
+1@0@last-reply indicator
+2@CARD16@sequence-number
+4@2@reply length
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+OpenBitmapFont
+.sp 6p
+1@15@major-opcode
+1@@unused
+2@4+(n+p)/4@length
+4@FONTID@fontid
+4@BITMAPFORMATMASK@format-mask
+4@BITMAPFORMAT@format
+n@STRNAME@pattern
+p@@unused, p=pad(n)
+=>
+1@0@type reply
+1@BOOL@otherid-valid
+2@CARD16@sequence-number
+4@4@length
+4@FONTID@otherid
+1@BOOL@cachable
+3@@unused
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+QueryXInfo
+.sp 6p
+1@16@major-opcode
+1@@unused
+2@2@length
+4@FONTID@fontid
+=>
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@2+f/4@length
+f@XFONTINFO@font info
+p@@unused, p=pad(f\^)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+QueryXExtents8
+.sp 6p
+1@17@major-opcode
+1@BOOL@range
+2@3+(n+p)/4@length
+4@FONTID@fontid
+4@n@number chars entries
+n@STRING8@chars
+p@@unused, p=pad(n)
+=>
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@3+3*n@length
+4@n@number of extents
+12*n@LISTofXCHARINFO@extents
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+QueryXExtents16
+.sp 6p
+1@18@major-opcode
+1@BOOL@range
+2@3+(2*n+p)/4@length
+4@FONTID@fontid
+4@n@number chars entries
+2*n@LISTofCHAR2B@chars
+p@@unused, p=pad(2*n)
+=>
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@3+3*n@length
+4@n@number of extents
+12*n@LISTofXCHARINFO@extents
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+QueryXBitmaps8
+.sp 6p
+1@19@major-opcode
+1@BOOL@range
+2@4+(n+p)/4@length
+4@FONTID@fontid
+4@BITMAPFORMAT@format
+4@n@number of chars entries
+n@STRING8@chars
+p@@unused, p=pad(n)
+=>+
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@5+2*n+(m+p)/4@length
+4@CARD32@replies-following-hint
+4@n@number of offsets
+4@m@number of bytes of glyph images
+8*n@LISTofOFFSET32@offsets
+m@LISTofBYTE@glyph images
+p@@unused, p=pad(m)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+QueryXBitmaps16
+.sp 6p
+1@20@major-opcode
+1@BOOL@range
+2@4+(2*n+p)/4@length
+4@FONTID@fontid
+4@BITMAPFORMAT@format
+4@n@number of chars entries
+2*n@LISTofCHAR2B@chars
+p@@unused, p=pad(2*n)
+=>
+1@0@type reply
+1@@unused
+2@CARD16@sequence-number
+4@5+2*n+(m+p)/4@length
+4@CARD32@replies-following-hint
+4@n@number of offsets
+4@m@number of bytes of glyph images
+8*n@LISTofOFFSET32@offsets
+m@LISTofBYTE@glyph images
+p@@unused, p=pad(m)
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+lw(.25i) lw(2i) l.
+CloseFont
+.sp 6p
+1@21@major-opcode
+1@@unused
+2@2@length
+4@FONTID@fontid
+.TE
+.NH 2
+Errors
+.XS
+\*(SN Errors
+.XE
+.LP
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Request
+.sp 6p
+1@1@type error
+1@0@Request
+2@CARD16@sequence-number
+4@4@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Format
+.sp 6p
+1@1@type error
+1@1@Format
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+4@BITMAPFORMAT@bad-format
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Font
+.sp 6p
+1@1@type error
+1@2@Font
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+4@FONTID@bad-fontid
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Range
+.sp 6p
+1@1@type error
+1@3@Range
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+4@RANGE@bad-range
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+EventMask
+.sp 6p
+1@1@type error
+1@4@EventMask
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+4@EVENTMASK@event-mask
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+AccessContext
+.sp 6p
+1@1@type error
+1@5@AccessContext
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+4@ACCESSCONTEXT@access context
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+IDChoice
+.sp 6p
+1@1@type error
+1@6@IDChoice
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+4@FONTID@bad-fontid
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Name
+.sp 6p
+1@1@type error
+1@7@Name
+2@CARD16@sequence-number
+4@4@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Resolution
+.sp 6p
+1@1@type error
+1@8@Resolution
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+6@RESOLUTION@resolution
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Alloc
+.sp 6p
+1@1@type error
+1@9@Alloc
+2@CARD16@sequence-number
+4@4@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Length
+.sp 6p
+1@1@type error
+1@10@Length
+2@CARD16@sequence-number
+4@5@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+4@CARD32@bad-length
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+Implementation
+.sp 6p
+1@1@type error
+1@11@Implementation
+2@CARD16@sequence-number
+4@4@length
+4@TIMESTAMP@timestamp
+1@CARD8@major-opcode
+1@CARD8@minor-opcode
+2@@unused
+.TE
+.NH 2
+Events
+.XS
+\*(SN Events
+.XE
+.LP
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+KeepAlive
+.sp 6p
+1@2@type event
+1@0@event KeepAlive
+2@CARD16@sequence-number
+4@3@length
+4@TIMESTAMP@timestamp
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+CatalogueListNotify
+.sp 6p
+1@2@type event
+1@1@event CatalogueListNotify
+2@CARD16@sequence-number
+4@4@length
+4@TIMESTAMP@timestamp
+1@BOOL@added
+1@BOOL@deleted
+2@@unused
+.TE
+.sp 12p
+.TS
+tab (@) ;
+lfB s s
+n lw(2i) l.
+FontListNotify
+.sp 6p
+1@2@type event
+1@2@event FontListNotify
+2@CARD16@sequence-number
+4@4@length
+4@TIMESTAMP@timestamp
+1@BOOL@added
+1@BOOL@deleted
+2@@unused
+.TE
+.NH 1
+Acknowledgements
+.XS
+\*(SN Acknowledgements
+.XE
+.LP
+This document represents the culmination of several years of debate and
+experiments done under the auspices of the MIT X Consortium font working group.
+Although this was a group effort, the author remains responsible for any errors
+or omissions. The protocol presented here was primarily designed by Jim
+Fulton, Keith Packard, and Bob Scheifler. Special thanks goes to Ned
+Batchelder, Jim Flowers, and Axel Deininger for their invigorating comments
+which never failed to make this a better document.
+Stephen Gildea edited version 2 of this document.
+Finally, David Lemke
+deserves great credit for designing and coding the sample implementation.
+.NH 1
+References
+.XS
+\*(SN References
+.XE
+.LP
+All of the following documents are X Consortium standards available from
+the X Consortium.
+.LP
+[1] Scheifler, Robert W. ``X Window System Protocol Version 11''
+.LP
+[2] Adobe Systems. ``Bitmap Distribution Format 2.1''
+.LP
+[3] X Consortium. ``X Logical Font Description Conventions, Version 1.5''
+.bp
+.XS
+Appendix A \- Suggested Licensing Policies
+.XE
+.ce 10
+.sp 5
+\s+2\fBAppendix A\fP\s-2
+.sp
+\s+1\fBSuggested Licensing Policies\fP\s-1
+.ce 0
+.sp
+.LP
+The authorization data passed by the client in the initial connection
+setup information may be used by the font server to implement restrictions
+on which fonts may be accessed. Furthermore, the font server is free to
+refuse new connections at any time.
+.LP
+Configuration or management of the license restrictions is outside the scope of
+the font service protocol and is done in a server-dependent manner. Possible
+policies might include, but are not limited to, combinations of the following:
+.IP "a."
+No restrictions - anyone may access any fonts. The server neither
+refuses any connections nor generates AccessContext errors on any
+fonts. For environments without specially-licensed fonts, this is
+sufficient.
+.IP "b."
+Per-machine - only those clients connecting from a known set of
+machines are permitted access. The server could get the address
+of the connection and look in a list of allowed machines.
+.IP "c."
+Per-user - only a known set of users may access the fonts. The
+server can use the authorization data (such as a Kerberos ticket
+or a Secure RPC credential) to verify the identity of the user
+and then look in a list of allowed users.
+.IP "d."
+Simultaneous Use - only a certain number of clients may use a given
+font at any one time. Additional clients would receive AccessContext
+errors if they attempt to open the font. This is only effective if
+the initial clients keep the font open for the entire time that it
+is being used (even if all of the data has been transmitted and is
+being cached).
+.IP "e."
+Postage Meter - a particular font may only be accessed a limited
+number of times before its license must be renewed. Each time
+the font is opened, the server decrements a counter. When the
+counter reaches zero, all further attempts to open the font
+return an AccessContext error.
+.LP
+It should be noted that chaining of font servers (obtaining font data from
+other font servers) may conflict with certain license policies.
+.bp
+.XS
+Appendix B \- Implementation Suggestions
+.XE
+.sp 5
+.ce 10
+\s+2\fBAppendix B\fP\s-2
+.sp
+\s+1\fBImplementation Suggestions\s-1\fP
+.ce 0
+.sp
+.LP
+Font server implementations will probably wish to use techniques such as the
+following to avoid limits on the number of simultaneous connections:
+.IP "a."
+The initial connection information returned by the font
+server contains the names of other font servers that
+may be used as substitutes. A font server may refuse to
+accept a connection, indicating that the client should
+try one of the alternatives instead.
+.IP "b."
+On operating systems that support processing forking, font
+servers might choose to fork so that the child can continue
+processing the existing connections and the parent can accept
+new connections. Such implementations are encouraged to use
+shared memory so that in-memory font databases can be shared.
+.IP "c."
+On operating systems that support passing stream file descriptors
+between processes, cooperating font servers could collect
+connections in a single process when there are few connections
+and spread them among several processes as the load increases.
+.IP "d."
+If a font client is unable to connect to a server (as opposed
+to having the connection terminated), it should retry for an
+implementation-dependent length of time (see Xlib's
+handling of ECONNREFUSED in XConnDis.c).
+.\"
+.\" print Table of Contents page
+.if o .bp \" blank page to make count even
+.bp 1
+.af PN i
+.PX
diff --git a/specs/ICCCM/icccm.ms b/specs/ICCCM/icccm.ms
new file mode 100644
index 0000000..bb3478b
--- /dev/null
+++ b/specs/ICCCM/icccm.ms
@@ -0,0 +1,5719 @@
+.\" $Xorg: icccm.ms,v 1.3 2000/08/17 19:42:08 cpqbld Exp $
+.\" Use tbl, eqn, -ms, and macros.t
+.\" @(#)icccm.ms 1.50 16 Apr 1994 14:13:55
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+.hw time-stamp
+.\"
+.\" --- bP --- bulleted paragraph macro
+.\"
+.de bP
+.IP \(bu 4
+..
+.\"
+.\" --- cT --- centered title; centers $1, adds TOC entry unless $2 is "no"
+.\"
+.de cT
+\\& \" filler so that the following .sp really leaves a space
+.sp 1
+.ce 1
+\\s+1\\fB\\$1\\fP\\s-1
+.sp 1
+.if !'\\$2'no' \{\
+.XS \\n(PN
+\\$1
+.XE
+\}
+..
+.\"
+.\" --- dA --- double arrow string
+.\"
+.ds dA "\o'\(<-\(->'
+\&
+.sp 8
+.ce 9999
+.B
+\s+2Inter-Client Communication Conventions Manual\s0
+
+Version 2.0
+
+X Consortium Standard
+
+X Version 11, Release 6.4
+.R
+.ce 0
+.sp 6
+.ce 9999
+\s+1David Rosenthal\s0
+.sp 6p
+\s+1Sun Microsystems, Inc.\s0
+.sp 2
+\s+1Version 2 edited by Stuart W. Marks\s0
+.sp 6p
+\s+1SunSoft, Inc.\s0
+.ce 0
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+X Window System is a trademark of X Consortium, Inc.
+.LP
+.LP
+Copyright \(co 1988, 1991, 1993, 1994
+X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+.LP
+.sp 2
+Copyright \(co 1987, 1988, 1989, 1993, 1994
+Sun Microsystems, Inc.
+.LP
+Permission to use, copy, modify, and distribute this documentation
+for any purpose and without fee is hereby granted, provided
+that the above copyright notice and this permission
+notice appear in all copies.
+Sun Microsystems makes no representations about the
+suitability for any purpose of the information in this document.
+This documentation is provided as is without express or implied warranty.
+.ps 11
+.nr PS 11
+.af PN i
+.EF ''\\\\n(PN''
+.OF ''\\\\n(PN''
+.bp +4 \" the TOC is three pages long
+.\" force preface onto odd page
+.if e \{\
+\&
+.bp
+\}
+.cT "Preface to Version 2.0"
+.LP
+The goal of the ICCCM Version 2.0 effort was to add new facilities, to fix
+problems with earlier drafts, and to improve readability and
+understandability, while maintaining compatibility with the earlier
+versions. This document is the product of over two years of discussion among
+the members of the X Consortium's \fBwmtalk\fP working group. The following
+people deserve thanks for their contributions:
+.LP
+.Ds
+.ta 3i
+Gabe Beged-Dov Bill Janssen
+Chan Benson Vania Joloboff
+Jordan Brown Phil Karlton
+Larry Cable Kaleb Keithley
+Ellis Cohen Mark Manasse
+Donna Converse Ralph Mor
+Brian Cripe Todd Newman
+Susan Dahlberg Bob Scheifler
+Peter Daifuku Keith Taylor
+Andrew deBlois Jim VanGilder
+Clive Feather Mike Wexler
+Stephen Gildea Michael Yee
+Christian Jacobi
+.De
+.LP
+It has been a privilege for me to work with this fine group of people.
+.sp
+Stuart W. Marks
+.br
+December 1993
+.br
+.bp
+.cT "Preface to Version 1.1"
+.LP
+David Rosenthal had overall architectural responsibility
+for the conventions defined in this document;
+he wrote most of the text and edited the document,
+but its development has been a communal effort.
+The details were thrashed out in meetings at the January 1988 MIT X Conference
+and at the 1988 Summer Usenix conference,
+and through months (and megabytes) of argument
+on the
+.PN wmtalk
+mail alias.
+Thanks are due to everyone who contributed,
+and especially to the following people.
+.LP
+For the Selection section:
+.LP
+.Ds
+Jerry Farrell
+Phil Karlton
+Loretta Guarino Reid
+Mark Manasse
+Bob Scheifler
+.De
+.LP
+For the Cut-Buffer section:
+.LP
+.Ds
+Andrew Palay
+.De
+.LP
+For the Window and Session Manager sections:
+.LP
+.Ds
+.ta 3i
+Todd Brunhoff Matt Landau
+Ellis Cohen Mark Manasse
+Jim Fulton Bob Scheifler
+Hania Gajewska Ralph Swick
+Jordan Hubbard Mike Wexler
+Kerry Kimbrough Glenn Widener
+Audrey Ishizaki
+.De
+.LP
+For the Device Color Characterization section:
+.Ds
+Keith Packard
+.De
+.LP
+In addition, thanks are due to those who contributed to the public review:
+.LP
+.Ds
+.ta 3i
+Gary Combs John Irwin
+Errol Crary Vania Joloboff
+Nancy Cyprych John Laporta
+John Diamant Ken Lee
+Clive Feather Stuart Marks
+Burns Fisher Alan Mimms
+Richard Greco Colas Nahaboo
+Tim Greenwood Mark Patrick
+Kee Hinckley Steve Pitschke
+Brian Holt Brad Reed
+John Interrante John Thomas
+.De
+.bp 1
+.af PN 1
+.EH '\fBInter-Client Communication Conventions\fP''\fBX11, Release 6.4\fP'
+.OH '\fBInter-Client Communication Conventions\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.nH 1 Introduction
+.LP
+It was an explicit design goal of X Version 11 to specify mechanism,
+not policy.
+As a result,
+a client that converses with the server using the protocol defined
+by the \fIX Window System Protocol\fP, \fIVersion 11\fP may operate correctly
+in isolation but may not coexist properly with others sharing the same server.
+.LP
+Being a good citizen in the X Version 11 world involves adhering to
+conventions that govern inter-client communications in the following areas:
+.bP
+Selection mechanism
+.bP
+Cut buffers
+.bP
+Window manager
+.bP
+Session manager
+.bP
+Manipulation of shared resources
+.bP
+Device color characterization
+.LP
+This document proposes suitable conventions without attempting to enforce
+any particular user interface.
+To permit clients written in different languages to communicate,
+these conventions are expressed solely in terms of protocol operations,
+not in terms of their associated Xlib interfaces,
+which are probably more familiar.
+The binding of these operations to the Xlib interface for C
+and to the equivalent interfaces for other languages
+is the subject of other documents.
+.nH 2 "Evolution of the Conventions"
+.LP
+In the interests of timely acceptance,
+the \fIInter-Client Communication Conventions Manual\fP (ICCCM)
+covers only a minimal set of required conventions.
+These conventions will be added to and updated as appropriate,
+based on the experiences of the X Consortium.
+.LP
+As far as possible,
+these conventions are upwardly compatible with those in the February 25, 1988,
+draft that was distributed with the X Version 11, Release 2, of the software.
+In some areas,
+semantic problems were discovered with those conventions,
+and, thus, complete upward compatibility could not be assured.
+These areas are noted in the text and are summarized in Appendix A.
+.LP
+In the course of developing these conventions,
+a number of minor changes to the protocol were identified as desirable.
+They also are identified in the text, are summarized in Appendix B,
+and are offered as input to a future protocol revision process.
+If and when a protocol revision incorporating these changes is undertaken,
+it is anticipated that the ICCCM will need to be revised.
+Because it is difficult to ensure that clients and servers are upgraded
+simultaneously,
+clients using the revised conventions should examine the minor protocol
+revision number and be prepared to use the older conventions
+when communicating with an older server.
+.LP
+It is expected that these revisions will ensure that clients using
+the conventions appropriate to protocol minor revision \fIn\fP
+will interoperate correctly with those that use the conventions
+appropriate to protocol minor revision \fIn\fP + 1 if the server supports both.
+.nH 2 Atoms
+.LP
+Many of the conventions use atoms.
+To assist the reader,
+the following sections attempt to amplify the description of atoms
+that is provided in the protocol specification.
+.nH 3 "What Are Atoms?"
+.LP
+At the conceptual level,
+atoms are unique names that clients can use to communicate information
+to each other.
+They can be thought of as a bundle of octets,
+like a string but without an encoding being specified.
+The elements are not necessarily ASCII characters,
+and no case folding happens.\**
+.FS
+The comment in the protocol specification for
+.PN InternAtom
+that ISO Latin-1 encoding should be used is in the nature of a convention;
+the server treats the string as a byte sequence.
+.FE
+.LP
+The protocol designers felt that passing these
+sequences of bytes back and forth across the wire would be too costly.
+Further, they thought it important that events
+as they appear on the wire have a fixed size (in fact, 32 bytes)
+and that because some events contain atoms, a fixed-size representation
+for them was needed.
+.LP
+To allow a fixed-size representation,
+a protocol request
+.Pn ( InternAtom )
+was provided to register a byte sequence with the server,
+which returns a 32-bit value (with the top three bits zero)
+that maps to the byte sequence.
+The inverse operator is also available
+.Pn ( GetAtomName ).
+.nH 3 "Predefined Atoms"
+.LP
+The protocol specifies a number of atoms as being predefined:
+.QP
+Predefined atoms are not strictly necessary
+and may not be useful in all environments,
+but they will eliminate many
+.PN InternAtom
+requests in most applications.
+Note that they are predefined only in the sense of having numeric values,
+not in the sense of having required semantics.
+.LP
+Predefined atoms are an implementation trick to avoid the cost of interning
+many of the atoms that are expected to be used during the startup phase
+of all applications.
+The results of the
+.PN Intern\%Atom
+requests, which require a handshake, can be assumed \fIa priori\fP.
+.LP
+Language interfaces should probably cache the atom-name mappings
+and get them only when required.
+The CLX interface, for instance, makes no distinction between predefined atoms
+and other atoms; all atoms are viewed as symbols at the interface.
+However, a CLX implementation will typically keep a symbol or atom cache
+and will typically initialize this cache with the predefined atoms.
+.nH 3 "Naming Conventions"
+.LP
+The built-in atoms are composed of uppercase ASCII characters with the
+logical words separated by an underscore character (_), for example,
+WM_ICON_NAME.
+The protocol specification recommends that atoms used
+for private vendor-specific reasons should begin with an underscore.
+To prevent conflicts among organizations,
+additional prefixes should be chosen
+(for example, _DEC_WM_DECORATION_GEOMETRY).
+.LP
+The names were chosen in this fashion to make it easy to use them in a
+natural way within LISP.
+Keyword constructors allow the programmer to specify the atoms as LISP atoms.
+If the atoms were not all uppercase,
+special quoting conventions would have to be used.
+.nH 3 Semantics
+.LP
+The core protocol imposes no semantics on atoms except as they are used in
+FONTPROP structures.
+For further information on FONTPROP semantics,
+see the \fIX Logical Font Description Conventions\fP.
+.nH 3 "Name Spaces"
+.LP
+The protocol defines six distinct spaces in which atoms are interpreted.
+Any particular atom may or may not have some valid interpretation
+with respect to each of these name spaces.
+.br
+.ne 6
+.TS H
+l l lw(3.6i).
+_
+.sp 6p
+.B
+Space Briefly Examples
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Property name Name WM_HINTS, WM_NAME, RGB_BEST_MAP, .\^.\^.
+Property type Type WM_HINTS, CURSOR, RGB_COLOR_MAP, .\^.\^.
+Selection name Selection PRIMARY, SECONDARY, CLIPBOARD
+Selection target Target FILE_NAME, POSTSCRIPT, PIXMAP, .\^.\^.
+Font property QUAD_WIDTH, POINT_SIZE, .\^.\^.
+T{
+.PN ClientMessage
+type
+T} T{
+T} T{
+WM_SAVE_YOURSELF, _DEC_SAVE_EDITS, \&.\^.\^.
+T}
+.sp 6p
+_
+.TE
+.nH 3 "Discriminated Names"
+.LP
+Sometimes a protocol requires an arbitrary number of similar
+objects that need unique names (usually because the objects are created
+dynamically, so that names cannot be invented in advance). For example, a
+colormap-generating program might use the selection mechanism to offer
+colormaps for each screen and so needs a selection name for each screen.
+Such names are called \*Qdiscriminated names\*U and are discriminated by
+some entity. This entity can be:
+.DS
+ A screen
+ An X resource (a window, a colormap, a visual, etc.)
+ A client
+.DE
+.LP
+If it is only necessary to generate a fixed set of names for each value
+of the discriminating entity, then the discriminated names are formed by
+suffixing an ordinary name according to the value of the entity.
+.LP
+If \fIname\fP is a descriptive portion for the name, \fId\fP is a decimal
+number with no leading zeroes, and \fIx\fP is a hexadecimal number with
+exactly 8 digits, and using uppercase letters, then such discriminated names
+shall have the form:
+.br
+.ne 6
+.TS
+lB lB lB
+l l l .
+_
+.sp 6p
+Name Discriminated by Form Example
+.sp 6p
+_
+.sp 6p
+screen number \fIname\fP_S\fId\fP WM_COMMS_S2
+X resource \fIname\fP_R\fIx\fP GROUP_LEADER_R1234ABCD
+.sp 6p
+_
+.TE
+.LP
+To discriminate a name by client, use an X resource ID created by that
+client. This resource can be of any type.
+.LP
+Sometimes it is simply necessary to generate a unique set of names (for
+example, for the properties on a window used by a MULTIPLE selection).
+These names should have the form:
+.DS
+.ta 2i
+U\fId\fP (e.g., U0 U1 U2 U3 .\^.\^.)
+.DE
+.LP
+if the names stand totally alone, and the form:
+.DS
+.ta 2i
+\fIname\fP_U\fId\fP (e.g., FOO_U0 BAR_U0 FOO_U1 BAR_U1 .\^.\^.)
+.DE
+.LP
+if they come in sets (here there are two sets, named \*QFOO\*U and
+\*QBAR\*U). The stand-alone U\fId\fP form should be used only if it is
+clear that the module using it has complete control over the relevant
+namespace or has the active cooperation of all other entities that might
+also use these names. (Naming properties on a window created specifically
+for a particular selection is such a use; naming properties on the root
+window is almost certainly not.)
+.LP
+In a particularly difficult case, it might be necessary to combine both
+forms of discrimination. If this happens, the U form should come after
+the other form, thus:
+.DS
+ FOO_R12345678_U23
+.DE
+.NT Rationale
+Existing protocols will not be changed to use these naming conventions,
+because doing so will cause too much disruption. However, it is expected
+that future protocols \(em both standard and private \(em will use these
+conventions.
+.NE
+.nH 1 "Peer-to-Peer Communication by Means of Selections"
+.LP
+Selections are the primary mechanism that X Version 11 defines
+for the exchange of information between clients,
+for example, by cutting and pasting between windows.
+Note that there can be an arbitrary number of selections
+(each named by an atom) and that they are global to the server.
+Section 2.6 discusses the choice of an atom.
+Each selection is owned by a client and is attached to a window.
+.LP
+Selections communicate between an owner and a requestor.
+The owner has the data representing the value of its selection,
+and the requestor receives it.
+A requestor wishing to obtain the value of a selection provides the following:
+.bP
+The name of the selection
+.bP
+The name of a property
+.bP
+A window
+.bP
+The atom representing the data type required
+.bP
+Optionally, some parameters for the request
+.LP
+If the selection is currently owned,
+the owner receives an event and is expected to do the following:
+.bP
+Convert the contents of the selection to the requested data type
+.bP
+Place this data in the named property on the named window
+.bP
+Send the requestor an event to let it know the property is available
+.LP
+Clients are strongly encouraged to use this mechanism.
+In particular,
+displaying text in a permanent window without providing the ability
+to select and convert it into a string is definitely considered antisocial.
+.LP
+Note that all data transferred between an owner and a requestor must usually
+go by means of the server in an X Version 11 environment.
+A client cannot assume that another client can open the same files
+or even communicate directly.
+The other client may be talking to the server by means of
+a completely different networking mechanism (for example, one client might
+be DECnet and the other TCP/IP).
+Thus, passing indirect references to data
+(such as, file names, host names, and port numbers)
+is permitted only if both clients specifically agree.
+.nH 2 "Acquiring Selection Ownership"
+.LP
+A client wishing to acquire ownership of a particular selection
+should call
+.PN SetSelectionOwner,
+which is defined as follows:
+.LP
+.sM
+.IN "SetSelectionOwner" "" "@DEF@"
+.PN SetSelectionOwner
+.IP "" .2i
+\fIselection\fP\^: ATOM
+.br
+\fIowner\fP\^: WINDOW or
+.PN None
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+.eM
+.LP
+The client should set the specified selection to the atom that represents
+the selection,
+set the specified owner to some window that the client created,
+and set the specified time to some time between the current last-change time
+of the selection concerned and the current server time.
+This time value usually will be obtained from the timestamp of the event
+that triggers the acquisition of the selection.
+Clients should not set the time
+value to
+.PN CurrentTime ,
+because if they do so, they have no way of finding
+when they gained ownership of the selection.
+Clients must use a window they created so that requestors
+can route events to the owner of the selection.\**
+.FS
+At present, no part of the protocol requires requestors
+to send events to the owner of a selection.
+This restriction is imposed to prepare for possible future extensions.
+.FE
+.NT Convention
+Clients attempting to acquire a selection must set the time value of the
+.PN Set\%Selection\%Owner
+request to the timestamp of the event triggering the acquisition attempt,
+not to
+.PN CurrentTime .
+A zero-length append to a property is a way to obtain a timestamp for
+this purpose;
+the timestamp is in the corresponding
+.PN Property\%Notify
+event.
+.NE
+.LP
+If the time in the
+.PN SetSelectionOwner
+request is in the future relative to the server's current time
+or is in the past relative to the last time the specified selection
+changed hands, the
+.PN SetSelectionOwner
+request appears to the client to succeed,
+but ownership is not actually transferred.
+.LP
+Because clients cannot name other clients directly,
+the specified owner window is used to refer to the owning client
+in the replies to
+.PN GetSelectionOwner ,
+in
+.PN SelectionRequest
+and
+.PN SelectionClear
+events, and possibly as a place to put properties describing the selection
+in question.
+To discover the owner of a particular selection,
+a client should invoke
+.PN GetSelectionOwner ,
+which is defined as follows:
+.LP
+.sM
+.IN "GetSelectionOwner" "" "@DEF@"
+.PN GetSelectionOwner
+.IP "" .2i
+\fIselection\fP\^: ATOM
+.LP
+\(->
+.IP "" .2i
+owner: WINDOW or
+.PN None
+.LP
+.eM
+.NT Convention
+Clients are expected to provide some visible confirmation
+of selection ownership.
+To make this feedback reliable,
+a client must perform a sequence like the following:
+.sp
+.Ds 0
+SetSelectionOwner(selection=PRIMARY, owner=Window, time=timestamp)
+owner = GetSelectionOwner(selection=PRIMARY)
+if (owner != Window) Failure
+.De
+.NE
+.LP
+If the
+.PN SetSelectionOwner
+request succeeds (not merely appears to succeed),
+the client that issues it is recorded by the server as being the owner
+of the selection for the time period starting at the specified time.
+.nH 2 "Responsibilities of the Selection Owner"
+.LP
+When a requestor wants the value of a selection,
+the owner receives a
+.PN SelectionRequest
+event, which is defined as follows:
+.LP
+.sM
+.IN "SelectionRequest" "" "@DEF@"
+.PN SelectionRequest
+.IP "" .2i
+\fIowner\fP\^: WINDOW
+.br
+\fIselection\fP\^: ATOM
+.br
+\fItarget\fP\^: ATOM
+.br
+\fIproperty\fP\^: ATOM or
+.PN None
+.br
+\fIrequestor\fP\^: WINDOW
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+.eM
+.LP
+The specified owner and selection will be the values that were specified in
+the
+.PN SetSelection\%Owner
+request.
+The owner should compare the timestamp with the period
+it has owned the selection and, if the time is outside,
+refuse the
+.PN SelectionRequest
+by sending the requestor window a
+.PN SelectionNotify
+event with the property set to
+.PN None
+(by means of a
+.PN SendEvent
+request with an empty event mask).
+.LP
+More advanced selection owners are free to maintain a history
+of the value of the selection and to respond to requests for the
+value of the selection during periods they owned it
+even though they do not own it now.
+.LP
+If the specified property is
+.PN None ,
+the requestor is an obsolete client.
+Owners are encouraged to support these clients by using the specified target
+atom as the property name to be used for the reply.
+.LP
+Otherwise,
+the owner should use the target to decide the form into which the selection
+should be converted.
+Some targets may be defined such that requestors can pass parameters
+along with the request. The owner will find these parameters in the
+property named in the selection request. The type, format, and
+contents of this property are dependent upon the definition of the
+target. If the target is not defined to have parameters, the owner
+should ignore the property if it is present.
+If the selection cannot be converted
+into a form based on the target (and parameters, if any),
+the owner should refuse the
+.PN Selection\%Request
+as previously described.
+.LP
+If the specified property is not
+.PN None ,
+the owner should place the data resulting from converting the selection
+into the specified property on the requestor window
+and should set the property's type to some appropriate value,
+which need not be the same as the specified target.
+.NT Convention
+All properties used to reply to
+.PN SelectionRequest
+events must be placed on the requestor window.
+.NE
+.LP
+In either case,
+if the data comprising the selection cannot be stored on the requestor window
+(for example, because the server cannot provide sufficient memory),
+the owner must refuse the
+.PN SelectionRequest ,
+as previously described.
+See also section 2.5.
+.LP
+If the property is successfully stored,
+the owner should acknowledge the successful conversion
+by sending the requestor window a
+.PN SelectionNotify
+event (by means of a
+.PN SendEvent
+request with an empty mask).
+.PN SelectionNotify
+is defined as follows:
+.LP
+.sM
+.IN "SelectionNotify" "" "@DEF@"
+.PN SelectionNotify
+.IP "" .2i
+\fIrequestor\fP\^: WINDOW
+.br
+\fIselection\fP, \fItarget\fP\^: ATOM
+.br
+\fIproperty\fP\^: ATOM or
+.PN None
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+.eM
+.LP
+The owner should set the specified selection, target, time,
+and property arguments to the values received in the
+.PN SelectionRequest
+event.
+(Note that setting the property argument to
+.PN None
+indicates that the conversion requested could not be made.)
+.NT Convention
+The selection, target, time, and property arguments in the
+.PN SelectionNotify
+event should be set to the values received in the
+.PN SelectionRequest
+event.
+.NE
+.LP
+If the owner receives more than one
+.PN Selection\%Request
+event with the same requestor, selection, target, and timestamp it must
+respond to them in the same order in which they were received.
+.NT Rationale
+It is possible for a requestor to have multiple outstanding requests that
+use the same requestor window, selection, target, and timestamp, and that
+differ only in the property. If this occurs, and one of the conversion
+requests fails, the resulting
+.PN Selection\%Notify
+event will have its property argument set to
+.PN None .
+This may make it impossible for the requestor to determine which conversion
+request had failed, unless the requests are responded to in order.
+.NE
+.LP
+The data stored in the property must eventually be deleted.
+A convention is needed to assign the responsibility for doing so.
+.NT Convention
+Selection requestors are responsible for deleting properties whose
+names they receive in
+.PN SelectionNotify
+events (see section 2.4) or in properties with type MULTIPLE.
+.NE
+.LP
+A selection owner will often need confirmation that the data comprising the
+selection has actually been transferred.
+(For example,
+if the operation has side effects on the owner's internal data structures,
+these should not take place until the requestor has indicated
+that it has successfully received the data.)
+Owners should express interest in
+.PN PropertyNotify
+events for the specified requestor window
+and wait until the property in the
+.PN SelectionNotify
+event has been deleted before assuming that the selection data has been
+transferred. For the MULTIPLE request, if the different conversions require
+separate confirmation, the selection owner can also watch for the deletion
+of the individual properties named in the property in the
+.PN Selection\%Notify
+event.
+.LP
+When some other client acquires a selection,
+the previous owner receives a
+.PN SelectionClear
+event, which is defined as follows:
+.LP
+.sM
+.IN "SelectionClear" "" "@DEF@"
+.PN SelectionClear
+.IP "" .2i
+\fIowner\fP\^: WINDOW
+.br
+\fIselection\fP\^: ATOM
+.br
+\fItime\fP\^: TIMESTAMP
+.LP
+.eM
+.LP
+The timestamp argument is the time at which the ownership changed hands,
+and the owner argument is the window the previous owner specified in its
+.PN SetSelectionOwner
+request.
+.LP
+If an owner loses ownership while it has a transfer in progress (that is,
+before it receives notification that the requestor has received all the data),
+it must continue to service the ongoing transfer until it is complete.
+.LP
+If the selection value completely changes, but the owner happens
+to be the same client (for example, selecting a totally different
+piece of text in the same \fBxterm\fP as before), then the client should
+reacquire the selection ownership as if it were not the owner,
+providing a new timestamp. If the selection value is modified, but
+can still reasonably be viewed as the same selected object,\** the
+owner should take no action.
+.FS
+The division between these two cases is a matter of judgment
+on the part of the software developer.
+.FE
+.nH 2 "Giving Up Selection Ownership"
+.LP
+Clients may either give up selection ownership voluntarily
+or lose it forcibly as the result of some other client's actions.
+.nH 3 "Voluntarily Giving Up Selection Ownership"
+.LP
+To relinquish ownership of a selection voluntarily,
+a client should execute a
+.PN SetSelection\%Owner
+request for that selection atom, with owner specified as
+.PN None
+and the time specified as the timestamp that was used to acquire the selection.
+.LP
+Alternatively,
+the client may destroy the window used as the owner value of the
+.PN SetSelection\%Owner
+request, or the client may terminate.
+In both cases,
+the ownership of the selection involved will revert to
+.PN None .
+.nH 3 "Forcibly Giving Up Selection Ownership"
+.LP
+If a client gives up ownership of a selection
+or if some other client executes a
+.PN SetSelection\%Owner
+for it and thus reassigns it forcibly,
+the previous owner will receive a
+.PN Selection\%Clear
+event. For the definition of a
+.PN Selection\%Clear
+event, see section 2.2.
+.LP
+The timestamp is the time the selection changed hands.
+The specified owner is the window that was specified by the current owner
+in its
+.PN SetSelectionOwner
+request.
+.nH 2 "Requesting a Selection"
+.LP
+A client that wishes to obtain the value of a selection in a particular
+form (the requestor) issues a
+.PN ConvertSelection
+request, which is defined as follows:
+.LP
+.sM
+.IN "ConvertSelection" "" "@DEF@"
+.PN ConvertSelection
+.IP "" .2i
+\fIselection\fP, \fItarget\fP\^: ATOM
+.br
+\fIproperty\fP\^: ATOM or
+.PN None
+.br
+\fIrequestor\fP\^: WINDOW
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+.eM
+.LP
+The selection argument specifies the particular selection involved,
+and the target argument specifies the required form of the information.
+For information about the choice of suitable atoms to use,
+see section 2.6.
+The requestor should set the requestor argument to a window that it created;
+the owner will place the reply property there.
+The requestor should set the time argument to the timestamp on the event
+that triggered the request for the selection value.
+Note that clients should not specify
+.PN CurrentTime .
+.NT Convention
+Clients should not use
+.PN CurrentTime
+for the time argument of a
+.PN ConvertSelection
+request.
+Instead, they should use the timestamp of the event that caused the request
+to be made.
+.NE
+.LP
+The requestor should set the property argument to the name of a property
+that the owner can use to report the value of the selection.
+Requestors should ensure that the named property does not exist
+on the window before issuing the
+.PN Convert\%Selection
+request.\** The exception to this rule is when the requestor intends to pass
+parameters with the request (see below).
+.NT Rationale
+It is necessary for requestors to delete the property before issuing the
+request so that the target can later be extended to take parameters without
+introducing an incompatibility. Also note that the requestor of a selection
+need not know the client that owns the selection nor the window on which
+the selection was acquired.
+.NE
+.FS
+This requirement is new in version 2.0, and, in general, existing
+clients do not conform to this requirement. To prevent these clients
+from breaking, no existing targets should be extended to take
+parameters until sufficient time has passed for clients to be updated.
+Note that the MULTIPLE target was defined to take parameters in version
+1.0 and its definition is not changing. There is thus no conformance
+problem with MULTIPLE.
+.FE
+.LP
+Some targets may be defined such that requestors can pass parameters
+along with the request. If the requestor wishes to provide parameters
+to a request, they should be placed in the specified property on the
+requestor window before the requestor issues the
+.PN Convert\%Selection
+request, and this property should be named in the request.
+.LP
+Some targets may be defined so that parameters are optional. If no
+parameters are to be supplied with the request of such a target, the
+requestor must ensure that the property does not exist before issuing
+the
+.PN Convert\%Selection
+request.
+.LP
+The protocol allows the property field to be set to
+.PN None ,
+in which case the owner is supposed to choose a property name.
+However, it is difficult for the owner to make this choice safely.
+.NT Conventions
+.IP 1. 5
+Requestors should not use
+.PN None
+for the property argument of a
+.PN ConvertSelection
+request.
+.IP 2. 5
+Owners receiving
+.PN ConvertSelection
+requests with a property argument of
+.PN None
+are talking to an obsolete client.
+They should choose the target atom as the property name to be used
+for the reply.
+.NE
+.LP
+The result of the
+.PN ConvertSelection
+request is that a
+.PN SelectionNotify
+event will be received.
+For the definition of a
+.PN SelectionNotify
+event, see section 2.2.
+.LP
+The requestor, selection, time, and target arguments will be the same
+as those on the
+.PN ConvertSelection
+request.
+.LP
+If the property argument is
+.PN None ,
+the conversion has been refused.
+This can mean either that there is no owner for the selection,
+that the owner does not support the conversion implied by the target,
+or that the server did not have sufficient space to accommodate the data.
+.LP
+If the property argument is not
+.PN None ,
+then that property will exist on the requestor window.
+The value of the selection can be retrieved from this
+property by using the
+.PN GetProperty
+request, which is defined as follows:
+.LP
+.sM
+.IN "GetProperty" "" "@DEF@"
+.PN GetProperty
+.IP "" .2i
+\fIwindow\fP\^: WINDOW
+.br
+\fIproperty\fP\^: ATOM
+.br
+\fItype\fP\^: ATOM or
+.PN AnyPropertyType
+.br
+\fIlong-offset\fP, \fIlong-length\fP\^: CARD32
+.br
+\fIdelete\fP\^: BOOL
+.LP
+\(->
+.IP "" .2i
+type: ATOM or
+.PN None
+.br
+format: {0, 8, 16, 32}
+.br
+bytes-after: CARD32
+.br
+value: LISTofINT8 or LISTofINT16 or LISTofINT32
+.LP
+.eM
+.LP
+When using
+.PN GetProperty
+to retrieve the value of a selection,
+the property argument should be set to the corresponding value in the
+.PN SelectionNotify
+event.
+Because the requestor has no way of knowing beforehand what type
+the selection owner will use,
+the type argument should be set to
+.PN AnyPropertyType .
+Several
+.PN GetProperty
+requests may be needed to retrieve all the data in the selection;
+each should set the long-offset argument to the amount of data received so far,
+and the size argument to some reasonable buffer size (see section 2.5).
+If the returned value of bytes-after is zero,
+the whole property has been transferred.
+.LP
+Once all the data in the selection has been retrieved
+(which may require getting the values of several properties \(em
+see section 2.7),
+the requestor should delete the property in the
+.PN SelectionNotify
+request by using a
+.PN GetProperty
+request with the delete argument set to
+.PN True .
+As previously discussed,
+the owner has no way of knowing when the data has been
+transferred to the requestor unless the property is removed.
+.NT Convention
+The requestor must delete the property named in the
+.PN SelectionNotify
+once all the data has been retrieved.
+The requestor should invoke either
+.PN DeleteProperty
+or
+.PN GetProperty (delete==True)
+after it has successfully retrieved all the data in the selection.
+For further information,
+see section 2.5.
+.NE
+.nH 2 "Large Data Transfers"
+.LP
+Selections can get large, which poses two problems:
+.bP
+Transferring large amounts of data to the server is expensive.
+.bP
+All servers will have limits on the amount of data that can be stored
+in properties.
+Exceeding this limit will result in an
+.PN Alloc
+error on the
+.PN ChangeProperty
+request that the selection owner uses to store the data.
+.LP
+The problem of limited server resources is addressed by the following
+conventions:
+.NT Conventions
+.IP 1. 5
+Selection owners should transfer the data describing a large selection
+(relative to the maximum-request-size they received
+in the connection handshake) using the INCR property mechanism
+(see section 2.7.2).
+.IP 2. 5
+Any client using
+.PN SetSelectionOwner
+to acquire selection ownership should arrange to process
+.PN Alloc
+errors in property change requests.
+For clients using Xlib,
+this involves using the
+.PN XSetErrorHandler
+function to override the default handler.
+.IP 3. 5
+A selection owner must confirm that no
+.PN Alloc
+error occurred while storing the properties for a selection
+before replying with a confirming
+.PN SelectionNotify
+event.
+.IP 4. 5
+When storing large amounts of data (relative to maximum-request-size),
+clients should use a sequence of
+.PN ChangeProperty (mode==Append)
+requests for reasonable quantities of data.
+This avoids locking servers up and limits the waste of data an
+.PN Alloc
+error would cause.
+.IP 5. 5
+If an
+.PN Alloc
+error occurs during the storing of the selection data,
+all properties stored for this selection should be deleted
+and the
+.PN ConvertSelection
+request should be refused (see section 2.2).
+.IP 6. 5
+To avoid locking servers up for inordinate lengths of time,
+requestors retrieving large quantities of data from a property
+should perform a series of
+.PN GetProperty
+requests, each asking for a reasonable amount of data.
+.NE
+.NT "Advice to Implementors"
+Single-threaded servers should take care to avoid locking up during large
+data transfers.
+.NE
+.nH 2 "Use of Selection Atoms"
+.LP
+Defining a new atom consumes resources in the server
+that are not released until the server reinitializes.
+Thus, reducing the need for newly minted atoms is an important goal
+for the use of the selection atoms.
+.nH 3 "Selection Atoms"
+.LP
+There can be an arbitrary number of selections, each named by an atom.
+To conform with the inter-client conventions, however,
+clients need deal with only these three selections:
+.bP
+PRIMARY
+.bP
+SECONDARY
+.bP
+CLIPBOARD
+.LP
+Other selections may be used freely for private communication among
+related groups of clients.
+.nH 4 "The PRIMARY Selection"
+.LP
+The selection named by the atom PRIMARY is used for all commands
+that take only a single argument and is the principal means of communication
+between clients that use the selection mechanism.
+.nH 4 "The SECONDARY Selection"
+.LP
+The selection named by the atom SECONDARY is used:
+.bP
+As the second argument to commands taking two arguments
+(for example, \*Qexchange primary and secondary selections\*U)
+.bP
+As a means of obtaining data when there is a primary selection
+and the user does not want to disturb it
+.nH 4 "The CLIPBOARD Selection"
+.LP
+The selection named by the atom CLIPBOARD is used to hold data
+that is being transferred between clients,
+that is, data that usually is being cut and then pasted
+or copied and then pasted.
+Whenever a client wants to transfer data to the clipboard:
+.bP
+It should assert ownership of the CLIPBOARD.
+.bP
+If it succeeds in acquiring ownership,
+it should be prepared to respond to a request for the contents of the CLIPBOARD
+in the usual way (retaining the data to be able to return it).
+The request may be generated by the clipboard client described below.
+.bP
+If it fails to acquire ownership,
+a cutting client should not actually perform the cut or provide feedback
+that would suggest that it has actually transferred data to the clipboard.
+.LP
+The owner should repeat this process whenever the data to be transferred
+would change.
+.LP
+Clients wanting to paste data from the clipboard should request
+the contents of the CLIPBOARD selection in the usual way.
+.LP
+Except while a client is actually deleting or copying data,
+the owner of the CLIPBOARD selection may be a single, special client
+implemented for the purpose.
+This client maintains the content of the clipboard up-to-date
+and responds to requests for data from the clipboard as follows:
+.bP
+It should assert ownership of the CLIPBOARD selection
+and reassert it any time the clipboard data changes.
+.bP
+If it loses the selection (because another client has some new data
+for the clipboard),
+it should:
+.RS
+.IP \- 5
+Obtain the contents of the selection from the new owner by using the timestamp
+in the
+.PN SelectionClear
+event.
+.IP \- 5
+Attempt to reassert ownership of the CLIPBOARD selection
+by using the same timestamp.
+.IP \- 5
+Restart the process using a newly acquired timestamp if this attempt fails.
+This timestamp should be obtained by asking the current owner of the
+CLIPBOARD selection to convert it to a TIMESTAMP.
+If this conversion is refused or if the same timestamp is received twice,
+the clipboard client should acquire a fresh timestamp in the
+usual way (for example by a zero-length append to a property).
+.RE
+.bP
+It should respond to requests for the CLIPBOARD contents in the usual way.
+.LP
+A special CLIPBOARD client is not necessary.
+The protocol used by the cutting client and the pasting client
+is the same whether the CLIPBOARD client is running or not.
+The reasons for running the special client include:
+.bP
+Stability \- If the cutting client were to crash or terminate,
+the clipboard value would still be available.
+.bP
+Feedback \- The clipboard client can display the contents of the clipboard.
+.bP
+Simplicity \- A client deleting data does not have to retain it for so long,
+thus reducing the chance of race conditions causing problems.
+.LP
+The reasons not to run the clipboard client include:
+.bP
+Performance \- Data is transferred only if it is actually required
+(that is, when some client actually wants the data).
+.bP
+Flexibility \- The clipboard data may be available as more than one target.
+.nH 3 "Target Atoms"
+.LP
+The atom that a requestor supplies as the target of a
+.PN ConvertSelection
+request determines the form of the data supplied.
+The set of such atoms is extensible,
+but a generally accepted base set of target atoms is needed.
+As a starting point for this,
+the following table contains those that have been suggested so far.
+.br
+.ne 6
+.\" This table has very tricky formatting. Several targets are too long to
+.\" fit, so the table format needs to change around them. If the table
+.\" format changes, it will need to be changed in several places. There are
+.\" also two footnotes in this table, but the footnote text can't be
+.\" embedded in the table. This means that the auto-numbering needs to be
+.\" dinked around with after the end of the table.
+.TS H
+lw(1.8i) lw(1i) lw(3i) .
+_
+.sp 6p
+.B
+Atom Type Data Received
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+.T&
+l s s .
+ADOBE_PORTABLE_DOCUMENT_FORMAT
+.T&
+lw(1.8i) lw(1i) lw(3i) .
+ STRING T{
+[1]
+T}
+.sp 6p
+APPLE_PICT APPLE_PICT T{
+[2]
+T}
+BACKGROUND PIXEL A list of pixel values
+BITMAP BITMAP A list of bitmap IDs
+CHARACTER_POSITION SPAN T{
+The start and end of the selection in bytes
+T}
+CLASS TEXT (see section 4.1.2.5)
+CLIENT_WINDOW WINDOW T{
+Any top-level window owned by the selection owner
+T}
+COLORMAP COLORMAP A list of colormap IDs
+COLUMN_NUMBER SPAN T{
+The start and end column numbers
+T}
+COMPOUND_TEXT COMPOUND_TEXT Compound Text
+DELETE NULL (see section 2.6.3.1)
+DRAWABLE DRAWABLE A list of drawable IDs
+.sp 6p
+.T&
+l s s .
+ENCAPSULATED_POSTSCRIPT
+.T&
+lw(1.8i) lw(1i) lw(3i) .
+ STRING T{
+[3], Appendix H\|\**
+T}
+.sp 6p
+.T&
+l s s .
+ENCAPSULATED_POSTSCRIPT_INTERCHANGE
+.T&
+lw(1.8i) lw(1i) lw(3i) .
+ STRING T{
+[3], Appendix H
+T}
+.sp 6p
+FILE_NAME TEXT The full path name of a file
+FOREGROUND PIXEL T{
+A list of pixel values
+T}
+HOST_NAME TEXT (see section 4.1.2.9)
+INSERT_PROPERTY NULL (see section 2.6.3.3)
+INSERT_SELECTION NULL (see section 2.6.3.2)
+LENGTH INTEGER T{
+The number of bytes in the selection\|\**
+T}
+LINE_NUMBER SPAN T{
+The start and end line numbers
+T}
+LIST_LENGTH INTEGER T{
+The number of disjoint parts of the selection
+T}
+MODULE TEXT T{
+The name of the selected procedure
+T}
+MULTIPLE ATOM_PAIR T{
+(see the discussion that follows)
+T}
+NAME TEXT (see section 4.1.2.1)
+ODIF TEXT T{
+ISO Office Document Interchange Format
+T}
+OWNER_OS TEXT T{
+The operating system of the owner client
+T}
+PIXMAP T{
+PIXMAP\|\**
+T} T{
+A list of pixmap IDs
+T}
+POSTSCRIPT STRING T{
+[3]
+T}
+PROCEDURE TEXT T{
+The name of the selected procedure
+T}
+PROCESS INTEGER, TEXT T{
+The process ID of the owner
+T}
+STRING STRING ISO Latin-1 (+TAB+NEWLINE) text
+TARGETS ATOM A list of valid target atoms
+TASK INTEGER, TEXT T{
+The task ID of the owner
+T}
+TEXT TEXT T{
+The text in the owner's choice of encoding
+T}
+TIMESTAMP INTEGER T{
+The timestamp used to acquire the selection
+T}
+USER TEXT T{
+The name of the user running the owner
+T}
+.sp 6p
+_
+.TE
+.\" Conditionalized on groff because
+.\" groff keeps track of footnotes and fn references separately,
+.\" so resetting isn't necessary (and referencing \n* gives a warning).
+.if !\n(GS .nr * \n*-3 \" decrement by the number of footnotes in the table
+.if 0 \{\
+HACK! There are several footnotes in the table above, each marked with the
+construct "\**". The actual footnote text is here, because I haven't found
+a way to place it within the table itself. This causes a numbering problem,
+because each \** increments the footnote counter (number register *) and the
+FS macro uses its current value. To get around this, we decrement the *
+register by the number of footnotes in the table. Then, before calling each
+FS macro, we increment the register.
+
+Also note that footnotes must appear within the T{ T} construct in tables.
+If they don't, strange numbering problems will result, probably as a result
+of multiple evaluation.
+\}
+.\" These footnotes are in the wrong order because Sun tbl numbers the
+.\" footnote references wrong in the above table. Thus this doesn't
+.\" do the right thing with gtbl, which gets the order right.
+.if !\n(GS .nr * +1
+.FS
+Earlier versions of this document erroneously specified that conversion of
+the PIXMAP target returns a property of type DRAWABLE instead of PIXMAP.
+Implementors should be aware of this and may want to support the DRAWABLE
+type as well to allow for compatibility with older clients.
+.FE
+.if !\n(GS .nr * +1
+.FS
+The targets ENCAPSULATED_POSTSCRIPT and ENCAPSULATED_POSTSCRIPT_INTERCHANGE
+are equivalent to the targets _ADOBE_EPS and _ADOBE_EPSI (respectively) that
+appear in the selection targets registry. The _ADOBE_ targets are
+deprecated, but clients are encouraged to continue to support them for
+backward compatibility.
+.FE
+.if !\n(GS .nr * +1
+.FS
+This definition is ambiguous, as the selection may be converted into any of
+several targets that may return differing amounts of data. The requestor
+has no way of knowing which, if any, of these targets corresponds to the
+result of LENGTH. Clients are advised that no guarantees can be made about
+the result of a conversion to LENGTH; its use is thus deprecated.
+.FE
+.LP
+References:
+.IP [1] 5
+Adobe Systems, Incorporated.
+.I
+Portable Document Format Reference Manual.
+.R
+Reading, MA, Addison-Wesley, ISBN 0-201-62628-4.
+.IP [2] 5
+Apple Computer, Incorporated.
+.I
+Inside Macintosh, Volume V.
+.R
+Chapter 4, \*QColor QuickDraw,\*U Color \%Picture Format.
+ISBN 0-201-17719-6.
+.IP [3] 5
+Adobe Systems, Incorporated.
+.I
+PostScript Language Reference Manual.
+.R
+Reading, MA, Addison-Wesley, ISBN 0-201-18127-4.
+.LP
+It is expected that this table will grow over time.
+.LP
+Selection owners are required to support the following targets.
+All other targets are optional.
+.bP
+TARGETS \- The owner should return a list of atoms that represent
+the targets for which an attempt to convert the current selection
+will succeed (barring unforseeable problems such as
+.PN Alloc
+errors).
+This list should include all the required atoms.
+.bP
+MULTIPLE \- The MULTIPLE target atom is valid only when a property
+is specified on the
+.PN ConvertSelection
+request.
+If the property argument in the
+.PN SelectionRequest
+event is
+.PN None
+and the target is MULTIPLE,
+it should be refused.
+.IP
+When a selection owner receives a
+.PN SelectionRequest (target==MULTIPLE)
+request,
+the contents of the property named in the request will be a list of atom pairs:
+the first atom naming a target and the second naming a property
+.Pn ( None
+is not valid here).
+The effect should be as if the owner had received a sequence of
+.PN SelectionRequest
+events (one for each atom pair) except that:
+.RS
+.IP \- 5
+The owner should reply with a
+.PN SelectionNotify
+only when all the requested conversions have been performed.
+.IP \- 5
+If the owner fails to convert the target named by an atom
+in the MULTIPLE property,
+it should replace that atom in the property with
+.PN None .
+.RE
+.NT Convention
+The entries in a MULTIPLE property must be processed in the order
+they appear in the property.
+For further information,
+see section 2.6.3.
+.NE
+.RS
+.LP
+The requestor should delete each individual property when it has
+copied the data from that conversion, and the property specified in the
+MULTIPLE request when it has copied all the data.
+.LP
+The requests are otherwise to be processed independently, and they
+should succeed or fail independently. The MULTIPLE target is an
+optimization that reduces the amount of protocol traffic between the
+owner and the requestor; it is not a transaction mechanism. For
+example, a client may issue a MULTIPLE request with two targets: a data
+target and the DELETE target. The DELETE target will still be processed
+even if the conversion of the data target fails.
+.RE
+.bP
+TIMESTAMP \- To avoid some race conditions,
+it is important that requestors be able to discover the timestamp
+the owner used to acquire ownership.
+Until and unless the protocol is changed so that a
+.PN GetSelectionOwner
+request returns the timestamp used to acquire ownership,
+selection owners must support conversion to TIMESTAMP,
+returning the timestamp they used to obtain the selection.
+.nH 3 "Selection Targets with Side Effects"
+.LP
+Some targets (for example, DELETE) have side effects.
+To render these targets unambiguous,
+the entries in a MULTIPLE property must be processed in the order
+that they appear in the property.
+.LP
+In general,
+targets with side effects will return no information,
+that is, they will return a zero length property of type NULL.
+(Type NULL means the result of
+.PN InternAtom
+on the string \*QNULL\*U, not the value zero.)
+In all cases,
+the requested side effect must be performed before the conversion is accepted.
+If the requested side effect cannot be performed,
+the corresponding conversion request must be refused.
+.NT Conventions
+.IP 1. 5
+Targets with side effects should return no information
+(that is, they should have a zero-length property of type NULL).
+.IP 2. 5
+The side effect of a target must be performed before the conversion is accepted.
+.IP 3. 5
+If the side effect of a target cannot be performed,
+the corresponding conversion request must be refused.
+.NE
+.NT Problem
+The need to delay responding to the
+.PN ConvertSelection
+request until a further conversion has succeeded poses problems
+for the Intrinsics interface that need to be addressed.
+.NE
+.LP
+These side-effect targets are used to implement operations such as
+\*Qexchange PRIMARY and SECONDARY selections.\*U
+.nH 4 "DELETE"
+.LP
+When the owner of a selection receives a request to convert it to DELETE,
+it should delete the corresponding selection
+(whatever doing so means for its internal data structures)
+and return a zero-length property of type NULL if the deletion was successful.
+.nH 4 "INSERT_SELECTION"
+.LP
+When the owner of a selection receives a request to convert it to
+INSERT_SELECTION,
+the property named will be of type ATOM_PAIR.
+The first atom will name a selection,
+and the second will name a target.
+The owner should use the selection mechanism to convert the named selection
+into the named target and should insert it at the location of the selection
+for which it got the INSERT_SELECTION request
+(whatever doing so means for its internal data structures).
+.nH 4 "INSERT_PROPERTY"
+.LP
+When the owner of a selection receives a request to convert it to
+INSERT_PROPERTY,
+it should insert the property named in the request at the location
+of the selection for which it got the INSERT_SELECTION request
+(whatever doing so means for its internal data structures).
+.nH 2 "Use of Selection Properties"
+.LP
+The names of the properties used in selection data transfer are chosen by
+the requestor.
+The use of
+.PN None
+property fields in
+.PN ConvertSelection
+requests (which request the selection owner to choose a name)
+is not permitted by these conventions.
+.LP
+The selection owner always chooses the type of the property
+in the selection data transfer.
+Some types have special semantics assigned by convention,
+and these are reviewed in the following sections.
+.LP
+In all cases,
+a request for conversion to a target should return either
+a property of one of the types listed in the previous table for that target
+or a property of type INCR and then a property of one of the listed types.
+.LP
+Certain selection properties may contain resource IDs. The selection owner
+should ensure that the resource is not destroyed and that its contents are
+not changed until after the selection transfer is complete. Requestors that
+rely on the existence or on the proper contents of a resource must operate
+on the resource (for example, by copying the contents of a pixmap) before
+deleting the selection property.
+.LP
+The selection owner will return a list of zero or more items
+of the type indicated by the property type.
+In general,
+the number of items in the list will correspond to the number
+of disjoint parts of the selection.
+Some targets (for example, side-effect targets) will be of length zero
+irrespective of the number of disjoint selection parts.
+In the case of fixed-size items,
+the requestor may determine the number of items by the property size.
+Selection property types are listed in the table below.
+For variable-length items such as text,
+the separators are also listed.
+.br
+.ne 6
+.TS H
+l c l.
+_
+.sp 6p
+.B
+Type Atom Format Separator
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+APPLE_PICT 8 T{
+Self-sizing
+T}
+ATOM 32 Fixed-size
+ATOM_PAIR 32 Fixed-size
+BITMAP 32 Fixed-size
+C_STRING 8 T{
+Zero
+T}
+COLORMAP 32 T{
+Fixed-size
+T}
+COMPOUND_TEXT 8 Zero
+DRAWABLE 32 Fixed-size
+INCR 32 Fixed-size
+INTEGER 32 Fixed-size
+PIXEL 32 T{
+Fixed-size
+T}
+PIXMAP 32 Fixed-size
+SPAN 32 Fixed-size
+STRING 8 Zero
+WINDOW 32 Fixed-size
+.sp 6p
+_
+.TE
+.LP
+It is expected that this table will grow over time.
+.nH 3 "TEXT Properties"
+.LP
+In general,
+the encoding for the characters in a text string property is specified
+by its type.
+It is highly desirable for there to be a simple, invertible mapping
+between string property types and any character set names
+embedded within font names in any font naming standard adopted by the
+Consortium.
+.LP
+The atom TEXT is a polymorphic target.
+Requesting conversion into TEXT will convert into whatever encoding
+is convenient for the owner.
+The encoding chosen will be indicated by the type of the property returned.
+TEXT is not defined as a type;
+it will never be the returned type from a selection conversion request.
+.LP
+If the requestor wants the owner to return the contents of the selection
+in a specific encoding,
+it should request conversion into the name of that encoding.
+.LP
+In the table in section 2.6.2,
+the word TEXT (in the Type column) is used to indicate one
+of the registered encoding names.
+The type would not actually be TEXT;
+it would be STRING or some other ATOM naming the encoding chosen by the owner.
+.LP
+STRING as a type or a target specifies the ISO Latin-1 character set plus the
+control characters TAB (octal 11) and NEWLINE (octal 12).
+The spacing interpretation of TAB is context dependent.
+Other ASCII control characters are explicitly not included in STRING
+at the present time.
+.LP
+COMPOUND_TEXT as a type or a target specifies the Compound Text interchange
+format; see the \fICompound Text Encoding\fP.
+.LP
+There are some text objects where the source or intended user, as the
+case may be, does not have a specific character set for the text, but
+instead merely requires a zero-terminated sequence of bytes with no
+other restriction; no element of the selection mechanism may assume that
+any byte value is forbidden or that any two differing sequences are
+equivalent.\** For these objects, the type C_STRING should be used.
+.FS
+Note that this is different from STRING, where many byte values are
+forbidden, and from COMPOUND_TEXT, where, for example, inserting the
+sequence 27,\ 40,\ 66 (designate ASCII into GL) at the start does not alter
+the meaning.
+.FE
+.NT Rationale
+An example of the need for C_STRING is to transmit the names of
+files; many operating systems do not interpret filenames as having
+a character set. For example, the same character string uses a
+different sequence of bytes in ASCII and EBCDIC, and so most
+operating systems see these as different filenames and offer no
+way to treat them as the same. Thus no character-set based
+property type is suitable.
+.NE
+.LP
+Type STRING, COMPOUND_TEXT, and C_STRING properties will consist of a list
+of elements separated by null characters; other encodings will need to
+specify an appropriate list format.
+.nH 3 "INCR Properties"
+.LP
+Requestors may receive a property of type INCR\**
+in response to any target that results in selection data.
+.FS
+These properties were called INCREMENTAL in an earlier draft.
+The protocol for using them has changed,
+and so the name has changed to avoid confusion.
+.FE
+This indicates that the owner will send the actual data incrementally.
+The contents of the INCR property will be an integer,
+which represents a lower bound on the number of bytes of data in the selection.
+The requestor and the selection owner transfer the data in the selection
+in the following manner.
+.LP
+The selection requestor starts the transfer process by deleting
+the (type==INCR) property forming the reply to the selection.
+.LP
+The selection owner then:
+.bP
+Appends the data in suitable-size chunks to the
+same property on the same window as the selection reply
+with a type corresponding to the actual type of the converted selection.
+The size should be less than the maximum-request-size in the connection
+handshake.
+.bP
+Waits between each append for a
+.PN PropertyNotify (state==Deleted)
+event that shows that the requestor has read the data.
+The reason for doing this is to limit the consumption of space in the server.
+.bP
+Waits (after the entire data has been transferred to the server) until a
+.PN PropertyNotify (state==Deleted)
+event that shows that the data has been read by the requestor
+and then writes zero-length data to the property.
+.LP
+The selection requestor:
+.bP
+Waits for the
+.PN SelectionNotify
+event.
+.bP
+Loops:
+.RS
+.IP \- 5
+Retrieving data using
+.PN GetProperty
+with the delete argument
+.PN True .
+.IP \- 5
+Waiting for a
+.PN PropertyNotify
+with the state argument
+.PN NewValue .
+.RE
+.bP
+Waits until the property named by the
+.PN PropertyNotify
+event is zero-length.
+.bP
+Deletes the zero-length property.
+.LP
+The type of the converted selection is the type of the first partial property.
+The remaining partial properties must have the same type.
+.nH 3 "DRAWABLE Properties"
+.LP
+Requestors may receive properties of type PIXMAP, BITMAP, DRAWABLE, or WINDOW,
+which contain an appropriate ID.
+While information about these drawables is available from the server by means of
+the
+.PN GetGeometry
+request,
+the following items are not:
+.bP
+Foreground pixel
+.bP
+Background pixel
+.bP
+Colormap ID
+.LP
+In general,
+requestors converting into targets whose returned type in the table
+in section 2.6.2 is one of the DRAWABLE types should expect to convert also
+into the following targets (using the MULTIPLE mechanism):
+.bP
+FOREGROUND returns a PIXEL value.
+.bP
+BACKGROUND returns a PIXEL value.
+.bP
+COLORMAP returns a colormap ID.
+.nH 3 "SPAN Properties"
+.LP
+Properties with type SPAN contain a list of cardinal-pairs
+with the length of the cardinals determined by the format.
+The first specifies the starting position,
+and the second specifies the ending position plus one.
+The base is zero.
+If they are the same,
+the span is zero-length and is before the specified position.
+The units are implied by the target atom,
+such as LINE_NUMBER or CHARACTER_POSITION.
+.nH 2 "Manager Selections"
+.LP
+Certain clients, often called managers, take on responsibility
+for managing shared resources. A client that manages a shared
+resource should take ownership of an appropriate selection,
+named using the conventions described in sections 1.2.3
+and 1.2.6. A client that manages multiple
+shared resources (or groups of resources) should take
+ownership of a selection for each one.
+.LP
+The manager may support conversion of various targets
+for that selection. Managers are encouraged to use this
+technique as the primary means by which clients interact
+with the managed resource. Note that the conventions for
+interacting with the window manager predate this section;
+as a result many interactions with the window manager use
+other techniques.
+.LP
+Before a manager takes ownership of a manager selection, it
+should use the
+.PN GetSelection\%Owner
+request to check whether the selection is already owned by another client,
+and, where appropriate, it should ask the user if the new manager should
+replace the old one. If so, it may then take ownership of the selection.
+Managers should acquire the selection using a window created expressly for
+this purpose. Managers must conform to the rules for selection owners
+described in sections 2.1 and 2.2, and they must also support the required
+targets listed in section 2.6.2.
+.LP
+If a manager loses ownership of a manager selection, this
+means that a new manager is taking over its responsibilities.
+The old manager must release all resources it has managed
+and must then destroy the window that owned the selection.
+For example, a window manager losing ownership of WM_S2
+must deselect from
+.PN SubstructureRedirect
+on the root window of screen 2 before destroying the window that owned
+WM_S2.
+.LP
+When the new manager notices that the window owning the selection
+has been destroyed, it knows that it can successfully proceed to
+control the resource it is planning to manage. If the old
+manager does not destroy the window within a reasonable time,
+the new manager should check with the user before destroying
+the window itself or killing the old manager.
+.LP
+If a manager wants to give up, on its own, management of a shared
+resource controlled by a selection, it must do so by releasing
+the resources it is managing and then by destroying the
+window that owns the selection. It should not first disown
+the selection, since this introduces a race condition.
+.LP
+Clients who are interested in knowing when the owner of a
+manager selection is no longer managing the corresponding shared
+resource should select for
+.PN StructureNotify
+on the window owning the selection so they can be notified when the window
+is destroyed. Clients are warned that after doing a
+.PN GetSelectionOwner
+and selecting for
+.PN StructureNotify ,
+they should do a
+.PN GetSelectionOwner
+again to ensure that the owner did not change after initially getting the
+selection owner and before selecting for
+.PN StructureNotify .
+.LP
+Immediately after a manager successfully acquires ownership of a
+manager selection, it should announce its arrival by sending a
+.PN ClientMessage
+event. This event should be sent using the
+.PN SendEvent
+protocol request with the following arguments:
+.br
+.ne 6
+.TS
+l lw(4.5i) .
+_
+.sp 6p
+.B
+Argument Value
+.R
+.sp 6p
+_
+.sp 6p
+destination: T{
+the root window of screen 0, or the root
+window of the appropriate screen if the
+manager is managing a screen-specific resource
+T}
+propagate: False
+event-mask: T{
+.PN StructureNotify
+T}
+event: T{
+.PN ClientMessage
+T}
+\h'4n'type: MANAGER
+\h'4n'format: 32
+T{
+\h'4n'data[0]:\|\**
+T} timestamp
+\h'4n'data[1]: manager selection atom
+\h'4n'data[2]: the window owning the selection
+\h'4n'data[3]: manager-selection-specific data
+\h'4n'data[4]: manager-selection-specific data
+.sp 6p
+_
+.TE
+.FS
+We use the notation data[n] to indicate the n\s-2\uth\d\s0 element
+of the LISTofINT8, LISTofINT16, or LISTofINT32 in the data field of the
+.PN ClientMessage ,
+according to the format field.
+The list is indexed from zero.
+.FE
+.LP
+Clients that wish to know when a specific manager has started should
+select for
+.PN Structure\%Notify
+on the appropriate root window and should watch for the appropriate MANAGER
+.PN Client\%Message .
+.nH 1 "Peer-to-Peer Communication by Means of Cut Buffers"
+.LP
+The cut buffer mechanism is much simpler but much less powerful
+than the selection mechanism.
+The selection mechanism is active in that it provides a link
+between the owner and requestor clients.
+The cut buffer mechanism is passive;
+an owner places data in a cut buffer from which a requestor retrieves
+the data at some later time.
+.LP
+The cut buffers consist of eight properties on the root of screen zero,
+named by the predefined atoms CUT_BUFFER0 to CUT_BUFFER7.
+These properties must, at present, have type STRING and format 8.
+A client that uses the cut buffer mechanism must initially ensure that
+all eight properties exist by using
+.PN ChangeProperty
+requests to append zero-length data to each.
+.LP
+A client that stores data in the cut buffers (an owner) first must rotate the
+ring of buffers by plus 1 by using
+.PN RotateProperties
+requests to rename each buffer;
+that is, CUT_BUFFER0 to CUT_BUFFER1, CUT_BUFFER1 to CUT_BUFFER2, .\^.\^.\|,
+and CUT_BUFFER7 to CUT_BUFFER0.
+It then must store the data into CUT_BUFFER0 by using a
+.PN Change\%Property
+request in mode
+.PN Replace .
+.LP
+A client that obtains data from the cut buffers should use a
+.PN GetProperty
+request to retrieve the contents of CUT_BUFFER0.
+.LP
+In response to a specific user request,
+a client may rotate the cut buffers by minus 1 by using
+.PN RotateProperties
+requests to rename each buffer;
+that is, CUT_BUFFER7 to CUT_BUFFER6, CUT_BUFFER6 to CUT_BUFFER5, .\^.\^.\|,
+and CUT_BUFFER0 to CUT_BUFFER7.
+.LP
+Data should be stored to the cut buffers
+and the ring rotated only when requested by explicit user action.
+Users depend on their mental model of cut buffer operation
+and need to be able to identify operations that transfer data to and fro.
+.nH 1 "Client-to-Window-Manager Communication"
+.LP
+To permit window managers to perform their role of mediating the competing
+demands for resources such as screen space,
+the clients being managed must adhere to certain conventions
+and must expect the window managers to do likewise.
+These conventions are covered here from the client's point of view.
+.LP
+In general,
+these conventions are somewhat complex
+and will undoubtedly change as new window management paradigms are developed.
+Thus, there is a strong bias toward defining only those conventions
+that are essential and that apply generally to all window management paradigms.
+Clients designed to run with a particular window manager can easily
+define private protocols to add to these conventions,
+but they must be aware that their users may decide to run some other
+window manager no matter how much the designers of the private protocol
+are convinced that they have seen the \*Qone true light\*U of user interfaces.
+.LP
+It is a principle of these conventions that a general client should
+neither know nor care which window manager is running or, indeed,
+if one is running at all.
+The conventions do not support all client functions
+without a window manager running;
+for example, the concept of Iconic
+is not directly supported by clients.
+If no window manager is running,
+the concept of Iconic does not apply.
+A goal of the conventions is to make it possible to kill and
+restart window managers without loss of functionality.
+.LP
+Each window manager will implement a particular window management policy;
+the choice of an appropriate window management policy
+for the user's circumstances is not one for an individual client to
+make but will be made by the user or the user's system administrator.
+This does not exclude the possibility of writing clients that
+use a private protocol to restrict themselves to operating only
+under a specific window manager.
+Rather,
+it merely ensures that no claim of general utility is made for such programs.
+.LP
+For example,
+the claim is often made:
+\*QThe client I'm writing is important, and it needs to be on top.\*U
+Perhaps it is important when it is being run in earnest,
+and it should then be run under the control of a window manager
+that recognizes \*Qimportant\*U windows through some private protocol
+and ensures that they are on top.
+However, imagine, for example, that the \*Qimportant\*U client is being debugged.
+Then, ensuring that it is always on top is no longer
+the appropriate window management policy,
+and it should be run under a window manager that allows other windows
+(for example, the debugger) to appear on top.
+.nH 2 "Client's Actions"
+.LP
+In general,
+the object of the X Version 11 design is that clients should,
+as far as possible, do exactly what they would do in the absence
+of a window manager, except for the following:
+.bP
+Hinting to the window manager about the resources they would like
+to obtain
+.bP
+Cooperating with the window manager by accepting the resources they
+are allocated even if they are not those requested
+.bP
+Being prepared for resource allocations to change at any time
+.nH 3 "Creating a Top-Level Window"
+.LP
+A client's \fItop-level window\fP is a window whose override-redirect
+attribute is
+.PN False .
+It must either be a child of a root window, or it must have been a child of
+a root window immediately prior to having been reparented by the window
+manager. If the client reparents the window away from the root, the window
+is no longer a top-level window; but it can become a top-level window again
+if the client reparents it back to the root.
+.LP
+A client usually would expect to create its top-level windows
+as children of one or more of the root windows by using some
+boilerplate like the following:
+.LP
+.Ds 0
+.TA 2i
+.ta 2i
+win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), xsh.x, xsh.y,
+ xsh.width, xsh.height, bw, bd, bg);
+.De
+.LP
+If a particular one of the root windows was required, however,
+it could use something like the following:
+.LP
+.Ds 0
+.TA 2i
+.ta 2i
+win = XCreateSimpleWindow(dpy, RootWindow(dpy, screen), xsh.x, xsh.y,
+ xsh.width, xsh.height, bw, bd, bg);
+.De
+.LP
+Ideally,
+it should be possible to override the choice of a root window
+and allow clients (including window managers) to treat a nonroot window
+as a pseudo-root.
+This would allow, for example, the testing of window managers and the
+use of application-specific window managers to control the subwindows
+owned by the members of a related suite of clients.
+Doing so properly requires an extension,
+the design of which is under study.
+.LP
+From the client's point of view,
+the window manager will regard its top-level window as being in
+one of three states:
+.bP
+Normal
+.bP
+Iconic
+.bP
+Withdrawn
+.LP
+Newly created windows start in the Withdrawn state.
+Transitions between states happen when the top-level window is mapped
+and unmapped and when the window manager receives certain messages.
+For further details, see sections 4.1.2.4 and 4.1.4.
+.nH 3 "Client Properties"
+.LP
+Once the client has one or more top-level windows,
+it should place properties on those windows to inform the window manager
+of the behavior that the client desires.
+Window managers will assume values they find convenient
+for any of these properties that are not supplied;
+clients that depend on particular values must explicitly supply them.
+The window manager will not change properties written by the client.
+.LP
+The window manager will examine the contents of these
+properties when the window makes the transition from the Withdrawn state
+and will monitor some properties for changes while the window is
+in the Iconic or Normal state.
+When the client changes one of these properties,
+it must use
+.PN Replace
+mode to overwrite the entire property with new data;
+the window manager will retain no memory of the old value of the property.
+All fields of the property must be set to suitable values in a single
+.PN Replace
+mode
+.PN ChangeProperty
+request.
+This ensures that the full contents of the property will be
+available to a new window manager if the existing one crashes,
+if it is shut down and restarted,
+or if the session needs to be shut down and restarted by the session manager.
+.NT Convention
+Clients writing or rewriting window manager properties must
+ensure that the entire content of each property remains valid
+at all times.
+.NE
+.LP
+Some of these properties may contain the IDs of resources, such as
+windows or pixmaps. Clients should ensure that these resources exist
+for at least as long as the window on which the property resides.
+.LP
+If these properties are longer than expected,
+clients should ignore the remainder of the property.
+Extending these properties is reserved to the X Consortium;
+private extensions to them are forbidden.
+Private additional communication between clients and window managers
+should take place using separate properties.
+The only exception to this rule is the WM_PROTOCOLS property, which may be
+of arbitrary length and which may contain atoms representing private
+protocols (see section 4.1.2.7).
+.LP
+The next sections describe each of the properties the clients
+need to set, in turn.
+They are summarized in the table in section 4.4.
+.nH 4 "WM_NAME Property"
+.LP
+The WM_NAME property is an uninterpreted string
+that the client wants the window manager to display
+in association with the window (for example, in a window headline bar).
+.LP
+The encoding used for this string
+(and all other uninterpreted string properties)
+is implied by the type of the property.
+The type atoms to be used for this purpose are described in section 2.7.1.
+.LP
+Window managers are expected to make an effort to display this information.
+Simply ignoring WM_NAME is not acceptable behavior.
+Clients can assume that at least the first part of this string
+is visible to the user and that if the information is not visible to the user,
+it is because the user has taken an explicit action to make it invisible.
+.LP
+On the other hand,
+there is no guarantee that the user can see the WM_NAME string
+even if the window manager supports window headlines.
+The user may have placed the headline off-screen
+or have covered it by other windows.
+WM_NAME should not be used for application-critical information
+or to announce asynchronous changes of an application's state
+that require timely user response.
+The expected uses are to permit the user to identify one of a
+number of instances of the same client
+and to provide the user with noncritical state information.
+.LP
+Even window managers that support headline bars will place some limit
+on the length of the WM_NAME string that can be visible;
+brevity here will pay dividends.
+.nH 4 "WM_ICON_NAME Property"
+.LP
+The WM_ICON_NAME property is an uninterpreted string
+that the client wants to be displayed in association with the window
+when it is iconified (for example, in an icon label).
+In other respects,
+including the type, it is similar to WM_NAME.
+For obvious geometric reasons,
+fewer characters will normally be visible in WM_ICON_NAME than WM_NAME.
+.LP
+Clients should not attempt to display this string in their icon pixmaps
+or windows; rather, they should rely on the window manager to do so.
+.nH 4 "WM_NORMAL_HINTS Property"
+.LP
+The type of the WM_NORMAL_HINTS property is WM_SIZE_HINTS.
+Its contents are as follows:
+.br
+.ne 6
+.TS H
+lw(1i) lw(1i) lw(2i).
+_
+.sp 6p
+.B
+Field Type Comments
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+flags CARD32 (see the next table)
+pad 4*CARD32 For backwards compatibility
+min_width INT32 If missing, assume base_width
+min_height INT32 If missing, assume base_height
+max_width INT32
+max_height INT32
+width_inc INT32
+height_inc INT32
+min_aspect (INT32,INT32)
+max_aspect (INT32,INT32)
+base_width INT32 If missing, assume min_width
+base_height INT32 If missing, assume min_height
+win_gravity INT32 T{
+If missing, assume
+.PN NorthWest
+T}
+.sp 6p
+_
+.TE
+.LP
+The WM_SIZE_HINTS.flags bit definitions are as follows:
+.br
+.ne 6
+.TS H
+lw(1i) nw(.5i) lw(3i).
+_
+.sp 6p
+.B
+Name Value Field
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN USPosition
+T} 1 User-specified x, y
+T{
+.PN USSize
+T} 2 User-specified width, height
+T{
+.PN PPosition
+T} 4 Program-specified position
+T{
+.PN PSize
+T} 8 Program-specified size
+T{
+.PN PMinSize
+T} 16 Program-specified minimum size
+T{
+.PN PMaxSize
+T} 32 Program-specified maximum size
+T{
+.PN PResizeInc
+T} 64 Program-specified resize increments
+T{
+.PN PAspect
+T} 128 Program-specified min and max aspect ratios
+T{
+.PN PBaseSize
+T} 256 Program-specified base size
+T{
+.PN PWinGravity
+T} 512 Program-specified window gravity
+.sp 6p
+_
+.TE
+.LP
+To indicate that the size and position of the window
+(when a transition from the Withdrawn state occurs) was specified by the user,
+the client should set the
+.PN USPosition
+and
+.PN USSize
+flags,
+which allow a window manager to know that the user specifically asked where
+the window should be placed or how the window should be sized and that
+further interaction is superfluous.
+To indicate that it was specified by the client without any user involvement,
+the client should set
+.PN PPosition
+and
+.PN PSize .
+.LP
+The size specifiers refer to the width and height of the client's
+window excluding borders.
+.LP
+The win_gravity may be any of the values specified for WINGRAVITY in
+the core protocol except for
+.PN Unmap :
+.PN NorthWest
+(1),
+.PN North
+(2),
+.PN NorthEast
+(3),
+.PN West
+(4),
+.PN Center
+(5),
+.PN East
+(6),
+.PN SouthWest
+(7),
+.PN South
+(8), and
+.PN SouthEast
+(9). It specifies how and whether the client window wants to be shifted to
+make room for the window manager frame.
+.LP
+If the win_gravity is
+.PN Static ,
+the window manager frame is positioned
+so that the inside border of the client window inside the frame is
+in the same position on the screen as it was when the client
+requested the transition from Withdrawn state. Other values of
+win_gravity specify a window reference point. For
+.PN NorthWest ,
+.PN NorthEast ,
+.PN SouthWest ,
+and
+.PN SouthEast
+the reference point is the specified outer corner of the window (on the
+outside border edge). For
+.PN North ,
+.PN South ,
+.PN East ,
+and
+.PN West
+the reference point is the center of the specified outer edge of the window
+border. For
+.PN Center
+the reference point is the center of the window. The reference point of the
+window manager frame is placed at the location on the screen where the
+reference point of the client window was when the client requested the
+transition from Withdrawn state.
+.LP
+The min_width and min_height elements specify the
+minimum size that the window can be for the client to be useful.
+The max_width and max_height elements specify the maximum size.
+The base_width and base_height elements in conjunction with width_inc
+and height_inc define an arithmetic progression of preferred window
+widths and heights for non-negative integers \fIi\fP and \fIj\fP:
+.LP
+.Ds
+.EQ C
+width ~ = ~ base_width ~ + ~ ( i ~ times ~ width_inc )
+.EN
+.EQ C
+height ~ = ~ base_height ~ + ~ ( j ~ times ~ height_inc )
+.EN
+.De
+.LP
+Window managers are encouraged to use \fIi\fP and \fIj\fP
+instead of width and height in reporting window sizes to users.
+If a base size is not provided,
+the minimum size is to be used in its place and vice versa.
+.LP
+The min_aspect and max_aspect fields are fractions with the numerator first
+and the denominator second, and they allow a client to specify the range of
+aspect ratios it prefers. Window managers that honor aspect ratios should
+take into account the base size in determining the preferred window size. If
+a base size is provided along with the aspect ratio fields, the base size
+should be subtracted from the window size prior to checking that the aspect
+ratio falls in range. If a base size is not provided, nothing should be
+subtracted from the window size. (The minimum size is not to be used in
+place of the base size for this purpose.)
+.nH 4 "WM_HINTS Property"
+.LP
+The WM_HINTS property (whose type is WM_HINTS)
+is used to communicate to the window manager.
+It conveys the information the window manager needs
+other than the window geometry,
+which is available from the window itself;
+the constraints on that geometry,
+which is available from the WM_NORMAL_HINTS structure;
+and various strings,
+which need separate properties, such as WM_NAME.
+The contents of the properties are as follows:
+.br
+.ne 6
+.TS H
+l l l.
+_
+.sp 6p
+.B
+Field Type Comments
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+flags CARD32 (see the next table)
+input CARD32 The client's input model
+initial_state CARD32 The state when first mapped
+icon_pixmap PIXMAP The pixmap for the icon image
+icon_window WINDOW The window for the icon image
+icon_x INT32 The icon location
+icon_y INT32
+icon_mask PIXMAP The mask for the icon shape
+window_group WINDOW The ID of the group leader window
+.sp 6p
+_
+.TE
+.LP
+The WM_HINTS.flags bit definitions are as follows:
+.br
+.ne 6
+.TS H
+lw(1.5i) nw(.5i) lw(1.5i).
+_
+.sp 6p
+.B
+Name Value Field
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN InputHint
+T} 1 input
+T{
+.PN StateHint
+T} 2 initial_state
+T{
+.PN IconPixmapHint
+T} 4 icon_pixmap
+T{
+.PN IconWindowHint
+T} 8 icon_window
+T{
+.PN IconPositionHint
+T} 16 icon_x & icon_y
+T{
+.PN IconMaskHint
+T} 32 icon_mask
+T{
+.PN WindowGroupHint
+T} 64 window_group
+T{
+.PN MessageHint
+T} 128 (this bit is obsolete)
+T{
+.PN UrgencyHint
+T} 256 urgency
+.sp 6p
+_
+.TE
+.LP
+Window managers are free to assume convenient values for all fields of
+the WM_HINTS property if a window is mapped without one.
+.LP
+The input field is used to communicate to the window manager the input focus
+model used by the client (see section 4.1.7).
+.LP
+Clients with the Globally Active and No Input models should set the
+input flag to
+.PN False .
+Clients with the Passive and Locally Active models should set the input
+flag to
+.PN True .
+.LP
+From the client's point of view,
+the window manager will regard the client's top-level window as being
+in one of three states:
+.bP
+Normal
+.bP
+Iconic
+.bP
+Withdrawn
+.LP
+The semantics of these states are described in section 4.1.4.
+Newly created windows start in the Withdrawn state.
+Transitions between states happen when a
+top-level window is mapped and unmapped
+and when the window manager receives certain messages.
+.LP
+The value of the initial_state field determines the state the client
+wishes to be in at the time the top-level window is mapped
+from the Withdrawn state, as shown in the following table:
+.br
+.ne 6
+.TS H
+l n l.
+_
+.sp 6p
+.B
+State Value Comments
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN NormalState
+T} 1 The window is visible.
+T{
+.PN IconicState
+T} 3 The icon is visible.
+.sp 6p
+_
+.TE
+.LP
+The icon_pixmap field may specify a pixmap to be used as an icon.
+This pixmap should be:
+.bP
+One of the sizes specified in the WM_ICON_SIZE property
+on the root if it exists (see section 4.1.3.2).
+.bP
+1-bit deep.
+The window manager will select, through the defaults database,
+suitable background (for the 0 bits) and foreground (for the 1 bits) colors.
+These defaults can, of course, specify different colors for the icons
+of different clients.
+.LP
+The icon_mask specifies which pixels of the icon_pixmap should be used as the
+icon, allowing for icons to appear nonrectangular.
+.LP
+The icon_window field is the ID of a window the client wants used as its icon.
+Most, but not all, window managers will support icon windows.
+Those that do not are likely to have a user interface in which small
+windows that behave like icons are completely inappropriate.
+Clients should not attempt to remedy the omission by working around it.
+.LP
+Clients that need more capabilities from the icons than a simple 2-color
+bitmap should use icon windows.
+Rules for clients that do are set out in section 4.1.9.
+.LP
+The (icon_x,icon_y) coordinate is a hint to the window manager
+as to where it should position the icon.
+The policies of the window manager control the positioning of icons,
+so clients should not depend on attention being paid to this hint.
+.LP
+The window_group field lets the client specify that this window belongs
+to a group of windows.
+An example is a single client manipulating multiple
+children of the root window.
+.NT Conventions
+.IP 1. 5
+The window_group field should be set to the ID of the group leader.
+The window group leader may be a window that exists only for that purpose;
+a placeholder group leader of this kind would never be mapped
+either by the client or by the window manager.
+.IP 2. 5
+The properties of the window group leader are those for the group as
+a whole (for example, the icon to be shown when the entire group is iconified).
+.NE
+.LP
+Window managers may provide facilities for manipulating the group as a whole.
+Clients, at present, have no way to operate on the group as a whole.
+.LP
+The messages bit, if set in the flags field, indicates that the
+client is using an obsolete window manager communication protocol,\**
+rather than the WM_PROTOCOLS mechanism of section 4.1.2.7.
+.FS
+This obsolete protocol was described in the July 27, 1988,
+draft of the ICCCM.
+Windows using it can also be detected because their WM_HINTS properties are
+4 bytes longer than expected.
+Window managers are free to support clients using the obsolete protocol
+in a backwards compatibility mode.
+.FE
+.LP
+The
+.PN UrgencyHint
+flag, if set in the flags field, indicates that the client deems the window
+contents to be urgent, requiring the timely response of the user. The
+window manager must make some effort to draw the user's attention to this
+window while this flag is set. The window manager must also monitor the
+state of this flag for the entire time the window is in the Normal or Iconic
+state and must take appropriate action when the state of the flag changes.
+The flag is otherwise independent of the window's state; in particular, the
+window manager is not required to deiconify the window if the client sets
+the flag on an Iconic window. Clients must provide some means by which the
+user can cause the
+.PN UrgencyHint
+flag to be set to zero or the window to be withdrawn. The user's action can
+either mitigate the actual condition that made the window urgent, or it can
+merely shut off the alarm.
+.NT Rationale
+This mechanism is useful for alarm dialog boxes or reminder windows, in
+cases where mapping the window is not enough (e.g., in the presence of
+multi-workspace or virtual desktop window managers), and where using an
+override-redirect window is too intrusive. For example, the window manager
+may attract attention to an urgent window by adding an indicator to its
+title bar or its icon. Window managers may also take additional action
+for a window that is newly urgent, such as by flashing its icon (if the
+window is iconic) or by raising it to the top of the stack.
+.NE
+.nH 4 "WM_CLASS Property"
+.LP
+The WM_CLASS property (of type STRING without control characters)
+contains two consecutive null-terminated strings.
+These specify the Instance and Class names to be used by both the client
+and the window manager for looking up resources for the application
+or as identifying information.
+This property must be present when the window leaves the Withdrawn state
+and may be changed only while the window is in the Withdrawn state.
+Window managers may examine the property only when they start up
+and when the window leaves the Withdrawn state,
+but there should be no need for a client to change its state dynamically.
+.LP
+The two strings, respectively, are:
+.bP
+A string that names the particular instance of the application to which
+the client that owns this window belongs.
+Resources that are specified by instance name override any resources
+that are specified by class name.
+Instance names can be specified by the user in an operating-system specific
+manner.
+On POSIX-conformant systems,
+the following conventions are used:
+.RS
+.IP \- 5
+If \*Q\-name NAME\*U is given on the command line,
+NAME is used as the instance name.
+.IP \- 5
+Otherwise, if the environment variable RESOURCE_NAME is set,
+its value will be used as the instance name.
+.IP \- 5
+Otherwise,
+the trailing part of the name used to invoke the program
+(argv[0] stripped of any directory names) is used as the instance name.
+.RE
+.bP
+A string that names the general class of applications to which the client
+that owns this window belongs.
+Resources that are specified by class apply to all applications
+that have the same class name.
+Class names are specified by the application writer.
+Examples of commonly used class names include:
+\*QEmacs\*U, \*QXTerm\*U, \*QXClock\*U, \*QXLoad\*U, and so on.
+.LP
+Note that WM_CLASS strings are null-terminated
+and, thus, differ from the general conventions that STRING properties
+are null-separated.
+This inconsistency is necessary for backwards compatibility.
+.nH 4 "WM_TRANSIENT_FOR Property"
+.LP
+The WM_TRANSIENT_FOR property (of type WINDOW)
+contains the ID of another top-level window.
+The implication is that this window is a pop-up on behalf of the named window,
+and window managers may decide not to decorate transient windows
+or may treat them differently in other ways.
+In particular,
+window managers should present newly mapped WM_TRANSIENT_FOR
+windows without requiring any user interaction,
+even if mapping top-level windows normally does require interaction.
+Dialogue boxes, for example, are an example of windows that should have
+WM_TRANSIENT_FOR set.
+.LP
+It is important not to confuse WM_TRANSIENT_FOR with override-redirect.
+WM_TRANSIENT_FOR should be used in those cases where the pointer
+is not grabbed while the window is mapped (in other words,
+if other windows are allowed to be active while the transient is up).
+If other windows must be prevented from processing input
+(for example, when implementing pop-up menus),
+use override-redirect and grab the pointer while the window is mapped.
+.nH 4 "WM_PROTOCOLS Property"
+.LP
+The WM_PROTOCOLS property (of type ATOM) is a list of atoms.
+Each atom identifies a communication protocol between the client
+and the window manager in which the client is willing to participate.
+Atoms can identify both standard protocols and private protocols
+specific to individual window managers.
+.LP
+All the protocols in which a client can volunteer to take part
+involve the window manager sending the client a
+.PN ClientMessage
+event and the client taking appropriate action.
+For details of the contents of the event,
+see section 4.2.8.
+In each case,
+the protocol transactions are initiated by the window manager.
+.LP
+The WM_PROTOCOLS property is not required.
+If it is not present,
+the client does not want to participate in any window manager protocols.
+.LP
+The X Consortium will maintain a registry of protocols to avoid collisions
+in the name space.
+The following table lists the protocols that have been defined to date.
+.br
+.ne 6
+.TS H
+l c l.
+_
+.sp 6p
+.B
+Protocol Section Purpose
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+WM_TAKE_FOCUS 4.1.7 Assignment of input focus
+WM_SAVE_YOURSELF Appendix C Save client state request (deprecated)
+WM_DELETE_WINDOW 4.2.8.1 Request to delete top-level window
+.sp 6p
+_
+.TE
+It is expected that this table will grow over time.
+.nH 4 "WM_COLORMAP_WINDOWS Property"
+.LP
+The WM_COLORMAP_WINDOWS property (of type WINDOW) on a top-level window
+is a list of the IDs of windows that may need colormaps installed
+that differ from the colormap of the top-level window.
+The window manager will watch this list of windows for changes in their
+colormap attributes.
+The top-level window is always (implicitly or explicitly) on the watch list.
+For the details of this mechanism,
+see section 4.1.8.
+.nH 4 "WM_CLIENT_MACHINE Property"
+.LP
+The client should set the WM_CLIENT_MACHINE property (of one of the TEXT
+types) to a string that forms the name of the machine running the client as
+seen from the machine running the server.
+.nH 3 "Window Manager Properties"
+.LP
+The properties that were described in the previous section are those
+that the client is responsible for maintaining on its top-level windows.
+This section describes the properties that the window manager places on
+client's top-level windows and on the root.
+.nH 4 "WM_STATE Property"
+.LP
+The window manager will place a WM_STATE property (of type WM_STATE) on each
+top-level client window that is not in the Withdrawn state. Top-level
+windows in the Withdrawn state may or may not have the WM_STATE property.
+Once the top-level window has been withdrawn, the client may re-use it for
+another purpose. Clients that do so should remove the WM_STATE property if
+it is still present.
+.LP
+Some clients (such as \fBxprop\fP) will ask the user to click over a window
+on which the program is to operate. Typically, the intent is for this to be
+a top-level window. To find a top-level window, clients should search the
+window hierarchy beneath the selected location for a window with the
+WM_STATE property. This search must be recursive in order to cover all
+window manager reparenting possibilities. If no window with a WM_STATE
+property is found, it is recommended that programs use a mapped
+child-of-root window if one is present beneath the selected location.
+.LP
+The contents of the WM_STATE property are defined as follows:
+.br
+.ne 6
+.TS H
+l l l.
+_
+.sp 6p
+.B
+Field Type Comments
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+state CARD32 (see the next table)
+icon WINDOW ID of icon window
+.sp 6p
+_
+.TE
+.LP
+The following table lists the WM_STATE.state values:
+.br
+.ne 6
+.TS H
+l n.
+_
+.sp 6p
+.B
+State Value
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+T{
+.PN WithdrawnState
+T} 0
+T{
+.PN NormalState
+T} 1
+T{
+.PN IconicState
+T} 3
+.sp 6p
+_
+.TE
+.LP
+Adding other fields to this property is reserved to the X Consortium.
+Values for the state field other than those defined in the above
+table are reserved for use by the X Consortium.
+.LP
+The state field describes the window manager's idea of the state
+the window is in, which may not match the client's idea as expressed
+in the initial_state field of the WM_HINTS property
+(for example, if the user has asked the window manager to iconify the window).
+If it is
+.PN Normal\%State ,
+the window manager believes the client should be animating its window.
+If it is
+.PN IconicState ,
+the client should animate its icon window.
+In either state,
+clients should be prepared to handle exposure events from either window.
+.LP
+When the window is withdrawn, the window manager will either change the
+state field's value to
+.PN Withdrawn\%State
+or it will remove the WM_STATE property entirely.
+.LP
+The icon field should contain the window ID of the window that the
+window manager uses as the icon for the window on which this property is
+set. If no such window exists, the icon field should be
+.PN None .
+Note that this window could be but is not necessarily the same window as the
+icon window that the client may have specified in its WM_HINTS property.
+The WM_STATE icon may be a window that the window manager has supplied and
+that contains the client's icon pixmap, or it may be an ancestor of the
+client's icon window.
+.nH 4 "WM_ICON_SIZE Property"
+.LP
+A window manager that wishes to place constraints on the sizes of icon
+pixmaps and/or windows should place a property called WM_ICON_SIZE on the root.
+The contents of this property are listed in the following table.
+.br
+.ne 6
+.TS H
+l l l.
+_
+.sp 6p
+.B
+Field Type Comments
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+min_width CARD32 The data for the icon size series
+min_height CARD32
+max_width CARD32
+max_height CARD32
+width_inc CARD32
+height_inc CARD32
+.sp 6p
+_
+.TE
+.LP
+For more details see section 14.1.12 in \fIXlib \- C Language X Interface\fP.
+.nH 3 "Changing Window State"
+.LP
+From the client's point of view,
+the window manager will regard each of the client's top-level
+windows as being in one of three states,
+whose semantics are as follows:
+.bP
+.PN NormalState
+\- The client's top-level window is viewable.
+.bP
+.PN IconicState
+\- The client's top-level window is iconic
+(whatever that means for this window manager).
+The client can assume that its top-level window is not viewable,
+its icon_window (if any) will be viewable
+and, failing that,
+its icon_pixmap (if any) or its WM_ICON_NAME will be displayed.
+.bP
+.PN WithdrawnState
+\- Neither the client's top-level window nor its icon is visible.
+.LP
+In fact,
+the window manager may implement states with semantics
+other than those described above.
+For example,
+a window manager might implement a concept of an \*Qinactive\*U state
+in which an infrequently used client's window would be represented
+as a string in a menu.
+But this state is invisible to the client,
+which would see itself merely as being in the Iconic state.
+.LP
+Newly created top-level windows are in the Withdrawn state.
+Once the window has been provided with suitable properties,
+the client is free to change its state as follows:
+.bP
+Withdrawn \(-> Normal \- The client should map the window with
+WM_HINTS.initial_state being
+.PN NormalState .
+.bP
+Withdrawn \(-> Iconic \- The client should map the window with
+WM_HINTS.initial_state being
+.PN IconicState .
+.bP
+Normal \(-> Iconic \- The client should send a
+.PN ClientMessage
+event as described later in this section.
+.bP
+Normal \(-> Withdrawn \- The client should unmap the window and follow it
+with a synthetic
+.PN UnmapNotify
+event as described later in this section.
+.bP
+Iconic \(-> Normal \- The client should map the window.
+The contents of WM_HINTS.initial_state are irrelevant in this case.
+.bP
+Iconic \(-> Withdrawn \- The client should unmap the window
+and follow it with a synthetic
+.PN UnmapNotify
+event as described later in this section.
+.LP
+Only the client can effect a transition into or out of the Withdrawn
+state.
+Once a client's window
+has left the Withdrawn state,
+the window will be mapped if it is in the Normal state and the window will be
+unmapped if it is in the Iconic state. Reparenting window managers
+must unmap the client's window when it is in the Iconic state, even if an
+ancestor window being unmapped renders the client's window unviewable.
+Conversely, if a reparenting window manager renders the client's window
+unviewable by unmapping an ancestor, the client's window is by definition in
+the Iconic state and must also be unmapped.
+.NT "Advice to Implementors"
+Clients can select for
+.PN StructureNotify
+on their
+top-level windows to track transitions between Normal and Iconic states.
+Receipt of a
+.PN MapNotify
+event will indicate a transition to the Normal state, and receipt of an
+.PN UnmapNotify
+event will indicate a transition to the Iconic state.
+.NE
+.LP
+When changing the state of the window to Withdrawn, the client must (in
+addition to unmapping the window) send a synthetic
+.PN UnmapNotify
+event by
+using a
+.PN SendEvent
+request with the following arguments:
+.br
+.ne 6
+.TS
+l lw(3.5i).
+_
+.sp 6p
+.B
+Argument Value
+.sp 6p
+_
+.sp 6p
+.R
+destination: The root
+propagate: T{
+.PN False
+T}
+event-mask: T{
+.Pn ( SubstructureRedirect|SubstructureNotify )
+T}
+T{
+event: an
+.PN UnmapNotify
+with:
+T} T{
+T}
+\h'4n'event: The root
+\h'4n'window: The window itself
+\h'4n'from-configure: T{
+.PN False
+T}
+.sp 6p
+_
+.TE
+.NT Rationale
+The reason for requiring the client to send a synthetic
+.PN UnmapNotify
+event is to ensure that the window manager
+gets some notification of the client's desire to change state,
+even though the window may already be unmapped when the desire is expressed.
+.NE
+.NT "Advice to Implementors"
+For compatibility with obsolete clients,
+window managers should trigger the transition to the Withdrawn state
+on the real
+.PN UnmapNotify
+rather than waiting for the synthetic one.
+They should also trigger the transition if they receive a synthetic
+.PN UnmapNotify
+on a window for which they have not yet received a real
+.PN UnmapNotify .
+.NE
+.LP
+When a client withdraws a window,
+the window manager will then update or remove the WM_STATE
+property as described in section 4.1.3.1.
+Clients that want to re-use a client window (e.g., by mapping it again or
+reparenting it elsewhere) after withdrawing it must wait for the
+withdrawal to be complete before proceeding. The preferred method for
+doing this is for clients to wait for the window manager to update or
+remove the WM_STATE property.\**
+.FS
+Earlier versions of these conventions prohibited clients from
+reading the WM_STATE property. Clients operating under the earlier
+conventions used the technique of tracking
+.PN ReparentNotify
+events to wait for the top-level window to be reparented back to the root
+window. This is still a valid technique; however, it works only for
+reparenting window managers, and the WM_STATE technique is to be preferred.
+.FE
+.LP
+If the transition is from the Normal to the Iconic state,
+the client should send a
+.PN ClientMessage
+event to the root with:
+.bP
+Window == the window to be iconified
+.bP
+Type\** == the atom WM_CHANGE_STATE
+.FS
+The type field of the
+.PN ClientMessage
+event (called the message_type field by Xlib) should not be confused with
+the code field of the event itself,
+which will have the value 33
+.Pn ( ClientMessage ).
+.FE
+.bP
+Format == 32
+.bP
+Data[0] == IconicState
+.NT Rationale
+The format of this
+.PN ClientMessage
+event does not match the format of
+.PN ClientMessages
+in section 4.2.8.
+This is because they are sent by the window manager to clients,
+and this message is sent by clients to the window manager.
+.NE
+.LP
+Other values of data[0] are reserved for future extensions to these
+conventions. The parameters of the
+.PN SendEvent
+request should be those described for the synthetic
+.PN UnmapNotify
+event.
+.NT "Advice to Implementors"
+Clients can also select for
+.PN VisibilityChange
+events on their top-level or icon windows.
+They will then receive a
+.PN VisibilityNotify (state==FullyObscured)
+event when the window concerned becomes completely
+obscured even though mapped (and thus, perhaps a waste
+of time to update) and a
+.PN VisibilityNotify (state!=FullyObscured)
+event when it becomes even partly viewable.
+.NE
+.NT "Advice to Implementors"
+When a window makes a transition from the Normal state to either the Iconic
+or the Withdrawn state, clients should be aware that the window manager
+may make transients for this window inaccessible. Clients should not rely
+on transient windows being available to the user when the transient owner
+window is not in the Normal state. When withdrawing a window, clients are
+advised to withdraw transients for the window.
+.NE
+.nH 3 "Configuring the Window"
+.LP
+Clients can resize and reposition their top-level windows by using the
+.PN ConfigureWindow
+request.
+The attributes of the window that can be altered
+with this request are as follows:
+.bP
+The [x,y] location of the window's upper left-outer corner
+.bP
+The [width,height] of the inner region of the window (excluding
+borders)
+.bP
+The border width of the window
+.bP
+The window's position in the stack
+.LP
+The coordinate system in which the location is expressed is that of the root
+(irrespective of any reparenting that may have occurred).
+The border width to be used and win_gravity position hint
+to be used are those most recently requested by the client.
+Client configure requests are interpreted by the window manager
+in the same manner as the initial window geometry mapped from
+the Withdrawn state, as described in section 4.1.2.3.
+Clients must be aware that there is no guarantee that the window manager
+will allocate them the requested size or location and must be prepared to
+deal with any size and location.
+If the window manager decides to respond to a
+.PN ConfigureRequest
+request by:
+.bP
+Not changing the size, location, border width, or stacking order
+of the window at all.
+.IP
+A client will receive a synthetic
+.PN ConfigureNotify
+event that describes the (unchanged) geometry of the window.
+The (x,y) coordinates will be in the root coordinate system,
+adjusted for the border width the client requested,
+irrespective of any reparenting that has taken place.
+The border_width will be the border width the client requested.
+The client will not receive a real
+.PN ConfigureNotify
+event because no change has actually taken place.
+.bP
+Moving or restacking the window without resizing it or
+changing its border width.
+.IP
+A client will receive a synthetic
+.PN ConfigureNotify
+event following the change that describes the new geometry of the window.
+The event's (x,y) coordinates will be in the root coordinate system adjusted
+for the border width the client requested.
+The border_width will be the border width the client requested.
+The client may not receive a real
+.PN ConfigureNotify
+event that describes this change because the window manager may have reparented
+the top-level window.
+If the client does receive a real event,
+the synthetic event will follow the real one.
+.bP
+Resizing the window or changing its border width (regardless of whether the
+window was also moved or restacked).
+.IP
+A client that has selected for
+.PN StructureNotify
+events will receive a real
+.PN ConfigureNotify
+event.
+Note that the coordinates in this event are relative to the parent,
+which may not be the root if the window has been reparented.
+The coordinates will reflect the actual border width of the window
+(which the window manager may have changed).
+The
+.PN Translate\%Coordinates
+request can be used to convert the coordinates if required.
+.LP
+The general rule is that coordinates in real
+.PN ConfigureNotify
+events are in the parent's space;
+in synthetic events, they are in the root space.
+.NT "Advice to Implementors"
+Clients cannot distinguish between the case where a top-level window is
+resized and moved from the case where the window is resized but not moved,
+since a real
+.PN ConfigureNotify
+event will be received in both cases. Clients that are concerned with
+keeping track of the absolute position of a top-level window should keep a
+piece of state indicating whether they are certain of its position. Upon
+receipt of a real
+.PN ConfigureNotify
+event on the top-level window, the client should note that the position is
+unknown. Upon receipt of a synthetic
+.PN ConfigureNotify
+event, the client should note the position as known, using the position in
+this event. If the client receives a
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN MotionNotify ,
+.PN EnterNotify ,
+or
+.PN LeaveNotify
+event on the window (or on any descendant), the client can deduce the
+top-level window's position from the difference between the (event-x,
+event-y) and (root-x, root-y) coordinates in these events. Only when the
+position is unknown does the client need to use the
+.PN Translate\%Coordinates
+request to find the position of a top-level window.
+.NE
+.LP
+Clients should be aware that their borders may not be visible.
+Window managers are free to use reparenting techniques to
+decorate client's top-level windows with borders containing
+titles, controls, and other details to maintain a consistent look-and-feel.
+If they do,
+they are likely to override the client's attempts to set the border width
+and set it to zero.
+Clients, therefore, should not depend on the top-level window's border
+being visible or use it to display any critical information.
+Other window managers will allow the top-level windows border to
+be visible.
+.NT Convention
+Clients should set the desired value of the border-width attribute on all
+.PN ConfigureWindow
+requests to avoid a race condition.
+.NE
+.LP
+Clients that change their position in the stack must be aware
+that they may have been reparented,
+which means that windows that used to be siblings no longer are.
+Using a nonsibling as the sibling parameter on a
+.PN ConfigureWindow
+request will cause an error.
+.NT Convention
+Clients that use a
+.PN ConfigureWindow
+request to request a change in their position in the stack
+should do so using
+.PN None
+in the sibling field.
+.NE
+.LP
+Clients that must position themselves in the stack relative to some
+window that was originally a sibling must do the
+.PN ConfigureWindow
+request (in case they are running under a nonreparenting window manager),
+be prepared to deal with a resulting error,
+and then follow with a synthetic
+.PN ConfigureRequest
+event by invoking a
+.PN SendEvent
+request with the following arguments:
+.br
+.ne 6
+.TS
+l lw(3.5i).
+_
+.sp 6p
+.B
+Argument Value
+.sp 6p
+_
+.sp 6p
+.R
+destination: The root
+propagate: T{
+.PN False
+T}
+event-mask: T{
+.Pn ( SubstructureRedirect|SubstructureNotify )
+T}
+T{
+event: a
+.PN ConfigureRequest
+with:
+T} T{
+T}
+\h'4n'event: The root
+\h'4n'window: The window itself
+T{
+\h'4n'\&.\^.\^.
+T} T{
+Other parameters from the
+.PN ConfigureWindow
+request
+T}
+.sp 6p
+_
+.TE
+.LP
+Window managers are in any case free to position windows in the stack as
+they see fit, and so clients should not rely on receiving the stacking
+order they have requested. Clients should ignore the above-sibling
+field of both real and synthetic
+.PN ConfigureNotify
+events received on their top-level windows because this field may not
+contain useful information.
+.nH 3 "Changing Window Attributes"
+.LP
+The attributes that may be supplied when a window is created may be
+changed by using the
+.PN ChangeWindowAttributes
+request.
+The window attributes are listed in the following table:
+.br
+.ne 6
+.TS H
+l l
+l c.
+_
+.sp 6p
+.B
+Attribute Private to Client
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Background pixmap Yes
+Background pixel Yes
+Border pixmap Yes
+Border pixel Yes
+Bit gravity Yes
+Window gravity No
+Backing-store hint Yes
+Save-under hint No
+Event mask No
+Do-not-propagate mask Yes
+Override-redirect flag No
+Colormap Yes
+Cursor Yes
+.sp 6p
+_
+.TE
+.LP
+Most attributes are private to the client and will never be interfered with
+by the window manager.
+For the attributes that are not private to the client:
+.bP
+The window manager is free to override the window gravity;
+a reparenting window manager may want to set the top-level window's
+window gravity for its own purposes.
+.bP
+Clients are free to set the save-under hint on their top-level windows,
+but they must be aware that the hint may be overridden by the window manager.
+.bP
+Windows, in effect, have per-client event masks,
+and so, clients may select for whatever events are convenient irrespective
+of any events the window manager is selecting for.
+There are some events for which only one client at a time may select,
+but the window manager should not select for them on any of the client's
+windows.
+.bP
+Clients can set override-redirect on top-level windows but are
+encouraged not to do so except as described in sections 4.1.10 and 4.2.9.
+.nH 3 "Input Focus"
+.LP
+There are four models of input handling:
+.bP
+No Input \- The client never expects keyboard input.
+An example would be
+.PN xload
+or another output-only client.
+.bP
+Passive Input \- The client expects keyboard input but never explicitly sets
+the input focus.
+An example would be a simple client with no subwindows,
+which will accept input in
+.PN PointerRoot
+mode or when the window manager sets the input focus to its top-level window
+(in click-to-type mode).
+.bP
+Locally Active Input \- The client expects keyboard input and explicitly sets
+the input focus,
+but it only does so when one of its windows already has the focus.
+An example would be a client with subwindows defining various data
+entry fields that uses Next and Prev keys to move the input focus
+between the fields.
+It does so when its top-level window has acquired the focus in
+.PN PointerRoot
+mode or when the window manager sets the input focus to its top-level window
+(in click-to-type mode).
+.bP
+Globally Active Input \- The client expects keyboard input and explicitly sets
+the input focus,
+even when it is in windows the client does not own.
+An example would be a client with a scroll bar that wants to allow
+users to scroll the window without disturbing the input focus even if
+it is in some other window.
+It wants to acquire the input focus when the user clicks in the scrolled
+region but not when the user clicks in the scroll bar itself.
+Thus, it wants to prevent the window manager from setting the input focus
+to any of its windows.
+.LP
+The four input models and the corresponding values of the input field
+and the presence or absence of the WM_TAKE_FOCUS atom in the
+WM_PROTOCOLS property are listed in the following table:
+.br
+.ne 6
+.TS H
+l l l
+l c c.
+_
+.sp 6p
+.B
+Input Model Input Field WM_TAKE_FOCUS
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+No Input
+T} T{
+.PN False
+T} T{
+Absent
+T}
+T{
+Passive
+T} T{
+.PN True
+T} T{
+Absent
+T}
+T{
+Locally Active
+T} T{
+.PN True
+T} T{
+Present
+T}
+T{
+Globally Active
+T} T{
+.PN False
+T} T{
+Present
+T}
+.sp 6p
+_
+.TE
+.LP
+Passive and Locally Active clients set the input field of WM_HINTS to
+.PN True ,
+which indicates that they require window manager assistance in acquiring the
+input focus.
+No Input and Globally Active clients set the input field to
+.PN False ,
+which requests that the window manager not set the input focus
+to their top-level window.
+.LP
+Clients that use a
+.PN SetInputFocus
+request must set the time field to the timestamp of the event
+that caused them to make the attempt.
+This cannot be a
+.PN FocusIn
+event because they do not have timestamps.
+Clients may also acquire
+the focus without a corresponding
+.PN EnterNotify .
+Note that clients must not use
+.PN CurrentTime
+in the time field.
+.LP
+Clients using the Globally Active model can only use a
+.PN SetInputFocus
+request to acquire the input focus when they do not already have it on
+receipt of one of the following events:
+.bP
+.PN ButtonPress
+.bP
+.PN ButtonRelease
+.bP
+Passive-grabbed
+.PN KeyPress
+.bP
+Passive-grabbed
+.PN KeyRelease
+.LP
+In general,
+clients should avoid using passive-grabbed key events for this purpose,
+except when they are unavoidable (as, for example, a selection tool
+that establishes a passive grab on the keys that cut, copy, or paste).
+.LP
+The method by which the user commands the window manager to
+set the focus to a window is up to the window manager.
+For example,
+clients cannot determine whether they will see the click
+that transfers the focus.
+.LP
+Windows with the atom WM_TAKE_FOCUS in their WM_PROTOCOLS property
+may receive a
+.PN ClientMessage
+event from the window manager (as described in section 4.2.8)
+with WM_TAKE_FOCUS in its data[0] field and a valid timestamp
+(i.e., not
+.PN CurrentTime )
+in its data[1] field.
+If they want the focus,
+they should respond with a
+.PN SetInputFocus
+request with its window field set to the window of theirs
+that last had the input focus or to their default input window,
+and the time field set to the timestamp in the message.
+For further information,
+see section 4.2.7.
+.LP
+A client could receive WM_TAKE_FOCUS when opening from an icon
+or when the user has clicked outside the top-level window in an area that
+indicates to the window manager that it should assign the focus
+(for example, clicking in the headline bar can be used to assign the focus).
+.LP
+The goal is to support window managers that want to assign the input focus
+to a top-level window in such a way that the top-level window either
+can assign it to one of its subwindows or can decline the offer of the focus.
+For example, a clock or a text editor with no currently open frames
+might not want to take focus even though the window manager generally
+believes that clients should take the input focus after being deiconified
+or raised.
+.LP
+Clients that set the input focus need to decide a value for the
+revert-to field of the
+.PN SetInputFocus
+request.
+This determines the behavior of the input focus
+if the window the focus has been set to becomes not viewable.
+The value can be any of the following:
+.bP
+.PN Parent
+\- In general,
+clients should use this value when assigning focus to one of their subwindows.
+Unmapping the subwindow will cause focus to revert to the parent,
+which is probably what you want.
+.bP
+.PN PointerRoot
+\- Using
+this value with a click-to-type focus management policy
+leads to race conditions because the window becoming unviewable may
+coincide with the window manager deciding to move the focus elsewhere.
+.bP
+.PN None
+\- Using
+this value causes problems if the window manager reparents
+the window, as most window managers will, and then crashes.
+The input focus will be
+.PN None ,
+and there will probably be no way to change it.
+.LP
+Note that neither
+.PN PointerRoot
+nor
+.PN None
+is really safe to use.
+.NT Convention
+Clients that invoke a
+.PN SetInputFocus
+request should set the revert-to argument to
+.PN Parent .
+.NE
+.LP
+A convention is also required for clients that want to give up the
+input focus.
+There is no safe value set for them to set the input focus to;
+therefore, they should ignore input material.
+.NT Convention
+Clients should not give up the input focus of their own volition.
+They should ignore input that they receive instead.
+.NE
+.nH 3 "Colormaps"
+.LP
+The window manager is responsible for installing and uninstalling
+colormaps on behalf of clients with top-level windows that
+the window manager manages.
+.LP
+Clients provide the window manager with hints as to which colormaps to
+install and uninstall. Clients must not install or uninstall colormaps
+themselves (except under the circumstances noted below). When a client's
+top-level window gets the colormap focus (as a result of whatever colormap
+focus policy is implemented by the window manager), the window manager will
+ensure that one or more of the client's colormaps are installed.
+.LP
+Clients whose top-level windows and subwindows all use the same colormap
+should set its ID in the colormap field of the top-level window's
+attributes. They should not set a WM_COLORMAP_WINDOWS property on the
+top-level window. If they want to change the colormap, they should change
+the top-level window's colormap attribute. The window manager will track
+changes to the window's colormap attribute and install colormaps as
+appropriate.
+.LP
+Clients that create windows can use the value
+.PN CopyFrom\%Parent
+to inherit their parent's colormap. Window managers will ensure that the
+root window's colormap field contains a colormap that is suitable for
+clients to inherit. In particular, the colormap will provide
+distinguishable colors for
+.PN BlackPixel
+and
+.PN WhitePixel .
+.LP
+Top-level windows that have subwindows or override-redirect pop-up windows
+whose colormap requirements differ from the top-level window should have a
+WM_COLORMAP_WINDOWS property. This property contains a list of IDs for
+windows whose colormaps the window manager should attempt to have installed
+when, in the course of its individual colormap focus policy, it assigns the
+colormap focus to the top-level window (see section 4.1.2.8). The list is
+ordered by the importance to the client of having the colormaps installed.
+The window manager will track changes to this property and will track
+changes to the colormap attribute of the windows in the property.
+.LP
+If the relative importance of colormaps changes, the client should update
+the WM_COLORMAP_WINDOWS property to reflect the new ordering. If the
+top-level window does not appear in the list, the window manager will assume
+it to be of higher priority than any window in the list.
+.LP
+WM_TRANSIENT_FOR windows can either have their own WM_COLORMAP_WINDOWS
+property or appear in the property of the window they are transient for,
+as appropriate.
+.NT Rationale
+An alternative design was considered for how clients should hint to the
+window manager about their colormap requirements. This alternative design
+specified a list of colormaps instead of a list of windows. The current
+design, a list of windows, was chosen for two reasons. First, it allows
+window managers to find the visuals of the colormaps, thus permitting
+visual-dependent colormap installation policies. Second, it allows window
+managers to select for
+.PN Visibility\%Change
+events on the windows concerned and to ensure that colormaps are only
+installed if the windows that need them are visible. The alternative design
+allows for neither of these policies.
+.NE
+.NT "Advice to Implementors"
+Clients should be aware of the min-installed-maps and max-installed-maps
+fields of the connection setup information, and the effect that the minimum
+value has on the \*Qrequired list\*U defined by the Protocol in the
+description of the
+.PN Install\%Colormap
+request. Briefly, the min-installed-maps most recently installed maps are
+guaranteed to be installed. This value is often one; clients needing
+multiple colormaps should beware.
+.NE
+.LP
+Whenever possible, clients should use the mechanisms described above and let
+the window manager handle colormap installation. However, clients are
+permitted to perform colormap installation on their own while they have the
+pointer grabbed. A client performing colormap installation must notify the
+window manager prior to the first installation. When the client has
+finished its colormap installation, it must also notify the window manager.
+The client notifies the window manager by issuing a
+.PN Send\%Event
+request with the following arguments:
+.br
+.LP
+.ne 6
+.TS
+tab(/) ;
+lB lB
+l lw(3.5i)
+.
+_
+.sp 6p
+Argument/Value
+.sp 6p
+_
+destination:/T{
+the root window of the screen on
+which the colormap is being installed
+T}
+propagate:/T{
+.PN False
+T}
+event-mask:/T{
+.PN ColormapChange
+T}
+T{
+event: a
+.PN ClientMessage
+with:
+T}
+\h'2m'window:/the root window, as above
+\h'2m'type:/WM_COLORMAP_NOTIFY
+\h'2m'format:/32
+\h'2m'data[0]:/T{
+the timestamp of the event that caused
+the client to start or stop installing colormaps
+T}
+\h'2m'data[1]:/T{
+1 if the client is starting colormap installation, 0 if the client is
+finished with colormap installation
+T}
+\h'2m'data[2]:/reserved, must be zero
+\h'2m'data[3]:/reserved, must be zero
+\h'2m'data[4]:/reserved, must be zero
+.sp 6p
+_
+.TE
+.LP
+This feature was introduced in version 2.0 of this document, and there will
+be a significant period of time before all window managers can be expected
+to implement this feature. Before using this feature, clients must check
+the compliance level of the window manager (using the mechanism described in
+section 4.3) to verify that it supports this feature. This is necessary to
+prevent colormap installation conflicts between clients and older window
+managers.
+.LP
+Window managers should refrain from installing colormaps while a client has
+requested control of colormap installation. The window manager should
+continue to track the set of installed colormaps so that it can reinstate
+its colormap focus policy when the client has finished colormap installation.
+.LP
+This technique has race conditions that may result in the colormaps
+continuing to be installed even after a client has issued its notification
+message. For example, the window manager may have issued some
+.PN Install\%Colormap
+requests that are not executed until after the
+client's
+.PN SendEvent \%
+and
+.PN Install\%Colormap
+requests, thus uninstalling the client's colormaps. If this occurs while
+the client still has the pointer grabbed and before the client has issued
+the \*Qfinished\*U message, the client may reinstall the desired colormaps.
+.NT "Advice to Implementors"
+Clients are expected to use this mechanism for things such as
+pop-up windows and for animations that use override-redirect windows.
+.\" Avoid .LP within a .NT, because it resets the margins. The .NT
+.\" macro should probably be fixed.
+.br
+.sp \n(PDu
+If a client fails to issue the \*Qfinished\*U message, the window manager
+may be left in a state where its colormap installation policy is suspended.
+Window manager implementors may want to implement a feature that resets
+colormap installation policy in response to a command from the user.
+.NE
+.nH 3 "Icons"
+.LP
+A client can hint to the window manager about the desired appearance
+of its icon by setting:
+.bP
+A string in WM_ICON_NAME.
+.IP
+All clients should do this
+because it provides a fallback for window managers whose ideas
+about icons differ widely from those of the client.
+.bP
+A
+.PN Pixmap
+into the icon_pixmap field of the WM_HINTS property
+and possibly another into the icon_mask field.
+.IP
+The window manager is expected to display the pixmap masked by the mask.
+The pixmap should be one of the sizes found in the WM_ICON_SIZE property
+on the root.
+If this property is not found,
+the window manager is unlikely to display icon pixmaps.
+Window managers usually will clip or tile pixmaps that do not match
+WM_ICON_SIZE.
+.bP
+A window into the icon_window field of the WM_HINTS property.
+.IP
+The window manager is expected to map that window whenever the client is
+in the Iconic state.
+In general,
+the size of the icon window should be one of those specified in WM_ICON_SIZE
+on the root, if it exists.
+Window managers are free to resize icon windows.
+.LP
+In the Iconic state,
+the window manager usually will ensure that:
+.bP
+If the window's WM_HINTS.icon_window is set,
+the window it names is visible.
+.bP
+If the window's WM_HINTS.icon_window is not set
+but the window's WM_HINTS.icon_pixmap is set,
+the pixmap it names is visible.
+.bP
+Otherwise,
+the window's WM_ICON_NAME string is visible.
+.LP
+Clients should observe the following conventions about their icon windows:
+.NT Conventions
+.IP 1. 5
+The icon window should be an
+.PN InputOutput
+child of the root.
+.IP 2. 5
+The icon window should be one of the sizes specified
+in the WM_ICON_SIZE property on the root.
+.IP 3. 5
+The icon window should use the root visual and default colormap
+for the screen in question.
+.IP 4. 5
+Clients should not map their icon windows.
+.IP 5. 5
+Clients should not unmap their icon windows.
+.IP 6. 5
+Clients should not configure their icon windows.
+.IP 7. 5
+Clients should not set override-redirect on their icon windows
+or select for
+.PN Resize\%Redirect
+events on them.
+.IP 8. 5
+Clients must not depend on being able to receive input events
+by means of their icon windows.
+.IP 9. 5
+Clients must not manipulate the borders of their icon windows.
+.IP 10. 5
+Clients must select for
+.PN Exposure
+events on their icon window and repaint it when requested.
+.NE
+.LP
+Window managers will differ as to whether they support input events
+to client's icon windows;
+most will allow the client to receive some subset of the keys and buttons.
+.LP
+Window managers will ignore any WM_NAME, WM_ICON_NAME, WM_NORMAL_HINTS,
+WM_HINTS, WM_CLASS, WM_TRANSIENT_FOR, WM_PROTOCOLS, WM_COLORMAP_WINDOWS,
+WM_COMMAND, or WM_CLIENT_MACHINE
+properties they find on icon windows.
+.nH 3 "Pop-up Windows"
+.LP
+Clients that wish to pop up a window can do one of three things:
+.IP 1. 5
+They can create and map another normal top-level window,
+which will get decorated and managed as normal by the window manager.
+See the discussion of window groups that follows.
+.IP 2. 5
+If the window will be visible for a relatively short time
+and deserves a somewhat lighter treatment,
+they can set the WM_TRANSIENT_FOR property.
+They can expect less decoration but can set all the normal
+window manager properties on the window.
+An example would be a dialog box.
+.IP 3. 5
+If the window will be visible for a very short time
+and should not be decorated at all,
+the client can set override-redirect on the window.
+In general,
+this should be done only if the pointer is grabbed while the window is mapped.
+The window manager will never interfere with these windows,
+which should be used with caution.
+An example of an appropriate use is a pop-up menu.
+.NT "Advice to Implementors"
+The user will not be able to move, resize, restack, or transfer the input
+focus to override-redirect windows, since the window manager is not managing
+them. If it is necessary for a client to receive keystrokes on an
+override-redirect window, either the client must grab the keyboard or the
+client must have another top-level window that is not override-redirect and
+that has selected the Locally Active or Globally Active focus model. The
+client may set the focus to the override-redirect window when the other
+window receives a WM_TAKE_FOCUS message or one of the events listed in
+section 4.1.7 in the description of the Globally Active focus model.
+.NE
+.LP
+Window managers are free to decide if WM_TRANSIENT_FOR windows
+should be iconified when the window they are transient for is.
+Clients displaying WM_TRANSIENT_FOR windows that have
+(or request to have) the window they are transient for iconified
+do not need to request that the same operation be performed
+on the WM_TRANSIENT_FOR window;
+the window manager will change its state if that is the policy it wishes
+to enforce.
+.nH 3 "Window Groups"
+.LP
+A set of top-level windows that should be treated from the user's point of view
+as related (even though they may belong to a number of clients) should be linked
+together using the window_group field of the WM_HINTS structure.
+.LP
+One of the windows (that is, the one the others point to)
+will be the group leader and will carry the group as opposed
+to the individual properties.
+Window managers may treat the group leader differently
+from other windows in the group.
+For example,
+group leaders may have the full set of decorations,
+and other group members may have a restricted set.
+.LP
+It is not necessary that the client ever map the group leader;
+it may be a window that exists solely as a placeholder.
+.LP
+It is up to the window manager to determine the policy
+for treating the windows in a group.
+At present,
+there is no way for a client to request a group,
+as opposed to an individual, operation.
+.nH 2 "Client Responses to Window Manager Actions"
+.LP
+The window manager performs a number of operations on client resources,
+primarily on their top-level windows.
+Clients must not try to fight this but may elect to receive notification
+of the window manager's operations.
+.nH 3 "Reparenting"
+.LP
+Clients must be aware that some window managers will reparent
+their top-level windows
+so that a window that was created as a child of the root will be displayed
+as a child of some window belonging to the window manager.
+The effects that this reparenting will have on the client are as follows:
+.bP
+The parent value returned by a
+.PN QueryTree
+request will no longer be the value supplied to the
+.PN CreateWindow
+request that created the reparented window.
+There should be no need for the client to be aware of the identity
+of the window to which the top-level window has been reparented.
+In particular,
+a client that wishes to create further top-level windows should continue
+to use the root as the parent for these new windows.
+.bP
+The server will interpret the (x,y) coordinates in a
+.PN ConfigureWindow
+request in the new parent's coordinate space.
+In fact, they usually will not be interpreted by the server
+because a reparenting window manager usually will have intercepted
+these operations (see section 4.2.2).
+Clients should use the root coordinate space for these requests
+(see section 4.1.5).
+.bP
+.PN ConfigureWindow
+requests that name a specific sibling window may fail because the window named,
+which used to be a sibling, no longer is after the reparenting operation
+(see section 4.1.5).
+.bP
+The (x,y) coordinates returned by a
+.PN GetGeometry
+request are in the parent's coordinate space
+and are thus not directly useful after a reparent operation.
+.bP
+A background of
+.PN ParentRelative
+will have unpredictable results.
+.bP
+A cursor of
+.PN None
+will have unpredictable results.
+.LP
+Clients that want to be notified when they are reparented can select for
+.PN StructureNotify
+events on their top-level window.
+They will receive a
+.PN ReparentNotify
+event if and when reparenting takes place.
+When a client withdraws a top-level window, the window manager will
+reparent it back to the root window if the window had been reparented
+elsewhere.
+.LP
+If the window manager reparents a client's window,
+the reparented window will be placed in the save-set
+of the parent window.
+This means that the reparented window will not be destroyed
+if the window manager terminates and will be remapped if it was unmapped.
+Note that this applies to all client windows the window manager reparents,
+including transient windows and client icon windows.
+.nH 3 "Redirection of Operations"
+.LP
+Clients must be aware that some window managers will arrange
+for some client requests to be intercepted and redirected.
+Redirected requests are not executed;
+they result instead in events being sent to the window manager,
+which may decide to do nothing, to alter the arguments,
+or to perform the request on behalf of the client.
+.LP
+The possibility that a request may be redirected means
+that a client cannot assume that any redirectable request is actually
+performed when the request is issued or is actually performed at all.
+The requests that may be redirected are
+.PN \%MapWindow ,
+.PN Configure\%Window ,
+and
+.PN Circulate\%Window .
+.NT "Advice to Implementors"
+The following is incorrect because the
+.PN MapWindow
+request may be intercepted and the
+.PN PolyLine
+output made to an unmapped window:
+.LP
+.DS
+MapWindow A
+PolyLine A GC <point> <point> .\^.\^.
+.DE
+.LP
+The client must wait for an
+.PN Expose
+event before drawing in the window.\**
+.FS
+This is true even if the client set the backing-store attribute to
+.PN Always .
+The backing-store attribute is a only a hint,
+and the server may stop maintaining backing store contents at any time.
+.FE
+.LP
+This next example incorrectly assumes that the
+.PN ConfigureWindow
+request is actually executed with the arguments supplied:
+.LP
+.DS
+ConfigureWindow width=N height=M
+<output assuming window is N by M>
+.DE
+.LP
+The client should select for
+.PN Structure\%Notify
+on its window and monitor the window's size by tracking
+.PN Configure\%Notify
+events.
+.LP
+Clients must be especially careful when attempting to set the focus to a
+window that they have just mapped. This sequence may result in an X
+protocol error:
+.LP
+.DS
+MapWindow B
+SetInputFocus B
+.DE
+.LP
+If the
+.PN Map\%Window
+request has been intercepted, the window will still be
+unmapped, causing the
+.PN SetInput\%Focus
+request to generate the error. The solution to this problem is for clients
+to select for
+.PN Visibility\%Change
+on the window and to delay the issuance of the
+.PN SetInput\%Focus
+request until they have received a
+.PN Visibility\%Notify
+event indicating that the window is visible.
+.LP
+This technique does not guarantee correct operation. The user may have
+iconified the window by the time the
+.PN SetInput\%Focus
+request reaches the server, still causing an error. Or the window manager
+may decide to map the window into Iconic state, in which case the window
+will not be visible. This will delay the generation of the
+.PN Visibility\%Notify
+event indefinitely. Clients must be prepared to handle these cases.
+.NE
+.LP
+A window with the override-redirect bit set is immune from redirection,
+but the bit should be set on top-level windows only in cases
+where other windows should be prevented from processing input
+while the override-redirect window is mapped (see section 4.1.10)
+and while responding to
+.PN ResizeRequest
+events (see section 4.2.9).
+.LP
+Clients that have no non-Withdrawn top-level windows
+and that map an override-redirect top-level window are taking over total
+responsibility for the state of the system.
+It is their responsibility to:
+.bP
+Prevent any preexisting window manager from interfering with their activities
+.bP
+Restore the status quo exactly after they unmap the window
+so that any preexisting window manager does not get confused
+.LP
+In effect, clients of this kind are acting as temporary window managers.
+Doing so is strongly discouraged because these clients will be unaware
+of the user interface policies the window manager is trying to maintain
+and because their user interface behavior is likely to conflict with that of
+less demanding clients.
+.nH 3 "Window Move"
+.LP
+If the window manager moves a top-level window without changing its size,
+the client will receive a synthetic
+.PN ConfigureNotify
+event following the move that describes the new location
+in terms of the root coordinate space.
+Clients must not respond to being moved by attempting to move
+themselves to a better location.
+.LP
+Any real
+.PN ConfigureNotify
+event on a top-level window implies that the window's position
+on the root may have changed,
+even though the event reports that the window's position
+in its parent is unchanged because the window may have been reparented.
+Note that the coordinates in the event will not, in this case,
+be directly useful.
+.LP
+The window manager will send these events by using a
+.PN SendEvent
+request with the following arguments:
+.br
+.ne 6
+.TS
+l l.
+_
+.sp 6p
+.B
+Argument Value
+.sp 6p
+_
+.sp 6p
+.R
+destination: The client's window
+propagate: T{
+.PN False
+T}
+event-mask: T{
+.PN StructureNotify
+T}
+.sp 6p
+_
+.TE
+.nH 3 "Window Resize"
+.LP
+The client can elect to receive notification of being resized by selecting for
+.PN StructureNotify
+events on its top-level windows.
+It will receive a
+.PN ConfigureNotify
+event.
+The size information in the event will be correct,
+but the location will be in the parent window (which may not be the root).
+.LP
+The response of the client to being resized should be to accept
+the size it has been given and to do its best with it.
+Clients must not respond to being resized by attempting to resize
+themselves to a better size.
+If the size is impossible to work with,
+clients are free to request to change to the Iconic state.
+.nH 3 "Iconify and Deiconify"
+.LP
+A top-level window that is not Withdrawn will be
+in the Normal state if it is mapped and in the Iconic state if it is unmapped.
+This will be true even if the window has been reparented;
+the window manager will unmap the window as well as its parent
+when switching to the Iconic state.
+.LP
+The client can elect to be notified of these state changes by selecting for
+.PN StructureNotify
+events on the top-level window.
+It will receive a
+.PN UnmapNotify
+event when it goes Iconic and a
+.PN MapNotify
+event when it goes Normal.
+.nH 3 "Colormap Change"
+.LP
+Clients that wish to be notified of their colormaps being installed
+or uninstalled should select for
+.PN ColormapNotify
+events on their top-level windows and on any windows they have named
+in WM_COLORMAP_WINDOWS properties on their top-level windows.
+They will receive
+.PN ColormapNotify
+events with the new field FALSE when the colormap for that window
+is installed or uninstalled.
+.nH 3 "Input Focus"
+.LP
+Clients can request notification that they have the input focus by selecting
+for
+.PN FocusChange
+events on their top-level windows;
+they will receive
+.PN FocusIn
+and
+.PN FocusOut
+events.
+Clients that need to set the input focus to one of their
+subwindows should not do so unless
+they have set WM_TAKE_FOCUS in their WM_PROTOCOLS property
+and have done one of the following:
+.bP
+Set the input field of WM_HINTS to
+.PN True
+and actually have the input focus in one of their top-level windows
+.bP
+Set the input field of WM_HINTS to
+.PN False
+and have received a suitable event as described in section 4.1.7
+.bP
+Have received a WM_TAKE_FOCUS message as described in section 4.1.7
+.LP
+Clients should not warp the pointer in an attempt to transfer the focus;
+they should set the focus and leave the pointer alone.
+For further information,
+see section 6.2.
+.LP
+Once a client satisfies these conditions,
+it may transfer the focus to another of its windows by using the
+.PN SetInputFocus
+request, which is defined as follows:
+.LP
+.sM
+.IN "SetInputFocus" "" "@DEF@"
+.PN SetInputFocus
+.IP "" .2i
+\fIfocus\fP\^: WINDOW or
+.PN PointerRoot
+or
+.PN None
+.br
+\fIrevert-to\fP\^:
+.Pn { Parent ,
+.PN PointerRoot ,
+.PN None }
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+.eM
+.NT Conventions
+.IP 1. 5
+Clients that use a
+.PN SetInputFocus
+request must set the time argument to the timestamp of the event
+that caused them to make the attempt.
+This cannot be a
+.PN FocusIn
+event because they do not have timestamps.
+Clients may also acquire the focus without a corresponding
+.PN EnterNotify
+event.
+Clients must not use
+.PN CurrentTime
+for the time argument.
+.IP 2. 5
+Clients that use a
+.PN SetInputFocus
+request to set the focus to one of their windows must set
+the revert-to field to
+.PN Parent .
+.NE
+.nH 3 "ClientMessage Events"
+.LP
+There is no way for clients to prevent themselves being sent
+.PN ClientMessage
+events.
+.LP
+Top-level windows with a WM_PROTOCOLS property may be sent
+.PN ClientMessage
+events specific to the protocols named by the atoms in the property
+(see section 4.1.2.7).
+For all protocols, the
+.PN ClientMessage
+events have the following:
+.bP
+WM_PROTOCOLS as the type field
+.bP
+Format 32
+.bP
+The atom that names their protocol in the data[0] field
+.bP
+A timestamp in their data[1] field
+.LP
+The remaining fields of the event,
+including the window field,
+are determined by the protocol.
+.LP
+These events will be sent by using a
+.PN SendEvent
+request with the following arguments:
+.br
+.ne 6
+.TS
+l l.
+_
+.sp 6p
+.B
+Argument Value
+.sp 6p
+_
+.sp 6p
+.R
+destination: The client's window
+propagate: T{
+.PN False
+T}
+event-mask: () empty
+event: As specified by the protocol
+.sp 6p
+_
+.TE
+.nH 4 "Window Deletion"
+.LP
+Clients, usually those with multiple top-level windows, whose server
+connection must survive the deletion of some of their top-level windows,
+should include the atom WM_DELETE_WINDOW in the WM_PROTOCOLS property on
+each such window. They will receive a
+.PN ClientMessage
+event as described above whose data[0] field is WM_DELETE_WINDOW.
+.LP
+Clients receiving a WM_DELETE_WINDOW message should behave as if the user
+selected \*Qdelete window\*U from a hypothetical menu.
+They should perform any confirmation dialog with the user
+and, if they decide to complete the deletion, should do the following:
+.bP
+Either change the window's state to Withdrawn (as described in section 4.1.4)
+or destroy the window.
+.bP
+Destroy any internal state associated with the window.
+.LP
+If the user aborts the deletion during the confirmation dialog,
+the client should ignore the message.
+.LP
+Clients are permitted to interact with the user and ask, for example,
+whether a file associated with the window to be deleted should be saved
+or the window deletion should be cancelled.
+Clients are not required to destroy the window itself;
+the resource may be reused,
+but all associated state (for example, backing store) should be released.
+.LP
+If the client aborts a destroy and the user then selects DELETE WINDOW again,
+the window manager should start the WM_DELETE_WINDOW protocol again.
+Window managers should not use
+.PN DestroyWindow
+requests on a window that has WM_DELETE_WINDOW in its WM_PROTOCOLS property.
+.LP
+Clients that choose not to include WM_DELETE_WINDOW in the WM_PROTOCOLS
+property may be disconnected from the server
+if the user asks for one of the client's top-level windows to be deleted.
+.nH 3 "Redirecting Requests"
+.LP
+Normal clients can use the redirection mechanism just as window managers do
+by selecting for
+.PN SubstructureRedirect
+events on a parent window or
+.PN ResizeRedirect
+events on a window itself.
+However, at most,
+one client per window can select for these events,
+and a convention is needed to avoid clashes.
+.NT Convention
+Clients (including window managers) should select for
+.PN SubstructureRedirect
+and
+.PN ResizeRedirect
+events only on windows that they own.
+.NE
+.LP
+In particular,
+clients that need to take some special action if they are resized can select
+for
+.PN Resize\%Redirect
+events on their top-level windows.
+They will receive a
+.PN ResizeRequest
+event if the window manager resizes their window,
+and the resize will not actually take place.
+Clients are free to make what use they like of the information
+that the window manager wants to change their size,
+but they must configure the window to the width and height specified
+in the event in a timely fashion.
+To ensure that the resize will actually happen at this stage
+instead of being intercepted and executed by the window manager
+(and thus restarting the process),
+the client needs temporarily to set override-redirect on the window.
+.NT Convention
+Clients receiving
+.PN ResizeRequest
+events must respond by doing the following:
+.bP
+Setting override-redirect on the window specified in the event
+.bP
+Configuring the window specified in the event
+to the width and height specified in the event as soon as possible
+and before making any other geometry requests
+.bP
+Clearing override-redirect on the window specified in the event
+.NE
+.LP
+If a window manager detects that a client is not obeying this convention,
+it is free to take whatever measures it deems appropriate to deal with
+the client.
+.nH 2 "Communication with the Window Manager by Means of Selections"
+.LP
+For each screen they manage, window managers will acquire ownership of a
+selection named WM_S\fIn\fP, where \fIn\fP is the screen number, as
+described in section 1.2.6. Window managers should comply with the
+conventions for \*QManager Selections\*U described in section 2.8. The
+intent is for clients to be able to request a variety of information or
+services by issuing conversion requests on this selection. Window managers
+should support conversion of the following target on their manager
+selection:
+.LP
+.br
+.ne 8
+.TS
+l l lw(3.5i) .
+_
+.sp 6p
+.B
+Atom Type Data Received
+.R
+.sp 6p
+_
+.sp 6p
+VERSION INTEGER T{
+Two integers, which are the major and minor
+release numbers (respectively) of the ICCCM
+with which the window manager complies. For
+this version of the ICCCM, the numbers are
+2 and 0.\**
+T}
+.sp 6p
+_
+.TE
+.FS
+As a special case, clients not wishing to implement a selection
+request may simply issue a
+.PN GetSelectionOwner
+request on the appropriate WM_S\fIn\fP selection. If this selection is owned,
+clients may assume that the window manager complies with ICCCM version 2.0
+or later.
+.FE
+.nH 2 "Summary of Window Manager Property Types"
+.LP
+The window manager properties are summarized in the following table
+(see also section 14.1 of \fIXlib \- C Language X Interface\fP).
+.br
+.ne 6
+.TS H
+l l n c.
+_
+.sp 6p
+.B
+Name Type Format See Section
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+WM_CLASS STRING 8 4.1.2.5
+WM_CLIENT_MACHINE TEXT \& 4.1.2.9
+WM_COLORMAP_WINDOWS WINDOW 32 4.1.2.8
+WM_HINTS WM_HINTS 32 4.1.2.4
+WM_ICON_NAME TEXT 4.1.2.2
+WM_ICON_SIZE WM_ICON_SIZE 32 4.1.3.2
+WM_NAME TEXT 4.1.2.1
+WM_NORMAL_HINTS WM_SIZE_HINTS 32 4.1.2.3
+WM_PROTOCOLS ATOM 32 4.1.2.7
+WM_STATE WM_STATE 32 4.1.3.1
+WM_TRANSIENT_FOR WINDOW 32 4.1.2.6
+.sp 6p
+_
+.TE
+.nH 1 "Session Management and Additional Inter-Client Exchanges"
+.LP
+This section contains some conventions for clients that participate in
+session management. See
+.I
+X Session Management Protocol
+.R
+for further details. Clients that do not support this protocol cannot
+expect their window state (e.g., WM_STATE, position, size, and stacking order)
+to be preserved across sessions.
+.nH 2 "Client Support for Session Management"
+.LP
+Each session participant will obtain a unique client identifier (client-ID)
+from the session manager. The client must identify one top-level window as
+the \*Qclient leader.\*U This window must be created by the client. It may
+be in any state, including the Withdrawn state. The client leader window
+must have a SM_CLIENT_ID property, which contains the client-ID obtained
+from the session management protocol. That property must:
+.bP
+Be of type STRING
+.bP
+Be of format 8
+.bP
+Contain the client-ID as a string of XPCS characters encoded using ISO
+8859-1
+.LP
+All top-level, nontransient windows created by a client on the same display
+as the client leader must have a WM_CLIENT_LEADER property. This property
+contains a window ID that identifies the client leader window. The client
+leader window must have a WM_CLIENT_LEADER property containing its own
+window ID (i.e., the client leader window is pointing to itself). Transient
+windows need not have a WM_CLIENT_LEADER property if the client leader can
+be determined using the information in the WM_TRANSIENT_FOR property. The
+WM_CLIENT_LEADER property must:
+.bP
+Be of type WINDOW
+.bP
+Be of format 32
+.bP
+Contain the window ID of the client leader window
+.LP
+A client must withdraw all of its top-level windows on the same display
+before modifiying either the WM_CLIENT_LEADER or the SM_CLIENT_ID property
+of its client leader window.
+.LP
+It is necessary that other clients be able to uniquely identify a window
+(across sessions) among all windows related to the same client-ID. For
+example, a window manager can require this unique ID to restore geometry
+information from a previous session, or a workspace manager could use it to
+restore information about which windows are in which workspace. A client
+may optionally provide a WM_WINDOW_ROLE property to uniquely identify a
+window within the scope specified above. The combination of SM_CLIENT_ID
+and WM_WINDOW_ROLE can be used by other clients to uniquely identify a
+window across sessions.
+.LP
+If the WM_WINDOW_ROLE property is not specified on a top-level window, a
+client that needs to uniquely identify that window will try to use instead
+the values of WM_CLASS and WM_NAME. If a client has multiple windows with
+identical WM_CLASS and WM_NAME properties, then it should provide a
+WM_WINDOW_ROLE property.
+.LP
+The client must set the WM_WINDOW_ROLE property to a string that uniquely
+identifies that window among all windows that have the same client leader
+window. The property must:
+.bP
+Be of type STRING
+.bP
+Be of format 8
+.bP
+Contain a string restricted to the XPCS characters, encoded in ISO 8859-1
+.nH 2 "Window Manager Support for Session Management"
+.LP
+A window manager supporting session management must register with the
+session manager and obtain its own client-ID. The window manager should
+save and restore information such as the WM_STATE, the layout of windows on
+the screen, and their stacking order for every client window that has a
+valid SM_CLIENT_ID property (on itself, or on the window named by
+WM_CLIENT_LEADER) and that can be uniquely identified.
+Clients are allowed to change this state during the first phase of the
+session checkpoint process. Therefore, window managers should request a
+second checkpoint phase and save clients' state only during that phase.
+.nH 2 "Support for ICE Client Rendezvous"
+.IN "ICE Rendezvous"
+.LP
+The Inter-Client Exchange protocol (ICE) defined as of X11R6
+specifies a generic communication framework, independent of the X
+server, for data exchange between arbitrary clients. ICE also defines
+a protocol for any two ICE clients who also have X connections
+to the same X server to locate (rendezvous with) each other.
+.LP
+This protocol, called the "ICE X Rendezvous" protocol, is defined in
+the ICE specification, Appendix B,
+and uses the property ICE_PROTOCOLS plus
+.PN ClientMessage
+events. Refer to that specification for complete details.
+.nH 1 "Manipulation of Shared Resources"
+.LP
+X Version 11 permits clients to manipulate a number of shared resources,
+for example, the input focus, the pointer, and colormaps.
+Conventions are required so that clients share resources in an
+orderly fashion.
+.nH 2 "The Input Focus"
+.LP
+Clients that explicitly set the input focus must observe one of two modes:
+.bP
+Locally active mode
+.bP
+Globally active mode
+.NT Conventions
+.IP 1. 5
+Locally active clients should set the input focus to one of their windows
+only when it is already in one of their windows
+or when they receive a WM_TAKE_FOCUS message.
+They should set the input field of the WM_HINTS structure to
+.PN True .
+.IP 2. 5
+Globally active clients should set the input focus to one of their windows
+only when they receive a button event and a passive-grabbed key event,
+or when they receive a WM_TAKE_FOCUS message.
+They should set the input field of the WM_HINTS structure to
+.PN False .
+.IP 3. 5
+In addition, clients should use the timestamp of the event
+that caused them to attempt to set the input focus as the time field on the
+.PN SetInputFocus
+request, not
+.PN CurrentTime .
+.NE
+.nH 2 "The Pointer"
+.LP
+In general, clients should not warp the pointer.
+Window managers, however, may do so
+(for example, to maintain the invariant that the pointer is always
+in the window with the input focus).
+Other window managers may want to preserve the illusion that the user
+is in sole control of the pointer.
+.NT Conventions
+.IP 1. 5
+Clients should not warp the pointer.
+.IP 2. 5
+Clients that insist on warping the pointer should do so only
+with the src-window argument of the
+.PN WarpPointer
+request set to one of their windows.
+.NE
+.nH 2 "Grabs"
+.LP
+A client's attempt to establish a button or a key grab on a window
+will fail if some other client has already established a conflicting
+grab on the same window.
+The grabs, therefore, are shared resources,
+and their use requires conventions.
+.LP
+In conformance with the principle that clients should behave,
+as far as possible,
+when a window manager is running as they would when it is not,
+a client that has the input focus may assume that it can receive all
+the available keys and buttons.
+.NT Convention
+Window managers should ensure that they provide some mechanism for
+their clients to receive events from all keys and all buttons,
+except for events involving keys whose KeySyms are registered as being for
+window management functions (for example, a hypothetical WINDOW KeySym).
+.NE
+.LP
+In other words,
+window managers must provide some mechanism by which a client
+can receive events from every key and button (regardless of modifiers)
+unless and until the X Consortium registers some KeySyms as being reserved
+for window management functions.
+Currently, no KeySyms are registered for window management functions.
+.LP
+Even so, clients are advised to allow the key and button combinations
+used to elicit program actions to be modified,
+because some window managers may choose not to observe this convention
+or may not provide a convenient method for the user to transmit events
+from some keys.
+.NT Convention
+Clients should establish button and key grabs only on windows that
+they own.
+.NE
+.LP
+In particular, this convention means that a window manager that wishes
+to establish a grab over the client's top-level window should either establish
+the grab on the root or reparent the window and establish the grab
+on a proper ancestor.
+In some cases,
+a window manager may want to consume the event received,
+placing the window in a state where a subsequent such event will go to
+the client.
+Examples are:
+.bP
+Clicking in a window to set focus with the click not being offered
+to the client
+.bP
+Clicking in a buried window to raise it, again, with the click not offered
+to the client
+.LP
+More typically,
+a window manager should add to, rather than replace, the client's semantics
+for key+button combinations by allowing the event to be used by the client
+after the window manager is done with it.
+To ensure this,
+the window manager should establish the grab on the parent
+by using the following:
+.LP
+.Ds
+pointer/keyboard-mode == Synchronous
+.De
+.LP
+Then, the window manager should release the grab by using an
+.PN AllowEvents
+request with the following specified:
+.LP
+.Ds
+mode == ReplayPointer/Keyboard
+.De
+.LP
+In this way,
+the client will receive the events as if they had not been intercepted.
+.LP
+Obviously,
+these conventions place some constraints on possible user interface policies.
+There is a trade-off here between freedom for window managers to implement
+their user interface policies and freedom for clients to implement theirs.
+The dilemma is resolved by:
+.bP
+Allowing window managers to decide if and when a client will receive an
+event from any given key or button
+.bP
+Placing a requirement on the window manager to provide some mechanism,
+perhaps a \*QQuote\*U key,
+by which the user can send an event from any key or button to the client
+.nH 2 "Colormaps"
+.LP
+Section 4.1.8 prescribes conventions for clients to communicate with the
+window manager about their colormap needs. If your clients are
+.PN DirectColor
+type applications,
+you should consult section 14.3 of \fIXlib \- C Language X Interface\fP
+for conventions connected with sharing standard colormaps.
+They should look for and create the properties described there on
+the root window of the appropriate screen.
+.LP
+The contents of the RGB_COLOR_MAP type property are as follows:
+.br
+.ne 6
+.TS H
+l l l.
+_
+.sp 6p
+.B
+Field Type Comments
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+colormap COLORMAP ID of the colormap described
+red_max CARD32 Values for pixel calculations
+red_mult CARD32
+green_max CARD32
+green_mult CARD32
+blue_max CARD32
+blue_mult CARD32
+base_pixel CARD32
+visual_id VISUALID Visual to which colormap belongs
+kill_id CARD32 ID for destroying the resources
+.sp 6p
+_
+.TE
+.LP
+When deleting or replacing an RGB_COLOR_MAP,
+it is not sufficient to delete the property;
+it is important to free the associated colormap resources as well.
+If kill_id is greater than one,
+the resources should be freed by issuing a
+.PN KillClient
+request with kill_id as the argument.
+If kill_id is one,
+the resources should be freed by issuing a
+.PN FreeColormap
+request with colormap as the colormap
+argument.
+If kill_id is zero,
+no attempt should be made to free the resources.
+A client that creates an RGB_COLOR_MAP for which the colormap resource
+is created specifically for this purpose should set kill_id to one
+(and can create more than one such standard colormap
+using a single connection).
+A client that creates an RGB_COLOR_MAP for which the colormap resource
+is shared in some way (for example, is the default colormap
+for the root window) should create an arbitrary resource and use its
+resource ID for kill_id (and should create no other standard colormaps
+on the connection).
+.NT Convention
+If an RGB_COLOR_MAP property is too short to contain the visual_id field,
+it can be assumed that the visual_id is the root visual
+of the appropriate screen.
+If an RGB_COLOR_MAP property is too short to contain the kill_id field,
+a value of zero can be assumed.
+.NE
+.LP
+During the connection handshake,
+the server informs the client of the default colormap for each screen.
+This is a colormap for the root visual,
+and clients can use it to improve the extent of colormap sharing
+if they use the root visual.
+.nH 2 "The Keyboard Mapping"
+.LP
+The X server contains a table (which is read by
+.PN GetKeyboardMapping
+requests) that describes the set of symbols appearing
+on the corresponding key for each keycode generated by the server.
+This table does not affect the server's operations in any way;
+it is simply a database used by clients that attempt to understand
+the keycodes they receive.
+Nevertheless, it is a shared resource and requires conventions.
+.LP
+It is possible for clients to modify this table by using a
+.PN ChangeKeyboardMapping
+request.
+In general, clients should not do this.
+In particular, this is not the way in which clients should implement
+key bindings or key remapping.
+The conversion between a sequence of keycodes received from the server
+and a string in a particular encoding is a private matter for each client
+(as it must be in a world where applications may be using different
+encodings to support different languages and fonts).
+See the Xlib reference manual for converting keyboard events to text.
+.LP
+The only valid reason for using a
+.PN ChangeKeyboardMapping
+request is when the symbols written on the keys have changed as, for example,
+when a Dvorak key conversion kit or a set of APL keycaps has been installed.
+Of course, a client may have to take the change to the keycap on trust.
+.LP
+The following illustrates a permissible interaction between a client
+and a user:
+.IP Client: 10
+\*QYou just started me on a server without a Pause key.
+Please choose a key to be the Pause key and press it now.\*U
+.IP User: 10
+Presses the Scroll Lock key
+.IP Client: 10
+\*QAdding Pause to the symbols on the Scroll Lock key: Confirm or Abort.\*U
+.IP User: 10
+Confirms
+.IP Client: 10
+Uses a
+.PN ChangeKeyboardMapping
+request to add Pause to the keycode that already contains Scroll Lock and
+issues this request, \*QPlease paint Pause on the Scroll Lock key.\*U
+.NT Convention
+Clients should not use
+.PN ChangeKeyboardMapping
+requests.
+.NE
+.LP
+If a client succeeds in changing the keyboard mapping table,
+all clients will receive
+.PN MappingNotify (request==Keyboard)
+events.
+There is no mechanism to avoid receiving these events.
+.NT Convention
+Clients receiving
+.PN MappingNotify (request==Keyboard)
+events should update any internal keycode translation tables they are using.
+.NE
+.nH 2 "The Modifier Mapping"
+.LP
+X Version 11 supports 8 modifier bits of which 3 are preassigned
+to Shift, Lock, and Control.
+Each modifier bit is controlled by the state of a set of keys,
+and these sets are specified in a table accessed by
+.PN GetModifierMapping
+and
+.PN SetModifierMapping
+requests.
+This table is a shared resource and requires conventions.
+.LP
+A client that needs to use one of the preassigned modifiers should assume
+that the modifier table has been set up correctly to control these modifiers.
+The Lock modifier should be interpreted as Caps Lock or Shift Lock
+according as the keycodes in its controlling set include XK_Caps_Lock
+or XK_Shift_Lock.
+.NT Convention
+Clients should determine the meaning of a modifier bit from the KeySyms
+being used to control it.
+.NE
+.LP
+A client that needs to use an extra modifier (for example, META) should do
+the following:
+.bP
+Scan the existing modifier mappings.
+If it finds a modifier that contains a keycode whose set of KeySyms
+includes XK_Meta_L or XK_Meta_R,
+it should use that modifier bit.
+.bP
+If there is no existing modifier controlled by XK_Meta_L or XK_Meta_R,
+it should select an unused modifier bit (one with an empty controlling set)
+and do the following:
+.RS
+.IP \- 5
+If there is a keycode with XL_Meta_L in its set of KeySyms,
+add that keycode to the set for the chosen modifier.
+.IP \- 5
+If there is a keycode with XL_Meta_R in its set of KeySyms,
+add that keycode to the set for the chosen modifier.
+.IP \- 5
+If the controlling set is still empty,
+interact with the user to select one or more keys to be META.
+.RE
+.bP
+If there are no unused modifier bits,
+ask the user to take corrective action.
+.NT Conventions
+.IP 1. 5
+Clients needing a modifier not currently in use should assign keycodes
+carrying suitable KeySyms to an unused modifier bit.
+.IP 2. 5
+Clients assigning their own modifier bits should ask the user politely to
+remove his or her hands from the key in question if their
+.PN SetModifierMapping
+request returns a
+.PN Busy
+status.
+.NE
+.LP
+There is no good solution to the problem of reclaiming assignments
+to the five nonpreassigned modifiers when they are no longer being used.
+.NT Convention
+The user must use
+.PN xmodmap
+or some other utility to deassign obsolete modifier mappings by hand.
+.NE
+.LP
+When a client succeeds in performing a
+.PN SetModifierMapping
+request,
+all clients will receive
+.PN MappingNotify (request==Modifier)
+events.
+There is no mechanism for preventing these events from being received.
+A client that uses one of the nonpreassigned modifiers that receives
+one of these events should do a
+.PN GetModifierMapping
+request to discover the new mapping,
+and if the modifier it is using has been cleared,
+it should reinstall the modifier.
+.LP
+Note that a
+.PN GrabServer
+request must be used to make the
+.PN GetModifierMapping
+and
+.PN SetModifierMapping
+pair in these transactions atomic.
+.nH 1 "Device Color Characterization"
+.LP
+.EQ
+delim @@
+define oc % "\\fR{\\fP" %
+define cc % "\\fR}\\fP" %
+.EN
+The X protocol provides explicit Red, Green, and Blue (RGB) values,
+which are used to directly drive a monitor, and color names. RGB values
+provide a mechanism for accessing the full capabilities of the display
+device, but at the expense of having the color perceived by the user remain
+unknowable through the protocol. Color names were originally designed to
+provide access to a device-independent color database by having the server
+vendor tune the definitions of the colors in that textual database.
+Unfortunately, this still does not provide the client any way of using
+an existing device-independent color, nor for the client to get
+device-independent color information back about colors that it has selected.
+.LP
+Furthermore, the client must be able to discover which set of colors are
+displayable by the device (the device gamut), both to allow colors to be
+intelligently modified to fit within the device capabilities (gamut
+compression) and to enable the user interface to display a representation of
+the reachable color space to the user (gamut display).
+.LP
+Therefore, a system is needed that will provide full access to
+device-independent color spaces for X clients. This system should use a
+standard mechanism for naming the colors, be able to provide names for
+existing colors, and provide means by which unreachable colors can be
+modified to fall within the device gamut.
+.LP
+We are fortunate in this area to have a seminal work, the 1931 CIE color
+standard, which is nearly universally agreed upon as adequate for describing
+colors on CRT devices. This standard uses a tri-stimulus model called CIE
+XYZ in which each perceivable color is specified as a triplet of numbers.
+Other appropriate device-independent color models do exist, but most of them
+are directly traceable back to this original work.
+.LP
+X device color characterization
+provides device-independent color spaces to X clients. It does this by
+providing the barest possible amount of information to the client that
+allows the client to construct a mapping between CIE XYZ and the regular X
+RGB color descriptions.
+.LP
+Device color characterization is defined by
+the name and contents of two window properties that,
+together, permit converting between CIE XYZ space and
+linear RGB device space (such as standard CRTs).
+Linear RGB devices require just two
+pieces of information to completely characterize them:
+.IP \(bu 5
+A @3 times 3@ matrix @M@ and its inverse @M sup -1@, which convert between
+XYZ and RGB intensity (@RGB sub intensity@):
+.EQ C
+RGB sub intensity ~ = ~ M ~ times ~ XYZ
+.EN
+.EQ C
+XYZ ~ = ~ M sup -1 ~ times ~ RGB sub intensity
+.EN
+.IP \(bu 5
+A way of mapping between RGB intensity and RGB protocol value. XDCCC
+supports three mechanisms which will be outlined later.
+.LP
+If other device types are eventually necessary, additional
+properties will be required to describe them.
+.nH 2 "XYZ \*(dA RGB Conversion Matrices"
+.LP
+Because of the limited dynamic range of both XYZ and RGB intensity,
+these matrices will be encoded using a fixed-point representation of a
+32-bit two's complement number scaled by @2 sup 27@, giving a range of @-16@ to
+@16 - epsilon@, where @epsilon ~ = ~ 2 sup -27@.
+.LP
+These matrices will be packed into an 18-element list of 32-bit values,
+XYZ \(-> RGB matrix first, in row major order and stored in the
+XDCCC_LINEAR_RGB_MATRICES properties (format = 32) on the root window of
+each screen, using values appropriate for that screen.
+.LP
+This will be encoded as shown in the following table:
+.br
+.ne 6
+.TS
+center;
+c s s
+c c c
+l l l.
+XDCCC_LINEAR_RGB_MATRICES property contents
+.sp 6p
+_
+.sp 6p
+.B
+Field Type Comments
+.R
+.sp 6p
+_
+.sp 6p
+@M sub 0,0@ INT32 Interpreted as a fixed-point number @-16~<=~x~<~16@
+@M sub 0,1@ INT32
+\&.\^.\^.
+@M sub 3,3@ INT32
+@{M sup -1} sub 0,0@ INT32
+@{M sup -1} sub 0,1@ INT32
+\&.\^.\^.
+@{M sup -1} sub 3,3@ INT32
+.sp 6p
+_
+.TE
+.nH 2 "Intensity \*(dA RGB Value Conversion"
+.LP
+XDCCC provides two representations for describing the conversion
+between RGB intensity and the actual X protocol RGB values:
+.DS
+.TA .5i
+.ta .5i
+0 RGB value/RGB intensity level pairs
+1 RGB intensity ramp
+.DE
+.LP
+In both cases, the relevant data will be stored in the
+XDCCC_LINEAR_RGB_CORRECTION properties on the root window of each screen,
+using values appropriate for that screen, in whatever format provides
+adequate resolution. Each property can consist of multiple entries
+concatenated together, if different visuals for the screen require different
+conversion data. An entry with a VisualID of 0 specifies data for all
+visuals of the screen that are not otherwise explicitly listed.
+.LP
+The first representation is an array of RGB value/intensity level pairs, with
+the RGB values in strictly increasing order. When converting, the client must
+linearly interpolate between adjacent entries in the table to compute the
+desired value. This allows the server to perform gamma correction
+itself and encode that fact in a short two-element correction table. The
+intensity will be encoded as an unsigned number to be interpreted as a value
+between 0 and 1 (inclusive). The precision of this value will depend on the
+format of the property in which it is stored (8, 16, or 32 bits). For 16-bit
+and 32-bit formats, the RGB value will simply be the value stored in the
+property. When stored in 8-bit format, the RGB value can be computed from
+the value in the property by:
+.EQ C
+RGB sub value ~ = ~ { Property ~ Value ~ times ~ 65535 } over 255
+.EN
+.LP
+Because the three electron guns in the device may not be exactly alike in
+response characteristics, it is necessary to allow for three separate
+tables, one each for red, green, and blue. Therefore, each table will be
+preceded by the number of entries in that table, and the set of tables will be
+preceded by the number of tables.
+When three tables are provided, they will be in red, green, blue order.
+.LP
+This will be encoded as shown in the following table:
+.br
+.ne 6
+.TS
+center;
+c s s
+c c c
+l l l.
+XDCCC_LINEAR_RGB_CORRECTION Property Contents for Type 0 Correction
+.sp 6p
+_
+.sp 6p
+.B
+Field Type Comments
+.R
+.sp 6p
+_
+.sp 6p
+VisualID0 CARD Most significant portion of VisualID
+VisualID1 CARD Exists if and only if the property format is 8
+VisualID2 CARD Exists if and only if the property format is 8
+VisualID3 CARD T{
+Least significant portion, exists if and only if the property format
+is 8 or 16
+T}
+type CARD 0 for this type of correction
+count CARD Number of tables following (either 1 or 3)
+length CARD Number of pairs \- 1 following in this table
+value CARD X Protocol RGB value
+intensity CARD Interpret as a number @0~<=~intensity~<=~1@
+\&.\^.\^. .\^.\^. Total of \fIlength+1\fP pairs of value/intensity values
+lengthg CARD T{
+Number of pairs \- 1 following in this table (if and
+only if \fIcount\fP is 3)
+T}
+value CARD X Protocol RGB value
+intensity CARD Interpret as a number @0~<=~intensity~<=~1@
+\&.\^.\^. .\^.\^. Total of \fIlengthg+1\fP pairs of value/intensity values
+lengthb CARD T{
+Number of pairs \- 1 following in this table (if and
+only if \fIcount\fP is 3)
+T}
+value CARD X Protocol RGB value
+intensity CARD Interpret as a number @0~<=~intensity~<=~1@
+\&.\^.\^. .\^.\^. Total of \fIlengthb+1\fP pairs of value/intensity values
+.sp 6p
+_
+.TE
+.LP
+The VisualID is stored in 4, 2, or 1 pieces, depending on whether
+the property format is 8, 16, or 32, respectively. The VisualID is always
+stored most significant piece first.
+Note that the length fields are stored as one less than the actual length,
+so 256 entries can be stored in format 8.
+.LP
+The second representation is a simple array of intensities for a linear subset
+of RGB values. The expected size of this table is the bits-per-rgb-value of
+the screen, but it can be any length. This is similar to the first mechanism,
+except that the RGB value numbers are implicitly defined by the index in the
+array (indices start at 0):
+.EQ C
+RGB sub value ~ = ~ { Array ~ Index ~ times ~ 65535 } over
+{ Array ~ Size ~ - ~ 1 }
+.EN
+When converting, the client may linearly interpolate between entries in this
+table. The intensity values will be encoded just as in the first
+representation.
+.LP
+This will be encoded as shown in the following table:
+.br
+.ne 6
+.TS
+center;
+c s s
+c c c
+l l l.
+XDCCC_LINEAR_RGB_CORRECTION Property Contents for Type 1 Correction
+.sp 6p
+_
+.sp 6p
+.B
+Field Type Comments
+.R
+.sp 6p
+_
+.sp 6p
+VisualID0 CARD Most significant portion of VisualID
+VisualID1 CARD Exists if and only if the property format is 8
+VisualID2 CARD Exists if and only if the property format is 8
+VisualID3 CARD T{
+Least significant portion, exists if and only if
+the property format is 8 or 16
+T}
+type CARD 1 for this type of correction
+count CARD Number of tables following (either 1 or 3)
+length CARD Number of elements \- 1 following in this table
+intensity CARD Interpret as a number @0~<=~intensity~<=~1@
+\&.\^.\^. .\^.\^. Total of \fIlength+1\fP intensity elements
+lengthg CARD T{
+Number of elements \- 1 following in this table (if and
+only if \fIcount\fP is 3)
+T}
+intensity CARD Interpret as a number @0~<=~intensity~<=~1@
+\&.\^.\^. .\^.\^. Total of \fIlengthg+1\fP intensity elements
+lengthb CARD T{
+Number of elements \- 1 following in this table (if and
+only if \fIcount\fP is 3)
+T}
+intensity CARD Interpret as a number @0~<=~intensity~<=~1@
+\&.\^.\^. .\^.\^. Total of \fIlengthb+1\fP intensity elements
+.sp 6p
+_
+.TE
+.nH 1 "Conclusion"
+.LP
+This document provides the protocol-level specification of the minimal
+conventions needed to ensure that X Version 11 clients can interoperate
+properly. This document specifies interoperability conventions only for the
+X Version 11 protocol. Clients should be aware of other protocols that
+should be used for better interoperation in the X environment. The reader
+is referred to
+.I
+X Session Management Protocol
+.R
+for information on session management, and to
+.I
+Inter-Client Exchange Protocol
+.R
+for information on general-purpose communication among clients.
+.nH 2 "The X Registry"
+.IN "Registry"
+.IN "X Registry"
+.LP
+The X Consortium maintains a registry of certain X-related items, to aid in
+avoiding conflicts and in sharing of such items. Readers are
+encouraged to use the registry. The classes of items kept in the registry
+that are relevant to the ICCCM include property names, property types,
+selection names, selection targets, WM_PROTOCOLS protocols,
+.PN Client\%Message
+types, and application classes. Requests to register items, or questions
+about registration, should be addressed to
+.EQ
+delim off
+.EN
+.DS
+ xregistry@x.org
+.DE
+or to
+.DS
+ Registry
+ X Consortium
+ 201 Broadway
+ Cambridge, MA 02139-1955
+ USA
+.DE
+Electronic mail will be acknowledged upon receipt. Please allow up to 4
+weeks for a formal response to registration and inquiries.
+.LP
+The registry is published as part of the X software distribution from the X
+Consortium. All registered items must have the postal address of someone
+responsible for the item or a reference to a document describing the item
+and the postal address of where to write to obtain the document.
+.bp
+.\" Set registers to number the appendixes A.1, B.1, C.1, ...
+.nr H1 0
+.af H1 A
+.cT "Appendix A" no
+.nH 1 "Revision History"
+.LP
+This appendix describes the revision history of this document and
+summarizes the incompatibilities between this and earlier versions.
+.nH 2 "The X11R2 Draft"
+.LP
+The February 25, 1988, draft that was distributed as part of X Version 11,
+Release 2, was clearly labeled as such,
+and many areas were explicitly labeled as liable to change.
+Nevertheless, in the revision work done since then,
+we have been very careful not to introduce gratuitous incompatibility.
+As far as possible,
+we have tried to ensure that clients obeying the conventions
+in the X11R2 draft would still work.
+.nH 2 "The July 27, 1988, Draft"
+.LP
+The Consortium review was based on a draft dated July 27, 1988. This draft
+included several areas in which incompatibilities with the X11R2 draft were
+necessary:
+.bP
+The use of property
+.PN None
+in
+.PN ConvertSelection
+requests is no longer allowed.
+Owners that receive them are free to use the target atom as the property
+to respond with,
+which will work in most cases.
+.bP
+The protocol for INCREMENTAL type properties as selection replies has changed,
+and the name has been changed to INCR.
+Selection requestors are free to implement the earlier protocol
+if they receive properties of type INCREMENTAL.
+.bP
+The protocol for INDIRECT type properties as selection replies has changed,
+and the name has been changed to MULTIPLE.
+Selection requestors are free to implement the earlier protocol
+if they receive properties of type INDIRECT.
+.bP
+The protocol for the special CLIPBOARD client has changed.
+The earlier protocol is subject to race conditions and should not be used.
+.bP
+The set of state values in WM_HINTS.initial_state has been reduced,
+but the values that are still valid are unchanged.
+Window managers should treat the other values sensibly.
+.bP
+The methods an application uses to change the state of its top-level window
+have changed but in such a way that cases that used to work will still work.
+.bP
+The x, y, width, and height fields have been removed from the WM_NORMAL_HINTS
+property and replaced by pad fields.
+Values set into these fields will be ignored.
+The position and size of the window should be set by setting the appropriate
+window attributes.
+.bP
+A pair of base fields and a win_gravity field have been added
+to the WM_NORMAL_HINTS property.
+Window managers will assume values for these fields if the client
+sets a short property.
+.nH 2 "The Public Review Drafts"
+.LP
+The Consortium review resulted in several incompatible changes. These
+changes were included in drafts that were distributed for public review
+during the first half of 1989.
+.bP
+The messages field of the WM_HINTS property was found to be unwieldy
+and difficult to evolve.
+It has been replaced by the WM_PROTOCOLS property,
+but clients that use the earlier mechanism can be detected
+because they set the messages bit in the flags field of the WM_HINTS property,
+and window managers can provide a backwards compatibility mode.
+.bP
+The mechanism described in the earlier draft by which clients installed
+their own subwindow colormaps could not be made to work reliably
+and mandated some features of the look and feel.
+It has been replaced by the WM_COLORMAP_WINDOWS property.
+Clients that use the earlier mechanism can be detected by the WM_COLORMAPS
+property they set on their top-level window,
+but providing a reliable backwards compatibility mode is not possible.
+.bP
+The recommendations for window manager treatment of top-level window borders
+have been changed as those in the earlier draft produced problems
+with Visibility events.
+For nonwindow manager clients,
+there is no incompatibility.
+.bP
+The pseudoroot facility in the earlier draft has been removed.
+Although it has been successfully implemented,
+it turns out to be inadequate to support the uses envisaged.
+An extension will be required to support these uses fully,
+and it was felt that the maximum freedom should be left to the designers
+of the extension.
+In general,
+the previous mechanism was invisible to clients and no incompatibility
+should result.
+.bP
+The addition of the WM_DELETE_WINDOW protocol (which prevents the danger
+that multi-window clients may be terminated unexpectedly)
+has meant some changes in the WM_SAVE_YOURSELF protocol,
+to ensure that the two protocols are orthogonal.
+Clients using the earlier protocol can be detected (see WM_PROTOCOLS above)
+and supported in a backwards compatibility mode.
+.bP
+The conventions in Section 14.3.1. of \fIXlib \- C Language X Interface\fP
+regarding properties of type RGB_COLOR_MAP have been changed,
+but clients that use the earlier conventions can be detected
+because their properties are 4 bytes shorter.
+These clients will work correctly if the server supports only a single Visual
+or if they use only the Visual of the root.
+These are the only cases in which they would have worked, anyway.
+.nH 2 "Version 1.0, July 1989"
+.LP
+The public review resulted in a set of mostly editorial changes. The
+changes in version 1.0 that introduced some degree of incompatibility with
+the earlier drafts are:
+.bP
+A new section (6.3) was added covering the window manager's
+use of Grabs.
+The restrictions it imposes should affect only window managers.
+.bP
+The TARGETS selection target has been clarified,
+and it may be necessary for clients to add some entries to their replies.
+.bP
+A selection owner using INCR transfer should no longer replace targets in
+a MULTIPLE property with the atom INCR.
+.bP
+The contents of the
+.PN ClientMessage
+event sent by a client to iconify itself has been clarified,
+but there should be no incompatibility because the earlier contents
+would not in fact have worked.
+.bP
+The border-width in synthetic
+.PN ConfigureNotify
+events is now specified,
+but this should not cause any incompatibility.
+.bP
+Clients are now asked to set a border-width on all
+.PN ConfigureWindow
+requests.
+.bP
+Window manager properties on icon windows now will be ignored,
+but there should be no incompatibility
+because there was no specification that they be obeyed previously.
+.bP
+The ordering of real and synthetic
+.PN ConfigureNotify
+events is now specified,
+but any incompatibility should affect only window managers.
+.bP
+The semantics of WM_SAVE_YOURSELF have been clarified and restricted to
+be a checkpoint operation only.
+Clients that were using it as part of a shutdown sequence may need to
+be modified,
+especially if they were interacting with the user during the shutdown.
+.bP
+A kill_id field has been added to RGB_COLOR_MAP properties.
+Clients using earlier conventions can be detected by the size of their
+RGB_COLOR_MAP properties,
+and the cases that would have worked will still work.
+.nH 2 "Version 1.1"
+.LP
+Version 1.1 was released with X11R5 in September 1991. In addition to some
+minor editorial changes, there were a few semantic changes since Version
+1.0:
+.bP
+The section on Device Color Characterization was added.
+.bP
+The meaning of the NULL property type was clarified.
+.bP
+Appropriate references to Compound Text were added.
+.nH 2 "Public Review Draft, December 1993"
+.LP
+The following changes have been made in preparing the public review draft
+for Version 2.0.
+.bP
+[P01] Addition of advice to clients on how to keep track of a top-level
+window's absolute position on the screen.
+.bP
+[P03] A technique for clients to detect when it is safe to reuse a
+top-level window has been added.
+.bP
+[P06] Section 4.1.8, on colormaps, has been rewritten. A new feature that
+allows clients to install their own colormaps has also been added.
+.bP
+[P08] The LENGTH target has been deprecated.
+.bP
+[P11] The manager selections facility was added.
+.bP
+[P17] The definition of the aspect ratio fields of the WM_NORMAL_HINTS
+property has been changed to include the base size.
+.bP
+[P19]
+.PN StaticGravity
+has been added to the list of values allowed for the win_gravity field of
+the WM_HINTS property. The meaning of the
+.PN CenterGravity
+value has been clarified.
+.bP
+[P20] A means for clients to query the ICCCM compliance level of the window
+manager has been added.
+.bP
+[P22] The definition of the MULTIPLE selection target has been clarified.
+.bP
+[P25] A definition of \*Qtop-level window\*U has been added. The WM_STATE
+property has been defined and exposed to clients.
+.bP
+[P26] The definition of window states has been clarified and the wording
+regarding window state changes has been made more consistent.
+.bP
+[P27] Clarified the rules governing when window managers are required to send
+synthetic
+.PN \%ConfigureNotify
+events.
+.bP
+[P28] Added a recommended technique for setting the input focus to a window
+as soon as it is mapped.
+.bP
+[P29] The required lifetime of resource IDs named in window manager
+properties has been specified.
+.bP
+[P30] Advice for dealing with keystrokes and override-redirect windows has
+been added.
+.bP
+[P31] A statement on the ownership of resources transferred through the
+selection mechanism has been added.
+.bP
+[P32] The definition of the CLIENT_WINDOW target has been clarified.
+.bP
+[P33] A rule about requiring the selection owner to reacquire the
+selection under certain circumstances has been added.
+.bP
+[P42] Added several new selection targets.
+.bP
+[P44] Ambiguous wording regarding the withdrawal of top-level windows
+has been removed.
+.bP
+[P45] A facility for requestors to pass parameters during a selection
+request has been added.
+.bP
+[P49] A convention on discrimated names has been added.
+.bP
+[P57] The C_STRING property type was added.
+.bP
+[P62] An ordering requirement on processing selection requests was added.
+.bP
+[P63] The
+.PN VisibleHint
+flag was added.
+.bP
+[P64] The session management section has been updated to align with the new
+session management protocol. The old session management conventions have
+been moved to Appendix C.
+.bP
+References to the never-forthcoming \fIWindow and Session Manager
+Conventions Manual\fP have been removed.
+.bP
+Information on the X Registry and references to the session management and
+ICE documents have been added.
+.bP
+Numerous editorial and typographical improvements have been made.
+.nH 2 "Version 2.0, April 1994"
+.LP
+The following changes have been made in preparation for releasing
+the final edition of Version 2.0 with X11R6.
+.bP
+The PIXMAP selection target has been revised to return a property of type
+PIXMAP instead of type DRAWABLE.
+.bP
+The session management section has been revised slightly to correspond with
+the changes to the \fIX Session Management Protocol\fP.
+.bP
+Window managers are now prohibited from placing
+.PN CurrentTime
+in the timestamp field of WM_TAKE_FOCUS messages.
+.bP
+In the WM_HINTS property, the
+.PN VisibleHint
+flag has been renamed to
+.PN UrgencyHint .
+Its semantics have also been defined more thoroughly.
+.bP
+Additional editorial and typographical changes have been made.
+.bp
+.cT "Appendix B" no
+.nH 1 "Suggested Protocol Revisions"
+.LP
+During the development of these conventions,
+a number of inadequacies have been discovered in the
+core X11 protocol.
+They are summarized here as input to an eventual protocol revision
+design process:
+.bP
+There is no way for anyone to find out the last-change time of
+a selection.
+The
+.PN Get\%Selection\%Owner
+request should be changed to return the last-change time as well as the owner.
+.bP
+There is no way for a client to find out which selection atoms are valid.
+.bP
+There would be no need for WM_TAKE_FOCUS if the
+.PN FocusIn
+event contained a timestamp and a previous-focus field.
+This could avoid the potential race condition.
+There is space in the event for this information;
+it should be added at the next protocol revision.
+.bP
+There is a race condition in the
+.PN Install\%Colormap
+request.
+It does not take a timestamp and may be executed after the top-level colormap
+has been uninstalled.
+The next protocol revision should provide the timestamp in the
+.PN Install\%Colormap ,
+.PN Uninstall\%Colormap ,
+.PN List\%Installed\%Colormaps
+requests and in the
+.PN Colormap\%Notify
+event.
+The timestamp should be used in a similar way to the last-focus-change
+time for the input focus. The lack of timestamps in these packets is the
+reason for restricting colormap installation to the window manager.
+.bP
+The protocol needs to be changed to provide some way of identifying
+the Visual and the Screen of a colormap.
+.bP
+There should be some way to reclaim assignments to the five nonpreassigned
+modifiers when they are no longer needed. The manual method is unpleasantly
+low-tech.
+.bp
+.cT "Appendix C" no
+.nH 1 "Obsolete Session Manager Conventions"
+.LP
+This appendix contains obsolete conventions for session management using X
+properties and messages. The conventions described here are deprecated and
+are described only for historical interest. For further information on
+session management, see
+.I
+X Session Management Protocol.
+.R
+.nH 2 "Properties"
+.LP
+The client communicates with the session manager by placing two properties
+(WM_COMMAND and WM_CLIENT_MACHINE) on its top-level window.
+If the client has a group of top-level windows,
+these properties should be placed on the group leader window.
+.LP
+The window manager is responsible for placing a WM_STATE property
+on each top-level client window for use by session managers and other clients
+that need to be able to identify top-level client windows and their state.
+.nH 3 "WM_COMMAND Property"
+.LP
+The WM_COMMAND property represents the command used to start or restart the
+client. By updating this property, clients should ensure that it always
+reflects a command that will restart them in their current state. The
+content and type of the property depend on the operating system of the
+machine running the client. On POSIX-conformant systems using ISO Latin-1
+characters for their command lines, the property should:
+.bP
+Be of type STRING
+.bP
+Contain a list of null-terminated strings
+.bP
+Be initialized from argv
+.IP
+Other systems will need to set appropriate conventions for the type
+and contents of WM_COMMAND properties.
+Window and session managers should not assume that STRING is
+the type of WM_COMMAND or that they will be able to understand
+or display its contents.
+.LP
+Note that WM_COMMAND strings are null-terminated
+and differ from the general conventions that STRING properties
+are null-separated.
+This inconsistency is necessary for backwards compatibility.
+.LP
+A client with multiple top-level windows should ensure
+that exactly one of them has a WM_COMMAND with nonzero length.
+Zero-length WM_COMMAND properties can be used to reply to WM_SAVE_YOURSELF
+messages on other top-level windows but will otherwise be ignored.
+.nH 3 "WM_CLIENT_MACHINE Property"
+.LP
+This property is described in section 4.1.2.9.
+.nH 2 "Termination"
+.LP
+Because they communicate by means of unreliable network connections, clients
+must be prepared for their connection to the server to be terminated at any
+time without warning. They cannot depend on getting notification that
+termination is imminent or on being able to use the server to negotiate with
+the user about their fate. For example, clients cannot depend on being able
+to put up a dialog box.
+.LP
+Similarly, clients may terminate at any time without notice to the session
+manager. When a client terminates itself rather than being terminated by
+the session manager, it is viewed as having resigned from the session in
+question, and it will not be revived if the session is revived.
+.nH 2 "Client Responses to Session Manager Actions"
+.LP
+Clients may need to respond to session manager actions in two ways:
+.bP
+Saving their internal state
+.bP
+Deleting a window
+.nH 3 "Saving Client State"
+.LP
+Clients that want to be warned when the session manager feels
+that they should save their internal state (for example,
+when termination impends) should include the atom WM_SAVE_YOURSELF
+in the WM_PROTOCOLS property on their top-level windows to participate
+in the WM_SAVE_YOURSELF protocol.
+They will receive a
+.PN ClientMessage
+event as described in section 4.2.8
+with the atom WM_SAVE_YOURSELF in its data[0] field.
+.LP
+Clients that receive WM_SAVE_YOURSELF should place themselves in a state from
+which they can be restarted and should update WM_COMMAND to
+be a command that will restart them in this state.
+The session manager will be waiting for a
+.PN PropertyNotify
+event on WM_COMMAND as a confirmation that the client has saved its state.
+Therefore, WM_COMMAND should be updated (perhaps with a zero-length append)
+even if its contents are correct.
+No interactions with the user are permitted during this process.
+.LP
+Once it has received this confirmation,
+the session manager will feel free to terminate the client if that is what
+the user asked for.
+Otherwise,
+if the user asked for the session to be put to sleep,
+the session manager will ensure that the client does not
+receive any mouse or keyboard events.
+.LP
+After receiving a WM_SAVE_YOURSELF, saving its state, and updating WM_COMMAND,
+the client should not change its state (in the sense of doing anything
+that would require a change to WM_COMMAND) until it receives a mouse
+or keyboard event.
+Once it does so,
+it can assume that the danger is over.
+The session manager will ensure that these events do not reach
+clients until the danger is over or until the clients have been killed.
+.LP
+Irrespective of how they are arranged in window groups,
+clients with multiple top-level windows should ensure the following:
+.bP
+Only one of their top-level windows has a nonzero-length WM_COMMAND
+property.
+.bP
+They respond to a WM_SAVE_YOURSELF message by:
+.RS
+.IP \- 5
+First, updating the nonzero-length WM_COMMAND property, if necessary
+.IP \- 5
+Second, updating the WM_COMMAND property on the window for which they received
+the WM_SAVE_YOURSELF message if it was not updated in the first step
+.RE
+.LP
+Receiving WM_SAVE_YOURSELF on a window is, conceptually, a command
+to save the entire client state.\**
+.FS
+This convention has changed since earlier drafts because of the
+introduction of the protocol in the next section.
+In the public review draft,
+there was ambiguity as to whether WM_SAVE_YOURSELF was a checkpoint
+or a shutdown facility.
+It is now unambiguously a checkpoint facility;
+if a shutdown facility is judged to be necessary,
+a separate WM_PROTOCOLS protocol will be developed and registered
+with the X Consortium.
+.FE
+.nH 3 "Window Deletion"
+.LP
+Windows are deleted using the WM_DELETE_WINDOW protocol, which
+is described in section 4.2.8.1.
+.nH 2 "Summary of Session Manager Property Types"
+.LP
+The session manager properties are listed in the following table:
+.br
+.ne 6
+.TS H
+l l n c.
+_
+.sp 6p
+.B
+Name Type Format See Section
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+WM_CLIENT_MACHINE TEXT 4.1.2.9
+WM_COMMAND TEXT C.1.1
+WM_STATE WM_STATE 32 4.1.3.1
+.sp 6p
+_
+.TE
+.\" Finish up!
+.YZ 3
diff --git a/specs/ICCCM/indexmacros.t b/specs/ICCCM/indexmacros.t
new file mode 100644
index 0000000..d7853fd
--- /dev/null
+++ b/specs/ICCCM/indexmacros.t
@@ -0,0 +1,3 @@
+.eh '\s+1\fBInter-Client Communication Conventions\fP''\fBX11, Release 6.4\fP\s-1'
+.oh '\s+1\fBInter-Client Communication Conventions\fP''\fBX11, Release 6.4\fP\s-1'
+.so index.pageno
diff --git a/specs/ICE/ICElib.ms b/specs/ICE/ICElib.ms
new file mode 100644
index 0000000..36540f4
--- /dev/null
+++ b/specs/ICE/ICElib.ms
@@ -0,0 +1,3399 @@
+.\" $Xorg: ICElib.ms,v 1.3 2000/08/17 19:42:09 cpqbld Exp $
+.\"
+.\" Use tbl, -ms, and macros.t
+.\"
+.\" macro: start marker
+.de sM
+.ne 4
+.sp 1
+\\h'-0.3i'\\L'-1v'\\v'3p'\\l'1v'\\v'1v-3p'
+.sp -1
+..
+.\" macro: end marker
+.de eM
+.sp -1
+\\h'-0.3i'\\L'-1v'\\v'1v+4p'\\l'1v'\\v'-4p'
+.sp 1
+..
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ad b
+.sp 10
+.TL
+\s+2\fBInter-Client Exchange Library\fP\s-2
+.sp
+Version 1.0
+.sp
+X Consortium Standard
+.sp
+X Version 11, Release 6.4
+.AU
+Ralph Mor
+.AI
+X Consortium
+.LP
+.DS C
+Copyright \(co 1993, 1994, 1996 X Consortium
+.DE
+.LP
+.sp 5
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 5
+X Window System is a trademark of X Consortium, Inc.
+.bp
+.EH '\fBInter-Client Exchange Library\fP''\fBX11, Release 6.4\fP'
+.OH '\fBInter-Client Exchange Library\fP''\fBX11, Release 6.4\fP'
+.bp 1
+.EF ''\- \\\\n(PN \-''
+.OF ''\- \\\\n(PN \-''
+.NH 1
+Overview of ICE
+.XS
+\*(SN Overview of ICE
+.XE
+.LP
+There are numerous possible inter-client protocols, with many similarities
+and common needs - authentication, version negotiation, byte
+order negotiation, and so on.
+The Inter-Client Exchange (ICE) protocol is intended to provide a framework
+for building such protocols, allowing them to make use of common negotiation
+mechanisms and to be multiplexed over a single transport connection.
+.NH 1
+The ICE Library - C Language Interface to ICE
+.XS
+\*(SN The ICE Library - C Language Interface to ICE
+.XE
+.LP
+A client that wishes to utilize ICE must first register the protocols it
+understands with the ICE library. Each protocol is dynamically assigned
+a major opcode ranging from 1-255 (two clients can use different
+major opcodes for the same protocol). The next step for the client is either
+to open a connection with another client or to wait for connections made
+by other clients. Authentication may be required. A client can both
+initiate connections with other clients and be
+waiting for clients to connect to itself (a nested session manager is an
+example). Once an ICE connection is established between the two clients, one
+of the clients needs to initiate a
+.PN ProtocolSetup
+in order to
+"activate" a given protocol. Once the other client accepts the
+.PN ProtocolSetup
+(once again, authentication may be required), the
+two clients are ready to start passing messages specific to that protocol to
+each other. Multiple protocols may be active on a single ICE connection.
+Clients are responsible for notifying the ICE library when a protocol is no
+longer active on an ICE connection, although ICE does not define how each
+subprotocol triggers a protocol shutdown.
+.LP
+The ICE library utilizes callbacks to process incoming messages. Using
+callbacks allows
+.PN ProtocolSetup
+messages and authentication to happen
+behind the scenes. An additional benefit is that messages never need
+to be buffered up by the library when the client blocks waiting for a
+particular message.
+.NH 1
+Intended Audience
+.XS
+\*(SN Intended Audience
+.XE
+.LP
+This document is intended primarily for implementors of protocol libraries
+layered on top of ICE. Typically, applications that wish to utilize ICE
+will make calls into individual protocol libraries rather than directly
+make calls into the ICE library. However, some applications will have to
+make some initial calls into the ICE library in order to accept ICE
+connections (for example, a session manager accepting connections from
+clients). But in general, protocol libraries should be designed to hide
+the inner details of ICE from applications.
+.NH 1
+Header Files and Library Name
+.XS
+\*(SN Header Files and Library Name
+.XE
+.LP
+The header file
+.Pn < X11/ICE/ICElib.h >
+defines all of the ICElib data structures and function prototypes.
+.PN ICElib.h
+includes the header file
+.Pn < X11/ICE/ICE.h >,
+which defines all of the ICElib constants.
+Protocol libraries that need to read and write messages should include
+the header file
+.Pn < X11/ICE/ICEmsg.h >.
+.LP
+Applications should link against ICElib using -lICE.
+.NH 1
+Note on Prefixes
+.XS
+\*(SN Note on Prefixes
+.XE
+.LP
+The following name prefixes are used in the library to distinguish between
+a client that initiates a
+.PN ProtocolSetup
+and a client that
+responds with a
+.PN ProtocolReply :
+.IP \(bu 5
+.PN IcePo
+\- Ice Protocol Originator
+.IP \(bu 5
+.PN IcePa
+\- Ice Protocol Acceptor
+.NH 1
+Protocol Registration
+.XS
+\*(SN Protocol Registration
+.XE
+.LP
+In order for two clients to exchange messages for a given protocol, each
+side must register the protocol with the ICE library. The purpose of
+registration is for each side to obtain a major opcode for the protocol
+and to provide callbacks for processing messages and handling authentication.
+There are two separate registration functions:
+.IP \(bu 5
+One to handle the side that does a
+.PN ProtocolSetup
+.IP \(bu 5
+One to handle the side that responds with a
+.PN ProtocolReply
+.LP
+It is recommended that protocol registration occur before the two clients
+establish an ICE connection. If protocol registration occurs after an
+ICE connection is created, there can be a brief interval of time in which
+a
+.PN ProtocolSetup
+is received, but the protocol is not registered.
+If it is not possible to register a protocol before the creation of an
+ICE connection, proper precautions should be taken to avoid the above race
+condition.
+.sp
+.LP
+The
+.PN IceRegisterForProtocolSetup
+function should be called for the client that initiates a
+.PN ProtocolSetup .
+.sM
+.FD 0
+int IceRegisterForProtocolSetup\^(\^\fIprotocol_name\fP, \fIvendor\fP\^, \
+\fIrelease\fP\^, \fIversion_count\fP\^, \fIversion_recs\fP\^,
+.br
+ \fIauth_count\fP\^, \fIauth_names\fP\^, \fIauth_procs\fP\^, \
+\fIio_error_proc\fP\^)
+.br
+ char *\fIprotocol_name\fP\^;
+.br
+ char *\fIvendor\fP\^;
+.br
+ char *\fIrelease\fP\^;
+.br
+ int \fIversion_count\fP\^;
+.br
+ IcePoVersionRec *\fIversion_recs\fP\^;
+.br
+ int \fIauth_count\fP\^;
+.br
+ char **\fIauth_names\fP\^;
+.br
+ IcePoAuthProc *\fIauth_procs\fP\^;
+.br
+ IceIOErrorProc \fIio_error_proc\fP\^;
+.FN
+.IP \fIprotocol_name\fP 1i
+A string specifying the name of the protocol to register.
+.IP \fIvendor\fP 1i
+A vendor string with semantics specified by the protocol.
+.IP \fIrelease\fP 1i
+A release string with semantics specified by the protocol.
+.IP \fIversion_count\fP 1i
+The number of different versions of the protocol supported.
+.IP \fIversion_recs\fP 1i
+List of versions and associated callbacks.
+.IP \fIauth_count\fP 1i
+The number of authentication methods supported.
+.IP \fIauth_names\fP 1i
+The list of authentication methods supported.
+.IP \fIauth_procs\fP 1i
+The list of authentication callbacks, one for each authentication method.
+.IP \fIio_error_proc\fP 1i
+IO error handler, or NULL.
+.LP
+.eM
+.PN IceRegisterForProtocolSetup
+returns the major opcode reserved or -1 if an error occurred. In order
+to actually activate the protocol, the
+.PN IceProtocolSetup
+function needs to be called with this major opcode. Once the protocol is
+activated, all messages for the protocol should be sent using this major
+opcode.
+.LP
+A protocol library may support multiple versions of the same protocol.
+The version_recs argument specifies a list of supported versions of the protocol,
+which are prioritized in decreasing order of preference.
+Each version record consists of a major and minor version of the protocol
+as well as a callback to be used for processing incoming messages.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ int major_version;
+ int minor_version;
+ IcePoProcessMsgProc process_msg_proc;
+} IcePoVersionRec;
+.De
+.LP
+.eM
+The
+.PN IcePoProcessMsgProc
+callback is responsible for processing the set of messages that can be
+received by the client that initiated the
+.PN ProtocolSetup .
+For further information,
+see section 6.1, ``Callbacks for Processing Messages.''
+.LP
+Authentication may be required before the protocol can become active.
+The protocol library must register the authentication methods that it
+supports with the ICE library.
+The auth_names and auth_procs arguments are a list of authentication names
+and callbacks that are prioritized in decreasing order of preference.
+For information on the
+.PN IcePoAuthProc
+callback, see section 6.2, ``Authentication Methods.''
+.LP
+The
+.PN IceIOErrorProc
+callback is invoked if the ICE connection unexpectedly breaks.
+You should pass NULL for io_error_proc if not interested in being notified.
+For further information,
+see section 13, ``Error Handling.''
+.sp
+.LP
+The
+.PN IceRegisterForProtocolReply
+function should be called for the client that responds to a
+.PN ProtocolSetup
+with a
+.PN ProtocolReply .
+.sM
+.FD 0
+int IceRegisterForProtocolReply\^(\^\fIprotocol_name\fP, \fIvendor\fP\^, \fIrelease\fP\^, \fIversion_count\fP\^, \fIversion_recs\fP\^,
+.br
+ \fIauth_count\fP\^, \fIauth_names\fP\^, \fIauth_procs\fP\^, \fIhost_based_auth_proc\fP\^, \fIprotocol_setup_proc\fP\^,
+.br
+ \fIprotocol_activate_proc\fP\^, \fIio_error_proc\fP\^)
+.br
+ char *\fIprotocol_name\fP\^;
+.br
+ char *\fIvendor\fP\^;
+.br
+ char *\fIrelease\fP\^;
+.br
+ int \fIversion_count\fP\^;
+.br
+ IcePaVersionRec *\fIversion_recs\fP\^;
+.br
+ int \fIauth_count\fP\^;
+.br
+ char **\fIauth_names\fP\^;
+.br
+ IcePaAuthProc *\fIauth_procs\fP\^;
+.br
+ IceHostBasedAuthProc \fIhost_based_auth_proc\fP\^;
+.br
+ IceProtocolSetupProc \fIprotocol_setup_proc\fP\^;
+.br
+ IceProtocolActivateProc \fIprotocol_activate_proc\fP\^;
+.br
+ IceIOErrorProc \fIio_error_proc\fP\^;
+.FN
+.IP \fIprotocol_name\fP 1i
+A string specifying the name of the protocol to register.
+.IP \fIvendor\fP 1i
+A vendor string with semantics specified by the protocol.
+.IP \fIrelease\fP 1i
+A release string with semantics specified by the protocol.
+.IP \fIversion_count\fP 1i
+The number of different versions of the protocol supported.
+.IP \fIversion_recs\fP 1i
+List of versions and associated callbacks.
+.IP \fIauth_count\fP 1i
+The number of authentication methods supported.
+.IP \fIauth_names\fP 1i
+The list of authentication methods supported.
+.IP \fIauth_procs\fP 1i
+The list of authentication callbacks, one for each authentication method.
+.IP \fIhost_based_auth_proc\fP 1i
+Host based authentication callback.
+.IP \fIprotocol_setup_proc\fP 1i
+A callback to be invoked when authentication has succeeded for a
+.PN ProtocolSetup
+but before the
+.PN ProtocolReply
+is sent.
+.IP \fIprotocol_activate_proc\fP 1i
+A callback to be invoked after the
+.PN ProtocolReply
+is sent.
+.IP \fIio_error_proc\fP 1i
+IO error handler, or NULL.
+.LP
+.eM
+.PN IceRegisterForProtocolReply
+returns the major opcode reserved or -1 if an error occurred. The major
+opcode should be used in all subsequent messages sent for this protocol.
+.LP
+A protocol library may support multiple versions of the same protocol.
+The version_recs argument specifies a list of supported versions of the protocol,
+which are prioritized in decreasing order of preference.
+Each version record consists of a major and minor version of the protocol
+as well as a callback to be used for processing incoming messages.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ int major_version;
+ int minor_version;
+ IcePaProcessMsgProc process_msg_proc;
+} IcePaVersionRec;
+.De
+.LP
+.eM
+The
+.PN IcePaProcessMsgProc
+callback is responsible for processing the set of messages that can be
+received by the client that accepted the
+.PN ProtocolSetup .
+For further information,
+see section 6.1, ``Callbacks for Processing Messages.''
+.LP
+Authentication may be required before the protocol can become active.
+The protocol library must register the authentication methods that it
+supports with the ICE library.
+The auth_names and auth_procs arguments are a list of authentication names
+and callbacks that are prioritized in decreasing order of preference.
+For information on the
+.PN IcePaAuthProc
+callback, see section 6.2, ``Authentication Methods.''
+.LP
+If authentication fails and the client attempting to initiate
+the
+.PN ProtocolSetup
+has not required authentication, the
+.PN IceHostBasedAuthProc
+callback is invoked with the host name of the originating client.
+If the callback returns
+.PN True ,
+the
+.PN ProtocolSetup
+will succeed, even though the original
+authentication failed.
+Note that authentication can effectively be disabled by registering an
+.PN IceHostBasedAuthProc ,
+which always returns
+.PN True .
+If no host based
+authentication is allowed, you should pass NULL for host_based_auth_proc.
+.LP
+.sM
+.FD 0
+typedef Bool (*IceHostBasedAuthProc) ();
+
+Bool HostBasedAuthProc\^(\^\fIhost_name\fP\^)
+.br
+ char *\fIhost_name\fP\^;
+.FN
+.IP \fIhost_name\fP 1i
+The host name of the client that sent the
+.PN ProtocolSetup .
+.LP
+.eM
+The host_name argument is a string of the form \fIprotocol\fP\^/\^\fIhostname\fP,
+where \fIprotocol\fP\^ is one of {tcp, decnet, local}.
+.LP
+Because
+.PN ProtocolSetup
+messages and authentication happen behind the scenes
+via callbacks, the protocol library needs some way of being notified when the
+.PN ProtocolSetup
+has completed.
+This occurs in two phases.
+In the first phase, the
+.PN IceProtocolSetupProc
+callback is invoked after authentication has
+successfully completed but before the ICE library sends a
+.PN ProtocolReply .
+Any resources required for this protocol should be allocated at this time.
+If the
+.PN IceProtocolSetupProc
+returns a successful status, the ICE library will
+send the
+.PN ProtocolReply
+and then invoke the
+.PN IceProtocolActivateProc
+callback. Otherwise, an error will be sent to the
+other client in response to the
+.PN ProtocolSetup .
+.LP
+The
+.PN IceProtocolActivateProc
+is an optional callback and should be registered only if the protocol
+library intends to generate a message immediately following the
+.PN ProtocolReply .
+You should pass NULL for protocol_activate_proc if not interested
+in this callback.
+.if t .bp
+.sM
+.FD 0
+typedef Status (*IceProtocolSetupProc) ();
+
+Status ProtocolSetupProc\^(\^\fIice_conn\fP, \fImajor_version\fP\^, \
+\fIminor_version\fP\^, \fIvendor\fP\^, \fIrelease\fP\^,
+.br
+ \fIclient_data_ret\fP\^, \fIfailure_reason_ret\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fImajor_version\fP\^;
+.br
+ int \fIminor_version\fP\^;
+.br
+ char *\fIvendor\fP\^;
+.br
+ char *\fIrelease\fP\^;
+.br
+ IcePointer *\fIclient_data_ret\fP\^;
+.br
+ char **\fIfailure_reason_ret\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fImajor_version\fP 1i
+The major version of the protocol.
+.IP \fIminor_version\fP 1i
+The minor version of the protocol.
+.IP \fIvendor\fP 1i
+The vendor string registered by the protocol originator.
+.IP \fIrelease\fP 1i
+The release string registered by the protocol originator.
+.IP \fIclient_data_ret\fP 1i
+Client data to be set by callback.
+.IP \fIfailure_reason_ret\fP 1i
+Failure reason returned.
+.LP
+.eM
+The pointer stored in the client_data_ret argument will be passed
+to the
+.PN IcePaProcessMsgProc
+callback whenever a message has arrived for this protocol on the
+ICE connection.
+.LP
+The vendor and release strings should be freed with
+.PN free
+when they are no longer needed.
+.LP
+If a failure occurs, the
+.PN IceProtocolSetupProc
+should return a zero status as well as allocate and return a failure
+reason string in failure_reason_ret.
+The ICE library will be responsible for freeing this memory.
+.LP
+The
+.PN IceProtocolActivateProc
+callback is defined as follows:
+.sM
+.FD 0
+typedef void (*IceProtocolActivateProc)();
+
+void ProtocolActivateProc\^(\^\fIice_conn\fP, \fIclient_data\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIclient_data\fP 1i
+The client data set in the
+.PN IceProtocolSetupProc
+callback.
+.LP
+.eM
+The
+.PN IceIOErrorProc
+callback is invoked if the ICE connection unexpectedly breaks.
+You should pass NULL for io_error_proc if not interested in being notified.
+For further information,
+see section 13, ``Error Handling.''
+.NH 2
+Callbacks for Processing Messages
+.XS
+\*(SN Callbacks for Processing Messages
+.XE
+.LP
+When an application detects that there is new data to read on an ICE
+connection (via
+.PN select ),
+it calls the
+.PN IceProcessMessages
+function (see section 9, ``Processing Messages'').
+When
+.PN IceProcessMessages
+reads an ICE message header with a major opcode other than
+zero (reserved for the ICE protocol), it needs to call a function that will
+read the rest of the message, unpack it, and process it accordingly.
+.LP
+If the message arrives at the client that initiated the
+.PN ProtocolSetup ,
+the
+.PN IcePoProcessMsgProc
+callback is invoked.
+.sM
+.FD 0
+typedef void (*IcePoProcessMsgProc)();
+
+void PoProcessMsgProc\^(\^\fIice_conn\fP, \fIclient_data\fP\^, \fIopcode\fP\^, \fIlength\fP\^, \fIswap\fP\^, \fIreply_wait\fP\^, \fIreply_ready_ret\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.br
+ int \fIopcode\fP\^;
+.br
+ unsigned long \fIlength\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ IceReplyWaitInfo *\fIreply_wait\fP\^;
+.br
+ Bool *\fIreply_ready_ret\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIclient_data\fP 1i
+Client data associated with this protocol on the ICE connection.
+.IP \fIopcode\fP 1i
+The minor opcode of the message.
+.IP \fIlength\fP 1i
+The length (in 8-byte units) of the message beyond the ICE header.
+.IP \fIswap\fP 1i
+A flag that indicates if byte swapping is necessary.
+.IP \fIreply_wait\fP 1i
+Indicates if the invoking client is waiting for a reply.
+.IP \fIreply_ready_ret\fP 1i
+If set to
+.PN True ,
+a reply is ready.
+.LP
+.eM
+If the message arrives at the client that accepted the
+.PN ProtocolSetup ,
+the
+.PN IcePaProcessMsgProc
+callback is invoked.
+.sM
+.FD 0
+typedef void (*IcePaProcessMsgProc)();
+
+void PaProcessMsgProc\^(\^\fIice_conn\fP, \fIclient_data\fP\^, \fIopcode\fP\^, \fIlength\fP\^, \fIswap\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.br
+ int \fIopcode\fP\^;
+.br
+ unsigned long \fIlength\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIclient_data\fP 1i
+Client data associated with this protocol on the ICE connection.
+.IP \fIopcode\fP 1i
+The minor opcode of the message.
+.IP \fIlength\fP 1i
+The length (in 8-byte units) of the message beyond the ICE header.
+.IP \fIswap\fP 1i
+A flag that indicates if byte swapping is necessary.
+.LP
+.eM
+In order to read the message, both of these callbacks should use the
+macros defined for this purpose (see section 12.2, ``Reading ICE Messages'').
+Note that byte swapping may be necessary.
+As a convenience, the length field in the ICE header will be swapped by ICElib
+if necessary.
+.LP
+In both of these callbacks, the client_data argument is a pointer to client
+data that was registered at
+.PN ProtocolSetup
+time.
+In the case of
+.PN IcePoProcessMsgProc ,
+the client data was set in the call to
+.PN IceProtocolSetup .
+In the case of
+.PN IcePaProcessMsgProc ,
+the client data was set in the
+.PN IceProtocolSetupProc
+callback.
+.LP
+The
+.PN IcePoProcessMsgProc
+callback needs to check the reply_wait argument.
+If reply_wait is NULL ,
+the ICE library expects the function to
+pass the message to the client via a callback.
+For example, if this is a Session Management ``Save Yourself'' message,
+this function should notify the client of the ``Save Yourself'' via a callback.
+The details of how such a callback would be defined
+are implementation-dependent.
+.LP
+However, if reply_wait is not NULL ,
+then the client is waiting for
+a reply or an error for a message it previously sent.
+The reply_wait is of type
+.PN IceReplyWaitInfo .
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ unsigned long sequence_of_request;
+ int major_opcode_of_request;
+ int minor_opcode_of_request;
+ IcePointer reply;
+} IceReplyWaitInfo;
+.De
+.LP
+.eM
+.PN IceReplyWaitInfo
+contains the major/minor opcodes and sequence number of
+the message for which a reply is being awaited.
+It also contains a pointer to the reply message to be filled in
+(the protocol library should cast this
+.PN IcePointer
+to the appropriate reply type).
+In most cases, the reply will have some fixed-size part, and the client waiting
+for the reply will have provided a pointer to a structure to hold
+this fixed-size data. If there is variable-length data, it would be
+expected that the
+.PN IcePoProcessMsgProc
+callback will have to allocate additional
+memory and store pointer(s) to that memory in the fixed-size
+structure. If the entire data is variable length (for example., a single
+variable-length string), then the client waiting for the reply would probably
+just pass a pointer to fixed-size space to hold a pointer, and the
+.PN IcePoProcessMsgProc
+callback would allocate the storage and store the pointer.
+It is the responsibility of the client receiving the reply to
+free any memory allocated on its behalf.
+.LP
+If reply_wait is not NULL and
+.PN IcePoProcessMsgProc
+has a reply or error to return in response to this reply_wait
+(that is, no callback was generated), then the reply_ready_ret argument
+should be set to
+.PN True .
+Note that an error should only be returned
+if it corresponds to the reply being waited for. Otherwise, the
+.PN IcePoProcessMsgProc
+should either handle the error internally or invoke an error handler
+for its library.
+.LP
+If reply_wait is NULL,
+then care must be taken not to store any value in reply_ready_ret,
+because this pointer may also be NULL.
+.LP
+The
+.PN IcePaProcessMsgProc
+callback, on the other hand, should always pass
+the message to the client via a callback. For example, if this is a Session
+Management ``Interact Request'' message, this function should notify the
+client of the ``Interact Request'' via a callback.
+.LP
+The reason the
+.PN IcePaProcessMsgProc
+callback does not have a reply_wait, like
+.PN IcePoProcessMsgProc
+does, is because a process that is acting as
+a server should never block for a reply (infinite blocking can
+occur if the connecting client does not act properly, denying access
+to other clients).
+.NH 2
+Authentication Methods
+.XS
+\*(SN Authentication Methods
+.XE
+.LP
+As already stated, a protocol library must register the authentication
+methods that it supports with the ICE library. For each authentication
+method, there are two callbacks that may be registered:
+.IP \(bu 5
+One to handle the side that initiates a
+.PN ProtocolSetup
+.IP \(bu 5
+One to handle the side that accepts or rejects this request
+.LP
+.PN IcePoAuthProc
+is the callback invoked for the client that initiated the
+.PN ProtocolSetup .
+This callback must be able to respond
+to the initial ``Authentication Required'' message or subsequent
+``Authentication Next Phase'' messages sent by the other client.
+.if t .bp
+.sM
+.FD 0
+typedef IcePoAuthStatus (*IcePoAuthProc)();
+
+IcePoAuthStatus PoAuthProc\^(\^\fIice_conn\fP, \fIauth_state_ptr\fP\^, \fIclean_up\fP\^, \fIswap\fP\^, \fIauth_datalen\fP\^, \fIauth_data\fP\^,
+.br
+ \fIreply_datalen_ret\fP\^, \fIreply_data_ret\fP\^, \fIerror_string_ret\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer *\fIauth_state_ptr\fP\^;
+.br
+ Bool \fIclean_up\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ int \fIauth_datalen\fP\^;
+.br
+ IcePointer \fIauth_data\fP\^;
+.br
+ int *\fIreply_datalen_ret\fP\^;
+.br
+ IcePointer *\fIreply_data_ret\fP\^;
+.br
+ char **\fIerror_string_ret\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIauth_state_ptr\fP 1i
+A pointer to state for use by the authentication callback procedure.
+.IP \fIclean_up\fP 1i
+If
+.PN True ,
+authentication is over, and the function
+should clean up any state it was maintaining. The
+last 6 arguments should be ignored.
+.IP \fIswap\fP 1i
+If
+.PN True ,
+the auth_data may have to be byte swapped
+(depending on its contents).
+.IP \fIauth_datalen\fP 1i
+The length (in bytes) of the authenticator data.
+.IP \fIauth_data\fP 1i
+The data from the authenticator.
+.IP \fIreply_datalen_ret\fP 1i
+The length (in bytes) of the reply data returned.
+.IP \fIreply_data_ret\fP 1i
+The reply data returned.
+.IP \fIerror_string_ret\fP 1i
+If the authentication procedure encounters an error during
+authentication, it should allocate and return
+an error string.
+.LP
+.eM
+Authentication may require several phases, depending on the authentication
+method. As a result, the
+.PN IcePoAuthProc
+may be called more than once when authenticating a client, and
+some state will have to be maintained between each invocation.
+At the start of each
+.PN ProtocolSetup ,
+*auth_state_ptr is NULL,
+and the function should initialize its state and set
+this pointer. In subsequent invocations of the callback, the pointer
+should be used to get at any state previously stored by the callback.
+.LP
+If needed, the network ID of the client accepting the
+.PN ProtocolSetup
+can be obtained by calling the
+.PN IceConnectionString
+function.
+.LP
+ICElib will be responsible for freeing the reply_data_ret and
+error_string_ret pointers with
+.PN free .
+.LP
+The auth_data pointer may point to a volatile block of memory.
+If the data must be kept beyond this invocation of the callback, be sure
+to make a copy of it.
+.LP
+The
+.PN IcePoAuthProc
+should return one of four values:
+.IP \(bu 5
+.PN IcePoAuthHaveReply
+\- a reply is available.
+.IP \(bu 5
+.PN IcePoAuthRejected
+\- authentication rejected.
+.IP \(bu 5
+.PN IcePoAuthFailed
+\- authentication failed.
+.IP \(bu 5
+.PN IcePoAuthDoneCleanup
+\- done cleaning up.
+.LP
+.PN IcePaAuthProc
+is the callback invoked for the client that received the
+.PN ProtocolSetup .
+.if t .bp
+.sM
+.FD 0
+typedef IcePaAuthStatus (*IcePaAuthProc) ();
+
+IcePaAuthStatus PaAuthProc\^(\^\fIice_conn\fP, \fIauth_state_ptr\fP\^, \fIswap\fP\^, \fIauth_datalen\fP\^, \fIauth_data\fP\^,
+.br
+ \fIreply_datalen_ret\fP\^, \fIreply_data_ret\fP\^, \fIerror_string_ret\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer *\fIauth_state_ptr\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ int \fIauth_datalen\fP\^;
+.br
+ IcePointer \fIauth_data\fP\^;
+.br
+ int *\fIreply_datalen_ret\fP\^;
+.br
+ IcePointer *\fIreply_data_ret\fP\^;
+.br
+ char **\fIerror_string_ret\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIauth_state_ptr\fP 1i
+A pointer to state for use by the authentication callback procedure.
+.IP \fIswap\fP 1i
+If
+.PN True ,
+auth_data may have to be byte swapped
+(depending on its contents).
+.IP \fIauth_datalen\fP 1i
+The length (in bytes) of the protocol originator authentication data.
+.IP \fIauth_data\fP 1i
+The authentication data from the protocol originator.
+.IP \fIreply_datalen_ret\fP 1i
+The length of the authentication data returned.
+.IP \fIreply_data_ret\fP 1i
+The authentication data returned.
+.IP \fIerror_string_ret\fP 1i
+If authentication is rejected or fails, an error
+string is returned.
+.LP
+.eM
+.LP
+Authentication may require several phases, depending on the authentication
+method. As a result, the
+.PN IcePaAuthProc
+may be called more than once when authenticating a client, and
+some state will have to be maintained between each invocation.
+At the start of each
+.PN ProtocolSetup ,
+auth_datalen is zero,
+*auth_state_ptr is NULL,
+and the function should initialize its state and set
+this pointer. In subsequent invocations of the callback, the pointer
+should be used to get at any state previously stored by the callback.
+.LP
+If needed, the network ID of the client accepting the
+.PN ProtocolSetup
+can be obtained by calling the
+.PN IceConnectionString
+function.
+.LP
+The auth_data pointer may point to a volatile block of memory.
+If the data must be kept beyond this invocation of the callback, be sure
+to make a copy of it.
+.LP
+ICElib will be responsible for transmitting and freeing the reply_data_ret and
+error_string_ret pointers with
+.PN free .
+.LP
+The
+.PN IcePaAuthProc
+should return one of four values:
+.IP \(bu 5
+.PN IcePaAuthContinue
+\- continue (or start) authentication.
+.IP \(bu 5
+.PN IcePaAuthAccepted
+\- authentication accepted.
+.IP \(bu 5
+.PN IcePaAuthRejected
+\- authentication rejected.
+.IP \(bu 5
+.PN IcePaAuthFailed
+\- authentication failed.
+.NH 1
+ICE Connections
+.XS
+\*(SN ICE Connections
+.XE
+.LP
+In order for two clients to establish an ICE connection, one client has
+to be waiting for connections, and the other client has to initiate the
+connection.
+Most clients will initiate connections, so we discuss that first.
+.NH 2
+Opening an ICE Connection
+.XS
+\*(SN Opening an ICE Connection
+.XE
+.LP
+To open an ICE connection with another client (that is, waiting
+for connections), use
+.PN IceOpenConnection .
+.sM
+.FD 0
+IceConn IceOpenConnection\^(\^\fInetwork_ids_list\fP, \fIcontext\fP\^, \fImust_authenticate\fP\^, \fImajor_opcode_check\fP\^,
+.br
+ \fIerror_length\fP\^, \fIerror_string_ret\fP\^)
+.br
+ char *\fInetwork_ids_list\fP\^;
+.br
+ IcePointer \fIcontext\fP\^;
+.br
+ Bool \fImust_authenticate\fP\^;
+.br
+ int \fImajor_opcode_check\fP\^;
+.br
+ int \fIerror_length\fP\^;
+.br
+ char *\fIerror_string_ret\fP\^;
+.FN
+.IP \fInetwork_ids_list\fP 1i
+Specifies the network ID(s) of the other client.
+.IP \fIcontext\fP 1i
+A pointer to an opaque object or NULL. Used to determine if an
+ICE connection can be shared (see below).
+.IP \fImust_authenticate\fP 1i
+If
+.PN True ,
+the other client may not bypass authentication.
+.IP \fImajor_opcode_check\fP 1i
+Used to force a new ICE connection to be created (see below).
+.IP \fIerror_length\fP 1i
+Length of the error_string_ret argument passed in.
+.IP \fIerror_string_ret\fP 1i
+Returns a null-terminated error message, if any.
+The error_string_ret argument points to user supplied memory.
+No more than error_length bytes
+are used.
+.LP
+.eM
+.PN IceOpenConnection
+returns an opaque ICE connection object if it succeeds;
+otherwise, it returns NULL.
+.LP
+The network_ids_list argument contains a list of network IDs separated by commas.
+An attempt will be made to use the first network ID. If that fails,
+an attempt will be made using the second network ID, and so on.
+Each network ID has the following format:
+.TS
+lw(0.25i) lw(2.5i) lw(1i).
+ tcp/<hostname>:<portnumber> or
+ decnet/<hostname>::<objname> or
+ local/<hostname>:<path>
+.TE
+.LP
+Most protocol libraries will have some sort of open function that should
+internally make a call into
+.PN IceOpenConnection .
+When
+.PN IceOpenConnection
+is called, it may be possible to use a previously opened ICE connection (if
+the target client is the same). However, there are cases in which shared
+ICE connections are not desired.
+.LP
+The context argument is used to determine if an ICE connection can
+be shared.
+If context is NULL,
+then the caller is always willing to share the connection.
+If context is not NULL,
+then the caller is not willing to use a previously opened ICE connection
+that has a different non-NULL context associated with it.
+.LP
+In addition, if major_opcode_check contains a nonzero major opcode value,
+a previously created ICE connection will be used only if the major opcode
+is not active on the connection. This can be used to force multiple ICE
+connections between two clients for the same protocol.
+.LP
+Any authentication requirements are handled internally by the ICE library.
+The method by which the authentication data is obtained
+is implementation-dependent.\(dg
+.FS \(dg
+The X Consortium's ICElib implementation uses an \&.ICEauthority file (see
+Appendix A).
+.FE
+.LP
+After
+.PN IceOpenConnection
+is called, the client is ready to send a
+.PN ProtocolSetup
+(provided that
+.PN IceRegisterForProtocolSetup
+was called) or receive a
+.PN ProtocolSetup
+(provided that
+.PN IceRegisterForProtocolReply
+was called).
+.NH 2
+Listening for ICE Connections
+.XS
+\*(SN Listening for ICE Connections
+.XE
+.LP
+Clients wishing to accept ICE connections must first call
+.PN IceListenForConnections
+or
+.PN IceListenForWellKnownConnections
+so that they can listen for connections. A list of opaque "listen" objects are
+returned, one for each type of transport method that is available
+(for example, Unix Domain, TCP, DECnet, and so on).
+.LP
+Normally clients will let ICElib allocate an available name in each
+transport and return listen objects. Such a client will then use
+.PN IceComposeNetworkIdList
+to extract the chosen names and make them
+available to other clients for opening the connection. In certain
+cases it may be necessary for a client to listen for connections
+on pre-arranged transport object names. Such a client may use
+.PN IceListenForWellKnownConnections
+to specify the names for the listen objects.
+.sM
+.FD 0
+Status IceListenForConnections\^(\^\fIcount_ret\fP, \fIlisten_objs_ret\fP\^, \fIerror_length\fP\^, \fIerror_string_ret\fP\^)
+.br
+ int *\fIcount_ret\fP\^;
+.br
+ IceListenObj **\fIlisten_objs_ret\fP\^;
+.br
+ int \fIerror_length\fP\^;
+.br
+ char *\fIerror_string_ret\fP\^;
+.FN
+.IP \fIcount_ret\fP 1i
+Returns the number of listen objects created.
+.IP \fIlisten_objs_ret\fP 1i
+Returns a list of pointers to opaque listen objects.
+.IP \fIerror_length\fP 1i
+The length of the error_string_ret argument passed in.
+.IP \fIerror_string_ret\fP 1i
+Returns a null-terminated error message, if any.
+The error_string_ret points to user supplied memory.
+No more than error_length bytes are used.
+.LP
+.eM
+The return value of
+.PN IceListenForConnections
+is zero for failure and a positive value for success.
+.sp
+.sM
+.FD 0
+Status IceListenForWellKnownConnections\^(\^\fIport_id\fP, \fIcount_ret\fP, \fIlisten_objs_ret\fP\^, \fIerror_length\fP\^, \fIerror_string_ret\fP\^)
+.br
+ char *\fIport_id\fP\^;
+.br
+ int *\fIcount_ret\fP\^;
+.br
+ IceListenObj **\fIlisten_objs_ret\fP\^;
+.br
+ int \fIerror_length\fP\^;
+.br
+ char *\fIerror_string_ret\fP\^;
+.FN
+.IP \fIport_id\fP 1i
+Specifies the port identification for the address(es)
+to be opened. The value must not contain the slash
+(\^``/''\^) or comma (\^``,''\^) character;
+these are reserved for future use.
+.IP \fIcount_ret\fP 1i
+Returns the number of listen objects created.
+.IP \fIlisten_objs_ret\fP 1i
+Returns a list of pointers to opaque listen objects.
+.IP \fIerror_length\fP 1i
+The length of the error_string_ret argument passed in.
+.IP \fIerror_string_ret\fP 1i
+Returns a null-terminated error message, if any.
+The error_string_ret points to user supplied memory.
+No more than error_length bytes are used.
+.LP
+.eM
+.PN IceListenForWellKnownConnections
+constructs a list of network IDs
+by prepending each known transport to port_id and then attempts to
+create listen objects for the result. Port_id is the portnumber,
+objname, or path portion of the ICE network ID. If a listen object for
+a particular network ID cannot be created the network ID is ignored.
+If no listen objects are created
+.PN IceListenForWellKnownConnections
+returns failure.
+.LP
+The return value of
+.PN IceListenForWellKnownConnections
+is zero for failure and a positive value for success.
+.sp
+.LP
+To close and free the listen objects, use
+.PN IceFreeListenObjs .
+.LP
+.sM
+.FD 0
+void IceFreeListenObjs\^(\^\fIcount\fP, \fIlisten_objs\fP\^)
+.br
+ int \fIcount\fP\^;
+.br
+ IceListenObj *\fIlisten_objs\fP\^;
+.FN
+.IP \fIcount\fP 1i
+The number of listen objects.
+.IP \fIlisten_objs\fP 1i
+The listen objects.
+.LP
+.eM
+.LP
+To detect a new connection on a listen object, use
+.PN select
+on the descriptor associated with the listen object.
+.sp
+.LP
+To obtain the descriptor, use
+.PN IceGetListenConnectionNumber .
+.LP
+.sM
+.FD 0
+int IceGetListenConnectionNumber\^(\^\fIlisten_obj\fP\^)
+.br
+ IceListenObj \fIlisten_obj\fP\^;
+.FN
+.IP \fIlisten_obj\fP 1i
+The listen object.
+.LP
+.eM
+.LP
+To obtain the network ID string associated with a listen object, use
+.PN IceGetListenConnectionString .
+.sM
+.FD 0
+char *IceGetListenConnectionString\^(\^\fIlisten_obj\fP\^)
+.br
+ IceListenObj \fIlisten_obj\fP\^;
+.FN
+.IP \fIlisten_obj\fP 1i
+The listen object.
+.LP
+.eM
+.LP
+A network ID has the following format:
+.TS
+lw(0.25i) lw(2.5i) lw(1i).
+ tcp/<hostname>:<portnumber> or
+ decnet/<hostname>::<objname> or
+ local/<hostname>:<path>
+.TE
+.LP
+To compose a string containing a list of network IDs separated by commas
+(the format recognized by
+.PN IceOpenConnection ),
+use
+.PN IceComposeNetworkIdList .
+.LP
+.sM
+.FD 0
+char *IceComposeNetworkIdList\^(\^\fIcount\fP, \fIlisten_objs\fP\^)
+.br
+ int \fIcount\fP\^;
+.br
+ IceListenObj *\fIlisten_objs\fP\^;
+.FN
+.IP \fIcount\fP 1i
+The number of listen objects.
+.IP \fIlisten_objs\fP 1i
+The listen objects.
+.LP
+.eM
+.NH 2
+Host Based Authentication for ICE Connections
+.XS
+\*(SN Host Based Authentication for ICE Connections
+.XE
+.LP
+If authentication fails when a client attempts to open an
+ICE connection and the initiating client has not required authentication,
+a host based authentication procedure may be invoked to provide
+a last chance for the client to connect. Each listen object has such a
+callback associated with it, and this callback is set using the
+.PN IceSetHostBasedAuthProc
+function.
+.sM
+.FD 0
+void IceSetHostBasedAuthProc\^(\^\fIlisten_obj\fP, \fIhost_based_auth_proc\fP\^)
+.br
+ IceListenObj \fIlisten_obj\fP\^;
+.br
+ IceHostBasedAuthProc \fIhost_based_auth_proc\fP\^;
+.FN
+.IP \fIlisten_obj\fP 1i
+The listen object.
+.IP \fIhost_based_auth_proc\fP 1i
+The host based authentication procedure.
+.LP
+.eM
+By default, each listen object has no host based authentication procedure
+associated with it.
+Passing NULL for host_based_auth_proc turns off host based authentication
+if it was previously set.
+.LP
+.sM
+.FD 0
+typedef Bool (*IceHostBasedAuthProc) ();
+
+Bool HostBasedAuthProc\^(\^\fIhost_name\fP\^)
+.br
+ char *\fIhost_name\fP\^;
+.FN
+.IP \fIhost_name\fP 1i
+The host name of the client that tried to open an ICE connection.
+.LP
+.eM
+The host_name argument is a string in the form \fIprotocol\fP\^/\^\fIhostname\fP,
+where \fIprotocol\fP\^ is one of {tcp, decnet, local}.
+.LP
+If
+.PN IceHostBasedAuthProc
+returns
+.PN True ,
+access will be granted, even though the original
+authentication failed. Note that authentication can effectively be
+disabled by registering an
+.PN IceHostBasedAuthProc ,
+which always returns
+.PN True .
+.LP
+Host based authentication is also allowed at
+.PN ProtocolSetup
+time.
+The callback is specified in the
+.PN IceRegisterForProtocolReply
+function (see section 6, ``Protocol Registration'').
+.NH 2
+Accepting ICE Connections
+.XS
+\*(SN Accepting ICE Connections
+.XE
+.LP
+After a connection attempt is detected on a listen object returned by
+.PN IceListenForConnections ,
+you should call
+.PN IceAcceptConnection .
+This returns a new opaque ICE connection object.
+.sM
+.FD 0
+IceConn IceAcceptConnection\^(\^\fIlisten_obj\fP, \fI\^status_ret\fP\^)
+.br
+ IceListenObj \fIlisten_obj\fP\^;
+.br
+ IceAcceptStatus *\fIstatus_ret\fP\^;
+.FN
+.IP \fIlisten_obj\fP 1i
+The listen object on which a new connection was detected.
+.IP \fIstatus_ret\fP 1i
+Return status information.
+.LP
+.eM
+The status_ret argument is set to one of the following values:
+.IP \(bu 5
+.PN IceAcceptSuccess
+\- the accept operation succeeded,
+and the function returns a new connection object.
+.IP \(bu 5
+.PN IceAcceptFailure
+\- the accept operation failed, and the function returns NULL.
+.IP \(bu 5
+.PN IceAcceptBadMalloc
+\- a memory allocation failed, and the function returns NULL.
+.LP
+In general, to detect new connections, you should call
+.PN select
+on the file descriptors associated with the listen objects.
+When a new connection is detected, the
+.PN IceAcceptConnection
+function should be called.
+.PN IceAcceptConnection
+may return a new ICE connection that is in a pending state. This is because
+before the connection can become valid, authentication may be necessary.
+Because the ICE library cannot block and wait for the connection to
+become valid (infinite blocking can occur if the connecting client
+does not act properly), the application must wait for the connection status
+to become valid.
+.LP
+The following pseudo-code demonstrates how connections are accepted:
+.if t .bp
+.LP
+.Ds 0
+.TA .5i 1i 1.5i 2i
+.ta .5i 1i 1.5i 2i
+new_ice_conn = IceAcceptConnection (listen_obj, &accept_status);
+if (accept_status != IceAcceptSuccess)
+{
+ close the file descriptor and return
+}
+
+status = IceConnectionStatus (new_ice_conn);
+time_start = time_now;
+
+while (status == IceConnectPending)
+{
+ select() on {new_ice_conn, all open connections}
+
+ for (each ice_conn in the list of open connections)
+ if (data ready on ice_conn)
+ {
+ status = IceProcessMessages (ice_conn, NULL, NULL);
+ if (status == IceProcessMessagesIOError)
+ IceCloseConnection (ice_conn);
+ }
+
+ if (data ready on new_ice_conn)
+ {
+ /*
+ * IceProcessMessages is called until the connection
+ * is non-pending. Doing so handles the connection
+ * setup request and any authentication requirements.
+ */
+
+ IceProcessMessages (new_ice_conn, NULL, NULL);
+ status = IceConnectionStatus (new_ice_conn);
+ }
+ else
+ {
+ if (time_now - time_start > MAX_WAIT_TIME)
+ status = IceConnectRejected;
+ }
+}
+
+if (status == IceConnectAccepted)
+{
+ Add new_ice_conn to the list of open connections
+}
+else
+{
+ IceCloseConnection (new_ice_conn);
+}
+.De
+.LP
+After
+.PN IceAcceptConnection
+is called and the connection has been
+validated, the client is ready to receive a
+.PN ProtocolSetup
+(provided
+that
+.PN IceRegisterForProtocolReply
+was called) or send a
+.PN ProtocolSetup
+(provided that
+.PN IceRegisterForProtocolSetup
+was called).
+.NH 2
+Closing ICE Connections
+.XS
+\*(SN Closing ICE Connections
+.XE
+.LP
+To close an ICE connection created with
+.PN IceOpenConnection
+or
+.PN IceAcceptConnection ,
+use
+.PN IceCloseConnection .
+.sM
+.FD 0
+IceCloseStatus IceCloseConnection\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection to close.
+.LP
+.eM
+To actually close an ICE connection, the following conditions
+must be met:
+.IP \(bu 5
+The \fIopen reference count\fP must have reached zero on this ICE connection.
+When
+.PN IceOpenConnection
+is called, it tries to use a previously opened
+ICE connection. If it is able to use an existing connection, it increments
+the open reference count on the connection by one.
+So, to close an ICE connection, each call to
+.PN IceOpenConnection
+must be matched with a call to
+.PN IceCloseConnection .
+The connection can be closed only
+on the last call to
+.PN IceCloseConnection .
+.IP \(bu 5
+The \fIactive protocol count\fP\^ must have reached zero. Each time a
+.PN ProtocolSetup
+succeeds on the connection, the active protocol count
+is incremented by one. When the client no longer expects to use the
+protocol on the connection, the
+.PN IceProtocolShutdown
+function should be called, which decrements the active protocol count
+by one (see section 8, ``Protocol Setup and Shutdown'').
+.IP \(bu 5
+If shutdown negotiation is enabled on the connection, the client on the other
+side of the ICE connection must agree to have the connection closed.
+.LP
+.PN IceCloseConnection
+returns one of the following values:
+.IP \(bu 5
+.PN IceClosedNow
+\- the ICE connection was closed at this time. The watch procedures were
+invoked and the connection was freed.
+.IP \(bu 5
+.PN IceClosedASAP
+\- an IO error had occurred on the connection, but
+.PN IceCloseConnection
+is being called within a nested
+.PN IceProcessMessages .
+The watch procedures have been invoked at this time, but the connection
+will be freed as soon as possible (when the nesting level reaches zero and
+.PN IceProcessMessages
+returns a status of
+.PN IceProcessMessagesConnectionClosed ).
+.IP \(bu 5
+.PN IceConnectionInUse
+\- the connection was not closed at this time, because it is being used by
+other active protocols.
+.IP \(bu 5
+.PN IceStartedShutdownNegotiation
+\- the connection was not closed at this time and shutdown negotiation started
+with the client on the other side of the ICE connection. When the connection
+is actually closed,
+.PN IceProcessMessages
+will return a status of
+.PN IceProcessMessagesConnectionClosed .
+.sp
+.LP
+When it is known that the client on the other side of the ICE connection
+has terminated the connection without initiating shutdown negotiation, the
+.PN IceSetShutdownNegotiation
+function should be called to turn off shutdown negotiation. This will prevent
+.PN IceCloseConnection
+from writing to a broken connection.
+.sM
+.FD 0
+void IceSetShutdownNegotiation\^(\^\fIice_conn\fP, \fInegotiate\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ Bool \fInegotiate\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fInegotiate\fP 1i
+If
+.PN False ,
+shutdown negotiating will be turned off.
+.LP
+.eM
+.LP
+To check the shutdown negotiation status of an ICE connection, use
+.PN IceCheckShutdownNegotiation .
+.sM
+.FD 0
+Bool IceCheckShutdownNegotiation\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.LP
+.eM
+.PN IceCheckShutdownNegotiation
+returns
+.PN True
+if shutdown negotiation will take place on the connection;
+otherwise, it returns
+.PN False .
+Negotiation is on by default for a connection. It
+can only be changed with the
+.PN IceSetShutdownNegotiation
+function.
+.NH 2
+Connection Watch Procedures
+.XS
+\*(SN Connection Watch Procedures
+.XE
+.LP
+To add a watch procedure that will be called
+each time ICElib opens a new connection via
+.PN IceOpenConnection
+or
+.PN IceAcceptConnection
+or closes a connection via
+.PN IceCloseConnection ,
+use
+.PN IceAddConnectionWatch .
+.sM
+.FD 0
+Status IceAddConnectionWatch\^(\^\fIwatch_proc\fP, \fIclient_data\fP\^)
+.br
+ IceWatchProc \fIwatch_proc\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.FN
+.IP \fIwatch_proc\fP 1i
+The watch procedure to invoke when ICElib opens or
+closes a connection.
+.IP \fIclient_data\fP 1i
+This pointer will be passed to the watch procedure.
+.LP
+.eM
+The return value of
+.PN IceAddConnectionWatch
+is zero for failure, and a positive value for success.
+.LP
+Note that several calls to
+.PN IceOpenConnection
+might share the same ICE connection. In such a case, the watch procedure
+is only invoked when the connection is first created (after authentication
+succeeds). Similarly, because
+connections might be shared, the watch procedure is called only if
+.PN IceCloseConnection
+actually closes the connection (right before the IceConn is freed).
+.LP
+The watch procedures are very useful for applications that
+need to add a file descriptor to a select mask when a new connection
+is created and remove the file descriptor when the connection is destroyed.
+Because connections are shared, knowing when to add and remove the file
+descriptor from the select mask would be difficult without the watch
+procedures.
+.LP
+Multiple watch procedures may be registered with the ICE library.
+No assumptions should be made about their order of invocation.
+.LP
+If one or more ICE connections were already created by the ICE library at the
+time the watch procedure is registered, the watch procedure will instantly
+be invoked for each of these ICE connections (with the opening argument
+set to
+.PN True ).
+.LP
+The watch procedure is of type
+.PN IceWatchProc .
+.sM
+.FD 0
+typedef void (*IceWatchProc)();
+
+void WatchProc\^(\^\fIice_conn\fP, \fIclient_data\fP\^, \fIopening\fP\^, \fIwatch_data\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.br
+ Bool \fIopening\fP\^;
+.br
+ IcePointer *\fIwatch_data\fP\^;
+.FN
+.IP \fIice_conn\fP\^ 1i
+The opened or closed ICE connection. Call
+.PN IceConnectionNumber
+to get the file descriptor associated with this connection.
+.IP \fIclient_data\fP\^ 1i
+Client data specified in the call to
+.PN IceAddConnectionWatch .
+.IP \fIopening\fP\^ 1i
+If
+.PN True ,
+the connection is being opened. If
+.PN False ,
+the connection is being closed.
+.IP \fIwatch_data\fP\^ 1i
+Can be used to save a pointer to client data.
+.LP
+.eM
+If opening is
+.PN True ,
+the client should set the *watch_data
+pointer to any data it may need to save until the connection is closed
+and the watch procedure is
+invoked again with opening set to
+.PN False .
+.sp
+.LP
+To remove a watch procedure, use
+.PN IceRemoveConnectionWatch .
+.sM
+.FD 0
+void IceRemoveConnectionWatch\^(\^\fIwatch_proc\fP, \fIclient_data\fP\^)
+.br
+ IceWatchProc \fIwatch_proc\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.LP
+.FN
+.IP \fIwatch_proc\fP 1i
+The watch procedure that was passed to
+.PN IceAddConnectionWatch .
+.IP \fIclient_data\fP 1i
+The client_data pointer that was passed to
+.PN IceAddConnectionWatch .
+.LP
+.eM
+.NH 1
+Protocol Setup and Shutdown
+.XS
+\*(SN Protocol Setup and Shutdown
+.XE
+.LP
+To activate a protocol on a given ICE connection, use
+.PN IceProtocolSetup .
+.LP
+.sM
+.FD 0
+IceProtocolSetupStatus IceProtocolSetup\^(\^\fIice_conn\fP, \fImy_opcode\fP\^, \fIclient_data\fP\^, \fImust_authenticate\fP\^,
+.br
+ \fImajor_version_ret\fP\^, \fIminor_version_ret\fP\^, \fIvendor_ret\fP\^, \fIrelease_ret\fP\^, \fIerror_length\fP\^, \fIerror_string_ret\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fImy_opcode\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.br
+ Bool \fImust_authenticate\fP\^;
+.br
+ int *\fImajor_version_ret\fP\^;
+.br
+ int *\fIminor_version_ret\fP\^;
+.br
+ char **\fIvendor_ret\fP\^;
+.br
+ char **\fIrelease_ret\fP\^;
+.br
+ int \fIerror_length\fP\^;
+.br
+ char *\fIerror_string_ret\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fImy_opcode\fP 1i
+The major opcode of the protocol to be set up, as returned by
+.PN IceRegisterForProtocolSetup .
+.IP \fIclient_data\fP 1i
+The client data stored in this pointer will be passed to the
+.PN IcePoProcessMsgProc
+callback.
+.IP \fImust_authenticate\fP 1i
+If
+.PN True ,
+the other client may not bypass authentication.
+.IP \fImajor_version_ret\fP 1i
+The major version of the protocol to be used is returned.
+.IP \fIminor_version_ret\fP 1i
+The minor version of the protocol to be used is returned.
+.IP \fIvendor_ret\fP 1i
+The vendor string specified by the protocol acceptor.
+.IP \fIrelease_ret\fP 1i
+The release string specified by the protocol acceptor.
+.IP \fIerror_length\fP 1i
+Specifies the length of the error_string_ret argument passed in.
+.IP \fIerror_string_ret\fP 1i
+Returns a null-terminated error message, if any.
+The error_string_ret argument points to user supplied memory.
+No more than error_length bytes are used.
+.LP
+.eM
+The vendor_ret and release_ret strings should be freed with
+.PN free
+when no longer needed.
+.LP
+.PN IceProtocolSetup
+returns one of the following values:
+.IP \(bu 5
+.PN IceProtocolSetupSuccess
+\- the major_version_ret, minor_version_ret, vendor_ret, release_ret are set.
+.IP \(bu 5
+.PN IceProtocolSetupFailure
+or
+.PN IceProtocolSetupIOError
+\- check error_string_ret for failure reason.
+The major_version_ret, minor_version_ret, vendor_ret, release_ret are not set.
+.IP \(bu 5
+.PN IceProtocolAlreadyActive
+\- this protocol is already active on this connection.
+The major_version_ret, minor_version_ret, vendor_ret, release_ret are not set.
+.sp
+.LP
+To notify the ICE library when a given protocol
+will no longer be used on an ICE connection, use
+.PN IceProtocolShutdown .
+.LP
+.sM
+.FD 0
+Status IceProtocolShutdown\^(\^\fIice_conn\fP, \fImajor_opcode\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fImajor_opcode\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fImajor_opcode\fP 1i
+The major opcode of the protocol to shut down.
+.LP
+.eM
+The return value of
+.PN IceProtocolShutdown
+is zero for failure and a positive value for success.
+.LP
+Failure will occur if the major opcode was never registered OR the protocol
+of the major opcode was never activated on the connection. By activated,
+we mean that a
+.PN ProtocolSetup
+succeeded on the connection.
+Note that ICE does not define how each sub-protocol triggers a
+protocol shutdown.
+.NH 1
+Processing Messages
+.XS
+\*(SN Processing Messages
+.XE
+.LP
+To process incoming messages on an ICE connection, use
+.PN IceProcessMessages .
+.sM
+.FD 0
+IceProcessMessagesStatus IceProcessMessages\^(\^\fIice_conn\fP, \fIreply_wait\fP\^, \fIreply_ready_ret\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IceReplyWaitInfo *\fIreply_wait\fP\^;
+.br
+ Bool *\fIreply_ready_ret\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIreply_wait\fP 1i
+Indicates if a reply is being waited for.
+.IP \fIreply_ready_ret\fP 1i
+If set to
+.PN True
+on return, a reply is ready.
+.LP
+.eM
+.PN IceProcessMessages
+is used in two ways:
+.IP \(bu 5
+In the first, a client may
+generate a message and block by calling
+.PN IceProcessMessages
+repeatedly until it gets its reply.
+.IP \(bu 5
+In the second, a
+client calls
+.PN IceProcessMessages
+with reply_wait set to NULL in response to
+.PN select
+showing that there is data to read on the ICE connection.
+The ICE library may process zero or more complete messages.
+Note that messages that are not blocked for are always processed by
+invoking callbacks.
+.LP
+.PN IceReplyWaitInfo
+contains the major/minor opcodes and sequence number
+of the message for which a reply is being awaited. It also contains
+a pointer to the reply message to be filled in (the protocol library
+should cast this
+.PN IcePointer
+to the appropriate reply type). In most
+cases, the reply will have some fixed-size part, and the client waiting
+for the reply will have provided a pointer to a structure to hold
+this fixed-size data. If there is variable-length data, it would be
+expected that the
+.PN IcePoProcessMsgProc
+callback will have to allocate additional
+memory and store pointer(s) to that memory in the fixed-size
+structure. If the entire data is variable length (for example, a single
+variable-length string), then the client waiting for the reply would probably
+just pass a pointer to fixed-size space to hold a pointer, and the
+.PN IcePoProcessMsgProc
+callback would allocate the storage and store the pointer.
+It is the responsibility of the client receiving the reply to
+free up any memory allocated on its behalf.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ unsigned long sequence_of_request;
+ int major_opcode_of_request;
+ int minor_opcode_of_request;
+ IcePointer reply;
+} IceReplyWaitInfo;
+.De
+.LP
+.eM
+If reply_wait is not NULL and
+.PN IceProcessMessages
+has a reply or error to return in response to this reply_wait
+(that is, no callback was generated), then the reply_ready_ret argument
+will be set to
+.PN True .
+.LP
+If reply_wait is NULL,
+then the caller may also pass NULL
+for reply_ready_ret and be guaranteed that no value will be stored
+in this pointer.
+.LP
+.PN IceProcessMessages
+returns one of the following values:
+.IP \(bu 5
+.PN IceProcessMessagesSuccess
+\- no error occurred.
+.IP \(bu 5
+.PN IceProcessMessagesIOError
+\- an IO error occurred,
+and the caller must explicitly close the connection by calling
+.PN IceCloseConnection .
+.IP \(bu 5
+.PN IceProcessMessagesConnectionClosed
+\- the ICE connection has been closed (closing of the connection was deferred
+because of shutdown negotiation, or because the
+.PN IceProcessMessages
+nesting level was not zero). Do not attempt
+to access the ICE connection at this point, since it has been freed.
+.NH 1
+Ping
+.XS
+\*(SN Ping
+.XE
+.LP
+To send a ``Ping'' message to the client on the other side of the
+ICE connection, use
+.PN IcePing .
+.sM
+.FD 0
+Status IcePing\^(\^\fIice_conn\fP, \fIping_reply_proc\fP\^, \fIclient_data\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePingReplyProc \fIping_reply_proc\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIping_reply_proc\fP 1i
+The callback to invoke when the Ping reply arrives.
+.IP \fIclient_data\fP 1i
+This pointer will be passed to the
+.PN IcePingReplyProc
+callback.
+.LP
+.eM
+.PN IcePing
+returns zero for failure and a positive value for success.
+.LP
+When
+.PN IceProcessMessages
+processes the Ping reply, it will invoke the
+.PN IcePingReplyProc
+callback.
+.sM
+.FD 0
+typedef void (*IcePingReplyProc)();
+
+void PingReplyProc\^(\^\fIice_conn\fP, \fIclient_data\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIclient_data\fP 1i
+The client data specified in the call to
+.PN IcePing .
+.LP
+.eM
+.NH 1
+Using ICElib Informational Functions
+.XS
+\*(SN Using ICElib Informational Functions
+.XE
+.LP
+.sM
+.FD 0
+IceConnectStatus IceConnectionStatus\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceConnectionStatus
+returns the status of an ICE connection. The possible return values are:
+.IP \(bu 5
+.PN IceConnectPending
+\- the connection is not valid yet (that is, authentication is taking place).
+This is only relevant to connections created by
+.PN IceAcceptConnection .
+.IP \(bu 5
+.PN IceConnectAccepted
+\- the connection has been accepted.
+This is only relevant to connections created by
+.PN IceAcceptConnection .
+.IP \(bu 5
+.PN IceConnectRejected
+\- the connection had been rejected (that is, authentication failed).
+This is only relevant to connections created by
+.PN IceAcceptConnection .
+.IP \(bu 5
+.PN IceConnectIOError
+\- an IO error has occurred on the connection.
+.LP
+.sM
+.FD 0
+char *IceVendor\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceVendor
+returns the ICE library vendor identification
+for the other side of the connection.
+The string should be freed with a call to
+.PN free
+when no longer needed.
+.LP
+.sM
+.FD 0
+char *IceRelease\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceRelease
+returns the release identification of the ICE library
+on the other side of the connection.
+The string should be freed with a call to
+.PN free
+when no longer needed.
+.LP
+.sM
+.FD 0
+int IceProtocolVersion\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceProtocolVersion
+returns the major version of the ICE protocol on this connection.
+.LP
+.sM
+.FD 0
+int IceProtocolRevision\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceProtocolRevision
+returns the minor version of the ICE protocol on this connection.
+.LP
+.sM
+.FD 0
+int IceConnectionNumber\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceConnectionNumber
+returns the file descriptor of this ICE connection.
+.LP
+.sM
+.FD 0
+char *IceConnectionString\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceConnectionString
+returns the network ID of the client that
+accepted this connection. The string should be freed with a call to
+.PN free
+when no longer needed.
+.LP
+.sM
+.FD 0
+unsigned long IceLastSentSequenceNumber\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceLastSentSequenceNumber
+returns the sequence number of the last message sent on this ICE connection.
+.LP
+.sM
+.FD 0
+unsigned long IceLastReceivedSequenceNumber\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceLastReceivedSequenceNumber
+returns the sequence number of the last message received on this
+ICE connection.
+.LP
+.sM
+.FD 0
+Bool IceSwapping\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceSwapping
+returns
+.PN True
+if byte swapping is necessary when reading messages on the ICE connection.
+.LP
+.sM
+.FD 0
+IcePointer IceGetContext\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.eM
+.PN IceGetContext
+returns the context associated with a connection created by
+.PN IceOpenConnection .
+.NH 1
+ICE Messages
+.XS
+\*(SN ICE Messages
+.XE
+.LP
+All ICE messages have a standard 8-byte header. The ICElib macros that
+read and write messages rely on the following naming convention for message
+headers:
+.LP
+.Ds 0
+.TA .5i 1i
+.ta .5i 1i
+ CARD8 major_opcode;
+ CARD8 minor_opcode;
+ CARD8 data[2];
+ CARD32 length B32;
+.De
+.LP
+The 3rd and 4th bytes of the message header can be used as needed.
+The length field is specified in units of 8 bytes.
+.NH 2
+Sending ICE Messages
+.XS
+\*(SN Sending ICE Messages
+.XE
+.LP
+The ICE library maintains an output buffer used for generating messages.
+Protocol libraries layered on top of ICE may choose to batch messages
+together and flush the output buffer at appropriate times.
+.LP
+If an IO error has occurred on an ICE connection, all write operations
+will be ignored.
+For further information, see section 13, ``Error Handling.''
+.sp
+.LP
+To get the size of the ICE output buffer, use
+.PN IceGetOutBufSize .
+.sM
+.FD 0
+int IceGetOutBufSize\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.LP
+.eM
+.LP
+To flush the ICE output buffer, use
+.PN IceFlush .
+.sM
+.FD 0
+IceFlush\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.LP
+.eM
+Note that the output buffer may be implicitly flushed if there is insufficient
+space to generate a message.
+.LP
+The following macros can be used to generate ICE messages:
+.LP
+.sM
+.FD 0
+IceGetHeader\^(\^\fIice_conn\fP, \fImajor_opcode\fP\^, \fIminor_opcode\fP\^, \fIheader_size\fP\^, \fI<C_data_type>\fP\^, \fIpmsg\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fImajor_opcode\fP\^;
+.br
+ int \fIminor_opcode\fP\^;
+.br
+ int \fIheader_size\fP\^;
+.br
+ <C_data_type> *\fIpmsg\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fImajor_opcode\fP 1i
+The major opcode of the message.
+.IP \fIminor_opcode\fP 1i
+The minor opcode of the message.
+.IP \fIheader_size\fP 1i
+The size of the message header (in bytes).
+.IP \fI<C_data_type>\fP 1i
+The actual C data type of the message header.
+.IP \fIpmsg\fP 1i
+The message header pointer. After this macro is called, the
+library can store data in the message header.
+.LP
+.eM
+.PN IceGetHeader
+is used to set up a message header on an ICE connection.
+It sets the major and minor opcodes of the message, and initializes
+the message's length to the length of the header. If additional
+variable length data follows, the message's length field should be
+updated.
+.sp
+.LP
+.sM
+.FD 0
+IceGetHeaderExtra\^(\^\fIice_conn\fP, \fImajor_opcode\fP\^, \fIminor_opcode\fP\^, \fIheader_size\fP\^, \fIextra\fP\^, \fI<C_data_type>\fP\^, \fIpmsg\fP\^, \fIpdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fImajor_opcode\fP\^;
+.br
+ int \fIminor_opcode\fP\^;
+.br
+ int \fIheader_size\fP\^;
+.br
+ int \fIextra\fP\^;
+.br
+ <C_data_type> *\fIpmsg\fP\^;
+.br
+ char *\fIpdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fImajor_opcode\fP 1i
+The major opcode of the message.
+.IP \fIminor_opcode\fP 1i
+The minor opcode of the message.
+.IP \fIheader_size\fP 1i
+The size of the message header (in bytes).
+.IP \fIextra\fP 1i
+The size of the extra data beyond the header (in 8-byte units).
+.IP \fI<C_data_type>\fP 1i
+The actual C data type of the message header.
+.IP \fIpmsg\fP 1i
+The message header pointer. After this macro is called, the
+library can store data in the message header.
+.IP \fIpdata\fP 1i
+Returns a pointer to the ICE output buffer that points
+immediately after the message header. The variable length
+data should be stored here. If there was not enough room
+in the ICE output buffer, pdata is set to NULL.
+.LP
+.eM
+.PN IceGetHeaderExtra
+is used to generate a message with a fixed (and relatively small) amount
+of variable length data. The complete message must fit in the ICE output
+buffer.
+.sp
+.LP
+.sM
+.FD 0
+IceSimpleMessage\^(\^\fIice_conn\fP, \fImajor_opcode\fP\^, \fIminor_opcode\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fImajor_opcode\fP\^;
+.br
+ int \fIminor_opcode\fP\^;
+.FN
+.br
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fImajor_opcode\fP 1i
+The major opcode of the message.
+.IP \fIminor_opcode\fP 1i
+The minor opcode of the message.
+.LP
+.eM
+.PN IceSimpleMessage
+is used to generate a message that is identical
+in size to the ICE header message, and has no additional data.
+.sp
+.LP
+.sM
+.FD 0
+IceErrorHeader\^(\^\fIice_conn\fP, \fIoffending_major_opcode\fP\^, \fIoffending_minor_opcode\fP\^, \fIoffending_sequence_num\fP\^,
+.br
+ \fIseverity\fP\^, \fIerror_class\fP\^, \fIdata_length\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIoffending_major_opcode\fP\^;
+.br
+ int \fIoffending_minor_opcode\fP\^;
+.br
+ int \fIoffending_sequence_num\fP\^;
+.br
+ int \fIseverity\fP\^;
+.br
+ int \fIerror_class\fP\^;
+.br
+ int \fIdata_length\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIoffending_major_opcode\fP 1i
+The major opcode of the protocol in which an error was detected.
+.IP \fIoffending_minor_opcode\fP 1i
+The minor opcode of the protocol in which an error was detected.
+.IP \fIoffending_sequence_num\fP 1i
+The sequence number of the message that caused the error.
+.IP \fIseverity\fP 1i
+.PN IceCanContinue ,
+.PN IceFatalToProtocol ,
+or
+.PN IceFatalToConnection .
+.IP \fIerror_class\fP 1i
+The error class.
+.IP \fIdata_length\fP 1i
+Length of data (in 8-byte units) to be written after the header.
+.LP
+.eM
+.PN IceErrorHeader
+sets up an error message header.
+.LP
+Note that the two clients connected by ICE may be using different
+major opcodes for a given protocol. The offending_major_opcode passed
+to this macro is the major opcode of the protocol for the client
+sending the error message.
+.LP
+Generic errors, which are common to all protocols, have classes
+in the range 0x8000..0xFFFF.
+See the \fIInter-Client Exchange Protocol\fP\^ standard for more details.
+.TS
+lw(1i) lw(1i).
+T{
+.PN IceBadMinor
+T} T{
+0x8000
+T}
+.sp 4p
+T{
+.PN IceBadState
+T} T{
+0x8001
+T}
+.sp 4p
+T{
+.PN IceBadLength
+T} T{
+0x8002
+T}
+.sp 4p
+T{
+.PN IceBadValue
+T} T{
+0x8003
+T}
+.TE
+.LP
+Per-protocol errors have classes in the range 0x0000-0x7fff.
+.sp
+.LP
+To write data to an ICE connection, use the
+.PN IceWriteData
+macro. If the data fits into the ICE output buffer, it is copied there.
+Otherwise, the ICE output buffer is flushed and the data is directly sent.
+.LP
+This macro is used in conjunction with
+.PN IceGetHeader
+and
+.PN IceErrorHeader .
+.sp
+.LP
+.sM
+.FD 0
+IceWriteData\^(\^\fIice_conn\fP, \fIbytes\fP\^, \fIdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIbytes\fP\^;
+.br
+ char *\fIdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIbytes\fP 1i
+The number of bytes to write.
+.IP \fIdata\fP 1i
+The data to write.
+.LP
+.eM
+.sp
+To write data as 16-bit quantities, use
+.PN IceWriteData16 .
+.sM
+.FD 0
+IceWriteData16\^(\^\fIice_conn\fP, \fIbytes\fP\^, \fIdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIbytes\fP\^;
+.br
+ short *\fIdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIbytes\fP 1i
+The number of bytes to write.
+.IP \fIdata\fP 1i
+The data to write.
+.LP
+.eM
+.sp
+To write data as 32-bit quantities, use
+.PN IceWriteData32 .
+.sM
+.FD 0
+IceWriteData32\^(\^\fIice_conn\fP, \fIbytes\fP\^, \fIdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIbytes\fP\^;
+.br
+ long *\fIdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIbytes\fP 1i
+The number of bytes to write.
+.IP \fIdata\fP 1i
+The data to write.
+.LP
+.eM
+.sp
+To bypass copying data to the ICE output buffer, use
+.PN IceSendData
+to directly send data over the network connection. If necessary, the
+ICE output buffer is first flushed.
+.sM
+.FD 0
+IceSendData\^(\^\fIice_conn\fP, \fIbytes\fP\^, \fI(char *) data\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIbytes\fP\^;
+.br
+ char *\fIdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIbytes\fP 1i
+The number of bytes to send.
+.IP \fIdata\fP 1i
+The data to send.
+.LP
+.eM
+.sp
+To force 32-bit or 64-bit alignment, use
+.PN IceWritePad .
+A maximum of 7 pad bytes can be specified.
+.sM
+.FD 0
+IceWritePad\^(\^\fIice_conn\fP, \fIbytes\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIbytes\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIbytes\fP 1i
+The number of pad bytes.
+.LP
+.eM
+.NH 2
+Reading ICE Messages
+.XS
+\*(SN Reading ICE Messages
+.XE
+.LP
+The ICE library maintains an input buffer used for reading messages.
+If the ICE library chooses to perform nonblocking reads (this is
+implementation-dependent), then for every read operation that it makes,
+zero or more complete messages may be read into the input buffer. As
+a result, for all of the macros described in this section that read
+messages, an actual read operation will occur on the connection only if
+the data is not already present in the input buffer.
+.sp
+.LP
+To get the size of the ICE input buffer, use
+.PN IceGetInBufSize .
+.sM
+.FD 0
+int IceGetInBufSize\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.LP
+.eM
+.LP
+When reading messages, care must be taken to check for IO errors. If
+any IO error occurs in reading any part of a message, the message should
+be thrown out. After using any of the macros described below for reading
+messages, the
+.PN IceValidIO
+macro can be used to check if an IO error occurred on the
+connection. After an IO error has occurred on an ICE connection, all
+read operations will be ignored.
+For further information, see section 13, ``Error Handling.''
+.sp
+.LP
+.sM
+.FD 0
+Bool IceValidIO\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.LP
+.eM
+.LP
+The following macros can be used to read ICE messages.
+.sM
+.FD 0
+IceReadSimpleMessage\^(\^\fIice_conn\fP, \fI<C_data_type>\fP\^, \fIpmsg\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ <C_data_type> *\fIpmsg\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fI<C_data_type>\fP 1i
+The actual C data type of the message header.
+.IP \fIpmsg\fP 1i
+This pointer is set to the message header.
+.LP
+.eM
+.PN IceReadSimpleMessage
+is used for messages that are identical in size to the 8-byte ICE header, but
+use the spare 2 bytes in the header to encode additional data. Note that the
+ICE library always reads in these first 8 bytes, so it can obtain the major
+opcode of the message.
+.PN IceReadSimpleMessage
+simply returns a pointer to these 8 bytes; it does not actually read any data
+into the input buffer.
+.LP
+For a message with variable length data, there are two ways of reading
+the message. One method involves reading the complete message in one
+pass using
+.PN IceReadCompleteMessage .
+The second method involves reading the message header (note that this may
+be larger than the 8-byte ICE header), then reading
+the variable length data in chunks (see
+.PN IceReadMessageHeader
+and
+.PN IceReadData ).
+.sp
+.LP
+.sM
+.FD 0
+IceReadCompleteMessage\^(\^\fIice_conn\fP, \fIheader_size\fP\^, \fI<C_data_type>\fP\^, \fIpmsg\fP\^, \fIpdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIheader_size\fP\^;
+.br
+ <C_data_type> *\fIpmsg\fP\^;
+.br
+ char *\fIpdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIheader_size\fP 1i
+The size of the message header (in bytes).
+.IP \fI<C_data_type>\fP 1i
+The actual C data type of the message header.
+.IP \fIpmsg\fP 1i
+This pointer is set to the message header.
+.IP \fIpdata\fP 1i
+This pointer is set to the variable length data of the message.
+.LP
+.eM
+If the ICE input buffer has sufficient space,
+.PN IceReadCompleteMessage
+will read the complete message into the
+ICE input buffer. Otherwise, a buffer will be allocated to hold the
+variable length data. After the call, the pdata argument should
+be checked against NULL to make sure that there was sufficient memory
+to allocate the buffer.
+.sp
+.LP
+After calling
+.PN IceReadCompleteMessage
+and processing the message,
+.PN IceDisposeCompleteMessage
+should be called.
+.LP
+.sM
+.FD 0
+IceDisposeCompleteMessage\^(\^\fIice_conn\fP, \fIpdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ char *\fIpdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIpdata\fP 1i
+The pointer to the variable length data returned in
+.PN IceReadCompleteMessage .
+.LP
+.eM
+If a buffer had to be allocated to hold the variable length data (because
+it did not fit in the ICE input buffer), it is freed here by ICElib.
+.sp
+.LP
+.sM
+.FD 0
+IceReadMessageHeader\^(\^\fIice_conn\fP, \fIheader_size\fP\^, \fI<C_data_type>\fP\^, \fIpmsg\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIheader_size\fP\^;
+.br
+ <C_data_type> *\fIpmsg\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIheader_size\fP 1i
+The size of the message header (in bytes).
+.IP \fI<C_data_type>\fP 1i
+The actual C data type of the message header.
+.IP \fIpmsg\fP 1i
+This pointer is set to the message header.
+.LP
+.eM
+.PN IceReadMessageHeader
+reads just the message header. The rest
+of the data should be read with the
+.PN IceReadData
+family of macros. This method of reading a message should be used when the
+variable length data must be read in chunks.
+.sp
+.LP
+To read data directly into a user supplied buffer, use
+.PN IceReadData .
+.sM
+.FD 0
+IceReadData\^(\^\fIice_conn\fP, \fIbytes\fP\^, \fIpdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIbytes\fP\^;
+.br
+ char *\fIpdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIbytes\fP 1i
+The number of bytes to read.
+.IP \fIpdata\fP 1i
+The data is read into this user supplied buffer.
+.LP
+.eM
+.sp
+To read data as 16-bit quantities, use
+.PN IceReadData16 .
+.sM
+.FD 0
+IceReadData16\^(\^\fIice_conn\fP, \fIswap\fP\^, \fIbytes\fP\^, \fIpdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ int \fIbytes\fP\^;
+.br
+ short *\fIpdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIswap\fP 1i
+If
+.PN True,
+the values will be byte swapped.
+.IP \fIbytes\fP 1i
+The number of bytes to read.
+.IP \fIpdata\fP 1i
+The data is read into this user supplied buffer.
+.LP
+.eM
+.sp
+To read data as 32-bit quantities, use
+.PN IceReadData32 .
+.sM
+.FD 0
+IceReadData32\^(\^\fIice_conn\fP, \fIswap\fP\^, \fIbytes\fP\^, \fIpdata\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ int \fIbytes\fP\^;
+.br
+ long *\fIpdata\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIswap\fP 1i
+If
+.PN True,
+the values will be byte swapped.
+.IP \fIbytes\fP 1i
+The number of bytes to read.
+.IP \fIpdata\fP 1i
+The data is read into this user supplied buffer.
+.LP
+.eM
+.sp
+To force 32-bit or 64-bit alignment, use
+.PN IceReadPad .
+A maximum of 7 pad bytes can be specified.
+.sM
+.FD 0
+IceReadPad\^(\^\fIice_conn\fP, \fIbytes\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ int \fIbytes\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIbytes\fP 1i
+The number of pad bytes.
+.LP
+.eM
+.NH 1
+Error Handling
+.XS
+\*(SN Error Handling
+.XE
+.LP
+There are two default error handlers in ICElib:
+.IP \(bu 5
+One to handle typically fatal conditions (for example,
+a connection dying because a machine crashed)
+.IP \(bu 5
+One to handle ICE-specific protocol errors
+.LP
+These error handlers can be changed to user-supplied routines if you
+prefer your own error handling and can be changed as often as you like.
+.sp
+.LP
+To set the ICE error handler, use
+.PN IceSetErrorHandler .
+.sM
+.FD 0
+IceErrorHandler IceSetErrorHandler\^(\^\fIhandler\fP\^)
+.br
+ IceErrorHandler \fIhandler\fP\^;
+.FN
+.IP \fIhandler\fP 1i
+The ICE error handler.
+You should pass NULL to restore the default handler.
+.LP
+.eM
+.PN IceSetErrorHandler
+returns the previous error handler.
+.LP
+The ICE error handler is invoked when an unexpected ICE protocol
+error (major opcode 0) is encountered. The action of the default
+handler is to print an explanatory message to
+.PN stderr
+and if the severity is fatal, call
+.PN exit
+with a nonzero value. If exiting
+is undesirable, the application should register its own error handler.
+.LP
+Note that errors in other protocol
+domains should be handled by their respective libraries (these libraries
+should have their own error handlers).
+.LP
+An ICE error handler has the type of
+.PN IceErrorHandler .
+.sM
+.FD 0
+typedef void (*IceErrorHandler)();
+
+void ErrorHandler\^(\^\fIice_conn\fP, \fIswap\fP\^, \fIoffending_minor_opcode\fP\^, \fIoffending_sequence_num\fP\^, \fIerror_class\fP\^,
+.br
+ \fIseverity\fP\^, \fIvalues\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ int \fIoffending_minor_opcode\fP\^;
+.br
+ unsigned long \fIoffending_sequence_num\fP\^;
+.br
+ int \fIerror_class\fP\^;
+.br
+ int \fIseverity\fP\^;
+.br
+ IcePointer \fIvalues\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIswap\fP 1i
+A flag that indicates if the values need byte swapping.
+.IP \fIoffending_minor_opcode\fP 1i
+The ICE minor opcode of the offending message.
+.IP \fIoffending_sequence_num\fP 1i
+The sequence number of the offending message.
+.IP \fIerror_class\fP 1i
+The error class of the offending message.
+.IP \fIseverity\fP 1i
+.PN IceCanContinue ,
+.PN IceFatalToProtocol ,
+or
+.PN IceFatalToConnection .
+.IP \fIvalues\fP 1i
+Any additional error values specific to the minor opcode and class.
+.LP
+.eM
+The following error classes are defined at the ICE level:
+.LP
+.Ds 0
+.PN IceBadMinor
+.PN IceBadState
+.PN IceBadLength
+.PN IceBadValue
+.PN IceBadMajor
+.PN IceNoAuth
+.PN IceNoVersion
+.PN IceSetupFailed
+.PN IceAuthRejected
+.PN IceAuthFailed
+.PN IceProtocolDuplicate
+.PN IceMajorOpcodeDuplicate
+.PN IceUnknownProtocol
+.De
+.LP
+For further information, see
+the \fIInter-Client Exchange Protocol\fP\^ standard.
+.sp
+.LP
+To handle fatal I/O errors, use
+.PN IceSetIOErrorHandler .
+.LP
+.sM
+.FD 0
+IceIOErrorHandler IceSetIOErrorHandler\^(\^\fIhandler\fP\^)
+.br
+ IceIOErrorHandler \fIhandler\fP\^;
+.FN
+.IP \fIhandler\fP 1i
+The I/O error handler.
+You should pass NULL to restore the default handler.
+.LP
+.eM
+.PN IceSetIOErrorHandler
+returns the previous IO error handler.
+.LP
+An ICE I/O error handler has the type of
+.PN IceIOErrorHandler .
+.LP
+.sM
+.FD 0
+typedef void (*IceIOErrorHandler)();
+
+void IOErrorHandler\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.LP
+.eM
+There are two ways of handling IO errors in ICElib:
+.IP \(bu 5
+In the first, the IO error handler does whatever is necessary
+to respond to the IO error and then returns, but it does not call
+.PN IceCloseConnection .
+The ICE connection is given a ``bad IO'' status, and all future reads
+and writes to the connection are ignored. The next time
+.PN IceProcessMessages
+is called it will return a status of
+.PN IceProcessMessagesIOError .
+At that time, the application should call
+.PN IceCloseConnection .
+.IP \(bu 5
+In the second, the IO error handler does call
+.PN IceCloseConnection ,
+and then uses the
+.PN longjmp
+call to get back to the application's main event loop.
+The
+.PN setjmp
+and
+.PN longjmp
+calls may not work properly on all platforms,
+and special care must be taken to avoid memory leaks.
+Therefore, this second model is less desirable.
+.LP
+Before the application I/O error handler is invoked, protocol libraries
+that were interested in being notified of I/O errors will have their
+.PN IceIOErrorProc
+handlers invoked. This handler is set up in the protocol registration
+functions (see
+.PN IceRegisterForProtocolSetup
+and
+.PN IceRegisterForProtocolReply )
+and could be used to clean up
+state specific to the protocol.
+.sp
+.LP
+.sM
+typedef void (*IceIOErrorProc)();
+.LP
+.FD 0
+void IOErrorProc\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.LP
+.eM
+Note that every
+.PN IceIOErrorProc
+callback must return. This is required
+because each active protocol must be notified of the broken connection,
+and the application IO error handler must be invoked afterwards.
+.NH 1
+Multi-Threading Support
+.XS
+\*(SN Multi-Threading Support
+.XE
+.LP
+To declare that multiple threads in an application will be using the ICE
+library, use
+.PN IceInitThreads .
+.LP
+.sM
+.FD 0
+Status IceInitThreads\^()
+.FN
+.LP
+.eM
+The
+.PN IceInitThreads
+function must be the first ICElib function a
+multi-threaded program calls. It must complete before any other ICElib
+call is made.
+.PN IceInitThreads
+returns a nonzero status if and only if it was able
+to initialize the threads package successfully.
+It is safe to call
+.PN IceInitThreads
+more than once, although the threads package will only be initialized once.
+.LP
+Protocol libraries layered on top of ICElib will have to lock critical
+sections of code that access an ICE connection (for example, when
+generating messages). Two calls, which are generally implemented as
+macros, are provided:
+.sM
+.FD 0
+IceLockConn\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+.sp
+IceUnlockConn\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection.
+.LP
+.eM
+.sp
+To keep an ICE connection locked across several ICElib calls, applications use
+.PN IceAppLockConn
+and
+.PN IceAppUnlockConn .
+.sM
+.FD 0
+void IceAppLockConn\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection to lock.
+.LP
+.eM
+The
+.PN IceAppLockConn
+function completely locks out other threads using the connection
+until
+.PN IceAppUnlockConn
+is called. Other threads attempting to use ICElib
+calls on the connection will block.
+If the program has not previously called
+.PN IceInitThreads ,
+.PN IceAppLockConn
+has no effect.
+.LP
+.sM
+.FD 0
+void IceAppUnlockConn\^(\^\fIice_conn\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection to unlock.
+.LP
+.eM
+The
+.PN IceAppUnlockConn
+function allows other threads to complete ICElib
+calls on the connection that were blocked by a previous call to
+.PN IceAppLockConn
+from this thread. If the program has not previously called
+.PN IceInitThreads ,
+.PN IceAppUnlockConn
+has no effect.
+.NH 1
+Miscellaneous Functions
+.XS
+\*(SN Miscellaneous Functions
+.XE
+.LP
+To allocate scratch space (for example, when generating
+messages with variable data), use
+.PN IceAllocScratch .
+Each ICE connection has one scratch space associated with it.
+The scratch space starts off as empty and grows as needed.
+The contents of the scratch space is not guaranteed to be preserved
+after any ICElib function is called.
+.LP
+.sM
+.FD 0
+char *IceAllocScratch\^(\^\fIice_conn\fP, \fIsize\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ unsigned long \fIsize\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIsize\fP 1i
+The number of bytes required.
+.LP
+.eM
+Note that the memory returned by
+.PN IceAllocScratch
+should not be freed by the caller.
+The ICE library will free the memory when the ICE connection is closed.
+.NH 1
+Acknowledgements
+.XS
+\*(SN Acknowledgements
+.XE
+.LP
+Thanks to Bob Scheifler for his thoughtful input on the design
+of the ICE library. Thanks also to Jordan Brown, Larry Cable, Donna Converse,
+Clive Feather, Stephen Gildea, Vania Joloboff, Kaleb Keithley,
+Stuart Marks, Hiro Miyamoto, Ralph Swick, Jim VanGilder, and Mike Wexler.
+.bp
+.XS
+Appendix A \- Authentication Utility Functions
+.XE
+.ce 10
+.sp 5
+\s+2\fBAppendix A\fP\s-2
+.sp
+\s+1\fBAuthentication Utility Functions\fP\s-1
+.ce 0
+.sp
+.LP
+As discussed in this document, the means by which authentication data
+is obtained by the ICE library (for
+.PN ConnectionSetup
+messages or
+.PN ProtocolSetup
+messages) is implementation-dependent.\(dg
+.FS \(dg
+The X Consortium's ICElib implementation assumes the presence of an
+ICE authority file.
+.FE
+.LP
+This appendix describes some utility functions that manipulate an
+ICE authority file. The authority file can be used to pass authentication
+data between clients.
+.LP
+The basic operations on the \&.ICEauthority file are:
+.IP \(bu 5
+Get file name
+.IP \(bu 5
+Lock
+.IP \(bu 5
+Unlock
+.IP \(bu 5
+Read entry
+.IP \(bu 5
+Write entry
+.IP \(bu 5
+Search for entry
+.LP
+These are fairly low-level operations, and it is expected that a program,
+like "iceauth", would
+exist to add, remove, and display entries in the file.
+.LP
+In order to use these utility functions, the
+.Pn < X11/ICE/ICEutil.h >
+header file must be included.
+.LP
+An entry in the \&.ICEauthority file is defined by the following data structure:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ char *protocol_name;
+ unsigned short protocol_data_length;
+ char *protocol_data;
+ char *network_id;
+ char *auth_name;
+ unsigned short auth_data_length;
+ char *auth_data;
+} IceAuthFileEntry;
+.De
+.LP
+.eM
+The protocol_name member is either ``ICE'' for connection setup authentication
+or the subprotocol name, such as ``XSMP''. For each entry, protocol specific
+data can be specified in the protocol_data member. This can be used
+to search for old entries that need to be removed from the file.
+.LP
+The network_id member is the network ID of the client accepting authentication
+(for example, the network ID of a session manager).
+A network ID has the following form:
+.TS
+lw(0.25i) lw(2.5i) lw(1i).
+ tcp/<hostname>:<portnumber> or
+ decnet/<hostname>::<objname> or
+ local/<hostname>:<path>
+.TE
+.LP
+The auth_name member is the name of the authentication method.
+The auth_data member is the actual authentication data,
+and the auth_data_length member is the number of bytes in the data.
+.sp
+.LP
+To obtain the default authorization file name, use
+.PN IceAuthFileName .
+.sM
+.FD 0
+char *IceAuthFileName\^()
+.FN
+.LP
+.eM
+If the ICEAUTHORITY environment variable if set, this value is returned.
+Otherwise, the default authorization file name is $HOME/\&.ICEauthority.
+This name is statically allocated and should not be freed.
+.LP
+To synchronously update the authorization file, the file must
+be locked with a call to
+.PN IceLockAuthFile .
+This function takes advantage of the fact that the
+.PN link
+system call will fail if the name of the new link already exists.
+.sM
+.FD 0
+int IceLockAuthFile\^(\^\fIfile_name\fP, \fIretries\fP\^, \fItimeout\fP\^, \fIdead\fP\^)
+.br
+ char *\fIfile_name\fP\^;
+.br
+ int \fIretries\fP\^;
+.br
+ int \fItimeout\fP\^;
+.br
+ long \fIdead\fP\^;
+.FN
+.IP \fIfile_name\fP 1i
+The authorization file to lock.
+.IP \fIretries\fP 1i
+The number of retries.
+.IP \fItimeout\fP 1i
+The number of seconds before each retry.
+.IP \fIdead\fP 1i
+If a lock already exists that is the specified dead seconds old,
+it is broken.
+A value of zero is used to unconditionally break an old lock.
+.LP
+.eM
+One of three values is returned:
+.IP \(bu 5
+.PN IceAuthLockSuccess
+\- the lock succeeded.
+.IP \(bu 5
+.PN IceAuthLockError
+\- a system error occurred, and
+.PN errno
+may prove useful.
+.IP \(bu 5
+.PN IceAuthLockTimeout
+\- the specified number of retries failed.
+.LP
+.sp
+To unlock an authorization file, use
+.PN IceUnlockAuthFile .
+.sM
+.FD 0
+void IceUnlockAuthFile\^(\^\fIfile_name\fP\^)
+.br
+ char *\fIfile_name\fP\^;
+.FN
+.IP \fIfile_name\fP 1i
+The authorization file to unlock.
+.LP
+.eM
+.LP
+To read the next entry in an authorization file, use
+.PN IceReadAuthFileEntry .
+.sM
+.FD 0
+IceAuthFileEntry *IceReadAuthFileEntry\^(\^\fIauth_file\fP\^)
+.br
+ FILE *\fIauth_file\fP\^;
+.FN
+.IP \fIauth_file\fP 1i
+The authorization file.
+.LP
+.eM
+Note that it is the responsibility of the application to open the file
+for reading before calling this function. If an error is encountered,
+or there are no more entries to read, NULL is returned.
+.LP
+Entries should be free with a call to
+.PN IceFreeAuthFileEntry .
+.LP
+.sp
+To write an entry in an authorization file, use
+.PN IceWriteAuthFileEntry .
+.sM
+.FD 0
+Status IceWriteAuthFileEntry\^(\^\fIauth_file\fP, \fIentry\fP\^)
+.br
+ FILE *\fIauth_file\fP\^;
+.br
+ IceAuthFileEntry *\fIentry\fP\^;
+.FN
+.IP \fIauth_file\fP 1i
+The authorization file.
+.IP \fIentry\fP 1i
+The entry to write.
+.LP
+.eM
+Note that it is the responsibility of the application to open the file
+for writing before calling this function. The function returns a nonzero
+status if the operation was successful.
+.LP
+.sp
+To search the default authorization file for an entry that matches a given
+protocol_name/network_id/auth_name tuple, use
+.PN IceGetAuthFileEntry .
+.sM
+.FD 0
+IceAuthFileEntry *IceGetAuthFileEntry\^(\^\fIprotocol_name\fP, \fInetwork_id\fP\^, \fIauth_name\fP\^)
+.br
+ char *\fIprotocol_name\fP\^;
+.br
+ char *\fInetwork_id\fP\^;
+.br
+ char *\fIauth_name\fP\^;
+.FN
+.IP \fIprotocol_name\fP 1i
+The name of the protocol to search on.
+.IP \fInetwork_id\fP 1i
+The network ID to search on.
+.IP \fIauth_name\fP 1i
+The authentication method to search on.
+.LP
+.eM
+If
+.PN IceGetAuthFileEntry
+fails to find such an entry, NULL is returned.
+.LP
+.sp
+To free an entry returned by
+.PN IceReadAuthFileEntry
+or
+.PN IceGetAuthFileEntry ,
+use
+.PN IceFreeAuthFileEntry .
+.sM
+.FD 0
+void IceFreeAuthFileEntry\^(\^\fIentry\fP\^)
+.br
+ IceAuthFileEntry *\fIentry\fP\^;
+.FN
+.IP \fIentry\fP 1i
+The entry to free.
+.LP
+.eM
+.bp
+.XS
+Appendix B \- MIT-MAGIC-COOKIE-1 Authentication
+.XE
+.ce 10
+.sp 5
+\s+2\fBAppendix B\fP\s-2
+.sp
+\s+1\fBMIT-MAGIC-COOKIE-1 Authentication\fP\s-1
+.ce 0
+.sp
+.LP
+The X Consortium's ICElib implementation supports a simple
+MIT-MAGIC-COOKIE-1 authentication scheme using the authority file utilities
+described in Appendix A.
+.LP
+In this model, an application, such as a session manager, obtains a
+magic cookie by calling
+.PN IceGenerateMagicCookie ,
+and then stores it in the user's local \&.ICEauthority file
+so that local clients can connect. In order to allow remote clients to
+connect, some remote execution mechanism should be used to store the
+magic cookie in the user's \&.ICEauthority file on a remote machine.
+.LP
+In addition to storing the magic cookie in the \&.ICEauthority file, the
+application needs to call the
+.PN IceSetPaAuthData
+function in order to store the magic cookie in memory. When it comes time
+for the MIT-MAGIC-COOKIE-1 authentication procedure to accept or reject the
+connection, it will compare the magic cookie presented by the requestor to
+the magic cookie in memory.
+.LP
+.sM
+.FD 0
+char *IceGenerateMagicCookie\^(\^\fIlength\fP\^)
+.br
+ int \fIlength\fP\^;
+.FN
+.IP \fIlength\fP 1i
+The desired length of the magic cookie.
+.LP
+.eM
+.LP
+The magic cookie returned will be null-terminated. If memory can not be
+allocated for the magic cookie, the function will return NULL.
+Otherwise, the magic cookie should be freed with a call to
+.PN free .
+.LP
+.sp
+To store the authentication data in memory, use
+.PN IceSetPaAuthData .
+Currently, this function is only used for MIT-MAGIC-COOKIE-1
+authentication, but it may be used for additional authentication
+methods in the future.
+.sM
+.FD 0
+void IceSetPaAuthData\^(\^\fInum_entries\fP, \fIentries\fP\^)
+.br
+ int \fInum_entries\fP\^;
+.br
+ IceAuthDataEntry *\fIentries\fP\^;
+.FN
+.IP \fInum_entries\fP 1i
+The number of authentication data entries.
+.IP \fIentries\fP 1i
+The list of authentication data entries.
+.LP
+.eM
+Each entry has associated with it a protocol name
+(for example, ``ICE'' for ICE connection setup authentication,
+``XSMP'' for session management authentication), a network ID for the
+``accepting'' client, an authentication name (for example, MIT-MAGIC-COOKIE-1),
+and authentication data. The ICE library
+will merge these entries with previously set entries, based on the
+(protocol_name, network_id, auth_name) tuple.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ char *protocol_name;
+ char *network_id;
+ char *auth_name;
+ unsigned short auth_data_length;
+ char *auth_data;
+} IceAuthDataEntry;
+.De
+.LP
+.eM
+.EH ''''
+.OH ''''
+.YZ 3
diff --git a/specs/ICE/ice.ms b/specs/ICE/ice.ms
new file mode 100644
index 0000000..144734a
--- /dev/null
+++ b/specs/ICE/ice.ms
@@ -0,0 +1,1877 @@
+.\" Use tbl macros.t ice.ms | troff -ms
+.\"
+.\" TODO:
+.\" Think about connector/listener originator/answerer terminology.
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.\"
+.\" Disable hyphenation. I hate it.
+.hy 0
+.de hy
+..
+.\" A couple of macros to standardize things and make them
+.\" easy to type.
+.de Ss \" Begin state - .Ss <state name>
+.KS
+.LP
+\fC\\$1\fP\^:
+.br
+..
+.de St \" Transition - .St "condition" message <new state>
+.RS
+\\$1
+.PN \\$2
+\(-> \fC\\$3\fP
+.RE
+..
+.de Se \" End state - .Se
+.LP
+.KE
+..
+.de Ms \" Start message header - .Ms messagename
+.sM
+.PN \\$1
+.RS
+..
+.de Mf \" Field in message - .Mf name; types follow on separate line(s)
+.\".br
+.IP "\fI\\$1\fP\^:" "\w'\fI\\$1\fP\^:'u+1"
+..
+.de Mc \" Field Continuation - .Mc; description follows on separate line(s)
+.br
+.\" \h'1i'
+..
+.de Ma \" Message addendum - .Ma title; contents follow
+.IP "\\$1:" "\w'\\$1:'u+1"
+..
+.de Me \" End of message header - .Me
+.RE
+.LP
+.eM
+..
+.de Es \" Start Encoding - .Es messagename
+.KS
+.LP
+.nf
+.PN \\$1
+.ta .2i .5i 2.0i
+..
+.de Ee \" End Encoding - .Ee
+.fi
+.LP
+.KE
+..
+.\"
+.\" --- cT --- centered title; centers $1, adds TOC entry unless $2 is "no"
+.\"
+.de cT
+\\& \" filler so that the following .sp really leaves a space
+.sp 1
+.ce 1
+\\s+1\\fB\\$1\\fP\\s-1
+.sp 1
+.if !'\\$2'no' \{\
+.XS \\n(PN
+\\$1
+.XE
+\}
+..
+.ps 10
+.nr PS 10
+\&
+.TL
+\s+2\fBInter-Client Exchange (ICE) Protocol\fP\s-2
+.sp
+Version 1.1
+.sp
+X Consortium Standard
+.sp
+X Version 11, Release 6.4
+
+
+
+.AU
+Robert Scheifler
+.AI
+X Consortium, Inc.
+.AU
+Jordan Brown
+.AI
+Quarterdeck Office Systems
+
+
+
+.AB
+.LP
+There are numerous possible protocols that can be used for communication
+among clients. They have many similarities and common needs, including
+authentication,
+version negotiation,
+data typing, and
+connection management. The
+.I
+Inter-Client Exchange
+.R
+(ICE) protocol is intended to provide a framework for building such
+protocols. Using ICE reduces the complexity of designing new protocols and
+allows the sharing of many aspects of the implementation.
+.AE
+.LP
+.bp
+\&
+.sp 8
+.LP
+.DS C
+.if n Copyright (c) 1993, 1994 X Consortium
+.if t Copyright \(co 1993, 1994 X Consortium
+.DE
+.sp 3
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 5
+X Window System is a trademark of X Consortium, Inc.
+.EH '\fBInter-Client Exchange Protocol\fP''\fBX11, Release 6.4\fP'
+.OH '\fBInter-Client Exchange Protocol\fP''\fBX11, Release 6.4\fP'
+.bp 1
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.nH 1 "Purpose and Goals"
+.LP
+In discussing a variety of protocols \(em existing, under development, and
+hypothetical \(em it was noted that they have many elements in common. Most
+protocols need mechanisms for authentication, for
+version negotiation,
+and for setting up and taking down connections. There are also
+cases where the same two parties need to talk to each other using multiple
+protocols. For example, an embedding relationship between two parties is
+likely to require the simultaneous use of session management, data transfer,
+focus negotiation, and command notification protocols. While these are
+logically separate protocols, it is desirable for them to share as many
+pieces of implementation as possible.
+.LP
+The
+.I
+Inter-Client Exchange
+.R
+(ICE) protocol provides a generic framework for building protocols on top of
+reliable, byte-stream transport connections. It provides basic mechanisms
+for setting up and shutting down connections, for performing authentication,
+for negotiating
+versions,
+and for reporting errors. The
+protocols running within an ICE connection are referred to here as
+.I subprotocols.
+ICE provides facilities for each subprotocol to do its own version
+negotiation, authentication, and error reporting. In addition, if two
+parties are communicating using several different subprotocols, ICE will
+allow them to share the same transport layer connection.
+.nH 1 "Overview of the protocol"
+.LP
+Through some mechanism outside ICE, two parties make themselves known to
+each other and agree that they would like to communicate using an ICE
+subprotocol. ICE assumes that this negotation includes some notion by which
+the parties will decide which is the \*Qoriginating\*U party and which is
+the \*Qanswering\*U party. The negotiation will also need to provide the
+originating party with a name or address of the answering party. Examples
+of mechanisms by which parties can make themselves known to each other are
+the X selection mechanism, environment
+variables, and shared files.
+.LP
+The originating party first determines whether there is an existing ICE
+connection between the two parties. If there is, it can re-use the existing
+connection and move directly to the setup of the subprotocol. If no ICE
+connection exists, the originating party will open a transport connection to
+the answering party and will start ICE connection setup.
+.LP
+The ICE connection setup dialog consists of three major parts: byte order
+exchange, authentication, and connection information exchange. The first
+message in each direction is a
+.PN ByteOrder
+message telling which byte order will be used by the sending party in
+messages that it sends. After that, the originating party sends a
+.PN ConnectionSetup
+message giving information about itself (vendor name and release number) and
+giving a list of ICE version numbers it is capable of supporting and a list
+of authentication schemes it is willing to accept. Authentication is
+optional. If no authentication is required, the answering party responds
+with a
+.PN ConnectionReply
+message giving information about itself, and the connection setup is complete.
+.LP
+If the connection setup is to be authenticated, the answering party will
+respond with an
+.PN AuthenticationRequired
+message instead of a
+.PN ConnectionReply
+message. The parties then exchange
+.PN AuthenticationReply
+and
+.PN AuthenticationNextPhase
+messages until authentication is complete, at which time the answering party
+finally sends its
+.PN ConnectionReply
+message.
+.LP
+Once an ICE connection is established (or an existing connection reused),
+the originating party starts subprotocol negotiation by sending a
+.PN ProtocolSetup
+message. This message gives the name of the subprotocol that the parties
+have agreed to use, along with the ICE major opcode that the originating
+party has assigned to that subprotocol. Authentication can also occur for
+the subprotocol, independently of authentication for the connection.
+Subprotocol authentication is optional. If there is no subprotocol
+authentication, the answering party responds with a
+.PN ProtocolReply
+message, giving the ICE major opcode that it has assigned
+for the subprotocol.
+.LP
+Subprotocols are authenticated independently of each other, because they may
+have differing security requirements. If there is authentication for this
+particular subprotocol, it takes place before the answering party emits the
+.PN ProtocolReply
+message, and it uses the
+.PN AuthenticationRequired ,
+.PN AuthenticationReply ,
+and
+.PN AuthenticationNextPhase
+messages, just as for the connection authentication. Only when subprotocol
+authentication is complete does the answering party send its
+.PN ProtocolReply
+message.
+.LP
+When a subprotocol has been set up and authenticated, the two parties can
+communicate using messages defined by the subprotocol. Each message has two
+opcodes: a major opcode and a minor opcode. Each party will send messages
+using the major opcode it has assigned in its
+.PN ProtocolSetup
+or
+.PN ProtocolReply
+message. These opcodes will, in general, not be the same. For a particular
+subprotocol, each party will need to keep track of two major opcodes: the
+major opcode it uses when it sends messages, and the major opcode it expects
+to see in messages it receives. The minor opcode values and semantics are
+defined by each individual subprotocol.
+.LP
+Each subprotocol will have one or more messages whose semantics are that the
+subprotocol is to be shut down. Whether this is done unilaterally or is
+performed through negotiation is defined by each subprotocol. Once a
+subprotocol is shut down, its major opcodes are removed from
+use; no further messages on this subprotocol should be sent until the
+opcode is reestablished with
+.PN ProtocolSetup .
+.LP
+ICE has a facility to negotiate the closing of the connection when there are
+no longer any active subprotocols. When either party decides that no
+subprotocols are active, it can send a
+.PN WantToClose
+message. If the other party agrees to close the connection, it can simply
+do so. If the other party wants to keep the connection open, it can
+indicate its desire by replying with a
+.PN NoClose
+message.
+.\" XXX - Note that it's likely that both parties will WantToClose at once.
+.LP
+It should be noted that the party that initiates the connection isn't
+necessarily the same as the one that initiates setting up a subprotocol.
+For example, suppose party A connects to party B. Party A will issue the
+.PN ConnectionSetup
+message and party B will respond with a
+.PN ConnectionReply
+message. (The authentication steps are omitted here for brevity.)
+Typically, party A will also issue the
+.PN ProtocolSetup
+message and expect a
+.PN ProtocolReply
+from party B. Once the connection is established, however, either party may
+initiate the negotiation of a subprotocol. Continuing this example, party B
+may decide that it needs to set up a subprotocol for communication with
+party A. Party B would issue the
+.PN ProtocolSetup
+message and expect a
+.PN ProtocolReply
+from party A.
+.nH 1 "Data Types"
+.LP
+ICE messages contain several types of data. Byte order is negotiated in
+the initial connection messages; in general data is sent in the sender's
+byte order and the receiver is required to swap it appropriately.
+In order to support 64-bit machines, ICE messages
+are padded to multiples of 8 bytes. All messages are designed so that
+fields are \*Qnaturally\*U aligned on 16-, 32-, and 64-bit boundaries.
+The following formula gives the number of bytes necessary
+to pad \fIE\fP bytes to the next multiple of \fIb\fP\^:
+.DS
+pad(\fIE\fP, \fIb\fP\^) = (\fIb\fP \- (\fIE\fP mod \fIb\fP\^)) mod \fIb\fP
+.DE
+.nH 2 "Primitive Types"
+.LP
+.TS H
+expand;
+lB lB
+l lw(3.5i).
+_
+.sp 6p
+Type Name Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+CARD8 8-bit unsigned integer
+CARD16 16-bit unsigned integer
+CARD32 32-bit unsigned integer
+BOOL T{
+.PN False
+or
+.PN True
+T}
+LPCE T{
+A character from the X Portable Character Set in Latin Portable Character
+Encoding
+T}
+.sp 6p
+_
+.TE
+.KS
+.nH 2 "Complex Types"
+.LP
+.TS H
+expand;
+lB lB
+l lw(3.5i).
+_
+.sp 6p
+Type Name Type
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+VERSION [Major, minor: CARD16]
+STRING LISTofLPCE
+.sp 6p
+_
+.TE
+.KE
+LISTof<type> denotes a counted collection of <type>. The exact encoding
+varies depending on the context; see the encoding section.
+.nH 1 "Message Format"
+.LP
+All ICE messages include the following information:
+.TS H
+expand;
+cB lB
+
+l lw(3.5i).
+_
+.sp 6p
+Field Type Description
+.sp 6p
+_
+.sp 6p
+.TH
+CARD8 protocol major opcode
+CARD8 protocol minor opcode
+CARD32 length of remaining data in 8-byte units
+.sp 6p
+_
+.TE
+.LP
+The fields are as follows:
+.LP
+Protocol major opcode
+.RS
+This specifies what subprotocol the message is intended for. Major opcode
+0 is reserved for ICE control messages. The major opcodes of other
+subprotocols are dynamically assigned and exchanged at protocol
+negotiation time.
+.RE
+.LP
+Protocol minor opcode
+.RS
+This specifies what protocol-specific operation is to be performed.
+Minor opcode 0 is reserved for Errors; other values are protocol-specific.
+.RE
+.LP
+Length of data in 8-byte units
+.RS
+This specifies the length of the information following the first 8 bytes.
+Each message-type has a different format, and will need to be separately
+length-checked against this value. As every data item has either an
+explicit length, or an implicit length, this can be easily accomplished.
+Messages that have too little or too much data indicate a serious
+protocol failure, and should result in a
+.PN BadLength
+error.
+.RE
+.nH 1 "Overall Protocol Description"
+.LP
+Every message sent in a given direction has an implicit sequence number,
+starting with 1. Sequence numbers are global to the connection; independent
+sequence numbers are \fInot\fP maintained for each protocol.
+.LP
+Messages of a given major-opcode (i.e., of a given protocol) must be
+responded to (if a response is called for) in order by the receiving party.
+Messages from different protocols can be responded to in arbitrary order.
+.LP
+Minor opcode 0 in every protocol is for reporting errors. At most one error
+is generated per request. If more than one error condition is encountered
+in processing a request, the choice of which error is returned is
+implementation-dependent.
+.Ms Error
+.Mf offending-minor-opcode
+CARD8
+.Mf severity
+.Pn { CanContinue ,
+.PN FatalToProtocol ,
+.PN FatalToConnection }
+.Mf sequence-number
+CARD32
+.Mf class
+CARD16
+.Mf value(s)
+<dependent on major/minor opcode and class>
+.Me
+This message is sent to report an error in response to a message
+from any protocol.
+The
+.PN Error
+message
+exists in all protocol major-opcode spaces; it
+is minor-opcode zero in every protocol. The minor opcode of the
+message that caused the error is reported, as well as the sequence
+number of that message.
+The severity indicates the sender's behavior following
+the identification of the error.
+.PN CanContinue
+indicates the sender is willing to accept additional messages for this
+protocol.
+.PN FatalToProcotol
+indicates the sender is unwilling to accept further messages for this
+protocol but that messages for other protocols may be accepted.
+.PN FatalToConnection
+indicates the sender is unwilling to accept any further
+messages for any protocols on the connection. The sender
+is required to conform to specified severity conditions
+for generic and ICE (major opcode 0) errors; see Sections 6.1
+and 6.2.
+The class defines the generic class of
+error. Classes are specified separately for each protocol (numeric
+values can mean different things in different protocols). The error
+values, if any, and their types vary with the specific error class
+for the protocol.
+.LP
+.\" XXX
+.\" (Asynchronous errors \(em errors not associated with a previous
+.\" message??? If so, offending-minor and sequence = 0.)
+.nH 1 "ICE Control Subprotocol \(em Major Opcode 0"
+.LP
+Each of the ICE control opcodes is described below.
+Most of the messages have additional information included beyond the
+description above. The additional information is appended to the message
+header and
+the length field is computed accordingly.
+.LP
+In the following message descriptions, \*QExpected errors\*U indicates
+errors that may occur in the normal course of events. Other errors
+(in particular
+.PN BadMajor ,
+.PN BadMinor ,
+.PN BadState ,
+.PN BadLength ,
+.PN BadValue ,
+.PN ProtocolDuplicate ,
+and
+.PN MajorOpcodeDuplicate )
+might occur, but generally indicate a serious implementation failure on
+the part of the
+errant
+peer.
+.Ms ByteOrder
+.Mf byte-order
+.Pn { MSBfirst ,
+.PN LSBfirst }
+.Me
+Both parties must send this message before sending any other,
+including errors. This message specifies the byte order that
+will be used on subsequent messages sent by this party.
+.LP
+Note: If the receiver detects an error in this message,
+it must be sure to send its own
+.PN ByteOrder
+message before sending the
+.PN Error .
+.Ms ConnectionSetup
+.Mf versions
+LISTofVERSION
+.Mf must-authenticate
+BOOL
+.Mf authentication-protocol-names
+LISTofSTRING
+.Mf vendor
+STRING
+.Mf release
+STRING
+.LP
+.Ma "Responses"
+.PN ConnectionReply ,
+.PN AuthenticationRequired .
+(See note)
+.Ma "Expected errors"
+.PN NoVersion ,
+.PN SetupFailed ,
+.PN NoAuthentication ,
+.PN AuthenticationRejected ,
+.Mc
+.PN AuthenticationFailed .
+.Me
+The party that initiates the connection
+(the
+one that does the \*Qconnect()\*U)
+must send this
+message
+as the second message (after
+.PN ByteOrder )
+on startup.
+.LP
+Versions gives a list, in decreasing order of preference, of the
+protocol versions this party is capable of speaking. This document
+specifies major version 1, minor version 0.
+.LP
+If must-authenticate is
+.PN True ,
+the initiating party demands authentication; the accepting party \fImust\fP
+pick an authentication scheme and use it. In this case, the only valid
+response is
+.PN AuthenticationRequired .
+.LP
+If must-authenticate is
+.PN False ,
+the accepting party may choose an authentication mechanism, use a
+host-address-based authentication scheme, or skip authentication.
+When must-authenticate is
+.PN False ,
+.PN ConnectionReply
+and
+.PN AuthenticationRequired
+are both valid responses. If a host-address-based authentication scheme is
+used,
+.PN AuthenticationRejected
+and
+.PN AuthenticationFailed
+errors are possible.
+.LP
+Authentication-protocol-names specifies a (possibly null, if
+must-authenticate is
+.PN False )
+list of authentication protocols the party is willing to perform. If
+must-authenticate is
+.PN True ,
+presumably the party will offer only authentication mechanisms
+allowing mutual authentication.
+.LP
+Vendor gives the name of the vendor of this ICE implementation.
+.LP
+Release gives the release identifier of this ICE implementation.
+.LP
+.Ms AuthenticationRequired
+.Mf authentication-protocol-index
+CARD8
+.Mf data
+<specific to authentication protocol>
+.LP
+.Ma "Response"
+.PN AuthenticationReply .
+.Ma "Expected errors"
+.PN AuthenticationRejected ,
+.PN AuthenticationFailed .
+.Me
+This message is sent in response to a
+.PN ConnectionSetup
+or
+.PN ProtocolSetup
+message to specify that authentication is to be done and what authentication
+mechanism is to be used.
+.LP
+The authentication protocol is specified by a 0-based index into the list
+of names given in the
+.PN ConnectionSetup
+or
+.PN ProtocolSetup .
+Any protocol-specific data that might be required is also sent.
+.Ms AuthenticationReply
+.Mf data
+<specific to authentication protocol>
+.LP
+.Ma "Responses"
+.PN AuthenticationNextPhase ,
+.PN ConnectionReply ,
+.PN ProtocolReply .
+.Ma "Expected errors"
+.PN AuthenticationRejected ,
+.PN AuthenticationFailed ,
+.PN SetupFailed .
+.Me
+This message is sent in response to an
+.PN AuthenticationRequired
+or
+.PN AuthenticationNextPhase
+message, to
+supply authentication data as defined by the authentication protocol
+being used.
+.LP
+Note that this message is sent by the party that initiated the current
+negotiation \(em the party that sent the
+.PN ConnectionSetup
+or
+.PN ProtocolSetup
+message.
+.LP
+.PN AuthenticationNextPhase
+indicates that more is to be done to complete the authentication.
+If the authentication is complete,
+.PN ConnectionReply
+is appropriate if the current authentication handshake is the result of a
+.PN ConnectionSetup ,
+and a
+.PN ProtocolReply
+is appropriate if it is the result of a
+.PN ProtocolSetup .
+.Ms AuthenticationNextPhase
+.Mf data
+<specific to authentication protocol>
+.LP
+.Ma "Response"
+.PN AuthenticationReply .
+.Ma "Expected errors"
+.PN AuthenticationRejected ,
+.PN AuthenticationFailed .
+.Me
+This message is sent in response to an
+.PN AuthenticationReply
+message, to supply authentication data as defined by the authentication
+protocol being used.
+.Ms ConnectionReply
+.Mf version-index
+CARD8
+.Mf vendor
+STRING
+.Mf release
+STRING
+.Me
+This message is sent in response to a
+.PN ConnectionSetup
+or
+.PN AuthenticationReply
+message to indicate that the authentication handshake is complete.
+.LP
+Version-index gives a 0-based index into the list of versions offered in
+the
+.PN ConnectionSetup
+message; it specifies the version of the ICE protocol that both parties
+should speak for the duration of the connection.
+.LP
+Vendor gives the name of the vendor of this ICE implementation.
+.LP
+Release gives the release identifier of this ICE implementation.
+.Ms ProtocolSetup
+.Mf protocol-name
+STRING
+.Mf major-opcode
+CARD8
+.Mf versions
+LISTofVERSION
+.Mf vendor
+STRING
+.Mf release
+STRING
+.Mf must-authenticate
+BOOL
+.Mf authentication-protocol-names
+LISTofSTRING
+.LP
+.Ma "Responses"
+.PN AuthenticationRequired ,
+.PN ProtocolReply .
+.Ma "Expected errors"
+.PN UnknownProtocol ,
+.PN NoVersion ,
+.PN SetupFailed ,
+.PN NoAuthentication ,
+.Mc
+.PN AuthenticationRejected ,
+.PN AuthenticationFailed .
+.Me
+This message is used to initiate negotiation of
+a protocol and establish any authentication
+specific to it.
+.LP
+Protocol-name gives the name of the protocol the party wishes
+to speak.
+.LP
+Major-opcode gives the opcode that the party will use in messages
+it sends.
+.LP
+Versions gives a list of version numbers, in decreasing order of
+preference, that the party is willing to speak.
+.LP
+Vendor and release are identification strings with semantics defined
+by the specific protocol being negotiated.
+.LP
+If must-authenticate is
+.PN True ,
+the initiating party demands authentication; the accepting party \fImust\fP
+pick an authentication scheme and use it. In this case, the only valid
+response is
+.PN AuthenticationRequired .
+.LP
+If must-authenticate is
+.PN False ,
+the accepting party may choose an authentication mechanism, use a
+host-address-based authentication scheme, or skip authentication.
+When must-authenticate is
+.PN False ,
+.PN ProtocolReply
+and
+.PN AuthenticationRequired
+are both valid responses. If a host-address-based authentication scheme is
+used,
+.PN AuthenticationRejected
+and
+.PN AuthenticationFailed
+errors are possible.
+.LP
+Authentication-protocol-names specifies a (possibly null, if
+must-authenticate is
+.PN False )
+list of authentication protocols the party is willing to perform. If
+must-authenticate is
+.PN True ,
+presumably the party will offer only authentication mechanisms
+allowing mutual authentication.
+.Ms ProtocolReply
+.Mf major-opcode
+CARD8
+.Mf version-index
+CARD8
+.Mf vendor
+STRING
+.Mf release
+STRING
+.Me
+This message is sent in response to a
+.PN ProtocolSetup
+or
+.PN AuthenticationReply
+message to indicate that the authentication handshake is complete.
+.LP
+Major-opcode gives the opcode that this party will use in
+messages that it sends.
+.LP
+Version-index gives a 0-based index into the list of versions offered in the
+.PN ProtocolSetup
+message; it specifies the version of the protocol that both
+parties should speak for the duration of the connection.
+.LP
+Vendor and release are identification strings with semantics defined
+by the specific protocol being negotiated.
+.LP
+.Ms Ping
+.Ma "Response"
+.PN PingReply .
+.Me
+This message is used to test if the connection is still functioning.
+.Ms PingReply
+.Me
+This message is sent in response to a
+.PN Ping
+message, indicating that the connection is still functioning.
+.Ms WantToClose
+.Ma "Responses"
+.PN WantToClose ,
+.PN NoClose ,
+.PN ProtocolSetup .
+.Me
+This message is used to initiate a possible close of the connection.
+The sending party has noticed that, as a result of mechanisms specific
+to each protocol, there are no active
+protocols
+left.
+There are
+four possible scenarios arising from this request:
+.IP (1) 5
+The receiving side noticed too, and has already sent a
+.PN WantToClose .
+On receiving a
+.PN WantToClose
+while already attempting to shut down, each party should simply close the
+connection.
+.IP (2)
+The receiving side hasn't noticed, but agrees. It closes
+the connection.
+.IP (3)
+The receiving side has a
+.PN ProtocolSetup
+\*Qin flight,\*U in which case it is to ignore
+.PN WantToClose
+and the party sending
+.PN WantToClose
+is to abandon the shutdown attempt when it receives the
+.PN ProtocolSetup .
+.IP (4)
+The receiving side wants the connection kept open for some
+reason not specified by the ICE protocol, in which case it
+sends
+.PN NoClose .
+.LP
+See the state transition diagram for additional information.
+.Ms NoClose
+.Me
+This message is sent in response to a
+.PN WantToClose
+message to indicate that the responding
+party does not want the connection closed at
+this time. The receiving party should not close the
+connection. Either party may again initiate
+.PN WantToClose
+at some future time.
+.nH 2 "Generic Error Classes"
+.LP
+These errors should be used by all protocols, as applicable.
+For ICE (major opcode 0),
+.PN FatalToProtocol
+should
+be interpreted as
+.PN FatalToConnection.
+.Ms BadMinor
+.Mf offending-minor-opcode
+<any>
+.Mf severity
+.PN FatalToProtocol
+or
+.PN CanContinue
+(protocol's discretion)
+.Mf values
+(none)
+.Me
+Received a message with an unknown minor opcode.
+.br
+.ne 9
+.Ms BadState
+.Mf offending-minor-opcode
+<any>
+.Mf severity
+.PN FatalToProtocol
+or
+.PN CanContinue
+(protocol's discretion)
+.Mf values
+(none)
+.Me
+Received a message with a valid minor opcode which is not appropriate
+for the current state of the protocol.
+.Ms BadLength
+.Mf offending-minor-opcode
+<any>
+.Mf severity
+.PN FatalToProtocol
+or
+.PN CanContinue
+(protocol's discretion)
+.Mf values
+(none)
+.Me
+Received a message with a bad length. The length of the message is
+longer or shorter than required to contain the data.
+.Ms BadValue
+.Mf offending-minor-opcode
+<any>
+.Mf severity
+.PN CanContinue
+.Mf values
+CARD32 Byte offset to offending value in offending message
+.Mc
+CARD32 Length of offending value
+.Mc
+<varies> Offending value
+.Me
+Received a message with a bad value specified.
+.nH 2 "ICE Error Classes"
+.LP
+These errors are all major opcode 0 errors.
+.Ms BadMajor
+.Mf offending-minor-opcode
+<any>
+.Mf severity
+.PN CanContinue
+.Mf values
+CARD8 Opcode
+.Me
+The opcode given is not one that has been registered.
+.Ms NoAuthentication
+.Mf offending-minor-opcode
+.PN ConnectionSetup ,
+.PN ProtocolSetup
+.Mf severity
+.PN ConnectionSetup
+\(->
+.PN FatalToConnection
+.Mc
+.PN ProtocolSetup
+\(->
+.PN FatalToProtocol
+.Mf values
+(none)
+.Me
+None of the authentication protocols offered are available.
+.Ms NoVersion
+.Mf offending-minor-opcode
+.PN ConnectionSetup ,
+.PN ProtocolSetup
+.Mf severity
+.PN ConnectionSetup
+\(->
+.PN FatalToConnection
+.Mc
+.PN ProtocolSetup
+\(->
+.PN FatalToProtocol
+.Mf values
+(none)
+.Me
+None of the protocol versions offered are available.
+.\" .Ms SetupFailed
+.sM
+.PN SetupFailed
+.RS
+.Mf offending-minor-opcode
+.PN ConnectionSetup ,
+.PN ProtocolSetup ,
+.PN AuthenticationReply
+.Mf severity
+.PN ConnectionSetup
+\(->
+.PN FatalToConnection
+.Mc
+.PN ProtocolSetup
+\(->
+.PN FatalToProtocol
+.Mc
+.PN AuthenticationReply
+\(->
+.PN FatalToConnection
+if authenticating a connection, otherwise
+.PN FatalToProtocol
+.Mf values
+STRING reason
+.Me
+The sending side is unable to accept the
+new connection or new protocol for a reason other than authentication
+failure. Typically this error will be a result of inability to allocate
+additional resources on the sending side. The reason field will give a
+human-interpretable message providing further detail on the type of failure.
+.br
+.Ms AuthenticationRejected
+.Mf offending-minor-opcode
+.PN AuthenticationReply ,
+.PN AuthenticationRequired ,
+.br
+.PN AuthenticationNextPhase
+.Mf severity
+.PN FatalToProtocol
+.Mf values
+STRING reason
+.Me
+Authentication rejected. The peer has failed to properly
+authenticate itself.
+The reason field will give a human-interpretable message
+providing further detail.
+.Ms AuthenticationFailed
+.Mf offending-minor-opcode
+.PN AuthenticationReply ,
+.PN AuthenticationRequired ,
+.br
+.PN AuthenticationNextPhase
+.Mf severity
+.PN FatalToProtocol
+.Mf values
+STRING reason
+.Me
+Authentication failed.
+.PN AuthenticationFailed
+does not imply that the authentication was rejected, as
+.PN AuthenticationRejected
+does. Instead it means that the sender was unable to complete
+the authentication for some other reason. (For instance, it
+may have been unable to contact an authentication server.)
+The reason field will give a human-interpretable message
+providing further detail.
+.br
+.ne 10
+.Ms ProtocolDuplicate
+.Mf offending-minor-opcode
+.PN ProtocolSetup
+.Mf severity
+.PN FatalToProtocol
+(but see note)
+.Mf values
+STRING protocol name
+.Me
+The protocol name was already registered. This is fatal to
+the \*Qnew\*U protocol being set up by
+.PN ProtocolSetup ,
+but it does not affect the existing registration.
+.Ms MajorOpcodeDuplicate
+.Mf offending-minor-opcode
+.PN ProtocolSetup
+.Mf severity
+.PN FatalToProtocol
+(but see note)
+.Mf values
+CARD8 opcode
+.Me
+The major opcode specified was already registered. This is
+fatal to the \*Qnew\*U protocol being set up by
+.PN ProtocolSetup ,
+but it does not affect the existing registration.
+.Ms UnknownProtocol
+.Mf offending-minor-opcode
+.PN ProtocolSetup
+.Mf severity
+.PN FatalToProtocol
+.Mf values
+STRING protocol name
+.Me
+The protocol specified is not supported.
+.nH 1 "State Diagrams"
+.LP
+Here are the state diagrams for the party that initiates the connection:
+.Ss start
+.\" .St "connect to other end, send" ConnectionSetup conn_wait
+.RS
+connect to other end, send
+.PN ByteOrder ,
+.PN ConnectionSetup
+\(-> \fCconn_wait\fP
+.RE
+.Se
+.Ss conn_wait
+.St "receive" ConnectionReply stasis
+.St "receive" AuthenticationRequired conn_auth1
+.St "receive" Error quit
+.St "receive <other>, send" Error quit
+.Se
+.Ss conn_auth1
+.St "if good auth data, send" AuthenticationReply conn_auth2
+.St "if bad auth data, send" Error quit
+.Se
+.Ss conn_auth2
+.St "receive" ConnectionReply stasis
+.St "receive" AuthenticationNextPhase conn_auth1
+.St "receive" Error quit
+.St "receive <other>, send" Error quit
+.Se
+.br
+.ne 22
+Here are top-level state transitions for the party that accepts connections.
+.Ss listener
+.\" .St "accept connection" "" init_wait
+.RS
+accept connection \(-> \fCinit_wait\fP
+.RE
+.Se
+.Ss init_wait
+.\" .St "receive ByteOrder, ConnectionSetup" auth_ask
+.RS
+receive
+.PN ByteOrder ,
+.PN ConnectionSetup
+\(-> \fCauth_ask\fP
+.RE
+.St "receive <other>, send" Error quit
+.Se
+.Ss auth_ask
+.\" .St "send ByteOrder, ConnectionReply" stasis
+.RS
+send
+.PN ByteOrder ,
+.PN ConnectionReply
+\(-> \fCstasis\fP
+.RE
+.St "send" AuthenticationRequired auth_wait
+.St "send" Error quit
+.Se
+.Ss auth_wait
+.St "receive" AuthenticationReply auth_check
+.St "receive <other>, send" Error quit
+.Se
+.Ss auth_check
+.St "if no more auth needed, send" ConnectionReply stasis
+.St "if good auth data, send" AuthenticationNextPhase auth_wait
+.St "if bad auth data, send" Error quit
+.Se
+.sp 1
+Here are the top-level state transitions for all parties after the initial
+connection establishment subprotocol.
+.LP
+Note: this is not quite the truth for branches out from stasis, in
+that multiple conversations can be interleaved on the connection.
+.Ss stasis
+.St "send" ProtocolSetup proto_wait
+.St "receive" ProtocolSetup proto_reply
+.St "send" Ping ping_wait
+.\" .St "receive Ping, send PingReply" stasis
+.RS
+receive
+.PN Ping ,
+send
+.PN PingReply
+\(-> \fCstasis\fP
+.RE
+.St "receive" WantToClose shutdown_attempt
+.St "receive <other>, send" Error stasis
+.St "all protocols shut down, send" WantToClose close_wait
+.Se
+.Ss proto_wait
+.St "receive" ProtocolReply stasis
+.St "receive" AuthenticationRequired give_auth1
+.\" .St "receive Error, give up on this protocol" stasis
+.RS
+receive
+.PN Error ,
+give up on this protocol \(-> \fCstasis\fP
+.RE
+.St "receive" WantToClose proto_wait
+.Se
+.Ss give_auth1
+.St "if good auth data, send" AuthenticationReply give_auth2
+.\" .St "if bad auth data, send Error, give up on this protocol" stasis
+.RS
+if bad auth data, send
+.PN Error ,
+give up on this protocol \(-> \fCstasis\fP
+.RE
+.St "receive" WantToClose give_auth1
+.Se
+.Ss give_auth2
+.St "receive" ProtocolReply stasis
+.St "receive" AuthenticationNextPhase give_auth1
+.\" .St "receive Error, give up on this protocol" stasis
+.RS
+receive
+.PN Error ,
+give up on this protocol \(-> \fCstasis\fP
+.RE
+.St "receive" WantToClose give_auth2
+.Se
+.Ss proto_reply
+.St "send" ProtocolReply stasis
+.St "send" AuthenticationRequired take_auth1
+.\" .St "send Error, give up on this protocol" stasis
+.RS
+send
+.PN Error ,
+give up on this protocol \(-> \fCstasis\fP
+.RE
+.Se
+.Ss take_auth1
+.St "receive" AuthenticationReply take_auth2
+.\" .St "receive Error, give up on this protocol" stasis
+.RS
+receive
+.PN Error ,
+give up on this protocol \(-> \fCstasis\fP
+.RE
+.Se
+.Ss take_auth2
+.\" .St "if good auth data" take_auth3
+.RS
+if good auth data \(-> \fCtake_auth3\fP
+.RE
+.\" .St "if bad auth data, send Error, give up on this protocol" stasis
+.RS
+if bad auth data, send
+.PN Error ,
+give up on this protocol \(-> \fCstasis\fP
+.RE
+.Se
+.Ss take_auth3
+.St "if no more auth needed, send" ProtocolReply stasis
+.St "if good auth data, send" AuthenticationNextPhase take_auth1
+.\" .St "if bad auth data, send Error, give up on this protocol" stasis
+.RS
+if bad auth data, send
+.PN Error ,
+give up on this protocol \(-> \fCstasis\fP
+.RE
+.Se
+.Ss ping_wait
+.St "receive" PingReply stasis
+.Se
+.Ss quit
+.RS
+\(-> close connection
+.RE
+.Se
+.sp 1
+Here are the state transitions for shutting down the connection:
+.Ss shutdown_attempt
+.St "if want to stay alive anyway, send" NoClose stasis
+.\" .St "else" quit
+.RS
+else \(-> \fCquit\fP
+.RE
+.Se
+.Ss close_wait
+.St "receive" ProtocolSetup proto_reply
+.St "receive" NoClose stasis
+.St "receive" WantToClose quit
+.\" .St "connection close" quit
+.RS
+connection close \(-> \fCquit\fP
+.RE
+.Se
+.nH 1 "Protocol Encoding"
+.LP
+In the encodings below, the first column is the number of bytes occupied.
+The second column is either the type (if the value is variable) or the
+actual value. The third column is the description of the value (e.g.,
+the parameter name). Receivers must ignore bytes that are designated
+as unused or pad bytes.
+.LP
+This document describes major version 1, minor version 0 of the ICE protocol.
+.LP
+LISTof<type> indicates some number of repetitions of <type>, with no
+additional padding. The number of repetitions must be specified elsewhere
+in the message.
+.KS
+.nH 2 "Primitive Types"
+.LP
+.TS H
+expand;
+lB lB lB
+l l lw(3.5i).
+_
+.sp 6p
+Type Name Length (bytes) Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+CARD8 1 8-bit unsigned integer
+CARD16 2 16-bit unsigned integer
+CARD32 4 32-bit unsigned integer
+LPCE 1 T{
+A character from the X Portable Character Set in Latin Portable Character
+Encoding
+T}
+.sp 6p
+_
+.TE
+.KE
+.KS
+.nH 2 "Enumerations"
+.LP
+.TS H
+expand;
+lB lB lB
+l l lw(3.5i).
+_
+.sp 6p
+Type Name Value Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+BOOL 0 T{
+.PN False
+T}
+ 1 T{
+.PN True
+T}
+.sp 6p
+_
+.TE
+.KE
+.KS
+.nH 2 "Compound Types"
+.LP
+.TS H
+expand;
+lB lB lB lB
+l l l lw(3.5i).
+_
+.sp 6p
+Type Name Length (bytes) Type Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+VERSION
+ 2 CARD16 Major version number
+ 2 CARD16 Minor version number
+STRING
+ 2 CARD16 length of string in bytes
+ n LISTofLPCE string
+ p unused, p = pad(n+2, 4)
+.sp 6p
+_
+.TE
+.KE
+.ne 6
+.nH 2 "ICE Minor opcodes"
+.LP
+.RS
+.TS
+lB cB
+l n.
+_
+.sp 6p
+Message Name Encoding
+.sp 6p
+_
+.sp 6p
+Error 0
+ByteOrder 1
+ConnectionSetup 2
+AuthenticationRequired 3
+AuthenticationReply 4
+AuthenticationNextPhase 5
+ConnectionReply 6
+ProtocolSetup 7
+ProtocolReply 8
+Ping 9
+PingReply 10
+WantToClose 11
+NoClose 12
+.sp 6p
+_
+.TE
+.RE
+.\" XXX - This is hokey, but I don't think you can nest .KS/.KE.
+.ne 16
+.nH 2 "Message Encoding"
+.LP
+.Es Error
+ 1 CARD8 major-opcode
+ 1 0 Error
+ 2 CARD16 class
+ 4 (n+p)/8+1 length
+ 1 CARD8 offending-minor-opcode
+ 1 severity:
+ 0 CanContinue
+ 1 FatalToProtocol
+ 2 FatalToConnection
+ 2 unused
+ 4 CARD32 sequence number of erroneous message
+ n <varies> value(s)
+ p pad, p = pad(n,8)
+.Ee
+.Es ByteOrder
+ 1 0 ICE
+ 1 1 ByteOrder
+ 1 byte-order:
+ 0 LSBfirst
+ 1 MSBfirst
+ 1 unused
+ 4 0 length
+.Ee
+.Es ConnectionSetup
+ 1 0 ICE
+ 1 2 ConnectionSetup
+ 1 CARD8 Number of versions offered
+ 1 CARD8 Number of authentication protocol names offered
+ 4 (i+j+k+m+p)/8+1 length
+ 1 BOOL must-authenticate
+ 7 unused
+ i STRING vendor
+ j STRING release
+ k LISTofSTRING authentication-protocol-names
+ m LISTofVERSION version-list
+ p unused, p = pad(i+j+k+m,8)
+.Ee
+.Es AuthenticationRequired
+ 1 0 ICE
+ 1 3 AuthenticationRequired
+ 1 CARD8 authentication-protocol-index
+ 1 unused
+ 4 (n+p)/8+1 length
+ 2 n length of authentication data
+ 6 unused
+ n <varies> data
+ p unused, p = pad(n,8)
+.Ee
+.Es AuthenticationReply
+ 1 0 ICE
+ 1 4 AuthenticationReply
+ 2 unused
+ 4 (n+p)/8+1 length
+ 2 n length of authentication data
+ 6 unused
+ n <varies> data
+ p unused, p = pad(n,8)
+.Ee
+.Es AuthenticationNextPhase
+ 1 0 ICE
+ 1 5 AuthenticationNextPhase
+ 2 unused
+ 4 (n+p)/8+1 length
+ 2 n length of authentication data
+ 6 unused
+ n <varies> data
+ p unused, p = pad(n,8)
+.Ee
+.Es ConnectionReply
+ 1 0 ICE
+ 1 6 ConnectionReply
+ 1 CARD8 version-index
+ 1 unused
+ 4 (i+j+p)/8 length
+ i STRING vendor
+ j STRING release
+ p unused, p = pad(i+j,8)
+.Ee
+.Es ProtocolSetup
+ 1 0 ICE
+ 1 7 ProtocolSetup
+ 1 CARD8 major-opcode
+ 1 BOOL must-authenticate
+ 4 (i+j+k+m+n+p)/8+1 length
+ 1 CARD8 Number of versions offered
+ 1 CARD8 Number of authentication protocol names offered
+ 6 unused
+ i STRING protocol-name
+ j STRING vendor
+ k STRING release
+ m LISTofSTRING authentication-protocol-names
+ n LISTofVERSION version-list
+ p unused, p = pad(i+j+k+m+n,8)
+.Ee
+.Es ProtocolReply
+ 1 0 ICE
+ 1 8 ProtocolReply
+ 1 CARD8 version-index
+ 1 CARD8 major-opcode
+ 4 (i+j+p)/8 length
+ i STRING vendor
+ j STRING release
+ p unused, p = pad(i+j, 8)
+.Ee
+.Es Ping
+ 1 0 ICE
+ 1 9 Ping
+ 2 0 unused
+ 4 0 length
+.Ee
+.Es PingReply
+ 1 0 ICE
+ 1 10 PingReply
+ 2 0 unused
+ 4 0 length
+.Ee
+.Es WantToClose
+ 1 0 ICE
+ 1 11 WantToClose
+ 2 0 unused
+ 4 0 length
+.Ee
+.Es NoClose
+ 1 0 ICE
+ 1 12 NoClose
+ 2 0 unused
+ 4 0 length
+.Ee
+.nH 2 "Error Class Encoding"
+.LP
+Generic errors have classes in the range 0x8000\-0xFFFF, and
+subprotocol-specific errors are in the range 0x0000\-0x7FFF.
+.nH 3 "Generic Error Class Encoding"
+.LP
+.TS
+lB cB
+l n.
+_
+.sp 6p
+Class Encoding
+.sp 6p
+_
+.sp 6p
+BadMinor 0x8000
+BadState 0x8001
+BadLength 0x8002
+BadValue 0x8003
+.sp 6p
+_
+.TE
+.nH 3 "ICE-specific Error Class Encoding"
+.LP
+.TS
+lB cB
+l n.
+_
+.sp 6p
+Class Encoding
+.sp 6p
+_
+.sp 6p
+BadMajor 0
+NoAuthentication 1
+NoVersion 2
+SetupFailed 3
+AuthenticationRejected 4
+AuthenticationFailed 5
+ProtocolDuplicate 6
+MajorOpcodeDuplicate 7
+UnknownProtocol 8
+.sp 6p
+_
+.TE
+.bp
+.\" Set registers to number the appendixes A.1, B.1, C.1, ...
+.nr H1 0
+.af H1 A
+.cT "Appendix A" no
+.nH 1 "Modification History"
+.nH 2 "Release 6 to Release 6.1"
+.LP
+Release 6.1 added the ICE X rendezvous protocol (Appendix B) and
+updated the document version to 1.1.
+.nH 2 "Release 6.1 to Release 6.3"
+.LP
+Release 6.3 added the listen on well known ports feature.
+.bp
+.cT "Appendix B" no
+.nH 1 "ICE X Rendezvous Protocol"
+.nH 2 "Introduction"
+.LP
+The ICE X rendezvous protocol is designed to answer the need posed
+in Section 2 for one mechanism by which two clients interested in
+communicating via ICE are able to exchange the necessary information.
+This protocol is appropriate for any two ICE clients who also have X
+connections to the same X server.
+.nH 2 "Overview of ICE X Rendezvous"
+.LP
+The ICE X Rendezvous Mechanism requires clients willing to act as ICE
+originating parties to pre-register the ICE subprotocols they support in an
+ICE_PROTOCOLS property on their top-level window. Clients willing to
+act as ICE answering parties then send an ICE_PROTOCOLS X
+.PN ClientMessage
+event to the ICE originating parties. This
+.PN ClientMessage
+event identifies
+the ICE network IDs of the ICE answering party as well as the ICE
+subprotocol it wishes to speak. Upon receipt of this message the ICE
+originating party uses the information to establish an ICE connection
+with the ICE answering party.
+.nH 2 "Registering Known Protocols"
+.LP
+Clients willing to act as ICE originating parties preregister
+the ICE subprotocols they support in a list of atoms held by an
+ICE_PROTOCOLS property on their top-level window. The name of each
+atom listed in ICE_PROTOCOLS must be of the form
+ICE_INITIATE_\fIpname\fP where \fIpname\fP is the name of the ICE
+subprotocol the ICE originating party is willing to speak, as would be
+specified in an ICE
+.PN ProtocolSetup
+message.
+.LP
+Clients with an ICE_INITIATE_\fIpname\fP atom in the ICE_PROTOCOLS property
+on their top-level windows must respond to
+.PN ClientMessage
+events of
+type ICE_PROTOCOLS specifying ICE_INITIATE_\fIpname\fP. If a client does not
+want to respond to these client message events, it should
+remove the ICE_INITIATE_\fIpname\fP atom from its ICE_PROTOCOLS property
+or remove the ICE_PROTOCOLS property entirely.
+.nH 2 "Initiating the Rendezvous"
+.LP
+To initiate the rendezvous a client acting as an ICE answering
+party sends an X
+.PN ClientMessage
+event of type ICE_PROTOCOLS to an ICE
+originating party. This ICE_PROTOCOLS client message contains the
+information the ICE originating party needs to identify the ICE
+subprotocol the two parties will use as well as the ICE network
+identification string of the ICE answering party.
+.LP
+Before the ICE answering party sends the client message event it must
+define a text property on one of its windows. This text property
+contains the ICE answering party's ICE network identification string
+and will be used by ICE originating parties to determine the ICE
+answering party's list of ICE network IDs.
+.LP
+The property name will normally be ICE_NETWORK_IDS, but may be any
+name of the ICE answering party's choosing. The format for this text
+property is as follows:
+.ne 7
+.TS
+lB lB
+lw(1.25i) lw(4i) .
+_
+.sp 6p
+Field Value
+.sp 6p
+_
+.sp 6p
+type XA_STRING
+format 8
+value comma-separated list of ICE network IDs
+.sp 6p
+_
+.TE
+.LP
+Once the ICE answering party has established this text property on one
+of its windows, it initiates the rendezvous by sending an
+ICE_PROTOCOLS
+.PN ClientMessage
+event to an ICE originating party's
+top-level window. This event has the following format
+and must only be sent to windows that have pre-registered the ICE
+subprotocol in an ICE_PROTOCOLS property on their top-level window.
+.ne 13
+.TS
+lB lB
+lw(1.25i) lw(4i) .
+_
+.sp 6p
+Field Value
+.sp 6p
+_
+.sp 6p
+message_type Atom = "ICE_PROTOCOLS"
+format 32
+data.l[0] Atom identifying the ICE subprotocol to speak
+data.l[1] Timestamp
+data.l[2] T{
+ICE answering party's window ID with
+ICE network IDs text property
+T}
+data.l[3] T{
+Atom naming text property containing the ICE
+answering party's ICE network IDs
+T}
+data.l[4] Reserved. Must be 0.
+.sp 6p
+_
+.TE
+The name of the atom in data.l[0] must be of the form
+ICE_INITIATE_\fIpname\fP, where \fIpname\fP is the name of the ICE
+subprotocol the ICE answering party wishes to speak.
+.LP
+When an ICE originating party receives a
+.PN ClientMessage
+event of type
+ICE_PROTOCOLS specifying ICE_INITIATE_\fIpname\fP it can initiate an ICE
+connection with the ICE answering party.
+To open this connection the client retrieves the ICE answering
+party's ICE network IDs from the window specified in data.l[2] using
+the text property specified in data.l[3].
+.LP
+If the connection attempt fails for any reason, the client must
+respond to the client message event by sending a return
+.PN ClientMessage
+event to the window specified in data.l[2]. This return
+event has the following format:
+.ne 13
+.TS
+lB lB
+lw(1.25i) lw(4i) .
+_
+.sp 6p
+Field Value
+.sp 6p
+_
+.sp 6p
+message_type Atom = "ICE_INITIATE_FAILED"
+format 32
+data.l[0] Atom identifying the ICE subprotocol requested
+data.l[1] Timestamp
+data.l[2] T{
+Initiating party's window ID
+(holding ICE_PROTOCOLS)
+T}
+data.l[3] int: reason for failure
+data.l[4] Reserved, must be 0
+.sp 6p
+_
+.TE
+The values of data.l[0] and data.l[1] are copied directly from the
+client message event the client received.
+.LP
+The value in data.l[2] is
+the id of the window to which the ICE_PROTOCOLS.ICE_INITIATE_\fIpname\fP
+client message event was sent.
+.LP
+Data.l[3] has one of the following values:
+.LP
+.ne 21
+.TS
+lB cBw(0.6i) lB
+l n lw(4i) .
+_
+.sp 6p
+Value Encoding Description
+.sp 6p
+_
+.sp 6p
+T{
+.PN OpenFailed
+T} 1 T{
+The client was unable to open the connection
+(e.g. a call to IceOpenConnection() failed). If the
+client is able to distinguish authentication or
+authorization errors from general errors, then
+the preferred reply is
+.PN AuthenticationFailed
+for authorization errors.
+T}
+.sp 4p
+T{
+.PN AuthenticationFailed
+T} 2 T{
+Authentication or authorization of the
+connection or protocol setup was refused.
+This reply will be given only if the client is
+able to distinguish it from
+.PN OpenFailed ;
+otherwise
+.PN OpenFailed
+will be returned.
+T}
+.sp 4p
+T{
+.PN SetupFailed
+T} 3 T{
+The client was unable to initiate the specified
+protocol on the connection (e.g. a call to
+IceProtocolSetup() failed).
+T}
+.sp 4p
+T{
+.PN UnknownProtocol
+T} 4 T{
+The client does not recognize the requested
+protocol. (This represents a semantic error
+on the part of the answering party.)
+T}
+.sp 4p
+T{
+.PN Refused
+T} 5 T{
+The client was in the process of removing
+ICE_INITIATE_\fIpname\fP from its ICE_PROTOCOLS list
+when the client message was sent; the client no
+longer is willing to establish the specified ICE
+communication.
+T}
+.sp 6p
+_
+.TE
+.sp
+.NT "Advice to Implementors"
+Clients willing to act as ICE originating parties must update the
+ICE_PROTOCOLS property on their top-level windows to include the
+ICE_INITIATE_\fIpname\fP atom(s) identifying the ICE subprotocols they
+speak. The method a client uses to update the ICE_PROTOCOLS property
+to include ICE_INITIATE_\fIpname\fP atoms is implementation dependent, but
+the client must ensure the integrity of the list to prevent the
+accidental omission of any atoms previously in the list.
+.LP
+When setting up the ICE network IDs text property on one of its
+windows, the ICE answering party can determine its comma-separated
+list of ICE network IDs by calling IceComposeNetworkIdList() after
+making a call to IceListenForConnections(). The method an ICE
+answering party uses to find the top-level windows of clients willing
+to act as ICE originating parties is dependent upon the nature of the
+answering party. Some may wish to use the approach of requiring the
+user to click on a client's window. Others wishing to find existing
+clients without requiring user interaction might use something similar
+to the XQueryTree() method used by several freely-available
+applications. In order for the ICE answering party to become
+automatically aware of new clients willing to originate ICE
+connections, the ICE answering party might register for
+SubstructureNotify events on the root window of the display. When it
+receives a SubstructureNotify event, the ICE answering party can check
+to see if it was the result of the creation of a new client top-level
+window with an ICE_PROTOCOLS property.
+.LP
+In any case, before attempting to use this ICE X Rendezvous Mechanism
+ICE answering parties wishing to speak ICE subprotocol \fIpname\fP should
+check for the ICE_INITIATE_\fIpname\fP atom in the ICE_PROTOCOLS property on
+a client's top-level window. A client that does not include an
+ICE_INITIATE_\fIpname\fP atom in a ICE_PROTOCOLS property on some top-level
+window should be assumed to ignore
+.PN ClientMessage
+events of type
+ICE_PROTOCOLS specifying ICE_INITIATE_\fIpname\fP for ICE subprotocol
+\fIpname\fP.
+.NE
+.nH 2 "ICE Subprotocol Versioning"
+.LP
+Although the version of the ICE subprotocol could be passed in the
+client message event, ICE provides more a flexible version negotiation
+mechanism than will fit within a single
+.PN ClientMessage
+event. Because
+of this, ICE subprotocol versioning is handled within the ICE protocol
+setup phase.
+.NT Example
+Clients wish to communicate with each other via an ICE subprotocol
+known as "RAP V1.0". In RAP terminology one party, the "agent",
+communicates with other RAP-enabled applications on demand. The
+user may direct the agent to establish communication with a specific
+application by clicking on the application's window, or the agent may
+watch for new application windows to be created and automatically
+establish communication.
+.LP
+During startup the ICE answering party (the agent) first calls
+IceRegisterForProtocolReply() with a list of
+the versions (i.e., 1.0) of RAP the agent can speak. The answering
+party then calls IceListenForConnections() followed by
+IceComposeNetworkIdList() and stores the resulting ICE network IDs
+string in a text property on one of its windows.
+.LP
+When the answering party (agent) finds a client with which it wishes to
+speak, it checks to see if the ICE_INITIATE_RAP atom is in the ICE_PROTOCOLS
+property on the client's top-level window. If it is present the agent
+sends the client's top-level window an ICE_PROTOCOLS client
+message event as described above. When the client receives the client
+message event and is willing to originate an ICE connection using RAP,
+it performs an IceRegisterForProtocolSetup() with a list of the
+versions of RAP the client can speak. The client then retrieves
+the agent's ICE network ID from the property and window specified by
+the agent in the client message event and calls IceOpenConnection().
+After this call succeeds the client calls IceProtocolSetup() specifying
+the RAP protocol. During this
+process, ICE calls the RAP protocol routines that handle the version
+negotiation.
+.LP
+Note that it is not necessary for purposes of this rendezvous that
+the client application call any ICElib functions prior to receipt
+of the client message event.
+.NE
+.YZ 1
diff --git a/specs/PM/PM_spec b/specs/PM/PM_spec
new file mode 100644
index 0000000..b371d46
--- /dev/null
+++ b/specs/PM/PM_spec
@@ -0,0 +1,153 @@
+ Proxy Management Protocol
+ Draft Version 1.0
+ Ralph Mor, X Consortium
+
+
+The Proxy Management Protocol is an ICE based protocol that provides a way
+for application servers to easily locate proxy services available to them.
+
+Typically, a service called a "proxy manager" is responsible for resolving
+requests for proxy services, starting new proxies when appropriate, and
+keeping track of all of the available proxy services. The proxy manager
+strives to reuse existing proxies whenever possible.
+
+In order to request a proxy service, the GET_PROXY_ADDR message is sent to
+the proxy manager. The proxy manager will in turn forward this message to
+a proxy that it thinks can satisfy the request.
+
+GET_PROXY_ADDR
+ proxy-service : STRING
+ server-address : STRING
+ host-address : STRING
+ options : STRING
+ auth-data-len : CARD16
+ auth-name : STRING or None
+ auth-data : LISTofCARD8 or None
+
+ -->
+
+ status : CARD8
+ proxy-address : STRING
+ failure-reason : STRING
+
+
+proxy-service is the name of the proxy service to be requested, for example
+"LBX". proxy-service is a case insensitive string.
+
+server-address is the network address of the target server. The format of
+the address is specific to proxy-service. For example, for a proxy service
+of "LBX", the address would be an X display address (e.g, "wkstn.x.org:0").
+
+host-address is the network address of the host on which the proxied
+application will run. This information might be used by the proxy to
+restrict access to a specific host.
+
+options are proxy specific options that will be passed to the proxy. The
+details of these options are not specified here. Their syntax and
+semantics are defined by each proxy service.
+
+If auth-data-len is nonzero, then auth-name and auth-data contain
+authentication or authorization information that should be passed to
+the proxy. The proxy will typically use this to authenticate and
+authorize itself to the target server. The details of how the
+auth fields are used are specific to each proxy service.
+
+
+After sending GET_PROXY_ADDR the proxy manager expects a reply from
+the proxy. The status field of the reply indicates if the request can
+be satisfied.
+
+If status is Success, proxy-address will contain the network address of the
+proxy willing to handle this request. The format of the proxy address is
+specific to the proxy service being used. For example, for a proxy service
+of "LBX", the proxy address would be the X display address of the proxy
+(e.g, "gateway.x.org:63"). The proxy manager will forward the successful
+GET_PROXY_ADDR reply to whomever requested the proxy service.
+
+If status is Unable, the proxy is not able to satisfy the request but
+it believes some other proxy might be able to do so. Proxy-address is
+the empty string and failure-reason indicates the reason for failure.
+The proxy manager may choose to forward the original GET_PROXY_ADDR to
+another already running proxy, or it may choose to start up a new
+proxy. In the event that the proxy manager can not find or start a
+proxy, it will send a GET_PROXY_ADDR reply (with status Failure and an
+appropriate failure-reason) to whomever requested the proxy service.
+
+If status is Failure, the proxy is not able to satisfy the request and
+in addition is informing the requester that the request is invalid in
+some way and should not be retried.
+
+
+If the proxy manager starts up a new proxy, the proxy manager will
+need an indication from the proxy that it is ready to accept
+requests. The proxy is required to send a START_PROXY message to the
+proxy manager to identify itself and signal its readiness to receive
+requests.
+
+START_PROXY
+ proxy-service : STRING (name of proxy service, e.g. "LBX")
+
+
+When the proxy manager receives the START_PROXY message from the
+proxy it checks that the proxy-service is the one that it's expecting.
+If the proxy-service is incorrect, an IceBadValue error will be sent
+to the proxy. Otherwise, the proxy manager will forward the original
+GET_PROXY_ADDR request to the proxy and the proxy will respond to the
+GET_PROXY_ADDR request in the same way as discussed above.
+
+
+Protocol
+--------
+
+ICE protocol name is "PROXY_MANAGEMENT".
+The major opcode is assigned at run-time by ICE.
+
+
+Types
+-----
+
+STRING
+ 2 CARD16 length
+ n LISTofCARD8 the string
+ p p = pad(2+n,8)
+
+
+
+Encoding
+--------
+
+GET_PROXY_ADDR
+
+ 1 ? PROXY_MANAGEMENT
+ 1 1 opcode
+ 2 n auth-data-len (in bytes)
+ 4 (a+b+c+d+e+n+p)/8 length of remaining data in 8-byte units
+ a STRING proxy-service
+ b STRING server-address
+ c STRING host-address
+ d STRING options
+ e STRING auth-name (if auth-data-len > 0)
+ n LISTofCARD8 auth-data (if auth-data-len > 0)
+ p unused, p=pad(n,8)
+
+GET_PROXY_ADDR_REPLY
+
+ 1 ? PROXY_MANAGEMENT
+ 1 2 opcode
+ 1 CARD8 status
+ 0 Unable
+ 1 Success
+ 2 Failure
+ 1 unused
+ 4 (a+b)/8 length of remaining data in 8-byte units
+ a STRING proxy-address
+ b STRING failure-reason
+
+
+START_PROXY
+
+ 1 ? PROXY_MANAGEMENT
+ 1 3 opcode
+ 2 unused
+ 4 a/8 length of remaining data in 8-byte units
+ a STRING proxy-service
diff --git a/specs/RX/RX.mif b/specs/RX/RX.mif
new file mode 100644
index 0000000..530355e
--- /dev/null
+++ b/specs/RX/RX.mif
@@ -0,0 +1,6185 @@
+<MIFFile 4.00> # Generated by FrameMaker xm4.0.3P1a
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+# Element Definitions
+# Elements
+#
+<Units Uin >
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CShown >
+ <CStyle CUnderline >
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `AbstractTitle'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 50.0 pt>
+ <PgfSpAfter 9.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 5.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Author'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BibEntry'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `[<n=1\>] '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BibEntry+'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `[<n+\>] '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Indented'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 14.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Centered'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Code'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage NoLanguage >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Comment'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `Single Line'>
+ <PgfBotSeparator `Single Line'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CopyrightNotice'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CopyrightTitle'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 28.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 14.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle RunIn >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Indented'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 5.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented2'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Indented2'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage NoLanguage >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Section'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 20.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Subsection'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n\>.<n+\> '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `T:Table <n+\>: '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 24.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 6.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+> # end of PgfCatalog
+<ElementDefCatalog
+> # end of ElementDefCatalog
+<FontCatalog
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FAngle `Italic'>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Left >
+ <TblPlacement Anywhere >
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement InHeader >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center >
+ <TblPlacement Anywhere >
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `Thin'>
+ <TblRRuling `'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement InHeader >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[Title]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[Heading1]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `BibRef'>
+ <XRefDef ` <$paranum\>'>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 137 28 612 868 >
+ <DWindowRect 113 2 656 971 >
+ <DViewScale 120.0%>
+ <DNextUnique 109376>
+ <DPageSize 8.5" 11.0">
+ <DStartPage 1>
+ <DPageNumStyle Arabic >
+ <DPagePointStyle Arabic >
+ <DTwoSides No >
+ <DParity FirstRight >
+ <DFrozenPages No >
+ <DPageRounding DeleteEmptyPages >
+ <DMaxInterLine 2.0 pt>
+ <DMaxInterPgf 6.0 pt>
+ <DFNoteMaxH 4.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage >
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic >
+ <DFNoteAnchorPos FNSuperscript >
+ <DFNoteNumberPos FNBaseline >
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `.\\t'>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha >
+ <DTblFNoteAnchorPos FNSuperscript >
+ <DTblFNoteNumberPos FNBaseline >
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `.\\t'>
+ <DLinebreakChars `/ - \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.25">
+ <DChBarWidth 2.0 pt>
+ <DChBarPosition LeftOfCol >
+ <DChBarColor `Black'>
+ <DAutoChBars Yes >
+ <DShowAllConditions Yes >
+ <DDisplayOverrides Yes >
+ <DViewOnly No >
+ <DViewOnlyXRef GotoBehavior >
+ <DViewOnlySelect Yes >
+ <DViewOnlyWinBorders Yes >
+ <DViewOnlyWinMenubar Yes >
+ <DViewOnlyWinPopup Yes >
+ <DViewOnlyWinPalette No >
+ <DGridOn No >
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.25>
+ <DRulersOn Yes >
+ <DFullRulers Yes >
+ <DGraphicsOff No >
+ <DCurrentView 1>
+ <DBordersOn Yes >
+ <DSymbolsOn Yes >
+ <DElementBordersOn No >
+ <DSmartQuotesOn Yes >
+ <DSmartSpacesOn Yes >
+ <DLanguage USEnglish >
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No >
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DElementCatalogScope Strict >
+ <DPrintSkipBlankPages Yes >
+ <DPrintSeparations No >
+> # end of Document
+<BookComponent
+ <FileName `<c\>RXTOC.doc'>
+ <FileNameSuffix `TOC'>
+ <DeriveLinks No >
+ <DeriveType TOC >
+ <DeriveTag `Heading1'>
+ <DeriveTag `Heading2'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+<OKWord `<n\>*<m\>element'>
+<OKWord `ACTION=http:'>
+<OKWord `ALT=SimCity'>
+<OKWord `Backus'>
+<OKWord `Berners'>
+<OKWord `Hors'>
+<OKWord `Naur'>
+<OKWord `Netscape'>
+<OKWord `SRC=http:'>
+<OKWord `URLs'>
+<OKWord `elem'>
+<OKWord `firewall'>
+<OKWord `foo'>
+<OKWord `name=value'>
+<OKWord `object#param'>
+<OKWord `xauth'>
+<OKWord `\xd2 *\xd3 '>
+<OKWord `\xd2 <\xd2 '>
+<OKWord `\xd2 \>\xd3 '>
+<OKWord `\xd2 \>\xd3 )'>
+> # end of Dictionary
+<AFrames
+> # end of AFrames
+<Page
+ <Unique 94657>
+ <PageType LeftMasterPage >
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 1>
+ <Unique 105690>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 2>
+ <Unique 105688>
+ <Overprint No >
+ <ShapeRect 1.0" 10.40741" 6.5" 0.13889">
+ <BRect 1.0" 10.40741" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 3>
+ <Unique 105680>
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 94658>
+ <PageType RightMasterPage >
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 4>
+ <Unique 105686>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 5>
+ <Unique 105684>
+ <Overprint No >
+ <ShapeRect 1.0" 10.40741" 6.5" 0.13889">
+ <BRect 1.0" 10.40741" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 6>
+ <Unique 105682>
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106792>
+ <PageType OtherMasterPage >
+ <PageTag `First'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 7>
+ <Unique 106793>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 8>
+ <Unique 106794>
+ <Overprint No >
+ <ShapeRect 1.0" 10.40741" 6.5" 0.13889">
+ <BRect 1.0" 10.40741" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 9>
+ <Unique 106795>
+ <Overprint No >
+ <ShapeRect 1.0" 2.0" 6.5" 8.0">
+ <BRect 1.0" 2.0" 6.5" 8.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 94659>
+ <PageType ReferencePage >
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 94660>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 94661>
+ <Overprint No >
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 94662>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored >
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 105661>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square >
+ <TailCap Square >
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 94664>
+ <Overprint No >
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 94665>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored >
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 105665>
+ <Pen 0>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 105667>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 94668>
+ <Pen 15>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored >
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 105670>
+ <Pen 0>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 94670>
+ <Pen 15>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored >
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 94671>
+ <Overprint No >
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `TableFootnote'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 996720>
+ <PageType BodyPage >
+ <PageNum `1'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `First'>
+ <TextRect
+ <ID 10>
+ <Unique 105692>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 2.0" 6.5" 8.0">
+ <BRect 1.0" 2.0" 6.5" 8.0">
+ <TRNext 11>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105983>
+ <PageType BodyPage >
+ <PageNum `2'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 11>
+ <Unique 105984>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 12>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105986>
+ <PageType BodyPage >
+ <PageNum `3'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 12>
+ <Unique 105987>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 13>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105989>
+ <PageType BodyPage >
+ <PageNum `4'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 13>
+ <Unique 105990>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 14>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105992>
+ <PageType BodyPage >
+ <PageNum `5'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 14>
+ <Unique 105993>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 15>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105995>
+ <PageType BodyPage >
+ <PageNum `6'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 15>
+ <Unique 105996>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 16>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 107013>
+ <PageType BodyPage >
+ <PageNum `7'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 16>
+ <Unique 107014>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 17>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 107096>
+ <PageType BodyPage >
+ <PageNum `8'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 17>
+ <Unique 107097>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 18>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 108098>
+ <PageType BodyPage >
+ <PageNum `9'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 18>
+ <Unique 108099>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 19>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 109025>
+ <PageType BodyPage >
+ <PageNum `10'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 19>
+ <Unique 109026>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 106796>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment LeftRight >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 2>
+ <HyphenMinSuffix 2>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 7>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105681>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 3>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105683>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 6>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105685>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Center >
+ <PgfSpBefore 0.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <HyphenMinPrefix 2>
+ <HyphenMinSuffix 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 5>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 106801>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105687>
+ <Pgf
+ <PgfTag `Header'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 4>
+ <String `The RX Document'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105689>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment LeftRight >
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 2>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105691>
+ <Pgf
+ <PgfTag `Header'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 1>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ <FNote
+ <ID 20>
+ <Para
+ <Unique 109277>
+ <PgfTag `Footnote'>
+ <ParaLine
+ <String `this syntax is supported for compatibility with Xlib and is equivalent to the general display specification '>
+ >
+ <ParaLine
+ <String `with decnet as the transport.'>
+ >
+ > # end of Para
+ > # end of FNote
+ <FNote
+ <ID 21>
+ <Para
+ <Unique 109284>
+ <PgfTag `Footnote'>
+ <ParaLine
+ <String `xauth is defined further.'>
+ >
+ > # end of Para
+ > # end of FNote
+ <FNote
+ <ID 22>
+ <Para
+ <Unique 108645>
+ <PgfTag `Footnote'>
+ <ParaLine
+ <String `One cannot specify an alternative such as, an image, within the EMBED tag.'>
+ >
+ > # end of Para
+ > # end of FNote
+ > # end of Notes
+ <Para
+ <Unique 105695>
+ <PgfTag `Title'>
+ <ParaLine
+ <TextRectID 10>
+ <String `The RX Documen'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `t'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Version 1.0'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `X11 Release 6.4'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107017>
+ <PgfTag `Author'>
+ <Pgf
+ <PgfSpBefore 28.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Arnaud Le Hors'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107018>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfSpBefore 0.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `lehors@x.org'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107019>
+ <PgfTag `Centered'>
+ <ParaLine
+ <String `X Consortium, Inc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108278>
+ <PgfTag `AbstractTitle'>
+ <ParaLine
+ <String `Abstract'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108281>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This document describes the RX MIME type and how it can be used to provide a means to exe'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cute remote applications, such as X Window '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `System '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `clients, from a World Wide Web browser. To '>
+ >
+ <ParaLine
+ <String `achieve this, the RX document must convey enough information for an application to get every'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `thing it needs to connect to the various resources available in the user\xd5 s environment and display a '>
+ >
+ <ParaLine
+ <String `graphic user interface, possibly passing through some security firewall.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107033>
+ <PgfTag `CopyrightTitle'>
+ <Pgf
+ <PgfSpBefore 50.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Copyright \xa9 '>
+ <String ` '>
+ <String `1'>
+ <String `996'>
+ <String ` '>
+ <String `X C'>
+ <String `onsortium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108749>
+ <PgfTag `CopyrightNotice'>
+ <ParaLine
+ <String `Permission is hereby granted, free of charge, to any'>
+ <String ` '>
+ <String `p'>
+ <String `erson obtaining a copy of this software and associated documen'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tation files (the \xd2 Software\xd3 ), to deal in the Software'>
+ <String ` '>
+ <String `w'>
+ <String `ithout restriction, including without limitation the rights to use, '>
+ >
+ <ParaLine
+ <String `copy, modify, merge, publish, distribute, sublicense,'>
+ <String ` '>
+ <String `a'>
+ <String `nd sell copies of the Software, and to permit persons to whom '>
+ >
+ <ParaLine
+ <String `the Software is furnished to do so, subject to the'>
+ <String ` '>
+ <String `f'>
+ <String `ollowing conditions:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108803>
+ <PgfTag `CopyrightNotice'>
+ <ParaLine
+ <String `The above copyright notice and this permission'>
+ <String ` '>
+ <String `n'>
+ <String `otice shall be included in all copies or substantial portions of the '>
+ >
+ <ParaLine
+ <String `Software.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108760>
+ <PgfTag `CopyrightNotice'>
+ <ParaLine
+ <String `THE SOFTWARE IS PROVIDED \xd2 AS IS\xd3 , WITHOUT WARRANTY'>
+ <String ` '>
+ <String `O'>
+ <String `F ANY KIND, EXPRESS OR IMPLIED, '>
+ >
+ <ParaLine
+ <String `INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF'>
+ <String ` '>
+ <String `M'>
+ <String `ERCHANTABILITY, FITNESS FOR A PAR'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `TICULAR PURPOSE AND NONINFRINGEMENT. IN NO'>
+ <String ` '>
+ <String `E'>
+ <String `VENT SHALL THE X CONSORTIUM BE LIABLE '>
+ >
+ <ParaLine
+ <String `FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,'>
+ <String ` '>
+ <String `W'>
+ <String `HETHER IN AN ACTION OF CONTRACT, TORT '>
+ >
+ <ParaLine
+ <String `OR OTHERWISE, ARISING FROM, OUT OF OR IN'>
+ <String ` '>
+ <String `C'>
+ <String `ONNECTION WITH THE SOFTWARE OR THE USE OR '>
+ >
+ <ParaLine
+ <String `OTHER DEALINGS IN THE'>
+ <String ` '>
+ <String `S'>
+ <String `OFTWARE.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108768>
+ <PgfTag `CopyrightNotice'>
+ <ParaLine
+ <String `Except as contained in this'>
+ <String ` '>
+ <String `n'>
+ <String `otice, the name of the X Consortium shall not be used in advertising or otherwise to pro'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `mote the sale, use or other'>
+ <String ` '>
+ <String `d'>
+ <String `ealings in this Software without prior written authorization from the X Consortium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105699>
+ <PgfTag `Section'>
+ <Pgf
+ <PgfSpBefore 200.0 pt>
+ > # end of Pgf
+ <PgfNumString `1. '>
+ <ParaLine
+ <TextRectID 11>
+ <String `I'>
+ <String `ntroduction'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105701>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Th'>
+ <String `e'>
+ <String ` RX MIME type'>
+ <XRef
+ <XRefName `BibRef'>
+ <XRefSrcText `39288: BibEntry+: [4] N. Borenstein and N. Freed, \xd2 MIME (Multipurpose Internet Mail Extensions) Part One:'>
+ <XRefSrcFile `'>
+ <Unique 108593>
+ > # end of XRef
+ <String ` [4]'>
+ <XRefEnd >
+ <String ` '>
+ <String `document is designed to provide a means t'>
+ <String `o execute remote applications, '>
+ >
+ <ParaLine
+ <String `such as X Window '>
+ <String `System '>
+ <String `clients, from a World Wide Web browser'>
+ <String `. However, the document '>
+ >
+ <ParaLine
+ <String `itself is not sufficient. To be of any use. it requires the browser to use the information it contains '>
+ >
+ <ParaLine
+ <String `and to react accordingly. The general model is that the RX document conveys to the browser the '>
+ >
+ <ParaLine
+ <String `list of services the application needs to run. In reaction the browser sets'>
+ <String ` '>
+ <String `u'>
+ <String `p the user environment '>
+ >
+ <ParaLine
+ <String `for the application to run, and starts the application by feeding the web'>
+ <String ` '>
+ <String `s'>
+ <String `erver back the relevant '>
+ >
+ <ParaLine
+ <String `information. The RX document can list both required and optional services, leaving '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `t'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `he browser '>
+ >
+ <ParaLine
+ <String `to decide, possibly based on user preferences, which services are available and/or preferred.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108402>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This document describes the RX MIME type and how the browser is expected to start the applica'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion by running a CGI script or equivalent'>
+ <XRef
+ <XRefName `BibRef'>
+ <XRefSrcText `25575: BibEntry+: [5] David Robinson, \xd4 The WWW Common Gateway Interface Version 1.1\xd4 , University of Cam'>
+ <XRefSrcFile `'>
+ <Unique 108406>
+ > # end of XRef
+ <String ` [6]'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108267>
+ <PgfTag `Section'>
+ <PgfNumString `2. '>
+ <ParaLine
+ <String `Notational Conventions and Generic Grammar'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107150>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `All of the mechanisms specified in this document are described in both prose and an augmented '>
+ >
+ <ParaLine
+ <String `Backus-Naur Form (BNF). Readers need to be familiar with the notation in order to understand '>
+ >
+ <ParaLine
+ <String `this specification. The augmented BNF includes the following constructs:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107170>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `name = definition'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107171>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `The name of a rule is simply the name itself (without any enclosing \xd2 <\xd2 and \xd2 \>\xd3 ) and '>
+ >
+ <ParaLine
+ <String `is separated from its definition by the equal character \xd2 =\xd3 . Whitespace is only signifi'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cant in that indentation of continuation lines is used to indicate a rule definition that '>
+ >
+ <ParaLine
+ <String `spans more than one line. Angle brackets are used within definitions whenever their '>
+ >
+ <ParaLine
+ <String `presence will facilitate discerning the use of rule names.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107210>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `\xd2 literal\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 107213>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `Quotation marks surround literal text. Unless stated otherwise, the text is case-insensi'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tive.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107216>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `rule1 | rule2'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107218>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `Elements separated by a bar (\xd2 '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `|\xd3 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `) are alternatives, e.g., \xd2 yes | no\xd3 will accept yes or no.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107221>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `(rule1 rule2)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107223>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `Elements enclosed in parentheses are treated as a single element. Thus, \xd2 (elem (foo | '>
+ >
+ <ParaLine
+ <String `bar) elem)\xd3 allows the token sequences \xd2 elem foo elem\xd3 and \xd2 elem bar elem\xd3 .'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107227>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `*rule'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107229>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `The character \xd2 *\xd3 preceding an element indicates repetition. The full form is '>
+ >
+ <ParaLine
+ <String `\xd2 <n\>*<m\>element\xd3 indicating at least <n\> and at most <m\> occurrences of element. '>
+ >
+ <ParaLine
+ <String `Default values are 0 and infinity so that \xd2 *(element)\xd3 allows any number, including '>
+ >
+ <ParaLine
+ <String `zero; \xd2 1*element\xd3 requires at least one; and \xd2 1*2element\xd3 allows one or two.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107236>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <TextRectID 12>
+ <String `[rule]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107238>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `Square brackets enclose optional elements; \xd2 [foo bar]\xd3 is equivalent to \xd2 *1(foo bar)\xd3 .'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107395>
+ <PgfTag `Subsection'>
+ <PgfNumString `2.1 '>
+ <ParaLine
+ <String `Basic Rules'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107396>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The following rules are used throughout this specification to describe basic parsing constructs.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109082>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `OCTET'>
+ <Char Tab >
+ <String `= <any 8-bit sequence of data\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109083>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `A'>
+ <String `LPHA'>
+ <Char Tab >
+ <String `='>
+ <String ` <any US-ASCII letter \xd2 A\xd3 ..\xd3 Z\xd3 and \xd2 a\xd3 ..\xd3 z\xd3 \>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109084>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `DIGIT'>
+ <Char Tab >
+ <String `= <any US-ASCII digit \xd2 0\xd3 ..\xd3 9\xd3 \>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107998>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `CHAR'>
+ <Char Tab >
+ <String `= <any character\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108001>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `CTL'>
+ <Char Tab >
+ <String `= <any'>
+ <String ` US-ASCII'>
+ <String ` control characte'>
+ <String `r'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String ` (octets 0 - 31) and DEL (127)'>
+ <String `\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108021>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `CR'>
+ <Char Tab >
+ <String `= <US-ASCII CR, carriage return (13)\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109060>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `LF'>
+ <Char Tab >
+ <String `= <US-ASCII LF, linefeed (10)\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109061>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `SP'>
+ <Char Tab >
+ <String `= <US-ASCII SP, space (32)\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109024>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `HT'>
+ <Char Tab >
+ <String `= <US-ASCII HT, horizontal-tab (9)\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109028>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `S'>
+ <String `PECIAL'>
+ <Char Tab >
+ <String `= \xd2 ;\xd3 | \xd2 ?\xd3 | \xd2 ,\xd3 | \xd2 =\xd3 '>
+ <String ` | \xd2 <\xd2 | \xd2 \>\xd3 | SP | HT | CR | LF'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108025>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `STRING'>
+ <Char Tab >
+ <String `= 1*<any CHAR except CTLs and SPECIALs'>
+ <String `\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109073>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `TEXT'>
+ <Char Tab >
+ <String `= <any OCTET except CTLs, but including CR and LF\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107148>
+ <PgfTag `Section'>
+ <PgfNumString `3. '>
+ <ParaLine
+ <String `The RX MIME typ'>
+ <String `e'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107143>
+ <PgfTag `Subsection'>
+ <PgfNumString `3.1 '>
+ <ParaLine
+ <String `G'>
+ <String `eneral form'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105713>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The general form of an RX document is a list of HTML PARAM elements, as drafted by the '>
+ >
+ <ParaLine
+ <String `WWW Consortium'>
+ <XRef
+ <XRefName `BibRef'>
+ <XRefSrcText `13781: BibEntry+: [4] Dave Raggett, \xd4 Inserting objects into HTML\xd4 , W3C Working Draft 22-Apr-96 (http://'>
+ <XRefSrcFile `'>
+ <Unique 108229>
+ > # end of XRef
+ <String ` [5]'>
+ <XRefEnd >
+ <String ` i'>
+ <String `n its simplest form:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105717>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `\xd2 <PARAM NAME=\xd3 name \xd2 VALUE=\xd3 value \xd2 \>\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 105719>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <String `One advantage of this '>
+ <String `syntax '>
+ <String `is to provide HTML authors with '>
+ <String `t'>
+ <String `he possibility to easily move ele'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ments from the RX document to the HTML document itself, when the OBJECT tag becomes '>
+ >
+ <ParaLine
+ <String `standard and is fully supported by web browsers'>
+ <String `.'>
+ <String ` '>
+ <String `T'>
+ <String `he list of possible parameters is defined '>
+ <String `in the '>
+ >
+ <ParaLine
+ <String `following section'>
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108993>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <String `In addition the standard HTML comment element, which is of the form:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109008>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `\xd2 <!--\xd3 TEXT \xd2 --\>\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 108995>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `is supported.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105729>
+ <PgfTag `Subsection'>
+ <PgfNumString `3.2 '>
+ <ParaLine
+ <TextRectID 13>
+ <String `P'>
+ <String `arameters'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105730>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <String `First, an RX document '>
+ <String `can s'>
+ <String `pecify the RX version number with the VERSION parameter which '>
+ >
+ <ParaLine
+ <String `can have the following value (in augmented BNF):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105733>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `version'>
+ <Char Tab >
+ <String `= 1*DIGIT \xd2 .\xd3 1*DIGIT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105735>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <String `This allows the document to specify a major and minor numbers.'>
+ <String ` When not specified the default '>
+ >
+ <ParaLine
+ <String `value for this parameter is 1.0. When specified'>
+ <String ` '>
+ <String `t'>
+ <String `his must appear first in the document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105738>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Then, an RX document can contain any of the '>
+ <String `p'>
+ <String `arameters described below'>
+ <String `, in any order'>
+ <String `:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105740>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `ACTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105741>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `The URL to fetch to initiate the remote execution. It is equivalent to the DATA '>
+ >
+ <ParaLine
+ <String `attribute of the OBJECT element and the SRC parameter of the Netscape'>
+ <String `\xaa '>
+ <String ` EMBED '>
+ >
+ <ParaLine
+ <String `element.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105745>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `REQUIRED-SERVICES'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106389>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This indicates the list of services the application needs to run. This list can contain one '>
+ >
+ <ParaLine
+ <String `or more of UI, '>
+ <String `P'>
+ <String `RINT'>
+ <String ` a'>
+ <String `s described below.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105750>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `UI'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106831>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This indicates the list of User Interface protocols the application support'>
+ <String `s'>
+ <String `, '>
+ <String `i'>
+ <String `n order of '>
+ >
+ <ParaLine
+ <String `preference (from the most to the least preferred).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106832>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `PRINT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106833>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This indicates the list of printing protocols the application support, in order of prefer'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ence (from the most to the least preferred)'>
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105784>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `WIDTH and HEIGHT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107499>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `T'>
+ <String `his allows the HTML author to specify the default '>
+ <String `geometry o'>
+ <String `f the application pri'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `mary window.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105789>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `EMBEDDED'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105790>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This indicates whether the application is to be embedded in the browser or not. If not '>
+ >
+ <ParaLine
+ <String `specified in the RX document, the default value is YES, unless '>
+ <String `overridden b'>
+ <String `y browser '>
+ >
+ <ParaLine
+ <String `or user settings.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107914>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `AUTO-START'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107915>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This specifies whether the application should be launched immediately upon retrieval '>
+ >
+ <ParaLine
+ <String `of the RX document or only on user demand. For instance, this could be on a user click '>
+ >
+ <ParaLine
+ <String `on the embedded region, or whatever other user interface element the browser wants to '>
+ >
+ <ParaLine
+ <String `provide for this. If not specified in the RX document, the default value is'>
+ <String ` '>
+ <String `Y'>
+ <String `ES, unless '>
+ >
+ <ParaLine
+ <String `overridden by browser or user'>
+ <String ` '>
+ <String `s'>
+ <String `ettings.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105794>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <TextRectID 14>
+ <String `APP-GROUP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105795>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This specifies the logical application '>
+ <String `g'>
+ <String `roup to which the application is related. The '>
+ >
+ <ParaLine
+ <String `intent of this attribute is to allow several remote applications to be considered as a sin'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `gle logical application or, on the contrary, to separate various applications from each '>
+ >
+ <ParaLine
+ <String `other'>
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String ` If not specified in the RX document, the application is considered to be alone '>
+ >
+ <ParaLine
+ <String `within its own logical group.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105801>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `T'>
+ <String `he possible values for each of these parameters is respectively defined as follows (in augmented '>
+ >
+ <ParaLine
+ <String `BNF):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105804>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `action'>
+ <Char Tab >
+ <String `= '>
+ <String `<script '>
+ <String `UR'>
+ <String `I\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105806>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `requ'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `ir'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `ed-services'>
+ <Char Tab >
+ <String `= service *( \xd2 ,\xd3 service '>
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108594>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `s'>
+ <String `ervice'>
+ <Char Tab >
+ <String `= \xd2 UI\xd3 | '>
+ <String `\xd2 '>
+ <String `PRINT\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 105809>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `ui'>
+ <Char Tab >
+ <String `= protocol'>
+ <String `s'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108595>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `protocols'>
+ <Char Tab >
+ <String `= protocol *( \xd2 ,\xd3 protocol '>
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108596>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `protocol'>
+ <Char Tab >
+ <String `= '>
+ <String `STRING'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105813>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `print'>
+ <Char Tab >
+ <String `= protocol'>
+ <String `s'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105825>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `w'>
+ <String `idth'>
+ <Char Tab >
+ <String `= 1*DIGI'>
+ <String `T'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108597>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `h'>
+ <String `eight'>
+ <Char Tab >
+ <String `= 1*DIGIT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105829>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `embedded'>
+ <Char Tab >
+ <String `= \xd2 YES\xd3 | \xd2 NO\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 107906>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `auto-start'>
+ <Char Tab >
+ <String `= \xd2 YES\xd3 | \xd2 NO'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 109243>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `a'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `pp-group'>
+ <Char Tab >
+ <String `= STRING'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105839>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `I'>
+ <String `n addition to this exhaustive list of parameters, an RX document can also contain parameters '>
+ >
+ <ParaLine
+ <String `only relevant to a particular protocol. The names of these parameters must be prefixed by the '>
+ >
+ <ParaLine
+ <String `related protocol name and the value can '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `b'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `e anything. There may be as many such parameters as '>
+ >
+ <ParaLine
+ <String `desired. These parameters are defined as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105845>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `param-name'>
+ <Char Tab >
+ <String `= protocol \xd2 -\xd3 '>
+ <String `STRING'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109169>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `param-value'>
+ <Char Tab >
+ <String `= STRING'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107515>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Every parameter can also be specified in the'>
+ <String ` '>
+ <String `H'>
+ <String `TML document as an attribute of the OBJECT or '>
+ >
+ <ParaLine
+ <String `EMBED element when one is used. When this is the case and a parameter is specified both in '>
+ >
+ <ParaLine
+ <String `HTML and RX, the HTML instance has precedence over the RX one. The only exception to this '>
+ >
+ <ParaLine
+ <String `rule is the VERSION parameter which only affects the set of parameters to which it is attached, '>
+ >
+ <ParaLine
+ <String `whether this is in HTML or RX.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105849>
+ <PgfTag `Subsection'>
+ <PgfNumString `3.3 '>
+ <ParaLine
+ <String `Returned Parameters'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106607>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Once the browser has read the RX document and performed any necessary initialization, in '>
+ >
+ <ParaLine
+ <String `response it should '>
+ <String `start the application'>
+ <String ` '>
+ <String `a'>
+ <String `t the appropriate time (see auto-start) by f'>
+ <String `etch'>
+ <String `ing'>
+ <String ` the '>
+ >
+ <ParaLine
+ <String `action UR'>
+ <String `I,'>
+ <String ` via an HTTP GET request'>
+ <XRef
+ <XRefName `BibRef'>
+ <XRefSrcText `25874: BibEntry+: [3] T. Berners-Lee, R. Fielding, and H. Frystyk, \xd4 Hypertext Transfer Protocol -- HTTP/1.0\xd4 , May'>
+ <XRefSrcFile `'>
+ <Unique 108454>
+ > # end of XRef
+ <String ` [3]'>
+ <XRefEnd >
+ <String `, '>
+ <String `w'>
+ <String `ith the following '>
+ <String `p'>
+ <String `arameters list:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105853>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <TextRectID 15>
+ <String `return-parameters'>
+ <Char Tab >
+ <String `= *( \xd2 ?\xd3 return-parameter )'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105855>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfLIndent 2.375">
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `return-parameter'>
+ <Char Tab >
+ <String `= ui-return | print-return'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String ` '>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `|'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ <String `width-'>
+ <String `return '>
+ <String `| height-return '>
+ <String `| embedded-retur'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `n'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `|'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` extra-param-return'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105860>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `ui-return'>
+ <Char Tab >
+ <String `= \xd2 UI=\xd3 '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `ui-url'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105862>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `print-return'>
+ <Char Tab >
+ <String `= \xd2 PRINT=\xd3 '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `print-url'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107522>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `width-return'>
+ <Char Tab >
+ <String `= \xd2 WIDTH=\xd3 1*DIGIT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107525>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `height-return'>
+ <Char Tab >
+ <String `= \xd2 HEIGHT=\xd3 1*DIGIT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105870>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `embedded-return'>
+ <Char Tab >
+ <String `= \xd2 EMBEDDED=\xd3 embedded'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105872>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `extra-param-return'>
+ <Char Tab >
+ <String `= protocol \xd2 -\xd3 STRING \xd2 =\xd3 STRING'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105875>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For each requested service specified in the RX document the web browser can respond with the '>
+ >
+ <ParaLine
+ <String `corresponding return parameter. If any of '>
+ <String `t'>
+ <String `he requested service'>
+ <String `s'>
+ <String ` '>
+ <String `is n'>
+ <String `ot listed in the returned '>
+ >
+ <ParaLine
+ <String `parameters, it should be assumed that th'>
+ <String `e'>
+ <String ` '>
+ <String `s'>
+ <String `ervice is unavailable.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109180>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The action URI, which should be a CGI script or equivalent, must not only start the application '>
+ >
+ <ParaLine
+ <String `with the given parameters, it is also expected to produce a valid document of type \xd2 text/plain\xd3 . '>
+ >
+ <ParaLine
+ <String `The first line of t'>
+ <String `h'>
+ <String `is d'>
+ <String `ocument '>
+ <String `must contain an error code, either 0 for success or non zero for fail'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ure. The non existence of this line should be considered as a sign of failure. The rest of the docu'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ment '>
+ <String `can the'>
+ <String `n'>
+ <String ` contain'>
+ <String ` '>
+ <String `s'>
+ <String `ome error messages '>
+ <String `to b'>
+ <String `e displayed by the browser.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105882>
+ <PgfTag `Section'>
+ <PgfNumString `4. '>
+ <ParaLine
+ <String `How the RX document will be used in '>
+ <String `the'>
+ <String ` '>
+ <String `X'>
+ <String ` Window System'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105884>
+ <PgfTag `Subsection'>
+ <PgfNumString `4.1 '>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `Parameters'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109259>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `I'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `n '>
+ <String `X'>
+ <String ` '>
+ <String `f'>
+ <String `or the UI '>
+ <String `and '>
+ <String `PRINT'>
+ <String ` s'>
+ <String `ervices respectively the '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `protocols '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `X '>
+ <String `and XPRINT'>
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `a'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `re supported and '>
+ >
+ <ParaLine
+ <String `are then valid protocol names'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107963>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `A'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `lso the '>
+ <String `following a'>
+ <String `dditional parameter'>
+ <String `s are recognized:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107964>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `X-UI-LBX, X-PRINT-LBX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107965>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `These parameters indicate '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `whether or not t'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `he application is LBX capable.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String ` If not speci'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `fied in the RX document, the default value is NO, unless overridden by browser or '>
+ >
+ <ParaLine
+ <String `user settings.'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 107922>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `X-UI-INPUT-METHOD'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107923>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This indicates that the application can make use of an input method server.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String ` If not spec'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ified in the RX document, the default value is NO, unless overridden by browser or '>
+ >
+ <ParaLine
+ <String `user settings.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107617>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `X-AUTH'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107618>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `This parameter specifies'>
+ <String ` '>
+ <String `a'>
+ <String ` default list of authentication mechanisms, in order of prefer'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <TextRectID 16>
+ <String `ence (from the most to the'>
+ <String ` '>
+ <String `l'>
+ <String `east preferred), applying to all services.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107605>
+ <PgfTag `Indented1'>
+ <ParaLine
+ <String `X-UI-AUTH, X-PRINT-AUTH, X-UI-LBX-AUTH, and X-PRINT-LBX-AUTH'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107630>
+ <PgfTag `Indented'>
+ <ParaLine
+ <String `These parameters specify a list of authentication mechanisms, in order of preference '>
+ >
+ <ParaLine
+ <String `(from the most to the least preferred), applying to one service in particular, that is X, '>
+ >
+ <ParaLine
+ <String `XPRINT, LBX for X, and LBX for XPRINT respectively. They have precedence over '>
+ >
+ <ParaLine
+ <String `the global X-AUTH'>
+ <String ` '>
+ <String `p'>
+ <String `arameter when both are specified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107579>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <String `The X-UI-LBX, X-PRINT-LBX parameters can have the following value:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107738>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `x-lbx'>
+ <Char Tab >
+ <String `= \xd2 YES\xd3 | \xd2 NO\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 107737>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <String `The X-UI-INPUT-METHOD parameter c'>
+ <String `an have the following value'>
+ <String `:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106899>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `x-ui-input-method'>
+ <Char Tab >
+ <String `= ( \xd2 YES\xd3 [ \xd2 ;\xd3 URL ] ) | \xd2 NO\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 107702>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This specifies whether an input'>
+ <String ` '>
+ <String `m'>
+ <String `ethod server is available or not, and if one is its location can be '>
+ >
+ <ParaLine
+ <String `specified as an'>
+ <String ` '>
+ <String `U'>
+ <String `RL.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107734>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Each of the X-UI-AUTH,'>
+ <String ` '>
+ <String `X'>
+ <String `-PRINT-AUTH, X-UI-LBX'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `-AUTH'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and X-PRINT-LBX'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `-AUTH'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `parameters have the following value:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107627>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `xauths'>
+ <Char Tab >
+ <String `= xauth *( \xd2 ,\xd3 xauth)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108542>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `xauth'>
+ <Char Tab >
+ <String `= xauth-name [ \xd2 :\xd3 xauth-data ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108543>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `xauth-name'>
+ <Char Tab >
+ <String `= 1*<any CHAR except CTLs, SPECIALs and \xd2 :\xd3 \>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108544>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `xauth-data'>
+ <Char Tab >
+ <String `= STRING'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107116>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The authentication mechanism name can be for instance MIT-MAGIC-COOKIE-1 or MIT-KER'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `BEROS-5 while the authentication data would '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `be, '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `respectively'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `, n'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `othing or '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `a Kerberos principal '>
+ >
+ <ParaLine
+ <String `and realm; for instance \xd2 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `webserver@mycorp.com'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd3 .'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 109270>
+ <PgfTag `Subsection'>
+ <PgfNumString `4.2 '>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `Returned parameters'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109291>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `In the GET request, the returned URLs for the UI and PRINT services, that is for the X and '>
+ >
+ <ParaLine
+ <String `XPRINT protocols, are of the form:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109271>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `ui-url'>
+ <Char Tab >
+ <String `= \xd2 x11:\xd3 xdisplay [ \xd2 ;\xd3 auth ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109272>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `xdisplay'>
+ <Char Tab >
+ <String `= display | decnet-display'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109273>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `display'>
+ <Char Tab >
+ <String `= [ transport \xd2 /\xd3 ] host \xd2 :\xd3 display-num [ \xd2 .\xd3 screen-num ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109274>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `transport'>
+ <Char Tab >
+ <String `= \xd2 local\xd3 | \xd2 tcp\xd3 | \xd2 decnet\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 109278>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `decnet-display'>
+ <FNote 20>
+ <Char Tab >
+ <String `= host \xd2 ::\xd3 display-num [ \xd2 .\xd3 screen-num ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109279>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfLIndent 2.375">
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `host'>
+ <Char Tab >
+ <String `= <A legal Internet host domain name or IP address (in dotted-'>
+ >
+ <ParaLine
+ <TextRectID 17>
+ <String `decimal form), as defined by Section 2.1 of RFC 1123\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109280>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `display-num'>
+ <Char Tab >
+ <String `= 1*DIGIT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109281>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `screen-num'>
+ <Char Tab >
+ <String `= 1*DIGIT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109285>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `auth'>
+ <Char Tab >
+ <String `= \xd2 auth=\xd3 xauth'>
+ <FNote 21>
+ >
+ > # end of Para
+ <Para
+ <Unique 109286>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `print-url'>
+ <Char Tab >
+ <String `= \xd2 xprint:\xd3 xprinter [ \xd2 ;\xd3 auth]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109287>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `xprinter'>
+ <Char Tab >
+ <String `= [ printer-name \xd2 @\xd3 ][ transport \xd2 /\xd3 ] host \xd2 :\xd3 display-num'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109319>
+ <PgfTag `Indented2'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <Char Tab >
+ <String `printer-name'>
+ <Char Tab >
+ <String `= 1*<any CHAR except CTLs, SPECIALs and \xd2 @\xd3 \>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109320>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `And i'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `n re'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `sponse to the X-UI-LBX, X-PRINT-LBX parameters, t'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `he following '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `is g'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `iven as part of '>
+ >
+ <ParaLine
+ <String `the GET request:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109321>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `x-ui-lbx-return'>
+ <Char Tab >
+ <String `= \xd2 X-UI-LBX=\xd3 ( \xd2 YES\xd3 [ \xd2 ;\xd3 auth ] ) | \xd2 NO\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 107769>
+ <PgfTag `Indented2'>
+ <ParaLine
+ <String `x-print-lbx-return'>
+ <Char Tab >
+ <String `= \xd2 X-PRINT-LBX=\xd3 ( \xd2 YES\xd3 [ \xd2 ;\xd3 auth ] ) | \xd2 NO\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 105923>
+ <PgfTag `Subsection'>
+ <PgfNumString `4.3 '>
+ <ParaLine
+ <String `Example'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 106611>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An HTML document specifying an RX MIME-type document using the OBJECT tag would look '>
+ >
+ <ParaLine
+ <String `like:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105928>
+ <PgfTag `Code'>
+ <ParaLine
+ <String `<HTML\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `...'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<OBJECT '>
+ <String `d'>
+ <String `ata=http://www.'>
+ <String `domain.'>
+ <String `com/'>
+ <String `CalendarTool'>
+ <String `.rx'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `type=application/x-rx'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `width=500 height=400\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<IMG SRC='>
+ <String `h'>
+ <String `ttp://www.d'>
+ <String `omain.'>
+ <String `com/'>
+ <String `CalendarTool.'>
+ <String `gif ALT='>
+ <String `CalendarTool\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `</OBJECT\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `...'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `</HTML\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105938>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `With the Netscape'>
+ <String `\xaa '>
+ <String ` '>
+ <String `E'>
+ <String `MBED tag it would look like:'>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ > # end of Font
+ <FNote 22>
+ >
+ > # end of Para
+ <Para
+ <Unique 105940>
+ <PgfTag `Code'>
+ <ParaLine
+ <String `<HTML\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `...'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<EMBED '>
+ <String `S'>
+ <String `RC=http://www.'>
+ <String `domain'>
+ <String `.com/'>
+ <String `CalendarTool.'>
+ <String `rx width=500 height=400\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `...'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `</HTML\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105953>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `T'>
+ <String `he document SimCity.rx could contain the following:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105955>
+ <PgfTag `Code'>
+ <ParaLine
+ <String `<PARAM Name=VERSION Value=1.0\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<PARAM '>
+ <String `N'>
+ <String `ame=ACTION Value=http://www.d'>
+ <String `omain'>
+ <String `.com/'>
+ <String `CalendarTool'>
+ <String `.'>
+ <String `pl\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <TextRectID 18>
+ <String `<'>
+ <String `PARAM Name=REQUIRED-SERVICES Value=UI\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<PARAM Name=UI VALUE=X\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<'>
+ <String `PARAM Name=X-'>
+ <String `UI-LBX V'>
+ <String `alue='>
+ <String `YES\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<PARAM Name=X-AUTH Value=MIT-MAGIC-COOKIE-1\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<PARAM Name=EMBEDDED Value=YES\>'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `<PARAM'>
+ <String ` '>
+ <String `N'>
+ <String `ame=APP-GROUP Value=CalendarToolAppGroup1\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105978>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `F'>
+ <String `rom which the browser would reply by a GET of the following URI:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105980>
+ <PgfTag `Code'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `http://www.'>
+ <String `d'>
+ <String `om'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `a'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `in'>
+ <String `.com/'>
+ <String `CalendarTool.pl'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `?U'>
+ <String `I='>
+ <String `x'>
+ <String `11:m'>
+ <String `yhost.mydomain.org'>
+ <String `:0;'>
+ <String `auth=MIT-MAGIC-COOKIE-1:044B3244D'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `?WIDTH=500?HEIGHT=400?'>
+ <String `EMBEDDED=YES'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `?'>
+ <String `X'>
+ <String `-U'>
+ <String `I'>
+ <String `-LBX='>
+ <String `YES'>
+ <String `;auth=MIT-MAGIC-COOKIE-1:1A7C4C1F312B3'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108850>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Note that the URI'>
+ <String ` '>
+ <String `i'>
+ <String `s really made of a single line and is only presented on several lines in this doc'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ument to make it'>
+ <String ` '>
+ <String `e'>
+ <String `asier to read.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108251>
+ <PgfTag `Section'>
+ <Pgf
+ <PgfPlacement PageTop >
+ > # end of Pgf
+ <PgfNumString `5. '>
+ <ParaLine
+ <TextRectID 19>
+ <String `References'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108253>
+ <PgfTag `BibEntry'>
+ <Pgf
+ <PgfNextTag `BibEntry+'>
+ > # end of Pgf
+ <PgfNumString `[1] '>
+ <ParaLine
+ <String `T. Berners-Lee,'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String ` \xd2 U'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `niversal Resource Identifiers in WWW: A Unifying Syntax for the Expres'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sion of Names and Addresses of Objects on the Network as used in the World-Wide Web'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd3 ,'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` RFC '>
+ >
+ <ParaLine
+ <String `1630, CERN, June 1994 (http://ds.internic.net/rfc/rfc1630.txt).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108126>
+ <PgfTag `BibEntry+'>
+ <PgfNumString `[2] '>
+ <ParaLine
+ <String `T. Berners-Lee, L. Masinter, and M. McCahill., '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd2 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Uniform Resource Locators (URL)'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd3 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, RFC '>
+ >
+ <ParaLine
+ <String `1738, CERN, Xerox Corporation, University'>
+ <String ` '>
+ <String `o'>
+ <String `f Minnesota, December 1994'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `(http://ds.internic.net/rfc/rfc1738.txt)'>
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108147>
+ <PgfTag `BibEntry+'>
+ <PgfNumString `[3] '>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `25874: BibEntry+: [3] T. Berners-Lee, R. Fielding, and H. Frystyk, \xd4 Hypertext Transfer Protocol -- HTTP/1.0\xd4 , May'>
+ <MCurrPage 9>
+ <Unique 108451>
+ > # end of Marker
+ <String `T. Berners-Lee, R. Fielding, and H. Frystyk, '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd2 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Hypertext Transfer Protocol -- HTTP/1.0'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd3 ,'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` May '>
+ >
+ <ParaLine
+ <String `1996 (http://www.ics.uci.edu/pub/iet'>
+ <String `f'>
+ <String `/http/rfc1945.html).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108414>
+ <PgfTag `BibEntry+'>
+ <PgfNumString `[4] '>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `39288: BibEntry+: [4] N. Borenstein and N. Freed, \xd2 MIME (Multipurpose Internet Mail Extensions) Part One:'>
+ <MCurrPage 9>
+ <Unique 108590>
+ > # end of Marker
+ <String `N. Borenstein and N. Freed, \xd2 MIME (Multipurpose Internet Mail Extensions) Part One: '>
+ >
+ <ParaLine
+ <String `Mechanisms for Specifying and Describing the Format of Internet Message Bodies\xd3 , RFC 1521, '>
+ >
+ <ParaLine
+ <String `Bellcore, Innosoft, September 1993 (http://ds.internic.net/rfc/rfc1521.txt).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108554>
+ <PgfTag `BibEntry+'>
+ <PgfNumString `[5] '>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `13781: BibEntry+: [4] Dave Raggett, \xd4 Inserting objects into HTML\xd4 , W3C Working Draft 22-Apr-96 (http://'>
+ <MCurrPage 9>
+ <Unique 108455>
+ > # end of Marker
+ <String `Dave Raggett, '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd2 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Inserting objects into HTML'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd3 ,'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` W3C Working Draft 22-Apr-96'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `(http://www.w3.org/pub/WWW/TR/'>
+ <String `W'>
+ <String `D-object-960422.html).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108184>
+ <PgfTag `BibEntry+'>
+ <PgfNumString `[6] '>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `25575: BibEntry+: [5] David Robinson, \xd4 The WWW Common Gateway Interface Version 1.1\xd4 , University of Cam'>
+ <MCurrPage 9>
+ <Unique 108450>
+ > # end of Marker
+ <String `David Robinson, '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd2 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The WWW Common Gateway Interface Version 1.1'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes >
+ > # end of Font
+ <String `\xd3 '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, University of Cam'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `bridge UK, 15 February 1996 (http://www.ast.cam.ac.uk/~drtr/cgi-spec.html).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108192>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 106797>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment LeftRight >
+ <PgfSpBefore 0.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <HyphenMinPrefix 2>
+ <HyphenMinSuffix 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 8>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 106798>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 9>
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/SM/SMlib.ms b/specs/SM/SMlib.ms
new file mode 100644
index 0000000..38fb64c
--- /dev/null
+++ b/specs/SM/SMlib.ms
@@ -0,0 +1,2709 @@
+.\" $Xorg: SMlib.ms,v 1.3 2000/08/17 19:42:19 cpqbld Exp $
+.\"
+.\" Use tbl, -ms, and macros.t
+.\" edited for DP edits and code consistency w/ core protocol/xlib 4/18/96
+.\" macro: start marker
+.de sM
+.ne 4
+.sp 1
+\\h'-0.3i'\\L'-1v'\\v'3p'\\l'1v'\\v'1v-3p'
+.sp -1
+..
+.\" macro: end marker
+.de eM
+.sp -1
+\\h'-0.3i'\\L'-1v'\\v'1v+4p'\\l'1v'\\v'-4p'
+.sp 1
+..
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ad b
+.sp 10
+.TL
+\s+2\fBX Session Management Library\fP\s-2
+.sp
+Version 1.0
+.sp
+X Consortium Standard
+.sp
+X Version 11, Release 6.4
+.AU
+Ralph Mor
+.AI
+X Consortium
+.LP
+.DS C
+Copyright \(co 1993, 1994 X Consortium
+.DE
+.LP
+.sp 5
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+X Window System is a trademark of X Consortium, Inc.
+.bp
+.bp 1
+.EH '\fBX Session Management Library\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Session Management Library\fP''\fBX11, Release 6.4\fP'
+.EF ''\- \\\\n(PN \-''
+.OF ''\- \\\\n(PN \-''
+.NH 1
+Overview of Session Management
+.XS
+\*(SN Overview of Session Management
+.XE
+.LP
+The purpose of the X Session Management Protocol (XSMP) is to provide a
+uniform mechanism for users to save and restore their sessions. A
+\fIsession\fP is a group of clients, each of which has a particular state.
+The session is controlled by a network service called the \fIsession
+manager\fP\^. The session manager issues commands to its clients on behalf
+of the user. These commands may cause clients to save their state or to
+terminate. It is expected that the client will save its state in such a
+way that the client can be restarted at a later time and resume its
+operation as if it had never been terminated. A client's state might
+include information about the file currently being edited, the current
+position of the insertion point within the file, or the start of an
+uncommitted transaction. The means by which clients are restarted is
+unspecified by this protocol.
+.LP
+For purposes of this protocol, a \fIclient\fP\^ of the session manager is
+defined as a connection to the session manager. A client is typically,
+though not necessarily, a process running an application program connected
+to an X display. However, a client may be connected to more
+than one X display or not be connected to any X displays at all.
+.NH 1
+The Session Management Library
+.XS
+\*(SN The Session Management Library
+.XE
+.LP
+The Session Management Library (SMlib) is a low-level "C" language
+interface to XSMP. It is expected that higher level toolkits, such as
+Xt, will hide many of
+the details of session management from clients. Higher level toolkits
+might also be developed for session managers to use, but no such effort
+is currently under way.
+.LP
+SMlib has two parts to it:
+.IP \(bu 5
+One set of functions for clients that want to be part of a session
+.IP \(bu 5
+One set of functions for session managers to call
+.LP
+Some applications will use both sets of functions and act as \fInested
+session managers\fP\^.
+That is, they will be both a session manager and a client of another session.
+An example is a mail program that could start a text editor for editing
+the text of a mail message. The mail program is part of
+a regular session and, at the same time, is also acting as a session manager
+to the editor.
+.LP
+Clients initialize by connecting to the session manager and obtaining
+a \fIclient-ID\fP\^ that uniquely identifies them in the session.
+The session manager maintains a list of properties for each client in
+the session. These properties describe the client's environment
+and, most importantly, describe how the client can be restarted (via an
+.PN SmRestartCommand ).
+Clients are expected to save their state in such a way as to allow multiple
+instantiations of themselves to be managed independently. For example,
+clients may use their client-ID as part of a filename in which
+to store the state for a particular instantiation. The client-ID
+should be saved as part of the
+.PN SmRestartCommand
+so that the client will retain the same ID after it is restarted.
+.LP
+Once the client initializes itself with the session manager, it must be
+ready to respond to messages from the session manager. For example, it
+might be asked to save its state or to terminate. In the case of a shutdown,
+the session manager might give each client a chance to interact with the
+user and cancel the shutdown.
+.NH 1
+Understanding SMlib's Dependence on ICE
+.XS
+\*(SN Understanding SMlib's Dependence on ICE
+.XE
+.LP
+The X Session Management Protocol is layered on top of the Inter-Client
+Exchange (ICE) Protocol. The ICE protocol is designed to multiplex several
+protocols over a single connection. As a result, working with SMlib requires
+a little knowledge of how the ICE library works.
+.LP
+The ICE library utilizes callbacks to process messages. When a client
+detects that there is data to read on an ICE connection, it should call
+the
+.PN IceProcessMessages
+function.
+.PN IceProcessMessages
+will read the message header and look at the major opcode in order
+to determine which protocol the message was intended for. The appropriate
+protocol library will then be triggered to unpack the message and hand it
+off to the client via a callback.
+.LP
+The main point to be aware of is that an application using SMlib must
+have some code that detects when there is data to read on an ICE connection.
+This can be done via a
+.PN select
+call on the file descriptor for the ICE connection, but more typically,
+.PN XtAppAddInput
+will be used to register a callback that will invoke
+.PN IceProcessMessages
+each time there is data to read on the ICE connection.
+.LP
+To further complicate things, knowing which file descriptors to call
+.PN select
+on requires an understanding of how ICE connections are created.
+On the client side, a call must be made to
+.PN SmcOpenConnection
+in order to open a connection with a session manager.
+.PN SmcOpenConnection
+will internally make a call into
+.PN IceOpenConnection ,
+which will, in turn, determine if an ICE connection already exists between
+the client and session manager. Most likely, a connection will not already
+exist and a new ICE connection will be created. The main point to be aware
+of is that, on the client side, it is not obvious when ICE connections get
+created or destroyed, because connections are shared when possible.
+To deal with this, the ICE library lets the application register
+watch procedures that will be invoked each time an ICE connection
+is opened or closed.
+These watch procedures could be used to add or remove ICE file descriptors
+from the list of descriptors to call
+.PN select
+on.
+.LP
+On the session manager side, things work a bit differently. The session
+manager has complete control over the creation
+of ICE connections. The session manager has to first call
+.PN IceListenForConnections
+in order to start listening for connections from clients. Once a connection
+attempt is detected,
+.PN IceAcceptConnection
+must be called, and the session manager can simply add the new ICE
+file descriptor to the list of descriptors to call
+.PN select
+on.
+.LP
+For further information on the library functions related to ICE connections,
+see the \fIInter-Client Exchange Library\fP\^ standard.
+.NH 1
+Header Files and Library Name
+.XS
+\*(SN Header Files and Library Name
+.XE
+.LP
+Applications (both session managers and clients) should include the
+header file
+.Pn < X11/SM/SMlib.h >.
+This header file defines all of the SMlib data structures
+and function prototypes.
+.PN SMlib.h
+includes the header file
+.Pn < X11/SM/SM.h >,
+which defines all of the SMlib constants.
+.LP
+Because SMlib is dependent on ICE, applications should link against
+SMlib and ICElib by using
+.PN -lSM
+.PN -lICE .
+.NH 1
+Session Management Client (Smc) Functions
+.XS
+\*(SN Session Management Client (Smc) Functions
+.XE
+.LP
+This section discusses how Session Management clients:
+.IP \(bu 5
+Connect to the Session Manager
+.IP \(bu 5
+Close the connection
+.IP \(bu 5
+Modify callbacks
+.IP \(bu 5
+Set, delete, and retrieve Session Manager properties
+.IP \(bu 5
+Interact with the user
+.IP \(bu 5
+Request a ``Save Yourself''
+.IP \(bu 5
+Request a ``Save Yourself Phase 2''
+.IP \(bu 5
+Complete a ``Save Yourself''
+.IP \(bu 5
+Use Smc informational functions
+.IP \(bu 5
+Handle Errors
+.NH 2
+Connecting to the Session Manager
+.XS
+\*(SN Connecting to the Session Manager
+.XE
+.LP
+To open a connection with a session manager, use
+.PN SmcOpenConnection .
+.sM
+.FD 0
+SmcConn SmcOpenConnection\^(\^\fInetwork_ids_list\fP, \fIcontext\fP\^, \fIxsmp_major_rev\fP\^, \fIxsmp_minor_rev\fP\^,
+.br
+ \fImask\fP\^, \fIcallbacks\fP\^, \fIprevious_id\fP\^, \fIclient_id_ret\fP\^, \fIerror_length\fP\^, \fIerror_string_ret\fP\^)
+.br
+ char *\fInetwork_ids_list\fP\^;
+.br
+ SmPointer \fIcontext\fP\^;
+.br
+ int \fIxsmp_major_rev\fP\^;
+.br
+ int \fIxsmp_minor_rev\fP\^;
+.br
+ unsigned long \fImask\fP\^;
+.br
+ SmcCallbacks *\fIcallbacks\fP\^;
+.br
+ char *\fIprevious_id\fP\^;
+.br
+ char **\fIclient_id_ret\fP\^;
+.br
+ int \fIerror_length\fP\^;
+.br
+ char *\fIerror_string_ret\fP\^;
+.FN
+.IP \fInetwork_ids_list\fP 1i
+Specifies the network ID(s) of the session manager.
+.IP \fIcontext\fP 1i
+A pointer to an opaque object or NULL. Used to determine if an
+ICE connection can be shared (see below).
+.IP \fIxsmp_major_rev\fP 1i
+The highest major version of the XSMP the application supports.
+.IP \fIxsmp_minor_rev\fP 1i
+The highest minor version of the XSMP the application supports (for the
+specified xsmp_major_rev).
+.IP \fImask\fP\^ 1i
+A mask indicating which callbacks to register.
+.IP \fIcallbacks\fP 1i
+The callbacks to register. These callbacks are used to respond to messages
+from the session manager.
+.IP \fIprevious_id\fP 1i
+The client ID from the previous session.
+.IP \fIclient_id_ret\fP 1i
+The client ID for the current session is returned.
+.IP \fIerror_length\fP 1i
+Length of the error_string_ret argument passed in.
+.IP \fIerror_string_ret\fP 1i
+Returns a null-terminated error message, if any.
+The error_string_ret argument points to user supplied memory.
+No more than error_length bytes are used.
+.LP
+.eM
+The network_ids_list argument is a null-terminated string containing a list of
+network IDs for the session manager, separated by commas.
+If network_ids_list is NULL,
+the value of the
+.PN SESSION_MANAGER
+environment variable will be used.
+Each network ID has the following format:
+.TS
+lw(0.25i) lw(2.5i) lw(1i).
+ tcp/<hostname>:<portnumber> or
+ decnet/<hostname>::<objname> or
+ local/<hostname>:<path>
+.TE
+.LP
+An attempt will be made to use the first network ID. If that fails,
+an attempt will be made using the second network ID, and so on.
+.LP
+After the connection is established,
+.PN SmcOpenConnection
+registers the client with the session manager. If the client is being
+restarted from a previous session, previous_id should contain a null
+terminated string representing the client ID from the previous session.
+If the client is first joining the session, previous_id should be
+set to NULL.
+If previous_id is specified but is determined to be invalid by the
+session manager, SMlib will re-register
+the client with previous_id set to NULL.
+.LP
+If
+.PN SmcOpenConnection
+succeeds, it returns an opaque connection pointer of type
+.PN SmcConn
+and the client_id_ret argument contains the client ID to be used for
+this session.
+The client_id_ret should be freed with a call to
+.PN free
+when no longer needed. On failure,
+.PN SmcOpenConnection
+returns NULL,
+and the reason for failure is returned in error_string_ret.
+.LP
+Note that SMlib uses the ICE protocol to establish a connection with
+the session manager. If an ICE connection already exists between the
+client and session manager, it might be possible for the same ICE connection
+to be used for session management.
+.LP
+The context argument indicates how willing the client is to share
+the ICE connection with other protocols. If context is NULL,
+then the caller is always willing to share the connection.
+If context is not NULL,
+then the caller is not willing to use a previously opened ICE connection
+that has a different non-NULL context associated with it.
+.LP
+As previously discussed (section 3, ``Understanding SMlib's Dependence
+on ICE''), the client will have to keep track of when ICE connections
+are created or destroyed (using
+.PN IceAddConnectionWatch
+and
+.PN IceRemoveConnectionWatch ),
+and will have to call
+.PN IceProcessMessages
+each time a
+.PN select
+shows that there is data to read on an ICE connection.
+For further information, see the
+\fIInter-Client Exchange Library\fP\^ standard.
+.LP
+The callbacks argument contains a set of callbacks used to respond to session
+manager events. The mask argument specifies which callbacks are set.
+All of the callbacks specified in this version of SMlib are mandatory. The
+mask argument is necessary in order to maintain backwards compatibility
+in future versions of the library.
+.LP
+The following values may be ORed together to obtain a mask value:
+.LP
+.Ds 0
+.PN SmcSaveYourselfProcMask
+.PN SmcDieProcMask
+.PN SmcSaveCompleteProcMask
+.PN SmcShutdownCancelledProcMask
+.De
+.LP
+For each callback, the client can register a pointer to client data.
+When SMlib invokes the callback, it will pass the client data pointer.
+.LP
+.sM
+.Ds 0
+.TA .5i 1i 1.5i
+.ta .5i 1i 1.5i
+typedef struct {
+
+ struct {
+ SmcSaveYourselfProc callback;
+ SmPointer client_data;
+ } save_yourself;
+
+ struct {
+ SmcDieProc callback;
+ SmPointer client_data;
+ } die;
+
+ struct {
+ SmcSaveCompleteProc callback;
+ SmPointer client_data;
+ } save_complete;
+
+ struct {
+ SmcShutdownCancelledProc callback;
+ SmPointer client_data;
+ } shutdown_cancelled;
+
+} SmcCallbacks;
+.De
+.LP
+.eM
+.NH 3
+The Save Yourself Callback
+.XS
+\*(SN The Save Yourself Callback
+.XE
+.LP
+The Save Yourself callback is of type
+.PN SmcSaveYourselfProc .
+.sM
+.FD 0
+typedef void (*SmcSaveYourselfProc)();
+
+void SaveYourselfProc\^(\^\fIsmc_conn\fP, \fIclient_data\fP\^, \fIsave_type\fP\^, \fIshutdown\fP\^, \fIinteract_style\fP\^, \fIfast\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.br
+ int \fIsave_type\fP\^;
+.br
+ Bool \fIshutdown\fP\^;
+.br
+ int \fIinteract_style\fP\^;
+.br
+ Bool \fIfast\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIclient_data\fP 1i
+Client data specified when the callback was registered.
+.IP \fIsave_type\fP 1i
+Specifies the type of information that should be saved.
+.IP \fIshutdown\fP 1i
+Specifies if a shutdown is taking place.
+.IP \fIinteract_style\fP 1i
+The type of interaction allowed with the user.
+.IP \fIfast\fP 1i
+If
+.PN True ,
+the client should save its state as quickly as possible.
+.LP
+.eM
+The session manager sends a ``Save Yourself'' message to a client
+either to checkpoint it or just before
+termination so that it can save its state.
+The client responds with zero or more calls to
+.PN SmcSetProperties
+to update the properties indicating how to restart the client.
+When all the properties have been set, the client calls
+.PN SmcSaveYourselfDone .
+.LP
+If interact_style is
+.PN SmInteractStyleNone ,
+the client must not interact with the
+user while saving state.
+If interact_style is
+.PN SmInteractStyleErrors ,
+the client may interact with the user only if an error condition arises.
+If interact_style is
+.PN SmInteractStyleAny ,
+then the client may interact with the user for any purpose.
+Because only one client can interact with the user at a time,
+the client must call
+.PN SmcInteractRequest
+and wait for an ``Interact'' message from the session manager.
+When the client is done interacting with the user, it calls
+.PN SmcInteractDone .
+The client may only call
+.PN SmcInteractRequest
+after it receives a ``Save Yourself'' message and before it
+calls
+.PN SmcSaveYourselfDone .
+.LP
+If save_type is
+.PN SmSaveLocal ,
+the client must update the properties to reflect its current state.
+Specifically, it should save enough information to restore
+the state as seen by the user of this client. It should not affect the
+state as seen by other users. If save_type is
+.PN SmSaveGlobal ,
+the user wants the client to commit all of its data to permanent,
+globally accessible storage. If save_type is
+.PN SmSaveBoth ,
+the client should do both of these (it should first commit the data to
+permanent storage before updating its properties).
+.LP
+Some examples are as follows:
+.LP
+.IP \(bu 5
+If a word processor were sent a ``Save Yourself'' with a type of
+.PN SmSaveLocal ,
+it could create a temporary file that included the
+current contents of the file, the location of the cursor, and
+other aspects of the current editing session.
+It would then update its SmRestartCommand property
+with enough information to find this temporary file.
+.IP \(bu 5
+If a word processor were sent a ``Save Yourself'' with a type of
+.PN SmSaveGlobal ,
+it would simply save the currently edited file.
+.IP \(bu 5
+If a word processor were sent a ``Save Yourself'' with a type of
+.PN SmSaveBoth ,
+it would first save the currently edited file.
+It would then create a temporary file with information
+such as the current position of the cursor
+and what file is being edited.
+Finally, it would update its SmRestartCommand property
+with enough information to find the temporary file.
+.LP
+The shutdown argument specifies whether the system is being
+shut down. The interaction is different depending on whether or not
+shutdown is set. If not shutting down, the client should save its
+state and wait for a ``Save Complete'' message. If shutting down,
+the client must save state and
+then prevent interaction until it receives either a ``Die''
+or a ``Shutdown Cancelled.''
+.LP
+The fast argument specifies that the client should save its state
+as quickly as possible. For example, if the session manager knows that
+power is about to fail, it would set fast to
+.PN True .
+.NH 3
+The Die Callback
+.XS
+\*(SN The Die Callback
+.XE
+.LP
+The Die callback is of type
+.PN SmcDieProc .
+.sM
+.FD 0
+typedef void (*SmcDieProc)();
+
+void DieProc\^(\^\fIsmc_conn\fP, \fIclient_data\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIclient_data\fP 1i
+Client data specified when the callback was registered.
+.LP
+.eM
+The session manager sends a ``Die'' message to a client
+when it wants it to die. The client should respond by calling
+.PN SmcCloseConnection .
+A session manager that behaves properly will send a
+``Save Yourself'' message before the ``Die'' message.
+.NH 3
+The Save Complete Callback
+.XS
+\*(SN The Save Complete Callback
+.XE
+.LP
+The Save Complete callback is of type
+.PN SmcSaveCompleteProc .
+.sM
+.FD 0
+typedef void (*SmcSaveCompleteProc)();
+
+void SaveCompleteProc\^(\^\fIsmc_conn\fP, \fIclient_data\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIclient_data\fP 1i
+Client data specified when the callback was registered.
+.LP
+.eM
+When the session manager is done with a checkpoint, it will send each of
+the clients a ``Save Complete'' message. The client is then free to
+change its state.
+.NH 3
+The Shutdown Cancelled Callback
+.XS
+\*(SN The Shutdown Cancelled Callback
+.XE
+.LP
+The Shutdown Cancelled callback is of type
+.PN SmcShutdownCancelledProc .
+.sM
+.FD 0
+typedef void (*SmcShutdownCancelledProc)();
+
+void ShutdownCancelledProc\^(\^\fIsmc_conn\fP, \fIclient_data\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIclient_data\fP 1i
+Client data specified when the callback was registered.
+.LP
+.eM
+The session manager sends a ``Shutdown Cancelled'' message
+when the user cancelled the shutdown during an interaction
+(see section 5.5, ``Interacting With the User'').
+The client can now continue as if the shutdown had never happened.
+If the client has not called
+.PN SmcSaveYourselfDone
+yet, it can either abort the save and then call
+.PN SmcSaveYourselfDone
+with the success argument set to
+.PN False ,
+or it can continue with the save and then call
+.PN SmcSaveYourselfDone
+with the success argument set to reflect the outcome of the save.
+.NH 2
+Closing the Connection
+.XS
+\*(SN Closing the Connection
+.XE
+.LP
+To close a connection with a session manager, use
+.PN SmcCloseConnection .
+.LP
+.sM
+.FD 0
+SmcCloseStatus SmcCloseConnection\^(\^\fIsmc_conn\fP, \fIcount\fP\^, \fIreason_msgs\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ char **\fIreason_msgs\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIcount\fP 1i
+The number of reason messages.
+.IP \fIreason_msgs\fP 1i
+The reasons for closing the connection.
+.LP
+.eM
+The reason_msgs argument will most likely be NULL if resignation
+is expected by the client.
+Otherwise, it contains a list of null-terminated Compound Text strings
+representing the reason for termination.
+The session manager should display these reason messages
+to the user.
+.LP
+Note that SMlib used the ICE protocol to establish a connection with
+the session manager, and various protocols other than session management
+may be active on the ICE connection. When
+.PN SmcCloseConnection
+is called, the ICE connection will be closed only if all protocols
+have been shutdown on the connection. Check the ICElib
+standard for
+.PN IceAddConnectionWatch
+and
+.PN IceRemoveConnectionWatch
+to learn how to set up a callback to be invoked each time an ICE connection is
+opened or closed. Typically this callback adds/removes the ICE file
+descriptor from the list of active descriptors to call
+.PN select
+on (or calls
+.PN XtAppAddInput
+or
+.PN XtRemoveInput ).
+.LP
+.PN SmcCloseConnection
+returns one of the following values:
+.IP \(bu 5
+.PN SmcClosedNow
+\- the ICE connection was closed at this time, the watch procedures were
+invoked, and the connection was freed.
+.IP \(bu 5
+.PN SmcClosedASAP
+\- an IO error had occurred on the connection, but
+.PN SmcCloseConnection
+is being called within a nested
+.PN IceProcessMessages .
+The watch procedures have been invoked at this time, but the connection
+will be freed as soon as possible (when the nesting level reaches zero and
+.PN IceProcessMessages
+returns a status of
+.PN IceProcessMessagesConnectionClosed ).
+.IP \(bu 5
+.PN SmcConnectionInUse
+\- the connection was not closed at this time, because it is being used by
+other active protocols.
+.NH 2
+Modifying Callbacks
+.XS
+\*(SN Modifying Callbacks
+.XE
+.LP
+To modify callbacks set up in
+.PN SmcOpenConnection ,
+use
+.PN SmcModifyCallbacks .
+.sM
+.FD 0
+void SmcModifyCallbacks\^(\^\fIsmc_conn\fP, \fImask\fP\^, \fIcallbacks\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ unsigned long \fImask\fP\^;
+.br
+ SmcCallbacks *\fIcallbacks\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fImask\fP 1i
+A mask indicating which callbacks to modify.
+.IP \fIcallbacks\fP 1i
+The new callbacks.
+.LP
+.eM
+When specifying a value for the mask argument, the following
+values may be ORed together:
+.LP
+.Ds 0
+.PN SmcSaveYourselfProcMask
+.PN SmcDieProcMask
+.PN SmcSaveCompleteProcMask
+.PN SmcShutdownCancelledProcMask
+.De
+.NH 2
+Setting, Deleting, and Retrieving Session Management Properties
+.XS
+\*(SN Setting, Deleting, and Retrieving Session Management Properties
+.XE
+.LP
+To set session management properties for this client, use
+.PN SmcSetProperties .
+.sM
+.FD 0
+void SmcSetProperties\^(\^\fIsmc_conn\fP, \fInum_props\fP\^, \fIprops\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ int \fInum_props\fP\^;
+.br
+ SmProp **\fIprops\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fInum_props\fP 1i
+The number of properties.
+.IP \fIprops\fP 1i
+The list of properties to set.
+.LP
+.eM
+The properties are specified as an array of property pointers.
+Previously set property values may be over-written using the
+.PN SmcSetProperties
+function. Note that the session manager is not
+expected to restore property values when the session is restarted. Because
+of this, clients should not try to use the session manager as
+a database for storing application specific state.
+.LP
+For a description of session management properties and the
+.PN SmProp
+structure, see section 7, ``Session Management Properties.''
+.sp
+.LP
+To delete properties previously set by the client, use
+.PN SmcDeleteProperties .
+.sM
+.FD 0
+void SmcDeleteProperties\^(\^\fIsmc_conn\fP, \fInum_props\fP\^, \fIprop_names\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ int \fInum_props\fP\^;
+.br
+ char **\fIprop_names\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fInum_props\fP 1i
+The number of properties.
+.IP \fIprop_names\fP 1i
+The list of properties to delete.
+.LP
+.eM
+.LP
+To get properties previously stored by the client, use
+.PN SmcGetProperties .
+.sM
+.FD 0
+Status SmcGetProperties\^(\^\fIsmc_conn\fP, \fIprop_reply_proc\fP\^, \fIclient_data\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmcPropReplyProc \fIprop_reply_proc\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIprop_reply_proc\fP 1i
+The callback to be invoked when the properties reply comes back.
+.IP \fIclient_data\fP 1i
+This pointer to client data will be passed to the
+.PN SmcPropReplyProc
+callback.
+.LP
+.eM
+The return value of
+.PN SmcGetProperties
+is zero for failure and a positive value for success.
+.LP
+Note that the library does not block until the properties reply comes back.
+Rather, a callback of type
+.PN SmcPropReplyProc
+is invoked when the data is ready.
+.sM
+.FD 0
+typedef void (*SmcPropReplyProc)();
+
+void PropReplyProc\^(\^\fIsmc_conn\fP, \fIclient_data\fP\^, \fInum_props\fP\^, \fIprops\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.br
+ int \fInum_props\fP\^;
+.br
+ SmProp **\fIprops\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIclient_data\fP 1i
+Client data specified when the callback was registered.
+.IP \fInum_props\fP 1i
+The number of properties returned.
+.IP \fIprops\fP 1i
+The list of properties returned.
+.LP
+.eM
+To free each property, use
+.PN SmFreeProperty
+(see section 8, ``Freeing Data'').
+To free the actual array of pointers, use
+.PN free .
+.NH 2
+Interacting With the User
+.XS
+\*(SN Interacting With the User
+.XE
+.LP
+After receiving a ``Save Yourself'' message with an interact_style of
+.PN SmInteractStyleErrors
+or
+.PN SmInteractStyleAny ,
+the client may choose to interact with the user.
+Because only one client can interact with the user at a time, the client
+must call
+.PN SmcInteractRequest
+and wait for an ``Interact'' message from the session manager.
+.sM
+.FD 0
+Status SmcInteractRequest\^(\^\fIsmc_conn\fP, \fIdialog_type\fP\^, \fIinteract_proc\fP\^, \fIclient_data\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ int \fIdialog_type\fP\^;
+.br
+ SmcInteractProc \fIinteract_proc\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIdialog_type\fP 1i
+The type of dialog the client wishes to present to the user.
+.IP \fIinteract_proc\fP 1i
+The callback to be invoked when the ``Interact'' message arrives from
+the session manager.
+.IP \fIclient_data\fP 1i
+This pointer to client data will be passed to the
+.PN SmcInteractProc
+callback when the ``Interact'' message arrives.
+.LP
+.eM
+The return value of
+.PN SmcInteractRequest
+is zero for failure and a positive value for success.
+.LP
+The dialog_type argument specifies either
+.PN SmDialogError ,
+indicating that the client wants to start an error dialog, or
+.PN SmDialogNormal ,
+meaning that the client wishes to start a nonerror dialog.
+.LP
+Note that if a shutdown is in progress, the user may have the option of
+cancelling the shutdown. If the shutdown is cancelled, the clients that
+have not interacted yet with the user will receive a
+``Shutdown Cancelled'' message instead of the ``Interact'' message.
+.LP
+The
+.PN SmcInteractProc
+callback will be invoked when the ``Interact'' message arrives from
+the session manager.
+.sM
+.FD 0
+typedef void (*SmcInteractProc)();
+
+void InteractProc\^(\^\fIsmc_conn\fP, \fIclient_data\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIclient_data\fP 1i
+Client data specified when the callback was registered.
+.LP
+.eM
+.LP
+After interacting with the user (in response to an ``Interact'' message),
+you should call
+.PN SmcInteractDone .
+.sM
+.FD 0
+void SmcInteractDone\^(\^\fIsmc_conn\fP, \fIcancel_shutdown\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ Bool \fIcancel_shutdown\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIcancel_shutdown\fP 1i
+If
+.PN True ,
+indicates that the user requests that the entire shutdown be cancelled.
+.LP
+.eM
+The cancel_shutdown argument may only be
+.PN True
+if the corresponding ``Save Yourself'' specified
+.PN True
+for shutdown and
+.PN SmInteractStyleErrors
+or
+.PN SmInteractStyleAny
+for the interact_style.
+.NH 2
+Requesting a Save Yourself
+.XS
+\*(SN Requesting a Save Yourself
+.XE
+.LP
+To request a checkpoint from the session manager, use
+.PN SmcRequestSaveYourself .
+.sM
+.FD 0
+void SmcRequestSaveYourself\^(\^\fIsmc_conn\fP, \fIsave_type\fP\^, \fIshutdown\fP\^, \fIinteract_style\fP\^, \fIfast\fP\^, \fIglobal\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ int \fIsave_type\fP\^;
+.br
+ Bool \fIshutdown\fP\^;
+.br
+ int \fIinteract_style\fP\^;
+.br
+ Bool \fIfast\fP\^;
+.br
+ Bool \fIglobal\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIsave_type\fP 1i
+Specifies the type of information that should be saved.
+.IP \fIshutdown\fP 1i
+Specifies if a shutdown is taking place.
+.IP \fIinteract_style\fP 1i
+The type of interaction allowed with the user.
+.IP \fIfast\fP 1i
+If
+.PN True ,
+the client should save its state as quickly as possible.
+.IP \fIglobal\fP 1i
+Controls who gets the ``Save Yourself.''
+.LP
+.eM
+The save_type, shutdown, interact_style, and
+fast arguments are discussed in more detail in section 5.1.1,
+``The Save Yourself Callback.''
+.LP
+If global is set to
+.PN True ,
+then the resulting ``Save Yourself'' should be
+sent to all clients in the session. For example, a vendor of a
+Uninterruptible Power Supply (UPS) might include a Session
+Management client that would monitor the status of the UPS
+and generate a fast shutdown if the power is about to be lost.
+.LP
+If global is set to
+.PN False ,
+then the ``Save Yourself'' should only be sent to the client that
+requested it.
+.NH 2
+Requesting a Save Yourself Phase 2
+.XS
+\*(SN Requesting a Save Yourself Phase 2
+.XE
+.LP
+In response to a ``Save Yourself, the client may request to be informed
+when all the other clients are quiescent so that it can save their state.
+To do so, use
+.PN SmcRequestSaveYourselfPhase2 .
+.sM
+.FD 0
+Status SmcRequestSaveYourselfPhase2\^(\^\fIsmc_conn\fP, \fIsave_yourself_phase2_proc\fP\^, \fIclient_data\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ SmcSaveYourselfPhase2Proc \fIsave_yourself_phase2_proc\fP\^;
+.br
+ SmPointer \fIclient_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIsave_yourself_phase2_proc\fP 1i
+The callback to be invoked when the ``Save Yourself Phase 2'' message
+arrives from the session manager.
+.IP \fIclient_data\fP 1i
+This pointer to client data will be passed to the
+.PN SmcSaveYourselfPhase2Proc
+callback when the ``Save Yourself Phase 2'' message arrives.
+.LP
+.eM
+The return value of
+.PN SmcRequestSaveYourselfPhase2
+is zero for failure and a positive value for success.
+.LP
+This request is needed by clients that manage other clients (for example,
+window managers, workspace managers, and so on).
+The manager must make sure that all of the clients that are being managed
+are in an idle state so that their state can be saved.
+.NH 2
+Completing a Save Yourself
+.XS
+\*(SN Completing a Save Yourself
+.XE
+.LP
+After saving state in response to a ``Save Yourself'' message,
+you should call
+.PN SmcSaveYourselfDone .
+.sM
+.FD 0
+void SmcSaveYourselfDone\^(\^\fIsmc_conn\fP, \fIsuccess\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ Bool \fIsuccess\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIsuccess\fP 1i
+If
+.PN True ,
+the ``Save Yourself'' operation was completed successfully.
+.LP
+.eM
+Before calling
+.PN SmcSaveYourselfDone ,
+the client must have set each required property at least once since
+the client registered with the session manager.
+.NH 2
+Using Smc Informational Functions
+.XS
+\*(SN Using Smc Informational Functions
+.XE
+.LP
+.sM
+.FD 0
+int SmcProtocolVersion\^(\^\fIsmc_conn\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.FN
+.eM
+.PN SmcProtocolVersion
+returns the major version of the session management protocol
+associated with this session.
+.sp
+.LP
+.sM
+.FD 0
+int SmcProtocolRevision\^(\^\fIsmc_conn\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.FN
+.eM
+.PN SmcProtocolRevision
+returns the minor version of the session management protocol
+associated with this session.
+.sp
+.LP
+.sM
+.FD 0
+char *SmcVendor\^(\^\fIsmc_conn\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.FN
+.eM
+.PN SmcVendor
+returns a string that provides some identification of the owner of
+the session manager. The string should be freed with a call to
+.PN free .
+.sp
+.LP
+.sM
+.FD 0
+char *SmcRelease\^(\^\fIsmc_conn\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.FN
+.eM
+.PN SmcRelease
+returns a string that provides the release number of the session manager.
+The string should be freed with a call to
+.PN free .
+.sp
+.LP
+.sM
+.FD 0
+char *SmcClientID\^(\^\fIsmc_conn\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.FN
+.eM
+.PN SmcClientID
+returns a null-terminated string for the client ID associated with
+this connection. This information was also returned in
+.PN SmcOpenConnection
+(it is provided here for convenience).
+Call
+.PN free
+on this pointer when the client ID is no longer needed.
+.sp
+.LP
+.sM
+.FD 0
+IceConn SmcGetIceConnection\^(\^\fIsmc_conn\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.FN
+.eM
+.PN SmcGetIceConnection
+returns the ICE connection object associated with this session management
+connection object. The ICE connection object can be used to get some
+additional information about the connection. Some of the more useful
+functions which can be used on the IceConn are
+.PN IceConnectionNumber ,
+.PN IceConnectionString ,
+.PN IceLastSentSequenceNumber ,
+.PN IceLastReceivedSequenceNumber ,
+and
+.PN IcePing .
+For further information,
+see the \fIInter-Client Exchange Library\fP standard.
+.NH 2
+Error Handling
+.XS
+\*(SN Error Handling
+.XE
+.LP
+If the client receives an unexpected protocol error from the session manager,
+an error handler is invoked by SMlib. A default error handler exists that
+simply prints the error message to
+.PN stderr
+and exits if the severity of the error is fatal.
+The client can change this error handler by calling the
+.PN SmcSetErrorHandler
+function.
+.sM
+.FD 0
+SmcErrorHandler SmcSetErrorHandler\^(\^\fIhandler\fP\^)
+.br
+ SmcErrorHandler \fIhandler\fP\^;
+.FN
+.IP \fIhandler\fP 1i
+The error handler. You should pass NULL to restore the default handler.
+.LP
+.eM
+.PN SmcSetErrorHandler
+returns the previous error handler.
+.LP
+The
+.PN SmcErrorHandler
+has the following type:
+.sM
+.FD 0
+typedef void (*SmcErrorHandler)();
+
+void ErrorHandler\^(\^\fIsmc_conn\fP, \fIswap\fP\^, \fIoffending_minor_opcode\fP\^, \fIoffending_sequence_num\fP\^, \fIerror_class\fP\^, \fIseverity\fP\^, \fIvalues\fP\^)
+.br
+ SmcConn \fIsmc_conn\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ int \fIoffending_minor_opcode\fP\^;
+.br
+ unsigned long \fIoffending_sequence_num\fP\^;
+.br
+ int \fIerror_class\fP\^;
+.br
+ int \fIseverity\fP\^;
+.br
+ IcePointer \fIvalues\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fIswap\fP 1i
+A flag that indicates if the specified values need byte swapping.
+.IP \fIoffending_minor_opcode\fP 1i
+The minor opcode of the offending message.
+.IP \fIoffending_sequence_num\fP 1i
+The sequence number of the offending message.
+.IP \fIerror_class\fP 1i
+The error class of the offending message.
+.IP \fIseverity\fP 1i
+.PN IceCanContinue ,
+.PN IceFatalToProtocol ,
+or
+.PN IceFatalToConnection .
+.IP \fIvalues\fP 1i
+Any additional error values specific to the minor opcode and class.
+.LP
+.eM
+Note that this error handler is invoked for protocol related errors.
+To install an error handler to be invoked when an IO error occurs, use
+.PN IceSetIOErrorHandler .
+For further information,
+see the \fIInter-Client Exchange Library\fP\^ standard.
+.NH 1
+Session Management Server (Sms) Functions
+.XS
+\*(SN Session Management Server (Sms) Functions
+.XE
+.LP
+This section discusses how Session Management servers:
+.IP \(bu 5
+Initialize the library
+.IP \(bu 5
+Register the client
+.IP \(bu 5
+Send a ``Save Yourself'' message
+.IP \(bu 5
+Send a ``Save Yourself Phase 2'' message
+.IP \(bu 5
+Send an ``Interact'' message
+.IP \(bu 5
+Send a ``Save Complete'' message
+.IP \(bu 5
+Send a ``Die'' message
+.IP \(bu 5
+Cancel a shutdown
+.IP \(bu 5
+Return properties
+.IP \(bu 5
+Ping a client
+.IP \(bu 5
+Clean up after a client disconnects
+.IP \(bu 5
+Use Sms informational functions
+.IP \(bu 5
+Handle errors
+.NH 2
+Initializing the Library
+.XS
+\*(SN Initializing the Library
+.XE
+.LP
+.PN SmsInitialize
+is the first SMlib function that should be called by a
+session manager. It provides information about the session manager
+and registers a callback that will be invoked each
+time a new client connects to the session manager.
+.sM
+.FD 0
+Status SmsInitialize\^(\^\fIvendor\fP, \fIrelease\fP\^, \fInew_client_proc\fP\^, \fImanager_data\fP\^, \fIhost_based_auth_proc\fP\^,
+.br
+ \fIerror_length\fP\^, \fIerror_string_ret\fP\^)
+.br
+ char *\fIvendor\fP\^;
+.br
+ char *\fIrelease\fP\^;
+.br
+ SmsNewClientProc \fInew_client_proc\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ IceHostBasedAuthProc \fIhost_based_auth_proc\fP\^;
+.br
+ int \fIerror_length\fP\^;
+.br
+ char *\fIerror_string_ret\fP\^;
+.FN
+.IP \fIvendor\fP 1i
+A string specifying the session manager vendor.
+.IP \fIrelease\fP 1i
+A string specifying the session manager release number.
+.IP \fInew_client_proc\fP 1i
+Callback to be invoked each time a new client connects to the session manager.
+.IP \fImanager_data\fP 1i
+When the
+.PN SmsNewClientProc
+callback is invoked, this pointer to manager data will be passed.
+.IP \fIhost_based_auth_proc\fP 1i
+Host based authentication callback.
+.IP \fIerror_length\fP 1i
+Length of the error_string_ret argument passed in.
+.IP \fIerror_string_ret\fP 1i
+Returns a null-terminated error message, if any.
+The error_string_ret points to user supplied memory.
+No more than error_length bytes are used.
+.LP
+.eM
+After the
+.PN SmsInitialize
+function is called, the session manager should call the
+.PN IceListenForConnections
+function to listen for new connections. Afterwards, each time a
+client connects, the session manager should call
+.PN IceAcceptConnection .
+.LP
+See section 9, ``Authentication of Clients,''
+for more details on authentication (including host based authentication).
+Also see the \fIInter-Client Exchange Library\fP\^ standard
+for further details on listening for and accepting ICE connections.
+.LP
+Each time a new client connects to the session manager, the
+.PN SmsNewClientProc
+callback is invoked. The session manager obtains a new opaque connection
+object that it should use for all future interaction with the client. At
+this time, the session manager must also register a set of callbacks to
+respond to the different messages that the client might send.
+.sM
+.FD 0
+typedef Status (*SmsNewClientProc)();
+
+Status NewClientProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fImask_ret\fP\^, \fIcallbacks_ret\fP\^, \fIfailure_reason_ret\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ unsigned long *\fImask_ret\fP\^;
+.br
+ SmsCallbacks *\fIcallbacks_ret\fP\^;
+.br
+ char **\fIfailure_reason_ret\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+A new opaque connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fImask_ret\fP 1i
+On return, indicates which callbacks were set by the session manager.
+.IP \fIcallbacks_ret\fP 1i
+On return, contains the callbacks registered by the session manager.
+.IP \fIfailure_reason_ret\fP 1i
+Failure reason returned.
+.LP
+.eM
+If a failure occurs, the
+.PN SmsNewClientProc
+should return a zero status as well as allocate and return a failure
+reason string in failure_reason_ret.
+SMlib will be responsible for freeing this memory.
+.LP
+The session manager must register a set of callbacks to respond to client
+events. The mask_ret argument specifies which callbacks are set.
+All of the callbacks specified in this version of SMlib are mandatory. The
+mask_ret argument is necessary in order to maintain backwards
+compatibility in future versions of the library.
+.LP
+The following values may be ORed together to obtain a mask value:
+.LP
+.Ds 0
+.PN SmsRegisterClientProcMask
+.PN SmsInteractRequestProcMask
+.PN SmsInteractDoneProcMask
+.PN SmsSaveYourselfRequestProcMask
+.PN SmsSaveYourselfP2RequestProcMask
+.PN SmsSaveYourselfDoneProcMask
+.PN SmsCloseConnectionProcMask
+.PN SmsSetPropertiesProcMask
+.PN SmsDeletePropertiesProcMask
+.PN SmsGetPropertiesProcMask
+.De
+.LP
+For each callback, the session manager can register a pointer to manager
+data specific to that callback. This pointer will be passed to the callback
+when it is invoked by SMlib.
+.sM
+.LP
+.Ds 0
+.TA .5i 1i 1.5i
+.ta .5i 1i 1.5i
+typedef struct {
+ struct {
+ SmsRegisterClientProc callback;
+ SmPointer manager_data;
+ } register_client;
+
+ struct {
+ SmsInteractRequestProc callback;
+ SmPointer manager_data;
+ } interact_request;
+
+ struct {
+ SmsInteractDoneProc callback;
+ SmPointer manager_data;
+ } interact_done;
+
+ struct {
+ SmsSaveYourselfRequestProc callback;
+ SmPointer manager_data;
+ } save_yourself_request;
+
+ struct {
+ SmsSaveYourselfPhase2RequestProc callback;
+ SmPointer manager_data;
+ } save_yourself_phase2_request;
+
+ struct {
+ SmsSaveYourselfDoneProc callback;
+ SmPointer manager_data;
+ } save_yourself_done;
+
+ struct {
+ SmsCloseConnectionProc callback;
+ SmPointer manager_data;
+ } close_connection;
+
+ struct {
+ SmsSetPropertiesProc callback;
+ SmPointer manager_data;
+ } set_properties;
+
+ struct {
+ SmsDeletePropertiesProc callback;
+ SmPointer manager_data;
+ } delete_properties;
+
+ struct {
+ SmsGetPropertiesProc callback;
+ SmPointer manager_data;
+ } get_properties;
+
+} SmsCallbacks;
+.De
+.LP
+.eM
+.NH 3
+The Register Client Callback
+.XS
+\*(SN The Register Client Callback
+.XE
+.LP
+The Register Client callback is the first callback that will be
+invoked after the client connects to the session manager. Its type is
+.PN SmsRegisterClientProc .
+.sM
+.FD 0
+typedef Status (*SmsRegisterClientProc();
+
+Status RegisterClientProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fIprevious_id\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ char *\fIprevious_id\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fIprevious_id\fP 1i
+The client ID from the previous session.
+.LP
+.eM
+Before any further interaction takes place with the client,
+the client must be registered with the session manager.
+.LP
+If the client is being restarted from a previous session,
+previous_id will contain a null-terminated string representing
+the client ID from the previous session. Call
+.PN free
+on the previous_id pointer when it is no longer needed.
+If the client is first joining the session, previous_id will be NULL.
+.LP
+If previous_id is invalid, the session manager should not register
+the client at this time. This callback should return a status of zero,
+which will cause an error message to be sent to the client.
+The client should re-register with previous_id set to NULL.
+.LP
+Otherwise, the session manager should register the client with a
+unique client ID by calling the
+.PN SmsRegisterClientReply
+function (to be discussed shortly), and the
+.PN SmsRegisterClientProc
+callback should return a status of one.
+.NH 3
+The Interact Request Callback
+.XS
+\*(SN The Interact Request Callback
+.XE
+.LP
+The Interact Request callback is of type
+.PN SmsInteractRequestProc .
+.sM
+.FD 0
+typedef void (*SmsInteractRequestProc)();
+
+void InteractRequestProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fIdialog_type\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ int \fIdialog_type\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fIdialog_type\fP 1i
+The type of dialog the client wishes to present to the user.
+.LP
+.eM
+When a client receives a ``Save Yourself'' message with an
+interact_style of
+.PN SmInteractStyleErrors
+or
+.PN SmInteractStyleAny ,
+the client may choose to interact with the user.
+Because only one client can interact with the user at a time, the client
+must request to interact with the user. The session manager should keep
+a queue of all clients wishing to interact. It should send an ``Interact''
+message to one client at a time and wait for an ``Interact Done'' message
+before continuing with the next client.
+.LP
+The dialog_type argument specifies either
+.PN SmDialogError ,
+indicating that the client wants to start an error dialog,
+or
+.PN SmDialogNormal ,
+meaning that the client wishes to start a nonerror dialog.
+.LP
+If a shutdown is in progress, the user may have the option of cancelling
+the shutdown. If the shutdown is cancelled (specified in the ``Interact
+Done'' message), the session manager should send a
+``Shutdown Cancelled'' message to each client that requested to interact.
+.NH 3
+The Interact Done Callback
+.XS
+\*(SN The Interact Done Callback
+.XE
+.LP
+When the client is done interacting with the user, the
+.PN SmsInteractDoneProc
+callback will be invoked.
+.sM
+.FD 0
+typedef void (*SmsInteractDoneProc)();
+
+void InteractDoneProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fIcancel_shutdown\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ Bool \fIcancel_shutdown\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fIcancel_shutdown\fP 1i
+Specifies if the user requests that the entire shutdown be cancelled.
+.LP
+.eM
+Note that the shutdown can be cancelled only if the corresponding
+``Save Yourself'' specified
+.PN True
+for shutdown and
+.PN SmInteractStyleErrors
+or
+.PN SmInteractStyleAny
+for the interact_style.
+.NH 3
+The Save Yourself Request Callback
+.XS
+\*(SN The Save Yourself Request Callback
+.XE
+.LP
+The Save Yourself Request callback is of type
+.PN SmsSaveYourselfRequestProc .
+.sM
+.FD 0
+typedef void (*SmsSaveYourselfRequestProc)();
+
+void SaveYourselfRequestProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fIsave_type\fP\^, \fIshutdown\fP\^, \fIinteract_style\fP\^, \fIfast\fP\^, \fIglobal\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ int \fIsave_type\fP\^;
+.br
+ Bool \fIshutdown\fP\^;
+.br
+ int \fIinteract_style\fP\^;
+.br
+ Bool \fIfast\fP\^;
+.br
+ Bool \fIglobal\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fIsave_type\fP 1i
+Specifies the type of information that should be saved.
+.IP \fIshutdown\fP 1i
+Specifies if a shutdown is taking place.
+.IP \fIinteract_style\fP 1i
+The type of interaction allowed with the user.
+.IP \fIfast\fP 1i
+If
+.PN True ,
+the client should save its state as quickly as possible.
+.IP \fIglobal\fP 1i
+Controls who gets the ``Save Yourself.''
+.LP
+.eM
+The Save Yourself Request prompts the session manager to
+initiate a checkpoint or shutdown.
+For information on the save_type, shutdown, interact_style, and fast arguments,
+see section 6.3, ``Sending a Save Yourself Message.''
+.LP
+If global is set to
+.PN True ,
+then the resulting ``Save Yourself'' should be
+sent to all applications. If global is set to
+.PN False ,
+then the ``Save Yourself'' should only be sent to the client
+that requested it.
+.NH 3
+The Save Yourself Phase 2 Request Callback
+.XS
+\*(SN The Save Yourself Phase 2 Request Callback
+.XE
+.LP
+The Save Yourself Phase 2 Request callback is of type
+.PN SmsSaveYourselfPhase2RequestProc .
+.sM
+.FD 0
+typedef void (*SmsSaveYourselfPhase2RequestProc)();
+
+void SmsSaveYourselfPhase2RequestProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.LP
+.eM
+This request is sent by clients that manage other clients (for example,
+window managers, workspace managers, and so on).
+Such managers must make sure that all of the clients that are being managed
+are in an idle state so that their state can be saved.
+.NH 3
+The Save Yourself Done Callback
+.XS
+\*(SN The Save Yourself Done Callback
+.XE
+.LP
+When the client is done saving its state in response to a
+``Save Yourself'' message, the
+.PN SmsSaveYourselfDoneProc
+will be invoked.
+.sM
+.FD 0
+typedef void (*SmsSaveYourselfDoneProc)();
+
+void SaveYourselfDoneProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fIsuccess\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ Bool \fIsuccess\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fIsuccess\fP 1i
+If
+.PN True ,
+the Save Yourself operation was completed successfully.
+.LP
+.eM
+Before the ``Save Yourself Done'' was sent, the client must have
+set each required property at least once since it registered with the
+session manager.
+.NH 3
+The Connection Closed Callback
+.XS
+\*(SN The Connection Closed Callback
+.XE
+.LP
+If the client properly terminates (that is, it calls
+.PN SmcCloseConnection ),
+the
+.PN SmsCloseConnectionProc
+callback is invoked.
+.sM
+.FD 0
+typedef void (*SmsCloseConnectionProc)();
+
+void CloseConnectionProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fIcount\fP\^, \fIreason_msgs\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ char **\fIreason_msgs\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fIcount\fP 1i
+The number of reason messages.
+.IP \fIreason_msgs\fP 1i
+The reasons for closing the connection.
+.LP
+.eM
+The reason_msgs argument will most likely be NULL
+and the count argument zero (0) if resignation is expected by the user.
+Otherwise, it contains a list
+of null-terminated Compound Text strings representing the reason for
+termination. The session manager should display these reason messages
+to the user.
+.LP
+Call
+.PN SmFreeReasons
+to free the reason messages.
+For further information, see section 8, ``Freeing Data.''
+.NH 3
+The Set Properties Callback
+.XS
+\*(SN The Set Properties Callback
+.XE
+.LP
+When the client sets session management properties, the
+.PN SmsSetPropertiesProc
+callback will be invoked.
+.sM
+.FD 0
+typedef void (*SmsSetPropertiesProc)();
+
+void SetPropertiesProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fInum_props\fP\^, \fIprops\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ int \fInum_props\fP\^;
+.br
+ SmProp **\fIprops\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fInum_props\fP 1i
+The number of properties.
+.IP \fIprops\fP 1i
+The list of properties to set.
+.LP
+.eM
+The properties are specified as an array of property pointers.
+For a description of session management properties and the
+.PN SmProp
+structure, see section 7, ``Session Management Properties.''
+.LP
+Previously set property values may be over-written. Some properties
+have predefined semantics.
+The session manager is required to store
+nonpredefined properties.
+.LP
+To free each property, use
+.PN SmFreeProperty .
+For further information, see section 8, ``Freeing Data.''
+You should free the actual array of pointers with a call to
+.PN free .
+.NH 3
+The Delete Properties Callback
+.XS
+\*(SN The Delete Properties Callback
+.XE
+.LP
+When the client deletes session management properties, the
+.PN SmsDeletePropertiesProc
+callback will be invoked.
+.sM
+.FD 0
+typedef void (*SmsDeletePropertiesProc)();
+
+void DeletePropertiesProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^, \fInum_props\fP\^, \fIprop_names\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.br
+ int \fInum_props\fP\^;
+.br
+ char **\fIprop_names\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.IP \fInum_props\fP 1i
+The number of properties.
+.IP \fIprop_names\fP 1i
+The list of properties to delete.
+.LP
+.eM
+The properties are specified as an array of strings.
+For a description of session management properties and the
+.PN SmProp
+structure, see section 7, ``Session Management Properties.''
+.NH 3
+The Get Properties Callback
+.XS
+\*(SN The Get Properties Callback
+.XE
+.LP
+The
+.PN SmsGetPropertiesProc
+callback is invoked when the client wants to retrieve properties it set.
+.sM
+.FD 0
+typedef void (*SmsGetPropertiesProc)();
+
+void GetPropertiesProc\^(\^\fIsms_conn\fP, \fImanager_data\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ SmPointer \fImanager_data\fP\^;
+.FN
+.IP \fIsmc_conn\fP 1i
+The session management connection object.
+.IP \fImanager_data\fP 1i
+Manager data specified when the callback was registered.
+.LP
+.eM
+The session manager should respond by calling
+.PN SmsReturnProperties .
+All of the properties set for this client should be returned.
+.NH 2
+Registering the Client
+.XS
+\*(SN Registering the Client
+.XE
+.LP
+To register a client (in response to a
+.PN SmsRegisterClientProc
+callback), use
+.PN SmsRegisterClientReply .
+.sM
+.FD 0
+Status SmsRegisterClientReply\^(\^\fIsms_conn\fP, \fIclient_id\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ char *\fIclient_id\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fIclient_id\fP 1i
+A null-terminated string representing a unique client ID.
+.LP
+.eM
+The return value of
+.PN SmsRegisterClientReply
+is zero for failure and a positive value for success. Failure will
+occur if SMlib can not allocate memory to hold a copy of the client ID
+for it's own internal needs.
+.LP
+If a non-NULL previous_id was specified when the client registered
+itself, client_id should be identical to previous_id.
+.LP
+Otherwise, client_id should be a unique ID freshly generated by
+the session manager. In addition, the session manager should send
+a ``Save Yourself'' message with type = Local, shutdown = False,
+interact-style = None, and fast = False immediately after registering the
+client.
+.LP
+Note that once a client ID has been assigned to the client, the client keeps
+this ID indefinitely. If the client is terminated and restarted, it
+will be reassigned the same ID. It is desirable to be able to pass
+client IDs around from machine to machine, from user to user, and
+from session manager to session manager, while retaining the
+identity of the client. This, combined with the indefinite
+persistence of client IDs, means that client IDs need to be globally
+unique.
+.LP
+You should call the
+.PN SmsGenerateClientID
+function to generate a globally unique client ID.
+.sM
+.FD 0
+char *SmsGenerateClientID\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.LP
+.eM
+NULL will be returned if the ID could not be generated. Otherwise, the return
+value of the function is the client ID. It should be freed with a call to
+.PN free
+when no longer needed.
+.NH 2
+Sending a Save Yourself Message
+.XS
+\*(SN Sending a Save Yourself Message
+.XE
+.LP
+To send a ``Save Yourself'' to a client, use
+.PN SmsSaveYourself .
+.sM
+.FD 0
+void SmsSaveYourself\^(\^\fIsms_conn\fP, \fIsave_type\fP\^, \fIshutdown\fP\^, \fIinteract_style\fP\^, \fIfast\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ int \fIsave_type\fP\^;
+.br
+ Bool \fIshutdown\fP\^;
+.br
+ int \fIinteract_style\fP\^;
+.br
+ Bool \fIfast\fP\^;
+.FN
+.ne 7
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fIsave_type\fP 1i
+Specifies the type of information that should be saved.
+.IP \fIshutdown\fP 1i
+Specifies if a shutdown is taking place.
+.IP \fIinteract_style\fP 1i
+The type of interaction allowed with the user.
+.IP \fIfast\fP 1i
+If
+.PN True ,
+the client should save its state as quickly as possible.
+.LP
+.eM
+The session manager sends a ``Save Yourself'' message to a client
+either to checkpoint it or just before
+termination so that it can save its state.
+The client responds with zero or more ``Set Properties'' messages
+to update the properties indicating how to restart the client.
+When all the properties have been set, the client sends a
+``Save Yourself Done'' message.
+.LP
+If interact_style is
+.PN SmInteractStyleNone ,
+the client must not interact with the
+user while saving state.
+If interact_style is
+.PN SmInteractStyleErrors ,
+the client may interact with the user only if an error condition arises. If
+interact_style is
+.PN SmInteractStyleAny ,
+then the client may interact with the user for any purpose.
+The client must send an ``Interact Request'' message
+and wait for an ``Interact'' message from the session manager
+before it can interact with the user. When the client is done
+interacting with the user, it should send an ``Interact Done'' message.
+The ``Interact Request'' message can be sent any time after a
+``Save Yourself'' and before a ``Save Yourself Done.''
+.LP
+If save_type is
+.PN SmSaveLocal ,
+the client must update the properties to reflect its current state.
+Specifically, it should save enough information to restore
+the state as seen by the user of this client. It should not affect the
+state as seen by other users. If save_type is
+.PN SmSaveGlobal
+the user wants the client to commit all of its data to permanent,
+globally accessible storage. If save_type is
+.PN SmSaveBoth ,
+the client should do both of these (it should first commit the data to
+permanent storage before updating its properties).
+.LP
+The shutdown argument specifies whether the session is being
+shut down. The interaction is different depending on whether or not
+shutdown is set. If not shutting down, then the client can save and
+resume normal operation. If shutting down, the client must save and
+then must prevent interaction until it receives either a ``Die''
+or a ``Shutdown Cancelled,'' because anything the user does after
+the save will be lost.
+.LP
+The fast argument specifies that the client should save its state
+as quickly as possible. For example, if the session manager knows that
+power is about to fail, it should set fast to
+.PN True .
+.NH 2
+Sending a Save Yourself Phase 2 Message
+.XS
+\*(SN Sending a Save Yourself Phase 2 Message
+.XE
+.LP
+In order to send a ``Save Yourself Phase 2'' message to a client, use
+.PN SmsSaveYourselfPhase2 .
+.sM
+.FD 0
+void SmsSaveYourselfPhase2\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.LP
+.eM
+The session manager sends this message to a client that has previously sent a
+``Save Yourself Phase 2 Request'' message. This message informs the
+client that all other clients are in a fixed state and this client can save
+state that is associated with other clients.
+.NH 2
+Sending an Interact Message
+.XS
+\*(SN Sending an Interact Message
+.XE
+.LP
+To send an ``Interact'' message to a client, use
+.PN SmsInteract .
+.sM
+.FD 0
+void SmsInteract\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.LP
+.eM
+The ``Interact'' message grants the client the privilege of interacting
+with the user. When the client is done interacting with the user, it must
+send an ``Interact Done'' message to the session manager.
+.NH 2
+Sending a Save Complete Message
+.XS
+\*(SN Sending a Save Complete Message
+.XE
+.LP
+To send a ``Save Complete'' message to a client, use
+.PN SmsSaveComplete .
+.sM
+.FD 0
+void SmsSaveComplete\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.LP
+.eM
+The session manager sends this message when it is done with a checkpoint.
+The client is then free to change its state.
+.NH 2
+Sending a Die Message
+.XS
+\*(SN Sending a Die Message
+.XE
+.LP
+To send a ``Die'' message to a client, use
+.PN SmsDie .
+.sM
+.FD 0
+void SmsDie\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.LP
+.eM
+Before the session manager terminates, it should wait for a
+``Connection Closed'' message from each client that it sent
+a ``Die'' message to, timing out appropriately.
+.NH 2
+Cancelling a Shutdown
+.XS
+\*(SN Cancelling a Shutdown
+.XE
+.LP
+To cancel a shutdown, use
+.PN SmsShutdownCancelled .
+.sM
+.FD 0
+void SmsShutdownCancelled\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.LP
+.eM
+The client can now continue as if the shutdown had never happened.
+If the client has not sent a ``Save Yourself Done'' message yet, it can
+either abort the save and send a ``Save Yourself Done''
+with the success argument set to
+.PN False ,
+or it can continue with the save and send a ``Save Yourself Done''
+with the success argument set to reflect the outcome of the save.
+.NH 2
+Returning Properties
+.XS
+\*(SN Returning Properties
+.XE
+.LP
+In response to a ``Get Properties'' message, the session manager should call
+.PN SmsReturnProperties .
+.sM
+.FD 0
+void SmsReturnProperties\^(\^\fIsms_conn\fP\^, \fInum_props\fP\^, \fIprops\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ int \fInum_props\fP\^;
+.br
+ SmProp **\fIprops\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fInum_props\fP 1i
+The number of properties.
+.IP \fIprops\fP 1i
+The list of properties to return to the client.
+.LP
+.eM
+The properties are returned as an array of property pointers.
+For a description of session management properties and the
+.PN SmProp
+structure, see section 7, ``Session Management Properties.''
+.NH 2
+Pinging a Client
+.XS
+\*(SN Pinging a Client
+.XE
+.LP
+To check that a client is still alive, you should use the
+.PN IcePing
+function provided by the ICE library.
+To do so, the ICE
+connection must be obtained using the
+.PN SmsGetIceConnection
+(see section 6.12, ``Using Sms Informational Functions'').
+.LP
+.sM
+.FD 0
+void IcePing\^(\^\fIice_conn\fP, \fIping_reply_proc\fP\^, \fIclient_data\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePingReplyProc \fIping_reply_proc\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+A valid ICE connection object.
+.IP \fIping_reply_proc\fP 1i
+The callback to invoke when the Ping reply arrives.
+.IP \fIclient_data\fP 1i
+This pointer will be passed to the
+.PN IcePingReplyProc
+callback.
+.LP
+.eM
+When the Ping reply is ready (if ever), the
+.PN IcePingReplyProc
+callback will be invoked. A session manager should have some sort
+of timeout period, after which it assumes the client has unexpectedly died.
+.LP
+.sM
+.FD 0
+typedef void (*IcePingReplyProc)();
+
+void PingReplyProc\^(\^\fIice_conn\fP, \fIclient_data\fP\^)
+.br
+ IceConn \fIice_conn\fP\^;
+.br
+ IcePointer \fIclient_data\fP\^;
+.FN
+.IP \fIice_conn\fP 1i
+The ICE connection object.
+.IP \fIclient_data\fP 1i
+The client data specified in the call to
+.PN IcePing .
+.LP
+.eM
+.NH 2
+Cleaning Up After a Client Disconnects
+.XS
+\*(SN Cleaning Up After a Client Disconnects
+.XE
+.LP
+When the session manager receives a ``Connection Closed'' message or
+otherwise detects that the client aborted the connection, it should
+call the
+.PN SmsCleanUp
+function in order to free up the connection object.
+.sM
+.FD 0
+void SmsCleanUp\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.LP
+.eM
+.NH 2
+Using Sms Informational Functions
+.XS
+\*(SN Using Sms Informational Functions
+.XE
+.LP
+.sM
+.FD 0
+int SmsProtocolVersion\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.LP
+.eM
+.PN SmsProtocolVersion
+returns the major version of the session management protocol
+associated with this session.
+.sp
+.LP
+.sM
+.FD 0
+int SmsProtocolRevision\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.LP
+.eM
+.PN SmsProtocolRevision
+returns the minor version of the session management protocol
+associated with this session.
+.sp
+.LP
+.sM
+.FD 0
+char *SmsClientID\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.LP
+.eM
+.PN SmsClientID
+returns a null-terminated string for the client ID associated with
+this connection.
+You should call
+.PN free
+on this pointer when the client ID is no longer needed.
+.sp
+.LP
+To obtain the host name of a client, use
+.PN SmsClientHostName .
+This host name will be needed to restart the client.
+.sM
+.FD 0
+char *SmsClientHostName\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.eM
+The string returned is of the form \fIprotocol\fP\^/\^\fIhostname\fP\^,
+where \fIprotocol\fP\^ is one of {tcp, decnet, local}.
+You should call
+.PN free
+on the string returned when it is no longer needed.
+.sp
+.LP
+.sM
+.FD 0
+IceConn SmsGetIceConnection\^(\^\fIsms_conn\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.FN
+.eM
+.PN SmsGetIceConnection
+returns the ICE connection object associated with this session management
+connection object. The ICE connection object can be used to get some
+additional information about the connection. Some of the more useful
+functions which can be used on the IceConn are
+.PN IceConnectionNumber ,
+and
+.PN IceLastSequenceNumber .
+For further information,
+see the \fIInter-Client Exchange Library\fP\^ standard.
+.NH 2
+Error Handling
+.XS
+\*(SN Error Handling
+.XE
+.LP
+If the session manager receives an unexpected protocol error from a client,
+an error handler is invoked by SMlib. A default error handler exists which
+simply prints the error message (it does not exit). The session manager can
+change this error handler by calling
+.PN SmsSetErrorHandler .
+.sM
+.FD 0
+SmsErrorHandler SmsSetErrorHandler\^(\^\fIhandler\fP\^)
+.br
+ SmsErrorHandler \fIhandler\fP\^;
+.FN
+.IP \fIhandler\fP 1i
+The error handler.
+You should pass NULL to restore the default handler.
+.LP
+.eM
+.PN SmsSetErrorHandler
+returns the previous error handler.
+The
+.PN SmsErrorHandler
+has the following type:
+.sM
+.FD 0
+typedef void (*SmsErrorHandler)();
+
+void ErrorHandler\^(\^\fIsms_conn\fP, \fIswap\fP\^, \fIoffending_minor_opcode\fP\^, \fIoffending_sequence_num\fP\^, \fIerror_class\fP\^, \fIseverity\fP\^, \fIvalues\fP\^)
+.br
+ SmsConn \fIsms_conn\fP\^;
+.br
+ Bool \fIswap\fP\^;
+.br
+ int \fIoffending_minor_opcode\fP\^;
+.br
+ unsigned long \fIoffending_sequence_num\fP\^;
+.br
+ int \fIerror_class\fP\^;
+.br
+ int \fIseverity\fP\^;
+.br
+ IcePointer \fIvalues\fP\^;
+.FN
+.IP \fIsms_conn\fP 1i
+The session management connection object.
+.IP \fIswap\fP 1i
+A flag which indicates if the specified values need byte swapping.
+.IP \fIoffending_minor_opcode\fP 1i
+The minor opcode of the offending message.
+.IP \fIoffending_sequence_num\fP 1i
+The sequence number of the offending message.
+.IP \fIerror_class\fP 1i
+The error class of the offending message.
+.IP \fIseverity\fP 1i
+.PN IceCanContinue ,
+.PN IceFatalToProtocol ,
+or
+.PN IceFatalToConnection .
+.IP \fIvalues\fP 1i
+Any additional error values specific to the minor opcode and class.
+.LP
+.eM
+Note that this error handler is invoked for protocol related errors.
+To install an error handler to be invoked when an IO error occurs, use
+.PN IceSetIOErrorHandler .
+For further information,
+see the \fIInter-Client Exchange Library\fP\^ standard.
+.NH 1
+Session Management Properties
+.XS
+\*(SN Session Management Properties
+.XE
+.LP
+Each property is defined by the
+.PN SmProc
+structure:
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ char *name; /* name of property */
+ char *type; /* type of property */
+ int num_vals; /* number of values */
+ SmPropValue *vals; /* the list of values */
+} SmProp;
+
+typedef struct {
+ int length; /* the length of the value */
+ SmPointer value; /* the value */
+} SmPropValue;
+.De
+.LP
+The X Session Management Protocol defines a list of predefined properties,
+several of which are required to be set by the client. The following table
+specifies the predefined properties and indicates which ones are required.
+Each property has a type associated with it.
+.LP
+A type of SmCARD8 indicates that there is a single 1-byte value.
+A type of SmARRAY8 indicates that there is a single array of bytes.
+A type of SmLISTofARRAY8 indicates that there is a list of array of bytes.
+.LP
+.TS H
+l l l c .
+_
+.sp 6p
+.B
+Name Type POSIX Type Required
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+SmCloneCommand OS-specific SmLISTofARRAY8 Yes
+SmCurrentDirectory OS-specific SmARRAY8 No
+SmDiscardCommand OS-specific SmLISTofARRAY8 No*
+SmEnvironment OS-specific SmLISTofARRAY8 No
+SmProcessID OS-specific SmARRAY8 No
+SmProgram OS-specific SmARRAY8 Yes
+SmRestartCommand OS-specific SmLISTofARRAY8 Yes
+SmResignCommand OS-specific SmLISTofARRAY8 No
+SmRestartStyleHint SmCARD8 SmCARD8 No
+SmShutdownCommand OS-specific SmLISTofARRAY8 No
+SmUserID SmARRAY8 SmARRAY8 Yes
+.sp 6p
+_
+.TE
+.LP
+* Required if any state is stored in an external repository
+(for example, state file).
+.IP \(bu 5
+SmCloneCommand
+.IP
+This is like the SmRestartCommand,
+except it restarts a copy of the
+application. The only difference is that the application does not
+supply its client ID at register time. On POSIX systems, this should
+be of type SmLISTofARRAY8.
+.IP \(bu 5
+SmCurrentDirectory
+.IP
+On POSIX-based systems, this specifies the value of the current directory that
+needs to be set up prior to starting the SmProgram and should of type SmARRAY8.
+.IP \(bu 5
+SmDiscardCommand
+.IP
+The discard command contains a command that when delivered to the host that
+the client is running on (determined from the connection), will
+cause it to discard any information about the current state. If this command
+is not specified, the Session Manager will assume that all of the client's
+state is encoded in the SmRestartCommand.
+On POSIX systems, the type should be SmLISTofARRAY8.
+.IP \(bu 5
+SmEnvironment
+.IP
+On POSIX based systems, this will be of type SmLISTofARRAY8,
+where the ARRAY8s alternate between environment variable name and environment
+variable value.
+.IP \(bu 5
+SmProcessID
+.IP
+This specifies an OS-specific identifier for the process. On POSIX
+systems, this should contain the return value of
+.PN getpid
+turned into a Latin-1 (decimal) string.
+.IP \(bu 5
+SmProgram
+.IP
+This is the name of the program that is running.
+On POSIX systems, this should be first parameter passed to
+.PN execve
+and should be of type SmARRAY8.
+.IP \(bu 5
+SmRestartCommand
+.IP
+The restart command contains a command that, when delivered to the
+host that the client is running on (determined from the connection),
+will cause the client to restart in
+its current state. On POSIX-based systems, this is of type SmLISTofARRAY8,
+and each of the elements in the array represents an element in the
+.PN argv
+array.
+This restart command should ensure that the client restarts with the specified
+client-ID.
+.IP \(bu 5
+SmResignCommand
+.IP
+A client that sets the SmRestartStyleHint to SmRestartAnway
+uses this property to specify a command
+that undoes the effect of the client and removes
+any saved state.
+As an example, consider a user that runs
+.PN xmodmap ,
+which registers with the Session Manager, sets SmRestartStyleHint to
+SmRestartAnyway, and then terminates. To allow the Session Manager (at the
+user's request) to undo this,
+.PN xmodmap
+would register a SmResignCommand that undoes the effects of the
+.PN xmodmap .
+.IP \(bu 5
+SmRestartStyleHint
+.IP
+If the RestartStyleHint property is present, it will contain the
+style of restarting the client prefers. If this style is not specified,
+SmRestartIfRunning is assumed.
+The possible values are as follows:
+.TS H
+l n.
+_
+.sp 6p
+.B
+Name Value
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+SmRestartIfRunning 0
+SmRestartAnyway 1
+SmRestartImmediately 2
+SmRestartNever 3
+.sp 6p
+_
+.TE
+.IP
+The SmRestartIfRunning style is used in the usual case. The client should
+be restarted in the next session if it was running at the end of the
+current session.
+.IP
+The SmRestartAnyway style is used to tell the Session Manager
+that the application should be restarted in the next session
+even if it exits before the current session is terminated.
+It should be noted that this is only
+a hint and the Session Manager will follow the policies specified
+by its users in determining what applications to restart.
+.IP
+A client that uses SmRestartAnyway should also set the
+SmResignCommand and SmShutdownCommand properties to commands
+that undo the state of the client after it exits.
+.IP
+The SmRestartImmediately style is like SmRestartAnyway,
+but, in addition, the client is meant to run continuously.
+If the client exits,
+the Session Manager should try to restart it in the current session.
+.IP
+SmRestartNever style specifies that the client
+does not wish to be restarted in the next session.
+.IP \(bu 5
+SmShutdownCommand
+.IP
+This command is executed at shutdown time to clean up after a client that
+is no longer running but retained its state by setting SmRestartStyleHint
+to SmRestartAnyway.
+The client must not remove any saved state as the client is still part of
+the session.
+As an example, consider a client that turns on a camera at start up time.
+This client then exits.
+At session shutdown, the user wants the camera turned off.
+This client would set the SmRestartStyleHint to SmRestartAnyway
+and would register a SmShutdownCommand that would turn off the camera.
+.IP \(bu 5
+SmUserID
+.IP
+Specifies the user ID. On POSIX-based systems, this
+will contain the user's name (the pw_name member of struct
+.PN passwd ).
+.NH 1
+Freeing Data
+.XS
+\*(SN Freeing Data
+.XE
+.LP
+To free an individual property, use
+.PN SmFreeProperty .
+.sM
+.FD 0
+void SmFreeProperty\^(\^\fIprop\fP\^)
+.br
+ SmProp *\fIprop\fP\^;
+.FN
+.IP \fIprop\fP 1i
+The property to free.
+.LP
+.eM
+.LP
+To free the reason strings from the
+.PN SmsCloseConnectionProc
+callback, use
+.PN SmFreeReasons .
+.sM
+.FD 0
+void SmFreeReasons\^(\^\fIcount\fP, \fIreasons\fP\^)
+.br
+ int \fIcount\fP\^;
+.br
+ char **\fIreasons\fP\^;
+.FN
+.IP \fIcount\fP 1i
+The number of reason strings.
+.IP \fIreasons\fP 1i
+The list of reason strings to free.
+.LP
+.eM
+.NH 1
+Authentication of Clients
+.XS
+\*(SN Authentication of Clients
+.XE
+.LP
+As stated earlier, the session management protocol is layered on top
+of ICE. Authentication occurs at two levels in the ICE protocol:
+.IP \(bu 5
+The first is when an ICE connection is opened.
+.IP \(bu 5
+The second is when a Protocol Setup occurs on an ICE connection.
+.LP
+The authentication methods that are available are implementation-dependent
+(that is., dependent on the ICElib and SMlib implementations in use).
+For further information,
+see the \fIInter-Client Exchange Library\fP\^ standard.
+.NH 1
+Working in a Multi-Threaded Environment
+.XS
+\*(SN Working in a Multi-Threaded Environment
+.XE
+.LP
+To declare that multiple threads in an application will be using SMlib
+(or any other library layered on top of ICElib), you should call
+.PN IceInitThreads .
+For further information,
+see the \fIInter-Client Exchange Library\fP\^ standard.
+.NH 1
+Acknowledgements
+.XS
+\*(SN Acknowledgements
+.XE
+.LP
+Thanks to the following people for their participation in the
+X Session Management design: Jordan Brown, Ellis Cohen,
+Donna Converse, Stephen Gildea, Vania Joloboff, Stuart Marks, Bob Scheifler,
+Ralph Swick, and Mike Wexler.
+.LP
+.EH ''''
+.OH ''''
+.YZ 3
diff --git a/specs/SM/xsmp.ms b/specs/SM/xsmp.ms
new file mode 100644
index 0000000..209c9ca
--- /dev/null
+++ b/specs/SM/xsmp.ms
@@ -0,0 +1,1620 @@
+.\" Use tbl, -ms, and macros.t
+.\" $Xorg: xsmp.ms,v 1.3 2000/08/17 19:42:19 cpqbld Exp $
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.TL
+\s+2\fBX Session Management Protocol\fP\s-2
+.sp
+X Consortium Standard
+.sp
+X Version 11, Release 6.4
+.AU
+Mike Wexler
+.AI
+Kubota Pacific Computer, Inc.
+.AB
+.LP
+This document specifies a protocol that facilitates the management of groups
+of client applications by a session manager. The session manager can cause
+clients to save their state, to shut down, and to be restarted into a
+previously saved state. This protocol is layered on top of the X
+Consortium's ICE protocol.
+.AE
+.LP
+.bp
+\&
+.sp 8
+.LP
+.DS C
+X Window System is a trademark of X Consortium, Inc.
+.sp
+Copyright \(co 1992, 1993, 1994 X Consortium
+.DE
+.sp 3
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.af PN i
+.EF ''\\\\n(PN''
+.OF ''\\\\n(PN''
+.bp 1
+.af PN 1
+.EH '\fBX Session Management Protocol\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Session Management Protocol\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB\\\\n(PN\fP''
+.OF ''\fB\\\\n(PN\fP''
+.nH 1 "Acknowledgements"
+.LP
+First I would like to thank the entire ICCCM and Intrinsics working groups for
+the comments and suggestions. I would like to make special thanks to the
+following people (in alphabetical order), Jordan Brown, Ellis Cohen, Donna
+Converse, Vania Joloboff, Stuart Marks, Ralph Mor and Bob Scheifler.
+.nH 1 "Definitions and Goals"
+.LP
+The purpose of the X Session Management Protocol (XSMP) is to provide a
+uniform mechanism for users to save and restore their sessions. A
+\fIsession\fP is a group of clients, each of which has a particular state.
+The session is controlled by a network service called the \fIsession
+manager\fP\^. The session manager issues commands to its clients on behalf
+of the user. These commands may cause clients to save their state or to
+terminate. It is expected that the client will save its state in such a
+way that the client can be restarted at a later time and resume its
+operation as if it had never been terminated. A client's state might
+include information about the file currently being edited, the current
+position of the insertion point within the file, or the start of an
+uncommitted transaction.
+The means by which clients are
+restarted is unspecified by this protocol.
+.LP
+For purposes of this protocol, a \fIclient\fP of the session manager is
+defined as a connection to the session manager. A client is typically,
+though not necessarily, a process running an application program connected
+to an X Window System display. However, a client may be connected to more
+than one X display or not be connected to any X displays at all.
+.LP
+This protocol is layered on top of the X Consortium's ICE protocol and relies on
+the ICE protocol to handle connection management and authentication.
+.LP
+.nH 1 "Overview of the Protocol"
+.LP
+Clients use XSMP to register themselves with the session manager (SM). When
+a client starts up, it should connect to the SM. The client should remain
+connected for as long as it runs. A client may resign from the session by
+issuing the proper protocol messages before disconnecting. Termination of
+the connection without notice will be taken as an indication that the client
+died unexpectedly.
+.LP
+Clients are expected to save their state in such a way as to allow multiple
+instantiations of themselves to be managed independently. A unique value
+called a \fIclient-ID\fP is provided by the protocol for the purpose of
+disambiguating multiple instantiations of clients. Clients may use this ID,
+for example, as part of a filename in which to store the state for a
+particular instantiation. The client-ID should be saved as part of the
+command used to restart this client (the \fIRestartCommand\fP\^) so that the
+client will retain the same ID after it is restarted. Certain small pieces
+of state might also be stored in the RestartCommand. For example, an X11 client
+might place a `\-twoWindow' option in its RestartCommand to indicate that it
+should start up in two window mode when it is restarted.
+.LP
+The client finds the network address of the SM in a system-dependent way.
+On POSIX systems an environment variable called SESSION_MANAGER will contain
+a list of network IDs. Each id will contain the transport name followed by a
+slash and the (transport-specific)
+address. A TCP/IP address would look like this:
+.ID
+ \fCtcp/\fP\fIhostname\fP\^\fC:\fP\^\fIportnumber\fP
+.DE
+where the hostname is a fully qualified domain name.
+A Unix Domain address looks like this:
+.ID
+ \fClocal/\fP\fIhostname\fP\^\fC:\fP\^\fIpath\fP
+.DE
+A DECnet address would look like this:
+.ID
+ \fCdecnet/\fP\fInodename\fP\^\fC::\fP\^\fIobjname\fP
+.DE
+If multiple network IDs are specified, they should be separated by commas.
+.NT Rationale
+There was much discussion over whether the XSMP protocol should use X as
+the transport protocol or whether it should use its own independent
+transport. It was decided that it would use an independent protocol for
+several reasons. First, the Session Manager should be able to
+manage programs that
+do not maintain an X connection. Second, the X protocol is not appropriate to
+use as a general-purpose transport protocol. Third, a session might
+span multiple displays.
+.LP
+The protocol is connection based, because there is no other way for the SM
+to determine reliably when clients terminate.
+.LP
+It should be noted that this protocol introduces another single point of
+failure into the system. Although it is possible for clients to continue
+running after the SM has exited, this will probably not be the case in
+normal practice. Normally the program that starts the SM will consider the
+session to be terminated when the SM exits (either normally or abnormally).
+.LP
+To get around this would require some sort of
+rendezvous server that would also introduce a single point of failure. In the
+absence of a generally available rendezvous server, XSMP is kept simple in
+the hopes of making simple reliable SMs.
+.NE
+.LP
+Some clients may wish to manage the programs they start. For example, a
+mail program could start a text editor for editing the text of a mail
+message. A client that does this is a session manager itself;
+it should supply the clients it starts with the appropriate connection
+information (i.e., the SESSION_MANAGER environment variable) that specifies
+a connection to itself instead of to the top level session manager.
+.LP
+Each client has associated with it a list of properties.
+A property set by one client is not visible to any other client.
+These properties are used for the client to inform the SM of the client's
+current state.
+When a client initially connects to the SM, there are no properties set.
+.nH 1 "Data Types"
+.LP
+XSMP messages contain several types of data. Both the SM and the client
+always send messages in their native byte order. Thus, both sides may need
+to byte-swap the messages received. The need to do byte-swapping is
+determined at run-time by the ICE protocol.
+.LP
+If an invalid value is specified for a field of any of the enumerated types, a
+.PN BadValue
+error message must be sent by the receiver of the message to the sender of the
+message.
+.br
+.ne 6
+.TS H
+l lw(4.5i).
+_
+.sp 6p
+.B
+Type Name Description
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+BOOL T{
+.PN False
+or
+.PN True
+T}
+INTERACT_STYLE T{
+.PN None ,
+.PN Errors ,
+or
+.PN Any
+T}
+DIALOG_TYPE T{
+.PN Error
+or
+.PN Normal
+T}
+SAVE_TYPE T{
+.PN Global ,
+.PN Local ,
+or
+.PN Both
+T}
+CARD8 a one-byte unsigned integer
+CARD16 a two-byte unsigned integer
+CARD32 a four-byte unsigned integer
+ARRAY8 a sequence of CARD8s
+LISTofARRAY8 a sequence of ARRAY8s
+PROPERTY a property name (an ARRAY8), a type name, and a value of that type
+LISTofPROPERTY T{
+a counted collection of \%PROPERTYs.
+T}
+.sp 6p
+_
+.TE
+.nH 1 "Protocol Setup and Message Format"
+.LP
+To start the XSMP protocol, the client sends the server an ICE
+.PN ProtocolSetup
+message.
+All XSMP messages are in the standard ICE message format. The message's major
+opcode is assigned to XSMP by ICE at run-time. The different parties
+(client and SM) may be assigned different major opcodes for XSMP. Once
+assigned, all XSMP messages issued by this party will use the same major
+opcode. The message's minor opcode specifies which protocol message this
+message contains.
+.nH 1 "Client Identification String"
+.LP
+A client ID is a string of XPCS characters encoded in ISO Latin 1 (ISO
+8859-1). No null characters are allowed in this string. The client ID
+string is used in the
+.PN Register\%Client
+and
+.PN Register\%ClientReply
+messages.
+.LP
+Client IDs consist of the pieces described below. The ID is
+formed by concatenating the pieces in sequence, without
+separator characters. All pieces are padded on the left
+with '0' characters
+so as to fill the specified length.
+Decimal numbers are
+encoded using the characters `0' through `9', and
+hexadecimal numbers using the characters `0' through `9'
+and `A' through `F'.
+.IP \(bu 4
+Version. This is currently the character `1'.
+.IP \(bu 4
+Address type and address. The address type will be one of
+.DS
+.ta 0.5i
+`1' a 4-byte IP address encoded as 8 hexadecimal digits
+`2' a 6-byte DECNET address encoded as 12 hexadecimal digits
+.DE
+.IP
+The address is the one of the network addresses of the machine where the
+session manager (not the client) is running. For example, the IP address
+198.112.45.11 would be encoded as the string \*QC6702D0B\*U.
+.IP \(bu 4
+Time stamp. A 13-digit decimal number specifying the number of
+milliseconds since 00:00:00 UTC, January 1, 1970.
+.IP \(bu 4
+Process-ID type and process-ID. The process-ID type will be one of
+.DS
+.ta 0.5i
+`1' a POSIX process-ID encoded as a 10-digit decimal number.
+.DE
+.IP
+The process-ID is the process-ID of the session manager, not of a client.
+.IP \(bu 4
+Sequence number. This is a four-digit decimal number. It is incremented
+every time the session manager creates an ID. After reaching \*Q9999\*U it
+wraps to \*Q0000\*U.
+.NT "Rationale"
+Once a client ID has been assigned to the client, the client keeps
+this ID indefinitely. If the client is terminated and restarted, it
+will be reassigned the same ID. It is desirable to be able to pass
+client IDs around from machine to machine, from user to user, and
+from session manager to session manager, while retaining the
+identity of the client. This, combined with the indefinite
+persistence of client IDs, means that client IDs need to be globally
+unique. The construction specified above will ensure that any
+client ID created by any user, session manager, and machine will be
+different from any other.
+.NE
+.nH 1 "Protocol"
+.LP
+The protocol consists of a sequence of messages as described below. Each
+message type is specified by an ICE minor opcode. A given message type is
+sent either from a client to the session manager or from the session manager
+to a client; the appropriate direction is listed with each message's
+description. For each message type, the set of
+valid responses and possible error
+messages are listed. The ICE severity is given in parentheses following
+each error class.
+.LP
+.sM
+.PN RegisterClient
+[Client \(-> SM]
+.RS
+.LP
+\fIprevious-ID\fP\^: ARRAY8
+.LP
+Valid Responses:
+.PN RegisterClientReply
+.LP
+Possible Errors:
+.PN BadValue
+.Pn ( CanContinue )
+.RE
+.eM
+.LP
+The client must send this message to the SM to register the client's existence.
+If a client is being restarted from a previous
+session, the previous-ID field must contain the client ID from the
+previous session.
+For new clients, previous-ID should be of zero length.
+.LP
+If previous-ID is not valid, the SM will send a
+.PN BadValue
+error message to the client.
+At this point the SM reverts to the register state and waits for another
+.PN RegisterClient .
+The client should then send a
+.PN RegisterClient
+with a null previous-ID field.
+.LP
+.sM
+.PN RegisterClientReply
+[Client \(<- SM]
+.RS
+.LP
+\fIclient-ID\fP\^: ARRAY8
+.RE
+.eM
+.LP
+The client-ID specifies a unique identification for this client.
+If the client had specified an ID in the previous-ID field of the
+.PN RegisterClient
+message, client-ID will be identical to the previously specified ID. If
+previous-ID was null, client-ID will be a unique ID freshly generated by the
+SM. The client-ID format is specified in section 6.
+.LP
+If the client didn't supply a previous-ID field to the
+.PN Register\%Client
+message, the SM must send a
+.PN SaveYourself
+message with type = Local, shutdown = False, interact-style = None,
+and fast = False immediately after the
+.PN RegisterClientReply .
+The client should respond to this like any other
+.PN Save\%Yourself
+message.
+.LP
+.sM
+.PN SaveYourself
+[Client \(<- SM]
+.RS
+.LP
+\fItype\fP\^: SAVE_TYPE
+.br
+\fIshutdown\fP\^: BOOL
+.br
+\fIinteract-style\fP\^: INTERACT_STYLE
+.br
+\fIfast\fP\^: BOOL
+.LP
+Valid Responses:
+.PN SetProperties ,
+.PN DeleteProperties ,
+.PN GetProperties ,
+.PN SaveYourselfDone ,
+.PN SaveYourselfPhase2Request ,
+.PN InteractRequest
+.RE
+.eM
+.LP
+The SM sends this message to a client to ask it to save
+its state. The client writes a state file, if necessary,
+and, if necessary, uses
+.PN SetProperties
+to inform the SM of
+how to restart it and how to discard the saved state. During
+this process it can, if allowed by interact-style, request
+permission to interact with the user by sending an
+.PN InteractRequest
+message.
+After the state has been saved, or
+if it cannot be successfully saved, and the properties
+are appropriately set, the client sends a
+.PN SaveYourselfDone
+message.
+If the client wants to save additional information after all the
+other clients have finished changing their own state, the client
+should send
+.PN SaveYourselfPhase2Request
+instead of
+.PN SaveYourselfDone .
+The client must then
+freeze interaction with the user and wait until it
+receives a
+.PN SaveComplete ,
+.PN Die ,
+or a
+.PN ShutdownCancelled
+message.
+.LP
+If interact-style is
+.PN None ,
+the client must not interact with the
+user while saving state. If the interact-style is
+.PN Errors ,
+the client
+may interact with the user only if an error condition arises. If
+interact-style is
+.PN Any ,
+then the client may interact with the user for
+any purpose.
+This is done by sending an
+.PN Interact\%Request
+message. The SM will send an
+.PN Interact
+message to
+each client that sent an
+.PN Interact\%Request .
+The client must postpone all
+interaction until it gets the
+.PN Interact
+message. When the client is done
+interacting it should send the SM an
+.PN Interact\%Done
+message. The
+.PN Interact\%Request
+message can be sent any time after a
+.PN Save\%Yourself
+and before a
+.PN Save\%Yourself\%Done .
+.LP
+Unusual circumstances may dictate multiple interactions.
+The client may initiate as many
+.PN Interact\%Request
+\-
+.PN Interact
+\-
+.PN InteractDone
+sequences as it needs before it sends
+.PN SaveYourselfDone .
+.LP
+When a client receives
+.PN Save\%Yourself
+and has not yet responded
+.PN Save\%Yourself\%Done
+to a previous
+.PN Save\%Yourself ,
+it must send a
+.PN Save\%Yourself\%Done
+and may then begin responding as appropriate
+to the newly received
+.PN Save\%Yourself .
+.LP
+The type field specifies the type of information that should be saved:
+.PN Global ,
+.PN Local ,
+or
+.PN Both .
+The
+.PN Local
+type indicates that the application must update the
+properties to reflect its current state, send a
+.PN Save\%Yourself\%Done
+and continue. Specifically it should save enough information to restore
+the state as seen by the user of this client. It should not affect the
+state as seen by other users.
+The
+.PN Global
+type indicates that the user wants the client to
+commit all of its data to permanent, globally-accessible
+storage.
+.PN Both
+indicates that the client should do both of these. If
+.PN Both
+is specified, the client should first commit the data to permanent storage
+before updating its SM properties.
+.NT Examples
+If a word processor was sent a
+.PN SaveYourself
+with a type of
+.PN Local ,
+it could create a temporary file that included the
+current contents of the file, the location of the cursor, and
+other aspects of the current editing session.
+It would then update its
+.PN Restart\%Command
+property with enough information to find the temporary file,
+and its
+.PN Discard\%Command
+with enough information to remove it.
+.LP
+If a word processor was sent a
+.PN SaveYourself
+with a type of
+.PN Global ,
+it would simply save the currently edited file.
+.LP
+If a word processor was sent a
+.PN SaveYourself
+with a type of
+.PN Both ,
+it would first save the currently edited file. It would then create a
+temporary file with information such as the current position of the cursor
+and what file is being edited.
+It would then update its
+.PN Restart\%Command
+property with enough information to find the temporary file,
+and its
+.PN Discard\%Command
+with enough information to remove it.
+.LP
+Once the SM has send
+.PN SaveYourself
+to a client, it can't send another
+.PN SaveYourself
+to that client until the client either
+responds with a
+.PN SaveYourselfDone
+or the SM sends a
+.PN ShutdownCancelled .
+.NE
+.NT "Advice to Implementors"
+If the client stores local any state in a file or similar
+\*Qexternal\*U storage, it must create a distinct
+copy in response to each
+.PN SaveYourself
+message.
+It \fImust not\fP simply refer to a previous copy, because
+the SM may discard that previous saved state using a
+.PN DiscardCommand
+without knowing that it is needed for the new checkpoint.
+.NE
+.LP
+The shutdown field specifies whether the system is being shut down.
+.NT Rationale
+The interaction
+may be different depending on whether or not shutdown is set.
+.NE
+The client must save and then must prevent interaction
+until it receives a
+.PN SaveComplete ,
+.PN Die ,
+or a
+.PN Shutdown\%Cancelled ,
+because anything the user does after the save will be lost.
+.LP
+The fast field specifies whether or not the client should save its state as quickly as
+possible. For example, if the SM knows that power is about to fail, it
+should set the fast field to
+.PN True .
+.LP
+.sM
+.PN SaveYourselfPhase2
+[Client \(<- SM]
+.RS
+.LP
+.LP
+Valid Responses:
+.PN SetProperties ,
+.PN DeleteProperties ,
+.PN GetProperties ,
+.PN SaveYourselfDone ,
+.PN InteractRequest
+.RE
+.eM
+.LP
+The SM sends this message to a client that has previously sent a
+.PN SaveYourselfPhase2Request
+message.
+This message informs the client that all other clients are in a fixed
+state and this client can save state that is associated with other clients.
+.NT "Rationale"
+Clients that manager other clients (window managers, workspace managers, etc)
+need to know when all clients they are managing are idle, so that the manager
+can save state related to each of the clients without being concerned with
+that state changing.
+.NE
+The client writes a state file, if necessary, and, if necessary, uses
+.PN SetProperties
+to inform the SM of
+how to restart it and how to discard the saved state. During
+this process it can request
+permission to interact with the user by sending an
+.PN InteractRequest
+message.
+This should only be done if an error occurs that requires user interaction
+to resolve.
+After the state has been saved, or
+if it cannot be successfully saved, and the properties
+are appropriately set, the client sends a
+.PN SaveYourselfDone
+message.
+.LP
+.LP
+.sM
+.PN SaveYourselfRequest
+[Client \(-> SM]
+.RS
+.LP
+\fItype\fP\^: SAVE_TYPE
+.br
+\fIshutdown\fP\^: BOOL
+.br
+\fIinteract-style\fP\^: INTERACT_STYLE
+.br
+\fIfast\fP\^: BOOL
+.br
+\fIglobal\fP\^: BOOL
+.LP
+Valid Responses:
+.PN SaveYourself
+.RE
+.eM
+.LP
+An application sends this to the SM to request a checkpoint.
+When the SM receives this request it may generate a
+.PN SaveYourself
+message in response and it may leave the fields intact.
+.NT Example
+A vendor of a UPS (Uninterruptible Power Supply) might include an
+SM client that would monitor the status of the UPS and generate
+a fast shutdown if the power is about to be lost.
+.NE
+.LP
+If global is set to
+.PN True ,
+then the resulting
+.PN SaveYourself
+should be
+sent to all applications. If global is set to
+.PN False ,
+then the resulting
+.PN SaveYourself
+should be sent to the application that sent the
+.PN Save\%Yourself\%Request .
+.LP
+.sM
+.PN InteractRequest
+[Client \(-> SM]
+.RS
+.LP
+\fIdialog-type\fP\^: DIALOG_TYPE
+.LP
+Valid Responses:
+.PN Interact ,
+.PN ShutdownCancelled
+.LP
+Possible Errors:
+.PN BadState
+.Pn ( CanContinue )
+.RE
+.eM
+.LP
+During a checkpoint or session-save operation,
+only one client at a time might be granted the privilege of interacting with
+the user. The
+.PN InteractRequest
+message causes the SM to emit an
+.PN Interact
+message at some later time if the shutdown is not cancelled
+by another client first.
+.LP
+The dialog-type field specifies either
+.PN Errors ,
+indicating that the
+client wants to start an error dialog or
+.PN Normal ,
+meaning the client
+wishes to start a non-error dialog.
+.LP
+.sM
+.PN Interact
+[Client \(<- SM]
+.RS
+.LP
+Valid Responses:
+.PN InteractDone
+.LP
+.RE
+.eM
+.LP
+This message grants the client the privilege of interacting with the
+user. When the client is done interacting with the user it must
+send an
+.PN InteractDone
+message to the SM unless a shutdown cancel is received.
+.NT "Advice to Implementors"
+If a client receives a ShutdownCancelled after receiving an
+.PN Interact
+message, but before sending a
+.PN InteractDone ,
+the client should abort the interaction and send a
+.PN SaveYourselfDone .
+.NE
+.LP
+.sM
+.PN InteractDone
+[Client \(-> SM]
+.RS
+.LP
+\fIcancel-shutdown\fP\^: BOOL
+.br
+.LP
+Valid Responses:
+.PN ShutdownCancelled
+.LP
+.RE
+.eM
+.LP
+This message is used by a client to notify the SM that it is done interacting.
+.LP
+Setting the cancel-shutdown field to
+.PN True
+indicates that
+the user has requested that the entire shutdown be cancelled.
+Cancel-shutdown may only be
+.PN True
+if the corresponding
+.PN SaveYourself
+message specified
+.PN True
+for the shutdown field and
+.PN Any
+or
+.PN Errors
+for the interact-style field. Otherwise, cancel-shutdown must be
+.PN False .
+.LP
+.sM
+.PN SaveYourselfDone
+[Client \(-> SM]
+.RS
+.LP
+\fIsuccess\fP\^: BOOL
+.LP
+Valid Responses:
+.PN SaveComplete ,
+.PN Die ,
+.PN ShutdownCancelled
+.LP
+.RE
+.eM
+.LP
+This message is sent by a client to indicate that all of the properties
+representing its state have been updated.
+After sending
+.PN SaveYourselfDone
+the client must
+wait for a
+.PN SaveComplete ,
+.PN ShutdownCancelled ,
+or
+.PN Die
+message before changing its state.
+If the
+.PN SaveYourself
+operation was successful, then the client
+should set the success field to
+.PN True ;
+otherwise the client should set
+it to
+.PN False .
+.NT Example
+If a client tries to save its state and runs out of disk space,
+it should return
+.PN False
+in the success
+field of the
+.PN SaveYourselfDone
+message.
+.NE
+.LP
+.sM
+.PN SaveYourselfPhase2Request
+[Client \(-> SM]
+.RS
+.LP
+Valid Responses:
+.PN ShutdownCancelled ,
+.PN SaveYourselfPhase2
+.LP
+.RE
+.eM
+.LP
+This message is sent by a client to indicate that it needs to be informed
+when all the other clients are quiescent, so it can continue its state.
+.LP
+.sM
+.PN Die
+[Client \(<- SM]
+.RS
+.LP
+Valid Responses:
+.PN ConnectionClosed
+.RE
+.eM
+.LP
+When the SM wants a client to die it sends a
+.PN Die
+message. Before the client dies it responds
+by sending a
+.PN ConnectionClosed
+message and may then close
+its connection to the SM at any time.
+.LP
+.sM
+.PN SaveComplete
+[Client \(<- SM]
+.RS
+.LP
+Valid Responses:
+.RE
+.eM
+.LP
+When the SM is done with a checkpoint, it will send each of the clients a
+.PN SaveComplete
+message.
+The client is then free to change its state.
+.LP
+.sM
+.PN ShutdownCancelled
+[Client \(<- SM]
+.RS
+.RE
+.eM
+.LP
+The shutdown currently in process has been aborted. The client can now
+continue as if the shutdown had never happened.
+If the client has not sent
+.PN SaveYourselfDone
+yet, the client can either
+abort the save and send
+.PN SaveYourselfDone
+with the success field
+set to
+.PN False ,
+or it can continue with the save and send a
+.PN SaveYourselfDone
+with the success field set to reflect the outcome
+of the save.
+.LP
+.sM
+.PN ConnectionClosed
+[Client \(-> SM]
+.RS
+.LP
+\fIreason\fP\^: LISTofARRAY8
+.RE
+.eM
+.LP
+Specifies that the client has decided to terminate.
+It should be immediately followed by closing the connection.
+.LP
+The reason field specifies why the client is resigning from the session. It
+is encoded as an array of Compound Text strings. If the resignation is
+expected by the user, there will typically be zero ARRAY8s here. But if the
+client encountered an unexpected fatal error, the error message (which might
+otherwise be printed on stderr on a POSIX system) should be forwarded to the
+SM here, one ARRAY8 per line of the message. It is the responsibility of
+the SM to display this reason to the user.
+.LP
+After sending this message, the client must not send any additional XSMP
+messages to the SM.
+.NT "Advice to Implementors"
+If additional messages are received, they should be discarded.
+.NE
+.NT Rationale
+The reason for sending the
+.PN ConnectionClosed
+message before
+actually closing the connections is that some transport protocols will
+not provide immediate notification of connection closure.
+.NE
+.LP
+.sM
+.PN SetProperties
+[Client \(-> SM]
+.RS
+.LP
+\fIproperties\fP: LISTofPROPERTY
+.RE
+.eM
+.LP
+Sets the specified properties to the specified values.
+Existing properties not specified in the
+.PN Set\%Properties
+message are unaffected.
+Some properties have predefined semantics.
+See section 11, \*QPredefined Properties.\*U
+.LP
+The protocol specification recommends that property names used
+for properties not defined by the standard should begin with an underscore.
+To prevent conflicts among organizations,
+additional prefixes should be chosen
+(for example, _KPC_FAST_SAVE_OPTION).
+The organizational prefixes should be registered with the X Registry.
+The XSMP reserves all property names not beginning with an underscore for
+future use.
+.LP
+.sM
+.PN DeleteProperties
+[Client \(-> SM]
+.RS
+.LP
+.br
+\fIproperty-names\fP: LISTofARRAY8
+.RE
+.eM
+.LP
+Removes the named properties.
+.LP
+.sM
+.PN GetProperties
+[Client \(-> SM]
+.RS
+.LP
+Valid Responses:
+.PN GetPropertiesReply
+.RE
+.eM
+.LP
+Requests that the SM respond with the
+values of all the properties for this client.
+.LP
+.sM
+.PN GetPropertiesReply
+[Client \(<- SM]
+.RS
+.LP
+\fIvalues\fP\^: LISTofPROPERTY
+.RE
+.eM
+.LP
+This message is sent in reply to a
+.PN GetProperties
+message and includes
+the values of all the properties.
+.nH 1 "Errors"
+.LP
+When the receiver of a message detects an error condition,
+the receiver sends
+an ICE error message to the sender.
+There are only two types of errors that are used by the XSMP:
+.PN BadValue
+and
+.PN BadState .
+These are both defined in the ICE protocol.
+.LP
+Any message received out-of-sequence
+will generate a
+.PN BadState
+error message.
+.nH 1 "State Diagrams"
+.LP
+These state diagrams are designed to cover all actions of both
+the client and the SM.
+.nH 2 "Client State Diagram"
+.LP
+.nf
+.DS L 0
+\fIstart:\fP
+ ICE protocol setup complete \(-> \fCregister\fP
+.DE
+.sp
+.DS L 0
+\fIregister:\fP
+ send \fBRegisterClient\fP \(-> \fCcollect-id\fP
+.DE
+.sp
+.DS L 0
+\fIcollect-id:\fP
+ receive \fBRegisterClientReply\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIshutdown-cancelled:\fP
+ send \fBSaveYourselfDone\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIidle:\fP [Undoes any freeze of interaction with user.]
+ receive \fBDie\fP \(-> \fCdie\fP
+ receive \fBSaveYourself\fP \(-> \fCfreeze-interaction\fP
+ send \fBGetProperties\fP \(-> \fCidle\fP
+ receive \fBGetPropertiesReply\fP \(-> \fCidle\fP
+ send \fBSetProperties\fP \(-> \fCidle\fP
+ send \fBDeleteProperties\fP \(-> \fCidle\fP
+ send \fBConnectionClosed\fP \(-> \fCconnection-closed\fP
+ send \fBSaveYourselfRequest\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIdie:\fP
+ send \fBConnectionClosed\fP \(-> \fCconnection-closed\fP
+.DE
+.sp
+.DS L 0
+\fIfreeze-interaction:\fP
+ freeze interaction with user \(-> \fCsave-yourself\fP
+.DE
+.sp
+.DS L 0
+\fIsave-yourself:\fP
+ receive \fBShutdownCancelled\fP \(-> \fCshutdown-cancelled\fP
+ send \fBSetProperties\fP \(-> \fCsave-yourself\fP
+ send \fBDeleteProperties\fP \(-> \fCsave-yourself\fP
+ send \fBGetProperties\fP \(-> \fCsave-yourself\fP
+ receive \fBGetPropertiesReply\fP \(-> \fCsave-yourself\fP
+ send \fBInteractRequest\fP \(-> \fCinteract-request\fP
+ send \fBSaveYourselfPhase2Request\fP -> waiting-for-phase2
+ if shutdown mode:
+ send \fBSaveYourselfDone\fP \(-> \fCsave-yourself-done\fP
+ otherwise:
+ send \fBSaveYourselfDone\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIwaiting-for-phase2:\fP
+ receive \fBShutdownCancelled\fP \(-> \fCshutdown-cancelled\fP
+ receive \fBSaveYourselfPhase2\fP \(-> \fCphase2\fP
+.DE
+.sp
+.DS L 0
+\fIphase2:\fP
+ receive \fBShutdownCancelled\fP \(-> \fCshutdown-cancelled\fP
+ send \fBSetProperties\fP \(-> \fCsave-yourself\fP
+ send \fBDeleteProperties\fP \(-> \fCsave-yourself\fP
+ send \fBGetProperties\fP \(-> \fCsave-yourself\fP
+ receive \fBGetPropertiesReply\fP \(-> \fCsave-yourself\fP
+ send \fBInteractRequest\fP \(-> \fCinteract-request\fP (errors only)
+ if shutdown mode:
+ send \fBSaveYourselfDone\fP \(-> \fCsave-yourself-done\fP
+ otherwise:
+ send \fBSaveYourselfDone\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIinteract-request:\fP
+ receive \fBInteract\fP \(-> \fCinteract\fP
+ receive \fBShutdownCancelled\fP \(-> \fCshutdown-cancelled\fP
+.DE
+.sp
+.DS L 0
+\fIinteract:\fP
+ send \fBInteractDone\fP \(-> \fCsave-yourself\fP
+ receive \fBShutdownCancelled\fP \(-> \fCshutdown-cancelled\fP
+.DE
+.sp
+.DS L 0
+\fIsave-yourself-done:\fP (changing state is forbidden)
+ receive \fBSaveComplete\fP \(-> \fCidle\fP
+ receive \fBDie\fP \(-> \fCdie\fP
+ receive \fBShutdownCancelled\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIconnection-closed:\fP
+ client stops participating in session
+.DE
+.ne 1i
+.nH 2 "Session Manager State Diagram"
+.LP
+.nf
+.DS L 0
+\fIstart:\fP
+ receive \fBProtocolSetup\fP \(-> \fCprotocol-setup\fP
+.DE
+.sp
+.DS L 0
+\fIprotocol-setup:\fP
+ send \fBProtocolSetupReply\fP \(-> \fCregister\fP
+.DE
+.sp
+.DS L 0
+\fIregister:\fP
+ receive \fBRegisterClient\fP \(-> \fCacknowledge-register\fP
+.DE
+.sp
+.DS L 0
+\fIacknowledge-register:\fP
+ send \fBRegisterClientReply\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIidle:\fP
+ receive \fBSetProperties\fP \(-> \fCidle\fP
+ receive \fBDeleteProperties\fP \(-> \fCidle\fP
+ receive \fBConnectionClosed\fP \(-> \fCstart\fP
+ receive \fBGetProperties\fP \(-> \fCget-properties\fP
+ receive \fBSaveYourselfRequest\fP \(-> \fCsave-yourself\fP
+ send \fBSaveYourself\fP \(-> \fCsaving-yourself\fP
+.DE
+.sp
+.DS L 0
+\fIsave-yourself:\fP
+ send \fBSaveYourself\fP \(-> \fCsaving-yourself\fP
+.DE
+.sp
+.DS L 0
+\fIget-properties:\fP
+ send \fBGetPropertiesReply\fP \(-> \fCidle\fP
+.DE
+.sp
+.DS L 0
+\fIsaving-get-properties:\fP
+ send \fBGetPropertiesReply\fP \(-> \fCsaving-yourself\fP
+.DE
+.sp
+.DS L 0
+\fIsaving-yourself:\fP
+ receive \fBInteractRequest\fP \(-> \fCsaving-yourself\fP
+ send \fBInteract\fP \(-> \fCsaving-yourself\fP
+ send \fBShutdownCancelled\fP -> \fCidle\fP
+ receive \fBInteractDone\fP \(-> \fCsaving-yourself\fP
+ receive \fBSetProperties\fP \(-> \fCsaving-yourself\fP
+ receive \fBDeleteProperties\fP \(-> \fCsaving-yourself\fP
+ receive \fBGetProperties\fP \(-> \fCsaving-get-properties\fP
+ receive \fBSaveYourselfPhase2Request\fP \(-> \fCstart-phase2\fP
+ receive \fBSaveYourselfDone\fP \(-> \fCsave-yourself-done\fP
+.DE
+.sp
+.DS L 0
+\fIstart-phase2:\fP
+ If all clients have sent either \fBSaveYourselfPhase2Request\fP or \fBSaveYourselfDone\fP:
+ send \fBSaveYourselfPhase2\fP \(-> \fCphase2\fP
+ else
+ \(-> \fCsaving-yourself\fP
+.DE
+.sp
+.DS L 0
+\fIphase2:\fP
+ receive \fBInteractRequest\fP \(-> \fCsaving-yourself\fP
+ send \fBInteract\fP \(-> \fCsaving-yourself\fP
+ send \fBShutdownCancelled\fP -> \fCidle\fP
+ receive \fBInteractDone\fP \(-> \fCsaving-yourself\fP
+ receive \fBSetProperties\fP \(-> \fCsaving-yourself\fP
+ receive \fBDeleteProperties\fP \(-> \fCsaving-yourself\fP
+ receive \fBGetProperties\fP \(-> \fCsaving-get-properties\fP
+ receive \fBSaveYourselfDone\fP \(-> \fCsave-yourself-done\fP
+.DE
+.sp
+.DS L 0
+\fIsave-yourself-done:\fP
+ If all clients are saved:
+ If shutting down:
+ send \fBDie\fP \(-> \fCdie\fP
+ otherwise
+ send \fBSaveComplete\fP \(-> \fCidle\fP
+.sp
+ If some clients are not saved:
+ \(-> \fCsaving-yourself\fP
+.DE
+.sp
+.DS L 0
+\fIdie:\fP
+ SM stops accepting connections
+.DE
+.nH 1 "Protocol Encoding"
+.nH 2 "Types"
+.LP
+.nf
+.ta .2i .5i 2.0i
+BOOL
+ 0 False
+ 1 True
+.sp
+INTERACT_STYLE
+ 0 None
+ 1 Errors
+ 2 Any
+.sp
+DIALOG_TYPE
+ 0 Error
+ 1 Normal
+.sp
+SAVE_TYPE
+ 0 Global
+ 1 Local
+ 2 Both
+.sp
+.ne .75i
+ARRAY8
+ 4 CARD32 length
+ n LISTofCARD8 the array
+ p p = pad (4 + n, 8)
+.sp
+LISTofARRAY8
+ 4 CARD32 count
+ 4 unused
+ a ARRAY8 first array
+ b ARRAY8 second array
+ \&.
+ \&.
+ \&.
+ q ARRAY8 last array
+.sp
+PROPERTY
+ a ARRAY8 name
+ b ARRAY8 type (XPCS encoded in Latin-1, case sensitive)
+ c LISTofARRAY8 values
+.sp
+LISTofPROPERTY
+ 4 CARD32 count
+ 4 unused
+ a PROPERTY first property
+ b PROPERTY second property
+ \&.
+ \&.
+ \&.
+ q PROPERTY last property
+.nH 2 "Messages"
+.LP
+XSMP is a sub-protocol of ICE. The major opcode is assigned at run-time
+by ICE and is represented here by `?'.
+.LP
+To start the XSMP protocol, the client sends the server an ICE
+.PN ProtocolSetup
+message.
+The protocol-name field should be specified as \*QXSMP\*U, the major
+version of the protocol is 1, the minor version is 0.
+These values may change if the protocol is revised. The minor version
+number will be incremented if the change is compatible, otherwise the major
+version number will be incremented.
+.LP
+In
+.PN ProtocolReply
+message sent by the session manager,
+the XSMP protocol defines the vendor parameter as product identification
+of the session manager, and defines the release parameter as
+the software release identification of the session manager.
+The session manager should supply this information in the
+ICE
+.PN ProtocolReply
+message.
+.LP
+.nf
+.ta .2i .5i 2.0i
+.ne 3
+.PN RegisterClient
+ 1 ? XSMP
+ 1 1 opcode
+ 2 unused
+ 4 a/8 length of remaining data in 8-byte units
+ a ARRAY8 previous-ID
+.ne 6
+.sp
+.PN RegisterClientReply
+ 1 ? XSMP
+ 1 2 opcode
+ 2 unused
+ 4 a/8 length of remaining data in 8-byte units
+ a ARRAY8 client-ID
+.ne 4
+.sp
+.PN SaveYourself
+ 1 ? XSMP
+ 1 3 opcode
+ 2 unused
+ 4 1 length of remaining data in 8-byte units
+ 1 SAVE_TYPE type
+ 1 BOOL shutdown
+ 1 INTERACT_STYLE interact-style
+ 1 BOOL fast
+ 4 unused
+.ne 4
+.sp
+.PN SaveYourselfRequest
+ 1 ? XSMP
+ 1 4 opcode
+ 2 unused
+ 4 1 length of remaining data in 8-byte units
+ 1 SAVE_TYPE type
+ 1 BOOL shutdown
+ 1 INTERACT_STYLE interact-style
+ 1 BOOL fast
+ 1 BOOL global
+ 3 unused
+.ne 4
+.sp
+.PN InteractRequest
+ 1 ? XSMP
+ 1 5 opcode
+ 1 DIALOG_TYPE dialog type
+ 1 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 4
+.sp
+.PN Interact
+ 1 ? XSMP
+ 1 6 opcode
+ 2 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 4
+.sp
+.PN InteractDone
+ 1 ? XSMP
+ 1 7 opcode
+ 1 BOOL cancel-shutdown
+ 1 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 6
+.sp
+.PN SaveYourselfDone
+ 1 ? XSMP
+ 1 8 opcode
+ 1 BOOL success
+ 1 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 4
+.sp
+.PN Die
+ 1 ? XSMP
+ 1 9 opcode
+ 2 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 4
+.sp
+.PN ShutdownCancelled
+ 1 ? XSMP
+ 1 10 opcode
+ 2 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 4
+.sp
+.PN ConnectionClosed
+ 1 ? XSMP
+ 1 11 opcode
+ 2 unused
+ 4 a/8 length of remaining data in 8-byte units
+ a LISTofARRAY8 reason
+.ne 4
+.sp
+.PN SetProperties
+ 1 ? XSMP
+ 1 12 opcode
+ 2 unused
+ 4 a/8 length of remaining data in 8-byte units
+ a LISTofPROPERTY properties
+.ne 4
+.sp
+.PN DeleteProperties
+ 1 ? XSMP
+ 1 13 opcode
+ 2 unused
+ 4 a/8 length of remaining data in 8-byte units
+ a LISTofARRAY8 properties
+.ne 4
+.sp
+.PN GetProperties
+ 1 ? XSMP
+ 1 14 opcode
+ 2 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 4
+.sp
+.PN GetPropertiesReply
+ 1 ? XSMP
+ 1 15 opcode
+ 2 unused
+ 4 a/8 length of remaining data in 8-byte units
+ a LISTofPROPERTY properties
+.ne 4
+.sp
+.PN SaveYourselfPhase2Request
+ 1 ? XSMP
+ 1 16 opcode
+ 2 unused
+ 4 0 length of remaining data in 8-byte units
+.ne 4
+.sp
+.PN SaveYourselfPhase2
+ 1 ? XSMP
+ 1 17 opcode
+ 2 unused
+ 4 0 length of remaining data in 8-byte units
+
+.sp
+.PN SaveComplete
+ 1 ? XSMP
+ 1 18 opcode
+ 2 unused
+ 4 0 length of remaining data in 8-byte units
+
+.nH 1 "Predefined Properties"
+.LP
+All property values are stored in a LISTofARRAY8. If the type of the
+property is CARD8, the value is stored as a LISTofARRAY8 with one ARRAY8
+that is one byte long. That single byte contains the CARD8. If the type of
+the property is ARRAY8, the value is stored in the first element of a single
+element LISTofARRAY8.
+.LP
+The required properties must be set each time a client
+connects with the SM. The properties must be set after
+the client sends
+.PN RegisterClient
+and before the client sends
+.PN SaveYourselfDone .
+Otherwise, the behavior of
+the session manager is not defined.
+.LP
+Clients may set, get, and delete nonstandard properties.
+The lifetime of stored properties does not extend into
+subsequent sessions.
+.br
+.ne 6
+.TS H
+l l l c .
+_
+.sp 6p
+.B
+Name Type Posix Type Required?
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+CloneCommand OS-specific LISTofARRAY8 Yes
+CurrentDirectory OS-specific ARRAY8 No
+DiscardCommand OS-specific LISTofARRAY8 No*
+Environment OS-specific LISTofARRAY8 No
+ProcessID OS-specific ARRAY8 No
+Program OS-specific ARRAY8 Yes
+RestartCommand OS-specific LISTofARRAY8 Yes
+ResignCommand OS-specific LISTofARRAY8 No
+RestartStyleHint CARD8 CARD8 No
+ShutdownCommand OS-specific LISTofARRAY8 No
+UserID ARRAY8 ARRAY8 Yes
+.sp 6p
+_
+.TE
+.LP
+* Required if any state is stored in an external repository (e.g., state file).
+.IP CloneCommand 3
+This is like the
+.PN RestartCommand
+except it restarts a copy of the
+application. The only difference is that the application doesn't
+supply its client id at register time. On POSIX systems the type
+should be a LISTofARRAY8.
+.IP CurrentDirectory 3
+On POSIX-based systems specifies the value of the current directory that
+needs to be set up prior to starting the program and should be of type
+ARRAY8.
+.IP DiscardCommand 3
+The discard command contains a command that when delivered to the host that
+the client is running on (determined from the connection), will
+cause it to discard any information about the current state. If this command
+is not specified, the SM will assume that all of the client's state is encoded
+in the
+.PN Restart\%Command .
+On POSIX systems the type should be LISTofARRAY8.
+.IP Environment 3
+On POSIX based systems, this will be of type LISTofARRAY8 where
+the ARRAY8s alternate between environment variable name and environment
+variable value.
+.IP ProcessID 3
+This specifies an OS-specific identifier for the process. On POSIX
+systems this should of type ARRAY8 and contain the return value
+of getpid() turned into a Latin-1 (decimal) string.
+.IP Program 3
+The name of the program that is running. On POSIX systems this
+should be the
+first parameter passed to execve and should be of type ARRAY8.
+.IP RestartCommand 3
+The restart command contains a command that when delivered to the
+host that the client is running on (determined from the connection),
+will cause the client to restart in
+its current state. On POSIX-based systems this is of type LISTofARRAY8
+and each of the elements in the array represents an element in
+the argv array.
+This restart command should ensure that the client restarts with the specified
+client-ID.
+.IP ResignCommand 3
+A client that sets the
+.PN RestartStyleHint
+to
+.PN RestartAnyway
+uses this property to specify a command
+that undoes the effect of the client and removes
+any saved state.
+.NT Example
+A user runs xmodmap. xmodmap registers with the SM, sets
+.PN Restart\%Style\%Hint
+to
+.PN Restart\%Anyway ,
+and then terminates. In order to allow the SM (at the
+user's request) to undo this, xmodmap would register a
+.PN Resign\%Command
+that undoes the effects of the xmodmap.
+.NE
+.IP RestartStyleHint 3
+.RS
+.LP
+If the RestartStyleHint property is present, it will contain the
+style of restarting the client prefers. If this flag isn't specified,
+.PN RestartIfRunning
+is assumed.
+The possible values are as follows:
+.br
+.ne 6
+.TS H
+l n.
+_
+.sp 6p
+.B
+Name Value
+.R
+.sp 6p
+_
+.sp 6p
+.TH
+RestartIfRunning 0
+RestartAnyway 1
+RestartImmediately 2
+RestartNever 3
+.sp 6p
+_
+.TE
+.LP
+The
+.PN RestartIfRunning
+style is used in the usual case. The client should
+be restarted in the next session if it is connected to the
+session manager at the end of the current session.
+.LP
+The
+.PN RestartAnyway
+style is used to tell the SM that the application
+should be restarted in the next session even if it exits before the
+current session is terminated.
+It should be noted that this is only a hint and the SM
+will follow the policies specified by its users in determining what applications
+to restart.
+.LP
+.NT Rationale
+This can be specified by a client which supports (as MS-Windows clients
+do) a means for the user to indicate while exiting that
+restarting is desired. It can also be used for clients that
+spawn other clients and then go away, but which want to be
+restarted.
+.NE
+.LP
+A client that uses
+.PN RestartAnyway
+should also set the
+.PN ResignCommand
+and
+.PN ShutdownCommand
+properties to commands that undo the state of the client
+after it exits.
+.LP
+The
+.PN RestartImmediately
+style is like
+.PN RestartAnyway ,
+but in addition, the
+client is meant to run continuously. If the client exits, the
+SM should try to restart it in the current session.
+.NT "Advice to Implementors"
+It would be wise to sanity-check the frequency which which
+.PN RestartImmediately
+clients are restarted, to avoid a sick
+client being restarted continuously.
+.NE
+The
+.PN RestartNever
+style specifies that the client
+does not wish to be restarted in the next session.
+.NT "Advice To Implementors"
+This should be used rarely, if at all. It will cause the client
+to be silently left out of sessions when they are restarted and
+will probably be confusing to users.
+.NE
+.RE
+.IP ShutdownCommand
+This command is executed at shutdown time to clean up after a client that
+is no longer running but retained its state by setting
+.PN RestartStyleHint
+to
+.PN RestartAnyway .
+The command must not remove any saved state as the client is still part of
+the session.
+.NT Example
+A client is run at start up time that turns on a camera. This client then
+exits. At session shutdown, the user wants the camera turned off. This client
+would set the
+.PN Restart\%Style\%Hint
+to
+.PN Restart\%Anyway
+and would register a
+.PN Shutdown\%Command
+that would turn off the camera.
+.NE
+.IP UserID 3
+Specifies the user's ID. On POSIX-based systems this
+will contain the the user's name (the pw_name field of struct passwd).
+.\" Finish up.
+.YZ 3
diff --git a/specs/X11/AppA b/specs/X11/AppA
new file mode 100644
index 0000000..26a1ba3
--- /dev/null
+++ b/specs/X11/AppA
@@ -0,0 +1,604 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix A\fP\s-1
+
+\s+1\fBXlib Functions and Protocol Requests\fP\s-1
+.sp 2
+.na
+.LP
+.XS
+Appendix A: Xlib Functions and Protocol Requests
+.XE
+This appendix provides two tables that relate to Xlib functions
+and the X protocol.
+The following table lists each Xlib function (in alphabetical order)
+and the corresponding protocol request that it generates.
+.LP
+.TS H
+lw(2.5i) lw(2.5i).
+_
+.sp 6p
+.B
+Xlib Function Protocol Request
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+XActivateScreenSaver ForceScreenSaver
+XAddHost ChangeHosts
+XAddHosts ChangeHosts
+XAddToSaveSet ChangeSaveSet
+XAllocColor AllocColor
+XAllocColorCells AllocColorCells
+XAllocColorPlanes AllocColorPlanes
+XAllocNamedColor AllocNamedColor
+XAllowEvents AllowEvents
+XAutoRepeatOff ChangeKeyboardControl
+XAutoRepeatOn ChangeKeyboardControl
+XBell Bell
+XChangeActivePointerGrab ChangeActivePointerGrab
+XChangeGC ChangeGC
+XChangeKeyboardControl ChangeKeyboardControl
+XChangeKeyboardMapping ChangeKeyboardMapping
+XChangePointerControl ChangePointerControl
+XChangeProperty ChangeProperty
+XChangeSaveSet ChangeSaveSet
+XChangeWindowAttributes ChangeWindowAttributes
+XCirculateSubwindows CirculateWindow
+XCirculateSubwindowsDown CirculateWindow
+XCirculateSubwindowsUp CirculateWindow
+XClearArea ClearArea
+XClearWindow ClearArea
+XConfigureWindow ConfigureWindow
+XConvertSelection ConvertSelection
+XCopyArea CopyArea
+XCopyColormapAndFree CopyColormapAndFree
+XCopyGC CopyGC
+XCopyPlane CopyPlane
+XCreateBitmapFromData CreateGC
+ CreatePixmap
+ FreeGC
+ PutImage
+XCreateColormap CreateColormap
+XCreateFontCursor CreateGlyphCursor
+XCreateGC CreateGC
+XCreateGlyphCursor CreateGlyphCursor
+XCreatePixmap CreatePixmap
+XCreatePixmapCursor CreateCursor
+XCreatePixmapFromData CreateGC
+ CreatePixmap
+ FreeGC
+ PutImage
+XCreateSimpleWindow CreateWindow
+XCreateWindow CreateWindow
+XDefineCursor ChangeWindowAttributes
+XDeleteProperty DeleteProperty
+XDestroySubwindows DestroySubwindows
+XDestroyWindow DestroyWindow
+XDisableAccessControl SetAccessControl
+XDrawArc PolyArc
+XDrawArcs PolyArc
+XDrawImageString ImageText8
+XDrawImageString16 ImageText16
+XDrawLine PolySegment
+XDrawLines PolyLine
+XDrawPoint PolyPoint
+XDrawPoints PolyPoint
+XDrawRectangle PolyRectangle
+XDrawRectangles PolyRectangle
+XDrawSegments PolySegment
+XDrawString PolyText8
+XDrawString16 PolyText16
+XDrawText PolyText8
+XDrawText16 PolyText16
+XEnableAccessControl SetAccessControl
+XFetchBytes GetProperty
+XFetchName GetProperty
+XFillArc PolyFillArc
+XFillArcs PolyFillArc
+XFillPolygon FillPoly
+XFillRectangle PolyFillRectangle
+XFillRectangles PolyFillRectangle
+XForceScreenSaver ForceScreenSaver
+XFreeColormap FreeColormap
+XFreeColors FreeColors
+XFreeCursor FreeCursor
+XFreeFont CloseFont
+XFreeGC FreeGC
+XFreePixmap FreePixmap
+XGetAtomName GetAtomName
+XGetClassHint GetProperty
+XGetFontPath GetFontPath
+XGetGeometry GetGeometry
+XGetIconName GetProperty
+XGetIconSizes GetProperty
+XGetImage GetImage
+XGetInputFocus GetInputFocus
+XGetKeyboardControl GetKeyboardControl
+XGetKeyboardMapping GetKeyboardMapping
+XGetModifierMapping GetModifierMapping
+XGetMotionEvents GetMotionEvents
+XGetNormalHints GetProperty
+XGetPointerControl GetPointerControl
+XGetPointerMapping GetPointerMapping
+XGetRGBColormaps GetProperty
+XGetScreenSaver GetScreenSaver
+XGetSelectionOwner GetSelectionOwner
+XGetSizeHints GetProperty
+XGetTextProperty GetProperty
+XGetTransientForHint GetProperty
+XGetWMClientMachine GetProperty
+XGetWMColormapWindows GetProperty
+ InternAtom
+XGetWMHints GetProperty
+XGetWMIconName GetProperty
+XGetWMName GetProperty
+XGetWMNormalHints GetProperty
+XGetWMProtocols GetProperty
+ InternAtom
+XGetWMSizeHints GetProperty
+XGetWindowAttributes GetWindowAttributes
+ GetGeometry
+XGetWindowProperty GetProperty
+XGetZoomHints GetProperty
+XGrabButton GrabButton
+XGrabKey GrabKey
+XGrabKeyboard GrabKeyboard
+XGrabPointer GrabPointer
+XGrabServer GrabServer
+XIconifyWindow InternAtom
+ SendEvent
+XInitExtension QueryExtension
+XInstallColormap InstallColormap
+XInternAtom InternAtom
+XKillClient KillClient
+XListExtensions ListExtensions
+XListFonts ListFonts
+XListFontsWithInfo ListFontsWithInfo
+XListHosts ListHosts
+XListInstalledColormaps ListInstalledColormaps
+XListProperties ListProperties
+XLoadFont OpenFont
+XLoadQueryFont OpenFont
+ QueryFont
+XLookupColor LookupColor
+XLowerWindow ConfigureWindow
+XMapRaised ConfigureWindow
+ MapWindow
+XMapSubwindows MapSubwindows
+XMapWindow MapWindow
+XMoveResizeWindow ConfigureWindow
+XMoveWindow ConfigureWindow
+XNoOp NoOperation
+XOpenDisplay CreateGC
+XParseColor LookupColor
+XPutImage PutImage
+XQueryBestCursor QueryBestSize
+XQueryBestSize QueryBestSize
+XQueryBestStipple QueryBestSize
+XQueryBestTile QueryBestSize
+XQueryColor QueryColors
+XQueryColors QueryColors
+XQueryExtension QueryExtension
+XQueryFont QueryFont
+XQueryKeymap QueryKeymap
+XQueryPointer QueryPointer
+XQueryTextExtents QueryTextExtents
+XQueryTextExtents16 QueryTextExtents
+XQueryTree QueryTree
+XRaiseWindow ConfigureWindow
+XReadBitmapFile CreateGC
+ CreatePixmap
+ FreeGC
+ PutImage
+XRecolorCursor RecolorCursor
+XReconfigureWMWindow ConfigureWindow
+ SendEvent
+XRemoveFromSaveSet ChangeSaveSet
+XRemoveHost ChangeHosts
+XRemoveHosts ChangeHosts
+XReparentWindow ReparentWindow
+XResetScreenSaver ForceScreenSaver
+XResizeWindow ConfigureWindow
+XRestackWindows ConfigureWindow
+XRotateBuffers RotateProperties
+XRotateWindowProperties RotateProperties
+XSelectInput ChangeWindowAttributes
+XSendEvent SendEvent
+XSetAccessControl SetAccessControl
+XSetArcMode ChangeGC
+XSetBackground ChangeGC
+XSetClassHint ChangeProperty
+XSetClipMask ChangeGC
+XSetClipOrigin ChangeGC
+XSetClipRectangles SetClipRectangles
+XSetCloseDownMode SetCloseDownMode
+XSetCommand ChangeProperty
+XSetDashes SetDashes
+XSetFillRule ChangeGC
+XSetFillStyle ChangeGC
+XSetFont ChangeGC
+XSetFontPath SetFontPath
+XSetForeground ChangeGC
+XSetFunction ChangeGC
+XSetGraphicsExposures ChangeGC
+XSetIconName ChangeProperty
+XSetIconSizes ChangeProperty
+XSetInputFocus SetInputFocus
+XSetLineAttributes ChangeGC
+XSetModifierMapping SetModifierMapping
+XSetNormalHints ChangeProperty
+XSetPlaneMask ChangeGC
+XSetPointerMapping SetPointerMapping
+XSetRGBColormaps ChangeProperty
+XSetScreenSaver SetScreenSaver
+XSetSelectionOwner SetSelectionOwner
+XSetSizeHints ChangeProperty
+XSetStandardProperties ChangeProperty
+XSetState ChangeGC
+XSetStipple ChangeGC
+XSetSubwindowMode ChangeGC
+XSetTextProperty ChangeProperty
+XSetTile ChangeGC
+XSetTransientForHint ChangeProperty
+XSetTSOrigin ChangeGC
+XSetWMClientMachine ChangeProperty
+XSetWMColormapWindows ChangeProperty
+ InternAtom
+XSetWMHints ChangeProperty
+XSetWMIconName ChangeProperty
+XSetWMName ChangeProperty
+XSetWMNormalHints ChangeProperty
+XSetWMProperties ChangeProperty
+XSetWMProtocols ChangeProperty
+ InternAtom
+XSetWMSizeHints ChangeProperty
+XSetWindowBackground ChangeWindowAttributes
+XSetWindowBackgroundPixmap ChangeWindowAttributes
+XSetWindowBorder ChangeWindowAttributes
+XSetWindowBorderPixmap ChangeWindowAttributes
+XSetWindowBorderWidth ConfigureWindow
+XSetWindowColormap ChangeWindowAttributes
+XSetZoomHints ChangeProperty
+XStoreBuffer ChangeProperty
+XStoreBytes ChangeProperty
+XStoreColor StoreColors
+XStoreColors StoreColors
+XStoreName ChangeProperty
+XStoreNamedColor StoreNamedColor
+XSync GetInputFocus
+XSynchronize GetInputFocus
+XTranslateCoordinates TranslateCoordinates
+XUndefineCursor ChangeWindowAttributes
+XUngrabButton UngrabButton
+XUngrabKey UngrabKey
+XUngrabKeyboard UngrabKeyboard
+XUngrabPointer UngrabPointer
+XUngrabServer UngrabServer
+XUninstallColormap UninstallColormap
+XUnloadFont CloseFont
+XUnmapSubwindows UnmapSubwindows
+XUnmapWindow UnmapWindow
+XWarpPointer WarpPointer
+XWithdrawWindow SendEvent
+ UnmapWindow
+.TE
+.bp
+.LP
+The following table lists each X protocol request (in alphabetical
+order) and the Xlib functions that reference it.
+.TS H
+lw(2.5i) lw(2.5i).
+_
+.sp 6p
+.B
+Protocol Request Xlib Function
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+AllocColor XAllocColor
+AllocColorCells XAllocColorCells
+AllocColorPlanes XAllocColorPlanes
+AllocNamedColor XAllocNamedColor
+AllowEvents XAllowEvents
+Bell XBell
+ChangeActivePointerGrab XChangeActivePointerGrab
+ChangeGC XChangeGC
+ XSetArcMode
+ XSetBackground
+ XSetClipMask
+ XSetClipOrigin
+ XSetFillRule
+ XSetFillStyle
+ XSetFont
+ XSetForeground
+ XSetFunction
+ XSetGraphicsExposures
+ XSetLineAttributes
+ XSetPlaneMask
+ XSetState
+ XSetStipple
+ XSetSubwindowMode
+ XSetTile
+ XSetTSOrigin
+ChangeHosts XAddHost
+ XAddHosts
+ XRemoveHost
+ XRemoveHosts
+ChangeKeyboardControl XAutoRepeatOff
+ XAutoRepeatOn
+ XChangeKeyboardControl
+ChangeKeyboardMapping XChangeKeyboardMapping
+ChangePointerControl XChangePointerControl
+ChangeProperty XChangeProperty
+ XSetClassHint
+ XSetCommand
+ XSetIconName
+ XSetIconSizes
+ XSetNormalHints
+ XSetRGBColormaps
+ XSetSizeHints
+ XSetStandardProperties
+ XSetTextProperty
+ XSetTransientForHint
+ XSetWMClientMachine
+ XSetWMColormapWindows
+ XSetWMHints
+ XSetWMIconName
+ XSetWMName
+ XSetWMNormalHints
+ XSetWMProperties
+ XSetWMProtocols
+ XSetWMSizeHints
+ XSetZoomHints
+ XStoreBuffer
+ XStoreBytes
+ XStoreName
+ChangeSaveSet XAddToSaveSet
+ XChangeSaveSet
+ XRemoveFromSaveSet
+ChangeWindowAttributes XChangeWindowAttributes
+ XDefineCursor
+ XSelectInput
+ XSetWindowBackground
+ XSetWindowBackgroundPixmap
+ XSetWindowBorder
+ XSetWindowBorderPixmap
+ XSetWindowColormap
+ XUndefineCursor
+CirculateWindow XCirculateSubwindowsDown
+ XCirculateSubwindowsUp
+ XCirculateSubwindows
+ClearArea XClearArea
+ XClearWindow
+CloseFont XFreeFont
+ XUnloadFont
+ConfigureWindow XConfigureWindow
+ XLowerWindow
+ XMapRaised
+ XMoveResizeWindow
+ XMoveWindow
+ XRaiseWindow
+ XReconfigureWMWindow
+ XResizeWindow
+ XRestackWindows
+ XSetWindowBorderWidth
+ConvertSelection XConvertSelection
+CopyArea XCopyArea
+CopyColormapAndFree XCopyColormapAndFree
+CopyGC XCopyGC
+CopyPlane XCopyPlane
+CreateColormap XCreateColormap
+CreateCursor XCreatePixmapCursor
+CreateGC XCreateGC
+ XCreateBitmapFromData
+ XCreatePixmapFromData
+ XOpenDisplay
+ XReadBitmapFile
+CreateGlyphCursor XCreateFontCursor
+ XCreateGlyphCursor
+CreatePixmap XCreatePixmap
+ XCreateBitmapFromData
+ XCreatePixmapFromData
+ XReadBitmapFile
+CreateWindow XCreateSimpleWindow
+ XCreateWindow
+DeleteProperty XDeleteProperty
+DestroySubwindows XDestroySubwindows
+DestroyWindow XDestroyWindow
+FillPoly XFillPolygon
+ForceScreenSaver XActivateScreenSaver
+ XForceScreenSaver
+ XResetScreenSaver
+FreeColormap XFreeColormap
+FreeColors XFreeColors
+FreeCursor XFreeCursor
+FreeGC XFreeGC
+ XCreateBitmapFromData
+ XCreatePixmapFromData
+ XReadBitmapFile
+FreePixmap XFreePixmap
+GetAtomName XGetAtomName
+GetFontPath XGetFontPath
+GetGeometry XGetGeometry
+ XGetWindowAttributes
+GetImage XGetImage
+GetInputFocus XGetInputFocus
+ XSync
+ XSynchronize
+GetKeyboardControl XGetKeyboardControl
+GetKeyboardMapping XGetKeyboardMapping
+GetModifierMapping XGetModifierMapping
+GetMotionEvents XGetMotionEvents
+GetPointerControl XGetPointerControl
+GetPointerMapping XGetPointerMapping
+GetProperty XFetchBytes
+ XFetchName
+ XGetClassHint
+ XGetIconName
+ XGetIconSizes
+ XGetNormalHints
+ XGetRGBColormaps
+ XGetSizeHints
+ XGetTextProperty
+ XGetTransientForHint
+ XGetWMClientMachine
+ XGetWMColormapWindows
+ XGetWMHints
+ XGetWMIconName
+ XGetWMName
+ XGetWMNormalHints
+ XGetWMProtocols
+ XGetWMSizeHints
+ XGetWindowProperty
+ XGetZoomHints
+GetSelectionOwner XGetSelectionOwner
+GetWindowAttributes XGetWindowAttributes
+GrabButton XGrabButton
+GrabKey XGrabKey
+GrabKeyboard XGrabKeyboard
+GrabPointer XGrabPointer
+GrabServer XGrabServer
+ImageText8 XDrawImageString
+ImageText16 XDrawImageString16
+InstallColormap XInstallColormap
+InternAtom XGetWMColormapWindows
+ XGetWMProtocols
+ XIconifyWindow
+ XInternAtom
+ XSetWMColormapWindows
+ XSetWMProtocols
+KillClient XKillClient
+ListExtensions XListExtensions
+ListFonts XListFonts
+ListFontsWithInfo XListFontsWithInfo
+ListHosts XListHosts
+ListInstalledColormaps XListInstalledColormaps
+ListProperties XListProperties
+LookupColor XLookupColor
+ XParseColor
+MapSubwindows XMapSubwindows
+MapWindow XMapRaised
+ XMapWindow
+NoOperation XNoOp
+OpenFont XLoadFont
+ XLoadQueryFont
+PolyArc XDrawArc
+ XDrawArcs
+PolyFillArc XFillArc
+ XFillArcs
+PolyFillRectangle XFillRectangle
+ XFillRectangles
+PolyLine XDrawLines
+PolyPoint XDrawPoint
+ XDrawPoints
+PolyRectangle XDrawRectangle
+ XDrawRectangles
+PolySegment XDrawLine
+ XDrawSegments
+PolyText8 XDrawString
+ XDrawText
+PolyText16 XDrawString16
+ XDrawText16
+PutImage XPutImage
+ XCreateBitmapFromData
+ XCreatePixmapFromData
+ XReadBitmapFile
+QueryBestSize XQueryBestCursor
+ XQueryBestSize
+ XQueryBestStipple
+ XQueryBestTile
+QueryColors XQueryColor
+ XQueryColors
+QueryExtension XInitExtension
+ XQueryExtension
+QueryFont XLoadQueryFont
+ XQueryFont
+QueryKeymap XQueryKeymap
+QueryPointer XQueryPointer
+QueryTextExtents XQueryTextExtents
+ XQueryTextExtents16
+QueryTree XQueryTree
+RecolorCursor XRecolorCursor
+ReparentWindow XReparentWindow
+RotateProperties XRotateBuffers
+ XRotateWindowProperties
+SendEvent XIconifyWindow
+ XReconfigureWMWindow
+ XSendEvent
+ XWithdrawWindow
+SetAccessControl XDisableAccessControl
+ XEnableAccessControl
+ XSetAccessControl
+SetClipRectangles XSetClipRectangles
+SetCloseDownMode XSetCloseDownMode
+SetDashes XSetDashes
+SetFontPath XSetFontPath
+SetInputFocus XSetInputFocus
+SetModifierMapping XSetModifierMapping
+SetPointerMapping XSetPointerMapping
+SetScreenSaver XGetScreenSaver
+ XSetScreenSaver
+SetSelectionOwner XSetSelectionOwner
+StoreColors XStoreColor
+ XStoreColors
+StoreNamedColor XStoreNamedColor
+TranslateCoordinates XTranslateCoordinates
+UngrabButton XUngrabButton
+UngrabKey XUngrabKey
+UngrabKeyboard XUngrabKeyboard
+UngrabPointer XUngrabPointer
+UngrabServer XUngrabServer
+UninstallColormap XUninstallColormap
+UnmapSubwindows XUnmapSubWindows
+UnmapWindow XUnmapWindow
+ XWithdrawWindow
+WarpPointer XWarpPointer
+.TE
+.bp
diff --git a/specs/X11/AppB b/specs/X11/AppB
new file mode 100644
index 0000000..2e57ede
--- /dev/null
+++ b/specs/X11/AppB
@@ -0,0 +1,101 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix B\fP\s-1
+
+\s+1\fBX Font Cursors\fP\s-1
+.sp 2
+.na
+.LP
+.XS
+Appendix B: X Font Cursors
+.XE
+The following are the available cursors that can be used with
+.PN XCreateFontCursor .
+.LP
+.Ds 0
+.TA 3i
+.ta 3i
+#define XC_X_cursor 0 #define XC_ll_angle 76
+#define XC_arrow 2 #define XC_lr_angle 78
+#define XC_based_arrow_down 4 #define XC_man 80
+#define XC_based_arrow_up 6 #define XC_middlebutton 82
+#define XC_boat 8 #define XC_mouse 84
+#define XC_bogosity 10 #define XC_pencil 86
+#define XC_bottom_left_corner 12 #define XC_pirate 88
+#define XC_bottom_right_corner 14 #define XC_plus 90
+#define XC_bottom_side 16 #define XC_question_arrow 92
+#define XC_bottom_tee 18 #define XC_right_ptr 94
+#define XC_box_spiral 20 #define XC_right_side 96
+#define XC_center_ptr 22 #define XC_right_tee 98
+#define XC_circle 24 #define XC_rightbutton 100
+#define XC_clock 26 #define XC_rtl_logo 102
+#define XC_coffee_mug 28 #define XC_sailboat 104
+#define XC_cross 30 #define XC_sb_down_arrow 106
+#define XC_cross_reverse 32 #define XC_sb_h_double_arrow 108
+#define XC_crosshair 34 #define XC_sb_left_arrow 110
+#define XC_diamond_cross 36 #define XC_sb_right_arrow 112
+#define XC_dot 38 #define XC_sb_up_arrow 114
+#define XC_dot_box_mask 40 #define XC_sb_v_double_arrow 116
+#define XC_double_arrow 42 #define XC_shuttle 118
+#define XC_draft_large 44 #define XC_sizing 120
+#define XC_draft_small 46 #define XC_spider 122
+#define XC_draped_box 48 #define XC_spraycan 124
+#define XC_exchange 50 #define XC_star 126
+#define XC_fleur 52 #define XC_target 128
+#define XC_gobbler 54 #define XC_tcross 130
+#define XC_gumby 56 #define XC_top_left_arrow 132
+#define XC_hand1 58 #define XC_top_left_corner 134
+#define XC_hand2 60 #define XC_top_right_corner 136
+#define XC_heart 62 #define XC_top_side 138
+#define XC_icon 64 #define XC_top_tee 140
+#define XC_iron_cross 66 #define XC_trek 142
+#define XC_left_ptr 68 #define XC_ul_angle 144
+#define XC_left_side 70 #define XC_umbrella 146
+#define XC_left_tee 72 #define XC_ur_angle 148
+#define XC_leftbutton 74 #define XC_watch 150
+ #define XC_xterm 152
+.De
+.bp
diff --git a/specs/X11/AppC b/specs/X11/AppC
new file mode 100644
index 0000000..43261ba
--- /dev/null
+++ b/specs/X11/AppC
@@ -0,0 +1,2230 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix C\fP\s-1
+
+\s+1\fBExtensions\fP\s-1
+.sp 2
+.na
+.LP
+.XS
+Appendix C: Extensions
+.XE
+Because X can evolve by extensions to the core protocol,
+it is important that extensions not be perceived as second-class citizens.
+At some point,
+your favorite extensions may be adopted as additional parts of the
+X Standard.
+.LP
+Therefore, there should be little to distinguish the use of an extension from
+that of the core protocol.
+To avoid having to initialize extensions explicitly in application programs,
+it is also important that extensions perform lazy evaluations,
+automatically initializing themselves when called for the first time.
+.LP
+This appendix describes techniques for writing extensions to Xlib that will
+run at essentially the same performance as the core protocol requests.
+.NT
+It is expected that a given extension to X consists of multiple
+requests.
+Defining 10 new features as 10 separate extensions is a bad practice.
+Rather, they should be packaged into a single extension
+and should use minor opcodes to distinguish the requests.
+.NE
+.LP
+The symbols and macros used for writing stubs to Xlib are listed in
+.hN X11/Xlibint.h .
+.SH
+Basic Protocol Support Routines
+.LP
+The basic protocol requests for extensions are
+.PN XQueryExtension
+and
+.PN XListExtensions .
+.IN "XQueryExtension" "" "@DEF@"
+.sM
+.FD 0
+Bool XQueryExtension(\^\fIdisplay\fP, \fIname\fP, \fImajor_opcode_return\fP, \
+\fIfirst_event_return\fP, \fIfirst_error_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIname;\fP\^
+.br
+ int *\fImajor_opcode_return\fP\^;
+.br
+ int *\fIfirst_event_return\fP\^;
+.br
+ int *\fIfirst_error_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIname\fP 1i
+Specifies the extension name.
+.IP \fImajor_opcode_return\fP 1i
+Returns the major opcode.
+.IP \fIfirst_event_return\fP 1i
+Returns the first event code, if any.
+.IP \fIfirst_error_return\fP 1i
+Returns the first error code, if any.
+.LP
+.eM
+The
+.PN XQueryExtension
+function determines if the named extension is present.
+If the extension is not present,
+.PN XQueryExtension
+returns
+.PN False ;
+otherwise, it returns
+.PN True .
+If the extension is present,
+.PN XQueryExtension
+returns the major opcode for the extension to major_opcode_return;
+otherwise,
+it returns zero.
+Any minor opcode and the request formats are specific to the
+extension.
+If the extension involves additional event types,
+.PN XQueryExtension
+returns the base event type code to first_event_return;
+otherwise,
+it returns zero.
+The format of the events is specific to the extension.
+If the extension involves additional error codes,
+.PN XQueryExtension
+returns the base error code to first_error_return;
+otherwise,
+it returns zero.
+The format of additional data in the errors is specific to the extension.
+.LP
+If the extension name is not in the Host Portable Character Encoding
+the result is implementation-dependent.
+Uppercase and lowercase matter;
+the strings ``thing'', ``Thing'', and ``thinG''
+are all considered different names.
+.IN "XListExtensions" "" "@DEF@"
+.sM
+.FD 0
+char **XListExtensions(\^\fIdisplay\fP, \fInextensions_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fInextensions_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInextensions_return\fP 1i
+Returns the number of extensions listed.
+.LP
+.eM
+The
+.PN XListExtensions
+function returns a list of all extensions supported by the server.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned strings are in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+.IN "XFreeExtensionList" "" "@DEF@"
+.sM
+.FD 0
+XFreeExtensionList(\^\fIlist\fP\^)
+.br
+ char **\fIlist\fP\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies the list of extension names.
+.LP
+.eM
+The
+.PN XFreeExtensionList
+function frees the memory allocated by
+.PN XListExtensions .
+.SH
+Hooking into Xlib
+.LP
+These functions allow you to hook into the library.
+They are not normally used by application programmers but are used
+by people who need to extend the core X protocol and
+the X library interface.
+The functions, which generate protocol requests for X, are typically
+called stubs.
+.LP
+In extensions, stubs first should check to see if they have initialized
+themselves on a connection.
+If they have not, they then should call
+.PN XInitExtension
+to attempt to initialize themselves on the connection.
+.LP
+If the extension needs to be informed of GC/font allocation or
+deallocation or if the extension defines new event types,
+the functions described here allow the extension to be
+called when these events occur.
+.LP
+The
+.PN XExtCodes
+structure returns the information from
+.PN XInitExtension
+and is defined in
+.hN X11/Xlib.h :
+.LP
+.IN "XExtCodes" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _XExtCodes { /* public to extension, cannot be changed */
+ int extension; /* extension number */
+ int major_opcode; /* major op-code assigned by server */
+ int first_event; /* first event number for the extension */
+ int first_error; /* first error number for the extension */
+} XExtCodes;
+.De
+.LP
+.eM
+.IN "XInitExtension" "" "@DEF@"
+.sM
+.FD 0
+XExtCodes *XInitExtension(\^\fIdisplay\fP, \fIname\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIname\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIname\fP 1i
+Specifies the extension name.
+.LP
+.eM
+The
+.PN XInitExtension
+function determines if the named extension exists.
+Then, it allocates storage for maintaining the
+information about the extension on the connection,
+chains this onto the extension list for the connection,
+and returns the information the stub implementor will need to access
+the extension.
+If the extension does not exist,
+.PN XInitExtension
+returns NULL.
+.LP
+If the extension name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Uppercase and lowercase matter;
+the strings ``thing'', ``Thing'', and ``thinG''
+are all considered different names.
+.LP
+The extension number in the
+.PN XExtCodes
+structure is
+needed in the other calls that follow.
+This extension number is unique only to a single connection.
+.LP
+.IN "XAddExtension" "" "@DEF@"
+.sM
+.FD 0
+XExtCodes *XAddExtension\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+For local Xlib extensions, the
+.PN XAddExtension
+function allocates the
+.PN XExtCodes
+structure, bumps the extension number count,
+and chains the extension onto the extension list.
+(This permits extensions to Xlib without requiring server extensions.)
+.SH
+Hooks into the Library
+.LP
+These functions allow you to define procedures that are to be
+called when various circumstances occur.
+The procedures include the creation of a new GC for a connection,
+the copying of a GC, the freeing of a GC, the creating and freeing of fonts,
+the conversion of events defined by extensions to and from wire
+format, and the handling of errors.
+.LP
+All of these functions return the previous procedure defined for this
+extension.
+.IN "XESetCloseDisplay" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetCloseDisplay(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when the display is closed.
+.LP
+.eM
+The
+.PN XESetCloseDisplay
+function defines a procedure to be called whenever
+.PN XCloseDisplay
+is called.
+It returns any previously defined procedure, usually NULL.
+.LP
+When
+.PN XCloseDisplay
+is called,
+your procedure is called
+with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIcodes\fP\^)
+ Display *\fIdisplay\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+.De
+.LP
+.eM
+.IN "XESetCreateGC" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetCreateGC(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when a GC is closed.
+.LP
+.eM
+The
+.PN XESetCreateGC
+function defines a procedure to be called whenever
+a new GC is created.
+It returns any previously defined procedure, usually NULL.
+.LP
+When a GC is created,
+your procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIgc\fP, \fIcodes\fP\^)
+ Display *\fIdisplay\fP\^;
+ GC \fIgc\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+.De
+.LP
+.eM
+.IN "XESetCopyGC" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetCopyGC(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when GC components are copied.
+.LP
+.eM
+The
+.PN XESetCopyGC
+function defines a procedure to be called whenever
+a GC is copied.
+It returns any previously defined procedure, usually NULL.
+.LP
+When a GC is copied,
+your procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIgc\fP, \fIcodes\fP\^)
+ Display *\fIdisplay\fP\^;
+ GC \fIgc\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+.De
+.LP
+.eM
+.IN "XESetFreeGC" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetFreeGC(\^\fIdisplay\fP, \fIextension\fP, \fIproc)\fP\^)(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when a GC is freed.
+.LP
+.eM
+The
+.PN XESetFreeGC
+function defines a procedure to be called whenever
+a GC is freed.
+It returns any previously defined procedure, usually NULL.
+.LP
+When a GC is freed,
+your procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIgc\fP, \fIcodes\fP\^)
+ Display *\fIdisplay\fP\^;
+ GC \fIgc\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+.De
+.LP
+.eM
+.IN "XESetCreateFont" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetCreateFont(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when a font is created.
+.LP
+.eM
+The
+.PN XESetCreateFont
+function defines a procedure to be called whenever
+.PN XLoadQueryFont
+and
+.PN XQueryFont
+are called.
+It returns any previously defined procedure, usually NULL.
+.LP
+When
+.PN XLoadQueryFont
+or
+.PN XQueryFont
+is called,
+your procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIfs\fP, \fIcodes\fP\^)
+ Display *\fIdisplay\fP\^;
+ XFontStruct *\fIfs\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+.De
+.LP
+.eM
+.IN "XESetFreeFont" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetFreeFont(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int (\^*\fIproc\fP)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when a font is freed.
+.LP
+.eM
+The
+.PN XESetFreeFont
+function defines a procedure to be called whenever
+.PN XFreeFont
+is called.
+It returns any previously defined procedure, usually NULL.
+.LP
+When
+.PN XFreeFont
+is called, your procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIfs\fP, \fIcodes\fP\^)
+ Display *\fIdisplay\fP\^;
+ XFontStruct *\fIfs\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+.De
+.LP
+.eM
+The
+.PN XESetWireToEvent
+and
+.PN XESetEventToWire
+functions allow you to define new events to the library.
+An
+.PN XEvent
+structure always has a type code (type
+.PN int )
+as the first component.
+This uniquely identifies what kind of event it is.
+The second component is always the serial number (type
+.PN unsigned
+.PN long )
+of the last request processed by the server.
+The third component is always a Boolean (type
+.PN Bool )
+indicating whether the event came from a
+.PN SendEvent
+protocol request.
+The fourth component is always a pointer to the display
+the event was read from.
+The fifth component is always a resource ID of one kind or another,
+usually a window, carefully selected to be useful to toolkit dispatchers.
+The fifth component should always exist, even if
+the event does not have a natural destination;
+if there is no value
+from the protocol to put in this component, initialize it to zero.
+.NT
+There is an implementation limit such that your host event
+structure size cannot be bigger than the size of the
+.PN XEvent
+union of structures.
+There also is no way to guarantee that more than 24 elements or 96 characters
+in the structure will be fully portable between machines.
+.NE
+.IN "XESetWireToEvent" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetWireToEvent(\^\fIdisplay\fP, \fIevent_number\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIevent_number\fP\^;
+.br
+ Status (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_number\fP 1i
+Specifies the event code.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when converting an event.
+.LP
+.eM
+The
+.PN XESetWireToEvent
+function defines a procedure to be called when an event
+needs to be converted from wire format
+.Pn ( xEvent )
+to host format
+.Pn ( XEvent ).
+The event number defines which protocol event number to install a
+conversion procedure for.
+.PN XESetWireToEvent
+returns any previously defined procedure.
+.NT
+You can replace a core event conversion function with one
+of your own, although this is not encouraged.
+It would, however, allow you to intercept a core event
+and modify it before being placed in the queue or otherwise examined.
+.NE
+When Xlib needs to convert an event from wire format to host
+format, your procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+Status (*\fIproc\fP\^)(\^\fIdisplay\fP, \fIre\fP, \fIevent\fP\^)
+ Display *\fIdisplay\fP\^;
+ XEvent *\fIre\fP\^;
+ xEvent *\fIevent\fP\^;
+.De
+.LP
+.eM
+Your procedure must return status to indicate if the conversion succeeded.
+The re argument is a pointer to where the host format event should be stored,
+and the event argument is the 32-byte wire event structure.
+In the
+.PN XEvent
+structure you are creating,
+you must fill in the five required members of the event structure.
+You should fill in the type member with the type specified for the
+.PN xEvent
+structure.
+You should copy all other members from the
+.PN xEvent
+structure (wire format) to the
+.PN XEvent
+structure (host format).
+Your conversion procedure should return
+.PN True
+if the event should be placed in the queue or
+.PN False
+if it should not be placed in the queue.
+.LP
+To initialize the serial number component of the event, call
+.PN _XSetLastRequestRead
+with the event and use the return value.
+.LP
+.IN "_XSetLastRequestRead" "" "@DEF@"
+.sM
+.FD 0
+unsigned long _XSetLastRequestRead(\^\fIdisplay\fP, \fIrep\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ xGenericReply *\fIrep\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIrep\fP 1i
+Specifies the wire event structure.
+.LP
+.eM
+The
+.PN _XSetLastRequestRead
+function computes and returns a complete serial number from the partial
+serial number in the event.
+.sp
+.LP
+.IN "XESetEventToWire" "" "@DEF@"
+.sM
+.FD 0
+Status (*XESetEventToWire(\^\fIdisplay\fP, \fIevent_number\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIevent_number\fP\^;
+.br
+ int (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_number\fP 1i
+Specifies the event code.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when converting an event.
+.LP
+.eM
+The
+.PN XESetEventToWire
+function defines a procedure to be called when an event
+needs to be converted from host format
+.Pn ( XEvent )
+to wire format
+.Pn ( xEvent )
+form.
+The event number defines which protocol event number to install a
+conversion procedure for.
+.PN XESetEventToWire
+returns any previously defined procedure.
+It returns zero if the conversion fails or nonzero otherwise.
+.NT
+You can replace a core event conversion function with one
+of your own, although this is not encouraged.
+It would, however, allow you to intercept a core event
+and modify it before being sent to another client.
+.NE
+When Xlib needs to convert an event from host format to wire format,
+your procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIre\fP, \fIevent\fP\^)
+ Display *\fIdisplay\fP\^;
+ XEvent *\fIre\fP\^;
+ xEvent *\fIevent\fP\^;
+.De
+.LP
+.eM
+The re argument is a pointer to the host format event,
+and the event argument is a pointer to where the 32-byte wire event
+structure should be stored.
+You should fill in the type with the type from the
+.PN XEvent
+structure.
+All other members then should be copied from the host format to the
+.PN xEvent
+structure.
+.IN "XESetWireToError" "" "@DEF@"
+.sM
+.FD 0
+Bool (*XESetWireToError(\^\fIdisplay\fP, \fIerror_number\fP, \fIproc\fP\^)(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIerror_number\fP\^;
+.br
+ Bool (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIerror_number\fP 1i
+Specifies the error code.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when an error is received.
+.LP
+.eM
+The
+.PN XESetWireToError
+function defines a procedure to be called when an extension
+error needs to be converted from wire format to host format.
+The error number defines which protocol error code to install
+the conversion procedure for.
+.PN XESetWireToError
+returns any previously defined procedure.
+.LP
+Use this function for extension errors that contain additional error values
+beyond those in a core X error, when multiple wire errors must be combined
+into a single Xlib error, or when it is necessary to intercept an
+X error before it is otherwise examined.
+.LP
+When Xlib needs to convert an error from wire format to host format,
+the procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+Bool (*\fIproc\fP\^)(\^\fIdisplay\fP, \fIhe\fP, \fIwe\fP\^)
+ Display *\fIdisplay\fP\^;
+ XErrorEvent *\fIhe\fP\^;
+ xError *\fIwe\fP\^;
+.De
+.LP
+.eM
+The he argument is a pointer to where the host format error should be stored.
+The structure pointed at by he is guaranteed to be as large as an
+.PN XEvent
+structure and so can be cast to a type larger than an
+.PN XErrorEvent
+to store additional values.
+If the error is to be completely ignored by Xlib
+(for example, several protocol error structures will be combined into
+one Xlib error),
+then the function should return
+.PN False ;
+otherwise, it should return
+.PN True .
+.IN "XESetError" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetError(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when an error is received.
+.LP
+.eM
+Inside Xlib, there are times that you may want to suppress the
+calling of the external error handling when an error occurs.
+This allows status to be returned on a call at the cost of the call
+being synchronous (though most such functions are query operations, in any
+case, and are typically programmed to be synchronous).
+.LP
+When Xlib detects a protocol error in
+.PN _XReply ,
+it calls your procedure with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+int (*\fIproc\fP\^)(\fIdisplay\fP, \fIerr\fP, \fIcodes\fP, \fIret_code\fP\^)
+ Display *\fIdisplay\fP\^;
+ xError *\fIerr\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+ int *\fIret_code\fP\^;
+.De
+.LP
+.eM
+The err argument is a pointer to the 32-byte wire format error.
+The codes argument is a pointer to the extension codes structure.
+The ret_code argument is the return code you may want
+.PN _XReply
+returned to.
+.LP
+If your procedure returns a zero value,
+the error is not suppressed, and
+the client's error handler is called.
+(For further information, see section 11.8.2.)
+If your procedure returns nonzero,
+the error is suppressed, and
+.PN _XReply
+returns the value of ret_code.
+.IN "XESetErrorString" "" "@DEF@"
+.sM
+.FD 0
+char *(*XESetErrorString(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ char *(\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call to obtain an error string.
+.LP
+.eM
+The
+.PN XGetErrorText
+function returns a string to the user for an error.
+.PN XESetErrorString
+allows you to define a procedure to be called that
+should return a pointer to the error message.
+The following is an example.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+(*\fIproc\fP\^)(\^\fIdisplay\fP, \fIcode\fP, \fIcodes\fP, \fIbuffer\fP, \fInbytes\fP\^)
+ Display *\fIdisplay\fP\^;
+ int \fIcode\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+ char *\fIbuffer\fP\^;
+ int \fInbytes\fP\^;
+.De
+.LP
+.eM
+Your procedure is called with the error code for every error detected.
+You should copy nbytes of a null-terminated string containing the
+error message into buffer.
+.IN "XESetPrintErrorValues" "" "@DEF@"
+.sM
+.FD 0
+void (*XESetPrintErrorValues(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ void (\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when an error is printed.
+.LP
+.eM
+The
+.PN XESetPrintErrorValues
+function defines a procedure to be called when an extension
+error is printed, to print the error values.
+Use this function for extension errors that contain additional error values
+beyond those in a core X error.
+It returns any previously defined procedure.
+.LP
+When Xlib needs to print an error,
+the procedure is called with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+void (*\fIproc\fP\^)(\^\fIdisplay\fP, \fIev\fP, \fIfp\fP\^)
+ Display *\fIdisplay\fP\^;
+ XErrorEvent *\fIev\fP\^;
+ void *\fIfp\fP\^;
+.De
+.LP
+.eM
+The structure pointed at by ev is guaranteed to be as large as an
+.PN XEvent
+structure and so can be cast to a type larger than an
+.PN XErrorEvent
+to obtain additional values set by using
+.PN XESetWireToError .
+The underlying type of the fp argument is system dependent;
+on a POSIX-compliant system, fp should be cast to type FILE*.
+.IN "XESetFlushGC" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetFlushGC(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int *(\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when a GC is flushed.
+.LP
+.eM
+The procedure set by the
+.PN XESetFlushGC
+function has the same interface as the procedure set by the
+.PN XESetCopyGC
+function, but is called when a GC cache needs to be updated in the server.
+.IN "XESetBeforeFlush" "" "@DEF@"
+.sM
+.FD 0
+int (*XESetBeforeFlush(\^\fIdisplay\fP, \fIextension\fP, \fIproc\fP\^))(\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIextension\fP\^;
+.br
+ int *(\^*\fIproc\fP\^)(\^);
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIextension\fP 1i
+Specifies the extension number.
+.IP \fIproc\fP 1i
+Specifies the procedure to call when a buffer is flushed.
+.LP
+.eM
+The
+.PN XESetBeforeFlush
+function defines a procedure to be called when data is about to be
+sent to the server. When data is about to be sent, your procedure is
+called one or more times with these arguments:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.R
+void (*\fIproc\fP\^)(\^\fIdisplay\fP, \fIcodes\fP, \fIdata\fP, \fIlen\fP\^)
+ Display *\fIdisplay\fP\^;
+ XExtCodes *\fIcodes\fP\^;
+ char *\fIdata\fP\^;
+ long \fIlen\fP\^;
+.De
+.LP
+.eM
+The data argument specifies a portion of the outgoing data buffer,
+and its length in bytes is specified by the len argument.
+Your procedure must not alter the contents of the data and must not
+do additional protocol requests to the same display.
+.SH
+Hooks onto Xlib Data Structures
+.LP
+Various Xlib data structures have provisions for extension procedures
+to chain extension supplied data onto a list.
+These structures are
+.PN GC ,
+.PN Visual ,
+.PN Screen ,
+.PN ScreenFormat ,
+.PN Display ,
+and
+.PN XFontStruct .
+Because the list pointer is always the first member in the structure,
+a single set of procedures can be used to manipulate the data
+on these lists.
+.LP
+The following structure is used in the functions in this section
+and is defined in
+.hN X11/Xlib.h :
+.LP
+.IN "XExtData" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _XExtData {
+ int number; /* number returned by XInitExtension */
+ struct _XExtData *next; /* next item on list of data for structure */
+ int (*free_private)(); /* if defined, called to free private */
+ XPointer private_data; /* data private to this extension. */
+} XExtData;
+.De
+.LP
+.eM
+When any of the data structures listed above are freed,
+the list is walked, and the structure's free procedure (if any) is called.
+If free is NULL,
+then the library frees both the data pointed to by the private_data member
+and the structure itself.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+union { Display *display;
+ GC gc;
+ Visual *visual;
+ Screen *screen;
+ ScreenFormat *pixmap_format;
+ XFontStruct *font } XEDataObject;
+.De
+.LP
+.eM
+.IN "XEHeadOfExtensionList" "" "@DEF@"
+.sM
+.FD 0
+XExtData **XEHeadOfExtensionList(\^\fIobject\fP\^)
+ XEDataObject \fIobject\fP\^;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object.
+.LP
+.eM
+The
+.PN XEHeadOfExtensionList
+function returns a pointer to the list of extension structures attached
+to the specified object.
+In concert with
+.PN XAddToExtensionList ,
+.PN XEHeadOfExtensionList
+allows an extension to attach arbitrary data to any of the structures
+of types contained in
+.PN XEDataObject .
+.LP
+.IN "XAddToExtensionList" "" "@DEF@"
+.sM
+.FD 0
+XAddToExtensionList(\^\fIstructure\fP, \fIext_data\fP\^)
+.br
+ XExtData **\fIstructure\fP\^;
+.br
+ XExtData *\fIext_data\fP\^;
+.FN
+.IP \fIstructure\fP 1i
+Specifies the extension list.
+.IP \fIext_data\fP 1i
+Specifies the extension data structure to add.
+.LP
+.eM
+The structure argument is a pointer to one of the data structures
+enumerated above.
+You must initialize ext_data->number with the extension number
+before calling this function.
+.IN "XFindOnExtensionList" "" "@DEF@"
+.sM
+.FD 0
+XExtData *XFindOnExtensionList(\^\fIstructure\fP, \fInumber\fP\^)
+.br
+ struct _XExtData **\fIstructure\fP\^;
+.br
+ int \fInumber\fP\^;
+.FN
+.IP \fIstructure\fP 1i
+Specifies the extension list.
+.IP \fInumber\fP 1i
+Specifies the extension number from
+.PN XInitExtension .
+.LP
+.eM
+The
+.PN XFindOnExtensionList
+function returns the first extension data structure
+for the extension numbered number.
+It is expected that an extension will add at most one extension
+data structure to any single data structure's extension data list.
+There is no way to find additional structures.
+.LP
+The
+.PN XAllocID
+macro, which allocates and returns a resource ID, is defined in
+.hN X11/Xlib.h .
+.IN "XAllocID" "" "@DEF@"
+.sM
+.FD 0
+XAllocID\^(\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+This macro is a call through the
+.PN Display
+structure to an internal resource ID allocator.
+It returns a resource ID that you can use when creating new resources.
+.LP
+The
+.PN XAllocIDs
+macro allocates and returns an array of resource ID.
+.IN "XAllocIDs" "" "@DEF@"
+.sM
+.FD 0
+XAllocIDs\^(\fIdisplay\fP, \fIids_return\fP, \fIcount\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID *\fIids_return\fP\^;
+.br
+ int \fIcount\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIids_return\fP 1i
+Returns the resource IDs.
+.IP \fIrep\fP 1i
+Specifies the number of resource IDs requested.
+.LP
+.eM
+This macro is a call through the
+.PN Display
+structure to an internal resource ID allocator.
+It returns resource IDs to the array supplied by the caller.
+To correctly handle automatic reuse of resource IDs, you must call
+.PN XAllocIDs
+when requesting multiple resource IDs. This call might generate
+protocol requests.
+.SH
+GC Caching
+.LP
+GCs are cached by the library to allow merging of independent change
+requests to the same GC into single protocol requests.
+This is typically called a write-back cache.
+Any extension procedure whose behavior depends on the contents of a GC
+must flush the GC cache to make sure the server has up-to-date contents
+in its GC.
+.LP
+The
+.PN FlushGC
+macro checks the dirty bits in the library's GC structure and calls
+.PN _XFlushGCCache
+if any elements have changed.
+The
+.PN FlushGC
+macro is defined as follows:
+.IN "FlushGC" "" "@DEF@"
+.sM
+.FD 0
+FlushGC\^(\^\fIdisplay\fP\^, \fIgc\fP\^)
+.br
+ Display *\^\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.LP
+.eM
+Note that if you extend the GC to add additional resource ID components,
+you should ensure that the library stub sends the change request immediately.
+This is because a client can free a resource immediately after
+using it, so if you only stored the value in the cache without
+forcing a protocol request, the resource might be destroyed before being
+set into the GC.
+You can use the
+.PN _XFlushGCCache
+procedure
+to force the cache to be flushed.
+The
+.PN _XFlushGCCache
+procedure
+is defined as follows:
+.IN "_XFlushGCCache" "" "@DEF@"
+.sM
+.FD 0
+_XFlushGCCache\^(\^\fIdisplay\fP\^, \fIgc\fP\^)
+.br
+ Display *\^\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.LP
+.eM
+.SH
+Graphics Batching
+.LP
+If you extend X to add more poly graphics primitives, you may be able to
+take advantage of facilities in the library to allow back-to-back
+single calls to be transformed into poly requests.
+This may dramatically improve performance of programs that are not
+written using poly requests.
+A pointer to an
+.PN xReq ,
+called last_req in the display structure, is the last request being processed.
+By checking that the last request
+type, drawable, gc, and other options are the same as the new one
+and that there is enough space left in the buffer, you may be able
+to just extend the previous graphics request by extending the length
+field of the request and appending the data to the buffer.
+This can improve performance by five times or more in naive programs.
+For example, here is the source for the
+.PN XDrawPoint
+stub.
+(Writing extension stubs is discussed in the next section.)
+.IP
+.sM
+.nf
+
+#include <X11/Xlibint.h>
+
+/* precompute the maximum size of batching request allowed */
+
+static int size = sizeof(xPolyPointReq) + EPERBATCH * sizeof(xPoint);
+
+XDrawPoint(dpy, d, gc, x, y)
+ register Display *dpy;
+ Drawable d;
+ GC gc;
+ int x, y; /* INT16 */
+{
+ xPoint *point;
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ {
+ register xPolyPointReq *req = (xPolyPointReq *) dpy->last_req;
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyPoint)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && (req->coordMode == CoordModeOrigin)
+ && ((dpy->bufptr + sizeof (xPoint)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < size) ) {
+ point = (xPoint *) dpy->bufptr;
+ req->length += sizeof (xPoint) >> 2;
+ dpy->bufptr += sizeof (xPoint);
+ }
+
+ else {
+ GetReqExtra(PolyPoint, 4, req); /* 1 point = 4 bytes */
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->coordMode = CoordModeOrigin;
+ point = (xPoint *) (req + 1);
+ }
+ point->x = x;
+ point->y = y;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+}
+.fi
+.LP
+.eM
+To keep clients from generating very long requests that may monopolize the
+server,
+there is a symbol defined in
+.hN X11/Xlibint.h
+of EPERBATCH on the number of requests batched.
+Most of the performance benefit occurs in the first few merged requests.
+Note that
+.PN FlushGC
+is called \fIbefore\fP picking up the value of last_req,
+because it may modify this field.
+.SH
+Writing Extension Stubs
+.LP
+All X requests always contain the length of the request,
+expressed as a 16-bit quantity of 32 bits.
+This means that a single request can be no more than 256K bytes in
+length.
+Some servers may not support single requests of such a length.
+The value of dpy->max_request_size contains the maximum length as
+defined by the server implementation.
+For further information,
+see ``X Window System Protocol.''
+.SH
+Requests, Replies, and Xproto.h
+.LP
+The
+.hN X11/Xproto.h
+file contains three sets of definitions that
+are of interest to the stub implementor:
+request names, request structures, and reply structures.
+.LP
+You need to generate a file equivalent to
+.hN X11/Xproto.h
+for your extension and need to include it in your stub procedure.
+Each stub procedure also must include
+.hN X11/Xlibint.h .
+.LP
+The identifiers are deliberately chosen in such a way that, if the
+request is called X_DoSomething, then its request structure is
+xDoSomethingReq, and its reply is xDoSomethingReply.
+The GetReq family of macros, defined in
+.hN X11/Xlibint.h ,
+takes advantage of this naming scheme.
+.LP
+For each X request,
+there is a definition in
+.hN X11/Xproto.h
+that looks similar to this:
+.LP
+.Ds
+.R
+#define X_DoSomething 42
+.De
+In your extension header file,
+this will be a minor opcode,
+instead of a major opcode.
+.SH
+Request Format
+.LP
+Every request contains an 8-bit major opcode and a 16-bit length field
+expressed in units of 4 bytes.
+Every request consists of 4 bytes of header
+(containing the major opcode, the length field, and a data byte) followed by
+zero or more additional bytes of data.
+The length field defines the total length of the request, including the header.
+The length field in a request must equal the minimum length required to contain
+the request.
+If the specified length is smaller or larger than the required length,
+the server should generate a
+.PN BadLength
+error.
+Unused bytes in a request are not required to be zero.
+Extensions should be designed in such a way that long protocol requests
+can be split up into smaller requests,
+if it is possible to exceed the maximum request size of the server.
+The protocol guarantees the maximum request size to be no smaller than
+4096 units (16384 bytes).
+.LP
+Major opcodes 128 through 255 are reserved for extensions.
+Extensions are intended to contain multiple requests,
+so extension requests typically have an additional minor opcode encoded
+in the second data byte in the request header,
+but the placement and interpretation of this minor opcode as well as all
+other fields in extension requests are not defined by the core protocol.
+Every request is implicitly assigned a sequence number (starting with one)
+used in replies, errors, and events.
+.LP
+To help but not cure portability problems to certain machines, the
+.PN B16
+and
+.PN B32
+macros have been defined so that they can become bitfield specifications
+on some machines.
+For example, on a Cray,
+these should be used for all 16-bit and 32-bit quantities, as discussed below.
+.LP
+Most protocol requests have a corresponding structure typedef in
+.hN X11/Xproto.h ,
+which looks like:
+.LP
+.IN "xDoSomethingReq" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _DoSomethingReq {
+ CARD8 reqType; /* X_DoSomething */
+ CARD8 someDatum; /* used differently in different requests */
+ CARD16 length B16; /* total # of bytes in request, divided by 4 */
+ ...
+ /* request-specific data */
+ ...
+} xDoSomethingReq;
+.De
+.LP
+.eM
+If a core protocol request has a single 32-bit argument,
+you need not declare a request structure in your extension header file.
+Instead, such requests use the
+.PN xResourceReq
+structure in
+.hN X11/Xproto.h .
+This structure is used for any request whose single argument is a
+.PN Window ,
+.PN Pixmap ,
+.PN Drawable ,
+.PN GContext ,
+.PN Font ,
+.PN Cursor ,
+.PN Colormap ,
+.PN Atom ,
+or
+.PN VisualID .
+.LP
+.IN "xResourceReq" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _ResourceReq {
+ CARD8 reqType; /* the request type, e.g. X_DoSomething */
+ BYTE pad; /* not used */
+ CARD16 length B16; /* 2 (= total # of bytes in request, divided by 4) */
+ CARD32 id B32; /* the Window, Drawable, Font, GContext, etc. */
+} xResourceReq;
+.De
+.LP
+.eM
+If convenient,
+you can do something similar in your extension header file.
+.LP
+In both of these structures,
+the reqType field identifies the type of the request (for example,
+X_MapWindow or X_CreatePixmap).
+The length field tells how long the request is
+in units of 4-byte longwords.
+This length includes both the request structure itself and any
+variable-length data, such as strings or lists, that follow the
+request structure.
+Request structures come in different sizes,
+but all requests are padded to be multiples of four bytes long.
+.LP
+A few protocol requests take no arguments at all.
+Instead, they use the
+.PN xReq
+structure in
+.hN X11/Xproto.h ,
+which contains only a reqType and a length (and a pad byte).
+.LP
+If the protocol request requires a reply,
+then
+.hN X11/Xproto.h
+also contains a reply structure typedef:
+.LP
+.IN "xDoSomethingReply" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _DoSomethingReply {
+ BYTE type; /* always X_Reply */
+ BYTE someDatum; /* used differently in different requests */
+ CARD16 sequenceNumber B16; /* # of requests sent so far */
+ CARD32 length B32; /* # of additional bytes, divided by 4 */
+ ...
+ /* request-specific data */
+ ...
+} xDoSomethingReply;
+.De
+.LP
+.eM
+Most of these reply structures are 32 bytes long.
+If there are not that many reply values,
+then they contain a sufficient number of pad fields
+to bring them up to 32 bytes.
+The length field is the total number of bytes in the request minus 32,
+divided by 4.
+This length will be nonzero only if:
+.IP \(bu 5
+The reply structure is followed by variable-length data,
+such as a list or string.
+.IP \(bu 5
+The reply structure is longer than 32 bytes.
+.LP
+Only
+.PN GetWindowAttributes ,
+.PN QueryFont ,
+.PN QueryKeymap ,
+and
+.PN GetKeyboardControl
+have reply structures longer than 32 bytes in the core protocol.
+.LP
+A few protocol requests return replies that contain no data.
+.hN X11/Xproto.h
+does not define reply structures for these.
+Instead, they use the
+.PN xGenericReply
+structure, which contains only a type, length,
+and sequence number (and sufficient padding to make it 32 bytes long).
+.SH
+Starting to Write a Stub Procedure
+.LP
+An Xlib stub procedure should start like this:
+.LP
+.Ds
+.R
+#include "<X11/Xlibint.h>
+
+XDoSomething (arguments, ... )
+/* argument declarations */
+{
+
+register XDoSomethingReq *req;
+\^...
+.De
+If the protocol request has a reply,
+then the variable declarations should include the reply structure for the request.
+The following is an example:
+.LP
+.Ds
+.R
+xDoSomethingReply rep;
+.De
+.SH
+Locking Data Structures
+.LP
+To lock the display structure for systems that
+want to support multithreaded access to a single display connection,
+each stub will need to lock its critical section.
+Generally, this section is the point from just before the appropriate GetReq
+call until all arguments to the call have been stored into the buffer.
+The precise instructions needed for this locking depend upon the machine
+architecture.
+Two calls, which are generally implemented as macros, have been provided.
+.IN "LockDisplay" "" "@DEF@"
+.sM
+.FD 0
+LockDisplay(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.LP
+.IN "UnlockDisplay" "" "@DEF@"
+.FD 0
+UnlockDisplay(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.SH
+Sending the Protocol Request and Arguments
+.LP
+After the variable declarations,
+a stub procedure should call one of four macros defined in
+.hN X11/Xlibint.h :
+.PN GetReq ,
+.PN GetReqExtra ,
+.PN GetResReq ,
+or
+.PN GetEmptyReq .
+All of these macros take, as their first argument,
+the name of the protocol request as declared in
+.hN X11/Xproto.h
+except with X_ removed.
+Each one declares a
+.PN Display
+structure pointer,
+called dpy, and a pointer to a request structure, called req,
+which is of the appropriate type.
+The macro then appends the request structure to the output buffer,
+fills in its type and length field, and sets req to point to it.
+.LP
+If the protocol request has no arguments (for instance, X_GrabServer),
+then use
+.PN GetEmptyReq .
+.LP
+.Ds
+.R
+GetEmptyReq (DoSomething, req);
+.De
+If the protocol request has a single 32-bit argument (such as a
+.PN Pixmap ,
+.PN Window ,
+.PN Drawable ,
+.PN Atom ,
+and so on),
+then use
+.PN GetResReq .
+The second argument to the macro is the 32-bit object.
+.PN X_MapWindow
+is a good example.
+.LP
+.Ds
+.R
+GetResReq (DoSomething, rid, req);
+.De
+The rid argument is the
+.PN Pixmap ,
+.PN Window ,
+or other resource ID.
+.LP
+If the protocol request takes any other argument list,
+then call
+.PN GetReq .
+After the
+.PN GetReq ,
+you need to set all the other fields in the request structure,
+usually from arguments to the stub procedure.
+.LP
+.Ds
+.R
+GetReq (DoSomething, req);
+/* fill in arguments here */
+req->arg1 = arg1;
+req->arg2 = arg2;
+\^...
+.De
+A few stub procedures (such as
+.PN XCreateGC
+and
+.PN XCreatePixmap )
+return a resource ID to the caller but pass a resource ID as an argument
+to the protocol request.
+Such procedures use the macro
+.PN XAllocID
+to allocate a resource ID from the range of IDs
+that were assigned to this client when it opened the connection.
+.LP
+.Ds
+.R
+rid = req->rid = XAllocID();
+\^...
+return (rid);
+.De
+Finally, some stub procedures transmit a fixed amount of variable-length
+data after the request.
+Typically, these procedures (such as
+.PN XMoveWindow
+and
+.PN XSetBackground )
+are special cases of more general functions like
+.PN XMoveResizeWindow
+and
+.PN XChangeGC .
+These procedures use
+.PN GetReqExtra ,
+which is the same as
+.PN GetReq
+except that it takes an additional argument (the number of
+extra bytes to allocate in the output buffer after the request structure).
+This number should always be a multiple of four.
+.SH
+Variable Length Arguments
+.LP
+Some protocol requests take additional variable-length data that
+follow the
+.PN xDoSomethingReq
+structure.
+The format of this data varies from request to request.
+Some requests require a sequence of 8-bit bytes,
+others a sequence of 16-bit or 32-bit entities,
+and still others a sequence of structures.
+.LP
+It is necessary to add the length of any variable-length data to the
+length field of the request structure.
+That length field is in units of 32-bit longwords.
+If the data is a string or other sequence of 8-bit bytes,
+then you must round the length up and shift it before adding:
+.LP
+.Ds
+.R
+req->length += (nbytes+3)>>2;
+.De
+To transmit variable-length data, use the
+.PN Data
+macros.
+If the data fits into the output buffer,
+then this macro copies it to the buffer.
+If it does not fit, however,
+the
+.PN Data
+macro calls
+.PN _XSend ,
+which transmits first the contents of the buffer and then your data.
+The
+.PN Data
+macros take three arguments:
+the display, a pointer to the beginning of the data,
+and the number of bytes to be sent.
+.sM
+.FD 0
+Data(\^\fIdisplay\fP, (char *) \fIdata\fP, \fInbytes\fP\^);
+.sp
+Data16(\^\fIdisplay\fP, (short *) \fIdata\fP, \fInbytes\fP\^);
+.sp
+Data32(\^\fIdisplay\fP, (long *) \fIdata\fP, \fInbytes\fP\^);
+.FN
+.LP
+.eM
+.PN Data ,
+.PN Data16 ,
+and
+.PN Data32
+are macros that may use their last argument
+more than once, so that argument should be a variable rather than
+an expression such as ``nitems*sizeof(item)''.
+You should do that kind of computation in a separate statement before calling
+them.
+Use the appropriate macro when sending byte, short, or long data.
+.LP
+If the protocol request requires a reply,
+then call the procedure
+.PN _XSend
+instead of the
+.PN Data
+macro.
+.PN _XSend
+takes the same arguments, but because it sends your data immediately instead of
+copying it into the output buffer (which would later be flushed
+anyway by the following call on
+.PN _XReply ),
+it is faster.
+.SH
+Replies
+.LP
+If the protocol request has a reply,
+then call
+.PN _XReply
+after you have finished dealing with
+all the fixed-length and variable-length arguments.
+.PN _XReply
+flushes the output buffer and waits for an
+.PN xReply
+packet to arrive.
+If any events arrive in the meantime,
+.PN _XReply
+places them in the queue for later use.
+.IN "_XReply" "" "@DEF@"
+.sM
+.FD 0
+Status _XReply(\^\fIdisplay\fP, \fIrep\fP, \fIextra\fP, \fIdiscard\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ xReply *\fIrep\fP\^;
+.br
+ int \fIextra\fP\^;
+.br
+ Bool \fIdiscard\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIrep\fP 1i
+Specifies the reply structure.
+.IP \fIextra\fP 1i
+Specifies the number of 32-bit words expected after the replay.
+.IP \fIdiscard\fP 1i
+Specifies if any data beyond that specified in the extra argument
+should be discarded.
+.LP
+.eM
+The
+.PN _XReply
+function waits for a reply packet and copies its contents into the
+specified rep.
+.PN _XReply
+handles error and event packets that occur before the reply is received.
+.PN _XReply
+takes four arguments:
+.IP \(bu 5
+A
+.PN Display
+* structure
+.IP \(bu 5
+A pointer to a reply structure (which must be cast to an
+.PN xReply
+*)
+.IP \(bu 5
+The number of additional 32-bit words (beyond
+.Pn sizeof( xReply )
+= 32 bytes)
+in the reply structure
+.IP \(bu 5
+A Boolean that indicates whether
+.PN _XReply
+is to discard any additional bytes
+beyond those it was told to read
+.LP
+Because most reply structures are 32 bytes long,
+the third argument is usually 0.
+The only core protocol exceptions are the replies to
+.PN GetWindowAttributes ,
+.PN QueryFont ,
+.PN QueryKeymap ,
+and
+.PN GetKeyboardControl ,
+which have longer replies.
+.LP
+The last argument should be
+.PN False
+if the reply structure is followed
+by additional variable-length data (such as a list or string).
+It should be
+.PN True
+if there is not any variable-length data.
+.NT
+This last argument is provided for upward-compatibility reasons
+to allow a client to communicate properly with a hypothetical later
+version of the server that sends more data than the client expected.
+For example, some later version of
+.PN GetWindowAttributes
+might use a
+larger, but compatible,
+.PN xGetWindowAttributesReply
+that contains additional attribute data at the end.
+.NE
+.PN _XReply
+returns
+.PN True
+if it received a reply successfully or
+.PN False
+if it received any sort of error.
+.LP
+For a request with a reply that is not followed by variable-length
+data, you write something like:
+.LP
+.Ds
+.R
+_XReply(display, (xReply *)&rep, 0, True);
+*ret1 = rep.ret1;
+*ret2 = rep.ret2;
+*ret3 = rep.ret3;
+\^...
+UnlockDisplay(dpy);
+SyncHandle();
+return (rep.ret4);
+}
+.De
+If there is variable-length data after the reply,
+change the
+.PN True
+to
+.PN False ,
+and use the appropriate
+.PN _XRead
+function to read the variable-length data.
+.LP
+.sM
+.FD 0
+_XRead(\^\fIdisplay\fP, \fIdata_return\fP, \fInbytes\fP\^)
+ Display *\fIdisplay\fP\^;
+ char *\fIdata_return\fP\^;
+ long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdata_return\fP 1i
+Specifies the buffer.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes required.
+.LP
+.eM
+The
+.PN _XRead
+function reads the specified number of bytes into data_return.
+.LP
+.sM
+.FD 0
+_XRead16(\^\fIdisplay\fP, \fIdata_return\fP, \fInbytes\fP\^)
+ Display *\fIdisplay\fP\^;
+ short *\fIdata_return\fP\^;
+ long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdata_return\fP 1i
+Specifies the buffer.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes required.
+.LP
+.eM
+The
+.PN _XRead16
+function reads the specified number of bytes,
+unpacking them as 16-bit quantities,
+into the specified array as shorts.
+.LP
+.sM
+.FD 0
+_XRead32(\^\fIdisplay\fP, \fIdata_return\fP, \fInbytes\fP\^)
+ Display *\fIdisplay\fP\^;
+ long *\fIdata_return\fP\^;
+ long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdata_return\fP 1i
+Specifies the buffer.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes required.
+.LP
+.eM
+The
+.PN _XRead32
+function reads the specified number of bytes,
+unpacking them as 32-bit quantities,
+into the specified array as longs.
+.LP
+.sM
+.FD 0
+_XRead16Pad(\^\fIdisplay\fP, \fIdata_return\fP, \fInbytes\fP\^)
+ Display *\fIdisplay\fP\^;
+ short *\fIdata_return\fP\^;
+ long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdata_return\fP 1i
+Specifies the buffer.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes required.
+.LP
+.eM
+The
+.PN _XRead16Pad
+function reads the specified number of bytes,
+unpacking them as 16-bit quantities,
+into the specified array as shorts.
+If the number of bytes is not a multiple of four,
+.PN _XRead16Pad
+reads and discards up to two additional pad bytes.
+.LP
+.sM
+.FD 0
+_XReadPad(\^\fIdisplay\fP, \fIdata_return\fP, \fInbytes\fP\^)
+ Display *\fIdisplay\fP\^;
+ char *\fIdata_return\fP\^;
+ long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdata_return\fP 1i
+Specifies the buffer.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes required.
+.LP
+.eM
+The
+.PN _XReadPad
+function reads the specified number of bytes into data_return.
+If the number of bytes is not a multiple of four,
+.PN _XReadPad
+reads and discards up to three additional pad bytes.
+.LP
+Each protocol request is a little different.
+For further information,
+see the Xlib sources for examples.
+.SH
+Synchronous Calling
+.LP
+Each procedure should have a call, just before returning to the user,
+to a macro called
+.PN SyncHandle .
+If synchronous mode is enabled (see
+.PN XSynchronize ),
+the request is sent immediately.
+The library, however, waits until any error the procedure could generate
+at the server has been handled.
+.SH
+Allocating and Deallocating Memory
+.LP
+To support the possible reentry of these procedures,
+you must observe several conventions when allocating and deallocating memory,
+most often done when returning data to the user from the window
+system of a size the caller could not know in advance
+(for example, a list of fonts or a list of extensions).
+The standard C library functions on many systems
+are not protected against signals or other multithreaded uses.
+The following analogies to standard I/O library functions
+have been defined:
+.TS
+l l.
+T{
+.PN Xmalloc ()
+T} T{
+Replaces
+.PN malloc ()
+T}
+T{
+.PN XFree ()
+T} T{
+Replaces
+.PN free ()
+T}
+T{
+.PN Xcalloc ()
+T} T{
+Replaces
+.PN calloc ()
+T}
+.TE
+.LP
+These should be used in place of any calls you would make to the normal
+C library functions.
+.LP
+If you need a single scratch buffer inside a critical section
+(for example, to pack and unpack data to and from the wire protocol),
+the general memory allocators may be too expensive to use
+(particularly in output functions, which are performance critical).
+The following function returns a scratch buffer for use within a
+critical section:
+.IN "_XAllocScratch" "" "@DEF@"
+.sM
+.FD 0
+char *_XAllocScratch(\^\fIdisplay\fP, \fInbytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes required.
+.LP
+.eM
+This storage must only be used inside of a critical section of your
+stub. The returned pointer cannot be assumed valid after any call
+that might permit another thread to execute inside Xlib. For example,
+the pointer cannot be assumed valid after any use of the
+.PN GetReq
+or
+.PN Data
+families of macros,
+after any use of
+.PN _XReply ,
+or after any use of the
+.PN _XSend
+or
+.PN _XRead
+families of functions.
+.LP
+.sp
+The following function returns a scratch buffer for use across
+critical sections:
+.IN "_XAllocTemp" "" "@DEF@"
+.sM
+.FD 0
+char *_XAllocTemp(\^\fIdisplay\fP, \fInbytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes required.
+.LP
+.eM
+This storage can be used across calls that might permit another thread to
+execute inside Xlib. The storage must be explicitly returned to Xlib.
+The following function returns the storage:
+.IN "_XFreeTemp" "" "@DEF@"
+.sM
+.FD 0
+void _XFreeTemp(\^\fIdisplay\fP, \fIbuf\fP, \fInbytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIbuf\fP\^;
+.br
+ unsigned long \fInbytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIbuf\fP 1i
+Specifies the buffer to return.
+.IP \fInbytes\fP 1i
+Specifies the size of the buffer.
+.LP
+.eM
+You must pass back the same pointer and size that were returned by
+.PN _XAllocTemp .
+.SH
+Portability Considerations
+.LP
+Many machine architectures,
+including many of the more recent RISC architectures,
+do not correctly access data at unaligned locations;
+their compilers pad out structures to preserve this characteristic.
+Many other machines capable of unaligned references pad inside of structures
+as well to preserve alignment, because accessing aligned data is
+usually much faster.
+Because the library and the server use structures to access data at
+arbitrary points in a byte stream,
+all data in request and reply packets \fImust\fP be naturally aligned;
+that is, 16-bit data starts on 16-bit boundaries in the request
+and 32-bit data on 32-bit boundaries.
+All requests \fImust\fP be a multiple of 32 bits in length to preserve
+the natural alignment in the data stream.
+You must pad structures out to 32-bit boundaries.
+Pad information does not have to be zeroed unless you want to
+preserve such fields for future use in your protocol requests.
+Floating point varies radically between machines and should be
+avoided completely if at all possible.
+.LP
+This code may run on machines with 16-bit ints.
+So, if any integer argument, variable, or return value either can take
+only nonnegative values or is declared as a
+.PN CARD16
+in the protocol, be sure to declare it as
+.PN unsigned
+.PN int
+and not as
+.PN int .
+(This, of course, does not apply to Booleans or enumerations.)
+.LP
+Similarly,
+if any integer argument or return value is declared
+.PN CARD32
+in the protocol,
+declare it as an
+.PN unsigned
+.PN long
+and not as
+.PN int
+or
+.PN long .
+This also goes for any internal variables that may
+take on values larger than the maximum 16-bit
+.PN unsigned
+.PN int .
+.LP
+The library currently assumes that a
+.PN char
+is 8 bits, a
+.PN short
+is 16 bits, an
+.PN int
+is 16 or 32 bits, and a
+.PN long
+is 32 bits.
+The
+.PN PackData
+macro is a half-hearted attempt to deal with the possibility of 32 bit shorts.
+However, much more work is needed to make this work properly.
+.SH
+Deriving the Correct Extension Opcode
+.LP
+The remaining problem a writer of an extension stub procedure faces that
+the core protocol does not face is to map from the call to the proper
+major and minor opcodes.
+While there are a number of strategies,
+the simplest and fastest is outlined below.
+.IP 1. 5
+Declare an array of pointers, _NFILE long (this is normally found
+in
+.hN stdio.h
+and is the number of file descriptors supported on the system)
+of type
+.PN XExtCodes .
+Make sure these are all initialized to NULL.
+.IP 2. 5
+When your stub is entered, your initialization test is just to use
+the display pointer passed in to access the file descriptor and an index
+into the array.
+If the entry is NULL, then this is the first time you
+are entering the procedure for this display.
+Call your initialization procedure and pass to it the display pointer.
+.IP 3. 5
+Once in your initialization procedure, call
+.PN XInitExtension ;
+if it succeeds, store the pointer returned into this array.
+Make sure to establish a close display handler to allow you to zero the entry.
+Do whatever other initialization your extension requires.
+(For example, install event handlers and so on.)
+Your initialization procedure would normally return a pointer to the
+.PN XExtCodes
+structure for this extension, which is what would normally
+be found in your array of pointers.
+.IP 4. 5
+After returning from your initialization procedure,
+the stub can now continue normally, because it has its major opcode safely
+in its hand in the
+.PN XExtCodes
+structure.
+.bp
diff --git a/specs/X11/AppD b/specs/X11/AppD
new file mode 100644
index 0000000..f96e061
--- /dev/null
+++ b/specs/X11/AppD
@@ -0,0 +1,1183 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix D\fP\s-1
+
+\s+1\fBCompatibility Functions\fP\s-1
+.sp 2
+.na
+.LP
+.XS
+Appendix D: Compatibility Functions
+.XE
+.LP
+The X Version 11 and X Version 10 functions discussed in this appendix
+are obsolete, have been superseded by newer X Version 11 functions,
+and are maintained for compatibility reasons only.
+.SH
+X Version 11 Compatibility Functions
+.LP
+You can use the X Version 11 compatibility functions to:
+.IP \(bu 5
+Set standard properties
+.IP \(bu 5
+Set and get window sizing hints
+.IP \(bu 5
+Set and get an
+.PN XStandardColormap
+structure
+.IP \(bu 5
+Parse window geometry
+.IP \(bu 5
+Get X environment defaults
+.SH
+Setting Standard Properties
+.LP
+To specify a minimum set of properties describing the simplest application,
+use
+.PN XSetStandardProperties .
+This function has been superseded by
+.PN XSetWMProperties
+and sets all or portions of the
+WM_NAME, WM_ICON_NAME, WM_HINTS, WM_COMMAND,
+and WM_NORMAL_HINTS properties.
+.IN "XSetStandardProperties" "" "@DEF@"
+.sM
+.FD 0
+XSetStandardProperties\^(\^\fIdisplay\fP, \fIw\fP, \fIwindow_name\fP, \fIicon_name\fP, \fIicon_pixmap\fP, \fIargv\fP, \fIargc\fP, \fIhints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char *\fIwindow_name\fP\^;
+.br
+ char *\fIicon_name\fP\^;
+.br
+ Pixmap \fIicon_pixmap\fP\^;
+.br
+ char **\fIargv\fP\^;
+.br
+ int \fIargc\fP\^;
+.br
+ XSizeHints *\fIhints\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwindow_name\fP 1i
+Specifies the window name,
+which should be a null-terminated string.
+.IP \fIicon_name\fP 1i
+Specifies the icon name,
+which should be a null-terminated string.
+.IP \fIicon_pixmap\fP 1i
+Specifies the bitmap that is to be used for the icon or
+.PN None .
+.IP \fIargv\fP 1i
+Specifies the application's argument list.
+.IP \fIargc\fP 1i
+Specifies the number of arguments.
+.IP \fIhints\fP 1i
+Specifies a pointer to the size hints for the window in its normal state.
+.LP
+.eM
+The
+.PN XSetStandardProperties
+function provides a means by which simple applications set the
+most essential properties with a single call.
+.PN XSetStandardProperties
+should be used to give a window manager some information about
+your program's preferences.
+It should not be used by applications that need
+to communicate more information than is possible with
+.PN XSetStandardProperties .
+(Typically, argv is the argv array of your main program.)
+If the strings are not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+.LP
+.PN XSetStandardProperties
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.SH
+Setting and Getting Window Sizing Hints
+.LP
+Xlib provides functions that you can use to set or get window sizing hints.
+The functions discussed in this section use the flags and the
+.PN XSizeHints
+structure, as defined in the
+.hN X11/Xutil.h
+header file and use the WM_NORMAL_HINTS property.
+.LP
+.sp
+To set the size hints for a given window in its normal state, use
+.PN XSetNormalHints .
+This function has been superseded by
+.PN XSetWMNormalHints .
+.IN "XSetNormalHints" "" "@DEF@"
+.sM
+.FD 0
+XSetNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints\fP 1i
+Specifies a pointer to the size hints for the window in its normal state.
+.LP
+.eM
+The
+.PN XSetNormalHints
+function sets the size hints structure for the specified window.
+Applications use
+.PN XSetNormalHints
+to inform the window manager of the size
+or position desirable for that window.
+In addition,
+an application that wants to move or resize itself should call
+.PN XSetNormalHints
+and specify its new desired location and size
+as well as making direct Xlib calls to move or resize.
+This is because window managers may ignore redirected
+configure requests, but they pay attention to property changes.
+.LP
+To set size hints,
+an application not only must assign values to the appropriate members
+in the hints structure but also must set the flags member of the structure
+to indicate which information is present and where it came from.
+A call to
+.PN XSetNormalHints
+is meaningless, unless the flags member is set to indicate which members of
+the structure have been assigned values.
+.LP
+.PN XSetNormalHints
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To return the size hints for a window in its normal state, use
+.PN XGetNormalHints .
+This function has been superseded by
+.PN XGetWMNormalHints .
+.IN "XGetNormalHints" "" "@DEF@"
+.sM
+.FD 0
+Status XGetNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints_return\fP 1i
+Returns the size hints for the window in its normal state.
+.LP
+.eM
+The
+.PN XGetNormalHints
+function returns the size hints for a window in its normal state.
+It returns a nonzero status if it succeeds or zero if
+the application specified no normal size hints for this window.
+.LP
+.PN XGetNormalHints
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+The next two functions set and read the WM_ZOOM_HINTS property.
+.LP
+To set the zoom hints for a window, use
+.PN XSetZoomHints .
+This function is no longer supported by the
+\fIInter-Client Communication Conventions Manual\fP.
+.IN "XSetZoomHints" "" "@DEF@"
+.sM
+.FD 0
+XSetZoomHints\^(\^\fIdisplay\fP, \fIw\fP, \fIzhints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIzhints\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIzhints\fP 1i
+Specifies a pointer to the zoom hints.
+.LP
+.eM
+Many window managers think of windows in one of three states:
+iconic, normal, or zoomed.
+The
+.PN XSetZoomHints
+function provides the window manager with information for the window in the
+zoomed state.
+.LP
+.PN XSetZoomHints
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To read the zoom hints for a window, use
+.PN XGetZoomHints .
+This function is no longer supported by the
+\fIInter-Client Communication Conventions Manual\fP.
+.IN "XGetZoomHints" "" "@DEF@"
+.sM
+.FD 0
+Status XGetZoomHints\^(\^\fIdisplay\fP, \fIw\fP, \fIzhints_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIzhints_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIzhints_return\fP 1i
+Returns the zoom hints.
+.LP
+.eM
+The
+.PN XGetZoomHints
+function returns the size hints for a window in its zoomed state.
+It returns a nonzero status if it succeeds or zero if
+the application specified no zoom size hints for this window.
+.LP
+.PN XGetZoomHints
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To set the value of any property of type WM_SIZE_HINTS, use
+.PN XSetSizeHints .
+This function has been superseded by
+.PN XSetWMSizeHints .
+.IN "XSetSizeHints" "" "@DEF@"
+.sM
+.FD 0
+XSetSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints\fP 1i
+Specifies a pointer to the size hints.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XSetSizeHints
+function sets the
+.PN XSizeHints
+structure for the named property and the specified window.
+This is used by
+.PN XSetNormalHints
+and
+.PN XSetZoomHints
+and can be used to set the value of any property of type WM_SIZE_HINTS.
+Thus, it may be useful if other properties of that type get defined.
+.LP
+.PN XSetSizeHints
+can generate
+.PN BadAlloc ,
+.PN BadAtom ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To read the value of any property of type WM_SIZE_HINTS, use
+.PN XGetSizeHints .
+This function has been superseded by
+.PN XGetWMSizeHints .
+.IN "XGetSizeHints" "" "@DEF@"
+.sM
+.FD 0
+Status XGetSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints_return\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints_return\fP 1i
+Returns the size hints.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XGetSizeHints
+function returns the
+.PN XSizeHints
+structure for the named property and the specified window.
+This is used by
+.PN XGetNormalHints
+and
+.PN XGetZoomHints .
+It also can be used to retrieve the value of any property of type
+WM_SIZE_HINTS.
+Thus, it may be useful if other properties of that type get defined.
+.PN XGetSizeHints
+returns a nonzero status if a size hint was defined
+or zero otherwise.
+.LP
+.PN XGetSizeHints
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.SH
+Getting and Setting an XStandardColormap Structure
+.LP
+To get the
+.PN XStandardColormap
+structure associated with one of the described atoms, use
+.PN XGetStandardColormap .
+This function has been superseded by
+.PN XGetRGBColormap .
+.IN "XGetStandardColormap" "" "@DEF@"
+.sM
+.FD 0
+Status XGetStandardColormap(\^\fIdisplay\fP, \fIw\fP, \fIcolormap_return\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XStandardColormap *\fIcolormap_return\fP\^;
+.br
+ Atom \fIproperty\fP\^; /* RGB_BEST_MAP, etc. */
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIcolormap_return\fP 1i
+Returns the colormap associated with the specified atom.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XGetStandardColormap
+function returns the colormap definition associated with the atom supplied
+as the property argument.
+.PN XGetStandardColormap
+returns a nonzero status if successful and zero otherwise.
+For example,
+to fetch the standard
+.PN GrayScale
+colormap for a display,
+you use
+.PN XGetStandardColormap
+with the following syntax:
+.LP
+.sM
+.Ds 0
+.TA .5i 1.5i
+.ta .5i 1.5i
+XGetStandardColormap(dpy, DefaultRootWindow(dpy), &cmap, XA_RGB_GRAY_MAP);
+.De
+.LP
+.eM
+See section 14.3 for the semantics of standard colormaps.
+.LP
+.PN XGetStandardColormap
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To set a standard colormap, use
+.PN XSetStandardColormap .
+This function has been superseded by
+.PN XSetRGBColormap .
+.IN "XSetStandardColormap" "" "@DEF@"
+.sM
+.FD 0
+XSetStandardColormap(\^\fIdisplay\fP, \fIw\fP, \fIcolormap\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XStandardColormap *\fIcolormap\fP\^;
+.br
+ Atom \fIproperty\fP\^; /* RGB_BEST_MAP, etc. */
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XSetStandardColormap
+function usually is only used by window or session managers.
+.LP
+.PN XSetStandardColormap
+can generate
+.PN BadAlloc ,
+.PN BadAtom ,
+.PN BadDrawable ,
+and
+.PN BadWindow
+errors.
+.SH
+Parsing Window Geometry
+.LP
+To parse window geometry given a user-specified position
+and a default position, use
+.PN XGeometry .
+This function has been superseded by
+.PN XWMGeometry .
+.IN "Window" "determining location"
+.IN "XGeometry" "" "@DEF@"
+.sM
+.FD 0
+int XGeometry\^(\^\fIdisplay\fP, \fIscreen\fP, \fIposition\fP\^, \fIdefault_position\fP\^, \fIbwidth\fP\^, \fIfwidth\fP\^, \fIfheight\fP\^, \fIxadder\fP\^,
+.br
+ \fIyadder\fP\^, \fIx_return\fP\^, \fIy_return\fP\^, \fIwidth_return\fP\^, \fIheight_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen\fP\^;
+.br
+ char *\fIposition\fP\^, *\fIdefault_position\fP\^;
+.br
+ unsigned int \fIbwidth\fP\^;
+.br
+ unsigned int \fIfwidth\fP\^, \fIfheight\fP\^;
+.br
+ int \fIxadder\fP\^, \fIyadder\fP\^;
+.br
+ int *\fIx_return\fP\^, *\fIy_return\fP\^;
+.br
+ int *\fIwidth_return\fP\^, *\fIheight_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen\fP 1i
+Specifies the screen.
+.IP \fIposition\fP 1i
+.br
+.ns
+.IP \fIdefault_position\fP 1i
+Specify the geometry specifications.
+.IP \fIbwidth\fP 1i
+Specifies the border width.
+.IP \fIfheight\fP 1i
+.br
+.ns
+.IP \fIfwidth\fP 1i
+Specify the font height and width in pixels (increment size).
+.IP \fIxadder\fP 1i
+.br
+.ns
+.IP \fIyadder\fP 1i
+Specify additional interior padding needed in the window.
+.IP \fIx_return\fP 1i
+.br
+.ns
+.IP \fIy_return\fP 1i
+Return the x and y offsets.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height determined.
+.LP
+.eM
+You pass in the border width (bwidth),
+size of the increments fwidth and fheight
+(typically font width and height),
+and any additional interior space (xadder and yadder)
+to make it easy to compute the resulting size.
+The
+.PN XGeometry
+function returns the position the window should be placed given a position and
+a default position.
+.PN XGeometry
+determines the placement of
+a window using a geometry specification as specified by
+.PN XParseGeometry
+and the additional information about the window.
+Given a fully qualified default geometry specification and
+an incomplete geometry specification,
+.PN XParseGeometry
+returns a bitmask value as defined above in the
+.PN XParseGeometry
+call,
+by using the position argument.
+.LP
+The returned width and height will be the width and height specified
+by default_position as overridden by any user-specified position.
+They are not affected by fwidth, fheight, xadder, or yadder.
+The x and y coordinates are computed by using the border width,
+the screen width and height, padding as specified by xadder and yadder,
+and the fheight and fwidth times the width and height from the
+geometry specifications.
+.SH
+Getting the X Environment Defaults
+.LP
+The
+.PN XGetDefault
+function provides a primitive interface to the resource manager facilities
+discussed in chapter 15.
+It is only useful in very simple applications.
+.LP
+.sp
+.IN "XGetDefault" "" "@DEF@"
+.sM
+.FD 0
+char *XGetDefault\^(\^\fIdisplay\fP, \fIprogram\fP\^, \fIoption\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIprogram\fP\^;
+.br
+ char *\fIoption\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIprogram\fP 1i
+Specifies the program name for the Xlib defaults (usually argv[0]
+of the main program).
+.IP \fIoption\fP 1i
+Specifies the option name.
+.LP
+.eM
+The
+.PN XGetDefault
+function returns the value of the resource \fIprog\fP.\fIoption\fP,
+where \fIprog\fP is the program argument with the directory prefix removed
+and \fIoption\fP must be a single component.
+Note that multilevel resources cannot be used with
+.PN XGetDefault .
+The class "Program.Name" is always used for the resource lookup.
+If the specified option name does not exist for this program,
+.PN XGetDefault
+returns NULL.
+The strings returned by
+.PN XGetDefault
+are owned by Xlib and should not be modified or freed by the client.
+.LP
+If a database has been set with
+.PN XrmSetDatabase ,
+that database is used for the lookup.
+Otherwise, a database is created
+and is set in the display (as if by calling
+.PN XrmSetDatabase ).
+The database is created in the current locale.
+To create a database,
+.PN XGetDefault
+uses resources from the RESOURCE_MANAGER property on the root
+window of screen zero.
+If no such property exists,
+a resource file in the user's home directory is used.
+On a POSIX-conformant system,
+this file is
+.PN "$HOME/.Xdefaults" .
+.IN "Files" "$HOME/.Xdefaults"
+After loading these defaults,
+.PN XGetDefault
+merges additional defaults specified by the XENVIRONMENT
+environment variable.
+If XENVIRONMENT is defined,
+it contains a full path name for the additional resource file.
+If XENVIRONMENT is not defined,
+.PN XGetDefault
+looks for
+.PN "$HOME/.Xdefaults-\fIname\fP" ,
+where \fIname\fP specifies the name of the machine on which the application
+is running.
+.SH
+X Version 10 Compatibility Functions
+.LP
+You can use the X Version 10 compatibility functions to:
+.IP \(bu 5
+Draw and fill polygons and curves
+.IP \(bu 5
+Associate user data with a value
+.SH
+Drawing and Filling Polygons and Curves
+.LP
+Xlib provides functions that you can use to draw or fill
+arbitrary polygons or curves.
+These functions are provided mainly for compatibility with X Version 10
+and have no server support.
+That is, they call other Xlib functions, not the server directly.
+Thus, if you just have straight lines to draw, using
+.PN XDrawLines
+.IN "XDrawLines"
+or
+.PN XDrawSegments
+.IN "XDrawSegments"
+is much faster.
+.LP
+The functions discussed here provide all the functionality of the
+X Version 10 functions
+.PN XDraw ,
+.IN "X10 compatibility" "XDraw"
+.PN XDrawFilled ,
+.IN "X10 compatibility" "XDrawFilled"
+.PN XDrawPatterned ,
+.IN "X10 compatibility" "XDrawPatterned"
+.PN XDrawDashed ,
+.IN "X10 compatibility" "XDrawDashed"
+and
+.PN XDrawTiled .
+.IN "X10 compatibility" "XDrawTiled"
+They are as compatible as possible given X Version 11's new line-drawing
+functions.
+One thing to note, however, is that
+.PN VertexDrawLastPoint
+is no longer supported.
+Also, the error status returned is the opposite of what it was under
+X Version 10 (this is the X Version 11 standard error status).
+.PN XAppendVertex
+and
+.PN XClearVertexFlag
+from X Version 10 also are not supported.
+.LP
+Just how the graphics context you use is set up actually
+determines whether you get dashes or not, and so on.
+Lines are properly joined if they connect and include
+the closing of a closed figure (see
+.PN XDrawLines ).
+The functions discussed here fail (return zero) only if they run out of memory
+or are passed a
+.PN Vertex
+list that has a
+.PN Vertex
+with
+.PN VertexStartClosed
+set that is not followed by a
+.PN Vertex
+with
+.PN VertexEndClosed
+set.
+.LP
+.sp
+To achieve the effects of the X Version 10
+.PN XDraw ,
+.IN "X10 compatibility" "XDraw"
+.PN XDrawDashed ,
+.IN "X10 compatibility" "XDrawDashed"
+and
+.PN XDrawPatterned ,
+.IN "X10 compatibility" "XDrawPatterned"
+use
+.PN XDraw .
+.IN "XDraw" "" "@DEF@"
+.sM
+.FD 0
+#include <X11/X10.h>
+
+Status XDraw(\^\fIdisplay\fP, \fId\fP, \fIgc\fP, \fIvlist\fP, \fIvcount\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Vertex *\fIvlist\fP\^;
+.br
+ int \fIvcount\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIvlist\fP 1i
+Specifies a pointer to the list of vertices that indicate what to draw.
+.IP \fIvcount\fP 1i
+Specifies how many vertices are in vlist.
+.LP
+.eM
+The
+.PN XDraw
+function draws an arbitrary polygon or curve.
+The figure drawn is defined by the specified list of vertices (vlist).
+The points are connected by lines as specified in the flags in the
+vertex structure.
+.LP
+Each Vertex, as defined in
+.hN X11/X10.h ,
+is a structure with the following members:
+.LP
+.IN "Vertex" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 1.5i
+.ta .5i 1.5i
+typedef struct _Vertex {
+ short x,y;
+ unsigned short flags;
+} Vertex;
+.De
+.LP
+.eM
+The x and y members are the coordinates of the vertex
+that are relative to either the upper left inside corner of the drawable
+(if
+.PN VertexRelative
+is zero) or the previous vertex (if
+.PN VertexRelative
+is one).
+.LP
+The flags, as defined in
+.hN X11/X10.h ,
+are as follows:
+.IN "VertexRelative" "" "@DEF@"
+.IN "VertexDontDraw" "" "@DEF@"
+.IN "VertexCurved" "" "@DEF@"
+.IN "VertexStartClosed" "" "@DEF@"
+.IN "VertexEndClosed" "" "@DEF@"
+.sM
+.TS
+l l l.
+T{
+.PN VertexRelative
+T} T{
+0x0001
+T} T{
+/* else absolute */
+T}
+T{
+.PN VertexDontDraw
+T} T{
+0x0002
+T} T{
+/* else draw */
+T}
+T{
+.PN VertexCurved
+T} T{
+0x0004
+T} T{
+/* else straight */
+T}
+T{
+.PN VertexStartClosed
+T} T{
+0x0008
+T} T{
+/* else not */
+T}
+T{
+.PN VertexEndClosed
+T} T{
+0x0010
+T} T{
+/* else not */
+T}
+.TE
+.LP
+.eM
+.IP \(bu 5
+If
+.PN VertexRelative
+is not set,
+the coordinates are absolute (that is, relative to the drawable's origin).
+The first vertex must be an absolute vertex.
+.IP \(bu 5
+If
+.PN VertexDontDraw
+is one,
+no line or curve is drawn from the previous vertex to this one.
+This is analogous to picking up the pen and moving to another place
+before drawing another line.
+.IP \(bu 5
+If
+.PN VertexCurved
+is one,
+a spline algorithm is used to draw a smooth curve from the previous vertex
+through this one to the next vertex.
+Otherwise, a straight line is drawn from the previous vertex to this one.
+It makes sense to set
+.PN VertexCurved
+to one only if a previous and next vertex are both defined
+(either explicitly in the array or through the definition of a closed
+curve).
+.IP \(bu 5
+It is permissible for
+.PN VertexDontDraw
+bits and
+.PN VertexCurved
+bits both to be one.
+This is useful if you want to define the previous point for the smooth curve
+but do not want an actual curve drawing to start until this point.
+.IP \(bu 5
+If
+.PN VertexStartClosed
+is one,
+then this point marks the beginning of a closed curve.
+This vertex must be followed later in the array by another vertex
+whose effective coordinates are identical
+and that has a
+.PN VertexEndClosed
+bit of one.
+The points in between form a cycle to determine predecessor
+and successor vertices for the spline algorithm.
+.LP
+This function uses these GC components:
+function, plane-mask, line-width, line-style, cap-style, join-style,
+fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and
+clip-mask.
+It also uses these GC mode-dependent components:
+foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list.
+.LP
+.sp
+To achieve the effects of the X Version 10
+.PN XDrawTiled
+.IN "X10 compatibility" "XDrawTiled"
+and
+.PN XDrawFilled ,
+.IN "X10 compatibility" "XDrawFilled"
+use
+.PN XDrawFilled .
+.IN "XDrawFilled" "" "@DEF@"
+.sM
+.FD 0
+#include <X11/X10.h>
+
+Status XDrawFilled(\^\fIdisplay\fP, \fId\fP, \fIgc\fP, \fIvlist\fP, \fIvcount\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Vertex *\fIvlist\fP\^;
+.br
+ int \fIvcount\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIvlist\fP 1i
+Specifies a pointer to the list of vertices that indicate what to draw.
+.IP \fIvcount\fP 1i
+Specifies how many vertices are in vlist.
+.LP
+.eM
+The
+.PN XDrawFilled
+function draws arbitrary polygons or curves and then fills them.
+.LP
+This function uses these GC components:
+function, plane-mask, line-width, line-style, cap-style, join-style,
+fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and
+clip-mask.
+It also uses these GC mode-dependent components:
+foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin,
+dash-offset, dash-list, fill-style, and fill-rule.
+.SH
+Associating User Data with a Value
+.LP
+These functions have been superseded by the context management functions
+(see section 16.10).
+It is often necessary to associate arbitrary information with resource IDs.
+Xlib provides the
+.PN XAssocTable
+functions that you can use to make such an association.
+.IN "Hash Lookup"
+.IN "Window" "IDs"
+.IN "Resource IDs"
+Application programs often need to be able to easily refer to
+their own data structures when an event arrives.
+The
+.PN XAssocTable
+system provides users of the X library with a method
+for associating their own data structures with X resources
+.Pn ( Pixmaps ,
+.PN Fonts ,
+.PN Windows ,
+and so on).
+.LP
+An
+.PN XAssocTable
+can be used to type X resources.
+For example, the user
+may want to have three or four types of windows,
+each with different properties.
+This can be accomplished by associating each X window ID
+with a pointer to a window property data structure defined by the
+user.
+A generic type has been defined in the X library for resource IDs.
+It is called an XID.
+.LP
+There are a few guidelines that should be observed when using an
+.PN XAssocTable :
+.IP \(bu 5
+All XIDs are relative to the specified display.
+.IP \(bu 5
+Because of the hashing scheme used by the association mechanism,
+the following rules for determining the size of a
+.PN XAssocTable
+should be followed.
+Associations will be made and looked up more
+efficiently if the table size (number of buckets in the hashing
+system) is a power of two and if there are not more than 8 XIDs per
+bucket.
+.LP
+.sp
+To return a pointer to a new
+.PN XAssocTable ,
+use
+.PN XCreateAssocTable .
+.IN "XCreateAssocTable" "" "@DEF@"
+.sM
+.FD 0
+XAssocTable *XCreateAssocTable\^(\^\fIsize\fP\^)
+.br
+ int \fIsize\fP\^;
+.FN
+.IP \fIsize\fP 1i
+Specifies the number of buckets in the hash system of
+.PN XAssocTable .
+.LP
+.eM
+The size argument specifies the number of buckets in the
+hash system of
+.PN XAssocTable .
+For reasons of efficiency the number of buckets
+should be a power of two.
+Some size suggestions might be: use 32 buckets per 100 objects,
+and a reasonable maximum number of objects per buckets is 8.
+If an error allocating memory for the
+.PN XAssocTable
+occurs,
+a NULL pointer is returned.
+.LP
+.sp
+To create an entry in a given
+.PN XAssocTable ,
+use
+.PN XMakeAssoc .
+.IN "XMakeAssoc" "" "@DEF@"
+.sM
+.FD 0
+XMakeAssoc\^(\^\fIdisplay\fP, \fItable\fP\^, \fIx_id\fP\^, \fIdata\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XAssocTable *\fItable\fP\^;
+.br
+ XID \fIx_id\fP\^;
+.br
+ char *\fIdata\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItable\fP 1i
+Specifies the assoc table.
+.IP \fIx_id\fP 1i
+Specifies the X resource ID.
+.IP \fIdata\fP 1i
+Specifies the data to be associated with the X resource ID.
+.LP
+.eM
+The
+.PN XMakeAssoc
+function inserts data into an
+.PN XAssocTable
+keyed on an XID.
+Data is inserted into the table only once.
+Redundant inserts are ignored.
+The queue in each association bucket is sorted from the lowest XID to
+the highest XID.
+.LP
+.sp
+To obtain data from a given
+.PN XAssocTable ,
+use
+.PN XLookUpAssoc .
+.IN "XLookUpAssoc" "" "@DEF@"
+.sM
+.FD 0
+char *XLookUpAssoc\^(\^\fIdisplay\fP, \fItable\fP\^, \fIx_id\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XAssocTable *\fItable\fP\^;
+.br
+ XID \fIx_id\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItable\fP 1i
+Specifies the assoc table.
+.IP \fIx_id\fP 1i
+Specifies the X resource ID.
+.LP
+.eM
+The
+.PN XLookUpAssoc
+function retrieves the data stored in an
+.PN XAssocTable
+by its XID.
+If an appropriately matching XID can be found in the table,
+.PN XLookUpAssoc
+returns the data associated with it.
+If the x_id cannot be found in the table,
+it returns NULL.
+.LP
+.sp
+To delete an entry from a given
+.PN XAssocTable ,
+use
+.PN XDeleteAssoc .
+.IN "XDeleteAssoc" "" "@DEF@"
+.sM
+.FD 0
+XDeleteAssoc\^(\^\fIdisplay\fP, \fItable\fP\^, \fIx_id\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XAssocTable *\fItable\fP\^;
+.br
+ XID \fIx_id\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItable\fP 1i
+Specifies the assoc table.
+.IP \fIx_id\fP 1i
+Specifies the X resource ID.
+.LP
+.eM
+The
+.PN XDeleteAssoc
+function deletes an association in an
+.PN XAssocTable
+keyed on its XID.
+Redundant deletes (and deletes of nonexistent XIDs) are ignored.
+Deleting associations in no way impairs the performance of an
+.PN XAssocTable .
+.LP
+.sp
+To free the memory associated with a given
+.PN XAssocTable ,
+use
+.PN XDestroyAssocTable .
+.IN "XDestroyAssocTable" "" "@DEF@"
+.sM
+.FD 0
+XDestroyAssocTable\^(\^\fItable\fP\^)
+.br
+ XAssocTable *\fItable\fP\^;
+.FN
+.IP \fItable\fP 1i
+Specifies the assoc table.
+.LP
+.eM
+.bp
diff --git a/specs/X11/CH01 b/specs/X11/CH01
new file mode 100644
index 0000000..be9f76d
--- /dev/null
+++ b/specs/X11/CH01
@@ -0,0 +1,663 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.EH '\fBXlib \- C Library\fP''\fBX11, Release 6.4\fP'
+.OH '\fBXlib \- C Library\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.hw WM_NORMAL_HINTS
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 1\fP\s-1
+
+\s+1\fBIntroduction to Xlib\fP\s-1
+.sp 2
+.if \n(GS .nr nh*hl 1
+.nr H1 1
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 1: Introduction to Xlib
+.XE
+The X Window System is a network-transparent window system
+that was designed at MIT.
+X display servers run on computers with either monochrome or color
+bitmap display hardware.
+The server distributes user input to and accepts output requests from various
+client programs located either on the same machine or elsewhere in
+the network.
+Xlib is a C subroutine library that application programs (clients)
+use to interface with the window system by means of a stream connection.
+Although a client usually runs on the same machine as the X server
+it is talking to, this need not be the case.
+.LP
+\fIXlib \- C Language X Interface\fP is a reference guide to the low-level
+C language interface to the X Window System protocol.
+It is neither a tutorial nor a user's guide to programming the X Window System.
+Rather, it provides a detailed description of each function in the library
+as well as a discussion of the related background information.
+\fIXlib \- C Language X Interface\fP assumes a basic understanding of a graphics
+window system and of the C programming language.
+Other higher-level abstractions
+(for example, those provided by the toolkits for X)
+are built on top of the Xlib library.
+For further information about these higher-level libraries,
+see the appropriate toolkit documentation.
+The \fIX Window System Protocol\fP provides the definitive word on the
+behavior of X.
+Although additional information appears here,
+the protocol document is the ruling document.
+.LP
+To provide an introduction to X programming,
+this chapter discusses:
+.IP \(bu 5
+Overview of the X Window System
+.IP \(bu 5
+Errors
+.IP \(bu 5
+Standard header files
+.IP \(bu 5
+Generic values and types
+.IP \(bu 5
+Naming and argument conventions within Xlib
+.IP \(bu 5
+Programming considerations
+.IP \(bu 5
+Character sets and encodings
+.IP \(bu 5
+Formatting conventions
+.NH 2
+Overview of the X Window System
+.XS
+\*(SN Overview of the X Window System
+.XE
+.LP
+Some of the terms used in this book are unique to X,
+and other terms that are common to other window systems
+have different meanings in X.
+You may find it helpful to refer to the glossary,
+which is located at the end of the book.
+.LP
+The X Window System supports one or more screens containing
+overlapping windows or subwindows.
+A screen is a physical monitor and hardware
+that can be color, grayscale, or monochrome.
+There can be multiple screens for each display or workstation.
+A single X server can provide display services for any number of screens.
+A set of screens for a single user with one keyboard and one pointer
+(usually a mouse) is called a display.
+.LP
+.IN "Screen"
+All the windows in an X server are arranged in strict hierarchies.
+At the top of each hierarchy is a root window,
+which covers each of the display screens.
+Each root window is partially or completely covered by child windows.
+All windows, except for root windows, have parents.
+There is usually at least one window for each application program.
+.IN "Child window"
+.IN "Parent Window"
+Child windows may in turn have their own children.
+In this way,
+an application program can create an arbitrarily deep tree
+on each screen.
+X provides graphics, text, and raster operations for windows.
+.LP
+A child window can be larger than its parent.
+That is, part or all of
+the child window can extend beyond the boundaries of the parent,
+but all output to a window is clipped by its parent.
+.IN "Stacking order"
+If several children of a window have overlapping locations,
+one of the children is considered to be on top of or raised over the
+others, thus obscuring them.
+Output to areas covered by other windows is suppressed by the window
+system unless the window has backing store.
+If a window is obscured by a second window,
+the second window obscures only those ancestors of the second window
+that are also ancestors of the first window.
+.LP
+.IN "Window" "" "@DEF@"
+A window has a border zero or more pixels in width, which can
+be any pattern (pixmap) or solid color you like.
+A window usually but not always has a background pattern,
+which will be repainted by the window system when uncovered.
+Child windows obscure their parents,
+and graphic operations in the parent window usually
+are clipped by the children.
+.LP
+Each window and pixmap has its own coordinate system.
+The coordinate system has the X axis horizontal and the Y axis vertical
+with the origin [0, 0] at the upper-left corner.
+Coordinates are integral,
+in terms of pixels,
+and coincide with pixel centers.
+For a window,
+the origin is inside the border at the inside, upper-left corner.
+.LP
+X does not guarantee to preserve the contents of windows.
+When part or all of a window is hidden and then brought back onto the screen,
+its contents may be lost.
+The server then sends the client program an
+.PN Expose
+event to notify it that part or all of the window needs to be repainted.
+Programs must be prepared to regenerate the contents of windows on demand.
+.LP
+.IN "Pixmap"
+.IN "Drawable"
+.IN "Tile"
+.IN "Bitmap"
+X also provides off-screen storage of graphics objects,
+called pixmaps.
+Single plane (depth 1) pixmaps are sometimes referred to as bitmaps.
+Pixmaps can be used in most graphics functions interchangeably with
+windows and are used in various graphics operations to define patterns or tiles.
+Windows and pixmaps together are referred to as drawables.
+.LP
+Most of the functions in Xlib just add requests to an output buffer.
+These requests later execute asynchronously on the X server.
+Functions that return values of information stored in
+the server do not return (that is, they block)
+until an explicit reply is received or an error occurs.
+You can provide an error handler,
+which will be called when the error is reported.
+.LP
+.IN "XSync"
+If a client does not want a request to execute asynchronously,
+it can follow the request with a call to
+.PN XSync ,
+which blocks until all previously buffered
+asynchronous events have been sent and acted on.
+As an important side effect,
+the output buffer in Xlib is always flushed by a call to any function
+that returns a value from the server or waits for input.
+.LP
+.IN "Resource IDs"
+.IN "Resource IDs" "Window"
+.IN "Resource IDs" "Font"
+.IN "Resource IDs" "Pixmap"
+.IN "Resource IDs" "Cursor"
+.IN "Resource IDs" "GContext"
+Many Xlib functions will return an integer resource ID,
+which allows you to refer to objects stored on the X server.
+These can be of type
+.PN Window ,
+.PN Font ,
+.PN Pixmap ,
+.PN Colormap ,
+.PN Cursor ,
+and
+.PN GContext ,
+as defined in the file
+.hN X11/X.h .
+These resources are created by requests and are destroyed
+(or freed) by requests or when connections are closed.
+Most of these resources are potentially sharable between
+applications, and in fact, windows are manipulated explicitly by
+window manager programs.
+Fonts and cursors are shared automatically across multiple screens.
+Fonts are loaded and unloaded as needed and are shared by multiple clients.
+Fonts are often cached in the server.
+Xlib provides no support for sharing graphics contexts between applications.
+.LP
+.IN "Event"
+Client programs are informed of events.
+Events may either be side effects of a request (for example, restacking windows
+generates
+.PN Expose
+events) or completely asynchronous (for example, from the keyboard).
+A client program asks to be informed of events.
+Because other applications can send events to your application,
+programs must be prepared to handle (or ignore) events of all types.
+.LP
+Input events (for example, a key pressed or the pointer moved)
+arrive asynchronously from the server and are queued until they are
+requested by an explicit call (for example,
+.PN XNextEvent
+or
+.PN XWindowEvent ).
+In addition, some library
+functions (for example,
+.PN XRaiseWindow )
+generate
+.PN Expose
+and
+.PN ConfigureRequest
+events.
+These events also arrive asynchronously, but the client may
+.IN "XSync"
+wish to explicitly wait for them by calling
+.PN XSync
+after calling a function that can cause the server to generate events.
+.NH 2
+Errors
+.XS
+\*(SN Errors
+.XE
+.LP
+Some functions return
+.PN Status ,
+an integer error indication.
+If the function fails, it returns a zero.
+If the function returns a status of zero,
+it has not updated the return arguments.
+.IN "Status"
+Because C does not provide multiple return values,
+many functions must return their results by writing into client-passed storage.
+.IN "Error" "handling"
+By default, errors are handled either by a standard library function
+or by one that you provide.
+Functions that return pointers to strings return NULL pointers if
+the string does not exist.
+.LP
+The X server reports protocol errors at the time that it detects them.
+If more than one error could be generated for a given request,
+the server can report any of them.
+.LP
+Because Xlib usually does not transmit requests to the server immediately
+(that is, it buffers them), errors can be reported much later than they
+actually occur.
+For debugging purposes, however,
+Xlib provides a mechanism for forcing synchronous behavior
+(see section 11.8.1).
+When synchronization is enabled,
+errors are reported as they are generated.
+.LP
+When Xlib detects an error,
+it calls an error handler,
+which your program can provide.
+If you do not provide an error handler,
+the error is printed, and your program terminates.
+.NH 2
+Standard Header Files
+.XS
+\*(SN Standard Header Files
+.XE
+.LP
+The following include files are part of the Xlib standard:
+.IP \(bu 5
+.hN X11/Xlib.h
+.IP
+This is the main header file for Xlib.
+The majority of all Xlib symbols are declared by including this file.
+This file also contains the preprocessor symbol
+.PN XlibSpecificationRelease .
+.IN "XlibSpecificationRelease" "" "@DEF@"
+This symbol is defined to have the 6 in this release of the standard.
+(Release 5 of Xlib was the first release to have this symbol.)
+.IP \(bu 5
+.hN X11/X.h
+.IP
+This file declares types and constants for the X protocol that are
+to be used by applications.
+It is included automatically from
+.hN X11/Xlib.h ,
+so application code should never need to reference this file directly.
+.IP \(bu 5
+.hN X11/Xcms.h
+.IP
+This file contains symbols for much of the color management facilities
+described in chapter 6.
+All functions, types, and symbols with the prefix ``Xcms'',
+plus the Color Conversion Contexts macros, are declared in this file.
+.hN X11/Xlib.h
+must be included before including this file.
+.IP \(bu 5
+.hN X11/Xutil.h
+.IP
+This file declares various functions, types, and symbols used for
+inter-client communication and application utility functions,
+which are described in chapters 14 and 16.
+.hN X11/Xlib.h
+must be included before including this file.
+.IP \(bu 5
+.hN X11/Xresource.h
+.IP
+This file declares all functions, types, and symbols for the
+resource manager facilities, which are described in chapter 15.
+.hN X11/Xlib.h
+must be included before including this file.
+.IP \(bu 5
+.hN X11/Xatom.h
+.IP
+This file declares all predefined atoms,
+which are symbols with the prefix ``XA_''.
+.IP \(bu 5
+.hN X11/cursorfont.h
+.IP
+This file declares the cursor symbols for the standard cursor font,
+which are listed in appendix B.
+All cursor symbols have the prefix ``XC_''.
+.IP \(bu 5
+.hN X11/keysymdef.h
+.IP
+This file declares all standard KeySym values,
+which are symbols with the prefix ``XK_''.
+The KeySyms are arranged in groups, and a preprocessor symbol controls
+inclusion of each group. The preprocessor symbol must be defined
+prior to inclusion of the file to obtain the associated values.
+The preprocessor symbols are XK_MISCELLANY, XK_XKB_KEYS, XK_3270,
+XK_LATIN1, XK_LATIN2,
+XK_LATIN3, XK_LATIN4, XK_KATAKANA, XK_ARABIC, XK_CYRILLIC, XK_GREEK,
+XK_TECHNICAL, XK_SPECIAL, XK_PUBLISHING, XK_APL, XK_HEBREW,
+XK_THAI, and XK_KOREAN.
+.IP \(bu 5
+.hN X11/keysym.h
+.IP
+This file defines the preprocessor symbols
+XK_MISCELLANY, XK_XKB_KEYS, XK_LATIN1, XK_LATIN2, XK_LATIN3,
+XK_LATIN4, and XK_GREEK
+and then includes
+.hN X11/keysymdef.h .
+.IP \(bu 5
+.hN X11/Xlibint.h
+.IP
+This file declares all the functions, types, and symbols used for
+extensions, which are described in appendix C.
+This file automatically includes
+.hN X11/Xlib.h .
+.IP \(bu 5
+.hN X11/Xproto.h
+.IP
+This file declares types and symbols for the basic X protocol,
+for use in implementing extensions.
+It is included automatically from
+.hN X11/Xlibint.h ,
+so application and extension code should never need to
+reference this file directly.
+.IP \(bu 5
+.hN X11/Xprotostr.h
+.IP
+This file declares types and symbols for the basic X protocol,
+for use in implementing extensions.
+It is included automatically from
+.hN X11/Xproto.h ,
+so application and extension code should never need to
+reference this file directly.
+.IP \(bu 5
+.hN X11/X10.h
+.IP
+This file declares all the functions, types, and symbols used for the
+X10 compatibility functions, which are described in appendix D.
+.NH 2
+Generic Values and Types
+.XS
+\*(SN Generic Values and Types
+.XE
+.LP
+The following symbols are defined by Xlib and used throughout the manual:
+.IN "Bool" "" "@DEF@"
+.IN "True" "" "@DEF@"
+.IN "False" "" "@DEF@"
+.IP \(bu 5
+Xlib defines the type
+.PN Bool
+and the Boolean values
+.PN True
+and
+.PN False .
+.IN "None" "" "@DEF@"
+.IP \(bu 5
+.PN None
+is the universal null resource ID or atom.
+.IN "XID" "" "@DEF@"
+.IP \(bu 5
+The type
+.PN XID
+is used for generic resource IDs.
+.IN "XPointer" "" "@DEF@"
+.IP \(bu 5
+The type
+.PN XPointer
+is defined to be char\^* and is used as a generic opaque pointer to data.
+.NH 2
+Naming and Argument Conventions within Xlib
+.XS
+\*(SN Naming and Argument Conventions within Xlib
+.XE
+.LP
+Xlib follows a number of conventions for the naming and syntax of the functions.
+Given that you remember what information the function requires,
+these conventions are intended to make the syntax of the functions more
+predictable.
+.LP
+The major naming conventions are:
+.IP \(bu 5
+To differentiate the X symbols from the other symbols,
+the library uses mixed case for external symbols.
+It leaves lowercase for variables and all uppercase for user macros,
+as per existing convention.
+.IP \(bu 5
+All Xlib functions begin with a capital X.
+.IP \(bu 5
+The beginnings of all function names and symbols are capitalized.
+.IP \(bu 5
+All user-visible data structures begin with a capital X.
+More generally,
+anything that a user might dereference begins with a capital X.
+.IP \(bu 5
+Macros and other symbols do not begin with a capital X.
+To distinguish them from all user symbols,
+each word in the macro is capitalized.
+.IP \(bu 5
+All elements of or variables in a data structure are in lowercase.
+Compound words, where needed, are constructed with underscores (\^_\^).
+.IP \(bu 5
+The display argument, where used, is always first in the argument list.
+.IP \(bu 5
+All resource objects, where used, occur at the beginning of the argument list
+immediately after the display argument.
+.IP \(bu 5
+When a graphics context is present together with
+another type of resource (most commonly, a drawable), the
+graphics context occurs in the argument list after the other
+resource.
+Drawables outrank all other resources.
+.IP \(bu 5
+Source arguments always precede the destination arguments in the argument list.
+.IP \(bu 5
+The x argument always precedes the y argument in the argument list.
+.IP \(bu 5
+The width argument always precedes the height argument in the argument list.
+.IP \(bu 5
+Where the x, y, width, and height arguments are used together,
+the x and y arguments always precede the width and height arguments.
+.IP \(bu 5
+Where a mask is accompanied with a structure,
+the mask always precedes the pointer to the structure in the argument list.
+.NH 2
+Programming Considerations
+.XS
+\*(SN Programming Considerations
+.XE
+.LP
+The major programming considerations are:
+.IP \(bu 5
+Coordinates and sizes in X are actually 16-bit quantities.
+This decision was made to minimize the bandwidth required for a
+given level of performance.
+Coordinates usually are declared as an
+.PN int
+in the interface.
+Values larger than 16 bits are truncated silently.
+Sizes (width and height) are declared as unsigned quantities.
+.IP \(bu 5
+Keyboards are the greatest variable between different
+manufacturers' workstations.
+If you want your program to be portable,
+you should be particularly conservative here.
+.IP \(bu 5
+Many display systems have limited amounts of off-screen memory.
+If you can, you should minimize use of pixmaps and backing
+store.
+.IP \(bu 5
+The user should have control of his screen real estate.
+Therefore, you should write your applications to react to window management
+rather than presume control of the entire screen.
+What you do inside of your top-level window, however,
+is up to your application.
+For further information,
+see chapter 14
+and the \fIInter-Client Communication Conventions Manual\fP.
+.NH 2
+Character Sets and Encodings
+.XS
+\*(SN Character Sets and Encodings
+.XE
+.LP
+Some of the Xlib functions make reference to specific character sets
+and character encodings.
+The following are the most common:
+.IP \(bu 5
+X Portable Character Set
+.IP
+A basic set of 97 characters,
+which are assumed to exist in all locales supported by Xlib.
+This set contains the following characters:
+.IP
+.Ds 0
+.EQ
+delim DD
+.EN
+a..z A..Z 0..9
+!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~
+<space>, <tab>, and <newline>
+.EQ
+delim %%
+.EN
+.De
+.IP
+This set is the left/lower half
+of the graphic character set of ISO8859-1 plus space, tab, and newline.
+It is also the set of graphic characters in 7-bit ASCII plus the same
+three control characters.
+The actual encoding of these characters on the host is system dependent.
+.IP \(bu 5
+Host Portable Character Encoding
+.IP
+The encoding of the X Portable Character Set on the host.
+The encoding itself is not defined by this standard,
+but the encoding must be the same in all locales supported by Xlib on the host.
+If a string is said to be in the Host Portable Character Encoding,
+then it only contains characters from the X Portable Character Set,
+in the host encoding.
+.IP \(bu 5
+Latin-1
+.IP
+The coded character set defined by the ISO8859-1 standard.
+.IP \(bu 5
+Latin Portable Character Encoding
+.IP
+The encoding of the X Portable Character Set using the Latin-1 codepoints
+plus ASCII control characters.
+If a string is said to be in the Latin Portable Character Encoding,
+then it only contains characters from the X Portable Character Set,
+not all of Latin-1.
+.IP \(bu 5
+STRING Encoding
+.IP
+Latin-1, plus tab and newline.
+.IP \(bu 5
+POSIX Portable Filename Character Set
+.IP
+The set of 65 characters,
+which can be used in naming files on a POSIX-compliant host,
+that are correctly processed in all locales.
+The set is:
+.IP
+.Ds 0
+a..z A..Z 0..9 ._-
+.De
+.NH 2
+Formatting Conventions
+.XS
+\*(SN Formatting Conventions
+.XE
+.LP
+\fIXlib \- C Language X Interface\fP uses the following conventions:
+.IP \(bu 5
+Global symbols are printed in
+.PN this
+.PN special
+.PN font .
+These can be either function names,
+symbols defined in include files, or structure names.
+When declared and defined,
+function arguments are printed in \fIitalics\fP.
+In the explanatory text that follows,
+they usually are printed in regular type.
+.IP \(bu 5
+Each function is introduced by a general discussion that
+distinguishes it from other functions.
+The function declaration itself follows,
+and each argument is specifically explained.
+Although ANSI C function prototype syntax is not used,
+Xlib header files normally declare functions using function prototypes
+in ANSI C environments.
+General discussion of the function, if any is required,
+follows the arguments.
+Where applicable,
+the last paragraph of the explanation lists the possible
+Xlib error codes that the function can generate.
+For a complete discussion of the Xlib error codes,
+see section 11.8.2.
+.IP \(bu 5
+To eliminate any ambiguity between those arguments that you pass and those that
+a function returns to you,
+the explanations for all arguments that you pass start with the word
+\fIspecifies\fP or, in the case of multiple arguments, the word \fIspecify\^\fP.
+The explanations for all arguments that are returned to you start with the
+word \fIreturns\fP or, in the case of multiple arguments, the word \fIreturn\^\fP.
+The explanations for all arguments that you can pass and are returned start
+with the words \fIspecifies and returns\^\fP.
+.IP \(bu 5
+Any pointer to a structure that is used to return a value is designated as
+such by the \fI_return\fP suffix as part of its name.
+All other pointers passed to these functions are
+used for reading only.
+A few arguments use pointers to structures that are used for
+both input and output and are indicated by using the \fI_in_out\fP suffix.
+.bp
diff --git a/specs/X11/CH02 b/specs/X11/CH02
new file mode 100644
index 0000000..ab6d656
--- /dev/null
+++ b/specs/X11/CH02
@@ -0,0 +1,2043 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 2\fP\s-1
+
+\s+1\fBDisplay Functions\fP\s-1
+.sp 2
+.nr H1 2
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 2: Display Functions
+.XE
+Before your program can use a display, you must establish a connection
+to the X server.
+Once you have established a connection,
+you then can use the Xlib macros and functions discussed in this chapter
+to return information about the display.
+This chapter discusses how to:
+.IP \(bu 5
+Open (connect to) the display
+.IP \(bu 5
+Obtain information about the display, image formats, or screens
+.IP \(bu 5
+Generate a
+.PN NoOperation
+protocol request
+.IP \(bu 5
+Free client-created data
+.IP \(bu 5
+Close (disconnect from) a display
+.IP \(bu 5
+Use X Server connection close operations
+.IP \(bu 5
+Use Xlib with threads
+.IP \(bu 5
+Use internal connections
+.NH 2
+Opening the Display
+.XS
+\*(SN Opening the Display
+.XE
+.LP
+To open a connection to the X server that controls a display, use
+.PN XOpenDisplay .
+.IN "XOpenDisplay" "" "@DEF@"
+.LP
+.sM
+.FD 0
+Display *XOpenDisplay\^(\^\fIdisplay_name\fP\^)
+.br
+ char *\fIdisplay_name\fP\^;
+.FN
+.IP \fIdisplay_name\fP 1i
+Specifies the hardware display name, which determines the display
+and communications domain to be used.
+On a POSIX-conformant system, if the display_name is NULL,
+it defaults to the value of the DISPLAY environment variable.
+.IN "Environment" "DISPLAY"
+.LP
+.eM
+The encoding and interpretation of the display name are
+implementation-dependent.
+Strings in the Host Portable Character Encoding are supported;
+support for other characters is implementation-dependent.
+On POSIX-conformant systems,
+the display name or DISPLAY environment variable can be a string in the format:
+.LP
+.sM
+.Ds 0
+.TA 1i
+.ta 1i
+ \fIhostname\fP\^:\^\fInumber\fP\^.\^\fIscreen_number\fP
+.De
+.IP \fIhostname\fP 1i
+Specifies the name of the host machine on which the display is physically
+attached.
+You follow the hostname with either a single colon (:) or a double colon (::).
+.IP \fInumber\fP 1i
+Specifies the number of the display server on that host machine.
+You may optionally follow this display number with a period (.).
+A single CPU can have more than one display.
+Multiple displays are usually numbered starting with zero.
+.IN "Screen"
+.IP \fIscreen_number\fP 1i
+Specifies the screen to be used on that server.
+Multiple screens can be controlled by a single X server.
+The screen_number sets an internal variable that can be accessed by
+using the
+.PN DefaultScreen
+macro or the
+.PN XDefaultScreen
+function if you are using languages other than C (see section 2.2.1).
+.LP
+.eM
+For example, the following would specify screen 1 of display 0 on the
+machine named ``dual-headed'':
+.LP
+.Ds
+dual-headed:0.1
+.De
+.LP
+The
+.PN XOpenDisplay
+function returns a
+.PN Display
+structure that serves as the
+connection to the X server and that contains all the information
+about that X server.
+.PN XOpenDisplay
+connects your application to the X server through TCP
+or DECnet communications protocols,
+or through some local inter-process communication protocol.
+.IN "Protocol" "TCP"
+.IN "Protocol" "DECnet"
+If the hostname is a host machine name and a single colon (:)
+separates the hostname and display number,
+.PN XOpenDisplay
+connects using TCP streams.
+If the hostname is not specified,
+Xlib uses whatever it believes is the fastest transport.
+If the hostname is a host machine name and a double colon (::)
+separates the hostname and display number,
+.PN XOpenDisplay
+connects using DECnet.
+A single X server can support any or all of these transport mechanisms
+simultaneously.
+A particular Xlib implementation can support many more of these transport
+mechanisms.
+.LP
+.IN "Display"
+If successful,
+.PN XOpenDisplay
+returns a pointer to a
+.PN Display
+structure,
+which is defined in
+.hN X11/Xlib.h .
+If
+.PN XOpenDisplay
+does not succeed, it returns NULL.
+After a successful call to
+.PN XOpenDisplay ,
+all of the screens in the display can be used by the client.
+The screen number specified in the display_name argument is returned
+by the
+.PN DefaultScreen
+macro (or the
+.PN XDefaultScreen
+function).
+You can access elements of the
+.PN Display
+and
+.PN Screen
+structures only by using the information macros or functions.
+For information about using macros and functions to obtain information from
+the
+.PN Display
+structure,
+see section 2.2.1.
+.LP
+X servers may implement various types of access control mechanisms
+(see section 9.8).
+.NH 2
+Obtaining Information about the Display, Image Formats, or Screens
+.XS
+\*(SN Obtaining Information about the Display, Image Formats, or Screens
+.XE
+.LP
+The Xlib library provides a number of useful macros
+and corresponding functions that return data from the
+.PN Display
+structure.
+The macros are used for C programming,
+and their corresponding function equivalents are for other language bindings.
+This section discusses the:
+.IP \(bu 5
+Display macros
+.IP \(bu 5
+Image format functions and macros
+.IP \(bu 5
+Screen information macros
+.LP
+.IN "Display" "data structure"
+All other members of the
+.PN Display
+structure (that is, those for which no macros are defined) are private to Xlib
+and must not be used.
+Applications must never directly modify or inspect these private members of the
+.PN Display
+structure.
+.NT Note
+The
+.PN XDisplayWidth ,
+.PN XDisplayHeight ,
+.PN XDisplayCells ,
+.PN XDisplayPlanes ,
+.PN XDisplayWidthMM ,
+and
+.PN XDisplayHeightMM
+functions in the next sections are misnamed.
+These functions really should be named Screen\fIwhatever\fP
+and XScreen\fIwhatever\fP, not Display\fIwhatever\fP or XDisplay\fIwhatever\fP.
+Our apologies for the resulting confusion.
+.NE
+.NH 3
+Display Macros
+.XS
+\*(SN Display Macros
+.XE
+.LP
+Applications should not directly modify any part of the
+.PN Display
+and
+.PN Screen
+structures.
+The members should be considered read-only,
+although they may change as the result of other operations on the display.
+.LP
+The following lists the C language macros,
+their corresponding function equivalents that are for other language bindings,
+and what data both can return.
+.LP
+.sp
+.sM
+.FD 0
+AllPlanes
+.sp
+unsigned long XAllPlanes(\^)
+.FN
+.LP
+.eM
+.IN "AllPlanes" "" "@DEF@"
+.IN "XAllPlanes" "" "@DEF@"
+Both return a value with all bits set to 1 suitable for use in a plane argument to
+a procedure.
+.LP
+.sp
+Both
+.PN BlackPixel
+and
+.PN WhitePixel
+can be used in implementing a monochrome application.
+These pixel values are for permanently allocated entries in the default
+colormap.
+The actual RGB (red, green, and blue) values are settable on some screens
+and, in any case, may not actually be black or white.
+The names are intended to convey the expected relative intensity of the colors.
+.sM
+.FD 0
+BlackPixel\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+unsigned long XBlackPixel\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "BlackPixel" "" "@DEF@"
+.IN "XBlackPixel" "" "@DEF@"
+Both return the black pixel value for the specified screen.
+.LP
+.sp
+.sM
+.FD 0
+WhitePixel\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+unsigned long XWhitePixel\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "WhitePixel" "" "@DEF@"
+.IN "XWhitePixel" "" "@DEF@"
+Both return the white pixel value for the specified screen.
+.LP
+.sp
+.sM
+.FD 0
+ConnectionNumber\^(\^\fIdisplay\fP\^)
+.sp
+int XConnectionNumber\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "ConnectionNumber" "" "@DEF@"
+.IN "XConnectionNumber" "" "@DEF@"
+Both return a connection number for the specified display.
+On a POSIX-conformant system,
+this is the file descriptor of the connection.
+.LP
+.sp
+.sM
+.FD 0
+DefaultColormap\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+Colormap XDefaultColormap\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DefaultColormap" "" "@DEF@"
+.IN "XDefaultColormap" "" "@DEF@"
+Both return the default colormap ID for allocation on the specified screen.
+Most routine allocations of color should be made out of this colormap.
+.LP
+.sp
+.sM
+.FD 0
+DefaultDepth\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+int XDefaultDepth\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DefaultDepth" "" "@DEF@"
+.IN "XDefaultDepth" "" "@DEF@"
+Both return the depth (number of planes) of the default root window for the
+specified screen.
+Other depths may also be supported on this screen (see
+.PN XMatchVisualInfo ).
+.LP
+.sp
+.IN "XListDepths" "" "@DEF@"
+To determine the number of depths that are available on a given screen, use
+.PN XListDepths .
+.sM
+.FD 0
+int *XListDepths\^(\^\fIdisplay\fP, \fIscreen_number\fP, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP;
+.br
+ int \fIscreen_number\fP;
+.br
+ int *\fIcount_return\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.ds Cn depths
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.LP
+.eM
+The
+.PN XListDepths
+function returns the array of depths
+that are available on the specified screen.
+If the specified screen_number is valid and sufficient memory for the array
+can be allocated,
+.PN XListDepths
+sets count_return to the number of available depths.
+Otherwise, it does not set count_return and returns NULL.
+To release the memory allocated for the array of depths, use
+.PN XFree .
+.LP
+.sp
+.sM
+.FD 0
+DefaultGC\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+GC XDefaultGC\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DefaultGC" "" "@DEF@"
+.IN "XDefaultGC" "" "@DEF@"
+Both return the default graphics context for the root window of the
+specified screen.
+This GC is created for the convenience of simple applications
+and contains the default GC components with the foreground and
+background pixel values initialized to the black and white
+pixels for the screen, respectively.
+You can modify its contents freely because it is not used in any Xlib
+function.
+This GC should never be freed.
+.LP
+.sp
+.sM
+.FD 0
+DefaultRootWindow\^(\^\fIdisplay\fP\^)
+.sp
+Window XDefaultRootWindow\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "DefaultRootWindow" "" "@DEF@"
+.IN "XDefaultRootWindow" "" "@DEF@"
+Both return the root window for the default screen.
+.LP
+.sp
+.sM
+.FD 0
+DefaultScreenOfDisplay\^(\^\fIdisplay\fP\^)
+.sp
+Screen *XDefaultScreenOfDisplay\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "DefaultScreenOfDisplay" "" "@DEF@"
+.IN "XDefaultScreenOfDisplay" "" "@DEF@"
+Both return a pointer to the default screen.
+.LP
+.sp
+.sM
+.FD 0
+ScreenOfDisplay\^(\^\fIdisplay\fP, \fIscreen_number\fP\^)
+.sp
+Screen *XScreenOfDisplay\^(\^\fIdisplay\fP, \fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "ScreenOfDisplay" "" "@DEF@"
+.IN "XScreenOfDisplay" "" "@DEF@"
+Both return a pointer to the indicated screen.
+.LP
+.sp
+.sM
+.FD 0
+DefaultScreen\^(\^\fIdisplay\fP\^)
+.sp
+int XDefaultScreen\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "DefaultScreen" "" "@DEF@"
+.IN "XDefaultScreen" "" "@DEF@"
+Both return the default screen number referenced by the
+.PN XOpenDisplay
+function.
+This macro or function should be used to retrieve the screen number
+in applications that will use only a single screen.
+.LP
+.sp
+.sM
+.FD 0
+DefaultVisual\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+Visual *XDefaultVisual\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DefaultVisual" "" "@DEF@"
+.IN "XDefaultVisual" "" "@DEF@"
+Both return the default visual type for the specified screen.
+For further information about visual types,
+see section 3.1.
+.LP
+.sp
+.sM
+.FD 0
+DisplayCells\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+int XDisplayCells\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DisplayCells" "" "@DEF@"
+.IN "XDisplayCells" "" "@DEF@"
+Both return the number of entries in the default colormap.
+.LP
+.sp
+.sM
+.FD 0
+DisplayPlanes\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+int XDisplayPlanes\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DisplayPlanes" "" "@DEF@"
+.IN "XDisplayPlanes" "" "@DEF@"
+Both return the depth of the root window of the specified screen.
+For an explanation of depth,
+see the glossary.
+.LP
+.sp
+.sM
+.FD 0
+DisplayString\^(\^\fIdisplay\fP\^)
+.sp
+char *XDisplayString\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "DisplayString" "" "@DEF@"
+.IN "XDisplayString" "" "@DEF@"
+Both return the string that was passed to
+.PN XOpenDisplay
+when the current display was opened.
+On POSIX-conformant systems,
+if the passed string was NULL, these return the value of
+the DISPLAY environment variable when the current display was opened.
+.IN "POSIX System Call" "fork"
+These are useful to applications that invoke the
+.PN fork
+system call and want to open a new connection to the same display from the
+child process as well as for printing error messages.
+.LP
+.sp
+.sM
+.FD 0
+long XExtendedMaxRequestSize(\^\fIdisplay\fP\^)
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "XExtendedMaxRequestSize" "" "@DEF@"
+The
+.PN XExtendedMaxRequestSize
+function returns zero if the specified display does not support an
+extended-length protocol encoding; otherwise,
+it returns the maximum request size (in 4-byte units) supported
+by the server using the extended-length encoding.
+The Xlib functions
+.PN XDrawLines ,
+.PN XDrawArcs ,
+.PN XFillPolygon ,
+.PN XChangeProperty ,
+.PN XSetClipRectangles ,
+and
+.PN XSetRegion
+will use the extended-length encoding as necessary, if supported
+by the server. Use of the extended-length encoding in other Xlib
+functions (for example,
+.PN XDrawPoints ,
+.PN XDrawRectangles ,
+.PN XDrawSegments ,
+.PN XFillArcs ,
+.PN XFillRectangles ,
+.PN XPutImage )
+is permitted but not required; an Xlib implementation may choose to
+split the data across multiple smaller requests instead.
+.LP
+.sp
+.sM
+.FD 0
+long XMaxRequestSize(\^\fIdisplay\fP\^)
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "XMaxRequestSize" "" "@DEF@"
+The
+.PN XMaxRequestSize
+function returns the maximum request size (in 4-byte units) supported
+by the server without using an extended-length protocol encoding.
+Single protocol requests to the server can be no larger than this size
+unless an extended-length protocol encoding is supported by the server.
+The protocol guarantees the size to be no smaller than 4096 units
+(16384 bytes).
+Xlib automatically breaks data up into multiple protocol requests
+as necessary for the following functions:
+.PN XDrawPoints ,
+.PN XDrawRectangles ,
+.PN XDrawSegments ,
+.PN XFillArcs ,
+.PN XFillRectangles ,
+and
+.PN XPutImage .
+.LP
+.sp
+.sM
+.FD 0
+LastKnownRequestProcessed\^(\^\fIdisplay\fP\^)
+.sp
+unsigned long XLastKnownRequestProcessed\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "LastKnownRequestProcessed" "" "@DEF@"
+.IN "XLastKnownRequestProcessed" "" "@DEF@"
+Both extract the full serial number of the last request known by Xlib
+to have been processed by the X server.
+Xlib automatically sets this number when replies, events, and errors
+are received.
+.LP
+.sp
+.sM
+.FD 0
+NextRequest\^(\^\fIdisplay\fP\^)
+.sp
+unsigned long XNextRequest\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "NextRequest" "" "@DEF@"
+.IN "XNextRequest" "" "@DEF@"
+Both extract the full serial number that is to be used for the next
+request.
+Serial numbers are maintained separately for each display connection.
+.LP
+.sp
+.sM
+.FD 0
+ProtocolVersion\^(\^\fIdisplay\fP\^)
+.sp
+int XProtocolVersion\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "ProtocolVersion" "" "@DEF@"
+.IN "XProtocolVersion" "" "@DEF@"
+Both return the major version number (11) of the X protocol associated with
+the connected display.
+.LP
+.sp
+.sM
+.FD 0
+ProtocolRevision\^(\^\fIdisplay\fP\^)
+.sp
+int XProtocolRevision\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "ProtocolRevision" "" "@DEF@"
+.IN "XProtocolRevision" "" "@DEF@"
+Both return the minor protocol revision number of the X server.
+.LP
+.sp
+.sM
+.FD 0
+QLength\^(\^\fIdisplay\fP\^)
+.sp
+int XQLength\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "QLength" "" "@DEF@"
+.IN "XQLength" "" "@DEF@"
+Both return the length of the event queue for the connected display.
+Note that there may be more events that have not been read into
+the queue yet (see
+.PN XEventsQueued ).
+.LP
+.sp
+.sM
+.FD 0
+RootWindow\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+Window XRootWindow\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "Window" "RootWindow"
+.IN "RootWindow" "" "@DEF@"
+.IN "Window" "XRootWindow"
+.IN "XRootWindow" "" "@DEF@"
+Both return the root window.
+These are useful with functions that need a drawable of a particular screen
+and for creating top-level windows.
+.LP
+.sp
+.sM
+.FD 0
+ScreenCount\^(\^\fIdisplay\fP\^)
+.sp
+int XScreenCount\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "ScreenCount" "" "@DEF@"
+.IN "XScreenCount" "" "@DEF@"
+Both return the number of available screens.
+.LP
+.sp
+.sM
+.FD 0
+ServerVendor\^(\^\fIdisplay\fP\^)
+.sp
+char *XServerVendor\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "ServerVendor" "" "@DEF@"
+.IN "XServerVendor" "" "@DEF@"
+Both return a pointer to a null-terminated string that provides
+some identification of the owner of the X server implementation.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the string is in the Host Portable Character Encoding.
+Otherwise, the contents of the string are implementation-dependent.
+.LP
+.sp
+.sM
+.FD 0
+VendorRelease\^(\^\fIdisplay\fP\^)
+.sp
+int XVendorRelease\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "VendorRelease" "" "@DEF@"
+.IN "XVendorRelease" "" "@DEF@"
+Both return a number related to a vendor's release of the X server.
+.NH 3
+Image Format Functions and Macros
+.XS
+\*(SN Image Format Functions and Macros
+.XE
+.LP
+Applications are required to present data to the X server
+in a format that the server demands.
+To help simplify applications,
+most of the work required to convert the data is provided by Xlib
+(see sections 8.7 and 16.8).
+.LP
+The
+.PN XPixmapFormatValues
+structure provides an interface to the pixmap format information
+that is returned at the time of a connection setup.
+It contains:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int depth;
+ int bits_per_pixel;
+ int scanline_pad;
+} XPixmapFormatValues;
+.De
+.LP
+.eM
+.sp
+To obtain the pixmap format information for a given display, use
+.PN XListPixmapFormats .
+.IN "XListPixmapFormats" "" "@DEF@"
+.sM
+.FD 0
+XPixmapFormatValues *XListPixmapFormats\^(\^\fIdisplay\fP, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Cn pixmap formats that are supported by the display
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.LP
+.eM
+The
+.PN XListPixmapFormats
+function returns an array of
+.PN XPixmapFormatValues
+structures that describe the types of Z format images supported
+by the specified display.
+If insufficient memory is available,
+.PN XListPixmapFormats
+returns NULL.
+To free the allocated storage for the
+.PN XPixmapFormatValues
+structures, use
+.PN XFree .
+.LP
+The following lists the C language macros,
+their corresponding function equivalents that are for other language bindings,
+and what data they both return for the specified server and screen.
+These are often used by toolkits as well as by simple applications.
+.LP
+.sp
+.sM
+.FD 0
+ImageByteOrder\^(\^\fIdisplay\fP\^)
+.sp
+int XImageByteOrder\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "ImageByteOrder" "" "@DEF@"
+.IN "XImageByteOrder" "" "@DEF@"
+Both specify the required byte order for images for each scanline unit in
+XY format (bitmap) or for each pixel value in
+Z format.
+The macro or function can return either
+.PN LSBFirst
+or
+.PN MSBFirst .
+.LP
+.sp
+.sM
+.FD 0
+BitmapUnit\^(\^\fIdisplay\fP\^)
+.sp
+int XBitmapUnit\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "BitmapUnit" "" "@DEF@"
+.IN "XBitmapUnit" "" "@DEF@"
+Both return the size of a bitmap's scanline unit in bits.
+The scanline is calculated in multiples of this value.
+.LP
+.sp
+.sM
+.FD 0
+BitmapBitOrder\^(\^\fIdisplay\fP\^)
+.sp
+int XBitmapBitOrder\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "BitmapBitOrder" "" "@DEF@"
+.IN "XBitmapBitOrder" "" "@DEF@"
+Within each bitmap unit, the left-most bit in the bitmap as displayed
+on the screen is either the least significant or most significant bit in the
+unit.
+This macro or function can return
+.PN LSBFirst
+or
+.PN MSBFirst .
+.LP
+.sp
+.sM
+.FD 0
+BitmapPad\^(\^\fIdisplay\fP\^)
+.sp
+int XBitmapPad\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.IN "BitmapPad" "" "@DEF@"
+.IN "XBitmapPad" "" "@DEF@"
+Each scanline must be padded to a multiple of bits returned
+by this macro or function.
+.LP
+.sp
+.sM
+.FD 0
+DisplayHeight\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+int XDisplayHeight\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DisplayHeight" "" "@DEF@"
+.IN "XDisplayHeight" "" "@DEF@"
+Both return an integer that describes the height of the screen
+in pixels.
+.LP
+.sp
+.sM
+.FD 0
+DisplayHeightMM\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+int XDisplayHeightMM\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DisplayHeightMM" "" "@DEF@"
+.IN "XDisplayHeightMM" "" "@DEF@"
+Both return the height of the specified screen in millimeters.
+.LP
+.sp
+.sM
+.FD 0
+DisplayWidth\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+int XDisplayWidth\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DisplayWidth" "" "@DEF@"
+.IN "XDisplayWidth" "" "@DEF@"
+Both return the width of the screen in pixels.
+.LP
+.sp
+.sM
+.FD 0
+DisplayWidthMM\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.sp
+int XDisplayWidthMM\^(\^\fIdisplay\fP\^, \^\fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+.IN "DisplayWidthMM" "" "@DEF@"
+.IN "XDisplayWidthMM" "" "@DEF@"
+Both return the width of the specified screen in millimeters.
+.NH 3
+Screen Information Macros
+.XS
+\*(SN Screen Information Macros
+.XE
+.LP
+The following lists the C language macros,
+their corresponding function equivalents that are for other language bindings,
+and what data they both can return.
+These macros or functions all take a pointer to the appropriate screen
+structure.
+.LP
+.sp
+.sM
+.FD 0
+BlackPixelOfScreen\^(\^\fIscreen\fP\^)
+.sp
+unsigned long XBlackPixelOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "BlackPixelOfScreen" "" "@DEF@"
+.IN "XBlackPixelOfScreen" "" "@DEF@"
+Both return the black pixel value of the specified screen.
+.LP
+.sp
+.sM
+.FD 0
+WhitePixelOfScreen\^(\^\fIscreen\fP\^)
+.sp
+unsigned long XWhitePixelOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "WhitePixelOfScreen" "" "@DEF@"
+.IN "XWhitePixelOfScreen" "" "@DEF@"
+Both return the white pixel value of the specified screen.
+.LP
+.sp
+.sM
+.FD 0
+CellsOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XCellsOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "CellsOfScreen" "" "@DEF@"
+.IN "XCellsOfScreen" "" "@DEF@"
+Both return the number of colormap cells in the default colormap
+of the specified screen.
+.LP
+.sp
+.sM
+.FD 0
+DefaultColormapOfScreen\^(\^\fIscreen\fP\^)
+.sp
+Colormap XDefaultColormapOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "DefaultColormapOfScreen" "" "@DEF@"
+.IN "XDefaultColormapOfScreen" "" "@DEF@"
+Both return the default colormap of the specified screen.
+.LP
+.sp
+.sM
+.FD 0
+DefaultDepthOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XDefaultDepthOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "DefaultDepthOfScreen" "" "@DEF@"
+.IN "XDefaultDepthOfScreen" "" "@DEF@"
+Both return the depth of the root window.
+.LP
+.sp
+.sM
+.FD 0
+DefaultGCOfScreen\^(\^\fIscreen\fP\^)
+.sp
+GC XDefaultGCOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "DefaultGCOfScreen" "" "@DEF@"
+.IN "XDefaultGCOfScreen" "" "@DEF@"
+Both return a default graphics context (GC) of the specified screen,
+which has the same depth as the root window of the screen.
+The GC must never be freed.
+.LP
+.sp
+.sM
+.FD 0
+DefaultVisualOfScreen\^(\^\fIscreen\fP\^)
+.sp
+Visual *XDefaultVisualOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "DefaultVisualOfScreen" "" "@DEF@"
+.IN "XDefaultVisualOfScreen" "" "@DEF@"
+Both return the default visual of the specified screen.
+For information on visual types,
+see section 3.1.
+.LP
+.sp
+.sM
+.FD 0
+DoesBackingStore\^(\^\fIscreen\fP\^)
+.sp
+int XDoesBackingStore\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "DoesBackingStore" "" "@DEF@"
+.IN "XDoesBackingStore" "" "@DEF@"
+Both return a value indicating whether the screen supports backing
+stores.
+The value returned can be one of
+.PN WhenMapped ,
+.PN NotUseful ,
+or
+.PN Always
+(see section 3.2.4).
+.LP
+.sp
+.sM
+.FD 0
+DoesSaveUnders\^(\^\fIscreen\fP\^)
+.sp
+Bool XDoesSaveUnders\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "DoesSaveUnders" "" "@DEF@"
+.IN "XDoesSaveUnders" "" "@DEF@"
+Both return a Boolean value indicating whether the
+screen supports save unders.
+If
+.PN True ,
+the screen supports save unders.
+If
+.PN False ,
+the screen does not support save unders (see section 3.2.5).
+.LP
+.sp
+.sM
+.FD 0
+DisplayOfScreen\^(\^\fIscreen\fP\^)
+.sp
+Display *XDisplayOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "DisplayOfScreen" "" "@DEF@"
+.IN "XDisplayOfScreen" "" "@DEF@"
+Both return the display of the specified screen.
+.LP
+.sp
+.sM
+.IN "XScreenNumberOfScreen" "" "@DEF@"
+.FD 0
+int XScreenNumberOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+The
+.PN XScreenNumberOfScreen
+function returns the screen index number of the specified screen.
+.LP
+.sp
+.sM
+.FD 0
+EventMaskOfScreen\^(\^\fIscreen\fP\^)
+.sp
+long XEventMaskOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "EventMaskOfScreen" "" "@DEF@"
+.IN "XEventMaskOfScreen" "" "@DEF@"
+Both return the event mask of the root window for the specified screen
+at connection setup time.
+.LP
+.sp
+.sM
+.FD 0
+WidthOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XWidthOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "WidthOfScreen" "" "@DEF@"
+.IN "XWidthOfScreen" "" "@DEF@"
+Both return the width of the specified screen in pixels.
+.LP
+.sp
+.sM
+.FD 0
+HeightOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XHeightOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "HeightOfScreen" "" "@DEF@"
+.IN "XHeightOfScreen" "" "@DEF@"
+Both return the height of the specified screen in pixels.
+.LP
+.sp
+.sM
+.FD 0
+WidthMMOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XWidthMMOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "WidthMMOfScreen" "" "@DEF@"
+.IN "XWidthMMOfScreen" "" "@DEF@"
+Both return the width of the specified screen in millimeters.
+.LP
+.sp
+.sM
+.FD 0
+HeightMMOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XHeightMMOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "HeightMMOfScreen" "" "@DEF@"
+.IN "XHeightMMOfScreen" "" "@DEF@"
+Both return the height of the specified screen in millimeters.
+.LP
+.sp
+.sM
+.FD 0
+MaxCmapsOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XMaxCmapsOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "MaxCmapsOfScreen" "" "@DEF@"
+.IN "XMaxCmapsOfScreen" "" "@DEF@"
+Both return the maximum number of installed colormaps supported
+by the specified screen (see section 9.3).
+.LP
+.sp
+.sM
+.FD 0
+MinCmapsOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XMinCmapsOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "MinCmapsOfScreen" "" "@DEF@"
+.IN "XMinCmapsOfScreen" "" "@DEF@"
+Both return the minimum number of installed colormaps supported
+by the specified screen (see section 9.3).
+.LP
+.sp
+.sM
+.FD 0
+PlanesOfScreen\^(\^\fIscreen\fP\^)
+.sp
+int XPlanesOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "PlanesOfScreen" "" "@DEF@"
+.IN "XPlanesOfScreen" "" "@DEF@"
+Both return the depth of the root window.
+.LP
+.sp
+.sM
+.FD 0
+RootWindowOfScreen\^(\^\fIscreen\fP\^)
+.sp
+Window XRootWindowOfScreen\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.PN Screen
+structure.
+.LP
+.eM
+.IN "RootWindowOfScreen" "" "@DEF@"
+.IN "XRootWindowOfScreen" "" "@DEF@"
+Both return the root window of the specified screen.
+.NH 2
+Generating a NoOperation Protocol Request
+.XS
+\*(SN Generating a NoOperation Protocol Request
+.XE
+.LP
+To execute a
+.PN NoOperation
+protocol request, use
+.PN XNoOp .
+.IN "XNoOp" "" "@DEF@"
+.sM
+.FD 0
+XNoOp\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XNoOp
+function sends a
+.PN NoOperation
+protocol request to the X server,
+thereby exercising the connection.
+.NH 2
+Freeing Client-Created Data
+.XS
+\*(SN Freeing Client-Created Data
+.XE
+.LP
+To free in-memory data that was created by an Xlib function, use
+.PN XFree .
+.IN "XFree" "" "@DEF@"
+.sM
+.FD 0
+XFree\^(\^\fIdata\fP\^)
+.br
+ void *\fIdata\fP\^;
+.FN
+.IP \fIdata\fP 1i
+Specifies the data that is to be freed.
+.LP
+.eM
+The
+.PN XFree
+function is a general-purpose Xlib routine that frees the specified data.
+You must use it to free any objects that were allocated by Xlib,
+unless an alternate function is explicitly specified for the object.
+A NULL pointer cannot be passed to this function.
+.NH 2
+Closing the Display
+.XS
+\*(SN Closing the Display
+.XE
+.LP
+To close a display or disconnect from the X server, use
+.PN XCloseDisplay .
+.IN "XCloseDisplay" "" "@DEF@"
+.LP
+.sM
+.FD 0
+XCloseDisplay\^(\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XCloseDisplay
+function closes the connection to the X server for the display specified in the
+.PN Display
+structure and destroys all windows, resource IDs
+.Pn ( Window ,
+.PN Font ,
+.PN Pixmap ,
+.PN Colormap ,
+.PN Cursor ,
+and
+.PN GContext ),
+or other resources that the client has created
+on this display, unless the close-down mode of the resource has been changed
+(see
+.PN XSetCloseDownMode ).
+Therefore, these windows, resource IDs, and other resources should never be
+referenced again or an error will be generated.
+Before exiting, you should call
+.PN XCloseDisplay
+explicitly so that any pending errors are reported as
+.PN XCloseDisplay
+performs a final
+.PN XSync
+operation.
+.IN "Resource IDs"
+.IN "XCloseDisplay"
+.LP
+.PN XCloseDisplay
+can generate a
+.PN BadGC
+error.
+.sp
+.LP
+Xlib provides a function to permit the resources owned by a client
+to survive after the client's connection is closed.
+To change a client's close-down mode, use
+.PN XSetCloseDownMode .
+.IN "XSetCloseDownMode" "" "@DEF@"
+.sM
+.FD 0
+XSetCloseDownMode\^(\^\fIdisplay\fP, \fIclose_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIclose_mode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIclose_mode\fP 1i
+Specifies the client close-down mode.
+You can pass
+.PN DestroyAll ,
+.PN RetainPermanent ,
+or
+.PN RetainTemporary .
+.LP
+.eM
+The
+.PN XSetCloseDownMode
+defines what will happen to the client's resources at connection close.
+A connection starts in
+.PN DestroyAll
+mode.
+For information on what happens to the client's resources when the
+close_mode argument is
+.PN RetainPermanent
+or
+.PN RetainTemporary ,
+see section 2.6.
+.LP
+.PN XSetCloseDownMode
+can generate a
+.PN BadValue
+error.
+.NH 2
+Using X Server Connection Close Operations
+.XS
+\*(SN Using X Server Connection Close Operations
+.XE
+.LP
+When the X server's connection to a client is closed
+either by an explicit call to
+.PN XCloseDisplay
+or by a process that exits, the X server performs the following
+automatic operations:
+.IP \(bu 5
+It disowns all selections owned by the client
+(see
+.PN XSetSelectionOwner ).
+.IP \(bu 5
+It performs an
+.PN XUngrabPointer
+and
+.PN XUngrabKeyboard
+if the client has actively grabbed the pointer
+or the keyboard.
+.IP \(bu 5
+It performs an
+.PN XUngrabServer
+if the client has grabbed the server.
+.IP \(bu 5
+It releases all passive grabs made by the client.
+.IP \(bu 5
+It marks all resources (including colormap entries) allocated
+by the client either as permanent or temporary,
+depending on whether the close-down mode is
+.PN RetainPermanent
+or
+.PN RetainTemporary .
+However, this does not prevent other client applications from explicitly
+destroying the resources (see
+.PN XSetCloseDownMode ).
+.LP
+When the close-down mode is
+.PN DestroyAll ,
+the X server destroys all of a client's resources as follows:
+.IP \(bu 5
+It examines each window in the client's save-set to determine if it is an inferior
+(subwindow) of a window created by the client.
+(The save-set is a list of other clients' windows
+that are referred to as save-set windows.)
+If so, the X server reparents the save-set window to the closest ancestor so
+that the save-set window is not an inferior of a window created by the client.
+The reparenting leaves unchanged the absolute coordinates (with respect to
+the root window) of the upper-left outer corner of the save-set
+window.
+.IP \(bu 5
+It performs a
+.PN MapWindow
+request on the save-set window if the save-set window is unmapped.
+The X server does this even if the save-set window was not an inferior of
+a window created by the client.
+.IP \(bu 5
+It destroys all windows created by the client.
+.IP \(bu 5
+It performs the appropriate free request on each nonwindow resource created by
+the client in the server (for example,
+.PN Font ,
+.PN Pixmap ,
+.PN Cursor ,
+.PN Colormap ,
+and
+.PN GContext ).
+.IP \(bu 5
+It frees all colors and colormap entries allocated by a client application.
+.LP
+Additional processing occurs when the last connection to the X server closes.
+An X server goes through a cycle of having no connections and having some
+connections.
+When the last connection to the X server closes as a result of a connection
+closing with the close_mode of
+.PN DestroyAll ,
+the X server does the following:
+.IP \(bu 5
+It resets its state as if it had just been
+started.
+The X server begins by destroying all lingering resources from
+clients that have terminated in
+.PN RetainPermanent
+or
+.PN RetainTemporary
+mode.
+.IP \(bu 5
+It deletes all but the predefined atom identifiers.
+.IP \(bu 5
+It deletes all properties on all root windows (see section 4.3).
+.IP \(bu 5
+It resets all device maps and attributes
+(for example, key click, bell volume, and acceleration)
+as well as the access control list.
+.IP \(bu 5
+It restores the standard root tiles and cursors.
+.IP \(bu 5
+It restores the default font path.
+.IP \(bu 5
+It restores the input focus to state
+.PN PointerRoot .
+.LP
+However, the X server does not reset if you close a connection with a close-down
+mode set to
+.PN RetainPermanent
+or
+.PN RetainTemporary .
+.NH 2
+Using Xlib with Threads
+.XS
+\*(SN Using Xlib with Threads
+.XE
+.LP
+On systems that have threads, support may be provided to permit
+multiple threads to use Xlib concurrently.
+.LP
+.sp
+To initialize support for concurrent threads, use
+.PN XInitThreads .
+.IN "XInitThreads" "" "@DEF@"
+.sM
+.FD 0
+Status XInitThreads\^(\|);
+.FN
+.LP
+.eM
+The
+.PN XInitThreads
+function initializes Xlib support for concurrent threads.
+This function must be the first Xlib function a
+multi-threaded program calls, and it must complete
+before any other Xlib call is made.
+This function returns a nonzero status if initialization was
+successful; otherwise, it returns zero.
+On systems that do not support threads, this function always returns zero.
+.LP
+It is only necessary to call this function if multiple threads
+might use Xlib concurrently. If all calls to Xlib functions
+are protected by some other access mechanism (for example,
+a mutual exclusion lock in a toolkit or through explicit client
+programming), Xlib thread initialization is not required.
+It is recommended that single-threaded programs not call this function.
+
+.LP
+.sp
+To lock a display across several Xlib calls, use
+.PN XLockDisplay .
+.IN "XLockDisplay" "" "@DEF@"
+.sM
+.FD 0
+void XLockDisplay\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XLockDisplay
+function locks out all other threads from using the specified display.
+Other threads attempting to use the display will block until
+the display is unlocked by this thread.
+Nested calls to
+.PN XLockDisplay
+work correctly; the display will not actually be unlocked until
+.PN XUnlockDisplay
+has been called the same number of times as
+.PN XLockDisplay .
+This function has no effect unless Xlib was successfully initialized
+for threads using
+.PN XInitThreads .
+.LP
+.sp
+To unlock a display, use
+.PN XUnlockDisplay .
+.IN "XUnlockDisplay" "" "@DEF@"
+.sM
+.FD 0
+void XUnlockDisplay\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XUnlockDisplay
+function allows other threads to use the specified display again.
+Any threads that have blocked on the display are allowed to continue.
+Nested locking works correctly; if
+.PN XLockDisplay
+has been called multiple times by a thread, then
+.PN XUnlockDisplay
+must be called an equal number of times before the display is
+actually unlocked.
+This function has no effect unless Xlib was successfully initialized
+for threads using
+.PN XInitThreads .
+.NH 2
+Using Internal Connections
+.XS
+\*(SN Using Internal Connections
+.XE
+.LP
+In addition to the connection to the X server, an Xlib implementation
+may require connections to other kinds of servers (for example, to
+input method servers as described in chapter 13). Toolkits and clients
+that use multiple displays, or that use displays in combination with
+other inputs, need to obtain these additional connections to correctly
+block until input is available and need to process that input
+when it is available. Simple clients that use a single display and
+block for input in an Xlib event function do not need to use these
+facilities.
+.LP
+To track internal connections for a display, use
+.PN XAddConnectionWatch .
+.LP
+.IN "XWatchProc" "" "@DEF@"
+.IN "XAddConnectionWatch" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XConnectionWatchProc)\^(\^\fIdisplay\fP, \fIclient_data\fP, \fIfd\fP, \fIopening\fP, \fIwatch_data\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ int \fIfd\fP\^;
+.br
+ Bool \fIopening\fP\^;
+.br
+ XPointer *\fIwatch_data\fP\^;
+.sp
+Status XAddConnectionWatch\^(\^\fIdisplay\fP, \fIprocedure\fP\^, \fIclient_data\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XWatchProc \fIprocedure\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIprocedure\fP 1i
+Specifies the procedure to be called.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.LP
+.eM
+The
+.PN XAddConnectionWatch
+function registers a procedure to be called each time Xlib opens or closes an
+internal connection for the specified display. The procedure is passed the
+display, the specified client_data, the file descriptor for the connection,
+a Boolean indicating whether the connection is being opened or closed, and a
+pointer to a location for private watch data. If opening is
+.PN True ,
+the procedure can store a pointer to private data in the location pointed
+to by watch_data;
+when the procedure is later called for this same connection and opening is
+.PN False ,
+the location pointed to by watch_data will hold this same private data pointer.
+.LP
+This function can be called at any time after a display is opened.
+If internal connections already exist, the registered procedure will
+immediately be called for each of them, before
+.PN XAddConnectionWatch
+returns.
+.PN XAddConnectionWatch
+returns a nonzero status if the procedure is successfully registered;
+otherwise, it returns zero.
+.LP
+The registered procedure should not call any Xlib functions.
+If the procedure directly or indirectly causes the state of internal
+connections or watch procedures to change, the result is not defined.
+If Xlib has been initialized for threads, the procedure is called with
+the display locked and the result of a call by the procedure to any
+Xlib function that locks the display is not defined unless the executing
+thread has externally locked the display using
+.PN XLockDisplay .
+.LP
+.sp
+To stop tracking internal connections for a display, use
+.PN XRemoveConnectionWatch .
+.IN "XRemoveConnectionWatch" "" "@DEF@"
+.sM
+.FD 0
+Status XRemoveConnectionWatch\^(\^\fIdisplay\fP, \fIprocedure\fP\^, \fIclient_data\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XWatchProc \fIprocedure\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIprocedure\fP 1i
+Specifies the procedure to be called.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.LP
+.eM
+The
+.PN XRemoveConnectionWatch
+function removes a previously registered connection watch procedure.
+The client_data must match the client_data used when the procedure
+was initially registered.
+
+.LP
+.sp
+To process input on an internal connection, use
+.PN XProcessInternalConnection .
+.IN "XProcessInternalConnection" "" "@DEF@"
+.sM
+.FD 0
+void XProcessInternalConnection\^(\^\fIdisplay\fP, \fIfd\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIfd\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfd\fP 1i
+Specifies the file descriptor.
+.LP
+.eM
+The
+.PN XProcessInternalConnection
+function processes input available on an internal connection.
+This function should be called for an internal connection only
+after an operating system facility (for example,
+.PN select
+or
+.PN poll )
+has indicated that input is available; otherwise,
+the effect is not defined.
+.LP
+.sp
+To obtain all of the current internal connections for a display, use
+.PN XInternalConnectionNumbers .
+.IN "XInternalConnectionNumbers" "" "@DEF@"
+.sM
+.FD 0
+Status XInternalConnectionNumbers\^(\^\fIdisplay\fP, \fIfd_return\fP\^, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int **\fIfd_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfd_return\fP 1i
+Returns the file descriptors.
+.ds Cn file descriptors
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.LP
+.eM
+The
+.PN XInternalConnectionNumbers
+function returns a list of the file descriptors for all internal
+connections currently open for the specified display.
+When the allocated list is no longer needed,
+free it by using
+.PN XFree .
+This functions returns a nonzero status if the list is successfully allocated;
+otherwise, it returns zero.
+.LP
+.bp
diff --git a/specs/X11/CH03 b/specs/X11/CH03
new file mode 100644
index 0000000..f7eb2d4
--- /dev/null
+++ b/specs/X11/CH03
@@ -0,0 +1,3121 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 3\fP\s-1
+
+\s+1\fBWindow Functions\fP\s-1
+.sp 2
+.nr H1 3
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 3: Window Functions
+.XE
+In the X Window System,
+a window is a rectangular area on the screen that lets you
+view graphic output.
+Client applications
+can display overlapping and nested windows on one or more
+screens that are driven by X servers on one or more machines.
+Clients who want to create windows must first
+connect their program to the X server
+by calling
+.PN XOpenDisplay .
+This chapter begins with a discussion of
+visual types and window attributes.
+The chapter continues with a discussion of the Xlib functions you can use to:
+.IP \(bu 5
+Create windows
+.IP \(bu 5
+Destroy windows
+.IP \(bu 5
+Map windows
+.IP \(bu 5
+Unmap windows
+.IP \(bu 5
+Configure windows
+.IP \(bu 5
+Change window stacking order
+.IP \(bu 5
+Change window attributes
+.LP
+This chapter also identifies the window actions that may generate events.
+.LP
+Note that it is vital that your application conform to the
+established conventions for communicating with window managers
+for it to work well with the various window managers in use (see section 14.1).
+Toolkits generally adhere to these conventions for you,
+relieving you of the burden.
+Toolkits also often supersede many functions in this chapter
+with versions of their own.
+For more information,
+refer to the documentation for the toolkit that you are using.
+.NH 2
+Visual Types
+.XS
+\*(SN Visual Types
+.XE
+.LP
+.IN "Visual Type" "" "@DEF@"
+On some display hardware,
+it may be possible to deal with color resources in more than one way.
+For example, you may be able to deal with a screen of either 12-bit depth
+with arbitrary mapping of pixel to color (pseudo-color) or 24-bit depth
+with 8 bits of the pixel dedicated to each of red, green, and blue.
+These different ways of dealing with the visual aspects of the screen
+are called visuals.
+For each screen of the display, there may be a list of valid visual types
+supported at different depths of the screen.
+Because default windows and visual types are defined for each screen,
+most simple applications need not deal with this complexity.
+Xlib provides macros and functions that return the default root window,
+the default depth of the default root window, and the default visual type
+(see sections 2.2.1 and 16.7).
+.LP
+Xlib uses an opaque
+.PN Visual
+.IN "Visual" "" "@DEF@"
+structure that contains information about the possible color mapping.
+The visual utility functions (see section 16.7) use an
+.PN XVisualInfo
+structure to return this information to an application.
+The members of this structure pertinent to this discussion are class, red_mask,
+green_mask, blue_mask, bits_per_rgb, and colormap_size.
+The class member specifies one of the possible visual classes of the screen
+and can be
+.IN "Visual Classes" "StaticGray"
+.IN "Visual Classes" "StaticColor"
+.IN "Visual Classes" "TrueColor"
+.IN "Visual Classes" "StaticColor"
+.IN "Visual Classes" "GrayScale"
+.IN "Visual Classes" "PseudoColor"
+.PN StaticGray ,
+.PN StaticColor ,
+.PN TrueColor ,
+.PN GrayScale ,
+.PN PseudoColor ,
+or
+.PN DirectColor .
+.LP
+The following concepts may serve to make the explanation of
+visual types clearer.
+The screen can be color or grayscale,
+can have a colormap that is writable or read-only,
+and can also have a colormap whose indices are decomposed into separate
+RGB pieces, provided one is not on a grayscale screen.
+This leads to the following diagram:
+.LP
+.DS
+.TS
+center;
+ c c s c s
+ c c c c c
+| c | c | c | c | c |.
+ Color Gray-scale
+ R/O R/W R/O R/W
+_
+Undecomposed Static Pseudo Static Gray
+Colormap Color Color Gray Scale
+_
+.T&
+| c | c | c |.
+Decomposed True Direct
+Colormap Color Color
+_ _ _
+.TE
+.DE
+.LP
+Conceptually,
+as each pixel is read out of video memory for display on the screen,
+it goes through a look-up stage by indexing into a colormap.
+Colormaps can be manipulated arbitrarily on some hardware,
+in limited ways on other hardware, and not at all on other hardware.
+The visual types affect the colormap and
+the RGB values in the following ways:
+.LP
+.IP \(bu 5
+For
+.PN PseudoColor ,
+a pixel value indexes a colormap to produce
+independent RGB values, and the RGB values can be changed dynamically.
+.IP \(bu 5
+.PN GrayScale
+is treated the same way as
+.PN PseudoColor
+except that the primary that drives the screen is undefined.
+Thus, the client should always store the
+same value for red, green, and blue in the colormaps.
+.IP \(bu 5
+For
+.PN DirectColor ,
+a pixel value is decomposed into separate RGB subfields, and each
+subfield separately indexes the colormap for the corresponding value.
+The RGB values can be changed dynamically.
+.IP \(bu 5
+.PN TrueColor
+is treated the same way as
+.PN DirectColor
+except that the colormap has predefined, read-only RGB values.
+These RGB values are server dependent but provide linear or near-linear
+ramps in each primary.
+.IP \(bu 5
+.PN StaticColor
+is treated the same way as
+.PN PseudoColor
+except that the colormap has predefined,
+read-only, server-dependent RGB values.
+.IP \(bu 5
+.PN StaticGray
+is treated the same way as
+.PN StaticColor
+except that the RGB values are equal for any single pixel
+value, thus resulting in shades of gray.
+.PN StaticGray
+with a two-entry
+colormap can be thought of as monochrome.
+.LP
+The red_mask, green_mask, and blue_mask members are only defined for
+.PN DirectColor
+and
+.PN TrueColor .
+Each has one contiguous set of bits with no
+intersections.
+The bits_per_rgb member specifies the log base 2 of the
+number of distinct color values (individually) of red, green, and blue.
+Actual RGB values are unsigned 16-bit numbers.
+The colormap_size member defines the number of available colormap entries
+in a newly created colormap.
+For
+.PN DirectColor
+and
+.PN TrueColor ,
+this is the size of an individual pixel subfield.
+.sp
+.LP
+To obtain the visual ID from a
+.PN Visual ,
+use
+.PN XVisualIDFromVisual .
+.IN "XVisualIDFromVisual" "" "@DEF@"
+.sM
+.FD 0
+VisualID XVisualIDFromVisual\^(\^\fIvisual\fP\^)
+.br
+ Visual *\^\fIvisual\fP\^;
+.FN
+.IP \fIvisual\fP 1i
+Specifies the visual type.
+.LP
+.eM
+The
+.PN XVisualIDFromVisual
+function returns the visual ID for the specified visual type.
+.NH 2
+Window Attributes
+.XS
+\*(SN Window Attributes
+.XE
+.LP
+.IN "Window"
+.IN "Window" "attributes"
+All
+.PN InputOutput
+windows have a border width of zero or more pixels, an optional background,
+an event suppression mask (which suppresses propagation of events from
+children), and a property list (see section 4.3).
+The window border and background can be a solid color or a pattern, called
+a tile.
+All windows except the root have a parent and are clipped by their parent.
+If a window is stacked on top of another window, it obscures that other
+window for the purpose of input.
+If a window has a background (almost all do), it obscures the other
+window for purposes of output.
+Attempts to output to the obscured area do nothing,
+and no input events (for example, pointer motion) are generated for the
+obscured area.
+.LP
+Windows also have associated property lists (see section 4.3).
+.LP
+Both
+.PN InputOutput
+and
+.PN InputOnly
+windows have the following common attributes,
+which are the only attributes of an
+.PN InputOnly
+window:
+.IP \(bu 5
+win-gravity
+.IP \(bu 5
+event-mask
+.IP \(bu 5
+do-not-propagate-mask
+.IP \(bu 5
+override-redirect
+.IP \(bu 5
+cursor
+.LP
+If you specify any other attributes for an
+.PN InputOnly
+window,
+a
+.PN BadMatch
+error results.
+.LP
+.PN InputOnly
+windows are used for controlling input events in situations where
+.PN InputOutput
+windows are unnecessary.
+.PN InputOnly
+windows are invisible; can only be used to control such things as
+cursors, input event generation, and grabbing;
+and cannot be used in any graphics requests.
+Note that
+.PN InputOnly
+windows cannot have
+.PN InputOutput
+windows as inferiors.
+.LP
+Windows have borders of a programmable width and pattern
+as well as a background pattern or tile.
+.IN "Tile" "pixmaps"
+Pixel values can be used for solid colors.
+.IN "Resource IDs" "freeing"
+.IN "Freeing" "resources"
+The background and border pixmaps can be destroyed immediately after
+creating the window if no further explicit references to them
+are to be made.
+.IN "Tile" "mode"
+The pattern can either be relative to the parent
+or absolute.
+If
+.PN ParentRelative ,
+the parent's background is used.
+.LP
+When windows are first created,
+they are not visible (not mapped) on the screen.
+Any output to a window that is not visible on the screen
+and that does not have backing store will be discarded.
+.IN "Window" "mapping"
+An application may wish to create a window long before it is
+mapped to the screen.
+When a window is eventually mapped to the screen
+(using
+.PN XMapWindow ),
+.IN "XMapWindow"
+the X server generates an
+.PN Expose
+event for the window if backing store has not been maintained.
+.LP
+A window manager can override your choice of size,
+border width, and position for a top-level window.
+Your program must be prepared to use the actual size and position
+of the top window.
+It is not acceptable for a client application to resize itself
+unless in direct response to a human command to do so.
+Instead, either your program should use the space given to it,
+or if the space is too small for any useful work, your program
+might ask the user to resize the window.
+The border of your top-level window is considered fair game
+for window managers.
+.LP
+To set an attribute of a window,
+set the appropriate member of the
+.PN XSetWindowAttributes
+structure and OR in the corresponding value bitmask in your subsequent calls to
+.PN XCreateWindow
+and
+.PN XChangeWindowAttributes ,
+or use one of the other convenience functions that set the appropriate
+attribute.
+The symbols for the value mask bits and the
+.PN XSetWindowAttributes
+structure are:
+.sM
+.LP
+/* Window attribute value mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN CWBackPixmap
+T} T{
+(1L<<0)
+T}
+T{
+#define
+T} T{
+.PN CWBackPixel
+T} T{
+(1L<<1)
+T}
+T{
+#define
+T} T{
+.PN CWBorderPixmap
+T} T{
+(1L<<2)
+T}
+T{
+#define
+T} T{
+.PN CWBorderPixel
+T} T{
+(1L<<3)
+T}
+T{
+#define
+T} T{
+.PN CWBitGravity
+T} T{
+(1L<<4)
+T}
+T{
+#define
+T} T{
+.PN CWWinGravity
+T} T{
+(1L<<5)
+T}
+T{
+#define
+T} T{
+.PN CWBackingStore
+T} T{
+(1L<<6)
+T}
+T{
+#define
+T} T{
+.PN CWBackingPlanes
+T} T{
+(1L<<7)
+T}
+T{
+#define
+T} T{
+.PN CWBackingPixel
+T} T{
+(1L<<8)
+T}
+T{
+#define
+T} T{
+.PN CWOverrideRedirect
+T} T{
+(1L<<9)
+T}
+T{
+#define
+T} T{
+.PN CWSaveUnder
+T} T{
+(1L<<10)
+T}
+T{
+#define
+T} T{
+.PN CWEventMask
+T} T{
+(1L<<11)
+T}
+T{
+#define
+T} T{
+.PN CWDontPropagate
+T} T{
+(1L<<12)
+T}
+T{
+#define
+T} T{
+.PN CWColormap
+T} T{
+(1L<<13)
+T}
+T{
+#define
+T} T{
+.PN CWCursor
+T} T{
+(1L<<14)
+T}
+.TE
+.IN "XSetWindowAttributes" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+/* Values */
+
+typedef struct {
+ Pixmap background_pixmap; /* background, None, or ParentRelative */
+ unsigned long background_pixel; /* background pixel */
+ Pixmap border_pixmap; /* border of the window or CopyFromParent */
+ unsigned long border_pixel; /* border pixel value */
+ int bit_gravity; /* one of bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes; /* planes to be preserved if possible */
+ unsigned long backing_pixel; /* value to use in restoring planes */
+ Bool save_under; /* should bits under be saved? (popups) */
+ long event_mask; /* set of events that should be saved */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ Bool override_redirect; /* boolean value for override_redirect */
+ Colormap colormap; /* color map to be associated with window */
+ Cursor cursor; /* cursor to be displayed (or None) */
+} XSetWindowAttributes;
+.De
+.LP
+.eM
+The following lists the defaults for each window attribute and indicates
+whether the attribute is applicable to
+.PN InputOutput
+and
+.PN InputOnly
+windows:
+.TS H
+l l l l
+lw(1.4i) lw(1.3i) cw(.9i) cw(.8i).
+_
+.sp 6p
+T{
+.B Attribute
+T} T{
+.B Default
+T} T{
+.PN InputOutput
+T} T{
+.PN InputOnly
+T}
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+background-pixmap
+T} T{
+.PN None
+T} T{
+Yes
+T} T{
+No
+T}
+background-pixel Undefined Yes No
+T{
+border-pixmap
+T} T{
+.PN CopyFromParent
+T} T{
+Yes
+T} T{
+No
+T}
+border-pixel Undefined Yes No
+T{
+bit-gravity
+T} T{
+.PN ForgetGravity
+T} T{
+Yes
+T} T{
+No
+T}
+T{
+win-gravity
+T} T{
+.PN NorthWestGravity
+T} T{
+Yes
+T} T{
+Yes
+T}
+T{
+backing-store
+T} T{
+.PN NotUseful
+T} T{
+Yes
+T} T{
+No
+T}
+backing-planes All ones Yes No
+backing-pixel zero Yes No
+T{
+save-under
+T} T{
+.PN False
+T} T{
+Yes
+T} T{
+No
+T}
+event-mask empty set Yes Yes
+do-not-propagate-mask empty set Yes Yes
+T{
+override-redirect
+T} T{
+.PN False
+T} T{
+Yes
+T} T{
+Yes
+T}
+T{
+colormap
+T} T{
+.PN CopyFromParent
+T} T{
+Yes
+T} T{
+No
+T}
+T{
+cursor
+T} T{
+.PN None
+T} T{
+Yes
+T} T{
+Yes
+T}
+_
+.TE
+.NH 3
+Background Attribute
+.XS
+\*(SN Background Attribute
+.XE
+.LP
+Only
+.PN InputOutput
+windows can have a background.
+You can set the background of an
+.PN InputOutput
+window by using a pixel or a pixmap.
+.LP
+The background-pixmap attribute of a window specifies the pixmap to be used for
+a window's background.
+This pixmap can be of any size, although some sizes may be faster than others.
+The background-pixel attribute of a window specifies a pixel value used to paint
+a window's background in a single color.
+.LP
+You can set the background-pixmap to a pixmap,
+.PN None
+(default), or
+.PN ParentRelative .
+You can set the background-pixel of a window to any pixel value (no default).
+If you specify a background-pixel,
+it overrides either the default background-pixmap
+or any value you may have set in the background-pixmap.
+A pixmap of an undefined size that is filled with the background-pixel is used
+for the background.
+Range checking is not performed on the background pixel;
+it simply is truncated to the appropriate number of bits.
+.LP
+If you set the background-pixmap,
+it overrides the default.
+The background-pixmap and the window must have the same depth,
+or a
+.PN BadMatch
+error results.
+If you set background-pixmap to
+.PN None ,
+the window has no defined background.
+If you set the background-pixmap to
+.PN ParentRelative :
+.IP \(bu 5
+The parent window's background-pixmap is used.
+The child window, however, must have the same depth as
+its parent,
+or a
+.PN BadMatch
+error results.
+.IP \(bu 5
+If the parent window has a background-pixmap of
+.PN None ,
+the window also has a background-pixmap of
+.PN None .
+.IP \(bu 5
+A copy of the parent window's background-pixmap is not made.
+The parent's background-pixmap is examined each time the child window's
+background-pixmap is required.
+.IP \(bu 5
+The background tile origin always aligns with the parent window's
+background tile origin.
+If the background-pixmap is not
+.PN ParentRelative ,
+the background tile origin is the child window's origin.
+.LP
+Setting a new background, whether by setting background-pixmap or
+background-pixel, overrides any previous background.
+The background-pixmap can be freed immediately if no further explicit reference
+is made to it (the X server will keep a copy to use when needed).
+If you later draw into the pixmap used for the background,
+what happens is undefined because the
+X implementation is free to make a copy of the pixmap or
+to use the same pixmap.
+.LP
+When no valid contents are available for regions of a window
+and either the regions are visible or the server is maintaining backing store,
+the server automatically tiles the regions with the window's background
+unless the window has a background of
+.PN None .
+If the background is
+.PN None ,
+the previous screen contents from other windows of the same depth as the window
+are simply left in place as long as the contents come from the parent of the
+window or an inferior of the parent.
+Otherwise, the initial contents of the exposed regions are undefined.
+.PN Expose
+events are then generated for the regions, even if the background-pixmap
+is
+.PN None
+(see section 10.9).
+.NH 3
+Border Attribute
+.XS
+\*(SN Border Attribute
+.XE
+.LP
+Only
+.PN InputOutput
+windows can have a border.
+You can set the border of an
+.PN InputOutput
+window by using a pixel or a pixmap.
+.LP
+The border-pixmap attribute of a window specifies the pixmap to be used
+for a window's border.
+The border-pixel attribute of a window specifies a pixmap of undefined size
+filled with that pixel be used for a window's border.
+Range checking is not performed on the background pixel;
+it simply is truncated to the appropriate number of bits.
+The border tile origin is always the same as the background tile origin.
+.LP
+You can also set the border-pixmap to a pixmap of any size (some may be faster
+than others) or to
+.PN CopyFromParent
+(default).
+You can set the border-pixel to any pixel value (no default).
+.LP
+If you set a border-pixmap,
+it overrides the default.
+The border-pixmap and the window must have the same depth,
+or a
+.PN BadMatch
+error results.
+If you set the border-pixmap to
+.PN CopyFromParent ,
+the parent window's border-pixmap is copied.
+Subsequent changes to the parent window's border attribute do not affect
+the child window.
+However, the child window must have the same depth as the parent window,
+or a
+.PN BadMatch
+error results.
+.LP
+The border-pixmap can be freed immediately if no further explicit reference
+is made to it.
+If you later draw into the pixmap used for the border,
+what happens is undefined because the
+X implementation is free either to make a copy of the pixmap or
+to use the same pixmap.
+If you specify a border-pixel,
+it overrides either the default border-pixmap
+or any value you may have set in the border-pixmap.
+All pixels in the window's border will be set to the border-pixel.
+Setting a new border, whether by setting border-pixel or by setting
+border-pixmap, overrides any previous border.
+.LP
+Output to a window is always clipped to the inside of the window.
+Therefore, graphics operations never affect the window border.
+.NH 3
+Gravity Attributes
+.XS
+\*(SN Gravity Attributes
+.XE
+.LP
+The bit gravity of a window defines which region of the window should be
+retained when an
+.PN InputOutput
+window is resized.
+The default value for the bit-gravity attribute is
+.PN ForgetGravity .
+The window gravity of a window allows you to define how the
+.PN InputOutput
+or
+.PN InputOnly
+window should be repositioned if its parent is resized.
+The default value for the win-gravity attribute is
+.PN NorthWestGravity .
+.LP
+If the inside width or height of a window is not changed
+and if the window is moved or its border is changed,
+then the contents of the window are not lost but move with the window.
+Changing the inside width or height of the window causes its contents to be
+moved or lost (depending on the bit-gravity of the window) and causes
+children to be reconfigured (depending on their win-gravity).
+For a
+change of width and height, the (x, y) pairs are defined:
+.LP
+.TS
+l l
+l l.
+_
+.sp 6p
+.B
+Gravity Direction Coordinates
+.sp 6p
+_
+.sp 6p
+.R
+T{
+.PN NorthWestGravity
+T} T{
+(0, 0)
+T}
+T{
+.PN NorthGravity
+T} T{
+(Width/2, 0)
+T}
+T{
+.PN NorthEastGravity
+T} T{
+(Width, 0)
+T}
+T{
+.PN WestGravity
+T} T{
+(0, Height/2)
+T}
+T{
+.PN CenterGravity
+T} T{
+(Width/2, Height/2)
+T}
+T{
+.PN EastGravity
+T} T{
+(Width, Height/2)
+T}
+T{
+.PN SouthWestGravity
+T} T{
+(0, Height)
+T}
+T{
+.PN SouthGravity
+T} T{
+(Width/2, Height)
+T}
+T{
+.PN SouthEastGravity
+T} T{
+(Width, Height)
+T}
+.sp 6p
+_
+.TE
+.LP
+When a window with one of these bit-gravity values is resized,
+the corresponding pair
+defines the change in position of each pixel in the window.
+When a window with one of these win-gravities has its parent window resized,
+the corresponding pair defines the change in position of the window
+within the parent.
+When a window is so repositioned, a
+.PN GravityNotify
+event is generated (see section 10.10.5).
+.LP
+A bit-gravity of
+.PN StaticGravity
+indicates that the contents or origin should not move relative to the
+origin of the root window.
+If the change in size of the window is coupled with a change in position (x, y),
+then for bit-gravity the change in position of each pixel is (\-x, \-y), and for
+win-gravity the change in position of a child when its parent is so resized is
+(\-x, \-y).
+Note that
+.PN StaticGravity
+still only takes effect when the width or height of the window is changed,
+not when the window is moved.
+.LP
+A bit-gravity of
+.PN ForgetGravity
+indicates that the window's contents are always discarded after a size change,
+even if a backing store or save under has been requested.
+The window is tiled with its background
+and zero or more
+.PN Expose
+events are generated.
+If no background is defined, the existing screen contents are not
+altered.
+Some X servers may also ignore the specified bit-gravity and
+always generate
+.PN Expose
+events.
+.LP
+The contents and borders of inferiors are not affected by their parent's
+bit-gravity.
+A server is permitted to ignore the specified bit-gravity and use
+.PN Forget
+instead.
+.LP
+A win-gravity of
+.PN UnmapGravity
+is like
+.PN NorthWestGravity
+(the window is not moved),
+except the child is also
+unmapped when the parent is resized,
+and an
+.PN UnmapNotify
+event is
+generated.
+.NH 3
+Backing Store Attribute
+.XS
+\*(SN Backing Store Attribute
+.XE
+.LP
+Some implementations of the X server may choose to maintain the contents of
+.PN InputOutput
+windows.
+If the X server maintains the contents of a window,
+the off-screen saved pixels
+are known as backing store.
+The backing store advises the X server on what to do
+with the contents of a window.
+The backing-store attribute can be set to
+.PN NotUseful
+(default),
+.PN WhenMapped ,
+or
+.PN Always .
+.LP
+A backing-store attribute of
+.PN NotUseful
+advises the X server that
+maintaining contents is unnecessary,
+although some X implementations may
+still choose to maintain contents and, therefore, not generate
+.PN Expose
+events.
+A backing-store attribute of
+.PN WhenMapped
+advises the X server that maintaining contents of
+obscured regions when the window is mapped would be beneficial.
+In this case,
+the server may generate an
+.PN Expose
+event when the window is created.
+A backing-store attribute of
+.PN Always
+advises the X server that maintaining contents even when
+the window is unmapped would be beneficial.
+Even if the window is larger than its parent,
+this is a request to the X server to maintain complete contents,
+not just the region within the parent window boundaries.
+While the X server maintains the window's contents,
+.PN Expose
+events normally are not generated,
+but the X server may stop maintaining
+contents at any time.
+.LP
+When the contents of obscured regions of a window are being maintained,
+regions obscured by noninferior windows are included in the destination
+of graphics requests (and source, when the window is the source).
+However, regions obscured by inferior windows are not included.
+.NH 3
+Save Under Flag
+.XS
+\*(SN Save Under Flag
+.XE
+.IN "Save Unders"
+.LP
+Some server implementations may preserve contents of
+.PN InputOutput
+windows under other
+.PN InputOutput
+windows.
+This is not the same as preserving the contents of a window for you.
+You may get better visual
+appeal if transient windows (for example, pop-up menus) request that the system
+preserve the screen contents under them,
+so the temporarily obscured applications do not have to repaint.
+.LP
+You can set the save-under flag to
+.PN True
+or
+.PN False
+(default).
+If save-under is
+.PN True ,
+the X server is advised that, when this window is mapped,
+saving the contents of windows it obscures would be beneficial.
+.NH 3
+Backing Planes and Backing Pixel Attributes
+.XS
+\*(SN Backing Planes and Backing Pixel Attributes
+.XE
+.LP
+You can set backing planes to indicate (with bits set to 1)
+which bit planes of an
+.PN InputOutput
+window hold dynamic data that must be preserved in backing store
+and during save unders.
+The default value for the backing-planes attribute is all bits set to 1.
+You can set backing pixel to specify what bits to use in planes not
+covered by backing planes.
+The default value for the backing-pixel attribute is all bits set to 0.
+The X server is free to save only the specified bit planes in the backing store
+or the save under and is free to regenerate the remaining planes with
+the specified pixel value.
+Any extraneous bits in these values (that is, those bits beyond
+the specified depth of the window) may be simply ignored.
+If you request backing store or save unders,
+you should use these members to minimize the amount of off-screen memory
+required to store your window.
+.NH 3
+Event Mask and Do Not Propagate Mask Attributes
+.XS
+\*(SN Event Mask and Do Not Propagate Mask Attributes
+.XE
+.LP
+The event mask defines which events the client is interested in for this
+.PN InputOutput
+or
+.PN InputOnly
+window (or, for some event types, inferiors of this window).
+The event mask is the bitwise inclusive OR of zero or more of the
+valid event mask bits.
+You can specify that no maskable events are reported by setting
+.PN NoEventMask
+(default).
+.LP
+The do-not-propagate-mask attribute
+defines which events should not be propagated to
+ancestor windows when no client has the event type selected in this
+.PN InputOutput
+or
+.PN InputOnly
+window.
+The do-not-propagate-mask is the bitwise inclusive OR of zero or more
+of the following masks:
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN PointerMotion ,
+.PN Button1Motion ,
+.PN Button2Motion ,
+.PN Button3Motion ,
+.PN Button4Motion ,
+.PN Button5Motion ,
+and
+.PN ButtonMotion .
+You can specify that all events are propagated by setting
+.PN NoEventMask
+(default).
+.NH 3
+Override Redirect Flag
+.XS
+\*(SN Override Redirect Flag
+.XE
+.LP
+To control window placement or to add decoration,
+a window manager often needs to intercept (redirect) any map or configure
+request.
+Pop-up windows, however, often need to be mapped without a window manager
+getting in the way.
+To control whether an
+.PN InputOutput
+or
+.PN InputOnly
+window is to ignore these structure control facilities,
+use the override-redirect flag.
+.LP
+The override-redirect flag specifies whether map and configure requests
+on this window should override a
+.PN SubstructureRedirectMask
+on the parent.
+You can set the override-redirect flag to
+.PN True
+or
+.PN False
+(default).
+Window managers use this information to avoid tampering with pop-up windows
+(see also chapter 14).
+.NH 3
+Colormap Attribute
+.XS
+\*(SN Colormap Attribute
+.XE
+.LP
+The colormap attribute specifies which colormap best reflects the true
+colors of the
+.PN InputOutput
+window.
+The colormap must have the same visual type as the window,
+or a
+.PN BadMatch
+error results.
+X servers capable of supporting multiple
+hardware colormaps can use this information,
+and window managers can use it for calls to
+.PN XInstallColormap .
+You can set the colormap attribute to a colormap or to
+.PN CopyFromParent
+(default).
+.LP
+If you set the colormap to
+.PN CopyFromParent ,
+the parent window's colormap is copied and used by its child.
+However, the child window must have the same visual type as the parent,
+or a
+.PN BadMatch
+error results.
+The parent window must not have a colormap of
+.PN None ,
+or a
+.PN BadMatch
+error results.
+The colormap is copied by sharing the colormap object between the child
+and parent, not by making a complete copy of the colormap contents.
+Subsequent changes to the parent window's colormap attribute do
+not affect the child window.
+.NH 3
+Cursor Attribute
+.XS
+\*(SN Cursor Attribute
+.XE
+.LP
+The cursor attribute specifies which cursor is to be used when the pointer is
+in the
+.PN InputOutput
+or
+.PN InputOnly
+window.
+You can set the cursor to a cursor or
+.PN None
+(default).
+.LP
+If you set the cursor to
+.PN None ,
+the parent's cursor is used when the
+pointer is in the
+.PN InputOutput
+or
+.PN InputOnly
+window, and any change in the parent's cursor will cause an
+immediate change in the displayed cursor.
+By calling
+.PN XFreeCursor ,
+the cursor can be freed immediately as long as no further explicit reference
+to it is made.
+.NH 2
+Creating Windows
+.XS
+\*(SN Creating Windows
+.XE
+.LP
+Xlib provides basic ways for creating windows,
+and toolkits often supply higher-level functions specifically for
+creating and placing top-level windows,
+which are discussed in the appropriate toolkit documentation.
+If you do not use a toolkit, however,
+you must provide some standard information or hints for the window
+manager by using the Xlib inter-client communication functions
+(see chapter 14).
+.LP
+If you use Xlib to create your own top-level windows
+(direct children of the root window),
+you must observe the following rules so that all applications interact
+reasonably across the different styles of window management:
+.IP \(bu 5
+You must never fight with the window manager for the size or
+placement of your top-level window.
+.IP \(bu 5
+You must be able to deal with whatever size window you get,
+even if this means that your application just prints a message
+like ``Please make me bigger'' in its window.
+.IP \(bu 5
+You should only attempt to resize or move top-level windows in
+direct response to a user request.
+If a request to change the size of a top-level window fails,
+you must be prepared to live with what you get.
+You are free to resize or move the children of top-level
+windows as necessary.
+(Toolkits often have facilities for automatic relayout.)
+.IP \(bu 5
+If you do not use a toolkit that automatically sets standard window properties,
+you should set these properties for top-level windows before mapping them.
+.LP
+For further information,
+see chapter 14 and the \fIInter-Client Communication Conventions Manual\fP.
+.LP
+.PN XCreateWindow
+is the more general function that allows you to set specific window attributes
+when you create a window.
+.PN XCreateSimpleWindow
+creates a window that inherits its attributes from its parent window.
+.LP
+.IN "Window" "InputOnly"
+The X server acts as if
+.PN InputOnly
+windows do not exist for
+the purposes of graphics requests, exposure processing, and
+.PN VisibilityNotify
+events.
+An
+.PN InputOnly
+window cannot be used as a
+drawable (that is, as a source or destination for graphics requests).
+.PN InputOnly
+and
+.PN InputOutput
+windows act identically in other respects (properties,
+grabs, input control, and so on).
+Extension packages can define other classes of windows.
+.LP
+To create an unmapped window and set its window attributes, use
+.PN XCreateWindow .
+.IN "XCreateWindow" "" "@DEF@"
+.sM
+.FD 0
+Window XCreateWindow\^(\^\fIdisplay\fP, \fIparent\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIborder_width\fP\^, \fIdepth\fP\^,
+.br
+ \fIclass\fP\^, \fIvisual\fP\^, \fIvaluemask\fP\^, \fIattributes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIparent\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ unsigned int \fIborder_width\fP\^;
+.br
+ int \fIdepth\fP\^;
+.br
+ unsigned int \fIclass\fP\^;
+.br
+ Visual *\fIvisual\fP\^;
+.br
+ unsigned long \fIvaluemask\fP\^;
+.br
+ XSetWindowAttributes *\fIattributes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIparent\fP 1i
+Specifies the parent window.
+.ds Xy , which are the top-left outside corner of the created window's \
+borders and are relative to the inside of the parent window's borders
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which are the created window's inside dimensions \
+and do not include the created window's borders
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+The dimensions must be nonzero,
+or a
+.PN BadValue
+error results.
+.IP \fIborder_width\fP 1i
+Specifies the width of the created window's border in pixels.
+.IP \fIdepth\fP 1i
+Specifies the window's depth.
+A depth of
+.PN CopyFromParent
+means the depth is taken from the parent.
+.IP \fIclass\fP 1i
+Specifies the created window's class.
+You can pass
+.PN InputOutput ,
+.PN InputOnly ,
+or
+.PN CopyFromParent .
+A class of
+.PN CopyFromParent
+means the class
+is taken from the parent.
+.IP \fIvisual\fP 1i
+Specifies the visual type.
+A visual of
+.PN CopyFromParent
+means the visual type is taken from the
+parent.
+.IP \fIvaluemask\fP 1i
+Specifies which window attributes are defined in the attributes
+argument.
+This mask is the bitwise inclusive OR of the valid attribute mask bits.
+If valuemask is zero,
+the attributes are ignored and are not referenced.
+.IP \fIattributes\fP 1i
+Specifies the structure from which the values (as specified by the value mask)
+are to be taken.
+The value mask should have the appropriate bits
+set to indicate which attributes have been set in the structure.
+.LP
+.eM
+The
+.PN XCreateWindow
+function creates an unmapped subwindow for a specified parent window,
+returns the window ID of the created window,
+and causes the X server to generate a
+.PN CreateNotify
+event.
+The created window is placed on top in the stacking order
+with respect to siblings.
+.LP
+The coordinate system has the X axis horizontal and the Y axis vertical
+with the origin [0, 0] at the upper-left corner.
+Coordinates are integral,
+in terms of pixels,
+and coincide with pixel centers.
+Each window and pixmap has its own coordinate system.
+For a window,
+the origin is inside the border at the inside, upper-left corner.
+.LP
+The border_width for an
+.PN InputOnly
+window must be zero, or a
+.PN BadMatch
+error results.
+For class
+.PN InputOutput ,
+the visual type and depth must be a combination supported for the screen,
+or a
+.PN BadMatch
+error results.
+The depth need not be the same as the parent,
+but the parent must not be a window of class
+.PN InputOnly ,
+or a
+.PN BadMatch
+error results.
+For an
+.PN InputOnly
+window,
+the depth must be zero, and the visual must be one supported by the screen.
+If either condition is not met,
+a
+.PN BadMatch
+error results.
+The parent window, however, may have any depth and class.
+If you specify any invalid window attribute for a window, a
+.PN BadMatch
+error results.
+.LP
+The created window is not yet displayed (mapped) on the user's display.
+To display the window, call
+.PN XMapWindow .
+The new window initially uses the same cursor as
+its parent.
+A new cursor can be defined for the new window by calling
+.PN XDefineCursor .
+.IN "Cursor" "Initial State"
+.IN "XDefineCursor"
+The window will not be visible on the screen unless it and all of its
+ancestors are mapped and it is not obscured by any of its ancestors.
+.LP
+.PN XCreateWindow
+can generate
+.PN BadAlloc ,
+.PN BadColor ,
+.PN BadCursor ,
+.PN BadMatch ,
+.PN BadPixmap ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To create an unmapped
+.PN InputOutput
+subwindow of a given parent window, use
+.PN XCreateSimpleWindow .
+.IN "XCreateSimpleWindow" "" "@DEF@"
+.sM
+.FD 0
+Window XCreateSimpleWindow\^(\^\fIdisplay\fP, \fIparent\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIborder_width\fP\^,
+.br
+ \fIborder\fP\^, \fIbackground\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIparent\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ unsigned int \fIborder_width\fP\^;
+.br
+ unsigned long \fIborder\fP\^;
+.br
+ unsigned long \fIbackground\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIparent\fP 1i
+Specifies the parent window.
+.ds Xy , which are the top-left outside corner of the new window's borders \
+and are relative to the inside of the parent window's borders
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which are the created window's inside dimensions \
+and do not include the created window's borders
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+The dimensions must be nonzero,
+or a
+.PN BadValue
+error results.
+.IP \fIborder_width\fP 1i
+Specifies the width of the created window's border in pixels.
+.IP \fIborder\fP 1i
+Specifies the border pixel value of the window.
+.IP \fIbackground\fP 1i
+Specifies the background pixel value of the window.
+
+.LP
+.eM
+The
+.PN XCreateSimpleWindow
+function creates an unmapped
+.PN InputOutput
+subwindow for a specified parent window, returns the
+window ID of the created window, and causes the X server to generate a
+.PN CreateNotify
+event.
+The created window is placed on top in the stacking order with respect to
+siblings.
+Any part of the window that extends outside its parent window is clipped.
+The border_width for an
+.PN InputOnly
+window must be zero, or a
+.PN BadMatch
+error results.
+.PN XCreateSimpleWindow
+inherits its depth, class, and visual from its parent.
+All other window attributes, except background and border,
+have their default values.
+.LP
+.PN XCreateSimpleWindow
+can generate
+.PN BadAlloc ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.NH 2
+Destroying Windows
+.XS
+\*(SN Destroying Windows
+.XE
+.LP
+Xlib provides functions that you can use to destroy a window or destroy all
+subwindows of a window.
+.LP
+.sp
+To destroy a window and all of its subwindows, use
+.PN XDestroyWindow .
+.IN "XDestroyWindow" "" "@DEF@"
+.sM
+.FD 0
+XDestroyWindow\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XDestroyWindow
+function destroys the specified window as well as all of its subwindows and causes
+the X server to generate a
+.PN DestroyNotify
+event for each window.
+The window should never be referenced again.
+If the window specified by the w argument is mapped,
+it is unmapped automatically.
+The ordering of the
+.PN DestroyNotify
+events is such that for any given window being destroyed,
+.PN DestroyNotify
+is generated on any inferiors of the window before being generated on
+the window itself.
+The ordering among siblings and across subhierarchies is not otherwise
+constrained.
+If the window you specified is a root window, no windows are destroyed.
+Destroying a mapped window will generate
+.PN Expose
+events on other windows that were obscured by the window being destroyed.
+.LP
+.PN XDestroyWindow
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To destroy all subwindows of a specified window, use
+.PN XDestroySubwindows .
+.IN "XDestroySubwindows" "" "@DEF@"
+.sM
+.FD 0
+XDestroySubwindows\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XDestroySubwindows
+function destroys all inferior windows of the specified window,
+in bottom-to-top stacking order.
+It causes the X server to generate a
+.PN DestroyNotify
+event for each window.
+If any mapped
+subwindows were actually destroyed,
+.PN XDestroySubwindows
+causes the X server to generate
+.PN Expose
+events on the specified window.
+This is much more efficient than deleting many windows
+one at a time because much of the work need be performed only once for all
+of the windows, rather than for each window.
+The subwindows should never be referenced again.
+.LP
+.PN XDestroySubwindows
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Mapping Windows
+.XS
+\*(SN Mapping Windows
+.XE
+.LP
+A window is considered mapped if an
+.PN XMapWindow
+call has been made on it.
+It may not be visible on the screen for one of the following reasons:
+.IP \(bu 5
+It is obscured by another opaque window.
+.IP \(bu 5
+One of its ancestors is not mapped.
+.IP \(bu 5
+It is entirely clipped by an ancestor.
+.LP
+.PN Expose
+events are generated for the window when part or all of
+it becomes visible on the screen.
+A client receives the
+.PN Expose
+events only if it has asked for them.
+Windows retain their position in the stacking order when they are unmapped.
+.LP
+A window manager may want to control the placement of subwindows.
+If
+.PN SubstructureRedirectMask
+has been selected by a window manager
+on a parent window (usually a root window),
+a map request initiated by other clients on a child window is not performed,
+and the window manager is sent a
+.PN MapRequest
+event.
+However, if the override-redirect flag on the child had been set to
+.PN True
+(usually only on pop-up menus),
+the map request is performed.
+.LP
+A tiling window manager might decide to reposition and resize other clients'
+windows and then decide to map the window to its final location.
+A window manager that wants to provide decoration might
+reparent the child into a frame first.
+For further information,
+see sections 3.2.8 and 10.10.
+Only a single client at a time can select for
+.PN SubstructureRedirectMask .
+.LP
+Similarly, a single client can select for
+.PN ResizeRedirectMask
+on a parent window.
+Then, any attempt to resize the window by another client is suppressed, and
+the client receives a
+.PN ResizeRequest
+event.
+.LP
+.sp
+To map a given window, use
+.PN XMapWindow .
+.IN "XMapWindow" "" "@DEF@"
+.sM
+.FD 0
+XMapWindow\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XMapWindow
+function
+maps the window and all of its
+subwindows that have had map requests.
+Mapping a window that has an unmapped ancestor does not display the
+window but marks it as eligible for display when the ancestor becomes
+mapped.
+Such a window is called unviewable.
+When all its ancestors are mapped,
+the window becomes viewable
+and will be visible on the screen if it is not obscured by another window.
+This function has no effect if the window is already mapped.
+.LP
+If the override-redirect of the window is
+.PN False
+and if some other client has selected
+.PN SubstructureRedirectMask
+on the parent window, then the X server generates a
+.PN MapRequest
+event, and the
+.PN XMapWindow
+function does not map the window.
+Otherwise, the window is mapped, and the X server generates a
+.PN MapNotify
+event.
+.LP
+If the window becomes viewable and no earlier contents for it are remembered,
+the X server tiles the window with its background.
+If the window's background is undefined,
+the existing screen contents are not
+altered, and the X server generates zero or more
+.PN Expose
+events.
+If backing-store was maintained while the window was unmapped, no
+.PN Expose
+events
+are generated.
+If backing-store will now be maintained,
+a full-window exposure is always generated.
+Otherwise, only visible regions may be reported.
+Similar tiling and exposure take place for any newly viewable inferiors.
+.LP
+.IN "XMapWindow"
+If the window is an
+.PN InputOutput
+window,
+.PN XMapWindow
+generates
+.PN Expose
+events on each
+.PN InputOutput
+window that it causes to be displayed.
+If the client maps and paints the window
+and if the client begins processing events,
+the window is painted twice.
+To avoid this,
+first ask for
+.PN Expose
+events and then map the window,
+so the client processes input events as usual.
+The event list will include
+.PN Expose
+for each
+window that has appeared on the screen.
+The client's normal response to
+an
+.PN Expose
+event should be to repaint the window.
+This method usually leads to simpler programs and to proper interaction
+with window managers.
+.LP
+.PN XMapWindow
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To map and raise a window, use
+.PN XMapRaised .
+.IN "XMapRaised" "" "@DEF@"
+.sM
+.FD 0
+XMapRaised\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XMapRaised
+function
+essentially is similar to
+.PN XMapWindow
+in that it maps the window and all of its
+subwindows that have had map requests.
+However, it also raises the specified window to the top of the stack.
+For additional information,
+see
+.PN XMapWindow .
+.LP
+.PN XMapRaised
+can generate multiple
+.PN BadWindow
+errors.
+.LP
+.sp
+To map all subwindows for a specified window, use
+.PN XMapSubwindows .
+.IN "XMapSubwindows" "" "@DEF@"
+.sM
+.FD 0
+XMapSubwindows\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XMapSubwindows
+.IN "XMapSubwindows"
+function maps all subwindows for a specified window in top-to-bottom stacking
+order.
+The X server generates
+.PN Expose
+events on each newly displayed window.
+This may be much more efficient than mapping many windows
+one at a time because the server needs to perform much of the work
+only once, for all of the windows, rather than for each window.
+.LP
+.PN XMapSubwindows
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Unmapping Windows
+.XS
+\*(SN Unmapping Windows
+.XE
+.LP
+Xlib provides functions that you can use to unmap a window or all subwindows.
+.LP
+.sp
+To unmap a window, use
+.PN XUnmapWindow .
+.IN "XUnmapWindow" "" "@DEF@"
+.sM
+.FD 0
+XUnmapWindow\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XUnmapWindow
+function unmaps the specified window and causes the X server to generate an
+.PN UnmapNotify
+.IN "UnmapNotify Event"
+.IN "XUnmapWindow"
+event.
+If the specified window is already unmapped,
+.PN XUnmapWindow
+has no effect.
+Normal exposure processing on formerly obscured windows is performed.
+Any child window will no longer be visible until another map call is
+made on the parent.
+In other words, the subwindows are still mapped but are not visible
+until the parent is mapped.
+Unmapping a window will generate
+.PN Expose
+events on windows that were formerly obscured by it.
+.LP
+.PN XUnmapWindow
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To unmap all subwindows for a specified window, use
+.PN XUnmapSubwindows .
+.IN "XUnmapSubwindows" "" "@DEF@"
+.sM
+.FD 0
+XUnmapSubwindows\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XUnmapSubwindows
+function unmaps all subwindows for the specified window in bottom-to-top
+stacking order.
+It causes the X server to generate an
+.PN UnmapNotify
+event on each subwindow and
+.PN Expose
+events on formerly obscured windows.
+.IN "UnmapNotify Event"
+Using this function is much more efficient than unmapping multiple windows
+one at a time because the server needs to perform much of the work
+only once, for all of the windows, rather than for each window.
+.LP
+.PN XUnmapSubwindows
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Configuring Windows
+.XS
+\*(SN Configuring Windows
+.XE
+.LP
+.LP
+Xlib provides functions that you can use to
+move a window, resize a window, move and resize a window, or
+change a window's border width.
+To change one of these parameters,
+set the appropriate member of the
+.PN XWindowChanges
+structure and OR in the corresponding value mask in subsequent calls to
+.PN XConfigureWindow .
+The symbols for the value mask bits and the
+.PN XWindowChanges
+structure are:
+.sM
+.LP
+/* Configure window value mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN CWX
+T} T{
+(1<<0)
+T}
+T{
+#define
+T} T{
+.PN CWY
+T} T{
+(1<<1)
+T}
+T{
+#define
+T} T{
+.PN CWWidth
+T} T{
+(1<<2)
+T}
+T{
+#define
+T} T{
+.PN CWHeight
+T} T{
+(1<<3)
+T}
+T{
+#define
+T} T{
+.PN CWBorderWidth
+T} T{
+(1<<4)
+T}
+T{
+#define
+T} T{
+.PN CWSibling
+T} T{
+(1<<5)
+T}
+T{
+#define
+T} T{
+.PN CWStackMode
+T} T{
+(1<<6)
+T}
+.TE
+.IN "XWindowChanges" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+/* Values */
+
+typedef struct {
+ int x, y;
+ int width, height;
+ int border_width;
+ Window sibling;
+ int stack_mode;
+} XWindowChanges;
+.De
+.LP
+.eM
+The x and y members are used to set the window's x and y coordinates,
+which are relative to the parent's origin
+and indicate the position of the upper-left outer corner of the window.
+The width and height members are used to set the inside size of the window,
+not including the border, and must be nonzero, or a
+.PN BadValue
+error results.
+Attempts to configure a root window have no effect.
+.LP
+The border_width member is used to set the width of the border in pixels.
+Note that setting just the border width leaves the outer-left corner of the window
+in a fixed position but moves the absolute position of the window's origin.
+If you attempt to set the border-width attribute of an
+.PN InputOnly
+window nonzero, a
+.PN BadMatch
+error results.
+.LP
+The sibling member is used to set the sibling window for stacking operations.
+The stack_mode member is used to set how the window is to be restacked
+and can be set to
+.PN Above ,
+.PN Below ,
+.PN TopIf ,
+.PN BottomIf ,
+or
+.PN Opposite .
+.LP
+If the override-redirect flag of the window is
+.PN False
+and if some other client has selected
+.PN SubstructureRedirectMask
+on the parent, the X server generates a
+.PN ConfigureRequest
+event, and no further processing is performed.
+Otherwise,
+if some other client has selected
+.PN ResizeRedirectMask
+on the window and the inside
+width or height of the window is being changed,
+a
+.PN ResizeRequest
+event is generated, and the current inside width and height are
+used instead.
+Note that the override-redirect flag of the window has no effect
+on
+.PN ResizeRedirectMask
+and that
+.PN SubstructureRedirectMask
+on the parent has precedence over
+.PN ResizeRedirectMask
+on the window.
+.LP
+When the geometry of the window is changed as specified,
+the window is restacked among siblings, and a
+.PN ConfigureNotify
+event is generated if the state of the window actually changes.
+.PN GravityNotify
+events are generated after
+.PN ConfigureNotify
+events.
+If the inside width or height of the window has actually changed,
+children of the window are affected as specified.
+.LP
+If a window's size actually changes,
+the window's subwindows move according to their window gravity.
+Depending on the window's bit gravity,
+the contents of the window also may be moved (see section 3.2.3).
+.LP
+If regions of the window were obscured but now are not,
+exposure processing is performed on these formerly obscured windows,
+including the window itself and its inferiors.
+As a result of increasing the width or height,
+exposure processing is also performed on any new regions of the window
+and any regions where window contents are lost.
+.LP
+The restack check (specifically, the computation for
+.PN BottomIf ,
+.PN TopIf ,
+and
+.PN Opposite )
+is performed with respect to the window's final size and position (as
+controlled by the other arguments of the request), not its initial position.
+If a sibling is specified without a stack_mode,
+a
+.PN BadMatch
+error results.
+.LP
+If a sibling and a stack_mode are specified,
+the window is restacked as follows:
+.TS
+lw(1i) lw(5i).
+T{
+.PN Above
+T} T{
+The window is placed just above the sibling.
+T}
+.sp 6p
+T{
+.PN Below
+T} T{
+The window is placed just below the sibling.
+T}
+.sp 6p
+T{
+.PN TopIf
+T} T{
+If the sibling occludes the window, the window is placed
+at the top of the stack.
+T}
+.sp 6p
+T{
+.PN BottomIf
+T} T{
+If the window occludes the sibling, the window is
+placed at the bottom of the stack.
+T}
+.sp 6p
+T{
+.PN Opposite
+T} T{
+If the sibling occludes the window, the window
+is placed at the top of the stack.
+If the window occludes the sibling,
+the window is placed at the bottom of the stack.
+T}
+.TE
+.LP
+If a stack_mode is specified but no sibling is specified,
+the window is restacked as follows:
+.TS
+lw(1i) lw(5i).
+T{
+.PN Above
+T} T{
+The window is placed at the top of the stack.
+T}
+.sp 6p
+T{
+.PN Below
+T} T{
+The window is placed at the bottom of the stack.
+T}
+.sp 6p
+T{
+.PN TopIf
+T} T{
+If any sibling occludes the window, the window is placed at
+the top of the stack.
+T}
+.sp 6p
+T{
+.PN BottomIf
+T} T{
+If the window occludes any sibling, the window is placed at
+the bottom of the stack.
+T}
+.sp 6p
+T{
+.PN Opposite
+T} T{
+If any sibling occludes the window, the window
+is placed at the top of the stack.
+If the window occludes any sibling,
+the window is placed at the bottom of the stack.
+T}
+.TE
+.LP
+Attempts to configure a root window have no effect.
+.LP
+.sp
+To configure a window's size, location, stacking, or border, use
+.PN XConfigureWindow .
+.IN "XConfigureWindow" "" "@DEF@"
+.sM
+.FD 0
+XConfigureWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIvalue_mask\fP\^, \fIvalues\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ unsigned int \fIvalue_mask\fP\^;
+.br
+ XWindowChanges *\fIvalues\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi to be reconfigured
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIvalue_mask\fP 1i
+Specifies which values are to be set using information in
+the values structure.
+This mask is the bitwise inclusive OR of the valid configure window values bits.
+.IP \fIvalues\fP 1i
+Specifies the
+.PN XWindowChanges
+structure.
+.LP
+.eM
+The
+.PN XConfigureWindow
+function uses the values specified in the
+.PN XWindowChanges
+structure to reconfigure a window's size, position, border, and stacking order.
+Values not specified are taken from the existing geometry of the window.
+.LP
+If a sibling is specified without a stack_mode or if the window
+is not actually a sibling,
+a
+.PN BadMatch
+error results.
+Note that the computations for
+.PN BottomIf ,
+.PN TopIf ,
+and
+.PN Opposite
+are performed with respect to the window's final geometry (as controlled by the
+other arguments passed to
+.PN XConfigureWindow ),
+not its initial geometry.
+Any backing store contents of the window, its
+inferiors, and other newly visible windows are either discarded or
+changed to reflect the current screen contents
+(depending on the implementation).
+.LP
+.PN XConfigureWindow
+can generate
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To move a window without changing its size, use
+.PN XMoveWindow .
+.IN "XMoveWindow" "" "@DEF@"
+.sM
+.FD 0
+XMoveWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIx\fP\^, \fIy\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi to be moved
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.ds Xy , which define the new location of the top-left pixel \
+of the window's border or the window itself if it has no border
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.LP
+.eM
+The
+.PN XMoveWindow
+function moves the specified window to the specified x and y coordinates,
+but it does not change the window's size, raise the window, or
+change the mapping state of the window.
+Moving a mapped window may or may not lose the window's contents
+depending on if the window is obscured by nonchildren
+and if no backing store exists.
+If the contents of the window are lost,
+the X server generates
+.PN Expose
+events.
+Moving a mapped window generates
+.PN Expose
+events on any formerly obscured windows.
+.LP
+If the override-redirect flag of the window is
+.PN False
+and some
+other client has selected
+.PN SubstructureRedirectMask
+on the parent, the X server generates a
+.PN ConfigureRequest
+event, and no further processing is
+performed.
+Otherwise, the window is moved.
+.LP
+.PN XMoveWindow
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To change a window's size without changing the upper-left coordinate, use
+.PN XResizeWindow .
+.IN "XResizeWindow" "" "@DEF@"
+.sM
+.FD 0
+XResizeWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIwidth\fP\^, \fIheight\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.ds Wh , which are the interior dimensions of the window \
+after the call completes
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.LP
+.eM
+The
+.PN XResizeWindow
+function changes the inside dimensions of the specified window, not including
+its borders.
+This function does not change the window's upper-left coordinate or
+the origin and does not restack the window.
+Changing the size of a mapped window may lose its contents and generate
+.PN Expose
+events.
+If a mapped window is made smaller,
+changing its size generates
+.PN Expose
+events on windows that the mapped window formerly obscured.
+.LP
+If the override-redirect flag of the window is
+.PN False
+and some
+other client has selected
+.PN SubstructureRedirectMask
+on the parent, the X server generates a
+.PN ConfigureRequest
+event, and no further processing is performed.
+If either width or height is zero,
+a
+.PN BadValue
+error results.
+.LP
+.PN XResizeWindow
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To change the size and location of a window, use
+.PN XMoveResizeWindow .
+.IN "XMoveResizeWindow" "" "@DEF@"
+.sM
+.FD 0
+XMoveResizeWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi to be reconfigured
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.ds Xy , which define the new position of the window relative to its parent
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which define the interior size of the window
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.LP
+.eM
+The
+.PN XMoveResizeWindow
+function changes the size and location of the specified window
+without raising it.
+Moving and resizing a mapped window may generate an
+.PN Expose
+event on the window.
+Depending on the new size and location parameters,
+moving and resizing a window may generate
+.PN Expose
+events on windows that the window formerly obscured.
+.LP
+If the override-redirect flag of the window is
+.PN False
+and some
+other client has selected
+.PN SubstructureRedirectMask
+on the parent, the X server generates a
+.PN ConfigureRequest
+event, and no further processing is performed.
+Otherwise, the window size and location are changed.
+.LP
+.PN XMoveResizeWindow
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To change the border width of a given window, use
+.PN XSetWindowBorderWidth .
+.IN "XSetWindowBorderWidth" "" "@DEF@"
+.sM
+.FD 0
+XSetWindowBorderWidth\^(\^\fIdisplay\fP, \fIw\fP, \fIwidth\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ unsigned int \fIwidth\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwidth\fP 1i
+Specifies the width of the window border.
+.LP
+.eM
+The
+.PN XSetWindowBorderWidth
+function sets the specified window's border width to the specified width.
+.LP
+.PN XSetWindowBorderWidth
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Changing Window Stacking Order
+.XS
+\*(SN Changing Window Stacking Order
+.XE
+.LP
+.LP
+Xlib provides functions that you can use to raise, lower, circulate,
+or restack windows.
+.LP
+.sp
+To raise a window so that no sibling window obscures it, use
+.PN XRaiseWindow .
+.IN "XRaiseWindow" "" "@DEF@"
+.sM
+.FD 0
+XRaiseWindow\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XRaiseWindow
+function
+raises the specified window to the top of the stack so that no sibling window
+obscures it.
+If the windows are regarded as overlapping sheets of paper stacked
+on a desk,
+then raising a window is analogous to moving the sheet to the top of
+the stack but leaving its x and y location on the desk constant.
+Raising a mapped window may generate
+.PN Expose
+events for the window and any mapped subwindows that were formerly obscured.
+.LP
+If the override-redirect attribute of the window is
+.PN False
+and some
+other client has selected
+.PN SubstructureRedirectMask
+on the parent, the X server generates a
+.PN ConfigureRequest
+event, and no processing is performed.
+Otherwise, the window is raised.
+.LP
+.PN XRaiseWindow
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To lower a window so that it does not obscure any sibling windows, use
+.PN XLowerWindow .
+.IN "XLowerWindow" "" "@DEF@"
+.sM
+.FD 0
+XLowerWindow\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XLowerWindow
+function lowers the specified window to the bottom of the stack
+so that it does not obscure any sibling
+windows.
+If the windows are regarded as overlapping sheets of paper
+stacked on a desk, then lowering a window is analogous to moving the
+sheet to the bottom of the stack but leaving its x and y location on
+the desk constant.
+Lowering a mapped window will generate
+.PN Expose
+events on any windows it formerly obscured.
+.LP
+If the override-redirect attribute of the window is
+.PN False
+and some
+other client has selected
+.PN SubstructureRedirectMask
+on the parent, the X server generates a
+.PN ConfigureRequest
+event, and no processing is performed.
+Otherwise, the window is lowered to the bottom of the
+stack.
+.LP
+.PN XLowerWindow
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To circulate a subwindow up or down, use
+.PN XCirculateSubwindows .
+.IN "XCirculateSubwindows" "" "@DEF@"
+.sM
+.FD 0
+XCirculateSubwindows\^(\^\fIdisplay\fP, \fIw\fP\^, \fIdirection\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIdirection\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIdirection\fP 1i
+Specifies the direction (up or down) that you want to circulate
+the window.
+You can pass
+.PN RaiseLowest
+or
+.PN LowerHighest .
+.LP
+.eM
+The
+.PN XCirculateSubwindows
+function circulates children of the specified window in the specified
+direction.
+If you specify
+.PN RaiseLowest ,
+.PN XCirculateSubwindows
+raises the lowest mapped child (if any) that is occluded
+by another child to the top of the stack.
+If you specify
+.PN LowerHighest ,
+.PN XCirculateSubwindows
+lowers the highest mapped child (if any) that occludes another child
+to the bottom of the stack.
+Exposure processing is then performed on formerly obscured windows.
+If some other client has selected
+.PN SubstructureRedirectMask
+on the window, the X server generates a
+.PN CirculateRequest
+event, and no further processing is performed.
+If a child is actually restacked,
+the X server generates a
+.PN CirculateNotify
+event.
+.LP
+.PN XCirculateSubwindows
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To raise the lowest mapped child of a window that is partially or completely
+occluded by another child, use
+.PN XCirculateSubwindowsUp .
+.IN "XCirculateSubwindowsUp" "" "@DEF@"
+.sM
+.FD 0
+XCirculateSubwindowsUp\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XCirculateSubwindowsUp
+function raises the lowest mapped child of the specified window that
+is partially
+or completely
+occluded by another child.
+Completely unobscured children are not affected.
+This is a convenience function equivalent to
+.PN XCirculateSubwindows
+with
+.PN RaiseLowest
+specified.
+.LP
+.PN XCirculateSubwindowsUp
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To lower the highest mapped child of a window that partially or
+completely occludes another child, use
+.PN XCirculateSubwindowsDown .
+.IN "XCirculateSubwindowsDown" "" "@DEF@"
+.sM
+.FD 0
+XCirculateSubwindowsDown\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XCirculateSubwindowsDown
+function lowers the highest mapped child of the specified window that partially
+or completely occludes another child.
+Completely unobscured children are not affected.
+This is a convenience function equivalent to
+.PN XCirculateSubwindows
+with
+.PN LowerHighest
+specified.
+.LP
+.PN XCirculateSubwindowsDown
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To restack a set of windows from top to bottom, use
+.PN XRestackWindows .
+.IN "XRestackWindows" "" "@DEF@"
+.sM
+.FD 0
+XRestackWindows\^(\^\fIdisplay\fP, \fIwindows\fP\^, \^\fInwindows\fP\^);
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindows\fP\^[];
+.br
+ int \fInwindows\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwindows\fP 1i
+Specifies an array containing the windows to be restacked.
+.IP \fInwindows\fP 1i
+Specifies the number of windows to be restacked.
+.LP
+.eM
+The
+.PN XRestackWindows
+function restacks the windows in the order specified,
+from top to bottom.
+The stacking order of the first window in the windows array is unaffected,
+but the other windows in the array are stacked underneath the first window,
+in the order of the array.
+The stacking order of the other windows is not affected.
+For each window in the window array that is not a child of the specified window,
+a
+.PN BadMatch
+error results.
+.LP
+If the override-redirect attribute of a window is
+.PN False
+and some
+other client has selected
+.PN SubstructureRedirectMask
+on the parent, the X server generates
+.PN ConfigureRequest
+events for each window whose override-redirect flag is not set,
+and no further processing is performed.
+Otherwise, the windows will be restacked in top-to-bottom order.
+.LP
+.PN XRestackWindows
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Changing Window Attributes
+.XS
+\*(SN Changing Window Attributes
+.XE
+.LP
+.LP
+Xlib provides functions that you can use to set window attributes.
+.PN XChangeWindowAttributes
+is the more general function that allows you to set one or more window
+attributes provided by the
+.PN XSetWindowAttributes
+structure.
+The other functions described in this section allow you to set one specific
+window attribute, such as a window's background.
+.LP
+.sp
+To change one or more attributes for a given window, use
+.PN XChangeWindowAttributes .
+.IN "XChangeWindowAttributes" "" "@DEF@"
+.sM
+.FD 0
+XChangeWindowAttributes\^(\^\fIdisplay\fP, \fIw\fP\^, \fIvaluemask\fP\^, \fIattributes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ unsigned long \fIvaluemask\fP\^;
+.br
+ XSetWindowAttributes *\fIattributes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIvaluemask\fP 1i
+Specifies which window attributes are defined in the attributes
+argument.
+This mask is the bitwise inclusive OR of the valid attribute mask bits.
+If valuemask is zero,
+the attributes are ignored and are not referenced.
+The values and restrictions are
+the same as for
+.PN XCreateWindow .
+.IP
+.IP \fIattributes\fP 1i
+Specifies the structure from which the values (as specified by the value mask)
+are to be taken.
+The value mask should have the appropriate bits
+set to indicate which attributes have been set in the structure
+(see section 3.2).
+.LP
+.eM
+Depending on the valuemask,
+the
+.PN XChangeWindowAttributes
+function uses the window attributes in the
+.PN XSetWindowAttributes
+structure to change the specified window attributes.
+Changing the background does not cause the window contents to be
+changed.
+To repaint the window and its background, use
+.PN XClearWindow .
+Setting the border or changing the background such that the
+border tile origin changes causes the border to be repainted.
+Changing the background of a root window to
+.PN None
+or
+.PN ParentRelative
+restores the default background pixmap.
+Changing the border of a root window to
+.PN CopyFromParent
+restores the default border pixmap.
+Changing the win-gravity does not affect the current position of the
+window.
+Changing the backing-store of an obscured window to
+.PN WhenMapped
+or
+.PN Always ,
+or changing the backing-planes, backing-pixel, or
+save-under of a mapped window may have no immediate effect.
+Changing the colormap of a window (that is, defining a new map, not
+changing the contents of the existing map) generates a
+.PN ColormapNotify
+event.
+Changing the colormap of a visible window may have no
+immediate effect on the screen because the map may not be installed
+(see
+.PN XInstallColormap ).
+Changing the cursor of a root window to
+.PN None
+restores the default
+cursor.
+Whenever possible, you are encouraged to share colormaps.
+.LP
+Multiple clients can select input on the same window.
+Their event masks are maintained separately.
+When an event is generated,
+it is reported to all interested clients.
+However, only one client at a time can select for
+.PN SubstructureRedirectMask ,
+.PN ResizeRedirectMask ,
+and
+.PN ButtonPressMask .
+If a client attempts to select any of these event masks
+and some other client has already selected one,
+a
+.PN BadAccess
+error results.
+There is only one do-not-propagate-mask for a window,
+not one per client.
+.LP
+.PN XChangeWindowAttributes
+can generate
+.PN BadAccess ,
+.PN BadColor ,
+.PN BadCursor ,
+.PN BadMatch ,
+.PN BadPixmap ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To set the background of a window to a given pixel, use
+.PN XSetWindowBackground .
+.IN "XSetWindowBackground" "" "@DEF@"
+.sM
+.FD 0
+XSetWindowBackground\^(\^\fIdisplay\fP, \fIw\fP\^, \fIbackground_pixel\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ unsigned long \fIbackground_pixel\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIbackground_pixel\fP 1i
+Specifies the pixel that is to be used for the background.
+.LP
+.eM
+The
+.PN XSetWindowBackground
+function sets the background of the window to the specified pixel value.
+Changing the background does not cause the window contents to be changed.
+.PN XSetWindowBackground
+uses a pixmap of undefined size filled with the pixel value you passed.
+If you try to change the background of an
+.PN InputOnly
+window, a
+.PN BadMatch
+error results.
+.LP
+.PN XSetWindowBackground
+can generate
+.PN BadMatch
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+.LP
+To set the background of a window to a given pixmap, use
+.PN XSetWindowBackgroundPixmap .
+.IN "Window" "background"
+.IN "XSetWindowBackgroundPixmap" "" "@DEF@"
+.sM
+.FD 0
+XSetWindowBackgroundPixmap\^(\^\fIdisplay\fP, \fIw\fP\^, \fIbackground_pixmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Pixmap \fIbackground_pixmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIbackground_pixmap\fP 1i
+Specifies the background pixmap,
+.PN ParentRelative ,
+or
+.PN None .
+.LP
+.eM
+.IN "Resource IDs" "freeing"
+.IN "Freeing" "resources"
+The
+.PN XSetWindowBackgroundPixmap
+function sets the background pixmap of the window to the specified pixmap.
+The background pixmap can immediately be freed if no further explicit
+references to it are to be made.
+If
+.PN ParentRelative
+is specified,
+the background pixmap of the window's parent is used,
+or on the root window, the default background is restored.
+If you try to change the background of an
+.PN InputOnly
+window, a
+.PN BadMatch
+error results.
+If the background is set to
+.PN None ,
+the window has no defined background.
+.LP
+.PN XSetWindowBackgroundPixmap
+can generate
+.PN BadMatch ,
+.PN BadPixmap ,
+and
+.PN BadWindow
+errors.
+.NT Note
+.PN XSetWindowBackground
+and
+.PN XSetWindowBackgroundPixmap
+do not change the current contents of the window.
+.NE
+.LP
+.sp
+To change and repaint a window's border to a given pixel, use
+.PN XSetWindowBorder .
+.IN "XSetWindowBorder" "" "@DEF@"
+.sM
+.FD 0
+XSetWindowBorder\^(\^\fIdisplay\fP, \fIw\fP\^, \fIborder_pixel\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ unsigned long \fIborder_pixel\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIborder_pixel\fP 1i
+Specifies the entry in the colormap.
+.LP
+.eM
+The
+.PN XSetWindowBorder
+function sets the border of the window to the pixel value you specify.
+If you attempt to perform this on an
+.PN InputOnly
+window, a
+.PN BadMatch
+error results.
+.LP
+.PN XSetWindowBorder
+can generate
+.PN BadMatch
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To change and repaint the border tile of a given window, use
+.PN XSetWindowBorderPixmap .
+.IN "XSetWindowBorderPixmap" "" "@DEF@"
+.sM
+.FD 0
+XSetWindowBorderPixmap\^(\^\fIdisplay\fP, \fIw\fP\^, \fIborder_pixmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Pixmap \fIborder_pixmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIborder_pixmap\fP 1i
+Specifies the border pixmap or
+.PN CopyFromParent .
+.LP
+.eM
+The
+.PN XSetWindowBorderPixmap
+function sets the border pixmap of the window to the pixmap you specify.
+The border pixmap can be freed immediately if no further explicit
+references to it are to be made.
+If you specify
+.PN CopyFromParent ,
+a copy of the parent window's border pixmap is used.
+If you attempt to perform this on an
+.PN InputOnly
+window, a
+.PN BadMatch
+error results.
+.IN "Resource IDs" "freeing"
+.IN "Freeing" "resources"
+.LP
+.PN XSetWindowBorderPixmap
+can generate
+.PN BadMatch ,
+.PN BadPixmap ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To set the colormap of a given window, use
+.PN XSetWindowColormap .
+.IN "XSetWindowColormap" "" "@DEF@"
+.sM
+.FD 0
+XSetWindowColormap\^(\^\fIdisplay\fP, \fIw\fP\^, \fIcolormap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.LP
+.eM
+The
+.PN XSetWindowColormap
+function sets the specified colormap of the specified window.
+The colormap must have the same visual type as the window,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XSetWindowColormap
+can generate
+.PN BadColor ,
+.PN BadMatch ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To define which cursor will be used in a window, use
+.PN XDefineCursor .
+.IN "Window" "defining the cursor"
+.IN "XDefineCursor" "" "@DEF@"
+.sM
+.FD 0
+XDefineCursor\^(\^\fIdisplay\fP, \fIw\fP\^, \fIcursor\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Cursor \fIcursor\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIcursor\fP 1i
+Specifies the cursor that is to be displayed or
+.PN None .
+.LP
+.eM
+If a cursor is set, it will be used when the pointer is in the window.
+If the cursor is
+.PN None ,
+it is equivalent to
+.PN XUndefineCursor .
+.LP
+.PN XDefineCursor
+can generate
+.PN BadCursor
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To undefine the cursor in a given window, use
+.PN XUndefineCursor .
+.IN "Window" "undefining the cursor"
+.IN "XUndefineCursor" "" "@DEF@"
+.sM
+.FD 0
+XUndefineCursor\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XUndefineCursor
+function undoes the effect of a previous
+.PN XDefineCursor
+for this window.
+When the pointer is in the window,
+the parent's cursor will now be used.
+On the root window,
+the default cursor is restored.
+.LP
+.PN XUndefineCursor
+can generate a
+.PN BadWindow
+error.
+.bp
diff --git a/specs/X11/CH04 b/specs/X11/CH04
new file mode 100644
index 0000000..b964198
--- /dev/null
+++ b/specs/X11/CH04
@@ -0,0 +1,1595 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 4\fP\s-1
+
+\s+1\fBWindow Information Functions\fP\s-1
+.sp 2
+.nr H1 4
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 4: Window Information Functions
+.XE
+After you connect the display to the X server and create a window,
+you can use the Xlib window information functions to:
+.IP \(bu 5
+Obtain information about a window
+.IP \(bu 5
+Translate screen coordinates
+.IP \(bu 5
+Manipulate property lists
+.IP \(bu 5
+Obtain and change window properties
+.IP \(bu 5
+Manipulate selections
+.NH 2
+Obtaining Window Information
+.XS
+\*(SN Obtaining Window Information
+.XE
+.LP
+Xlib provides functions that you can use to obtain information about
+the window tree, the window's current attributes,
+the window's current geometry, or the current pointer coordinates.
+Because they are most frequently used by window managers,
+these functions all return a status to indicate whether the window still
+exists.
+.LP
+.sp
+To obtain the parent, a list of children, and number of children for
+a given window, use
+.PN XQueryTree .
+.IN "Child Window"
+.IN "Parent Window"
+.IN "XQueryTree" "" "@DEF@"
+.sM
+.FD 0
+Status XQueryTree\^(\^\fIdisplay\fP, \fIw\fP\^, \fIroot_return\fP\^, \fIparent_return\fP\^, \fIchildren_return\fP\^, \fInchildren_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Window *\fIroot_return\fP\^;
+.br
+ Window *\fIparent_return\fP\^;
+.br
+ Window **\fIchildren_return\fP\^;
+.br
+ unsigned int *\fInchildren_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose list of children, root, parent, and number of children \
+you want to obtain
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIroot_return\fP 1i
+Returns the root window.
+.IP \fIparent_return\fP 1i
+Returns the parent window.
+.IP \fIchildren_return\fP 1i
+Returns the list of children.
+.IP \fInchildren_return\fP 1i
+Returns the number of children.
+.LP
+.eM
+The
+.PN XQueryTree
+function returns the root ID, the parent window ID,
+a pointer to the list of children windows
+(NULL when there are no children),
+and the number of children in the list for the specified window.
+The children are listed in current stacking order, from bottom-most
+(first) to top-most (last).
+.PN XQueryTree
+returns zero if it fails and nonzero if it succeeds.
+To free a non-NULL children list when it is no longer needed, use
+.PN XFree .
+.LP
+.PN XQueryTree
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To obtain the current attributes of a given window, use
+.PN XGetWindowAttributes .
+.IN "XGetWindowAttributes" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWindowAttributes\^(\^\fIdisplay\fP, \fIw\fP\^, \fIwindow_attributes_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XWindowAttributes *\fIwindow_attributes_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose current attributes you want to obtain
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIwindow_attributes_return\fP 1i
+Returns the specified window's attributes in the
+.PN XWindowAttributes
+structure.
+.LP
+.eM
+The
+.PN XGetWindowAttributes
+function returns the current attributes for the specified window to an
+.PN XWindowAttributes
+structure.
+.LP
+.IN "XWindowAttributes" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int x, y; /* location of window */
+ int width, height; /* width and height of window */
+ int border_width; /* border width of window */
+ int depth; /* depth of window */
+ Visual *visual; /* the associated visual structure */
+ Window root; /* root of screen containing window */
+ int class; /* InputOutput, InputOnly*/
+ int bit_gravity; /* one of the bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes; /* planes to be preserved if possible */
+ unsigned long backing_pixel; /* value to be used when restoring planes */
+ Bool save_under; /* boolean, should bits under be saved? */
+ Colormap colormap; /* color map to be associated with window */
+ Bool map_installed; /* boolean, is color map currently installed*/
+ int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
+ long all_event_masks; /* set of events all people have interest in*/
+ long your_event_mask; /* my event mask */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ Bool override_redirect; /* boolean value for override-redirect */
+ Screen *screen; /* back pointer to correct screen */
+} XWindowAttributes;
+.De
+.LP
+.eM
+The x and y members are set to the upper-left outer
+corner relative to the parent window's origin.
+The width and height members are set to the inside size of the window,
+not including the border.
+The border_width member is set to the window's border width in pixels.
+The depth member is set to the depth of the window
+(that is, bits per pixel for the object).
+The visual member is a pointer to the screen's associated
+.PN Visual
+structure.
+The root member is set to the root window of the screen containing the window.
+The class member is set to the window's class and can be either
+.PN InputOutput
+or
+.PN InputOnly .
+.LP
+The bit_gravity member is set to the window's bit gravity
+and can be one of the following:
+.LP
+.TS
+lw(1.5i) lw(1.5i).
+T{
+.PN ForgetGravity
+T} T{
+.PN EastGravity
+T}
+T{
+.PN NorthWestGravity
+T} T{
+.PN SouthWestGravity
+T}
+T{
+.PN NorthGravity
+T} T{
+.PN SouthGravity
+T}
+T{
+.PN NorthEastGravity
+T} T{
+.PN SouthEastGravity
+T}
+T{
+.PN WestGravity
+T} T{
+.PN StaticGravity
+T}
+.PN CenterGravity
+.TE
+.LP
+The win_gravity member is set to the window's window gravity
+and can be one of the following:
+.LP
+.TS
+lw(1.5i) lw(1.5i).
+T{
+.PN UnmapGravity
+T} T{
+.PN EastGravity
+T}
+T{
+.PN NorthWestGravity
+T} T{
+.PN SouthWestGravity
+T}
+T{
+.PN NorthGravity
+T} T{
+.PN SouthGravity
+T}
+T{
+.PN NorthEastGravity
+T} T{
+.PN SouthEastGravity
+T}
+T{
+.PN WestGravity
+T} T{
+.PN StaticGravity
+T}
+.PN CenterGravity
+.TE
+.LP
+For additional information on gravity,
+see section 3.2.3.
+.LP
+The backing_store member is set to indicate how the X server should maintain
+the contents of a window
+and can be
+.PN WhenMapped ,
+.PN Always ,
+or
+.PN NotUseful .
+The backing_planes member is set to indicate (with bits set to 1) which bit
+planes of the window hold dynamic data that must be preserved in backing_stores
+and during save_unders.
+The backing_pixel member is set to indicate what values to use
+for planes not set in backing_planes.
+.LP
+The save_under member is set to
+.PN True
+or
+.PN False .
+The colormap member is set to the colormap for the specified window and can be
+a colormap ID or
+.PN None .
+The map_installed member is set to indicate whether the colormap is
+currently installed and can be
+.PN True
+or
+.PN False .
+The map_state member is set to indicate the state of the window and can be
+.PN IsUnmapped ,
+.PN IsUnviewable ,
+or
+.PN IsViewable .
+.PN IsUnviewable
+is used if the window is mapped but some ancestor is unmapped.
+.LP
+The all_event_masks member is set to the bitwise inclusive OR of all event
+masks selected on the window by all clients.
+The your_event_mask member is set to the bitwise inclusive OR of all event
+masks selected by the querying client.
+The do_not_propagate_mask member is set to the bitwise inclusive OR of the
+set of events that should not propagate.
+.LP
+The override_redirect member is set to indicate whether this window overrides
+structure control facilities and can be
+.PN True
+or
+.PN False .
+Window manager clients should ignore the window if this member is
+.PN True .
+.LP
+The screen member is set to a screen pointer that gives you a back pointer
+to the correct screen.
+This makes it easier to obtain the screen information without
+having to loop over the root window fields to see which field matches.
+.LP
+.PN XGetWindowAttributes
+can generate
+.PN BadDrawable
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To obtain the current geometry of a given drawable, use
+.PN XGetGeometry .
+.IN "XGetGeometry" "" "@DEF@"
+.sM
+.FD 0
+Status XGetGeometry\^(\^\fIdisplay\fP, \fId\fP\^, \^\fIroot_return\fP\^, \fIx_return\fP\^, \fIy_return\fP\^, \fIwidth_return\fP\^,
+.br
+ \fIheight_return\fP\^, \fIborder_width_return\fP\^, \fIdepth_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ Window *\fIroot_return\fP\^;
+.br
+ int *\fIx_return\fP\^, *\fIy_return\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP\^, *\fIheight_return\fP\^;
+.br
+ unsigned int *\fIborder_width_return\fP\^;
+.br
+ unsigned int *\fIdepth_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Dr , which can be a window or a pixmap
+.IP \fId\fP 1i
+Specifies the drawable\*(Dr.
+.IP \fIroot_return\fP 1i
+Returns the root window.
+.IP \fIx_return\fP 1i
+.br
+.ns
+.IP \fIy_return\fP 1i
+Return the x and y coordinates that define the location of the drawable.
+For a window,
+these coordinates specify the upper-left outer corner relative to
+its parent's origin.
+For pixmaps, these coordinates are always zero.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the drawable's dimensions (width and height).
+For a window,
+these dimensions specify the inside size, not including the border.
+.IP \fIborder_width_return\fP 1i
+Returns the border width in pixels.
+If the drawable is a pixmap, it returns zero.
+.IP \fIdepth_return\fP 1i
+Returns the depth of the drawable (bits per pixel for the object).
+.LP
+.eM
+The
+.PN XGetGeometry
+function returns the root window and the current geometry of the drawable.
+The geometry of the drawable includes the x and y coordinates, width and height,
+border width, and depth.
+These are described in the argument list.
+It is legal to pass to this function a window whose class is
+.PN InputOnly .
+.LP
+.PN XGetGeometry
+can generate a
+.PN BadDrawable
+error.
+.NH 2
+Translating Screen Coordinates
+.XS
+\*(SN Translating Screen Coordinates
+.XE
+.LP
+Applications sometimes
+need to perform a coordinate transformation from the coordinate
+space of one window to another window or need to determine which
+window the pointing device is in.
+.PN XTranslateCoordinates
+and
+.PN XQueryPointer
+fulfill these needs (and avoid any race conditions) by
+asking the X server to perform these operations.
+.LP
+.sp
+To translate a coordinate in one window to the coordinate
+space of another window, use
+.PN XTranslateCoordinates .
+.IN "XTranslateCoordinates" "" "@DEF@"
+.sM
+.FD 0
+Bool XTranslateCoordinates\^(\^\fIdisplay\fP, \fIsrc_w\fP\^, \fIdest_w\fP\^, \fIsrc_x\fP\^, \fIsrc_y\fP\^, \fIdest_x_return\fP\^,
+.br
+ \fIdest_y_return\fP\^, \fIchild_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIsrc_w\fP\^, \fIdest_w\fP\^;
+.br
+ int \fIsrc_x\fP\^, \fIsrc_y\fP\^;
+.br
+ int *\fIdest_x_return\fP\^, *\fIdest_y_return\fP\^;
+.br
+ Window *\fIchild_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsrc_w\fP 1i
+Specifies the source window.
+.IP \fIdest_w\fP 1i
+Specifies the destination window.
+.IP \fIsrc_x\fP 1i
+.br
+.ns
+.IP \fIsrc_y\fP 1i
+Specify the x and y coordinates within the source window.
+.IP \fIdest_x_return\fP 1i
+.br
+.ns
+.IP \fIdest_y_return\fP 1i
+Return the x and y coordinates within the destination window.
+.IP \fIchild_return\fP 1i
+Returns the child if the coordinates are contained in a mapped child of the
+destination window.
+.LP
+.eM
+If
+.PN XTranslateCoordinates
+returns
+.PN True ,
+it takes the src_x and src_y coordinates relative
+to the source window's origin and returns these coordinates to
+dest_x_return and dest_y_return
+relative to the destination window's origin.
+If
+.PN XTranslateCoordinates
+returns
+.PN False ,
+src_w and dest_w are on different screens,
+and dest_x_return and dest_y_return are zero.
+If the coordinates are contained in a mapped child of dest_w,
+that child is returned to child_return.
+Otherwise, child_return is set to
+.PN None .
+.LP
+.PN XTranslateCoordinates
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To obtain the screen coordinates of the pointer
+or to determine the pointer coordinates relative to a specified window, use
+.PN XQueryPointer .
+.IN "XQueryPointer" "" "@DEF@"
+.sM
+.FD 0
+Bool XQueryPointer\^(\^\fIdisplay\fP, \fIw\fP\^, \fIroot_return\fP\^, \fIchild_return\fP\^, \fIroot_x_return\fP\^, \fIroot_y_return\fP\^,
+.br
+ \fIwin_x_return\fP\^, \fIwin_y_return\fP\^, \fImask_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Window *\fIroot_return\fP\^, *\fIchild_return\fP\^;
+.br
+ int *\fIroot_x_return\fP\^, *\fIroot_y_return\fP\^;
+.br
+ int *\fIwin_x_return\fP\^, *\fIwin_y_return\fP\^;
+.br
+ unsigned int *\fImask_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.ds Ro that the pointer is in
+.IP \fIroot_return\fP 1i
+Returns the root window \*(Ro.
+.IP \fIchild_return\fP 1i
+Returns the child window that the pointer is located in, if any.
+.IP \fIroot_x_return\fP 1i
+.br
+.ns
+.IP \fIroot_y_return\fP 1i
+Return the pointer coordinates relative to the root window's origin.
+.IP \fIwin_x_return\fP 1i
+.br
+.ns
+.IP \fIwin_y_return\fP 1i
+Return the pointer coordinates relative to the specified window.
+.IP \fImask_return\fP 1i
+Returns the current state of the modifier keys and pointer buttons.
+.LP
+.eM
+The
+.PN XQueryPointer
+function returns the root window the pointer is logically on and the pointer
+coordinates relative to the root window's origin.
+If
+.PN XQueryPointer
+returns
+.PN False ,
+the pointer is not on the same screen as the specified window, and
+.PN XQueryPointer
+returns
+.PN None
+to child_return and zero to win_x_return and win_y_return.
+If
+.PN XQueryPointer
+returns
+.PN True ,
+the pointer coordinates returned to win_x_return and win_y_return
+are relative to the origin of the specified window.
+In this case,
+.PN XQueryPointer
+returns the child that contains the pointer, if any,
+or else
+.PN None
+to child_return.
+.LP
+.PN XQueryPointer
+returns the current logical state of the keyboard buttons
+and the modifier keys in mask_return.
+It sets mask_return to the bitwise inclusive OR of one or more
+of the button or modifier key bitmasks to match
+the current state of the mouse buttons and the modifier keys.
+.LP
+Note that the logical state of a device (as seen through Xlib)
+may lag the physical state if device event processing is frozen
+(see section 12.1).
+.LP
+.PN XQueryPointer
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Properties and Atoms
+.XS
+\*(SN Properties and Atoms
+.XE
+.LP
+A property is a collection of named, typed data.
+The window system has a set of predefined properties
+.IN "Atom" "predefined"
+(for example, the name of a window, size hints, and so on), and users can
+define any other arbitrary information and associate it with windows.
+Each property has a name,
+which is an ISO Latin-1 string.
+For each named property,
+a unique identifier (atom) is associated with it.
+A property also has a type, for example, string or integer.
+These types are also indicated using atoms, so arbitrary new
+types can be defined.
+Data of only one type may be associated with a single
+property name.
+Clients can store and retrieve properties associated with windows.
+For efficiency reasons,
+an atom is used rather than a character string.
+.PN XInternAtom
+can be used to obtain the atom for property names.
+.IN "Atom"
+.LP
+A property is also stored in one of several possible formats.
+The X server can store the information as 8-bit quantities, 16-bit
+quantities, or 32-bit quantities.
+This permits the X server to present the data in the byte order that the
+client expects.
+.NT Note
+If you define further properties of complex type,
+you must encode and decode them yourself.
+These functions must be carefully written if they are to be portable.
+For further information about how to write a library extension,
+see appendix C.
+.NE
+The type of a property is defined by an atom, which allows for
+arbitrary extension in this type scheme.
+.IN "Atom"
+.LP
+Certain property names are
+predefined in the server for commonly used functions.
+The atoms for these properties are defined in
+.hN X11/Xatom.h .
+To avoid name clashes with user symbols, the
+.PN #define
+name for each atom has the XA_ prefix.
+For an explanation of the functions that let you get and set
+much of the information stored in these predefined properties,
+see chapter 14.
+.LP
+The core protocol imposes no semantics on these property names,
+but semantics are specified in other X Consortium standards,
+such as the \fIInter-Client Communication Conventions Manual\fP
+and the \fIX Logical Font Description Conventions\fP.
+.LP
+You can use properties to communicate other information between
+applications.
+The functions described in this section let you define new properties
+and get the unique atom IDs in your applications.
+.LP
+Although any particular atom can have some client interpretation
+within each of the name spaces,
+atoms occur in five distinct name spaces within the protocol:
+.IP \(bu 5
+Selections
+.IP \(bu 5
+Property names
+.IP \(bu 5
+Property types
+.IP \(bu 5
+Font properties
+.IP \(bu 5
+Type of a
+.PN ClientMessage
+event (none are built into the X server)
+.LP
+.LP
+The built-in selection property names are:
+.LP
+.Ds 0
+.TA .5i 1.5i 3i
+.ta .5i 1.5i 3i
+.R
+PRIMARY
+SECONDARY
+.De
+.LP
+The built-in property names are:
+.TS
+lw(2i) lw(2i).
+.sp 6p
+CUT_BUFFER0 RESOURCE_MANAGER
+CUT_BUFFER1 WM_CLASS
+CUT_BUFFER2 WM_CLIENT_MACHINE
+CUT_BUFFER3 WM_COLORMAP_WINDOWS
+CUT_BUFFER4 WM_COMMAND
+CUT_BUFFER5 WM_HINTS
+CUT_BUFFER6 WM_ICON_NAME
+CUT_BUFFER7 WM_ICON_SIZE
+RGB_BEST_MAP WM_NAME
+RGB_BLUE_MAP WM_NORMAL_HINTS
+RGB_DEFAULT_MAP WM_PROTOCOLS
+RGB_GRAY_MAP WM_STATE
+RGB_GREEN_MAP WM_TRANSIENT_FOR
+RGB_RED_MAP WM_ZOOM_HINTS
+.sp 6p
+.TE
+.LP
+The built-in property types are:
+.LP
+.TS
+lw(2i) lw(2i).
+.sp 6p
+ARC POINT
+ATOM RGB_COLOR_MAP
+BITMAP RECTANGLE
+CARDINAL STRING
+COLORMAP VISUALID
+CURSOR WINDOW
+DRAWABLE WM_HINTS
+FONT WM_SIZE_HINTS
+INTEGER
+PIXMAP
+.sp 6p
+.TE
+.LP
+The built-in font property names are:
+.TS
+lw(2i) lw(2i).
+.sp 6p
+MIN_SPACE STRIKEOUT_DESCENT
+NORM_SPACE STRIKEOUT_ASCENT
+MAX_SPACE ITALIC_ANGLE
+END_SPACE X_HEIGHT
+SUPERSCRIPT_X QUAD_WIDTH
+SUPERSCRIPT_Y WEIGHT
+SUBSCRIPT_X POINT_SIZE
+SUBSCRIPT_Y RESOLUTION
+UNDERLINE_POSITION COPYRIGHT
+UNDERLINE_THICKNESS NOTICE
+FONT_NAME FAMILY_NAME
+FULL_NAME CAP_HEIGHT
+.sp 6p
+.TE
+.LP
+For further information about font properties,
+see section 8.5.
+.LP
+.sp
+To return an atom for a given name, use
+.PN XInternAtom .
+.IN "Atom" "interning"
+.IN "XInternAtom" "" "@DEF@"
+.sM
+.FD 0
+Atom XInternAtom\^(\^\fIdisplay\fP, \fIatom_name\fP\^, \fIonly_if_exists\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIatom_name\fP\^;
+.br
+ Bool \fIonly_if_exists\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIatom_name\fP 1i
+Specifies the name associated with the atom you want returned.
+.IP \fIonly_if_exists\fP 1i
+Specifies a Boolean value that indicates whether the atom must be created.
+.LP
+.eM
+The
+.PN XInternAtom
+function returns the atom identifier associated with the specified atom_name
+string.
+If only_if_exists is
+.PN False ,
+the atom is created if it does not exist.
+Therefore,
+.PN XInternAtom
+can return
+.PN None .
+If the atom name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Uppercase and lowercase matter;
+the strings ``thing'', ``Thing'', and ``thinG''
+all designate different atoms.
+The atom will remain defined even after the client's connection closes.
+It will become undefined only when the last connection to
+the X server closes.
+.LP
+.PN XInternAtom
+can generate
+.PN BadAlloc
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To return atoms for an array of names, use
+.PN XInternAtoms .
+.IN "Atom" "interning"
+.IN "XInternAtoms" "" "@DEF@"
+.sM
+.FD 0
+Status XInternAtoms\^(\^\fIdisplay\fP, \fInames\fP\^, \fIcount\fP\^, \fIonly_if_exists\fP, \fIatoms_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char **\fInames\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Bool \fIonly_if_exists\fP\^;
+.br
+ Atom *\fIatoms_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInames\fP 1i
+Specifies the array of atom names.
+.ds Cn atom names in the array
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.IP \fIonly_if_exists\fP 1i
+Specifies a Boolean value that indicates whether the atom must be created.
+.IP \fIatoms_return\fP 1i
+Returns the atoms.
+.LP
+.eM
+The
+.PN XInternAtoms
+function returns the atom identifiers associated with the specified names.
+The atoms are stored in the atoms_return array supplied by the caller.
+Calling this function is equivalent to calling
+.PN XInternAtom
+for each of the names in turn with the specified value of only_if_exists,
+but this function minimizes the number of round-trip protocol exchanges
+between the client and the X server.
+.LP
+This function returns a nonzero status if atoms are returned for
+all of the names;
+otherwise, it returns zero.
+.LP
+.PN XInternAtoms
+can generate
+.PN BadAlloc
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To return a name for a given atom identifier, use
+.PN XGetAtomName .
+.IN "Atom" "getting name"
+.IN "XGetAtomName" "" "@DEF@"
+.sM
+.FD 0
+char *XGetAtomName\^(\^\fIdisplay\fP, \fIatom\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Atom \fIatom\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIatom\fP 1i
+Specifies the atom for the property name you want returned.
+.LP
+.eM
+The
+.PN XGetAtomName
+function returns the name associated with the specified atom.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned string is in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+To free the resulting string,
+call
+.PN XFree .
+.LP
+.PN XGetAtomName
+can generate a
+.PN BadAtom
+error.
+.LP
+.sp
+To return the names for an array of atom identifiers, use
+.PN XGetAtomNames .
+.IN "Atom" "getting name"
+.IN "XGetAtomNames" "" "@DEF@"
+.sM
+.FD 0
+Status XGetAtomNames\^(\^\fIdisplay\fP, \fIatoms\fP, \fIcount\fP\^, \fInames_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Atom *\fIatoms\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ char **\fInames_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIatoms\fP 1i
+Specifies the array of atoms.
+.ds Cn atoms in the array
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.IP \fInames_return\fP 1i
+Returns the atom names.
+.LP
+.eM
+The
+.PN XGetAtomNames
+function returns the names associated with the specified atoms.
+The names are stored in the names_return array supplied by the caller.
+Calling this function is equivalent to calling
+.PN XGetAtomName
+for each of the atoms in turn,
+but this function minimizes the number of round-trip protocol exchanges
+between the client and the X server.
+.LP
+This function returns a nonzero status if names are returned for
+all of the atoms;
+otherwise, it returns zero.
+.LP
+.PN XGetAtomNames
+can generate a
+.PN BadAtom
+error.
+.NH 2
+Obtaining and Changing Window Properties
+.XS
+\*(SN Obtaining and Changing Window Properties
+.XE
+.LP
+You can attach a property list to every window.
+Each property has a name, a type, and a value (see section 4.3).
+The value is an array of 8-bit, 16-bit, or 32-bit quantities,
+whose interpretation is left to the clients. The type
+.PN char
+is used to represent 8-bit quantities, the type
+.PN short
+is used to represent 16-bit quantities, and the type
+.PN long
+is used to represent 32-bit quantities.
+.LP
+Xlib provides functions that you can use to obtain,
+change, update, or interchange window properties.
+In addition, Xlib provides other utility functions for inter-client
+communication (see chapter 14).
+.LP
+.sp
+To obtain the type, format, and value of a property of a given window, use
+.PN XGetWindowProperty .
+.IN "Property" "getting"
+.LP
+.IN "XGetWindowProperty" "" "@DEF@"
+.sM
+.FD 0
+int XGetWindowProperty\^(\^\fIdisplay\fP, \fIw\fP\^, \fIproperty\fP\^, \fIlong_offset\fP\^, \fIlong_length\fP\^, \fIdelete\fP\^, \fIreq_type\fP\^,
+.br
+ \fIactual_type_return\fP\^, \fIactual_format_return\fP\^, \fInitems_return\fP\^, \fIbytes_after_return\fP\^,
+.br
+ \fIprop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.br
+ long \fIlong_offset\fP\^, \fIlong_length\fP\^;
+.br
+ Bool \fIdelete\fP\^;
+.br
+ Atom \fIreq_type\fP\^;
+.br
+ Atom *\fIactual_type_return\fP\^;
+.br
+ int *\fIactual_format_return\fP\^;
+.br
+ unsigned long *\fInitems_return\fP\^;
+.br
+ unsigned long *\fIbytes_after_return\fP\^;
+.br
+ unsigned char **\fIprop_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose property you want to obtain
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.IP \fIlong_offset\fP 1i
+Specifies the offset in the specified property (in 32-bit quantities)
+where the data is to be retrieved.
+.IP \fIlong_length\fP 1i
+Specifies the length in 32-bit multiples of the data to be retrieved.
+.IP \fIdelete\fP 1i
+Specifies a Boolean value that determines whether the property is deleted.
+.IP \fIreq_type\fP 1i
+Specifies the atom identifier associated with the property type or
+.PN AnyPropertyType .
+.IP \fIactual_type_return\fP 1i
+Returns the atom identifier that defines the actual type of the property.
+.IP \fIactual_format_return\fP 1i
+Returns the actual format of the property.
+.IP \fInitems_return\fP 1i
+Returns the actual number of 8-bit, 16-bit, or 32-bit items
+stored in the prop_return data.
+.IP \fIbytes_after_return\fP 1i
+Returns the number of bytes remaining to be read in the property if
+a partial read was performed.
+.IP \fIprop_return\fP 1i
+Returns the data in the specified format.
+.LP
+.eM
+The
+.PN XGetWindowProperty
+function returns the actual type of the property; the actual format of the property;
+the number of 8-bit, 16-bit, or 32-bit items transferred; the number of bytes remaining
+to be read in the property; and a pointer to the data actually returned.
+.PN XGetWindowProperty
+sets the return arguments as follows:
+.IP \(bu 5
+If the specified property does not exist for the specified window,
+.PN XGetWindowProperty
+returns
+.PN None
+to actual_type_return and the value zero to
+actual_format_return and bytes_after_return.
+The nitems_return argument is empty.
+In this case, the delete argument is ignored.
+.IP \(bu 5
+If the specified property exists
+but its type does not match the specified type,
+.PN XGetWindowProperty
+returns the actual property type to actual_type_return,
+the actual property format (never zero) to actual_format_return,
+and the property length in bytes
+(even if the actual_format_return is 16 or 32)
+to bytes_after_return.
+It also ignores the delete argument.
+The nitems_return argument is empty.
+.IP \(bu 5
+If the specified property exists and either you assign
+.PN AnyPropertyType
+to the req_type argument or the specified type matches the actual property type,
+.PN XGetWindowProperty
+returns the actual property type to actual_type_return and the actual
+property format (never zero) to actual_format_return.
+It also returns a value to bytes_after_return and nitems_return, by
+defining the following
+values:
+.IP
+.nf
+ N = actual length of the stored property in bytes
+ (even if the format is 16 or 32)
+ I = 4 * long_offset
+ T = N - I
+ L = MINIMUM(T, 4 * long_length)
+ A = N - (I + L)
+.fi
+.IP
+The returned value starts at byte index I in the property (indexing
+from zero), and its length in bytes is L.
+If the value for long_offset causes L to be negative,
+a
+.PN BadValue
+error results.
+The value of bytes_after_return is A,
+giving the number of trailing unread bytes in the stored property.
+.LP
+If the returned format is 8, the returned data is represented as a
+.PN char
+array.
+If the returned format is 16, the returned data is represented as a
+.PN short
+array and should be cast to that type to obtain the elements.
+If the returned format is 32, the returned data is represented as a
+.PN long
+array and should be cast to that type to obtain the elements.
+.LP
+.PN XGetWindowProperty
+always allocates one extra byte in prop_return
+(even if the property is zero length)
+and sets it to zero so that simple properties consisting of characters
+do not have to be copied into yet another string before use.
+.LP
+If delete is
+.PN True
+and bytes_after_return is zero,
+.PN XGetWindowProperty
+deletes the property
+from the window and generates a
+.PN PropertyNotify
+event on the window.
+.LP
+The function returns
+.PN Success
+if it executes successfully.
+To free the resulting data,
+use
+.PN XFree .
+.LP
+.PN XGetWindowProperty
+can generate
+.PN BadAtom ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To obtain a given window's property list, use
+.PN XListProperties .
+.IN "Property" "listing"
+.IN "XListProperties" "" "@DEF@"
+.sM
+.FD 0
+Atom *XListProperties\^(\^\fIdisplay\fP, \fIw\fP\^, \fInum_prop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int *\fInum_prop_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose property list you want to obtain
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fInum_prop_return\fP 1i
+Returns the length of the properties array.
+.LP
+.eM
+The
+.PN XListProperties
+function returns a pointer to an array of atom properties that are defined for
+the specified window or returns NULL if no properties were found.
+To free the memory allocated by this function, use
+.PN XFree .
+.LP
+.PN XListProperties
+can generate a
+.PN BadWindow
+error.
+.LP
+.sp
+To change a property of a given window, use
+.PN XChangeProperty .
+.IN "Property" "changing"
+.IN "Property" "appending"
+.IN "Property" "prepending"
+.IN "Property" "replacing"
+.IN "Property" "format"
+.IN "Property" "type"
+.IN "XChangeProperty" "" "@DEF@"
+.sM
+.FD 0
+XChangeProperty\^(\^\fIdisplay\fP, \fIw\fP\^, \fIproperty\fP\^, \fItype\fP\^, \fIformat\fP\^, \fImode\fP\^, \fIdata\fP\^, \fInelements\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Atom \fIproperty\fP\^, \fItype\fP\^;
+.br
+ int \fIformat\fP\^;
+.br
+ int \fImode\fP\^;
+.br
+ unsigned char *\fIdata\fP\^;
+.br
+ int \fInelements\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose property you want to change
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.IP \fItype\fP 1i
+Specifies the type of the property.
+The X server does not interpret the type but simply
+passes it back to an application that later calls
+.PN XGetWindowProperty .
+.IP \fIformat\fP 1i
+Specifies whether the data should be viewed as a list
+of 8-bit, 16-bit, or 32-bit quantities.
+Possible values are 8, 16, and 32.
+This information allows the X server to correctly perform
+byte-swap operations as necessary.
+If the format is 16-bit or 32-bit,
+you must explicitly cast your data pointer to an (unsigned char *) in the call
+to
+.PN XChangeProperty .
+.\" Changed name of this file to prop_mode.a on 1/13/87
+.IP \fImode\fP 1i
+Specifies the mode of the operation.
+You can pass
+.PN PropModeReplace ,
+.PN PropModePrepend ,
+or
+.PN PropModeAppend .
+.IP \fIdata\fP 1i
+Specifies the property data.
+.IP \fInelements\fP 1i
+Specifies the number of elements of the specified data format.
+.LP
+.eM
+The
+.PN XChangeProperty
+function alters the property for the specified window and
+causes the X server to generate a
+.PN PropertyNotify
+event on that window.
+.PN XChangeProperty
+performs the following:
+.IP \(bu 5
+If mode is
+.PN PropModeReplace ,
+.PN XChangeProperty
+discards the previous property value and stores the new data.
+.IP \(bu 5
+If mode is
+.PN PropModePrepend
+or
+.PN PropModeAppend ,
+.PN XChangeProperty
+inserts the specified data before the beginning of the existing data
+or onto the end of the existing data, respectively.
+The type and format must match the existing property value,
+or a
+.PN BadMatch
+error results.
+If the property is undefined,
+it is treated as defined with the correct type and
+format with zero-length data.
+.LP
+If the specified format is 8, the property data must be a
+.PN char
+array.
+If the specified format is 16, the property data must be a
+.PN short
+array.
+If the specified format is 32, the property data must be a
+.PN long
+array.
+.LP
+The lifetime of a property is not tied to the storing client.
+Properties remain until explicitly deleted, until the window is destroyed,
+or until the server resets.
+For a discussion of what happens when the connection to the X server is closed,
+see section 2.6.
+The maximum size of a property is server dependent and can vary dynamically
+depending on the amount of memory the server has available.
+(If there is insufficient space, a
+.PN BadAlloc
+error results.)
+.LP
+.PN XChangeProperty
+can generate
+.PN BadAlloc ,
+.PN BadAtom ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To rotate a window's property list, use
+.PN XRotateWindowProperties .
+.LP
+.IN "XRotateWindowProperties" "" "@DEF@"
+.sM
+.FD 0
+XRotateWindowProperties\^(\^\fIdisplay\fP, \fIw\fP, \fIproperties\fP, \fInum_prop\fP, \fInpositions\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Atom \fIproperties\fP\^[]\^;
+.br
+ int \fInum_prop\fP\^;
+.br
+ int \fInpositions\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIproperties\fP 1i
+Specifies the array of properties that are to be rotated.
+.IP \fInum_prop\fP 1i
+Specifies the length of the properties array.
+.IP \fInpositions\fP 1i
+Specifies the rotation amount.
+.LP
+.eM
+The
+.PN XRotateWindowProperties
+function allows you to rotate properties on a window and causes
+the X server to generate
+.PN PropertyNotify
+events.
+If the property names in the properties array are viewed as being numbered
+starting from zero and if there are num_prop property names in the list,
+then the value associated with property name I becomes the value associated
+with property name (I + npositions) mod N for all I from zero to N \- 1.
+The effect is to rotate the states by npositions places around the virtual ring
+of property names (right for positive npositions,
+left for negative npositions).
+If npositions mod N is nonzero,
+the X server generates a
+.PN PropertyNotify
+event for each property in the order that they are listed in the array.
+If an atom occurs more than once in the list or no property with that
+name is defined for the window,
+a
+.PN BadMatch
+error results.
+If a
+.PN BadAtom
+or
+.PN BadMatch
+error results,
+no properties are changed.
+.LP
+.PN XRotateWindowProperties
+can generate
+.PN BadAtom ,
+.PN BadMatch ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To delete a property on a given window, use
+.PN XDeleteProperty .
+.IN "Property" "deleting"
+.IN "XDeleteProperty" "" "@DEF@"
+.sM
+.FD 0
+XDeleteProperty\^(\^\fIdisplay\fP, \fIw\fP\^, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose property you want to delete
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XDeleteProperty
+function deletes the specified property only if the
+property was defined on the specified window
+and causes the X server to generate a
+.PN PropertyNotify
+event on the window unless the property does not exist.
+.LP
+.PN XDeleteProperty
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.NH 2
+Selections
+.XS
+\*(SN Selections
+.XE
+.LP
+.IN "Selection"
+Selections are one method used by applications to exchange data.
+By using the property mechanism,
+applications can exchange data of arbitrary types and can negotiate
+the type of the data.
+A selection can be thought of as an indirect property with a dynamic type.
+That is, rather than having the property stored in the X server,
+the property is maintained by some client (the owner).
+A selection is global in nature (considered to belong to the user
+but be maintained by clients) rather than being private to a particular
+window subhierarchy or a particular set of clients.
+.LP
+Xlib provides functions that you can use to set, get, or request conversion
+of selections.
+This allows applications to implement the notion of current selection,
+which requires that notification be sent to applications when they no
+longer own the selection.
+Applications that support selection often highlight the current selection
+and so must be informed when another application has
+acquired the selection so that they can unhighlight the selection.
+.LP
+When a client asks for the contents of
+a selection, it specifies a selection target type.
+This target type
+can be used to control the transmitted representation of the contents.
+For example, if the selection is ``the last thing the user clicked on''
+and that is currently an image, then the target type might specify
+whether the contents of the image should be sent in XY format or Z format.
+.LP
+The target type can also be used to control the class of
+contents transmitted, for example,
+asking for the ``looks'' (fonts, line
+spacing, indentation, and so forth) of a paragraph selection, not the
+text of the paragraph.
+The target type can also be used for other
+purposes.
+The protocol does not constrain the semantics.
+.LP
+.sp
+To set the selection owner, use
+.PN XSetSelectionOwner .
+.IN "Selection" "setting the owner"
+.IN "XSetSelectionOwner" "" "@DEF@"
+.sM
+.FD 0
+XSetSelectionOwner\^(\^\fIdisplay\fP, \fIselection\fP\^, \fIowner\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Atom \fIselection\fP\^;
+.br
+ Window \fIowner\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIselection\fP 1i
+Specifies the selection atom.
+.IP \fIowner\fP 1i
+Specifies the owner of the specified selection atom.
+You can pass a window or
+.PN None .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XSetSelectionOwner
+function changes the owner and last-change time for the specified selection
+and has no effect if the specified time is earlier than the current
+last-change time of the specified selection
+or is later than the current X server time.
+Otherwise, the last-change time is set to the specified time,
+with
+.PN CurrentTime
+replaced by the current server time.
+If the owner window is specified as
+.PN None ,
+then the owner of the selection becomes
+.PN None
+(that is, no owner).
+Otherwise, the owner of the selection becomes the client executing
+the request.
+.LP
+If the new owner (whether a client or
+.PN None )
+is not
+the same as the current owner of the selection and the current
+owner is not
+.PN None ,
+the current owner is sent a
+.PN SelectionClear
+event.
+If the client that is the owner of a selection is later
+terminated (that is, its connection is closed)
+or if the owner window it has specified in the request is later
+destroyed,
+the owner of the selection automatically
+reverts to
+.PN None ,
+but the last-change time is not affected.
+The selection atom is uninterpreted by the X server.
+.PN XGetSelectionOwner
+returns the owner window, which is reported in
+.PN SelectionRequest
+and
+.PN SelectionClear
+events.
+Selections are global to the X server.
+.LP
+.PN XSetSelectionOwner
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To return the selection owner, use
+.PN XGetSelectionOwner .
+.IN "Selection" "getting the owner"
+.IN "XGetSelectionOwner" "" "@DEF@"
+.sM
+.FD 0
+Window XGetSelectionOwner\^(\^\fIdisplay\fP, \fIselection\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Atom \fIselection\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Se whose owner you want returned
+.IP \fIselection\fP 1i
+Specifies the selection atom \*(Se.
+.LP
+.eM
+The
+.PN XGetSelectionOwner
+function
+returns the window ID associated with the window that currently owns the
+specified selection.
+If no selection was specified, the function returns the constant
+.PN None .
+If
+.PN None
+is returned,
+there is no owner for the selection.
+.LP
+.PN XGetSelectionOwner
+can generate a
+.PN BadAtom
+error.
+.LP
+.sp
+To request conversion of a selection, use
+.PN XConvertSelection .
+.IN "Selection" "converting"
+.IN "XConvertSelection" "" "@DEF@"
+.sM
+.FD 0
+XConvertSelection\^(\^\fIdisplay\fP, \fIselection\fP\^, \fItarget\fP\^, \fIproperty\fP\^, \fIrequestor\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Atom \fIselection\fP\^, \fItarget\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.br
+ Window \fIrequestor\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIselection\fP 1i
+Specifies the selection atom.
+.IP \fItarget\fP 1i
+Specifies the target atom.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+You also can pass
+.PN None .
+.IP \fIrequestor\fP 1i
+Specifies the requestor.
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+.PN XConvertSelection
+requests that the specified selection be converted to the specified target
+type:
+.IP \(bu 5
+If the specified selection has an owner, the X server sends a
+.PN SelectionRequest
+event to that owner.
+.IP \(bu 5
+If no owner for the specified
+selection exists, the X server generates a
+.PN SelectionNotify
+event to the
+requestor with property
+.PN None .
+.LP
+The arguments are passed on unchanged in either of the events.
+There are two predefined selection atoms: PRIMARY and SECONDARY.
+.LP
+.PN XConvertSelection
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.bp
diff --git a/specs/X11/CH05 b/specs/X11/CH05
new file mode 100644
index 0000000..6ea2183
--- /dev/null
+++ b/specs/X11/CH05
@@ -0,0 +1,518 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 5\fP\s-1
+
+\s+1\fBPixmap and Cursor Functions\fP\s-1
+.sp 2
+.nr H1 5
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 5: Pixmap and Cursor Functions
+.XE
+Once you have connected to an X server,
+you can use the Xlib functions to:
+.IP \(bu 5
+Create and free pixmaps
+.IP \(bu 5
+Create, recolor, and free cursors
+.NH 2
+Creating and Freeing Pixmaps
+.XS
+\*(SN Creating and Freeing Pixmaps
+.XE
+.LP
+Pixmaps can only be used on the screen on which they were created.
+Pixmaps are off-screen resources that are used for various operations,
+such as defining cursors as tiling patterns
+or as the source for certain raster operations.
+Most graphics requests can operate either on a window or on a pixmap.
+A bitmap is a single bit-plane pixmap.
+.LP
+.sp
+To create a pixmap of a given size, use
+.PN XCreatePixmap .
+.IN "XCreatePixmap" "" "@DEF@"
+.sM
+.FD 0
+Pixmap XCreatePixmap\^(\^\fIdisplay\fP, \fId\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIdepth\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ unsigned int \fIdepth\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies which screen the pixmap is created on.
+.ds Wh , which define the dimensions of the pixmap
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.IP \fIdepth\fP 1i
+Specifies the depth of the pixmap.
+.LP
+.eM
+The
+.PN XCreatePixmap
+function creates a pixmap of the width, height, and depth you specified
+and returns a pixmap ID that identifies it.
+It is valid to pass an
+.PN InputOnly
+window to the drawable argument.
+The width and height arguments must be nonzero,
+or a
+.PN BadValue
+error results.
+The depth argument must be one of the depths supported by the screen
+of the specified drawable,
+or a
+.PN BadValue
+error results.
+.LP
+The server uses the specified drawable to determine on which screen
+to create the pixmap.
+The pixmap can be used only on this screen
+and only with other drawables of the same depth (see
+.PN XCopyPlane
+for an exception to this rule).
+The initial contents of the pixmap are undefined.
+.LP
+.PN XCreatePixmap
+can generate
+.PN BadAlloc ,
+.PN BadDrawable ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To free all storage associated with a specified pixmap, use
+.PN XFreePixmap .
+.IN "XFreePixmap" "" "@DEF@"
+.sM
+.FD 0
+XFreePixmap\^(\^\fIdisplay\fP, \fIpixmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Pixmap \fIpixmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIpixmap\fP 1i
+Specifies the pixmap.
+.LP
+.eM
+The
+.PN XFreePixmap
+function first deletes the association between the pixmap ID and the pixmap.
+Then, the X server frees the pixmap storage when there are no references to it.
+The pixmap should never be referenced again.
+.LP
+.PN XFreePixmap
+can generate a
+.PN BadPixmap
+error.
+.NH 2
+Creating, Recoloring, and Freeing Cursors
+.XS
+\*(SN Creating, Recoloring, and Freeing Cursors
+.XE
+.LP
+Each window can have a different cursor defined for it.
+Whenever the pointer is in a visible window,
+it is set to the cursor defined for that window.
+If no cursor was defined for that window,
+the cursor is the one defined for the parent window.
+.LP
+From X's perspective,
+a cursor consists of a cursor source, mask, colors, and a hotspot.
+The mask pixmap determines the shape of the cursor and must be a depth
+of one.
+The source pixmap must have a depth of one,
+and the colors determine the colors of the source.
+The hotspot defines the point on the cursor that is reported
+when a pointer event occurs.
+There may be limitations imposed by the hardware on
+cursors as to size and whether a mask is implemented.
+.IN "XQueryBestCursor"
+.PN XQueryBestCursor
+can be used to find out what sizes are possible.
+There is a standard font for creating cursors, but
+Xlib provides functions that you can use to create cursors
+from an arbitrary font or from bitmaps.
+.LP
+.sp
+To create a cursor from the standard cursor font, use
+.PN XCreateFontCursor .
+.IN "XCreateFontCursor" "" "@DEF@"
+.sM
+.FD 0
+#include <X11/cursorfont.h>
+.sp 6p
+Cursor XCreateFontCursor\^(\^\fIdisplay\fP, \fIshape\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIshape\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIshape\fP 1i
+Specifies the shape of the cursor.
+.LP
+.eM
+X provides a set of standard cursor shapes in a special font named
+cursor.
+Applications are encouraged to use this interface for their cursors
+because the font can be customized for the individual display type.
+The shape argument specifies which glyph of the standard fonts
+to use.
+.LP
+The hotspot comes from the information stored in the cursor font.
+The initial colors of a cursor are a black foreground and a white
+background (see
+.PN XRecolorCursor ).
+For further information about cursor shapes,
+see appendix B.
+.LP
+.PN XCreateFontCursor
+can generate
+.PN BadAlloc
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To create a cursor from font glyphs, use
+.PN XCreateGlyphCursor .
+.IN "XCreateGlyphCursor" "" "@DEF@"
+.sM
+.FD 0
+Cursor XCreateGlyphCursor\^(\^\fIdisplay\fP, \fIsource_font\fP\^, \fImask_font\fP\^, \fIsource_char\fP\^, \fImask_char\fP\^,
+.br
+ \fIforeground_color\fP\^, \fIbackground_color\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Font \fIsource_font\fP\^, \fImask_font\fP\^;
+.br
+ unsigned int \fIsource_char\fP\^, \fImask_char\fP\^;
+.br
+ XColor *\fIforeground_color\fP\^;
+.br
+ XColor *\fIbackground_color\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsource_font\fP 1i
+Specifies the font for the source glyph.
+.IP \fImask_font\fP 1i
+Specifies the font for the mask glyph or
+.PN None .
+.IP \fIsource_char\fP 1i
+Specifies the character glyph for the source.
+.IP \fImask_char\fP 1i
+Specifies the glyph character for the mask.
+.IP \fIforeground_color\fP 1i
+Specifies the RGB values for the foreground of the source.
+.IP \fIbackground_color\fP 1i
+Specifies the RGB values for the background of the source.
+.LP
+.eM
+The
+.PN XCreateGlyphCursor
+function is similar to
+.PN XCreatePixmapCursor
+except that the source and mask bitmaps are obtained from the specified
+font glyphs.
+The source_char must be a defined glyph in source_font,
+or a
+.PN BadValue
+error results.
+If mask_font is given,
+mask_char must be a defined glyph in mask_font,
+or a
+.PN BadValue
+error results.
+The mask_font and character are optional.
+The origins of the source_char and mask_char (if defined) glyphs are
+positioned coincidently and define the hotspot.
+The source_char and mask_char need not have the same bounding box metrics,
+and there is no restriction on the placement of the hotspot relative to the bounding
+boxes.
+If no mask_char is given, all pixels of the source are displayed.
+You can free the fonts immediately by calling
+.PN XFreeFont
+if no further explicit references to them are to be made.
+.LP
+For 2-byte matrix fonts,
+the 16-bit value should be formed with the byte1
+member in the most significant byte and the byte2 member in the
+least significant byte.
+.LP
+.PN XCreateGlyphCursor
+can generate
+.PN BadAlloc ,
+.PN BadFont ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To create a cursor from two bitmaps,
+use
+.PN XCreatePixmapCursor .
+.IN "XCreatePixmapCursor" "" "@DEF@"
+.sM
+.FD 0
+Cursor XCreatePixmapCursor\^(\^\fIdisplay\fP, \fIsource\fP\^, \fImask\fP\^, \fIforeground_color\fP\^, \fIbackground_color\fP\^, \fIx\fP\^, \fIy\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Pixmap \fIsource\fP\^;
+.br
+ Pixmap \fImask\fP\^;
+.br
+ XColor *\fIforeground_color\fP\^;
+.br
+ XColor *\fIbackground_color\fP\^;
+.br
+ unsigned int \fIx\fP\^, \fIy\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsource\fP 1i
+Specifies the shape of the source cursor.
+.\" *** JIM: NEED TO CHECK THIS. ***
+.IP \fImask\fP 1i
+Specifies the cursor's source bits to be displayed or
+.PN None .
+.IP \fIforeground_color\fP 1i
+Specifies the RGB values for the foreground of the source.
+.IP \fIbackground_color\fP 1i
+Specifies the RGB values for the background of the source.
+.ds Xy , which indicate the hotspot relative to the source's origin
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.LP
+.eM
+The
+.PN XCreatePixmapCursor
+function creates a cursor and returns the cursor ID associated with it.
+The foreground and background RGB values must be specified using
+foreground_color and background_color,
+even if the X server only has a
+.PN StaticGray
+or
+.PN GrayScale
+screen.
+The foreground color is used for the pixels set to 1 in the
+source, and the background color is used for the pixels set to 0.
+Both source and mask, if specified, must have depth one (or a
+.PN BadMatch
+error results) but can have any root.
+The mask argument defines the shape of the cursor.
+The pixels set to 1 in the mask define which source pixels are displayed,
+and the pixels set to 0 define which pixels are ignored.
+If no mask is given,
+all pixels of the source are displayed.
+The mask, if present, must be the same size as the pixmap defined by the
+source argument, or a
+.PN BadMatch
+error results.
+The hotspot must be a point within the source,
+or a
+.PN BadMatch
+error results.
+.LP
+The components of the cursor can be transformed arbitrarily to meet
+display limitations.
+The pixmaps can be freed immediately if no further explicit references
+to them are to be made.
+Subsequent drawing in the source or mask pixmap has an undefined effect on the
+cursor.
+The X server might or might not make a copy of the pixmap.
+.LP
+.PN XCreatePixmapCursor
+can generate
+.PN BadAlloc
+and
+.PN BadPixmap
+errors.
+.LP
+.sp
+To determine useful cursor sizes, use
+.PN XQueryBestCursor .
+.IN "XQueryBestCursor" "" "@DEF@"
+.sM
+.FD 0
+Status XQueryBestCursor\^(\^\fIdisplay\fP, \fId\fP, \fIwidth\fP\^, \fIheight\fP\^, \fIwidth_return\fP\^, \fIheight_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP\^, *\fIheight_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Dr , which indicates the screen
+.IP \fId\fP 1i
+Specifies the drawable\*(Dr.
+.ds Wh \ of the cursor that you want the size information for
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the best width and height that is closest to the specified width
+and height.
+.LP
+.eM
+Some displays allow larger cursors than other displays.
+The
+.PN XQueryBestCursor
+function provides a way to find out what size cursors are actually
+possible on the display.
+.IN "Cursor" "limitations"
+It returns the largest size that can be displayed.
+Applications should be prepared to use smaller cursors on displays that
+cannot support large ones.
+.LP
+.PN XQueryBestCursor
+can generate a
+.PN BadDrawable
+error.
+.LP
+.sp
+To change the color of a given cursor, use
+.PN XRecolorCursor .
+.IN "XRecolorCursor" "" "@DEF@"
+.sM
+.FD 0
+XRecolorCursor\^(\^\fIdisplay\fP, \fIcursor\fP\^, \fIforeground_color\fP\^, \fIbackground_color\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Cursor \fIcursor\fP\^;
+.br
+ XColor *\fIforeground_color\fP\^, *\fIbackground_color\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcursor\fP 1i
+Specifies the cursor.
+.IP \fIforeground_color\fP 1i
+Specifies the RGB values for the foreground of the source.
+.IP \fIbackground_color\fP 1i
+Specifies the RGB values for the background of the source.
+.LP
+.eM
+The
+.PN XRecolorCursor
+function changes the color of the specified cursor, and
+if the cursor is being displayed on a screen,
+the change is visible immediately.
+The pixel members of the
+.PN XColor
+structures are ignored; only the RGB values are used.
+.LP
+.PN XRecolorCursor
+can generate a
+.PN BadCursor
+error.
+.LP
+.sp
+To free (destroy) a given cursor, use
+.PN XFreeCursor .
+.IN "XFreeCursor" "" "@DEF@"
+.sM
+.FD 0
+XFreeCursor\^(\^\fIdisplay\fP, \fIcursor\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Cursor \fIcursor\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcursor\fP 1i
+Specifies the cursor.
+.LP
+.eM
+The
+.PN XFreeCursor
+function deletes the association between the cursor resource ID
+and the specified cursor.
+The cursor storage is freed when no other resource references it.
+The specified cursor ID should not be referred to again.
+.LP
+.PN XFreeCursor
+can generate a
+.PN BadCursor
+error.
+.bp
diff --git a/specs/X11/CH06 b/specs/X11/CH06
new file mode 100644
index 0000000..44824d3
--- /dev/null
+++ b/specs/X11/CH06
@@ -0,0 +1,4773 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 6\fP\s-1
+
+\s+1\fBColor Management Functions\fP\s-1
+.sp 2
+.nr H1 6
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 6: Color Management Functions
+.XE
+Each X window always has an associated colormap that
+provides a level of indirection between pixel values and colors displayed
+on the screen.
+Xlib provides functions that you can use to manipulate a colormap.
+The X protocol defines colors using values in the RGB color space.
+The RGB color space is device dependent;
+rendering an RGB value on differing output devices typically results
+in different colors.
+Xlib also provides a means for clients to specify color using
+device-independent color spaces for consistent results across devices.
+Xlib supports device-independent color spaces derivable from the CIE XYZ
+color space.
+This includes the CIE XYZ, xyY, L*u*v*, and L*a*b* color spaces as well as
+the TekHVC color space.
+.LP
+This chapter discusses how to:
+.IP \(bu 5
+Create, copy, and destroy a colormap
+.IP \(bu 5
+Specify colors by name or value
+.IP \(bu 5
+Allocate, modify, and free color cells
+.IP \(bu 5
+Read entries in a colormap
+.IP \(bu 5
+Convert between color spaces
+.IP \(bu 5
+Control aspects of color conversion
+.IP \(bu 5
+Query the color gamut of a screen
+.IP \(bu 5
+Add new color spaces
+.LP
+All functions, types, and symbols in this chapter with the prefix ``Xcms''
+are defined in
+.hN X11/Xcms.h .
+The remaining functions and types are defined in
+.hN X11/Xlib.h .
+.LP
+Functions in this chapter manipulate the representation of color on the
+screen.
+For each possible value that a pixel can take in a window,
+there is a color cell in the colormap.
+For example,
+if a window is 4 bits deep, pixel values 0 through 15 are defined.
+A colormap is a collection of color cells.
+A color cell consists of a triple of red, green, and blue (RGB) values.
+The hardware imposes limits on the number of significant
+bits in these values.
+As each pixel is read out of display memory, the pixel
+is looked up in a colormap.
+The RGB value of the cell determines what color is displayed on the screen.
+On a grayscale display with a black-and-white monitor,
+the values are combined to determine the brightness on the screen.
+.LP
+Typically, an application allocates color cells or sets of color cells
+to obtain the desired colors.
+The client can allocate read-only cells.
+In which case,
+the pixel values for these colors can be shared among multiple applications,
+and the RGB value of the cell cannot be changed.
+If the client allocates read/write cells,
+they are exclusively owned by the client,
+and the color associated with the pixel value can be changed at will.
+Cells must be allocated (and, if read/write, initialized with an RGB value)
+by a client to obtain desired colors.
+The use of pixel value for an
+unallocated cell results in an undefined color.
+.LP
+Because colormaps are associated with windows, X supports displays
+with multiple colormaps and, indeed, different types of colormaps.
+If there are insufficient colormap resources in the display,
+some windows will display in their true colors, and others
+will display with incorrect colors.
+A window manager usually controls which windows are displayed
+in their true colors if more than one colormap is required for
+the color resources the applications are using.
+At any time, there is a set of installed colormaps for a screen.
+Windows using one of the installed colormaps display with true colors, and
+windows using other colormaps generally display with incorrect colors.
+You can control the set of installed colormaps by using
+.PN XInstallColormap
+and
+.PN XUninstallColormap .
+.LP
+Colormaps are local to a particular screen.
+Screens always have a default colormap,
+and programs typically allocate cells out of this colormap.
+Generally, you should not write applications that monopolize
+color resources.
+Although some hardware supports multiple colormaps installed at one time,
+many of the hardware displays
+built today support only a single installed colormap, so the primitives
+are written to encourage sharing of colormap entries between applications.
+.LP
+The
+.PN DefaultColormap
+macro returns the default colormap.
+The
+.PN DefaultVisual
+macro
+returns the default visual type for the specified screen.
+.IN "Color map"
+Possible visual types are
+.PN StaticGray ,
+.PN GrayScale ,
+.PN StaticColor ,
+.PN PseudoColor ,
+.PN TrueColor ,
+or
+.PN DirectColor
+(see section 3.1).
+.NH 2
+Color Structures
+.XS
+\*(SN Color Structures
+.XE
+.LP
+Functions that operate only on RGB color space values use an
+.PN XColor
+structure, which contains:
+.LP
+.IN "XColor" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ unsigned long pixel; /* pixel value */
+ unsigned short red, green, blue; /* rgb values */
+ char flags; /* DoRed, DoGreen, DoBlue */
+ char pad;
+} XColor;
+.De
+.LP
+.eM
+The red, green, and blue values are always in the range 0 to 65535
+inclusive, independent of the number of bits actually used in the
+display hardware.
+The server scales these values down to the range used by the hardware.
+Black is represented by (0,0,0),
+and white is represented by (65535,65535,65535).
+.IN "Color"
+In some functions,
+the flags member controls which of the red, green, and blue members is used
+and can be the inclusive OR of zero or more of
+.PN DoRed ,
+.PN DoGreen ,
+and
+.PN DoBlue .
+.LP
+.sp
+Functions that operate on all color space values use an
+.PN XcmsColor
+structure.
+This structure contains a union of substructures,
+each supporting color specification encoding for a particular color space.
+Like the
+.PN XColor
+structure, the
+.PN XcmsColor
+structure contains pixel
+and color specification information (the spec member in the
+.PN XcmsColor
+structure).
+.IN "XcmsColor" "" "@DEF@"
+.sM
+.LP
+.Ds 0
+.TA .5i 1i 2.5i
+.ta .5i 1i 2.5i
+typedef unsigned long XcmsColorFormat; /* Color Specification Format */
+
+typedef struct {
+ union {
+ XcmsRGB RGB;
+ XcmsRGBi RGBi;
+ XcmsCIEXYZ CIEXYZ;
+ XcmsCIEuvY CIEuvY;
+ XcmsCIExyY CIExyY;
+ XcmsCIELab CIELab;
+ XcmsCIELuv CIELuv;
+ XcmsTekHVC TekHVC;
+ XcmsPad Pad;
+ } spec;
+ unsigned long pixel;
+ XcmsColorFormat format;
+} XcmsColor; /* Xcms Color Structure */
+.De
+.LP
+.eM
+Because the color specification can be encoded for the various color spaces,
+encoding for the spec member is identified by the format member,
+which is of type
+.PN XcmsColorFormat .
+The following macros define standard formats.
+.sM
+.TS
+lw(.5i) lw(1.6i) lw(1.4i) lw(1.5i).
+T{
+#define
+T} T{
+.PN XcmsUndefinedFormat
+T} T{
+0x00000000
+T}
+T{
+#define
+T} T{
+.PN XcmsCIEXYZFormat
+T} T{
+0x00000001
+T} T{
+/* CIE XYZ */
+T}
+T{
+#define
+T} T{
+.PN XcmsCIEuvYFormat
+T} T{
+0x00000002
+T} T{
+/* CIE u'v'Y */
+T}
+T{
+#define
+T} T{
+.PN XcmsCIExyYFormat
+T} T{
+0x00000003
+T} T{
+/* CIE xyY */
+T}
+T{
+#define
+T} T{
+.PN XcmsCIELabFormat
+T} T{
+0x00000004
+T} T{
+/* CIE L*a*b* */
+T}
+T{
+#define
+T} T{
+.PN XcmsCIELuvFormat
+T} T{
+0x00000005
+T} T{
+/* CIE L*u*v* */
+T}
+T{
+#define
+T} T{
+.PN XcmsTekHVCFormat
+T} T{
+0x00000006
+T} T{
+/* TekHVC */
+T}
+T{
+#define
+T} T{
+.PN XcmsRGBFormat
+T} T{
+0x80000000
+T} T{
+/* RGB Device */
+T}
+T{
+#define
+T} T{
+.PN XcmsRGBiFormat
+T} T{
+0x80000001
+T} T{
+/* RGB Intensity */
+T}
+.TE
+.LP
+.eM
+Formats for device-independent color spaces are
+distinguishable from those for device-dependent spaces by the 32nd bit.
+If this bit is set,
+it indicates that the color specification is in a device-dependent form;
+otherwise, it is in a device-independent form.
+If the 31st bit is set,
+this indicates that the color space has been added to Xlib at run time
+(see section 6.12.4).
+The format value for a color space added at run time may be different each
+time the program is executed.
+If references to such a color space must be made outside the client
+(for example, storing a color specification in a file),
+then reference should be made by color space string prefix
+(see
+.PN XcmsFormatOfPrefix
+and
+.PN XcmsPrefixOfFormat ).
+.LP
+Data types that describe the color specification encoding for the various
+color spaces are defined as follows:
+.sM
+.IN "XcmsRGB" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef double XcmsFloat;
+
+typedef struct {
+ unsigned short red; /* 0x0000 to 0xffff */
+ unsigned short green; /* 0x0000 to 0xffff */
+ unsigned short blue; /* 0x0000 to 0xffff */
+} XcmsRGB; /* RGB Device */
+.De
+.IN "XcmsRGBi" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat red; /* 0.0 to 1.0 */
+ XcmsFloat green; /* 0.0 to 1.0 */
+ XcmsFloat blue; /* 0.0 to 1.0 */
+} XcmsRGBi; /* RGB Intensity */
+.De
+.IN "XcmsCIEXYZ" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat X;
+ XcmsFloat Y; /* 0.0 to 1.0 */
+ XcmsFloat Z;
+} XcmsCIEXYZ; /* CIE XYZ */
+.De
+.IN "XcmsCIEuvY" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat u_prime; /* 0.0 to ~0.6 */
+ XcmsFloat v_prime; /* 0.0 to ~0.6 */
+ XcmsFloat Y; /* 0.0 to 1.0 */
+} XcmsCIEuvY; /* CIE u'v'Y */
+.De
+.IN "XcmsCIExyY" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat x; /* 0.0 to ~.75 */
+ XcmsFloat y; /* 0.0 to ~.85 */
+ XcmsFloat Y; /* 0.0 to 1.0 */
+} XcmsCIExyY; /* CIE xyY */
+.De
+.IN "XcmsCIELab" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat L_star; /* 0.0 to 100.0 */
+ XcmsFloat a_star;
+ XcmsFloat b_star;
+} XcmsCIELab; /* CIE L*a*b* */
+.De
+.IN "XcmsCIELuv" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat L_star; /* 0.0 to 100.0 */
+ XcmsFloat u_star;
+ XcmsFloat v_star;
+} XcmsCIELuv; /* CIE L*u*v* */
+.De
+.IN "XcmsTekHVC" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat H; /* 0.0 to 360.0 */
+ XcmsFloat V; /* 0.0 to 100.0 */
+ XcmsFloat C; /* 0.0 to 100.0 */
+} XcmsTekHVC; /* TekHVC */
+.De
+.IN "XcmsPad" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ XcmsFloat pad0;
+ XcmsFloat pad1;
+ XcmsFloat pad2;
+ XcmsFloat pad3;
+} XcmsPad; /* four doubles */
+.De
+.LP
+.eM
+The device-dependent formats provided allow color specification in:
+.IP \(bu 5
+RGB Intensity
+.Pn ( XcmsRGBi )
+.IP
+Red, green, and blue linear intensity values,
+floating-point values from 0.0 to 1.0,
+where 1.0 indicates full intensity, 0.5 half intensity, and so on.
+.IP \(bu 5
+RGB Device
+.Pn ( XcmsRGB )
+.IP
+Red, green, and blue values appropriate for the specified output device.
+.PN XcmsRGB
+values are of type unsigned short,
+scaled from 0 to 65535 inclusive,
+and are interchangeable with the red, green, and blue values in an
+.PN XColor
+structure.
+.LP
+It is important to note that RGB Intensity values are not gamma corrected
+values.
+In contrast,
+RGB Device values generated as a result of converting color specifications
+are always gamma corrected, and
+RGB Device values acquired as a result of querying a colormap
+or passed in by the client are assumed by Xlib to be gamma corrected.
+The term \fIRGB value\fP in this manual always refers to an RGB Device value.
+.NH 2
+Color Strings
+.XS
+\*(SN Color Strings
+.XE
+.LP
+Xlib provides a mechanism for using string names for colors.
+A color string may either contain an abstract color name
+or a numerical color specification.
+Color strings are case-insensitive.
+.LP
+Color strings are used in the following functions:
+.IP \(bu 5
+.PN XAllocNamedColor
+.IP \(bu 5
+.PN XcmsAllocNamedColor
+.IP \(bu 5
+.PN XLookupColor
+.IP \(bu 5
+.PN XcmsLookupColor
+.IP \(bu 5
+.PN XParseColor
+.IP \(bu 5
+.PN XStoreNamedColor
+.LP
+Xlib supports the use of abstract color names, for example, red or blue.
+A value for this abstract name is obtained by searching one or more color
+name databases.
+Xlib first searches zero or more client-side databases;
+the number, location, and content of these databases is
+implementation-dependent and might depend on the current locale.
+If the name is not found, Xlib then looks for the color in the
+X server's database.
+If the color name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+.LP
+A numerical color specification
+consists of a color space name and a set of values in the following syntax:
+.LP
+.sM
+.Ds 0
+\fI<color_space_name>\fP:\fI<value>/.../<value>\fP
+.De
+.LP
+.eM
+The following are examples of valid color strings.
+.LP
+.Ds 0
+"CIEXYZ:0.3227/0.28133/0.2493"
+"RGBi:1.0/0.0/0.0"
+"rgb:00/ff/00"
+"CIELuv:50.0/0.0/0.0"
+.De
+The syntax and semantics of numerical specifications are given
+for each standard color space in the following sections.
+.NH 3
+RGB Device String Specification
+.XS
+\*(SN RGB Device String Specification
+.XE
+.LP
+An RGB Device specification is identified by
+the prefix ``rgb:'' and conforms to the following syntax:
+.LP
+.\" Start marker code here
+.Ds 0
+rgb:\fI<red>/<green>/<blue>\fP
+
+ \fI<red>\fP, \fI<green>\fP, \fI<blue>\fP := \fIh\fP | \fIhh\fP | \fIhhh\fP | \fIhhhh\fP
+ \fIh\fP := single hexadecimal digits (case insignificant)
+.De
+.\" End marker code here
+.LP
+Note that \fIh\fP indicates the value scaled in 4 bits,
+\fIhh\fP the value scaled in 8 bits,
+\fIhhh\fP the value scaled in 12 bits,
+and \fIhhhh\fP the value scaled in 16 bits, respectively.
+.LP
+Typical examples are the strings ``rgb:ea/75/52'' and ``rgb:ccc/320/320'',
+but mixed numbers of hexadecimal digit strings
+(``rgb:ff/a5/0'' and ``rgb:ccc/32/0'')
+are also allowed.
+.LP
+For backward compatibility, an older syntax for RGB Device is
+supported, but its continued use is not encouraged.
+The syntax is an initial sharp sign character followed by
+a numeric specification, in one of the following formats:
+.LP
+.\" Start marker code here
+.Ds 0
+.TA 2i
+.ta 2i
+#RGB (4 bits each)
+#RRGGBB (8 bits each)
+#RRRGGGBBB (12 bits each)
+#RRRRGGGGBBBB (16 bits each)
+.De
+.\" End marker code here
+.LP
+The R, G, and B represent single hexadecimal digits.
+When fewer than 16 bits each are specified,
+they represent the most significant bits of the value
+(unlike the ``rgb:'' syntax, in which values are scaled).
+For example, the string ``#3a7'' is the same as ``#3000a0007000''.
+.NH 3
+RGB Intensity String Specification
+.XS
+\*(SN RGB Intensity String Specification
+.XE
+.LP
+An RGB intensity specification is identified
+by the prefix ``rgbi:'' and conforms to the following syntax:
+.LP
+.\" Start marker code here
+.Ds 0
+rgbi:\fI<red>/<green>/<blue>\fP
+.De
+.\" End marker code here
+.LP
+Note that red, green, and blue are floating-point values
+between 0.0 and 1.0, inclusive.
+The input format for these values is an optional sign,
+a string of numbers possibly containing a decimal point,
+and an optional exponent field containing an E or e
+followed by a possibly signed integer string.
+.NH 3
+Device-Independent String Specifications
+.XS
+\*(SN Device-Independent String Specifications
+.XE
+.LP
+The standard device-independent string specifications have
+the following syntax:
+.LP
+.\" Start marker code here
+.Ds 0
+CIEXYZ:\fI<X>/<Y>/<Z>\fP
+CIEuvY:\fI<u>/<v>/<Y>\fP
+CIExyY:\fI<x>/<y>/<Y>\fP
+CIELab:\fI<L>/<a>/<b>\fP
+CIELuv:\fI<L>/<u>/<v>\fP
+TekHVC:\fI<H>/<V>/<C>\fP
+.De
+.\" End marker code here
+.LP
+All of the values (C, H, V, X, Y, Z, a, b, u, v, y, x) are
+floating-point values.
+The syntax for these values is an optional plus or minus sign,
+a string of digits possibly containing a decimal point,
+and an optional exponent field consisting of an ``E'' or ``e''
+followed by an optional plus or minus followed by a string of digits.
+.NH 2
+Color Conversion Contexts and Gamut Mapping
+.XS
+\*(SN Color Conversion Contexts and Gamut Mapping
+.XE
+.LP
+When Xlib converts device-independent color specifications
+into device-dependent specifications and vice versa,
+it uses knowledge about the color limitations of the screen hardware.
+This information, typically called the device profile,
+.IN "Device profile"
+is available in a Color Conversion Context (CCC).
+.IN "Color Conversion Context"
+.IN "CCC"
+.LP
+Because a specified color may be outside the color gamut of the target screen
+and the white point associated with the color specification may differ
+from the white point inherent to the screen,
+Xlib applies gamut mapping when it encounters certain conditions:
+.IN "White point"
+.IP \(bu 5
+Gamut compression occurs when conversion of device-independent
+color specifications to device-dependent color specifications
+results in a color out of the target screen's gamut.
+.IP \(bu 5
+White adjustment occurs when the inherent white point of the screen
+differs from the white point assumed by the client.
+.LP
+Gamut handling methods are stored as callbacks in the CCC,
+which in turn are used by the color space conversion routines.
+Client data is also stored in the CCC for each callback.
+The CCC also contains the white point the client assumes to be
+associated with color specifications (that is, the Client White Point).
+.IN "Client White Point"
+.IN "Gamut compression"
+.IN "Gamut handling"
+.IN "White point adjustment"
+The client can specify the gamut handling callbacks and client data
+as well as the Client White Point.
+Xlib does not preclude the X client from performing other
+forms of gamut handling (for example, gamut expansion);
+however, Xlib does not provide direct support for gamut handling
+other than white adjustment and gamut compression.
+.LP
+Associated with each colormap is an initial CCC transparently generated by
+Xlib.
+.IN "Color Conversion Context" "creation"
+Therefore,
+when you specify a colormap as an argument to an Xlib function,
+you are indirectly specifying a CCC.
+.IN "CCC" "of colormap"
+.IN "Color Conversion Context" "of colormap"
+There is a default CCC associated with each screen.
+Newly created CCCs inherit attributes from the default CCC,
+so the default CCC attributes can be modified to affect new CCCs.
+.IN "CCC" "default"
+.IN "Color Conversion Context" "default"
+.LP
+Xcms functions in which gamut mapping can occur return
+.PN Status
+and have specific status values defined for them,
+as follows:
+.IP \(bu 5
+.PN XcmsFailure
+indicates that the function failed.
+.IP \(bu 5
+.PN XcmsSuccess
+indicates that the function succeeded.
+In addition,
+if the function performed any color conversion,
+the colors did not need to be compressed.
+.IP \(bu 5
+.PN XcmsSuccessWithCompression
+indicates the function performed color conversion
+and at least one of the colors needed to be compressed.
+The gamut compression method is determined by the gamut compression
+procedure in the CCC that is specified directly as a function argument
+or in the CCC indirectly specified by means of the colormap argument.
+.NH 2
+Creating, Copying, and Destroying Colormaps
+.XS
+\*(SN Creating, Copying, and Destroying Colormaps
+.XE
+.LP
+To create a colormap for a screen, use
+.PN XCreateColormap .
+.IN "XCreateColormap" "" "@DEF@"
+.sM
+.FD 0
+Colormap XCreateColormap\^(\^\fIdisplay\fP, \fIw\fP\^, \fIvisual\fP\^, \fIalloc\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Visual *\fIvisual\fP\^;
+.br
+ int \fIalloc\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi on whose screen you want to create a colormap
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIvisual\fP 1i
+Specifies a visual type supported on the screen.
+If the visual type is not one supported by the screen,
+a
+.PN BadMatch
+error results.
+.IP \fIalloc\fP 1i
+Specifies the colormap entries to be allocated.
+You can pass
+.PN AllocNone
+or
+.PN AllocAll .
+.LP
+.eM
+The
+.PN XCreateColormap
+function creates a colormap of the specified visual type for the screen
+on which the specified window resides and returns the colormap ID
+associated with it.
+Note that the specified window is only used to determine the screen.
+.LP
+The initial values of the colormap entries are undefined for the
+visual classes
+.PN GrayScale ,
+.PN PseudoColor ,
+and
+.PN DirectColor .
+For
+.PN StaticGray ,
+.PN StaticColor ,
+and
+.PN TrueColor ,
+the entries have defined values,
+but those values are specific to the visual and are not defined by X.
+For
+.PN StaticGray ,
+.PN StaticColor ,
+and
+.PN TrueColor ,
+alloc must be
+.PN AllocNone ,
+or a
+.PN BadMatch
+error results.
+For the other visual classes,
+if alloc is
+.PN AllocNone ,
+the colormap initially has no allocated entries,
+and clients can allocate them.
+For information about the visual types,
+see section 3.1.
+.LP
+If alloc is
+.PN AllocAll ,
+the entire colormap is allocated writable.
+The initial values of all allocated entries are undefined.
+For
+.PN GrayScale
+and
+.PN PseudoColor ,
+the effect is as if an
+.PN XAllocColorCells
+call returned all pixel values from zero to N \- 1,
+where N is the colormap entries value in the specified visual.
+For
+.PN DirectColor ,
+the effect is as if an
+.PN XAllocColorPlanes
+call returned a pixel value of zero and red_mask, green_mask,
+and blue_mask values containing the same bits as the corresponding
+masks in the specified visual.
+However, in all cases,
+none of these entries can be freed by using
+.PN XFreeColors .
+.LP
+.PN XCreateColormap
+can generate
+.PN BadAlloc ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To create a new colormap when the allocation out of a previously
+shared colormap has failed because of resource exhaustion, use
+.PN XCopyColormapAndFree .
+.IN "XCopyColormapAndFree" "" "@DEF@"
+.sM
+.FD 0
+Colormap XCopyColormapAndFree\^(\^\fIdisplay\fP, \fIcolormap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.LP
+.eM
+The
+.PN XCopyColormapAndFree
+function creates a colormap of the same visual type and for the same screen
+as the specified colormap and returns the new colormap ID.
+It also moves all of the client's existing allocation from the specified
+colormap to the new colormap with their color values intact
+and their read-only or writable characteristics intact and frees those entries
+in the specified colormap.
+Color values in other entries in the new colormap are undefined.
+If the specified colormap was created by the client with alloc set to
+.PN AllocAll ,
+the new colormap is also created with
+.PN AllocAll ,
+all color values for all entries are copied from the specified colormap,
+and then all entries in the specified colormap are freed.
+If the specified colormap was not created by the client with
+.PN AllocAll ,
+the allocations to be moved are all those pixels and planes
+that have been allocated by the client using
+.PN XAllocColor ,
+.PN XAllocNamedColor ,
+.PN XAllocColorCells ,
+or
+.PN XAllocColorPlanes
+and that have not been freed since they were allocated.
+.LP
+.PN XCopyColormapAndFree
+can generate
+.PN BadAlloc
+and
+.PN BadColor
+errors.
+.LP
+.sp
+To destroy a colormap, use
+.PN XFreeColormap .
+.IN "XFreeColormap" "" "@DEF@"
+.sM
+.FD 0
+XFreeColormap\^(\^\fIdisplay\fP, \fIcolormap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Cm that you want to destroy
+.IP \fIcolormap\fP 1i
+Specifies the colormap \*(Cm.
+.LP
+.eM
+The
+.PN XFreeColormap
+function deletes the association between the colormap resource ID
+and the colormap and frees the colormap storage.
+However, this function has no effect on the default colormap for a screen.
+If the specified colormap is an installed map for a screen,
+it is uninstalled (see
+.PN XUninstallColormap ).
+If the specified colormap is defined as the colormap for a window (by
+.PN XCreateWindow ,
+.PN XSetWindowColormap ,
+or
+.PN XChangeWindowAttributes ),
+.PN XFreeColormap
+changes the colormap associated with the window to
+.PN None
+and generates a
+.PN ColormapNotify
+event.
+X does not define the colors displayed for a window with a colormap of
+.PN None .
+.LP
+.PN XFreeColormap
+can generate a
+.PN BadColor
+error.
+.NH 2
+Mapping Color Names to Values
+.XS
+\*(SN Mapping Color Names to Values
+.XE
+.LP
+.sp
+To map a color name to an RGB value, use
+.PN XLookupColor .
+.IN "Color" "naming"
+.IN "XLookupColor" "" "@DEF@"
+.sM
+.FD 0
+Status XLookupColor\^(\^\fIdisplay\fP, \fIcolormap\fP, \fIcolor_name\fP, \
+\fIexact_def_return\fP\^, \fIscreen_def_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ char *\fIcolor_name\fP\^;
+.br
+ XColor *\fIexact_def_return\fP\^, *\fIscreen_def_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor_name\fP 1i
+Specifies the color name string (for example, red) whose color
+definition structure you want returned.
+.IP \fIexact_def_return\fP 1i
+Returns the exact RGB values.
+.IP \fIscreen_def_return\fP 1i
+Returns the closest RGB values provided by the hardware.
+.LP
+.eM
+The
+.PN XLookupColor
+function looks up the string name of a color with respect to the screen
+associated with the specified colormap.
+It returns both the exact color values and
+the closest values provided by the screen
+with respect to the visual type of the specified colormap.
+If the color name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+.PN XLookupColor
+returns nonzero if the name is resolved;
+otherwise, it returns zero.
+.LP
+.PN XLookupColor
+can generate a
+.PN BadColor
+error.
+.LP
+.sp
+To map a color name to the exact RGB value, use
+.PN XParseColor .
+.IN "Color" "naming"
+.IN "XParseColor" "" "@DEF@"
+.sM
+.FD 0
+Status XParseColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \^\fIspec\fP\^, \fIexact_def_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ char *\fIspec\fP\^;
+.br
+ XColor *\fIexact_def_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIspec\fP 1i
+Specifies the color name string;
+case is ignored.
+.IP \fIexact_def_return\fP 1i
+Returns the exact color value for later use and sets the
+.PN DoRed ,
+.PN DoGreen ,
+and
+.PN DoBlue
+flags.
+.LP
+.eM
+The
+.PN XParseColor
+function looks up the string name of a color with respect to the screen
+associated with the specified colormap.
+It returns the exact color value.
+If the color name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+.PN XParseColor
+returns nonzero if the name is resolved;
+otherwise, it returns zero.
+.LP
+.PN XParseColor
+can generate a
+.PN BadColor
+error.
+.LP
+.sp
+To map a color name to a value in an arbitrary color space, use
+.PN XcmsLookupColor .
+.IN "Color" "naming"
+.IN "XcmsLookupColor" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsLookupColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolor_string\fP\^, \fIcolor_exact_return\fP\^, \fIcolor_screen_return\fP\^,
+.br
+ \fIresult_format\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ char *\fIcolor_string\fP\^;
+.br
+ XcmsColor *\fIcolor_exact_return\fP\^, *\fIcolor_screen_return\fP\^;
+.br
+ XcmsColorFormat \fIresult_format\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.ds St
+.IP \fIcolor_string\fP 1i
+Specifies the color string\*(St.
+.IP \fIcolor_exact_return\fP 1i
+Returns the color specification parsed from the color string
+or parsed from the corresponding string found in a color-name database.
+.IP \fIcolor_screen_return\fP 1i
+Returns the color that can be reproduced on the screen.
+.IP \fIresult_format\fP 1i
+Specifies the color format for the returned color
+specifications (color_screen_return and color_exact_return arguments).
+If the format is
+.PN XcmsUndefinedFormat
+and the color string contains a
+numerical color specification,
+the specification is returned in the format used in that numerical
+color specification.
+If the format is
+.PN XcmsUndefinedFormat
+and the color string contains a color name,
+the specification is returned in the format used
+to store the color in the database.
+.LP
+.eM
+The
+.PN XcmsLookupColor
+function looks up the string name of a color with respect to the screen
+associated with the specified colormap.
+It returns both the exact color values and
+the closest values provided by the screen
+with respect to the visual type of the specified colormap.
+The values are returned in the format specified by result_format.
+If the color name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+.PN XcmsLookupColor
+returns
+.PN XcmsSuccess
+or
+.PN XcmsSuccessWithCompression
+if the name is resolved; otherwise, it returns
+.PN XcmsFailure .
+If
+.PN XcmsSuccessWithCompression
+is returned, the color specification returned in
+color_screen_return is the result of gamut compression.
+.NH 2
+Allocating and Freeing Color Cells
+.XS
+\*(SN Allocating and Freeing Color Cells
+.XE
+.LP
+There are two ways of allocating color cells:
+explicitly as read-only entries, one pixel value at a time,
+or read/write,
+where you can allocate a number of color cells and planes simultaneously.
+.IN "Read-only colormap cells"
+A read-only cell has its RGB value set by the server.
+.IN "Read/write colormap cells"
+Read/write cells do not have defined colors initially;
+functions described in the next section must be used to store values into them.
+Although it is possible for any client to store values into a read/write
+cell allocated by another client,
+read/write cells normally should be considered private to the client
+that allocated them.
+.LP
+Read-only colormap cells are shared among clients.
+The server counts each allocation and freeing of the cell by clients.
+When the last client frees a shared cell, the cell is finally deallocated.
+If a single client allocates the same read-only cell multiple
+times, the server counts each such allocation, not just the first one.
+.LP
+.sp
+To allocate a read-only color cell with an RGB value, use
+.PN XAllocColor .
+.IN "Allocation" "read-only colormap cells"
+.IN "Read-only colormap cells" "allocating"
+.IN "Color" "allocation"
+.IN "XAllocColor" "" "@DEF@"
+.sM
+.FD 0
+Status XAllocColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIscreen_in_out\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XColor *\fIscreen_in_out\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIscreen_in_out\fP 1i
+Specifies and returns the values actually used in the colormap.
+.LP
+.eM
+The
+.PN XAllocColor
+function allocates a read-only colormap entry corresponding to the closest
+RGB value supported by the hardware.
+.PN XAllocColor
+returns the pixel value of the color closest to the specified
+RGB elements supported by the hardware
+and returns the RGB value actually used.
+The corresponding colormap cell is read-only.
+In addition,
+.PN XAllocColor
+returns nonzero if it succeeded or zero if it failed.
+.IN "Color map"
+.IN "Color" "allocation"
+.IN "Allocation" "colormap"
+.IN "read-only colormap cells"
+Multiple clients that request the same effective RGB value can be assigned
+the same read-only entry, thus allowing entries to be shared.
+When the last client deallocates a shared cell, it is deallocated.
+.PN XAllocColor
+does not use or affect the flags in the
+.PN XColor
+structure.
+.LP
+.PN XAllocColor
+can generate a
+.PN BadColor
+error.
+.EQ
+delim %%
+.EN
+.LP
+.sp
+To allocate a read-only color cell with a color in arbitrary format, use
+.PN XcmsAllocColor .
+.IN "Allocation" "read-only colormap cells"
+.IN "Read-only colormap cells" "allocating"
+.IN "Color" "allocation"
+.IN "XcmsAllocColor" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsAllocColor\^(\^\fIdisplay\fP\^, \fIcolormap\fP\^, \fIcolor_in_out\fP\^, \fIresult_format\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XcmsColor *\fIcolor_in_out\fP\^;
+.br
+ XcmsColorFormat \fIresult_format\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor_in_out\fP 1i
+Specifies the color to allocate and returns the pixel and color
+that is actually used in the colormap.
+.IP \fIresult_format\fP 1i
+Specifies the color format for the returned color specification.
+.LP
+.eM
+The
+.PN XcmsAllocColor
+function is similar to
+.PN XAllocColor
+except the color can be specified in any format.
+The
+.PN XcmsAllocColor
+function ultimately calls
+.PN XAllocColor
+to allocate a read-only color cell (colormap entry) with the specified color.
+.PN XcmsAllocColor
+first converts the color specified
+to an RGB value and then passes this to
+.PN XAllocColor .
+.PN XcmsAllocColor
+returns the pixel value of the color cell and the color specification
+actually allocated.
+This returned color specification is the result of converting the RGB value
+returned by
+.PN XAllocColor
+into the format specified with the result_format argument.
+If there is no interest in a returned color specification,
+unnecessary computation can be bypassed if result_format is set to
+.PN XcmsRGBFormat .
+The corresponding colormap cell is read-only.
+If this routine returns
+.PN XcmsFailure ,
+the color_in_out color specification is left unchanged.
+.LP
+.PN XcmsAllocColor
+can generate a
+.PN BadColor
+error.
+.LP
+.sp
+To allocate a read-only color cell using a color name and return the closest
+color supported by the hardware in RGB format, use
+.PN XAllocNamedColor .
+.IN "Allocation" "read-only colormap cells"
+.IN "Read-only colormap cells" "allocating"
+.IN "Color" "naming"
+.IN "Color" "allocation"
+.IN "XAllocNamedColor" "" "@DEF@"
+.sM
+.FD 0
+Status XAllocNamedColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \
+\fIcolor_name\fP\^, \fIscreen_def_return\fP\^, \fIexact_def_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ char *\fIcolor_name\fP\^;
+.br
+ XColor *\fIscreen_def_return\fP\^, *\fIexact_def_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor_name\fP 1i
+Specifies the color name string (for example, red) whose color
+definition structure you want returned.
+.IP \fIscreen_def_return\fP 1i
+Returns the closest RGB values provided by the hardware.
+.IP \fIexact_def_return\fP 1i
+Returns the exact RGB values.
+.LP
+.eM
+The
+.PN XAllocNamedColor
+function looks up the named color with respect to the screen that is
+associated with the specified colormap.
+It returns both the exact database definition and
+the closest color supported by the screen.
+The allocated color cell is read-only.
+The pixel value is returned in screen_def_return.
+If the color name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+If screen_def_return and exact_def_return
+point to the same structure, the pixel field will be set correctly,
+but the color values are undefined.
+.PN XAllocNamedColor
+returns nonzero if a cell is allocated;
+otherwise, it returns zero.
+.LP
+.PN XAllocNamedColor
+can generate a
+.PN BadColor
+error.
+.LP
+.sp
+To allocate a read-only color cell using a color name and return the closest
+color supported by the hardware in an arbitrary format, use
+.PN XcmsAllocNamedColor .
+.IN "Allocation" "read-only colormap cells"
+.IN "Read-only colormap cells" "allocating"
+.IN "Color" "naming"
+.IN "Color" "allocation"
+.IN "XcmsAllocNamedColor" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsAllocNamedColor\^(\^\fIdisplay\fP\^, \fIcolormap\fP\^, \fIcolor_string\fP\^, \fIcolor_screen_return\fP\^, \fIcolor_exact_return\fP\^,
+.br
+ \fIresult_format\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ char *\fIcolor_string\fP\^;
+.br
+ XcmsColor *\fIcolor_screen_return\fP\^;
+.br
+ XcmsColor *\fIcolor_exact_return\fP\^;
+.br
+ XcmsColorFormat \fIresult_format\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.ds St \ whose color definition structure is to be returned
+.IP \fIcolor_string\fP 1i
+Specifies the color string\*(St.
+.IP \fIcolor_screen_return\fP 1i
+Returns the pixel value of the color cell and color specification
+that actually is stored for that cell.
+.IP \fIcolor_exact_return\fP 1i
+Returns the color specification parsed from the color string
+or parsed from the corresponding string found in a color-name database.
+.IP \fIresult_format\fP 1i
+Specifies the color format for the returned color
+specifications (color_screen_return and color_exact_return arguments).
+If the format is
+.PN XcmsUndefinedFormat
+and the color string contains a
+numerical color specification,
+the specification is returned in the format used in that numerical
+color specification.
+If the format is
+.PN XcmsUndefinedFormat
+and the color string contains a color name,
+the specification is returned in the format used
+to store the color in the database.
+.LP
+.eM
+The
+.PN XcmsAllocNamedColor
+function is similar to
+.PN XAllocNamedColor
+except that the color returned can be in any format specified.
+This function
+ultimately calls
+.PN XAllocColor
+to allocate a read-only color cell with
+the color specified by a color string.
+The color string is parsed into an
+.PN XcmsColor
+structure (see
+.PN XcmsLookupColor ),
+converted
+to an RGB value, and finally passed to
+.PN XAllocColor .
+If the color name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+.LP
+This function returns both the color specification as a result
+of parsing (exact specification) and the actual color specification
+stored (screen specification).
+This screen specification is the result of converting the RGB value
+returned by
+.PN XAllocColor
+into the format specified in result_format.
+If there is no interest in a returned color specification,
+unnecessary computation can be bypassed if result_format is set to
+.PN XcmsRGBFormat .
+If color_screen_return and color_exact_return
+point to the same structure, the pixel field will be set correctly,
+but the color values are undefined.
+.LP
+.PN XcmsAllocNamedColor
+can generate a
+.PN BadColor
+error.
+.LP
+.sp
+To allocate read/write color cell and color plane combinations for a
+.PN PseudoColor
+model, use
+.PN XAllocColorCells .
+.IN "Read/write colormap cells" "allocating"
+.IN "Allocation" "read/write colormap cells"
+.IN "Color" "allocation"
+.IN "XAllocColorCells" "" "@DEF@"
+.sM
+.FD 0
+Status XAllocColorCells\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcontig\fP\^, \
+\fIplane_masks_return\fP\^, \fInplanes\fP\^,
+.br
+ \fIpixels_return\fP\^, \fInpixels\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ Bool \fIcontig\fP\^;
+.br
+ unsigned long \fIplane_masks_return\fP[\^]\^;
+.br
+ unsigned int \fInplanes\fP\^;
+.br
+ unsigned long \fIpixels_return\fP[\^]\^;
+.br
+ unsigned int \fInpixels\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcontig\fP 1i
+Specifies a Boolean value that indicates whether the planes must be contiguous.
+.IP \fIplane_mask_return\fP 1i
+Returns an array of plane masks.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.IP \fInplanes\fP 1i
+Specifies the number of plane masks that are to be returned in the plane masks
+array.
+.IP \fIpixels_return\fP 1i
+Returns an array of pixel values.
+.IP \fInpixels\fP 1i
+Specifies the number of pixel values that are to be returned in the
+pixels_return array.
+.LP
+.eM
+.EQ
+delim %%
+.EN
+The
+.PN XAllocColorCells
+function allocates read/write color cells.
+The number of colors must be positive and the number of planes nonnegative,
+or a
+.PN BadValue
+error results.
+If ncolors and nplanes are requested,
+then ncolors pixels
+and nplane plane masks are returned.
+No mask will have any bits set to 1 in common with
+any other mask or with any of the pixels.
+By ORing together each pixel with zero or more masks,
+ncolors * %2 sup nplanes% distinct pixels can be produced.
+All of these are
+allocated writable by the request.
+For
+.PN GrayScale
+or
+.PN PseudoColor ,
+each mask has exactly one bit set to 1.
+For
+.PN DirectColor ,
+each has exactly three bits set to 1.
+If contig is
+.PN True
+and if all masks are ORed
+together, a single contiguous set of bits set to 1 will be formed for
+.PN GrayScale
+or
+.PN PseudoColor
+and three contiguous sets of bits set to 1 (one within each
+pixel subfield) for
+.PN DirectColor .
+The RGB values of the allocated
+entries are undefined.
+.PN XAllocColorCells
+returns nonzero if it succeeded or zero if it failed.
+.LP
+.PN XAllocColorCells
+can generate
+.PN BadColor
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To allocate read/write color resources for a
+.PN DirectColor
+model, use
+.PN XAllocColorPlanes .
+.IN "Read/write colormap planes" "allocating"
+.IN "Allocation" "read/write colormap planes"
+.IN "Color" "allocation"
+.IN "XAllocColorPlanes" "" "@DEF@"
+.sM
+.FD 0
+Status XAllocColorPlanes\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcontig\fP\^, \fIpixels_return\fP\^, \fIncolors\fP\^, \fInreds\fP\^, \fIngreens\fP\^,
+.br
+ \fInblues\fP\^, \fIrmask_return\fP\^, \fIgmask_return\fP\^, \fIbmask_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ Bool \fIcontig\fP\^;
+.br
+ unsigned long \fIpixels_return\fP[\^]\^;
+.br
+ int \fIncolors\fP\^;
+.br
+ int \fInreds\fP\^, \fIngreens\fP\^, \fInblues\fP\^;
+.br
+ unsigned long *\fIrmask_return\fP\^, *\fIgmask_return\fP\^, *\fIbmask_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcontig\fP 1i
+Specifies a Boolean value that indicates whether the planes must be contiguous.
+.IP \fIpixels_return\fP 1i
+Returns an array of pixel values.
+.PN XAllocColorPlanes
+returns the pixel values in this array.
+.IP \fIncolors\fP 1i
+Specifies the number of pixel values that are to be returned in the
+pixels_return array.
+.IP \fInreds\fP 1i
+.br
+.ns
+.IP \fIngreens\fP 1i
+.br
+.ns
+.IP \fInblues\fP 1i
+.br
+.ns
+Specify the number of red, green, and blue planes.
+The value you pass must be nonnegative.
+.IP \fIrmask_return\fP 1i
+.br
+.ns
+.IP \fIgmask_return\fP 1i
+.br
+.ns
+.IP \fIbmask_return\fP 1i
+Return bit masks for the red, green, and blue planes.
+.LP
+.eM
+.EQ
+delim %%
+.EN
+The specified ncolors must be positive;
+and nreds, ngreens, and nblues must be nonnegative,
+or a
+.PN BadValue
+error results.
+If ncolors colors, nreds reds, ngreens greens, and nblues blues are requested,
+ncolors pixels are returned; and the masks have nreds, ngreens, and
+nblues bits set to 1, respectively.
+If contig is
+.PN True ,
+each mask will have
+a contiguous set of bits set to 1.
+No mask will have any bits set to 1 in common with
+any other mask or with any of the pixels.
+For
+.PN DirectColor ,
+each mask
+will lie within the corresponding pixel subfield.
+By ORing together
+subsets of masks with each pixel value,
+ncolors * %2 sup (nreds+ngreens+nblues)% distinct pixel values can be produced.
+All of these are allocated by the request.
+However, in the
+colormap, there are only ncolors * %2 sup nreds% independent red entries,
+ncolors * %2 sup ngreens% independent green entries,
+and ncolors * %2 sup nblues% independent blue entries.
+This is true even for
+.PN PseudoColor .
+When the colormap entry of a pixel
+value is changed (using
+.PN XStoreColors ,
+.PN XStoreColor ,
+or
+.PN XStoreNamedColor ),
+the pixel is decomposed according to the masks,
+and the corresponding independent entries are updated.
+.PN XAllocColorPlanes
+returns nonzero if it succeeded or zero if it failed.
+.LP
+.PN XAllocColorPlanes
+can generate
+.PN BadColor
+and
+.PN BadValue
+errors.
+.LP
+.sp
+.IN "Freeing" "colors"
+To free colormap cells, use
+.PN XFreeColors .
+.IN "XFreeColors" "" "@DEF@"
+.IN "Color" "deallocation"
+.sM
+.FD 0
+XFreeColors\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIpixels\fP\^, \fInpixels\fP\^, \fIplanes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ unsigned long \fIpixels\fP\^[\^];
+.br
+ int \fInpixels\fP\^;
+.br
+ unsigned long \fIplanes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.ds Pi that map to the cells in the specified colormap
+.IP \fIpixels\fP 1i
+Specifies an array of pixel values \*(Pi.
+.IP \fInpixels\fP 1i
+Specifies the number of pixels.
+.IP \fIplanes\fP 1i
+Specifies the planes you want to free.
+.LP
+.eM
+The
+.PN XFreeColors
+function frees the cells represented by pixels whose values are in the
+pixels array.
+The planes argument should not have any bits set to 1 in common with any of the
+pixels.
+The set of all pixels is produced by ORing together subsets of
+the planes argument with the pixels.
+The request frees all of these pixels that
+were allocated by the client (using
+.IN XAllocColor
+.IN XAllocNamedColor
+.IN XAllocColorCells
+.IN XAllocColorPlanes
+.PN XAllocColor ,
+.PN XAllocNamedColor ,
+.PN XAllocColorCells ,
+and
+.PN XAllocColorPlanes ).
+Note that freeing an
+individual pixel obtained from
+.PN XAllocColorPlanes
+may not actually allow
+it to be reused until all of its related pixels are also freed.
+Similarly,
+a read-only entry is not actually freed until it has been freed by all clients,
+and if a client allocates the same read-only entry multiple times,
+it must free the entry that many times before the entry is actually freed.
+.LP
+All specified pixels that are allocated by the client in the colormap are
+freed, even if one or more pixels produce an error.
+If a specified pixel is not a valid index into the colormap, a
+.PN BadValue
+error results.
+If a specified pixel is not allocated by the
+client (that is, is unallocated or is only allocated by another client)
+or if the colormap was created with all entries writable (by passing
+.PN AllocAll
+to
+.PN XCreateColormap ),
+a
+.PN BadAccess
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+.LP
+.PN XFreeColors
+can generate
+.PN BadAccess ,
+.PN BadColor ,
+and
+.PN BadValue
+errors.
+.NH 2
+Modifying and Querying Colormap Cells
+.XS
+\*(SN Modifying and Querying Colormap Cells
+.XE
+.LP
+.sp
+To store an RGB value in a single colormap cell, use
+.PN XStoreColor .
+.IN "Color" "storing"
+.IN "XStoreColor" "" "@DEF@"
+.sM
+.FD 0
+XStoreColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolor\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XColor *\fIcolor\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor\fP 1i
+Specifies the pixel and RGB values.
+.LP
+.eM
+The
+.PN XStoreColor
+function changes the colormap entry of the pixel value specified in the
+pixel member of the
+.PN XColor
+structure.
+You specified this value in the
+pixel member of the
+.PN XColor
+structure.
+This pixel value must be a read/write cell and a valid index into the colormap.
+If a specified pixel is not a valid index into the colormap,
+a
+.PN BadValue
+error results.
+.PN XStoreColor
+also changes the red, green, and/or blue color components.
+You specify which color components are to be changed by setting
+.PN DoRed ,
+.PN DoGreen ,
+and/or
+.PN DoBlue
+in the flags member of the
+.PN XColor
+structure.
+If the colormap is an installed map for its screen,
+the changes are visible immediately.
+.LP
+.PN XStoreColor
+can generate
+.PN BadAccess ,
+.PN BadColor ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To store multiple RGB values in multiple colormap cells, use
+.PN XStoreColors .
+.IN "Color" "storing"
+.IN "XStoreColors" "" "@DEF@"
+.sM
+.FD 0
+XStoreColors\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolor\fP\^, \fIncolors\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XColor \fIcolor\fP\^[\^]\^;
+.br
+ int \fIncolors\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor\fP 1i
+Specifies an array of color definition structures to be stored.
+.IP \fIncolors\fP 1i
+.\"Specifies the number of color definition structures.
+Specifies the number of
+.PN XColor
+structures in the color definition array.
+.LP
+.eM
+The
+.PN XStoreColors
+function changes the colormap entries of the pixel values
+specified in the pixel members of the
+.PN XColor
+structures.
+You specify which color components are to be changed by setting
+.PN DoRed ,
+.PN DoGreen ,
+and/or
+.PN DoBlue
+in the flags member of the
+.PN XColor
+structures.
+If the colormap is an installed map for its screen, the
+changes are visible immediately.
+.PN XStoreColors
+changes the specified pixels if they are allocated writable in the colormap
+by any client, even if one or more pixels generates an error.
+If a specified pixel is not a valid index into the colormap, a
+.PN BadValue
+error results.
+If a specified pixel either is unallocated or is allocated read-only, a
+.PN BadAccess
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+.LP
+.PN XStoreColors
+can generate
+.PN BadAccess ,
+.PN BadColor ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To store a color of arbitrary format in a single colormap cell, use
+.PN XcmsStoreColor .
+.IN "Color" "storing"
+.IN "XcmsStoreColor" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsStoreColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolor\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XcmsColor *\fIcolor\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor\fP 1i
+Specifies the color cell and the color to store.
+Values specified in this
+.PN XcmsColor
+structure remain unchanged on return.
+.LP
+.eM
+The
+.PN XcmsStoreColor
+function converts the color specified in the
+.PN XcmsColor
+structure into RGB values.
+It then uses this RGB specification in an
+.PN XColor
+structure, whose three flags
+.Pn ( DoRed ,
+.PN DoGreen ,
+and
+.PN DoBlue )
+are set, in a call to
+.PN XStoreColor
+to change the color cell specified by the pixel member of the
+.PN XcmsColor
+structure.
+This pixel value must be a valid index for the specified colormap,
+and the color cell specified by the pixel value must be a read/write cell.
+If the pixel value is not a valid index, a
+.PN BadValue
+error results.
+If the color cell is unallocated or is allocated read-only, a
+.PN BadAccess
+error results.
+If the colormap is an installed map for its screen,
+the changes are visible immediately.
+.LP
+Note that
+.PN XStoreColor
+has no return value; therefore, an
+.PN XcmsSuccess
+return value from this function indicates that the conversion
+to RGB succeeded and the call to
+.PN XStoreColor
+was made.
+To obtain the actual color stored, use
+.PN XcmsQueryColor .
+Because of the screen's hardware limitations or gamut compression,
+the color stored in the colormap may not be identical
+to the color specified.
+.LP
+.PN XcmsStoreColor
+can generate
+.PN BadAccess ,
+.PN BadColor ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To store multiple colors of arbitrary format in multiple colormap cells, use
+.PN XcmsStoreColors .
+.IN "Color" "storing"
+.IN "XcmsStoreColors" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsStoreColors\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolors\fP\^, \fIncolors\fP\^, \fIcompression_flags_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XcmsColor \fIcolors\fP\^[\^]\^;
+.br
+ int \fIncolors\fP\^;
+.br
+ Bool \fIcompression_flags_return\fP\^[\^]\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolors\fP 1i
+Specifies the color specification array of
+.PN XcmsColor
+structures, each specifying a color cell and the color to store in that
+cell.
+Values specified in the array remain unchanged upon return.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.PN XcmsColor
+structures in the color-specification array.
+.IP \fIcompression_flags_return\fP 1i
+Returns an array of Boolean values indicating compression status.
+If a non-NULL pointer is supplied,
+each element of the array is set to
+.PN True
+if the corresponding color was compressed and
+.PN False
+otherwise.
+Pass NULL if the compression status is not useful.
+.LP
+.eM
+The
+.PN XcmsStoreColors
+function converts the colors specified in the array of
+.PN XcmsColor
+structures into RGB values and then uses these RGB specifications in
+.PN XColor
+structures, whose three flags
+.Pn ( DoRed ,
+.PN DoGreen ,
+and
+.PN DoBlue )
+are set, in a call to
+.PN XStoreColors
+to change the color cells specified by the pixel member of the corresponding
+.PN XcmsColor
+structure.
+Each pixel value must be a valid index for the specified colormap,
+and the color cell specified by each pixel value must be a read/write cell.
+If a pixel value is not a valid index, a
+.PN BadValue
+error results.
+If a color cell is unallocated or is allocated read-only, a
+.PN BadAccess
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+If the colormap is an installed map for its screen,
+the changes are visible immediately.
+.LP
+Note that
+.PN XStoreColors
+has no return value; therefore, an
+.PN XcmsSuccess
+return value from this function indicates that conversions
+to RGB succeeded and the call to
+.PN XStoreColors
+was made.
+To obtain the actual colors stored, use
+.PN XcmsQueryColors .
+Because of the screen's hardware limitations or gamut compression,
+the colors stored in the colormap may not be identical
+to the colors specified.
+.LP
+.PN XcmsStoreColors
+can generate
+.PN BadAccess ,
+.PN BadColor ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To store a color specified by name in a single colormap cell, use
+.PN XStoreNamedColor .
+.IN "Color" "storing"
+.IN "Color" "naming"
+.IN "XStoreNamedColor" "" "@DEF@"
+.sM
+.FD 0
+XStoreNamedColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolor\fP\^, \fIpixel\fP\^, \fIflags\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ char *\^\fIcolor\fP\^;
+.br
+ unsigned long \fIpixel\fP\^;
+.br
+ int \fIflags\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor\fP 1i
+Specifies the color name string (for example, red).
+.IP \fIpixel\fP 1i
+Specifies the entry in the colormap.
+.IP \fIflags\fP 1i
+Specifies which red, green, and blue components are set.
+.LP
+.eM
+The
+.PN XStoreNamedColor
+function looks up the named color with respect to the screen associated with
+the colormap and stores the result in the specified colormap.
+The pixel argument determines the entry in the colormap.
+The flags argument determines which of the red, green, and blue components
+are set.
+You can set this member to the
+bitwise inclusive OR of the bits
+.PN DoRed ,
+.PN DoGreen ,
+and
+.PN DoBlue .
+If the color name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+If the specified pixel is not a valid index into the colormap, a
+.PN BadValue
+error results.
+If the specified pixel either is unallocated or is allocated read-only, a
+.PN BadAccess
+error results.
+.LP
+.PN XStoreNamedColor
+can generate
+.PN BadAccess ,
+.PN BadColor ,
+.PN BadName ,
+and
+.PN BadValue
+errors.
+.LP
+The
+.PN XQueryColor
+and
+.PN XQueryColors
+functions take pixel values in the pixel member of
+.PN XColor
+structures and store in the structures the RGB values for those
+pixels from the specified colormap.
+The values returned for an unallocated entry are undefined.
+These functions also set the flags member in the
+.PN XColor
+structure to all three colors.
+If a pixel is not a valid index into the specified colormap, a
+.PN BadValue
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+.LP
+.sp
+To query the RGB value of a single colormap cell, use
+.PN XQueryColor .
+.IN "Color" "querying"
+.IN "XQueryColor" "" "@DEF@"
+.sM
+.FD 0
+XQueryColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIdef_in_out\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XColor *\fIdef_in_out\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIdef_in_out\fP 1i
+Specifies and returns the RGB values for the pixel specified in the structure.
+.LP
+.eM
+The
+.PN XQueryColor
+function returns the current RGB value for the pixel in the
+.PN XColor
+structure and sets the
+.PN DoRed ,
+.PN DoGreen ,
+and
+.PN DoBlue
+flags.
+.LP
+.PN XQueryColor
+can generate
+.PN BadColor
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To query the RGB values of multiple colormap cells, use
+.PN XQueryColors .
+.IN "Color" "querying"
+.IN "XQueryColors" "" "@DEF@"
+.sM
+.FD 0
+XQueryColors\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIdefs_in_out\fP\^, \fIncolors\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XColor \fIdefs_in_out\fP[\^]\^;
+.br
+ int \fIncolors\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIdefs_in_out\fP 1i
+Specifies and returns an array of color definition structures for the pixel
+specified in the structure.
+.IP \fIncolors\fP 1i
+.\"Specifies the number of color definition structures.
+Specifies the number of
+.PN XColor
+structures in the color definition array.
+.LP
+.eM
+The
+.PN XQueryColors
+function returns the RGB value for each pixel in each
+.PN XColor
+structure and sets the
+.PN DoRed ,
+.PN DoGreen ,
+and
+.PN DoBlue
+flags in each structure.
+
+.LP
+.PN XQueryColors
+can generate
+.PN BadColor
+and
+.PN BadValue
+errors.
+.sp
+.LP
+To query the color of a single colormap cell in an arbitrary format, use
+.PN XcmsQueryColor .
+.IN "Color" "querying"
+.IN "XcmsQueryColor" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsQueryColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolor_in_out\fP\^, \fIresult_format\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XcmsColor *\fIcolor_in_out\fP\^;
+.br
+ XcmsColorFormat \fIresult_format\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolor_in_out\fP 1i
+Specifies the pixel member that indicates the color cell to query.
+The color specification stored for the color cell is returned in this
+.PN XcmsColor
+structure.
+.IP \fIresult_format\fP 1i
+Specifies the color format for the returned color specification.
+.LP
+.eM
+The
+.PN XcmsQueryColor
+function obtains the RGB value
+for the pixel value in the pixel member of the specified
+.PN XcmsColor
+structure and then
+converts the value to the target format as
+specified by the result_format argument.
+If the pixel is not a valid index in the specified colormap, a
+.PN BadValue
+error results.
+.LP
+.PN XcmsQueryColor
+can generate
+.PN BadColor
+and
+.PN BadValue
+errors.
+.sp
+.LP
+To query the color of multiple colormap cells in an arbitrary format, use
+.PN XcmsQueryColors .
+.IN "Color" "querying"
+.IN "XcmsQueryColors" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsQueryColors\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolors_in_out\fP\^, \fIncolors\fP\^, \fIresult_format\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XcmsColor \fIcolors_in_out\fP\^[\^]\^;
+.br
+ unsigned int \fIncolors\fP\^;
+.br
+ XcmsColorFormat \fIresult_format\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolors_in_out\fP 1i
+Specifies an array of
+.PN XcmsColor
+structures, each pixel member indicating the color cell to query.
+The color specifications for the color cells are returned in these structures.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.PN XcmsColor
+structures in the color-specification array.
+.IP \fIresult_format\fP 1i
+Specifies the color format for the returned color specification.
+.LP
+.eM
+The
+.PN XcmsQueryColors
+function obtains the RGB values
+for pixel values in the pixel members of
+.PN XcmsColor
+structures and then
+converts the values to the target format as
+specified by the result_format argument.
+If a pixel is not a valid index into the specified colormap, a
+.PN BadValue
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+.LP
+.PN XcmsQueryColors
+can generate
+.PN BadColor
+and
+.PN BadValue
+errors.
+.NH 2
+Color Conversion Context Functions
+.XS
+\*(SN Color Conversion Context Functions
+.XE
+.LP
+This section describes functions to create, modify,
+and query Color Conversion Contexts (CCCs).
+.LP
+Associated with each colormap is an initial CCC transparently generated by
+Xlib.
+.IN "Color Conversion Context" "creation"
+Therefore, when you specify a colormap as an argument to a function,
+you are indirectly specifying a CCC.
+.IN "CCC" "of colormap"
+.IN "Color Conversion Context" "of colormap"
+The CCC attributes that can be modified by the X client are:
+.IP \(bu 5
+Client White Point
+.IP \(bu 5
+Gamut compression procedure and client data
+.IP \(bu 5
+White point adjustment procedure and client data
+.LP
+The initial values for these attributes are implementation specific.
+The CCC attributes for subsequently created CCCs can be defined
+by changing the CCC attributes of the default CCC.
+.IN "CCC" "default"
+.IN "Color Conversion Context" "default"
+There is a default CCC associated with each screen.
+.NH 3
+Getting and Setting the Color Conversion Context of a Colormap
+.XS
+\*(SN Getting and Setting the Color Conversion Context of a Colormap
+.XE
+.LP
+.sp
+To obtain the CCC associated with a colormap, use
+.PN XcmsCCCOfColormap .
+.IN "XcmsCCCOfColormap" "" "@DEF@"
+.IN "Colormap" "CCC of"
+.IN "CCC" "of colormap"
+.IN "Color Conversion Context" "of colormap"
+.sM
+.FD 0
+XcmsCCC XcmsCCCOfColormap\^(\^\fIdisplay\fP, \fIcolormap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.LP
+.eM
+The
+.PN XcmsCCCOfColormap
+function returns the CCC associated with the specified colormap.
+Once obtained,
+the CCC attributes can be queried or modified.
+Unless the CCC associated with the specified colormap is changed with
+.PN XcmsSetCCCOfColormap ,
+this CCC is used when the specified colormap is used as an argument
+to color functions.
+.sp
+.LP
+To change the CCC associated with a colormap, use
+.PN XcmsSetCCCOfColormap .
+.IN "XcmsSetCCCOfColormap" "" "@DEF@"
+.IN "Colormap" "CCC of"
+.IN "CCC" "of colormap"
+.IN "Color Conversion Context" "of colormap"
+.sM
+.FD 0
+XcmsCCC XcmsSetCCCOfColormap\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIccc\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.br
+ XcmsCCC \fIccc\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.LP
+.eM
+The
+.PN XcmsSetCCCOfColormap
+function changes the CCC associated with the specified colormap.
+It returns the CCC previously associated with the colormap.
+If they are not used again in the application,
+CCCs should be freed by calling
+.PN XcmsFreeCCC .
+Several colormaps may share the same CCC without restriction; this
+includes the CCCs generated by Xlib with each colormap. Xlib, however,
+creates a new CCC with each new colormap.
+.NH 3
+Obtaining the Default Color Conversion Context
+.XS
+\*(SN Obtaining the Default Color Conversion Context
+.XE
+.LP
+You can change the default CCC attributes for subsequently created CCCs
+by changing the CCC attributes of the default CCC.
+.IN "CCC" "default"
+.IN "Color Conversion Context" "default"
+A default CCC is associated with each screen.
+.sp
+.LP
+To obtain the default CCC for a screen, use
+.PN XcmsDefaultCCC .
+.IN "XcmsDefaultCCC" "" "@DEF@"
+.IN "Color Conversion Context" "default"
+.IN "CCC" "default"
+.sM
+.FD 0
+XcmsCCC XcmsDefaultCCC\^(\^\fIdisplay\fP, \fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+The
+.PN XcmsDefaultCCC
+function returns the default CCC for the specified screen.
+Its visual is the default visual of the screen.
+Its initial gamut compression and white point
+adjustment procedures as well as the associated client data are implementation
+specific.
+.NH 3
+Color Conversion Context Macros
+.XS
+\*(SN Color Conversion Context Macros
+.XE
+.LP
+Applications should not directly modify any part of the
+.PN XcmsCCC .
+The following lists the C language macros, their corresponding function
+equivalents for other language bindings, and what data they both
+can return.
+.sp
+.LP
+.IN "DisplayOfCCC" "" "@DEF@"
+.IN "XcmsDisplayOfCCC" "" "@DEF@"
+.sM
+.FD 0
+DisplayOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.sp
+Display *XcmsDisplayOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.LP
+.eM
+Both return the display associated with the specified CCC.
+.LP
+.sp
+.IN "VisualOfCCC" "" "@DEF@"
+.IN "XcmsVisualOfCCC" "" "@DEF@"
+.sM
+.FD 0
+VisualOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.sp
+Visual *XcmsVisualOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.LP
+.eM
+Both return the visual associated with the specified CCC.
+.sp
+.LP
+.IN "ScreenNumberOfCCC" "" "@DEF@"
+.IN "XcmsScreenNumberOfCCC" "" "@DEF@"
+.sM
+.FD 0
+ScreenNumberOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.sp
+int XcmsScreenNumberOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.LP
+.eM
+Both return the number of the screen associated with the specified CCC.
+.sp
+.LP
+.IN "ScreenWhitePointOfCCC" "" "@DEF@"
+.IN "XcmsScreenWhitePointOfCCC" "" "@DEF@"
+.sM
+.FD 0
+ScreenWhitePointOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.sp
+XcmsColor *XcmsScreenWhitePointOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.LP
+.eM
+Both return the white point of the screen associated with the specified CCC.
+.sp
+.LP
+.IN "ClientWhitePointOfCCC" "" "@DEF@"
+.IN "XcmsClientWhitePointOfCCC" "" "@DEF@"
+.sM
+.FD 0
+ClientWhitePointOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.sp
+XcmsColor *XcmsClientWhitePointOfCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.LP
+.eM
+Both return the Client White Point of the specified CCC.
+.NH 3
+Modifying Attributes of a Color Conversion Context
+.XS
+\*(SN Modifying Attributes of a Color Conversion Context
+.XE
+.LP
+To set the Client White Point in the CCC, use
+.PN XcmsSetWhitePoint .
+.IN "XcmsSetWhitePoint" "" "@DEF@"
+.IN "Client White Point" "of Color Conversion Context"
+.sM
+.FD 0
+Status XcmsSetWhitePoint\^(\^\fIccc\fP\^, \fIcolor\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColor *\fIcolor\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.ds Co new Client White Point
+.IP \fIcolor\fP 1i
+Specifies the \*(Co.
+.LP
+.eM
+The
+.PN XcmsSetWhitePoint
+function changes the Client White Point in the specified CCC.
+Note that the pixel member is ignored
+and that the color specification is left unchanged upon return.
+The format for the new white point must be
+.PN XcmsCIEXYZFormat ,
+.PN XcmsCIEuvYFormat ,
+.PN XcmsCIExyYFormat ,
+or
+.PN XcmsUndefinedFormat .
+If the color argument is NULL, this function sets the format component of the
+Client White Point specification to
+.PN XcmsUndefinedFormat ,
+indicating that the Client White Point is assumed to be the same as the
+Screen White Point.
+.LP
+This function returns nonzero status
+if the format for the new white point is valid;
+otherwise, it returns zero.
+
+.sp
+.LP
+To set the gamut compression procedure and corresponding client data
+in a specified CCC, use
+.PN XcmsSetCompressionProc .
+.IN "XcmsSetCompressionProc" "" "@DEF@"
+.IN "Gamut compression" "setting in Color Conversion Context"
+.IN "Gamut compression" "procedure"
+.IN "Gamut compression" "client data"
+.sM
+.FD 0
+XcmsCompressionProc XcmsSetCompressionProc\^(\^\fIccc\fP\^, \fIcompression_proc\fP\^, \fIclient_data\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsCompressionProc \fIcompression_proc\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.IP \fIcompression_proc\fP 1i
+Specifies the gamut compression procedure that is to be applied
+when a color lies outside the screen's color gamut.
+If NULL is specified and a function using this CCC must convert
+a color specification to a device-dependent format and encounters a color
+that lies outside the screen's color gamut,
+that function will return
+.PN XcmsFailure .
+.ds Cd the gamut compression procedure
+.IP \fIclient_data\fP 1i
+Specifies client data for \*(Cd or NULL.
+.LP
+.eM
+The
+.PN XcmsSetCompressionProc
+function first sets the gamut compression procedure and client data
+in the specified CCC with the newly specified procedure and client data
+and then returns the old procedure.
+.sp
+.LP
+To set the white point adjustment procedure and corresponding client data
+in a specified CCC, use
+.PN XcmsSetWhiteAdjustProc .
+.IN "XcmsSetWhiteAdjustProc" "" "@DEF@"
+.IN "White point adjustment" "setting in Color Conversion Context"
+.IN "White point adjustment" "procedure"
+.IN "White point adjustment" "client data"
+.FD 0
+.sM
+XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc\^(\^\fIccc\fP\^, \fIwhite_adjust_proc\fP\^, \fIclient_data\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsWhiteAdjustProc \fIwhite_adjust_proc\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.IP \fIwhite_adjust_proc\fP 1i
+Specifies the white point adjustment procedure.
+.ds Cd the white point adjustment procedure
+.IP \fIclient_data\fP 1i
+Specifies client data for \*(Cd or NULL.
+.LP
+.eM
+The
+.PN XcmsSetWhiteAdjustProc
+function first sets the white point adjustment procedure and client data
+in the specified CCC with the newly specified procedure and client data
+and then returns the old procedure.
+.NH 3
+Creating and Freeing a Color Conversion Context
+.XS
+\*(SN Creating and Freeing a Color Conversion Context
+.XE
+.LP
+You can explicitly create a CCC within your application by calling
+.PN XcmsCreateCCC .
+These created CCCs can then be used by those functions that explicitly
+call for a CCC argument.
+Old CCCs that will not be used by the application should be freed using
+.PN XcmsFreeCCC .
+.sp
+.LP
+To create a CCC, use
+.PN XcmsCreateCCC .
+.IN "XcmsCreateCCC" "" "@DEF@"
+.IN "Color Conversion Context" "creation"
+.IN "CCC" "creation"
+.sM
+.FD 0
+XcmsCCC XcmsCreateCCC\^(\^\fIdisplay\fP, \fIscreen_number\fP\^, \fIvisual\fP\^, \fIclient_white_point\fP\^, \fIcompression_proc\fP\^,
+.br
+ \fIcompression_client_data\fP\^, \fIwhite_adjust_proc\fP\^, \fIwhite_adjust_client_data\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.br
+ Visual *\fIvisual\fP\^;
+.br
+ XcmsColor *\fIclient_white_point\fP\^;
+.br
+ XcmsCompressionProc \fIcompression_proc\fP\^;
+.br
+ XPointer \fIcompression_client_data\fP\^;
+.br
+ XcmsWhiteAdjustProc \fIwhite_adjust_proc\fP\^;
+.br
+ XPointer \fIwhite_adjust_client_data\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.IP \fIvisual\fP 1i
+Specifies the visual type.
+.IP \fIclient_white_point\fP 1i
+Specifies the Client White Point.
+If NULL is specified,
+the Client White Point is to be assumed to be the same as the
+Screen White Point.
+Note that the pixel member is ignored.
+.IP \fIcompression_proc\fP 1i
+Specifies the gamut compression procedure that is to be applied
+when a color lies outside the screen's color gamut.
+If NULL is specified and a function using this CCC must convert
+a color specification to a device-dependent format and encounters a color
+that lies outside the screen's color gamut,
+that function will return
+.PN XcmsFailure .
+.IP \fIcompression_client_data\fP 1i
+Specifies client data for use by the gamut compression procedure or NULL.
+.IP \fIwhite_adjust_proc\fP 1i
+Specifies the white adjustment procedure that is to be applied
+when the Client White Point differs from the Screen White Point.
+NULL indicates that no white point adjustment is desired.
+.IP \fIwhite_adjust_client_data\fP 1i
+Specifies client data for use with the white point adjustment procedure or NULL.
+.LP
+.eM
+The
+.PN XcmsCreateCCC
+function creates a CCC for the specified display, screen, and visual.
+.LP
+.sp
+To free a CCC, use
+.PN XcmsFreeCCC .
+.IN "XcmsFreeCCC" "" "@DEF@"
+.IN "Color Conversion Context" "freeing"
+.IN "CCC" "freeing"
+.sM
+.FD 0
+void XcmsFreeCCC\^(\^\fIccc\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.LP
+.eM
+The
+.PN XcmsFreeCCC
+function frees the memory used for the specified CCC.
+Note that default CCCs and those currently associated with colormaps
+are ignored.
+.NH 2
+Converting between Color Spaces
+.XS
+\*(SN Converting between Color Spaces
+.XE
+.LP
+.sp
+To convert an array of color specifications in arbitrary color formats
+to a single destination format, use
+.PN XcmsConvertColors .
+.IN "Color conversion"
+.IN "Color" "conversion"
+.IN "XcmsConvertColors" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsConvertColors\^(\^\fIccc\fP\^, \fIcolors_in_out\fP\^, \fIncolors\fP\^, \fItarget_format\fP\^, \fIcompression_flags_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColor \fIcolors_in_out\fP\^[\^]\^;
+.br
+ unsigned int \fIncolors\fP\^;
+.br
+ XcmsColorFormat \fItarget_format\fP\^;
+.br
+ Bool \fIcompression_flags_return\fP\^[\^]\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+If conversion is between device-independent color spaces only
+(for example, TekHVC to CIELuv),
+the CCC is necessary only to specify the Client White Point.
+.IP \fIcolors_in_out\fP 1i
+Specifies an array of color specifications.
+Pixel members are ignored and remain unchanged upon return.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.PN XcmsColor
+structures in the color-specification array.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.IP \fIcompression_flags_return\fP 1i
+Returns an array of Boolean values indicating compression status.
+If a non-NULL pointer is supplied,
+each element of the array is set to
+.PN True
+if the corresponding color was compressed and
+.PN False
+otherwise.
+Pass NULL if the compression status is not useful.
+.LP
+.eM
+The
+.PN XcmsConvertColors
+function converts the color specifications in the specified array of
+.PN XcmsColor
+structures from their current format to a single target format,
+using the specified CCC.
+When the return value is
+.PN XcmsFailure ,
+the contents of the color specification array are left unchanged.
+.LP
+The array may contain a mixture of color specification formats
+(for example, 3 CIE XYZ, 2 CIE Luv, and so on).
+When the array contains both device-independent and
+device-dependent color specifications and the target_format argument specifies
+a device-dependent format (for example,
+.PN XcmsRGBiFormat ,
+.PN XcmsRGBFormat ),
+all specifications are converted to CIE XYZ format and then to the target
+device-dependent format.
+.NH 2
+Callback Functions
+.XS
+\*(SN Callback Functions
+.XE
+.LP
+This section describes the gamut compression and white point
+adjustment callbacks.
+.LP
+The gamut compression procedure specified in the CCC
+is called when an attempt to convert a color specification from
+.PN XcmsCIEXYZ
+to a device-dependent format (typically
+.PN XcmsRGBi )
+results in a color that lies outside the screen's color gamut.
+If the gamut compression procedure requires client data, this data is passed
+via the gamut compression client data in the CCC.
+.LP
+During color specification conversion between device-independent
+and device-dependent color spaces,
+if a white point adjustment procedure is specified in the CCC,
+it is triggered when the Client White Point and Screen White Point differ.
+If required, the client data is obtained from the CCC.
+.NH 3
+Prototype Gamut Compression Procedure
+.XS
+\*(SN Prototype Gamut Compression Procedure
+.XE
+.LP
+The gamut compression callback interface must adhere to the
+following:
+.IN "XcmsCompressionProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Status (*\^XcmsCompressionProc\^)\^(\^\fIccc\fP\^, \fIcolors_in_out\fP\^, \fIncolors\fP\^, \fIindex\fP\^, \fIcompression_flags_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColor \fIcolors_in_out[]\fP\^;
+.br
+ unsigned int \fIncolors\fP\^;
+.br
+ unsigned int \fIindex\fP\^;
+.br
+ Bool \fIcompression_flags_return[]\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.IP \fIcolors_in_out\fP 1i
+Specifies an array of color specifications.
+Pixel members should be ignored and must remain unchanged upon return.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.PN XcmsColor
+structures in the color-specification array.
+.IP \fIindex\fP 1i
+Specifies the index into the array of
+.PN XcmsColor
+structures for the encountered color specification that lies outside the
+screen's color gamut.
+Valid values are 0 (for the first element) to ncolors \- 1.
+.IP \fIcompression_flags_return\fP 1i
+Returns an array of Boolean values for indicating compression status.
+If a non-NULL pointer is supplied
+and a color at a given index is compressed, then
+.PN True
+should be stored at the corresponding index in this array;
+otherwise, the array should not be modified.
+.LP
+.eM
+When implementing a gamut compression procedure, consider the following
+rules and assumptions:
+.IP \(bu 5
+The gamut compression procedure can attempt to compress one or multiple
+specifications at a time.
+.IP \(bu 5
+When called, elements 0 to index \- 1 in the color specification
+array can be assumed to fall within the screen's color gamut.
+In addition, these color specifications are already in some device-dependent
+format (typically
+.PN XcmsRGBi ).
+If any modifications are made to these color specifications,
+they must be in their initial device-dependent format upon return.
+.IP \(bu 5
+When called, the element in the color specification array specified
+by the index argument contains the color specification outside the
+screen's color gamut encountered by the calling routine.
+In addition, this color specification can be assumed to be in
+.PN XcmsCIEXYZ .
+Upon return, this color specification must be in
+.PN XcmsCIEXYZ .
+.IP \(bu 5
+When called, elements from index to ncolors \- 1
+in the color specification array may or may not fall within the
+screen's color gamut.
+In addition, these color specifications can be assumed to be in
+.PN XcmsCIEXYZ .
+If any modifications are made to these color specifications,
+they must be in
+.PN XcmsCIEXYZ
+upon return.
+.IP \(bu 5
+The color specifications passed to the gamut compression procedure
+have already been adjusted to the Screen White Point.
+This means that at this point the color specification's white point
+is the Screen White Point.
+.IP \(bu 5
+If the gamut compression procedure uses a device-independent color space not
+initially accessible for use in the color management system, use
+.PN XcmsAddColorSpace
+to ensure that it is added.
+.NH 3
+Supplied Gamut Compression Procedures
+.XS
+\*(SN Supplied Gamut Compression Procedures
+.XE
+.LP
+The following equations are useful in describing gamut compression
+functions:
+.EQ
+delim %%
+.EN
+.LP
+.Ds 0
+%CIELab~Psychometric~Chroma ~=~ sqrt(a_star sup 2 ~+~ b_star sup 2 )%
+
+%CIELab~Psychometric~Hue ~=~ tan sup -1 left [ b_star over a_star right ]%
+
+%CIELuv~Psychometric~Chroma ~=~ sqrt(u_star sup 2 ~+~ v_star sup 2 )%
+
+%CIELuv~Psychometric~Hue ~=~ tan sup -1 left [ v_star over u_star right ]%
+.De
+.LP
+The gamut compression callback procedures provided by Xlib are as follows:
+.IP \(bu 5
+.PN XcmsCIELabClipL
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by reducing or increasing CIE metric lightness (L*)
+in the CIE L*a*b* color space until the color is within the gamut.
+If the Psychometric Chroma of the color specification
+is beyond maximum for the Psychometric Hue Angle,
+then while maintaining the same Psychometric Hue Angle,
+the color will be clipped to the CIE L*a*b* coordinates of maximum
+Psychometric Chroma.
+See
+.PN XcmsCIELabQueryMaxC .
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsCIELabClipab
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by reducing Psychometric Chroma,
+while maintaining Psychometric Hue Angle,
+until the color is within the gamut.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsCIELabClipLab
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by replacing it with CIE L*a*b* coordinates
+that fall within the color gamut while maintaining the original
+Psychometric Hue
+Angle and whose vector to the original coordinates is the shortest attainable.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsCIELuvClipL
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by reducing or increasing CIE metric lightness (L*)
+in the CIE L*u*v* color space until the color is within the gamut.
+If the Psychometric Chroma of the color specification
+is beyond maximum for the Psychometric Hue Angle,
+then, while maintaining the same Psychometric Hue Angle,
+the color will be clipped to the CIE L*u*v* coordinates of maximum
+Psychometric Chroma.
+See
+.PN XcmsCIELuvQueryMaxC .
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsCIELuvClipuv
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by reducing
+Psychometric Chroma, while maintaining Psychometric Hue Angle,
+until the color is within the gamut.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsCIELuvClipLuv
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by replacing it with CIE L*u*v* coordinates
+that fall within the color gamut while maintaining the original
+Psychometric Hue
+Angle and whose vector to the original coordinates is the shortest attainable.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsTekHVCClipV
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by reducing or increasing the Value dimension
+in the TekHVC color space until the color is within the gamut.
+If Chroma of the color specification is beyond maximum for the particular Hue,
+then, while maintaining the same Hue,
+the color will be clipped to the Value and Chroma coordinates
+that represent maximum Chroma for that particular Hue.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsTekHVCClipC
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by reducing the Chroma dimension
+in the TekHVC color space until the color is within the gamut.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsTekHVCClipVC
+.IP
+This brings the encountered out-of-gamut color specification into the
+screen's color gamut by replacing it with TekHVC coordinates
+that fall within the color gamut while maintaining the original Hue
+and whose vector to the original coordinates is the shortest attainable.
+No client data is necessary.
+.NH 3
+Prototype White Point Adjustment Procedure
+.XS
+\*(SN Prototype White Point Adjustment Procedure
+.XE
+.LP
+The white point adjustment procedure interface must adhere to the following:
+.IN "XcmsWhiteAdjustProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Status (*\^XcmsWhiteAdjustProc\^)\^(\^\fIccc\fP\^, \fIinitial_white_point\fP\^, \fItarget_white_point\fP\^, \fItarget_format\fP\^,
+.br
+ \fIcolors_in_out\fP\^, \fIncolors\fP\^, \fIcompression_flags_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColor *\fIinitial_white_point\fP\^;
+.br
+ XcmsColor *\fItarget_white_point\fP\^;
+.br
+ XcmsColorFormat \fItarget_format\fP\^;
+.br
+ XcmsColor \fIcolors_in_out[]\fP\^;
+.br
+ unsigned int \fIncolors\fP\^;
+.br
+ Bool \fIcompression_flags_return[]\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.IP \fIinitial_white_point\fP 1i
+Specifies the initial white point.
+.IP \fItarget_white_point\fP 1i
+Specifies the target white point.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.IP \fIcolors_in_out\fP 1i
+Specifies an array of color specifications.
+Pixel members should be ignored and must remain unchanged upon return.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.PN XcmsColor
+structures in the color-specification array.
+.IP \fIcompression_flags_return\fP 1i
+Returns an array of Boolean values for indicating compression status.
+If a non-NULL pointer is supplied
+and a color at a given index is compressed, then
+.PN True
+should be stored at the corresponding index in this array;
+otherwise, the array should not be modified.
+.LP
+.eM
+.NH 3
+Supplied White Point Adjustment Procedures
+.XS
+\*(SN Supplied White Point Adjustment Procedures
+.XE
+.LP
+White point adjustment procedures provided by Xlib are as follows:
+.IP \(bu 5
+.PN XcmsCIELabWhiteShiftColors
+.IP
+This uses the CIE L*a*b* color space for adjusting the chromatic character
+of colors to compensate for the chromatic differences between the source
+and destination white points.
+This procedure simply converts the color specifications to
+.PN XcmsCIELab
+using the source white point and then converts to the target specification
+format using the destination's white point.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsCIELuvWhiteShiftColors
+.IP
+This uses the CIE L*u*v* color space for adjusting the chromatic character
+of colors to compensate for the chromatic differences between the source
+and destination white points.
+This procedure simply converts the color specifications to
+.PN XcmsCIELuv
+using the source white point and then converts to the target specification
+format using the destination's white point.
+No client data is necessary.
+.IP \(bu 5
+.PN XcmsTekHVCWhiteShiftColors
+.IP
+This uses the TekHVC color space for adjusting the chromatic character
+of colors to compensate for the chromatic differences between the source
+and destination white points.
+This procedure simply converts the color specifications to
+.PN XcmsTekHVC
+using the source white point and then converts to the target specification
+format using the destination's white point.
+An advantage of this procedure over those previously described
+is an attempt to minimize hue shift.
+No client data is necessary.
+.LP
+From an implementation point of view,
+these white point adjustment procedures convert the color specifications
+to a device-independent but white-point-dependent color space
+(for example, CIE L*u*v*, CIE L*a*b*, TekHVC) using one white point
+and then converting those specifications to the target color space
+using another white point.
+In other words,
+the specification goes in the color space with one white point
+but comes out with another white point,
+resulting in a chromatic shift based on the chromatic displacement
+between the initial white point and target white point.
+The CIE color spaces that are assumed to be white-point-independent
+are CIE u'v'Y, CIE XYZ, and CIE xyY.
+When developing a custom white point adjustment procedure that uses a
+device-independent color space not initially accessible for use in the
+color management system, use
+.PN XcmsAddColorSpace
+to ensure that it is added.
+.LP
+As an example,
+if the CCC specifies a white point adjustment procedure
+and if the Client White Point and Screen White Point differ, the
+.PN XcmsAllocColor
+function will use the white point adjustment
+procedure twice:
+.IP \(bu 5
+Once to convert to
+.PN XcmsRGB
+.IP \(bu 5
+A second time to convert from
+.PN XcmsRGB
+.LP
+For example, assume the specification is in
+.PN XcmsCIEuvY
+and the adjustment procedure is
+.PN XcmsCIELuvWhiteShiftColors .
+During conversion to
+.PN XcmsRGB ,
+the call to
+.PN XcmsAllocColor
+results in the following series of color specification conversions:
+.\" Do these need to be font coded?
+.IP \(bu 5
+From
+.PN XcmsCIEuvY
+to
+.PN XcmsCIELuv
+using the Client White Point
+.IP \(bu 5
+From
+.PN XcmsCIELuv
+to
+.PN XcmsCIEuvY
+using the Screen White Point
+.IP \(bu 5
+From
+.PN XcmsCIEuvY
+to
+.PN XcmsCIEXYZ
+(CIE u'v'Y and XYZ are white-point-independent color spaces)
+.IP \(bu 5
+From
+.PN XcmsCIEXYZ
+to
+.PN XcmsRGBi
+.IP \(bu 5
+From
+.PN XcmsRGBi
+to
+.PN XcmsRGB
+.LP
+The resulting RGB specification is passed to
+.PN XAllocColor ,
+and the RGB
+specification returned by
+.PN XAllocColor
+is converted back to
+.PN XcmsCIEuvY
+by reversing the color conversion sequence.
+.NH 2
+Gamut Querying Functions
+.XS
+\*(SN Gamut Querying Functions
+.XE
+.LP
+This section describes the gamut querying functions that Xlib provides.
+These functions allow the client to query the boundary
+of the screen's color gamut in terms of the CIE L*a*b*, CIE L*u*v*,
+and TekHVC color spaces.
+.IN "Gamut querying"
+Functions are also provided that allow you to query
+the color specification of:
+.IP \(bu 5
+White (full-intensity red, green, and blue)
+.IP \(bu 5
+Red (full-intensity red while green and blue are zero)
+.IP \(bu 5
+Green (full-intensity green while red and blue are zero)
+.IP \(bu 5
+Blue (full-intensity blue while red and green are zero)
+.IP \(bu 5
+Black (zero-intensity red, green, and blue)
+.LP
+The white point associated with color specifications passed to
+and returned from these gamut querying
+functions is assumed to be the Screen White Point.
+.IN "Screen White Point"
+This is a reasonable assumption,
+because the client is trying to query the screen's color gamut.
+.LP
+The following naming convention is used for the Max and Min functions:
+.LP
+.Ds 0
+Xcms\fI<color_space>\fPQueryMax\fI<dimensions>\fP
+
+Xcms\fI<color_space>\fPQueryMin\fI<dimensions>\fP
+.De
+.LP
+The <dimensions> consists of a letter or letters
+that identify the dimensions of the color space
+that are not fixed.
+For example,
+.PN XcmsTekHVCQueryMaxC
+is given a fixed Hue and Value for which maximum Chroma is found.
+.NH 3
+Red, Green, and Blue Queries
+.XS
+\*(SN Red, Green, and Blue Queries
+.XE
+.LP
+To obtain the color specification for black
+(zero-intensity red, green, and blue), use
+.PN XcmsQueryBlack .
+.IN "XcmsQueryBlack" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsQueryBlack\^(\^\fIccc\fP\^, \fItarget_format\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColorFormat \fItarget_format\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.ds Cs zero-intensity red, green, and blue
+.IP \fIcolor_return\fP 1i
+Returns the color specification in the specified target format
+for \*(Cs.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsQueryBlack
+function returns the color specification in the specified target format
+for zero-intensity red, green, and blue.
+.sp
+.LP
+To obtain the color specification for blue
+(full-intensity blue while red and green are zero), use
+.PN XcmsQueryBlue .
+.IN "XcmsQueryBlue" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsQueryBlue\^(\^\fIccc\fP\^, \fItarget_format\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColorFormat \fItarget_format\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.ds Cs full-intensity blue while red and green are zero
+.IP \fIcolor_return\fP 1i
+Returns the color specification in the specified target format
+for \*(Cs.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsQueryBlue
+function returns the color specification in the specified target format
+for full-intensity blue while red and green are zero.
+.sp
+.LP
+To obtain the color specification for green
+(full-intensity green while red and blue are zero), use
+.PN XcmsQueryGreen .
+.IN "XcmsQueryGreen" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsQueryGreen\^(\^\fIccc\fP\^, \fItarget_format\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColorFormat \fItarget_format\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.ds Cs full-intensity green while red and blue are zero
+.IP \fIcolor_return\fP 1i
+Returns the color specification in the specified target format
+for \*(Cs.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsQueryGreen
+function returns the color specification in the specified target format
+for full-intensity green while red and blue are zero.
+.sp
+.LP
+To obtain the color specification for red
+(full-intensity red while green and blue are zero), use
+.PN XcmsQueryRed .
+.IN "XcmsQueryRed" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsQueryRed\^(\^\fIccc\fP\^, \fItarget_format\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColorFormat \fItarget_format\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.ds Cs full-intensity red while green and blue are zero
+.IP \fIcolor_return\fP 1i
+Returns the color specification in the specified target format
+for \*(Cs.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsQueryRed
+function returns the color specification in the specified target format
+for full-intensity red while green and blue are zero.
+.LP
+.sp
+To obtain the color specification for white
+(full-intensity red, green, and blue), use
+.PN XcmsQueryWhite .
+.IN "XcmsQueryWhite" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsQueryWhite\^(\^\fIccc\fP\^, \fItarget_format\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColorFormat \fItarget_format\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.ds Cs full-intensity red, green, and blue
+.IP \fIcolor_return\fP 1i
+Returns the color specification in the specified target format
+for \*(Cs.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsQueryWhite
+function returns the color specification in the specified target format
+for full-intensity red, green, and blue.
+.NH 3
+CIELab Queries
+.XS
+\*(SN CIELab Queries
+.XE
+.LP
+The following equations are useful in describing the CIELab query functions:
+.EQ
+delim %%
+.EN
+.LP
+.IN "Psychometric Hue Angle"
+.IN "CIE metric lightness"
+.IN "Psychometric Chroma"
+.IN "Psychometric Chroma" "maximum"
+.Ds 0
+%CIELab~Psychometric~Chroma ~=~ sqrt(a_star sup 2 ~+~ b_star sup 2 )%
+
+%CIELab~Psychometric~Hue ~=~ tan sup -1 left [ b_star over a_star right ]%
+.De
+.sp
+To obtain the CIE L*a*b* coordinates of maximum Psychometric Chroma
+for a given Psychometric Hue Angle and CIE metric lightness (L*), use
+.PN XcmsCIELabQueryMaxC .
+.IN "XcmsCIELabQueryMaxC" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELabQueryMaxC\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIL_star\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsFloat \fIL_star\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha maximum chroma
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ls maximum chroma
+.IP \fIL_star\fP 1i
+Specifies the lightness (L*) at which to find \*(Ls.
+.ds Lc maximum chroma
+.ds lC hue angle and lightness
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*a*b* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELabQueryMaxC
+function, given a hue angle and lightness,
+finds the point of maximum chroma displayable by the screen.
+It returns this point in CIE L*a*b* coordinates.
+.LP
+.sp
+To obtain the CIE L*a*b* coordinates of maximum CIE metric lightness (L*)
+for a given Psychometric Hue Angle and Psychometric Chroma, use
+.PN XcmsCIELabQueryMaxL .
+.IN "Psychometric Hue Angle"
+.IN "CIE metric lightness"
+.IN "CIE metric lightness" "maximum"
+.IN "XcmsCIELabQueryMaxL" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELabQueryMaxL\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIchroma\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsFloat \fIchroma\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha maximum lightness
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ch maximum lightness
+.IP \fIchroma\fP 1i
+Specifies the chroma at which to find \*(Ch.
+.ds Lc maximum lightness
+.ds lC hue angle and chroma
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*a*b* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELabQueryMaxL
+function, given a hue angle and chroma,
+finds the point in CIE L*a*b* color space of maximum
+lightness (L*) displayable by the screen.
+It returns this point in CIE L*a*b* coordinates.
+An
+.PN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.sp
+.LP
+To obtain the CIE L*a*b* coordinates of maximum Psychometric Chroma
+for a given Psychometric Hue Angle, use
+.PN XcmsCIELabQueryMaxLC .
+.IN "Psychometric Hue Angle"
+.IN "Psychometric Chroma"
+.IN "CIE metric lightness"
+.IN "Psychometric Chroma" "maximum"
+.IN "CIE metric lightness" "maximum"
+.IN "XcmsCIELabQueryMaxLC" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELabQueryMaxLC\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha maximum chroma
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Lc maximum chroma
+.ds lC hue angle
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*a*b* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELabQueryMaxLC
+function, given a hue angle,
+finds the point of maximum chroma displayable by the screen.
+It returns this point in CIE L*a*b* coordinates.
+.sp
+.LP
+To obtain the CIE L*a*b* coordinates of minimum CIE metric lightness (L*)
+for a given Psychometric Hue Angle and Psychometric Chroma, use
+.PN XcmsCIELabQueryMinL .
+.IN "Psychometric Hue Angle"
+.IN "CIE metric lightness"
+.IN "CIE metric lightness" "minimum"
+.IN "XcmsCIELabQueryMinL" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELabQueryMinL\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIchroma\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsFloat \fIchroma\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha minimum lightness
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ch minimum lightness
+.IP \fIchroma\fP 1i
+Specifies the chroma at which to find \*(Ch.
+.ds Lc minimum lightness
+.ds lC hue angle and chroma
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*a*b* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELabQueryMinL
+function, given a hue angle and chroma,
+finds the point of minimum lightness (L*) displayable by the screen.
+It returns this point in CIE L*a*b* coordinates.
+An
+.PN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.NH 3
+CIELuv Queries
+.XS
+\*(SN CIELuv Queries
+.XE
+.LP
+The following equations are useful in describing the CIELuv query functions:
+.EQ
+delim %%
+.EN
+.LP
+.IN "Psychometric Hue Angle"
+.IN "CIE metric lightness"
+.IN "Psychometric Chroma"
+.IN "Psychometric Chroma" "maximum"
+.Ds 0
+%CIELuv~Psychometric~Chroma ~=~ sqrt(u_star sup 2 ~+~ v_star sup 2 )%
+
+%CIELuv~Psychometric~Hue ~=~ tan sup -1 left [ v_star over u_star right ]%
+.De
+.sp
+.LP
+To obtain the CIE L*u*v* coordinates of maximum Psychometric Chroma
+for a given Psychometric Hue Angle and CIE metric lightness (L*), use
+.PN XcmsCIELuvQueryMaxC .
+.IN "XcmsCIELuvQueryMaxC" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELuvQueryMaxC\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIL_star\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsFloat \fIL_star\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha maximum chroma
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ls maximum chroma
+.IP \fIL_star\fP 1i
+Specifies the lightness (L*) at which to find \*(Ls.
+.ds Lc maximum chroma
+.ds lC hue angle and lightness
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*u*v* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELuvQueryMaxC
+function, given a hue angle and lightness,
+finds the point of maximum chroma displayable by the screen.
+It returns this point in CIE L*u*v* coordinates.
+.sp
+.LP
+To obtain the CIE L*u*v* coordinates of maximum CIE metric lightness (L*)
+for a given Psychometric Hue Angle and Psychometric Chroma, use
+.PN XcmsCIELuvQueryMaxL .
+.IN "Psychometric Hue Angle"
+.IN "CIE metric lightness"
+.IN "CIE metric lightness" "maximum"
+.IN "XcmsCIELuvQueryMaxL" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELuvQueryMaxL\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIchroma\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsFloat \fIchroma\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha maximum lightness
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ls maximum lightness
+.IP \fIL_star\fP 1i
+Specifies the lightness (L*) at which to find \*(Ls.
+.ds Lc maximum lightness
+.ds lC hue angle and chroma
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*u*v* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELuvQueryMaxL
+function, given a hue angle and chroma,
+finds the point in CIE L*u*v* color space of maximum
+lightness (L*) displayable by the screen.
+It returns this point in CIE L*u*v* coordinates.
+An
+.PN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.sp
+.LP
+To obtain the CIE L*u*v* coordinates of maximum Psychometric Chroma
+for a given Psychometric Hue Angle, use
+.PN XcmsCIELuvQueryMaxLC .
+.IN "Psychometric Hue Angle"
+.IN "Psychometric Chroma"
+.IN "CIE metric lightness"
+.IN "Psychometric Chroma" "maximum"
+.IN "CIE metric lightness" "maximum"
+.IN "XcmsCIELuvQueryMaxLC" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELuvQueryMaxLC\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha maximum chroma
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Lc maximum chroma
+.ds lC hue angle
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*u*v* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELuvQueryMaxLC
+function, given a hue angle,
+finds the point of maximum chroma displayable by the screen.
+It returns this point in CIE L*u*v* coordinates.
+.sp
+.LP
+To obtain the CIE L*u*v* coordinates of minimum CIE metric lightness (L*)
+for a given Psychometric Hue Angle and Psychometric Chroma, use
+.PN XcmsCIELuvQueryMinL .
+.IN "Psychometric Hue Angle"
+.IN "CIE metric lightness"
+.IN "CIE metric lightness" "minimum"
+.IN "XcmsCIELuvQueryMinL" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsCIELuvQueryMinL\^(\^\fIccc\fP\^, \fIhue_angle\fP\^, \fIchroma\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue_angle\fP\^;
+.br
+ XcmsFloat \fIchroma\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Ha minimum lightness
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ch minimum lightness
+.IP \fIchroma\fP 1i
+Specifies the chroma at which to find \*(Ch.
+.ds Lc minimum lightness
+.ds lC hue angle and chroma
+.IP \fIcolor_return\fP 1i
+Returns the CIE L*u*v* coordinates of \*(Lc
+displayable by the screen for the given \*(lC.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsCIELuvQueryMinL
+function, given a hue angle and chroma,
+finds the point of minimum lightness (L*) displayable by the screen.
+It returns this point in CIE L*u*v* coordinates.
+An
+.PN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.NH 3
+TekHVC Queries
+.XS
+\*(SN TekHVC Queries
+.XE
+.LP
+To obtain the maximum Chroma for a given Hue and Value, use
+.PN XcmsTekHVCQueryMaxC .
+.IN "Chroma"
+.IN "Chroma" "maximum"
+.IN "XcmsTekHVCQueryMaxC" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsTekHVCQueryMaxC\^(\^\fIccc\fP\^, \fIhue\fP\^, \fIvalue\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue\fP\^;
+.br
+ XcmsFloat \fIvalue\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Hu in which to find the maximum Chroma
+.IP \fIhue\fP 1i
+Specifies the Hue \*(Hu.
+.ds Va maximum Chroma
+.IP \fIvalue\fP 1i
+Specifies the Value in which to find the \*(Va.
+.ds Lc maximum Chroma along with the actual Hue and Value
+.ds lC maximum Chroma
+.IP \fIcolor_return\fP 1i
+Returns the \*(Lc at which the \*(lC was found.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsTekHVCQueryMaxC
+function, given a Hue and Value,
+determines the maximum Chroma in TekHVC color space
+displayable by the screen.
+It returns the maximum Chroma along with the actual Hue
+and Value at which the maximum Chroma was found.
+.sp
+.LP
+To obtain the maximum Value for a given Hue and Chroma, use
+.PN XcmsTekHVCQueryMaxV .
+.IN "Value"
+.IN "Value" "maximum"
+.IN "XcmsTekHVCQueryMaxV" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsTekHVCQueryMaxV\^(\^\fIccc\fP\^, \fIhue\fP\^, \fIchroma\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue\fP\^;
+.br
+ XcmsFloat \fIchroma\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Hu in which to find the maximum Value
+.IP \fIhue\fP 1i
+Specifies the Hue \*(Hu.
+.ds Ch maximum Value
+.IP \fIchroma\fP 1i
+Specifies the chroma at which to find \*(Ch.
+.ds Lc maximum Value along with the Hue and Chroma
+.ds lC maximum Value
+.IP \fIcolor_return\fP 1i
+Returns the \*(Lc at which the \*(lC was found.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsTekHVCQueryMaxV
+function, given a Hue and Chroma,
+determines the maximum Value in TekHVC color space
+displayable by the screen.
+It returns the maximum Value and the actual Hue and Chroma
+at which the maximum Value was found.
+.sp
+.LP
+To obtain the maximum Chroma and Value at which it is reached
+for a specified Hue, use
+.PN XcmsTekHVCQueryMaxVC .
+.IN "Chroma"
+.IN "Value"
+.IN "Chroma" "maximum"
+.IN "Value" "maximum"
+.IN "XcmsTekHVCQueryMaxVC" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsTekHVCQueryMaxVC\^(\^\fIccc\fP\^, \fIhue\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Hu in which to find the maximum Chroma
+.IP \fIhue\fP 1i
+Specifies the Hue \*(Hu.
+.ds Lc color specification in \
+XcmsTekHVC for the maximum Chroma, the Value at which \
+that maximum Chroma is reached, and the actual Hue
+.ds lC maximum Chroma
+.IP \fIcolor_return\fP 1i
+Returns the \*(Lc at which the \*(lC was found.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsTekHVCQueryMaxVC
+function, given a Hue,
+determines the maximum Chroma in TekHVC color space displayable by the screen
+and the Value at which that maximum Chroma is reached.
+It returns the maximum Chroma,
+the Value at which that maximum Chroma is reached,
+and the actual Hue for which the maximum Chroma was found.
+.sp
+.LP
+To obtain a specified number of TekHVC specifications such that they
+contain maximum Values for a specified Hue and the
+Chroma at which the maximum Values are reached, use
+.PN XcmsTekHVCQueryMaxVSamples .
+.IN "Chroma"
+.IN "Value"
+.IN "Chroma" "maximum"
+.IN "Value" "maximum"
+.IN "XcmsTekHVCQueryMaxVSamples" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsTekHVCQueryMaxVSamples\^(\^\fIccc\fP\^, \fIhue\fP\^, \fIcolors_return\fP\^, \fInsamples\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue\fP\^;
+.br
+ XcmsColor \fIcolors_return[]\fP\^;
+.br
+ unsigned int \fInsamples\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Hu for maximum Chroma/Value samples
+.IP \fIhue\fP 1i
+Specifies the Hue \*(Hu.
+.IP \fInsamples\fP 1i
+Specifies the number of samples.
+.IP \fIcolors_return\fP 1i
+Returns nsamples of color specifications in XcmsTekHVC
+such that the Chroma is the maximum attainable for the Value and Hue.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsTekHVCQueryMaxVSamples
+returns nsamples of maximum Value, the Chroma at which that maximum Value
+is reached, and the actual Hue for which the maximum Chroma was found.
+These sample points may then be used to plot the maximum Value/Chroma
+boundary of the screen's color gamut for the specified Hue in TekHVC color
+space.
+.sp
+.LP
+To obtain the minimum Value for a given Hue and Chroma, use
+.PN XcmsTekHVCQueryMinV .
+.IN "Value"
+.IN "Value" "minimum"
+.IN "XcmsTekHVCQueryMinV" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsTekHVCQueryMinV\^(\^\fIccc\fP\^, \fIhue\fP\^, \fIchroma\fP\^, \fIcolor_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsFloat \fIhue\fP\^;
+.br
+ XcmsFloat \fIchroma\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+The CCC's Client White Point and white point adjustment procedures
+are ignored.
+.ds Hu in which to find the minimum Value
+.IP \fIhue\fP 1i
+Specifies the Hue \*(Hu.
+.ds Va minimum Value
+.IP \fIvalue\fP 1i
+Specifies the Value in which to find the \*(Va.
+.ds Lc minimum Value and the actual Hue and Chroma
+.ds lC minimum Value
+.IP \fIcolor_return\fP 1i
+Returns the \*(Lc at which the \*(lC was found.
+The white point associated with the returned
+color specification is the Screen White Point.
+The value returned in the pixel member is undefined.
+.LP
+.eM
+The
+.PN XcmsTekHVCQueryMinV
+function, given a Hue and Chroma,
+determines the minimum Value in TekHVC color space displayable by the screen.
+It returns the minimum Value and the actual Hue and Chroma at which
+the minimum Value was found.
+.NH 2
+Color Management Extensions
+.XS
+\*(SN Color Management Extensions
+.XE
+.LP
+The Xlib color management facilities can be extended in two ways:
+.IP \(bu 5
+Device-Independent Color Spaces
+.IP
+Device-independent color spaces that are derivable to CIE XYZ
+space can be added using the
+.PN XcmsAddColorSpace
+function.
+.IP \(bu 5
+Color Characterization Function Set
+.IP
+A Color Characterization Function Set consists of
+device-dependent color spaces and their functions that
+convert between these color spaces and the CIE XYZ
+color space, bundled together for a specific class of output devices.
+A function set can be added using the
+.PN XcmsAddFunctionSet
+function.
+.NH 3
+Color Spaces
+.XS
+\*(SN Color Spaces
+.XE
+.LP
+The CIE XYZ color space serves as the hub for all
+conversions between device-independent and device-dependent color spaces.
+Therefore, the knowledge to convert an
+.PN XcmsColor
+structure to and from CIE XYZ format is associated with each color space.
+For example, conversion from CIE L*u*v* to RGB requires the knowledge
+to convert from CIE L*u*v* to CIE XYZ and from CIE XYZ to RGB.
+This knowledge is stored as an array of functions that,
+when applied in series, will convert the
+.PN XcmsColor
+structure to or from CIE XYZ format.
+This color specification conversion mechanism facilitates
+the addition of color spaces.
+.LP
+Of course, when converting between only device-independent color spaces
+or only device-dependent color spaces,
+shortcuts are taken whenever possible.
+For example, conversion from TekHVC to CIE L*u*v* is performed
+by intermediate conversion to CIE u*v*Y and then to CIE L*u*v*,
+thus bypassing conversion between CIE u*v*Y and CIE XYZ.
+.NH 3
+Adding Device-Independent Color Spaces
+.XS
+\*(SN Adding Device-Independent Color Spaces
+.XE
+.LP
+To add a device-independent color space, use
+.PN XcmsAddColorSpace .
+.IN "XcmsAddColorSpace" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsAddColorSpace\^(\^\fIcolor_space\fP\^)
+.br
+ XcmsColorSpace *\fIcolor_space\fP\^;
+.FN
+.IP \fIcolor_space\fP 1i
+Specifies the device-independent color space to add.
+.LP
+.eM
+The
+.PN XcmsAddColorSpace
+function makes a device-independent color space (actually an
+.PN XcmsColorSpace
+structure) accessible by the color management system.
+Because format values for unregistered color spaces are assigned at run time,
+they should be treated as private to the client.
+If references to an unregistered color space must be made
+outside the client (for example, storing color specifications
+in a file using the unregistered color space),
+then reference should be made by color space prefix
+(see
+.PN XcmsFormatOfPrefix
+and
+.PN XcmsPrefixOfFormat ).
+.LP
+If the
+.PN XcmsColorSpace
+structure is already accessible in the color management system,
+.PN XcmsAddColorSpace
+returns
+.PN XcmsSuccess .
+.LP
+Note that added
+.PN XcmsColorSpaces
+must be retained for reference by Xlib.
+.NH 3
+Querying Color Space Format and Prefix
+.XS
+\*(SN Querying Color Space Format and Prefix
+.XE
+.LP
+To obtain the format associated with the color space
+associated with a specified color string prefix, use
+.PN XcmsFormatOfPrefix .
+.IN "XcmsFormatOfPrefix" "" "@DEF@"
+.sM
+.FD 0
+XcmsColorFormat XcmsFormatOfPrefix\^(\^\fIprefix\fP\^)
+.br
+ char *\fIprefix\fP\^;
+.FN
+.IP \fIprefix\fP 1i
+Specifies the string that contains the color space prefix.
+.LP
+.eM
+The
+.PN XcmsFormatOfPrefix
+function returns the format for the specified color space prefix
+(for example, the string ``CIEXYZ'').
+The prefix is case-insensitive.
+If the color space is not accessible in the color management system,
+.PN XcmsFormatOfPrefix
+returns
+.PN XcmsUndefinedFormat .
+.LP
+.sp
+To obtain the color string prefix associated with the color space
+specified by a color format, use
+.PN XcmsPrefixOfFormat .
+.IN "XcmsPrefixOfFormat" "" "@DEF@"
+.sM
+.FD 0
+char *XcmsPrefixOfFormat\^(\^\fIformat\fP\^)
+.br
+ XcmsColorFormat \fIformat\fP\^;
+.FN
+.IP \fIformat\fP 1i
+Specifies the color specification format.
+.LP
+.eM
+The
+.PN XcmsPrefixOfFormat
+function returns the string prefix associated with the color specification
+encoding specified by the format argument.
+Otherwise, if no encoding is found, it returns NULL.
+The returned string must be treated as read-only.
+.NH 3
+Creating Additional Color Spaces
+.XS
+\*(SN Creating Additional Color Spaces
+.XE
+.LP
+Color space specific information necessary
+for color space conversion and color string parsing is stored in an
+.PN XcmsColorSpace
+structure.
+Therefore, a new structure containing this information is required
+for each additional color space.
+In the case of device-independent color spaces,
+a handle to this new structure (that is, by means of a global variable)
+is usually made accessible to the client program for use with the
+.PN XcmsAddColorSpace
+function.
+.LP
+If a new
+.PN XcmsColorSpace
+structure specifies a color space not registered with the X Consortium,
+they should be treated as private to the client
+because format values for unregistered color spaces are assigned at run time.
+If references to an unregistered color space must be made outside the
+client (for example, storing color specifications in a file using the
+unregistered color space), then reference should be made by color space prefix
+(see
+.PN XcmsFormatOfPrefix
+and
+.PN XcmsPrefixOfFormat ).
+.sM
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef (*XcmsConversionProc)();
+typedef XcmsConversionProc *XcmsFuncListPtr;
+ /* A NULL terminated list of function pointers*/
+
+typedef struct _XcmsColorSpace {
+ char *prefix;
+ XcmsColorFormat format;
+ XcmsParseStringProc parseString;
+ XcmsFuncListPtr to_CIEXYZ;
+ XcmsFuncListPtr from_CIEXYZ;
+ int inverse_flag;
+} XcmsColorSpace;
+.De
+.LP
+.eM
+The prefix member specifies the prefix that indicates a color string
+is in this color space's string format.
+For example, the strings ``ciexyz'' or ``CIEXYZ'' for CIE XYZ,
+and ``rgb'' or ``RGB'' for RGB.
+The prefix is case insensitive.
+The format member specifies the color specification format.
+Formats for unregistered color spaces are assigned at run time.
+The parseString member contains a pointer to the function
+that can parse a color string into an
+.PN XcmsColor
+structure.
+This function returns an integer (int): nonzero if it succeeded
+and zero otherwise.
+The to_CIEXYZ and from_CIEXYZ members contain pointers,
+each to a NULL terminated list of function pointers.
+When the list of functions is executed in series,
+it will convert the color specified in an
+.PN XcmsColor
+structure from/to the current color space format to/from the CIE XYZ format.
+Each function returns an integer (int): nonzero if it succeeded
+and zero otherwise.
+The white point to be associated with the colors is specified
+explicitly, even though white points can be found in the CCC.
+The inverse_flag member, if nonzero, specifies that for each function listed
+in to_CIEXYZ,
+its inverse function can be found in from_CIEXYZ such that:
+.LP
+.Ds 0
+Given: n = number of functions in each list
+
+for each i, such that 0 <= i < n
+ from_CIEXYZ[n - i - 1] is the inverse of to_CIEXYZ[i].
+.De
+.LP
+This allows Xlib to use the shortest conversion path,
+thus bypassing CIE XYZ if possible (for example, TekHVC to CIE L*u*v*).
+.NH 3
+Parse String Callback
+.XS
+\*(SN Parse String Callback
+.XE
+.LP
+The callback in the
+.PN XcmsColorSpace
+structure for parsing a color string for the particular color space must
+adhere to the following software interface specification:
+.IN "XcmsParseStringProc" "" "@DEF@"
+.sM
+.FD 0
+typedef int (*XcmsParseStringProc)\^(\^\fIcolor_string\fP, \fIcolor_return\fP\^)
+.br
+ char *\fIcolor_string\fP\^;
+.br
+ XcmsColor *\fIcolor_return\fP\^;
+.FN
+.IP \fIcolor_string\fP 1i
+Specifies the color string to parse.
+.IP \fIcolor_return\fP 1i
+Returns the color specification in the color space's format.
+.LP
+.eM
+.NH 3
+Color Specification Conversion Callback
+.XS
+\*(SN Color Specification Conversion Callback
+.XE
+.LP
+Callback functions in the
+.PN XcmsColorSpace
+structure for converting a color specification between device-independent
+spaces must adhere to the
+following software interface specification:
+.sM
+.FD 0
+Status ConversionProc\^(\^\fIccc\fP, \fIwhite_point\fP, \fIcolors_in_out\fP, \fIncolors\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColor *\fIwhite_point\fP\^;
+.br
+ XcmsColor *\fIcolors_in_out\fP\^;
+.br
+ unsigned int \fIncolors\fP\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.IP \fIwhite_point\fP 1i
+Specifies the white point associated with color specifications.
+The pixel member should be ignored,
+and the entire structure remain unchanged upon return.
+.IP \fIcolors_in_out\fP 1i
+Specifies an array of color specifications.
+Pixel members should be ignored and must remain unchanged upon return.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.PN XcmsColor
+structures in the color-specification array.
+.LP
+.eM
+.sp
+Callback functions in the
+.PN XcmsColorSpace
+structure for converting a color specification to or from a device-dependent
+space must adhere to the
+following software interface specification:
+.sM
+.FD 0
+Status ConversionProc\^(\^\fIccc\fP, \fIcolors_in_out\fP, \fIncolors\fP, \fIcompression_flags_return\fP\^)
+.br
+ XcmsCCC \fIccc\fP\^;
+.br
+ XcmsColor *\fIcolors_in_out\fP\^;
+.br
+ unsigned int \fIncolors\fP\^;
+.br
+ Bool \fIcompression_flags_return\fP\^[\^]\^;
+.FN
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.IP \fIcolors_in_out\fP 1i
+Specifies an array of color specifications.
+Pixel members should be ignored and must remain unchanged upon return.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.PN XcmsColor
+structures in the color-specification array.
+.IP \fIcompression_flags_return\fP 1i
+Returns an array of Boolean values for indicating compression status.
+If a non-NULL pointer is supplied
+and a color at a given index is compressed, then
+.PN True
+should be stored at the corresponding index in this array;
+otherwise, the array should not be modified.
+.LP
+.eM
+Conversion functions are available globally for use by other color
+spaces.
+The conversion functions provided by Xlib are:
+.TS H
+lw(1.8i) lw(1.8i) lw(1.8i).
+_
+.sp 6p
+.B
+Function Converts from Converts to
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN XcmsCIELabToCIEXYZ
+T} T{
+.PN XcmsCIELabFormat
+T} T{
+.PN XcmsCIEXYZFormat
+T}
+T{
+.PN XcmsCIELuvToCIEuvY
+T} T{
+.PN XcmsCIELuvFormat
+T} T{
+.PN XcmsCIEuvYFormat
+T}
+T{
+.PN XcmsCIEXYZToCIELab
+T} T{
+.PN XcmsCIEXYZFormat
+T} T{
+.PN XcmsCIELabFormat
+T}
+T{
+.PN XcmsCIEXYZToCIEuvY
+T} T{
+.PN XcmsCIEXYZFormat
+T} T{
+.PN XcmsCIEuvYFormat
+T}
+T{
+.PN XcmsCIEXYZToCIExyY
+T} T{
+.PN XcmsCIEXYZFormat
+T} T{
+.PN XcmsCIExyYFormat
+T}
+T{
+.PN XcmsCIEXYZToRGBi
+T} T{
+.PN XcmsCIEXYZFormat
+T} T{
+.PN XcmsRGBiFormat
+T}
+T{
+.PN XcmsCIEuvYToCIELuv
+T} T{
+.PN XcmsCIEuvYFormat
+T} T{
+.PN XcmsCIELabFormat
+T}
+T{
+.PN XcmsCIEuvYToCIEXYZ
+T} T{
+.PN XcmsCIEuvYFormat
+T} T{
+.PN XcmsCIEXYZFormat
+T}
+T{
+.PN XcmsCIEuvYToTekHVC
+T} T{
+.PN XcmsCIEuvYFormat
+T} T{
+.PN XcmsTekHVCFormat
+T}
+T{
+.PN XcmsCIExyYToCIEXYZ
+T} T{
+.PN XcmsCIExyYFormat
+T} T{
+.PN XcmsCIEXYZFormat
+T}
+T{
+.PN XcmsRGBToRGBi
+T} T{
+.PN XcmsRGBFormat
+T} T{
+.PN XcmsRGBiFormat
+T}
+T{
+.PN XcmsRGBiToCIEXYZ
+T} T{
+.PN XcmsRGBiFormat
+T} T{
+.PN XcmsCIEXYZFormat
+T}
+T{
+.PN XcmsRGBiToRGB
+T} T{
+.PN XcmsRGBiFormat
+T} T{
+.PN XcmsRGBFormat
+T}
+T{
+.PN XcmsTekHVCToCIEuvY
+T} T{
+.PN XcmsTekHVCFormat
+T} T{
+.PN XcmsCIEuvYFormat
+T}
+.sp 6p
+_
+.TE
+.NH 3
+Function Sets
+.XS
+\*(SN Function Sets
+.XE
+.IN "Function set"
+.IN "Function set" "LINEAR_RGB"
+.LP
+Functions to convert between device-dependent color spaces
+and CIE XYZ may differ for different classes of output devices
+(for example, color versus gray monitors).
+Therefore, the notion of a Color Characterization Function Set
+has been developed.
+A function set consists of device-dependent color spaces
+and the functions that convert color specifications
+between these device-dependent color spaces and the CIE XYZ color space
+appropriate for a particular class of output devices.
+The function set also contains a function that reads
+color characterization data off root window properties.
+It is this characterization data that will differ between devices within
+a class of output devices.
+.IN "Device Color Characterization"
+For details about how color characterization data is
+stored in root window properties,
+see the section on Device Color Characterization in the
+\fIInter-Client Communication Conventions Manual\fP.
+The LINEAR_RGB function set is provided by Xlib
+and will support most color monitors.
+Function sets may require data that differs
+from those needed for the LINEAR_RGB function set.
+In that case,
+its corresponding data may be stored on different root window properties.
+.NH 3
+Adding Function Sets
+.XS
+\*(SN Adding Function Sets
+.XE
+.LP
+To add a function set, use
+.PN XcmsAddFunctionSet .
+.IN "XcmsAddFunctionSet" "" "@DEF@"
+.sM
+.FD 0
+Status XcmsAddFunctionSet\^(\^\fIfunction_set\fP\^)
+.br
+ XcmsFunctionSet *\fIfunction_set\fP\^;
+.FN
+.IP \fIfunction_set\fP 1i
+Specifies the function set to add.
+.LP
+.eM
+The
+.PN XcmsAddFunctionSet
+function adds a function set to the color management system.
+If the function set uses device-dependent
+.PN XcmsColorSpace
+structures not accessible in the color management system,
+.PN XcmsAddFunctionSet
+adds them.
+If an added
+.PN XcmsColorSpace
+structure is for a device-dependent color space not registered
+with the X Consortium,
+they should be treated as private to the client
+because format values for unregistered color spaces are assigned at run time.
+If references to an unregistered color space must be made outside the
+client (for example, storing color specifications in a file
+using the unregistered color space),
+then reference should be made by color space prefix
+(see
+.PN XcmsFormatOfPrefix
+and
+.PN XcmsPrefixOfFormat ).
+.LP
+Additional function sets should be added before any calls to other
+Xlib routines are made.
+If not, the
+.PN XcmsPerScrnInfo
+member of a previously created
+.PN XcmsCCC
+does not have the opportunity to initialize
+with the added function set.
+.NH 3
+Creating Additional Function Sets
+.XS
+\*(SN Creating Additional Function Sets
+.XE
+.LP
+The creation of additional function sets should be
+required only when an output device does not conform to existing
+function sets or when additional device-dependent color spaces are necessary.
+A function set consists primarily of a collection of device-dependent
+.PN XcmsColorSpace
+structures and a means to read and store a
+screen's color characterization data.
+This data is stored in an
+.PN XcmsFunctionSet
+structure.
+A handle to this structure (that is, by means of global variable)
+is usually made accessible to the client program for use with
+.PN XcmsAddFunctionSet .
+.LP
+If a function set uses new device-dependent
+.PN XcmsColorSpace
+structures,
+they will be transparently processed into the color management system.
+Function sets can share an
+.PN XcmsColorSpace
+structure for a device-dependent color space.
+In addition, multiple
+.PN XcmsColorSpace
+structures are allowed for a device-dependent color space;
+however, a function set can reference only one of them.
+These
+.PN XcmsColorSpace
+structures will differ in the functions to convert to and from CIE XYZ,
+thus tailored for the specific function set.
+.sM
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct _XcmsFunctionSet {
+ XcmsColorSpace **DDColorSpaces;
+ XcmsScreenInitProc screenInitProc;
+ XcmsScreenFreeProc screenFreeProc;
+} XcmsFunctionSet;
+.De
+.LP
+.eM
+The DDColorSpaces member is a pointer to a NULL terminated list
+of pointers to
+.PN XcmsColorSpace
+structures for the device-dependent color spaces that are supported
+by the function set.
+The screenInitProc member is set to the callback procedure (see the following
+interface specification) that initializes the
+.PN XcmsPerScrnInfo
+structure for a particular screen.
+.LP
+The screen initialization callback must adhere to the following software
+interface specification:
+.IN "XcmsScreenInitProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Status (*XcmsScreenInitProc)\^(\^\fIdisplay\fP, \fIscreen_number\fP, \fIscreen_info\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.br
+ XcmsPerScrnInfo *\fIscreen_info\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.IP \fIscreen_info\fP 1i
+Specifies the
+.PN XcmsPerScrnInfo
+structure, which contains the per screen information.
+.LP
+.eM
+The screen initialization callback in the
+.PN XcmsFunctionSet
+structure fetches the color characterization data (device profile) for
+the specified screen,
+typically off properties on the
+screen's root window.
+It then initializes the specified
+.PN XcmsPerScrnInfo
+structure.
+.IN "Device profile"
+.IN "Color Characterization Data"
+If successful, the procedure fills in the
+.PN XcmsPerScrnInfo
+structure as follows:
+.IP \(bu 5
+It sets the screenData member to the address
+of the created device profile data structure
+(contents known only by the function set).
+.IP \(bu 5
+It next sets the screenWhitePoint member.
+.IP \(bu 5
+It next sets the functionSet member to the address of the
+.PN XcmsFunctionSet
+structure.
+.IP \(bu 5
+It then sets the state member to
+.PN XcmsInitSuccess
+and finally returns
+.PN XcmsSuccess .
+.LP
+If unsuccessful, the procedure sets the state member to
+.PN XcmsInitFailure
+and returns
+.PN XcmsFailure .
+.LP
+The
+.PN XcmsPerScrnInfo
+structure contains:
+.sM
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct _XcmsPerScrnInfo {
+ XcmsColor screenWhitePoint;
+ XPointer functionSet;
+ XPointer screenData;
+ unsigned char state;
+ char pad[3];
+} XcmsPerScrnInfo;
+.De
+.LP
+.eM
+The screenWhitePoint member specifies the white point inherent to
+the screen.
+The functionSet member specifies the appropriate function set.
+The screenData member specifies the device profile.
+The state member is set to one of the following:
+.IP \(bu 5
+.PN XcmsInitNone
+indicates initialization has not been previously attempted.
+.IP \(bu 5
+.PN XcmsInitFailure
+indicates initialization has been previously attempted but failed.
+.IP \(bu 5
+.PN XcmsInitSuccess
+indicates initialization has been previously attempted and succeeded.
+.LP
+The screen free callback must adhere to the following software
+interface specification:
+.IN "XcmsScreenFreeProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XcmsScreenFreeProc)\^(\^\fIscreenData\fP\^)
+.br
+ XPointer \fIscreenData\fP\^;
+.FN
+.IP \fIscreenData\fP 1i
+Specifies the data to be freed.
+.LP
+.eM
+This function is called to free the screenData stored in an
+.PN XcmsPerScrnInfo
+structure.
+.bp
diff --git a/specs/X11/CH07 b/specs/X11/CH07
new file mode 100644
index 0000000..d6f6722
--- /dev/null
+++ b/specs/X11/CH07
@@ -0,0 +1,2357 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 7\fP\s-1
+
+\s+1\fBGraphics Context Functions\fP\s-1
+.sp 2
+.nr H1 7
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 7: Graphics Context Functions
+.XE
+A number of resources are used when performing graphics operations in X.
+Most information about performing graphics (for example, foreground
+color, background color, line style, and so on) is stored in
+resources called graphics contexts (GCs).
+.IN "Graphics context"
+Most graphics operations (see chapter 8) take a
+GC as an argument.
+Although in theory the X protocol permits sharing of GCs between applications,
+it is expected that applications will use their own
+GCs when performing operations.
+Sharing of GCs is highly discouraged because the library may cache GC state.
+.LP
+Graphics operations can be performed to either windows or pixmaps,
+which collectively are called drawables.
+.IN "Root"
+Each drawable exists on a single screen.
+A GC is created for a specific screen and drawable depth
+and can only be used with drawables of matching
+screen and depth.
+.LP
+This chapter discusses how to:
+.IP \(bu 5
+Manipulate graphics context/state
+.IP \(bu 5
+Use graphics context convenience functions
+.NH 2
+Manipulating Graphics Context/State
+.XS
+\*(SN Manipulating Graphics Context/State
+.XE
+.LP
+Most attributes of graphics operations are stored in GCs.
+These include line width, line style, plane mask, foreground, background,
+tile, stipple, clipping region, end style, join style, and so on.
+Graphics operations (for example, drawing lines) use these values
+to determine the actual drawing operation.
+Extensions to X may add additional components to GCs.
+The contents of a GC are private to Xlib.
+.LP
+Xlib implements a write-back cache for all elements of a GC that are not
+resource IDs to allow Xlib to implement the transparent coalescing of changes
+to GCs.
+For example,
+a call to
+.PN XSetForeground
+of a GC followed by a call to
+.PN XSetLineAttributes
+results in only a single-change GC protocol request to the server.
+GCs are neither expected nor encouraged to be shared between client
+applications, so this write-back caching should present no problems.
+Applications cannot share GCs without external synchronization.
+Therefore,
+sharing GCs between applications is highly discouraged.
+.LP
+To set an attribute of a GC,
+set the appropriate member of the
+.PN XGCValues
+structure and OR in the corresponding value bitmask in your subsequent calls to
+.PN XCreateGC .
+The symbols for the value mask bits and the
+.PN XGCValues
+structure are:
+.sM
+.LP
+/* GC attribute value mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.75i).
+#define\
+ T{
+.PN GCFunction
+T} T{
+(1L<<0)
+T}
+#define\
+ T{
+.PN GCPlaneMask
+T} T{
+(1L<<1)
+T}
+#define\
+ T{
+.PN GCForeground
+T} T{
+(1L<<2)
+T}
+#define\
+ T{
+.PN GCBackground
+T} T{
+(1L<<3)
+T}
+#define\
+ T{
+.PN GCLineWidth
+T} T{
+(1L<<4)
+T}
+#define\
+ T{
+.PN GCLineStyle
+T} T{
+(1L<<5)
+T}
+#define\
+ T{
+.PN GCCapStyle
+T} T{
+(1L<<6)
+T}
+#define\
+ T{
+.PN GCJoinStyle
+T} T{
+(1L<<7)
+T}
+#define\
+ T{
+.PN GCFillStyle
+T} T{
+(1L<<8)
+T}
+#define\
+ T{
+.PN GCFillRule
+T} T{
+(1L<<9)
+T}
+#define\
+ T{
+.PN GCTile
+T} T{
+(1L<<10)
+T}
+#define\
+ T{
+.PN GCStipple
+T} T{
+(1L<<11)
+T}
+#define\
+ T{
+.PN GCTileStipXOrigin
+T} T{
+(1L<<12)
+T}
+#define\
+ T{
+.PN GCTileStipYOrigin
+T} T{
+(1L<<13)
+T}
+#define\
+ T{
+.PN GCFont
+T} T{
+(1L<<14)
+T}
+#define\
+ T{
+.PN GCSubwindowMode
+T} T{
+(1L<<15)
+T}
+#define\
+ T{
+.PN GCGraphicsExposures
+T} T{
+(1L<<16)
+T}
+#define\
+ T{
+.PN GCClipXOrigin
+T} T{
+(1L<<17)
+T}
+#define\
+ T{
+.PN GCClipYOrigin
+T} T{
+(1L<<18)
+T}
+#define\
+ T{
+.PN GCClipMask
+T} T{
+(1L<<19)
+T}
+#define\
+ T{
+.PN GCDashOffset
+T} T{
+(1L<<20)
+T}
+#define\
+ T{
+.PN GCDashList
+T} T{
+(1L<<21)
+T}
+#define\
+ T{
+.PN GCArcMode
+T} T{
+(1L<<22)
+T}
+.TE
+.IN "XGCValues" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+/* Values */
+
+typedef struct {
+ int function; /* logical operation */
+ unsigned long plane_mask; /* plane mask */
+ unsigned long foreground; /* foreground pixel */
+ unsigned long background; /* background pixel */
+ int line_width; /* line width (in pixels) */
+ int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
+ int cap_style; /* CapNotLast, CapButt, CapRound, CapProjecting */
+ int join_style; /* JoinMiter, JoinRound, JoinBevel */
+ int fill_style; /* FillSolid, FillTiled, FillStippled FillOpaqueStippled*/
+ int fill_rule; /* EvenOddRule, WindingRule */
+ int arc_mode; /* ArcChord, ArcPieSlice */
+ Pixmap tile; /* tile pixmap for tiling operations */
+ Pixmap stipple; /* stipple 1 plane pixmap for stippling */
+ int ts_x_origin; /* offset for tile or stipple operations */
+ int ts_y_origin;
+ Font font; /* default text font for text operations */
+ int subwindow_mode; /* ClipByChildren, IncludeInferiors */
+ Bool graphics_exposures; /* boolean, should exposures be generated */
+ int clip_x_origin; /* origin for clipping */
+ int clip_y_origin;
+ Pixmap clip_mask; /* bitmap clipping; other calls for rects */
+ int dash_offset; /* patterned/dashed line information */
+ char dashes;
+} XGCValues;
+.De
+.LP
+.eM
+The default GC values are:
+.TS H
+l l.
+_
+.sp 6p
+.B
+Component Default
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+function
+T} T{
+.PN GXcopy
+T}
+plane_mask All ones
+foreground 0
+background 1
+line_width 0
+T{
+line_style
+T} T{
+.PN LineSolid
+T}
+T{
+cap_style
+T} T{
+.PN CapButt
+T}
+T{
+join_style
+T} T{
+.PN JoinMiter
+T}
+T{
+fill_style
+T} T{
+.PN FillSolid
+T}
+T{
+fill_rule
+T} T{
+.PN EvenOddRule
+T}
+T{
+arc_mode
+T} T{
+.PN ArcPieSlice
+T}
+tile Pixmap of unspecified size filled with foreground pixel
+ (that is, client specified pixel if any, else 0)
+ (subsequent changes to foreground do not affect this pixmap)
+stipple Pixmap of unspecified size filled with ones
+ts_x_origin 0
+ts_y_origin 0
+font <implementation dependent>
+T{
+subwindow_mode
+T} T{
+.PN ClipByChildren
+T}
+T{
+graphics_exposures
+T} T{
+.PN True
+T}
+clip_x_origin 0
+clip_y_origin 0
+T{
+clip_mask
+T} T{
+.PN None
+T}
+dash_offset 0
+dashes 4 (that is, the list [4, 4])
+.sp 6p
+_
+.TE
+.LP
+Note that foreground and background are not set to any values likely
+to be useful in a window.
+.LP
+.IN "Display Functions" "" "@DEF@"
+.IN "Source" "" "@DEF@"
+.IN "Destination" "" "@DEF@"
+The function attributes of a GC are used when you update a section of
+a drawable (the destination) with bits from somewhere else (the source).
+The function in a GC defines how the new destination bits are to be
+computed from the source bits and the old destination bits.
+.PN GXcopy
+is typically the most useful because it will work on a color display,
+but special applications may use other functions,
+particularly in concert with particular planes of a color display.
+The 16 GC functions, defined in
+.hN X11/X.h ,
+are:
+.\" are listed in Table 5-1 along with the
+.\"the associated hexadecimal code
+.\" and operation.
+.\".CP T 1
+.\"Display Functions
+.TS H
+lw(1.5i) cw(.5i) lw(2i).
+_
+.sp 6p
+.B
+Function Name Value Operation
+.sp 6p
+_
+.sp 6p
+.TH
+T{
+.PN GXclear
+T} T{
+0x0
+T} T{
+0
+T}
+T{
+.PN GXand
+T} T{
+0x1
+T} T{
+src AND dst
+T}
+T{
+.PN GXandReverse
+T} T{
+0x2
+T} T{
+src AND NOT dst
+T}
+T{
+.PN GXcopy
+T} T{
+0x3
+T} T{
+src
+T}
+T{
+.PN GXandInverted
+T} T{
+0x4
+T} T{
+(NOT src) AND dst
+T}
+T{
+.PN GXnoop
+T} T{
+0x5
+T} T{
+dst
+T}
+T{
+.PN GXxor
+T} T{
+0x6
+T} T{
+src XOR dst
+T}
+T{
+.PN GXor
+T} T{
+0x7
+T} T{
+src OR dst
+T}
+T{
+.PN GXnor
+T} T{
+0x8
+T} T{
+(NOT src) AND (NOT dst)
+T}
+T{
+.PN GXequiv
+T} T{
+0x9
+T} T{
+(NOT src) XOR dst
+T}
+T{
+.PN GXinvert
+T} T{
+0xa
+T} T{
+NOT dst
+T}
+T{
+.PN GXorReverse
+T} T{
+0xb
+T} T{
+src OR (NOT dst)
+T}
+T{
+.PN GXcopyInverted
+T} T{
+0xc
+T} T{
+NOT src
+T}
+T{
+.PN GXorInverted
+T} T{
+0xd
+T} T{
+(NOT src) OR dst
+T}
+T{
+.PN GXnand
+T} T{
+0xe
+T} T{
+(NOT src) OR (NOT dst)
+T}
+T{
+.PN GXset
+T} T{
+0xf
+T} T{
+1
+T}
+.sp 6p
+_
+.TE
+.LP
+Many graphics operations depend on either pixel values or planes in a GC.
+.IN "Pixel value"
+The planes attribute is of type long, and it specifies which planes of the
+destination are to be modified, one bit per plane.
+.IN "Plane" "mask"
+A monochrome display has only one plane and
+will be the least significant bit of the word.
+As planes are added to the display hardware, they will occupy more
+significant bits in the plane mask.
+.LP
+In graphics operations, given a source and destination pixel,
+the result is computed bitwise on corresponding bits of the pixels.
+That is, a Boolean operation is performed in each bit plane.
+The plane_mask restricts the operation to a subset of planes.
+A macro constant
+.PN AllPlanes
+can be used to refer to all planes of the screen simultaneously.
+The result is computed by the following:
+.LP
+.Ds
+((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))
+.De
+.LP
+Range checking is not performed on the values for foreground,
+background, or plane_mask.
+They are simply truncated to the appropriate
+number of bits.
+The line-width is measured in pixels and either can be greater than or equal to
+one (wide line) or can be the special value zero (thin line).
+.LP
+Wide lines are drawn centered on the path described by the graphics request.
+Unless otherwise specified by the join-style or cap-style,
+the bounding box of a wide line with endpoints [x1, y1], [x2, y2] and
+width w is a rectangle with vertices at the following real coordinates:
+.LP
+.Ds
+.TA .5i 2.5i
+.ta .5i 2.5i
+[x1-(w*sn/2), y1+(w*cs/2)], [x1+(w*sn/2), y1-(w*cs/2)],
+[x2-(w*sn/2), y2+(w*cs/2)], [x2+(w*sn/2), y2-(w*cs/2)]
+.De
+.LP
+Here sn is the sine of the angle of the line,
+and cs is the cosine of the angle of the line.
+A pixel is part of the line and so is drawn
+if the center of the pixel is fully inside the bounding box
+(which is viewed as having infinitely thin edges).
+If the center of the pixel is exactly on the bounding box,
+it is part of the line if and only if the interior is immediately to its right
+(x increasing direction).
+Pixels with centers on a horizontal edge are a special case and are part of
+the line if and only if the interior or the boundary is immediately below
+(y increasing direction) and the interior or the boundary is immediately
+to the right (x increasing direction).
+.LP
+Thin lines (zero line-width) are one-pixel-wide lines drawn using an
+unspecified, device-dependent algorithm.
+There are only two constraints on this algorithm.
+.IP 1. 5
+If a line is drawn unclipped from [x1,y1] to [x2,y2] and
+if another line is drawn unclipped from [x1+dx,y1+dy] to [x2+dx,y2+dy],
+a point [x,y] is touched by drawing the first line
+if and only if the point [x+dx,y+dy] is touched by drawing the second line.
+.IP 2. 5
+The effective set of points comprising a line cannot be affected by clipping.
+That is, a point is touched in a clipped line if and only if the point
+lies inside the clipping region and the point would be touched
+by the line when drawn unclipped.
+.LP
+A wide line drawn from [x1,y1] to [x2,y2] always draws the same pixels
+as a wide line drawn from [x2,y2] to [x1,y1], not counting cap-style
+and join-style.
+It is recommended that this property be true for thin lines,
+but this is not required.
+A line-width of zero may differ from a line-width of one in which pixels are
+drawn.
+This permits the use of many manufacturers' line drawing hardware,
+which may run many times faster than the more precisely specified
+wide lines.
+.LP
+In general,
+drawing a thin line will be faster than drawing a wide line of width one.
+However, because of their different drawing algorithms,
+thin lines may not mix well aesthetically with wide lines.
+If it is desirable to obtain precise and uniform results across all displays,
+a client should always use a line-width of one rather than a line-width of zero.
+.LP
+The line-style defines which sections of a line are drawn:
+.TS
+lw(1.3i) lw(4.5i).
+T{
+.PN LineSolid
+T} T{
+The full path of the line is drawn.
+T}
+.sp 6p
+T{
+.PN LineDoubleDash
+T} T{
+The full path of the line is drawn,
+but the even dashes are filled differently
+from the odd dashes (see fill-style) with
+.PN CapButt
+style used where even and odd dashes meet.
+T}
+.sp 6p
+T{
+.PN LineOnOffDash
+T} T{
+Only the even dashes are drawn,
+and cap-style applies to
+all internal ends of the individual dashes,
+except
+.PN CapNotLast
+is treated as
+.PN CapButt .
+T}
+.TE
+.LP
+The cap-style defines how the endpoints of a path are drawn:
+.IN "Graphics context" "path"
+.TS
+lw(1.3i) lw(4.5i).
+T{
+.PN CapNotLast
+T} T{
+This is equivalent to
+.PN CapButt
+except that for a line-width of zero the final endpoint is not drawn.
+T}
+.sp 6p
+T{
+.PN CapButt
+T} T{
+The line is square at the endpoint (perpendicular to the slope of the line)
+with no projection beyond.
+T}
+.sp 6p
+T{
+.PN CapRound
+T} T{
+The line has a circular arc with the diameter equal to the line-width,
+centered on the endpoint.
+(This is equivalent to
+.PN CapButt
+for line-width of zero).
+T}
+.sp 6p
+T{
+.PN CapProjecting
+T} T{
+The line is square at the end, but the path continues beyond the endpoint
+for a distance equal to half the line-width.
+(This is equivalent to
+.PN CapButt
+for line-width of zero).
+T}
+.TE
+.LP
+The join-style defines how corners are drawn for wide lines:
+.TS
+lw(1.3i) lw(4.5i).
+T{
+.PN JoinMiter
+T} T{
+The outer edges of two lines extend to meet at an angle.
+However, if the angle is less than 11 degrees,
+then a
+.PN JoinBevel
+join-style is used instead.
+T}
+.sp 6p
+T{
+.PN JoinRound
+T} T{
+The corner is a circular arc with the diameter equal to the line-width,
+centered on the joinpoint.
+T}
+.sp 6p
+T{
+.PN JoinBevel
+T} T{
+The corner has
+.PN CapButt
+endpoint styles with the triangular notch filled.
+T}
+.TE
+.LP
+For a line with coincident endpoints (x1=x2, y1=y2),
+when the cap-style is applied to both endpoints,
+the semantics depends on the line-width and the cap-style:
+.TS
+lw(1.3i) lw(.5i) lw(4i).
+T{
+.PN CapNotLast
+T} T{
+thin
+T} T{
+The results are device dependent,
+but the desired effect is that nothing is drawn.
+T}
+.sp 6p
+T{
+.PN CapButt
+T} T{
+thin
+T} T{
+The results are device dependent,
+but the desired effect is that a single pixel is drawn.
+T}
+.sp 6p
+T{
+.PN CapRound
+T} T{
+thin
+T} T{
+The results are the same as for
+.PN CapButt /thin.
+T}
+.sp 6p
+T{
+.PN CapProjecting
+T} T{
+thin
+T} T{
+The results are the same as for
+.PN CapButt /thin.
+T}
+.sp 6p
+T{
+.PN CapButt
+T} T{
+wide
+T} T{
+Nothing is drawn.
+T}
+.sp 6p
+T{
+.PN CapRound
+T} T{
+wide
+T} T{
+The closed path is a circle, centered at the endpoint, and
+with the diameter equal to the line-width.
+T}
+.sp 6p
+T{
+.PN CapProjecting
+T} T{
+wide
+T} T{
+The closed path is a square, aligned with the coordinate axes, centered at the
+endpoint, and with the sides equal to the line-width.
+T}
+.TE
+.LP
+For a line with coincident endpoints (x1=x2, y1=y2),
+when the join-style is applied at one or both endpoints,
+the effect is as if the line was removed from the overall path.
+However, if the total path consists of or is reduced to a single point joined
+with itself, the effect is the same as when the cap-style is applied at both
+endpoints.
+.LP
+The tile/stipple represents an infinite two-dimensional plane,
+with the tile/stipple replicated in all dimensions.
+When that plane is superimposed on the drawable
+for use in a graphics operation, the upper-left corner
+of some instance of the tile/stipple is at the coordinates within
+the drawable specified by the tile/stipple origin.
+The tile/stipple and clip origins are interpreted relative to the
+origin of whatever destination drawable is specified in a graphics
+request.
+The tile pixmap must have the same root and depth as the GC,
+or a
+.PN BadMatch
+error results.
+The stipple pixmap must have depth one and must have the same root as the
+GC, or a
+.PN BadMatch
+error results.
+For stipple operations where the fill-style is
+.PN FillStippled
+but not
+.PN FillOpaqueStippled ,
+the stipple pattern is tiled in a
+single plane and acts as an additional clip mask to be ANDed with the clip-mask.
+Although some sizes may be faster to use than others,
+any size pixmap can be used for tiling or stippling.
+.LP
+The fill-style defines the contents of the source for line, text, and
+fill requests.
+For all text and fill requests (for example,
+.PN XDrawText ,
+.PN XDrawText16 ,
+.PN XFillRectangle ,
+.PN XFillPolygon ,
+and
+.PN XFillArc );
+for line requests
+with line-style
+.PN LineSolid
+(for example,
+.PN XDrawLine ,
+.PN XDrawSegments ,
+.PN XDrawRectangle ,
+.PN XDrawArc );
+and for the even dashes for line requests with line-style
+.PN LineOnOffDash
+or
+.PN LineDoubleDash ,
+the following apply:
+.TS
+lw(1.8i) lw(4i).
+T{
+.PN FillSolid
+T} T{
+Foreground
+T}
+.sp 6p
+T{
+.PN FillTiled
+T} T{
+Tile
+T}
+.sp 6p
+T{
+.PN FillOpaqueStippled
+T} T{
+A tile with the same width and height as stipple,
+but with background everywhere stipple has a zero
+and with foreground everywhere stipple has a one
+T}
+.sp 6p
+T{
+.PN FillStippled
+T} T{
+Foreground masked by stipple
+T}
+.TE
+.LP
+When drawing lines with line-style
+.PN LineDoubleDash ,
+the odd dashes are controlled by the fill-style in the following manner:
+.TS
+lw(1.8i) lw(4i).
+T{
+.PN FillSolid
+T} T{
+Background
+T}
+.sp 6p
+T{
+.PN FillTiled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.PN FillOpaqueStippled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.PN FillStippled
+T} T{
+Background masked by stipple
+T}
+.TE
+.LP
+Storing a pixmap in a GC might or might not result in a copy
+being made.
+If the pixmap is later used as the destination for a graphics request,
+the change might or might not be reflected in the GC.
+If the pixmap is used simultaneously in a graphics request both as
+a destination and as a tile or stipple,
+the results are undefined.
+.LP
+For optimum performance,
+you should draw as much as possible with the same GC
+(without changing its components).
+The costs of changing GC components relative to using different GCs
+depend on the display hardware and the server implementation.
+It is quite likely that some amount of GC information will be
+cached in display hardware and that such hardware can only cache a small number
+of GCs.
+.LP
+The dashes value is actually a simplified form of the
+more general patterns that can be set with
+.PN XSetDashes .
+Specifying a
+value of N is equivalent to specifying the two-element list [N, N] in
+.PN XSetDashes .
+The value must be nonzero,
+or a
+.PN BadValue
+error results.
+.LP
+The clip-mask restricts writes to the destination drawable.
+If the clip-mask is set to a pixmap,
+it must have depth one and have the same root as the GC,
+or a
+.PN BadMatch
+error results.
+If clip-mask is set to
+.PN None ,
+the pixels are always drawn regardless of the clip origin.
+The clip-mask also can be set by calling the
+.PN XSetClipRectangles
+or
+.PN XSetRegion
+functions.
+Only pixels where the clip-mask has a bit set to 1 are drawn.
+Pixels are not drawn outside the area covered by the clip-mask
+or where the clip-mask has a bit set to 0.
+The clip-mask affects all graphics requests.
+The clip-mask does not clip sources.
+The clip-mask origin is interpreted relative to the origin of whatever
+destination drawable is specified in a graphics request.
+.LP
+You can set the subwindow-mode to
+.PN ClipByChildren
+or
+.PN IncludeInferiors .
+For
+.PN ClipByChildren ,
+both source and destination windows are
+additionally clipped by all viewable
+.PN InputOutput
+children.
+For
+.PN IncludeInferiors ,
+neither source nor destination window is clipped by inferiors.
+This will result in including subwindow contents in the source
+and drawing through subwindow boundaries of the destination.
+The use of
+.PN IncludeInferiors
+on a window of one depth with mapped
+inferiors of differing depth is not illegal, but the semantics are
+undefined by the core protocol.
+.LP
+The fill-rule defines what pixels are inside (drawn) for
+paths given in
+.PN XFillPolygon
+requests and can be set to
+.PN EvenOddRule
+or
+.PN WindingRule .
+For
+.PN EvenOddRule ,
+a point is inside if
+an infinite ray with the point as origin crosses the path an odd number
+of times.
+For
+.PN WindingRule ,
+a point is inside if an infinite ray with the
+point as origin crosses an unequal number of clockwise and
+counterclockwise directed path segments.
+A clockwise directed path segment is one that crosses the ray from left to
+right as observed from the point.
+A counterclockwise segment is one that crosses the ray from right to left
+as observed from the point.
+The case where a directed line segment is coincident with the ray is
+uninteresting because you can simply choose a different ray that is not
+coincident with a segment.
+.LP
+For both
+.PN EvenOddRule
+and
+.PN WindingRule ,
+a point is infinitely small,
+and the path is an infinitely thin line.
+A pixel is inside if the center point of the pixel is inside
+and the center point is not on the boundary.
+If the center point is on the boundary,
+the pixel is inside if and only if the polygon interior is immediately to
+its right (x increasing direction).
+Pixels with centers on a horizontal edge are a special case
+and are inside if and only if the polygon interior is immediately below
+(y increasing direction).
+.LP
+The arc-mode controls filling in the
+.PN XFillArcs
+function and can be set to
+.PN ArcPieSlice
+or
+.PN ArcChord .
+For
+.PN ArcPieSlice ,
+the arcs are pie-slice filled.
+For
+.PN ArcChord ,
+the arcs are chord filled.
+.LP
+The graphics-exposure flag controls
+.PN GraphicsExpose
+event generation
+for
+.PN XCopyArea
+and
+.PN XCopyPlane
+requests (and any similar requests defined by extensions).
+.LP
+.sp
+To create a new GC that is usable on a given screen with a
+depth of drawable, use
+.PN XCreateGC .
+.IN "Graphics context" "initializing"
+.IN "XCreateGC" "" "@DEF@"
+.sM
+.FD 0
+GC XCreateGC\^(\^\fIdisplay\fP, \fId\fP\^, \fIvaluemask\fP\^, \fIvalues\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ unsigned long \fIvaluemask\fP\^;
+.br
+ XGCValues *\^\fIvalues\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.ds Vm set using the information in the specified values structure
+.IP \fIvaluemask\fP 1i
+Specifies which components in the GC are to be \*(Vm.
+This argument is the bitwise inclusive OR of zero or more of the valid
+GC component mask bits.
+.IP \fIvalues\fP 1i
+Specifies any values as specified by the valuemask.
+.LP
+.eM
+The
+.PN XCreateGC
+function creates a graphics context and returns a GC.
+The GC can be used with any destination drawable having the same root
+and depth as the specified drawable.
+Use with other drawables results in a
+.PN BadMatch
+error.
+.LP
+.PN XCreateGC
+can generate
+.PN BadAlloc ,
+.PN BadDrawable ,
+.PN BadFont ,
+.PN BadMatch ,
+.PN BadPixmap ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To copy components from a source GC to a destination GC, use
+.PN XCopyGC .
+.IN "XCopyGC" "" "@DEF@"
+.sM
+.FD 0
+XCopyGC\^(\^\fIdisplay\fP, \fIsrc\fP\^, \fIvaluemask\fP\^, \fIdest\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIsrc\fP\^, \fIdest\fP\^;
+.br
+ unsigned long \fIvaluemask\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsrc\fP 1i
+Specifies the components of the source GC.
+.ds Vm copied to the destination GC
+.IP \fIvaluemask\fP 1i
+Specifies which components in the GC are to be \*(Vm.
+This argument is the bitwise inclusive OR of zero or more of the valid
+GC component mask bits.
+.IP \fIdest\fP 1i
+Specifies the destination GC.
+.LP
+.eM
+The
+.PN XCopyGC
+function copies the specified components from the source GC
+to the destination GC.
+The source and destination GCs must have the same root and depth,
+or a
+.PN BadMatch
+error results.
+The valuemask specifies which component to copy, as for
+.PN XCreateGC .
+.LP
+.PN XCopyGC
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.LP
+.sp
+To change the components in a given GC, use
+.PN XChangeGC .
+.IN "XChangeGC" "" "@DEF@"
+.sM
+.FD 0
+XChangeGC\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIvaluemask\fP\^, \fIvalues\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ unsigned long \fIvaluemask\fP\^;
+.br
+ XGCValues *\^\fIvalues\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Vm changed using information in the specified values structure
+.IP \fIvaluemask\fP 1i
+Specifies which components in the GC are to be \*(Vm.
+This argument is the bitwise inclusive OR of zero or more of the valid
+GC component mask bits.
+.IP \fIvalues\fP 1i
+Specifies any values as specified by the valuemask.
+.LP
+.eM
+The
+.PN XChangeGC
+function changes the components specified by valuemask for
+the specified GC.
+The values argument contains the values to be set.
+The values and restrictions are the same as for
+.PN XCreateGC .
+Changing the clip-mask overrides any previous
+.PN XSetClipRectangles
+request on the context.
+Changing the dash-offset or dash-list
+overrides any previous
+.PN XSetDashes
+request on the context.
+The order in which components are verified and altered is server dependent.
+If an error is generated, a subset of the components may have been altered.
+.LP
+.PN XChangeGC
+can generate
+.PN BadAlloc ,
+.PN BadFont ,
+.PN BadGC ,
+.PN BadMatch ,
+.PN BadPixmap ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To obtain components of a given GC, use
+.PN XGetGCValues .
+.IN "XGetGCValues" "" "@DEF@"
+.sM
+.FD 0
+Status XGetGCValues\^(\^\fIdisplay\fP, \fIgc\fP, \fIvaluemask\fP, \
+\fIvalues_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ unsigned long \fIvaluemask\fP\^;
+.br
+ XGCValues *\fIvalues_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Vm returned in the values_return argument
+.IP \fIvaluemask\fP 1i
+Specifies which components in the GC are to be \*(Vm.
+This argument is the bitwise inclusive OR of zero or more of the valid
+GC component mask bits.
+.IP \fIvalues_return\fP 1i
+Returns the GC values in the specified
+.PN XGCValues
+structure.
+.LP
+.eM
+The
+.PN XGetGCValues
+function returns the components specified by valuemask for the specified GC.
+If the valuemask contains a valid set of GC mask bits
+.Pn ( GCFunction ,
+.PN GCPlaneMask ,
+.PN GCForeground ,
+.PN GCBackground ,
+.PN GCLineWidth ,
+.PN GCLineStyle ,
+.PN GCCapStyle ,
+.PN GCJoinStyle ,
+.PN GCFillStyle ,
+.PN GCFillRule ,
+.PN GCTile ,
+.PN GCStipple ,
+.PN GCTileStipXOrigin ,
+.PN GCTileStipYOrigin ,
+.PN GCFont ,
+.PN GCSubwindowMode ,
+.PN GCGraphicsExposures ,
+.PN GCClipXOrigin ,
+.PN GCCLipYOrigin ,
+.PN GCDashOffset ,
+or
+.PN GCArcMode )
+and no error occurs,
+.PN XGetGCValues
+sets the requested components in values_return and returns a nonzero status.
+Otherwise, it returns a zero status.
+Note that the clip-mask and dash-list (represented by the
+.PN GCClipMask
+and
+.PN GCDashList
+bits, respectively, in the valuemask)
+cannot be requested.
+Also note that an invalid resource ID (with one or more of the three
+most significant bits set to 1) will be returned for
+.PN GCFont ,
+.PN GCTile ,
+and
+.PN GCStipple
+if the component has never been explicitly set by the client.
+.LP
+.sp
+To free a given GC, use
+.PN XFreeGC .
+.IN "XFreeGC" "" "@DEF@"
+.sM
+.FD 0
+XFreeGC\^(\^\fIdisplay\fP, \fIgc\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.LP
+.eM
+The
+.PN XFreeGC
+function destroys the specified GC as well as all the associated storage.
+.LP
+.PN XFreeGC
+can generate a
+.PN BadGC
+error.
+.LP
+.sp
+To obtain the
+.PN GContext
+resource ID for a given GC, use
+.PN XGContextFromGC .
+.IN "XGContextFromGC" "" "@DEF@"
+.sM
+.FD 0
+GContext XGContextFromGC\^(\^\fIgc\fP\^)
+.br
+ GC \fIgc\fP\^;
+.FN
+.ds Gc for which you want the resource ID
+.IP \fIgc\fP 1i
+Specifies the GC \*(Gc.
+.LP
+.eM
+.sp
+Xlib usually defers sending changes to the components of a GC to the server
+until a graphics function is actually called with that GC.
+This permits batching of component changes into a single server request.
+In some circumstances, however, it may be necessary for the client
+to explicitly force sending the changes to the server.
+An example might be when a protocol extension uses the GC indirectly,
+in such a way that the extension interface cannot know what GC will be used.
+To force sending GC component changes, use
+.PN XFlushGC .
+.IN "XFlushGC" "" "@DEF@"
+.sM
+.FD 0
+void XFlushGC\^(\^\fIdisplay\fP, \fIgc\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.LP
+.eM
+.NH 2
+Using Graphics Context Convenience Routines
+.XS
+\*(SN Using Graphics Context Convenience Routines
+.XE
+.LP
+This section discusses how to set the:
+.IP \(bu 5
+Foreground, background, plane mask, or function components
+.IP \(bu 5
+Line attributes and dashes components
+.IP \(bu 5
+Fill style and fill rule components
+.IP \(bu 5
+Fill tile and stipple components
+.IP \(bu 5
+Font component
+.IP \(bu 5
+Clip region component
+.IP \(bu 5
+Arc mode, subwindow mode, and graphics exposure components
+.NH 3
+Setting the Foreground, Background, Function, or Plane Mask
+.XS
+\*(SN Setting the Foreground, Background, Function, or Plane Mask
+.XE
+.LP
+To set the foreground, background, plane mask, and function components
+for a given GC, use
+.PN XSetState .
+.IN "XSetState" "" "@DEF@"
+.sM
+.FD 0
+XSetState\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^, \fIbackground\fP\^, \fIfunction\fP\^, \fIplane_mask\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ unsigned long \fIforeground\fP\^, \fIbackground\fP\^;
+.br
+ int \fIfunction\fP\^;
+.br
+ unsigned long \fIplane_mask\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIforeground\fP 1i
+Specifies the foreground you want to set for the specified GC.
+.IP \fIbackground\fP 1i
+Specifies the background you want to set for the specified GC.
+.IP \fIfunction\fP 1i
+Specifies the function you want to set for the specified GC.
+.IP \fIplane_mask\fP 1i
+Specifies the plane mask.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.LP
+.eM
+.PN XSetState
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To set the foreground of a given GC, use
+.PN XSetForeground .
+.IN "XSetForeground" "" "@DEF@"
+.sM
+.FD 0
+XSetForeground\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ unsigned long \fIforeground\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIforeground\fP 1i
+Specifies the foreground you want to set for the specified GC.
+.LP
+.eM
+.PN XSetForeground
+can generate
+.PN BadAlloc
+and
+.PN BadGC
+errors.
+.LP
+.sp
+To set the background of a given GC, use
+.PN XSetBackground .
+.IN "XSetBackground" "" "@DEF@"
+.sM
+.FD 0
+XSetBackground\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIbackground\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ unsigned long \fIbackground\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIbackground\fP 1i
+Specifies the background you want to set for the specified GC.
+.LP
+.eM
+.PN XSetBackground
+can generate
+.PN BadAlloc
+and
+.PN BadGC
+errors.
+.LP
+.sp
+To set the display function in a given GC, use
+.PN XSetFunction .
+.IN "XSetFunction" "" "@DEF@"
+.sM
+.FD 0
+XSetFunction\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfunction\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIfunction\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIfunction\fP 1i
+Specifies the function you want to set for the specified GC.
+.LP
+.eM
+.PN XSetFunction
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To set the plane mask of a given GC, use
+.PN XSetPlaneMask .
+.IN "XSetPlaneMask" "" "@DEF@"
+.sM
+.FD 0
+XSetPlaneMask\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIplane_mask\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ unsigned long \fIplane_mask\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIplane_mask\fP 1i
+Specifies the plane mask.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.LP
+.eM
+.PN XSetPlaneMask
+can generate
+.PN BadAlloc
+and
+.PN BadGC
+errors.
+.NH 3
+Setting the Line Attributes and Dashes
+.XS
+\*(SN Setting the Line Attributes and Dashes
+.XE
+.LP
+To set the line drawing components of a given GC, use
+.PN XSetLineAttributes .
+.IN "XSetLineAttributes" "" "@DEF@"
+.sM
+.FD 0
+XSetLineAttributes\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIline_width\fP\^, \fIline_style\fP\^, \fIcap_style\fP\^, \fIjoin_style\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ unsigned int \fIline_width\fP\^;
+.br
+ int \fIline_style\fP\^;
+.br
+ int \fIcap_style\fP\^;
+.br
+ int \fIjoin_style\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIline_width\fP 1i
+Specifies the line-width you want to set for the specified GC.
+.IP \fIline_style\fP 1i
+Specifies the line-style you want to set for the specified GC.
+You can pass
+.PN LineSolid ,
+.PN LineOnOffDash ,
+or
+.PN LineDoubleDash .
+.IP \fIcap_style\fP 1i
+Specifies the line-style and cap-style you want to set for the specified GC.
+You can pass
+.PN CapNotLast ,
+.PN CapButt ,
+.PN CapRound ,
+or
+.PN CapProjecting .
+.IP \fIjoin_style\fP 1i
+Specifies the line join-style you want to set for the specified GC.
+You can pass
+.PN JoinMiter ,
+.PN JoinRound ,
+or
+.PN JoinBevel .
+.LP
+.eM
+.PN XSetLineAttributes
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To set the dash-offset and dash-list for dashed line styles of a given GC, use
+.PN XSetDashes .
+.IN "XSetDashes" "" "@DEF@"
+.sM
+.FD 0
+XSetDashes\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIdash_offset\fP\^, \fIdash_list\fP\^, \fIn\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIdash_offset\fP\^;
+.br
+ char \fIdash_list\fP[]\^;
+.br
+ int \fIn\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIdash_offset\fP 1i
+Specifies the phase of the pattern for the dashed line-style you want to set
+for the specified GC.
+.IP \fIdash_list\fP 1i
+Specifies the dash-list for the dashed line-style
+you want to set for the specified GC.
+.IP \fIn\fP 1i
+Specifies the number of elements in dash_list.
+.LP
+.eM
+The
+.PN XSetDashes
+function sets the dash-offset and dash-list attributes for dashed line styles
+in the specified GC.
+There must be at least one element in the specified dash_list,
+or a
+.PN BadValue
+error results.
+The initial and alternating elements (second, fourth, and so on)
+of the dash_list are the even dashes, and
+the others are the odd dashes.
+Each element specifies a dash length in pixels.
+All of the elements must be nonzero,
+or a
+.PN BadValue
+error results.
+Specifying an odd-length list is equivalent to specifying the same list
+concatenated with itself to produce an even-length list.
+.LP
+The dash-offset defines the phase of the pattern,
+specifying how many pixels into the dash-list the pattern
+should actually begin in any single graphics request.
+Dashing is continuous through path elements combined with a join-style
+but is reset to the dash-offset between each sequence of joined lines.
+.LP
+The unit of measure for dashes is the same for the ordinary coordinate system.
+Ideally, a dash length is measured along the slope of the line, but implementations
+are only required to match this ideal for horizontal and vertical lines.
+Failing the ideal semantics, it is suggested that the length be measured along the
+major axis of the line.
+The major axis is defined as the x axis for lines drawn at an angle of between
+\-45 and +45 degrees or between 135 and 225 degrees from the x axis.
+For all other lines, the major axis is the y axis.
+.LP
+.PN XSetDashes
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.NH 3
+Setting the Fill Style and Fill Rule
+.XS
+\*(SN Setting the Fill Style and Fill Rule
+.XE
+.LP
+To set the fill-style of a given GC, use
+.PN XSetFillStyle .
+.IN "XSetFillStyle" "" "@DEF@"
+.sM
+.FD 0
+XSetFillStyle\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfill_style\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIfill_style\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIfill_style\fP 1i
+Specifies the fill-style you want to set for the specified GC.
+You can pass
+.PN FillSolid ,
+.PN FillTiled ,
+.PN FillStippled ,
+or
+.PN FillOpaqueStippled .
+.LP
+.eM
+.PN XSetFillStyle
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To set the fill-rule of a given GC, use
+.PN XSetFillRule .
+.IN "XSetFillRule" "" "@DEF@"
+.sM
+.FD 0
+XSetFillRule\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfill_rule\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIfill_rule\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIfill_rule\fP 1i
+Specifies the fill-rule you want to set for the specified GC.
+You can pass
+.PN EvenOddRule
+or
+.PN WindingRule .
+.LP
+.eM
+.PN XSetFillRule
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.NH 3
+Setting the Fill Tile and Stipple
+.XS
+\*(SN Setting the Fill Tile and Stipple
+.XE
+.LP
+Some displays have hardware support for tiling or
+stippling with patterns of specific sizes.
+Tiling and stippling operations that restrict themselves to those specific
+sizes run much faster than such operations with arbitrary size patterns.
+Xlib provides functions that you can use to determine the best size,
+tile, or stipple for the display
+as well as to set the tile or stipple shape and the tile or stipple origin.
+.LP
+.sp
+To obtain the best size of a tile, stipple, or cursor, use
+.PN XQueryBestSize .
+.IN "XQueryBestSize" "" "@DEF@"
+.sM
+.FD 0
+Status XQueryBestSize\^(\^\fIdisplay\fP, \fIclass\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIclass\fP\^;
+.br
+ Drawable \fIwhich_screen\fP\^;
+.br
+ unsigned int \fIwidth\fP, \fIheight\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIclass\fP 1i
+Specifies the class that you are interested in.
+You can pass
+.PN TileShape ,
+.PN CursorShape ,
+or
+.PN StippleShape .
+.IP \fIwhich_screen\fP 1i
+Specifies any drawable on the screen.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height of the object best supported
+by the display hardware.
+.LP
+.eM
+The
+.PN XQueryBestSize
+function returns the best or closest size to the specified size.
+For
+.PN CursorShape ,
+this is the largest size that can be fully displayed on the screen specified by
+which_screen.
+For
+.PN TileShape ,
+this is the size that can be tiled fastest.
+For
+.PN StippleShape ,
+this is the size that can be stippled fastest.
+For
+.PN CursorShape ,
+the drawable indicates the desired screen.
+For
+.PN TileShape
+and
+.PN StippleShape ,
+the drawable indicates the screen and possibly the window class and depth.
+An
+.PN InputOnly
+window cannot be used as the drawable for
+.PN TileShape
+or
+.PN StippleShape ,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XQueryBestSize
+can generate
+.PN BadDrawable ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To obtain the best fill tile shape, use
+.PN XQueryBestTile .
+.IN "XQueryBestTile" "" "@DEF@"
+.sM
+.FD 0
+Status XQueryBestTile\^(\^\fIdisplay\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fIwhich_screen\fP\^;
+.br
+ unsigned int \fIwidth\fP, \fIheight\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwhich_screen\fP 1i
+Specifies any drawable on the screen.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height of the object best supported
+by the display hardware.
+.LP
+.eM
+The
+.PN XQueryBestTile
+function returns the best or closest size, that is, the size that can be
+tiled fastest on the screen specified by which_screen.
+The drawable indicates the screen and possibly the window class and depth.
+If an
+.PN InputOnly
+window is used as the drawable, a
+.PN BadMatch
+error results.
+.LP
+.PN XQueryBestTile
+can generate
+.PN BadDrawable
+and
+.PN BadMatch
+errors.
+.LP
+.sp
+To obtain the best stipple shape, use
+.PN XQueryBestStipple .
+.IN "XQueryBestStipple" "" "@DEF@"
+.sM
+.FD 0
+Status XQueryBestStipple\^(\^\fIdisplay\fP, \fIwhich_screen\fP, \fIwidth\fP, \fIheight\fP, \fIwidth_return\fP, \fIheight_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fIwhich_screen\fP\^;
+.br
+ unsigned int \fIwidth\fP, \fIheight\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwhich_screen\fP 1i
+Specifies any drawable on the screen.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height of the object best supported
+by the display hardware.
+.LP
+.eM
+The
+.PN XQueryBestStipple
+function returns the best or closest size, that is, the size that can be
+stippled fastest on the screen specified by which_screen.
+The drawable indicates the screen and possibly the window class and depth.
+If an
+.PN InputOnly
+window is used as the drawable, a
+.PN BadMatch
+error results.
+.LP
+.PN XQueryBestStipple
+can generate
+.PN BadDrawable
+and
+.PN BadMatch
+errors.
+.LP
+.sp
+To set the fill tile of a given GC, use
+.PN XSetTile .
+.IN "XSetTile" "" "@DEF@"
+.sM
+.FD 0
+XSetTile\^(\^\fIdisplay\fP, \fIgc\fP\^, \fItile\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Pixmap \fItile\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fItile\fP 1i
+Specifies the fill tile you want to set for the specified GC.
+.LP
+.eM
+The tile and GC must have the same depth,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XSetTile
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadPixmap
+errors.
+.LP
+.sp
+To set the stipple of a given GC, use
+.PN XSetStipple .
+.IN "XSetStipple" "" "@DEF@"
+.sM
+.FD 0
+XSetStipple\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIstipple\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Pixmap \fIstipple\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIstipple\fP 1i
+Specifies the stipple you want to set for the specified GC.
+.LP
+.eM
+The stipple must have a depth of one,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XSetStipple
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadPixmap
+errors.
+.LP
+.sp
+To set the tile or stipple origin of a given GC, use
+.PN XSetTSOrigin .
+.IN "XSetTSOrigin" "" "@DEF@"
+.sM
+.FD 0
+XSetTSOrigin\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIts_x_origin\fP\^, \fIts_y_origin\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIts_x_origin\fP\^, \fIts_y_origin\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIts_x_origin\fP 1i
+.br
+.ns
+.IP \fIts_y_origin\fP 1i
+Specify the x and y coordinates of the tile and stipple origin.
+.LP
+.eM
+When graphics requests call for tiling or stippling,
+the parent's origin will be interpreted relative to whatever destination
+drawable is specified in the graphics request.
+.LP
+.PN XSetTSOrigin
+can generate
+.PN BadAlloc
+and
+.PN BadGC
+errors.
+.NH 3
+Setting the Current Font
+.XS
+\*(SN Setting the Current Font
+.XE
+.LP
+To set the current font of a given GC, use
+.PN XSetFont .
+.IN "XSetFont" "" "@DEF@"
+.sM
+.FD 0
+XSetFont\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIfont\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Font \fIfont\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIfont\fP 1i
+Specifies the font.
+.LP
+.eM
+.PN XSetFont
+can generate
+.PN BadAlloc ,
+.PN BadFont ,
+and
+.PN BadGC
+errors.
+.NH 3
+Setting the Clip Region
+.XS
+\*(SN Setting the Clip Region
+.XE
+.LP
+Xlib provides functions that you can use to set the clip-origin
+and the clip-mask or set the clip-mask to a list of rectangles.
+.LP
+.sp
+To set the clip-origin of a given GC, use
+.PN XSetClipOrigin .
+.IN "XSetClipOrigin" "" "@DEF@"
+.sM
+.FD 0
+XSetClipOrigin\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIclip_x_origin\fP 1i
+.br
+.ns
+.IP \fIclip_y_origin\fP 1i
+Specify the x and y coordinates of the clip-mask origin.
+.LP
+.eM
+The clip-mask origin is interpreted relative to the origin of whatever
+destination drawable is specified in the graphics request.
+.LP
+.PN XSetClipOrigin
+can generate
+.PN BadAlloc
+and
+.PN BadGC
+errors.
+.LP
+.sp
+To set the clip-mask of a given GC to the specified pixmap, use
+.PN XSetClipMask .
+.IN "XSetClipMask" "" "@DEF@"
+.sM
+.FD 0
+XSetClipMask\^(\^\fIdisplay\fP, \fIgc\fP, \fIpixmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Pixmap \fIpixmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIpixmap\fP 1i
+Specifies the pixmap or
+.PN None .
+.LP
+.eM
+If the clip-mask is set to
+.PN None ,
+the pixels are always drawn (regardless of the clip-origin).
+.LP
+.PN XSetClipMask
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadPixmap
+errors.
+.LP
+.sp
+To set the clip-mask of a given GC to the specified list of rectangles, use
+.PN XSetClipRectangles .
+.IN "XSetClipRectangles" "" "@DEF@"
+.sM
+.FD 0
+XSetClipRectangles\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^, \fIrectangles\fP\^, \fIn\fP\^, \fIordering\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIclip_x_origin\fP\^, \fIclip_y_origin\fP\^;
+.br
+ XRectangle \fIrectangles\fP[]\^;
+.br
+ int \fIn\fP\^;
+.br
+ int \fIordering\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIclip_x_origin\fP 1i
+.br
+.ns
+.IP \fIclip_y_origin\fP 1i
+Specify the x and y coordinates of the clip-mask origin.
+.IP \fIrectangles\fP 1i
+Specifies an array of rectangles that define the clip-mask.
+.IP \fIn\fP 1i
+Specifies the number of rectangles.
+.IP \fIordering\fP 1i
+Specifies the ordering relations on the rectangles.
+You can pass
+.PN Unsorted ,
+.PN YSorted ,
+.PN YXSorted ,
+or
+.PN YXBanded .
+.LP
+.eM
+The
+.PN XSetClipRectangles
+function changes the clip-mask in the specified GC
+to the specified list of rectangles and sets the clip origin.
+The output is clipped to remain contained within the
+rectangles.
+The clip-origin is interpreted relative to the origin of
+whatever destination drawable is specified in a graphics request.
+The rectangle coordinates are interpreted relative to the clip-origin.
+The rectangles should be nonintersecting, or the graphics results will be
+undefined.
+Note that the list of rectangles can be empty,
+which effectively disables output.
+This is the opposite of passing
+.PN None
+as the clip-mask in
+.PN XCreateGC ,
+.PN XChangeGC ,
+and
+.PN XSetClipMask .
+.LP
+If known by the client, ordering relations on the rectangles can be
+specified with the ordering argument.
+This may provide faster operation
+by the server.
+If an incorrect ordering is specified, the X server may generate a
+.PN BadMatch
+error, but it is not required to do so.
+If no error is generated, the graphics
+results are undefined.
+.PN Unsorted
+means the rectangles are in arbitrary order.
+.PN YSorted
+means that the rectangles are nondecreasing in their Y origin.
+.PN YXSorted
+additionally constrains
+.PN YSorted
+order in that all
+rectangles with an equal Y origin are nondecreasing in their X
+origin.
+.PN YXBanded
+additionally constrains
+.PN YXSorted
+by requiring that,
+for every possible Y scanline, all rectangles that include that
+scanline have an identical Y origins and Y extents.
+.LP
+.PN XSetClipRectangles
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.LP
+Xlib provides a set of basic functions for performing
+region arithmetic.
+For information about these functions,
+see section 16.5.
+.NH 3
+Setting the Arc Mode, Subwindow Mode, and Graphics Exposure
+.XS
+\*(SN Setting the Arc Mode, Subwindow Mode, and Graphics Exposure
+.XE
+.LP
+To set the arc mode of a given GC, use
+.PN XSetArcMode .
+.IN "XSetArcMode" "" "@DEF@"
+.sM
+.FD 0
+XSetArcMode\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIarc_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIarc_mode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIarc_mode\fP 1i
+Specifies the arc mode.
+You can pass
+.PN ArcChord
+or
+.PN ArcPieSlice .
+.LP
+.eM
+.PN XSetArcMode
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To set the subwindow mode of a given GC, use
+.PN XSetSubwindowMode .
+.IN "XSetSubwindowMode" "" "@DEF@"
+.sM
+.FD 0
+XSetSubwindowMode\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIsubwindow_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIsubwindow_mode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIsubwindow_mode\fP 1i
+Specifies the subwindow mode.
+You can pass
+.PN ClipByChildren
+or
+.PN IncludeInferiors .
+.LP
+.eM
+.PN XSetSubwindowMode
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To set the graphics-exposures flag of a given GC, use
+.PN XSetGraphicsExposures .
+.IN "XSetGraphicsExposures" "" "@DEF@"
+.sM
+.FD 0
+XSetGraphicsExposures\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIgraphics_exposures\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Bool \fIgraphics_exposures\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIgraphics_exposures\fP 1i
+Specifies a Boolean value that indicates whether you want
+.PN GraphicsExpose
+and
+.PN NoExpose
+events to be reported when calling
+.PN XCopyArea
+and
+.PN XCopyPlane
+with this GC.
+.LP
+.eM
+.PN XSetGraphicsExposures
+can generate
+.PN BadAlloc ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.bp
diff --git a/specs/X11/CH08 b/specs/X11/CH08
new file mode 100644
index 0000000..3d2161f
--- /dev/null
+++ b/specs/X11/CH08
@@ -0,0 +1,3468 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 8\fP\s-1
+
+\s+1\fBGraphics Functions\fP\s-1
+.sp 2
+.nr H1 8
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 8: Graphics Functions
+.XE
+Once you have established a connection to a display,
+you can use the Xlib graphics functions to:
+.IP \(bu 5
+Clear and copy areas
+.IP \(bu 5
+Draw points, lines, rectangles, and arcs
+.IP \(bu 5
+Fill areas
+.IP \(bu 5
+Manipulate fonts
+.IP \(bu 5
+Draw text
+.IP \(bu 5
+Transfer images between clients and the server
+.LP
+If the same drawable and GC is used for each call,
+Xlib batches back-to-back calls to
+.PN XDrawPoint ,
+.PN XDrawLine ,
+.PN XDrawRectangle ,
+.PN XFillArc ,
+and
+.PN XFillRectangle .
+Note that this reduces the total number of requests sent to the server.
+.NH 2
+Clearing Areas
+.XS
+\*(SN Clearing Areas
+.XE
+.LP
+Xlib provides functions that you can use to clear an area or the entire window.
+Because pixmaps do not have defined backgrounds,
+they cannot be filled by using the functions described in this section.
+Instead, to accomplish an analogous operation on a pixmap,
+you should use
+.PN XFillRectangle ,
+which sets the pixmap to a known value.
+.LP
+.sp
+To clear a rectangular area of a given window, use
+.PN XClearArea .
+.IN "Areas" "clearing"
+.IN "Clearing" "areas"
+.IN "XClearArea" "" "@DEF@"
+.sM
+.FD 0
+XClearArea\^(\^\fIdisplay\fP, \fIw\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIexposures\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ Bool \fIexposures\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.ds Xy , which are relative to the origin of the window \
+and specify the upper-left corner of the rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which are the dimensions of the rectangle
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.IP \fIexposures\fP 1i
+Specifies a Boolean value that indicates if
+.PN Expose
+events are to be generated.
+.LP
+.eM
+The
+.PN XClearArea
+function paints a rectangular area in the specified window according to the
+specified dimensions with the window's background pixel or pixmap.
+The subwindow-mode effectively is
+.PN ClipByChildren .
+If width is zero, it
+is replaced with the current width of the window minus x.
+If height is
+zero, it is replaced with the current height of the window minus y.
+If the window has a defined background tile,
+the rectangle clipped by any children is filled with this tile.
+If the window has
+background
+.PN None ,
+the contents of the window are not changed.
+In either
+case, if exposures is
+.PN True ,
+one or more
+.PN Expose
+events are generated for regions of the rectangle that are either visible or are
+being retained in a backing store.
+If you specify a window whose class is
+.PN InputOnly ,
+a
+.PN BadMatch
+error results.
+.LP
+.PN XClearArea
+can generate
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To clear the entire area in a given window, use
+.PN XClearWindow .
+.IN "Window" "clearing"
+.IN "Clearing" "windows"
+.IN "XClearWindow" "" "@DEF@"
+.sM
+.FD 0
+XClearWindow\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XClearWindow
+function clears the entire area in the specified window and is
+equivalent to
+.PN XClearArea
+(display, w, 0, 0, 0, 0,
+.PN False ).
+If the window has a defined background tile, the rectangle is tiled with a
+plane-mask of all ones and
+.PN GXcopy
+function.
+If the window has
+background
+.PN None ,
+the contents of the window are not changed.
+If you specify a window whose class is
+.PN InputOnly ,
+a
+.PN BadMatch
+error results.
+.LP
+.PN XClearWindow
+can generate
+.PN BadMatch
+and
+.PN BadWindow
+errors.
+.NH 2
+Copying Areas
+.XS
+\*(SN Copying Areas
+.XE
+.LP
+Xlib provides functions that you can use to copy an area or a bit plane.
+.LP
+.sp
+To copy an area between drawables of the same
+root and depth, use
+.PN XCopyArea .
+.IN "Areas" "copying"
+.IN "Copying" "areas"
+.IN "XCopyArea" "" "@DEF@"
+.sM
+.FD 0
+XCopyArea\^(\^\fIdisplay\fP, \fIsrc\fP\^, \fIdest\fP\^, \fIgc\fP\^, \fIsrc_x\fP\^, \fIsrc_y\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIdest_x\fP\^, \fIdest_y\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fIsrc\fP\^, \fIdest\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIsrc_x\fP\^, \fIsrc_y\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ int \fIdest_x\fP\^, \fIdest_y\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsrc\fP 1i
+.br
+.ns
+.IP \fIdest\fP 1i
+Specify the source and destination rectangles to be combined.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIsrc_x\fP 1i
+.br
+.ns
+.IP \fIsrc_y\fP 1i
+Specify the x and y coordinates,
+which are relative to the origin of the source rectangle
+and specify its upper-left corner.
+.ds Wh , which are the dimensions of both the source \
+and destination rectangles
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.ds Dx , which are relative to the origin of the destination rectangle \
+and specify its upper-left corner
+.IP \fIdest_x\fP 1i
+.br
+.ns
+.IP \fIdest_y\fP 1i
+Specify the x and y coordinates\*(Dx.
+.LP
+.eM
+The
+.PN XCopyArea
+function combines the specified rectangle of src with the specified rectangle
+of dest.
+The drawables must have the same root and depth,
+or a
+.PN BadMatch
+error results.
+.LP
+If regions of the source rectangle are obscured and have not been
+retained in backing store
+or if regions outside the boundaries of the source drawable are specified,
+those regions are not copied.
+Instead, the
+following occurs on all corresponding destination regions that are either
+visible or are retained in backing store.
+If the destination is a window with a background other than
+.PN None ,
+corresponding regions
+of the destination are tiled with that background
+(with plane-mask of all ones and
+.PN GXcopy
+function).
+Regardless of tiling or whether the destination is a window or a pixmap,
+if graphics-exposures is
+.PN True ,
+then
+.PN GraphicsExpose
+events for all corresponding destination regions are generated.
+If graphics-exposures is
+.PN True
+but no
+.PN GraphicsExpose
+events are generated, a
+.PN NoExpose
+event is generated.
+Note that by default graphics-exposures is
+.PN True
+in new GCs.
+.LP
+This function uses these GC components: function, plane-mask,
+subwindow-mode, graphics-exposures, clip-x-origin,
+clip-y-origin, and clip-mask.
+.LP
+.PN XCopyArea
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.sp
+.LP
+To copy a single bit plane of a given drawable, use
+.PN XCopyPlane .
+.IN "Plane" "copying"
+.IN "Copying" "planes"
+.IN "XCopyPlane" "" "@DEF@"
+.sM
+.FD 0
+XCopyPlane\^(\^\fIdisplay\fP, \fIsrc\fP\^, \fIdest\fP\^, \fIgc\fP\^, \fIsrc_x\fP\^, \fIsrc_y\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIdest_x\fP\^, \fIdest_y\fP\^, \fIplane\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fIsrc\fP\^, \fIdest\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIsrc_x\fP\^, \fIsrc_y\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ int \fIdest_x\fP\^, \fIdest_y\fP\^;
+.br
+ unsigned long \fIplane\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsrc\fP 1i
+.br
+.ns
+.IP \fIdest\fP 1i
+Specify the source and destination rectangles to be combined.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIsrc_x\fP 1i
+.br
+.ns
+.IP \fIsrc_y\fP 1i
+Specify the x and y coordinates,
+which are relative to the origin of the source rectangle
+and specify its upper-left corner.
+.ds Wh , which are the dimensions of both the source and destination rectangles
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.ds Dx , which are relative to the origin of the destination rectangle \
+and specify its upper-left corner
+.IP \fIdest_x\fP 1i
+.br
+.ns
+.IP \fIdest_y\fP 1i
+Specify the x and y coordinates\*(Dx.
+.IP \fIplane\fP 1i
+Specifies the bit plane.
+You must set exactly one bit to 1.
+.LP
+.eM
+The
+.PN XCopyPlane
+function uses a single bit plane of the specified source rectangle
+combined with the specified GC to modify the specified rectangle of dest.
+The drawables must have the same root but need not have the same depth.
+If the drawables do not have the same root, a
+.PN BadMatch
+error results.
+If plane does not have exactly one bit set to 1 and the value of plane
+is not less than %2 sup n%, where \fIn\fP is the depth of src, a
+.PN BadValue
+error results.
+.LP
+Effectively,
+.PN XCopyPlane
+forms a pixmap of the same depth as the rectangle of dest and with a
+size specified by the source region.
+It uses the foreground/background pixels in the GC (foreground
+everywhere the bit plane in src contains a bit set to 1,
+background everywhere the bit plane in src contains a bit set to 0)
+and the equivalent of a
+.PN CopyArea
+protocol request is performed with all the same exposure semantics.
+This can also be thought of as using the specified region of the source
+bit plane as a stipple with a fill-style of
+.PN FillOpaqueStippled
+for filling a rectangular area of the destination.
+.LP
+This function uses these GC components: function, plane-mask, foreground,
+background, subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin,
+and clip-mask.
+.LP
+.PN XCopyPlane
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 2
+Drawing Points, Lines, Rectangles, and Arcs
+.XS
+\*(SN Drawing Points, Lines, Rectangles, and Arcs
+.XE
+.LP
+Xlib provides functions that you can use to draw:
+.IP \(bu 5
+A single point or multiple points
+.IP \(bu 5
+A single line or multiple lines
+.IP \(bu 5
+A single rectangle or multiple rectangles
+.IP \(bu 5
+A single arc or multiple arcs
+.LP
+Some of the functions described in the following sections
+use these structures:
+.LP
+.IN "XSegment" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ short x1, y1, x2, y2;
+} XSegment;
+.De
+.LP
+.eM
+.IN "XPoint" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ short x, y;
+} XPoint;
+.De
+.LP
+.eM
+.IN "XRectangle" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+} XRectangle;
+.De
+.LP
+.eM
+.IN "XArc" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+ short angle1, angle2; /* Degrees * 64 */
+} XArc;
+.De
+.LP
+.eM
+All x and y members are signed integers.
+The width and height members are 16-bit unsigned integers.
+You should be careful not to generate coordinates and sizes
+out of the 16-bit ranges, because the protocol only has 16-bit fields
+for these values.
+.NH 3
+Drawing Single and Multiple Points
+.XS
+\*(SN Drawing Single and Multiple Points
+.XE
+.LP
+.IN "Points" "drawing"
+.IN "Drawing" "points"
+.IN "XDrawPoints"
+.IN "XDrawPoint"
+.LP
+To draw a single point in a given drawable, use
+.PN XDrawPoint .
+.IN "XDrawPoint" "" "@DEF@"
+.sM
+.FD 0
+XDrawPoint\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates where you want the point drawn.
+.LP
+.eM
+.sp
+To draw multiple points in a given drawable, use
+.PN XDrawPoints .
+.IN "XDrawPoints" "" "@DEF@"
+.sM
+.FD 0
+XDrawPoints\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIpoints\fP\^, \fInpoints\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XPoint *\fIpoints\fP\^;
+.br
+ int \fInpoints\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fInpoints\fP 1i
+Specifies the number of points in the array.
+.IP \fImode\fP 1i
+Specifies the coordinate mode.
+You can pass
+.PN CoordModeOrigin
+or
+.PN CoordModePrevious .
+.LP
+.eM
+The
+.PN XDrawPoint
+function uses the foreground pixel and function components of the
+GC to draw a single point into the specified drawable;
+.PN XDrawPoints
+draws multiple points this way.
+.PN CoordModeOrigin
+treats all coordinates as relative to the origin,
+and
+.PN CoordModePrevious
+treats all coordinates after the first as relative to the previous point.
+.PN XDrawPoints
+draws the points in the order listed in the array.
+.LP
+Both functions use these GC components: function, plane-mask,
+foreground, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
+.LP
+.PN XDrawPoint
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.PN XDrawPoints
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 3
+Drawing Single and Multiple Lines
+.XS
+\*(SN Drawing Single and Multiple Lines
+.XE
+.LP
+.IN "Lines" "drawing"
+.IN "Drawing" "lines"
+.IN "XDrawLine"
+.IN "XDrawLines"
+.IN "Polygons" "drawing"
+.IN "Drawing" "polygons"
+.IN "XDrawSegments"
+.LP
+To draw a single line between two points in a given drawable, use
+.PN XDrawLine .
+.IN "XDrawLine" "" "@DEF@"
+.sM
+.FD 0
+XDrawLine\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx1\fP\^, \fIy1\fP\^, \fIx2\fP\^, \fIy2\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx1\fP\^, \fIy1\fP\^, \fIx2\fP\^, \fIy2\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIx1\fP 1i
+.br
+.ns
+.IP \fIy1\fP 1i
+.br
+.ns
+.IP \fIx2\fP 1i
+.br
+.ns
+.IP \fIy2\fP 1i
+Specify the points (x1, y1) and (x2, y2) to be connected.
+.LP
+.eM
+.sp
+To draw multiple lines in a given drawable, use
+.PN XDrawLines .
+.IN "XDrawLines" "" "@DEF@"
+.sM
+.FD 0
+XDrawLines\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIpoints\fP\^, \fInpoints\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XPoint *\fIpoints\fP\^;
+.br
+ int \fInpoints\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fInpoints\fP 1i
+Specifies the number of points in the array.
+.IP \fImode\fP 1i
+Specifies the coordinate mode.
+You can pass
+.PN CoordModeOrigin
+or
+.PN CoordModePrevious .
+.LP
+.eM
+.sp
+To draw multiple, unconnected lines in a given drawable,
+use
+.PN XDrawSegments .
+.IN "XDrawSegments" "" "@DEF@"
+.sM
+.FD 0
+XDrawSegments\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIsegments\fP\^, \fInsegments\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XSegment *\fIsegments\fP\^;
+.br
+ int \fInsegments\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIsegments\fP 1i
+Specifies an array of segments.
+.IP \fInsegments\fP 1i
+Specifies the number of segments in the array.
+.LP
+.eM
+The
+.PN XDrawLine
+function uses the components of the specified GC to
+draw a line between the specified set of points (x1, y1) and (x2, y2).
+It does not perform joining at coincident endpoints.
+For any given line,
+.PN XDrawLine
+does not draw a pixel more than once.
+If lines intersect, the intersecting pixels are drawn multiple times.
+.LP
+The
+.PN XDrawLines
+function uses the components of the specified GC to draw
+npoints\-1 lines between each pair of points (point[i], point[i+1])
+in the array of
+.PN XPoint
+structures.
+It draws the lines in the order listed in the array.
+The lines join correctly at all intermediate points, and if the first and last
+points coincide, the first and last lines also join correctly.
+For any given line,
+.PN XDrawLines
+does not draw a pixel more than once.
+If thin (zero line-width) lines intersect,
+the intersecting pixels are drawn multiple times.
+If wide lines intersect, the intersecting pixels are drawn only once, as though
+the entire
+.PN PolyLine
+protocol request were a single, filled shape.
+.PN CoordModeOrigin
+treats all coordinates as relative to the origin,
+and
+.PN CoordModePrevious
+treats all coordinates after the first as relative to the previous point.
+.LP
+The
+.PN XDrawSegments
+function draws multiple, unconnected lines.
+For each segment,
+.PN XDrawSegments
+draws a
+line between (x1, y1) and (x2, y2).
+It draws the lines in the order listed in the array of
+.PN XSegment
+structures and does not perform joining at coincident endpoints.
+For any given line,
+.PN XDrawSegments
+does not draw a pixel more than once.
+If lines intersect, the intersecting pixels are drawn multiple times.
+.LP
+All three functions use these GC components:
+function, plane-mask, line-width,
+line-style, cap-style, fill-style, subwindow-mode,
+clip-x-origin, clip-y-origin, and clip-mask.
+The
+.PN XDrawLines
+function also uses the join-style GC component.
+All three functions also use these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+tile-stipple-y-origin, dash-offset, and dash-list.
+.LP
+.PN XDrawLine ,
+.PN XDrawLines ,
+and
+.PN XDrawSegments
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.PN XDrawLines
+also can generate
+.PN BadValue
+errors.
+.NH 3
+Drawing Single and Multiple Rectangles
+.XS
+\*(SN Drawing Single and Multiple Rectangles
+.XE
+.LP
+.IN "Rectangles" "drawing"
+.IN "Drawing" "rectangles"
+.IN "XDrawRectangle"
+.IN "XDrawRectangles"
+.LP
+To draw the outline of a single rectangle in a given drawable, use
+.PN XDrawRectangle .
+.IN "XDrawRectangle" "" "@DEF@"
+.sM
+.FD 0
+XDrawRectangle\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which specify the upper-left corner of the rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which specify the dimensions of the rectangle
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.LP
+.eM
+.sp
+To draw the outline of multiple rectangles
+in a given drawable, use
+.PN XDrawRectangles .
+.IN "XDrawRectangles" "" "@DEF@"
+.sM
+.FD 0
+XDrawRectangles\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIrectangles\fP\^, \fInrectangles\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XRectangle \fIrectangles\fP\^[\^]\^;
+.br
+ int \fInrectangles\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIrectangles\fP 1i
+Specifies an array of rectangles.
+.IP \fInrectangles\fP 1i
+Specifies the number of rectangles in the array.
+.LP
+.eM
+The
+.PN XDrawRectangle
+and
+.PN XDrawRectangles
+functions draw the outlines of the specified rectangle or rectangles as
+if a five-point
+.PN PolyLine
+protocol request were specified for each rectangle:
+.IP
+[x,y] [x+width,y] [x+width,y+height] [x,y+height] [x,y]
+.LP
+For the specified rectangle or rectangles,
+these functions do not draw a pixel more than once.
+.PN XDrawRectangles
+draws the rectangles in the order listed in the array.
+If rectangles intersect,
+the intersecting pixels are drawn multiple times.
+.LP
+Both functions use these GC components:
+function, plane-mask, line-width,
+line-style, cap-style, join-style, fill-style,
+subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
+They also use these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+tile-stipple-y-origin, dash-offset, and dash-list.
+.LP
+.PN XDrawRectangle
+and
+.PN XDrawRectangles
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.NH 3
+Drawing Single and Multiple Arcs
+.XS
+\*(SN Drawing Single and Multiple Arcs
+.XE
+.LP
+.IN "Drawing" "arcs"
+.IN "XDrawArc"
+.IN "Arcs" "drawing"
+.IN "XDrawArcs"
+.LP
+.sp
+To draw a single arc in a given drawable, use
+.PN XDrawArc .
+.IN "XDrawArc" "" "@DEF@"
+.sM
+.FD 0
+XDrawArc\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIangle1\fP\^, \fIangle2\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ int \fIangle1\fP\^, \fIangle2\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the drawable \
+and specify the upper-left corner of the bounding rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which are the major and minor axes of the arc
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.IP \fIangle1\fP 1i
+Specifies the start of the arc relative to the three-o'clock position
+from the center, in units of degrees * 64.
+.IP \fIangle2\fP 1i
+Specifies the path and extent of the arc relative to the start of the
+arc, in units of degrees * 64.
+.LP
+.eM
+.sp
+To draw multiple arcs in a given drawable, use
+.PN XDrawArcs .
+.IN "XDrawArcs" "" "@DEF@"
+.sM
+.FD 0
+XDrawArcs\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIarcs\fP\^, \fInarcs\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XArc *\fIarcs\fP\^;
+.br
+ int \fInarcs\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIarcs\fP 1i
+Specifies an array of arcs.
+.IP \fInarcs\fP 1i
+Specifies the number of arcs in the array.
+.LP
+.eM
+.EQ
+delim %%
+.EN
+.PN XDrawArc
+draws a single circular or elliptical arc, and
+.PN XDrawArcs
+draws multiple circular or elliptical arcs.
+Each arc is specified by a rectangle and two angles.
+The center of the circle or ellipse is the center of the
+rectangle, and the major and minor axes are specified by the width and height.
+Positive angles indicate counterclockwise motion,
+and negative angles indicate clockwise motion.
+If the magnitude of angle2 is greater than 360 degrees,
+.PN XDrawArc
+or
+.PN XDrawArcs
+truncates it to 360 degrees.
+.LP
+For an arc specified as %[ ~x, ~y, ~width , ~height, ~angle1, ~angle2 ]%,
+the origin of the major and minor axes is at
+% [ x +^ {width over 2} , ~y +^ {height over 2} ]%,
+and the infinitely thin path describing the entire circle or ellipse
+intersects the horizontal axis at % [ x, ~y +^ {height over 2} ]% and
+% [ x +^ width , ~y +^ { height over 2 }] %
+and intersects the vertical axis at % [ x +^ { width over 2 } , ~y ]% and
+% [ x +^ { width over 2 }, ~y +^ height ]%.
+These coordinates can be fractional
+and so are not truncated to discrete coordinates.
+The path should be defined by the ideal mathematical path.
+For a wide line with line-width lw,
+the bounding outlines for filling are given
+by the two infinitely thin paths consisting of all points whose perpendicular
+distance from the path of the circle/ellipse is equal to lw/2
+(which may be a fractional value).
+The cap-style and join-style are applied the same as for a line
+corresponding to the tangent of the circle/ellipse at the endpoint.
+.LP
+For an arc specified as % [ ~x, ~y, ~width, ~height, ~angle1, ~angle2 ]%,
+the angles must be specified
+in the effectively skewed coordinate system of the ellipse (for a
+circle, the angles and coordinate systems are identical). The
+relationship between these angles and angles expressed in the normal
+coordinate system of the screen (as measured with a protractor) is as
+follows:
+.LP
+.Ds
+% roman "skewed-angle" ~ = ~ atan left ( tan ( roman "normal-angle" )
+ * width over height right ) +^ adjust%
+.De
+.LP
+The skewed-angle and normal-angle are expressed in radians (rather
+than in degrees scaled by 64) in the range % [ 0 , ~2 pi ]% and where atan
+returns a value in the range % [ - pi over 2 , ~pi over 2 ] %
+and adjust is:
+.LP
+.Ds
+.TA 1i 2i
+.ta 1i 2i
+%0% for normal-angle in the range % [ 0 , ~pi over 2 ]%
+%pi% for normal-angle in the range % [ pi over 2 , ~{3 pi} over 2 ]%
+%2 pi% for normal-angle in the range % [ {3 pi} over 2 , ~2 pi ]%
+.De
+.LP
+For any given arc,
+.PN XDrawArc
+and
+.PN XDrawArcs
+do not draw a pixel more than once.
+If two arcs join correctly and if the line-width is greater than zero
+and the arcs intersect,
+.PN XDrawArc
+and
+.PN XDrawArcs
+do not draw a pixel more than once.
+Otherwise,
+the intersecting pixels of intersecting arcs are drawn multiple times.
+Specifying an arc with one endpoint and a clockwise extent draws the same pixels
+as specifying the other endpoint and an equivalent counterclockwise extent,
+except as it affects joins.
+.LP
+If the last point in one arc coincides with the first point in the following
+arc, the two arcs will join correctly.
+If the first point in the first arc coincides with the last point in the last
+arc, the two arcs will join correctly.
+By specifying one axis to be zero, a horizontal or vertical line can be
+drawn.
+Angles are computed based solely on the coordinate system and ignore the
+aspect ratio.
+.LP
+Both functions use these GC components:
+function, plane-mask, line-width, line-style, cap-style, join-style,
+fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask.
+They also use these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+tile-stipple-y-origin, dash-offset, and dash-list.
+.LP
+.PN XDrawArc
+and
+.PN XDrawArcs
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.NH 2
+Filling Areas
+.XS
+\*(SN Filling Areas
+.XE
+.LP
+Xlib provides functions that you can use to fill:
+.IP \(bu 5
+A single rectangle or multiple rectangles
+.IP \(bu 5
+A single polygon
+.IP \(bu 5
+A single arc or multiple arcs
+.NH 3
+Filling Single and Multiple Rectangles
+.XS
+\*(SN Filling Single and Multiple Rectangles
+.XE
+.LP
+.IN "Filling" "rectangles"
+.IN "XFillRectangle"
+.IN "Rectangle" "filling"
+.IN "XFillRectangles"
+.LP
+.sp
+To fill a single rectangular area in a given drawable, use
+.PN XFillRectangle .
+.IN "XFillRectangle" "" "@DEF@"
+.sM
+.FD 0
+XFillRectangle\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the drawable \
+and specify the upper-left corner of the rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which are the dimensions of the rectangle to be filled
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.LP
+.eM
+.sp
+To fill multiple rectangular areas in a given drawable, use
+.PN XFillRectangles .
+.IN "XFillRectangles" "" "@DEF@"
+.sM
+.FD 0
+XFillRectangles\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIrectangles\fP\^, \fInrectangles\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XRectangle *\fIrectangles\fP\^;
+.br
+ int \fInrectangles\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIrectangles\fP 1i
+Specifies an array of rectangles.
+.IP \fInrectangles\fP 1i
+Specifies the number of rectangles in the array.
+.LP
+.eM
+The
+.PN XFillRectangle
+and
+.PN XFillRectangles
+functions fill the specified rectangle or rectangles
+as if a four-point
+.PN FillPolygon
+protocol request were specified for each rectangle:
+.LP
+.Ds
+[x,y] [x+width,y] [x+width,y+height] [x,y+height]
+.De
+.LP
+Each function uses the x and y coordinates,
+width and height dimensions, and GC you specify.
+.LP
+.PN XFillRectangles
+fills the rectangles in the order listed in the array.
+For any given rectangle,
+.PN XFillRectangle
+and
+.PN XFillRectangles
+do not draw a pixel more than once.
+If rectangles intersect, the intersecting pixels are
+drawn multiple times.
+.LP
+Both functions use these GC components:
+function, plane-mask, fill-style, subwindow-mode,
+clip-x-origin, clip-y-origin, and clip-mask.
+They also use these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+and tile-stipple-y-origin.
+.LP
+.PN XFillRectangle
+and
+.PN XFillRectangles
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.NH 3
+Filling a Single Polygon
+.XS
+\*(SN Filling a Single Polygon
+.XE
+.LP
+.sp
+To fill a polygon area in a given drawable, use
+.PN XFillPolygon .
+.IN "Polygons" "filling"
+.IN "Filling" "polygon"
+.IN "XFillPolygon" "" "@DEF@"
+.sM
+.FD 0
+XFillPolygon\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIpoints\fP\^, \fInpoints\fP\^, \fIshape\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XPoint *\fIpoints\fP\^;
+.br
+ int \fInpoints\fP\^;
+.br
+ int \fIshape\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fInpoints\fP 1i
+Specifies the number of points in the array.
+.IP \fIshape\fP 1i
+Specifies a shape that helps the server to improve performance.
+You can pass
+.PN Complex ,
+.PN Convex ,
+or
+.PN Nonconvex .
+.IP \fImode\fP 1i
+Specifies the coordinate mode.
+You can pass
+.PN CoordModeOrigin
+or
+.PN CoordModePrevious .
+.LP
+.eM
+.PN XFillPolygon
+fills the region closed by the specified path.
+The path is closed
+automatically if the last point in the list does not coincide with the
+first point.
+.PN XFillPolygon
+does not draw a pixel of the region more than once.
+.PN CoordModeOrigin
+treats all coordinates as relative to the origin,
+and
+.PN CoordModePrevious
+treats all coordinates after the first as relative to the previous point.
+.LP
+Depending on the specified shape, the following occurs:
+.IP \(bu 5
+If shape is
+.PN Complex ,
+the path may self-intersect.
+Note that contiguous coincident points in the path are not treated
+as self-intersection.
+.IP \(bu 5
+If shape is
+.PN Convex ,
+for every pair of points inside the polygon,
+the line segment connecting them does not intersect the path.
+If known by the client,
+specifying
+.PN Convex
+can improve performance.
+If you specify
+.PN Convex
+for a path that is not convex,
+the graphics results are undefined.
+.IP \(bu 5
+If shape is
+.PN Nonconvex ,
+the path does not self-intersect, but the shape is not
+wholly convex.
+If known by the client,
+specifying
+.PN Nonconvex
+instead of
+.PN Complex
+may improve performance.
+If you specify
+.PN Nonconvex
+for a self-intersecting path, the graphics results are undefined.
+.LP
+The fill-rule of the GC controls the filling behavior of
+self-intersecting polygons.
+.LP
+This function uses these GC components:
+function, plane-mask, fill-style, fill-rule, subwindow-mode, clip-x-origin,
+clip-y-origin, and clip-mask.
+It also uses these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+and tile-stipple-y-origin.
+.LP
+.PN XFillPolygon
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 3
+Filling Single and Multiple Arcs
+.XS
+\*(SN Filling Single and Multiple Arcs
+.XE
+.LP
+.IN "XFillArc"
+.IN "Arcs" "filling"
+.IN "Filling" "arcs"
+To fill a single arc in a given drawable, use
+.PN XFillArc .
+.IN "XFillArc" "" "@DEF@"
+.sM
+.FD 0
+XFillArc\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIangle1\fP\^, \fIangle2\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ int \fIangle1\fP\^, \fIangle2\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the drawable \
+and specify the upper-left corner of the bounding rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which are the major and minor axes of the arc
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.IP \fIangle1\fP 1i
+Specifies the start of the arc relative to the three-o'clock position
+from the center, in units of degrees * 64.
+.IP \fIangle2\fP 1i
+Specifies the path and extent of the arc relative to the start of the
+arc, in units of degrees * 64.
+.LP
+.eM
+.sp
+To fill multiple arcs in a given drawable, use
+.PN XFillArcs .
+.IN "XFillArcs" "" "@DEF@"
+.sM
+.FD 0
+XFillArcs\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIarcs\fP\^, \fInarcs\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XArc *\fIarcs\fP\^;
+.br
+ int \fInarcs\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIarcs\fP 1i
+Specifies an array of arcs.
+.IP \fInarcs\fP 1i
+Specifies the number of arcs in the array.
+.LP
+.eM
+For each arc,
+.PN XFillArc
+or
+.PN XFillArcs
+fills the region closed by the infinitely thin path
+described by the specified arc and, depending on the
+arc-mode specified in the GC, one or two line segments.
+For
+.PN ArcChord ,
+the single line segment joining the endpoints of the arc is used.
+For
+.PN ArcPieSlice ,
+the two line segments joining the endpoints of the arc with the center
+point are used.
+.PN XFillArcs
+fills the arcs in the order listed in the array.
+For any given arc,
+.PN XFillArc
+and
+.PN XFillArcs
+do not draw a pixel more than once.
+If regions intersect,
+the intersecting pixels are drawn multiple times.
+.LP
+Both functions use these GC components:
+function, plane-mask, fill-style, arc-mode, subwindow-mode, clip-x-origin,
+clip-y-origin, and clip-mask.
+They also use these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+and tile-stipple-y-origin.
+.LP
+.PN XFillArc
+and
+.PN XFillArcs
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.NH 2
+Font Metrics
+.XS
+\*(SN Font Metrics
+.XE
+.LP
+.IN "Font"
+A font is a graphical description of a set of characters that are used to
+increase efficiency whenever a set of small, similar sized patterns are
+repeatedly used.
+.LP
+This section discusses how to:
+.IP \(bu 5
+Load and free fonts
+.IP \(bu 5
+Obtain and free font names
+.IP \(bu 5
+Compute character string sizes
+.IP \(bu 5
+Compute logical extents
+.IP \(bu 5
+Query character string sizes
+.LP
+The X server loads fonts whenever a program requests a new font.
+The server can cache fonts for quick lookup.
+Fonts are global across all screens in a server.
+Several levels are possible when dealing with fonts.
+Most applications simply use
+.PN XLoadQueryFont
+to load a font and query the font metrics.
+.LP
+Characters in fonts are regarded as masks.
+Except for image text requests,
+the only pixels modified are those in which bits are set to 1 in the character.
+This means that it makes sense to draw text using stipples or tiles
+(for example, many menus gray-out unusable entries).
+.LP
+.sM
+The
+.PN XFontStruct
+structure contains all of the information for the font
+and consists of the font-specific information as well as
+a pointer to an array of
+.PN XCharStruct
+structures for the
+characters contained in the font.
+The
+.PN XFontStruct ,
+.PN XFontProp ,
+and
+.PN XCharStruct
+structures contain:
+.LP
+.IN "XCharStruct" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ short lbearing; /* origin to left edge of raster */
+ short rbearing; /* origin to right edge of raster */
+ short width; /* advance to next char's origin */
+ short ascent; /* baseline to top edge of raster */
+ short descent; /* baseline to bottom edge of raster */
+ unsigned short attributes; /* per char flags (not predefined) */
+} XCharStruct;
+.De
+.LP
+.IN "XFontProp" "" "@DEF@"
+.Ds 0
+.TA .5i 1i 3i
+.ta .5i 1i 3i
+typedef struct {
+ Atom name;
+ unsigned long card32;
+} XFontProp;
+.De
+.LP
+.IN "XChar2b" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct { /* normal 16 bit characters are two bytes */
+ unsigned char byte1;
+ unsigned char byte2;
+} XChar2b;
+.De
+.LP
+.IN "XFontStruct" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ Font fid; /* Font id for this font */
+ unsigned direction; /* hint about the direction font is painted */
+ unsigned min_char_or_byte2; /* first character */
+ unsigned max_char_or_byte2; /* last character */
+ unsigned min_byte1; /* first row that exists */
+ unsigned max_byte1; /* last row that exists */
+ Bool all_chars_exist; /* flag if all characters have nonzero size */
+ unsigned default_char; /* char to print for undefined character */
+ int n_properties; /* how many properties there are */
+ XFontProp *properties; /* pointer to array of additional properties */
+ XCharStruct min_bounds; /* minimum bounds over all existing char */
+ XCharStruct max_bounds; /* maximum bounds over all existing char */
+ XCharStruct *per_char; /* first_char to last_char information */
+ int ascent; /* logical extent above baseline for spacing */
+ int descent; /* logical descent below baseline for spacing */
+} XFontStruct;
+.De
+.LP
+.eM
+X supports single byte/character, two bytes/character matrix,
+and 16-bit character text operations.
+Note that any of these forms can be used with a font, but a
+single byte/character text request can only specify a single byte
+(that is, the first row of a 2-byte font).
+You should view 2-byte fonts as a two-dimensional matrix of defined
+characters: byte1 specifies the range of defined rows and
+byte2 defines the range of defined columns of the font.
+Single byte/character fonts have one row defined, and the byte2 range
+specified in the structure defines a range of characters.
+.LP
+The bounding box of a character is defined by the
+.PN XCharStruct
+of that character.
+When characters are absent from a font,
+the default_char is used.
+When fonts have all characters of the same size,
+only the information in the
+.PN XFontStruct
+min and max bounds are used.
+.LP
+The members of the
+.PN XFontStruct
+have the following semantics:
+.IP \(bu 5
+The direction member can be either
+.PN FontLeftToRight
+or
+.PN FontRightToLeft .
+It is just a hint as to whether most
+.PN XCharStruct
+elements
+have a positive
+.Pn ( FontLeftToRight )
+or a negative
+.Pn ( FontRightToLeft )
+character width
+metric.
+The core protocol defines no support for vertical text.
+.IP \(bu 5
+If the min_byte1 and max_byte1 members are both zero, min_char_or_byte2
+specifies the linear character index corresponding to the first element
+of the per_char array, and max_char_or_byte2 specifies the linear character
+index of the last element.
+.IP
+If either min_byte1 or max_byte1 are nonzero, both
+min_char_or_byte2 and max_char_or_byte2 are less than 256,
+and the 2-byte character index values corresponding to the
+per_char array element N (counting from 0) are:
+.IP
+.nf
+ byte1 = N/D + min_byte1
+.br
+ byte2 = N\\D + min_char_or_byte2
+.IP
+.fi
+where:
+.IP
+.nf
+ D = max_char_or_byte2 \- min_char_or_byte2 + 1
+ / = integer division
+ \\ = integer modulus
+.fi
+.IP \(bu 5
+If the per_char pointer is NULL,
+all glyphs between the first and last character indexes
+inclusive have the same information,
+as given by both min_bounds and max_bounds.
+.IP \(bu 5
+If all_chars_exist is
+.PN True ,
+all characters in the per_char array have nonzero bounding boxes.
+.IP \(bu 5
+The default_char member specifies the character that will be used when an
+undefined or nonexistent character is printed.
+The default_char is a 16-bit character (not a 2-byte character).
+For a font using 2-byte matrix format,
+the default_char has byte1 in the most-significant byte
+and byte2 in the least significant byte.
+If the default_char itself specifies an undefined or nonexistent character,
+no printing is performed for an undefined or nonexistent character.
+.IP \(bu 5
+The min_bounds and max_bounds members contain the most extreme values of
+each individual
+.PN XCharStruct
+component over all elements of this array
+(and ignore nonexistent characters).
+The bounding box of the font (the smallest
+rectangle enclosing the shape obtained by superimposing all of the
+characters at the same origin [x,y]) has its upper-left coordinate at:
+.Ds
+ [x + min_bounds.lbearing, y \- max_bounds.ascent]
+.De
+.IP
+Its width is:
+.Ds
+ max_bounds.rbearing \- min_bounds.lbearing
+.De
+.IP
+Its height is:
+.Ds
+ max_bounds.ascent + max_bounds.descent
+.De
+.IP \(bu 5
+The ascent member is the logical extent of the font above the baseline that is
+used for determining line spacing.
+Specific characters may extend beyond
+this.
+.IP \(bu 5
+The descent member is the logical extent of the font at or below the
+baseline that is used for determining line spacing.
+Specific characters may extend beyond this.
+.IP \(bu 5
+If the baseline is at Y-coordinate y,
+the logical extent of the font is inclusive between the Y-coordinate
+values (y \- font.ascent) and (y + font.descent \- 1).
+Typically,
+the minimum interline spacing between rows of text is given
+by ascent + descent.
+.LP
+For a character origin at [x,y],
+the bounding box of a character (that is,
+the smallest rectangle that encloses the character's shape)
+described in terms of
+.PN XCharStruct
+components is a rectangle with its upper-left corner at:
+.LP
+.Ds
+[x + lbearing, y \- ascent]
+.De
+.LP
+Its width is:
+.LP
+.Ds
+rbearing \- lbearing
+.De
+.LP
+Its height is:
+.LP
+.Ds
+ascent + descent
+.De
+.LP
+The origin for the next character is defined to be:
+.LP
+.Ds
+[x + width, y]
+.De
+.LP
+The lbearing member defines the extent of the left edge of the character ink
+from the origin.
+The rbearing member defines the extent of the right edge of the character ink
+from the origin.
+The ascent member defines the extent of the top edge of the character ink
+from the origin.
+The descent member defines the extent of the bottom edge of the character ink
+from the origin.
+The width member defines the logical width of the character.
+.LP
+Note that the baseline (the y position of the character origin)
+is logically viewed as being the scanline just below nondescending characters.
+When descent is zero,
+only pixels with Y-coordinates less than y are drawn,
+and the origin is logically viewed as being coincident with the left edge of
+a nonkerned character.
+When lbearing is zero,
+no pixels with X-coordinate less than x are drawn.
+Any of the
+.PN XCharStruct
+metric members could be negative.
+If the width is negative,
+the next character will be placed to the left of the current origin.
+.LP
+The X protocol does not define the interpretation of the attributes member
+in the
+.PN XCharStruct
+structure.
+A nonexistent character is represented with all members of its
+.PN XCharStruct
+set to zero.
+.LP
+A font is not guaranteed to have any properties.
+The interpretation of the property value (for example, long or unsigned long)
+must be derived from \fIa priori\fP knowledge of the property.
+A basic set of font properties is specified in the X Consortium standard
+\fIX Logical Font Description Conventions\fP.
+.NH 3
+Loading and Freeing Fonts
+.XS
+\*(SN Loading and Freeing Fonts
+.XE
+.LP
+Xlib provides functions that you can use to load fonts, get font information,
+unload fonts, and free font information.
+.IN "Fonts" "getting information"
+.IN "Fonts" "unloading"
+.IN "Fonts" "freeing font information"
+A few font functions use a
+.PN GContext
+resource ID or a font ID interchangeably.
+.LP
+.sp
+To load a given font, use
+.PN XLoadFont .
+.IN "XLoadFont" "" "@DEF@"
+.sM
+.FD 0
+Font XLoadFont\^(\^\fIdisplay\fP, \fIname\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIname\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIname\fP 1i
+Specifies the name of the font,
+which is a null-terminated string.
+.LP
+.eM
+The
+.PN XLoadFont
+function loads the specified font and returns its associated font ID.
+If the font name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+When the characters ``?'' and ``*'' are used in a font name, a
+pattern match is performed and any matching font is used.
+In the pattern,
+the ``?'' character will match any single character,
+and the ``*'' character will match any number of characters.
+A structured format for font names is specified in the X Consortium standard
+\fIX Logical Font Description Conventions\fP.
+If
+.PN XLoadFont
+was unsuccessful at loading the specified font,
+a
+.PN BadName
+error results.
+Fonts are not associated with a particular screen
+and can be stored as a component
+of any GC.
+When the font is no longer needed, call
+.PN XUnloadFont .
+.LP
+.PN XLoadFont
+can generate
+.PN BadAlloc
+and
+.PN BadName
+errors.
+.LP
+.sp
+To return information about an available font, use
+.PN XQueryFont .
+.IN "XQueryFont" "" "@DEF@"
+.sM
+.FD 0
+XFontStruct *XQueryFont\^(\^\fIdisplay\fP, \fIfont_ID\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIfont_ID\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_ID\fP 1i
+Specifies the font ID or the
+.PN GContext
+ID.
+.LP
+.eM
+The
+.PN XQueryFont
+function returns a pointer to the
+.PN XFontStruct
+structure, which contains information associated with the font.
+You can query a font or the font stored in a GC.
+The font ID stored in the
+.PN XFontStruct
+structure will be the
+.PN GContext
+ID, and you need to be careful when using this ID in other functions
+(see
+.PN XGContextFromGC ).
+If the font does not exist,
+.PN XQueryFont
+returns NULL.
+To free this data, use
+.PN XFreeFontInfo .
+.LP
+.sp
+To perform a
+.PN XLoadFont
+and
+.PN XQueryFont
+in a single operation, use
+.PN XLoadQueryFont .
+.IN "XLoadQueryFont" "" "@DEF@"
+.sM
+.FD 0
+XFontStruct *XLoadQueryFont\^(\^\fIdisplay\fP, \fIname\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIname\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIname\fP 1i
+Specifies the name of the font,
+which is a null-terminated string.
+.LP
+.eM
+The
+.PN XLoadQueryFont
+function provides the most common way for accessing a font.
+.PN XLoadQueryFont
+both opens (loads) the specified font and returns a pointer to the
+appropriate
+.PN XFontStruct
+structure.
+If the font name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+If the font does not exist,
+.PN XLoadQueryFont
+returns NULL.
+.LP
+.PN XLoadQueryFont
+can generate a
+.PN BadAlloc
+error.
+.LP
+.sp
+To unload the font and free the storage used by the font structure
+that was allocated by
+.PN XQueryFont
+or
+.PN XLoadQueryFont ,
+use
+.PN XFreeFont .
+.IN "XFreeFont" "" "@DEF@"
+.sM
+.FD 0
+XFreeFont\^(\^\fIdisplay\fP, \fIfont_struct\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XFontStruct *\fIfont_struct\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_struct\fP 1i
+Specifies the storage associated with the font.
+.LP
+.eM
+The
+.PN XFreeFont
+function deletes the association between the font resource ID and the specified
+font and frees the
+.PN XFontStruct
+structure.
+The font itself will be freed when no other resource references it.
+The data and the font should not be referenced again.
+.LP
+.PN XFreeFont
+can generate a
+.PN BadFont
+error.
+.LP
+.sp
+To return a given font property, use
+.PN XGetFontProperty .
+.IN "XGetFontProperty" "" "@DEF@"
+.sM
+.FD 0
+Bool XGetFontProperty\^(\^\fIfont_struct\fP\^, \^\fIatom\fP\^, \^\fIvalue_return\fP\^)
+.br
+ XFontStruct *\fIfont_struct\fP\^;
+.br
+ Atom \fIatom\fP\^;
+.br
+ unsigned long *\fIvalue_return\fP\^;
+.FN
+.IP \fIfont_struct\fP 1i
+Specifies the storage associated with the font.
+.IP \fIatom\fP 1i
+Specifies the atom for the property name you want returned.
+.IP \fIvalue_return\fP 1i
+Returns the value of the font property.
+.LP
+.eM
+Given the atom for that property,
+the
+.PN XGetFontProperty
+function returns the value of the specified font property.
+.PN XGetFontProperty
+also returns
+.PN False
+if the property was not defined or
+.PN True
+if it was defined.
+A set of predefined atoms exists for font properties,
+which can be found in
+.hN X11/Xatom.h .
+This set contains the standard properties associated with
+a font.
+Although it is not guaranteed,
+it is likely that the predefined font properties will be present.
+.LP
+.sp
+To unload a font that was loaded by
+.PN XLoadFont ,
+use
+.PN XUnloadFont .
+.IN "XUnloadFont" "" "@DEF@"
+.sM
+.FD 0
+XUnloadFont\^(\^\fIdisplay\fP, \fIfont\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Font \fIfont\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont\fP 1i
+Specifies the font.
+.LP
+.eM
+The
+.PN XUnloadFont
+function deletes the association between the font resource ID and the specified font.
+The font itself will be freed when no other resource references it.
+The font should not be referenced again.
+.LP
+.PN XUnloadFont
+can generate a
+.PN BadFont
+error.
+.NH 3
+Obtaining and Freeing Font Names and Information
+.XS
+\*(SN Obtaining and Freeing Font Names and Information
+.XE
+.LP
+You obtain font names and information by matching a wildcard specification
+when querying a font type for a list of available sizes and so on.
+.LP
+.sp
+To return a list of the available font names, use
+.PN XListFonts .
+.IN "XListFonts" "" "@DEF@"
+.sM
+.FD 0
+char **XListFonts\^(\^\fIdisplay\fP, \fIpattern\fP\^, \fImaxnames\fP, \fIactual_count_return\fP\^)
+.br
+ Display *\^\fIdisplay\fP\^;
+.br
+ char *\^\fIpattern\fP\^;
+.br
+ int \fImaxnames\fP\^;
+.br
+ int *\^\fIactual_count_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIpattern\fP 1i
+Specifies the null-terminated pattern string that can contain wildcard
+characters.
+.IP \fImaxnames\fP 1i
+Specifies the maximum number of names to be returned.
+.IP \fIactual_count_return\fP 1i
+Returns the actual number of font names.
+.LP
+.eM
+The
+.PN XListFonts
+function returns an array of available font names
+(as controlled by the font search path; see
+.PN XSetFontPath )
+that match the string you passed to the pattern argument.
+The pattern string can contain any characters,
+but each asterisk (*) is a wildcard for any number of characters,
+and each question mark (?) is a wildcard for a single character.
+If the pattern string is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+Each returned string is null-terminated.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned strings are in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+If there are no matching font names,
+.PN XListFonts
+returns NULL.
+The client should call
+.PN XFreeFontNames
+when finished with the result to free the memory.
+.LP
+.sp
+To free a font name array, use
+.PN XFreeFontNames .
+.IN "XFreeFontNames" "" "@DEF@"
+.sM
+.FD 0
+XFreeFontNames\^(\^\fIlist\fP\^)
+.br
+ char *\fIlist\fP\^[\^]\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies the array of strings you want to free.
+.LP
+.eM
+The
+.PN XFreeFontNames
+function frees the array and strings returned by
+.PN XListFonts
+or
+.PN XListFontsWithInfo .
+.LP
+.sp
+To obtain the names and information about available fonts, use
+.PN XListFontsWithInfo .
+.IN "XListFontsWithInfo" "" "@DEF@"
+.sM
+.FD 0
+char **XListFontsWithInfo\^(\^\fIdisplay\fP, \fIpattern\fP, \fImaxnames\fP, \fIcount_return\fP, \fIinfo_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIpattern\fP\^;
+.br
+ int \fImaxnames\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.br
+ XFontStruct **\fIinfo_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIpattern\fP 1i
+Specifies the null-terminated pattern string that can contain wildcard
+characters.
+.IP \fImaxnames\fP 1i
+Specifies the maximum number of names to be returned.
+.IP \fIcount_return\fP 1i
+Returns the actual number of matched font names.
+.IP \fIinfo_return\fP 1i
+Returns the font information.
+.LP
+.eM
+The
+.PN XListFontsWithInfo
+function returns a list of font names that match the specified pattern and their
+associated font information.
+The list of names is limited to size specified by maxnames.
+The information returned for each font is identical to what
+.PN XLoadQueryFont
+would return except that the per-character metrics are not returned.
+The pattern string can contain any characters,
+but each asterisk (*) is a wildcard for any number of characters,
+and each question mark (?) is a wildcard for a single character.
+If the pattern string is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Use of uppercase or lowercase does not matter.
+Each returned string is null-terminated.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned strings are in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+If there are no matching font names,
+.PN XListFontsWithInfo
+returns NULL.
+.LP
+To free only the allocated name array,
+the client should call
+.PN XFreeFontNames .
+To free both the name array and the font information array
+or to free just the font information array,
+the client should call
+.PN XFreeFontInfo .
+.LP
+.sp
+To free font structures and font names, use
+.PN XFreeFontInfo .
+.IN "XFreeFontInfo" "" "@DEF@"
+.sM
+.FD 0
+XFreeFontInfo(\^\fInames\fP, \fIfree_info\fP, \fIactual_count\fP\^)
+.br
+ char **\fInames\fP\^;
+.br
+ XFontStruct *\fIfree_info\fP;
+.br
+ int \fIactual_count\fP\^;
+.FN
+.IP \fInames\fP 1i
+Specifies the list of font names.
+
+.IP \fIfree_info\fP 1i
+Specifies the font information.
+
+.IP \fIactual_count\fP 1i
+Specifies the actual number of font names.
+
+.LP
+.eM
+The
+.PN XFreeFontInfo
+function frees a font structure or an array of font structures
+and optionally an array of font names.
+If NULL is passed for names, no font names are freed.
+If a font structure for an open font (returned by
+.PN XLoadQueryFont )
+is passed, the structure is freed,
+but the font is not closed; use
+.PN XUnloadFont
+to close the font.
+.NH 3
+Computing Character String Sizes
+.XS
+\*(SN Computing Character String Sizes
+.XE
+.LP
+Xlib provides functions that you can use to compute the width,
+the logical extents,
+and the server information about 8-bit and 2-byte text strings.
+.IN "XTextWidth"
+.IN "XTextWidth16"
+The width is computed by adding the character widths of all the characters.
+It does not matter if the font is an 8-bit or 2-byte font.
+These functions return the sum of the character metrics in pixels.
+.LP
+.sp
+To determine the width of an 8-bit character string, use
+.PN XTextWidth .
+.IN "XTextWidth" "" "@DEF@"
+.sM
+.FD 0
+int XTextWidth\^(\^\fIfont_struct\fP\^, \fIstring\fP, \fIcount\fP\^)
+.br
+ XFontStruct *\fIfont_struct\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fIcount\fP\^;
+.FN
+.IP \fIfont_struct\fP 1i
+Specifies the font used for the width computation.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fIcount\fP 1i
+Specifies the character count in the specified string.
+.LP
+.eM
+.sp
+To determine the width of a 2-byte character string, use
+.PN XTextWidth16 .
+.IN "XTextWidth16" "" "@DEF@"
+.sM
+.FD 0
+int XTextWidth16\^(\^\fIfont_struct\fP\^, \fIstring\fP, \fIcount\fP\^)
+.br
+ XFontStruct *\fIfont_struct\fP\^;
+.br
+ XChar2b *\fIstring\fP\^;
+.br
+ int \fIcount\fP\^;
+.FN
+.IP \fIfont_struct\fP 1i
+Specifies the font used for the width computation.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fIcount\fP 1i
+Specifies the character count in the specified string.
+.LP
+.eM
+.NH 3
+Computing Logical Extents
+.XS
+\*(SN Computing Logical Extents
+.XE
+.LP
+To compute the bounding box of an 8-bit character string in a given font, use
+.PN XTextExtents .
+.IN "XTextExtents" "" "@DEF@"
+.sM
+.FD 0
+XTextExtents\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^, \
+\fIdirection_return\fP, \fIfont_ascent_return\fP,
+.br
+ \fIfont_descent_return\fP, \fIoverall_return\fP\^)
+.br
+ XFontStruct *\fIfont_struct\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInchars\fP\^;
+.br
+ int *\fIdirection_return\fP\^;
+.br
+ int *\fIfont_ascent_return\fP, *\fIfont_descent_return\fP\^;
+.br
+ XCharStruct *\fIoverall_return\fP\^;
+
+.FN
+.IP \fIfont_struct\fP 1i
+Specifies the
+.PN XFontStruct
+structure.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInchars\fP 1i
+Specifies the number of characters in the character string.
+.IP \fIdirection_return\fP 1i
+Returns the value of the direction hint
+.Pn ( FontLeftToRight
+or
+.PN FontRightToLeft ).
+.IP \fIfont_ascent_return\fP 1i
+Returns the font ascent.
+.IP \fIfont_descent_return\fP 1i
+Returns the font descent.
+.IP \fIoverall_return\fP 1i
+Returns the overall size in the specified
+.PN XCharStruct
+structure.
+.LP
+.eM
+.sp
+To compute the bounding box of a 2-byte character string in a given font, use
+.PN XTextExtents16 .
+.IN "XTextExtents16" "" "@DEF@"
+.sM
+.FD 0
+XTextExtents16\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^, \
+\fIdirection_return\fP, \fIfont_ascent_return\fP,
+.br
+ \fIfont_descent_return\fP, \fIoverall_return\fP\^)
+.br
+ XFontStruct *\fIfont_struct\fP\^;
+.br
+ XChar2b *\fIstring\fP\^;
+.br
+ int \fInchars\fP\^;
+.br
+ int *\fIdirection_return\fP\^;
+.br
+ int *\fIfont_ascent_return\fP, *\fIfont_descent_return\fP\^;
+.br
+ XCharStruct *\fIoverall_return\fP\^;
+
+.FN
+.IP \fIfont_struct\fP 1i
+Specifies the
+.PN XFontStruct
+structure.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInchars\fP 1i
+Specifies the number of characters in the character string.
+.IP \fIdirection_return\fP 1i
+Returns the value of the direction hint
+.Pn ( FontLeftToRight
+or
+.PN FontRightToLeft ).
+.IP \fIfont_ascent_return\fP 1i
+Returns the font ascent.
+.IP \fIfont_descent_return\fP 1i
+Returns the font descent.
+.IP \fIoverall_return\fP 1i
+Returns the overall size in the specified
+.PN XCharStruct
+structure.
+.LP
+.eM
+The
+.PN XTextExtents
+and
+.PN XTextExtents16
+functions
+perform the size computation locally and, thereby,
+avoid the round-trip overhead of
+.PN XQueryTextExtents
+and
+.PN XQueryTextExtents16 .
+Both functions return an
+.PN XCharStruct
+structure, whose members are set to the values as follows.
+.LP
+The ascent member is set to the maximum of the ascent metrics of all
+characters in the string.
+The descent member is set to the maximum of the descent metrics.
+The width member is set to the sum of the character-width metrics of all
+characters in the string.
+For each character in the string,
+let W be the sum of the character-width metrics of all characters preceding
+it in the string.
+Let L be the left-side-bearing metric of the character plus W.
+Let R be the right-side-bearing metric of the character plus W.
+The lbearing member is set to the minimum L of all characters in the string.
+The rbearing member is set to the maximum R.
+.LP
+For fonts defined with linear indexing rather than 2-byte matrix indexing,
+each
+.PN XChar2b
+structure is interpreted as a 16-bit number with byte1 as the
+most significant byte.
+If the font has no defined default character,
+undefined characters in the string are taken to have all zero metrics.
+.NH 3
+Querying Character String Sizes
+.XS
+\*(SN Querying Character String Sizes
+.XE
+.LP
+To query the server for the bounding box of an 8-bit character string in a
+given font, use
+.PN XQueryTextExtents .
+.IN "XQueryTextExtents" "" "@DEF@"
+.sM
+.FD 0
+XQueryTextExtents\^(\^\fIdisplay\fP, \fIfont_ID\fP, \fIstring\fP, \
+\fInchars\fP, \fIdirection_return\fP, \fIfont_ascent_return\fP,
+.br
+ \fIfont_descent_return\fP, \fIoverall_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIfont_ID\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInchars\fP\^;
+.br
+ int *\fIdirection_return\fP\^;
+.br
+ int *\fIfont_ascent_return\fP, *\fIfont_descent_return\fP\^;
+.br
+ XCharStruct *\fIoverall_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_ID\fP 1i
+Specifies either the font ID or the
+.PN GContext
+ID that contains the font.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInchars\fP 1i
+Specifies the number of characters in the character string.
+.IP \fIdirection_return\fP 1i
+Returns the value of the direction hint
+.Pn ( FontLeftToRight
+or
+.PN FontRightToLeft ).
+.IP \fIfont_ascent_return\fP 1i
+Returns the font ascent.
+.IP \fIfont_descent_return\fP 1i
+Returns the font descent.
+.IP \fIoverall_return\fP 1i
+Returns the overall size in the specified
+.PN XCharStruct
+structure.
+.LP
+.eM
+.sp
+To query the server for the bounding box of a 2-byte character string
+in a given font, use
+.PN XQueryTextExtents16 .
+.IN "XQueryTextExtents16" "" "@DEF@"
+.sM
+.FD 0
+XQueryTextExtents16\^(\^\fIdisplay\fP, \fIfont_ID\fP, \fIstring\fP, \
+\fInchars\fP, \fIdirection_return\fP, \fIfont_ascent_return\fP,
+.br
+ \fIfont_descent_return\fP, \fIoverall_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIfont_ID\fP\^;
+.br
+ XChar2b *\fIstring\fP\^;
+.br
+ int \fInchars\fP\^;
+.br
+ int *\fIdirection_return\fP\^;
+.br
+ int *\fIfont_ascent_return\fP, *\fIfont_descent_return\fP\^;
+.br
+ XCharStruct *\fIoverall_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_ID\fP 1i
+Specifies either the font ID or the
+.PN GContext
+ID that contains the font.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInchars\fP 1i
+Specifies the number of characters in the character string.
+.IP \fIdirection_return\fP 1i
+Returns the value of the direction hint
+.Pn ( FontLeftToRight
+or
+.PN FontRightToLeft ).
+.IP \fIfont_ascent_return\fP 1i
+Returns the font ascent.
+.IP \fIfont_descent_return\fP 1i
+Returns the font descent.
+.IP \fIoverall_return\fP 1i
+Returns the overall size in the specified
+.PN XCharStruct
+structure.
+.LP
+.eM
+The
+.PN XQueryTextExtents
+and
+.PN XQueryTextExtents16
+functions return the bounding box of the specified 8-bit and 16-bit
+character string in the specified font or the font contained in the
+specified GC.
+These functions query the X server and, therefore, suffer the round-trip
+overhead that is avoided by
+.PN XTextExtents
+and
+.PN XTextExtents16 .
+Both functions return a
+.PN XCharStruct
+structure, whose members are set to the values as follows.
+.LP
+The ascent member is set to the maximum of the ascent metrics
+of all characters in the string.
+The descent member is set to the maximum of the descent metrics.
+The width member is set to the sum of the character-width metrics
+of all characters in the string.
+For each character in the string,
+let W be the sum of the character-width metrics of all characters preceding
+it in the string.
+Let L be the left-side-bearing metric of the character plus W.
+Let R be the right-side-bearing metric of the character plus W.
+The lbearing member is set to the minimum L of all characters in the string.
+The rbearing member is set to the maximum R.
+.LP
+For fonts defined with linear indexing rather than 2-byte matrix indexing,
+each
+.PN XChar2b
+structure is interpreted as a 16-bit number with byte1 as the
+most significant byte.
+If the font has no defined default character,
+undefined characters in the string are taken to have all zero metrics.
+.LP
+Characters with all zero metrics are ignored.
+If the font has no defined default_char,
+the undefined characters in the string are also ignored.
+.LP
+.PN XQueryTextExtents
+and
+.PN XQueryTextExtents16
+can generate
+.PN BadFont
+and
+.PN BadGC
+errors.
+.NH 2
+Drawing Text
+.XS
+\*(SN Drawing Text
+.XE
+.LP
+This section discusses how to draw:
+.IP \(bu 5
+Complex text
+.IP \(bu 5
+Text characters
+.IP \(bu 5
+Image text characters
+.LP
+The fundamental text functions
+.PN XDrawText
+and
+.PN XDrawText16
+use the following structures:
+.LP
+.IN "XTextItem" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ char *chars; /* pointer to string */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* Font to print it in, None don't change */
+} XTextItem;
+.De
+.LP
+.IN "XTextItem16" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XChar2b *chars; /* pointer to two-byte characters */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* font to print it in, None don't change */
+} XTextItem16;
+.De
+.LP
+.eM
+If the font member is not
+.PN None ,
+the font is changed before printing and also is stored in the GC.
+If an error was generated during text drawing,
+the previous items may have been drawn.
+The baseline of the characters are drawn starting at the x and y
+coordinates that you pass in the text drawing functions.
+.LP
+For example, consider the background rectangle drawn by
+.PN XDrawImageString .
+If you want the upper-left corner of the background rectangle
+to be at pixel coordinate (x,y), pass the (x,y + ascent)
+as the baseline origin coordinates to the text functions.
+The ascent is the font ascent, as given in the
+.PN XFontStruct
+structure.
+If you want the lower-left corner of the background rectangle
+to be at pixel coordinate (x,y), pass the (x,y \- descent + 1)
+as the baseline origin coordinates to the text functions.
+The descent is the font descent, as given in the
+.PN XFontStruct
+structure.
+.NH 3
+Drawing Complex Text
+.XS
+\*(SN Drawing Complex Text
+.XE
+.LP
+.IN "Text" "drawing"
+.IN "Drawing" "text items"
+.LP
+To draw 8-bit characters in a given drawable, use
+.PN XDrawText .
+.IN "XDrawText" "" "@DEF@"
+.sM
+.FD 0
+XDrawText\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIitems\fP\^, \fInitems\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ XTextItem *\fIitems\fP\^;
+.br
+ int \fInitems\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the specified drawable \
+and define the origin of the first character
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIitems\fP 1i
+Specifies an array of text items.
+.IP \fInitems\fP 1i
+Specifies the number of text items in the array.
+.LP
+.eM
+.sp
+To draw 2-byte characters in a given drawable, use
+.PN XDrawText16 .
+.IN "XDrawText16" "" "@DEF@"
+.sM
+.FD 0
+XDrawText16\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIitems\fP\^, \fInitems\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ XTextItem16 *\fIitems\fP\^;
+.br
+ int \fInitems\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the specified drawable \
+and define the origin of the first character
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIitems\fP 1i
+Specifies an array of text items.
+.IP \fInitems\fP 1i
+Specifies the number of text items in the array.
+.LP
+.eM
+The
+.PN XDrawText16
+function is similar to
+.PN XDrawText
+except that it uses 2-byte or 16-bit characters.
+Both functions allow complex spacing and font shifts between counted strings.
+.LP
+Each text item is processed in turn.
+A font member other than
+.PN None
+in an item causes the font to be stored in the GC
+and used for subsequent text.
+A text element delta specifies an additional change
+in the position along the x axis before the string is drawn.
+The delta is always added to the character origin
+and is not dependent on any characteristics of the font.
+Each character image, as defined by the font in the GC, is treated as an
+additional mask for a fill operation on the drawable.
+The drawable is modified only where the font character has a bit set to 1.
+If a text item generates a
+.PN BadFont
+error, the previous text items may have been drawn.
+.LP
+For fonts defined with linear indexing rather than 2-byte matrix indexing,
+each
+.PN XChar2b
+structure is interpreted as a 16-bit number with byte1 as the
+most significant byte.
+.LP
+Both functions use these GC components:
+function, plane-mask, fill-style, font, subwindow-mode,
+clip-x-origin, clip-y-origin, and clip-mask.
+They also use these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+and tile-stipple-y-origin.
+.LP
+.PN XDrawText
+and
+.PN XDrawText16
+can generate
+.PN BadDrawable ,
+.PN BadFont ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.NH 3
+Drawing Text Characters
+.XS
+\*(SN Drawing Text Characters
+.XE
+.LP
+.IN "Strings" "drawing"
+.IN "Drawing" "strings"
+To draw 8-bit characters in a given drawable, use
+.PN XDrawString .
+.IN "XDrawString" "" "@DEF@"
+.sM
+.FD 0
+XDrawString\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fIlength\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fIlength\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the specified drawable \
+and define the origin of the first character
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fIlength\fP 1i
+Specifies the number of characters in the string argument.
+.LP
+.eM
+.sp
+To draw 2-byte characters in a given drawable, use
+.PN XDrawString16 .
+.IN "XDrawString16" "" "@DEF@"
+.sM
+.FD 0
+XDrawString16\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fIlength\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ XChar2b *\fIstring\fP\^;
+.br
+ int \fIlength\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the specified drawable \
+and define the origin of the first character
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fIlength\fP 1i
+Specifies the number of characters in the string argument.
+.LP
+.eM
+Each character image, as defined by the font in the GC, is treated as an
+additional mask for a fill operation on the drawable.
+The drawable is modified only where the font character has a bit set to 1.
+For fonts defined with 2-byte matrix indexing
+and used with
+.PN XDrawString16 ,
+each byte is used as a byte2 with a byte1 of zero.
+.LP
+Both functions use these GC components:
+function, plane-mask, fill-style, font, subwindow-mode, clip-x-origin,
+clip-y-origin, and clip-mask.
+They also use these GC mode-dependent components:
+foreground, background, tile, stipple, tile-stipple-x-origin,
+and tile-stipple-y-origin.
+.LP
+.PN XDrawString
+and
+.PN XDrawString16
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.NH 3
+Drawing Image Text Characters
+.XS
+\*(SN Drawing Image Text Characters
+.XE
+.LP
+.IN "Image text" "drawing"
+.IN "Drawing" "image text"
+Some applications, in particular terminal emulators, need to
+print image text in which both the foreground and background bits of
+each character are painted.
+This prevents annoying flicker on many displays.
+.IN "XDrawImageString"
+.IN "XDrawImageString16"
+.LP
+.sp
+To draw 8-bit image text characters in a given drawable, use
+.PN XDrawImageString .
+.IN "XDrawImageString" "" "@DEF@"
+.sM
+.FD 0
+XDrawImageString\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fIlength\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fIlength\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the specified drawable \
+and define the origin of the first character
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fIlength\fP 1i
+Specifies the number of characters in the string argument.
+.LP
+.eM
+.sp
+To draw 2-byte image text characters in a given drawable, use
+.PN XDrawImageString16 .
+.IN "XDrawImageString16" "" "@DEF@"
+.sM
+.FD 0
+XDrawImageString16\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fIlength\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ XChar2b *\fIstring\fP\^;
+.br
+ int \fIlength\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy , which are relative to the origin of the specified drawable \
+and define the origin of the first character
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fIlength\fP 1i
+Specifies the number of characters in the string argument.
+.LP
+.eM
+The
+.PN XDrawImageString16
+function is similar to
+.PN XDrawImageString
+except that it uses 2-byte or 16-bit characters.
+Both functions also use both the foreground and background pixels
+of the GC in the destination.
+.LP
+The effect is first to fill a
+destination rectangle with the background pixel defined in the GC and then
+to paint the text with the foreground pixel.
+The upper-left corner of the filled rectangle is at:
+.LP
+.Ds
+[x, y \- font-ascent]
+.De
+.LP
+The width is:
+.LP
+.Ds
+overall-width
+.De
+.LP
+The height is:
+.LP
+.Ds
+font-ascent + font-descent
+.De
+.LP
+The overall-width, font-ascent, and font-descent
+are as would be returned by
+.PN XQueryTextExtents
+using gc and string.
+The function and fill-style defined in the GC are ignored for these functions.
+The effective function is
+.PN GXcopy ,
+and the effective fill-style is
+.PN FillSolid .
+.LP
+For fonts defined with 2-byte matrix indexing
+and used with
+.PN XDrawImageString ,
+each byte is used as a byte2 with a byte1 of zero.
+.LP
+Both functions use these GC components:
+plane-mask, foreground, background, font, subwindow-mode, clip-x-origin,
+clip-y-origin, and clip-mask.
+.LP
+.PN XDrawImageString
+and
+.PN XDrawImageString16
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadMatch
+errors.
+.LP
+.NH 2
+Transferring Images between Client and Server
+.XS
+\*(SN Transferring Images between Client and Server
+.XE
+.LP
+Xlib provides functions that you can use to transfer images between a client
+and the server.
+Because the server may require diverse data formats,
+Xlib provides an image object that fully describes the data in memory
+and that provides for basic operations on that data.
+You should reference the data
+through the image object rather than referencing the data directly.
+However, some implementations of the Xlib library may efficiently deal with
+frequently used data formats by replacing
+functions in the procedure vector with special case functions.
+Supported operations include destroying the image, getting a pixel,
+storing a pixel, extracting a subimage of an image, and adding a constant
+to an image (see section 16.8).
+.LP
+All the image manipulation functions discussed in this section make use of
+the
+.PN XImage
+structure,
+which describes an image as it exists in the client's memory.
+.LP
+.IN "XImage" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 1i 3i
+.ta .5i 1i 3i
+typedef struct _XImage {
+ int width, height; /* size of image */
+ int xoffset; /* number of pixels offset in X direction */
+ int format; /* XYBitmap, XYPixmap, ZPixmap */
+ char *data; /* pointer to image data */
+ int byte_order; /* data byte order, LSBFirst, MSBFirst */
+ int bitmap_unit; /* quant. of scanline 8, 16, 32 */
+ int bitmap_bit_order; /* LSBFirst, MSBFirst */
+ int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */
+ int depth; /* depth of image */
+ int bytes_per_line; /* accelerator to next scanline */
+ int bits_per_pixel; /* bits per pixel (ZPixmap) */
+ unsigned long red_mask; /* bits in z arrangement */
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ XPointer obdata; /* hook for the object routines to hang on */
+ struct funcs { /* image manipulation routines */
+ struct _XImage *(*create_image)();
+ int (*destroy_image)();
+ unsigned long (*get_pixel)();
+ int (*put_pixel)();
+ struct _XImage *(*sub_image)();
+ int (*add_pixel)();
+ } f;
+} XImage;
+.De
+.LP
+.eM
+.sp
+To initialize the image manipulation routines of an image structure, use
+.PN XInitImage .
+.IN "XInitImage" "" "@DEF@"
+.sM
+.FD 0
+Status XInitImage\^(\^\fIimage\fP\^)
+.br
+ XImage *\fIimage\fP\^;
+.FN
+.IP \fIximage\fP 1i
+Specifies the image.
+.LP
+.eM
+The
+.PN XInitImage
+function initializes the internal image manipulation routines of an
+image structure, based on the values of the various structure members.
+All fields other than the manipulation routines must already be initialized.
+If the bytes_per_line member is zero,
+.PN XInitImage
+will assume the image data is contiguous in memory and set the
+bytes_per_line member to an appropriate value based on the other
+members; otherwise, the value of bytes_per_line is not changed.
+All of the manipulation routines are initialized to functions
+that other Xlib image manipulation functions need to operate on the
+type of image specified by the rest of the structure.
+.LP
+This function must be called for any image constructed by the client
+before passing it to any other Xlib function.
+Image structures created or returned by Xlib do not need to be
+initialized in this fashion.
+.LP
+This function returns a nonzero status if initialization of the
+structure is successful. It returns zero if it detected some error
+or inconsistency in the structure, in which case the image is not changed.
+.LP
+.sp
+To combine an image with a rectangle of a drawable on the display,
+use
+.PN XPutImage .
+.IN "XPutImage" "" "@DEF@"
+.sM
+.FD 0
+XPutImage\^(\^\fIdisplay\fP, \fId\fP\^, \fIgc\fP\^, \fIimage\fP\^, \fIsrc_x\fP, \fIsrc_y\fP, \fIdest_x\fP\^, \fIdest_y\fP\^, \fIwidth\fP\^, \fIheight\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ XImage *\fIimage\fP\^;
+.br
+ int \fIsrc_x\fP\^, \fIsrc_y\fP\^;
+.br
+ int \fIdest_x\fP\^, \fIdest_y\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIimage\fP 1i
+Specifies the image you want combined with the rectangle.
+.IP \fIsrc_x\fP 1i
+Specifies the offset in X from the left edge of the image defined
+by the
+.PN XImage
+structure.
+.IP \fIsrc_y\fP 1i
+Specifies the offset in Y from the top edge of the image defined
+by the
+.PN XImage
+structure.
+.ds Dx , which are relative to the origin of the drawable \
+and are the coordinates of the subimage
+.IP \fIdest_x\fP 1i
+.br
+.ns
+.IP \fIdest_y\fP 1i
+Specify the x and y coordinates\*(Dx.
+.ds Wh \ of the subimage, which define the dimensions of the rectangle
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.LP
+.eM
+The
+.PN XPutImage
+function
+combines an image with a rectangle of the specified drawable.
+The section of the image defined by the src_x, src_y, width, and height
+arguments is drawn on the specified part of the drawable.
+If
+.PN XYBitmap
+format is used, the depth of the image must be one,
+or a
+.PN BadMatch
+error results.
+The foreground pixel in the GC defines the source for the one bits in the image,
+and the background pixel defines the source for the zero bits.
+For
+.PN XYPixmap
+and
+.PN ZPixmap ,
+the depth of the image must match the depth of the drawable,
+or a
+.PN BadMatch
+error results.
+.LP
+If the characteristics of the image (for example, byte_order and bitmap_unit)
+differ from what the server requires,
+.PN XPutImage
+automatically makes the appropriate
+conversions.
+.LP
+This function uses these GC components:
+function, plane-mask, subwindow-mode, clip-x-origin, clip-y-origin,
+and clip-mask.
+It also uses these GC mode-dependent components:
+foreground and background.
+.LP
+.PN XPutImage
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To return the contents of a rectangle in a given drawable on the display,
+use
+.PN XGetImage .
+This function specifically supports rudimentary screen dumps.
+.IN "XGetImage" "" "@DEF@"
+.sM
+.FD 0
+XImage *XGetImage\^(\^\fIdisplay\fP, \fId\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIplane_mask\fP, \fIformat\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ unsigned long \fIplane_mask\fP\^;
+.br
+ int \fIformat\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.ds Xy , which are relative to the origin of the drawable \
+and define the upper-left corner of the rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh \ of the subimage, which define the dimensions of the rectangle
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.IP \fIplane_mask\fP 1i
+Specifies the plane mask.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.IP \fIformat\fP 1i
+Specifies the format for the image.
+You can pass
+.PN XYPixmap
+or
+.PN ZPixmap .
+.LP
+.eM
+The
+.PN XGetImage
+function returns a pointer to an
+.PN XImage
+structure.
+This structure provides you with the contents of the specified rectangle of
+the drawable in the format you specify.
+If the format argument is
+.PN XYPixmap ,
+the image contains only the bit planes you passed to the plane_mask argument.
+If the plane_mask argument only requests a subset of the planes of the
+display, the depth of the returned image will be the number of planes
+requested.
+If the format argument is
+.PN ZPixmap ,
+.PN XGetImage
+returns as zero the bits in all planes not
+specified in the plane_mask argument.
+The function performs no range checking on the values in plane_mask and ignores
+extraneous bits.
+.LP
+.PN XGetImage
+returns the depth of the image to the depth member of the
+.PN XImage
+structure.
+The depth of the image is as specified when the drawable was created,
+except when getting a subset of the planes in
+.PN XYPixmap
+format, when the depth is given by the number of bits set to 1 in plane_mask.
+.LP
+If the drawable is a pixmap,
+the given rectangle must be wholly contained within the pixmap,
+or a
+.PN BadMatch
+error results.
+If the drawable is a window,
+the window must be viewable,
+and it must be the case that if there were no inferiors or overlapping windows,
+the specified rectangle of the window would be fully visible on the screen
+and wholly contained within the outside edges of the window,
+or a
+.PN BadMatch
+error results.
+Note that the borders of the window can be included and read with
+this request.
+If the window has backing-store, the backing-store contents are
+returned for regions of the window that are obscured by noninferior
+windows.
+If the window does not have backing-store,
+the returned contents of such obscured regions are undefined.
+The returned contents of visible regions of inferiors
+of a different depth than the specified window's depth are also undefined.
+The pointer cursor image is not included in the returned contents.
+If a problem occurs,
+.PN XGetImage
+returns NULL.
+.LP
+.PN XGetImage
+can generate
+.PN BadDrawable ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.sp
+.LP
+To copy the contents of a rectangle on the display
+to a location within a preexisting image structure, use
+.PN XGetSubImage .
+.IN "XGetSubImage" "" "@DEF@"
+.sM
+.FD 0
+XImage *XGetSubImage\^(\^\fIdisplay\fP, \fId\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIplane_mask\fP, \fIformat\fP\^, \fIdest_image\fP\^, \fIdest_x\fP\^,
+.br
+ \fIdest_y\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.br
+ unsigned long \fIplane_mask\fP\^;
+.br
+ int \fIformat\fP\^;
+.br
+ XImage *\fIdest_image\fP\^;
+.br
+ int \fIdest_x\fP\^, \fIdest_y\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.ds Xy , which are relative to the origin of the drawable \
+and define the upper-left corner of the rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh \ of the subimage, which define the dimensions of the rectangle
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.IP \fIplane_mask\fP 1i
+Specifies the plane mask.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.IP \fIformat\fP 1i
+Specifies the format for the image.
+You can pass
+.PN XYPixmap
+or
+.PN ZPixmap .
+.IP \fIdest_image\fP 1i
+Specifies the destination image.
+.ds Dx , which are relative to the origin of the destination rectangle, \
+specify its upper-left corner, and determine where the subimage \
+is placed in the destination image
+.IP \fIdest_x\fP 1i
+.br
+.ns
+.IP \fIdest_y\fP 1i
+Specify the x and y coordinates\*(Dx.
+.LP
+.eM
+The
+.PN XGetSubImage
+function updates dest_image with the specified subimage in the same manner as
+.PN XGetImage .
+If the format argument is
+.PN XYPixmap ,
+the image contains only the bit planes you passed to the plane_mask argument.
+If the format argument is
+.PN ZPixmap ,
+.PN XGetSubImage
+returns as zero the bits in all planes not
+specified in the plane_mask argument.
+The function performs no range checking on the values in plane_mask and ignores
+extraneous bits.
+As a convenience,
+.PN XGetSubImage
+returns a pointer to the same
+.PN XImage
+structure specified by dest_image.
+.LP
+The depth of the destination
+.PN XImage
+structure must be the same as that of the drawable.
+If the specified subimage does not fit at the specified location
+on the destination image, the right and bottom edges are clipped.
+If the drawable is a pixmap,
+the given rectangle must be wholly contained within the pixmap,
+or a
+.PN BadMatch
+error results.
+If the drawable is a window,
+the window must be viewable,
+and it must be the case that if there were no inferiors or overlapping windows,
+the specified rectangle of the window would be fully visible on the screen
+and wholly contained within the outside edges of the window,
+or a
+.PN BadMatch
+error results.
+If the window has backing-store,
+then the backing-store contents are returned for regions of the window
+that are obscured by noninferior windows.
+If the window does not have backing-store,
+the returned contents of such obscured regions are undefined.
+The returned contents of visible regions of inferiors
+of a different depth than the specified window's depth are also undefined.
+If a problem occurs,
+.PN XGetSubImage
+returns NULL.
+.LP
+.PN XGetSubImage
+can generate
+.PN BadDrawable ,
+.PN BadGC ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.bp
diff --git a/specs/X11/CH09 b/specs/X11/CH09
new file mode 100644
index 0000000..2dd5c5a
--- /dev/null
+++ b/specs/X11/CH09
@@ -0,0 +1,1260 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 9\fP\s-1
+
+\s+1\fBWindow and Session Manager Functions\fP\s-1
+.sp 2
+.nr H1 9
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 9: Window and Session Manager Functions
+.XE
+Although it is difficult to categorize functions as exclusively
+for an application, a window manager, or a session manager,
+the functions in this chapter are most often used by window managers
+and session managers.
+It is not expected that these functions will be used by most
+application programs.
+Xlib provides management functions to:
+.IP \(bu 5
+Change the parent of a window
+.IP \(bu 5
+Control the lifetime of a window
+.IP \(bu 5
+Manage installed colormaps
+.IP \(bu 5
+Set and retrieve the font search path
+.IP \(bu 5
+Grab the server
+.IP \(bu 5
+Kill a client
+.IP \(bu 5
+Control the screen saver
+.IP \(bu 5
+Control host access
+.NH 2
+Changing the Parent of a Window
+.XS
+\*(SN Changing the Parent of a Window
+.XE
+.LP
+To change a window's parent to another window on the same screen, use
+.PN XReparentWindow .
+There is no way to move a window between screens.
+.IN "XReparentWindow" "" "@DEF@"
+.sM
+.FD 0
+XReparentWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIparent\fP\^, \fIx\fP\^, \fIy\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Window \fIparent\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIparent\fP 1i
+Specifies the parent window.
+.ds Xy \ of the position in the new parent window
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.LP
+.eM
+If the specified window is mapped,
+.PN XReparentWindow
+automatically performs an
+.PN UnmapWindow
+request on it, removes it from its current position in the hierarchy,
+and inserts it as the child of the specified parent.
+The window is placed in the stacking order on top with respect to
+sibling windows.
+.LP
+After reparenting the specified window,
+.PN XReparentWindow
+causes the X server to generate a
+.PN ReparentNotify
+event.
+The override_redirect member returned in this event is
+set to the window's corresponding attribute.
+Window manager clients usually should ignore this window if this member
+is set to
+.PN True .
+Finally, if the specified window was originally mapped,
+the X server automatically performs a
+.PN MapWindow
+request on it.
+.LP
+The X server performs normal exposure processing on formerly obscured
+windows.
+The X server might not generate
+.PN Expose
+events for regions from the initial
+.PN UnmapWindow
+request that are immediately obscured by the final
+.PN MapWindow
+request.
+A
+.PN BadMatch
+error results if:
+.IP \(bu 5
+The new parent window is not on the same screen as
+the old parent window.
+.IP \(bu 5
+The new parent window is the specified window or an inferior of the
+specified window.
+.IP \(bu 5
+The new parent is
+.PN InputOnly ,
+and the window is not.
+.IP \(bu 5
+The specified window has a
+.PN ParentRelative
+background, and the new parent window is not the same depth as the
+specified window.
+.LP
+.PN XReparentWindow
+can generate
+.PN BadMatch
+and
+.PN BadWindow
+errors.
+.NH 2
+Controlling the Lifetime of a Window
+.XS
+\*(SN Controlling the Lifetime of a Window
+.XE
+.LP
+The save-set of a client is a list of other clients' windows that,
+if they are inferiors of one of the client's windows at connection close,
+should not be destroyed and should be remapped if they are unmapped.
+For further information about close-connection processing,
+see section 2.6.
+To allow an application's window to survive when a window manager that
+has reparented a window fails,
+Xlib provides the save-set functions that you can
+use to control the longevity of subwindows
+that are normally destroyed when the parent is destroyed.
+For example, a window manager that wants to add decoration
+to a window by adding a frame might reparent an application's
+window.
+When the frame is destroyed,
+the application's window should not be destroyed
+but be returned to its previous place in the window hierarchy.
+.LP
+The X server automatically removes windows from the save-set
+when they are destroyed.
+.LP
+.sp
+To add or remove a window from the client's save-set, use
+.PN XChangeSaveSet .
+.IN "XChangeSaveSet" "" "@DEF@"
+.sM
+.FD 0
+XChangeSaveSet\^(\^\fIdisplay\fP, \fIw\fP\^, \fIchange_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIchange_mode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi that you want to add to or delete from the client's save-set
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIchange_mode\fP 1i
+Specifies the mode.
+You can pass
+.PN SetModeInsert
+or
+.PN SetModeDelete .
+.LP
+.eM
+Depending on the specified mode,
+.PN XChangeSaveSet
+either inserts or deletes the specified window from the client's save-set.
+The specified window must have been created by some other client,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XChangeSaveSet
+can generate
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To add a window to the client's save-set, use
+.PN XAddToSaveSet .
+.IN "XAddToSaveSet" "" "@DEF@"
+.sM
+.FD 0
+XAddToSaveSet\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi that you want to add to the client's save-set
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.LP
+.eM
+The
+.PN XAddToSaveSet
+function adds the specified window to the client's save-set.
+The specified window must have been created by some other client,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XAddToSaveSet
+can generate
+.PN BadMatch
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To remove a window from the client's save-set, use
+.PN XRemoveFromSaveSet .
+.IN "XRemoveFromSaveSet" "" "@DEF@"
+.sM
+.FD 0
+XRemoveFromSaveSet\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi that you want to delete from the client's save-set
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.LP
+.eM
+The
+.PN XRemoveFromSaveSet
+function removes the specified window from the client's save-set.
+The specified window must have been created by some other client,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XRemoveFromSaveSet
+can generate
+.PN BadMatch
+and
+.PN BadWindow
+errors.
+.NH 2
+Managing Installed Colormaps
+.XS
+\*(SN Managing Installed Colormaps
+.XE
+.LP
+The X server maintains a list of installed colormaps.
+Windows using these colormaps are guaranteed to display with
+correct colors; windows using other colormaps may or may not display
+with correct colors.
+Xlib provides functions that you can use to install a colormap,
+uninstall a colormap, and obtain a list of installed colormaps.
+.LP
+At any time,
+there is a subset of the installed maps that is viewed as an ordered list
+and is called the required list.
+The length of the required list is at most M,
+where M is the minimum number of installed colormaps specified for the screen
+in the connection setup.
+The required list is maintained as follows.
+When a colormap is specified to
+.PN XInstallColormap ,
+it is added to the head of the list;
+the list is truncated at the tail, if necessary, to keep its length to
+at most M.
+When a colormap is specified to
+.PN XUninstallColormap
+and it is in the required list,
+it is removed from the list.
+A colormap is not added to the required list when it is implicitly installed
+by the X server,
+and the X server cannot implicitly uninstall a colormap that is in the
+required list.
+.LP
+.sp
+To install a colormap, use
+.PN XInstallColormap .
+.IN "XInstallColormap" "" "@DEF@"
+.sM
+.FD 0
+XInstallColormap\^(\^\fIdisplay\fP, \fIcolormap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.LP
+.eM
+The
+.PN XInstallColormap
+function installs the specified colormap for its associated screen.
+All windows associated with this colormap immediately display with
+true colors.
+You associated the windows with this colormap when you created them by calling
+.PN XCreateWindow ,
+.PN XCreateSimpleWindow ,
+.PN XChangeWindowAttributes ,
+or
+.PN XSetWindowColormap .
+.LP
+If the specified colormap is not already an installed colormap,
+the X server generates a
+.PN ColormapNotify
+event on each window that has that colormap.
+In addition, for every other colormap that is installed as
+a result of a call to
+.PN XInstallColormap ,
+the X server generates a
+.PN ColormapNotify
+event on each window that has that colormap.
+.LP
+.PN XInstallColormap
+can generate a
+.PN BadColor
+error.
+.LP
+.sp
+To uninstall a colormap, use
+.PN XUninstallColormap .
+.IN "XUninstallColormap" "" "@DEF@"
+.sM
+.FD 0
+XUninstallColormap\^(\^\fIdisplay\fP, \fIcolormap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Colormap \fIcolormap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.LP
+.eM
+The
+.PN XUninstallColormap
+function removes the specified colormap from the required
+list for its screen.
+As a result,
+the specified colormap might be uninstalled,
+and the X server might implicitly install or uninstall additional colormaps.
+Which colormaps get installed or uninstalled is server dependent
+except that the required list must remain installed.
+.LP
+If the specified colormap becomes uninstalled,
+the X server generates a
+.PN ColormapNotify
+event on each window that has that colormap.
+In addition, for every other colormap that is installed or uninstalled as a
+result of a call to
+.PN XUninstallColormap ,
+the X server generates a
+.PN ColormapNotify
+event on each window that has that colormap.
+.LP
+.PN XUninstallColormap
+can generate a
+.PN BadColor
+error.
+.LP
+.sp
+To obtain a list of the currently installed colormaps for a given screen, use
+.PN XListInstalledColormaps .
+.IN "XListInstalledColormaps" "" "@DEF@"
+.sM
+.FD 0
+Colormap *XListInstalledColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fInum_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int *\fInum_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi that determines the screen
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fInum_return\fP 1i
+Returns the number of currently installed colormaps.
+.LP
+.eM
+The
+.PN XListInstalledColormaps
+function returns a list of the currently installed colormaps for the screen
+of the specified window.
+The order of the colormaps in the list is not significant
+and is no explicit indication of the required list.
+When the allocated list is no longer needed,
+free it by using
+.PN XFree .
+.LP
+.PN XListInstalledColormaps
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Setting and Retrieving the Font Search Path
+.XS
+\*(SN Setting and Retrieving the Font Search Path
+.XE
+.LP
+The set of fonts available from a server depends on a font
+search path. Xlib provides functions to set and retrieve the
+search path for a server.
+.LP
+.sp
+To set the font search path, use
+.PN XSetFontPath .
+.IN "XSetFontPath" "" "@DEF@"
+.sM
+.FD 0
+XSetFontPath\^(\^\fIdisplay\fP, \fIdirectories\fP\^, \fIndirs\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char **\fIdirectories\fP\^;
+.br
+ int \fIndirs\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdirectories\fP 1i
+Specifies the directory path used to look for a font.
+Setting the path to the empty list restores the default path defined
+for the X server.
+.IP \fIndirs\fP 1i
+Specifies the number of directories in the path.
+.LP
+.eM
+The
+.PN XSetFontPath
+function defines the directory search path for font lookup.
+There is only one search path per X server, not one per client.
+The encoding and interpretation of the strings are implementation-dependent,
+but typically they specify directories or font servers to be searched
+in the order listed.
+An X server is permitted to cache font information internally;
+for example, it might cache an entire font from a file and not
+check on subsequent opens of that font to see if the underlying
+font file has changed.
+However,
+when the font path is changed,
+the X server is guaranteed to flush all cached information about fonts
+for which there currently are no explicit resource IDs allocated.
+The meaning of an error from this request is implementation-dependent.
+.LP
+.PN XSetFontPath
+can generate a
+.PN BadValue
+error.
+.LP
+.sp
+To get the current font search path, use
+.PN XGetFontPath .
+.IN "XGetFontPath" "" "@DEF@"
+.sM
+.FD 0
+char **XGetFontPath\^(\^\fIdisplay\fP, \fInpaths_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fInpaths_return\fP\^;
+
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInpaths_return\fP 1i
+Returns the number of strings in the font path array.
+.LP
+.eM
+The
+.PN XGetFontPath
+function allocates and returns an array of strings containing the search path.
+The contents of these strings are implementation-dependent
+and are not intended to be interpreted by client applications.
+When it is no longer needed,
+the data in the font path should be freed by using
+.PN XFreeFontPath .
+.LP
+.sp
+To free data returned by
+.PN XGetFontPath ,
+use
+.PN XFreeFontPath .
+.IN "XFreeFontPath" "" "@DEF@"
+.sM
+.FD 0
+XFreeFontPath\^(\^\fIlist\fP\^)
+.br
+ char **\fIlist\fP\^;
+
+.FN
+.IP \fIlist\fP 1i
+Specifies the array of strings you want to free.
+.LP
+.eM
+The
+.PN XFreeFontPath
+function
+frees the data allocated by
+.PN XGetFontPath .
+.NH 2
+Grabbing the Server
+.XS
+\*(SN Grabbing the Server
+.XE
+.LP
+Xlib provides functions that you can use to grab and ungrab the server.
+These functions can be used to control processing of output on other
+connections by the window system server.
+While the server is grabbed,
+no processing of requests or close downs on any other connection will occur.
+A client closing its connection automatically ungrabs the server.
+.IN "Menus"
+.IN "Window" "managers"
+Although grabbing the server is highly discouraged, it is sometimes necessary.
+.LP
+.sp
+To grab the server, use
+.PN XGrabServer .
+.IN "Server" "grabbing"
+.IN "Grabbing" "server"
+.IN "XGrabServer" "" "@DEF@"
+.sM
+.FD 0
+XGrabServer\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XGrabServer
+function disables processing of requests and close downs on all other
+connections than the one this request arrived on.
+You should not grab the X server any more than is absolutely necessary.
+.LP
+.sp
+To ungrab the server, use
+.PN XUngrabServer .
+.IN "XUngrabServer" "" "@DEF@"
+.sM
+.FD 0
+XUngrabServer\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XUngrabServer
+function restarts processing of requests and close downs on other connections.
+You should avoid grabbing the X server as much as possible.
+.NH 2
+Killing Clients
+.XS
+\*(SN Killing Clients
+.XE
+.LP
+Xlib provides a function to cause the connection to
+a client to be closed and its resources to be destroyed.
+To destroy a client, use
+.PN XKillClient .
+.IN "XKillClient" "" "@DEF@"
+.sM
+.FD 0
+XKillClient\^(\^\fIdisplay\fP, \fIresource\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIresource\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIresource\fP 1i
+Specifies any resource associated with the client that you want to destroy or
+.PN AllTemporary .
+.LP
+.eM
+The
+.PN XKillClient
+function
+forces a close down of the client
+that created the resource
+if a valid resource is specified.
+If the client has already terminated in
+either
+.PN RetainPermanent
+or
+.PN RetainTemporary
+mode, all of the client's
+resources are destroyed.
+If
+.PN AllTemporary
+is specified, the resources of all clients that have terminated in
+.PN RetainTemporary
+are destroyed (see section 2.5).
+This permits implementation of window manager facilities that aid debugging.
+A client can set its close-down mode to
+.PN RetainTemporary .
+If the client then crashes,
+its windows would not be destroyed.
+The programmer can then inspect the application's window tree
+and use the window manager to destroy the zombie windows.
+.LP
+.PN XKillClient
+can generate a
+.PN BadValue
+error.
+.NH 2
+Controlling the Screen Saver
+.XS
+\*(SN Controlling the Screen Saver
+.XE
+.LP
+Xlib provides functions that you can use to set or reset the mode
+of the screen saver, to force or activate the screen saver,
+or to obtain the current screen saver values.
+.LP
+.sp
+To set the screen saver mode, use
+.PN XSetScreenSaver .
+.IN "XSetScreenSaver" "" "@DEF@"
+.sM
+.FD 0
+XSetScreenSaver\^(\^\fIdisplay\fP, \fItimeout\fP\^, \fIinterval\fP\^, \fIprefer_blanking\fP\^, \fIallow_exposures\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fItimeout\fP\^, \fIinterval\fP\^;
+.br
+ int \fIprefer_blanking\fP\^;
+.br
+ int \fIallow_exposures\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItimeout\fP 1i
+Specifies the timeout, in seconds, until the screen saver turns on.
+.IP \fIinterval\fP 1i
+Specifies the interval, in seconds, between screen saver alterations.
+.IP \fIprefer_blanking\fP 1i
+Specifies how to enable screen blanking.
+You can pass
+.PN DontPreferBlanking ,
+.PN PreferBlanking ,
+or
+.PN DefaultBlanking .
+.IP \fIallow_exposures\fP 1i
+Specifies the screen save control values.
+You can pass
+.PN DontAllowExposures ,
+.PN AllowExposures ,
+or
+.PN DefaultExposures .
+.LP
+.eM
+Timeout and interval are specified in seconds.
+A timeout of 0 disables the screen saver
+(but an activated screen saver is not deactivated),
+and a timeout of \-1 restores the default.
+Other negative values generate a
+.PN BadValue
+error.
+If the timeout value is nonzero,
+.PN XSetScreenSaver
+enables the screen saver.
+An interval of 0 disables the random-pattern motion.
+If no input from devices (keyboard, mouse, and so on) is generated
+for the specified number of timeout seconds once the screen saver is enabled,
+the screen saver is activated.
+.LP
+For each screen,
+if blanking is preferred and the hardware supports video blanking,
+the screen simply goes blank.
+Otherwise, if either exposures are allowed or the screen can be regenerated
+without sending
+.PN Expose
+events to clients,
+the screen is tiled with the root window background tile randomly
+re-origined each interval seconds.
+Otherwise, the screens' state do not change,
+and the screen saver is not activated.
+The screen saver is deactivated,
+and all screen states are restored at the next
+keyboard or pointer input or at the next call to
+.PN XForceScreenSaver
+with mode
+.PN ScreenSaverReset .
+.LP
+If the server-dependent screen saver method supports periodic change,
+the interval argument serves as a hint about how long the change period
+should be, and zero hints that no periodic change should be made.
+Examples of ways to change the screen include scrambling the colormap
+periodically, moving an icon image around the screen periodically, or tiling
+the screen with the root window background tile, randomly re-origined
+periodically.
+.LP
+.PN XSetScreenSaver
+can generate a
+.PN BadValue
+error.
+.LP
+.sp
+To force the screen saver on or off, use
+.PN XForceScreenSaver .
+.IN "XForceScreenSaver" "" "@DEF@"
+.sM
+.FD 0
+XForceScreenSaver\^(\^\fIdisplay\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImode\fP 1i
+Specifies the mode that is to be applied.
+You can pass
+.PN ScreenSaverActive
+or
+.PN ScreenSaverReset .
+.LP
+.eM
+If the specified mode is
+.PN ScreenSaverActive
+and the screen saver currently is deactivated,
+.PN XForceScreenSaver
+activates the screen saver even if the screen saver had been disabled
+with a timeout of zero.
+If the specified mode is
+.PN ScreenSaverReset
+and the screen saver currently is enabled,
+.PN XForceScreenSaver
+deactivates the screen saver if it was activated,
+and the activation timer is reset to its initial state
+(as if device input had been received).
+.LP
+.PN XForceScreenSaver
+can generate a
+.PN BadValue
+error.
+.LP
+.sp
+To activate the screen saver, use
+.PN XActivateScreenSaver .
+.IN "XActivateScreenSaver" "" "@DEF@"
+.sM
+.FD 0
+XActivateScreenSaver\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.sp
+To reset the screen saver, use
+.PN XResetScreenSaver .
+.IN "XResetScreenSaver" "" "@DEF@"
+.sM
+.FD 0
+XResetScreenSaver\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+.sp
+To get the current screen saver values, use
+.PN XGetScreenSaver .
+.IN "XGetScreenSaver" "" "@DEF@"
+.sM
+.FD 0
+XGetScreenSaver\^(\^\fIdisplay\fP, \fItimeout_return\fP\^, \fIinterval_return\fP\^, \fIprefer_blanking_return\fP\^,
+.br
+ \fIallow_exposures_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fItimeout_return\fP\^, *\fIinterval_return\fP\^;
+.br
+ int *\fIprefer_blanking_return\fP\^;
+.br
+ int *\fIallow_exposures_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItimeout_return\fP 1i
+Returns the timeout, in seconds, until the screen saver turns on.
+.IP \fIinterval_return\fP 1i
+Returns the interval between screen saver invocations.
+.IP \fIprefer_blanking_return\fP 1i
+Returns the current screen blanking preference
+.Pn ( DontPreferBlanking ,
+.PN PreferBlanking ,
+or
+.PN DefaultBlanking ).
+.IP \fIallow_exposures_return\fP 1i
+Returns the current screen save control value
+.Pn ( DontAllowExposures ,
+.PN AllowExposures ,
+or
+.PN DefaultExposures ).
+.LP
+.eM
+.NH 2
+Controlling Host Access
+.XS
+\*(SN Controlling Host Access
+.XE
+.LP
+This section discusses how to:
+.IP \(bu 5
+Add, get, or remove hosts from the access control list
+.IP \(bu 5
+Change, enable, or disable access
+.LP
+.IN "Access control list"
+.IN "Authentication"
+X does not provide any protection on a per-window basis.
+If you find out the resource ID of a resource, you can manipulate it.
+To provide some minimal level of protection, however,
+connections are permitted only from machines you trust.
+This is adequate on single-user workstations but obviously
+breaks down on timesharing machines.
+Although provisions exist in the X protocol for proper connection
+authentication, the lack of a standard authentication server
+leaves host-level access control as the only common mechanism.
+.LP
+.IN "Default Protection"
+The initial set of hosts allowed to open connections typically consists of:
+.IP \(bu 5
+The host the window system is running on.
+.IP \(bu 5
+On POSIX-conformant systems, each host listed in the
+.PN /etc/X?.hosts
+file.
+The ? indicates the number of the
+display.
+.IN "Files" "/etc/X?.hosts"
+This file should consist of host names separated by newlines.
+DECnet nodes must terminate in :: to distinguish them from Internet hosts.
+.LP
+If a host is not in the access control list when the access control
+mechanism is enabled and if the host attempts to establish a connection,
+the server refuses the connection.
+To change the access list,
+the client must reside on the same host as the server and/or must
+have been granted permission in the initial authorization at connection
+setup.
+.LP
+Servers also can implement other access control policies in addition to
+or in place of this host access facility.
+For further information about other access control implementations,
+see ``X Window System Protocol.''
+.NH 3
+Adding, Getting, or Removing Hosts
+.XS
+\*(SN Adding, Getting, or Removing Hosts
+.XE
+.LP
+Xlib provides functions that you can use to add, get, or remove hosts
+from the access control list.
+All the host access control functions use the
+.PN XHostAddress
+structure, which contains:
+.LP
+.IN "XHostAddress" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int family; /* for example FamilyInternet */
+ int length; /* length of address, in bytes */
+ char *address; /* pointer to where to find the address */
+} XHostAddress;
+.De
+.LP
+.eM
+The family member specifies which protocol address family to use
+(for example, TCP/IP or DECnet) and can be
+.PN FamilyInternet ,
+.PN FamilyDECnet ,
+or
+.PN FamilyChaos .
+The length member specifies the length of the address in bytes.
+The address member specifies a pointer to the address.
+.LP
+For TCP/IP, the address should be in network byte order.
+For the DECnet family,
+the server performs no automatic swapping on the address bytes.
+A Phase IV address is 2 bytes long.
+The first byte contains the least significant 8 bits of the node number.
+The second byte contains the most significant 2 bits of the
+node number in the least significant 2 bits of the byte
+and the area in the most significant 6 bits of the byte.
+.LP
+.sp
+To add a single host, use
+.PN XAddHost .
+.IN "XAddHost" "" "@DEF@"
+.sM
+.FD 0
+XAddHost\^(\^\fIdisplay\fP, \fIhost\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XHostAddress *\fIhost\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Ho added
+.IP \fIhost\fP 1i
+Specifies the host that is to be \*(Ho.
+.LP
+.eM
+The
+.PN XAddHost
+function adds the specified host to the access control list for that display.
+The server must be on the same host as the client issuing the command, or a
+.PN BadAccess
+error results.
+.LP
+.PN XAddHost
+can generate
+.PN BadAccess
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To add multiple hosts at one time, use
+.PN XAddHosts .
+.IN "XAddHosts" "" "@DEF@"
+.sM
+.FD 0
+XAddHosts\^(\^\fIdisplay\fP, \fIhosts\fP, \fInum_hosts\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XHostAddress *\fIhosts\fP\^;
+.br
+ int \fInum_hosts\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Ho added
+.IP \fIhosts\fP 1i
+Specifies each host that is to be \*(Ho.
+.IP \fInum_hosts\fP 1i
+Specifies the number of hosts.
+.LP
+.eM
+The
+.PN XAddHosts
+function adds each specified host to the access control list for that display.
+The server must be on the same host as the client issuing the command, or a
+.PN BadAccess
+error results.
+.LP
+.PN XAddHosts
+can generate
+.PN BadAccess
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To obtain a host list, use
+.PN XListHosts .
+.IN "XListHosts" "" "@DEF@"
+.sM
+.FD 0
+XHostAddress *XListHosts\^(\^\fIdisplay\fP, \fInhosts_return\fP, \fIstate_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fInhosts_return\fP\^;
+.br
+ Bool *\fIstate_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInhosts_return\fP 1i
+Returns the number of hosts currently in the access control list.
+.IP \fIstate_return\fP 1i
+Returns the state of the access control.
+.LP
+.eM
+The
+.PN XListHosts
+function returns the current access control list as well as whether the use
+of the list at connection setup was enabled or disabled.
+.PN XListHosts
+allows a program to find out what machines can make connections.
+It also returns a pointer to a list of host structures that
+were allocated by the function.
+When no longer needed,
+this memory should be freed by calling
+.PN XFree .
+.LP
+.sp
+To remove a single host, use
+.PN XRemoveHost .
+.IN "XRemoveHost" "" "@DEF@"
+.sM
+.FD 0
+XRemoveHost\^(\^\fIdisplay\fP, \fIhost\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XHostAddress *\fIhost\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Ho removed
+.IP \fIhost\fP 1i
+Specifies the host that is to be \*(Ho.
+.LP
+.eM
+The
+.PN XRemoveHost
+function removes the specified host from the access control list
+for that display.
+The server must be on the same host as the client process, or a
+.PN BadAccess
+error results.
+If you remove your machine from the access list,
+you can no longer connect to that server,
+and this operation cannot be reversed unless you reset the server.
+.LP
+.PN XRemoveHost
+can generate
+.PN BadAccess
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To remove multiple hosts at one time, use
+.PN XRemoveHosts .
+.IN "XRemoveHosts" "" "@DEF@"
+.sM
+.FD 0
+XRemoveHosts\^(\^\fIdisplay\fP, \fIhosts\fP, \fInum_hosts\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XHostAddress *\fIhosts\fP\^;
+.br
+ int \fInum_hosts\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Ho removed
+.IP \fIhosts\fP 1i
+Specifies each host that is to be \*(Ho.
+.IP \fInum_hosts\fP 1i
+Specifies the number of hosts.
+.LP
+.eM
+The
+.PN XRemoveHosts
+function removes each specified host from the access control list for that
+display.
+The X server must be on the same host as the client process, or a
+.PN BadAccess
+error results.
+If you remove your machine from the access list,
+you can no longer connect to that server,
+and this operation cannot be reversed unless you reset the server.
+.LP
+.PN XRemoveHosts
+can generate
+.PN BadAccess
+and
+.PN BadValue
+errors.
+.NH 3
+Changing, Enabling, or Disabling Access Control
+.XS
+\*(SN Changing, Enabling, or Disabling Access Control
+.XE
+.LP
+Xlib provides functions that you can use to enable, disable,
+or change access control.
+.LP
+For these functions to execute successfully,
+the client application must reside on the same host as the X server
+and/or have been given permission in the initial authorization
+at connection setup.
+.LP
+.sp
+To change access control, use
+.PN XSetAccessControl .
+.IN "XSetAccessControl" "" "@DEF@"
+.sM
+.FD 0
+XSetAccessControl\^(\^\fIdisplay\fP, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImode\fP 1i
+Specifies the mode.
+You can pass
+.PN EnableAccess
+or
+.PN DisableAccess .
+.LP
+.eM
+The
+.PN XSetAccessControl
+function either enables or disables the use of the access control list
+at each connection setup.
+.LP
+.PN XSetAccessControl
+can generate
+.PN BadAccess
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To enable access control, use
+.PN XEnableAccessControl .
+.IN "XEnableAccessControl" "" "@DEF@"
+.sM
+.FD 0
+XEnableAccessControl\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XEnableAccessControl
+function enables the use of the access control list at each connection setup.
+.LP
+.PN XEnableAccessControl
+can generate a
+.PN BadAccess
+error.
+.LP
+.sp
+To disable access control, use
+.PN XDisableAccessControl .
+.IN "XDisableAccessControl" "" "@DEF@"
+.sM
+.FD 0
+XDisableAccessControl\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XDisableAccessControl
+function disables the use of the access control list at each connection setup.
+.LP
+.PN XDisableAccessControl
+can generate a
+.PN BadAccess
+error.
+.bp
diff --git a/specs/X11/CH10 b/specs/X11/CH10
new file mode 100644
index 0000000..76502fb
--- /dev/null
+++ b/specs/X11/CH10
@@ -0,0 +1,3886 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 10\fP\s-1
+
+\s+1\fBEvents\fP\s-1
+.sp 2
+.nr H1 10
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 10: Events
+.XE
+A client application communicates with the X server through the connection you
+establish with the
+.PN XOpenDisplay
+.IN "XOpenDisplay"
+function.
+A client application sends requests to the X server over this connection.
+.IN "Requests" "" "@DEF@"
+These requests are made by the Xlib functions that are
+called in the client application.
+Many Xlib functions cause the X server to generate events,
+and the user's typing or moving the pointer can generate events asynchronously.
+The X server returns events to the client on the same connection.
+.LP
+This chapter discusses the following topics associated with events:
+.IP \(bu 5
+Event types
+.IP \(bu 5
+Event structures
+.IP \(bu 5
+Event masks
+.IP \(bu 5
+Event processing
+.LP
+Functions for handling events are dealt with in the next chapter.
+.NH 2
+Event Types
+.XS
+\*(SN Event Types
+.XE
+.LP
+.IN "Event" "types"
+An event is data generated asynchronously by the X server as a result of some
+device activity or as side effects of a request sent by an Xlib function.
+.IN "Event"
+Device-related events propagate from the source window to ancestor windows
+until some client application has selected that event type
+or until the event is explicitly discarded.
+The X server generally sends an event to a client application
+only if the client has specifically asked to be informed of that event type,
+typically by setting the event-mask attribute of the window.
+The mask can also be set when you create a window
+or by changing the window's
+event-mask.
+You can also mask out events that would propagate to ancestor windows
+by manipulating the
+do-not-propagate mask of the window's attributes.
+However,
+.PN MappingNotify
+events are always sent to all clients.
+.IN "Input Control"
+.IN "Output Control"
+.LP
+An event type describes a specific event generated by the X server.
+For each event type,
+a corresponding constant name is defined in
+.hN X11/X.h ,
+which is used when referring to an event type.
+.IN "Event" "categories"
+The following table lists the event category
+and its associated event type or types.
+The processing associated with these events is discussed in section 10.5.
+.LP
+.\".CP T 1
+.\"Event Categories and Event Types
+.LP
+.TS H
+lw(2.25i) lw(3.5i).
+_
+.sp 6p
+.B
+Event Category Event Type
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+Keyboard events
+T} T{
+.PN KeyPress ,
+.PN KeyRelease
+T}
+.sp 6p
+T{
+Pointer events
+T} T{
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN MotionNotify
+T}
+.sp 6p
+T{
+Window crossing events
+T} T{
+.PN EnterNotify ,
+.PN LeaveNotify
+T}
+.sp 6p
+T{
+Input focus events
+T} T{
+.PN FocusIn ,
+.PN FocusOut
+T}
+.sp 6p
+T{
+Keymap state notification event
+T} T{
+.PN KeymapNotify
+T}
+.sp 6p
+T{
+Exposure events
+T} T{
+.PN Expose ,
+.PN GraphicsExpose ,
+.PN NoExpose
+T}
+.sp 6p
+T{
+Structure control events
+T} T{
+.PN CirculateRequest ,
+.PN ConfigureRequest ,
+.PN MapRequest ,
+.PN ResizeRequest
+T}
+.sp 6p
+T{
+Window state notification events
+T} T{
+.PN CirculateNotify ,
+.PN ConfigureNotify ,
+.PN CreateNotify ,
+.PN DestroyNotify ,
+.PN GravityNotify ,
+.PN MapNotify ,
+.PN MappingNotify ,
+.PN ReparentNotify ,
+.PN UnmapNotify ,
+.br
+.PN VisibilityNotify
+T}
+.sp 6p
+T{
+Colormap state notification event
+T} T{
+.PN ColormapNotify
+T}
+.sp 6p
+T{
+Client communication events
+T} T{
+.PN ClientMessage ,
+.PN PropertyNotify ,
+.PN SelectionClear ,
+.PN SelectionNotify ,
+.PN SelectionRequest
+T}
+.sp 6p
+_
+.TE
+.\".LP
+.\"Table 8-1 lists the event types and the Xlib functions that could cause
+.\"the X server to generate that event type.
+.\"The event types are listed alphabetically.
+.\"Note that the error event is not listed in this table.
+.\"For a list of the constants associated with an error event, see the Handling
+.\"Errors section in this chapter.
+.\".LP
+.\".so eventtable
+.NH 2
+Event Structures
+.XS
+\*(SN Event Structures
+.XE
+.LP
+For each event type,
+a corresponding structure is declared in
+.hN X11/Xlib.h .
+All the event structures have the following common members:
+.LP
+.IN "XAnyEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+} XAnyEvent;
+.De
+.LP
+.eM
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.PN GraphicsExpose
+event to a client application, it sends an
+.PN XGraphicsExposeEvent
+structure with the type member set to
+.PN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.PN True
+if the event came from a
+.PN SendEvent
+protocol request.
+The serial member is set from the serial number reported in the protocol
+but expanded from the 16-bit least-significant bits to a full 32-bit value.
+The window member is set to the window that is most useful to toolkit
+dispatchers.
+.LP
+The X server can send events at any time in the input stream.
+Xlib stores any events received while waiting for a reply in an event queue
+for later use.
+Xlib also provides functions that allow you to check events
+in the event queue (see section 11.3).
+.LP
+In addition to the individual structures declared for each event type, the
+.PN XEvent
+structure is a union of the individual structures declared for each event type.
+Depending on the type,
+you should access members of each event by using the
+.PN XEvent
+union.
+.LP
+.IN "XEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef union _XEvent {
+ int type; /* must not be changed */
+ XAnyEvent xany;
+ XKeyEvent xkey;
+ XButtonEvent xbutton;
+ XMotionEvent xmotion;
+ XCrossingEvent xcrossing;
+ XFocusChangeEvent xfocus;
+ XExposeEvent xexpose;
+ XGraphicsExposeEvent xgraphicsexpose;
+ XNoExposeEvent xnoexpose;
+ XVisibilityEvent xvisibility;
+ XCreateWindowEvent xcreatewindow;
+ XDestroyWindowEvent xdestroywindow;
+ XUnmapEvent xunmap;
+ XMapEvent xmap;
+ XMapRequestEvent xmaprequest;
+ XReparentEvent xreparent;
+ XConfigureEvent xconfigure;
+ XGravityEvent xgravity;
+ XResizeRequestEvent xresizerequest;
+ XConfigureRequestEvent xconfigurerequest;
+ XCirculateEvent xcirculate;
+ XCirculateRequestEvent xcirculaterequest;
+ XPropertyEvent xproperty;
+ XSelectionClearEvent xselectionclear;
+ XSelectionRequestEvent xselectionrequest;
+ XSelectionEvent xselection;
+ XColormapEvent xcolormap;
+ XClientMessageEvent xclient;
+ XMappingEvent xmapping;
+ XErrorEvent xerror;
+ XKeymapEvent xkeymap;
+ long pad[24];
+} XEvent;
+.De
+.LP
+.eM
+An
+.PN XEvent
+structure's first entry always is the type member,
+which is set to the event type.
+The second member always is the serial number of the protocol request
+that generated the event.
+The third member always is send_event,
+which is a
+.PN Bool
+that indicates if the event was sent by a different client.
+The fourth member always is a display,
+which is the display that the event was read from.
+Except for keymap events,
+the fifth member always is a window,
+which has been carefully selected to be useful to toolkit dispatchers.
+To avoid breaking toolkits,
+the order of these first five entries is not to change.
+Most events also contain a time member,
+which is the time at which an event occurred.
+In addition, a pointer to the generic event must be cast before it
+is used to access any other information in the structure.
+.NH 2
+Event Masks
+.XS
+\*(SN Event Masks
+.XE
+.LP
+.IN "Event mask" "" "@DEF@"
+Clients select event reporting of most events relative to a window.
+To do this, pass an event mask to an Xlib event-handling
+function that takes an event_mask argument.
+The bits of the event mask are defined in
+.hN X11/X.h .
+Each bit in the event mask maps to an event mask name,
+which describes the event or events you want the X server to
+return to a client application.
+.LP
+Unless the client has specifically asked for them,
+most events are not reported to clients when they are generated.
+Unless the client suppresses them by setting graphics-exposures in the GC to
+.PN False ,
+.PN GraphicsExpose
+and
+.PN NoExpose
+are reported by default as a result of
+.PN XCopyPlane
+and
+.PN XCopyArea .
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+or
+.PN ClientMessage
+cannot be masked.
+Selection-related events are only sent to clients cooperating
+with selections (see section 4.5).
+When the keyboard or pointer mapping is changed,
+.PN MappingNotify
+is always sent to clients.
+.LP
+.\"Table 8-2
+The following table
+lists the event mask constants you can pass to
+the event_mask argument and
+the circumstances in which you would want to specify the
+event mask:
+.LP
+.\" .CP T 2
+.\"Event Mask Definitions
+.TS H
+lw(2i) lw(3.5i).
+_
+.sp 6p
+.B
+Event Mask Circumstances
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN NoEventMask
+T} T{
+No events wanted
+T}
+T{
+.PN KeyPressMask
+T} T{
+Keyboard down events wanted
+T}
+T{
+.PN KeyReleaseMask
+T} T{
+Keyboard up events wanted
+T}
+T{
+.PN ButtonPressMask
+T} T{
+Pointer button down events wanted
+T}
+T{
+.PN ButtonReleaseMask
+T} T{
+Pointer button up events wanted
+T}
+T{
+.PN EnterWindowMask
+T} T{
+Pointer window entry events wanted
+T}
+T{
+.PN LeaveWindowMask
+T} T{
+Pointer window leave events wanted
+T}
+T{
+.PN PointerMotionMask
+T} T{
+Pointer motion events wanted
+T}
+T{
+.PN PointerMotionHintMask
+T} T{
+Pointer motion hints wanted
+T}
+T{
+.PN Button1MotionMask
+T} T{
+Pointer motion while button 1 down
+T}
+T{
+.PN Button2MotionMask
+T} T{
+Pointer motion while button 2 down
+T}
+T{
+.PN Button3MotionMask
+T} T{
+Pointer motion while button 3 down
+T}
+T{
+.PN Button4MotionMask
+T} T{
+Pointer motion while button 4 down
+T}
+T{
+.PN Button5MotionMask
+T} T{
+Pointer motion while button 5 down
+T}
+T{
+.PN ButtonMotionMask
+T} T{
+Pointer motion while any button down
+T}
+T{
+.PN KeymapStateMask
+T} T{
+Keyboard state wanted at window entry and focus in
+T}
+T{
+.PN ExposureMask
+T} T{
+Any exposure wanted
+T}
+T{
+.PN VisibilityChangeMask
+T} T{
+Any change in visibility wanted
+T}
+T{
+.PN StructureNotifyMask
+T} T{
+Any change in window structure wanted
+T}
+T{
+.PN ResizeRedirectMask
+T} T{
+Redirect resize of this window
+T}
+T{
+.PN SubstructureNotifyMask
+T} T{
+Substructure notification wanted
+T}
+T{
+.PN SubstructureRedirectMask
+T} T{
+Redirect structure requests on children
+T}
+T{
+.PN FocusChangeMask
+T} T{
+Any change in input focus wanted
+T}
+T{
+.PN PropertyChangeMask
+T} T{
+Any change in property wanted
+T}
+T{
+.PN ColormapChangeMask
+T} T{
+Any change in colormap wanted
+T}
+T{
+.PN OwnerGrabButtonMask
+T} T{
+Automatic grabs should activate with owner_events set to
+.PN True
+T}
+.sp 6p
+_
+.TE
+.LP
+.NH 2
+Event Processing Overview
+.XS
+\*(SN Event Processing Overview
+.XE
+.LP
+The event reported to a client application during event processing
+depends on which event masks you provide as the event-mask attribute
+for a window.
+For some event masks, there is a one-to-one correspondence between
+the event mask constant and the event type constant.
+For example, if you pass the event mask
+.PN ButtonPressMask ,
+the X server sends back only
+.PN ButtonPress
+events.
+.IN "CurrentTime"
+Most events contain a time member,
+which is the time at which an event occurred.
+.LP
+In other cases, one event mask constant can map to several event type constants.
+For example, if you pass the event mask
+.PN SubstructureNotifyMask ,
+the X server can send back
+.PN CirculateNotify ,
+.PN ConfigureNotify ,
+.PN CreateNotify ,
+.PN DestroyNotify ,
+.PN GravityNotify ,
+.PN MapNotify ,
+.PN ReparentNotify ,
+or
+.PN UnmapNotify
+events.
+.LP
+In another case,
+two event masks can map to one event type.
+For example,
+if you pass either
+.PN PointerMotionMask
+or
+.PN ButtonMotionMask ,
+the X server sends back
+a
+.PN MotionNotify
+event.
+.LP
+The following table
+lists the event mask,
+its associated event type or types,
+and the structure name associated with the event type.
+Some of these structures actually are typedefs to a generic structure
+that is shared between two event types.
+Note that N.A. appears in columns for which the information is not applicable.
+.LP
+.ps 9
+.nr PS 9
+.TS H
+lw(1.5i) lw(1i) lw(1.5i) lw(1.5i).
+_
+.sp 6p
+.B
+Event Mask Event Type Structure Generic Structure
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+ButtonMotionMask MotionNotify XPointerMovedEvent XMotionEvent
+Button1MotionMask
+Button2MotionMask
+Button3MotionMask
+Button4MotionMask
+Button5MotionMask
+.sp 6p
+ButtonPressMask ButtonPress XButtonPressedEvent XButtonEvent
+.sp 6p
+ButtonReleaseMask ButtonRelease XButtonReleasedEvent XButtonEvent
+.sp 6p
+ColormapChangeMask ColormapNotify XColormapEvent
+.sp 6p
+EnterWindowMask EnterNotify XEnterWindowEvent XCrossingEvent
+.sp 6p
+LeaveWindowMask LeaveNotify XLeaveWindowEvent XCrossingEvent
+.sp 6p
+ExposureMask Expose XExposeEvent
+GCGraphicsExposures in GC GraphicsExpose XGraphicsExposeEvent
+ NoExpose XNoExposeEvent
+.sp 6p
+FocusChangeMask FocusIn XFocusInEvent XFocusChangeEvent
+ FocusOut XFocusOutEvent XFocusChangeEvent
+.sp 6p
+KeymapStateMask KeymapNotify XKeymapEvent
+.sp 6p
+KeyPressMask KeyPress XKeyPressedEvent XKeyEvent
+KeyReleaseMask KeyRelease XKeyReleasedEvent XKeyEvent
+.sp 6p
+OwnerGrabButtonMask N.A. N.A.
+.sp 6p
+PointerMotionMask MotionNotify XPointerMovedEvent XMotionEvent
+PointerMotionHintMask N.A. N.A.
+.sp 6p
+PropertyChangeMask PropertyNotify XPropertyEvent
+.sp 6p
+ResizeRedirectMask ResizeRequest XResizeRequestEvent
+.sp 6p
+StructureNotifyMask CirculateNotify XCirculateEvent
+ ConfigureNotify XConfigureEvent
+ DestroyNotify XDestroyWindowEvent
+ GravityNotify XGravityEvent
+ MapNotify XMapEvent
+ ReparentNotify XReparentEvent
+ UnmapNotify XUnmapEvent
+.sp 6p
+SubstructureNotifyMask CirculateNotify XCirculateEvent
+ ConfigureNotify XConfigureEvent
+ CreateNotify XCreateWindowEvent
+ DestroyNotify XDestroyWindowEvent
+ GravityNotify XGravityEvent
+ MapNotify XMapEvent
+ ReparentNotify XReparentEvent
+ UnmapNotify XUnmapEvent
+.sp 6p
+SubstructureRedirectMask CirculateRequest XCirculateRequestEvent
+ ConfigureRequest XConfigureRequestEvent
+ MapRequest XMapRequestEvent
+.sp 6p
+N.A. ClientMessage XClientMessageEvent
+.sp 6p
+N.A. MappingNotify XMappingEvent
+.sp 6p
+N.A. SelectionClear XSelectionClearEvent
+.sp 6p
+N.A. SelectionNotify XSelectionEvent
+.sp 6p
+N.A. SelectionRequest XSelectionRequestEvent
+.sp 6p
+VisibilityChangeMask VisibilityNotify XVisibilityEvent
+.sp 6p
+_
+.TE
+.ps 11
+.nr PS 11
+.LP
+The sections that follow describe the processing that occurs
+when you select the different event masks.
+The sections are organized according to these processing categories:
+.IP \(bu 5
+Keyboard and pointer events
+.IP \(bu 5
+Window crossing events
+.IP \(bu 5
+Input focus events
+.IP \(bu 5
+Keymap state notification events
+.IP \(bu 5
+Exposure events
+.IP \(bu 5
+Window state notification events
+.IP \(bu 5
+Structure control events
+.IP \(bu 5
+Colormap state notification events
+.IP \(bu 5
+Client communication events
+.NH 2
+Keyboard and Pointer Events
+.XS
+\*(SN Keyboard and Pointer Events
+.XE
+.LP
+This section discusses:
+.IP \(bu 5
+Pointer button events
+.IP \(bu 5
+Keyboard and pointer events
+.NH 3
+Pointer Button Events
+.XS
+\*(SN Pointer Button Events
+.XE
+.LP
+The following describes the event processing that occurs when a pointer button
+press is processed with the pointer in some window w and
+when no active pointer grab is in progress.
+.LP
+The X server searches the ancestors of w from the root down,
+looking for a passive grab to activate.
+If no matching passive grab on the button exists,
+the X server automatically starts an active grab for the client receiving
+the event and sets the last-pointer-grab time to the current server time.
+The effect is essentially equivalent to an
+.PN XGrabButton
+with these client passed arguments:
+.TS H
+lw(1.5i) lw(3.5i).
+_
+.sp 6p
+.B
+Argument Value
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+\fIw\fP
+T} T{
+The event window
+T}
+T{
+\fIevent_mask\fP
+T} T{
+The client's selected pointer events on the event window
+T}
+T{
+\fIpointer_mode\fP
+T} T{
+.PN GrabModeAsync
+T}
+T{
+\fIkeyboard_mode\fP
+T} T{
+.PN GrabModeAsync
+T}
+T{
+\fIowner_events\fP
+T} T{
+.PN True ,
+if the client has selected
+.PN OwnerGrabButtonMask
+on the event window,
+otherwise
+.PN False
+T}
+T{
+\fIconfine_to\fP
+T} T{
+.PN None
+T}
+T{
+\fIcursor\fP
+T} T{
+.PN None
+T}
+.sp 6p
+_
+.TE
+.LP
+The active grab is automatically terminated when
+the logical state of the pointer has all buttons released.
+Clients can modify the active grab by calling
+.PN XUngrabPointer
+and
+.PN XChangeActivePointerGrab .
+.NH 3
+Keyboard and Pointer Events
+.XS
+\*(SN Keyboard and Pointer Events
+.XE
+.LP
+.IN "Events" "ButtonPress"
+.IN "Events" "ButtonRelease"
+.IN "Events" "KeyPress"
+.IN "Events" "KeyRelease"
+.IN "Events" "MotionNotify"
+This section discusses the processing that occurs for the
+keyboard events
+.PN KeyPress
+and
+.PN KeyRelease
+and the pointer events
+.PN ButtonPress ,
+.PN ButtonRelease ,
+and
+.PN MotionNotify .
+For information about the keyboard event-handling utilities,
+see chapter 11.
+.LP
+.IN "KeyPress" "" "@DEF@"
+.IN "KeyRelease" "" "@DEF@"
+The X server reports
+.PN KeyPress
+or
+.PN KeyRelease
+events to clients wanting information about keys that logically change state.
+Note that these events are generated for all keys,
+even those mapped to modifier bits.
+.IN "ButtonPress" "" "@DEF@"
+.IN "ButtonRelease" "" "@DEF@"
+The X server reports
+.PN ButtonPress
+or
+.PN ButtonRelease
+events to clients wanting information about buttons that logically change state.
+.LP
+.IN "MotionNotify" "" "@DEF@"
+The X server reports
+.PN MotionNotify
+events to clients wanting information about when the pointer logically moves.
+The X server generates this event whenever the pointer is moved
+and the pointer motion begins and ends in the window.
+The granularity of
+.PN MotionNotify
+events is not guaranteed,
+but a client that selects this event type is guaranteed
+to receive at least one event when the pointer moves and then rests.
+.LP
+The generation of the logical changes lags the physical changes
+if device event processing is frozen.
+.LP
+To receive
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+and
+.PN ButtonRelease
+events, set
+.PN KeyPressMask ,
+.PN KeyReleaseMask ,
+.PN ButtonPressMask ,
+and
+.PN ButtonReleaseMask
+bits in the event-mask attribute of the window.
+.LP
+To receive
+.PN MotionNotify
+events, set one or more of the following event
+masks bits in the event-mask attribute of the window.
+.IP \(bu 5
+.PN Button1MotionMask \ \-
+.PN Button5MotionMask
+.IP
+The client application receives
+.PN MotionNotify
+events only when one or more of the specified buttons is pressed.
+.IP \(bu 5
+.PN ButtonMotionMask
+.IP
+The client application receives
+.PN MotionNotify
+events only when at least one button is pressed.
+.IP \(bu 5
+.PN PointerMotionMask
+.IP
+The client application receives
+.PN MotionNotify
+events independent of the state of
+the pointer buttons.
+.IP \(bu 5
+.PN PointerMotionHintMask
+.IP
+If
+.PN PointerMotionHintMask
+is selected in combination with one or more of the above masks,
+the X server is free to send only one
+.PN MotionNotify
+event (with the is_hint member of the
+.PN XPointerMovedEvent
+structure set to
+.PN NotifyHint )
+to the client for the event window,
+until either the key or button state changes,
+the pointer leaves the event window, or the client calls
+.PN XQueryPointer
+or
+.PN XGetMotionEvents .
+The server still may send
+.PN MotionNotify
+events without is_hint set to
+.PN NotifyHint .
+.LP
+The source of the event is the viewable window that the pointer is in.
+The window used by the X server to report these events depends on
+the window's position in the window hierarchy
+and whether any intervening window prohibits the generation of these events.
+Starting with the source window,
+the X server searches up the window hierarchy until it locates the first
+window specified by a client as having an interest in these events.
+If one of the intervening windows has its do-not-propagate-mask
+set to prohibit generation of the event type,
+the events of those types will be suppressed.
+Clients can modify the actual window used for reporting by performing
+active grabs and, in the case of keyboard events, by using the focus window.
+.LP
+The structures for these event types contain:
+.LP
+.IN "XButtonEvent" "" "@DEF@"
+.IN "XButtonPressedEvent" "" "@DEF@"
+.IN "XButtonReleasedEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* ButtonPress or ButtonRelease */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* ``event'' window it is reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int button; /* detail */
+ Bool same_screen; /* same screen flag */
+} XButtonEvent;
+typedef XButtonEvent XButtonPressedEvent;
+typedef XButtonEvent XButtonReleasedEvent;
+.De
+.LP
+.IN "XKeyEvent" "" "@DEF@"
+.IN "XKeyPressedEvent" "" "@DEF@"
+.IN "XKeyReleasedEvent" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* KeyPress or KeyRelease */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* ``event'' window it is reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int keycode; /* detail */
+ Bool same_screen; /* same screen flag */
+} XKeyEvent;
+typedef XKeyEvent XKeyPressedEvent;
+typedef XKeyEvent XKeyReleasedEvent;
+.De
+.LP
+.IN "XMotionEvent" "" "@DEF@"
+.IN "XPointerMovedEvent" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* MotionNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* ``event'' window reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ char is_hint; /* detail */
+ Bool same_screen; /* same screen flag */
+} XMotionEvent;
+typedef XMotionEvent XPointerMovedEvent;
+.De
+.LP
+.eM
+These structures have the following common members:
+window, root, subwindow, time, x, y, x_root, y_root, state, and same_screen.
+The window member is set to the window on which the
+event was generated and is referred to as the event window.
+As long as the conditions previously discussed are met,
+this is the window used by the X server to report the event.
+The root member is set to the source window's root window.
+The x_root and y_root members are set to the pointer's coordinates
+relative to the root window's origin at the time of the event.
+.LP
+The same_screen member is set to indicate whether the event
+window is on the same screen
+as the root window and can be either
+.PN True
+or
+.PN False .
+If
+.PN True ,
+the event and root windows are on the same screen.
+If
+.PN False ,
+the event and root windows are not on the same screen.
+.LP
+If the source window is an inferior of the event window,
+the subwindow member of the structure is set to the child of the event window
+that is the source window or the child of the event window that is
+an ancestor of the source window.
+Otherwise, the X server sets the subwindow member to
+.PN None .
+The time member is set to the time when the event was generated
+and is expressed in milliseconds.
+.LP
+If the event window is on the same screen as the root window,
+the x and y members
+are set to the coordinates relative to the event window's origin.
+Otherwise, these members are set to zero.
+.LP
+The state member is set to indicate the logical state of the pointer buttons
+and modifier keys just prior to the event,
+which is the bitwise inclusive OR of one or more of the
+button or modifier key masks:
+.PN Button1Mask ,
+.PN Button2Mask ,
+.PN Button3Mask ,
+.PN Button4Mask ,
+.PN Button5Mask ,
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+and
+.PN Mod5Mask .
+.LP
+Each of these structures also has a member that indicates the detail.
+For the
+.PN XKeyPressedEvent
+and
+.PN XKeyReleasedEvent
+structures, this member is called a keycode.
+It is set to a number that represents a physical key on the keyboard.
+The keycode is an arbitrary representation for any key on the keyboard
+(see sections 12.7 and 16.1).
+.LP
+For the
+.PN XButtonPressedEvent
+and
+.PN XButtonReleasedEvent
+structures, this member is called button.
+It represents the pointer button that changed state and can be the
+.PN Button1 ,
+.PN Button2 ,
+.PN Button3 ,
+.PN Button4 ,
+or
+.PN Button5
+value.
+For the
+.PN XPointerMovedEvent
+structure, this member is called is_hint.
+It can be set to
+.PN NotifyNormal
+or
+.PN NotifyHint .
+.LP
+Some of the symbols mentioned in this section have fixed values, as
+follows:
+.TS H
+lw(2i) lw(3.5i).
+_
+.sp 6p
+.B
+Symbol Value
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN Button1MotionMask
+T} T{
+(1L<<8)
+T}
+T{
+.PN Button2MotionMask
+T} T{
+(1L<<9)
+T}
+T{
+.PN Button3MotionMask
+T} T{
+(1L<<10)
+T}
+T{
+.PN Button4MotionMask
+T} T{
+(1L<<11)
+T}
+T{
+.PN Button5MotionMask
+T} T{
+(1L<<12)
+T}
+T{
+.PN Button1Mask
+T} T{
+(1<<8)
+T}
+T{
+.PN Button2Mask
+T} T{
+(1<<9)
+T}
+T{
+.PN Button3Mask
+T} T{
+(1<<10)
+T}
+T{
+.PN Button4Mask
+T} T{
+(1<<11)
+T}
+T{
+.PN Button5Mask
+T} T{
+(1<<12)
+T}
+T{
+.PN ShiftMask
+T} T{
+(1<<0)
+T}
+T{
+.PN LockMask
+T} T{
+(1<<1)
+T}
+T{
+.PN ControlMask
+T} T{
+(1<<2)
+T}
+T{
+.PN Mod1Mask
+T} T{
+(1<<3)
+T}
+T{
+.PN Mod2Mask
+T} T{
+(1<<4)
+T}
+T{
+.PN Mod3Mask
+T} T{
+(1<<5)
+T}
+T{
+.PN Mod4Mask
+T} T{
+(1<<6)
+T}
+T{
+.PN Mod5Mask
+T} T{
+(1<<7)
+T}
+T{
+.PN Button1
+T} T{
+1
+T}
+T{
+.PN Button2
+T} T{
+2
+T}
+T{
+.PN Button3
+T} T{
+3
+T}
+T{
+.PN Button4
+T} T{
+4
+T}
+T{
+.PN Button5
+T} T{
+5
+T}
+.sp 6p
+_
+.TE
+.NH 2
+Window Entry/Exit Events
+.XS
+\*(SN Window Entry/Exit Events
+.XE
+.LP
+.IN "Events" "EnterNotify"
+.IN "Events" "LeaveNotify"
+This section describes the processing that
+occurs for the window crossing events
+.PN EnterNotify
+and
+.PN LeaveNotify .
+.IN "EnterNotify" "" "@DEF@"
+.IN "LeaveNotify" "" "@DEF@"
+If a pointer motion or a window hierarchy change causes the
+pointer to be in a different window than before, the X server reports
+.PN EnterNotify
+or
+.PN LeaveNotify
+events to clients who have selected for these events.
+All
+.PN EnterNotify
+and
+.PN LeaveNotify
+events caused by a hierarchy change are
+generated after any hierarchy event
+.Pn ( UnmapNotify ,
+.PN MapNotify ,
+.PN ConfigureNotify ,
+.PN GravityNotify ,
+.PN CirculateNotify )
+caused by that change;
+however, the X protocol does not constrain the ordering of
+.PN EnterNotify
+and
+.PN LeaveNotify
+events with respect to
+.PN FocusOut ,
+.PN VisibilityNotify ,
+and
+.PN Expose
+events.
+.LP
+This contrasts with
+.PN MotionNotify
+events, which are also generated when the pointer moves
+but only when the pointer motion begins and ends in a single window.
+An
+.PN EnterNotify
+or
+.PN LeaveNotify
+event also can be generated when some client application calls
+.PN XGrabPointer
+and
+.PN XUngrabPointer .
+.LP
+To receive
+.PN EnterNotify
+or
+.PN LeaveNotify
+events, set the
+.PN EnterWindowMask
+or
+.PN LeaveWindowMask
+bits of the event-mask attribute of the window.
+.LP
+The structure for these event types contains:
+.LP
+.IN "XCrossingEvent" "" "@DEF@"
+.IN "XEnterWindowEvent" "" "@DEF@"
+.IN "XLeaveWindowEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* EnterNotify or LeaveNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* ``event'' window reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual
+ */
+ Bool same_screen; /* same screen flag */
+ Bool focus; /* boolean focus */
+ unsigned int state; /* key or button mask */
+} XCrossingEvent;
+typedef XCrossingEvent XEnterWindowEvent;
+typedef XCrossingEvent XLeaveWindowEvent;
+.De
+.LP
+.eM
+The window member is set to the window on which the
+.PN EnterNotify
+or
+.PN LeaveNotify
+event was generated and is referred to as the event window.
+This is the window used by the X server to report the event,
+and is relative to the root
+window on which the event occurred.
+The root member is set to the root window of the screen
+on which the event occurred.
+.LP
+For a
+.PN LeaveNotify
+event,
+if a child of the event window contains the initial position of the pointer,
+the subwindow component is set to that child.
+Otherwise, the X server sets the subwindow member to
+.PN None .
+For an
+.PN EnterNotify
+event, if a child of the event window contains the final pointer position,
+the subwindow component is set to that child or
+.PN None .
+.LP
+The time member is set to the time when the event was generated
+and is expressed in milliseconds.
+The x and y members are set to the coordinates of the pointer position in
+the event window.
+This position is always the pointer's final position,
+not its initial position.
+If the event window is on the same
+screen as the root window, x and y are the pointer coordinates
+relative to the event window's origin.
+Otherwise, x and y are set to zero.
+The x_root and y_root members are set to the pointer's coordinates relative to the
+root window's origin at the time of the event.
+.LP
+The same_screen member is set to indicate whether the event window is on the same screen
+as the root window and can be either
+.PN True
+or
+.PN False .
+If
+.PN True ,
+the event and root windows are on the same screen.
+If
+.PN False ,
+the event and root windows are not on the same screen.
+.LP
+The focus member is set to indicate whether the event window is the focus window or an
+inferior of the focus window.
+The X server can set this member to either
+.PN True
+or
+.PN False .
+If
+.PN True ,
+the event window is the focus window or an inferior of the focus window.
+If
+.PN False ,
+the event window is not the focus window or an inferior of the focus window.
+.LP
+The state member is set to indicate the state of the pointer buttons and
+modifier keys just prior to the
+event.
+The X server can set this member to the bitwise inclusive OR of one
+or more of the button or modifier key masks:
+.PN Button1Mask ,
+.PN Button2Mask ,
+.PN Button3Mask ,
+.PN Button4Mask ,
+.PN Button5Mask ,
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+.PN Mod5Mask .
+.LP
+The mode member is set to indicate whether the events are normal events,
+pseudo-motion events
+when a grab activates, or pseudo-motion events when a grab deactivates.
+The X server can set this member to
+.PN NotifyNormal ,
+.PN NotifyGrab ,
+or
+.PN NotifyUngrab .
+.LP
+The detail member is set to indicate the notify detail and can be
+.PN NotifyAncestor ,
+.PN NotifyVirtual ,
+.PN NotifyInferior ,
+.PN NotifyNonlinear ,
+or
+.PN NotifyNonlinearVirtual .
+.NH 3
+Normal Entry/Exit Events
+.XS
+\*(SN Normal Entry/Exit Events
+.XE
+.LP
+.PN EnterNotify
+and
+.PN LeaveNotify
+events are generated when the pointer moves from
+one window to another window.
+Normal events are identified by
+.PN XEnterWindowEvent
+or
+.PN XLeaveWindowEvent
+structures whose mode member is set to
+.PN NotifyNormal .
+.IP \(bu 5
+When the pointer moves from window A to window B and A is an inferior of B,
+the X server does the following:
+.RS
+.IP \- 5
+It generates a
+.PN LeaveNotify
+event on window A, with the detail member of the
+.PN XLeaveWindowEvent
+structure set to
+.PN NotifyAncestor .
+.IP \- 5
+It generates a
+.PN LeaveNotify
+event on each window between window A and window B, exclusive,
+with the detail member of each
+.PN XLeaveWindowEvent
+structure set to
+.PN NotifyVirtual .
+.IP \- 5
+It generates an
+.PN EnterNotify
+event on window B, with the detail member of the
+.PN XEnterWindowEvent
+structure set to
+.PN NotifyInferior .
+.RE
+.IP \(bu 5
+When the pointer moves from window A to window B and B is an inferior of A,
+the X server does the following:
+.RS
+.IP \- 5
+It generates a
+.PN LeaveNotify
+event on window A,
+with the detail member of the
+.PN XLeaveWindowEvent
+structure set to
+.PN NotifyInferior .
+.IP \- 5
+It generates an
+.PN EnterNotify
+event on each window between window A and window B, exclusive, with the
+detail member of each
+.PN XEnterWindowEvent
+structure set to
+.PN NotifyVirtual .
+.IP \- 5
+It generates an
+.PN EnterNotify
+event on window B, with the detail member of the
+.PN XEnterWindowEvent
+structure set to
+.PN NotifyAncestor .
+.RE
+.IP \(bu 5
+When the pointer moves from window A to window B
+and window C is their least common ancestor,
+the X server does the following:
+.RS
+.IP \- 5
+It generates a
+.PN LeaveNotify
+event on window A,
+with the detail member of the
+.PN XLeaveWindowEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+It generates a
+.PN LeaveNotify
+event on each window between window A and window C, exclusive,
+with the detail member of each
+.PN XLeaveWindowEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates an
+.PN EnterNotify
+event on each window between window C and window B, exclusive,
+with the detail member of each
+.PN XEnterWindowEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates an
+.PN EnterNotify
+event on window B, with the detail member of the
+.PN XEnterWindowEvent
+structure set to
+.PN NotifyNonlinear .
+.RE
+.IP \(bu 5
+When the pointer moves from window A to window B on different screens,
+the X server does the following:
+.RS
+.IP \- 5
+It generates a
+.PN LeaveNotify
+event on window A,
+with the detail member of the
+.PN XLeaveWindowEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+If window A is not a root window,
+it generates a
+.PN LeaveNotify
+event on each window above window A up to and including its root,
+with the detail member of each
+.PN XLeaveWindowEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+If window B is not a root window,
+it generates an
+.PN EnterNotify
+event on each window from window B's root down to but not including
+window B, with the detail member of each
+.PN XEnterWindowEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates an
+.PN EnterNotify
+event on window B, with the detail member of the
+.PN XEnterWindowEvent
+structure set to
+.PN NotifyNonlinear .
+.RE
+.\".SH 3
+.NH 3
+Grab and Ungrab Entry/Exit Events
+.XS
+\*(SN Grab and Ungrab Entry/Exit Events
+.XE
+.LP
+Pseudo-motion mode
+.PN EnterNotify
+and
+.PN LeaveNotify
+events are generated when a pointer grab activates or deactivates.
+Events in which the pointer grab activates
+are identified by
+.PN XEnterWindowEvent
+or
+.PN XLeaveWindowEvent
+structures whose mode member is set to
+.PN NotifyGrab .
+Events in which the pointer grab deactivates
+are identified by
+.PN XEnterWindowEvent
+or
+.PN XLeaveWindowEvent
+structures whose mode member is set to
+.PN NotifyUngrab
+(see
+.PN XGrabPointer ).
+.IP \(bu 5
+When a pointer grab activates after any initial warp into a confine_to
+window and before generating any actual
+.PN ButtonPress
+event that activates the grab,
+G is the grab_window for the grab,
+and P is the window the pointer is in,
+the X server does the following:
+.RS
+.IP \- 5
+It generates
+.PN EnterNotify
+and
+.PN LeaveNotify
+events (see section 10.6.1)
+with the mode members of the
+.PN XEnterWindowEvent
+and
+.PN XLeaveWindowEvent
+structures set to
+.PN NotifyGrab .
+These events are generated
+as if the pointer were to suddenly warp from
+its current position in P to some position in G.
+However, the pointer does not warp, and the X server uses the pointer position
+as both the initial and final positions for the events.
+.RE
+.IP \(bu 5
+When a pointer grab deactivates after generating any actual
+.PN ButtonRelease
+event that deactivates the grab,
+G is the grab_window for the grab,
+and P is the window the pointer is in,
+the X server does the following:
+.RS
+.IP \- 5
+It generates
+.PN EnterNotify
+and
+.PN LeaveNotify
+events (see section 10.6.1)
+with the mode members of the
+.PN XEnterWindowEvent
+and
+.PN XLeaveWindowEvent
+structures set to
+.PN NotifyUngrab .
+These events are generated as if the pointer were to suddenly warp from
+some position in G to its current position in P.
+However, the pointer does not warp, and the X server uses the
+current pointer position as both the
+initial and final positions for the events.
+.RE
+.NH 2
+Input Focus Events
+.XS
+\*(SN Input Focus Events
+.XE
+.LP
+.IN "Events" "FocusIn"
+.IN "Events" "FocusOut"
+This section describes the processing that occurs for the input focus events
+.PN FocusIn
+and
+.PN FocusOut .
+.IN "FocusIn" "" "@DEF@"
+.IN "FocusOut" "" "@DEF@"
+The X server can report
+.PN FocusIn
+or
+.PN FocusOut
+events to clients wanting information about when the input focus changes.
+The keyboard is always attached to some window
+(typically, the root window or a top-level window),
+which is called the focus window.
+The focus window and the position of the pointer determine the window that
+receives keyboard input.
+Clients may need to know when the input focus changes
+to control highlighting of areas on the screen.
+.LP
+To receive
+.PN FocusIn
+or
+.PN FocusOut
+events, set the
+.PN FocusChangeMask
+bit in the event-mask attribute of the window.
+.LP
+The structure for these event types contains:
+.LP
+.IN "XFocusChangeEvent" "" "@DEF@"
+.IN "XFocusInEvent" "" "@DEF@"
+.IN "XFocusOutEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* FocusIn or FocusOut */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
+ * NotifyPointerRoot, NotifyDetailNone
+ */
+} XFocusChangeEvent;
+typedef XFocusChangeEvent XFocusInEvent;
+typedef XFocusChangeEvent XFocusOutEvent;
+.De
+.LP
+.eM
+The window member is set to the window on which the
+.PN FocusIn
+or
+.PN FocusOut
+event was generated.
+This is the window used by the X server to report the event.
+The mode member is set to indicate whether the focus events
+are normal focus events,
+focus events while grabbed,
+focus events
+when a grab activates, or focus events when a grab deactivates.
+The X server can set the mode member to
+.PN NotifyNormal ,
+.PN NotifyWhileGrabbed ,
+.PN NotifyGrab ,
+or
+.PN NotifyUngrab .
+.LP
+All
+.PN FocusOut
+events caused by a window unmap are generated after any
+.PN UnmapNotify
+event; however, the X protocol does not constrain the ordering of
+.PN FocusOut
+events with respect to
+generated
+.PN EnterNotify ,
+.PN LeaveNotify ,
+.PN VisibilityNotify ,
+and
+.PN Expose
+events.
+.LP
+Depending on the event mode,
+the detail member is set to indicate the notify detail and can be
+.PN NotifyAncestor ,
+.PN NotifyVirtual ,
+.PN NotifyInferior ,
+.PN NotifyNonlinear ,
+.PN NotifyNonlinearVirtual ,
+.PN NotifyPointer ,
+.PN NotifyPointerRoot ,
+or
+.PN NotifyDetailNone .
+.NH 3
+Normal Focus Events and Focus Events While Grabbed
+.XS
+\*(SN Normal Focus Events and Focus Events While Grabbed
+.XE
+.LP
+Normal focus events are identified by
+.PN XFocusInEvent
+or
+.PN XFocusOutEvent
+structures whose mode member is set to
+.PN NotifyNormal .
+Focus events while grabbed are identified by
+.PN XFocusInEvent
+or
+.PN XFocusOutEvent
+structures whose mode member is set to
+.PN NotifyWhileGrabbed .
+The X server processes normal focus and focus events while grabbed according to
+the following:
+.IP \(bu 5
+When the focus moves from window A to window B, A is an inferior of B,
+and the pointer is in window P,
+the X server does the following:
+.RS
+.IP \- 5
+It generates a
+.PN FocusOut
+event on window A, with the detail member of the
+.PN XFocusOutEvent
+structure set to
+.PN NotifyAncestor .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on each window between window A and window B, exclusive,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyVirtual .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on window B, with the detail member of the
+.PN XFocusOutEvent
+structure set to
+.PN NotifyInferior .
+.IP \- 5
+If window P is an inferior of window B
+but window P is not window A or an inferior or ancestor of window A,
+it generates a
+.PN FocusIn
+event on each window below window B, down to and including window P,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyPointer .
+.RE
+.IP \(bu 5
+When the focus moves from window A to window B, B is an inferior of A,
+and the pointer is in window P,
+the X server does the following:
+.RS
+.IP \- 5
+If window P is an inferior of window A
+but P is not an inferior of window B or an ancestor of B,
+it generates a
+.PN FocusOut
+event on each window from window P up to but not including window A,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyPointer .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on window A,
+with the detail member of the
+.PN XFocusOutEvent
+structure set to
+.PN NotifyInferior .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on each window between window A and window B, exclusive, with the
+detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyVirtual .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on window B, with the detail member of the
+.PN XFocusInEvent
+structure set to
+.PN NotifyAncestor .
+.RE
+.IP \(bu 5
+When the focus moves from window A to window B,
+window C is their least common ancestor,
+and the pointer is in window P,
+the X server does the following:
+.RS
+.IP \- 5
+If window P is an inferior of window A,
+it generates a
+.PN FocusOut
+event on each window from window P up to but not including window A,
+with the detail member of the
+.PN XFocusOutEvent
+structure set to
+.PN NotifyPointer .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on window A,
+with the detail member of the
+.PN XFocusOutEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on each window between window A and window C, exclusive,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on each window between C and B, exclusive,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on window B, with the detail member of the
+.PN XFocusInEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+If window P is an inferior of window B, it generates a
+.PN FocusIn
+event on each window below window B down to and including window P,
+with the detail member of the
+.PN XFocusInEvent
+structure set to
+.PN NotifyPointer .
+.RE
+.IP \(bu 5
+When the focus moves from window A to window B on different screens
+and the pointer is in window P,
+the X server does the following:
+.RS
+.IP \- 5
+If window P is an inferior of window A, it generates a
+.PN FocusOut
+event on each window from window P up to but not including window A,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyPointer .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on window A,
+with the detail member of the
+.PN XFocusOutEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+If window A is not a root window,
+it generates a
+.PN FocusOut
+event on each window above window A up to and including its root,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+If window B is not a root window,
+it generates a
+.PN FocusIn
+event on each window from window B's root down to but not including
+window B, with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on window B, with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+If window P is an inferior of window B, it generates a
+.PN FocusIn
+event on each window below window B down to and including window P,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyPointer .
+.RE
+.IP \(bu 5
+When the focus moves from window A to
+.PN PointerRoot
+(events sent to the window under the pointer)
+or
+.PN None
+(discard), and the pointer is in window P,
+the X server does the following:
+.RS
+.IP \- 5
+If window P is an inferior of window A, it generates a
+.PN FocusOut
+event on each window from window P up to but not including window A,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyPointer .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on window A, with the detail member of the
+.PN XFocusOutEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+If window A is not a root window,
+it generates a
+.PN FocusOut
+event on each window above window A up to and including its root,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on the root window of all screens, with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyPointerRoot
+(or
+.PN NotifyDetailNone ).
+.IP \- 5
+If the new focus is
+.PN PointerRoot ,
+it generates a
+.PN FocusIn
+event on each window from window P's root down to and including window P,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyPointer .
+.RE
+.IP \(bu 5
+When the focus moves from
+.PN PointerRoot
+(events sent to the window under the pointer)
+or
+.PN None
+to window A, and the pointer is in window P,
+the X server does the following:
+.RS
+.IP \- 5
+If the old focus is
+.PN PointerRoot ,
+it generates a
+.PN FocusOut
+event on each window from window P up to and including window P's root,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyPointer .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on all root windows,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyPointerRoot
+(or
+.PN NotifyDetailNone ).
+.IP \- 5
+If window A is not a root window,
+it generates a
+.PN FocusIn
+event on each window from window A's root down to but not including window A,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyNonlinearVirtual .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on window A,
+with the detail member of the
+.PN XFocusInEvent
+structure set to
+.PN NotifyNonlinear .
+.IP \- 5
+If window P is an inferior of window A, it generates a
+.PN FocusIn
+event on each window below window A down to and including window P,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyPointer .
+.RE
+.IP \(bu 5
+When the focus moves from
+.PN PointerRoot
+(events sent to the window under the pointer)
+to
+.PN None
+(or vice versa), and the pointer is in window P,
+the X server does the following:
+.RS
+.IP \- 5
+If the old focus is
+.PN PointerRoot ,
+it generates a
+.PN FocusOut
+event on each window from window P up to and including window P's root,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to
+.PN NotifyPointer .
+.IP \- 5
+It generates a
+.PN FocusOut
+event on all root windows,
+with the detail member of each
+.PN XFocusOutEvent
+structure set to either
+.PN NotifyPointerRoot
+or
+.PN NotifyDetailNone .
+.IP \- 5
+It generates a
+.PN FocusIn
+event on all root windows,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyDetailNone
+or
+.PN NotifyPointerRoot .
+.IP \- 5
+If the new focus is
+.PN PointerRoot ,
+it generates a
+.PN FocusIn
+event on each window from window P's root down to and including window P,
+with the detail member of each
+.PN XFocusInEvent
+structure set to
+.PN NotifyPointer .
+.RE
+.\".SH 3
+.NH 3
+Focus Events Generated by Grabs
+.XS
+\*(SN Focus Events Generated by Grabs
+.XE
+.LP
+Focus events in which the keyboard grab activates
+are identified by
+.PN XFocusInEvent
+or
+.PN XFocusOutEvent
+structures whose mode member is set to
+.PN NotifyGrab .
+Focus events in which the keyboard grab deactivates
+are identified by
+.PN XFocusInEvent
+or
+.PN XFocusOutEvent
+structures whose mode member is set to
+.PN NotifyUngrab
+(see
+.PN XGrabKeyboard ).
+.IP \(bu 5
+When a keyboard grab activates before generating any actual
+.PN KeyPress
+event that activates the grab,
+G is the grab_window, and F is the current focus,
+the X server does the following:
+.RS
+.IP \- 5
+It generates
+.PN FocusIn
+and
+.PN FocusOut
+events, with the mode members of the
+.PN XFocusInEvent
+and
+.PN XFocusOutEvent
+structures set to
+.PN NotifyGrab .
+These events are generated
+as if the focus were to change from
+F to G.
+.RE
+.IP \(bu 5
+When a keyboard grab deactivates after generating any actual
+.PN KeyRelease
+event that deactivates the grab,
+G is the grab_window, and F is the current focus,
+the X server does the following:
+.RS
+.IP \- 5
+It generates
+.PN FocusIn
+and
+.PN FocusOut
+events, with the mode members of the
+.PN XFocusInEvent
+and
+.PN XFocusOutEvent
+structures set to
+.PN NotifyUngrab .
+These events are generated
+as if the focus were to change from
+G to F.
+.RE
+.NH 2
+Key Map State Notification Events
+.XS
+\*(SN Key Map State Notification Events
+.XE
+.LP
+.IN "Events" "KeymapNotify"
+.IN "KeymapNotify" "" "@DEF@"
+The X server can report
+.PN KeymapNotify
+events to clients that want information about changes in their keyboard state.
+.LP
+To receive
+.PN KeymapNotify
+events, set the
+.PN KeymapStateMask
+bit in the event-mask attribute of the window.
+The X server generates this event immediately after every
+.PN EnterNotify
+and
+.PN FocusIn
+event.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XKeymapEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+/* generated on EnterWindow and FocusIn when KeymapState selected */
+typedef struct {
+ int type; /* KeymapNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ char key_vector[32];
+} XKeymapEvent;
+.De
+.LP
+.eM
+The window member is not used but is present to aid some toolkits.
+The key_vector member is set to the bit vector of the keyboard.
+Each bit set to 1 indicates that the corresponding key
+is currently pressed.
+The vector is represented as 32 bytes.
+Byte N (from 0) contains the bits for keys 8N to 8N + 7
+with the least significant bit in the byte representing key 8N.
+.NH 2
+Exposure Events
+.XS
+\*(SN Exposure Events
+.XE
+.LP
+The X protocol does not guarantee to preserve the contents of window
+regions when
+the windows are obscured or reconfigured.
+Some implementations may preserve the contents of windows.
+Other implementations are free to destroy the contents of windows
+when exposed.
+X expects client applications to assume the responsibility for
+restoring the contents of an exposed window region.
+(An exposed window region describes a formerly obscured window whose
+region becomes visible.)
+Therefore, the X server sends
+.PN Expose
+events describing the window and the region of the window that has been exposed.
+A naive client application usually redraws the entire window.
+A more sophisticated client application redraws only the exposed region.
+.NH 3
+Expose Events
+.XS
+\*(SN Expose Events
+.XE
+.LP
+.IN "Events" "Expose"
+.IN "Expose" "" "@DEF@"
+The X server can report
+.PN Expose
+events to clients wanting information about when the contents of window regions
+have been lost.
+The circumstances in which the X server generates
+.PN Expose
+events are not as definite as those for other events.
+However, the X server never generates
+.PN Expose
+events on windows whose class you specified as
+.PN InputOnly .
+The X server can generate
+.PN Expose
+events when no valid contents are available for regions of a window
+and either the regions are visible,
+the regions are viewable and the server is (perhaps newly) maintaining
+backing store on the window,
+or the window is not viewable but the server is (perhaps newly) honoring the
+window's backing-store attribute of
+.PN Always
+or
+.PN WhenMapped .
+The regions decompose into an (arbitrary) set of rectangles,
+and an
+.PN Expose
+event is generated for each rectangle.
+For any given window,
+the X server guarantees to report contiguously
+all of the regions exposed by some action that causes
+.PN Expose
+events, such as raising a window.
+.LP
+To receive
+.PN Expose
+events, set the
+.PN ExposureMask
+bit in the event-mask attribute of the window.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XExposeEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* Expose */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int x, y;
+ int width, height;
+ int count; /* if nonzero, at least this many more */
+} XExposeEvent;
+.De
+.LP
+.eM
+The window member is set to the exposed (damaged) window.
+The x and y members are set to the coordinates relative to the window's origin
+and indicate the upper-left corner of the rectangle.
+The width and height members are set to the size (extent) of the rectangle.
+The count member is set to the number of
+.PN Expose
+events that are to follow.
+If count is zero, no more
+.PN Expose
+events follow for this window.
+However, if count is nonzero, at least that number of
+.PN Expose
+events (and possibly more) follow for this window.
+Simple applications that do not want to optimize redisplay by distinguishing
+between subareas of its window can just ignore all
+.PN Expose
+events with nonzero counts and perform full redisplays
+on events with zero counts.
+.NH 3
+GraphicsExpose and NoExpose Events
+.XS
+\*(SN GraphicsExpose and NoExpose Events
+.XE
+.LP
+.IN "Events" "GraphicsExpose"
+.IN "Events" "NoExpose"
+.IN "GraphicsExpose" "" "@DEF@"
+The X server can report
+.PN GraphicsExpose
+events to clients wanting information about when a destination region could not
+be computed during certain graphics requests:
+.PN XCopyArea
+or
+.PN XCopyPlane .
+The X server generates this event whenever a destination region could not be
+computed because of an obscured or out-of-bounds source region.
+In addition, the X server guarantees to report contiguously all of the regions exposed by
+some graphics request
+(for example, copying an area of a drawable to a destination
+drawable).
+.LP
+.IN "NoExpose" "" "@DEF@"
+The X server generates a
+.PN NoExpose
+event whenever a graphics request that might
+produce a
+.PN GraphicsExpose
+event does not produce any.
+In other words, the client is really asking for a
+.PN GraphicsExpose
+event but instead receives a
+.PN NoExpose
+event.
+.LP
+To receive
+.PN GraphicsExpose
+or
+.PN NoExpose
+events, you must first set the graphics-exposure
+attribute of the graphics context to
+.PN True .
+You also can set the graphics-expose attribute when creating a graphics
+context using
+.PN XCreateGC
+or by calling
+.PN XSetGraphicsExposures .
+.LP
+The structures for these event types contain:
+.LP
+.IN "XGraphicsExposeEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* GraphicsExpose */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int x, y;
+ int width, height;
+ int count; /* if nonzero, at least this many more */
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XGraphicsExposeEvent;
+.De
+.LP
+.IN "XNoExposeEvent" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* NoExpose */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XNoExposeEvent;
+.De
+.LP
+.eM
+Both structures have these common members: drawable, major_code, and minor_code.
+The drawable member is set to the drawable of the destination region on
+which the graphics request was to be performed.
+The major_code member is set to the graphics request initiated by the client
+and can be either
+.PN X_CopyArea
+or
+.PN X_CopyPlane .
+If it is
+.PN X_CopyArea ,
+a call to
+.PN XCopyArea
+initiated the request.
+If it is
+.PN X_CopyPlane ,
+a call to
+.PN XCopyPlane
+initiated the request.
+These constants are defined in
+.hN X11/Xproto.h .
+The minor_code member,
+like the major_code member,
+indicates which graphics request was initiated by
+the client.
+However, the minor_code member is not defined by the core
+X protocol and will be zero in these cases,
+although it may be used by an extension.
+.LP
+The
+.PN XGraphicsExposeEvent
+structure has these additional members: x, y, width, height, and count.
+The x and y members are set to the coordinates relative to the drawable's origin
+and indicate the upper-left corner of the rectangle.
+The width and height members are set to the size (extent) of the rectangle.
+The count member is set to the number of
+.PN GraphicsExpose
+events to follow.
+If count is zero, no more
+.PN GraphicsExpose
+events follow for this window.
+However, if count is nonzero, at least that number of
+.PN GraphicsExpose
+events (and possibly more) are to follow for this window.
+.NH 2
+Window State Change Events
+.XS
+\*(SN Window State Change Events
+.XE
+.LP
+The following sections discuss:
+.IP \(bu 5
+.PN CirculateNotify
+events
+.IP \(bu 5
+.PN ConfigureNotify
+events
+.IP \(bu 5
+.PN CreateNotify
+events
+.IP \(bu 5
+.PN DestroyNotify
+events
+.IP \(bu 5
+.PN GravityNotify
+events
+.IP \(bu 5
+.PN MapNotify
+events
+.IP \(bu 5
+.PN MappingNotify
+events
+.IP \(bu 5
+.PN ReparentNotify
+events
+.IP \(bu 5
+.PN UnmapNotify
+events
+.IP \(bu 5
+.PN VisibilityNotify
+events
+.\" .SH 3
+.NH 3
+CirculateNotify Events
+.XS
+\*(SN CirculateNotify Events
+.XE
+.LP
+.IN "Events" "CirculateNotify"
+.IN "CirculateNotify" "" "@DEF@"
+The X server can report
+.PN CirculateNotify
+events to clients wanting information about when a window changes
+its position in the stack.
+The X server generates this event type whenever a window is actually restacked
+as a result of a client application calling
+.PN XCirculateSubwindows ,
+.PN XCirculateSubwindowsUp ,
+or
+.PN XCirculateSubwindowsDown .
+.LP
+To receive
+.PN CirculateNotify
+events, set the
+.PN StructureNotifyMask
+bit in the event-mask attribute of the window
+or the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of the parent window
+(in which case, circulating any child generates an event).
+.LP
+The structure for this event type contains:
+.LP
+.IN "XCirculateEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* CirculateNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateEvent;
+.De
+.LP
+.eM
+The event member is set either to the restacked window or to its parent,
+depending on whether
+.PN StructureNotify
+or
+.PN SubstructureNotify
+was selected.
+The window member is set to the window that was restacked.
+The place member is set to the window's position after the restack occurs and
+is either
+.PN PlaceOnTop
+or
+.PN PlaceOnBottom .
+If it is
+.PN PlaceOnTop ,
+the window is now on top of all siblings.
+If it is
+.PN PlaceOnBottom ,
+the window is now below all siblings.
+.NH 3
+ConfigureNotify Events
+.XS
+\*(SN ConfigureNotify Events
+.XE
+.LP
+.IN "Events" "ConfigureNotify"
+.IN "ConfigureNotify" "" "@DEF@"
+The X server can report
+.PN ConfigureNotify
+events to clients wanting information about actual changes to a window's
+state, such as size, position, border, and stacking order.
+The X server generates this event type whenever one of the following configure
+window requests made by a client application actually completes:
+.IP \(bu 5
+A window's size, position, border, and/or stacking order is reconfigured
+by calling
+.PN XConfigureWindow .
+.IP \(bu 5
+The window's position in the stacking order is changed by calling
+.PN XLowerWindow ,
+.PN XRaiseWindow ,
+or
+.PN XRestackWindows .
+.IP \(bu 5
+A window is moved by calling
+.PN XMoveWindow .
+.IP \(bu 5
+A window's size is changed by calling
+.PN XResizeWindow .
+.IP \(bu 5
+A window's size and location is changed by calling
+.PN XMoveResizeWindow .
+.IP \(bu 5
+A window is mapped and its position in the stacking order is changed
+by calling
+.PN XMapRaised .
+.IP \(bu 5
+A window's border width is changed by calling
+.PN XSetWindowBorderWidth .
+.LP
+To receive
+.PN ConfigureNotify
+events, set the
+.PN StructureNotifyMask
+bit in the event-mask attribute of the window or the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of the parent window
+(in which case, configuring any child generates an event).
+.LP
+The structure for this event type contains:
+.LP
+.IN "XConfigureEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* ConfigureNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ Bool override_redirect;
+} XConfigureEvent;
+.De
+.LP
+.eM
+The event member is set either to the reconfigured window or to its parent,
+depending on whether
+.PN StructureNotify
+or
+.PN SubstructureNotify
+was selected.
+The window member is set to the window whose size, position,
+border, and/or stacking
+order was changed.
+.LP
+The x and y members are set to the coordinates relative to the parent window's
+origin and indicate the position of the upper-left outside corner of the window.
+The width and height members are set to the inside size of the window,
+not including
+the border.
+The border_width member is set to the width of the window's border, in pixels.
+.LP
+The above member is set to the sibling window and is used
+for stacking operations.
+If the X server sets this member to
+.PN None ,
+the window whose state was changed is on the bottom of the stack
+with respect to sibling windows.
+However, if this member is set to a sibling window,
+the window whose state was changed is placed on top of this sibling window.
+.LP
+The override_redirect member is set to the override-redirect attribute of the
+window.
+Window manager clients normally should ignore this window if the
+override_redirect member
+is
+.PN True .
+.NH 3
+CreateNotify Events
+.XS
+\*(SN CreateNotify Events
+.XE
+.LP
+.IN "Events" "CreateNotify"
+.IN "CreateNotify" "" "@DEF@"
+The X server can report
+.PN CreateNotify
+events to clients wanting information about creation of windows.
+The X server generates this event whenever a client
+application creates a window by calling
+.PN XCreateWindow
+or
+.PN XCreateSimpleWindow .
+.LP
+To receive
+.PN CreateNotify
+events, set the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of the window.
+Creating any children then generates an event.
+.LP
+The structure for the event type contains:
+.LP
+.IN "XCreateWindowEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* CreateNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent; /* parent of the window */
+ Window window; /* window id of window created */
+ int x, y; /* window location */
+ int width, height; /* size of window */
+ int border_width; /* border width */
+ Bool override_redirect; /* creation should be overridden */
+} XCreateWindowEvent;
+.De
+.LP
+.eM
+The parent member is set to the created window's parent.
+The window member specifies the created window.
+The x and y members are set to the created window's coordinates relative
+to the parent window's origin and indicate the position of the upper-left
+outside corner of the created window.
+The width and height members are set to the inside size of the created window
+(not including the border) and are always nonzero.
+The border_width member is set to the width of the created window's border, in pixels.
+The override_redirect member is set to the override-redirect attribute of the
+window.
+Window manager clients normally should ignore this window
+if the override_redirect member is
+.PN True .
+.NH 3
+DestroyNotify Events
+.XS
+\*(SN DestroyNotify Events
+.XE
+.LP
+.IN "Events" "DestroyNotify"
+.IN "DestroyNotify" "" "@DEF@"
+The X server can report
+.PN DestroyNotify
+events to clients wanting information about which windows are destroyed.
+The X server generates this event whenever a client application destroys a
+window by calling
+.PN XDestroyWindow
+or
+.PN XDestroySubwindows .
+.LP
+The ordering of the
+.PN DestroyNotify
+events is such that for any given window,
+.PN DestroyNotify
+is generated on all inferiors of the window
+before being generated on the window itself.
+The X protocol does not constrain the ordering among
+siblings and across subhierarchies.
+.LP
+To receive
+.PN DestroyNotify
+events, set the
+.PN StructureNotifyMask
+bit in the event-mask attribute of the window or the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of the parent window
+(in which case, destroying any child generates an event).
+.LP
+The structure for this event type contains:
+.LP
+.IN "XDestroyWindowEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* DestroyNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+} XDestroyWindowEvent;
+.De
+.LP
+.eM
+The event member is set either to the destroyed window or to its parent,
+depending on whether
+.PN StructureNotify
+or
+.PN SubstructureNotify
+was selected.
+The window member is set to the window that is destroyed.
+.NH 3
+GravityNotify Events
+.XS
+\*(SN GravityNotify Events
+.XE
+.LP
+.IN "Events" "GravityNotify"
+.IN "GravityNotify" "" "@DEF@"
+The X server can report
+.PN GravityNotify
+events to clients wanting information about when a window is moved because of a
+change in the size of its parent.
+The X server generates this event whenever a client
+application actually moves a child window as a result of resizing its parent by calling
+.PN XConfigureWindow ,
+.PN XMoveResizeWindow ,
+or
+.PN XResizeWindow .
+.LP
+To receive
+.PN GravityNotify
+events, set the
+.PN StructureNotifyMask
+bit in the event-mask attribute of the window or the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of the parent window
+(in which case, any child that is moved because its parent has been resized
+generates an event).
+.LP
+The structure for this event type contains:
+.LP
+.IN "XGravityEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* GravityNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+} XGravityEvent;
+.De
+.LP
+.eM
+The event member is set either to the window that was moved or to its parent,
+depending on whether
+.PN StructureNotify
+or
+.PN SubstructureNotify
+was selected.
+The window member is set to the child window that was moved.
+The x and y members are set to the coordinates relative to the
+new parent window's origin
+and indicate the position of the upper-left outside corner of the
+window.
+.NH 3
+MapNotify Events
+.XS
+\*(SN MapNotify Events
+.XE
+.LP
+.IN "Events" "MapNotify"
+.IN "MapNotify" "" "@DEF@"
+The X server can report
+.PN MapNotify
+events to clients wanting information about which windows are mapped.
+The X server generates this event type whenever a client application changes the
+window's state from unmapped to mapped by calling
+.PN XMapWindow ,
+.PN XMapRaised ,
+.PN XMapSubwindows ,
+.PN XReparentWindow ,
+or as a result of save-set processing.
+.LP
+To receive
+.PN MapNotify
+events, set the
+.PN StructureNotifyMask
+bit in the event-mask attribute of the window or the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of the parent window
+(in which case, mapping any child generates an event).
+.LP
+The structure for this event type contains:
+.LP
+.IN "XMapEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* MapNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Bool override_redirect; /* boolean, is override set... */
+} XMapEvent;
+.De
+.LP
+.eM
+The event member is set either to the window that was mapped or to its parent,
+depending on whether
+.PN StructureNotify
+or
+.PN SubstructureNotify
+was selected.
+The window member is set to the window that was mapped.
+The override_redirect member is set to the override-redirect attribute
+of the window.
+Window manager clients normally should ignore this window
+if the override-redirect attribute is
+.PN True ,
+because these events usually are generated from pop-ups,
+which override structure control.
+.NH 3
+MappingNotify Events
+.XS
+\*(SN MappingNotify Events
+.XE
+.LP
+.IN "Events" "MappingNotify"
+.IN "MappingNotify" "" "@DEF@"
+The X server reports
+.PN MappingNotify
+events to all clients.
+There is no mechanism to express disinterest in this event.
+The X server generates this event type whenever a client application
+successfully calls:
+.IP \(bu 5
+.PN XSetModifierMapping
+to indicate which KeyCodes are to be used as modifiers
+.IP \(bu 5
+.PN XChangeKeyboardMapping
+to change the keyboard mapping
+.IP \(bu 5
+.PN XSetPointerMapping
+to set the pointer mapping
+.LP
+The structure for this event type contains:
+.LP
+.IN "XMappingEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* MappingNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* unused */
+ int request; /* one of MappingModifier, MappingKeyboard,
+ MappingPointer */
+ int first_keycode; /* first keycode */
+ int count; /* defines range of change w. first_keycode*/
+} XMappingEvent;
+.De
+.LP
+.eM
+The request member is set to indicate the kind of mapping change that occurred
+and can be
+.PN MappingModifier ,
+.PN MappingKeyboard ,
+or
+.PN MappingPointer .
+If it is
+.PN MappingModifier ,
+the modifier mapping was changed.
+If it is
+.PN MappingKeyboard ,
+the keyboard mapping was changed.
+If it is
+.PN MappingPointer ,
+the pointer button mapping was changed.
+The first_keycode and count members are set only
+if the request member was set to
+.PN MappingKeyboard .
+The number in first_keycode represents the first number in the range
+of the altered mapping,
+and count represents the number of keycodes altered.
+.LP
+To update the client application's knowledge of the keyboard,
+you should call
+.PN XRefreshKeyboardMapping .
+.NH 3
+ReparentNotify Events
+.XS
+\*(SN ReparentNotify Events
+.XE
+.LP
+.IN "Events" "ReparentNotify"
+.IN "ReparentNotify" "" "@DEF@"
+The X server can report
+.PN ReparentNotify
+events to clients wanting information about changing a window's parent.
+The X server generates this event whenever a client
+application calls
+.PN XReparentWindow
+and the window is actually reparented.
+.LP
+To receive
+.PN ReparentNotify
+events, set the
+.PN StructureNotifyMask
+bit in the event-mask attribute of the window or the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of either the old or the new parent window
+(in which case, reparenting any child generates an event).
+.LP
+The structure for this event type contains:
+.LP
+.IN "XReparentEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* ReparentNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Window parent;
+ int x, y;
+ Bool override_redirect;
+} XReparentEvent;
+.De
+.LP
+.eM
+The event member is set either to the reparented window
+or to the old or the new parent, depending on whether
+.PN StructureNotify
+or
+.PN SubstructureNotify
+was selected.
+The window member is set to the window that was reparented.
+The parent member is set to the new parent window.
+The x and y members are set to the reparented window's coordinates relative
+to the new parent window's
+origin and define the upper-left outer corner of the reparented window.
+The override_redirect member is set to the override-redirect attribute of the
+window specified by the window member.
+Window manager clients normally should ignore this window
+if the override_redirect member is
+.PN True .
+.NH 3
+UnmapNotify Events
+.XS
+\*(SN UnmapNotify Events
+.XE
+.LP
+.IN "Events" "UnmapNotify"
+.IN "UnmapNotify" "" "@DEF@"
+The X server can report
+.PN UnmapNotify
+events to clients wanting information about which windows are unmapped.
+The X server generates this event type whenever a client application changes the
+window's state from mapped to unmapped.
+.LP
+To receive
+.PN UnmapNotify
+events, set the
+.PN StructureNotifyMask
+bit in the event-mask attribute of the window or the
+.PN SubstructureNotifyMask
+bit in the event-mask attribute of the parent window
+(in which case, unmapping any child window generates an event).
+.LP
+The structure for this event type contains:
+.LP
+.IN "XUnmapEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* UnmapNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Bool from_configure;
+} XUnmapEvent;
+.De
+.LP
+.eM
+The event member is set either to the unmapped window or to its parent,
+depending on whether
+.PN StructureNotify
+or
+.PN SubstructureNotify
+was selected.
+This is the window used by the X server to report the event.
+The window member is set to the window that was unmapped.
+The from_configure member is set to
+.PN True
+if the event was generated as a result of a resizing of the window's parent when
+the window itself had a win_gravity of
+.PN UnmapGravity .
+.NH 3
+VisibilityNotify Events
+.XS
+\*(SN VisibilityNotify Events
+.XE
+.LP
+.IN "Events" "VisibilityNotify"
+.IN "VisibilityNotify" "" "@DEF@"
+The X server can report
+.PN VisibilityNotify
+events to clients wanting any change in the visibility of the specified window.
+A region of a window is visible if someone looking at the screen can
+actually see it.
+The X server generates this event whenever the visibility changes state.
+However, this event is never generated for windows whose class is
+.PN InputOnly .
+.LP
+All
+.PN VisibilityNotify
+events caused by a hierarchy change are generated
+after any hierarchy event
+.Pn ( UnmapNotify ,
+.PN MapNotify ,
+.PN ConfigureNotify ,
+.PN GravityNotify ,
+.PN CirculateNotify )
+caused by that change. Any
+.PN VisibilityNotify
+event on a given window is generated before any
+.PN Expose
+events on that window, but it is not required that all
+.PN VisibilityNotify
+events on all windows be generated before all
+.PN Expose
+events on all windows.
+The X protocol does not constrain the ordering of
+.PN VisibilityNotify
+events with
+respect to
+.PN FocusOut ,
+.PN EnterNotify ,
+and
+.PN LeaveNotify
+events.
+.LP
+To receive
+.PN VisibilityNotify
+events, set the
+.PN VisibilityChangeMask
+bit in the event-mask attribute of the window.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XVisibilityEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* VisibilityNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int state;
+} XVisibilityEvent;
+.De
+.LP
+.eM
+The window member is set to the window whose visibility state changes.
+The state member is set to the state of the window's visibility and can be
+.PN VisibilityUnobscured ,
+.PN VisibilityPartiallyObscured ,
+or
+.PN VisibilityFullyObscured .
+The X server ignores all of a window's subwindows
+when determining the visibility state of the window and processes
+.PN VisibilityNotify
+events according to the following:
+.IP \(bu 5
+When the window changes state from partially obscured, fully obscured,
+or not viewable to viewable and completely unobscured,
+the X server generates the event with the state member of the
+.PN XVisibilityEvent
+structure set to
+.PN VisibilityUnobscured .
+.IP \(bu 5
+When the window changes state from viewable and completely unobscured or
+not viewable to viewable and partially obscured,
+the X server generates the event with the state member of the
+.PN XVisibilityEvent
+structure set to
+.PN VisibilityPartiallyObscured .
+.IP \(bu 5
+When the window changes state from viewable and completely unobscured,
+viewable and partially obscured, or not viewable to viewable and
+fully obscured,
+the X server generates the event with the state member of the
+.PN XVisibilityEvent
+structure set to
+.PN VisibilityFullyObscured .
+.NH 2
+Structure Control Events
+.XS
+\*(SN Structure Control Events
+.XE
+.LP
+This section discusses:
+.IP \(bu 5
+.PN CirculateRequest
+events
+.IP \(bu 5
+.PN ConfigureRequest
+events
+.IP \(bu 5
+.PN MapRequest
+events
+.IP \(bu 5
+.PN ResizeRequest
+events
+.NH 3
+CirculateRequest Events
+.XS
+\*(SN CirculateRequest Events
+.XE
+.LP
+.IN "Events" "CirculateRequest"
+.IN "CirculateRequest" "" "@DEF@"
+The X server can report
+.PN CirculateRequest
+events to clients wanting information about
+when another client initiates a circulate window request
+on a specified window.
+The X server generates this event type whenever a client initiates a circulate
+window request on a window and a subwindow actually needs to be restacked.
+The client initiates a circulate window request on the window by calling
+.PN XCirculateSubwindows ,
+.PN XCirculateSubwindowsUp ,
+or
+.PN XCirculateSubwindowsDown .
+.LP
+To receive
+.PN CirculateRequest
+events, set the
+.PN SubstructureRedirectMask
+in the event-mask attribute of the window.
+Then, in the future,
+the circulate window request for the specified window is not executed,
+and thus, any subwindow's position in the stack is not changed.
+For example, suppose a client application calls
+.PN XCirculateSubwindowsUp
+to raise a subwindow to the top of the stack.
+If you had selected
+.PN SubstructureRedirectMask
+on the window, the X server reports to you a
+.PN CirculateRequest
+event and does not raise the subwindow to the top of the stack.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XCirculateRequestEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* CirculateRequest */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateRequestEvent;
+.De
+.LP
+.eM
+The parent member is set to the parent window.
+The window member is set to the subwindow to be restacked.
+The place member is set to what the new position in the stacking order should be
+and is either
+.PN PlaceOnTop
+or
+.PN PlaceOnBottom .
+If it is
+.PN PlaceOnTop ,
+the subwindow should be on top of all siblings.
+If it is
+.PN PlaceOnBottom ,
+the subwindow should be below all siblings.
+.NH 3
+ConfigureRequest Events
+.XS
+\*(SN ConfigureRequest Events
+.XE
+.LP
+.IN "Events" "ConfigureRequest"
+.IN "ConfigureRequest" "" "@DEF@"
+The X server can report
+.PN ConfigureRequest
+events to clients wanting information about when a different client initiates
+a configure window request on any child of a specified window.
+The configure window request attempts to
+reconfigure a window's size, position, border, and stacking order.
+The X server generates this event whenever a different client initiates
+a configure window request on a window by calling
+.PN XConfigureWindow ,
+.PN XLowerWindow ,
+.PN XRaiseWindow ,
+.PN XMapRaised ,
+.PN XMoveResizeWindow ,
+.PN XMoveWindow ,
+.PN XResizeWindow ,
+.PN XRestackWindows ,
+or
+.PN XSetWindowBorderWidth .
+.LP
+To receive
+.PN ConfigureRequest
+events, set the
+.PN SubstructureRedirectMask
+bit in the event-mask attribute of the window.
+.PN ConfigureRequest
+events are generated when a
+.PN ConfigureWindow
+protocol request is issued on a child window by another client.
+For example, suppose a client application calls
+.PN XLowerWindow
+to lower a window.
+If you had selected
+.PN SubstructureRedirectMask
+on the parent window and if the override-redirect attribute
+of the window is set to
+.PN False ,
+the X server reports a
+.PN ConfigureRequest
+event to you and does not lower the specified window.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XConfigureRequestEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* ConfigureRequest */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ int detail; /* Above, Below, TopIf, BottomIf, Opposite */
+ unsigned long value_mask;
+} XConfigureRequestEvent;
+.De
+.LP
+.eM
+The parent member is set to the parent window.
+The window member is set to the window whose size, position, border width,
+and/or stacking order is to be reconfigured.
+The value_mask member indicates which components were specified in the
+.PN ConfigureWindow
+protocol request.
+The corresponding values are reported as given in the request.
+The remaining values are filled in from the current geometry of the window,
+except in the case of above (sibling) and detail (stack-mode),
+which are reported as
+.PN None
+and
+.PN Above ,
+respectively, if they are not given in the request.
+.NH 3
+MapRequest Events
+.XS
+\*(SN MapRequest Events
+.XE
+.LP
+.IN "Events" "MapRequest"
+.IN "MapRequest" "" "@DEF@"
+The X server can report
+.PN MapRequest
+events to clients wanting information about a different client's desire
+to map windows.
+A window is considered mapped when a map window request completes.
+The X server generates this event whenever a different client initiates
+a map window request on an unmapped window whose override_redirect member
+is set to
+.PN False .
+Clients initiate map window requests by calling
+.PN XMapWindow ,
+.PN XMapRaised ,
+or
+.PN XMapSubwindows .
+.LP
+To receive
+.PN MapRequest
+events, set the
+.PN SubstructureRedirectMask
+bit in the event-mask attribute of the window.
+This means another client's attempts to map a child window by calling one of
+the map window request functions is intercepted, and you are sent a
+.PN MapRequest
+instead.
+For example, suppose a client application calls
+.PN XMapWindow
+to map a window.
+If you (usually a window manager) had selected
+.PN SubstructureRedirectMask
+on the parent window and if the override-redirect attribute
+of the window is set to
+.PN False ,
+the X server reports a
+.PN MapRequest
+event to you
+and does not map the specified window.
+Thus, this event gives your window manager client the ability
+to control the placement of subwindows.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XMapRequestEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* MapRequest */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+} XMapRequestEvent;
+.De
+.LP
+.eM
+The parent member is set to the parent window.
+The window member is set to the window to be mapped.
+.NH 3
+ResizeRequest Events
+.XS
+\*(SN ResizeRequest Events
+.XE
+.LP
+.IN "Events" "ResizeRequest"
+.IN "ResizeRequest" "" "@DEF@"
+The X server can report
+.PN ResizeRequest
+events to clients wanting information about another client's attempts to change the
+size of a window.
+The X server generates this event whenever some other client attempts to change
+the size of the specified window by calling
+.PN XConfigureWindow ,
+.PN XResizeWindow ,
+or
+.PN XMoveResizeWindow .
+.LP
+To receive
+.PN ResizeRequest
+events, set the
+.PN ResizeRedirect
+bit in the event-mask attribute of the window.
+Any attempts to change the size by other clients are then redirected.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XResizeRequestEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* ResizeRequest */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int width, height;
+} XResizeRequestEvent;
+.De
+.LP
+.eM
+The window member is set to the window whose size another
+client attempted to change.
+The width and height members are set to the inside size of the window,
+excluding the border.
+.NH 2
+Colormap State Change Events
+.XS
+\*(SN Colormap State Change Events
+.XE
+.LP
+.IN "Events" "ColormapNotify"
+.IN "ColormapNotify" "" "@DEF@"
+The X server can report
+.PN ColormapNotify
+events to clients wanting information about when the colormap changes
+and when a colormap is installed or uninstalled.
+The X server generates this event type whenever a client application:
+.IP \(bu 5
+Changes the colormap member of the
+.PN XSetWindowAttributes
+structure by
+calling
+.PN XChangeWindowAttributes ,
+.PN XFreeColormap ,
+or
+.PN XSetWindowColormap
+.IP \(bu 5
+Installs or uninstalls the colormap by calling
+.PN XInstallColormap
+or
+.PN XUninstallColormap
+.LP
+To receive
+.PN ColormapNotify
+events, set the
+.PN ColormapChangeMask
+bit in the event-mask attribute of the window.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XColormapEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* ColormapNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Colormap colormap; /* colormap or None */
+ Bool new;
+ int state; /* ColormapInstalled, ColormapUninstalled */
+} XColormapEvent;
+.De
+.LP
+.eM
+The window member is set to the window whose associated
+colormap is changed, installed, or uninstalled.
+For a colormap that is changed, installed, or uninstalled,
+the colormap member is set to the colormap associated with the window.
+For a colormap that is changed by a call to
+.PN XFreeColormap ,
+the colormap member is set to
+.PN None .
+The new member is set to indicate whether the colormap
+for the specified window was changed or installed or uninstalled
+and can be
+.PN True
+or
+.PN False .
+If it is
+.PN True ,
+the colormap was changed.
+If it is
+.PN False ,
+the colormap was installed or uninstalled.
+The state member is always set to indicate whether the colormap is installed or
+uninstalled and can be
+.PN ColormapInstalled
+or
+.PN ColormapUninstalled .
+.NH 2
+Client Communication Events
+.XS
+\*(SN Client Communication Events
+.XE
+.LP
+This section discusses:
+.IP \(bu 5
+.PN ClientMessage
+events
+.IP \(bu 5
+.PN PropertyNotify
+events
+.IP \(bu 5
+.PN SelectionClear
+events
+.IP \(bu 5
+.PN SelectionNotify
+events
+.IP \(bu 5
+.PN SelectionRequest
+events
+.NH 3
+ClientMessage Events
+.XS
+\*(SN ClientMessage Events
+.XE
+.LP
+.IN "Events" "ClientMessage"
+.IN "ClientMessage" "" "@DEF@"
+The X server generates
+.PN ClientMessage
+events only when a client calls the function
+.PN XSendEvent .
+.LP
+The structure for this event type contains:
+.LP
+.IN "XClientMessageEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 1i 3i
+.ta .5i 1i 3i
+typedef struct {
+ int type; /* ClientMessage */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom message_type;
+ int format;
+ union {
+ char b[20];
+ short s[10];
+ long l[5];
+ } data;
+} XClientMessageEvent;
+.De
+.LP
+.eM
+The message_type member is set to an atom that indicates how the data
+should be interpreted by the receiving client.
+The format member is set to 8, 16, or 32 and specifies whether the data
+should be viewed as a list of bytes, shorts, or longs.
+The data member is a union that contains the members b, s, and l.
+The b, s, and l members represent data of twenty 8-bit values,
+ten 16-bit values, and five 32-bit values.
+Particular message types might not make use of all these values.
+The X server places no interpretation on the values in the window,
+message_type, or data members.
+.NH 3
+PropertyNotify Events
+.XS
+\*(SN PropertyNotify Events
+.XE
+.LP
+.IN "Events" "PropertyNotify"
+.IN "PropertyNotify" "" "@DEF@"
+The X server can report
+.PN PropertyNotify
+events to clients wanting information about property changes
+for a specified window.
+.LP
+To receive
+.PN PropertyNotify
+events, set the
+.PN PropertyChangeMask
+bit in the event-mask attribute of the window.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XPropertyEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* PropertyNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom atom;
+ Time time;
+ int state; /* PropertyNewValue or PropertyDelete */
+} XPropertyEvent;
+.De
+.LP
+.eM
+The window member is set to the window whose associated
+property was changed.
+The atom member is set to the property's atom and indicates which
+property was changed or desired.
+The time member is set to the server time when the property was changed.
+The state member is set to indicate whether the property was changed
+to a new value or deleted and can be
+.PN PropertyNewValue
+or
+.PN PropertyDelete .
+The state member is set to
+.PN PropertyNewValue
+when a property of the window is changed using
+.PN XChangeProperty
+or
+.PN XRotateWindowProperties
+(even when adding zero-length data using
+.PN XChangeProperty )
+and when replacing all or part of a property with identical data using
+.PN XChangeProperty
+or
+.PN XRotateWindowProperties .
+The state member is set to
+.PN PropertyDelete
+when a property of the window is deleted using
+.PN XDeleteProperty
+or, if the delete argument is
+.PN True ,
+.PN XGetWindowProperty .
+.NH 3
+SelectionClear Events
+.XS
+\*(SN SelectionClear Events
+.XE
+.LP
+.IN "Events" "SelectionClear"
+.IN "SelectionClear" "" "@DEF@"
+The X server reports
+.PN SelectionClear
+events to the client losing ownership of a selection.
+The X server generates this event type when another client
+asserts ownership of the selection by calling
+.PN XSetSelectionOwner .
+.LP
+The structure for this event type contains:
+.LP
+.IN "XSelectionClearEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* SelectionClear */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom selection;
+ Time time;
+} XSelectionClearEvent;
+.De
+.LP
+.eM
+The selection member is set to the selection atom.
+The time member is set to the last change time recorded for the
+selection.
+The window member is the window that was specified by the current owner
+(the owner losing the selection) in its
+.PN XSetSelectionOwner
+call.
+.NH 3
+SelectionRequest Events
+.XS
+\*(SN SelectionRequest Events
+.XE
+.LP
+.IN "Events" "SelectionRequest"
+.IN "SelectionRequest" "" "@DEF@"
+The X server reports
+.PN SelectionRequest
+events to the owner of a selection.
+The X server generates this event whenever a client
+requests a selection conversion by calling
+.PN XConvertSelection
+for the owned selection.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XSelectionRequestEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* SelectionRequest */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window owner;
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property;
+ Time time;
+} XSelectionRequestEvent;
+.De
+.LP
+.eM
+The owner member is set to the window
+that was specified by the current owner in its
+.PN XSetSelectionOwner
+call.
+The requestor member is set to the window requesting the selection.
+The selection member is set to the atom that names the selection.
+For example, PRIMARY is used to indicate the primary selection.
+The target member is set to the atom that indicates the type
+the selection is desired in.
+The property member can be a property name or
+.PN None .
+The time member is set to the timestamp or
+.PN CurrentTime
+value from the
+.PN ConvertSelection
+request.
+.LP
+The owner should convert the selection based on the specified target type
+and send a
+.PN SelectionNotify
+event back to the requestor.
+A complete specification for using selections is given in the X Consortium
+standard \fIInter-Client Communication Conventions Manual\fP.
+.NH 3
+SelectionNotify Events
+.XS
+\*(SN SelectionNotify Events
+.XE
+.LP
+.IN "Events" "SelectionNotify"
+.IN "SelectionNotify" "" "@DEF@"
+This event is generated by the X server in response to a
+.PN ConvertSelection
+protocol request when there is no owner for the selection.
+When there is an owner, it should be generated by the owner
+of the selection by using
+.PN XSendEvent .
+The owner of a selection should send this event to a requestor when a selection
+has been converted and stored as a property
+or when a selection conversion could
+not be performed (which is indicated by setting the property member to
+.PN None ).
+.LP
+If
+.PN None
+is specified as the property in the
+.PN ConvertSelection
+protocol request, the owner should choose a property name,
+store the result as that property on the requestor window,
+and then send a
+.PN SelectionNotify
+giving that actual property name.
+.LP
+The structure for this event type contains:
+.LP
+.IN "XSelectionEvent" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* SelectionNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property; /* atom or None */
+ Time time;
+} XSelectionEvent;
+.De
+.LP
+.eM
+The requestor member is set to the window associated with
+the requestor of the selection.
+The selection member is set to the atom that indicates the selection.
+For example, PRIMARY is used for the primary selection.
+The target member is set to the atom that indicates the converted type.
+For example, PIXMAP is used for a pixmap.
+The property member is set to the atom that indicates which
+property the result was stored on.
+If the conversion failed,
+the property member is set to
+.PN None .
+The time member is set to the time the conversion took place and
+can be a timestamp or
+.PN CurrentTime .
+.bp
diff --git a/specs/X11/CH11 b/specs/X11/CH11
new file mode 100644
index 0000000..09d845d
--- /dev/null
+++ b/specs/X11/CH11
@@ -0,0 +1,1664 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 11\fP\s-1
+
+\s+1\fBEvent Handling Functions\fP\s-1
+.sp 2
+.nr H1 11
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 11: Event Handling Functions
+.XE
+This chapter discusses the Xlib functions you can use to:
+.IP \(bu 5
+Select events
+.IP \(bu 5
+Handle the output buffer and the event queue
+.IP \(bu 5
+Select events from the event queue
+.IP \(bu 5
+Send and get events
+.IP \(bu 5
+Handle protocol errors
+.NT Note
+Some toolkits use their own event-handling functions
+and do not allow you to interchange these event-handling functions
+with those in Xlib.
+For further information,
+see the documentation supplied with the toolkit.
+.NE
+.LP
+Most applications simply are event loops:
+they wait for an event, decide what to do with it,
+execute some amount of code that results in changes to the display,
+and then wait for the next event.
+.NH 2
+Selecting Events
+.XS
+\*(SN Selecting Events
+.XE
+.LP
+There are two ways to select the events you want reported to your client
+application.
+One way is to set the event_mask member of the
+.PN XSetWindowAttributes
+structure when you call
+.PN XCreateWindow
+and
+.PN XChangeWindowAttributes .
+Another way is to use
+.PN XSelectInput .
+.IN "XSelectInput" "" "@DEF@"
+.sM
+.FD 0
+XSelectInput\^(\^\fIdisplay\fP, \fIw\fP\^, \fIevent_mask\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ long \fIevent_mask\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose events you are interested in
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.LP
+.eM
+The
+.PN XSelectInput
+function requests that the X server report the events associated with the
+specified event mask.
+Initially, X will not report any of these events.
+Events are reported relative to a window.
+If a window is not interested in a device event, it usually propagates to
+the closest ancestor that is interested,
+unless the do_not_propagate mask prohibits it.
+.IN "Event" "propagation"
+.LP
+Setting the event-mask attribute of a window overrides any previous call
+for the same window but not for other clients.
+Multiple clients can select for the same events on the same window
+with the following restrictions:
+.IP \(bu 5
+Multiple clients can select events on the same window because their event masks
+are disjoint.
+When the X server generates an event, it reports it
+to all interested clients.
+.IP \(bu 5
+Only one client at a time can select
+.PN CirculateRequest ,
+.PN ConfigureRequest ,
+or
+.PN MapRequest
+events, which are associated with
+the event mask
+.PN SubstructureRedirectMask .
+.IP \(bu 5
+Only one client at a time can select
+a
+.PN ResizeRequest
+event, which is associated with
+the event mask
+.PN ResizeRedirectMask .
+.IP \(bu 5
+Only one client at a time can select a
+.PN ButtonPress
+event, which is associated with
+the event mask
+.PN ButtonPressMask .
+.LP
+The server reports the event to all interested clients.
+.LP
+.PN XSelectInput
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Handling the Output Buffer
+.XS
+\*(SN Handling the Output Buffer
+.XE
+.LP
+The output buffer is an area used by Xlib to store requests.
+The functions described in this section flush the output buffer
+if the function would block or not return an event.
+That is, all requests residing in the output buffer that
+have not yet been sent are transmitted to the X server.
+These functions differ in the additional tasks they might perform.
+.LP
+.sp
+To flush the output buffer, use
+.PN XFlush .
+.IN "XFlush" "" "@DEF@"
+.sM
+.FD 0
+XFlush\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XFlush
+function
+flushes the output buffer.
+Most client applications need not use this function because the output
+buffer is automatically flushed as needed by calls to
+.PN XPending ,
+.PN XNextEvent ,
+and
+.PN XWindowEvent .
+.IN "XPending"
+.IN "XNextEvent"
+.IN "XWindowEvent"
+Events generated by the server may be enqueued into the library's event queue.
+.LP
+.sp
+To flush the output buffer and then wait until all requests have been processed,
+use
+.PN XSync .
+.IN "XSync" "" "@DEF@"
+.sM
+.FD 0
+XSync\^(\^\fIdisplay\fP, \fIdiscard\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Bool \fIdiscard\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdiscard\fP 1i
+Specifies a Boolean value that indicates whether
+.PN XSync
+discards all events on the event queue.
+.LP
+.eM
+The
+.PN XSync
+function
+flushes the output buffer and then waits until all requests have been received
+and processed by the X server.
+Any errors generated must be handled by the error handler.
+For each protocol error received by Xlib,
+.PN XSync
+calls the client application's error handling routine (see section 11.8.2).
+Any events generated by the server are enqueued into the library's
+event queue.
+.LP
+Finally, if you passed
+.PN False ,
+.PN XSync
+does not discard the events in the queue.
+If you passed
+.PN True ,
+.PN XSync
+discards all events in the queue,
+including those events that were on the queue before
+.PN XSync
+was called.
+Client applications seldom need to call
+.PN XSync .
+.NH 2
+Event Queue Management
+.XS
+\*(SN Event Queue Management
+.XE
+.LP
+Xlib maintains an event queue.
+However, the operating system also may be buffering data
+in its network connection that is not yet read into the event queue.
+.LP
+.sp
+To check the number of events in the event queue, use
+.PN XEventsQueued .
+.IN "XEventsQueued" "" "@DEF@"
+.sM
+.FD 0
+int XEventsQueued\^(\^\fIdisplay\fP, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImode\fP 1i
+Specifies the mode.
+You can pass
+.PN QueuedAlready ,
+.PN QueuedAfterFlush ,
+or
+.PN QueuedAfterReading .
+.LP
+.eM
+If mode is
+.PN QueuedAlready ,
+.PN XEventsQueued
+returns the number of events
+already in the event queue (and never performs a system call).
+If mode is
+.PN QueuedAfterFlush ,
+.PN XEventsQueued
+returns the number of events already in the queue if the number is nonzero.
+If there are no events in the queue,
+.PN XEventsQueued
+flushes the output buffer,
+attempts to read more events out of the application's connection,
+and returns the number read.
+If mode is
+.PN QueuedAfterReading ,
+.PN XEventsQueued
+returns the number of events already in the queue if the number is nonzero.
+If there are no events in the queue,
+.PN XEventsQueued
+attempts to read more events out of the application's connection
+without flushing the output buffer and returns the number read.
+.LP
+.PN XEventsQueued
+always returns immediately without I/O if there are events already in the
+queue.
+.PN XEventsQueued
+with mode
+.PN QueuedAfterFlush
+is identical in behavior to
+.PN XPending .
+.PN XEventsQueued
+with mode
+.PN QueuedAlready
+is identical to the
+.PN XQLength
+function.
+.LP
+.sp
+To return the number of events that are pending, use
+.PN XPending .
+.IN "XPending" "" "@DEF@"
+.sM
+.FD 0
+int XPending\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XPending
+function returns the number of events that have been received from the
+X server but have not been removed from the event queue.
+.PN XPending
+is identical to
+.PN XEventsQueued
+with the mode
+.PN QueuedAfterFlush
+specified.
+.NH 2
+Manipulating the Event Queue
+.XS
+\*(SN Manipulating the Event Queue
+.XE
+.LP
+Xlib provides functions that let you manipulate the event queue.
+This section discusses how to:
+.IP \(bu 5
+Obtain events, in order, and remove them from the queue
+.IP \(bu 5
+Peek at events in the queue without removing them
+.IP \(bu 5
+Obtain events that match the event mask or the arbitrary
+predicate procedures that you provide
+.NH 3
+Returning the Next Event
+.XS
+\*(SN Returning the Next Event
+.XE
+.LP
+To get the next event and remove it from the queue, use
+.PN XNextEvent .
+.IN "XNextEvent" "" "@DEF@"
+.sM
+.FD 0
+XNextEvent\^(\^\fIdisplay\fP, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_return\fP 1i
+Returns the next event in the queue.
+.LP
+.eM
+The
+.PN XNextEvent
+function copies the first event from the event queue into the specified
+.PN XEvent
+structure and then removes it from the queue.
+If the event queue is empty,
+.PN XNextEvent
+flushes the output buffer and blocks until an event is received.
+.LP
+.sp
+To peek at the event queue, use
+.PN XPeekEvent .
+.IN "XPeekEvent" "" "@DEF@"
+.sM
+.FD 0
+XPeekEvent\^(\^\fIdisplay\fP, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_return\fP 1i
+Returns a copy of the matched event's associated structure.
+.LP
+.eM
+The
+.PN XPeekEvent
+function returns the first event from the event queue,
+but it does not remove the event from the queue.
+If the queue is empty,
+.PN XPeekEvent
+flushes the output buffer and blocks until an event is received.
+It then copies the event into the client-supplied
+.PN XEvent
+structure without removing it from the event queue.
+.NH 3
+Selecting Events Using a Predicate Procedure
+.XS
+\*(SN Selecting Events Using a Predicate Procedure
+.XE
+.LP
+Each of the functions discussed in this section requires you to
+pass a predicate procedure that determines if an event matches
+what you want.
+Your predicate procedure must decide if the event is useful
+without calling any Xlib functions.
+If the predicate directly or indirectly causes the state of the event queue
+to change, the result is not defined.
+If Xlib has been initialized for threads, the predicate is called with
+the display locked and the result of a call by the predicate to any
+Xlib function that locks the display is not defined unless the caller
+has first called
+.PN XLockDisplay .
+.LP
+The predicate procedure and its associated arguments are:
+.sM
+.FD 0
+Bool (\^*\fIpredicate\fP\^)\^(\^\fIdisplay\fP, \fIevent\fP, \fIarg\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XEvent *\fIevent\fP\^;
+.br
+ XPointer \fIarg\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent\fP 1i
+Specifies the
+.PN XEvent
+structure.
+.IP \fIarg\fP 1i
+Specifies the argument passed in from the
+.PN XIfEvent ,
+.PN XCheckIfEvent ,
+or
+.PN XPeekIfEvent
+function.
+.LP
+.eM
+The predicate procedure is called once for each
+event in the queue until it finds a match.
+After finding a match, the predicate procedure must return
+.PN True .
+If it did not find a match, it must return
+.PN False .
+.LP
+.sp
+To check the event queue for a matching event
+and, if found, remove the event from the queue, use
+.PN XIfEvent .
+.IN "XIfEvent" "" "@DEF@"
+.sM
+.FD 0
+XIfEvent\^(\^\fIdisplay\fP, \fIevent_return\fP, \fIpredicate\fP, \fIarg\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.br
+ Bool (\^*\fIpredicate\fP\^)\^(\^)\^;
+.br
+ XPointer \fIarg\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_return\fP 1i
+Returns the matched event's associated structure.
+.IP \fIpredicate\fP 1i
+Specifies the procedure that is to be called to determine
+if the next event in the queue matches what you want.
+.IP \fIarg\fP 1i
+Specifies the user-supplied argument that will be passed to the predicate procedure.
+.LP
+.eM
+The
+.PN XIfEvent
+function completes only when the specified predicate
+procedure returns
+.PN True
+for an event,
+which indicates an event in the queue matches.
+.PN XIfEvent
+flushes the output buffer if it blocks waiting for additional events.
+.PN XIfEvent
+removes the matching event from the queue
+and copies the structure into the client-supplied
+.PN XEvent
+structure.
+.LP
+.sp
+To check the event queue for a matching event without blocking, use
+.PN XCheckIfEvent .
+.IN "XCheckIfEvent" "" "@DEF@"
+.sM
+.FD 0
+Bool XCheckIfEvent\^(\^\fIdisplay\fP, \fIevent_return\fP, \fIpredicate\fP, \fIarg\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.br
+ Bool (\^*\fIpredicate\fP\^)\^(\^)\^;
+.br
+ XPointer \fIarg\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_return\fP 1i
+Returns a copy of the matched event's associated structure.
+.IP \fIpredicate\fP 1i
+Specifies the procedure that is to be called to determine
+if the next event in the queue matches what you want.
+.IP \fIarg\fP 1i
+Specifies the user-supplied argument that will be passed to the predicate procedure.
+.LP
+.eM
+When the predicate procedure finds a match,
+.PN XCheckIfEvent
+copies the matched event into the client-supplied
+.PN XEvent
+structure and returns
+.PN True .
+(This event is removed from the queue.)
+If the predicate procedure finds no match,
+.PN XCheckIfEvent
+returns
+.PN False ,
+and the output buffer will have been flushed.
+All earlier events stored in the queue are not discarded.
+.LP
+.sp
+To check the event queue for a matching event
+without removing the event from the queue, use
+.PN XPeekIfEvent .
+.IN "XPeekIfEvent" "" "@DEF@"
+.sM
+.FD 0
+XPeekIfEvent\^(\^\fIdisplay\fP, \fIevent_return\fP, \fIpredicate\fP, \fIarg\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.br
+ Bool (\^*\fIpredicate\fP\^)\^(\^)\^;
+.br
+ XPointer \fIarg\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_return\fP 1i
+Returns a copy of the matched event's associated structure.
+.IP \fIpredicate\fP 1i
+Specifies the procedure that is to be called to determine
+if the next event in the queue matches what you want.
+.IP \fIarg\fP 1i
+Specifies the user-supplied argument that will be passed to the predicate procedure.
+.LP
+.eM
+The
+.PN XPeekIfEvent
+function returns only when the specified predicate
+procedure returns
+.PN True
+for an event.
+After the predicate procedure finds a match,
+.PN XPeekIfEvent
+copies the matched event into the client-supplied
+.PN XEvent
+structure without removing the event from the queue.
+.PN XPeekIfEvent
+flushes the output buffer if it blocks waiting for additional events.
+.NH 3
+Selecting Events Using a Window or Event Mask
+.XS
+\*(SN Selecting Events Using a Window or Event Mask
+.XE
+.LP
+The functions discussed in this section let you select events by window
+or event types, allowing you to process events out of order.
+.LP
+.sp
+To remove the next event that matches both a window and an event mask, use
+.PN XWindowEvent .
+.IN "XWindowEvent" "" "@DEF@"
+.sM
+.FD 0
+XWindowEvent\^(\^\fIdisplay\fP, \fIw\fP\^, \fIevent_mask\fP\^, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ long \fIevent_mask\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose events you are interested in
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.IP \fIevent_return\fP 1i
+Returns the matched event's associated structure.
+.LP
+.eM
+The
+.PN XWindowEvent
+function searches the event queue for an event that matches both the specified
+window and event mask.
+When it finds a match,
+.PN XWindowEvent
+removes that event from the queue and copies it into the specified
+.PN XEvent
+structure.
+The other events stored in the queue are not discarded.
+If a matching event is not in the queue,
+.PN XWindowEvent
+flushes the output buffer and blocks until one is received.
+.LP
+.sp
+To remove the next event that matches both a window and an event mask (if any),
+use
+.PN XCheckWindowEvent .
+.IN "XCheckWindowEvent"
+This function is similar to
+.PN XWindowEvent
+except that it never blocks and it returns a
+.PN Bool
+indicating if the event was returned.
+.IN "XCheckWindowEvent" "" "@DEF@"
+.sM
+.FD 0
+Bool XCheckWindowEvent\^(\^\fIdisplay\fP, \fIw\fP\^, \fIevent_mask\fP\^, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ long \fIevent_mask\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi whose events you are interested in
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.IP \fIevent_return\fP 1i
+Returns the matched event's associated structure.
+.LP
+.eM
+The
+.PN XCheckWindowEvent
+function searches the event queue and then the events available
+on the server connection for the first event that matches the specified window
+and event mask.
+If it finds a match,
+.PN XCheckWindowEvent
+removes that event, copies it into the specified
+.PN XEvent
+structure, and returns
+.PN True .
+The other events stored in the queue are not discarded.
+If the event you requested is not available,
+.PN XCheckWindowEvent
+returns
+.PN False ,
+and the output buffer will have been flushed.
+.LP
+.sp
+To remove the next event that matches an event mask, use
+.PN XMaskEvent .
+.IN "XMaskEvent" "" "@DEF@"
+.sM
+.FD 0
+XMaskEvent\^(\^\fIdisplay\fP, \fIevent_mask\fP\^, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ long \fIevent_mask\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.IP \fIevent_return\fP 1i
+Returns the matched event's associated structure.
+.LP
+.eM
+The
+.PN XMaskEvent
+function searches the event queue for the events associated with the
+specified mask.
+When it finds a match,
+.PN XMaskEvent
+removes that event and copies it into the specified
+.PN XEvent
+structure.
+The other events stored in the queue are not discarded.
+If the event you requested is not in the queue,
+.PN XMaskEvent
+flushes the output buffer and blocks until one is received.
+.LP
+.sp
+To return and remove the next event that matches an event mask (if any), use
+.PN XCheckMaskEvent .
+This function is similar to
+.PN XMaskEvent
+except that it never blocks and it returns a
+.PN Bool
+indicating if the event was returned.
+.IN "XCheckMaskEvent" "" "@DEF@"
+.sM
+.FD 0
+Bool XCheckMaskEvent\^(\^\fIdisplay\fP, \fIevent_mask\fP\^, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ long \fIevent_mask\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.IP \fIevent_return\fP 1i
+Returns the matched event's associated structure.
+.LP
+.eM
+The
+.PN XCheckMaskEvent
+function searches the event queue and then any events available on the
+server connection for the first event that matches the specified mask.
+If it finds a match,
+.PN XCheckMaskEvent
+removes that event, copies it into the specified
+.PN XEvent
+structure, and returns
+.PN True .
+The other events stored in the queue are not discarded.
+If the event you requested is not available,
+.PN XCheckMaskEvent
+returns
+.PN False ,
+and the output buffer will have been flushed.
+.LP
+.sp
+To return and remove the next event in the queue that matches an event type, use
+.PN XCheckTypedEvent .
+.IN "XCheckTypedEvent" "" "@DEF@"
+.sM
+.FD 0
+Bool XCheckTypedEvent\^(\^\fIdisplay\fP, \fIevent_type\fP\^, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIevent_type\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_type\fP 1i
+Specifies the event type to be compared.
+
+.IP \fIevent_return\fP 1i
+Returns the matched event's associated structure.
+.LP
+.eM
+The
+.PN XCheckTypedEvent
+function searches the event queue and then any events available
+on the server connection for the first event that matches the specified type.
+If it finds a match,
+.PN XCheckTypedEvent
+removes that event, copies it into the specified
+.PN XEvent
+structure, and returns
+.PN True .
+The other events in the queue are not discarded.
+If the event is not available,
+.PN XCheckTypedEvent
+returns
+.PN False ,
+and the output buffer will have been flushed.
+.LP
+.sp
+To return and remove the next event in the queue that matches an event type
+and a window, use
+.PN XCheckTypedWindowEvent .
+.IN "XCheckTypedWindowEvent" "" "@DEF@"
+.sM
+.FD 0
+Bool XCheckTypedWindowEvent\^(\^\fIdisplay\fP, \fIw\fP\^, \fIevent_type\fP\^, \fIevent_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIevent_type\fP\^;
+.br
+ XEvent *\fIevent_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIevent_type\fP 1i
+Specifies the event type to be compared.
+
+.IP \fIevent_return\fP 1i
+Returns the matched event's associated structure.
+.LP
+.eM
+The
+.PN XCheckTypedWindowEvent
+function searches the event queue and then any events available
+on the server connection for the first event that matches the specified
+type and window.
+If it finds a match,
+.PN XCheckTypedWindowEvent
+removes the event from the queue, copies it into the specified
+.PN XEvent
+structure, and returns
+.PN True .
+The other events in the queue are not discarded.
+If the event is not available,
+.PN XCheckTypedWindowEvent
+returns
+.PN False ,
+and the output buffer will have been flushed.
+.NH 2
+Putting an Event Back into the Queue
+.XS
+\*(SN Putting an Event Back into the Queue
+.XE
+.LP
+To push an event back into the event queue, use
+.PN XPutBackEvent .
+.IN "XPutBackEvent" "" "@DEF@"
+.sM
+.FD 0
+XPutBackEvent\^(\^\fIdisplay\fP, \fIevent\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XEvent *\fIevent\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent\fP 1i
+Specifies the event.
+.LP
+.eM
+The
+.PN XPutBackEvent
+function pushes an event back onto the head of the display's event queue
+by copying the event into the queue.
+This can be useful if you read an event and then decide that you
+would rather deal with it later.
+There is no limit to the number of times in succession that you can call
+.PN XPutBackEvent .
+.NH 2
+Sending Events to Other Applications
+.XS
+\*(SN Sending Events to Other Applications
+.XE
+.LP
+To send an event to a specified window, use
+.PN XSendEvent .
+.IN "XSendEvent"
+This function is often used in selection processing.
+For example, the owner of a selection should use
+.PN XSendEvent
+to send a
+.PN SelectionNotify
+event to a requestor when a selection has been converted
+and stored as a property.
+.IN "XSendEvent" "" "@DEF@"
+.sM
+.FD 0
+Status XSendEvent\^(\^\fIdisplay\fP, \fIw\fP\^, \fIpropagate\fP\^, \fIevent_mask\fP\^, \fIevent_send\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Bool \fIpropagate\fP\^;
+.br
+ long \fIevent_mask\fP\^;
+.br
+ XEvent *\fIevent_send\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window the event is to be sent to, or
+.PN PointerWindow ,
+or
+.PN InputFocus .
+.IP \fIpropagate\fP 1i
+Specifies a Boolean value.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.IP \fIevent_send\fP 1i
+Specifies the event that is to be sent.
+.LP
+.eM
+The
+.PN XSendEvent
+function identifies the destination window,
+determines which clients should receive the specified events,
+and ignores any active grabs.
+This function requires you to pass an event mask.
+For a discussion of the valid event mask names,
+see section 10.3.
+This function uses the w argument to identify the destination window as follows:
+.IP \(bu 5
+If w is
+.PN PointerWindow ,
+the destination window is the window that contains the pointer.
+.IP \(bu 5
+If w is
+.PN InputFocus
+and if the focus window contains the pointer,
+the destination window is the window that contains the pointer;
+otherwise, the destination window is the focus window.
+.LP
+To determine which clients should receive the specified events,
+.PN XSendEvent
+uses the propagate argument as follows:
+.IP \(bu 5
+If event_mask is the empty set,
+the event is sent to the client that created the destination window.
+If that client no longer exists,
+no event is sent.
+.IP \(bu 5
+If propagate is
+.PN False ,
+the event is sent to every client selecting on destination any of the event
+types in the event_mask argument.
+.IP \(bu 5
+If propagate is
+.PN True
+and no clients have selected on destination any of
+the event types in event-mask, the destination is replaced with the
+closest ancestor of destination for which some client has selected a
+type in event-mask and for which no intervening window has that type in its
+do-not-propagate-mask.
+If no such window exists or if the window is
+an ancestor of the focus window and
+.PN InputFocus
+was originally specified
+as the destination, the event is not sent to any clients.
+Otherwise, the event is reported to every client selecting on the final
+destination any of the types specified in event_mask.
+.LP
+The event in the
+.PN XEvent
+structure must be one of the core events or one of the events
+defined by an extension (or a
+.PN BadValue
+error results) so that the X server can correctly byte-swap
+the contents as necessary.
+The contents of the event are
+otherwise unaltered and unchecked by the X server except to force send_event to
+.PN True
+in the forwarded event and to set the serial number in the event correctly;
+therefore these fields
+and the display field are ignored by
+.PN XSendEvent .
+.LP
+.PN XSendEvent
+returns zero if the conversion to wire protocol format failed
+and returns nonzero otherwise.
+.LP
+.PN XSendEvent
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.NH 2
+Getting Pointer Motion History
+.XS
+\*(SN Getting Pointer Motion History
+.XE
+.LP
+Some X server implementations will maintain a more complete
+history of pointer motion than is reported by event notification.
+The pointer position at each pointer hardware interrupt may be
+stored in a buffer for later retrieval.
+This buffer is called the motion history buffer.
+For example, a few applications, such as paint programs,
+want to have a precise history of where the pointer
+traveled.
+However, this historical information is highly excessive for most applications.
+.LP
+.sp
+To determine the approximate maximum number of elements in the motion buffer,
+use
+.PN XDisplayMotionBufferSize .
+.IN "XDisplayMotionBufferSize" "" "@DEF@"
+.sM
+.FD 0
+unsigned long XDisplayMotionBufferSize\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The server may retain the recent history of the pointer motion
+and do so to a finer granularity than is reported by
+.PN MotionNotify
+events.
+The
+.PN XGetMotionEvents
+function makes this history available.
+.LP
+.sp
+To get the motion history for a specified window and time, use
+.PN XGetMotionEvents .
+.IN "XGetMotionEvents" "" "@DEF@"
+.sM
+.FD 0
+XTimeCoord *XGetMotionEvents\^(\^\fIdisplay\fP, \fIw\fP\^, \fIstart\fP\^, \fIstop\fP\^, \fInevents_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Time \fIstart\fP\^, \fIstop\fP\^;
+.br
+ int *\fInevents_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIstart\fP 1i
+.br
+.ns
+.IP \fIstop\fP 1i
+Specify the time interval in which the events are returned from the motion
+history buffer.
+You can pass a timestamp or
+.PN CurrentTime .
+.IP \fInevents_return\fP 1i
+Returns the number of events from the motion history buffer.
+.LP
+.eM
+The
+.PN XGetMotionEvents
+function returns all events in the motion history buffer that fall between the
+specified start and stop times, inclusive, and that have coordinates
+that lie within the specified window (including its borders) at its present
+placement.
+If the server does not support motion history,
+if the start time is later than the stop time,
+or if the start time is in the future,
+no events are returned;
+.PN XGetMotionEvents
+returns NULL.
+If the stop time is in the future, it is equivalent to specifying
+.PN CurrentTime .
+The return type for this function is a structure defined as follows:
+.LP
+.IN "XTimeCoord" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ Time time;
+ short x, y;
+} XTimeCoord;
+.De
+.LP
+.eM
+The time member is set to the time, in milliseconds.
+The x and y members are set to the coordinates of the pointer and
+are reported relative to the origin
+of the specified window.
+To free the data returned from this call, use
+.PN XFree .
+.LP
+.PN XGetMotionEvents
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Handling Protocol Errors
+.XS
+\*(SN Handling Protocol Errors
+.XE
+.LP
+Xlib provides functions that you can use to enable or disable synchronization
+and to use the default error handlers.
+.NH 3
+Enabling or Disabling Synchronization
+.XS
+\*(SN Enabling or Disabling Synchronization
+.XE
+.LP
+When debugging X applications,
+it often is very convenient to require Xlib to behave synchronously
+so that errors are reported as they occur.
+The following function lets you disable or enable synchronous behavior.
+Note that graphics may occur 30 or more times more slowly when
+synchronization is enabled.
+.IN "_Xdebug"
+On POSIX-conformant systems,
+there is also a global variable
+.PN _Xdebug
+that, if set to nonzero before starting a program under a debugger, will force
+synchronous library behavior.
+.LP
+After completing their work,
+all Xlib functions that generate protocol requests call what is known as
+an after function.
+.PN XSetAfterFunction
+sets which function is to be called.
+.IN "XSetAfterFunction" "" "@DEF@"
+.sM
+.FD 0
+int (*XSetAfterFunction\^(\^\fIdisplay\fP, \fIprocedure\fP\^))()
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int (\^*\^\fIprocedure\fP\^)\^();
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIprocedure\fP 1i
+Specifies the procedure to be called.
+.LP
+.eM
+The specified procedure is called with only a display pointer.
+.PN XSetAfterFunction
+returns the previous after function.
+.LP
+To enable or disable synchronization, use
+.PN XSynchronize .
+.IN "Debugging" "synchronous mode"
+.IN "XSynchronize" "" "@DEF@"
+.sM
+.FD 0
+int (*XSynchronize\^(\^\fIdisplay\fP, \fIonoff\fP\^)\^)()
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Bool \fIonoff\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIonoff\fP 1i
+Specifies a Boolean value that indicates whether to enable
+or disable synchronization.
+.LP
+.eM
+The
+.PN XSynchronize
+function returns
+the previous after function.
+If onoff is
+.PN True ,
+.PN XSynchronize
+turns on synchronous behavior.
+If onoff is
+.PN False ,
+.PN XSynchronize
+turns off synchronous behavior.
+.NH 3
+Using the Default Error Handlers
+.XS
+\*(SN Using the Default Error Handlers
+.XE
+.LP
+.IN "Debugging" "error handlers"
+.IN "Error" "handlers"
+There are two default error handlers in Xlib:
+one to handle typically fatal conditions (for example,
+the connection to a display server dying because a machine crashed)
+and one to handle protocol errors from the X server.
+These error handlers can be changed to user-supplied routines if you
+prefer your own error handling and can be changed as often as you like.
+If either function is passed a NULL pointer, it will
+reinvoke the default handler.
+The action of the default handlers is to print an explanatory
+message and exit.
+.LP
+.sp
+To set the error handler, use
+.PN XSetErrorHandler .
+.IN "XSetErrorHandler" "" "@DEF@"
+.sM
+.FD 0
+int (*XSetErrorHandler\^(\^\fIhandler\fP\^)\^)\^(\^)
+.br
+ int (\^*\^\fIhandler\fP\^)\^(Display *, XErrorEvent *)
+.FN
+.IP \fIhandler\fP 1i
+Specifies the program's supplied error handler.
+.LP
+.eM
+Xlib generally calls the program's
+supplied error handler whenever an error is received.
+It is not called on
+.PN BadName
+errors from
+.PN OpenFont ,
+.PN LookupColor ,
+or
+.PN AllocNamedColor
+protocol requests or on
+.PN BadFont
+errors from a
+.PN QueryFont
+protocol request.
+These errors generally are reflected back to the program through the
+procedural interface.
+Because this condition is not assumed to be fatal,
+it is acceptable for your error handler to return;
+the returned value is ignored.
+However, the error handler should not
+call any functions (directly or indirectly) on the display
+that will generate protocol requests or that will look for input events.
+The previous error handler is returned.
+.LP
+The
+.PN XErrorEvent
+structure contains:
+.IN "Debugging" "error event"
+.LP
+.IN "XErrorEvent" "" "@DEF"
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ int type;
+ Display *display; /* Display the event was read from */
+ unsigned long serial; /* serial number of failed request */
+ unsigned char error_code; /* error code of failed request */
+ unsigned char request_code; /* Major op-code of failed request */
+ unsigned char minor_code; /* Minor op-code of failed request */
+ XID resourceid; /* resource id */
+} XErrorEvent;
+.De
+.LP
+.IN "Serial Number"
+The serial member is the number of requests, starting from one,
+sent over the network connection since it was opened.
+It is the number that was the value of
+.PN NextRequest
+immediately before the failing call was made.
+The request_code member is a protocol request
+of the procedure that failed, as defined in
+.hN X11/Xproto.h .
+The following error codes can be returned by the functions described in this
+chapter:
+.br
+.ne 13
+.IN "Debugging" "error numbers"
+.IN "Error" "codes"
+.\".CP T 3
+.\"Error Codes
+.IN "BadAccess" "" "@DEF@"
+.IN "BadAlloc" "" "@DEF@"
+.IN "BadAtom" "" "@DEF@"
+.IN "BadColor" "" "@DEF@"
+.IN "BadCursor" "" "@DEF@"
+.IN "BadDrawable" "" "@DEF@"
+.IN "BadFont" "" "@DEF@"
+.IN "BadGC" "" "@DEF@"
+.IN "BadIDChoice" "" "@DEF@"
+.TS H
+l c
+lw(1.75i) lw(4i).
+_
+.sp 6p
+.B
+Error Code Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN BadAccess
+T} T{
+A client attempts to grab a key/button combination already grabbed
+by another client.
+.sp 3p
+A client attempts to free a colormap entry that it had not already allocated
+or to free an entry in a colormap that was created with all entries writable.
+.sp 3p
+A client attempts to store into a read-only or unallocated colormap entry.
+.sp 3p
+A client attempts to modify the access control list from other than the local
+(or otherwise authorized) host.
+.sp 3p
+A client attempts to select an event type that another client
+has already selected.
+T}
+.sp 3p
+T{
+.PN BadAlloc
+T} T{
+The server fails to allocate the requested resource.
+Note that the explicit listing of
+.PN BadAlloc
+errors in requests only covers allocation errors at a very coarse level
+and is not intended to (nor can it in practice hope to) cover all cases of
+a server running out of allocation space in the middle of service.
+The semantics when a server runs out of allocation space are left unspecified,
+but a server may generate a
+.PN BadAlloc
+error on any request for this reason,
+and clients should be prepared to receive such errors and handle or discard
+them.
+T}
+.sp 3p
+T{
+.PN BadAtom
+T} T{
+A value for an atom argument does not name a defined atom.
+T}
+.sp 3p
+T{
+.PN BadColor
+T} T{
+A value for a colormap argument does not name a defined colormap.
+T}
+.sp 3p
+T{
+.PN BadCursor
+T} T{
+A value for a cursor argument does not name a defined cursor.
+T}
+.sp 3p
+T{
+.PN BadDrawable
+T} T{
+A value for a drawable argument does not name a defined window or pixmap.
+T}
+.sp 3p
+T{
+.PN BadFont
+T} T{
+A value for a font argument does not name a defined font (or, in some cases,
+.PN GContext ).
+T}
+.sp 3p
+T{
+.PN BadGC
+T} T{
+A value for a
+.PN GContext
+argument does not name a defined
+.PN GContext .
+T}
+.sp 3p
+T{
+.PN BadIDChoice
+T} T{
+The value chosen for a resource identifier either is not included in the
+range assigned to the client or is already in use.
+Under normal circumstances,
+this cannot occur and should be considered a server or Xlib error.
+T}
+.sp 3p
+T{
+.PN BadImplementation
+T} T{
+The server does not implement some aspect of the request.
+A server that generates this error for a core request is deficient.
+As such, this error is not listed for any of the requests,
+but clients should be prepared to receive such errors
+and handle or discard them.
+T}
+.sp 3p
+T{
+.PN BadLength
+T} T{
+The length of a request is shorter or longer than that required to
+contain the arguments.
+This is an internal Xlib or server error.
+.sp 3p
+The length of a request exceeds the maximum length accepted by the server.
+T}
+.sp 3p
+T{
+.PN BadMatch
+T} T{
+In a graphics request,
+the root and depth of the graphics context do not match those of the drawable.
+.sp 3p
+An
+.PN InputOnly
+window is used as a drawable.
+.sp 3p
+Some argument or pair of arguments has the correct type and range,
+but it fails to match in some other way required by the request.
+.sp 3p
+An
+.PN InputOnly
+window lacks this attribute.
+T}
+.sp 3p
+T{
+.PN BadName
+T} T{
+A font or color of the specified name does not exist.
+T}
+.sp 3p
+T{
+.PN BadPixmap
+T} T{
+A value for a pixmap argument does not name a defined pixmap.
+T}
+.sp 3p
+T{
+.PN BadRequest
+T} T{
+The major or minor opcode does not specify a valid request.
+This usually is an Xlib or server error.
+T}
+.sp 3p
+T{
+.PN BadValue
+T} T{
+Some numeric value falls outside of the range of values accepted
+by the request.
+Unless a specific range is specified for an argument,
+the full range defined by the argument's type is accepted.
+Any argument defined as a set of alternatives typically can generate
+this error (due to the encoding).
+T}
+.sp 3p
+T{
+.PN BadWindow
+T} T{
+A value for a window argument does not name a defined window.
+T}
+.sp 6p
+_
+.TE
+.IN "BadImplementation" "" "@DEF@"
+.IN "BadLength" "" "@DEF@"
+.IN "BadMatch" "" "@DEF@"
+.IN "BadName" "" "@DEF@"
+.IN "BadPixmap" "" "@DEF@"
+.IN "BadRequest" "" "@DEF@"
+.IN "BadValue" "" "@DEF@"
+.IN "BadWindow" "" "@DEF@"
+.NT Note
+The
+.PN BadAtom ,
+.PN BadColor ,
+.PN BadCursor ,
+.PN BadDrawable ,
+.PN BadFont ,
+.PN BadGC ,
+.PN BadPixmap ,
+and
+.PN BadWindow
+errors are also used when the argument type is extended by a set of
+fixed alternatives.
+.NE
+.sp
+.LP
+To obtain textual descriptions of the specified error code, use
+.PN XGetErrorText .
+.IN "XGetErrorText" "" "@DEF@"
+.IN "Debugging" "error message strings"
+.sM
+.FD 0
+XGetErrorText\^(\^\fIdisplay\fP, \fIcode\fP, \fIbuffer_return\fP, \fIlength\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIcode\fP\^;
+.br
+ char *\fIbuffer_return\fP\^;
+.br
+ int \fIlength\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcode\fP 1i
+Specifies the error code for which you want to obtain a description.
+.IP \fIbuffer_return\fP 1i
+Returns the error description.
+.IP \fIlength\fP 1i
+Specifies the size of the buffer.
+.LP
+.eM
+The
+.PN XGetErrorText
+function copies a null-terminated string describing the specified error code
+into the specified buffer.
+The returned text is in the encoding of the current locale.
+It is recommended that you use this function to obtain an error description
+because extensions to Xlib may define their own error codes
+and error strings.
+.LP
+.sp
+To obtain error messages from the error database, use
+.PN XGetErrorDatabaseText .
+.IN "XGetErrorDatabaseText" "" "@DEF@"
+.sM
+.FD 0
+XGetErrorDatabaseText\^(\^\fIdisplay\fP, \fIname\fP, \fImessage\fP, \fIdefault_string\fP, \fIbuffer_return\fP, \fIlength\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIname\fP, *\fImessage\fP\^;
+.br
+ char *\fIdefault_string\fP\^;
+.br
+ char *\fIbuffer_return\fP\^;
+.br
+ int \fIlength\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIname\fP 1i
+Specifies the name of the application.
+.IP \fImessage\fP 1i
+Specifies the type of the error message.
+.IP \fIdefault_string\fP 1i
+Specifies the default error message if none is found in the database.
+.IP \fIbuffer_return\fP 1i
+Returns the error description.
+.IP \fIlength\fP 1i
+Specifies the size of the buffer.
+.LP
+.eM
+The
+.PN XGetErrorDatabaseText
+function returns a null-terminated message
+(or the default message) from the error message
+database.
+Xlib uses this function internally to look up its error messages.
+The text in the default_string argument is assumed
+to be in the encoding of the current locale,
+and the text stored in the buffer_return argument
+is in the encoding of the current locale.
+.LP
+The name argument should generally be the name of your application.
+The message argument should indicate which type of error message you want.
+If the name and message are not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Xlib uses three predefined ``application names'' to report errors.
+In these names,
+uppercase and lowercase matter.
+.IP XProtoError 1i
+The protocol error number is used as a string for the message argument.
+.IP XlibMessage 1i
+These are the message strings that are used internally by the library.
+.IP XRequest 1i
+For a core protocol request,
+the major request protocol number is used for the message argument.
+For an extension request,
+the extension name (as given by
+.PN InitExtension )
+followed by a period (\.) and the minor request protocol number
+is used for the message argument.
+If no string is found in the error database,
+the default_string is returned to the buffer argument.
+.LP
+.sp
+To report an error to the user when the requested display does not exist, use
+.PN XDisplayName .
+.IN "XDisplayName" "" "@DEF@"
+.sM
+.FD 0
+char *XDisplayName\^(\^\fIstring\fP\^)
+.br
+ char *\fIstring\fP\^;
+.FN
+.IP \fIstring\fP 1i
+Specifies the character string.
+.LP
+.eM
+The
+.PN XDisplayName
+function returns the name of the display that
+.PN XOpenDisplay
+would attempt to use.
+If a NULL string is specified,
+.PN XDisplayName
+looks in the environment for the display and returns the display name that
+.PN XOpenDisplay
+would attempt to use.
+This makes it easier to report to the user precisely which display the
+program attempted to open when the initial connection attempt failed.
+.LP
+.sp
+To handle fatal I/O errors, use
+.PN XSetIOErrorHandler .
+.IN "XSetIOErrorHandler" "" "@DEF@"
+.sM
+.FD 0
+int (*XSetIOErrorHandler\^(\^\fIhandler\fP\^)\^)\^(\^)
+.br
+ int (\^*\^\fIhandler\fP\^)(Display *);
+.FN
+.IP \fIhandler\fP 1i
+Specifies the program's supplied error handler.
+.LP
+.eM
+The
+.PN XSetIOErrorHandler
+sets the fatal I/O error handler.
+Xlib calls the program's supplied error handler if any sort of system call
+error occurs (for example, the connection to the server was lost).
+This is assumed to be a fatal condition,
+and the called routine should not return.
+If the I/O error handler does return,
+the client process exits.
+.LP
+Note that the previous error handler is returned.
+.bp
diff --git a/specs/X11/CH12 b/specs/X11/CH12
new file mode 100644
index 0000000..08b9ba9
--- /dev/null
+++ b/specs/X11/CH12
@@ -0,0 +1,2680 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 12\fP\s-1
+
+\s+1\fBInput Device Functions\fP\s-1
+.sp 2
+.nr H1 12
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 12: Input Device Functions
+.XE
+You can use the Xlib input device functions to:
+.IP \(bu 5
+Grab the pointer and individual buttons on the pointer
+.IP \(bu 5
+Grab the keyboard and individual keys on the keyboard
+.IP \(bu 5
+Resume event processing
+.IP \(bu 5
+Move the pointer
+.IP \(bu 5
+Set the input focus
+.IP \(bu 5
+Manipulate the keyboard and pointer settings
+.IP \(bu 5
+Manipulate the keyboard encoding
+.NH 2
+Pointer Grabbing
+.XS
+\*(SN Pointer Grabbing
+.XE
+.LP
+Xlib provides functions that you can use to control input from the pointer,
+which usually is a mouse.
+Usually, as soon as keyboard and mouse events occur,
+the X server delivers them to the appropriate client,
+which is determined by the window and input focus.
+The X server provides sufficient control over event delivery to
+allow window managers to support mouse ahead and various other
+styles of user interface.
+Many of these user interfaces depend on synchronous delivery of events.
+The delivery of pointer and keyboard events can be controlled
+independently.
+.LP
+When mouse buttons or keyboard keys are grabbed, events
+will be sent to the grabbing client rather than the normal
+client who would have received the event.
+If the keyboard or pointer is in asynchronous mode,
+further mouse and keyboard events will continue to be processed.
+If the keyboard or pointer is in synchronous mode, no
+further events are processed until the grabbing client
+allows them (see
+.PN XAllowEvents ).
+The keyboard or pointer is considered frozen during this
+interval.
+The event that triggered the grab can also be replayed.
+.LP
+Note that the logical state of a device (as seen by client applications)
+may lag the physical state if device event processing is frozen.
+.LP
+.IN "Active grab" "" "@DEF@"
+There are two kinds of grabs:
+active and passive.
+An active grab occurs when a single client grabs the keyboard and/or pointer
+explicitly (see
+.PN XGrabPointer
+and
+.PN XGrabKeyboard ).
+.IN "Passive grab"
+A passive grab occurs when clients grab a particular keyboard key
+or pointer button in a window,
+and the grab will activate when the key or button is actually pressed.
+Passive grabs are convenient for implementing reliable pop-up menus.
+For example, you can guarantee that the pop-up is mapped
+before the up pointer button event occurs by
+grabbing a button requesting synchronous behavior.
+The down event will trigger the grab and freeze further
+processing of pointer events until you have the chance to
+map the pop-up window.
+You can then allow further event processing.
+The up event will then be correctly processed relative to the
+pop-up window.
+.LP
+For many operations,
+there are functions that take a time argument.
+The X server includes a timestamp in various events.
+One special time, called
+.IN "CurrentTime" "" "@DEF@"
+.IN "Time" "" "@DEF@"
+.PN CurrentTime ,
+represents the current server time.
+The X server maintains the time when the input focus was last changed,
+when the keyboard was last grabbed,
+when the pointer was last grabbed,
+or when a selection was last changed.
+Your
+application may be slow reacting to an event.
+You often need some way to specify that your
+request should not occur if another application has in the meanwhile
+taken control of the keyboard, pointer, or selection.
+By providing the timestamp from the event in the request,
+you can arrange that the operation not take effect
+if someone else has performed an operation in the meanwhile.
+.LP
+A timestamp is a time value, expressed in milliseconds.
+It typically is the time since the last server reset.
+Timestamp values wrap around (after about 49.7 days).
+The server, given its current time is represented by timestamp T,
+always interprets timestamps from clients by treating half of the timestamp
+space as being later in time than T.
+One timestamp value, named
+.PN CurrentTime ,
+is never generated by the server.
+This value is reserved for use in requests to represent the current server time.
+.LP
+For many functions in this section,
+you pass pointer event mask bits.
+The valid pointer event mask bits are:
+.PN ButtonPressMask ,
+.PN ButtonReleaseMask ,
+.PN EnterWindowMask ,
+.PN LeaveWindowMask ,
+.PN PointerMotionMask ,
+.PN PointerMotionHintMask ,
+.PN Button1MotionMask ,
+.PN Button2MotionMask ,
+.PN Button3MotionMask ,
+.PN Button4MotionMask ,
+.PN Button5MotionMask ,
+.PN ButtonMotionMask ,
+and
+.PN KeyMapStateMask .
+For other functions in this section,
+you pass keymask bits.
+The valid keymask bits are:
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+and
+.PN Mod5Mask .
+.LP
+.sp
+To grab the pointer, use
+.PN XGrabPointer .
+.IN "Grabbing" "pointer"
+.IN "Pointer" "grabbing"
+.IN "XGrabPointer" "" "@DEF@"
+.sM
+.FD 0
+int XGrabPointer\^(\^\fIdisplay\fP, \fIgrab_window\fP\^, \fIowner_events\fP\^, \fIevent_mask\fP\^, \fIpointer_mode\fP\^,
+ \fIkeyboard_mode\fP\^, \fIconfine_to\fP\^, \fIcursor\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ unsigned int \fIevent_mask\fP\^;
+.br
+ int \fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^;
+.br
+ Window \fIconfine_to\fP\^;
+.br
+ Cursor \fIcursor\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgrab_window\fP 1i
+Specifies the grab window.
+.IP \fIowner_events\fP 1i
+Specifies a Boolean value that indicates whether the pointer
+events are to be reported as usual or reported with respect to the grab window
+if selected by the event mask.
+.IP \fIevent_mask\fP 1i
+Specifies which pointer events are reported to the client.
+The mask is the bitwise inclusive OR of the valid pointer event mask bits.
+.IP \fIpointer_mode\fP 1i
+Specifies further processing of pointer events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIkeyboard_mode\fP 1i
+Specifies further processing of keyboard events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIconfine_to\fP 1i
+Specifies the window to confine the pointer in or
+.PN None .
+.IP \fIcursor\fP 1i
+Specifies the cursor that is to be displayed during the grab or
+.PN None .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XGrabPointer
+function actively grabs control of the pointer and returns
+.PN GrabSuccess
+if the grab was successful.
+Further pointer events are reported only to the grabbing client.
+.PN XGrabPointer
+overrides any active pointer grab by this client.
+If owner_events is
+.PN False ,
+all generated pointer events
+are reported with respect to grab_window and are reported only if
+selected by event_mask.
+If owner_events is
+.PN True
+and if a generated
+pointer event would normally be reported to this client,
+it is reported as usual.
+Otherwise, the event is reported with respect to the
+grab_window and is reported only if selected by event_mask.
+For either value of owner_events, unreported events are discarded.
+.LP
+If the pointer_mode is
+.PN GrabModeAsync ,
+pointer event processing continues as usual.
+If the pointer is currently frozen by this client,
+the processing of events for the pointer is resumed.
+If the pointer_mode is
+.PN GrabModeSync ,
+the state of the pointer, as seen by
+client applications,
+appears to freeze, and the X server generates no further pointer events
+until the grabbing client calls
+.PN XAllowEvents
+or until the pointer grab is released.
+Actual pointer changes are not lost while the pointer is frozen;
+they are simply queued in the server for later processing.
+.LP
+If the keyboard_mode is
+.PN GrabModeAsync ,
+keyboard event processing is unaffected by activation of the grab.
+If the keyboard_mode is
+.PN GrabModeSync ,
+the state of the keyboard, as seen by
+client applications,
+appears to freeze, and the X server generates no further keyboard events
+until the grabbing client calls
+.PN XAllowEvents
+or until the pointer grab is released.
+Actual keyboard changes are not lost while the pointer is frozen;
+they are simply queued in the server for later processing.
+.LP
+If a cursor is specified, it is displayed regardless of what
+window the pointer is in.
+If
+.PN None
+is specified,
+the normal cursor for that window is displayed
+when the pointer is in grab_window or one of its subwindows;
+otherwise, the cursor for grab_window is displayed.
+.LP
+If a confine_to window is specified,
+the pointer is restricted to stay contained in that window.
+The confine_to window need have no relationship to the grab_window.
+If the pointer is not initially in the confine_to window,
+it is warped automatically to the closest edge
+just before the grab activates and enter/leave events are generated as usual.
+If the confine_to window is subsequently reconfigured,
+the pointer is warped automatically, as necessary,
+to keep it contained in the window.
+.LP
+The time argument allows you to avoid certain circumstances that come up
+if applications take a long time to respond or if there are long network
+delays.
+Consider a situation where you have two applications, both
+of which normally grab the pointer when clicked on.
+If both applications specify the timestamp from the event,
+the second application may wake up faster and successfully grab the pointer
+before the first application.
+The first application then will get an indication that the other application
+grabbed the pointer before its request was processed.
+.LP
+.PN XGrabPointer
+generates
+.PN EnterNotify
+and
+.PN LeaveNotify
+events.
+.LP
+Either if grab_window or confine_to window is not viewable
+or if the confine_to window lies completely outside the boundaries of the root
+window,
+.PN XGrabPointer
+fails and returns
+.PN GrabNotViewable .
+If the pointer is actively grabbed by some other client,
+it fails and returns
+.PN AlreadyGrabbed .
+If the pointer is frozen by an active grab of another client,
+it fails and returns
+.PN GrabFrozen .
+If the specified time is earlier than the last-pointer-grab time or later
+than the current X server time, it fails and returns
+.PN GrabInvalidTime .
+Otherwise, the last-pointer-grab time is set to the specified time
+.Pn ( CurrentTime
+is replaced by the current X server time).
+.LP
+.PN XGrabPointer
+can generate
+.PN BadCursor ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To ungrab the pointer, use
+.PN XUngrabPointer .
+.IN "Ungrabbing" "pointer"
+.IN "Pointer" "ungrabbing"
+.IN "XUngrabPointer" "" "@DEF@"
+.sM
+.FD 0
+XUngrabPointer\^(\^\fIdisplay\fP, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XUngrabPointer
+function releases the pointer and any queued events
+if this client has actively grabbed the pointer from
+.PN XGrabPointer ,
+.PN XGrabButton ,
+or from a normal button press.
+.PN XUngrabPointer
+does not release the pointer if the specified
+time is earlier than the last-pointer-grab time or is later than the
+current X server time.
+It also generates
+.PN EnterNotify
+and
+.PN LeaveNotify
+events.
+The X server performs an
+.PN UngrabPointer
+request automatically if the event window or confine_to window
+for an active pointer grab becomes not viewable
+or if window reconfiguration causes the confine_to window to lie completely
+outside the boundaries of the root window.
+.LP
+.sp
+To change an active pointer grab, use
+.PN XChangeActivePointerGrab .
+.IN "Pointer" "grabbing"
+.IN "Changing" "pointer grab"
+.IN "XChangeActivePointerGrab" "" "@DEF@"
+.sM
+.FD 0
+XChangeActivePointerGrab\^(\^\fIdisplay\fP, \fIevent_mask\fP\^, \fIcursor\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIevent_mask\fP\^;
+.br
+ Cursor \fIcursor\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mask\fP 1i
+Specifies which pointer events are reported to the client.
+The mask is the bitwise inclusive OR of the valid pointer event mask bits.
+.IP \fIcursor\fP 1i
+Specifies the cursor that is to be displayed or
+.PN None .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XChangeActivePointerGrab
+function changes the specified dynamic parameters if the pointer is actively
+grabbed by the client and if the specified time is no earlier than the
+last-pointer-grab time and no later than the current X server time.
+This function has no effect on the passive parameters of an
+.PN XGrabButton .
+The interpretation of event_mask and cursor is the same as described in
+.PN XGrabPointer .
+.LP
+.PN XChangeActivePointerGrab
+can generate
+.PN BadCursor
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To grab a pointer button, use
+.PN XGrabButton .
+.IN "Grabbing" "buttons"
+.IN "Button" "grabbing"
+.IN "XGrabButton" "" "@DEF@"
+.sM
+.FD 0
+XGrabButton\^(\^\fIdisplay\fP, \fIbutton\fP\^, \fImodifiers\fP\^, \fIgrab_window\fP\^, \fIowner_events\fP\^, \fIevent_mask\fP\^,
+.br
+ \fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^, \fIconfine_to\fP\^, \fIcursor\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIbutton\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ unsigned int \fIevent_mask\fP\^;
+.br
+ int \fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^;
+.br
+ Window \fIconfine_to\fP\^;
+.br
+ Cursor \fIcursor\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Bu grabbed
+.IP \fIbutton\fP 1i
+Specifies the pointer button that is to be \*(Bu or
+.PN AnyButton .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks or
+.PN AnyModifier .
+The mask is the bitwise inclusive OR of the valid keymask bits.
+.IP \fIgrab_window\fP 1i
+Specifies the grab window.
+.IP \fIowner_events\fP 1i
+Specifies a Boolean value that indicates whether the pointer
+events are to be reported as usual or reported with respect to the grab window
+if selected by the event mask.
+.IP \fIevent_mask\fP 1i
+Specifies which pointer events are reported to the client.
+The mask is the bitwise inclusive OR of the valid pointer event mask bits.
+.IP \fIpointer_mode\fP 1i
+Specifies further processing of pointer events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIkeyboard_mode\fP 1i
+Specifies further processing of keyboard events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIconfine_to\fP 1i
+Specifies the window to confine the pointer in or
+.PN None .
+.IP \fIcursor\fP 1i
+Specifies the cursor that is to be displayed or
+.PN None .
+.LP
+.eM
+The
+.PN XGrabButton
+function establishes a passive grab.
+In the future,
+the pointer is actively grabbed (as for
+.PN XGrabPointer ),
+the last-pointer-grab time is set to the time at which the button was pressed
+(as transmitted in the
+.PN ButtonPress
+event), and the
+.PN ButtonPress
+event is reported if all of the following conditions are true:
+.IP \(bu 5
+The pointer is not grabbed, and the specified button is logically pressed
+when the specified modifier keys are logically down,
+and no other buttons or modifier keys are logically down.
+.IP \(bu 5
+The grab_window contains the pointer.
+.IP \(bu 5
+The confine_to window (if any) is viewable.
+.IP \(bu 5
+A passive grab on the same button/key combination does not exist
+on any ancestor of grab_window.
+.LP
+The interpretation of the remaining arguments is as for
+.PN XGrabPointer .
+The active grab is terminated automatically when the logical state of the
+pointer has all buttons released
+(independent of the state of the logical modifier keys).
+.LP
+Note that the logical state of a device (as seen by client applications)
+may lag the physical state if device event processing is frozen.
+.LP
+This request overrides all previous grabs by the same client on the same
+button/key combinations on the same window.
+A modifiers of
+.PN AnyModifier
+is equivalent to issuing the grab request for all
+possible modifier combinations (including the combination of no modifiers).
+It is not required that all modifiers specified have currently assigned
+KeyCodes.
+A button of
+.PN AnyButton
+is equivalent to
+issuing the request for all possible buttons.
+Otherwise, it is not required that the specified button currently be assigned
+to a physical button.
+.LP
+If some other client has already issued an
+.PN XGrabButton
+with the same button/key combination on the same window, a
+.PN BadAccess
+error results.
+When using
+.PN AnyModifier
+or
+.PN AnyButton ,
+the request fails completely,
+and a
+.PN BadAccess
+error results (no grabs are
+established) if there is a conflicting grab for any combination.
+.PN XGrabButton
+has no effect on an active grab.
+.LP
+.PN XGrabButton
+can generate
+.PN BadCursor ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To ungrab a pointer button, use
+.PN XUngrabButton .
+.IN "Ungrabbing" "buttons"
+.IN "Button" "ungrabbing"
+.IN "XUngrabButton" "" "@DEF@"
+.sM
+.FD 0
+XUngrabButton\^(\^\fIdisplay\fP, \fIbutton\fP\^, \fImodifiers\fP\^, \fIgrab_window\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIbutton\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Bu released
+.IP \fIbutton\fP 1i
+Specifies the pointer button that is to be \*(Bu or
+.PN AnyButton .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks or
+.PN AnyModifier .
+The mask is the bitwise inclusive OR of the valid keymask bits.
+.IP \fIgrab_window\fP 1i
+Specifies the grab window.
+.LP
+.eM
+The
+.PN XUngrabButton
+function releases the passive button/key combination on the specified window if
+it was grabbed by this client.
+A modifiers of
+.PN AnyModifier
+is
+equivalent to issuing
+the ungrab request for all possible modifier combinations, including
+the combination of no modifiers.
+A button of
+.PN AnyButton
+is equivalent to issuing the
+request for all possible buttons.
+.PN XUngrabButton
+has no effect on an active grab.
+.LP
+.PN XUngrabButton
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.NH 2
+Keyboard Grabbing
+.XS
+\*(SN Keyboard Grabbing
+.XE
+.LP
+Xlib provides functions that you can use to grab or ungrab the keyboard
+as well as allow events.
+.LP
+For many functions in this section,
+you pass keymask bits.
+The valid keymask bits are:
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+and
+.PN Mod5Mask .
+.LP
+.sp
+To grab the keyboard, use
+.PN XGrabKeyboard .
+.IN "Keyboard" "grabbing"
+.IN "Grabbing" "keyboard"
+.IN "XGrabKeyboard" "" "@DEF@"
+.sM
+.FD 0
+int XGrabKeyboard\^(\^\fIdisplay\fP, \fIgrab_window\fP\^, \fIowner_events\fP\^, \fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ int \fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgrab_window\fP 1i
+Specifies the grab window.
+.IP \fIowner_events\fP 1i
+Specifies a Boolean value that indicates whether the keyboard events
+are to be reported as usual.
+.IP \fIpointer_mode\fP 1i
+Specifies further processing of pointer events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIkeyboard_mode\fP 1i
+Specifies further processing of keyboard events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XGrabKeyboard
+function actively grabs control of the keyboard and generates
+.PN FocusIn
+and
+.PN FocusOut
+events.
+Further key events are reported only to the
+grabbing client.
+.PN XGrabKeyboard
+overrides any active keyboard grab by this client.
+If owner_events is
+.PN False ,
+all generated key events are reported with
+respect to grab_window.
+If owner_events is
+.PN True
+and if a generated
+key event would normally be reported to this client, it is reported
+normally; otherwise, the event is reported with respect to the
+grab_window.
+Both
+.PN KeyPress
+and
+.PN KeyRelease
+events are always reported,
+independent of any event selection made by the client.
+.LP
+If the keyboard_mode argument is
+.PN GrabModeAsync ,
+keyboard event processing continues
+as usual.
+If the keyboard is currently frozen by this client,
+then processing of keyboard events is resumed.
+If the keyboard_mode argument is
+.PN GrabModeSync ,
+the state of the keyboard (as seen by client applications) appears to freeze,
+and the X server generates no further keyboard events until the
+grabbing client issues a releasing
+.PN XAllowEvents
+call or until the keyboard grab is released.
+Actual keyboard changes are not lost while the keyboard is frozen;
+they are simply queued in the server for later processing.
+.LP
+If pointer_mode is
+.PN GrabModeAsync ,
+pointer event processing is unaffected
+by activation of the grab.
+If pointer_mode is
+.PN GrabModeSync ,
+the state of the pointer (as seen by client applications) appears to freeze,
+and the X server generates no further pointer events
+until the grabbing client issues a releasing
+.PN XAllowEvents
+call or until the keyboard grab is released.
+Actual pointer changes are not lost while the pointer is frozen;
+they are simply queued in the server for later processing.
+.LP
+If the keyboard is actively grabbed by some other client,
+.PN XGrabKeyboard
+fails and returns
+.PN AlreadyGrabbed .
+If grab_window is not viewable,
+it fails and returns
+.PN GrabNotViewable .
+If the keyboard is frozen by an active grab of another client,
+it fails and returns
+.PN GrabFrozen .
+If the specified time is earlier than the last-keyboard-grab time
+or later than the current X server time,
+it fails and returns
+.PN GrabInvalidTime .
+Otherwise, the last-keyboard-grab time is set to the specified time
+.Pn ( CurrentTime
+is replaced by the current X server time).
+.LP
+.PN XGrabKeyboard
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To ungrab the keyboard, use
+.PN XUngrabKeyboard .
+.IN "Keyboard" "ungrabbing"
+.IN "Ungrabbing" "keyboard"
+.IN "XUngrabKeyboard" "" "@DEF@"
+.sM
+.FD 0
+XUngrabKeyboard\^(\^\fIdisplay\fP, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XUngrabKeyboard
+function
+releases the keyboard and any queued events if this client has it actively grabbed from
+either
+.PN XGrabKeyboard
+or
+.PN XGrabKey .
+.PN XUngrabKeyboard
+does not release the keyboard and any queued events
+if the specified time is earlier than
+the last-keyboard-grab time or is later than the current X server time.
+It also generates
+.PN FocusIn
+and
+.PN FocusOut
+events.
+The X server automatically performs an
+.PN UngrabKeyboard
+request if the event window for an
+active keyboard grab becomes not viewable.
+.LP
+.sp
+To passively grab a single key of the keyboard, use
+.PN XGrabKey .
+.IN "Key" "grabbing"
+.IN "Grabbing" "keys"
+.IN "XGrabKey" "" "@DEF@"
+.sM
+.FD 0
+XGrabKey\^(\^\fIdisplay\fP, \fIkeycode\fP\^, \fImodifiers\fP\^, \fIgrab_window\fP\^, \fIowner_events\fP\^, \fIpointer_mode\fP\^,
+.br
+ \fIkeyboard_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIkeycode\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ int \fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIkeycode\fP 1i
+Specifies the KeyCode or
+.PN AnyKey .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks or
+.PN AnyModifier .
+The mask is the bitwise inclusive OR of the valid keymask bits.
+.IP \fIgrab_window\fP 1i
+Specifies the grab window.
+.IP \fIowner_events\fP 1i
+Specifies a Boolean value that indicates whether the keyboard events
+are to be reported as usual.
+.IP \fIpointer_mode\fP 1i
+Specifies further processing of pointer events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIkeyboard_mode\fP 1i
+Specifies further processing of keyboard events.
+You can pass
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.LP
+.eM
+The
+.PN XGrabKey
+function establishes a passive grab on the keyboard.
+In the future,
+the keyboard is actively grabbed (as for
+.PN XGrabKeyboard ),
+the last-keyboard-grab time is set to the time at which the key was pressed
+(as transmitted in the
+.PN KeyPress
+event), and the
+.PN KeyPress
+event is reported if all of the following conditions are true:
+.IP \(bu 5
+The keyboard is not grabbed and the specified key
+(which can itself be a modifier key) is logically pressed
+when the specified modifier keys are logically down,
+and no other modifier keys are logically down.
+.IP \(bu 5
+Either the grab_window is an ancestor of (or is) the focus window,
+or the grab_window is a descendant of the focus window and contains the pointer.
+.IP \(bu 5
+A passive grab on the same key combination does not exist
+on any ancestor of grab_window.
+.LP
+The interpretation of the remaining arguments is as for
+.PN XGrabKeyboard .
+The active grab is terminated automatically when the logical state of the
+keyboard has the specified key released
+(independent of the logical state of the modifier keys).
+.LP
+Note that the logical state of a device (as seen by client applications)
+may lag the physical state if device event processing is frozen.
+.LP
+A modifiers argument of
+.PN AnyModifier
+is equivalent to issuing the request for all
+possible modifier combinations (including the combination of no
+modifiers).
+It is not required that all modifiers specified have
+currently assigned KeyCodes.
+A keycode argument of
+.PN AnyKey
+is equivalent to issuing
+the request for all possible KeyCodes.
+Otherwise, the specified keycode must be in
+the range specified by min_keycode and max_keycode in the connection
+setup,
+or a
+.PN BadValue
+error results.
+.LP
+If some other client has issued a
+.PN XGrabKey
+with the same key combination on the same window, a
+.PN BadAccess
+error results.
+When using
+.PN AnyModifier
+or
+.PN AnyKey ,
+the request fails completely,
+and a
+.PN BadAccess
+error results (no grabs are established)
+if there is a conflicting grab for any combination.
+.LP
+.PN XGrabKey
+can generate
+.PN BadAccess ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To ungrab a key, use
+.PN XUngrabKey .
+.IN "Key" "ungrabbing"
+.IN "Ungrabbing" "keys"
+.IN "XUngrabKey" "" "@DEF@"
+.sM
+.FD 0
+XUngrabKey\^(\^\fIdisplay\fP, \fIkeycode\fP\^, \fImodifiers\fP\^, \fIgrab_window\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIkeycode\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIkeycode\fP 1i
+Specifies the KeyCode or
+.PN AnyKey .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks or
+.PN AnyModifier .
+The mask is the bitwise inclusive OR of the valid keymask bits.
+.IP \fIgrab_window\fP 1i
+Specifies the grab window.
+.LP
+.eM
+The
+.PN XUngrabKey
+function releases the key combination on the specified window if it was grabbed
+by this client.
+It has no effect on an active grab.
+A modifiers of
+.PN AnyModifier
+is equivalent to issuing
+the request for all possible modifier combinations
+(including the combination of no modifiers).
+A keycode argument of
+.PN AnyKey
+is equivalent to issuing the request for all possible key codes.
+.LP
+.PN XUngrabKey
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.NH 2
+Resuming Event Processing
+.XS
+\*(SN Resuming Event Processing
+.XE
+.LP
+The previous sections discussed grab mechanisms with which processing
+of events by the server can be temporarily suspended. This section
+describes the mechanism for resuming event processing.
+.LP
+.sp
+To allow further events to be processed when the device has been frozen, use
+.PN XAllowEvents .
+.IN "XAllowEvents" "" "@DEF@"
+.sM
+.FD 0
+XAllowEvents\^(\^\fIdisplay\fP, \fIevent_mode\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIevent_mode\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mode\fP 1i
+Specifies the event mode.
+You can pass
+.PN AsyncPointer ,
+.PN SyncPointer ,
+.PN AsyncKeyboard ,
+.PN SyncKeyboard ,
+.PN ReplayPointer ,
+.PN ReplayKeyboard ,
+.PN AsyncBoth ,
+or
+.PN SyncBoth .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XAllowEvents
+function releases some queued events if the client has caused a device
+to freeze.
+It has no effect if the specified time is earlier than the last-grab
+time of the most recent active grab for the client or if the specified time
+is later than the current X server time.
+Depending on the event_mode argument, the following occurs:
+.TS
+lw(1.25i) lw(4.5i).
+T{
+.PN AsyncPointer
+T} T{
+If the pointer is frozen by the client,
+pointer event processing continues as usual.
+If the pointer is frozen twice by the client on behalf of two separate grabs,
+.PN AsyncPointer
+thaws for both.
+.PN AsyncPointer
+has no effect if the pointer is not frozen by the client,
+but the pointer need not be grabbed by the client.
+T}
+.sp 6p
+T{
+.PN SyncPointer
+T} T{
+If the pointer is frozen and actively grabbed by the client,
+pointer event processing continues as usual until the next
+.PN ButtonPress
+or
+.PN ButtonRelease
+event is reported to the client.
+At this time,
+the pointer again appears to freeze.
+However, if the reported event causes the pointer grab to be released,
+the pointer does not freeze.
+.PN SyncPointer
+has no effect if the pointer is not frozen by the client
+or if the pointer is not grabbed by the client.
+T}
+.sp 6p
+T{
+.PN ReplayPointer
+T} T{
+If the pointer is actively grabbed by the client and is frozen as the result of
+an event having been sent to the client (either from the activation of an
+.PN XGrabButton
+or from a previous
+.PN XAllowEvents
+with mode
+.PN SyncPointer
+but not from an
+.PN XGrabPointer ),
+the pointer grab is released and that event is completely reprocessed.
+This time, however, the function ignores any passive grabs at or above
+(toward the root of) the grab_window of the grab just released.
+The request has no effect if the pointer is not grabbed by the client
+or if the pointer is not frozen as the result of an event.
+T}
+.sp 6p
+T{
+.PN AsyncKeyboard
+T} T{
+If the keyboard is frozen by the client,
+keyboard event processing continues as usual.
+If the keyboard is frozen twice by the client on behalf of two separate grabs,
+.PN AsyncKeyboard
+thaws for both.
+.PN AsyncKeyboard
+has no effect if the keyboard is not frozen by the client,
+but the keyboard need not be grabbed by the client.
+T}
+.sp 6p
+T{
+.PN SyncKeyboard
+T} T{
+If the keyboard is frozen and actively grabbed by the client,
+keyboard event processing continues as usual until the next
+.PN KeyPress
+or
+.PN KeyRelease
+event is reported to the client.
+At this time,
+the keyboard again appears to freeze.
+However, if the reported event causes the keyboard grab to be released,
+the keyboard does not freeze.
+.PN SyncKeyboard
+has no effect if the keyboard is not frozen by the client
+or if the keyboard is not grabbed by the client.
+T}
+.sp 6p
+T{
+.PN ReplayKeyboard
+T} T{
+If the keyboard is actively grabbed by the client and is frozen
+as the result of an event having been sent to the client (either from the
+activation of an
+.PN XGrabKey
+or from a previous
+.PN XAllowEvents
+with mode
+.PN SyncKeyboard
+but not from an
+.PN XGrabKeyboard ),
+the keyboard grab is released and that event is completely reprocessed.
+This time, however, the function ignores any passive grabs at or above
+(toward the root of)
+the grab_window of the grab just released.
+The request has no effect if the keyboard is not grabbed by the client
+or if the keyboard is not frozen as the result of an event.
+T}
+.sp 6p
+T{
+.PN SyncBoth
+T} T{
+If both pointer and keyboard are frozen by the client,
+event processing for both devices continues as usual until the next
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN KeyPress ,
+or
+.PN KeyRelease
+event is reported to the client for a grabbed device
+(button event for the pointer, key event for the keyboard),
+at which time the devices again appear to freeze.
+However, if the reported event causes the grab to be released,
+then the devices do not freeze (but if the other device is still
+grabbed, then a subsequent event for it will still cause both devices
+to freeze).
+.PN SyncBoth
+has no effect unless both pointer and keyboard
+are frozen by the client.
+If the pointer or keyboard is frozen twice
+by the client on behalf of two separate grabs,
+.PN SyncBoth
+thaws for both (but a subsequent freeze for
+.PN SyncBoth
+will only freeze each device once).
+T}
+.sp 6p
+T{
+.PN AsyncBoth
+T} T{
+If the pointer and the keyboard are frozen by the
+client, event processing for both devices continues as usual.
+If a device is frozen twice by the client on behalf of two separate grabs,
+.PN AsyncBoth
+thaws for both.
+.PN AsyncBoth
+has no effect unless both
+pointer and keyboard are frozen by the client.
+T}
+.TE
+.LP
+.PN AsyncPointer ,
+.PN SyncPointer ,
+and
+.PN ReplayPointer
+have no effect on the
+processing of keyboard events.
+.PN AsyncKeyboard ,
+.PN SyncKeyboard ,
+and
+.PN ReplayKeyboard
+have no effect on the
+processing of pointer events.
+It is possible for both a pointer grab and a keyboard grab (by the same
+or different clients) to be active simultaneously.
+If a device is frozen on behalf of either grab,
+no event processing is performed for the device.
+It is possible for a single device to be frozen because of both grabs.
+In this case,
+the freeze must be released on behalf of both grabs before events can
+again be processed.
+If a device is frozen twice by a single client,
+then a single
+.PN AllowEvents
+releases both.
+.LP
+.PN XAllowEvents
+can generate a
+.PN BadValue
+error.
+.NH 2
+Moving the Pointer
+.XS
+\*(SN Moving the Pointer
+.XE
+.LP
+Although movement of the pointer normally should be left to the
+control of the end user, sometimes it is necessary to move the
+pointer to a new position under program control.
+.LP
+.sp
+To move the pointer to an arbitrary point in a window, use
+.PN XWarpPointer .
+.IN "XWarpPointer" "" "@DEF@"
+.sM
+.FD 0
+XWarpPointer\^(\^\fIdisplay\fP, \fIsrc_w\fP\^, \fIdest_w\fP\^, \fIsrc_x\fP\^, \fIsrc_y\fP\^, \fIsrc_width\fP\^, \fIsrc_height\fP\^, \fIdest_x\fP\^,
+.br
+ \fIdest_y\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIsrc_w\fP\^, \fIdest_w\fP\^;
+.br
+ int \fIsrc_x\fP\^, \fIsrc_y\fP\^;
+.br
+ unsigned int \fIsrc_width\fP\^, \fIsrc_height\fP\^;
+.br
+ int \fIdest_x\fP\^, \fIdest_y\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsrc_w\fP 1i
+Specifies the source window or
+.PN None .
+.IP \fIdest_w\fP 1i
+Specifies the destination window or
+.PN None .
+.IP \fIsrc_x\fP 1i
+.br
+.ns
+.IP \fIsrc_y\fP 1i
+.br
+.ns
+.IP \fIsrc_width\fP 1i
+.br
+.ns
+.IP \fIsrc_height\fP 1i
+Specify a rectangle in the source window.
+.IP \fIdest_x\fP 1i
+.br
+.ns
+.IP \fIdest_y\fP 1i
+Specify the x and y coordinates within the destination window.
+.LP
+.eM
+If dest_w is
+.PN None ,
+.PN XWarpPointer
+moves the pointer by the offsets (dest_x, dest_y) relative to the current
+position of the pointer.
+If dest_w is a window,
+.PN XWarpPointer
+moves the pointer to the offsets (dest_x, dest_y) relative to the origin of
+dest_w.
+However, if src_w is a window,
+the move only takes place if the window src_w contains the pointer
+and if the specified rectangle of src_w contains the pointer.
+.LP
+The src_x and src_y coordinates are relative to the origin of src_w.
+If src_height is zero,
+it is replaced with the current height of src_w minus src_y.
+If src_width is zero,
+it is replaced with the current width of src_w minus src_x.
+.LP
+There is seldom any reason for calling this function.
+The pointer should normally be left to the user.
+If you do use this function, however, it generates events just as if the user
+had instantaneously moved the pointer from one position to another.
+Note that you cannot use
+.PN XWarpPointer
+to move the pointer outside the confine_to window of an active pointer grab.
+An attempt to do so will only move the pointer as far as the closest edge of the
+confine_to window.
+.LP
+.PN XWarpPointer
+can generate a
+.PN BadWindow
+error.
+.NH 2
+Controlling Input Focus
+.XS
+\*(SN Controlling Input Focus
+.XE
+.LP
+Xlib provides functions that you can use to set and get the input focus.
+The input focus is a shared resource, and cooperation among clients is
+required for correct interaction. See the
+\fIInter-Client Communication Conventions Manual\fP
+for input focus policy.
+.LP
+.sp
+To set the input focus, use
+.PN XSetInputFocus .
+.IN "XSetInputFocus" "" "@DEF@"
+.sM
+.FD 0
+XSetInputFocus\^(\^\fIdisplay\fP, \fIfocus\fP\^, \fIrevert_to\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIfocus\fP\^;
+.br
+ int \fIrevert_to\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfocus\fP 1i
+Specifies the window,
+.PN PointerRoot ,
+or
+.PN None .
+.IP \fIrevert_to\fP 1i
+Specifies where the input focus reverts to if the window becomes not
+viewable.
+You can pass
+.PN RevertToParent ,
+.PN RevertToPointerRoot ,
+or
+.PN RevertToNone .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.PN CurrentTime .
+.LP
+.eM
+The
+.PN XSetInputFocus
+function changes the input focus and the last-focus-change time.
+It has no effect if the specified time is earlier than the current
+last-focus-change time or is later than the current X server time.
+Otherwise, the last-focus-change time is set to the specified time
+.Pn ( CurrentTime
+is replaced by the current X server time).
+.PN XSetInputFocus
+causes the X server to generate
+.PN FocusIn
+and
+.PN FocusOut
+events.
+.LP
+Depending on the focus argument,
+the following occurs:
+.IP \(bu 5
+If focus is
+.PN None ,
+all keyboard events are discarded until a new focus window is set,
+and the revert_to argument is ignored.
+.IP \(bu 5
+If focus is a window,
+it becomes the keyboard's focus window.
+If a generated keyboard event would normally be reported to this window
+or one of its inferiors, the event is reported as usual.
+Otherwise, the event is reported relative to the focus window.
+.IP \(bu 5
+If focus is
+.PN PointerRoot ,
+the focus window is dynamically taken to be the root window of whatever screen
+the pointer is on at each keyboard event.
+In this case, the revert_to argument is ignored.
+.LP
+The specified focus window must be viewable at the time
+.PN XSetInputFocus
+is called,
+or a
+.PN BadMatch
+error results.
+If the focus window later becomes not viewable,
+the X server
+evaluates the revert_to argument to determine the new focus window as follows:
+.IP \(bu 5
+If revert_to is
+.PN RevertToParent ,
+the focus reverts to the parent (or the closest viewable ancestor),
+and the new revert_to value is taken to be
+.PN RevertToNone .
+.IP \(bu 5
+If revert_to is
+.PN RevertToPointerRoot
+or
+.PN RevertToNone ,
+the focus reverts to
+.PN PointerRoot
+or
+.PN None ,
+respectively.
+When the focus reverts,
+the X server generates
+.PN FocusIn
+and
+.PN FocusOut
+events, but the last-focus-change time is not affected.
+.LP
+.PN XSetInputFocus
+can generate
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To obtain the current input focus, use
+.PN XGetInputFocus .
+.IN "XGetInputFocus" "" "@DEF@"
+.sM
+.FD 0
+XGetInputFocus\^(\^\fIdisplay\fP, \fIfocus_return\fP\^, \fIrevert_to_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window *\fIfocus_return\fP\^;
+.br
+ int *\fIrevert_to_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfocus_return\fP 1i
+Returns the focus window,
+.PN PointerRoot ,
+or
+.PN None .
+.IP \fIrevert_to_return\fP 1i
+Returns the current focus state
+.Pn ( RevertToParent ,
+.PN RevertToPointerRoot ,
+or
+.PN RevertToNone ).
+.LP
+.eM
+The
+.PN XGetInputFocus
+function returns the focus window and the current focus state.
+.NH 2
+Manipulating the Keyboard and Pointer Settings
+.XS
+\*(SN Manipulating the Keyboard and Pointer Settings
+.XE
+.LP
+Xlib provides functions that you can use to
+change the keyboard control, obtain a list of the auto-repeat keys,
+turn keyboard auto-repeat on or off, ring the bell,
+set or obtain the pointer button or keyboard mapping,
+and obtain a bit vector for the keyboard.
+.LP
+.IN "Keyboard" "bell volume"
+.IN "Keyboard" "keyclick volume"
+.IN "Keyboard" "bit vector"
+.IN "Mouse" "programming"
+This section discusses
+the user-preference options of bell, key click,
+pointer behavior, and so on.
+The default values for many of these options are server dependent.
+Not all implementations will actually be able to control all of these
+parameters.
+.LP
+The
+.PN XChangeKeyboardControl
+function changes control of a keyboard and operates on a
+.PN XKeyboardControl
+structure:
+.sM
+.LP
+/* Mask bits for ChangeKeyboardControl */
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN KBKeyClickPercent
+T} T{
+(1L<<0)
+T}
+T{
+#define
+T} T{
+.PN KBBellPercent
+T} T{
+(1L<<1)
+T}
+T{
+#define
+T} T{
+.PN KBBellPitch
+T} T{
+(1L<<2)
+T}
+T{
+#define
+T} T{
+.PN KBBellDuration
+T} T{
+(1L<<3)
+T}
+T{
+#define
+T} T{
+.PN KBLed
+T} T{
+(1L<<4)
+T}
+T{
+#define
+T} T{
+.PN KBLedMode
+T} T{
+(1L<<5)
+T}
+T{
+#define
+T} T{
+.PN KBKey
+T} T{
+(1L<<6)
+T}
+T{
+#define
+T} T{
+.PN KBAutoRepeatMode
+T} T{
+(1L<<7)
+T}
+.TE
+.IN "XKeyboardControl" "" "@DEF@"
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+/* Values */
+
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ int bell_pitch;
+ int bell_duration;
+ int led;
+ int led_mode; /* LedModeOn, LedModeOff */
+ int key;
+ int auto_repeat_mode; /* AutoRepeatModeOff, AutoRepeatModeOn,
+ AutoRepeatModeDefault */
+} XKeyboardControl;
+.De
+.LP
+.eM
+The key_click_percent member sets the volume for key clicks between 0 (off)
+and 100 (loud) inclusive, if possible.
+A setting of \-1 restores the default.
+Other negative values generate a
+.PN BadValue
+error.
+.LP
+The bell_percent sets the base volume for the bell between 0 (off) and 100
+(loud) inclusive, if possible.
+A setting of \-1 restores the default.
+Other negative values generate a
+.PN BadValue
+error.
+The bell_pitch member sets the pitch (specified in Hz) of the bell, if possible.
+A setting of \-1 restores the default.
+Other negative values generate a
+.PN BadValue
+error.
+The bell_duration member sets the duration of the
+bell specified in milliseconds, if possible.
+A setting of \-1 restores the default.
+Other negative values generate a
+.PN BadValue
+error.
+.LP
+If both the led_mode and led members are specified,
+the state of that LED is changed, if possible.
+The led_mode member can be set to
+.PN LedModeOn
+or
+.PN LedModeOff .
+If only led_mode is specified, the state of
+all LEDs are changed, if possible.
+At most 32 LEDs numbered from one are supported.
+No standard interpretation of LEDs is defined.
+If led is specified without led_mode, a
+.PN BadMatch
+error results.
+.LP
+If both the auto_repeat_mode and key members are specified,
+the auto_repeat_mode of that key is changed (according to
+.PN AutoRepeatModeOn ,
+.PN AutoRepeatModeOff ,
+or
+.PN AutoRepeatModeDefault ),
+if possible.
+If only auto_repeat_mode is
+specified, the global auto_repeat_mode for the entire keyboard is
+changed, if possible, and does not affect the per-key settings.
+If a key is specified without an auto_repeat_mode, a
+.PN BadMatch
+error results.
+Each key has an individual mode of whether or not it should auto-repeat
+and a default setting for the mode.
+In addition,
+there is a global mode of whether auto-repeat should be enabled or not
+and a default setting for that mode.
+When global mode is
+.PN AutoRepeatModeOn ,
+keys should obey their individual auto-repeat modes.
+When global mode is
+.PN AutoRepeatModeOff ,
+no keys should auto-repeat.
+An auto-repeating key generates alternating
+.PN KeyPress
+and
+.PN KeyRelease
+events.
+When a key is used as a modifier,
+it is desirable for the key not to auto-repeat,
+regardless of its auto-repeat setting.
+.LP
+A bell generator connected with the console but not directly on a
+keyboard is treated as if it were part of the keyboard.
+The order in which controls are verified and altered is server-dependent.
+If an error is generated, a subset of the controls may have been altered.
+.LP
+.sp
+.IN "XChangeKeyboardControl" "" "@DEF@"
+.sM
+.FD 0
+XChangeKeyboardControl\^(\^\fIdisplay\fP, \fIvalue_mask\fP\^, \fIvalues\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned long \fIvalue_mask\fP\^;
+.br
+ XKeyboardControl *\fIvalues\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIvalue_mask\fP 1i
+Specifies which controls to change.
+This mask is the bitwise inclusive OR of the valid control mask bits.
+.IP \fIvalues\fP 1i
+Specifies one value for each bit set to 1 in the mask.
+.LP
+.eM
+The
+.PN XChangeKeyboardControl
+function controls the keyboard characteristics defined by the
+.PN XKeyboardControl
+structure.
+The value_mask argument specifies which values are to be changed.
+.LP
+.PN XChangeKeyboardControl
+can generate
+.PN BadMatch
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To obtain the current control values for the keyboard, use
+.PN XGetKeyboardControl .
+.IN "XGetKeyboardControl" "" "@DEF@"
+.sM
+.FD 0
+XGetKeyboardControl\^(\^\fIdisplay\fP, \fIvalues_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XKeyboardState *\fIvalues_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIvalues_return\fP 1i
+Returns the current keyboard controls in the specified
+.PN XKeyboardState
+structure.
+.LP
+.eM
+The
+.PN XGetKeyboardControl
+function returns the current control values for the keyboard to the
+.PN XKeyboardState
+structure.
+.LP
+.IN "XGetKeyboardControl"
+.IN "XKeyboardState" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ unsigned int bell_pitch, bell_duration;
+ unsigned long led_mask;
+ int global_auto_repeat;
+ char auto_repeats[32];
+} XKeyboardState;
+.De
+.LP
+.eM
+For the LEDs,
+the least significant bit of led_mask corresponds to LED one,
+and each bit set to 1 in led_mask indicates an LED that is lit.
+The global_auto_repeat member can be set to
+.PN AutoRepeatModeOn
+or
+.PN AutoRepeatModeOff .
+The auto_repeats member is a bit vector.
+Each bit set to 1 indicates that auto-repeat is enabled
+for the corresponding key.
+The vector is represented as 32 bytes.
+Byte N (from 0) contains the bits for keys 8N to 8N + 7
+with the least significant bit in the byte representing key 8N.
+.LP
+.sp
+To turn on keyboard auto-repeat, use
+.PN XAutoRepeatOn .
+.IN "XAutoRepeatOn" "" "@DEF@"
+.sM
+.FD 0
+XAutoRepeatOn\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XAutoRepeatOn
+function turns on auto-repeat for the keyboard on the specified display.
+.LP
+.sp
+To turn off keyboard auto-repeat, use
+.PN XAutoRepeatOff .
+.IN "XAutoRepeatOff" "" "@DEF@"
+.sM
+.FD 0
+XAutoRepeatOff\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XAutoRepeatOff
+function turns off auto-repeat for the keyboard on the specified display.
+.LP
+.sp
+To ring the bell, use
+.PN XBell .
+.IN "XBell" "" "@DEF@"
+.sM
+.FD 0
+XBell\^(\^\fIdisplay\fP, \fIpercent\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIpercent\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIpercent\fP 1i
+Specifies the volume for the bell,
+which can range from \-100 to 100 inclusive.
+.LP
+.eM
+The
+.PN XBell
+function rings the bell on the keyboard on the specified display, if possible.
+The specified volume is relative to the base volume for the keyboard.
+If the value for the percent argument is not in the range \-100 to 100
+inclusive, a
+.PN BadValue
+error results.
+The volume at which the bell rings
+when the percent argument is nonnegative is:
+.IP
+base \- [(base * percent) / 100] + percent
+.LP
+The volume at which the bell rings
+when the percent argument is negative is:
+.IP
+base + [(base * percent) / 100]
+.LP
+To change the base volume of the bell, use
+.PN XChangeKeyboardControl .
+.LP
+.PN XBell
+can generate a
+.PN BadValue
+error.
+.LP
+.sp
+To obtain a bit vector that describes the state of the keyboard, use
+.PN XQueryKeymap .
+.IN "XQueryKeymap" "" "@DEF@"
+.sM
+.FD 0
+XQueryKeymap\^(\^\fIdisplay\fP, \fIkeys_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char \fIkeys_return\fP[32]\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIkeys_return\fP 1i
+Returns an array of bytes that identifies which keys are pressed down.
+Each bit represents one key of the keyboard.
+.LP
+.eM
+The
+.PN XQueryKeymap
+function returns a bit vector for the logical state of the keyboard,
+where each bit set to 1 indicates that the corresponding key is currently
+pressed down.
+The vector is represented as 32 bytes.
+Byte N (from 0) contains the bits for keys 8N to 8N + 7
+with the least significant bit in the byte representing key 8N.
+.LP
+Note that the logical state of a device (as seen by client applications)
+may lag the physical state if device event processing is frozen.
+.LP
+.sp
+To set the mapping of the pointer buttons, use
+.PN XSetPointerMapping .
+.IN "XSetPointerMapping" "" "@DEF@"
+.sM
+.FD 0
+int XSetPointerMapping\^(\^\fIdisplay\fP, \fImap\fP, \fInmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned char \fImap\fP\^[]\^;
+.br
+ int \fInmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImap\fP 1i
+Specifies the mapping list.
+.IP \fInmap\fP 1i
+Specifies the number of items in the mapping list.
+.LP
+.eM
+The
+.PN XSetPointerMapping
+function sets the mapping of the pointer.
+If it succeeds, the X server generates a
+.PN MappingNotify
+event, and
+.PN XSetPointerMapping
+returns
+.PN MappingSuccess .
+Element map[i] defines the logical button number for the physical button
+i+1.
+The length of the list must be the same as
+.PN XGetPointerMapping
+would return,
+or a
+.PN BadValue
+error results.
+A zero element disables a button, and elements are not restricted in
+value by the number of physical buttons.
+However, no two elements can have the same nonzero value,
+or a
+.PN BadValue
+error results.
+If any of the buttons to be altered are logically in the down state,
+.PN XSetPointerMapping
+returns
+.PN MappingBusy ,
+and the mapping is not changed.
+.LP
+.PN XSetPointerMapping
+can generate a
+.PN BadValue
+error.
+.LP
+.sp
+To get the pointer mapping, use
+.PN XGetPointerMapping .
+.IN "XGetPointerMapping" "" "@DEF@"
+.sM
+.FD 0
+int XGetPointerMapping\^(\^\fIdisplay\fP, \fImap_return\fP, \fInmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned char \fImap_return\fP\^[]\^;
+.br
+ int \fInmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImap_return\fP 1i
+Returns the mapping list.
+.IP \fInmap\fP 1i
+Specifies the number of items in the mapping list.
+.LP
+.eM
+The
+.PN XGetPointerMapping
+function returns the current mapping of the pointer.
+Pointer buttons are numbered starting from one.
+.PN XGetPointerMapping
+returns the number of physical buttons actually on the pointer.
+The nominal mapping for a pointer is map[i]=i+1.
+The nmap argument specifies the length of the array where the pointer
+mapping is returned, and only the first nmap elements are returned
+in map_return.
+.LP
+.sp
+To control the pointer's interactive feel, use
+.PN XChangePointerControl .
+.IN "XChangePointerControl" "" "@DEF@"
+.sM
+.FD 0
+XChangePointerControl\^(\^\fIdisplay\fP, \fIdo_accel\fP\^, \fIdo_threshold\fP\^, \fIaccel_numerator\fP\^,
+.br
+ \fIaccel_denominator\fP\^, \fIthreshold\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Bool \fIdo_accel\fP\^, \fIdo_threshold\fP\^;
+.br
+ int \fIaccel_numerator\fP\^, \fIaccel_denominator\fP\^;
+.br
+ int \fIthreshold\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdo_accel\fP 1i
+Specifies a Boolean value that controls whether the values for
+the accel_numerator or accel_denominator are used.
+.IP \fIdo_threshold\fP 1i
+Specifies a Boolean value that controls whether the value for the
+threshold is used.
+.IP \fIaccel_numerator\fP 1i
+Specifies the numerator for the acceleration multiplier.
+.IP \fIaccel_denominator\fP 1i
+Specifies the denominator for the acceleration multiplier.
+.IP \fIthreshold\fP 1i
+Specifies the acceleration threshold.
+.LP
+.eM
+The
+.PN XChangePointerControl
+function defines how the pointing device moves.
+The acceleration, expressed as a fraction, is a
+multiplier for movement.
+For example,
+specifying 3/1 means the pointer moves three times as fast as normal.
+The fraction may be rounded arbitrarily by the X server.
+Acceleration
+only takes effect if the pointer moves more than threshold pixels at
+once and only applies to the amount beyond the value in the threshold argument.
+Setting a value to \-1 restores the default.
+The values of the do_accel and do_threshold arguments must be
+.PN True
+for the pointer values to be set,
+or the parameters are unchanged.
+Negative values (other than \-1) generate a
+.PN BadValue
+error, as does a zero value
+for the accel_denominator argument.
+.LP
+.PN XChangePointerControl
+can generate a
+.PN BadValue
+error.
+.LP
+.sp
+To get the current pointer parameters, use
+.PN XGetPointerControl .
+.IN "XGetPointerControl" "" "@DEF@"
+.sM
+.FD 0
+XGetPointerControl\^(\^\fIdisplay\fP, \fIaccel_numerator_return\fP\^, \fIaccel_denominator_return\fP\^,
+.br
+ \fIthreshold_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fIaccel_numerator_return\fP\^, *\fIaccel_denominator_return\fP\^;
+.br
+ int *\fIthreshold_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIaccel_numerator_return\fP 1i
+Returns the numerator for the acceleration multiplier.
+.IP \fIaccel_denominator_return\fP 1i
+Returns the denominator for the acceleration multiplier.
+.IP \fIthreshold_return\fP 1i
+Returns the acceleration threshold.
+.LP
+.eM
+The
+.PN XGetPointerControl
+function returns the pointer's current acceleration multiplier
+and acceleration threshold.
+.NH 2
+Manipulating the Keyboard Encoding
+.XS
+\*(SN Manipulating the Keyboard Encoding
+.XE
+.LP
+A KeyCode represents a physical (or logical) key.
+KeyCodes lie in the inclusive range [8,255].
+A KeyCode value carries no intrinsic information,
+although server implementors may attempt to encode geometry
+(for example, matrix) information in some fashion so that it can
+be interpreted in a server-dependent fashion.
+The mapping between keys and KeyCodes cannot be changed.
+.LP
+A KeySym is an encoding of a symbol on the cap of a key.
+The set of defined KeySyms includes the ISO Latin character sets (1\-4),
+Katakana, Arabic, Cyrillic, Greek, Technical,
+Special, Publishing, APL, Hebrew, Thai, Korean
+and a miscellany of keys found
+on keyboards (Return, Help, Tab, and so on).
+To the extent possible, these sets are derived from international
+standards.
+In areas where no standards exist,
+some of these sets are derived from Digital Equipment Corporation standards.
+The list of defined symbols can be found in
+.hN X11/keysymdef.h .
+Unfortunately, some C preprocessors have
+limits on the number of defined symbols.
+If you must use KeySyms not
+in the Latin 1\-4, Greek, and miscellaneous classes,
+you may have to define a symbol for those sets.
+Most applications usually only include
+.hN X11/keysym.h ,
+which defines symbols for ISO Latin 1\-4, Greek, and miscellaneous.
+.LP
+A list of KeySyms is associated with each KeyCode.
+The list is intended to convey the set of symbols on the corresponding key.
+If the list (ignoring trailing
+.PN NoSymbol
+entries) is
+a single KeySym ``\fIK\fP'',
+then the list is treated as if it were the list
+``\fIK\fP NoSymbol \fIK\fP NoSymbol''.
+If the list (ignoring trailing
+.PN NoSymbol
+entries) is a pair of KeySyms ``\fIK1 K2\fP'',
+then the list is treated as if it were the list ``\fIK1 K2 K1 K2\fP''.
+If the list (ignoring trailing
+.PN NoSymbol
+entries) is a triple of KeySyms ``\fIK1 K2 K3\fP'',
+then the list is treated as if it were the list ``\fIK1 K2 K3\fP NoSymbol''.
+When an explicit ``void'' element is desired in the list,
+the value
+.PN VoidSymbol
+can be used.
+.LP
+The first four elements of the list are split into two groups of KeySyms.
+Group 1 contains the first and second KeySyms;
+Group 2 contains the third and fourth KeySyms.
+Within each group,
+if the second element of the group is
+.PN NoSymbol ,
+then the group should be treated as if the second element were
+the same as the first element,
+except when the first element is an alphabetic KeySym ``\fIK\fP''
+for which both lowercase and uppercase forms are defined.
+In that case,
+the group should be treated as if the first element were
+the lowercase form of ``\fIK\fP'' and the second element were
+the uppercase form of ``\fIK\fP''.
+.LP
+The standard rules for obtaining a KeySym from a
+.PN KeyPress
+event make use of only the Group 1 and Group 2 KeySyms;
+no interpretation of other KeySyms in the list is given.
+Which group to use is determined by the modifier state.
+Switching between groups is controlled by the KeySym named MODE SWITCH,
+by attaching that KeySym to some KeyCode and attaching
+that KeyCode to any one of the modifiers
+.PN Mod1
+through
+.PN Mod5 .
+This modifier is called the \fIgroup modifier\fP\^.
+For any KeyCode,
+Group 1 is used when the group modifier is off,
+and Group 2 is used when the group modifier is on.
+.LP
+The
+.PN Lock
+modifier is interpreted as CapsLock when the KeySym named XK_Caps_Lock
+is attached to some KeyCode and that KeyCode is attached to the
+.PN Lock
+modifier. The
+.PN Lock
+modifier is interpreted as ShiftLock when the KeySym named XK_Shift_Lock
+is attached to some KeyCode and that KeyCode is attached to the
+.PN Lock
+modifier. If the
+.PN Lock
+modifier could be interpreted as both
+CapsLock and ShiftLock, the CapsLock interpretation is used.
+.LP
+The operation of keypad keys is controlled by the KeySym named XK_Num_Lock,
+by attaching that KeySym to some KeyCode and attaching that KeyCode to any
+one of the modifiers
+.PN Mod1
+through
+.PN Mod5 .
+This modifier is called the
+\fInumlock modifier\fP\^. The standard KeySyms with the prefix ``XK_KP_''
+in their
+name are called keypad KeySyms; these are KeySyms with numeric value in
+the hexadecimal range 0xFF80 to 0xFFBD inclusive. In addition,
+vendor-specific KeySyms in the hexadecimal range 0x11000000 to 0x1100FFFF
+are also keypad KeySyms.
+.LP
+Within a group, the choice of KeySym is determined by applying the first
+rule that is satisfied from the following list:
+.IP \(bu 5
+The numlock modifier is on and the second KeySym is a keypad KeySym. In
+this case, if the
+.PN Shift
+modifier is on, or if the
+.PN Lock
+modifier is on and
+is interpreted as ShiftLock, then the first KeySym is used, otherwise the
+second KeySym is used.
+.IP \(bu 5
+The
+.PN Shift
+and
+.PN Lock
+modifiers are both off. In this case, the first
+KeySym is used.
+.IP \(bu 5
+The
+.PN Shift
+modifier is off, and the
+.PN Lock
+modifier is on and is
+interpreted as CapsLock. In this case, the first KeySym is used, but if
+that KeySym is lowercase alphabetic, then the corresponding uppercase
+KeySym is used instead.
+.IP \(bu 5
+The
+.PN Shift
+modifier is on, and the
+.PN Lock
+modifier is on and is interpreted
+as CapsLock. In this case, the second KeySym is used, but if that KeySym
+is lowercase alphabetic, then the corresponding uppercase KeySym is used
+instead.
+.IP \(bu 5
+The
+.PN Shift
+modifier is on, or the
+.PN Lock
+modifier is on and is interpreted
+as ShiftLock, or both. In this case, the second KeySym is used.
+.LP
+No spatial geometry of the symbols on the key is defined by
+their order in the KeySym list,
+although a geometry might be defined on a
+server-specific basis.
+The X server does not use the mapping between KeyCodes and KeySyms.
+Rather, it merely stores it for reading and writing by clients.
+.sp
+.LP
+To obtain the legal KeyCodes for a display, use
+.PN XDisplayKeycodes .
+.IN "XDisplayKeycodes" "" "@DEF@"
+.sM
+.FD 0
+XDisplayKeycodes\^(\^\fIdisplay\fP\^, \fImin_keycodes_return\fP\^, \
+\fImax_keycodes_return\fP\^)
+.br
+ Display *\^\fIdisplay\fP\^;
+.br
+ int *\^\fImin_keycodes_return\fP\^, *\^\fImax_keycodes_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImin_keycodes_return\fP 1i
+Returns the minimum number of KeyCodes.
+.IP \fImax_keycodes_return\fP 1i
+Returns the maximum number of KeyCodes.
+.LP
+.eM
+The
+.PN XDisplayKeycodes
+function returns the min-keycodes and max-keycodes supported by the
+specified display.
+The minimum number of KeyCodes returned is never less than 8,
+and the maximum number of KeyCodes returned is never greater than 255.
+Not all KeyCodes in this range are required to have corresponding keys.
+.sp
+.LP
+To obtain the symbols for the specified KeyCodes, use
+.PN XGetKeyboardMapping .
+.IN "XGetKeyboardMapping" "" "@DEF@"
+.sM
+.FD 0
+KeySym *XGetKeyboardMapping(\^\fIdisplay\fP, \fIfirst_keycode\fP, \fIkeycode_count\fP,
+.br
+ \fIkeysyms_per_keycode_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ KeyCode \fIfirst_keycode\fP\^;
+.br
+ int \fIkeycode_count\fP\^;
+.br
+ int *\fIkeysyms_per_keycode_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Kc returned
+.IP \fIfirst_keycode\fP 1i
+Specifies the first KeyCode that is to be \*(Kc.
+.IP \fIkeycode_count\fP 1i
+Specifies the number of KeyCodes that are to be returned.
+.IP \fIkeysyms_per_keycode_return\fP 1i
+Returns the number of KeySyms per KeyCode.
+.LP
+.eM
+The
+.PN XGetKeyboardMapping
+function returns the symbols for the specified number of KeyCodes
+starting with first_keycode.
+The value specified in first_keycode must be greater than
+or equal to min_keycode as returned by
+.PN XDisplayKeycodes ,
+or a
+.PN BadValue
+error results.
+In addition, the following expression must be less than or equal
+to max_keycode as returned by
+.PN XDisplayKeycodes :
+.LP
+.Ds
+first_keycode + keycode_count \- 1
+.De
+.LP
+If this is not the case, a
+.PN BadValue
+error results.
+The number of elements in the KeySyms list is:
+.LP
+.Ds
+keycode_count * keysyms_per_keycode_return
+.De
+.LP
+KeySym number N, counting from zero, for KeyCode K has the following index
+in the list, counting from zero:
+.Ds
+(K \- first_code) * keysyms_per_code_return + N
+.De
+.LP
+The X server arbitrarily chooses the keysyms_per_keycode_return value
+to be large enough to report all requested symbols.
+A special KeySym value of
+.PN NoSymbol
+is used to fill in unused elements for
+individual KeyCodes.
+To free the storage returned by
+.PN XGetKeyboardMapping ,
+use
+.PN XFree .
+.LP
+.PN XGetKeyboardMapping
+can generate a
+.PN BadValue
+error.
+.LP
+.sp
+To change the keyboard mapping, use
+.PN XChangeKeyboardMapping .
+.IN "XChangeKeyboardMapping" "" "@DEF@"
+.sM
+.FD 0
+XChangeKeyboardMapping(\^\fIdisplay\fP, \fIfirst_keycode\fP, \fIkeysyms_per_keycode\fP, \fIkeysyms\fP, \fInum_codes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIfirst_keycode\fP\^;
+.br
+ int \fIkeysyms_per_keycode\fP\^;
+.br
+ KeySym *\fIkeysyms\fP\^;
+.br
+ int \fInum_codes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Kc changed
+.IP \fIfirst_keycode\fP 1i
+Specifies the first KeyCode that is to be \*(Kc.
+.IP \fIkeysyms_per_keycode\fP 1i
+Specifies the number of KeySyms per KeyCode.
+.IP \fIkeysyms\fP 1i
+Specifies an array of KeySyms.
+.IP \fInum_codes\fP 1i
+Specifies the number of KeyCodes that are to be changed.
+.LP
+.eM
+The
+.PN XChangeKeyboardMapping
+function defines the symbols for the specified number of KeyCodes
+starting with first_keycode.
+The symbols for KeyCodes outside this range remain unchanged.
+The number of elements in keysyms must be:
+.LP
+.Ds
+num_codes * keysyms_per_keycode
+.De
+.LP
+The specified first_keycode must be greater than or equal to min_keycode
+returned by
+.PN XDisplayKeycodes ,
+or a
+.PN BadValue
+error results.
+In addition, the following expression must be less than or equal to
+max_keycode as returned by
+.PN XDisplayKeycodes ,
+or a
+.PN BadValue
+error results:
+.LP
+.Ds
+first_keycode + num_codes \- 1
+.De
+.LP
+KeySym number N, counting from zero, for KeyCode K has the following index
+in keysyms, counting from zero:
+.LP
+.Ds
+(K \- first_keycode) * keysyms_per_keycode + N
+.De
+.LP
+The specified keysyms_per_keycode can be chosen arbitrarily by the client
+to be large enough to hold all desired symbols.
+A special KeySym value of
+.PN NoSymbol
+should be used to fill in unused elements
+for individual KeyCodes.
+It is legal for
+.PN NoSymbol
+to appear in nontrailing positions
+of the effective list for a KeyCode.
+.PN XChangeKeyboardMapping
+generates a
+.PN MappingNotify
+event.
+.LP
+There is no requirement that the X server interpret this mapping.
+It is merely stored for reading and writing by clients.
+.LP
+.PN XChangeKeyboardMapping
+can generate
+.PN BadAlloc
+and
+.PN BadValue
+errors.
+.LP
+The next six functions make use of the
+.PN XModifierKeymap
+data structure, which contains:
+.LP
+.IN "XModifierKeymap" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ int max_keypermod; /* This server's max number of keys per modifier */
+ KeyCode *modifiermap; /* An 8 by max_keypermod array of the modifiers */
+} XModifierKeymap;
+.De
+.LP
+.eM
+To create an
+.PN XModifierKeymap
+structure, use
+.PN XNewModifiermap .
+.IN "XNewModifiermap" "" "@DEF@"
+.sM
+.FD 0
+XModifierKeymap *XNewModifiermap(\^\fImax_keys_per_mod\fP\^)
+.br
+ int \fImax_keys_per_mod\fP\^;
+.FN
+.IP \fImax_keys_per_mod\fP 1i
+Specifies the number of KeyCode entries preallocated to the modifiers
+in the map.
+.LP
+.eM
+The
+.PN XNewModifiermap
+function returns a pointer to
+.PN XModifierKeymap
+structure for later use.
+.LP
+.sp
+To add a new entry to an
+.PN XModifierKeymap
+structure, use
+.PN XInsertModifiermapEntry .
+.IN "XInsertModifiermapEntry" "" "@DEF@"
+.sM
+.FD 0
+XModifierKeymap *XInsertModifiermapEntry\^(\^\fImodmap\fP, \
+\fIkeycode_entry\fP, \fImodifier\fP\^)
+.br
+ XModifierKeymap *\fImodmap\fP\^;
+.br
+ KeyCode \fIkeycode_entry\fP\^;
+.br
+ int \fImodifier\fP\^;
+.FN
+.IP \fImodmap\fP 1i
+Specifies the
+.PN XModifierKeymap
+structure.
+.IP \fIkeycode_entry\fP 1i
+Specifies the KeyCode.
+.IP \fImodifier\fP 1i
+Specifies the modifier.
+.LP
+.eM
+The
+.PN XInsertModifiermapEntry
+function adds the specified KeyCode to the set that controls the specified
+modifier and returns the resulting
+.PN XModifierKeymap
+structure (expanded as needed).
+.LP
+.sp
+To delete an entry from an
+.PN XModifierKeymap
+structure, use
+.PN XDeleteModifiermapEntry .
+.IN "XDeleteModifiermapEntry" "" "@DEF@"
+.sM
+.FD 0
+XModifierKeymap *XDeleteModifiermapEntry\^(\^\fImodmap\fP, \
+\fIkeycode_entry\fP, \fImodifier\fP\^)
+.br
+ XModifierKeymap *\fImodmap\fP\^;
+.br
+ KeyCode \fIkeycode_entry\fP\^;
+.br
+ int \fImodifier\fP\^;
+.FN
+.IP \fImodmap\fP 1i
+Specifies the
+.PN XModifierKeymap
+structure.
+.IP \fIkeycode_entry\fP 1i
+Specifies the KeyCode.
+.IP \fImodifier\fP 1i
+Specifies the modifier.
+.LP
+.eM
+The
+.PN XDeleteModifiermapEntry
+function deletes the specified KeyCode from the set that controls the
+specified modifier and returns a pointer to the resulting
+.PN XModifierKeymap
+structure.
+.LP
+.sp
+To destroy an
+.PN XModifierKeymap
+structure, use
+.PN XFreeModifiermap .
+.IN "XFreeModifiermap" "" "@DEF@"
+.sM
+.FD 0
+XFreeModifiermap(\^\fImodmap\fP\^)
+.br
+ XModifierKeymap *\fImodmap\fP;
+.FN
+.IP \fImodmap\fP 1i
+Specifies the
+.PN XModifierKeymap
+structure.
+.LP
+.eM
+The
+.PN XFreeModifiermap
+function frees the specified
+.PN XModifierKeymap
+structure.
+.LP
+.sp
+To set the KeyCodes to be used as modifiers, use
+.PN XSetModifierMapping .
+.IN "XSetModifierMapping" "" "@DEF@"
+.sM
+.FD 0
+int XSetModifierMapping(\^\fIdisplay\fP, \fImodmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XModifierKeymap *\fImodmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImodmap\fP 1i
+Specifies the
+.PN XModifierKeymap
+structure.
+.LP
+.eM
+The
+.PN XSetModifierMapping
+function specifies the KeyCodes of the keys (if any) that are to be used
+as modifiers.
+If it succeeds,
+the X server generates a
+.PN MappingNotify
+event, and
+.PN XSetModifierMapping
+returns
+.PN MappingSuccess .
+X permits at most 8 modifier keys.
+If more than 8 are specified in the
+.PN XModifierKeymap
+structure, a
+.PN BadLength
+error results.
+.LP
+The modifiermap member of the
+.PN XModifierKeymap
+structure contains 8 sets of max_keypermod KeyCodes,
+one for each modifier in the order
+.PN Shift ,
+.PN Lock ,
+.PN Control ,
+.PN Mod1 ,
+.PN Mod2 ,
+.PN Mod3 ,
+.PN Mod4 ,
+and
+.PN Mod5 .
+Only nonzero KeyCodes have meaning in each set,
+and zero KeyCodes are ignored.
+In addition, all of the nonzero KeyCodes must be in the range specified by
+min_keycode and max_keycode in the
+.PN Display
+structure,
+or a
+.PN BadValue
+error results.
+.LP
+An X server can impose restrictions on how modifiers can be changed,
+for example,
+if certain keys do not generate up transitions in hardware,
+if auto-repeat cannot be disabled on certain keys,
+or if multiple modifier keys are not supported.
+If some such restriction is violated,
+the status reply is
+.PN MappingFailed ,
+and none of the modifiers are changed.
+If the new KeyCodes specified for a modifier differ from those
+currently defined and any (current or new) keys for that modifier are
+in the logically down state,
+.PN XSetModifierMapping
+returns
+.PN MappingBusy ,
+and none of the modifiers is changed.
+.LP
+.PN XSetModifierMapping
+can generate
+.PN BadAlloc
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To obtain the KeyCodes used as modifiers, use
+.PN XGetModifierMapping .
+.IN "XGetModifierMapping" "" "@DEF@"
+.sM
+.FD 0
+XModifierKeymap *XGetModifierMapping(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XGetModifierMapping
+function returns a pointer to a newly created
+.PN XModifierKeymap
+structure that contains the keys being used as modifiers.
+The structure should be freed after use by calling
+.PN XFreeModifiermap .
+If only zero values appear in the set for any modifier,
+that modifier is disabled.
+.bp
diff --git a/specs/X11/CH13 b/specs/X11/CH13
new file mode 100644
index 0000000..539743c
--- /dev/null
+++ b/specs/X11/CH13
@@ -0,0 +1,7673 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 13\fP\s-1
+
+\s+1\fBLocales and Internationalized Text Functions\fP\s-1
+.sp 2
+.nr H1 13
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 13: Locales and Internationalized Text Functions
+.XE
+An internationalized application is one that is adaptable to the requirements
+of different native languages, local customs, and character string encodings.
+The process of adapting the operation to a particular native language,
+local custom, or string encoding is called \fIlocalization\fP\^.
+A goal of internationalization is to permit localization
+without program source modifications or recompilation.
+.LP
+As one of the localization mechanisms,
+Xlib provides an X Input Method
+.Pn ( XIM )
+functional interface for internationalized text input
+and an X Output Method
+.Pn ( XOM )
+functional interface for internationalized text output.
+.LP
+Internationalization in X is based on the concept of a \fIlocale\fP.
+A locale defines the localized behavior of a program at run time.
+Locales affect Xlib in its:
+.IP \(bu 5
+Encoding and processing of input method text
+.IP \(bu 5
+Encoding of resource files and values
+.IP \(bu 5
+Encoding and imaging of text strings
+.IP \(bu 5
+Encoding and decoding for inter-client text communication
+.LP
+Characters from various languages are represented in a computer
+using an encoding.
+Different languages have different encodings,
+and there are even different encodings for the same characters
+in the same language.
+.LP
+This chapter defines support for localized text imaging and text input
+and describes the locale mechanism that controls all locale-dependent
+Xlib functions.
+Sets of functions are provided for multibyte (char *) text as well as
+wide character (wchar_t) text in the form supported
+by the host C language environment.
+The multibyte and wide character functions
+are equivalent except for the form of the text argument.
+.LP
+The Xlib internationalization functions are not meant to provide
+support for multilingual applications (mixing multiple languages
+within a single piece of text), but they make it possible to
+implement applications that work in limited fashion with more than
+one language in independent contexts.
+.LP
+The remainder of this chapter discusses:
+.IP \(bu 5
+X locale management
+.IP \(bu 5
+Locale and modifier dependencies
+.IP \(bu 5
+Variable argument lists
+.IP \(bu 5
+Output methods
+.IP \(bu 5
+Input methods
+.IP \(bu 5
+String constants
+.NH 2
+X Locale Management
+.XS
+\*(SN X Locale Management
+.XE
+.LP
+X supports one or more of the locales defined by the host environment.
+On implementations that conform to the ANSI C library,
+the locale announcement method is
+.PN setlocale .
+This function configures the locale operation of both
+the host C library and Xlib.
+The operation of Xlib is governed by the LC_CTYPE category;
+this is called the \fIcurrent locale\fP.
+An implementation is permitted to provide implementation-dependent
+mechanisms for announcing the locale in addition to
+.PN setlocale .
+.LP
+On implementations that do not conform to the ANSI C library,
+the locale announcement method is Xlib implementation-dependent.
+.LP
+The mechanism by which the semantic operation of Xlib is defined
+for a specific locale is implementation-dependent.
+.LP
+.sp
+X is not required to support all the locales supported by the host.
+To determine if the current locale is supported by X, use
+.PN XSupportsLocale .
+.IN "XSupportsLocale" "" "@DEF@"
+.sM
+.FD 0
+Bool XSupportsLocale\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XSupportsLocale
+function returns
+.PN True
+if Xlib functions are capable of operating under the current locale.
+If it returns
+.PN False ,
+Xlib locale-dependent functions for which the
+.PN XLocaleNotSupported
+return status is defined will return
+.PN XLocaleNotSupported .
+Other Xlib locale-dependent routines will operate in the ``C'' locale.
+.LP
+The client is responsible for selecting its locale and X modifiers.
+Clients should provide a means for the user to override the clients'
+locale selection at client invocation.
+Most single-display X clients operate in a single locale
+for both X and the host processing environment.
+They will configure the locale by calling three functions:
+the host locale configuration function,
+.PN XSupportsLocale ,
+and
+.PN XSetLocaleModifiers .
+.LP
+The semantics of certain categories of X internationalization capabilities
+can be configured by setting modifiers.
+Modifiers are named by implementation-dependent and locale-specific strings.
+The only standard use for this capability at present
+is selecting one of several styles of keyboard input method.
+.LP
+.sp
+To configure Xlib locale modifiers for the current locale, use
+.PN XSetLocaleModifiers .
+.IN "XSetLocaleModifiers" "" "@DEF@"
+.sM
+.FD 0
+char *XSetLocaleModifiers\^(\^\fImodifier_list\fP\^)
+.br
+ char *\fImodifier_list\fP\^;
+.FN
+.IP \fImodifier_list\fP 1i
+Specifies the modifiers.
+.LP
+.eM
+The
+.PN XSetLocaleModifiers
+function sets the X modifiers for the current locale setting.
+The modifier_list argument is a null-terminated string of the form
+``{@\^\fIcategory\fP\^=\^\fIvalue\fP\^}'', that is,
+having zero or more concatenated ``@\^\fIcategory\fP\^=\^\fIvalue\fP\^''
+entries, where \fIcategory\fP is a category name
+and \fIvalue\fP is the (possibly empty) setting for that category.
+The values are encoded in the current locale.
+Category names are restricted to the POSIX Portable Filename Character Set.
+.LP
+The local host X locale modifiers announcer (on POSIX-compliant systems,
+the XMODIFIERS environment variable) is appended to the modifier_list to
+provide default values on the local host.
+If a given category appears more than once in the list,
+the first setting in the list is used.
+If a given category is not included in the full modifier list,
+the category is set to an implementation-dependent default
+for the current locale.
+An empty value for a category explicitly specifies the
+implementation-dependent default.
+.LP
+If the function is successful, it returns a pointer to a string.
+The contents of the string are such that a subsequent call with that string
+(in the same locale) will restore the modifiers to the same settings.
+If modifier_list is a NULL pointer,
+.PN XSetLocaleModifiers
+also returns a pointer to such a string,
+and the current locale modifiers are not changed.
+.LP
+If invalid values are given for one or more modifier categories supported by
+the locale, a NULL pointer is returned, and none of the
+current modifiers are changed.
+.LP
+At program startup,
+the modifiers that are in effect are unspecified until
+the first successful call to set them. Whenever the locale is changed, the
+modifiers that are in effect become unspecified until the next successful call
+to set them.
+Clients should always call
+.PN XSetLocaleModifiers
+with a non-NULL modifier_list after setting the locale
+before they call any locale-dependent Xlib routine.
+.LP
+The only standard modifier category currently defined is ``im'',
+which identifies the desired input method.
+The values for input method are not standardized.
+A single locale may use multiple input methods,
+switching input method under user control.
+The modifier may specify the initial input method in effect
+or an ordered list of input methods.
+Multiple input methods may be specified in a single im value string
+in an implementation-dependent manner.
+.LP
+The returned modifiers string is owned by Xlib and should not be modified or
+freed by the client.
+It may be freed by Xlib after the current locale or modifiers are changed.
+Until freed, it will not be modified by Xlib.
+.LP
+The recommended procedure for clients initializing their locale and modifiers
+is to obtain locale and modifier announcers separately from
+one of the following prioritized sources:
+.IP \(bu 5
+A command line option
+.IP \(bu 5
+A resource
+.IP \(bu 5
+The empty string ("\^")
+.LP
+The first of these that is defined should be used.
+Note that when a locale command line option or locale resource is defined,
+the effect should be to set all categories to the specified locale,
+overriding any category-specific settings in the local host environment.
+.NH 2
+Locale and Modifier Dependencies
+.XS
+\*(SN Locale and Modifier Dependencies
+.XE
+.LP
+The internationalized Xlib functions operate in the current locale
+configured by the host environment and X locale modifiers set by
+.PN XSetLocaleModifiers
+or in the locale and modifiers configured at the time
+some object supplied to the function was created.
+For each locale-dependent function,
+the following table describes the locale (and modifiers) dependency:
+.TS H
+lw(1.25i) lw(2.5i) lw(2i).
+_
+.sp 6p
+.B
+Locale from Affects the Function In
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+ Locale Query/Configuration:
+.sp 6p
+T{
+.PN setlocale
+T} T{
+.PN XSupportsLocale
+T} T{
+Locale queried
+T}
+ T{
+.PN XSetLocaleModifiers
+T} T{
+Locale modified
+T}
+.sp
+ Resources:
+.sp 6p
+T{
+.PN setlocale
+T} T{
+.PN XrmGetFileDatabase
+T} T{
+Locale of
+.PN XrmDatabase
+T}
+ T{
+.PN XrmGetStringDatabase
+T}
+T{
+.PN XrmDatabase
+T} T{
+.PN XrmPutFileDatabase
+T} T{
+Locale of
+.PN XrmDatabase
+T}
+ T{
+.PN XrmLocaleOfDatabase
+T}
+.sp
+ Setting Standard Properties:
+.sp 6p
+T{
+.PN setlocale
+T} T{
+.PN XmbSetWMProperties
+T} T{
+Encoding of supplied/returned
+T}
+ text (some WM_ property
+ text in environment locale)
+.sp 6p
+T{
+.PN setlocale
+T} T{
+.PN XmbTextPropertyToTextList
+T} T{
+Encoding of supplied/returned text
+T}
+ T{
+.PN XwcTextPropertyToTextList
+T}
+ T{
+.PN XmbTextListToTextProperty
+T}
+ T{
+.PN XwcTextListToTextProperty
+T}
+.sp
+ Text Input:
+.sp 6p
+T{
+.PN setlocale
+T} T{
+.PN XOpenIM
+T} T{
+XIM input method selection
+T}
+ T{
+.PN XRegisterIMInstantiateCallback
+T} T{
+XIM selection
+T}
+ T{
+.PN XUnregisterIMInstantiateCallback
+T} T{
+XIM selection
+T}
+T{
+.PN XIM
+T} T{
+.PN XCreateIC
+T} T{
+XIC input method configuration
+T}
+ T{
+.PN XLocaleOfIM ,
+and so on
+T} T{
+Queried locale
+T}
+T{
+.PN XIC
+T} T{
+.PN XmbLookupString
+T} T{
+Keyboard layout
+T}
+ T{
+.PN XwcLookupString
+T} T{
+Encoding of returned text
+T}
+.sp
+ Text Drawing:
+.sp 6p
+T{
+.PN setlocale
+T} T{
+.PN XOpenOM
+T} T{
+XOM output method selection
+T}
+ T{
+.PN XCreateFontSet
+T} T{
+Charsets of fonts in
+.PN XFontSet
+T}
+T{
+.PN XOM
+T} T{
+.PN XCreateOC
+T} T{
+XOC output method configuration
+T}
+ T{
+.PN XLocaleOfOM ,
+and so on
+T} T{
+Queried locale
+T}
+T{
+.PN XFontSet
+T} T{
+.PN XmbDrawText ,
+T} T{
+Locale of supplied text
+T}
+ T{
+.PN XwcDrawText ,
+and so on
+T} T{
+Locale of supplied text
+T}
+ T{
+.PN XExtentsOfFontSet ,
+and so on
+T} T{
+Locale-dependent metrics
+T}
+ T{
+.PN XmbTextExtents ,
+T}
+ T{
+.PN XwcTextExtents ,
+and so on
+T}
+.sp
+ Xlib Errors:
+.sp 6p
+T{
+.PN setlocale
+T} T{
+.PN XGetErrorDatabaseText
+T} T{
+Locale of error message
+T}
+ T{
+.PN XGetErrorText
+T}
+.sp 6p
+_
+.TE
+.LP
+Clients may assume that a locale-encoded text string returned
+by an X function can be passed to a C library routine, or vice versa,
+if the locale is the same at the two calls.
+.LP
+All text strings processed by internationalized Xlib functions are assumed
+to begin in the initial state of the encoding of the locale, if the encoding
+is state-dependent.
+.LP
+All Xlib functions behave as if they do not change the current locale
+or X modifier setting.
+(This means that if they do change locale or call
+.PN XSetLocaleModifiers
+with a non-NULL argument, they must save and restore the current state on
+entry and exit.)
+Also, Xlib functions on implementations that conform to the ANSI C library do
+not alter the global state associated with the ANSI C functions
+.PN mblen ,
+.PN mbtowc ,
+.PN wctomb ,
+and
+.PN strtok .
+.NH 2
+Variable Argument Lists
+.XS
+\*(SN Variable Argument Lists
+.XE
+.LP
+Various functions in this chapter have arguments that conform
+to the ANSI C variable argument list calling convention.
+Each function denoted with an argument of the form ``...'' takes
+a variable-length list of name and value pairs,
+where each name is a string and each value is of type
+.PN XPointer .
+A name argument that is NULL identifies the end of the list.
+.LP
+A variable-length argument list may contain a nested list.
+If the name
+.PN XNVaNestedList
+is specified in place of an argument name,
+then the following value is interpreted as an
+.PN XVaNestedList
+value that specifies a list of values logically inserted into the
+original list at the point of declaration.
+A NULL identifies the end of a nested list.
+.LP
+.sp
+To allocate a nested variable argument list dynamically, use
+.PN XVaCreateNestedList .
+.IN "XVaCreateNestedList" "" @DEF@"
+.sM
+.FD 0
+typedef void * XVaNestedList;
+
+XVaNestedList XVaCreateNestedList\^(\^\fIdummy\fP\^, ...)
+.br
+ int \fIdummy\fP\^;
+.FN
+.IP \fIdummy\fP 1i
+Specifies an unused argument (required by ANSI C).
+.ds Al
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.LP
+.eM
+The
+.PN XVaCreateNestedList
+function allocates memory and copies its arguments into
+a single list pointer,
+which may be used as a value for arguments requiring a list value.
+Any entries are copied as specified.
+Data passed by reference is not copied;
+the caller must ensure data remains valid for the lifetime
+of the nested list.
+The list should be freed using
+.PN XFree
+when it is no longer needed.
+.NH 2
+Output Methods
+.XS
+\*(SN Output Methods
+.XE
+.LP
+This section provides discussions of the following X Output Method
+(XOM) topics:
+.IP \(bu 5
+Output method overview
+.IP \(bu 5
+Output method functions
+.IP \(bu 5
+Output method values
+.IP \(bu 5
+Output context functions
+.IP \(bu 5
+Output context values
+.IP \(bu 5
+Creating and freeing a font set
+.IP \(bu 5
+Obtaining font set metrics
+.IP \(bu 5
+Drawing text using font sets
+.NH 3
+Output Method Overview
+.XS
+\*(SN Output Method Overview
+.XE
+.LP
+Locale-dependent text may include one or more text components, each of
+which may require different fonts and character set encodings.
+In some languages, each component might have a different
+drawing direction, and some components might contain
+context-dependent characters that change shape based on
+relationships with neighboring characters.
+.LP
+When drawing such locale-dependent text, some locale-specific
+knowledge is required;
+for example, what fonts are required to draw the text,
+how the text can be separated into components, and which
+fonts are selected to draw each component.
+Further, when bidirectional text must be drawn,
+the internal representation order of the text must be changed
+into the visual representation order to be drawn.
+.LP
+An X Output Method provides a functional interface so that clients
+do not have to deal directly with such locale-dependent details.
+Output methods provide the following capabilities:
+.IP \(bu 5
+Creating a set of fonts required to draw locale-dependent text.
+.IP \(bu 5
+Drawing locale-dependent text with a font set without the caller
+needing to be aware of locale dependencies.
+.IP \(bu 5
+Obtaining the escapement and extents in pixels of locale-dependent text.
+.IP \(bu 5
+Determining if bidirectional or context-dependent drawing is required
+in a specific locale with a specific font set.
+.LP
+Two different abstractions are used in the representation of
+the output method for clients.
+.LP
+The abstraction used to communicate with an output method
+is an opaque data structure represented by the
+.PN XOM
+data type.
+The abstraction for representing the state of a particular output thread
+is called an \fIoutput context\fP.
+The Xlib representation of an output context is an
+.PN XOC ,
+which is compatible with
+.PN XFontSet
+in terms of its functional interface, but is
+a broader, more generalized abstraction.
+.NH 3
+Output Method Functions
+.XS
+\*(SN Output Method Functions
+.XE
+.LP
+To open an output method, use
+.PN XOpenOM .
+.IN "XOpenOM" "" "@DEF@"
+.sM
+.FD 0
+XOM XOpenOM\^(\^\fIdisplay\fP\^, \fIdb\fP\^, \fIres_name\fP\^, \fIres_class\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XrmDatabase \fIdb\fP\^;
+.br
+ char *\fIres_name\fP\^;
+.br
+ char *\fIres_class\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdb\fP 1i
+Specifies a pointer to the resource database.
+.IP \fIres_name\fP 1i
+Specifies the full resource name of the application.
+.IP \fIres_class\fP 1i
+Specifies the full class name of the application.
+.LP
+.eM
+The
+.PN XOpenOM
+function opens an output method
+matching the current locale and modifiers specification.
+The current locale and modifiers are bound to the output method
+when
+.PN XOpenOM
+is called.
+The locale associated with an output method cannot be changed.
+.LP
+The specific output method to which this call will be routed
+is identified on the basis of the current locale and modifiers.
+.PN XOpenOM
+will identify a default output method corresponding to the
+current locale.
+That default can be modified using
+.PN XSetLocaleModifiers
+to set the output method modifier.
+.LP
+The db argument is the resource database to be used by the output method
+for looking up resources that are private to the output method.
+It is not intended that this database be used to look
+up values that can be set as OC values in an output context.
+If db is NULL,
+no database is passed to the output method.
+.LP
+The res_name and res_class arguments specify the resource name
+and class of the application.
+They are intended to be used as prefixes by the output method
+when looking up resources that are common to all output contexts
+that may be created for this output method.
+The characters used for resource names and classes must be in the
+X Portable Character Set.
+The resources looked up are not fully specified
+if res_name or res_class is NULL.
+.LP
+The res_name and res_class arguments are not assumed to exist beyond
+the call to
+.PN XOpenOM .
+The specified resource database is assumed to exist for the lifetime
+of the output method.
+.LP
+.PN XOpenOM
+returns NULL if no output method could be opened.
+.LP
+.sp
+To close an output method, use
+.PN XCloseOM .
+.IN "XCloseOM" "" "@DEF@"
+.sM
+.FD 0
+Status XCloseOM\^(\^\fIom\fP\^)
+.br
+ XOM \fIom\fP\^;
+.FN
+.IP \fIom\fP 1i
+Specifies the output method.
+.LP
+.eM
+The
+.PN XCloseOM
+function closes the specified output method.
+.LP
+.sp
+To set output method attributes, use
+.PN XSetOMValues .
+.IN "XSetOMValues" "" "@DEF@"
+.sM
+.FD 0
+char * XSetOMValues\^(\^\fIom\fP\^, ...)
+.br
+ XOM \fIom\fP\^;
+.FN
+.IP \fIom\fP 1i
+Specifies the output method.
+.ds Al \ to set XOM values
+.IP ... 1i
+Specifies the variable-length argument list\*(Al.
+.LP
+.eM
+The
+.PN XSetOMValues
+function presents a variable argument list programming interface
+for setting properties or features of the specified output method.
+This function returns NULL if it succeeds;
+otherwise,
+it returns the name of the first argument that could not be obtained.
+.LP
+No standard arguments are currently defined by Xlib.
+.LP
+.sp
+To query an output method, use
+.PN XGetOMValues .
+.IN "XGetOMValues" "" "@DEF@"
+.sM
+.FD 0
+char * XGetOMValues\^(\^\fIom\fP\^, ...)
+.br
+ XOM \fIom\fP\^;
+.FN
+.IP \fIom\fP 1i
+Specifies the output method.
+.ds Al \ to get XOM values
+.IP ... 1i
+Specifies the variable-length argument list\*(Al.
+.LP
+.eM
+The
+.PN XGetOMValues
+function presents a variable argument list programming interface
+for querying properties or features of the specified output method.
+This function returns NULL if it succeeds;
+otherwise,
+it returns the name of the first argument that could not be obtained.
+.LP
+To obtain the display associated with an output method, use
+.PN XDisplayOfOM .
+.IN "XDisplayOfOM" "" "@DEF@"
+.sM
+.FD 0
+Display * XDisplayOfOM\^(\^\fIom\fP\^)
+.br
+ XOM \fIom\fP\^;
+.FN
+.IP \fIom\fP 1i
+Specifies the output method.
+.LP
+.eM
+The
+.PN XDisplayOfOM
+function returns the display associated with the specified output method.
+.LP
+.sp
+To get the locale associated with an output method, use
+.PN XLocaleOfOM .
+.IN "XLocaleOfOM" "" "@DEF@"
+.sM
+.FD 0
+char * XLocaleOfOM\^(\^\fIom\fP\^)
+.br
+ XOM \fIom\fP\^;
+.FN
+.IP \fIom\fP 1i
+Specifies the output method.
+.LP
+.eM
+The
+.PN XLocaleOfOM
+returns the locale associated with the specified output method.
+.NH 3
+X Output Method Values
+.XS
+\*(SN X Output Method Values
+.XE
+.LP
+The following table describes how XOM values are interpreted by an
+output method.
+The first column lists the XOM values. The second column indicates
+how each of the XOM values are treated by a particular output style.
+.LP
+.LP
+The following key applies to this table.
+.TS H
+lw(1i) lw(4.75i).
+_
+.sp 6p
+.B
+Key Explanation
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+G T{
+This value may be read using
+.PN XGetOMValues .
+T}
+.sp 6p
+_
+.TE
+.LP
+.TS H
+lw(2.25i) c
+lw(2.25i) c.
+_
+.sp 6p
+.B
+XOM Value Key
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN XNRequiredCharSet
+T} T{
+G
+T}
+T{
+.PN XNQueryOrientation
+T} T{
+G
+T}
+T{
+.PN XNDirectionalDependentDrawing
+T} T{
+G
+T}
+T{
+.PN XNContextualDrawing
+T} T{
+G
+T}
+.sp 6p
+_
+.TE
+.LP
+.NH 4
+Required Char Set
+.XS
+\*(SN Required Char Set
+.XE
+.LP
+The
+.PN XNRequiredCharSet
+argument returns the list of charsets that are required for loading the fonts
+needed for the locale.
+The value of the argument is a pointer to a structure of type
+.PN XOMCharSetList .
+.LP
+The
+.PN XOMCharSetList
+structure is defined as follows:
+.IN "XOMCharSetList" "" "@DEF@"
+.sM
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ int charset_count;
+ char **charset_list;
+} XOMCharSetList;
+.De
+.LP
+.eM
+The charset_list member is a list of one or more null-terminated
+charset names, and the charset_count member is the number of
+charset names.
+.LP
+The required charset list is owned by Xlib and should not be modified or
+freed by the client.
+It will be freed by a call to
+.PN XCloseOM
+with the associated
+.PN XOM .
+Until freed, its contents will not be modified by Xlib.
+.LP
+.NH 4
+Query Orientation
+.XS
+\(*SN Query Orientation
+.XE
+.LP
+The
+.PN XNQueryOrientation
+argument returns the global orientation of text when drawn.
+Other than
+.PN XOMOrientation_LTR_TTB ,
+the set of orientations supported is locale-dependent.
+The value of the argument is a pointer to a structure of type
+.PN XOMOrientation .
+Clients are responsible for freeing the
+.PN XOMOrientation
+structure by using
+.PN XFree ;
+this also frees the contents of the structure.
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ int num_orientation;
+ XOrientation *orientation; /* Input Text description */
+} XOMOrientation;
+
+typedef enum {
+ XOMOrientation_LTR_TTB,
+ XOMOrientation_RTL_TTB,
+ XOMOrientation_TTB_LTR,
+ XOMOrientation_TTB_RTL,
+ XOMOrientation_Context
+} XOrientation;
+.De
+.LP
+.eM
+The possible value for XOrientation may be:
+.IP \(bu 5
+.PN XOMOrientation_LTR_TTB
+left-to-right, top-to-bottom global orientation
+.IP \(bu 5
+.PN XOMOrientation_RTL_TTB
+right-to-left, top-to-bottom global orientation
+.IP \(bu 5
+.PN XOMOrientation_TTB_LTR
+top-to-bottom, left-to-right global orientation
+.IP \(bu 5
+.PN XOMOrientation_TTB_RTL
+top-to-bottom, right-to-left global orientation
+.IP \(bu 5
+.PN XOMOrientation_Context
+contextual global orientation
+.LP
+.NH 4
+Directional Dependent Drawing
+.XS
+\*(SN Directional Dependent Drawing
+.XE
+.LP
+The
+.PN XNDirectionalDependentDrawing
+argument indicates whether the text rendering functions
+implement implicit handling of directional text. If this value
+is
+.PN True ,
+the output method has knowledge of directional
+dependencies and reorders text as necessary when
+rendering text. If this value is
+.PN False ,
+the output method does not implement any directional text
+handling, and all character directions are assumed to be left-to-right.
+.LP
+Regardless of the rendering order of characters,
+the origins of all characters are on the primary draw direction side
+of the drawing origin.
+.LP
+This OM value presents functionality identical to the
+.PN XDirectionalDependentDrawing
+function.
+.NH 4
+Context Dependent Drawing
+.XS
+\*(SN Context Dependent Drawing
+.XE
+.LP
+The
+.PN XNContextualDrawing
+argument indicates whether the text rendering functions
+implement implicit context-dependent drawing. If this value is
+.PN True ,
+the output method has knowledge of context dependencies and
+performs character shape editing, combining glyphs to present
+a single character as necessary. The actual shape editing is
+dependent on the locale implementation and the font set used.
+.LP
+This OM value presents functionality identical to the
+.PN XContextualDrawing
+function.
+.NH 3
+Output Context Functions
+.XS
+\*(SN Output Context Functions
+.XE
+.LP
+An output context is an abstraction that contains both the data
+required by an output method and the information required
+to display that data.
+There can be multiple output contexts for one output method.
+The programming interfaces for creating, reading, or modifying
+an output context use a variable argument list.
+The name elements of the argument lists are referred to as XOC values.
+It is intended that output methods be controlled by these XOC values.
+As new XOC values are created,
+they should be registered with the X Consortium.
+An
+.PN XOC
+can be used anywhere an
+.PN XFontSet
+can be used, and vice versa;
+.PN XFontSet
+is retained for compatibility with previous releases.
+The concepts of output methods and output contexts include broader,
+more generalized abstraction than font set,
+supporting complex and more intelligent text display, and dealing not only
+with multiple fonts but also with context dependencies.
+However,
+.PN XFontSet
+is widely used in several interfaces, so
+.PN XOC
+is defined as an upward compatible type of
+.PN XFontSet .
+.LP
+.sp
+To create an output context, use
+.PN XCreateOC .
+.IN "XCreateOC" "" "@DEF@"
+.sM
+.FD 0
+XOC XCreateOC\^(\^\fIom\fP\^, ...)
+.br
+ XOM \fIom\fP\^;
+.FN
+.IP \fIom\fP 1i
+Specifies the output method.
+.ds Al \ to set XOC values
+.IP ... 1i
+Specifies the variable-length argument list\*(Al.
+.LP
+.eM
+The
+.PN XCreateOC
+function creates an output context within the specified output method.
+.LP
+The base font names argument is mandatory at creation time, and
+the output context will not be created unless it is provided.
+All other output context values can be set later.
+.LP
+.PN XCreateOC
+returns NULL if no output context could be created.
+NULL can be returned for any of the following reasons:
+.IP \(bu 5
+A required argument was not set.
+.IP \(bu 5
+A read-only argument was set.
+.IP \(bu 5
+An argument name is not recognized.
+.IP \(bu 5
+The output method encountered an output method implementation-dependent error.
+.LP
+.PN XCreateOC
+can generate a
+.PN BadAtom
+error.
+.LP
+.sp
+To destroy an output context, use
+.PN XDestroyOC .
+.IN "XDestroyOC" "" "@DEF@"
+.sM
+.FD 0
+void XDestroyOC\^(\^\fIoc\fP\^)
+.br
+ XOC \fIoc\fP\^;
+.FN
+.IP \fIoc\fP 1i
+Specifies the output context.
+.LP
+.eM
+The
+.PN XDestroyOC
+function destroys the specified output context.
+.LP
+.sp
+To get the output method associated with an output context, use
+.PN XOMOfOC .
+.IN "XOMOfOC" "" "@DEF@"
+.sM
+.FD 0
+XOM XOMOfOC\^(\^\fIoc\fP\^)
+.br
+ XOC \fIoc\fP\^;
+.FN
+.IP \fIoc\fP 1i
+Specifies the output context.
+.LP
+.eM
+The
+.PN XOMOfOC
+function returns the output method associated with the
+specified output context.
+.LP
+.sp
+Xlib provides two functions for setting and reading output context values,
+respectively,
+.PN XSetOCValues
+and
+.PN XGetOCValues .
+Both functions have a variable-length argument list.
+In that argument list, any XOC value's name must be denoted
+with a character string using the X Portable Character Set.
+.LP
+.sp
+To set XOC values, use
+.PN XSetOCValues .
+.IN "XSetOCValues" "" "@DEF@"
+.sM
+.FD 0
+char * XSetOCValues\^(\^\fIoc\fP\^, ...)
+.br
+ XOC \fIoc\fP\^;
+.FN
+.IP \fIoc\fP 1i
+Specifies the output context.
+.ds Al \ to set XOC values
+.IP ... 1i
+Specifies the variable-length argument list\*(Al.
+.LP
+.eM
+The
+.PN XSetOCValues
+function returns NULL if no error occurred;
+otherwise,
+it returns the name of the first argument that could not be set.
+An argument might not be set for any of the following reasons:
+.IP \(bu 5
+The argument is read-only.
+.IP \(bu 5
+The argument name is not recognized.
+.IP \(bu 5
+An implementation-dependent error occurs.
+.LP
+Each value to be set must be an appropriate datum,
+matching the data type imposed by the semantics of the argument.
+.LP
+.PN XSetOCValues
+can generate a
+.PN BadAtom
+error.
+.LP
+.sp
+To obtain XOC values, use
+.PN XGetOCValues .
+.IN "XGetOCValues" "" "@DEF@"
+.sM
+.FD 0
+char * XGetOCValues\^(\^\fIoc\fP\^, ...)
+.br
+ XOC \fIoc\fP\^;
+.FN
+.IP \fIoc\fP 1i
+Specifies the output context.
+.ds Al \ to get XOC values
+.IP ... 1i
+Specifies the variable-length argument list\*(Al.
+.LP
+.eM
+The
+.PN XGetOCValues
+function returns NULL if no error occurred; otherwise,
+it returns the name of the first argument that could not be obtained.
+An argument might not be obtained for any of the following reasons:
+.IP \(bu 5
+The argument name is not recognized.
+.IP \(bu 5
+An implementation-dependent error occurs.
+.LP
+Each argument value
+following a name must point to a location where the value is to be stored.
+.NH 3
+Output Context Values
+.XS
+\*(SN Output Context Values
+.XE
+.LP
+The following table describes how XOC values are interpreted
+by an output method.
+The first column lists the XOC values.
+The second column indicates the alternative interfaces that function
+identically and are provided for compatibility with previous releases.
+The third column indicates how each of the XOC values is treated.
+.LP
+The following keys apply to this table.
+.TS H
+lw(1i) lw(4.75i).
+_
+.sp 6p
+.B
+Key Explanation
+.sp 6p
+_
+.TH
+.R
+C T{
+This value must be set with
+.PN XCreateOC .
+T}
+D T{
+This value may be set using
+.PN XCreateOC .
+If it is not set,
+.br
+a default is provided.
+T}
+G T{
+This value may be read using
+.PN XGetOCValues .
+T}
+S T{
+This value must be set using
+.PN XSetOCValues .
+T}
+.sp 6p
+_
+.TE
+.LP
+.TS H
+l c c
+l c c.
+_
+.sp 6p
+.B
+XOC Value Alternative Interface Key
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+BaseFontName
+T} T{
+.PN XCreateFontSet
+T} T{
+C-G
+T}
+T{
+MissingCharSet
+T} T{
+.PN XCreateFontSet
+T} T{
+G
+T}
+T{
+DefaultString
+T} T{
+.PN XCreateFontSet
+T} T{
+G
+T}
+T{
+Orientation
+T} T{
+\-
+T} T{
+D-S-G
+T}
+T{
+ResourceName
+T} T{
+\-
+T} T{
+S-G
+T}
+T{
+ResourceClass
+T} T{
+\-
+T} T{
+S-G
+T}
+T{
+FontInfo
+T} T{
+.PN XFontsOfFontSet
+T} T{
+G
+T}
+T{
+OMAutomatic
+T} T{
+\-
+T} T{
+G
+T}
+.sp 6p
+_
+.TE
+.LP
+.NH 4
+Base Font Name
+.XS
+\*(SN Base Font Name
+.XE
+.LP
+The
+.PN XNBaseFontName
+argument is a list of base font names that Xlib uses
+to load the fonts needed for the locale.
+The base font names are a comma-separated list. The string is null-terminated
+and is assumed to be in the Host Portable Character Encoding;
+otherwise, the result is implementation-dependent.
+White space immediately on either side of a separating comma is ignored.
+.LP
+Use of XLFD font names permits Xlib to obtain the fonts needed for a
+variety of locales from a single locale-independent base font name.
+The single base font name should name a family of fonts whose members
+are encoded in the various charsets needed by the locales of interest.
+.LP
+An XLFD base font name can explicitly name a charset needed for the locale.
+This allows the user to specify an exact font for use with a charset required
+by a locale, fully controlling the font selection.
+.LP
+If a base font name is not an XLFD name,
+Xlib will attempt to obtain an XLFD name from the font properties
+for the font.
+If Xlib is successful, the
+.PN XGetOCValues
+function will return this XLFD name instead of the client-supplied name.
+.LP
+This argument must be set at creation time
+and cannot be changed.
+If no fonts exist for any of the required charsets,
+or if the locale definition in Xlib requires that a font exist
+for a particular charset and a font is not found for that charset,
+.PN XCreateOC
+returns NULL.
+.LP
+When querying for the
+.PN XNBaseFontName
+XOC value,
+.PN XGetOCValues
+returns a null-terminated string identifying the base font names that
+Xlib used to load the fonts needed for the locale.
+This string is owned by Xlib and should not be modified or freed by
+the client.
+The string will be freed by a call to
+.PN XDestroyOC
+with the associated
+.PN XOC .
+Until freed, the string contents will not be modified by Xlib.
+.NH 4
+Missing CharSet
+.XS
+\*(SN Missing CharSet
+.XE
+.LP
+The
+.PN XNMissingCharSet
+argument returns the list of required charsets that are missing from the
+font set.
+The value of the argument is a pointer to a structure of type
+.PN XOMCharSetList .
+.LP
+If fonts exist for all of the charsets required by the current locale,
+charset_list is set to NULL and charset_count is set to zero.
+If no fonts exist for one or more of the required charsets,
+charset_list is set to a list of one or more null-terminated charset names
+for which no fonts exist, and charset_count is set to the number of
+missing charsets.
+The charsets are from the list of the required charsets for
+the encoding of the locale and do not include any charsets to which Xlib
+may be able to remap a required charset.
+.LP
+The missing charset list is owned by Xlib and should not be modified or
+freed by the client.
+It will be freed by a call to
+.PN XDestroyOC
+with the associated
+.PN XOC .
+Until freed, its contents will not be modified by Xlib.
+.NH 4
+Default String
+.XS
+\*(SN Default String
+.XE
+.LP
+When a drawing or measuring function is called with an
+.PN XOC
+that has missing charsets, some characters in the locale will not be
+drawable.
+The
+.PN XNDefaultString
+argument returns a pointer to a string that represents the glyphs
+that are drawn with this
+.PN XOC
+when the charsets of the available fonts do not include all glyphs
+required to draw a character.
+The string does not necessarily consist of valid characters
+in the current locale and is not necessarily drawn with
+the fonts loaded for the font set,
+but the client can draw or measure the default glyphs
+by including this string in a string being drawn or measured with the
+.PN XOC .
+.LP
+If the
+.PN XNDefaultString
+argument returned the empty string ("\^"),
+no glyphs are drawn and the escapement is zero.
+The returned string is null-terminated.
+It is owned by Xlib and should not be modified or freed by the client.
+It will be freed by a call to
+.PN XDestroyOC
+with the associated
+.PN XOC .
+Until freed, its contents will not be modified by Xlib.
+.NH 4
+Orientation
+.XS
+\*(SN Orientation
+.XE
+.LP
+The
+.PN XNOrientation
+argument specifies the current orientation of text when drawn. The value of
+this argument is one of the values returned by the
+.PN XGetOMValues
+function with the
+.PN XNQueryOrientation
+argument specified in the
+.PN XOrientation
+list.
+The value of the argument is of type
+.PN XOrientation .
+When
+.PN XNOrientation
+is queried, the value specifies the current orientation.
+When
+.PN XNOrientation
+is set, a value is used to set the current orientation.
+.LP
+When
+.PN XOMOrientation_Context
+is set, the text orientation of the
+text is determined according to an implementation-defined method
+(for example, ISO 6429 control sequences), and the initial text orientation for
+locale-dependent Xlib functions is assumed to
+be
+.PN XOMOrientation_LTR_TTB .
+.LP
+The
+.PN XNOrientation
+value does not change the prime drawing direction
+for Xlib drawing functions.
+.NH 4
+Resource Name and Class
+.XS
+\*(SN Resource Name and Class
+.XE
+.LP
+The
+.PN XNResourceName
+and
+.PN XNResourceClass
+arguments are strings that specify the full name and class
+used by the client to obtain resources for the display of the output context.
+These values should be used as prefixes for name and class
+when looking up resources that may vary according to the output context.
+If these values are not set,
+the resources will not be fully specified.
+.LP
+It is not intended that values that can be set as XOM values be
+set as resources.
+.LP
+When querying for the
+.PN XNResourceName
+or
+.PN XNResourceClass
+XOC value,
+.PN XGetOCValues
+returns a null-terminated string.
+This string is owned by Xlib and should not be modified or freed by
+the client.
+The string will be freed by a call to
+.PN XDestroyOC
+with the associated
+.PN XOC
+or when the associated value is changed via
+.PN XSetOCValues .
+Until freed, the string contents will not be modified by Xlib.
+.NH 4
+Font Info
+.XS
+\*(SN Font Info
+.XE
+.LP
+The
+.PN XNFontInfo
+argument specifies a list of one or more
+.PN XFontStruct
+structures
+and font names for the fonts used for drawing by the given output context.
+The value of the argument is a pointer to a structure of type
+.PN XOMFontInfo .
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ int num_font;
+ XFontStruct **font_struct_list;
+ char **font_name_list;
+} XOMFontInfo;
+.De
+.LP
+.eM
+A list of pointers to the
+.PN XFontStruct
+structures is returned to font_struct_list.
+A list of pointers to null-terminated, fully-specified font name strings
+in the locale of the output context is returned to font_name_list.
+The font_name_list order corresponds to the font_struct_list order.
+The number of
+.PN XFontStruct
+structures and font names is returned to num_font.
+.LP
+Because it is not guaranteed that a given character will be imaged using a
+single font glyph,
+there is no provision for mapping a character or default string
+to the font properties, font ID, or direction hint for the font
+for the character.
+The client may access the
+.PN XFontStruct
+list to obtain these values for all the fonts currently in use.
+.LP
+Xlib does not guarantee that fonts are loaded from the server
+at the creation of an
+.PN XOC .
+Xlib may choose to cache font data, loading it only as needed to draw text
+or compute text dimensions.
+Therefore, existence of the per_char metrics in the
+.PN XFontStruct
+structures in the
+.PN XFontStructSet
+is undefined.
+Also, note that all properties in the
+.PN XFontStruct
+structures are in the STRING encoding.
+.LP
+The client must not free the
+.PN XOMFontInfo
+struct itself; it will be freed when the
+.PN XOC
+is closed.
+.NH 4
+OM Automatic
+.XS
+\*(SN OM Automatic
+.XE
+.LP
+The
+.PN XNOMAutomatic
+argument returns whether the associated output context was created by
+.PN XCreateFontSet
+or not. Because the
+.PN XFreeFontSet
+function not only destroys the output context but also closes the implicit
+output method associated with it,
+.PN XFreeFontSet
+should be used with any output context created by
+.PN XCreateFontSet .
+However, it is possible that a client does not know how the output context
+was created.
+Before a client destroys the output context,
+it can query whether
+.PN XNOMAutomatic
+is set to determine whether
+.PN XFreeFontSet
+or
+.PN XDestroyOC
+should be used to destroy the output context.
+.NH 3
+Creating and Freeing a Font Set
+.XS
+\*(SN Creating and Freeing a Font Set
+.XE
+.LP
+Xlib international text drawing is done using a set of one or more fonts,
+as needed for the locale of the text.
+Fonts are loaded according to a list of base font names
+supplied by the client and the charsets required by the locale.
+The
+.PN XFontSet
+is an opaque type representing the state of a particular output thread
+and is equivalent to the type
+.PN XOC .
+.LP
+.sp
+The
+.PN XCreateFontSet
+function is a convenience function for creating an output context using
+only default values. The returned
+.PN XFontSet
+has an implicitly created
+.PN XOM .
+This
+.PN XOM
+has an OM value
+.PN XNOMAutomatic
+automatically set to
+.PN True
+so that the output context self indicates whether it was created by
+.PN XCreateOC
+or
+.PN XCreateFontSet .
+.IN "XCreateFontSet" "" "@DEF@"
+.sM
+.FD 0
+XFontSet XCreateFontSet\^(\^\fIdisplay\fP\^, \fIbase_font_name_list\fP\^, \fImissing_charset_list_return\fP\^,
+.br
+ \fImissing_charset_count_return\fP\^, \fIdef_string_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIbase_font_name_list\fP\^;
+.br
+ char ***\fImissing_charset_list_return\fP\^;
+.br
+ int *\fImissing_charset_count_return\fP\^;
+.br
+ char **\fIdef_string_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIbase_font_name_list\fP 1i
+Specifies the base font names.
+.IP \fImissing_charset_list_return\fP 1i
+Returns the missing charsets.
+.IP \fImissing_charset_count_return\fP 1i
+Returns the number of missing charsets.
+.IP \fIdef_string_return\fP 1i
+Returns the string drawn for missing charsets.
+.LP
+.eM
+The
+.PN XCreateFontSet
+function creates a font set for the specified display.
+The font set is bound to the current locale when
+.PN XCreateFontSet
+is called.
+The font set may be used in subsequent calls to obtain font
+and character information and to image text in the locale of the font set.
+.LP
+The base_font_name_list argument is a list of base font names
+that Xlib uses to load the fonts needed for the locale.
+The base font names are a comma-separated list.
+The string is null-terminated
+and is assumed to be in the Host Portable Character Encoding;
+otherwise, the result is implementation-dependent.
+White space immediately on either side of a separating comma is ignored.
+.LP
+Use of XLFD font names permits Xlib to obtain the fonts needed for a
+variety of locales from a single locale-independent base font name.
+The single base font name should name a family of fonts whose members
+are encoded in the various charsets needed by the locales of interest.
+.LP
+An XLFD base font name can explicitly name a charset needed for the locale.
+This allows the user to specify an exact font for use with a charset required
+by a locale, fully controlling the font selection.
+.LP
+If a base font name is not an XLFD name,
+Xlib will attempt to obtain an XLFD name from the font properties
+for the font.
+If this action is successful in obtaining an XLFD name, the
+.PN XBaseFontNameListOfFontSet
+function will return this XLFD name instead of the client-supplied name.
+.LP
+Xlib uses the following algorithm to select the fonts
+that will be used to display text with the
+.PN XFontSet .
+.LP
+For each font charset required by the locale,
+the base font name list is searched for the first appearance of one
+of the following cases that names a set of fonts that exist at the server:
+.IP \(bu 5
+The first XLFD-conforming base font name that specifies the required
+charset or a superset of the required charset in its
+.PN CharSetRegistry
+and
+.PN CharSetEncoding
+fields.
+The implementation may use a base font name whose specified charset
+is a superset of the required charset, for example,
+an ISO8859-1 font for an ASCII charset.
+.IP \(bu 5
+The first set of one or more XLFD-conforming base font names
+that specify one or more charsets that can be remapped to support the
+required charset.
+The Xlib implementation may recognize various mappings
+from a required charset to one or more other charsets
+and use the fonts for those charsets.
+For example, JIS Roman is ASCII with tilde and backslash replaced
+by yen and overbar;
+Xlib may load an ISO8859-1 font to support this character set
+if a JIS Roman font is not available.
+.IP \(bu 5
+The first XLFD-conforming font name or the first non-XLFD font name
+for which an XLFD font name can be obtained, combined with the
+required charset (replacing the
+.PN CharSetRegistry
+and
+.PN CharSetEncoding
+fields in the XLFD font name).
+As in case 1,
+the implementation may use a charset that is a superset
+of the required charset.
+.IP \(bu 5
+The first font name that can be mapped in some implementation-dependent
+manner to one or more fonts that support imaging text in the charset.
+.LP
+For example, assume that a locale required the charsets:
+.LP
+.Ds 0
+ISO8859-1
+JISX0208.1983
+JISX0201.1976
+GB2312-1980.0
+.De
+.LP
+The user could supply a base_font_name_list that explicitly specifies the
+charsets, ensuring that specific fonts are used if they exist.
+For example:
+.LP
+.Ds 0
+"-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240-JISX0208.1983-0,\\
+-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120-JISX0201.1976-0,\\
+-GB-Fixed-Medium-R-Normal--26-180-100-100-C-240-GB2312-1980.0,\\
+-Adobe-Courier-Bold-R-Normal--25-180-75-75-M-150-ISO8859-1"
+.De
+.LP
+Alternatively, the user could supply a base_font_name_list
+that omits the charsets,
+letting Xlib select font charsets required for the locale.
+For example:
+.LP
+.Ds 0
+"-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240,\\
+-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120,\\
+-GB-Fixed-Medium-R-Normal--26-180-100-100-C-240,\\
+-Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150"
+.De
+.LP
+Alternatively, the user could simply supply a single base font name
+that allows Xlib to select from all available fonts
+that meet certain minimum XLFD property requirements.
+For example:
+.LP
+.Ds 0
+"-*-*-*-R-Normal--*-180-100-100-*-*"
+.De
+.LP
+If
+.PN XCreateFontSet
+is unable to create the font set,
+either because there is insufficient memory or because the current locale
+is not supported,
+.PN XCreateFontSet
+returns NULL, missing_charset_list_return is set to NULL,
+and missing_charset_count_return
+is set to zero.
+If fonts exist for all of the charsets required by the current locale,
+.PN XCreateFontSet
+returns a valid
+.PN XFontSet ,
+missing_charset_list_return is set to NULL,
+and missing_charset_count_return is set to zero.
+.LP
+If no font exists for one or more of the required charsets,
+.PN XCreateFontSet
+sets missing_charset_list_return to a
+list of one or more null-terminated charset names for which no font exists
+and sets missing_charset_count_return to the number of missing fonts.
+The charsets are from the list of the required charsets for
+the encoding of the locale and do not include any charsets to which Xlib
+may be able to remap a required charset.
+.LP
+If no font exists for any of the required charsets
+or if the locale definition in Xlib requires that a font exist
+for a particular charset and a font is not found for that charset,
+.PN XCreateFontSet
+returns NULL.
+Otherwise,
+.PN XCreateFontSet
+returns a valid
+.PN XFontSet
+to font_set.
+.LP
+When an Xmb/wc drawing or measuring function is called with an
+.PN XFontSet
+that has missing charsets, some characters in the locale will not be
+drawable.
+If def_string_return is non-NULL,
+.PN XCreateFontSet
+returns a pointer to a string that represents the glyphs
+that are drawn with this
+.PN XFontSet
+when the charsets of the available fonts do not include all font glyphs
+required to draw a codepoint.
+The string does not necessarily consist of valid characters
+in the current locale and is not necessarily drawn with
+the fonts loaded for the font set,
+but the client can draw and measure the default glyphs
+by including this string in a string being drawn or measured with the
+.PN XFontSet .
+.LP
+If the string returned to def_string_return is the empty string ("\^"),
+no glyphs are drawn, and the escapement is zero.
+The returned string is null-terminated.
+It is owned by Xlib and should not be modified or freed by the client.
+It will be freed by a call to
+.PN XFreeFontSet
+with the associated
+.PN XFontSet .
+Until freed, its contents will not be modified by Xlib.
+.LP
+The client is responsible for constructing an error message from the
+missing charset and default string information and may choose to continue
+operation in the case that some fonts did not exist.
+.LP
+The returned
+.PN XFontSet
+and missing charset list should be freed with
+.PN XFreeFontSet
+and
+.PN XFreeStringList ,
+respectively.
+The client-supplied base_font_name_list may be freed
+by the client after calling
+.PN XCreateFontSet .
+.LP
+.sp
+To obtain a list of
+.PN XFontStruct
+structures and full font names given an
+.PN XFontSet ,
+use
+.PN XFontsOfFontSet .
+.IN "XFontsOfFontSet" "" "@DEF@"
+.sM
+.FD 0
+int XFontsOfFontSet\^(\^\fIfont_set\fP\^, \fIfont_struct_list_return\fP\^, \fIfont_name_list_return\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ XFontStruct ***\fIfont_struct_list_return\fP\^;
+.br
+ char ***\fIfont_name_list_return\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIfont_struct_list_return\fP 1i
+Returns the list of font structs.
+.IP \fIfont_name_list_return\fP 1i
+Returns the list of font names.
+.LP
+.eM
+The
+.PN XFontsOfFontSet
+function returns a list of one or more
+.PN XFontStructs
+and font names for the fonts used by the Xmb and Xwc layers
+for the given font set.
+A list of pointers to the
+.PN XFontStruct
+structures is returned to font_struct_list_return.
+A list of pointers to null-terminated, fully specified font name strings
+in the locale of the font set is returned to font_name_list_return.
+The font_name_list order corresponds to the font_struct_list order.
+The number of
+.PN XFontStruct
+structures and font names is returned as the value of the function.
+.LP
+Because it is not guaranteed that a given character will be imaged using a
+single font glyph,
+there is no provision for mapping a character or default string
+to the font properties, font ID, or direction hint for the font
+for the character.
+The client may access the
+.PN XFontStruct
+list to obtain these values for all the fonts currently in use.
+.LP
+Xlib does not guarantee that fonts are loaded from the server
+at the creation of an
+.PN XFontSet .
+Xlib may choose to cache font data, loading it only as needed to draw text
+or compute text dimensions.
+Therefore, existence of the per_char metrics in the
+.PN XFontStruct
+structures in the
+.PN XFontStructSet
+is undefined.
+Also, note that all properties in the
+.PN XFontStruct
+structures are in the STRING encoding.
+.LP
+The
+.PN XFontStruct
+and font name lists are owned by Xlib
+and should not be modified or freed by the client.
+They will be freed by a call to
+.PN XFreeFontSet
+with the associated
+.PN XFontSet .
+Until freed, their contents will not be modified by Xlib.
+.LP
+.sp
+To obtain the base font name list and the selected font name list given an
+.PN XFontSet ,
+use
+.PN XBaseFontNameListOfFontSet .
+.IN "XBaseFontNameListOfFontSet" "" "@DEF@"
+.sM
+.FD 0
+char *XBaseFontNameListOfFontSet\^(\^\fIfont_set\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.LP
+.eM
+The
+.PN XBaseFontNameListOfFontSet
+function returns the original base font name list supplied
+by the client when the
+.PN XFontSet
+was created.
+A null-terminated string containing a list of
+comma-separated font names is returned
+as the value of the function.
+White space may appear immediately on either side of separating commas.
+.LP
+If
+.PN XCreateFontSet
+obtained an XLFD name from the font properties for the font specified
+by a non-XLFD base name, the
+.PN XBaseFontNameListOfFontSet
+function will return the XLFD name instead of the non-XLFD base name.
+.LP
+The base font name list is owned by Xlib and should not be modified or
+freed by the client.
+It will be freed by a call to
+.PN XFreeFontSet
+with the associated
+.PN XFontSet .
+Until freed, its contents will not be modified by Xlib.
+.LP
+.sp
+To obtain the locale name given an
+.PN XFontSet ,
+use
+.PN XLocaleOfFontSet .
+.IN "XLocaleOfFontSet" "" "@DEF@"
+.sM
+.FD 0
+char *XLocaleOfFontSet\^(\^\fIfont_set\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.LP
+.eM
+The
+.PN XLocaleOfFontSet
+function
+returns the name of the locale bound to the specified
+.PN XFontSet ,
+as a null-terminated string.
+.LP
+The returned locale name string is owned by Xlib
+and should not be modified or freed by the client.
+It may be freed by a call to
+.PN XFreeFontSet
+with the associated
+.PN XFontSet .
+Until freed, it will not be modified by Xlib.
+.LP
+.sp
+The
+.PN XFreeFontSet
+function is a convenience function for freeing an output context.
+.PN XFreeFontSet
+also frees its associated
+.PN XOM
+if the output context was created by
+.PN XCreateFontSet .
+.IN "XFreeFontSet" "" "@DEF@"
+.sM
+.FD 0
+void XFreeFontSet\^(\^\fIdisplay\fP\^, \fIfont_set\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XFontSet \fIfont_set\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.LP
+.eM
+The
+.PN XFreeFontSet
+function frees the specified font set.
+The associated base font name list, font name list,
+.PN XFontStruct
+list, and
+.PN XFontSetExtents ,
+if any, are freed.
+.NH 3
+Obtaining Font Set Metrics
+.XS
+\*(SN Obtaining Font Set Metrics
+.XE
+.LP
+Metrics for the internationalized text drawing functions
+are defined in terms of a primary draw direction,
+which is the default direction in which the character origin advances
+for each succeeding character in the string.
+The Xlib interface is currently defined to support only a left-to-right
+primary draw direction.
+The drawing origin is the position passed to the drawing function
+when the text is drawn.
+The baseline is a line drawn through the drawing origin parallel
+to the primary draw direction.
+Character ink is the pixels painted in the foreground color
+and does not include interline or intercharacter spacing
+or image text background pixels.
+.LP
+The drawing functions are allowed to implement implicit text
+directionality control, reversing the order in which characters are
+rendered along the primary draw direction in response to locale-specific
+lexical analysis of the string.
+.LP
+Regardless of the character rendering order,
+the origins of all characters are on the primary draw direction side
+of the drawing origin.
+The screen location of a particular character image may be determined with
+.PN XmbTextPerCharExtents
+or
+.PN XwcTextPerCharExtents .
+.LP
+The drawing functions are allowed to implement context-dependent
+rendering, where the glyphs drawn for a string are not simply a
+concatenation of the glyphs that represent each individual character.
+A string of two characters drawn with
+.PN XmbDrawString
+may render differently than if the two characters
+were drawn with separate calls to
+.PN XmbDrawString .
+If the client appends or inserts a character
+in a previously drawn string,
+the client may need to redraw some adjacent characters
+to obtain proper rendering.
+.LP
+.sp
+To find out about direction-dependent rendering, use
+.PN XDirectionalDependentDrawing .
+.IN "XDirectionalDependentDrawing" "" "@DEF@"
+.sM
+.FD 0
+Bool XDirectionalDependentDrawing\^(\^\fIfont_set\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.LP
+.eM
+The
+.PN XDirectionalDependentDrawing
+function returns
+.PN True
+if the drawing functions implement implicit text directionality;
+otherwise, it returns
+.PN False .
+.LP
+.sp
+To find out about context-dependent rendering, use
+.PN XContextualDrawing .
+.IN "XContextualDrawing" "" "@DEF@"
+.sM
+.FD 0
+Bool XContextualDrawing\^(\^\fIfont_set\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.LP
+.eM
+The
+.PN XContextualDrawing
+function returns
+.PN True
+if text drawn with the font set might include context-dependent drawing;
+otherwise, it returns
+.PN False .
+.LP
+.sp
+To find out about context-dependent or direction-dependent rendering, use
+.PN XContextDependentDrawing .
+.IN "XContextDependentDrawing" "" "@DEF@"
+.sM
+.FD 0
+Bool XContextDependentDrawing\^(\^\fIfont_set\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.LP
+.eM
+The
+.PN XContextDependentDrawing
+function returns
+.PN True
+if the drawing functions implement implicit text directionality or
+if text drawn with the font_set might include context-dependent drawing;
+otherwise, it returns
+.PN False .
+.LP
+The drawing functions do not interpret newline, tab, or other control
+characters.
+The behavior when nonprinting characters other than space are drawn
+is implementation-dependent.
+It is the client's responsibility to interpret control characters
+in a text stream.
+.LP
+The maximum character extents for the fonts that are used by the text
+drawing layers can be accessed by the
+.PN XFontSetExtents
+structure:
+.IN "XFontSetExtents" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XRectangle max_ink_extent; /* over all drawable characters */
+ XRectangle max_logical_extent; /* over all drawable characters */
+} XFontSetExtents;
+.De
+.LP
+The
+.PN XRectangle
+structures used to return font set metrics are the usual Xlib screen-oriented
+rectangles
+with x, y giving the upper left corner, and width and height always positive.
+.LP
+The max_ink_extent member gives the maximum extent, over all drawable characters, of
+the rectangles that bound the character glyph image drawn in the
+foreground color, relative to a constant origin.
+See
+.PN XmbTextExtents
+and
+.PN XwcTextExtents
+for detailed semantics.
+.LP
+The max_logical_extent member gives the maximum extent,
+over all drawable characters, of the rectangles
+that specify minimum spacing to other graphical features,
+relative to a constant origin.
+Other graphical features drawn by the client, for example,
+a border surrounding the text, should not intersect this rectangle.
+The max_logical_extent member should be used to compute minimum
+interline spacing and the minimum area that must be allowed
+in a text field to draw a given number of arbitrary characters.
+.LP
+Due to context-dependent rendering,
+appending a given character to a string may change
+the string's extent by an amount other than that character's
+individual extent.
+.LP
+The rectangles for a given character in a string can be obtained from
+.PN XmbPerCharExtents
+or
+.PN XwcPerCharExtents .
+.LP
+.sp
+To obtain the maximum extents structure given an
+.PN XFontSet ,
+use
+.PN XExtentsOfFontSet .
+.IN "XExtentsOfFontSet" "" "@DEF@"
+.sM
+.FD 0
+XFontSetExtents *XExtentsOfFontSet\^(\^\fIfont_set\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.LP
+.eM
+The
+.PN XExtentsOfFontSet
+function returns an
+.PN XFontSetExtents
+structure for the fonts used by the Xmb and Xwc layers
+for the given font set.
+.LP
+The
+.PN XFontSetExtents
+structure is owned by Xlib and should not be modified
+or freed by the client.
+It will be freed by a call to
+.PN XFreeFontSet
+with the associated
+.PN XFontSet .
+Until freed, its contents will not be modified by Xlib.
+.LP
+.sp
+To obtain the escapement in pixels of the specified text as a value,
+use
+.PN XmbTextEscapement
+or
+.PN XwcTextEscapement .
+.IN "XmbTextEscapement" "" "@DEF@"
+.IN "XwcTextEscapement" "" "@DEF@"
+.sM
+.FD 0
+int XmbTextEscapement\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.FN
+.FD 0
+int XwcTextEscapement\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_wchars\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ wchar_t *\fIstring\fP\^;
+.br
+ int \fInum_wchars\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInum_bytes\fP 1i
+Specifies the number of bytes in the string argument.
+.IP \fInum_wchars\fP 1i
+Specifies the number of characters in the string argument.
+.LP
+.eM
+The
+.PN XmbTextEscapement
+and
+.PN XwcTextEscapement
+functions return the escapement in pixels of the specified string as a value,
+using the fonts loaded for the specified font set.
+The escapement is the distance in pixels in the primary draw
+direction from the drawing origin to the origin of the next character to
+be drawn, assuming that the rendering of the next character is not
+dependent on the supplied string.
+.LP
+Regardless of the character rendering order,
+the escapement is always positive.
+.LP
+.sp
+To obtain the overall_ink_return and overall_logical_return arguments,
+the overall bounding box of the string's image, and a logical bounding box,
+use
+.PN XmbTextExtents
+ or
+.PN XwcTextExtents .
+.IN "XmbTextExtents" "" "@DEF@"
+.IN "XwcTextExtents" "" "@DEF@"
+.sM
+.FD 0
+int XmbTextExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^, \fIoverall_ink_return\fP\^, \fIoverall_logical_return\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.br
+ XRectangle *\fIoverall_ink_return\fP\^;
+.br
+ XRectangle *\fIoverall_logical_return\fP\^;
+.FN
+.FD 0
+int XwcTextExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_wchars\fP\^,
+\fIoverall_ink_return\fP\^, \fIoverall_logical_return\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ wchar_t *\fIstring\fP\^;
+.br
+ int \fInum_wchars\fP\^;
+.br
+ XRectangle *\fIoverall_ink_return\fP\^;
+.br
+ XRectangle *\fIoverall_logical_return\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInum_bytes\fP 1i
+Specifies the number of bytes in the string argument.
+.IP \fInum_wchars\fP 1i
+Specifies the number of characters in the string argument.
+.ds Ov dimensions
+.IP \fIoverall_ink_return\fP 1i
+Returns the overall ink \*(Ov.
+.IP \fIoverall_logical_return\fP 1i
+Returns the overall logical \*(Ov.
+.LP
+.eM
+The
+.PN XmbTextExtents
+and
+.PN XwcTextExtents
+functions set the components of the specified overall_ink_return and
+overall_logical_return
+arguments to the overall bounding box of the string's image
+and a logical bounding box for spacing purposes, respectively.
+They return the value returned by
+.PN XmbTextEscapement
+or
+.PN XwcTextEscapement .
+These metrics are relative to the drawing origin of the string,
+using the fonts loaded for the specified font set.
+.LP
+If the overall_ink_return argument is non-NULL,
+it is set to the bounding box of the string's character ink.
+The overall_ink_return for a nondescending, horizontally drawn
+Latin character is conventionally entirely above the baseline;
+that is, overall_ink_return.height <= \-overall_ink_return.y.
+The overall_ink_return for a nonkerned character
+is entirely at, and to the right of, the origin;
+that is, overall_ink_return.x >= 0.
+A character consisting of a single pixel at the origin would set
+overall_ink_return fields y = 0, x = 0, width = 1, and height = 1.
+.LP
+If the overall_logical_return argument is non-NULL,
+it is set to the bounding box that provides minimum spacing
+to other graphical features for the string.
+Other graphical features, for example, a border surrounding the text,
+should not intersect this rectangle.
+.LP
+When the
+.PN XFontSet
+has missing charsets,
+metrics for each unavailable character are taken
+from the default string returned by
+.PN XCreateFontSet
+so that the metrics represent the text as it will actually be drawn.
+The behavior for an invalid codepoint is undefined.
+.LP
+To determine the effective drawing origin for a character in a drawn string,
+the client should call
+.PN XmbTextPerCharExtents
+on the entire string, then on the character,
+and subtract the x values of the returned
+rectangles for the character.
+This is useful to redraw portions of a line of text
+or to justify words, but for context-dependent rendering,
+the client should not assume that it can redraw the character by itself
+and get the same rendering.
+.LP
+.sp
+To obtain per-character information for a text string,
+use
+.PN XmbTextPerCharExtents
+or
+.PN XwcTextPerCharExtents .
+.IN "XmbTextPerCharExtents" "" "@DEF@"
+.IN "XwcTextPerCharExtents" "" "@DEF@"
+.sM
+.FD 0
+Status XmbTextPerCharExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^, \fIink_array_return\fP\^,
+.br
+ \fIlogical_array_return\fP\^, \fIarray_size\fP\^, \fInum_chars_return\fP\^, \fIoverall_ink_return\fP\^, \fIoverall_logical_return\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.br
+ XRectangle *\fIink_array_return\fP\^;
+.br
+ XRectangle *\fIlogical_array_return\fP\^;
+.br
+ int \fIarray_size\fP\^;
+.br
+ int *\fInum_chars_return\fP\^;
+.br
+ XRectangle *\fIoverall_ink_return\fP\^;
+.br
+ XRectangle *\fIoverall_logical_return\fP\^;
+.FN
+.FD 0
+Status XwcTextPerCharExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_wchars\fP\^, \fIink_array_return\fP\^,
+.br
+ \fIlogical_array_return\fP\^, \fIarray_size\fP\^, \fInum_chars_return\fP\^, \fIoverall_ink_return\fP\^, \fIoverall_ink_return\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ wchar_t *\fIstring\fP\^;
+.br
+ int \fInum_wchars\fP\^;
+.br
+ XRectangle *\fIink_array_return\fP\^;
+.br
+ XRectangle *\fIlogical_array_return\fP;
+.br
+ int \fIarray_size\fP\^;
+.br
+ int *\fInum_chars_return\fP\^;
+.br
+ XRectangle *\fIoverall_ink_return\fP\^;
+.br
+ XRectangle *\fIoverall_logical_return\fP\^;
+.FN
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInum_bytes\fP 1i
+Specifies the number of bytes in the string argument.
+.IP \fInum_wchars\fP 1i
+Specifies the number of characters in the string argument.
+.IP \fIink_array_return\fP 1i
+Returns the ink dimensions for each character.
+.IP \fIlogical_array_return\fP 1i
+Returns the logical dimensions for each character.
+.IP \fIarray_size\fP 1i
+Specifies the size of ink_array_return and logical_array_return.
+The caller must pass in arrays of this size.
+.IP \fInum_chars_return\fP 1i
+Returns the number of characters in the string argument.
+.ds Ov extents of the entire string
+.IP \fIoverall_ink_return\fP 1i
+Returns the overall ink \*(Ov.
+.IP \fIoverall_logical_return\fP 1i
+Returns the overall logical \*(Ov.
+.LP
+.eM
+The
+.PN XmbTextPerCharExtents
+and
+.PN XwcTextPerCharExtents
+functions return the text dimensions of each character of the specified text,
+using the fonts loaded for the specified font set.
+Each successive element of ink_array_return and logical_array_return
+is set to the successive character's drawn metrics,
+relative to the drawing origin of the string and one
+rectangle
+for each character in the supplied text string.
+The number of elements of ink_array_return and logical_array_return
+that have been set is returned to num_chars_return.
+.LP
+Each element of ink_array_return is set to the bounding box
+of the corresponding character's drawn foreground color.
+Each element of logical_array_return is set to the bounding box
+that provides minimum spacing to other graphical features
+for the corresponding character.
+Other graphical features should not intersect any of the
+logical_array_return rectangles.
+.LP
+Note that an
+.PN XRectangle
+represents the effective drawing dimensions of the character,
+regardless of the number of font glyphs that are used to draw
+the character or the direction in which the character is drawn.
+If multiple characters map to a single character glyph,
+the dimensions of all the
+.PN XRectangles
+of those characters are the same.
+.LP
+When the
+.PN XFontSet
+has missing charsets, metrics for each unavailable
+character are taken from the default string returned by
+.PN XCreateFontSet
+so that the metrics represent the text as it will actually be drawn.
+The behavior for an invalid codepoint is undefined.
+.LP
+If the array_size is too small for the number of characters in the
+supplied text, the functions return zero
+and num_chars_return is set to the number of rectangles required.
+Otherwise, the functions return a nonzero value.
+.LP
+If the overall_ink_return or overall_logical_return argument is non-NULL,
+.PN XmbTextPerCharExtents
+and
+.PN XwcTextPerCharExtents
+return the maximum extent of the string's metrics to overall_ink_return
+or overall_logical_return, as returned by
+.PN XmbTextExtents
+or
+.PN XwcTextExtents .
+.NH 3
+Drawing Text Using Font Sets
+.XS
+\*(SN Drawing Text Using Font Sets
+.XE
+.LP
+The functions defined in this section
+draw text at a specified location in a drawable.
+They are similar to the functions
+.PN XDrawText ,
+.PN XDrawString ,
+and
+.PN XDrawImageString
+except that they work with font sets instead of single fonts
+and interpret the text based on the locale of the font set
+instead of treating the bytes of the string as direct font indexes.
+See section 8.6 for details of the use of Graphics Contexts (GCs)
+and possible protocol errors.
+If a
+.PN BadFont
+error is generated,
+characters prior to the offending character may have been drawn.
+.LP
+The text is drawn using the fonts loaded for the specified font set;
+the font in the GC is ignored and may be modified by the functions.
+No validation that all fonts conform to some width rule is performed.
+.LP
+The text functions
+.PN XmbDrawText
+and
+.PN XwcDrawText
+use the following structures:
+.LP
+.IN "XmbTextItem" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ char *chars; /* pointer to string */
+ int nchars; /* number of bytes */
+ int delta; /* pixel delta between strings */
+ XFontSet font_set; /* fonts, None means don't change */
+} XmbTextItem;
+.De
+.LP
+.IN "XwcTextItem" "" "@DEF@"
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ wchar_t *chars; /* pointer to wide char string */
+ int nchars; /* number of wide characters */
+ int delta; /* pixel delta between strings */
+ XFontSet font_set; /* fonts, None means don't change */
+} XwcTextItem;
+.De
+.LP
+.eM
+.sp
+To draw text using multiple font sets in a given drawable, use
+.PN XmbDrawText
+or
+.PN XwcDrawText .
+.IN "XmbDrawText" "" "@DEF@"
+.IN "XwcDrawText" "" "@DEF@"
+.sM
+.FD 0
+void XmbDrawText\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIitems\fP\^, \fInitems\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ XmbTextItem *\fIitems\fP\^;
+.br
+ int \fInitems\fP\^;
+.FN
+.FD 0
+void XwcDrawText\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIitems\fP\^, \fInitems\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ XwcTextItem *\fIitems\fP\^;
+.br
+ int \fInitems\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIitems\fP 1i
+Specifies an array of text items.
+.IP \fInitems\fP 1i
+Specifies the number of text items in the array.
+.LP
+.eM
+The
+.PN XmbDrawText
+and
+.PN XwcDrawText
+functions allow complex spacing and font set shifts between text strings.
+Each text item is processed in turn, with the origin of a text
+element advanced in the primary draw direction by the escapement of the
+previous text item.
+A text item delta specifies an additional escapement of the text item
+drawing origin in the primary draw direction.
+A font_set member other than
+.PN None
+in an item causes the font set to be used for this and subsequent text items
+in the text_items list.
+Leading text items with a font_set member set to
+.PN None
+will not be drawn.
+.LP
+.PN XmbDrawText
+and
+.PN XwcDrawText
+do not perform any context-dependent rendering between text segments.
+Clients may compute the drawing metrics by passing each text segment to
+.PN XmbTextExtents
+and
+.PN XwcTextExtents
+or
+.PN XmbTextPerCharExtents
+and
+.PN XwcTextPerCharExtents .
+When the
+.PN XFontSet
+has missing charsets, each unavailable character is drawn
+with the default string returned by
+.PN XCreateFontSet .
+The behavior for an invalid codepoint is undefined.
+.LP
+.sp
+To draw text using a single font set in a given drawable, use
+.PN XmbDrawString
+or
+.PN XwcDrawString .
+.IN "XmbDrawString" "" "@DEF@"
+.IN "XwcDrawString" "" "@DEF@"
+.sM
+.FD 0
+void XmbDrawString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.FN
+.FD 0
+void XwcDrawString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_wchars\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ wchar_t *\fIstring\fP\^;
+.br
+ int \fInum_wchars\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInum_bytes\fP 1i
+Specifies the number of bytes in the string argument.
+.IP \fInum_wchars\fP 1i
+Specifies the number of characters in the string argument.
+.LP
+.eM
+The
+.PN XmbDrawString
+and
+.PN XwcDrawString
+functions draw the specified text with the foreground pixel.
+When the
+.PN XFontSet
+has missing charsets, each unavailable character is drawn
+with the default string returned by
+.PN XCreateFontSet .
+The behavior for an invalid codepoint is undefined.
+.LP
+.sp
+To draw image text using a single font set in a given drawable, use
+.PN XmbDrawImageString
+or
+.PN XwcDrawImageString .
+.IN "XmbDrawImageString" "" "@DEF@"
+.IN "XwcDrawImageString" "" "@DEF@"
+.sM
+.FD 0
+void XmbDrawImageString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.FN
+.FD 0
+void XwcDrawImageString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_wchars\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ wchar_t *\fIstring\fP\^;
+.br
+ int \fInum_wchars\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.ds Xy
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fInum_bytes\fP 1i
+Specifies the number of bytes in the string argument.
+.IP \fInum_wchars\fP 1i
+Specifies the number of characters in the string argument.
+.LP
+.eM
+The
+.PN XmbDrawImageString
+and
+.PN XwcDrawImageString
+functions fill a destination rectangle with the background pixel defined
+in the GC and then paint the text with the foreground pixel.
+The filled rectangle is the rectangle returned to overall_logical_return by
+.PN XmbTextExtents
+or
+.PN XwcTextExtents
+for the same text and
+.PN XFontSet .
+.LP
+When the
+.PN XFontSet
+has missing charsets, each unavailable character is drawn
+with the default string returned by
+.PN XCreateFontSet .
+The behavior for an invalid codepoint is undefined.
+.NH 2
+Input Methods
+.XS
+\*(SN Input Methods
+.XE
+.LP
+This section provides discussions of the following X Input Method
+(XIM) topics:
+.IP \(bu 5
+Input method overview
+.IP \(bu 5
+Input method management
+.IP \(bu 5
+Input method functions
+.IP \(bu 5
+Input method values
+.IP \(bu 5
+Input context functions
+.IP \(bu 5
+Input context values
+.IP \(bu 5
+Input method callback semantics
+.IP \(bu 5
+Event filtering
+.IP \(bu 5
+Getting keyboard input
+.IP \(bu 5
+Input method conventions
+.NH 3
+Input Method Overview
+.XS
+\*(SN Input Method Overview
+.XE
+.LP
+This section provides definitions for terms and concepts used
+for internationalized text input and a brief overview of the
+intended use of the mechanisms provided by Xlib.
+.LP
+A large number of languages in the world use alphabets
+consisting of a small set of symbols (letters) to form words.
+To enter text into a computer in an alphabetic language,
+a user usually has a keyboard on which there exist key symbols corresponding
+to the alphabet.
+Sometimes, a few characters of an alphabetic language are missing
+on the keyboard.
+Many computer users who speak a Latin-alphabet-based language
+only have an English-based keyboard.
+They need to hit a combination of keystrokes
+to enter a character that does not exist directly on the keyboard.
+A number of algorithms have been developed for entering such characters.
+These are known as European input methods, compose input methods,
+or dead-key input methods.
+.LP
+Japanese is an example of a language with a phonetic symbol set,
+where each symbol represents a specific sound.
+There are two phonetic symbol sets in Japanese: Katakana and Hiragana.
+In general,
+Katakana is used for words that are of foreign origin,
+and Hiragana is used for writing native Japanese words.
+Collectively, the two systems are called Kana.
+Each set consists of 48 characters.
+.LP
+Korean also has a phonetic symbol set, called Hangul.
+Each of the 24 basic phonetic symbols (14 consonants and 10 vowels)
+represents a specific sound.
+A syllable is composed of two or three parts:
+the initial consonants, the vowels, and the optional last consonants.
+With Hangul,
+syllables can be treated as the basic units on which text processing is done.
+For example,
+a delete operation may work on a phonetic symbol or a syllable.
+Korean code sets include several thousands of these syllables.
+A user types the phonetic symbols that make up the syllables of the words
+to be entered.
+The display may change as each phonetic symbol is entered.
+For example,
+when the second phonetic symbol of a syllable is entered,
+the first phonetic symbol may change its shape and size.
+Likewise, when the third phonetic symbol is entered,
+the first two phonetic symbols may change their shape and size.
+.LP
+Not all languages rely solely on alphabetic or phonetic systems.
+Some languages, including Japanese and Korean, employ an
+ideographic writing system.
+In an ideographic system, rather than taking a small set of
+symbols and combining them in different ways to create words,
+each word consists of one unique symbol (or, occasionally, several symbols).
+The number of symbols can be very large:
+approximately 50,000 have been identified in Hanzi,
+the Chinese ideographic system.
+.LP
+Two major aspects of ideographic systems impact their use with computers.
+First, the standard computer character sets in Japan, China, and Korea
+include roughly 8,000 characters,
+while sets in Taiwan have between 15,000 and 30,000 characters.
+This makes it necessary to use more than one byte to represent a character.
+Second, it obviously is impractical to have a keyboard that includes
+all of a given language's ideographic symbols.
+Therefore, a mechanism is required for entering characters
+so that a keyboard with a reasonable number of keys can be used.
+Those input methods are usually based on phonetics,
+but there also exist methods based on the graphical properties of
+characters.
+.LP
+In Japan, both Kana and the ideographic system Kanji are used.
+In Korea, Hangul and sometimes the ideographic system Hanja are used.
+Now consider entering ideographs in Japan, Korea, China, and Taiwan.
+.LP
+In Japan, either Kana or English characters are typed and then a region
+is selected (sometimes automatically) for conversion to Kanji.
+Several Kanji characters may have the same phonetic representation.
+If that is the case with the string entered,
+a menu of characters is presented and
+the user must choose the appropriate one.
+If no choice is necessary or a preference has been established,
+the input method does the substitution directly.
+When Latin characters are converted to Kana or Kanji,
+it is called a romaji conversion.
+.LP
+In Korea, it is usually acceptable to keep Korean text in Hangul form,
+but some people may choose to write Hanja-originated words in Hanja
+rather than in Hangul.
+To change Hangul to Hanja,
+the user selects a region for conversion
+and then follows the same basic method as that described for Japanese.
+.LP
+Probably because there are well-accepted phonetic writing systems
+for Japanese and Korean,
+computer input methods in these countries for entering ideographs
+are fairly standard.
+Keyboard keys have both English characters and phonetic symbols
+engraved on them, and the user can switch between the two sets.
+.LP
+The situation is different for Chinese.
+While there is a phonetic system called Pinyin promoted by authorities,
+there is no consensus for entering Chinese text.
+Some vendors use a phonetic decomposition (Pinyin or another),
+others use ideographic decomposition of Chinese words,
+with various implementations and keyboard layouts.
+There are about 16 known methods, none of which is a clear standard.
+.LP
+Also, there are actually two ideographic sets used:
+Traditional Chinese (the original written Chinese)
+and Simplified Chinese.
+Several years ago,
+the People's Republic of China launched a campaign to simplify
+some ideographic characters and eliminate redundancies altogether.
+Under the plan,
+characters would be streamlined every five years.
+Characters have been revised several times now,
+resulting in the smaller, simpler set that makes up Simplified Chinese.
+.NH 4
+Input Method Architecture
+.XS
+\*(SN Input Method Architecture
+.XE
+.LP
+As shown in the previous section,
+there are many different input methods in use today,
+each varying with language, culture, and history.
+A common feature of many input methods is that the user may type
+multiple keystrokes to compose a single character (or set
+of characters).
+The process of composing characters from keystrokes is called
+\fIpreediting\fP.
+It may require complex algorithms and large dictionaries
+involving substantial computer resources.
+.LP
+Input methods may require one or more areas in which to show the
+feedback of the actual keystrokes, to propose disambiguation to the
+user, to list dictionaries, and so on.
+The input method areas of concern are as follows:
+.IP \(bu 5
+The \fIstatus\fP area is a logical extension of the
+LEDs that exist on the physical keyboard.
+It is a window that is intended to present the internal state
+of the input method that is critical to the user.
+The status area may consist of text data and bitmaps or some combination.
+.IP \(bu 5
+The \fIpreedit\fP area displays the
+intermediate text for those languages that are composing prior to
+the client handling the data.
+.IP \(bu 5
+The \fIauxiliary\fP area is used for pop-up menus and customizing
+dialogs that may be required for an input method.
+There may be multiple auxiliary areas for an input method.
+Auxiliary areas are managed by the input method independent of the client.
+Auxiliary areas are assumed to be separate dialogs,
+which are maintained by the input method.
+.LP
+There are various user interaction styles used for preediting.
+The ones supported by Xlib are as follows:
+.IP \(bu 5
+For \fIon-the-spot\fP input methods,
+preediting data will be displayed directly in the application window.
+Application data is moved to allow preedit data to appear
+at the point of insertion.
+.IP \(bu 5
+\fIOver-the-spot\fP preediting means that the data is displayed in
+a preedit window that is placed over the point of insertion.
+.IP \(bu 5
+\fIOff-the-spot\fP preediting means that the preedit window is
+inside the application window but not at the point of insertion.
+Often, this type of window is placed at the bottom of the application window.
+.IP \(bu 5
+\fIRoot-window\fP preediting refers to input methods that use a preedit
+window that is the child of
+.PN RootWindow .
+.LP
+It would require a lot of computing resources if portable applications
+had to include input methods for all the languages in the world.
+To avoid this,
+a goal of the Xlib design is to allow an application
+to communicate with an input method placed in a separate process.
+Such a process is called an \fIinput server\fP.
+The server to which the application should connect is dependent on
+the environment when the application is started up,
+that is, the user language and the actual encoding to be used for it.
+The input method connection is said to be \fIlocale-dependent\fP.
+It is also user-dependent.
+For a given language, the user can choose, to some extent,
+the user interface style of input method (if choice is possible among
+several).
+.LP
+Using an input server implies communication overhead,
+but applications can be migrated without relinking.
+Input methods can be implemented either as a
+stub communicating to an input server or as a local library.
+.LP
+An input method may be based on a \fIfront-end\fP or a \fIback-end\fP
+architecture.
+In a front-end architecture,
+there are two separate connections to the X server:
+keystrokes go directly from the X server to the input method on
+one connection and other events to the regular client connection.
+The input method is then acting as a filter and sends composed strings
+to the client.
+A front-end architecture requires synchronization between the
+two connections to avoid lost key events or locking issues.
+.LP
+In a back-end architecture,
+a single X server connection is used.
+A dispatching mechanism must decide on this channel to delegate appropriate
+keystrokes to the input method.
+For instance,
+it may retain a Help keystroke for its own purpose.
+In the case where the input method is a separate process (that is, a server),
+there must be a special communication protocol between the back-end client
+and the input server.
+.LP
+A front-end architecture introduces synchronization issues
+and a filtering mechanism for noncharacter keystrokes
+(Function keys, Help, and so on).
+A back-end architecture sometimes implies more communication overhead
+and more process switching.
+If all three processes (X server, input server, client)
+are running on a single workstation,
+there are two process switches for each keystroke in a back-end
+architecture,
+but there is only one in a front-end architecture.
+.LP
+The abstraction used by a client to communicate with an input method
+is an opaque data structure represented by the
+.PN XIM
+data type.
+This data structure is returned by the
+.PN XOpenIM
+function, which opens an input method on a given display.
+Subsequent operations on this data structure encapsulate all communication
+between client and input method.
+There is no need for an X client to use any networking library
+or natural language package to use an input method.
+.LP
+A single input server may be used for one or more languages,
+supporting one or more encoding schemes.
+But the strings returned from an input method will always be encoded
+in the (single) locale associated with the
+.PN XIM
+object.
+.NH 4
+Input Contexts
+.XS
+\*(SN Input Contexts
+.XE
+.LP
+Xlib provides the ability to manage a multi-threaded state for text input.
+A client may be using multiple windows,
+each window with multiple text entry areas,
+and the user possibly switching among them at any time.
+The abstraction for representing the state of a particular input thread
+is called an \fIinput context\fP.
+The Xlib representation of an input context is an
+.PN XIC .
+.LP
+An input context is the abstraction retaining the state, properties,
+and semantics of communication between a client and an input method.
+An input context is a combination of an input method, a locale
+specifying the encoding of the character strings to be returned,
+a client window, internal state information,
+and various layout or appearance characteristics.
+The input context concept somewhat matches for input the graphics context
+abstraction defined for graphics output.
+.LP
+One input context belongs to exactly one input method.
+Different input contexts may be associated with the same input method,
+possibly with the same client window.
+An
+.PN XIC
+is created with the
+.PN XCreateIC
+function, providing an
+.PN XIM
+argument and affiliating the input context to the input method
+for its lifetime.
+When an input method is closed with
+.PN XCloseIM ,
+all of its affiliated input contexts should not be used any more
+(and should preferably be destroyed before closing the input method).
+.LP
+Considering the example of a client window with multiple text entry areas,
+the application programmer could, for example, choose to implement as follows:
+.IP \(bu 5
+As many input contexts are created as text entry areas, and the client
+will get the input accumulated on each context each time it looks up
+in that context.
+.IP \(bu 5
+A single context is created for a top-level window in the application.
+If such a window contains several text entry areas,
+each time the user moves to another text entry area,
+the client has to indicate changes in the context.
+.LP
+A range of choices can be made by application designers to use
+either a single or multiple input contexts,
+according to the needs of their application.
+.NH 4
+Getting Keyboard Input
+.XS
+\*(SN Getting Keyboard Input
+.XE
+.LP
+To obtain characters from an input method,
+a client must call the function
+.PN XmbLookupString
+or
+.PN XwcLookupString
+with an input context created from that input method.
+Both a locale and display are bound to an input method when it is opened,
+and an input context inherits this locale and display.
+Any strings returned by
+.PN XmbLookupString
+or
+.PN XwcLookupString
+will be encoded in that locale.
+.NH 4
+Focus Management
+.XS
+\*(SN Focus Management
+.XE
+.LP
+For each text entry area in which the
+.PN XmbLookupString
+or
+.PN XwcLookupString
+functions are used,
+there will be an associated input context.
+.LP
+When the application focus moves to a text entry area,
+the application must set the input context focus to the
+input context associated with that area.
+The input context focus is set by calling
+.PN XSetICFocus
+with the appropriate input context.
+.LP
+Also, when the application focus moves out of a text entry area, the
+application should unset the focus for the associated input context
+by calling
+.PN XUnsetICFocus .
+As an optimization, if
+.PN XSetICFocus
+is called successively on two different input contexts,
+setting the focus on the second
+will automatically unset the focus on the first.
+.LP
+To set and unset the input context focus correctly,
+it is necessary to track application-level focus changes.
+Such focus changes do not necessarily correspond to X server focus changes.
+.LP
+If a single input context
+is being used to do input for
+multiple text entry areas, it will also be necessary
+to set the focus window of the
+input context whenever the focus window changes
+(see section 13.5.6.3).
+.NH 4
+Geometry Management
+.XS
+\*(SN Geometry Management
+.XE
+.LP
+In most input method architectures
+(on-the-spot being the notable exception),
+the input method will perform the display of its own data.
+To provide better visual locality,
+it is often desirable to have the input method areas embedded within a client.
+To do this,
+the client may need to allocate space for an input method.
+Xlib provides support that allows the size and position of input method
+areas to be provided by a client.
+The input method areas that are supported for geometry management
+are the status area and the preedit area.
+.LP
+The fundamental concept on which geometry management for input method windows
+is based is the proper division of responsibilities between the
+client (or toolkit) and the input method.
+The division of responsibilities is as follows:
+.IP \(bu 5
+The client is responsible for the geometry of the input method window.
+.IP \(bu 5
+The input method is responsible for the contents of the input method window.
+.LP
+An input method is able to suggest a size to the client,
+but it cannot suggest a placement.
+Also the input method can only suggest a size.
+It does not determine the size,
+and it must accept the size it is given.
+.LP
+Before a client provides geometry management for an input method,
+it must determine if geometry management is needed.
+The input method indicates the need for geometry management
+by setting
+.PN XIMPreeditArea
+or
+.PN XIMStatusArea
+in its
+.PN XIMStyles
+value returned by
+.PN XGetIMValues .
+When a client has decided that it will provide geometry management
+for an input method,
+it indicates that decision by setting the
+.PN XNInputStyle
+value in the
+.PN XIC .
+.LP
+After a client has established with the input method
+that it will do geometry management,
+the client must negotiate the geometry with the input method.
+The geometry is negotiated by the following steps:
+.IP \(bu 5
+The client suggests an area to the input method by setting the
+.PN XNAreaNeeded
+value for that area.
+If the client has no constraints for the input method,
+it either will not suggest an area or will set the width and height to zero.
+Otherwise, it will set one of the values.
+.IP \(bu 5
+The client will get the XIC value
+.PN XNAreaNeeded .
+The input method will return its suggested size in this value.
+The input method should pay attention to any constraints suggested
+by the client.
+.IP \(bu 5
+The client sets the XIC value
+.PN XNArea
+to inform the input method of the geometry of its window.
+The client should try to honor the geometry requested by the input method.
+The input method must accept this geometry.
+.LP
+Clients doing geometry management must be aware that setting other
+XIC values may affect the geometry desired by an input method.
+For example,
+.PN XNFontSet
+and
+.PN XNLineSpacing
+may change the geometry desired by the input method.
+.LP
+The table of XIC values (see section 13.5.6)
+indicates the values that can cause the desired geometry to change
+when they are set.
+It is the responsibility of the client to renegotiate the geometry
+of the input method window when it is needed.
+.LP
+In addition,
+a geometry management callback is provided
+by which an input method can initiate a geometry change.
+.NH 4
+Event Filtering
+.XS
+\*(SN Event Filtering
+.XE
+.LP
+A filtering mechanism is provided to allow input methods
+to capture X events transparently to clients.
+It is expected that toolkits (or clients) using
+.PN XmbLookupString
+or
+.PN XwcLookupString
+will call this filter at some point in the event processing mechanism
+to make sure that events needed by an input method can be filtered
+by that input method.
+.LP
+If there were no filter,
+a client could receive and discard events that are necessary
+for the proper functioning of an input method.
+The following provides a few examples of such events:
+.IP \(bu 5
+Expose events on preedit window in local mode.
+.IP \(bu 5
+Events may be used by an input method to communicate with an input server.
+Such input server protocol-related events have to be intercepted
+if one does not want to disturb client code.
+.IP \(bu 5
+Key events can be sent to a filter before they are bound
+to translations such as those the X Toolkit Intrinsics library provides.
+.LP
+Clients are expected to get the XIC value
+.PN XNFilterEvents
+and augment the event mask for the client window with that event mask.
+This mask may be zero.
+.NH 4
+Callbacks
+.XS
+\*(SN Callbacks
+.XE
+.LP
+When an on-the-spot input method is implemented,
+only the client can insert or delete preedit data in place
+and possibly scroll existing text.
+This means that the echo of the keystrokes has to be achieved
+by the client itself, tightly coupled with the input method logic.
+.LP
+When the user enters a keystroke,
+the client calls
+.PN XmbLookupString
+or
+.PN XwcLookupString .
+At this point, in the on-the-spot case,
+the echo of the keystroke in the preedit has not yet been done.
+Before returning to the client logic that handles the input characters,
+the look-up function
+must call the echoing logic to insert the new keystroke.
+If the keystrokes entered so far make up a character,
+the keystrokes entered need to be deleted,
+and the composed character will be returned.
+Hence, what happens is that, while being called by client code,
+the input method logic has to call back to the client before it returns.
+The client code, that is, a callback procedure,
+is called from the input method logic.
+.LP
+There are a number of cases where the input method logic has to
+call back the client.
+Each of those cases is associated with a well-defined callback action.
+It is possible for the client to specify, for each input context,
+what callback is to be called for each action.
+.LP
+There are also callbacks provided for feedback of status information
+and a callback to initiate a geometry request for an input method.
+.NH 4
+Visible Position Feedback Masks
+.XS
+\*(SN Visible Position Feedback Masks
+.XE
+.LP
+In the on-the-spot input style, there is a problem when
+attempting to draw preedit strings that are longer than the
+available space. Once the display area is exceeded, it is not
+clear how best to display the preedit string.
+The visible position feedback masks of
+.PN XIMText
+help resolve this problem by allowing the input method to specify hints that
+indicate the essential portions of the preedit string.
+For example, such hints can help developers implement
+scrolling of a long preedit string within a short preedit display area.
+.NH 4
+Preedit String Management
+.XS
+\*(SN Preedit String Management
+.XE
+.LP
+As highlighted before, the input method architecture provides
+preediting, which supports a type of preprocessor input composition.
+In this case, composition consists of interpreting a sequence
+of key events and returning a committed string via
+.PN XmbLookupString
+or
+.PN XwcLookupString .
+This provides the basics for input methods.
+.LP
+In addition to preediting based on key events, a general framework
+is provided to give a client that desires it more advanced preediting based
+on the text within the client. This framework is called
+\fIstring conversion\fP and is provided using XIC values.
+The fundamental concept of string conversion
+is to allow the input method to manipulate the client's
+text independent of any user preediting operation.
+.LP
+The need for string conversion is based on
+language needs and input method capabilities.
+The following are some examples of string conversion:
+.IP \(bu 5
+Transliteration conversion provides language-specific conversions
+within the input method.
+In the case of Korean input, users wish to convert a Hangul string
+into a Hanja string while in preediting, after preediting,
+or in other situations (for example, on a selected string).
+The conversion is triggered when the user
+presses a Hangul-to-Hanja key sequence (which may be input method specific).
+Sometimes the user may want to invoke the conversion after finishing
+preediting or on a user-selected string.
+Thus, the string to be converted is in an application buffer, not in
+the preedit area of the input method. The string conversion services
+allow the client to request this transliteration conversion from the
+input method.
+There are many other transliteration conversions defined for
+various languages, for example, Kana-to-Kanji conversion in Japanese.
+.sp
+The key to remember is that transliteration conversions are triggered
+at the request of the user and returned to the client
+immediately without affecting the preedit area of the input method.
+.IP \(bu 5
+Reconversion of a previously committed string or
+a selected string is supported by many input methods as a
+convenience to the user.
+For example, a user tends to mistype the commit key while
+preediting. In that case, some input methods provide a special
+key sequence to request a ``reconvert'' operation on the
+committed string, similiar to the undo facility provided by most
+text editors.
+Another example is where the user is proofreading a document
+that has some misconversions from preediting and wants to correct
+the misconverted text. Such reconversion is again triggered
+by the user invoking some special action, but reconversions should
+not affect the state of the preedit area.
+.IP \(bu 5
+Context-sensitive conversion is required for some languages
+and input methods that need to retrieve text that surrounds the
+current spot location (cursor position) of the client's buffer.
+Such text is needed when the preediting operation depends on
+some surrounding characters (usually preceding the spot location).
+For example,
+in Thai language input, certain character sequences may be invalid and
+the input method may want to check whether characters constitute a
+valid word. Input methods that do such context-dependent
+checking need to retrieve the characters surrounding the current
+cursor position to obtain complete words.
+.sp
+Unlike other conversions, this conversion is not explicitly
+requested by the user.
+Input methods that provide such context-sensitive conversion
+continuously need to request context from the client, and any change
+in the context of the spot location may affect such conversions.
+The client's context would be needed if the user moves the cursor
+and starts editing again.
+.sp
+For this reason, an input method supporting this type of conversion
+should take notice of when the client calls
+.PN XmbResetIC
+or
+.PN XwcResetIC ,
+which is usually an indication of a context change.
+.LP
+Context-sensitive conversions just need a copy of the client's text,
+while other conversions replace the client's text with new text
+to achieve the reconversion or transliteration. Yet in all
+cases the result of a conversion, either immediately or via preediting,
+is returned by the
+.PN XmbLookupString
+and
+.PN XwcLookupString
+functions.
+.LP
+String conversion support is dependent on the availability of the
+.PN XNStringConversion
+or
+.PN XNStringConversionCallback
+XIC values.
+Because the input method may not support string conversions,
+clients have to query the availability of string conversion
+operations by checking the supported XIC values list by calling
+.PN XGetIMValues
+with the
+.PN XNQueryICValuesList
+IM value.
+.LP
+The difference between these two values is whether the
+conversion is invoked by the client or the input method.
+The
+.PN XNStringConversion
+XIC value is used by clients to request
+a string conversion from the input method. The client
+is responsible for determining which events are used
+to trigger the string conversion and whether the string to be
+converted should be copied or deleted. The type of conversion
+is determined by the input method; the client can only
+pass the string to be converted. The client is guaranteed that
+no
+.PN XNStringConversionCallback
+will be issued when this value is set; thus, the client need
+only set one of these values.
+.LP
+The
+.PN XNStringConversionCallback
+XIC value is used by the client to notify the input method that
+it will accept requests from the input method for string conversion.
+If this value is set,
+it is the input method's responsibility to determine which
+events are used to trigger the string conversion.
+When such events occur, the input method issues a call to the
+client-supplied procedure to retrieve the string to be converted. The client's
+callback procedure is notified whether to copy or delete the string and
+is provided with hints as to the amount of text needed.
+The
+.PN XIMStringConversionCallbackStruct
+specifies which text should be passed back to the input method.
+.LP
+Finally, the input method may call the client's
+.PN XNStringConversionCallback
+procedure multiple times if the string returned from the callback is
+not sufficient to perform a successful conversion. The arguments
+to the client's procedure allow the input method to define a
+position (in character units) relative to the client's cursor position
+and the size of the text needed. By varying the position and size of
+the desired text in subsequent callbacks, the input method can retrieve
+additional text.
+.LP
+.NH 3
+Input Method Management
+.XS
+\*(SN Input Method Management
+.XE
+.LP
+The interface to input methods might appear to be simply creating
+an input method
+.Pn ( XOpenIM )
+and freeing an input method
+.Pn ( XCloseIM ).
+However, input methods may
+require complex communication with input method servers (IM servers),
+for example:
+.IP \(bu 5
+If the X server, IM server, and X clients are started asynchronously,
+some clients may attempt to connect to the IM server before it is
+fully operational, and fail.
+Therefore, some mechanism is needed to allow clients to detect when an IM
+server has started.
+.LP
+It is up to clients to decide what should be done when an IM server is
+not available (for example, wait, or use some other IM server).
+.LP
+.IP \(bu 5
+Some input methods may allow the underlying IM server to be switched.
+Such customization may be desired without restarting the entire client.
+.LP
+To support management of input methods in these cases, the following
+functions are provided:
+.TS
+lw(2.4i) lw(3.3i).
+T{
+.PN XRegisterIMInstantiateCallback
+T} T{
+This function allows clients to register a callback procedure
+to be called when Xlib detects that an IM server is up and available.
+T}
+T{
+.PN XOpenIM
+T} T{
+A client calls this function as a result of the callback procedure
+being called.
+T}
+T{
+.PN XSetIMValue ,
+.PN XSetICValue
+T} T{
+These functions use the XIM and XIC values,
+.PN XNDestroyCallback ,
+to allow a client
+to register a callback procedure to be called when Xlib detects that
+an IM server that was associated with an opened
+input method is no longer available.
+.sp 4p
+In addition, this function can be used to switch IM servers for those input
+methods that support such functionality. The IM value for switching IM
+servers is implementation-dependent; see the description below about
+switching IM servers.
+T}
+T{
+.PN XUnregisterIMInstantiateCallback
+T} T{
+This function removes a callback procedure registered by the client.
+T}
+.TE
+.LP
+Input methods that support switching of IM servers may exhibit some
+side-effects:
+.IP \(bu 5
+The input method will ensure that any new IM server supports any of the
+input styles being used by input contexts already associated with the
+input method.
+However, the list of supported input styles may be different.
+.LP
+.IP \(bu 5
+Geometry management requests on previously created input contexts
+may be initiated by the new IM server.
+.LP
+.NH 4
+Hot Keys
+.XS
+\*(SN Hot Keys
+.XE
+.LP
+Some clients need to guarantee which keys can be used to escape from the
+input method, regardless of the input method state;
+for example, the client-specific Help key or the keys to move the
+input focus.
+The HotKey mechanism allows clients
+to specify a set of keys for this purpose. However, the input
+method might not allow clients to specify hot keys.
+Therefore, clients have to query support of hot keys by checking the
+supported XIC values list by calling
+.PN XGetIMValues
+with the
+.PN XNQueryICValuesList
+IM value.
+When the hot keys specified conflict with the key bindings of the
+input method, hot keys take precedence over the key bindings of the input
+method.
+.LP
+.NH 4
+Preedit State Operation
+.XS
+\*(SN Preedit State Operation
+.XE
+.LP
+An input method may have several internal states, depending on its
+implementation and the locale. However, one state that is
+independent of locale and implementation is whether the input method
+is currently performing a preediting operation.
+Xlib provides the ability for an application to manage the preedit state
+programmatically. Two methods are provided for
+retrieving the preedit state of an input context.
+One method is to query the state by calling
+.PN XGetICValues
+with the
+.PN XNPreeditState
+XIC value.
+Another method is to receive notification whenever
+the preedit state is changed. To receive such notification,
+an application needs to register a callback by calling
+.PN XSetICValues
+with the
+.PN XNPreeditStateNotifyCallback
+XIC value.
+In order to change the preedit state programmatically, an application
+needs to call
+.PN XSetICValues
+with
+.PN XNPreeditState.
+.LP
+Availability of the preedit state is input method dependent. The input
+method may not provide the ability to set the state or to
+retrieve the state programmatically. Therefore, clients have to
+query availability of preedit state operations by checking the
+supported XIC values list by calling
+.PN XGetIMValues
+with the
+.PN XNQueryICValuesList
+IM value.
+.NH 3
+Input Method Functions
+.XS
+\*(SN Input Method Functions
+.XE
+.LP
+To open a connection, use
+.PN XOpenIM .
+.IN "XOpenIM" "" "@DEF@"
+.sM
+.FD 0
+XIM XOpenIM\^(\^\fIdisplay\fP\^, \fIdb\fP\^, \fIres_name\fP\^, \fIres_class\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XrmDatabase \fIdb\fP\^;
+.br
+ char *\fIres_name\fP\^;
+.br
+ char *\fIres_class\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdb\fP 1i
+Specifies a pointer to the resource database.
+.IP \fIres_name\fP 1i
+Specifies the full resource name of the application.
+.IP \fIres_class\fP 1i
+Specifies the full class name of the application.
+.LP
+.eM
+The
+.PN XOpenIM
+function opens an input method,
+matching the current locale and modifiers specification.
+Current locale and modifiers are bound to the input method at opening time.
+The locale associated with an input method cannot be changed dynamically.
+This implies that the strings returned by
+.PN XmbLookupString
+or
+.PN XwcLookupString ,
+for any input context affiliated with a given input method,
+will be encoded in the locale current at the time the input method is opened.
+.LP
+The specific input method to which this call will be routed
+is identified on the basis of the current locale.
+.PN XOpenIM
+will identify a default input method corresponding to the
+current locale.
+That default can be modified using
+.PN XSetLocaleModifiers
+for the input method modifier.
+.LP
+The db argument is the resource database to be used by the input method
+for looking up resources that are private to the input method.
+It is not intended that this database be used to look
+up values that can be set as IC values in an input context.
+If db is NULL,
+no database is passed to the input method.
+.LP
+The res_name and res_class arguments specify the resource name
+and class of the application.
+They are intended to be used as prefixes by the input method
+when looking up resources that are common to all input contexts
+that may be created for this input method.
+The characters used for resource names and classes must be in the
+X Portable Character Set.
+The resources looked up are not fully specified
+if res_name or res_class is NULL.
+.LP
+The res_name and res_class arguments are not assumed to exist beyond
+the call to
+.PN XOpenIM .
+The specified resource database is assumed to exist for the lifetime
+of the input method.
+.LP
+.PN XOpenIM
+returns NULL if no input method could be opened.
+.LP
+.sp
+To close a connection, use
+.PN XCloseIM .
+.IN "XCloseIM" "" "@DEF@"
+.sM
+.FD 0
+Status XCloseIM\^(\^\fIim\fP\^)
+.br
+ XIM \fIim\fP\^;
+.FN
+.IP \fIim\fP 1i
+Specifies the input method.
+.LP
+.eM
+The
+.PN XCloseIM
+function closes the specified input method.
+.LP
+.sp
+To set input method attributes, use
+.PN XSetIMValues .
+.IN "XSetIMValues" "" "@DEF@"
+.sM
+.FD 0
+char * XSetIMValues\^(\^\fIim\fP\^, ...)
+.br
+ XIM \fIim\fP\^;
+.FN
+.IP \fIim\fP 1i
+Specifies the input method.
+.ds Al \ to set XIM values
+.IP ... 1i
+Specifies the variable-length argument list\*(Al.
+.LP
+.eM
+The
+.PN XSetIMValues
+function presents a variable argument list programming interface
+for setting attributes of the specified input method.
+It returns NULL if it succeeds;
+otherwise,
+it returns the name of the first argument that could not be set.
+Xlib does not attempt to set arguments from the supplied list that
+follow the failed argument;
+all arguments in the list preceding the failed argument have been set
+correctly.
+.LP
+.sp
+To query an input method, use
+.PN XGetIMValues .
+.IN "XGetIMValues" "" "@DEF@"
+.sM
+.FD 0
+char * XGetIMValues\^(\^\fIim\fP\^, ...)
+.br
+ XIM \fIim\fP\^;
+.FN
+.IP \fIim\fP 1i
+Specifies the input method.
+.ds Al \ to get XIM values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.LP
+.eM
+The
+.PN XGetIMValues
+function presents a variable argument list programming interface
+for querying properties or features of the specified input method.
+This function returns NULL if it succeeds;
+otherwise,
+it returns the name of the first argument that could not be obtained.
+.LP
+Each XIM value argument (following a name) must point to
+a location where the XIM value is to be stored.
+That is, if the XIM value is of type T,
+the argument must be of type T*.
+If T itself is a pointer type,
+then
+.PN XGetIMValues
+allocates memory to store the actual data,
+and the client is responsible for freeing this data by calling
+.PN XFree
+with the returned pointer.
+.LP
+.sp
+To obtain the display associated with an input method, use
+.PN XDisplayOfIM .
+.IN "XDisplayOfIM" "" "@DEF@"
+.sM
+.FD 0
+Display * XDisplayOfIM\^(\^\fIim\fP\^)
+.br
+ XIM \fIim\fP\^;
+.FN
+.IP \fIim\fP 1i
+Specifies the input method.
+.LP
+.eM
+The
+.PN XDisplayOfIM
+function returns the display associated with the specified input method.
+.LP
+.sp
+To get the locale associated with an input method, use
+.PN XLocaleOfIM .
+.IN "XLocaleOfIM" "" "@DEF@"
+.sM
+.FD 0
+char * XLocaleOfIM\^(\^\fIim\fP\^)
+.br
+ XIM \fIim\fP\^;
+.FN
+.IP \fIim\fP 1i
+Specifies the input method.
+.LP
+.eM
+The
+.PN XLocaleOfIM
+function returns the locale associated with the specified input method.
+.LP
+.sp
+To register an input method instantiate callback, use
+.PN XRegisterIMInstantiateCallback .
+.IN "XRegisterIMInstantiateCallback" "" "@DEF@"
+.sM
+.FD 0
+Bool XRegisterIMInstantiateCallback\^(\^\fIdisplay\fP\^, \fIdb\fP\^, \fIres_name\fP\^, \fIres_class\fP\^, \fIcallback\fP\^, \fIclient_data\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XrmDatabase \fIdb\fP\^;
+.br
+ char *\fIres_name\fP\^;
+.br
+ char *\fIres_class\fP\^;
+.br
+ XIMProc \fIcallback\fP\^;
+.br
+ XPointer *\fIclient_data\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdb\fP 1i
+Specifies a pointer to the resource database.
+.IP \fIres_name\fP 1i
+Specifies the full resource name of the application.
+.IP \fIres_class\fP 1i
+Specifies the full class name of the application.
+.IP \fIcallback\fP 1i
+Specifies a pointer to the input method instantiate callback.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.LP
+.eM
+The
+.PN XRegisterIMInstantiateCallback
+function registers a callback to be invoked whenever a new input method
+becomes available for the specified display that matches the current
+locale and modifiers.
+.LP
+The function returns
+.PN True
+ if it succeeds; otherwise, it returns
+.PN False .
+.LP
+The generic prototype is as follows:
+.IN "IMInstantiateCallback" "" "@DEF@"
+.sM
+.FD 0
+void IMInstantiateCallback\^(\^\fIdisplay\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+To unregister an input method instantiation callback, use
+.PN XUnregisterIMInstantiateCallback .
+.IN "XUnregisterIMInstantiateCallback" "" "@DEF@"
+.sM
+.FD 0
+Bool XUnregisterIMInstantiateCallback\^(\^\fIdisplay\fP\^, \fIdb\fP\^, \fIres_name\fP\^, \fIres_class\fP\^, \fIcallback\fP\^, \fIclient_data\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XrmDatabase \fIdb\fP\^;
+.br
+ char *\fIres_name\fP\^;
+.br
+ char *\fIres_class\fP\^;
+.br
+ XIMProc \fIcallback\fP\^;
+.br
+ XPointer *\fIclient_data\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdb\fP 1i
+Specifies a pointer to the resource database.
+.IP \fIres_name\fP 1i
+Specifies the full resource name of the application.
+.IP \fIres_class\fP 1i
+Specifies the full class name of the application.
+.IP \fIcallback\fP 1i
+Specifies a pointer to the input method instantiate callback.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.LP
+.eM
+The
+.PN XUnregisterIMInstantiateCallback
+function removes an input method instantiation callback previously
+registered.
+The function returns
+.PN True
+if it succeeds; otherwise, it returns
+.PN False .
+.NH 3
+Input Method Values
+.XS
+\*(SN Input Method Values
+.XE
+.LP
+The following table describes how XIM values are interpreted
+by an input method.
+The first column lists the XIM values.
+The second column indicates how each of the XIM values
+are treated by that input style.
+.LP
+.LP
+The following keys apply to this table.
+.TS H
+lw(1i) lw(4.75i).
+_
+.sp 6p
+.B
+Key Explanation
+.sp 6p
+_
+.TH
+.R
+D T{
+This value may be set using
+.PN XSetIMValues .
+If it is not set,
+.br
+a default is provided.
+T}
+S T{
+This value may be set using
+.PN XSetIMValues .
+T}
+G T{
+This value may be read using
+.PN XGetIMValues .
+T}
+.sp 6p
+_
+.TE
+.LP
+.TS H
+lw(2.25i) c
+lw(2.25i) c.
+_
+.sp 6p
+.B
+XIM Value Key
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN XNQueryInputStyle
+T} T{
+G
+T}
+T{
+.PN XNResourceName
+T} T{
+D-S-G
+T}
+T{
+.PN XNResourceClass
+T} T{
+D-S-G
+T}
+T{
+.PN XNDestroyCallback
+T} T{
+D-S-G
+T}
+T{
+.PN XNQueryIMValuesList
+T} T{
+G
+T}
+T{
+.PN XNQueryICValuesList
+T} T{
+G
+T}
+T{
+.PN XNVisiblePosition
+T} T{
+G
+T}
+T{
+.PN XNR6PreeditCallbackBehavior
+T} T{
+D-S-G
+T}
+.sp 6p
+_
+.TE
+.LP
+.PN XNR6PreeditCallbackBehavior
+is obsolete and its use is not recommended (see section 13.5.4.6).
+.LP
+.NH 4
+Query Input Style
+.XS
+\*(SN Query Input Style
+.XE
+.LP
+A client should always query the input method to determine which input
+styles are supported.
+The client should then find an input style it is capable of supporting.
+.LP
+If the client cannot find an input style that it can support,
+it should negotiate with the user the continuation of the program
+(exit, choose another input method, and so on).
+.LP
+The argument value must be a pointer to a location
+where the returned value will be stored.
+The returned value is a pointer to a structure of type
+.PN XIMStyles .
+Clients are responsible for freeing the
+.PN XIMStyles
+structure.
+To do so, use
+.PN XFree .
+.LP
+The
+.PN XIMStyles
+structure is defined as follows:
+.LP
+.IN "XIMStyle" "" "@DEF@"
+.IN "XIMPreeditArea" "" "@DEF@"
+.IN "XIMPreeditCallbacks" "" "@DEF@"
+.IN "XIMPreeditPosition" "" "@DEF@"
+.IN "XIMPreeditNothing" "" "@DEF@"
+.IN "XIMPreeditNone" "" "@DEF@"
+.IN "XIMStatusArea" "" "@DEF@"
+.IN "XIMStatusCallbacks" "" "@DEF@"
+.IN "XIMStatusNothing" "" "@DEF@"
+.IN "XIMStatusNone" "" "@DEF@"
+.IN "XIMStyles" "" "@DEF@"
+.sM
+.Ds 0
+typedef unsigned long XIMStyle;
+.De
+.TS
+lw(.5i) lw(2i) lw(2.5i).
+T{
+#define
+T} T{
+.PN XIMPreeditArea
+T} T{
+0x0001L
+T}
+T{
+#define
+T} T{
+.PN XIMPreeditCallbacks
+T} T{
+0x0002L
+T}
+T{
+#define
+T} T{
+.PN XIMPreeditPosition
+T} T{
+0x0004L
+T}
+T{
+#define
+T} T{
+.PN XIMPreeditNothing
+T} T{
+0x0008L
+T}
+T{
+#define
+T} T{
+.PN XIMPreeditNone
+T} T{
+0x0010L
+T}
+.sp
+T{
+#define
+T} T{
+.PN XIMStatusArea
+T} T{
+0x0100L
+T}
+T{
+#define
+T} T{
+.PN XIMStatusCallbacks
+T} T{
+0x0200L
+T}
+T{
+#define
+T} T{
+.PN XIMStatusNothing
+T} T{
+0x0400L
+T}
+T{
+#define
+T} T{
+.PN XIMStatusNone
+T} T{
+0x0800L
+T}
+.TE
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ unsigned short count_styles;
+ XIMStyle * supported_styles;
+} XIMStyles;
+.De
+.LP
+.eM
+An
+.PN XIMStyles
+structure contains the number of input styles supported
+in its count_styles field.
+This is also the size of the supported_styles array.
+.LP
+The supported styles is a list of bitmask combinations,
+which indicate the combination of styles for each of the areas supported.
+These areas are described later.
+Each element in the list should select one of the bitmask values for
+each area.
+The list describes the complete set of combinations supported.
+Only these combinations are supported by the input method.
+.LP
+The preedit category defines what type of support is provided
+by the input method for preedit information.
+.IN "XIMPreeditArea" "" "@DEF@"
+.IN "XIMPreeditPosition" "" "@DEF@"
+.IN "XIMPreeditCallbacks" "" "@DEF@"
+.IN "XIMPreeditNothing" "" "@DEF@"
+.IN "XIMPreeditNone" "" "@DEF@"
+.TS
+lw(1.5i) lw(4.25i).
+T{
+.PN XIMPreeditArea
+T} T{
+If chosen,
+the input method would require the client to provide some area values
+for it to do its preediting.
+Refer to XIC values
+.PN XNArea
+and
+.PN XNAreaNeeded .
+T}
+T{
+.PN XIMPreeditPosition
+T} T{
+If chosen,
+the input method would require the client to provide positional values.
+Refer to XIC values
+.PN XNSpotLocation
+and
+.PN XNFocusWindow .
+T}
+T{
+.PN XIMPreeditCallbacks
+T} T{
+If chosen,
+the input method would require the client to define the set of preedit callbacks.
+Refer to XIC values
+.PN XNPreeditStartCallback ,
+.PN XNPreeditDoneCallback ,
+.PN XNPreeditDrawCallback ,
+and
+.PN XNPreeditCaretCallback .
+T}
+T{
+.PN XIMPreeditNothing
+T} T{
+If chosen, the input method can function without any preedit values.
+T}
+T{
+.PN XIMPreeditNone
+T} T{
+The input method does not provide any preedit feedback.
+Any preedit value is ignored.
+This style is mutually exclusive with the other preedit styles.
+T}
+.TE
+.LP
+The status category defines what type of support is provided
+by the input method for status information.
+.IN "XIMStatusArea" "" "@DEF@"
+.IN "XIMStatusCallbacks" "" "@DEF@"
+.IN "XIMStatusNothing" "" "@DEF@"
+.IN "XIMStatusNone" "" "@DEF@"
+.TS
+lw(1.5i) lw(4.25i).
+T{
+.PN XIMStatusArea
+T} T{
+The input method requires the client to provide
+some area values for it to do its status feedback.
+See
+.PN XNArea
+and
+.PN XNAreaNeeded .
+T}
+T{
+.PN XIMStatusCallbacks
+T} T{
+The input method requires the client to define the set of status callbacks,
+.PN XNStatusStartCallback ,
+.PN XNStatusDoneCallback ,
+and
+.PN XNStatusDrawCallback .
+T}
+T{
+.PN XIMStatusNothing
+T} T{
+The input method can function without any status values.
+T}
+T{
+.PN XIMStatusNone
+T} T{
+The input method does not provide any status feedback.
+If chosen, any status value is ignored.
+This style is mutually exclusive with the other status styles.
+T}
+.TE
+.NH 4
+Resource Name and Class
+.XS
+\*(SN Resource Name and Class
+.XE
+.LP
+The
+.PN XNResourceName
+and
+.PN XNResourceClass
+arguments are strings that specify the full name and class
+used by the input method.
+These values should be used as prefixes for the name and class
+when looking up resources that may vary according to the input method.
+If these values are not set,
+the resources will not be fully specified.
+.LP
+It is not intended that values that can be set as XIM values be
+set as resources.
+.LP
+.NH 4
+Destroy Callback
+.XS
+\*(SN Destroy Callback
+.XE
+.LP
+The
+.PN XNDestroyCallback
+argument is a pointer to a structure of type
+.PN XIMCallback .
+.PN XNDestroyCallback
+is triggered when an input method stops its service for any reason.
+After the callback is invoked, the input method is closed and the
+associated input context(s) are destroyed by Xlib.
+Therefore, the client should not call
+.PN XCloseIM
+or
+.PN XDestroyIC .
+.LP
+The generic prototype of this callback function is as follows:
+.IN "DestroyCallback" "" "@DEF@"
+.sM
+.FD 0
+void DestroyCallback\^(\^\fIim\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIM \fIim\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIim\fP 1i
+Specifies the input method.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+A DestroyCallback is always called with a NULL call_data argument.
+.LP
+.NH 4
+Query IM/IC Values List
+.XS
+\*(SN Query IM/IC Values List
+.XE
+.LP
+.PN XNQueryIMValuesList
+and
+.PN XNQueryICValuesList
+are used to query about XIM and XIC values supported by the input method.
+.LP
+The argument value must be a pointer to a location where the returned
+value will be stored. The returned value is a pointer to a structure
+of type
+.PN XIMValuesList .
+Clients are responsible for freeing the
+.PN XIMValuesList
+structure.
+To do so, use
+.PN XFree .
+.LP
+The
+.PN XIMValuesList
+structure is defined as follows:
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ unsigned short count_values;
+ char **supported_values;
+} XIMValuesList;
+.De
+.LP
+.eM
+.NH 4
+Visible Position
+.XS
+\*(SN Visible Position
+.XE
+.LP
+The
+.PN XNVisiblePosition
+argument indicates whether the visible position masks of
+.PN XIMFeedback
+in
+.PN XIMText
+are available.
+.LP
+The argument value must be a pointer to a location where the returned
+value will be stored. The returned value is of type
+.PN Bool .
+If the returned value is
+.PN True ,
+the input method uses the visible position masks of
+.PN XIMFeedback
+in
+.PN XIMText ;
+otherwise, the input method does not use the masks.
+.LP
+Because this XIM value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryIMValues
+before using this argument.
+If the
+.PN XNVisiblePosition
+does not exist in the IM values list returned from
+.PN XNQueryIMValues ,
+the visible position masks of
+.PN XIMFeedback
+in
+.PN XIMText
+are not used to indicate the visible position.
+.LP
+.NH 4
+Preedit Callback Behavior
+.XS
+\*(SN Preedit Callback Behavior
+.XE
+.LP
+The
+.PN XNR6PreeditCallbackBehavior
+argument originally included in the X11R6 specification has been
+deprecated.\(dg
+.\" If XNR6PreeditCallbackBehavior is not deprecated, then its type
+.\" should be changed from *Bool to Bool.
+.FS \(dg
+During formulation of the X11R6 specification, the behavior of
+the R6 PreeditDrawCallbacks was going to differ significantly from
+that of the R5 callbacks.
+Late changes to the specification converged the R5 and R6 behaviors,
+eliminating the need for
+.PN XNR6PreeditCallbackBehavior .
+Unfortunately, this argument was not removed from the R6 specification
+before it was published.
+.FE
+.LP
+The
+.PN XNR6PreeditCallbackBehavior
+argument indicates whether the behavior of preedit callbacks regarding
+.PN XIMPreeditDrawCallbackStruct
+values follows Release 5 or Release 6 semantics.
+.LP
+The value is of type
+.PN Bool .
+When querying for
+.PN XNR6PreeditCallbackBehavior ,
+if the returned value is
+.PN True ,
+the input method uses the Release 6 behavior;
+otherwise, it uses the Release 5 behavior.
+The default value is
+.PN False .
+In order to use Release 6 semantics, the value of
+.PN XNR6PreeditCallbackBehavior
+must be set to
+.PN True .
+.LP
+Because this XIM value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryIMValues
+before using this argument.
+If the
+.PN XNR6PreeditCallbackBehavior
+does not exist in the IM values list returned from
+.PN XNQueryIMValues ,
+the PreeditCallback behavior is Release 5 semantics.
+.LP
+.NH 3
+Input Context Functions
+.XS
+\*(SN Input Context Functions
+.XE
+.LP
+An input context is an abstraction that is used to contain both the data
+required (if any) by an input method and the information required
+to display that data.
+There may be multiple input contexts for one input method.
+The programming interfaces for creating, reading, or modifying
+an input context use a variable argument list.
+The name elements of the argument lists are referred to as XIC values.
+It is intended that input methods be controlled by these XIC values.
+As new XIC values are created,
+they should be registered with the X Consortium.
+.LP
+.sp
+To create an input context, use
+.PN XCreateIC .
+.IN "XCreateIC" "" "@DEF@"
+.sM
+.FD 0
+XIC XCreateIC\^(\^\fIim\fP\^, ...)
+.br
+ XIM \fIim\fP\^;
+.FN
+.IP \fIim\fP 1i
+Specifies the input method.
+.ds Al \ to set XIC values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.LP
+.eM
+The
+.PN XCreateIC
+function creates a context within the specified input method.
+.LP
+Some of the arguments are mandatory at creation time, and
+the input context will not be created if those arguments are not provided.
+The mandatory arguments are the input style and the set of text callbacks
+(if the input style selected requires callbacks).
+All other input context values can be set later.
+.LP
+.PN XCreateIC
+returns a NULL value if no input context could be created.
+A NULL value could be returned for any of the following reasons:
+.IP \(bu 5
+A required argument was not set.
+.IP \(bu 5
+A read-only argument was set (for example,
+.PN XNFilterEvents ).
+.IP \(bu 5
+The argument name is not recognized.
+.IP \(bu 5
+The input method encountered an input method implementation-dependent error.
+.LP
+.PN XCreateIC
+can generate
+.PN BadAtom ,
+.PN BadColor ,
+.PN BadPixmap ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To destroy an input context, use
+.PN XDestroyIC .
+.IN "XDestroyIC" "" "@DEF@"
+.sM
+.FD 0
+void XDestroyIC\^(\^\fIic\fP\^)
+.br
+ XIC \fIic\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.LP
+.eM
+.PN XDestroyIC
+destroys the specified input context.
+.LP
+.sp
+To communicate to and synchronize with input method
+for any changes in keyboard focus from the client side,
+use
+.PN XSetICFocus
+and
+.PN XUnsetICFocus .
+.IN "XSetICFocus" "" "@DEF@"
+.sM
+.FD 0
+void XSetICFocus\^(\^\fIic\fP\^)
+.br
+ XIC \fIic\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.LP
+.eM
+The
+.PN XSetICFocus
+function allows a client to notify an input method that the focus window
+attached to the specified input context has received keyboard focus.
+The input method should take action to provide appropriate feedback.
+Complete feedback specification is a matter of user interface policy.
+.LP
+Calling
+.PN XSetICFocus
+does not affect the focus window value.
+.LP
+.sp
+.IN "XUnsetICFocus" "" "@DEF@"
+.sM
+.FD 0
+void XUnsetICFocus\^(\^\fIic\fP\^)
+.br
+ XIC \fIic\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.LP
+.eM
+The
+.PN XUnsetICFocus
+function allows a client to notify an input method that the specified input context
+has lost the keyboard focus and that no more input is expected on the focus window
+attached to that input context.
+The input method should take action to provide appropriate feedback.
+Complete feedback specification is a matter of user interface policy.
+.LP
+Calling
+.PN XUnsetICFocus
+does not affect the focus window value;
+the client may still receive
+events from the input method that are directed to the focus window.
+.LP
+.sp
+To reset the state of an input context to its initial state, use
+.PN XmbResetIC
+or
+.PN XwcResetIC .
+.IN "XmbResetIC" "" "@DEF@"
+.IN "XwcResetIC" "" "@DE@"
+.sM
+.FD 0
+char * XmbResetIC\^(\^\fIic\fP\^)
+.br
+ XIC \fIic\fP\^;
+.FN
+.FD 0
+wchar_t * XwcResetIC\^(\^\fIic\fP\^)
+.br
+ XIC \fIic\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.LP
+.eM
+When
+.PN XNResetState
+is set to
+.PN XIMInitialState ,
+.PN XmbResetIC
+and
+.PN XwcResetIC
+reset an input context to its initial state;
+when
+.PN XNResetState
+is set to
+.PN XIMPreserveState ,
+the current input context state is preserved.
+In both cases, any input pending on that context is deleted.
+The input method is required to clear the preedit area, if any,
+and update the status accordingly.
+Calling
+.PN XmbResetIC
+or
+.PN XwcResetIC
+does not change the focus.
+.LP
+The return value of
+.PN XmbResetIC
+is its current preedit string as a multibyte string.
+If there is any preedit text drawn or visible to the user,
+then these procedures must return a non-NULL string.
+If there is no visible preedit text,
+then it is input method implementation-dependent
+whether these procedures return a non-NULL string or NULL.
+.LP
+The client should free the returned string by calling
+.PN XFree .
+.LP
+.sp
+To get the input method associated with an input context, use
+.PN XIMOfIC .
+.IN "XIMOfIC" "" "@DEF@"
+.sM
+.FD 0
+XIM XIMOfIC\^(\^\fIic\fP\^)
+.br
+ XIC \fIic\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.LP
+.eM
+The
+.PN XIMOfIC
+function returns the input method associated with the specified input context.
+.LP
+.sp
+Xlib provides two functions for setting and reading XIC values, respectively,
+.PN XSetICValues
+and
+.PN XGetICValues .
+Both functions have a variable-length argument list.
+In that argument list, any XIC value's name must be denoted
+with a character string using the X Portable Character Set.
+.LP
+.sp
+To set XIC values, use
+.PN XSetICValues .
+.IN "XSetICValues" "" "@DEF@"
+.sM
+.FD 0
+char * XSetICValues\^(\^\fIic\fP\^, ...)
+.br
+ XIC \fIic\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.ds Al \ to set XIC values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.LP
+.eM
+The
+.PN XSetICValues
+function returns NULL if no error occurred;
+otherwise,
+it returns the name of the first argument that could not be set.
+An argument might not be set for any of the following reasons:
+.IP \(bu 5
+The argument is read-only (for example,
+.PN XNFilterEvents ).
+.IP \(bu 5
+The argument name is not recognized.
+.IP \(bu 5
+An implementation-dependent error occurs.
+.LP
+Each value to be set must be an appropriate datum,
+matching the data type imposed by the semantics of the argument.
+.LP
+.PN XSetICValues
+can generate
+.PN BadAtom ,
+.PN BadColor ,
+.PN BadCursor ,
+.PN BadPixmap ,
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To obtain XIC values, use
+.PN XGetICValues .
+.IN "XGetICValues" "" "@DEF@"
+.sM
+.FD 0
+char * XGetICValues\^(\^\fIic\fP\^, ...)
+.br
+ XIC \fIic\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.ds Al \ to get XIC values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.LP
+.eM
+The
+.PN XGetICValues
+function returns NULL if no error occurred; otherwise,
+it returns the name of the first argument that could not be obtained.
+An argument could not be obtained for any of the following reasons:
+.IP \(bu 5
+The argument name is not recognized.
+.IP \(bu 5
+The input method encountered an implementation-dependent error.
+.LP
+Each IC attribute value argument (following a name) must point to
+a location where the IC value is to be stored.
+That is, if the IC value is of type T,
+the argument must be of type T*.
+If T itself is a pointer type,
+then
+.PN XGetICValues
+allocates memory to store the actual data,
+and the client is responsible for freeing this data by calling
+.PN XFree
+with the returned pointer.
+The exception to this rule is for an IC value of type
+.PN XVaNestedList
+(for preedit and status attributes).
+In this case, the argument must also be of type
+.PN XVaNestedList .
+Then, the rule of changing type T to T* and freeing the allocated data
+applies to each element of the nested list.
+.NH 3
+Input Context Values
+.XS
+\*(SN Input Context Values
+.XE
+.LP
+The following tables describe how XIC values are interpreted
+by an input method depending on the input style chosen by the
+user.
+.LP
+The first column lists the XIC values.
+The second column indicates which values are involved in affecting,
+negotiating, and setting the geometry of the input method windows.
+The subentries under the third column indicate the different
+input styles that are supported.
+Each of these columns indicates how each of the XIC values
+are treated by that input style.
+.LP
+The following keys apply to these tables.
+.TS H
+lw(1i) lw(4.75i).
+_
+.sp 6p
+.B
+Key Explanation
+.sp 6p
+_
+.TH
+.R
+C T{
+This value must be set with
+.PN XCreateIC .
+T}
+D T{
+This value may be set using
+.PN XCreateIC .
+If it is not set,
+a default is provided.
+T}
+G T{
+This value may be read using
+.PN XGetICValues .
+T}
+GN T{
+This value may cause geometry negotiation when its value is set by means of
+.PN XCreateIC
+or
+.PN XSetICValues .
+T}
+GR T{
+This value will be the response of the input method when any
+GN value is changed.
+T}
+GS T{
+This value will cause the geometry of the input method window to be set.
+T}
+O T{
+This value must be set once and only once.
+It need not be set at create time.
+T}
+S T{
+This value may be set with
+.PN XSetICValues .
+T}
+Ignored T{
+This value is ignored by the input method for the given input style.
+T}
+.sp 6p
+_
+.TE
+.LP
+.TS H
+c c c s s s s
+l c c c c c c
+c c c c c c c
+l c c c c c c.
+_
+.sp 6p
+.B
+ Input Style
+XIC Value Geometry Preedit Preedit Preedit Preedit Preedit
+ Management Callback Position Area Nothing None
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Input Style C-G C-G C-G C-G C-G
+Client Window O-G O-G O-G O-G Ignored
+Focus Window GN D-S-G D-S-G D-S-G D-S-G Ignored
+Resource Name Ignored D-S-G D-S-G D-S-G Ignored
+Resource Class Ignored D-S-G D-S-G D-S-G Ignored
+Geometry Callback Ignored Ignored D-S-G Ignored Ignored
+Filter Events G G G G Ignored
+Destroy Callback D-S-G D-S-G D-S-G D-S-G D-S-G
+String Conversion Callback S-G S-G S-G S-G S-G
+String Conversion D-S-G D-S-G D-S-G D-S-G D-S-G
+Reset State D-S-G D-S-G D-S-G D-S-G Ignored
+HotKey S-G S-G S-G S-G Ignored
+HotKeyState D-S-G D-S-G D-S-G D-S-G Ignored
+.sp 6p
+\fBPreedit\fP
+Area GS Ignored D-S-G D-S-G Ignored Ignored
+Area Needed GN-GR Ignored Ignored S-G Ignored Ignored
+Spot Location Ignored D-S-G Ignored Ignored Ignored
+Colormap Ignored D-S-G D-S-G D-S-G Ignored
+Foreground Ignored D-S-G D-S-G D-S-G Ignored
+Background Ignored D-S-G D-S-G D-S-G Ignored
+Background Pixmap Ignored D-S-G D-S-G D-S-G Ignored
+Font Set GN Ignored D-S-G D-S-G D-S-G Ignored
+Line Spacing GN Ignored D-S-G D-S-G D-S-G Ignored
+Cursor Ignored D-S-G D-S-G D-S-G Ignored
+Preedit State D-S-G D-S-G D-S-G D-S-G Ignored
+Preedit State Notify Callback S-G S-G S-G S-G Ignored
+Preedit Callbacks C-S-G Ignored Ignored Ignored Ignored
+.sp 6p
+_
+.TE
+.LP
+.TS H
+c c c s s s
+l c c c c c
+c c c c c c
+l c c c c c.
+_
+.sp 6p
+.B
+ Input Style
+XIC Value Geometry Status Status Status Status
+ Management Callback Area Nothing None
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Input Style C-G C-G C-G C-G
+Client Window O-G O-G O-G Ignored
+Focus Window GN D-S-G D-S-G D-S-G Ignored
+Resource Name Ignored D-S-G D-S-G Ignored
+Resource Class Ignored D-S-G D-S-G Ignored
+Geometry Callback Ignored D-S-G Ignored Ignored
+Filter Events G G G G
+.sp 6p
+\fBStatus\fP
+Area GS Ignored D-S-G Ignored Ignored
+Area Needed GN-GR Ignored S-G Ignored Ignored
+Colormap Ignored D-S-G D-S-G Ignored
+Foreground Ignored D-S-G D-S-G Ignored
+Background Ignored D-S-G D-S-G Ignored
+Background Pixmap Ignored D-S-G D-S-G Ignored
+Font Set GN Ignored D-S-G D-S-G Ignored
+Line Spacing GN Ignored D-S-G D-S-G Ignored
+Cursor Ignored D-S-G D-S-G Ignored
+Status Callbacks C-S-G Ignored Ignored Ignored
+.sp 6p
+_
+.TE
+.NH 4
+Input Style
+.XS
+\*(SN Input Style
+.XE
+.LP
+The
+.PN XNInputStyle
+argument specifies the input style to be used.
+The value of this argument must be one of the values returned by the
+.PN XGetIMValues
+function with the
+.PN XNQueryInputStyle
+argument specified in the supported_styles list.
+.LP
+Note that this argument must be set at creation time
+and cannot be changed.
+.NH 4
+Client Window
+.XS
+\*(SN Client Window
+.XE
+.LP
+.IN "XNClientWindow" "" "@DEF@"
+The
+.PN XNClientWindow
+argument specifies to the input method the client window in
+which the input method
+can display data or create subwindows.
+Geometry values for input method areas are given with respect to the client
+window.
+Dynamic change of client window is not supported.
+This argument may be set only once and
+should be set before any input is done using this input context.
+If it is not set,
+the input method may not operate correctly.
+.LP
+If an attempt is made to set this value a second time with
+.PN XSetICValues ,
+the string
+.PN XNClientWindow
+will be returned by
+.PN XSetICValues ,
+and the client window will not be changed.
+.LP
+If the client window is not a valid window ID on the display
+attached to the input method,
+a
+.PN BadWindow
+error can be generated when this value is used by the input method.
+.NH 4
+Focus Window
+.XS
+\*(SN Focus Window
+.XE
+.LP
+.IN "XNFocusWindow" "" "@DEF@"
+The
+.PN XNFocusWindow
+argument specifies the focus window.
+The primary purpose of the
+.PN XNFocusWindow
+is to identify the window that will receive the key event when input
+is composed.
+In addition, the input method may possibly affect the focus window
+as follows:
+.IP \(bu 5
+Select events on it
+.IP \(bu 5
+Send events to it
+.IP \(bu 5
+Modify its properties
+.IP \(bu 5
+Grab the keyboard within that window
+.LP
+The associated value must be of type
+.PN Window .
+If the focus window is not a valid window ID on the display
+attached to the input method,
+a
+.PN BadWindow
+error can be generated when this value is used by the input method.
+.LP
+When this XIC value is left unspecified,
+the input method will use the client window as the default focus window.
+.NH 4
+Resource Name and Class
+.XS
+\*(SN Resource Name and Class
+.XE
+.LP
+.IN "XNResourceName" "" "@DEF@"
+.IN "XNResourceClass" "" "@DEF@"
+The
+.PN XNResourceName
+and
+.PN XNResourceClass
+arguments are strings that specify the full name and class
+used by the client to obtain resources for the client window.
+These values should be used as prefixes for name and class
+when looking up resources that may vary according to the input context.
+If these values are not set,
+the resources will not be fully specified.
+.LP
+It is not intended that values that can be set as XIC values be
+set as resources.
+.NH 4
+Geometry Callback
+.XS
+\*(SN Geometry Callback
+.XE
+.LP
+.IN "XNGeometryCallback" "" "@DEF@"
+The
+.PN XNGeometryCallback
+argument is a structure of type
+.PN XIMCallback
+(see section 13.5.6.13.12).
+.LP
+The
+.PN XNGeometryCallback
+argument specifies the geometry callback that a client can set.
+This callback is not required for correct operation of either
+an input method or a client.
+It can be set for a client whose user interface policy permits
+an input method to request the dynamic change of that input
+method's window.
+An input method that does dynamic change will need to filter any
+events that it uses to initiate the change.
+.NH 4
+Filter Events
+.XS
+\*(SN Filter Events
+.XE
+.LP
+.IN "XNFilterEvents" "" "@DEF@"
+The
+.PN XNFilterEvents
+argument returns the event mask that an input method needs
+to have selected for.
+The client is expected to augment its own event mask
+for the client window with this one.
+.LP
+This argument is read-only, is set by the input method at create time,
+and is never changed.
+.LP
+The type of this argument is
+.PN unsigned
+.PN long .
+Setting this value will cause an error.
+.NH 4
+Destroy Callback
+.XS
+\*(SN Destroy Callback
+.XE
+.LP
+The
+.PN XNDestroyCallback
+argument is a pointer to a structure of type
+.PN XIMCallback
+(see section 13.5.6.13.12). This callback is triggered when the input method
+stops its service for any reason; for example, when a connection to an IM
+server is broken. After the destroy callback is called,
+the input context is destroyed and the input method is closed.
+Therefore, the client should not call
+.PN XDestroyIC
+and
+.PN XCloseIM .
+.LP
+.NH 4
+String Conversion Callback
+.XS
+\*(SN String Conversion Callback
+.XE
+.LP
+The
+.PN XNStringConversionCallback
+argument is a structure of type
+.PN XIMCallback
+(see section 13.5.6.13.12).
+.LP
+The
+.PN XNStringConversionCallback
+argument specifies a string conversion callback. This callback
+is not required for correct operation of
+either the input method or the client. It can be set by a client
+to support string conversions that may be requested
+by the input method. An input method that does string conversions
+will filter any events that it uses to initiate the conversion.
+.LP
+Because this XIC value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryICValuesList
+before using this argument.
+.LP
+.NH 4
+String Conversion
+.XS
+\*(SN String Conversion
+.XE
+.LP
+The
+.PN XNStringConversion
+argument is a structure of type
+.PN XIMStringConversionText .
+.LP
+The
+.PN XNStringConversion
+argument specifies the string to be converted by an input method.
+This argument is not required for correct operation of either
+the input method or the client.
+.LP
+String conversion facilitates the manipulation of text independent
+of preediting.
+It is essential for some input methods and clients to manipulate
+text by performing context-sensitive conversion,
+reconversion, or transliteration conversion on it.
+.LP
+Because this XIC value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryICValuesList
+before using this argument.
+.LP
+The
+.PN XIMStringConversionText
+structure is defined as follows:
+.LP
+.sM
+.Ds 0
+
+typedef struct _XIMStringConversionText {
+ unsigned short length;
+ XIMStringConversionFeedback *feedback;
+ Bool encoding_is_wchar;
+ union {
+ char *mbs;
+ wchar_t *wcs;
+ } string;
+} XIMStringConversionText;
+
+typedef unsigned long XIMStringConversionFeedback;
+.De
+.LP
+.eM
+The feedback member is reserved for future use. The text to be
+converted is defined by the string and length members. The length
+is indicated in characters. To prevent the library from freeing memory
+pointed to by an uninitialized pointer, the client should set the feedback
+element to NULL.
+.LP
+.NH 4
+Reset State
+.XS
+\*(SN Reset State
+.XE
+.LP
+The
+.PN XNResetState
+argument specifies the state the input context will return to after calling
+.PN XmbResetIC
+or
+.PN XwcResetIC .
+.LP
+The XIC state may be set to its initial state, as specified by the
+.PN XNPreeditState
+value when
+.PN XCreateIC
+was called, or it may be set to preserve the current state.
+.LP
+The valid masks for
+.PN XIMResetState
+are as follows:
+.LP
+.IN "XIMInitialState" "" "@DEF@"
+.IN "XINPreserveState" "" "@DEF@"
+.sM
+.LP
+.Ds 0
+typedef unsigned long XIMResetState;
+.De
+.TS
+lw(.5i) lw(2i) lw(2i).
+T{
+#define
+T} T{
+.PN XIMInitialState
+T} T{
+(1L)
+T}
+T{
+#define
+T} T{
+.PN XIMPreserveState
+T} T{
+(1L<<1)
+T}
+.TE
+.LP
+.eM
+If
+.PN XIMInitialState
+is set, then
+.PN XmbResetIC
+and
+.PN XwcResetIC
+will return to the initial
+.PN XNPreeditState
+state of the XIC.
+.LP
+If
+.PN XIMPreserveState
+is set, then
+.PN XmbResetIC
+and
+.PN XwcResetIC
+will preserve the current state of the XIC.
+.LP
+If
+.PN XNResetState
+is left unspecified, the default is
+.PN XIMInitialState .
+.LP
+.PN XIMResetState
+values other than those specified above will default to
+.PN XIMInitialState .
+.LP
+Because this XIC value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryICValuesList
+before using this argument.
+.LP
+.NH 4
+Hot Keys
+.XS
+\*(SN Hot Keys
+.XE
+.LP
+The
+.PN XNHotKey
+argument specifies the hot key list to the XIC.
+The hot key list is a pointer to the structure of type
+.PN XIMHotKeyTriggers ,
+which specifies the key events that must be received
+without any interruption of the input method.
+For the hot key list set with this argument to be utilized, the client
+must also set
+.PN XNHotKeyState
+to
+.PN XIMHotKeyStateON .
+.LP
+Because this XIC value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryICValuesList
+before using this functionality.
+.LP
+The value of the argument is a pointer to a structure of type
+.PN XIMHotKeyTriggers .
+.LP
+If an event for a key in the hot key list is found, then the process will
+receive the event and it will be processed inside the client.
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ KeySym keysym;
+ unsigned int modifier;
+ unsigned int modifier_mask;
+} XIMHotKeyTrigger;
+
+typedef struct {
+ int num_hot_key;
+ XIMHotKeyTrigger *key;
+} XIMHotKeyTriggers;
+.De
+.LP
+.eM
+.LP
+The combination of modifier and modifier_mask are used to represent one of
+three states for each modifier:
+either the modifier must be on, or the modifier must be off, or the modifier
+is a ``don't care'' \- it may be on or off.
+When a modifier_mask bit is set to 0, the state of the associated modifier
+is ignored when evaluating whether the key is hot or not.
+.TS H
+lw(1i) lw(1i) lw(3i).
+_
+.sp 6p
+.B
+Modifier Bit Mask Bit Meaning
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+0
+T} T{
+1
+T} T{
+The modifier must be off.
+T}
+T{
+1
+T} T{
+1
+T} T{
+The modifier must be on.
+T}
+T{
+n/a
+T} T{
+0
+T} T{
+Do not care if the modifier is on or off.
+T}
+.sp 6p
+_
+.TE
+.NH 4
+Hot Key State
+.XS
+\*(SN Hot Key State
+.XE
+.LP
+The
+.PN XNHotKeyState
+argument specifies the hot key state of the input method.
+This is usually used to switch the input method between hot key
+operation and normal input processing.
+.LP
+The value of the argument is a pointer to a structure of type
+XIMHotKeyState .
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef unsigned long XIMHotKeyState;
+.De
+.TS
+lw(.5i) lw(3i) lw(2i).
+T{
+#define
+T} T{
+.PN XIMHotKeyStateON
+T} T{
+(0x0001L)
+T}
+T{
+#define
+T} T{
+.PN XIMHotKeyStateOFF
+T} T{
+(0x0002L)
+T}
+.TE
+.LP
+.eM
+.LP
+If not specified, the default is
+.PN XIMHotKeyStateOFF .
+.LP
+.NH 4
+Preedit and Status Attributes
+.XS
+\*(SN Preedit and Status Attributes
+.XE
+.LP
+.IN "XNPreeditAttributes" "" "@DEF@"
+.IN "XNStatusAttributes" "" "@DEF@"
+The
+.PN XNPreeditAttributes
+and
+.PN XNStatusAttributes
+arguments specify to an input method the attributes to be used for the
+preedit and status areas,
+if any.
+Those attributes are passed to
+.PN XSetICValues
+or
+.PN XGetICValues
+as a nested variable-length list.
+The names to be used in these lists are described in the following sections.
+.NH 5
+Area
+.XS
+\*(SN Area
+.XE
+.LP
+.IN "XNArea" "" "@DEF@"
+The value of the
+.PN XNArea
+argument must be a pointer to a structure of type
+.PN XRectangle.
+The interpretation of the
+.PN XNArea
+argument is dependent on the input method style that has been set.
+.LP
+If the input method style is
+.PN XIMPreeditPosition ,
+.PN XNArea
+specifies the clipping region within which preediting will take place.
+If the focus window has been set,
+the coordinates are assumed to be relative to the focus window.
+Otherwise, the coordinates are assumed to be relative to the client window.
+If neither has been set,
+the results are undefined.
+.LP
+If
+.PN XNArea
+is not specified, is set to NULL, or is invalid,
+the input method will default the clipping region
+to the geometry of the
+.PN XNFocusWindow .
+If the area specified is NULL or invalid,
+the results are undefined.
+.LP
+If the input style is
+.PN XIMPreeditArea
+or
+.PN XIMStatusArea ,
+.PN XNArea
+specifies the geometry provided by the client to the input method.
+The input method may use this area to display its data,
+either preedit or status depending on the area designated.
+The input method may create a window as a child of the client window
+with dimensions that fit the
+.PN XNArea .
+The coordinates are relative to the client window.
+If the client window has not been set yet,
+the input method should save these values
+and apply them when the client window is set.
+If
+.PN XNArea
+is not specified, is set to NULL, or is invalid,
+the results are undefined.
+.NH 5
+Area Needed
+.XS
+\*(SN Area Needed
+.XE
+.LP
+.IN "XNAreaNeeded" "" "@DEF@"
+When set, the
+.PN XNAreaNeeded
+argument specifies the geometry suggested by the client for this area
+(preedit or status).
+The value associated with the argument must be a pointer to a
+structure of type
+.PN XRectangle .
+Note that the x, y values are not used
+and that nonzero values for width or height are the constraints
+that the client wishes the input method to respect.
+.LP
+When read, the
+.PN XNAreaNeeded
+argument specifies the preferred geometry desired by the input method
+for the area.
+.LP
+This argument is only valid if the input style is
+.PN XIMPreeditArea
+or
+.PN XIMStatusArea .
+It is used for geometry negotiation between the client and the input method
+and has no other effect on the input method
+(see section 13.5.1.5).
+.NH 5
+Spot Location
+.XS
+\*(SN Spot Location
+.XE
+.LP
+.IN "XNSpotLocation" "" "@DEF@"
+The
+.PN XNSpotLocation
+argument specifies to the input method the coordinates of the spot
+to be used by an input method executing with
+.PN XNInputStyle
+set to
+.PN XIMPreeditPosition .
+When specified to any input method other than
+.PN XIMPreeditPosition ,
+this XIC value is ignored.
+.LP
+The x coordinate specifies the position where the next character
+would be inserted.
+The y coordinate is the position of the baseline used
+by the current text line in the focus window.
+The x and y coordinates are relative to the focus window, if it has been set;
+otherwise, they are relative to the client window.
+If neither the focus window nor the client window has been set,
+the results are undefined.
+.LP
+The value of the argument is a pointer to a structure of type
+.PN XPoint .
+.NH 5
+Colormap
+.XS
+\*(SN Colormap
+.XE
+.LP
+Two different arguments can be used to indicate what colormap the input method
+should use to allocate colors, a colormap ID, or a standard colormap name.
+.LP
+.IN "XNColormap" "" "@DEF@"
+The
+.PN XNColormap
+argument is used to specify a colormap ID.
+The argument value is of type
+.PN Colormap .
+An invalid argument may generate a
+.PN BadColor
+error when it is used by the input method.
+.LP
+.IN "XNStdColormap" "" "@DEF@"
+The
+.PN XNStdColormap
+argument is used to indicate the name of the standard colormap
+in which the input method should allocate colors.
+The argument value is an
+.PN Atom
+that should be a valid atom for calling
+.PN XGetRGBColormaps .
+An invalid argument may generate a
+.PN BadAtom
+error when it is used by the input method.
+.LP
+If the colormap is left unspecified,
+the client window colormap becomes the default.
+.NH 5
+Foreground and Background
+.XS
+\*(SN Foreground and Background
+.XE
+.LP
+.IN "XNForeground" "" "@DEF@"
+.IN "XNBackground" "" "@DEF@"
+The
+.PN XNForeground
+and
+.PN XNBackground
+arguments specify the foreground and background pixel, respectively.
+The argument value is of type
+.PN unsigned
+.PN long .
+It must be a valid pixel in the input method colormap.
+.LP
+If these values are left unspecified,
+the default is determined by the input method.
+.NH 5
+Background Pixmap
+.XS
+\*(SN Background Pixmap
+.XE
+.LP
+The
+.PN XNBackgroundPixmap
+argument specifies a background pixmap to be used as the background of the
+window.
+The value must be of type
+.PN Pixmap .
+An invalid argument may generate a
+.PN BadPixmap
+error when it is used by the input method.
+.LP
+If this value is left unspecified,
+the default is determined by the input method.
+.NH 5
+Font Set
+.XS
+\*(SN Font Set
+.XE
+.LP
+.IN "XNFontSet" "" "@DEF@"
+The
+.PN XNFontSet
+argument specifies to the input method what font set is to be used.
+The argument value is of type
+.PN XFontSet .
+.LP
+If this value is left unspecified,
+the default is determined by the input method.
+.NH 5
+Line Spacing
+.XS
+\*(SN Line Spacing
+.XE
+.LP
+The
+.PN XNLineSpace
+argument specifies to the input method what line spacing is to be used
+in the preedit window if more than one line is to be used.
+This argument is of type
+.PN int .
+.LP
+If this value is left unspecified,
+the default is determined by the input method.
+.NH 5
+Cursor
+.XS
+\*(SN Cursor
+.XE
+.LP
+.IN "XNCursor" "" "DEF@"
+The
+.PN XNCursor
+argument specifies to the input method what cursor is to be used
+in the specified window.
+This argument is of type
+.PN Cursor .
+.LP
+An invalid argument may generate a
+.PN BadCursor
+error when it is used by the input method.
+If this value is left unspecified,
+the default is determined by the input method.
+.NH 5
+Preedit State
+.XS
+\*(SN Preedit State
+.XE
+.LP
+The
+.PN XNPreeditState
+argument specifies the state of input preediting for the input method.
+Input preediting can be on or off.
+.LP
+The valid mask names for
+.PN XNPreeditState
+are as follows:
+.LP
+.IN "XIMPreeditUnknown" "" "@DEV@"
+.IN "XIMPreeditEnable" "" "@DEF@"
+.IN "XIMPreeditDisable" "" "@DEV@"
+.sM
+.LP
+.Ds 0
+typedef unsigned long XIMPreeditState;
+.De
+.TS
+lw(.5i) lw(2i) lw(2i).
+T{
+#define
+T} T{
+.PN XIMPreeditUnknown
+T} T{
+0L
+T}
+T{
+#define
+T} T{
+.PN XIMPreeditEnable
+T} T{
+1L
+T}
+T{
+#define
+T} T{
+.PN XIMPreeditDisable
+T} T{
+(1L<<1)
+T}
+.TE
+.LP
+.eM
+If a value of
+.PN XIMPreeditEnable
+is set, then input preediting is turned on by the input method.
+.LP
+If a value of
+.PN XIMPreeditDisable
+is set, then input preediting is turned off by the input method.
+.LP
+If
+.PN XNPreeditState
+is left unspecified, then the state will be implementation-dependent.
+.LP
+When
+.PN XNResetState
+is set to
+.PN XIMInitialState ,
+the
+.PN XNPreeditState
+value specified at the creation time will be reflected as the initial state for
+.PN XmbResetIC
+and
+.PN XwcResetIC .
+.LP
+Because this XIC value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryICValuesList
+before using this argument.
+.NH 5
+Preedit State Notify Callback
+.XS
+\*(SN Preedit State Notify Callback
+.XE
+.LP
+The preedit state notify callback is triggered by the input method
+when the preediting state has changed.
+The value of the
+.PN XNPreeditStateNotifyCallback
+argument is a pointer to a structure of type
+.PN XIMCallback .
+The generic prototype is as follows:
+.IN "PreeditStateNotifyCallback" "" "@DEF@"
+.sM
+.FD 0
+void PreeditStateNotifyCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XIMPreeditStateNotifyCallbackStruct *\fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Specifies the current preedit state.
+.LP
+.eM
+The
+.PN XIMPreeditStateNotifyCallbackStruct
+structure is defined as follows:
+.LP
+.IN "XIMPreeditStateNotifyCallbackStruct" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct _XIMPreeditStateNotifyCallbackStruct {
+ XIMPreeditState state;
+} XIMPreeditStateNotifyCallbackStruct;
+.De
+.LP
+.eM
+.LP
+Because this XIC value is optional, a client should call
+.PN XGetIMValues
+with argument
+.PN XNQueryICValuesList
+before using this argument.
+.NH 5
+Preedit and Status Callbacks
+.XS
+\*(SN Preedit and Status Callbacks
+.XE
+.LP
+A client that wants to support the input style
+.PN XIMPreeditCallbacks
+must provide a set of preedit callbacks to the input method.
+The set of preedit callbacks is as follows:
+.IN "XNPreeditStartCallback" "" "@DEF@"
+.IN "XNPreeditDoneCallback" "" "@DEF@"
+.IN "XNPreeditDrawCallback" "" "@DEF@"
+.IN "XNPreeditCaretCallback" "" "@DEF@"
+.TS
+lw(1.75i) lw(4i).
+T{
+.PN XNPreeditStartCallback
+T} T{
+This is called when the input method starts preedit.
+T}
+T{
+.PN XNPreeditDoneCallback
+T} T{
+This is called when the input method stops preedit.
+T}
+T{
+.PN XNPreeditDrawCallback
+T} T{
+This is called when a number of preedit keystrokes should be echoed.
+T}
+T{
+.PN XNPreeditCaretCallback
+T} T{
+This is called to move the text insertion point within the preedit string.
+T}
+.TE
+.LP
+A client that wants to support the input style
+.PN XIMStatusCallbacks
+must provide a set of status callbacks to the input method.
+The set of status callbacks is as follows:
+.IN "XNStatusStartCallback" "" "@DEF@"
+.IN "XNStatusDoneCallback" "" "@DEF@"
+.IN "XNStatusDrawCallback" "" "@DEF@"
+.TS
+lw(1.75i) lw(4i).
+T{
+.PN XNStatusStartCallback
+T} T{
+This is called when the input method initializes the status area.
+T}
+T{
+.PN XNStatusDoneCallback
+T} T{
+This is called when the input method no longer needs the status area.
+T}
+T{
+.PN XNStatusDrawCallback
+T} T{
+This is called when updating of the status area is required.
+T}
+.TE
+.LP
+The value of any status or preedit argument is a pointer
+to a structure of type
+.PN XIMCallback .
+.IN "XIMProc" "" "@DEF@"
+.IN "XIMCallback" "" "@DEF@"
+.sM
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef void (*XIMProc)();
+
+typedef struct {
+ XPointer client_data;
+ XIMProc callback;
+} XIMCallback;
+.De
+.LP
+.eM
+Each callback has some particular semantics and will carry the data
+that expresses the environment necessary to the client
+into a specific data structure.
+This paragraph only describes the arguments to be used to set
+the callback.
+.LP
+Setting any of these values while doing preedit
+may cause unexpected results.
+.NH 3
+Input Method Callback Semantics
+.XS
+\*(SN Input Method Callback Semantics
+.XE
+.LP
+XIM callbacks are procedures defined by clients or text drawing packages
+that are to be called from the input method when selected events occur.
+Most clients will use a text editing package or a toolkit
+and, hence, will not need to define such callbacks.
+This section defines the callback semantics, when they are triggered,
+and what their arguments are.
+This information is mostly useful for X toolkit implementors.
+.LP
+Callbacks are mostly provided so that clients (or text editing
+packages) can implement on-the-spot preediting in their own window.
+In that case,
+the input method needs to communicate and synchronize with the client.
+The input method needs to communicate changes in the preedit window
+when it is under control of the client.
+Those callbacks allow the client to initialize the preedit area,
+display a new preedit string,
+move the text insertion point during preedit,
+terminate preedit, or update the status area.
+.LP
+All callback procedures follow the generic prototype:
+.IN "CallbackPrototype" "" "@DEF@"
+.sM
+.FD 0
+void CallbackPrototype\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ SomeType \fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Specifies data specific to the callback.
+.LP
+.eM
+The call_data argument is a structure that expresses the arguments needed
+to achieve the semantics;
+that is,
+it is a specific data structure appropriate to the callback.
+In cases where no data is needed in the callback,
+this call_data argument is NULL.
+The client_data argument is a closure that has been initially specified
+by the client when specifying the callback and passed back.
+It may serve, for example, to inherit application context in the callback.
+.LP
+The following paragraphs describe the programming semantics
+and specific data structure associated with the different reasons.
+.NH 4
+Geometry Callback
+.XS
+\*(SN Geometry Callback
+.XE
+.LP
+The geometry callback is triggered by the input method
+to indicate that it wants the client to negotiate geometry.
+The generic prototype is as follows:
+.IN "GeometryCallback" "" "@DEF@"
+.sM
+.FD 0
+void GeometryCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+The callback is called with a NULL call_data argument.
+.NH 4
+Destroy Callback
+.XS
+\*(SN Destroy Callback
+.XE
+.LP
+The destroy callback is triggered by the input method
+when it stops service for any reason.
+After the callback is invoked, the input context will be freed by Xlib.
+The generic prototype is as follows:
+.IN "DestroyCallback" "" "@DEF@"
+.sM
+.FD 0
+void DestroyCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+The callback is called with a NULL call_data argument.
+.NH 4
+String Conversion Callback
+.XS
+\*(SN String Conversion Callback
+.XE
+.LP
+The string conversion callback is triggered by the input method
+to request the client to return the string to be converted. The
+returned string may be either a multibyte or wide character string,
+with an encoding matching the locale bound to the input context.
+The callback prototype is as follows:
+.IN "StringConversionCallback" "" "@DEF@"
+.sM
+.FD 0
+void StringConversionCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XIMStringConversionCallbackStruct *\fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input method.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Specifies the amount of the string to be converted.
+.LP
+.eM
+The callback is passed an
+.PN XIMStringConversionCallbackStruct
+structure in the call_data argument.
+The text member is an
+.PN XIMStringConversionText
+structure (see section 13.5.6.9) to be filled in by the client
+and describes the text to be sent to the input method.
+The data pointed to by the
+string and feedback elements of the
+.PN XIMStringConversionText
+structure will be freed using
+.PN XFree
+by the input method
+after the callback returns. So the client should not point to
+internal buffers that are critical to the client.
+Similarly, because the feedback element is currently reserved for future
+use, the client should set feedback to NULL to prevent the library from
+freeing memory at some random location due to an uninitialized pointer.
+.LP
+The
+.PN XIMStringConversionCallbackStruct
+structure is defined as follows:
+.LP
+.IN "XIMStringConversionCallbackStruct" "" "@DEF@"
+.sM
+.LP
+.Ds 0
+typedef struct _XIMStringConversionCallbackStruct {
+ XIMStringConversionPosition position;
+ XIMCaretDirection direction;
+ short factor;
+ XIMStringConversionOperation operation;
+ XIMStringConversionText *text;
+} XIMStringConversionCallbackStruct;
+
+typedef short XIMStringConversionPosition;
+
+typedef unsigned short XIMStringConversionOperation;
+
+.De
+.LP
+.TS
+lw(.5i) lw(3i) lw(2i).
+T{
+#define
+T} T{
+.PN XIMStringConversionSubstitution
+T} T{
+(0x0001)
+T}
+T{
+#define
+T} T{
+.PN XIMStringConversionRetrieval
+T} T{
+(0x0002)
+T}
+.TE
+.LP
+.eM
+.PN XIMStringConversionPosition
+specifies the starting position of the string to be returned
+in the
+.PN XIMStringConversionText
+structure. The value identifies a position, in units of characters,
+relative to the client's cursor position in the client's buffer.
+.LP
+The ending position of the text buffer is determined by
+the direction and factor members. Specifically, it is the character position
+relative to the starting point as defined by the
+.PN XIMCaretDirection .
+The factor member of
+.PN XIMStringConversionCallbackStruct
+specifies the number of
+.PN XIMCaretDirection
+positions to be applied. For example, if the direction specifies
+.PN XIMLineEnd
+and factor is 1, then all characters from the starting position to
+the end of the current display line are returned. If the direction
+specifies
+.PN XIMForwardChar
+or
+.PN XIMBackwardChar ,
+then the factor specifies a relative position, indicated in characters,
+from the starting position.
+.LP
+.PN XIMStringConversionOperation
+specifies whether the string to be converted should be
+deleted (substitution) or copied (retrieval) from the client's
+buffer. When the
+.PN XIMStringConversionOperation
+is
+.PN XIMStringConversionSubstitution ,
+the client must delete the string to be converted from its own buffer.
+When the
+.PN XIMStringConversionOperation
+is
+.PN XIMStringConversionRetrieval ,
+the client must not delete the string to be converted from its buffer.
+The substitute operation is typically used for reconversion and
+transliteration conversion,
+while the retrieval operation is typically used for context-sensitive
+conversion.
+.NH 4
+Preedit State Callbacks
+.XS
+\*(SN Preedit State Callbacks
+.XE
+.LP
+When the input method turns preediting on or off, a
+.PN PreeditStartCallback
+or
+.PN PreeditDoneCallback
+callback is triggered to let the toolkit do the setup
+or the cleanup for the preedit region.
+.IN "PreeditStartCallback" "" "@DEF@"
+.sM
+.FD 0
+int PreeditStartCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+When preedit starts on the specified input context,
+the callback is called with a NULL call_data argument.
+.PN PreeditStartCallback
+will return the maximum size of the preedit string.
+A positive number indicates the maximum number of bytes allowed
+in the preedit string,
+and a value of \-1 indicates there is no limit.
+.IN "PreeditDoneCallback" "" "@DEF@"
+.sM
+.FD 0
+void PreeditDoneCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+When preedit stops on the specified input context,
+the callback is called with a NULL call_data argument.
+The client can release the data allocated by
+.PN PreeditStartCallback .
+.LP
+.PN PreeditStartCallback
+should initialize appropriate data needed for
+displaying preedit information and for handling further
+.PN PreeditDrawCallback
+calls.
+Once
+.PN PreeditStartCallback
+is called, it will not be called again before
+.PN PreeditDoneCallback
+has been called.
+.NH 4
+Preedit Draw Callback
+.XS
+\*(SN Preedit Draw Callback
+.XE
+.LP
+This callback is triggered to draw and insert, delete or replace,
+preedit text in the preedit region.
+The preedit text may include unconverted input text such as Japanese Kana,
+converted text such as Japanese Kanji characters, or characters of both kinds.
+That string is either a multibyte or wide character string,
+whose encoding matches the locale bound to the input context.
+The callback prototype
+is as follows:
+.IN "PreeditDrawCallback" "" "@DEF@"
+.sM
+.FD 0
+void PreeditDrawCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XIMPreeditDrawCallbackStruct *\fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Specifies the preedit drawing information.
+.LP
+.eM
+The callback is passed an
+.PN XIMPreeditDrawCallbackStruct
+structure in the call_data argument.
+The text member of this structure contains the text to be drawn.
+After the string has been drawn,
+the caret should be moved to the specified location.
+.LP
+The
+.PN XIMPreeditDrawCallbackStruct
+structure is defined as follows:
+.LP
+.IN "XIMPreeditDrawCallbackStruct" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct _XIMPreeditDrawCallbackStruct {
+ int caret; /* Cursor offset within preedit string */
+ int chg_first; /* Starting change position */
+ int chg_length; /* Length of the change in character count */
+ XIMText *text;
+} XIMPreeditDrawCallbackStruct;
+.De
+.LP
+.eM
+The client must keep updating a buffer of the preedit text
+and the callback arguments referring to indexes in that buffer.
+The call_data fields have specific meanings according to the operation,
+as follows:
+.IP \(bu 5
+To indicate text deletion,
+the call_data member specifies a NULL text field.
+The text to be deleted is then the current text in the buffer
+from position chg_first (starting at zero) on a character length
+of chg_length.
+.IP \(bu 5
+When text is non-NULL,
+it indicates insertion or replacement of text in the buffer.
+.IP
+The chg_length member
+identifies the number of characters in the current preedit buffer
+that are affected by this call.
+A positive chg_length indicates that chg_length number of characters, starting
+at chg_first, must be deleted or must be replaced by text, whose length is
+specified in the
+.PN XIMText
+structure.
+.IP
+A chg_length value of zero indicates that text must be inserted
+right at the position specified by chg_first.
+A value of zero for chg_first specifies the first character in the buffer.
+.IP
+chg_length and chg_first combine to identify the modification required to
+the preedit buffer; beginning at chg_first, replace chg_length number of
+characters with the text in the supplied
+.PN XIMText
+structure. For example, suppose the preedit buffer contains the string "ABCDE".
+.IP
+.DS I
+.ft C
+Text: A B C D E
+ ^ ^ ^ ^ ^ ^
+CharPos: 0 1 2 3 4 5
+.sp
+.ft P
+.DE
+The CharPos in the diagram shows the location of the character position
+relative to the character.
+.IP
+If the value of chg_first is 1 and the value of chg_length is 3, this
+says to replace 3 characters beginning at character position 1 with the
+string in the
+.PN XIMText
+structure.
+Hence, BCD would be replaced by the value in the structure.
+.IP
+Though chg_length and chg_first are both signed integers they will
+never have a negative value.
+.IP \(bu 5
+The caret member
+identifies the character position before which the cursor should
+be placed \- after modification to the preedit buffer has been completed.
+For example, if caret is zero, the cursor is at
+the beginning of the buffer. If the caret is one, the cursor is between
+the first and second character.
+.LP
+.IN "XIMText" "" @DEF@"
+.sM
+.Ds
+.TA .5i 1.5i 3i
+typedef struct _XIMText {
+ unsigned short length;
+ XIMFeedback * feedback;
+ Bool encoding_is_wchar;
+ union {
+ char * multi_byte;
+ wchar_t * wide_char;
+ } string;
+} XIMText;
+.De
+.LP
+.eM
+The text string passed is actually a structure specifying as follows:
+.IP \(bu 5
+The length member is the text length in characters.
+.IP \(bu 5
+The encoding_is_wchar member is a value that indicates
+if the text string is encoded in wide character or multibyte format.
+The text string may be passed either as multibyte or as wide character;
+the input method controls in which form data is passed.
+The client's
+callback routine must be able to handle data passed in either form.
+.IP \(bu 5
+The string member is the text string.
+.IP \(bu 5
+The feedback member indicates rendering type for each character in the
+string member.
+If string is NULL (indicating that only highlighting of the existing
+preedit buffer should be updated), feedback points to length highlight
+elements that should be applied to the existing preedit buffer, beginning
+at chg_first.
+.LP
+The feedback member expresses the types of rendering feedback
+the callback should apply when drawing text.
+Rendering of the text to be drawn is specified either in generic ways
+(for example, primary, secondary) or in specific ways (reverse, underline).
+When generic indications are given,
+the client is free to choose the rendering style.
+It is necessary, however, that primary and secondary be mapped
+to two distinct rendering styles.
+.LP
+If an input method wants to control display of the preedit string, an
+input method can indicate the visibility hints using feedbacks in
+a specific way.
+The
+.PN XIMVisibleToForward ,
+.PN XIMVisibleToBackward ,
+and
+.PN XIMVisibleCenter
+masks are exclusively used for these visibility hints.
+The
+.PN XIMVisibleToForward
+mask
+indicates that the preedit text is preferably displayed in the
+primary draw direction from the
+caret position in the preedit area forward.
+The
+.PN XIMVisibleToBackward
+mask
+indicates that the preedit text is preferably displayed from
+the caret position in the preedit area backward, relative to the primary
+draw direction.
+The
+.PN XIMVisibleCenter
+mask
+indicates that the preedit text is preferably displayed with
+the caret position in the preedit area centered.
+.LP
+The insertion point of the preedit string could exist outside of
+the visible area when visibility hints are used.
+Only one of the
+masks
+is valid for the entire preedit string, and only one character
+can hold one of these feedbacks for a given input context at one time.
+This feedback may be OR'ed together with another highlight (such as
+.PN XIMReverse ).
+Only the most recently set feedback is valid, and any previous
+feedback is automatically canceled. This is a hint to the client, and
+the client is free to choose how to display the preedit string.
+.LP
+The feedback member also specifies how rendering of the text argument
+should be performed.
+If the feedback is NULL,
+the callback should apply the same feedback as is used for the surrounding
+characters in the preedit buffer; if chg_first is at a highlight boundary,
+the client can choose which of the two highlights to use.
+If feedback is not NULL, feedback specifies an array defining the
+rendering for each
+character of the string, and the length of the array is thus length.
+.LP
+If an input method wants to indicate that it is only updating the feedback of
+the preedit text without changing the content of it,
+the
+.PN XIMText
+structure will contain a NULL value for the string field,
+the number of characters affected (relative to chg_first)
+will be in the length field,
+and the feedback field will point to an array of
+.PN XIMFeedback .
+.LP
+Each element in the feedback array is a bitmask represented by a value of type
+.PN XIMFeedback .
+The valid mask names are as follows:
+.LP
+.IN "XIMReverse" "" "@DEF@"
+.IN "XIMUnderline" "" "@DEF@"
+.IN "XIMHighlight" "" "@DEF@"
+.IN "XIMPrimary" "" "@DEF@"
+.IN "XIMSecondary" "" "@DEF@"
+.IN "XIMTertiary" "" "@DEF@"
+.IN "XIMVisibleToForward" "" "@DEF@"
+.IN "XIMVisibleToBackward" "" "@DEF@"
+.IN "XIMVisibleCenter" "" "@DEF@"
+.sM
+.LP
+.Ds 0
+typedef unsigned long XIMFeedback;
+.De
+.TS
+lw(.5i) lw(2i) lw(2i).
+T{
+#define
+T} T{
+.PN XIMReverse
+T} T{
+1L
+T}
+T{
+#define
+T} T{
+.PN XIMUnderline
+T} T{
+(1L<<1)
+T}
+T{
+#define
+T} T{
+.PN XIMHighlight
+T} T{
+(1L<<2)
+T}
+T{
+#define
+T} T{
+.PN XIMPrimary
+T} T{
+(1L<<5)\(dg
+T}
+T{
+#define
+T} T{
+.PN XIMSecondary
+T} T{
+(1L<<6)\(dg
+T}
+T{
+#define
+T} T{
+.PN XIMTertiary
+T} T{
+(1L<<7)\(dg
+T}
+T{
+#define
+T} T{
+.PN XIMVisibleToForward
+T} T{
+(1L<<8)
+T}
+T{
+#define
+T} T{
+.PN XIMVisibleToBackward
+T} T{
+(1L<<9)
+T}
+T{
+#define
+T} T{
+.PN XIMVisibleCenter
+T} T{
+(1L<<10)
+T}
+.TE
+.LP
+.eM
+.LP
+Characters drawn with the
+.PN XIMReverse
+highlight should be drawn by swapping the foreground and background colors
+used to draw normal, unhighlighted characters.
+Characters drawn with the
+.PN XIMUnderline
+highlight should be underlined.
+Characters drawn with the
+.PN XIMHighlight ,
+.PN XIMPrimary ,
+.PN XIMSecondary ,
+and
+.PN XIMTertiary
+highlights should be drawn in some unique manner that must be different
+from
+.PN XIMReverse
+and
+.PN XIMUnderline .
+.FS \(dg
+The values for
+.PN XIMPrimary ,
+.PN XIMSecondary ,
+and
+.PN XIMTertiary
+were incorrectly defined in the R5 specification.
+The X Consortium's X11R5
+implementation correctly implemented the values for these highlights.
+The value of these highlights has been corrected in this specification
+to agree with the values in the Consortium's X11R5 and X11R6 implementations.
+.FE
+.NH 4
+Preedit Caret Callback
+.XS
+\*(SN Preedit Caret Callback
+.XE
+.LP
+An input method may have its own navigation keys to allow the user
+to move the text insertion point in the preedit area
+(for example, to move backward or forward).
+Consequently, input method needs to indicate to the client that it
+should move the text insertion point.
+It then calls the PreeditCaretCallback.
+.IN "PreeditCaretCallback" "" "@DEF@"
+.sM
+.FD 0
+void PreeditCaretCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XIMPreeditCaretCallbackStruct *\fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Specifies the preedit caret information.
+.LP
+.eM
+The input method will trigger PreeditCaretCallback
+to move the text insertion point during preedit.
+The call_data argument contains a pointer to an
+.PN XIMPreeditCaretCallbackStruct
+structure,
+which indicates where the caret should be moved.
+The callback must move the insertion point to its new location
+and return, in field position, the new offset value from the initial position.
+.LP
+The
+.PN XIMPreeditCaretCallbackStruct
+structure is defined as follows:
+.IN "XIMPreeditCaretCallbackStruct" "" "@DEF@"
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct _XIMPreeditCaretCallbackStruct {
+ int position; /* Caret offset within preedit string */
+ XIMCaretDirection direction; /* Caret moves direction */
+ XIMCaretStyle style; /* Feedback of the caret */
+} XIMPreeditCaretCallbackStruct;
+.De
+.LP
+.eM
+The
+.PN XIMCaretStyle
+structure is defined as follows:
+.LP
+.IN "XIMCaretStyle" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef enum {
+ XIMIsInvisible, /* Disable caret feedback */
+ XIMIsPrimary, /* UI defined caret feedback */
+ XIMIsSecondary, /* UI defined caret feedback */
+} XIMCaretStyle;
+.De
+.LP
+.eM
+The
+.PN XIMCaretDirection
+structure is defined as follows:
+.IN "XIMCaretDirection" "" "@DEF@"
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef enum {
+ XIMForwardChar, XIMBackwardChar,
+ XIMForwardWord, XIMBackwardWord,
+ XIMCaretUp, XIMCaretDown,
+ XIMNextLine, XIMPreviousLine,
+ XIMLineStart, XIMLineEnd,
+ XIMAbsolutePosition,
+ XIMDontChange,
+ } XIMCaretDirection;
+.De
+.LP
+.eM
+These values are defined as follows:
+.IN "XIMForwardChar" "" "@DEF@"
+.IN "XIMBackwardChar" "" "@DEF@"
+.IN "XIMForwardWord" "" "@DEF@"
+.IN "XIMBackwardWord" "" "@DEF@"
+.IN "XIMCaretUp" "" "@DEF@"
+.IN "XIMCaretDown" "" "@DEF@"
+.TS
+lw(1.5i) lw(4.25i).
+T{
+.PN XIMForwardChar
+T} T{
+Move the caret forward one character position.
+T}
+T{
+.PN XIMBackwardChar
+T} T{
+Move the caret backward one character position.
+T}
+T{
+.PN XIMForwardWord
+T} T{
+Move the caret forward one word.
+T}
+T{
+.PN XIMBackwardWord
+T} T{
+Move the caret backward one word.
+T}
+T{
+.PN XIMCaretUp
+T} T{
+Move the caret up one line keeping the current horizontal offset.
+T}
+T{
+.PN XIMCaretDown
+T} T{
+Move the caret down one line keeping the current horizontal offset.
+T}
+T{
+.PN XIMPreviousLine
+T} T{
+Move the caret to the beginning of the previous line.
+T}
+T{
+.PN XIMNextLine
+T} T{
+Move the caret to the beginning of the next line.
+T}
+T{
+.PN XIMLineStart
+T} T{
+Move the caret to the beginning of the current display line
+that contains the caret.
+T}
+T{
+.PN XIMLineEnd
+T} T{
+Move the caret to the end of the current display line
+that contains the caret.
+T}
+T{
+.PN XIMAbsolutePosition
+T} T{
+The callback must move to the location specified by the position field
+of the callback data, indicated in characters, starting from the beginning
+of the preedit text.
+Hence, a value of zero means move back to the beginning of the preedit text.
+T}
+T{
+.PN XIMDontChange
+T} T{
+The caret position does not change.
+T}
+.TE
+.IN "XIMNextLine" "" "@DEF@"
+.IN "XIMPreviousLine" "" "@DEF@"
+.IN "XIMLineStart" "" "@DEF@"
+.IN "XIMLineEnd" "" "@DEF@"
+.IN "XIMAbsolutePosition" "" "@DEF@"
+.IN "XIMDontChange" "" "@DEF@"
+.NH 4
+Status Callbacks
+.XS
+\*(SN Status Callbacks
+.XE
+.LP
+An input method may communicate changes in the status of an input context
+(for example, created, destroyed, or focus changes) with three status
+callbacks: StatusStartCallback, StatusDoneCallback, and StatusDrawCallback.
+.LP
+.sp
+When the input context is created or gains focus,
+the input method calls the StatusStartCallback callback.
+.IN "StatusStartCallback" "" "@DEF@"
+.sM
+.FD 0
+void StatusStartCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+The callback should initialize appropriate data for displaying status
+and for responding to StatusDrawCallback calls.
+Once StatusStartCallback is called,
+it will not be called again before StatusDoneCallback has been called.
+.LP
+.sp
+When an input context
+is destroyed or when it loses focus, the input method calls StatusDoneCallback.
+.IN "StatusDoneCallback" "" "@DEF@"
+.sM
+.FD 0
+void StatusDoneCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XPointer \fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Not used for this callback and always passed as NULL.
+.LP
+.eM
+The callback may release any data allocated on
+.PN StatusStart .
+.LP
+.sp
+When an input context status has to be updated, the input method calls
+StatusDrawCallback.
+.IN "StatusDrawCallback" "" "@DEF@"
+.sM
+.FD 0
+void StatusDrawCallback\^(\^\fIic\fP\^, \fIclient_data\fP\^, \fIcall_data\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XPointer \fIclient_data\fP\^;
+.br
+ XIMStatusDrawCallbackStruct *\fIcall_data\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIcall_data\fP 1i
+Specifies the status drawing information.
+.LP
+.eM
+The callback should update the status area by either drawing a string
+or imaging a bitmap in the status area.
+.LP
+The
+.PN XIMStatusDataType
+and
+.PN XIMStatusDrawCallbackStruct
+structures are defined as follows:
+.IN "XIMStatusDataType" "" "@DEF@"
+.IN "XIMStatusDrawCallbackStruct" "" "@DEF@"
+.LP
+.sM
+.Ds 0
+.TA .5i 1i 3i
+.ta .5i 1i 3i
+typedef enum {
+ XIMTextType,
+ XIMBitmapType,
+} XIMStatusDataType;
+
+typedef struct _XIMStatusDrawCallbackStruct {
+ XIMStatusDataType type;
+ union {
+ XIMText *text;
+ Pixmap bitmap;
+ } data;
+} XIMStatusDrawCallbackStruct;
+.De
+.LP
+.eM
+.LP
+The feedback styles
+.PN XIMVisibleToForward ,
+.PN XIMVisibleToBackward ,
+and
+.PN XIMVisibleToCenter
+are not relevant and will not appear in the
+.PN XIMFeedback
+element of the
+.PN XIMText
+structure.
+.LP
+.NH 3
+Event Filtering
+.XS
+\*(SN Event Filtering
+.XE
+.LP
+Xlib provides the ability for an input method
+to register a filter internal to Xlib.
+This filter is called by a client (or toolkit) by calling
+.PN XFilterEvent
+after calling
+.PN XNextEvent .
+Any client that uses the
+.PN XIM
+interface should call
+.PN XFilterEvent
+to allow input methods to process their events without knowledge
+of the client's dispatching mechanism.
+A client's user interface policy may determine the priority
+of event filters with respect to other event-handling mechanisms
+(for example, modal grabs).
+.LP
+Clients may not know how many filters there are, if any,
+and what they do.
+They may only know if an event has been filtered on return of
+.PN XFilterEvent .
+Clients should discard filtered events.
+.sp
+.LP
+To filter an event, use
+.PN XFilterEvent .
+.IN "XFilterEvent" "" "@DEF@"
+.sM
+.FD 0
+Bool XFilterEvent\^(\^\fIevent\fP\^, \fIw\fP\^)
+.br
+ XEvent *\fIevent\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.ds Ev event to filter
+.IP \fIevent\fP 1i
+Specifies the \*(Ev.
+.ds Wi for which the filter is to be applied
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.LP
+.eM
+If the window argument is
+.PN None ,
+.PN XFilterEvent
+applies the filter to the window specified in the
+.PN XEvent
+structure.
+The window argument is provided so that layers above Xlib
+that do event redirection can indicate to which window an event
+has been redirected.
+.LP
+If
+.PN XFilterEvent
+returns
+.PN True ,
+then some input method has filtered the event,
+and the client should discard the event.
+If
+.PN XFilterEvent
+returns
+.PN False ,
+then the client should continue processing the event.
+.LP
+If a grab has occurred in the client and
+.PN XFilterEvent
+returns
+.PN True ,
+the client should ungrab the keyboard.
+.NH 3
+Getting Keyboard Input
+.XS
+\*(SN Getting Keyboard Input
+.XE
+.LP
+To get composed input from an input method,
+use
+.PN XmbLookupString
+or
+.PN XwcLookupString .
+.IN "XmbLookupString" "" "@DEF@"
+.IN "XwcLookupString" "" "@DEF@"
+.sM
+.FD 0
+int XmbLookupString\^(\^\fIic\fP\^, \fIevent\fP\^, \fIbuffer_return\fP\^, \fIbytes_buffer\fP\^, \fIkeysym_return\fP\^, \fIstatus_return\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XKeyPressedEvent *\fIevent\fP;
+.br
+ char *\fIbuffer_return\fP\^;
+.br
+ int \fIbytes_buffer\fP\^;
+.br
+ KeySym *\fIkeysym_return\fP\^;
+.br
+ Status *\fIstatus_return\fP\^;
+.FN
+.FD 0
+int XwcLookupString\^(\^\fIic\fP\^, \fIevent\fP\^, \fIbuffer_return\fP\^, \fIbytes_buffer\fP\^, \fIkeysym_return\fP\^, \fIstatus_return\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XKeyPressedEvent *\fIevent\fP\^;
+.br
+ wchar_t *\fIbuffer_return\fP\^;
+.br
+ int \fIwchars_buffer\fP\^;
+.br
+ KeySym *\fIkeysym_return\fP\^;
+.br
+ Status *\fIstatus_return\fP\^;
+.FN
+.IP \fIic\fP 1i
+Specifies the input context.
+.ds Ev key event to be used
+.IP \fIevent\fP 1i
+Specifies the \*(Ev.
+.IP \fIbuffer_return\fP 1i
+Returns a multibyte string or wide character string (if any)
+from the input method.
+.IP \fIbytes_buffer\fP 1i
+.br
+.ns
+.IP \fIwchars_buffer\fP 1i
+Specifies space available in the return buffer.
+.IP \fIkeysym_return\fP 1i
+Returns the KeySym computed from the event if this argument is not NULL.
+.IP \fIstatus_return\fP 1i
+Returns a value indicating what kind of data is returned.
+.LP
+.eM
+The
+.PN XmbLookupString
+and
+.PN XwcLookupString
+functions return the string from the input method specified
+in the buffer_return argument.
+If no string is returned,
+the buffer_return argument is unchanged.
+.LP
+The KeySym into which the KeyCode from the event was mapped is returned
+in the keysym_return argument if it is non-NULL and the status_return
+argument indicates that a KeySym was returned.
+If both a string and a KeySym are returned,
+the KeySym value does not necessarily correspond to the string returned.
+.LP
+.PN XmbLookupString
+returns the length of the string in bytes, and
+.PN XwcLookupString
+returns the length of the string in characters.
+Both
+.PN XmbLookupString
+and
+.PN XwcLookupString
+return text in the encoding of the locale bound to the input method
+of the specified input context.
+.LP
+Each string returned by
+.PN XmbLookupString
+and
+.PN XwcLookupString
+begins in the initial state of the encoding of the locale
+(if the encoding of the locale is state-dependent).
+.NT
+To insure proper input processing,
+it is essential that the client pass only
+.PN KeyPress
+events to
+.PN XmbLookupString
+and
+.PN XwcLookupString .
+Their behavior when a client passes a
+.PN KeyRelease
+event is undefined.
+.NE
+.LP
+Clients should check the status_return argument before
+using the other returned values.
+These two functions both return a value to status_return
+that indicates what has been returned in the other arguments.
+The possible values returned are:
+.TS
+lw(1.5i) lw(4.3i).
+T{
+.PN XBufferOverflow
+T} T{
+The input string to be returned is too large for the supplied buffer_return.
+The required size
+.Pn ( XmbLookupString
+in bytes;
+.PN XwcLookupString
+in characters) is returned as the value of the function,
+and the contents of buffer_return and keysym_return are not modified.
+The client should recall the function with the same event
+and a buffer of adequate size to obtain the string.
+T}
+T{
+.PN XLookupNone
+T} T{
+No consistent input has been composed so far.
+The contents of buffer_return and keysym_return are not modified,
+and the function returns zero.
+T}
+T{
+.PN XLookupChars
+T} T{
+Some input characters have been composed.
+They are placed in the buffer_return argument,
+and the string length is returned as the value of the function.
+The string is encoded in the locale bound to the input context.
+The content of the keysym_return argument is not modified.
+T}
+T{
+.PN XLookupKeySym
+T} T{
+A KeySym has been returned instead of a string
+and is returned in keysym_return.
+The content of the buffer_return argument is not modified,
+and the function returns zero.
+T}
+T{
+.PN XLookupBoth
+T} T{
+Both a KeySym and a string are returned;
+.PN XLookupChars
+and
+.PN XLookupKeySym
+occur simultaneously.
+T}
+.TE
+.LP
+It does not make any difference if the input context passed as an argument to
+.PN XmbLookupString
+and
+.PN XwcLookupString
+is the one currently in possession of the focus or not.
+Input may have been composed within an input context before it lost the focus,
+and that input may be returned on subsequent calls to
+.PN XmbLookupString
+or
+.PN XwcLookupString
+even though it does not have any more keyboard focus.
+.NH 3
+Input Method Conventions
+.XS
+\*(SN Input Method Conventions
+.XE
+.LP
+The input method architecture is transparent to the client.
+However, clients should respect a number of conventions in order
+to work properly.
+Clients must also be aware of possible effects of synchronization
+between input method and library in the case of a remote input server.
+.NH 4
+Client Conventions
+.XS
+\*(SN Client Conventions
+.XE
+.LP
+A well-behaved client (or toolkit) should first query the input method style.
+If the client cannot satisfy the requirements of the supported styles
+(in terms of geometry management or callbacks),
+it should negotiate with the user continuation of the program
+or raise an exception or error of some sort.
+.NH 4
+Synchronization Conventions
+.XS
+\*(SN Synchronization Conventions
+.XE
+.LP
+A
+.PN KeyPress
+event with a KeyCode of zero is used exclusively as a
+signal that an input method has composed input that can be returned by
+.PN XmbLookupString
+or
+.PN XwcLookupString .
+No other use is made of a
+.PN KeyPress
+event with KeyCode of zero.
+.LP
+Such an event may be generated by either a front-end
+or a back-end input method in an implementation-dependent manner.
+Some possible ways to generate this event include:
+.IP \(bu 5
+A synthetic event sent by an input method server
+.IP \(bu 5
+An artificial event created by a input method filter and pushed
+onto a client's event queue
+.IP \(bu 5
+A
+.PN KeyPress
+event whose KeyCode value is modified by an input method filter
+.LP
+When callback support is specified by the client,
+input methods will not take action unless they explicitly
+called back the client and obtained no response
+(the callback is not specified or returned invalid data).
+.NH 2
+String Constants
+.XS
+\*(SN String Constants
+.XE
+.LP
+The following symbols for string constants are defined in
+.hN X11/Xlib.h .
+Although they are shown here with particular macro definitions,
+they may be implemented as macros, as global symbols, or as a
+mixture of the two. The string pointer value itself
+is not significant; clients must not assume that inequality of two
+values implies inequality of the actual string data.
+.IN "XNVaNestedList" "" "@DEF@"
+.IN "XNSeparatorofNestedList "" "@DEF@"
+.IN "XNQueryInputStyle" "" "@DEF@"
+.IN "XNClientWindow" "" "@DEF@"
+.IN "XNInputStyle" "" "@DEF@"
+.IN "XNFocusWindow" "" "@DEF@"
+.IN "XNResourceName" "" "@DEF@"
+.IN "XNResourceClass" "" "@DEF@"
+.IN "XNGeometryCallback" "" "@DEF@"
+.IN "XNDestroyCallback" "" "@DEF@"
+.IN "XNFilterEvents" "" "@DEF@"
+.IN "XNPreeditStartCallback" "" "@DEF@"
+.IN "XNPreeditDoneCallback" "" "@DEF@"
+.IN "XNPreeditDrawCallback" "" "@DEF@"
+.IN "XNPreeditCaretCallback" "" "@DEF@"
+.IN "XNPreeditStateNotifyCallback" "" "@DEF@"
+.IN "XNPreeditAttributes" "" "@DEF@"
+.IN "XNStatusStartCallback" "" "@DEF@"
+.IN "XNStatusDoneCallback" "" "@DEF@"
+.IN "XNStatusDrawCallback" "" "@DEF@"
+.IN "XNStatusAttributes" "" "@DEF@"
+.IN "XNArea" "" "@DEF@"
+.IN "XNAreaNeeded" "" "@DEF@"
+.IN "XNSpotLocation" "" "@DEF@"
+.IN "XNColormap" "" "@DEF@"
+.IN "XNStdColormap" "" "@DEF@"
+.IN "XNForeground" "" "@DEF@"
+.IN "XNBackground" "" "@DEF@"
+.IN "XNBackgroundPixmap" "" "@DEF@"
+.IN "XNFontSet" "" "@DEF@"
+.IN "XNLineSpace" "" "@DEF@"
+.IN "XNCursor" "" "@DEF@"
+.TS
+lw(.5i) lw(2.75i) lw(2.5i).
+T{
+#define
+T} T{
+.PN XNVaNestedList
+T} T{
+"XNVaNestedList"
+T}
+T{
+#define
+T} T{
+.PN XNSeparatorofNestedList
+T} T{
+"separatorofNestedList"
+T}
+T{
+#define
+T} T{
+.PN XNQueryInputStyle
+T} T{
+"queryInputStyle"
+T}
+T{
+#define
+T} T{
+.PN XNClientWindow
+T} T{
+"clientWindow"
+T}
+T{
+#define
+T} T{
+.PN XNInputStyle
+T} T{
+"inputStyle"
+T}
+T{
+#define
+T} T{
+.PN XNFocusWindow
+T} T{
+"focusWindow"
+T}
+T{
+#define
+T} T{
+.PN XNResourceName
+T} T{
+"resourceName"
+T}
+T{
+#define
+T} T{
+.PN XNResourceClass
+T} T{
+"resourceClass"
+T}
+T{
+#define
+T} T{
+.PN XNGeometryCallback
+T} T{
+"geometryCallback"
+T}
+T{
+#define
+T} T{
+.PN XNDestroyCallback
+T} T{
+"destroyCallback"
+T}
+T{
+#define
+T} T{
+.PN XNFilterEvents
+T} T{
+"filterEvents"
+T}
+T{
+#define
+T} T{
+.PN XNPreeditStartCallback
+T} T{
+"preeditStartCallback"
+T}
+T{
+#define
+T} T{
+.PN XNPreeditDoneCallback
+T} T{
+"preeditDoneCallback"
+T}
+T{
+#define
+T} T{
+.PN XNPreeditDrawCallback
+T} T{
+"preeditDrawCallback"
+T}
+T{
+#define
+T} T{
+.PN XNPreeditCaretCallback
+T} T{
+"preeditCaretCallback"
+T}
+T{
+#define
+T} T{
+.PN XNPreeditStateNotifyCallback
+T} T{
+"preeditStateNotifyCallback"
+T}
+T{
+#define
+T} T{
+.PN XNPreeditAttributes
+T} T{
+"preeditAttributes"
+T}
+.TE
+.sp -1
+.TS
+lw(.5i) lw(2.75i) lw(2.5i).
+T{
+#define
+T} T{
+.PN XNStatusStartCallback
+T} T{
+"statusStartCallback"
+T}
+T{
+#define
+T} T{
+.PN XNStatusDoneCallback
+T} T{
+"statusDoneCallback"
+T}
+T{
+#define
+T} T{
+.PN XNStatusDrawCallback
+T} T{
+"statusDrawCallback"
+T}
+T{
+#define
+T} T{
+.PN XNStatusAttributes
+T} T{
+"statusAttributes"
+T}
+T{
+#define
+T} T{
+.PN XNArea
+T} T{
+"area"
+T}
+T{
+#define
+T} T{
+.PN XNAreaNeeded
+T} T{
+"areaNeeded"
+T}
+T{
+#define
+T} T{
+.PN XNSpotLocation
+T} T{
+"spotLocation"
+T}
+T{
+#define
+T} T{
+.PN XNColormap
+T} T{
+"colorMap"
+T}
+T{
+#define
+T} T{
+.PN XNStdColormap
+T} T{
+"stdColorMap"
+T}
+T{
+#define
+T} T{
+.PN XNForeground
+T} T{
+"foreground"
+T}
+T{
+#define
+T} T{
+.PN XNBackground
+T} T{
+"background"
+T}
+T{
+#define
+T} T{
+.PN XNBackgroundPixmap
+T} T{
+"backgroundPixmap"
+T}
+T{
+#define
+T} T{
+.PN XNFontSet
+T} T{
+"fontSet"
+T}
+T{
+#define
+T} T{
+.PN XNLineSpace
+T} T{
+"lineSpace"
+T}
+T{
+#define
+T} T{
+.PN XNCursor
+T} T{
+"cursor"
+T}
+.TE
+.sp -1
+.TS
+lw(.5i) lw(2.75i) lw(2.5i).
+T{
+#define
+T} T{
+.PN XNQueryIMValuesList
+T} T{
+"queryIMValuesList"
+T}
+T{
+#define
+T} T{
+.PN XNQueryICValuesList
+T} T{
+"queryICValuesList"
+T}
+T{
+#define
+T} T{
+.PN XNStringConversionCallback
+T} T{
+"stringConversionCallback"
+T}
+T{
+#define
+T} T{
+.PN XNStringConversion
+T} T{
+"stringConversion"
+T}
+T{
+#define
+T} T{
+.PN XNResetState
+T} T{
+"resetState"
+T}
+T{
+#define
+T} T{
+.PN XNHotKey
+T} T{
+"hotkey"
+T}
+T{
+#define
+T} T{
+.PN XNHotKeyState
+T} T{
+"hotkeyState"
+T}
+T{
+#define
+T} T{
+.PN XNPreeditState
+T} T{
+"preeditState"
+T}
+T{
+#define
+T} T{
+.PN XNVisiblePosition
+T} T{
+"visiblePosition"
+T}
+T{
+#define
+T} T{
+.PN XNR6PreeditCallbackBehavior
+T} T{
+"r6PreeditCallback"
+T}
+.TE
+.sp -1
+.IN "XNQueryIMValuesList" "" "@DEF@"
+.IN "XNQueryICValuesList" "" "@DEF@"
+.IN "XNStringConversionCallback" "" "@DEF@"
+.IN "XNStringConversion" "" "@DEF@"
+.IN "XNResetState" "" "@DEF@"
+.IN "XNHotKey" "" "@DEF@"
+.IN "XNHotKeyState" "" "@DEF@"
+.IN "XNPreeditState" "" "@DEF@"
+.IN "XNVisiblePosition" "" "@DEF@"
+.IN "XNR6PreeditCallbackBehavior" "" "@DEF@"
+.TS
+lw(.5i) lw(2.75i) lw(2.5i).
+T{
+#define
+T} T{
+.PN XNRequiredCharSet
+T} T{
+"requiredCharSet"
+T}
+T{
+#define
+T} T{
+.PN XNQueryOrientation
+T} T{
+"queryOrientation"
+T}
+T{
+#define
+T} T{
+.PN XNDirectionalDependentDrawing
+T} T{
+"directionalDependentDrawing"
+T}
+T{
+#define
+T} T{
+.PN XNContextualDrawing
+T} T{
+"contextualDrawing"
+T}
+T{
+#define
+T} T{
+.PN XNBaseFontName
+T} T{
+"baseFontName"
+T}
+T{
+#define
+T} T{
+.PN XNMissingCharSet
+T} T{
+"missingCharSet"
+T}
+T{
+#define
+T} T{
+.PN XNDefaultString
+T} T{
+"defaultString"
+T}
+T{
+#define
+T} T{
+.PN XNOrientation
+T} T{
+"orientation"
+T}
+T{
+#define
+T} T{
+.PN XNFontInfo
+T} T{
+"fontInfo"
+T}
+T{
+#define
+T} T{
+.PN XNOMAutomatic
+T} T{
+"omAutomatic"
+T}
+.TE
+.IN "XNRequiredCharSet" "" "@DEF@"
+.IN "XNQueryOrientation" "" "@DEF@"
+.IN "XNDirectionalDependentDrawing" "" "@DEF@"
+.IN "XNContextualDrawing" "" "@DEF@"
+.IN "XNBaseFontName" "" "@DEF@"
+.IN "XNMissingCharSet" "" "@DEF@"
+.IN "XNDefaultString" "" "@DEF@"
+.IN "XNOrientation" "" "@DEF@"
+.IN "XNFontInfo" "" "@DEF@"
+.IN "XNOMAutomatic" "" "@DEF@"
+.bp
diff --git a/specs/X11/CH14 b/specs/X11/CH14
new file mode 100644
index 0000000..34c09da
--- /dev/null
+++ b/specs/X11/CH14
@@ -0,0 +1,3590 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 14\fP\s-1
+
+\s+1\fBInter-Client Communication Functions\fP\s-1
+.sp 2
+.nr H1 14
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 14: Inter-Client Communication Functions
+.XE
+The \fIInter-Client Communication Conventions Manual\fP,
+hereafter referred to as the ICCCM, details the
+X Consortium approved conventions that govern inter-client communications.
+These conventions ensure peer-to-peer client cooperation in the use
+of selections, cut buffers, and shared resources as well as client cooperation
+with window and session managers.
+For further information,
+see the \fIInter-Client Communication Conventions Manual\fP.
+.LP
+Xlib provides a number of standard properties and programming interfaces
+that are ICCCM compliant.
+The predefined atoms for some of these properties are defined in the
+.hN X11/Xatom.h
+header file, where
+to avoid name conflicts with user symbols their
+.PN #define
+name has an XA_ prefix.
+For further information about atoms and properties,
+see section 4.3.
+.LP
+Xlib's selection and cut buffer mechanisms provide the primary programming
+interfaces by which peer client applications communicate with each other
+(see sections 4.5 and 16.6).
+The functions discussed in this chapter provide
+the primary programming interfaces by which client applications communicate
+with their window and session managers as well as share standard colormaps.
+.LP
+The standard properties that are of special interest for communicating
+with window and session managers are:
+.IN "Atom" "predefined"
+.TS H
+lw(2i) lw(1.1i) lw(.4i) lw(2.25i)
+lw(2i) lw(1.1i) cw(.4i) lw(2.25i).
+_
+.sp 6p
+.B
+Name Type Format Description
+.sp 6p
+_
+.TH
+.R
+T{
+\s-1WM_CLASS\s+1
+T} T{
+\s-1STRING\s+1
+T} T{
+8
+T} T{
+Set by application programs to allow window and session
+managers to obtain the application's resources from the resource database.
+T}
+.sp 6p
+T{
+\s-1WM_CLIENT_MACHINE\s+1
+T} T{
+\s-1TEXT\s+1
+T} T{
+T} T{
+The string name of the machine on which the client application is running.
+T}
+.sp 6p
+T{
+\s-1WM_COLORMAP_WINDOWS\s+1
+T} T{
+\s-1WINDOW\s+1
+T} T{
+32
+T} T{
+The list of window IDs that may need a different colormap
+from that of their top-level window.
+T}
+.sp 6p
+T{
+\s-1WM_COMMAND\s+1
+T} T{
+\s-1TEXT\s+1
+T} T{
+T} T{
+The command and arguments, null-separated, used to invoke the
+application.
+T}
+.sp 6p
+T{
+\s-1WM_HINTS\s+1
+T} T{
+\s-1WM_HINTS\s+1
+T} T{
+32
+T} T{
+Additional hints set by the client for use by the window manager.
+The C type of this property is
+.PN XWMHints .
+T}
+.sp 6p
+T{
+\s-1WM_ICON_NAME\s+1
+T} T{
+\s-1TEXT\s+1
+T} T{
+T} T{
+The name to be used in an icon.
+T}
+.sp 6p
+T{
+\s-1WM_ICON_SIZE\s+1
+T} T{
+\s-1WM_ICON_SIZE\s+1
+T} T{
+32
+T} T{
+The window manager may set this property on the root window to
+specify the icon sizes it supports.
+The C type of this property is
+.PN XIconSize .
+T}
+.sp 6p
+T{
+\s-1WM_NAME\s+1
+T} T{
+\s-1TEXT\s+1
+T} T{
+T} T{
+The name of the application.
+T}
+.sp 6p
+T{
+\s-1WM_NORMAL_HINTS\s+1
+T} T{
+\s-1WM_SIZE_HINTS\s+1
+T} T{
+32
+T} T{
+Size hints for a window in its normal state.
+The C type of this property is
+.PN XSizeHints .
+T}
+.sp 6p
+T{
+\s-1WM_PROTOCOLS\s+1
+T} T{
+\s-1ATOM\s+1
+T} T{
+32
+T} T{
+List of atoms that identify the communications protocols between the
+client and window manager in which the client is willing to participate.
+T}
+.sp 6p
+T{
+\s-1WM_STATE\s+1
+T} T{
+\s-1WM_STATE\s+1
+T} T{
+32
+T} T{
+Intended for communication between window and session managers only.
+T}
+.sp 6p
+T{
+\s-1WM_TRANSIENT_FOR\s+1
+T} T{
+\s-1WINDOW\s+1
+T} T{
+32
+T} T{
+Set by application programs to indicate to the window manager that a transient
+top-level window, such as a dialog box.
+T}
+.sp 6p
+_
+.TE
+.LP
+The remainder of this chapter discusses:
+.IP \(bu 5
+Client to window manager communication
+.IP \(bu 5
+Client to session manager communication
+.IP \(bu 5
+Standard colormaps
+.NH 2
+Client to Window Manager Communication
+.XS
+\*(SN Client to Window Manager Communication
+.XE
+.LP
+This section discusses how to:
+.IP \(bu 5
+Manipulate top-level windows
+.IP \(bu 5
+Convert string lists
+.IP \(bu 5
+Set and read text properties
+.IP \(bu 5
+Set and read the WM_NAME property
+.IP \(bu 5
+Set and read the WM_ICON_NAME property
+.IP \(bu 5
+Set and read the WM_HINTS property
+.IP \(bu 5
+Set and read the WM_NORMAL_HINTS property
+.IP \(bu 5
+Set and read the WM_CLASS property
+.IP \(bu 5
+Set and read the WM_TRANSIENT_FOR property
+.IP \(bu 5
+Set and read the WM_PROTOCOLS property
+.IP \(bu 5
+Set and read the WM_COLORMAP_WINDOWS property
+.IP \(bu 5
+Set and read the WM_ICON_SIZE property
+.IP \(bu 5
+Use window manager convenience functions
+.NH 3
+Manipulating Top-Level Windows
+.XS
+\*(SN Manipulating Top-Level Windows
+.XE
+.LP
+Xlib provides functions that you can use to change the visibility or size
+of top-level windows (that is, those that were created as children
+of the root window).
+Note that the subwindows that you create are ignored by window managers.
+Therefore,
+you should use the basic window functions described in chapter 3
+to manipulate your application's subwindows.
+.LP
+To request that a top-level window be iconified, use
+.PN XIconifyWindow .
+.IN "XIconifyWindow" "" "@DEF@"
+.sM
+.FD 0
+Status XIconifyWindow\^(\^\fIdisplay\fP, \fIw\fP, \fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+The
+.PN XIconifyWindow
+function sends a WM_CHANGE_STATE
+.PN ClientMessage
+event with a format of 32 and a first data element of
+.PN IconicState
+(as described in section 4.1.4 of the
+\fIInter-Client Communication Conventions Manual\fP)
+and a window of w
+to the root window of the specified screen
+with an event mask set to
+.PN SubstructureNotifyMask |
+.PN SubstructureRedirectMask .
+Window managers may elect to receive this message and
+if the window is in its normal state,
+may treat it as a request to change the window's state from normal to iconic.
+If the WM_CHANGE_STATE property cannot be interned,
+.PN XIconifyWindow
+does not send a message and returns a zero status.
+It returns a nonzero status if the client message is sent successfully;
+otherwise, it returns a zero status.
+.sp
+.LP
+To request that a top-level window be withdrawn, use
+.PN XWithdrawWindow .
+.IN "XWithdrawWindow" "" "@DEF@"
+.sM
+.FD 0
+Status XWithdrawWindow\^(\^\fIdisplay\fP, \fIw\fP, \fIscreen_number\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.LP
+.eM
+The
+.PN XWithdrawWindow
+function unmaps the specified window
+and sends a synthetic
+.PN UnmapNotify
+event to the root window of the specified screen.
+Window managers may elect to receive this message
+and may treat it as a request to change the window's state to withdrawn.
+When a window is in the withdrawn state,
+neither its normal nor its iconic representations is visible.
+It returns a nonzero status if the
+.PN UnmapNotify
+event is successfully sent;
+otherwise, it returns a zero status.
+.LP
+.PN XWithdrawWindow
+can generate a
+.PN BadWindow
+error.
+.sp
+.LP
+To request that a top-level window be reconfigured, use
+.PN XReconfigureWMWindow .
+.IN "XReconfigureWMWindow" "" "@DEF@"
+.sM
+.FD 0
+Status XReconfigureWMWindow\^(\^\fIdisplay\fP, \fIw\fP, \fIscreen_number\fP, \
+\fIvalue_mask\fP, \fIvalues\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.br
+ unsigned int \fIvalue_mask\fP\^;
+.br
+ XWindowChanges *\fIvalues\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.IP \fIvalue_mask\fP 1i
+Specifies which values are to be set using information in
+the values structure.
+This mask is the bitwise inclusive OR of the valid configure window values bits.
+.IP \fIvalues\fP 1i
+Specifies the
+.PN XWindowChanges
+structure.
+.LP
+.eM
+The
+.PN XReconfigureWMWindow
+function issues a
+.PN ConfigureWindow
+request on the specified top-level window.
+If the stacking mode is changed and the request fails with a
+.PN BadMatch
+error,
+the error is trapped by Xlib and a synthetic
+.PN ConfigureRequestEvent
+containing the same configuration parameters is sent to the root
+of the specified window.
+Window managers may elect to receive this event
+and treat it as a request to reconfigure the indicated window.
+It returns a nonzero status if the request or event is successfully sent;
+otherwise, it returns a zero status.
+.LP
+.PN XReconfigureWMWindow
+can generate
+.PN BadValue
+and
+.PN BadWindow
+errors.
+.NH 3
+Converting String Lists
+.XS
+\*(SN Converting String Lists
+.XE
+.LP
+Many of the text properties allow a variety of types and formats.
+Because the data stored in these properties are not
+simple null-terminated strings, an
+.PN XTextProperty
+structure is used to describe the encoding, type, and length of the text
+as well as its value.
+The
+.PN XTextProperty
+structure contains:
+.IN "XTextProperty" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ unsigned char *value; /* property data */
+ Atom encoding; /* type of property */
+ int format; /* 8, 16, or 32 */
+ unsigned long nitems; /* number of items in value */
+} XTextProperty;
+.De
+.LP
+.eM
+Xlib provides functions to convert localized text to or from encodings
+that support the inter-client communication conventions for text.
+In addition, functions are provided for converting between lists of pointers
+to character strings and text properties in the STRING encoding.
+.LP
+The functions for localized text return a signed integer error status
+that encodes
+.PN Success
+as zero, specific error conditions as negative numbers, and partial conversion
+as a count of unconvertible characters.
+.LP
+.IN "XICCEncodingStyle" "" "@DEF@"
+.sM
+.TS
+lw(.5i) lw(2i) lw(2.5i).
+T{
+#define
+T} T{
+.PN XNoMemory
+T} T{
+\-1
+T}
+T{
+#define
+T} T{
+.PN XLocaleNotSupported
+T} T{
+\-2
+T}
+T{
+#define
+T} T{
+.PN XConverterNotFound
+T} T{
+\-3
+T}
+.TE
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef enum {
+ XStringStyle, /* STRING */
+ XCompoundTextStyle, /* COMPOUND_TEXT */
+ XTextStyle, /* text in owner's encoding (current locale) */
+ XStdICCTextStyle /* STRING, else COMPOUND_TEXT */
+} XICCEncodingStyle;
+.De
+.LP
+.eM
+.sp
+.LP
+To convert a list of text strings to an
+.PN XTextProperty
+structure, use
+.PN XmbTextListToTextProperty
+or
+.PN XwcTextListToTextProperty .
+.IN "XmbTextListToTextProperty" "" "@DEF@"
+.IN "XwcTextListToTextProperty" "" "@DEF@"
+.sM
+.FD 0
+int XmbTextListToTextProperty\^(\^\fIdisplay\fP\^, \fIlist\fP\^, \fIcount\fP\^, \fIstyle\fP\^, \fItext_prop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char **\fIlist\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ XICCEncodingStyle \fIstyle\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.FN
+.FD 0
+int XwcTextListToTextProperty\^(\^\fIdisplay\fP\^, \fIlist\fP\^, \fIcount\fP\^, \fIstyle\fP\^, \fItext_prop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ wchar_t **\fIlist\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ XICCEncodingStyle \fIstyle\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIlist\fP 1i
+Specifies a list of null-terminated character strings.
+.IP \fIcount\fP 1i
+Specifies the number of strings specified.
+.IP \fIstyle\fP 1i
+Specifies the manner in which the property is encoded.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.PN XTextProperty
+structure.
+.LP
+.eM
+The
+.PN XmbTextListToTextProperty
+and
+.PN XwcTextListToTextProperty
+functions set the specified
+.PN XTextProperty
+value to a set of null-separated elements representing the concatenation
+of the specified list of null-terminated text strings.
+A final terminating null is stored at the end of the value field
+of text_prop_return but is not included in the nitems member.
+.LP
+The functions set the encoding field of text_prop_return to an
+.PN Atom
+for the specified display
+naming the encoding determined by the specified style
+and convert the specified text list to this encoding for storage in
+the text_prop_return value field.
+If the style
+.PN XStringStyle
+or
+.PN XCompoundTextStyle
+is specified,
+this encoding is ``STRING'' or ``COMPOUND_TEXT'', respectively.
+If the style
+.PN XTextStyle
+is specified,
+this encoding is the encoding of the current locale.
+If the style
+.PN XStdICCTextStyle
+is specified,
+this encoding is ``STRING'' if the text is fully convertible to STRING,
+else ``COMPOUND_TEXT''.
+.LP
+If insufficient memory is available for the new value string,
+the functions return
+.PN XNoMemory .
+If the current locale is not supported,
+the functions return
+.PN XLocaleNotSupported .
+In both of these error cases,
+the functions do not set text_prop_return.
+.LP
+To determine if the functions are guaranteed not to return
+.PN XLocaleNotSupported ,
+use
+.PN XSupportsLocale .
+.LP
+If the supplied text is not fully convertible to the specified encoding,
+the functions return the number of unconvertible characters.
+Each unconvertible character is converted to an implementation-defined and
+encoding-specific default string.
+Otherwise, the functions return
+.PN Success .
+Note that full convertibility to all styles except
+.PN XStringStyle
+is guaranteed.
+.LP
+To free the storage for the value field, use
+.PN XFree .
+.sp
+.LP
+To obtain a list of text strings from an
+.PN XTextProperty
+structure, use
+.PN XmbTextPropertyToTextList
+or
+.PN XwcTextPropertyToTextList .
+.IN "XmbTextPropertyToTextList" "" "@DEF@"
+.IN "XwcTextPropertyToTextList" "" "@DEF@"
+.sM
+.FD 0
+int XmbTextPropertyToTextList\^(\^\fIdisplay\fP\^, \fItext_prop\fP\^, \fIlist_return\fP\^, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.br
+ char ***\fIlist_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.FD 0
+int XwcTextPropertyToTextList\^(\^\fIdisplay\fP\^, \fItext_prop\fP\^, \fIlist_return\fP\^, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.br
+ wchar_t ***\fIlist_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItext_prop\fP 1i
+Specifies the
+.PN XTextProperty
+structure to be used.
+.IP \fIlist_return\fP 1i
+Returns a list of null-terminated character strings.
+.ds Cn strings
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.LP
+.eM
+The
+.PN XmbTextPropertyToTextList
+and
+.PN XwcTextPropertyToTextList
+functions return a list of text strings in the current locale representing the
+null-separated elements of the specified
+.PN XTextProperty
+structure.
+The data in text_prop must be format 8.
+.LP
+Multiple elements of the property (for example, the strings in a disjoint
+text selection) are separated by a null byte.
+The contents of the property are not required to be null-terminated;
+any terminating null should not be included in text_prop.nitems.
+.LP
+If insufficient memory is available for the list and its elements,
+.PN XmbTextPropertyToTextList
+and
+.PN XwcTextPropertyToTextList
+return
+.PN XNoMemory .
+If the current locale is not supported,
+the functions return
+.PN XLocaleNotSupported .
+Otherwise, if the encoding field of text_prop is not convertible
+to the encoding of the current locale,
+the functions return
+.PN XConverterNotFound .
+For supported locales,
+existence of a converter from COMPOUND_TEXT, STRING
+or the encoding of the current locale is guaranteed if
+.PN XSupportsLocale
+returns
+.PN True
+for the current locale (but the actual text
+may contain unconvertible characters).
+Conversion of other encodings is implementation-dependent.
+In all of these error cases,
+the functions do not set any return values.
+.LP
+Otherwise,
+.PN XmbTextPropertyToTextList
+and
+.PN XwcTextPropertyToTextList
+return the list of null-terminated text strings to list_return
+and the number of text strings to count_return.
+.LP
+If the value field of text_prop is not fully convertible to the encoding of
+the current locale,
+the functions return the number of unconvertible characters.
+Each unconvertible character is converted to a string in the
+current locale that is specific to the current locale.
+To obtain the value of this string,
+use
+.PN XDefaultString .
+Otherwise,
+.PN XmbTextPropertyToTextList
+and
+.PN XwcTextPropertyToTextList
+return
+.PN Success .
+.LP
+To free the storage for the list and its contents returned by
+.PN XmbTextPropertyToTextList ,
+use
+.PN XFreeStringList .
+To free the storage for the list and its contents returned by
+.PN XwcTextPropertyToTextList ,
+use
+.PN XwcFreeStringList .
+.sp
+.LP
+To free the in-memory data associated with the specified
+wide character string list, use
+.PN XwcFreeStringList .
+.IN "XwcFreeStringList" "" "@DEF@"
+.sM
+.FD 0
+void XwcFreeStringList\^(\^\fIlist\fP\^)
+.br
+ wchar_t **\fIlist\fP\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies the list of strings to be freed.
+.LP
+.eM
+The
+.PN XwcFreeStringList
+function frees memory allocated by
+.PN XwcTextPropertyToTextList .
+.sp
+.LP
+To obtain the default string for text conversion in the current locale,
+use
+.PN XDefaultString .
+.IN "XDefaultString" "" "@DEF@"
+.sM
+.FD 0
+char *XDefaultString\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XDefaultString
+function returns the default string used by Xlib for text conversion
+(for example, in
+.PN XmbTextPropertyToTextList ).
+The default string is the string in the current locale that is output
+when an unconvertible character is found during text conversion.
+If the string returned by
+.PN XDefaultString
+is the empty string ("\^"),
+no character is output in the converted text.
+.PN XDefaultString
+does not return NULL.
+.LP
+The string returned by
+.PN XDefaultString
+is independent of the default string for text drawing;
+see
+.PN XCreateFontSet
+to obtain the default string for an
+.PN XFontSet .
+.LP
+The behavior when an invalid codepoint is supplied to any Xlib function is
+undefined.
+.LP
+The returned string is null-terminated.
+It is owned by Xlib and should not be modified or freed by the client.
+It may be freed after the current locale is changed.
+Until freed, it will not be modified by Xlib.
+.sp
+.LP
+To set the specified list of strings in the STRING encoding to a
+.PN XTextProperty
+structure, use
+.PN XStringListToTextProperty .
+.IN "XStringListToTextProperty" "" "@DEF@"
+.sM
+.FD 0
+Status XStringListToTextProperty\^(\^\fIlist\fP, \fIcount\fP, \
+\fItext_prop_return\fP\^)
+.br
+ char **\fIlist\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies a list of null-terminated character strings.
+.ds Cn strings
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.PN XTextProperty
+structure.
+.LP
+.eM
+The
+.PN XStringListToTextProperty
+function sets the specified
+.PN XTextProperty
+to be of type STRING (format 8) with a value representing the
+concatenation of the specified list of null-separated character strings.
+An extra null byte (which is not included in the nitems member)
+is stored at the end of the value field of text_prop_return.
+The strings are assumed (without verification) to be in the STRING encoding.
+If insufficient memory is available for the new value string,
+.PN XStringListToTextProperty
+does not set any fields in the
+.PN XTextProperty
+structure and returns a zero status.
+Otherwise, it returns a nonzero status.
+To free the storage for the value field, use
+.PN XFree .
+.sp
+.LP
+To obtain a list of strings from a specified
+.PN XTextProperty
+structure in the STRING encoding, use
+.PN XTextPropertyToStringList .
+.IN "XTextPropertyToStringList" "" "@DEF@"
+.sM
+.FD 0
+Status XTextPropertyToStringList\^(\^\fItext_prop\fP, \fIlist_return\fP, \
+\fIcount_return\fP\^)
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.br
+ char ***\fIlist_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.IP \fItext_prop\fP 1i
+Specifies the
+.PN XTextProperty
+structure to be used.
+.IP \fIlist_return\fP 1i
+Returns a list of null-terminated character strings.
+.ds Cn strings
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.LP
+.eM
+The
+.PN XTextPropertyToStringList
+function returns a list of strings representing the null-separated elements
+of the specified
+.PN XTextProperty
+structure.
+The data in text_prop must be of type STRING and format 8.
+Multiple elements of the property
+(for example, the strings in a disjoint text selection)
+are separated by NULL (encoding 0).
+The contents of the property are not null-terminated.
+If insufficient memory is available for the list and its elements,
+.PN XTextPropertyToStringList
+sets no return values and returns a zero status.
+Otherwise, it returns a nonzero status.
+To free the storage for the list and its contents, use
+.PN XFreeStringList .
+.sp
+.LP
+To free the in-memory data associated with the specified string list, use
+.PN XFreeStringList .
+.IN "XFreeStringList" "" "@DEF@"
+.sM
+.FD 0
+void XFreeStringList\^(\^\fIlist\fP\^)
+.br
+ char **\fIlist\fP\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies the list of strings to be freed.
+.LP
+.eM
+The
+.PN XFreeStringList
+function releases memory allocated by
+.PN XmbTextPropertyToTextList
+and
+.PN XTextPropertyToStringList
+and the missing charset list allocated by
+.PN XCreateFontSet .
+.NH 3
+Setting and Reading Text Properties
+.XS
+\*(SN Setting and Reading Text Properties
+.XE
+.LP
+Xlib provides two functions that you can use to set and read
+the text properties for a given window.
+You can use these functions to set and read those properties of type TEXT
+(WM_NAME, WM_ICON_NAME, WM_COMMAND, and WM_CLIENT_MACHINE).
+In addition,
+Xlib provides separate convenience functions that you can use to set each
+of these properties.
+For further information about these convenience functions,
+see sections 14.1.4, 14.1.5, 14.2.1, and 14.2.2, respectively.
+.sp
+.LP
+To set one of a window's text properties, use
+.PN XSetTextProperty .
+.IN "XSetTextProperty" "" "@DEF@"
+.sM
+.FD 0
+void XSetTextProperty\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop\fP, \
+\fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop\fP 1i
+Specifies the
+.PN XTextProperty
+structure to be used.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XSetTextProperty
+function replaces the existing specified property for the named window
+with the data, type, format, and number of items determined
+by the value field, the encoding field, the format field,
+and the nitems field, respectively, of the specified
+.PN XTextProperty
+structure.
+If the property does not already exist,
+.PN XSetTextProperty
+sets it for the specified window.
+.LP
+.PN XSetTextProperty
+can generate
+.PN BadAlloc ,
+.PN BadAtom ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To read one of a window's text properties, use
+.PN XGetTextProperty .
+.IN "XGetTextProperty" "" "@DEF@"
+.sM
+.FD 0
+Status XGetTextProperty\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop_return\fP, \
+\fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.PN XTextProperty
+structure.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XGetTextProperty
+function reads the specified property from the window
+and stores the data in the returned
+.PN XTextProperty
+structure.
+It stores the data in the value field,
+the type of the data in the encoding field,
+the format of the data in the format field,
+and the number of items of data in the nitems field.
+An extra byte containing null (which is not included in the nitems member)
+is stored at the end of the value field of text_prop_return.
+The particular interpretation of the property's encoding
+and data as text is left to the calling application.
+If the specified property does not exist on the window,
+.PN XGetTextProperty
+sets the value field to NULL,
+the encoding field to
+.PN None ,
+the format field to zero,
+and the nitems field to zero.
+.LP
+If it was able to read and store the data in the
+.PN XTextProperty
+structure,
+.PN XGetTextProperty
+returns a nonzero status;
+otherwise, it returns a zero status.
+.LP
+.PN XGetTextProperty
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.NH 3
+Setting and Reading the WM_NAME Property
+.XS
+\*(SN Setting and Reading the WM_NAME Property
+.XE
+.LP
+Xlib provides convenience functions that you can use to set and read
+the WM_NAME property for a given window.
+.sp
+.LP
+To set a window's WM_NAME property with the supplied convenience function, use
+.PN XSetWMName .
+.IN "XSetWMName" "" "@DEF@"
+.sM
+.FD 0
+void XSetWMName\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop\fP 1i
+Specifies the
+.PN XTextProperty
+structure to be used.
+.LP
+.eM
+The
+.PN XSetWMName
+convenience function calls
+.PN XSetTextProperty
+to set the WM_NAME property.
+.sp
+.LP
+To read a window's WM_NAME property with the supplied convenience function, use
+.PN XGetWMName .
+.IN "XGetWMName" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWMName\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.PN XTextProperty
+structure.
+.LP
+.eM
+The
+.PN XGetWMName
+convenience function calls
+.PN XGetTextProperty
+to obtain the WM_NAME property.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+.LP
+The following two functions have been superseded by
+.PN XSetWMName
+and
+.PN XGetWMName ,
+respectively.
+You can use these additional convenience functions
+for window names that are encoded as STRING properties.
+.sp
+.LP
+To assign a name to a window, use
+.PN XStoreName .
+.IN "Window" "name"
+.IN "XStoreName" "" "@DEF@"
+.sM
+.FD 0
+XStoreName\^(\^\fIdisplay\fP, \fIw\fP\^, \fIwindow_name\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char *\fIwindow_name\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwindow_name\fP 1i
+Specifies the window name,
+which should be a null-terminated string.
+.LP
+.eM
+The
+.PN XStoreName
+function assigns the name passed to window_name to the specified window.
+A window manager can display the window name in some prominent
+place, such as the title bar, to allow users to identify windows easily.
+Some window managers may display a window's name in the window's icon,
+although they are encouraged to use the window's icon name
+if one is provided by the application.
+If the string is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+.LP
+.PN XStoreName
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To get the name of a window, use
+.PN XFetchName .
+.IN "XFetchName" "" "@DEF@"
+.sM
+.FD 0
+Status XFetchName\^(\^\fIdisplay\fP, \fIw\fP\^, \fIwindow_name_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char **\fIwindow_name_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwindow_name_return\fP 1i
+Returns the window name, which is a null-terminated string.
+.LP
+.eM
+The
+.PN XFetchName
+function returns the name of the specified window.
+If it succeeds,
+it returns a nonzero status;
+otherwise, no name has been set for the window,
+and it returns zero.
+If the WM_NAME property has not been set for this window,
+.PN XFetchName
+sets window_name_return to NULL.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned string is in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+When finished with it, a client must free
+the window name string using
+.PN XFree .
+.LP
+.PN XFetchName
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Setting and Reading the WM_ICON_NAME Property
+.XS
+\*(SN Setting and Reading the WM_ICON_NAME Property
+.XE
+.LP
+Xlib provides convenience functions that you can use to set and read
+the WM_ICON_NAME property for a given window.
+.LP
+.sp
+To set a window's WM_ICON_NAME property,
+use
+.PN XSetWMIconName .
+.IN "XSetWMIconName" "" "@DEF@"
+.sM
+.FD 0
+void XSetWMIconName\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop\fP 1i
+Specifies the
+.PN XTextProperty
+structure to be used.
+.LP
+.eM
+The
+.PN XSetWMIconName
+convenience function calls
+.PN XSetTextProperty
+to set the WM_ICON_NAME property.
+.sp
+.LP
+To read a window's WM_ICON_NAME property,
+use
+.PN XGetWMIconName .
+.IN "XGetWMIconName" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWMIconName\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.PN XTextProperty
+structure.
+.LP
+.eM
+The
+.PN XGetWMIconName
+convenience function calls
+.PN XGetTextProperty
+to obtain the WM_ICON_NAME property.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+.LP
+The next two functions have been superseded by
+.PN XSetWMIconName
+and
+.PN XGetWMIconName ,
+respectively.
+You can use these additional convenience functions
+for window names that are encoded as STRING properties.
+.sp
+.LP
+.sp
+To set the name to be displayed in a window's icon, use
+.PN XSetIconName .
+.IN "Window" "icon name"
+.IN "XSetIconName" "" "@DEF@"
+.sM
+.FD 0
+XSetIconName\^(\^\fIdisplay\fP, \fIw\fP\^, \fIicon_name\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char *\fIicon_name\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIicon_name\fP 1i
+Specifies the icon name,
+which should be a null-terminated string.
+.LP
+.eM
+If the string is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+.PN XSetIconName
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To get the name a window wants displayed in its icon, use
+.PN XGetIconName .
+.IN "XGetIconName" "" "@DEF@"
+.sM
+.FD 0
+Status XGetIconName\^(\^\fIdisplay\fP, \fIw\fP\^, \fIicon_name_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char **\fIicon_name_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIicon_name_return\fP 1i
+Returns the window's icon name,
+which is a null-terminated string.
+.LP
+.eM
+The
+.PN XGetIconName
+function returns the name to be displayed in the specified window's icon.
+If it succeeds, it returns a nonzero status; otherwise,
+if no icon name has been set for the window,
+it returns zero.
+If you never assigned a name to the window,
+.PN XGetIconName
+sets icon_name_return to NULL.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned string is in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+When finished with it, a client must free
+the icon name string using
+.PN XFree .
+.LP
+.PN XGetIconName
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Setting and Reading the WM_HINTS Property
+.XS
+\*(SN Setting and Reading the WM_HINTS Property
+.XE
+.LP
+Xlib provides functions that you can use to set and read
+the WM_HINTS property for a given window.
+These functions use the flags and the
+.PN XWMHints
+structure, as defined in the
+.hN X11/Xutil.h
+header file.
+.sp
+.LP
+To allocate an
+.PN XWMHints
+structure, use
+.PN XAllocWMHints .
+.IN "XAllocWMHints" "" "@DEF@"
+.sM
+.FD 0
+XWMHints *XAllocWMHints\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XAllocWMHints
+function allocates and returns a pointer to an
+.PN XWMHints
+structure.
+Note that all fields in the
+.PN XWMHints
+structure are initially set to zero.
+If insufficient memory is available,
+.PN XAllocWMHints
+returns NULL.
+To free the memory allocated to this structure,
+use
+.PN XFree .
+.LP
+The
+.PN XWMHints
+structure contains:
+.LP
+.sM
+/* Window manager hints mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(2.5i).
+T{
+#define
+T} T{
+.PN InputHint
+T} T{
+(1L << 0)
+T}
+T{
+#define
+T} T{
+.PN StateHint
+T} T{
+(1L << 1)
+T}
+T{
+#define
+T} T{
+.PN IconPixmapHint
+T} T{
+(1L << 2)
+T}
+T{
+#define
+T} T{
+.PN IconWindowHint
+T} T{
+(1L << 3)
+T}
+T{
+#define
+T} T{
+.PN IconPositionHint
+T} T{
+(1L << 4)
+T}
+T{
+#define
+T} T{
+.PN IconMaskHint
+T} T{
+(1L << 5)
+T}
+T{
+#define
+T} T{
+.PN WindowGroupHint
+T} T{
+(1L << 6)
+T}
+T{
+#define
+T} T{
+.PN UrgencyHint
+T} T{
+(1L << 8)
+T}
+T{
+#define
+T} T{
+.PN AllHints
+T} T{
+(InputHint|StateHint|IconPixmapHint|
+.br
+IconWindowHint|IconPositionHint|
+.br
+IconMaskHint|WindowGroupHint)
+T}
+.TE
+.IN "XWMHints" "" "@DEF@"
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+/* Values */
+
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ Bool input; /* does this application rely on the window manager to
+ get keyboard input? */
+ int initial_state; /* see below */
+ Pixmap icon_pixmap; /* pixmap to be used as icon */
+ Window icon_window; /* window to be used as icon */
+ int icon_x, icon_y; /* initial position of icon */
+ Pixmap icon_mask; /* pixmap to be used as mask for icon_pixmap */
+ XID window_group; /* id of related window group */
+ /* this structure may be extended in the future */
+} XWMHints;
+.De
+.LP
+.eM
+The input member is used to communicate to the window manager the input focus
+model used by the application.
+Applications that expect input but never explicitly set focus to any
+of their subwindows (that is, use the push model of focus management),
+such as X Version 10 style applications that use real-estate
+driven focus, should set this member to
+.PN True .
+Similarly, applications
+that set input focus to their subwindows only when it is given to their
+top-level window by a window manager should also set this member to
+.PN True .
+Applications that manage their own input focus by explicitly setting
+focus to one of their subwindows whenever they want keyboard input
+(that is, use the pull model of focus management) should set this member to
+.PN False .
+Applications that never expect any keyboard input also should set this member
+to
+.PN False .
+.LP
+Pull model window managers should make it possible for push model
+applications to get input by setting input focus to the top-level windows of
+applications whose input member is
+.PN True .
+Push model window managers should
+make sure that pull model applications do not break them
+by resetting input focus to
+.PN PointerRoot
+when it is appropriate (for example, whenever an application whose
+input member is
+.PN False
+sets input focus to one of its subwindows).
+.LP
+The definitions for the initial_state flag are:
+.TS
+lw(.5i) lw(2i) lw(.2i) lw(2.8i).
+T{
+#define
+T} T{
+.PN WithdrawnState
+T} T{
+0
+T} T{
+T}
+T{
+#define
+T} T{
+.PN NormalState
+T} T{
+1
+T} T{
+/* most applications start this way */
+T}
+T{
+#define
+T} T{
+.PN IconicState
+T} T{
+3
+T} T{
+/* application wants to start as an icon */
+T}
+.TE
+The icon_mask specifies which pixels of the icon_pixmap should be used as the
+icon.
+This allows for nonrectangular icons.
+Both icon_pixmap and icon_mask must be bitmaps.
+The icon_window lets an application provide a window for use as an icon
+for window managers that support such use.
+The window_group lets you specify that this window belongs to a group
+of other windows.
+For example, if a single application manipulates multiple
+top-level windows, this allows you to provide enough
+information that a window manager can iconify all of the windows
+rather than just the one window.
+.LP
+The
+.PN UrgencyHint
+flag, if set in the flags field, indicates that the client deems the window
+contents to be urgent, requiring the timely response of the user. The
+window manager will make some effort to draw the user's attention to this
+window while this flag is set. The client must provide some means by which the
+user can cause the urgency flag to be cleared (either mitigating
+the condition that made the window urgent or merely shutting off the alarm)
+or the window to be withdrawn.
+.LP
+.sp
+To set a window's WM_HINTS property, use
+.PN XSetWMHints .
+.IN "XSetWMHints" "" "@DEF@"
+.sM
+.FD 0
+XSetWMHints\^(\^\fIdisplay\fP, \fIw\fP, \fIwmhints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XWMHints *\fIwmhints\fP\^;
+
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwmhints\fP 1i
+Specifies the
+.PN XWMHints
+structure to be used.
+.LP
+.eM
+The
+.PN XSetWMHints
+function sets the window manager hints that include icon information and location,
+the initial state of the window, and whether the application relies on the
+window manager to get keyboard input.
+.LP
+.PN XSetWMHints
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To read a window's WM_HINTS property, use
+.PN XGetWMHints .
+.IN "XGetWMHints" "" "@DEF@"
+.sM
+.FD 0
+XWMHints *XGetWMHints\^(\^\fIdisplay\fP, \fIw\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.LP
+.eM
+The
+.PN XGetWMHints
+function reads the window manager hints and
+returns NULL if no WM_HINTS property was set on the window
+or returns a pointer to an
+.PN XWMHints
+structure if it succeeds.
+When finished with the data,
+free the space used for it by calling
+.PN XFree .
+.LP
+.PN XGetWMHints
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Setting and Reading the WM_NORMAL_HINTS Property
+.XS
+\*(SN Setting and Reading the WM_NORMAL_HINTS Property
+.XE
+.LP
+Xlib provides functions that you can use to set or read
+the WM_NORMAL_HINTS property for a given window.
+The functions use the flags and the
+.PN XSizeHints
+structure, as defined in the
+.hN X11/Xutil.h
+header file.
+.LP
+The size of the
+.PN XSizeHints
+structure may grow in future releases, as new components are
+added to support new ICCCM features.
+Passing statically allocated instances of this structure into
+Xlib may result in memory corruption when running against a
+future release of the library.
+As such, it is recommended that only dynamically allocated
+instances of the structure be used.
+.sp
+.LP
+To allocate an
+.PN XSizeHints
+structure, use
+.PN XAllocSizeHints .
+.IN "XAllocSizeHints" "" "@DEF@"
+.sM
+.FD 0
+XSizeHints *XAllocSizeHints\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XAllocSizeHints
+function allocates and returns a pointer to an
+.PN XSizeHints
+structure.
+Note that all fields in the
+.PN XSizeHints
+structure are initially set to zero.
+If insufficient memory is available,
+.PN XAllocSizeHints
+returns NULL.
+To free the memory allocated to this structure,
+use
+.PN XFree .
+.LP
+The
+.PN XSizeHints
+structure contains:
+.LP
+.sM
+/* Size hints mask bits */
+.TS
+lw(.5i) lw(1.1i) lw(1.5i) lw(3.1i).
+T{
+#define
+T} T{
+.PN USPosition
+T} T{
+(1L << 0)
+T} T{
+/* user specified x, y */
+T}
+T{
+#define
+T} T{
+.PN USSize
+T} T{
+(1L << 1)
+T} T{
+/* user specified width, height */
+T}
+T{
+#define
+T} T{
+.PN PPosition
+T} T{
+(1L << 2)
+T} T{
+/* program specified position */
+T}
+T{
+#define
+T} T{
+.PN PSize
+T} T{
+(1L << 3)
+T} T{
+/* program specified size */
+T}
+T{
+#define
+T} T{
+.PN PMinSize
+T} T{
+(1L << 4)
+T} T{
+/* program specified minimum size */
+T}
+T{
+#define
+T} T{
+.PN PMaxSize
+T} T{
+(1L << 5)
+T} T{
+/* program specified maximum size */
+T}
+T{
+#define
+T} T{
+.PN PResizeInc
+T} T{
+(1L << 6)
+T} T{
+/* program specified resize increments */
+T}
+T{
+#define
+T} T{
+.PN PAspect
+T} T{
+(1L << 7)
+T} T{
+/* program specified min and max aspect ratios */
+T}
+T{
+#define
+T} T{
+.PN PBaseSize
+T} T{
+(1L << 8)
+T}
+T{
+#define
+T} T{
+.PN PWinGravity
+T} T{
+(1L << 9)
+T}
+T{
+#define
+T} T{
+.PN PAllHints
+T} T{
+(PPosition|PSize|
+.br
+PMinSize|PMaxSize|
+.br
+PResizeInc|PAspect)
+T} T{
+T}
+.TE
+.IN "XSizeHints" "" "@DEF@"
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+/* Values */
+
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ int x, y; /* Obsolete */
+ int width, height; /* Obsolete */
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+ struct {
+ int x; /* numerator */
+ int y; /* denominator */
+ } min_aspect, max_aspect;
+ int base_width, base_height;
+ int win_gravity;
+ /* this structure may be extended in the future */
+} XSizeHints;
+.De
+.LP
+.eM
+The x, y, width, and height members are now obsolete
+and are left solely for compatibility reasons.
+The min_width and min_height members specify the
+minimum window size that still allows the application to be useful.
+The max_width and max_height members specify the maximum window size.
+The width_inc and height_inc members define an arithmetic progression of
+sizes (minimum to maximum) into which the window prefers to be resized.
+The min_aspect and max_aspect members are expressed
+as ratios of x and y,
+and they allow an application to specify the range of aspect
+ratios it prefers.
+The base_width and base_height members define the desired size of the window.
+The window manager will interpret the position of the window
+and its border width to position the point of the outer rectangle
+of the overall window specified by the win_gravity member.
+The outer rectangle of the window includes any borders or decorations
+supplied by the window manager.
+In other words,
+if the window manager decides to place the window where the client asked,
+the position on the parent window's border named by the win_gravity
+will be placed where the client window would have been placed
+in the absence of a window manager.
+.LP
+Note that use of the
+.PN PAllHints
+macro is highly discouraged.
+.sp
+.LP
+To set a window's WM_NORMAL_HINTS property, use
+.PN XSetWMNormalHints .
+.IN "XSetWMNormalHints" "" "@DEF@"
+.sM
+.FD 0
+void XSetWMNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints\fP 1i
+Specifies the size hints for the window in its normal state.
+.LP
+.eM
+The
+.PN XSetWMNormalHints
+function replaces the size hints for the WM_NORMAL_HINTS property
+on the specified window.
+If the property does not already exist,
+.PN XSetWMNormalHints
+sets the size hints for the WM_NORMAL_HINTS property on the specified window.
+The property is stored with a type of WM_SIZE_HINTS and a format of 32.
+.LP
+.PN XSetWMNormalHints
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To read a window's WM_NORMAL_HINTS property, use
+.PN XGetWMNormalHints .
+.IN "XGetWMNormalHints" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWMNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP, \
+\fIsupplied_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints_return\fP\^;
+.br
+ long *\fIsupplied_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints_return\fP 1i
+Returns the size hints for the window in its normal state.
+.IP \fIsupplied_return\fP 1i
+Returns the hints that were supplied by the user.
+.LP
+.eM
+The
+.PN XGetWMNormalHints
+function returns the size hints stored in the WM_NORMAL_HINTS property
+on the specified window.
+If the property is of type WM_SIZE_HINTS, is of format 32,
+and is long enough to contain either an old (pre-ICCCM)
+or new size hints structure,
+.PN XGetWMNormalHints
+sets the various fields of the
+.PN XSizeHints
+structure, sets the supplied_return argument to the list of fields
+that were supplied by the user (whether or not they contained defined values),
+and returns a nonzero status.
+Otherwise, it returns a zero status.
+.LP
+If
+.PN XGetWMNormalHints
+returns successfully and a pre-ICCCM size hints property is read,
+the supplied_return argument will contain the following bits:
+.LP
+.Ds
+(USPosition|USSize|PPosition|PSize|PMinSize|
+ PMaxSize|PResizeInc|PAspect)
+.De
+.LP
+If the property is large enough to contain the base size
+and window gravity fields as well,
+the supplied_return argument will also contain the following bits:
+.LP
+.Ds
+PBaseSize|PWinGravity
+.De
+.LP
+.PN XGetWMNormalHints
+can generate a
+.PN BadWindow
+error.
+.sp
+.LP
+To set a window's WM_SIZE_HINTS property, use
+.PN XSetWMSizeHints .
+.IN "XSetWMSizeHints" "" "@DEF@"
+.sM
+.FD 0
+void XSetWMSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints\fP 1i
+Specifies the
+.PN XSizeHints
+structure to be used.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XSetWMSizeHints
+function replaces the size hints for the specified property
+on the named window.
+If the specified property does not already exist,
+.PN XSetWMSizeHints
+sets the size hints for the specified property
+on the named window.
+The property is stored with a type of WM_SIZE_HINTS and a format of 32.
+To set a window's normal size hints,
+you can use the
+.PN XSetWMNormalHints
+function.
+.LP
+.PN XSetWMSizeHints
+can generate
+.PN BadAlloc ,
+.PN BadAtom ,
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To read a window's WM_SIZE_HINTS property, use
+.PN XGetWMSizeHints .
+.IN "XGetWMSizeHints" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWMSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP, \
+\fIsupplied_return\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XSizeHints *\fIhints_return\fP\^;
+.br
+ long *\fIsupplied_return\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIhints_return\fP 1i
+Returns the
+.PN XSizeHints
+structure.
+.IP \fIsupplied_return\fP 1i
+Returns the hints that were supplied by the user.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XGetWMSizeHints
+function returns the size hints stored in the specified property
+on the named window.
+If the property is of type WM_SIZE_HINTS, is of format 32,
+and is long enough to contain either an old (pre-ICCCM)
+or new size hints structure,
+.PN XGetWMSizeHints
+sets the various fields of the
+.PN XSizeHints
+structure, sets the supplied_return argument to the
+list of fields that were supplied by the user
+(whether or not they contained defined values),
+and returns a nonzero status.
+Otherwise, it returns a zero status.
+To get a window's normal size hints,
+you can use the
+.PN XGetWMNormalHints
+function.
+.LP
+If
+.PN XGetWMSizeHints
+returns successfully and a pre-ICCCM size hints property is read,
+the supplied_return argument will contain the following bits:
+.LP
+.Ds
+(USPosition|USSize|PPosition|PSize|PMinSize|
+ PMaxSize|PResizeInc|PAspect)
+.De
+.LP
+If the property is large enough to contain the base size
+and window gravity fields as well,
+the supplied_return argument will also contain the following bits:
+.LP
+.Ds
+PBaseSize|PWinGravity
+.De
+.LP
+.PN XGetWMSizeHints
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.NH 3
+Setting and Reading the WM_CLASS Property
+.XS
+\*(SN Setting and Reading the WM_CLASS Property
+.XE
+.LP
+Xlib provides functions that you can use to set and get
+the WM_CLASS property for a given window.
+These functions use the
+.PN XClassHint
+structure, which is defined in the
+.hN X11/Xutil.h
+header file.
+.sp
+.LP
+To allocate an
+.PN XClassHint
+structure, use
+.PN XAllocClassHint .
+.IN "XAllocClassHint" "" "@DEF@"
+.sM
+.FD 0
+XClassHint *XAllocClassHint\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XAllocClassHint
+function allocates and returns a pointer to an
+.PN XClassHint
+structure.
+Note that the pointer fields in the
+.PN XClassHint
+structure are initially set to NULL.
+If insufficient memory is available,
+.PN XAllocClassHint
+returns NULL.
+To free the memory allocated to this structure,
+use
+.PN XFree .
+.LP
+The
+.PN XClassHint
+contains:
+.LP
+.sM
+.IN "XClassHint" "" "@DEF@"
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ char *res_name;
+ char *res_class;
+} XClassHint;
+.De
+.LP
+.eM
+The res_name member contains the application name,
+and the res_class member contains the application class.
+Note that the name set in this property may differ from the name set as WM_NAME.
+That is, WM_NAME specifies what should be displayed in the title bar and,
+therefore, can contain temporal information (for example, the name of
+a file currently in an editor's buffer).
+On the other hand,
+the name specified as part of WM_CLASS is the formal name of the application
+that should be used when retrieving the application's resources from the
+resource database.
+.LP
+.sp
+To set a window's WM_CLASS property, use
+.PN XSetClassHint .
+.IN "XSetClassHint" "" "@DEF@"
+.sM
+.FD 0
+XSetClassHint\^(\^\fIdisplay\fP, \fIw\fP, \fIclass_hints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XClassHint *\fIclass_hints\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIclass_hints\fP 1i
+Specifies the
+.PN XClassHint
+structure that is to be used.
+.LP
+.eM
+The
+.PN XSetClassHint
+function sets the class hint for the specified window.
+If the strings are not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+.LP
+.PN XSetClassHint
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To read a window's WM_CLASS property, use
+.PN XGetClassHint .
+.IN "XGetClassHint" "" "@DEF@"
+.sM
+.FD 0
+Status XGetClassHint\^(\^\fIdisplay\fP, \fIw\fP, \fIclass_hints_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP;
+.br
+ XClassHint *\fIclass_hints_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIclass_hints_return\fP 1i
+Returns the
+.PN XClassHint
+structure.
+.LP
+.eM
+The
+.PN XGetClassHint
+function returns the class hint of the specified window to the members
+of the supplied structure.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned strings are in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+To free res_name and res_class when finished with the strings,
+use
+.PN XFree
+on each individually.
+.LP
+.PN XGetClassHint
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Setting and Reading the WM_TRANSIENT_FOR Property
+.XS
+\*(SN Setting and Reading the WM_TRANSIENT_FOR Property
+.XE
+.LP
+Xlib provides functions that you can use to set and read
+the WM_TRANSIENT_FOR property for a given window.
+.LP
+.sp
+To set a window's WM_TRANSIENT_FOR property, use
+.PN XSetTransientForHint .
+.IN "XSetTransientForHint" "" "@DEF@"
+.sM
+.FD 0
+XSetTransientForHint\^(\^\fIdisplay\fP, \fIw\fP, \fIprop_window\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Window \fIprop_window\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIprop_window\fP 1i
+Specifies the window that the WM_TRANSIENT_FOR property is to be set to.
+.LP
+.eM
+The
+.PN XSetTransientForHint
+function sets the WM_TRANSIENT_FOR property of the specified window to the
+specified prop_window.
+.LP
+.PN XSetTransientForHint
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To read a window's WM_TRANSIENT_FOR property, use
+.PN XGetTransientForHint .
+.IN "XGetTransientForHint" "" "@DEF@"
+.sM
+.FD 0
+Status XGetTransientForHint\^(\^\fIdisplay\fP, \fIw\fP, \fIprop_window_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Window *\fIprop_window_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIprop_window_return\fP 1i
+Returns the WM_TRANSIENT_FOR property of the specified window.
+.LP
+.eM
+The
+.PN XGetTransientForHint
+function returns the WM_TRANSIENT_FOR property for the specified window.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+.LP
+.PN XGetTransientForHint
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Setting and Reading the WM_PROTOCOLS Property
+.XS
+\*(SN Setting and Reading the WM_PROTOCOLS Property
+.XE
+.LP
+Xlib provides functions that you can use to set and read
+the WM_PROTOCOLS property for a given window.
+.LP
+.sp
+To set a window's WM_PROTOCOLS property, use
+.PN XSetWMProtocols .
+.IN "XSetWMProtocols" "" "@DEF@"
+.sM
+.FD 0
+Status XSetWMProtocols\^(\^\fIdisplay\fP, \fIw\fP, \fIprotocols\fP, \
+\fIcount\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Atom *\fIprotocols\fP\^;
+.br
+ int \fIcount\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIprotocols\fP 1i
+Specifies the list of protocols.
+.ds Cn protocols in the list
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.LP
+.eM
+The
+.PN XSetWMProtocols
+function replaces the WM_PROTOCOLS property on the specified window
+with the list of atoms specified by the protocols argument.
+If the property does not already exist,
+.PN XSetWMProtocols
+sets the WM_PROTOCOLS property on the specified window
+to the list of atoms specified by the protocols argument.
+The property is stored with a type of ATOM and a format of 32.
+If it cannot intern the WM_PROTOCOLS atom,
+.PN XSetWMProtocols
+returns a zero status.
+Otherwise, it returns a nonzero status.
+.LP
+.PN XSetWMProtocols
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To read a window's WM_PROTOCOLS property, use
+.PN XGetWMProtocols .
+.IN "XGetWMProtocols" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWMProtocols\^(\^\fIdisplay\fP, \fIw\fP, \fIprotocols_return\fP, \
+\fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Atom **\fIprotocols_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIprotocols_return\fP 1i
+Returns the list of protocols.
+.ds Cn protocols in the list
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.LP
+.eM
+The
+.PN XGetWMProtocols
+function returns the list of atoms stored in the WM_PROTOCOLS property
+on the specified window.
+These atoms describe window manager protocols in which the owner
+of this window is willing to participate.
+If the property exists, is of type ATOM, is of format 32,
+and the atom WM_PROTOCOLS can be interned,
+.PN XGetWMProtocols
+sets the protocols_return argument to a list of atoms,
+sets the count_return argument to the number of elements in the list,
+and returns a nonzero status.
+Otherwise, it sets neither of the return arguments
+and returns a zero status.
+To release the list of atoms, use
+.PN XFree .
+.LP
+.PN XGetWMProtocols
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Setting and Reading the WM_COLORMAP_WINDOWS Property
+.XS
+\*(SN Setting and Reading the WM_COLORMAP_WINDOWS Property
+.XE
+.LP
+Xlib provides functions that you can use to set and read
+the WM_COLORMAP_WINDOWS property for a given window.
+.sp
+.LP
+To set a window's WM_COLORMAP_WINDOWS property, use
+.PN XSetWMColormapWindows .
+.IN "XSetWMColormapWindows" "" "@DEF@"
+.sM
+.FD 0
+Status XSetWMColormapWindows\^(\^\fIdisplay\fP, \fIw\fP, \
+\fIcolormap_windows\fP, \fIcount\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Window *\fIcolormap_windows\fP\^;
+.br
+ int \fIcount\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIcolormap_windows\fP 1i
+Specifies the list of windows.
+.ds Cn windows in the list
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.LP
+.eM
+The
+.PN XSetWMColormapWindows
+function replaces the WM_COLORMAP_WINDOWS property on the specified
+window with the list of windows specified by the colormap_windows argument.
+If the property does not already exist,
+.PN XSetWMColormapWindows
+sets the WM_COLORMAP_WINDOWS property on the specified
+window to the list of windows specified by the colormap_windows argument.
+The property is stored with a type of WINDOW and a format of 32.
+If it cannot intern the WM_COLORMAP_WINDOWS atom,
+.PN XSetWMColormapWindows
+returns a zero status.
+Otherwise, it returns a nonzero status.
+.LP
+.PN XSetWMColormapWindows
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To read a window's WM_COLORMAP_WINDOWS property, use
+.PN XGetWMColormapWindows .
+.IN "XGetWMColormapWindows" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWMColormapWindows\^(\^\fIdisplay\fP, \fIw\fP, \
+\fIcolormap_windows_return\fP, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ Window **\fIcolormap_windows_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIcolormap_windows_return\fP 1i
+Returns the list of windows.
+.ds Cn windows in the list
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.LP
+.eM
+The
+.PN XGetWMColormapWindows
+function returns the list of window identifiers stored
+in the WM_COLORMAP_WINDOWS property on the specified window.
+These identifiers indicate the colormaps that the window manager
+may need to install for this window.
+If the property exists, is of type WINDOW, is of format 32,
+and the atom WM_COLORMAP_WINDOWS can be interned,
+.PN XGetWMColormapWindows
+sets the windows_return argument to a list of window identifiers,
+sets the count_return argument to the number of elements in the list,
+and returns a nonzero status.
+Otherwise, it sets neither of the return arguments
+and returns a zero status.
+To release the list of window identifiers, use
+.PN XFree .
+.LP
+.PN XGetWMColormapWindows
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Setting and Reading the WM_ICON_SIZE Property
+.XS
+\*(SN Setting and Reading the WM_ICON_SIZE Property
+.XE
+.LP
+Xlib provides functions that you can use to set and read
+the WM_ICON_SIZE property for a given window.
+These functions use the
+.PN XIconSize
+.IN "XIconSize"
+structure, which is defined in the
+.hN X11/Xutil.h
+header file.
+.sp
+.LP
+To allocate an
+.PN XIconSize
+structure, use
+.PN XAllocIconSize .
+.IN "XAllocIconSize" "" "@DEF@"
+.sM
+.FD 0
+XIconSize *XAllocIconSize\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XAllocIconSize
+function allocates and returns a pointer to an
+.PN XIconSize
+structure.
+Note that all fields in the
+.PN XIconSize
+structure are initially set to zero.
+If insufficient memory is available,
+.PN XAllocIconSize
+returns NULL.
+To free the memory allocated to this structure,
+use
+.PN XFree .
+.LP
+The
+.PN XIconSize
+structure contains:
+.LP
+.sM
+.IN "XIconSize" "" "@DEF@"
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+} XIconSize;
+.De
+.LP
+.eM
+The width_inc and height_inc members define an arithmetic progression of
+sizes (minimum to maximum) that represent the supported icon sizes.
+.LP
+.sp
+To set a window's WM_ICON_SIZE property, use
+.PN XSetIconSizes .
+.IN "XSetIconSizes" "" "@DEF@"
+.sM
+.FD 0
+XSetIconSizes\^(\^\fIdisplay\fP, \fIw\fP, \fIsize_list\fP, \fIcount\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XIconSize *\fIsize_list\fP\^;
+.br
+ int \fIcount\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIsize_list\fP 1i
+Specifies the size list.
+.IP \fIcount\fP 1i
+Specifies the number of items in the size list.
+.LP
+.eM
+The
+.PN XSetIconSizes
+function is used only by window managers to set the supported icon sizes.
+.LP
+.PN XSetIconSizes
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.LP
+.sp
+To read a window's WM_ICON_SIZE property, use
+.PN XGetIconSizes .
+.IN "XGetIconSizes" "" "@DEF@"
+.sM
+.FD 0
+Status XGetIconSizes\^(\^\fIdisplay\fP, \fIw\fP, \fIsize_list_return\fP, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XIconSize **\fIsize_list_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIsize_list_return\fP 1i
+Returns the size list.
+.IP \fIcount_return\fP 1i
+Returns the number of items in the size list.
+.LP
+.eM
+The
+.PN XGetIconSizes
+function returns zero if a window manager has not set icon sizes;
+otherwise, it returns nonzero.
+.PN XGetIconSizes
+should be called by an application that
+wants to find out what icon sizes would be most appreciated by the
+window manager under which the application is running.
+The application
+should then use
+.PN XSetWMHints
+to supply the window manager with an icon pixmap or window in one of the
+supported sizes.
+To free the data allocated in size_list_return, use
+.PN XFree .
+.LP
+.PN XGetIconSizes
+can generate a
+.PN BadWindow
+error.
+.NH 3
+Using Window Manager Convenience Functions
+.XS
+\*(SN Using Window Manager Convenience Functions
+.XE
+.LP
+The
+.PN XmbSetWMProperties
+function stores the standard set of window manager properties,
+with text properties in standard encodings
+for internationalized text communication.
+The standard window manager properties for a given window are
+WM_NAME, WM_ICON_NAME, WM_HINTS, WM_NORMAL_HINTS, WM_CLASS,
+WM_COMMAND, WM_CLIENT_MACHINE, and WM_LOCALE_NAME.
+.IN "XmbSetWMProperties" "" "@DEF@"
+.sM
+.FD 0
+void XmbSetWMProperties\^(\^\fIdisplay\fP\^, \fIw\fP\^, \fIwindow_name\fP\^, \fIicon_name\fP\^, \fIargv\fP\^, \fIargc\fP\^,
+.br
+ \fInormal_hints\fP\^, \fIwm_hints\fP\^, \fIclass_hints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char *\fIwindow_name\fP\^;
+.br
+ char *\fIicon_name\fP\^;
+.br
+ char *\fIargv\fP\^[];
+.br
+ int \fIargc\fP\^;
+.br
+ XSizeHints *\fInormal_hints\fP\^;
+.br
+ XWMHints *\fIwm_hints\fP\^;
+.br
+ XClassHint *\fIclass_hints\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwindow_name\fP 1i
+Specifies the window name,
+which should be a null-terminated string.
+.IP \fIicon_name\fP 1i
+Specifies the icon name,
+which should be a null-terminated string.
+.IP \fIargv\fP 1i
+Specifies the application's argument list.
+.IP \fIargc\fP 1i
+Specifies the number of arguments.
+.IP \fIhints\fP 1i
+Specifies the size hints for the window in its normal state.
+.IP \fIwm_hints\fP 1i
+Specifies the
+.PN XWMHints
+structure to be used.
+.IP \fIclass_hints\fP 1i
+Specifies the
+.PN XClassHint
+structure to be used.
+.LP
+.eM
+The
+.PN XmbSetWMProperties
+convenience function provides a simple programming interface
+for setting those essential window properties that are used
+for communicating with other clients
+(particularly window and session managers).
+.LP
+If the window_name argument is non-NULL,
+.PN XmbSetWMProperties
+sets the WM_NAME property.
+If the icon_name argument is non-NULL,
+.PN XmbSetWMProperties
+sets the WM_ICON_NAME property.
+The window_name and icon_name arguments are null-terminated strings
+in the encoding of the current locale.
+If the arguments can be fully converted to the STRING encoding,
+the properties are created with type ``STRING'';
+otherwise, the arguments are converted to Compound Text,
+and the properties are created with type ``COMPOUND_TEXT''.
+.LP
+If the normal_hints argument is non-NULL,
+.PN XmbSetWMProperties
+calls
+.PN XSetWMNormalHints ,
+which sets the WM_NORMAL_HINTS property (see section 14.1.7).
+If the wm_hints argument is non-NULL,
+.PN XmbSetWMProperties
+calls
+.PN XSetWMHints ,
+which sets the WM_HINTS property (see section 14.1.6).
+.LP
+If the argv argument is non-NULL,
+.PN XmbSetWMProperties
+sets the WM_COMMAND property from argv and argc.
+An argc of zero indicates a zero-length command.
+.LP
+The hostname of the machine is stored using
+.PN XSetWMClientMachine
+(see section 14.2.2).
+.LP
+If the class_hints argument is non-NULL,
+.PN XmbSetWMProperties
+sets the WM_CLASS property.
+If the res_name member in the
+.PN XClassHint
+structure is set to the NULL pointer and the RESOURCE_NAME
+environment variable is set,
+the value of the environment variable is substituted for res_name.
+If the res_name member is NULL,
+the environment variable is not set, and argv and argv[0] are set,
+then the value of argv[0], stripped of any directory prefixes,
+is substituted for res_name.
+.LP
+It is assumed that the supplied class_hints.res_name and argv,
+the RESOURCE_NAME environment variable, and the hostname of the machine
+are in the encoding of the locale announced for the LC_CTYPE category
+(on POSIX-compliant systems, the LC_CTYPE, else LANG environment variable).
+The corresponding WM_CLASS, WM_COMMAND, and WM_CLIENT_MACHINE properties
+are typed according to the local host locale announcer.
+No encoding conversion is performed prior to storage in the properties.
+.LP
+For clients that need to process the property text in a locale,
+.PN XmbSetWMProperties
+sets the WM_LOCALE_NAME property to be the name of the current locale.
+The name is assumed to be in the Host Portable Character Encoding
+and is converted to STRING for storage in the property.
+.LP
+.PN XmbSetWMProperties
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To set a window's standard window manager properties
+with strings in client-specified encodings, use
+.PN XSetWMProperties .
+The standard window manager properties for a given window are
+WM_NAME, WM_ICON_NAME, WM_HINTS, WM_NORMAL_HINTS, WM_CLASS,
+WM_COMMAND, and WM_CLIENT_MACHINE.
+.IN "XSetWMProperties" "" "@DEF@"
+.sM
+.FD 0
+void XSetWMProperties\^(\^\fIdisplay\fP, \fIw\fP, \fIwindow_name\fP, \
+\fIicon_name\fP, \fIargv\fP, \fIargc\fP, \fInormal_hints\fP, \fIwm_hints\fP, \
+\fIclass_hints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fIwindow_name\fP\^;
+.br
+ XTextProperty *\fIicon_name\fP\^;
+.br
+ char **\fIargv\fP\^;
+.br
+ int \fIargc\fP\^;
+.br
+ XSizeHints *\fInormal_hints\fP\^;
+.br
+ XWMHints *\fIwm_hints\fP\^;
+.br
+ XClassHint *\fIclass_hints\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwindow_name\fP 1i
+Specifies the window name,
+which should be a null-terminated string.
+.IP \fIicon_name\fP 1i
+Specifies the icon name,
+which should be a null-terminated string.
+.IP \fIargv\fP 1i
+Specifies the application's argument list.
+.IP \fIargc\fP 1i
+Specifies the number of arguments.
+.IP \fInormal_hints\fP 1i
+Specifies the size hints for the window in its normal state.
+.IP \fIwm_hints\fP 1i
+Specifies the
+.PN XWMHints
+structure to be used.
+.IP \fIclass_hints\fP 1i
+Specifies the
+.PN XClassHint
+structure to be used.
+.LP
+.eM
+The
+.PN XSetWMProperties
+convenience function provides a single programming interface
+for setting those essential window properties that are used
+for communicating with other clients (particularly window and session
+managers).
+.LP
+If the window_name argument is non-NULL,
+.PN XSetWMProperties
+calls
+.PN XSetWMName ,
+which, in turn, sets the WM_NAME property (see section 14.1.4).
+If the icon_name argument is non-NULL,
+.PN XSetWMProperties
+calls
+.PN XSetWMIconName ,
+which sets the WM_ICON_NAME property (see section 14.1.5).
+If the argv argument is non-NULL,
+.PN XSetWMProperties
+calls
+.PN XSetCommand ,
+which sets the WM_COMMAND property (see section 14.2.1).
+Note that an argc of zero is allowed to indicate a zero-length command.
+Note also that the hostname of this machine is stored using
+.PN XSetWMClientMachine
+(see section 14.2.2).
+.LP
+If the normal_hints argument is non-NULL,
+.PN XSetWMProperties
+calls
+.PN XSetWMNormalHints ,
+which sets the WM_NORMAL_HINTS property (see section 14.1.7).
+If the wm_hints argument is non-NULL,
+.PN XSetWMProperties
+calls
+.PN XSetWMHints ,
+which sets the WM_HINTS property (see section 14.1.6).
+.LP
+If the class_hints argument is non-NULL,
+.PN XSetWMProperties
+calls
+.PN XSetClassHint ,
+which sets the WM_CLASS property (see section 14.1.8).
+If the res_name member in the
+.PN XClassHint
+structure is set to the NULL pointer and the RESOURCE_NAME environment
+variable is set,
+then the value of the environment variable is substituted for res_name.
+If the res_name member is NULL,
+the environment variable is not set,
+and argv and argv[0] are set,
+then the value of argv[0], stripped of
+any directory prefixes, is substituted for res_name.
+.LP
+.PN XSetWMProperties
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.NH 2
+Client to Session Manager Communication
+.XS
+\*(SN Client to Session Manager Communication
+.XE
+.LP
+This section discusses how to:
+.IP \(bu 5
+Set and read the WM_COMMAND property
+.IP \(bu 5
+Set and read the WM_CLIENT_MACHINE property
+.NH 3
+Setting and Reading the WM_COMMAND Property
+.XS
+\*(SN Setting and Reading the WM_COMMAND Property
+.XE
+.LP
+Xlib provides functions that you can use to set and read
+the WM_COMMAND property for a given window.
+.sp
+.LP
+To set a window's WM_COMMAND property, use
+.PN XSetCommand .
+.IN "XSetCommand" "" "@DEF@"
+.sM
+.FD 0
+XSetCommand\^(\^\fIdisplay\fP, \fIw\fP, \fIargv\fP, \fIargc\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char **\fIargv\fP\^;
+.br
+ int \fIargc\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIargv\fP 1i
+Specifies the application's argument list.
+.IP \fIargc\fP 1i
+Specifies the number of arguments.
+.LP
+.eM
+The
+.PN XSetCommand
+function sets the command and arguments used to invoke the
+application.
+(Typically, argv is the argv array of your main program.)
+If the strings are not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+.LP
+.PN XSetCommand
+can generate
+.PN BadAlloc
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To read a window's WM_COMMAND property, use
+.PN XGetCommand .
+.IN "XGetCommand" "" "@DEF@"
+.sM
+.FD 0
+Status XGetCommand\^(\^\fIdisplay\fP, \fIw\fP, \fIargv_return\fP, \
+\fIargc_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char ***\fIargv_return\fP\^;
+.br
+ int *\fIargc_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIargv_return\fP 1i
+Returns the application's argument list.
+.IP \fIargc_return\fP 1i
+Returns the number of arguments returned.
+.LP
+.eM
+The
+.PN XGetCommand
+function reads the WM_COMMAND property from the specified window
+and returns a string list.
+If the WM_COMMAND property exists,
+it is of type STRING and format 8.
+If sufficient memory can be allocated to contain the string list,
+.PN XGetCommand
+fills in the argv_return and argc_return arguments
+and returns a nonzero status.
+Otherwise, it returns a zero status.
+If the data returned by the server is in the Latin Portable Character Encoding,
+then the returned strings are in the Host Portable Character Encoding.
+Otherwise, the result is implementation-dependent.
+To free the memory allocated to the string list, use
+.PN XFreeStringList .
+.NH 3
+Setting and Reading the WM_CLIENT_MACHINE Property
+.XS
+\*(SN Setting and Reading the WM_CLIENT_MACHINE Property
+.XE
+.LP
+Xlib provides functions that you can use to set and read
+the WM_CLIENT_MACHINE property for a given window.
+.sp
+.LP
+To set a window's WM_CLIENT_MACHINE property, use
+.PN XSetWMClientMachine .
+.IN "XSetWMClientMachine" "" "@DEF@"
+.sM
+.FD 0
+void XSetWMClientMachine\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop\fP 1i
+Specifies the
+.PN XTextProperty
+structure to be used.
+.LP
+.eM
+The
+.PN XSetWMClientMachine
+convenience function calls
+.PN XSetTextProperty
+to set the WM_CLIENT_MACHINE property.
+.sp
+.LP
+To read a window's WM_CLIENT_MACHINE property, use
+.PN XGetWMClientMachine .
+.IN "XGetWMClientMachine" "" "@DEF@"
+.sM
+.FD 0
+Status XGetWMClientMachine\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.PN XTextProperty
+structure.
+.LP
+.eM
+The
+.PN XGetWMClientMachine
+convenience function performs an
+.PN XGetTextProperty
+on the WM_CLIENT_MACHINE property.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+.NH 2
+Standard Colormaps
+.XS
+\*(SN Standard Colormaps
+.XE
+.LP
+Applications with color palettes, smooth-shaded drawings, or digitized
+images demand large numbers of colors.
+In addition, these applications often require an efficient mapping
+from color triples to pixel values that display the appropriate colors.
+.LP
+As an example, consider a three-dimensional display program that wants
+to draw a smoothly shaded sphere.
+At each pixel in the image of the sphere,
+the program computes the intensity and color of light
+reflected back to the viewer.
+The result of each computation is a triple of red, green, and blue (RGB)
+coefficients in the range 0.0 to 1.0.
+To draw the sphere, the program needs a colormap that provides a
+large range of uniformly distributed colors.
+The colormap should be arranged so that the program can
+convert its RGB triples into pixel values very quickly,
+because drawing the entire sphere requires many such
+conversions.
+.LP
+On many current workstations,
+the display is limited to 256 or fewer colors.
+Applications must allocate colors carefully,
+not only to make sure they cover the entire range they need
+but also to make use of as many of the available colors as possible.
+On a typical X display,
+many applications are active at once.
+Most workstations have only one hardware look-up table for colors,
+so only one application colormap can be installed at a given time.
+The application using the installed colormap is displayed correctly,
+and the other applications go technicolor and are
+displayed with false colors.
+.LP
+As another example, consider a user who is running an
+image processing program to display earth-resources data.
+The image processing program needs a colormap set up with 8 reds,
+8 greens, and 4 blues, for a total of 256 colors.
+Because some colors are already in use in the default colormap,
+the image processing program allocates and installs a new colormap.
+.LP
+The user decides to alter some of the colors in the image
+by invoking a color palette program to mix and choose colors.
+The color palette program also needs a
+colormap with eight reds, eight greens, and four blues, so just like
+the image processing program, it must allocate and
+install a new colormap.
+.LP
+Because only one colormap can be installed at a time,
+the color palette may be displayed incorrectly
+whenever the image processing program is active.
+Conversely, whenever the palette program is active,
+the image may be displayed incorrectly.
+The user can never match or compare colors in the palette and image.
+Contention for colormap resources can be reduced if applications
+with similar color needs share colormaps.
+.LP
+The image processing program and the color palette program
+could share the same colormap if there existed a convention that described
+how the colormap was set up.
+Whenever either program was active,
+both would be displayed correctly.
+.LP
+The standard colormap properties define a set of commonly used
+colormaps.
+Applications that share these colormaps and conventions display
+true colors more often and provide a better interface to the user.
+.LP
+Standard colormaps allow applications to share commonly used color
+resources.
+This allows many applications to be displayed in true colors
+simultaneously, even when each application needs an entirely filled
+colormap.
+.LP
+Several standard colormaps are described in this section.
+Usually, a window manager creates these colormaps.
+Applications should use the standard colormaps if they already exist.
+.sp
+.LP
+To allocate an
+.PN XStandardColormap
+structure, use
+.PN XAllocStandardColormap .
+.IN "XAllocStandardColormap" "" "@DEF@"
+.sM
+.FD 0
+XStandardColormap *XAllocStandardColormap\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XAllocStandardColormap
+function allocates and returns a pointer to an
+.PN XStandardColormap
+structure.
+Note that all fields in the
+.PN XStandardColormap
+structure are initially set to zero.
+If insufficient memory is available,
+.PN XAllocStandardColormap
+returns NULL.
+To free the memory allocated to this structure,
+use
+.PN XFree .
+.LP
+The
+.PN XStandardColormap
+structure contains:
+.LP
+.sM
+/* Hints */
+.TS
+lw(.5i) lw(2i) lw(1i).
+T{
+#define
+T} T{
+.PN ReleaseByFreeingColormap
+T} T{
+( (XID) 1L)
+T}
+.TE
+/* Values */
+.IN "XStandardColormap" "" "@DEF@"
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ Colormap colormap;
+ unsigned long red_max;
+ unsigned long red_mult;
+ unsigned long green_max;
+ unsigned long green_mult;
+ unsigned long blue_max;
+ unsigned long blue_mult;
+ unsigned long base_pixel;
+ VisualID visualid;
+ XID killid;
+} XStandardColormap;
+.De
+.LP
+.eM
+The colormap member is the colormap created by the
+.PN XCreateColormap
+function.
+The red_max, green_max, and blue_max members give the maximum
+red, green, and blue values, respectively.
+Each color coefficient ranges from zero to its max, inclusive.
+For example,
+a common colormap allocation is 3/3/2 (3 planes for red, 3
+planes for green, and 2 planes for blue).
+This colormap would have red_max = 7, green_max = 7,
+and blue_max = 3.
+An alternate allocation that uses only 216 colors is red_max = 5,
+green_max = 5, and blue_max = 5.
+.LP
+The red_mult, green_mult, and blue_mult members give the
+scale factors used to compose a full pixel value.
+(See the discussion of the base_pixel members for further information.)
+For a 3/3/2 allocation, red_mult might be 32,
+green_mult might be 4, and blue_mult might be 1.
+For a 6-colors-each allocation, red_mult might be 36,
+green_mult might be 6, and blue_mult might be 1.
+.LP
+The base_pixel member gives the base pixel value used to
+compose a full pixel value.
+Usually, the base_pixel is obtained from a call to the
+.PN XAllocColorPlanes
+function.
+Given integer red, green, and blue coefficients in their appropriate
+ranges, one then can compute a corresponding pixel value by
+using the following expression:
+.LP
+.Ds
+.TA .5i 1.5i
+.ta .5i 1.5i
+(r * red_mult + g * green_mult + b * blue_mult + base_pixel) & 0xFFFFFFFF
+.De
+.LP
+For
+.PN GrayScale
+colormaps,
+only the colormap, red_max, red_mult,
+and base_pixel members are defined.
+The other members are ignored.
+To compute a
+.PN GrayScale
+pixel value, use the following expression:
+.LP
+.Ds
+.TA .5i 1.5i
+.ta .5i 1.5i
+(gray * red_mult + base_pixel) & 0xFFFFFFFF
+.De
+.LP
+Negative multipliers can be represented by converting the 2's
+complement representation of the multiplier into an unsigned long and
+storing the result in the appropriate _mult field.
+The step of masking by 0xFFFFFFFF effectively converts the resulting
+positive multiplier into a negative one.
+The masking step will take place automatically on many machine architectures,
+depending on the size of the integer type used to do the computation.
+.LP
+The visualid member gives the ID number of the visual from which the
+colormap was created.
+The killid member gives a resource ID that indicates whether
+the cells held by this standard colormap are to be released
+by freeing the colormap ID or by calling the
+.PN XKillClient
+function on the indicated resource.
+(Note that this method is necessary for allocating out of an existing colormap.)
+.LP
+The properties containing the
+.PN XStandardColormap
+information have
+the type RGB_COLOR_MAP.
+.LP
+The remainder of this section discusses standard colormap properties and atoms
+as well as how to manipulate standard colormaps.
+.NH 3
+Standard Colormap Properties and Atoms
+.XS
+\*(SN Standard Colormap Properties and Atoms
+.XE
+.LP
+.IN "Standard Colormaps"
+.IN "Colormaps" "standard"
+Several standard colormaps are available.
+Each standard colormap is defined by a property,
+and each such property is identified by an atom.
+The following list names the atoms and describes the colormap
+associated with each one.
+The
+.hN X11/Xatom.h
+header file contains the definitions for each of the following atoms,
+which are prefixed with XA_.
+.IP RGB_DEFAULT_MAP 5
+This atom names a property.
+The value of the property is an array of
+.PN XStandardColormap
+structures.
+Each entry in the array describes an RGB subset of the default color
+map for the Visual specified by visual_id.
+.IP
+Some applications only need a few RGB colors and
+may be able to allocate them from the system default colormap.
+This is the ideal situation because the fewer colormaps that are
+active in the system the more applications are displayed
+with correct colors at all times.
+.IP
+A typical allocation for the RGB_DEFAULT_MAP on 8-plane displays
+is 6 reds, 6 greens, and 6 blues.
+This gives 216 uniformly distributed colors
+(6 intensities of 36 different hues) and still leaves 40 elements
+of a 256-element colormap available for special-purpose colors
+for text, borders, and so on.
+.IP RGB_BEST_MAP 5
+.br
+This atom names a property.
+The value of the property is an
+.PN XStandardColormap .
+.IP
+The property defines the best RGB colormap available on
+the screen.
+(Of course, this is a subjective evaluation.)
+Many image processing and three-dimensional applications need to
+use all available colormap cells and to distribute as many
+perceptually distinct colors as possible over those cells.
+This implies that there may be more green values available than
+red, as well as more green or red than blue.
+.IP
+For an 8-plane
+.PN PseudoColor
+visual,
+RGB_BEST_MAP is likely to be a 3/3/2 allocation.
+For a 24-plane
+.PN DirectColor
+visual,
+RGB_BEST_MAP is normally an 8/8/8 allocation.
+.IP RGB_RED_MAP 5
+.br
+.ns
+.IP RGB_GREEN_MAP 5
+.br
+.ns
+.IP RGB_BLUE_MAP 5
+These atoms name properties.
+The value of each property is an
+.PN XStandardColormap .
+.IP
+The properties define all-red, all-green, and all-blue
+colormaps, respectively.
+These maps are used by applications that want to make color-separated
+images.
+For example, a user might generate a full-color image
+on an 8-plane display both by rendering an image three times
+(once with high color resolution in red, once with green,
+and once with blue) and by multiply exposing a single frame in a camera.
+.IP RGB_GRAY_MAP 5
+This atom names a property.
+The value of the property is an
+.PN XStandardColormap .
+.IP
+The property describes the best
+.PN GrayScale
+colormap available on the screen.
+As previously mentioned,
+only the colormap, red_max, red_mult, and base_pixel members of the
+.PN XStandardColormap
+structure are used for
+.PN GrayScale
+colormaps.
+.NH 3
+Setting and Obtaining Standard Colormaps
+.XS
+\*(SN Setting and Obtaining Standard Colormaps
+.XE
+.LP
+Xlib provides functions that you can use to set and obtain an
+.PN XStandardColormap
+structure.
+.sp
+.LP
+To set an
+.PN XStandardColormap
+structure, use
+.PN XSetRGBColormaps .
+.IN "XSetRGBColormaps" "" "@DEF@"
+.sM
+.FD 0
+void XSetRGBColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fIstd_colormap\fP, \
+\fIcount\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XStandardColormap *\fIstd_colormap\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIstd_colormap\fP 1i
+Specifies the
+.PN XStandardColormap
+structure to be used.
+.ds Cn colormaps
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XSetRGBColormaps
+function replaces the RGB colormap definition in the specified property
+on the named window.
+If the property does not already exist,
+.PN XSetRGBColormaps
+sets the RGB colormap definition in the specified property
+on the named window.
+The property is stored with a type of RGB_COLOR_MAP and a format of 32.
+Note that it is the caller's responsibility to honor the ICCCM
+restriction that only RGB_DEFAULT_MAP contain more than one definition.
+.LP
+The
+.PN XSetRGBColormaps
+function usually is only used by window or session managers.
+To create a standard colormap,
+follow this procedure:
+.IP 1. 5
+Open a new connection to the same server.
+.IP 2. 5
+Grab the server.
+.IP 3. 5
+See if the property is on the property list of the root window for the screen.
+.IP 4. 5
+If the desired property is not present:
+.RS
+.IP \(bu 5
+Create a colormap (unless you are using the default colormap of the screen).
+.IP \(bu 5
+Determine the color characteristics of the visual.
+.IP \(bu 5
+Allocate cells in the colormap (or create it with
+.PN AllocAll ).
+.IP \(bu 5
+Call
+.PN XStoreColors
+to store appropriate color values in the colormap.
+.IP \(bu 5
+Fill in the descriptive members in the
+.PN XStandardColormap
+structure.
+.IP \(bu 5
+Attach the property to the root window.
+.IP \(bu 5
+Use
+.PN XSetCloseDownMode
+to make the resource permanent.
+.RE
+.IP 5. 5
+Ungrab the server.
+.LP
+.PN XSetRGBColormaps
+can generate
+.PN BadAlloc ,
+.PN BadAtom ,
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To obtain the
+.PN XStandardColormap
+structure associated with the specified property, use
+.PN XGetRGBColormaps .
+.IN "XGetRGBColormaps" "" "@DEF@"
+.sM
+.FD 0
+Status XGetRGBColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fIstd_colormap_return\fP, \
+\fIcount_return\fP, \fIproperty\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ XStandardColormap **\fIstd_colormap_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.br
+ Atom \fIproperty\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIstd_colormap_return\fP 1i
+Returns the
+.PN XStandardColormap
+structure.
+.ds Cn colormaps
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.LP
+.eM
+The
+.PN XGetRGBColormaps
+function returns the RGB colormap definitions stored
+in the specified property on the named window.
+If the property exists, is of type RGB_COLOR_MAP, is of format 32,
+and is long enough to contain a colormap definition,
+.PN XGetRGBColormaps
+allocates and fills in space for the returned colormaps
+and returns a nonzero status.
+If the visualid is not present,
+.PN XGetRGBColormaps
+assumes the default visual for the screen on which the window is located;
+if the killid is not present,
+.PN None
+is assumed, which indicates that the resources cannot be released.
+Otherwise,
+none of the fields are set, and
+.PN XGetRGBColormaps
+returns a zero status.
+Note that it is the caller's responsibility to honor the ICCCM
+restriction that only RGB_DEFAULT_MAP contain more than one definition.
+.LP
+.PN XGetRGBColormaps
+can generate
+.PN BadAtom
+and
+.PN BadWindow
+errors.
+.bp
diff --git a/specs/X11/CH15 b/specs/X11/CH15
new file mode 100644
index 0000000..a10df0a
--- /dev/null
+++ b/specs/X11/CH15
@@ -0,0 +1,1628 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 15\fP\s-1
+
+\s+1\fBResource Manager Functions\fP\s-1
+.sp 2
+.nr H1 15
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 15: Resource Manager Functions
+.XE
+A program often needs a variety of options in the X environment
+(for example, fonts, colors, icons, and cursors).
+Specifying all of these options on the command line is awkward
+because users may want to customize many aspects of the program
+and need a convenient way to establish these customizations as
+the default settings.
+The resource manager is provided for this purpose.
+Resource specifications are usually stored in human-readable files
+and in server properties.
+.LP
+The resource manager is a database manager with a twist.
+In most database systems,
+you perform a query using an imprecise specification,
+and you get back a set of records.
+The resource manager, however, allows you to specify a large
+set of values with an imprecise specification, to query the database
+with a precise specification, and to get back only a single value.
+This should be used by applications that need to know what the
+user prefers for colors, fonts, and other resources.
+It is this use as a database for dealing with X resources that
+inspired the name ``Resource Manager,''
+although the resource manager can be and is used in other ways.
+.LP
+For example,
+a user of your application may want to specify
+that all windows should have a blue background
+but that all mail-reading windows should have a red background.
+With well-engineered and coordinated applications,
+a user can define this information using only two lines of specifications.
+.LP
+As an example of how the resource manager works,
+consider a mail-reading application called xmh.
+Assume that it is designed so that it uses a
+complex window hierarchy all the way down to individual command buttons,
+which may be actual small subwindows in some toolkits.
+These are often called objects or widgets.
+In such toolkit systems,
+each user interface object can be composed of other objects
+and can be assigned a name and a class.
+Fully qualified names or classes can have arbitrary numbers of component names,
+but a fully qualified name always has the same number of component names as a
+fully qualified class.
+This generally reflects the structure of the application as composed
+of these objects, starting with the application itself.
+.LP
+For example, the xmh mail program has a name ``xmh'' and is one
+of a class of ``Mail'' programs.
+By convention, the first character of class components is capitalized,
+and the first letter of name components is in lowercase.
+Each name and class finally has an attribute
+(for example, ``foreground'' or ``font'').
+If each window is properly assigned a name and class,
+it is easy for the user to specify attributes of any portion
+of the application.
+.LP
+At the top level,
+the application might consist of a paned window (that is, a window divided
+into several sections) named ``toc''.
+One pane of the paned window is a button box window named ``buttons''
+and is filled with command buttons.
+One of these command buttons is used to incorporate
+new mail and has the name ``incorporate''.
+This window has a fully qualified name, ``xmh.toc.buttons.incorporate'',
+and a fully qualified class, ``Xmh.Paned.Box.Command''.
+Its fully qualified name is the name of its parent, ``xmh.toc.buttons'',
+followed by its name, ``incorporate''.
+Its class is the class of its parent, ``Xmh.Paned.Box'',
+followed by its particular class, ``Command''.
+The fully qualified name of a resource is
+the attribute's name appended to the object's fully qualified
+name, and the fully qualified class is its class appended to the object's
+class.
+.LP
+The incorporate button might need the following resources:
+Title string,
+Font,
+Foreground color for its inactive state,
+Background color for its inactive state,
+Foreground color for its active state, and
+Background color for its active state.
+Each resource is considered
+to be an attribute of the button and, as such, has a name and a class.
+For example, the foreground color for the button in
+its active state might be named ``activeForeground'',
+and its class might be ``Foreground''.
+.LP
+When an application looks up a resource (for example, a color),
+it passes the complete name and complete class of the resource
+to a look-up routine.
+The resource manager compares this complete specification
+against the incomplete specifications of entries in the resource
+database, finds the best match, and returns the corresponding
+value for that entry.
+.LP
+The definitions for the resource manager are contained in
+.hN X11/Xresource.h .
+.NH 2
+Resource File Syntax
+.XS
+\*(SN Resource File Syntax
+.XE
+.LP
+The syntax of a resource file is a sequence of resource lines
+terminated by newline characters or the end of the file.
+The syntax of an individual resource line is:
+.LP
+.\" Start marker code here
+.Ds 0
+.TA 1.5i 1.75i
+.ta 1.5i 1.75i
+ResourceLine = Comment | IncludeFile | ResourceSpec | <empty line>
+Comment = "!" {<any character except null or newline>}
+IncludeFile = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace
+FileName = <valid filename for operating system>
+ResourceSpec = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value
+ResourceName = [Binding] {Component Binding} ComponentName
+Binding = "\&." | "*"
+WhiteSpace = {<space> | <horizontal tab>}
+Component = "?" | ComponentName
+ComponentName = NameChar {NameChar}
+NameChar = "a"\-"z" | "A"\-"Z" | "0"\-"9" | "_" | "-"
+Value = {<any character except null or unescaped newline>}
+.De
+.\" End marker code here
+.LP
+Elements separated by vertical bar (|) are alternatives.
+Curly braces ({\&.\&.\&.}) indicate zero or more repetitions
+of the enclosed elements.
+Square brackets ([\&.\&.\&.]) indicate that the enclosed element is optional.
+Quotes ("\&.\&.\&.") are used around literal characters.
+.LP
+IncludeFile lines are interpreted by replacing the line with the
+contents of the specified file.
+The word ``include'' must be in lowercase.
+The file name is interpreted relative to the directory of the file in
+which the line occurs (for example, if the file name contains no
+directory or contains a relative directory specification).
+.LP
+If a ResourceName contains a contiguous sequence of two or more Binding
+characters, the sequence will be replaced with a single ``\&.'' character
+if the sequence contains only ``\&.'' characters;
+otherwise, the sequence will be replaced with a single ``*'' character.
+.LP
+A resource database never contains more than one entry for a given
+ResourceName. If a resource file contains multiple lines with the
+same ResourceName, the last line in the file is used.
+.LP
+Any white space characters before or after the name or colon in a ResourceSpec
+are ignored.
+To allow a Value to begin with white space,
+the two-character sequence ``\^\\\^\fIspace\fP'' (backslash followed by space)
+is recognized and replaced by a space character,
+and the two-character sequence ``\^\\\^\fItab\fP''
+(backslash followed by horizontal tab)
+is recognized and replaced by a horizontal tab character.
+To allow a Value to contain embedded newline characters,
+the two-character sequence ``\^\\\^n'' is recognized and replaced by a
+newline character.
+To allow a Value to be broken across multiple lines in a text file,
+the two-character sequence ``\^\\\^\fInewline\fP''
+(backslash followed by newline) is
+recognized and removed from the value.
+To allow a Value to contain arbitrary character codes,
+the four-character sequence ``\^\\\^\fInnn\fP'',
+where each \fIn\fP is a digit character in the range of ``0''\^\-``7'',
+is recognized and replaced with a single byte that contains
+the octal value specified by the sequence.
+Finally, the two-character sequence ``\^\\\\'' is recognized
+and replaced with a single backslash.
+.LP
+As an example of these sequences,
+the following resource line contains a value consisting of four
+characters: a backslash, a null, a ``z'', and a newline:
+.Ds
+magic.values: \\\\\\\^000\^\\
+z\\\^n
+.De
+.NH 2
+Resource Manager Matching Rules
+.XS
+\*(SN Resource Manager Matching Rules
+.XE
+.LP
+The algorithm for determining which resource database entry
+matches a given query is the heart of the resource manager.
+All queries must fully specify the name and class of the desired resource
+(use of the characters ``*'' and ``?'' is not permitted).
+The library supports up to 100 components in a full name or class.
+Resources are stored in the database with only partially specified
+names and classes, using pattern matching constructs.
+An asterisk (*) is a loose binding and is used to represent any number
+of intervening components, including none.
+A period (.) is a tight binding and is used to separate immediately
+adjacent components.
+A question mark (?) is used to match any single component name or class.
+A database entry cannot end in a loose binding;
+the final component (which cannot be the character ``?'') must be specified.
+The lookup algorithm searches the database for the entry that most
+closely matches (is most specific for) the full name and class being queried.
+When more than one database entry matches the full name and class,
+precedence rules are used to select just one.
+.LP
+The full name and class are scanned from left to right (from highest
+level in the hierarchy to lowest), one component at a time.
+At each level, the corresponding component and/or binding of each
+matching entry is determined, and these matching components and
+bindings are compared according to precedence rules.
+Each of the rules is applied at each level before moving to the next level,
+until a rule selects a single entry over all others.
+The rules, in order of precedence, are:
+.IP 1. 5
+An entry that contains a matching component (whether name, class,
+or the character ``?'')
+takes precedence over entries that elide the level (that is, entries
+that match the level in a loose binding).
+.IP 2. 5
+An entry with a matching name takes precedence over both
+entries with a matching class and entries that match using the character ``?''.
+An entry with a matching class takes precedence over
+entries that match using the character ``?''.
+.IP 3. 5
+An entry preceded by a tight binding takes precedence over entries
+preceded by a loose binding.
+.LP
+To illustrate these rules,
+consider the following resource database entries:
+.Ds
+.TA 2.5i 3.5i
+.ta 2.5i 3.5i
+xmh*Paned*activeForeground: red \fI(entry A)\fP
+*incorporate.Foreground: blue \fI(entry B)\fP
+xmh.toc*Command*activeForeground: green \fI(entry C)\fP
+xmh.toc*?.Foreground: white \fI(entry D)\fP
+xmh.toc*Command.activeForeground: black \fI(entry E)\fP
+.De
+.LP
+Consider a query for the resource:
+.LP
+.Ds
+.TA 3.5i
+.ta 3.5i
+xmh.toc.messagefunctions.incorporate.activeForeground \fI(name)\fP
+Xmh.Paned.Box.Command.Foreground \fI(class)\fP
+.De
+.LP
+At the first level (xmh, Xmh), rule 1 eliminates entry B.
+At the second level (toc, Paned), rule 2 eliminates entry A.
+At the third level (messagefunctions, Box), no entries are eliminated.
+At the fourth level (incorporate, Command), rule 2 eliminates entry D.
+At the fifth level (activeForeground, Foreground), rule 3 eliminates entry C.
+.NH 2
+Quarks
+.XS
+\*(SN Quarks
+.XE
+.LP
+Most uses of the resource manager involve defining names,
+classes, and representation types as string constants.
+However, always referring to strings in the resource manager can be slow,
+because it is so heavily used in some toolkits.
+To solve this problem,
+a shorthand for a string is used in place of the string
+in many of the resource manager functions.
+Simple comparisons can be performed rather than string comparisons.
+The shorthand name for a string is called a quark and is the
+type
+.PN XrmQuark .
+On some occasions,
+you may want to allocate a quark that has no string equivalent.
+.LP
+A quark is to a string what an atom is to a string in the server,
+but its use is entirely local to your application.
+.LP
+.sp
+To allocate a new quark, use
+.PN XrmUniqueQuark .
+.IN "XrmUniqueQuark" "" "@DEF@"
+.sM
+.FD 0
+XrmQuark XrmUniqueQuark\^(\|)
+.FN
+.LP
+.eM
+The
+.PN XrmUniqueQuark
+function allocates a quark that is guaranteed not to represent any string that
+is known to the resource manager.
+.LP
+.sp
+Each name, class, and representation type is typedef'd as an
+.PN XrmQuark .
+.LP
+.sM
+.Ds 0
+typedef int XrmQuark, *XrmQuarkList;
+typedef XrmQuark XrmName;
+typedef XrmQuark XrmClass;
+typedef XrmQuark XrmRepresentation;
+#define NULLQUARK ((XrmQuark) 0)
+.De
+.LP
+.eM
+Lists are represented as null-terminated arrays of quarks.
+The size of the array must be large enough for the number of components used.
+.LP
+.sM
+.Ds 0
+typedef XrmQuarkList XrmNameList;
+typedef XrmQuarkList XrmClassList;
+.De
+.LP
+.eM
+.sp
+To convert a string to a quark, use
+.PN XrmStringToQuark
+or
+.PN XrmPermStringToQuark .
+.IN "XrmStringToQuark" "" "@DEF@"
+.IN "XrmPermStringToQuark" "" "@DEF@"
+.sM
+.FD 0
+#define XrmStringToName(string) XrmStringToQuark(string)
+#define XrmStringToClass(string) XrmStringToQuark(string)
+#define XrmStringToRepresentation(string) XrmStringToQuark(string)
+.sp
+XrmQuark XrmStringToQuark\^(\^\fIstring\fP\^)
+.br
+ char *\fIstring\fP\^;
+.sp
+XrmQuark XrmPermStringToQuark\^(\^\fIstring\fP\^)
+.br
+ char *\fIstring\fP\^;
+.FN
+.ds Ql
+.IP \fIstring\fP 1i
+Specifies the string for which a quark\*(Ql is to be allocated.
+.LP
+.eM
+These functions can be used to convert from string to quark representation.
+If the string is not in the Host Portable Character Encoding,
+the conversion is implementation-dependent.
+The string argument to
+.PN XrmStringToQuark
+need not be permanently allocated storage.
+.PN XrmPermStringToQuark
+is just like
+.PN XrmStringToQuark ,
+except that Xlib is permitted to assume the string argument is permanently
+allocated,
+and, hence, that it can be used as the value to be returned by
+.PN XrmQuarkToString .
+.LP
+For any given quark, if
+.PN XrmStringToQuark
+returns a non-NULL value,
+all future calls will return the same value (identical address).
+.LP
+.sp
+To convert a quark to a string, use
+.PN XrmQuarkToString .
+.IN "XrmQuarkToString" "" "@DEF@"
+.sM
+.FD 0
+#define XrmNameToString(name) XrmQuarkToString(name)
+#define XrmClassToString(class) XrmQuarkToString(class)
+#define XrmRepresentationToString(type) XrmQuarkToString(type)
+.sp
+char *XrmQuarkToString\^(\^\fIquark\fP\^)
+.br
+ XrmQuark \fIquark\fP\^;
+.FN
+.IP \fIquark\fP 1i
+Specifies the quark for which the equivalent string is desired.
+.LP
+.eM
+These functions can be used to convert from quark representation to string.
+The string pointed to by the return value must not be modified or freed.
+The returned string is byte-for-byte equal to the original
+string passed to one of the string-to-quark routines.
+If no string exists for that quark,
+.PN XrmQuarkToString
+returns NULL.
+For any given quark, if
+.PN XrmQuarkToString
+returns a non-NULL value,
+all future calls will return the same value (identical address).
+.LP
+.sp
+To convert a string with one or more components to a quark list, use
+.PN XrmStringToQuarkList .
+.IN "XrmStringToQuarkList" "" "@DEF@"
+.sM
+.FD 0
+#define XrmStringToNameList(str, name) XrmStringToQuarkList((str), (name))
+#define XrmStringToClassList(str, class) XrmStringToQuarkList((str), (class))
+.sp
+void XrmStringToQuarkList\^(\^\fIstring\fP, \fIquarks_return\fP\^)
+.br
+ char *\fIstring\fP\^;
+.br
+ XrmQuarkList \fIquarks_return\fP\^;
+.FN
+.ds Ql \ list
+.IP \fIstring\fP 1i
+Specifies the string for which a quark\*(Ql is to be allocated.
+.IP \fIquarks_return\fP 1i
+Returns the list of quarks.
+The caller must allocate sufficient space for the quarks list before calling
+.PN XrmStringToQuarkList .
+.LP
+.eM
+The
+.PN XrmStringToQuarkList
+function converts the null-terminated string (generally a fully qualified name)
+to a list of quarks.
+Note that the string must be in the valid ResourceName format
+(see section 15.1).
+If the string is not in the Host Portable Character Encoding,
+the conversion is implementation-dependent.
+.LP
+A binding list is a list of type
+.PN XrmBindingList
+and indicates if components of name or class lists are bound tightly or loosely
+(that is, if wildcarding of intermediate components is specified).
+.LP
+.Ds 0
+typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
+.De
+.LP
+.PN XrmBindTightly
+indicates that a period separates the components, and
+.PN XrmBindLoosely
+indicates that an asterisk separates the components.
+.LP
+.sp
+To convert a string with one or more components to a binding list
+and a quark list, use
+.PN XrmStringToBindingQuarkList .
+.IN "XrmStringToBindingQuarkList" "" "@DEF@"
+.sM
+.FD 0
+XrmStringToBindingQuarkList\^(\^\fIstring\fP, \fIbindings_return\fP, \
+\fIquarks_return\fP\^)
+.br
+ char *\fIstring\fP\^;
+.br
+ XrmBindingList \fIbindings_return\fP\^;
+.br
+ XrmQuarkList \fIquarks_return\fP\^;
+.FN
+.ds Ql \ list
+.IP \fIstring\fP 1i
+Specifies the string for which a quark\*(Ql is to be allocated.
+.IP \fIbindings_return\fP 1i
+Returns the binding list.
+The caller must allocate sufficient space for the binding list before calling
+.PN XrmStringToBindingQuarkList .
+.IP \fIquarks_return\fP 1i
+Returns the list of quarks.
+The caller must allocate sufficient space for the quarks list before calling
+.PN XrmStringToBindingQuarkList .
+.LP
+.eM
+Component names in the list are separated by a period or
+an asterisk character.
+The string must be in the format of a valid ResourceName (see section 15.1).
+If the string does not start with a period or an asterisk,
+a tight binding is assumed.
+For example, the string ``*a.b*c'' becomes:
+.LP
+.Ds 0
+.TA .75i 1.5i 2.25i
+.ta .75i 1.5i 2.25i
+quarks: a b c
+bindings: loose tight loose
+.De
+.NH 2
+Creating and Storing Databases
+.XS
+\*(SN Creating and Storing Databases
+.XE
+.LP
+.IN "XrmDatabase" "" "@DEF@"
+A resource database is an opaque type,
+.PN XrmDatabase .
+Each database value is stored in an
+.PN XrmValue
+structure.
+This structure consists of a size, an address, and a representation type.
+The size is specified in bytes.
+The representation type is a way for you to store data tagged by some
+application-defined type (for example, the strings ``font'' or ``color'').
+It has nothing to do with the C data type or with its class.
+The
+.PN XrmValue
+structure is defined as:
+.LP
+.IN "XrmValue" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ unsigned int size;
+ XPointer addr;
+} XrmValue, *XrmValuePtr;
+.De
+.LP
+.eM
+.sp
+To initialize the resource manager, use
+.PN XrmInitialize .
+.IN "XrmInitialize" "" "@DEF@"
+.sM
+.FD 0
+void XrmInitialize\^(\|);
+.FN
+.LP
+.eM
+To retrieve a database from disk, use
+.PN XrmGetFileDatabase .
+.IN "XrmGetFileDatabase" "" "@DEF@"
+.sM
+.FD 0
+XrmDatabase XrmGetFileDatabase\^(\^\fIfilename\fP\^)
+.br
+ char *\fIfilename\fP\^;
+.FN
+.IP \fIfilename\fP 1i
+Specifies the resource database file name.
+.LP
+.eM
+The
+.PN XrmGetFileDatabase
+function opens the specified file,
+creates a new resource database, and loads it with the specifications
+read in from the specified file.
+The specified file should contain a sequence of entries in valid ResourceLine
+format (see section 15.1); the database that results from reading a file
+with incorrect syntax is implementation-dependent.
+The file is parsed in the current locale,
+and the database is created in the current locale.
+If it cannot open the specified file,
+.PN XrmGetFileDatabase
+returns NULL.
+.LP
+.sp
+To store a copy of a database to disk, use
+.PN XrmPutFileDatabase .
+.IN "XrmPutFileDatabase" "" "@DEF@"
+.sM
+.FD 0
+void XrmPutFileDatabase\^(\^\fIdatabase\fP, \fIstored_db\fP\^)
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.br
+ char *\fIstored_db\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the database that is to be used.
+.IP \fIstored_db\fP 1i
+Specifies the file name for the stored database.
+.LP
+.eM
+The
+.PN XrmPutFileDatabase
+function stores a copy of the specified database in the specified file.
+Text is written to the file as a sequence of entries in valid
+ResourceLine format (see section 15.1).
+The file is written in the locale of the database.
+Entries containing resource names that are not in the Host Portable Character
+Encoding or containing values that are not in the encoding of the database
+locale, are written in an implementation-dependent manner.
+The order in which entries are written is implementation-dependent.
+Entries with representation types other than ``String'' are ignored.
+.LP
+.sp
+To obtain a pointer to the screen-independent resources of a display, use
+.PN XResourceManagerString .
+.IN "XResourceManagerString" "" "@DEF@"
+.sM
+.FD 0
+char *XResourceManagerString\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XResourceManagerString
+function returns the RESOURCE_MANAGER property from the server's root
+window of screen zero, which was returned when the connection was opened using
+.PN XOpenDisplay .
+The property is converted from type STRING to the current locale.
+The conversion is identical to that produced by
+.PN XmbTextPropertyToTextList
+for a single element STRING property.
+The returned string is owned by Xlib and should not be freed by the client.
+The property value must be in a format that is acceptable to
+.PN XrmGetStringDatabase .
+If no property exists, NULL is returned.
+.LP
+.sp
+To obtain a pointer to the screen-specific resources of a screen, use
+.PN XScreenResourceString .
+.IN "XScreenResourceString" "" "@DEF@"
+.sM
+.FD 0
+char *XScreenResourceString\^(\^\fIscreen\fP\^)
+.br
+ Screen *\fIscreen\fP\^;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the screen.
+.LP
+.eM
+The
+.PN XScreenResourceString
+function returns the SCREEN_RESOURCES property from the root window of the
+specified screen.
+The property is converted from type STRING to the current locale.
+The conversion is identical to that produced by
+.PN XmbTextPropertyToTextList
+for a single element STRING property.
+The property value must be in a format that is acceptable to
+.PN XrmGetStringDatabase .
+If no property exists, NULL is returned.
+The caller is responsible for freeing the returned string by using
+.PN XFree .
+.LP
+.sp
+To create a database from a string, use
+.PN XrmGetStringDatabase .
+.IN "XrmGetStringDatabase" "" "@DEF@"
+.sM
+.FD 0
+XrmDatabase XrmGetStringDatabase\^(\^\fIdata\fP\^)
+.br
+ char *\fIdata\fP\^;
+.FN
+.IP \fIdata\fP 1i
+Specifies the database contents using a string.
+.LP
+.eM
+The
+.PN XrmGetStringDatabase
+function creates a new database and stores the resources specified
+in the specified null-terminated string.
+.PN XrmGetStringDatabase
+is similar to
+.PN XrmGetFileDatabase
+except that it reads the information out of a string instead of out of a file.
+The string should contain a sequence of entries in valid ResourceLine
+format (see section 15.1) terminated by a null character;
+the database that results from using a string
+with incorrect syntax is implementation-dependent.
+The string is parsed in the current locale,
+and the database is created in the current locale.
+.LP
+.sp
+To obtain the locale name of a database, use
+.PN XrmLocaleOfDatabase .
+.IN "XrmLocaleOfDatabase" "" "@DEF@"
+.sM
+.FD 0
+char *XrmLocaleOfDatabase\^(\^\fIdatabase\fP\^)
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.LP
+.eM
+The
+.PN XrmLocaleOfDatabase
+function returns the name of the locale bound to the specified
+database, as a null-terminated string.
+The returned locale name string is owned by Xlib and should not be
+modified or freed by the client.
+Xlib is not permitted to free the string until the database is destroyed.
+Until the string is freed,
+it will not be modified by Xlib.
+.LP
+.sp
+To destroy a resource database and free its allocated memory, use
+.PN XrmDestroyDatabase .
+.IN "XrmDestroyDatabase" "" "@DEF@"
+.sM
+.FD 0
+void XrmDestroyDatabase\^(\^\fIdatabase\fP\^)
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.LP
+.eM
+If database is NULL,
+.PN XrmDestroyDatabase
+returns immediately.
+.LP
+.sp
+To associate a resource database with a display, use
+.PN XrmSetDatabase .
+.IN "XrmSetDatabase" "" "@DEF@"
+.sM
+.FD 0
+void XrmSetDatabase\^(\^\fIdisplay\fP\^, \fIdatabase\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.LP
+.eM
+The
+.PN XrmSetDatabase
+function associates the specified resource database (or NULL)
+with the specified display.
+The database previously associated with the display (if any) is not destroyed.
+A client or toolkit may find this function convenient for retaining a database
+once it is constructed.
+.LP
+.sp
+To get the resource database associated with a display, use
+.PN XrmGetDatabase .
+.IN "XrmGetDatabase" "" "@DEF@"
+.sM
+.FD 0
+XrmDatabase XrmGetDatabase\^(\^\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XrmGetDatabase
+function returns the database associated with the specified display.
+It returns NULL if a database has not yet been set.
+.NH 2
+Merging Resource Databases
+.XS
+\*(SN Merging Resource Databases
+.XE
+.LP
+To merge the contents of a resource file into a database, use
+.PN XrmCombineFileDatabase .
+.IN "XrmCombineFileDatabase" "" "@DEF@"
+.sM
+.FD 0
+Status XrmCombineFileDatabase(\^\fIfilename\fP, \fItarget_db\fP, \fIoverride\fP\^)
+.br
+ char *\fIfilename\fP;
+.br
+ XrmDatabase *\fItarget_db\fP\^;
+.br
+ Bool \fIoverride\fP;
+.FN
+.IP \fIfilename\fP 1i
+Specifies the resource database file name.
+.IP \fItarget_db\fP 1i
+Specifies the resource database into which the source
+database is to be merged.
+.IP \fIoverride\fP 1i
+Specifies whether source entries override target ones.
+.LP
+.eM
+The
+.PN XrmCombineFileDatabase
+function merges the contents of a resource file into a database.
+If the same specifier is used for an entry in both the file and
+the database,
+the entry in the file will replace the entry in the database
+if override is
+.PN True ;
+otherwise, the entry in the file is discarded.
+The file is parsed in the current locale.
+If the file cannot be read,
+a zero status is returned;
+otherwise, a nonzero status is returned.
+If target_db contains NULL,
+.PN XrmCombineFileDatabase
+creates and returns a new database to it.
+Otherwise, the database pointed to by target_db is not destroyed by the merge.
+The database entries are merged without changing values or types,
+regardless of the locale of the database.
+The locale of the target database is not modified.
+.LP
+.sp
+To merge the contents of one database into another database, use
+.PN XrmCombineDatabase .
+.IN "XrmCombineDatabase" "" "@DEF@"
+.sM
+.FD 0
+void XrmCombineDatabase(\^\fIsource_db\fP, \fItarget_db\fP, \fIoverride\fP\^)
+.br
+ XrmDatabase \fIsource_db\fP, *\fItarget_db\fP\^;
+.br
+ Bool \fIoverride\fP;
+.FN
+.IP \fIsource_db\fP 1i
+Specifies the resource database that is to be merged into the target database.
+.IP \fItarget_db\fP 1i
+Specifies the resource database into which the source
+database is to be merged.
+.IP \fIoverride\fP 1i
+Specifies whether source entries override target ones.
+.LP
+.eM
+The
+.PN XrmCombineDatabase
+function merges the contents of one database into another.
+If the same specifier is used for an entry in both databases,
+the entry in the source_db will replace the entry in the target_db
+if override is
+.PN True ;
+otherwise, the entry in source_db is discarded.
+If target_db contains NULL,
+.PN XrmCombineDatabase
+simply stores source_db in it.
+Otherwise, source_db is destroyed by the merge, but the database pointed
+to by target_db is not destroyed.
+The database entries are merged without changing values or types,
+regardless of the locales of the databases.
+The locale of the target database is not modified.
+.LP
+.sp
+To merge the contents of one database into another database with override
+semantics, use
+.PN XrmMergeDatabases .
+.IN "XrmMergeDatabases" "" "@DEF@"
+.sM
+.FD 0
+void XrmMergeDatabases(\^\fIsource_db\fP, \fItarget_db\fP\^)
+.br
+ XrmDatabase \fIsource_db\fP, *\fItarget_db\fP\^;
+.FN
+.IP \fIsource_db\fP 1i
+Specifies the resource database that is to be merged into the target database.
+.IP \fItarget_db\fP 1i
+Specifies the resource database into which the source
+database is to be merged.
+.LP
+.eM
+Calling the
+.PN XrmMergeDatabases
+function is equivalent to calling the
+.PN XrmCombineDatabase
+function with an override argument of
+.PN True .
+.NH 2
+Looking Up Resources
+.XS
+\*(SN Looking Up Resources
+.XE
+.LP
+To retrieve a resource from a resource database, use
+.PN XrmGetResource ,
+.PN XrmQGetResource ,
+or
+.PN XrmQGetSearchResource .
+.LP
+.sp
+.IN "XrmGetResource" "" "@DEF@"
+.sM
+.FD 0
+Bool XrmGetResource\^(\^\fIdatabase\fP, \fIstr_name\fP, \fIstr_class\fP, \
+\fIstr_type_return\fP, \fIvalue_return\fP\^)
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.br
+ char *\fIstr_name\fP\^;
+.br
+ char *\fIstr_class\fP\^;
+.br
+ char **\fIstr_type_return\fP\^;
+.br
+ XrmValue *\fIvalue_return\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the database that is to be used.
+.IP \fIstr_name\fP 1i
+Specifies the fully qualified name of the value being retrieved (as a string).
+.IP \fIstr_class\fP 1i
+Specifies the fully qualified class of the value being retrieved (as a string).
+.IP \fIstr_type_return\fP 1i
+Returns the representation type of the destination (as a string).
+.IP \fIvalue_return\fP 1i
+Returns the value in the database.
+.LP
+.eM
+.sp
+.IN "XrmQGetResource" "" "@DEF@"
+.sM
+.FD 0
+Bool XrmQGetResource\^(\^\fIdatabase\fP, \fIquark_name\fP, \fIquark_class\fP, \
+\fIquark_type_return\fP, \fIvalue_return\fP\^)
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.br
+ XrmNameList \fIquark_name\fP\^;
+.br
+ XrmClassList \fIquark_class\fP\^;
+.br
+ XrmRepresentation *\fIquark_type_return\fP\^;
+.br
+ XrmValue *\fIvalue_return\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the database that is to be used.
+.IP \fIquark_name\fP 1i
+Specifies the fully qualified name of the value being retrieved (as a quark).
+.IP \fIquark_class\fP 1i
+Specifies the fully qualified class of the value being retrieved (as a quark).
+.IP \fIquark_type_return\fP 1i
+Returns the representation type of the destination (as a quark).
+.IP \fIvalue_return\fP 1i
+Returns the value in the database.
+.LP
+.eM
+The
+.PN XrmGetResource
+and
+.PN XrmQGetResource
+functions retrieve a resource from the specified database.
+Both take a fully qualified name/class pair, a destination
+resource representation, and the address of a value
+(size/address pair).
+The value and returned type point into database memory;
+therefore, you must not modify the data.
+.LP
+The database only frees or overwrites entries on
+.PN XrmPutResource ,
+.PN XrmQPutResource ,
+or
+.PN XrmMergeDatabases .
+A client that is not storing new values into the database or
+is not merging the database should be safe using the address passed
+back at any time until it exits.
+If a resource was found, both
+.PN XrmGetResource
+and
+.PN XrmQGetResource
+return
+.PN True ;
+otherwise, they return
+.PN False .
+.LP
+.sp
+.EQ
+delim %%
+.EN
+Most applications and toolkits do not make random probes
+into a resource database to fetch resources.
+The X toolkit access pattern for a resource database is quite stylized.
+A series of from 1 to 20 probes is made with only the
+last name/class differing in each probe.
+The
+.PN XrmGetResource
+function is at worst a %2 sup n% algorithm,
+where \fIn\fP is the length of the name/class list.
+This can be improved upon by the application programmer by prefetching a list
+of database levels that might match the first part of a name/class list.
+.LP
+.sp
+To obtain a list of database levels, use
+.PN XrmQGetSearchList .
+.IN "XrmQGetSearchList" "" "@DEF@"
+.sM
+.FD 0
+typedef XrmHashTable *XrmSearchList;
+.sp
+Bool XrmQGetSearchList\^(\^\fIdatabase\fP, \fInames\fP, \fIclasses\fP, \
+\fIlist_return\fP, \fIlist_length\fP\^)
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.br
+ XrmNameList \fInames\fP\^;
+.br
+ XrmClassList \fIclasses\fP\^;
+.br
+ XrmSearchList \fIlist_return\fP\^;
+.br
+ int \fIlist_length\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the database that is to be used.
+.IP \fInames\fP 1i
+Specifies a list of resource names.
+.IP \fIclasses\fP 1i
+Specifies a list of resource classes.
+.IP \fIlist_return\fP 1i
+Returns a search list for further use.
+The caller must allocate sufficient space for the list before calling
+.PN XrmQGetSearchList .
+.IP \fIlist_length\fP 1i
+Specifies the number of entries (not the byte size) allocated for list_return.
+.LP
+.eM
+The
+.PN XrmQGetSearchList
+function takes a list of names and classes
+and returns a list of database levels where a match might occur.
+The returned list is in best-to-worst order and
+uses the same algorithm as
+.PN XrmGetResource
+for determining precedence.
+If list_return was large enough for the search list,
+.PN XrmQGetSearchList
+returns
+.PN True ;
+otherwise, it returns
+.PN False .
+.LP
+The size of the search list that the caller must allocate is
+dependent upon the number of levels and wildcards in the resource specifiers
+that are stored in the database.
+The worst case length is %3 sup n%,
+where \fIn\fP is the number of name or class components in names or classes.
+.LP
+When using
+.PN XrmQGetSearchList
+followed by multiple probes for resources with a common name and class prefix,
+only the common prefix should be specified in the name and class list to
+.PN XrmQGetSearchList .
+.LP
+.sp
+To search resource database levels for a given resource, use
+.PN XrmQGetSearchResource .
+.IN "XrmQGetSearchResource" "" "@DEF@"
+.sM
+.FD 0
+Bool XrmQGetSearchResource\^(\^\fIlist\fP, \fIname\fP, \fIclass\fP, \
+\fItype_return\fP, \fIvalue_return\fP\^)
+.br
+ XrmSearchList \fIlist\fP\^;
+.br
+ XrmName \fIname\fP\^;
+.br
+ XrmClass \fIclass\fP\^;
+.br
+ XrmRepresentation *\fItype_return\fP\^;
+.br
+ XrmValue *\fIvalue_return\fP\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies the search list returned by
+.PN XrmQGetSearchList .
+.IP \fIname\fP 1i
+Specifies the resource name.
+.IP \fIclass\fP 1i
+Specifies the resource class.
+.IP \fItype_return\fP 1i
+Returns data representation type.
+.IP \fIvalue_return\fP 1i
+Returns the value in the database.
+.LP
+.eM
+The
+.PN XrmQGetSearchResource
+function searches the specified database levels for the resource
+that is fully identified by the specified name and class.
+The search stops with the first match.
+.PN XrmQGetSearchResource
+returns
+.PN True
+if the resource was found;
+otherwise, it returns
+.PN False .
+.LP
+A call to
+.PN XrmQGetSearchList
+with a name and class list containing all but the last component
+of a resource name followed by a call to
+.PN XrmQGetSearchResource
+with the last component name and class returns the same database entry as
+.PN XrmGetResource
+and
+.PN XrmQGetResource
+with the fully qualified name and class.
+.NH 2
+Storing into a Resource Database
+.XS
+\*(SN Storing into a Resource Database
+.XE
+.LP
+To store resources into the database, use
+.PN XrmPutResource
+or
+.PN XrmQPutResource .
+Both functions take a partial resource specification, a
+representation type, and a value.
+This value is copied into the specified database.
+.LP
+.sp
+.IN "XrmPutResource" "" "@DEF@"
+.sM
+.FD 0
+void XrmPutResource\^(\^\fIdatabase\fP, \fIspecifier\fP, \fItype\fP, \fIvalue\fP\^)
+.br
+ XrmDatabase *\fIdatabase\fP\^;
+.br
+ char *\fIspecifier\fP\^;
+.br
+ char *\fItype\fP\^;
+.br
+ XrmValue *\fIvalue\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIspecifier\fP 1i
+Specifies a complete or partial specification of the resource.
+.IP \fItype\fP 1i
+Specifies the type of the resource.
+.IP \fIvalue\fP 1i
+Specifies the value of the resource, which is specified as a string.
+.LP
+.eM
+If database contains NULL,
+.PN XrmPutResource
+creates a new database and returns a pointer to it.
+.PN XrmPutResource
+is a convenience function that calls
+.PN XrmStringToBindingQuarkList
+followed by:
+.LP
+.Ds
+XrmQPutResource(database, bindings, quarks, XrmStringToQuark(type), value)
+.De
+If the specifier and type are not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+The value is stored in the database without modification.
+.LP
+.sp
+.IN "XrmQPutResource" "" "@DEF@"
+.sM
+.FD 0
+void XrmQPutResource\^(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP, \
+\fItype\fP, \fIvalue\fP\^)
+.br
+ XrmDatabase *\fIdatabase\fP\^;
+.br
+ XrmBindingList \fIbindings\fP\^;
+.br
+ XrmQuarkList \fIquarks\fP\^;
+.br
+ XrmRepresentation \fItype\fP\^;
+.br
+ XrmValue *\fIvalue\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIbindings\fP 1i
+Specifies a list of bindings.
+.IP \fIquarks\fP 1i
+Specifies the complete or partial name or the class list of the resource.
+.IP \fItype\fP 1i
+Specifies the type of the resource.
+.IP \fIvalue\fP 1i
+Specifies the value of the resource, which is specified as a string.
+.LP
+.eM
+If database contains NULL,
+.PN XrmQPutResource
+creates a new database and returns a pointer to it.
+If a resource entry with the identical bindings and quarks already
+exists in the database, the previous type and value are replaced by the new
+specified type and value.
+The value is stored in the database without modification.
+.LP
+.sp
+To add a resource that is specified as a string, use
+.PN XrmPutStringResource .
+.IN "XrmPutStringResource" "" "@DEF@"
+.sM
+.FD 0
+void XrmPutStringResource\^(\^\fIdatabase\fP, \fIspecifier\fP, \fIvalue\fP\^)
+.br
+ XrmDatabase *\fIdatabase\fP\^;
+.br
+ char *\fIspecifier\fP\^;
+.br
+ char *\fIvalue\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIspecifier\fP 1i
+Specifies a complete or partial specification of the resource.
+.IP \fIvalue\fP 1i
+Specifies the value of the resource, which is specified as a string.
+.LP
+.eM
+If database contains NULL,
+.PN XrmPutStringResource
+creates a new database and returns a pointer to it.
+.PN XrmPutStringResource
+adds a resource with the specified value to the specified database.
+.PN XrmPutStringResource
+is a convenience function that first calls
+.PN XrmStringToBindingQuarkList
+on the specifier and then calls
+.PN XrmQPutResource ,
+using a ``String'' representation type.
+If the specifier is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+The value is stored in the database without modification.
+.LP
+.sp
+To add a string resource using quarks as a specification, use
+.PN XrmQPutStringResource .
+.IN "XrmQPutStringResource" "" "@DEF@"
+.sM
+.FD 0
+void XrmQPutStringResource\^(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP, \
+\fIvalue\fP\^)
+.br
+ XrmDatabase *\fIdatabase\fP\^;
+.br
+ XrmBindingList \fIbindings\fP\^;
+.br
+ XrmQuarkList \fIquarks\fP\^;
+.br
+ char *\fIvalue\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIbindings\fP 1i
+Specifies a list of bindings.
+.IP \fIquarks\fP 1i
+Specifies the complete or partial name or the class list of the resource.
+.IP \fIvalue\fP 1i
+Specifies the value of the resource, which is specified as a string.
+.LP
+.eM
+If database contains NULL,
+.PN XrmQPutStringResource
+creates a new database and returns a pointer to it.
+.PN XrmQPutStringResource
+is a convenience routine that constructs an
+.PN XrmValue
+for the value string (by calling
+.PN strlen
+to compute the size) and
+then calls
+.PN XrmQPutResource ,
+using a ``String'' representation type.
+The value is stored in the database without modification.
+.LP
+.sp
+To add a single resource entry that is specified as a string that contains
+both a name and a value, use
+.PN XrmPutLineResource .
+.IN "XrmPutLineResource" "" "@DEF@"
+.sM
+.FD 0
+void XrmPutLineResource\^(\^\fIdatabase\fP, \fIline\fP\^)
+.br
+ XrmDatabase *\fIdatabase\fP\^;
+.br
+ char *\fIline\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIline\fP 1i
+Specifies the resource name and value pair as a single string.
+.LP
+.eM
+If database contains NULL,
+.PN XrmPutLineResource
+creates a new database and returns a pointer to it.
+.PN XrmPutLineResource
+adds a single resource entry to the specified database.
+The line should be in valid ResourceLine format (see section 15.1)
+terminated by a newline or null character;
+the database that results from using a string
+with incorrect syntax is implementation-dependent.
+The string is parsed in the locale of the database.
+If the
+.PN ResourceName
+is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Note that comment lines are not stored.
+.NH 2
+Enumerating Database Entries
+.XS
+\*(SN Enumerating Database Entries
+.XE
+.LP
+To enumerate the entries of a database, use
+.PN XrmEnumerateDatabase .
+.IN "XrmEnumerateDatabase" "" "@DEF@"
+.sM
+.TS
+lw(.5i) lw(2i) lw(2.5i).
+T{
+#define
+T} T{
+.PN XrmEnumAllLevels
+T} T{
+0
+T}
+T{
+#define
+T} T{
+.PN XrmEnumOneLevel
+T} T{
+1
+T}
+.TE
+.FD 0
+Bool XrmEnumerateDatabase\^(\^\fIdatabase\fP, \fIname_prefix\fP, \fIclass_prefix\fP, \fImode\fP, \fIproc\fP, \fIarg\fP\^)
+.br
+ XrmDatabase \fIdatabase\fP\^;
+.br
+ XrmNameList \fIname_prefix\fP\^;
+.br
+ XrmClassList \fIclass_prefix\fP\^;
+.br
+ int \fImode\fP\^;
+.br
+ Bool (\^*\fIproc\fP\^)\^(\^)\^;
+.br
+ XPointer \fIarg\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIname_prefix\fP 1i
+Specifies the resource name prefix.
+.IP \fIclass_prefix\fP 1i
+Specifies the resource class prefix.
+.IP \fImode\fP 1i
+Specifies the number of levels to enumerate.
+.IP \fIproc\fP 1i
+Specifies the procedure that is to be called for each matching entry.
+.IP \fIarg\fP 1i
+Specifies the user-supplied argument that will be passed to the procedure.
+.LP
+.eM
+The
+.PN XrmEnumerateDatabase
+function calls the specified procedure for each resource in the database
+that would match some completion of the given name/class resource prefix.
+The order in which resources are found is implementation-dependent.
+If mode is
+.PN XrmEnumOneLevel ,
+a resource must match the given name/class prefix with
+just a single name and class appended. If mode is
+.PN XrmEnumAllLevels ,
+the resource must match the given name/class prefix with one or more names and
+classes appended.
+If the procedure returns
+.PN True ,
+the enumeration terminates and the function returns
+.PN True .
+If the procedure always returns
+.PN False ,
+all matching resources are enumerated and the function returns
+.PN False .
+.LP
+The procedure is called with the following arguments:
+.LP
+.\" Start marker code here
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+(*\fIproc\fP\^)(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP, \fItype\fP, \fIvalue\fP, \fIarg\fP\^)
+ XrmDatabase *\fIdatabase\fP\^;
+ XrmBindingList \fIbindings\fP\^;
+ XrmQuarkList \fIquarks\fP\^;
+ XrmRepresentation *\fItype\fP\^;
+ XrmValue *\fIvalue\fP\^;
+ XPointer \fIarg\fP\^;
+.De
+.\" End marker code here
+.LP
+The bindings and quarks lists are terminated by
+.PN NULLQUARK .
+Note that pointers
+to the database and type are passed, but these values should not be modified.
+.LP
+The procedure must not modify the database.
+If Xlib has been initialized for threads, the procedure is called with
+the database locked and the result of a call by the procedure to any
+Xlib function using the same database is not defined.
+.NH 2
+Parsing Command Line Options
+.XS
+\*(SN Parsing Command Line Options
+.XE
+.LP
+The
+.PN XrmParseCommand
+function can be used to parse the command line arguments to a program
+and modify a resource database with selected entries from the command line.
+.LP
+.IN "XrmOptionKind" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef enum {
+ XrmoptionNoArg, /* Value is specified in XrmOptionDescRec.value */
+ XrmoptionIsArg, /* Value is the option string itself */
+ XrmoptionStickyArg, /* Value is characters immediately following option */
+ XrmoptionSepArg, /* Value is next argument in argv */
+ XrmoptionResArg, /* Resource and value in next argument in argv */
+ XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
+ XrmoptionSkipLine, /* Ignore this option and the rest of argv */
+ XrmoptionSkipNArgs /* Ignore this option and the next
+ \ \ \ XrmOptionDescRec.value arguments in argv */
+} XrmOptionKind;
+.De
+.LP
+.eM
+Note that
+.PN XrmoptionSkipArg
+is equivalent to
+.PN XrmoptionSkipNArgs
+with the
+.PN XrmOptionDescRec.value
+field containing the value one.
+Note also that the value zero for
+.PN XrmoptionSkipNArgs
+indicates that only the option itself is to be skipped.
+.LP
+.IN "XrmOptionDescRec" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ char *option; /* Option specification string in argv */
+ char *specifier; /* Binding and resource name (sans application name) */
+ XrmOptionKind argKind; /* Which style of option it is */
+ XPointer value; /* Value to provide if XrmoptionNoArg or
+ \ \ \ XrmoptionSkipNArgs */
+} XrmOptionDescRec, *XrmOptionDescList;
+.De
+.LP
+.eM
+.sp
+To load a resource database from a C command line, use
+.PN XrmParseCommand .
+.IN "XrmParseCommand" "" "@DEF@"
+.sM
+.FD 0
+void XrmParseCommand\^(\^\fIdatabase\fP\^, \^\fItable\fP\^, \^\fItable_count\fP\^, \
+\^\fIname\fP\^, \^\fIargc_in_out\fP\^, \^\fIargv_in_out\fP\^)
+.br
+ XrmDatabase *\fIdatabase\fP\^;
+.br
+ XrmOptionDescList \fItable\fP\^;
+.br
+ int \fItable_count\fP\^;
+.br
+ char *\fIname\fP\^;
+.br
+ int *\fIargc_in_out\fP\^;
+.br
+ char **\fIargv_in_out\fP\^;
+.FN
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fItable\fP 1i
+Specifies the table of command line arguments to be parsed.
+.IP \fItable_count\fP 1i
+Specifies the number of entries in the table.
+.IP \fIname\fP 1i
+Specifies the application name.
+.IP \fIargc_in_out\fP 1i
+Specifies the number of arguments and returns the number of remaining arguments.
+.IP \fIargv_in_out\fP 1i
+Specifies the command line arguments
+and returns the remaining arguments.
+.LP
+.eM
+The
+.PN XrmParseCommand
+function parses an (argc, argv) pair according to the specified option table,
+loads recognized options into the specified database with type ``String,''
+and modifies the (argc, argv) pair to remove all recognized options.
+If database contains NULL,
+.PN XrmParseCommand
+creates a new database and returns a pointer to it.
+Otherwise, entries are added to the database specified.
+If a database is created, it is created in the current locale.
+.LP
+The specified table is used to parse the command line.
+Recognized options in the table are removed from argv,
+and entries are added to the specified resource database
+in the order they occur in argv.
+The table entries contain information on the option string,
+the option name, the style of option,
+and a value to provide if the option kind is
+.PN XrmoptionNoArg .
+The option names are compared byte-for-byte to arguments in argv,
+independent of any locale.
+The resource values given in the table are stored in the resource database
+without modification.
+All resource database entries are created
+using a ``String'' representation type.
+The argc argument specifies the number of arguments in argv
+and is set on return to the remaining number of arguments that were not parsed.
+The name argument should be the name of your application
+for use in building the database entry.
+The name argument is prefixed to the resourceName in the option table
+before storing a database entry.
+The name argument is treated as a single component, even if it
+has embedded periods.
+No separating (binding) character is inserted,
+so the table must contain either a period (.) or an asterisk (*)
+as the first character in each resourceName entry.
+To specify a more completely qualified resource name,
+the resourceName entry can contain multiple components.
+If the name argument and the resourceNames are not in the
+Host Portable Character Encoding,
+the result is implementation-dependent.
+.LP
+The following provides a sample option table:
+.LP
+.Ds 0
+.TA 1.25i 3.25i 4.75i
+.ta 1.25i 3.25i 4.75i
+static XrmOptionDescRec opTable[] = {
+{"\-background", "*background", XrmoptionSepArg, (XPointer) NULL},
+{"\-bd", "*borderColor", XrmoptionSepArg, (XPointer) NULL},
+{"\-bg", "*background", XrmoptionSepArg, (XPointer) NULL},
+{"\-borderwidth", "*TopLevelShell.borderWidth", XrmoptionSepArg, (XPointer) NULL},
+{"\-bordercolor", "*borderColor", XrmoptionSepArg, (XPointer) NULL},
+{"\-bw", "*TopLevelShell.borderWidth", XrmoptionSepArg, (XPointer) NULL},
+{"\-display", ".display", XrmoptionSepArg, (XPointer) NULL},
+{"\-fg", "*foreground", XrmoptionSepArg, (XPointer) NULL},
+{"\-fn", "*font", XrmoptionSepArg, (XPointer) NULL},
+{"\-font", "*font", XrmoptionSepArg, (XPointer) NULL},
+{"\-foreground", "*foreground", XrmoptionSepArg, (XPointer) NULL},
+{"\-geometry", ".TopLevelShell.geometry", XrmoptionSepArg, (XPointer) NULL},
+{"\-iconic", ".TopLevelShell.iconic", XrmoptionNoArg, (XPointer) "on"},
+{"\-name", ".name", XrmoptionSepArg, (XPointer) NULL},
+{"\-reverse", "*reverseVideo", XrmoptionNoArg, (XPointer) "on"},
+{"\-rv", "*reverseVideo", XrmoptionNoArg, (XPointer) "on"},
+{"\-synchronous", "*synchronous", XrmoptionNoArg, (XPointer) "on"},
+{"\-title", ".TopLevelShell.title", XrmoptionSepArg, (XPointer) NULL},
+{"\-xrm", NULL, XrmoptionResArg, (XPointer) NULL},
+};
+.De
+.LP
+In this table, if the \-background (or \-bg) option is used to set
+background colors, the stored resource specifier matches all
+resources of attribute background.
+If the \-borderwidth option is used,
+the stored resource specifier applies only to border width
+attributes of class TopLevelShell (that is, outer-most windows, including
+pop-up windows).
+If the \-title option is used to set a window name,
+only the topmost application windows receive the resource.
+.LP
+When parsing the command line,
+any unique unambiguous abbreviation for an option name in the table is
+considered a match for the option.
+Note that uppercase and lowercase matter.
+.bp
diff --git a/specs/X11/CH16 b/specs/X11/CH16
new file mode 100644
index 0000000..3a21a22
--- /dev/null
+++ b/specs/X11/CH16
@@ -0,0 +1,2364 @@
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for
+.\" any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice appears in all copies and that both that copyright notice
+.\" and this permission notice appear in all copies, and that the names of
+.\" Digital and Tektronix not be used in in advertising or publicity pertaining
+.\" to this documentation without specific, written prior permission.
+.\" Digital and Tektronix makes no representations about the suitability
+.\" of this documentation for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 16\fP\s-1
+
+\s+1\fBApplication Utility Functions\fP\s-1
+.sp 2
+.nr H1 16
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 16: Application Utility Functions
+.XE
+Once you have initialized the X system,
+you can use the Xlib utility functions to:
+.IP \(bu 5
+Use keyboard utility functions
+.IP \(bu 5
+Use Latin-1 keyboard event functions
+.IP \(bu 5
+Allocate permanent storage
+.IP \(bu 5
+Parse the window geometry
+.IP \(bu 5
+Manipulate regions
+.IP \(bu 5
+Use cut buffers
+.IP \(bu 5
+Determine the appropriate visual type
+.IP \(bu 5
+Manipulate images
+.IP \(bu 5
+Manipulate bitmaps
+.IP \(bu 5
+Use the context manager
+.LP
+As a group,
+the functions discussed in this chapter provide the functionality that
+is frequently needed and that spans toolkits.
+Many of these functions do not generate actual protocol requests to the server.
+.NH 2
+Using Keyboard Utility Functions
+.XS
+\*(SN Using Keyboard Utility Functions
+.XE
+.LP
+This section discusses mapping between KeyCodes and KeySyms,
+classifying KeySyms, and mapping between KeySyms and string names.
+The first three functions in this section operate on a cached copy of the
+server keyboard mapping.
+The first four KeySyms for each KeyCode
+are modified according to the rules given in section 12.7.
+To obtain the untransformed KeySyms defined for a key,
+use the functions described in section 12.7.
+.LP
+.sp
+To obtain a KeySym for the KeyCode of an event, use
+.PN XLookupKeysym .
+.IN "XLookupKeysym" "" "@DEF@"
+.sM
+.FD 0
+KeySym XLookupKeysym(\^\fIkey_event\fP, \fIindex\fP\^)
+.br
+ XKeyEvent *\fIkey_event\fP\^;
+.br
+ int \fIindex\fP\^;
+.FN
+.IP \fIkey_event\fP 1i
+Specifies the
+.PN KeyPress
+or
+.PN KeyRelease
+event.
+.IP \fIindex\fP 1i
+Specifies the index into the KeySyms list for the event's KeyCode.
+.LP
+.eM
+The
+.PN XLookupKeysym
+function uses a given keyboard event and the index you specified to return
+the KeySym from the list that corresponds to the KeyCode member in the
+.PN XKeyPressedEvent
+or
+.PN XKeyReleasedEvent
+structure.
+If no KeySym is defined for the KeyCode of the event,
+.PN XLookupKeysym
+returns
+.PN NoSymbol .
+.LP
+.sp
+To obtain a KeySym for a specific KeyCode, use
+.PN XKeycodeToKeysym .
+.IN "XKeycodeToKeysym" "" "@DEF@"
+.sM
+.FD 0
+KeySym XKeycodeToKeysym\^(\^\fIdisplay\fP, \fIkeycode\fP, \fIindex\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ KeyCode \fIkeycode\fP\^;
+.br
+ int \fIindex\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIkeycode\fP 1i
+Specifies the KeyCode.
+.IP \fIindex\fP 1i
+Specifies the element of KeyCode vector.
+.LP
+.eM
+The
+.PN XKeycodeToKeysym
+function uses internal Xlib tables
+and returns the KeySym defined for the specified KeyCode and
+the element of the KeyCode vector.
+If no symbol is defined,
+.PN XKeycodeToKeysym
+returns
+.PN NoSymbol .
+.LP
+.sp
+To obtain a KeyCode for a key having a specific KeySym, use
+.PN XKeysymToKeycode .
+.IN "XKeysymToKeycode" "" "@DEF@"
+.sM
+.FD 0
+KeyCode XKeysymToKeycode\^(\^\fIdisplay\fP, \fIkeysym\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ KeySym \fIkeysym\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be searched for.
+.LP
+.eM
+If the specified KeySym is not defined for any KeyCode,
+.PN XKeysymToKeycode
+returns zero.
+.LP
+.sp
+The mapping between KeyCodes and KeySyms is cached internal to Xlib.
+When this information is changed at the server, an Xlib function must
+be called to refresh the cache.
+To refresh the stored modifier and keymap information, use
+.PN XRefreshKeyboardMapping .
+.IN "XRefreshKeyboardMapping" "" "@DEF@"
+.sM
+.FD 0
+XRefreshKeyboardMapping(\^\fIevent_map\fP\^)
+.br
+ XMappingEvent *\fIevent_map\fP\^;
+.FN
+.IP \fIevent_map\fP 1i
+Specifies the mapping event that is to be used.
+.LP
+.eM
+The
+.PN XRefreshKeyboardMapping
+function refreshes the stored modifier and keymap information.
+You usually call this function when a
+.PN MappingNotify
+event with a request member of
+.PN MappingKeyboard
+or
+.PN MappingModifier
+occurs.
+The result is to update Xlib's knowledge of the keyboard.
+.LP
+.sp
+To obtain the uppercase and lowercase forms of a KeySym, use
+.PN XConvertCase .
+.IN "XConvertCase" "" "@DEF@"
+.sM
+.FD 0
+void XConvertCase(\^\fIkeysym\fP, \fIlower_return\fP, \fIupper_return\fP\^)
+.br
+ KeySym \fIkeysym\fP\^;
+.br
+ KeySym *\fIlower_return\fP\^;
+.br
+ KeySym *\fIupper_return\fP\^;
+.FN
+.ds Fn converted
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.IP \fIlower_return\fP 1i
+Returns the lowercase form of keysym, or keysym.
+.IP \fIupper_return\fP 1i
+Returns the uppercase form of keysym, or keysym.
+.LP
+.eM
+The
+.PN XConvertCase
+function returns the uppercase and lowercase forms of the specified Keysym,
+if the KeySym is subject to case conversion;
+otherwise, the specified KeySym is returned to both lower_return and
+upper_return.
+Support for conversion of other than Latin and Cyrillic KeySyms is
+implementation-dependent.
+.LP
+.sp
+KeySyms have string names as well as numeric codes.
+To convert the name of the KeySym to the KeySym code, use
+.PN XStringToKeysym .
+.IN "XStringToKeysym" "" "@DEF@"
+.sM
+.FD 0
+KeySym XStringToKeysym\^(\^\fIstring\fP\^)
+.br
+ char *\fIstring\fP\^;
+.FN
+.IP \fIstring\fP 1i
+Specifies the name of the KeySym that is to be converted.
+.LP
+.eM
+Standard KeySym names are obtained from
+.hN X11/keysymdef.h
+by removing the XK_ prefix from each name.
+KeySyms that are not part of the Xlib standard also may be obtained
+with this function.
+The set of KeySyms that are available in this manner
+and the mechanisms by which Xlib obtains them is implementation-dependent.
+.LP
+If the KeySym name is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+If the specified string does not match a valid KeySym,
+.PN XStringToKeysym
+returns
+.PN NoSymbol .
+.LP
+.sp
+To convert a KeySym code to the name of the KeySym, use
+.PN XKeysymToString .
+.IN "XKeysymToString" "" "@DEF@"
+.sM
+.FD 0
+char *XKeysymToString\^(\^\fIkeysym\fP\^)
+.br
+ KeySym \fIkeysym\fP\^;
+.FN
+.ds Fn converted
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+The returned string is in a static area and must not be modified.
+The returned string is in the Host Portable Character Encoding.
+If the specified KeySym is not defined,
+.PN XKeysymToString
+returns a NULL.
+.NH 3
+KeySym Classification Macros
+.XS
+\*(SN KeySym Classification Macros
+.XE
+.LP
+You may want to test if a KeySym is, for example,
+on the keypad or on one of the function keys.
+You can use KeySym macros to perform the following tests.
+.LP
+.sp
+.sM
+.FD 0
+IsCursorKey\^(\^\fIkeysym\fP\^)
+.FN
+.ds Fn tested
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+.IN "IsCursorKey" "" "@DEF@"
+Returns
+.PN True
+if the specified KeySym is a cursor key.
+.LP
+.sp
+.sM
+.FD 0
+IsFunctionKey\^(\^\fIkeysym\fP\^)
+.FN
+.ds Fn tested
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+.IN "IsFunctionKey" "" "@DEF@"
+Returns
+.PN True
+if the specified KeySym is a function key.
+.LP
+.sp
+.sM
+.FD 0
+IsKeypadKey\^(\^\fIkeysym\fP\^)
+.FN
+.ds Fn tested
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+.IN "IsKeypadKey" "" "@DEF@"
+Returns
+.PN True
+if the specified KeySym is a standard keypad key.
+.LP
+.sp
+.sM
+.FD 0
+IsPrivateKeypadKey\^(\^\fIkeysym\fP\^)
+.FN
+.ds Fn tested
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+.IN "IsPrivateKeypadKey" "" "@DEF@"
+Returns
+.PN True
+if the specified KeySym is a vendor-private keypad key.
+.LP
+.sp
+.sM
+.FD 0
+IsMiscFunctionKey\^(\^\fIkeysym\fP\^)
+.FN
+.ds Fn tested
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+.IN "IsMiscFunctionKey" "" "@DEF@"
+Returns
+.PN True
+if the specified KeySym is a miscellaneous function key.
+.LP
+.sp
+.sM
+.FD 0
+IsModifierKey\^(\^\fIkeysym\fP\^)
+.FN
+.ds Fn tested
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+.IN "IsModifierKey" "" "@DEF@"
+Returns
+.PN True
+if the specified KeySym is a modifier key.
+.LP
+.sp
+.sM
+.FD 0
+IsPFKey\^(\^\fIkeysym\fP\^)
+.FN
+.ds Fn tested
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.LP
+.eM
+.IN "IsPFKey" "" "@DEF@"
+Returns
+.PN True
+if the specified KeySym is a PF key.
+.NH 2
+Using Latin-1 Keyboard Event Functions
+.XS
+\*(SN Using Latin-1 Keyboard Event Functions
+.XE
+.LP
+Chapter 13 describes internationalized text input facilities,
+but sometimes it is expedient to write an application that
+only deals with Latin-1 characters and ASCII controls,
+so Xlib provides a simple function for that purpose.
+.PN XLookupString
+handles the standard modifier semantics described in section 12.7.
+This function does not use any of the input method facilities
+described in chapter 13 and does not depend on the current locale.
+.LP
+.sp
+To map a key event to an ISO Latin-1 string, use
+.PN XLookupString .
+.IN "XLookupString" "" "@DEF@"
+.sM
+.FD 0
+int XLookupString(\^\fIevent_struct\fP, \fIbuffer_return\fP,\
+ \fIbytes_buffer\fP, \fIkeysym_return\fP, \fIstatus_in_out\fP\^)
+.br
+ XKeyEvent *\fIevent_struct\fP\^;
+.br
+ char *\fIbuffer_return\fP\^;
+.br
+ int \fIbytes_buffer\fP\^;
+.br
+ KeySym *\fIkeysym_return\fP\^;
+.br
+ XComposeStatus *\fIstatus_in_out\fP\^;
+.FN
+.IP \fIevent_struct\fP 1i
+Specifies the key event structure to be used.
+You can pass
+.PN XKeyPressedEvent
+or
+.PN XKeyReleasedEvent .
+.IP \fIbuffer_return\fP 1i
+Returns the translated characters.
+.IP \fIbytes_buffer\fP 1i
+Specifies the length of the buffer.
+No more than bytes_buffer of translation are returned.
+.IP \fIkeysym_return\fP 1i
+Returns the KeySym computed from the event if this argument is not NULL.
+.IP \fIstatus_in_out\fP 1i
+Specifies or returns the
+.PN XComposeStatus
+structure or NULL.
+.LP
+.eM
+The
+.PN XLookupString
+function translates a key event to a KeySym and a string.
+The KeySym is obtained by using the standard interpretation of the
+.PN Shift ,
+.PN Lock ,
+group, and numlock modifiers as defined in the X Protocol specification.
+If the KeySym has been rebound (see
+.PN XRebindKeysym ),
+the bound string will be stored in the buffer.
+Otherwise, the KeySym is mapped, if possible, to an ISO Latin-1 character
+or (if the Control modifier is on) to an ASCII control character,
+and that character is stored in the buffer.
+.PN XLookupString
+returns the number of characters that are stored in the buffer.
+.LP
+If present (non-NULL),
+the
+.PN XComposeStatus
+structure records the state,
+which is private to Xlib,
+that needs preservation across calls to
+.PN XLookupString
+to implement compose processing.
+The creation of
+.PN XComposeStatus
+structures is implementation-dependent;
+a portable program must pass NULL for this argument.
+.LP
+.PN XLookupString
+depends on the cached keyboard information mentioned in the
+previous section, so it is necessary to use
+.PN XRefreshKeyboardMapping
+to keep this information up-to-date.
+.LP
+.sp
+To rebind the meaning of a KeySym for
+.PN XLookupString ,
+use
+.PN XRebindKeysym .
+.IN "XRebindKeysym" "" "@DEF@"
+.sM
+.FD 0
+XRebindKeysym(\^\fIdisplay\fP, \fIkeysym\fP, \fIlist\fP, \fImod_count\fP, \fIstring\fP, \fInum_bytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ KeySym \fIkeysym\fP\^;
+.br
+ KeySym \fIlist\fP\^[\^]\^;
+.br
+ int \fImod_count\fP\^;
+.br
+ unsigned char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Fn rebound
+.IP \fIkeysym\fP 1i
+Specifies the KeySym that is to be \*(Fn.
+.IP \fIlist\fP 1i
+Specifies the KeySyms to be used as modifiers.
+.IP \fImod_count\fP 1i
+Specifies the number of modifiers in the modifier list.
+.IP \fIstring\fP 1i
+Specifies the string that is copied and will be returned by
+.PN XLookupString .
+.IP \fInum_bytes\fP 1i
+Specifies the number of bytes in the string argument.
+.LP
+.eM
+The
+.PN XRebindKeysym
+function can be used to rebind the meaning of a KeySym for the client.
+It does not redefine any key in the X server but merely
+provides an easy way for long strings to be attached to keys.
+.PN XLookupString
+returns this string when the appropriate set of
+modifier keys are pressed and when the KeySym would have been used for
+the translation.
+No text conversions are performed;
+the client is responsible for supplying appropriately encoded strings.
+Note that you can rebind a KeySym that may not exist.
+.NH 2
+Allocating Permanent Storage
+.XS
+\*(SN Allocating Permanent Storage
+.XE
+.LP
+To allocate some memory you will never give back, use
+.PN Xpermalloc .
+.IN "Xpermalloc" "" "@DEF@"
+.sM
+.FD 0
+char *Xpermalloc\^(\^\fIsize\fP\^)
+.br
+ unsigned int \fIsize\fP\^;
+.FN
+.LP
+.eM
+The
+.PN Xpermalloc
+function allocates storage that can never be freed for the life of the
+program. The memory is allocated with alignment for the C type double.
+This function may provide some performance and space savings over
+the standard operating system memory allocator.
+.NH 2
+Parsing the Window Geometry
+.XS
+\*(SN Parsing the Window Geometry
+.XE
+.LP
+To parse standard window geometry strings, use
+.PN XParseGeometry .
+.IN "Window" "determining location"
+.IN "XParseGeometry" "" "@DEF@"
+.LP
+.sM
+.FD 0
+int XParseGeometry\^(\^\fIparsestring\fP\^, \fIx_return\fP\^, \fIy_return\fP\^, \fIwidth_return\fP\^, \fIheight_return\fP\^)
+.br
+ char *\fIparsestring\fP\^;
+.br
+ int *\fIx_return\fP\^, *\fIy_return\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP\^, *\fIheight_return\fP\^;
+.FN
+.IP \fIparsestring\fP 1i
+Specifies the string you want to parse.
+.IP \fIx_return\fP 1i
+.br
+.ns
+.IP \fIy_return\fP 1i
+Return the x and y offsets.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height determined.
+.LP
+.eM
+By convention,
+X applications use a standard string to indicate window size and placement.
+.PN XParseGeometry
+makes it easier to conform to this standard because it allows you
+to parse the standard window geometry.
+Specifically, this function lets you parse strings of the form:
+.LP
+.\" Start marker code here
+.Ds
+[=][<\fIwidth\fP>{xX}<\fIheight\fP>][{+-}<\fIxoffset\fP>{+-}<\fIyoffset\fP>]
+.De
+.\" End marker code here
+.LP
+The fields map into the arguments associated with this function.
+(Items enclosed in <\^> are integers, items in [\^] are optional, and
+items enclosed in {\^} indicate ``choose one of.''
+Note that the brackets should not appear in the actual string.)
+If the string is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+.LP
+The
+.PN XParseGeometry
+function returns a bitmask that indicates which of the four values (width,
+height, xoffset, and yoffset) were actually found in the string
+and whether the x and y values are negative.
+By convention, \-0 is not equal to +0, because the user needs to
+be able to say ``position the window relative to the right or bottom edge.''
+For each value found, the corresponding argument is updated.
+For each value not found, the argument is left unchanged.
+The bits are represented by
+.PN XValue ,
+.PN YValue ,
+.PN WidthValue ,
+.PN HeightValue ,
+.PN XNegative ,
+or
+.PN YNegative
+and are defined in
+.hN X11/Xutil.h .
+They will be set whenever one of the values is defined
+or one of the signs is set.
+.LP
+If the function returns either the
+.PN XValue
+or
+.PN YValue
+flag,
+you should place the window at the requested position.
+.sp
+.LP
+To construct a window's geometry information, use
+.PN XWMGeometry .
+.IN "XWMGeometry" "" "@DEF@"
+.sM
+.FD 0
+int XWMGeometry\^(\^\fIdisplay\fP, \fIscreen\fP, \fIuser_geom\fP, \
+\fIdef_geom\fP, \fIbwidth\fP, \fIhints\fP, \fIx_return\fP, \fIy_return\fP,
+.br
+ \fIwidth_return\fP, \fIheight_return\fP, \fIgravity_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen\fP\^;
+.br
+ char *\fIuser_geom\fP\^;
+.br
+ char *\fIdef_geom\fP\^;
+.br
+ unsigned int \fIbwidth\fP\^;
+.br
+ XSizeHints *\fIhints\fP\^;
+.br
+ int *\fIx_return\fP, *\fIy_return\fP\^;
+.br
+ int *\fIwidth_return\fP\^;
+.br
+ int *\fIheight_return\fP\^;
+.br
+ int *\fIgravity_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen\fP 1i
+Specifies the screen.
+.IP \fIuser_geom\fP 1i
+Specifies the user-specified geometry or NULL.
+.IP \fIdef_geom\fP 1i
+Specifies the application's default geometry or NULL.
+.IP \fIbwidth\fP 1i
+Specifies the border width.
+.IP \fIhints\fP 1i
+Specifies the size hints for the window in its normal state.
+.IP \fIx_return\fP 1i
+.br
+.ns
+.IP \fIy_return\fP 1i
+Return the x and y offsets.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height determined.
+.IP \fIgravity_return\fP 1i
+Returns the window gravity.
+.LP
+.eM
+The
+.PN XWMGeometry
+function combines any geometry information (given in the format used by
+.PN XParseGeometry )
+specified by the user and by the calling program with size hints
+(usually the ones to be stored in WM_NORMAL_HINTS) and returns the position,
+size, and gravity
+.Pn ( NorthWestGravity ,
+.PN NorthEastGravity ,
+.PN SouthEastGravity ,
+or
+.PN SouthWestGravity )
+that describe the window.
+If the base size is not set in the
+.PN XSizeHints
+structure,
+the minimum size is used if set.
+Otherwise, a base size of zero is assumed.
+If no minimum size is set in the hints structure,
+the base size is used.
+A mask (in the form returned by
+.PN XParseGeometry )
+that describes which values came from the user specification
+and whether or not the position coordinates are relative
+to the right and bottom edges is returned.
+Note that these coordinates will have already been accounted for
+in the x_return and y_return values.
+.LP
+Note that invalid geometry specifications can cause a width or height
+of zero to be returned.
+The caller may pass the address of the hints win_gravity field
+as gravity_return to update the hints directly.
+.NH 2
+Manipulating Regions
+.XS
+\*(SN Manipulating Regions
+.XE
+.LP
+Regions are arbitrary sets of pixel locations.
+Xlib provides functions for manipulating regions.
+The opaque type
+.PN Region
+is defined in
+.hN X11/Xutil.h .
+Xlib provides functions that you can use to manipulate regions.
+This section discusses how to:
+.IP \(bu 5
+Create, copy, or destroy regions
+.IP \(bu 5
+Move or shrink regions
+.IP \(bu 5
+Compute with regions
+.IP \(bu 5
+Determine if regions are empty or equal
+.IP \(bu 5
+Locate a point or rectangle in a region
+.NH 3
+Creating, Copying, or Destroying Regions
+.XS
+\*(SN Creating, Copying, or Destroying Regions
+.XE
+.LP
+To create a new empty region, use
+.PN XCreateRegion .
+.IN "XCreateRegion" "" "@DEF@"
+.sM
+.FD 0
+Region XCreateRegion\^()
+.FN
+.LP
+.eM
+.sp
+To generate a region from a polygon, use
+.PN XPolygonRegion .
+.IN "XPolygonRegion" "" "@DEF@"
+.sM
+.FD 0
+Region XPolygonRegion\^(\^\fIpoints\fP\^, \fIn\fP\^, \fIfill_rule\fP\^)
+.br
+ XPoint \fIpoints[]\fP\^;
+.br
+ int \fIn\fP\^;
+.br
+ int \fIfill_rule\fP\^;
+.FN
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fIn\fP 1i
+Specifies the number of points in the polygon.
+.IP \fIfill_rule\fP 1i
+Specifies the fill-rule you want to set for the specified GC.
+You can pass
+.PN EvenOddRule
+or
+.PN WindingRule .
+.LP
+.eM
+The
+.PN XPolygonRegion
+function returns a region for the polygon defined by the points array.
+For an explanation of fill_rule,
+see
+.PN XCreateGC .
+.LP
+.sp
+To set the clip-mask of a GC to a region, use
+.PN XSetRegion .
+.IN "XSetRegion" "" "@DEF@"
+.sM
+.FD 0
+XSetRegion\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIr\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ Region \fIr\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIr\fP 1i
+Specifies the region.
+.LP
+.eM
+The
+.PN XSetRegion
+function sets the clip-mask in the GC to the specified region.
+The region is specified relative to the drawable's origin.
+The resulting GC clip origin is implementation-dependent.
+Once it is set in the GC,
+the region can be destroyed.
+.LP
+.sp
+To deallocate the storage associated with a specified region, use
+.PN XDestroyRegion .
+.IN "XDestroyRegion" "" "@DEF@"
+.sM
+.FD 0
+XDestroyRegion\^(\^\fIr\fP\^)
+.br
+ Region \fIr\fP\^;
+.FN
+.IP \fIr\fP 1i
+Specifies the region.
+.LP
+.eM
+.NH 3
+Moving or Shrinking Regions
+.XS
+\*(SN Moving or Shrinking Regions
+.XE
+.LP
+To move a region by a specified amount, use
+.PN XOffsetRegion .
+.IN "XOffsetRegion" "" "@DEF@"
+.sM
+.FD 0
+XOffsetRegion\^(\^\fIr\fP\^, \fIdx\fP\^, \fIdy\fP\^)
+.br
+ Region \fIr\fP\^;
+.br
+ int \fIdx\fP\^, \fIdy\fP\^;
+.FN
+.IP \fIr\fP 1i
+Specifies the region.
+.ds Dy move
+.IP \fIdx\fP 1i
+.br
+.ns
+.IP \fIdy\fP 1i
+Specify the x and y coordinates,
+which define the amount you want to \*(Dy the specified region.
+.LP
+.eM
+.sp
+To reduce a region by a specified amount, use
+.PN XShrinkRegion .
+.IN "XShrinkRegion" "" "@DEF@"
+.sM
+.FD 0
+XShrinkRegion\^(\^\fIr\fP\^, \fIdx\fP\^, \fIdy\fP\^)
+.br
+ Region \fIr\fP\^;
+.br
+ int \fIdx\fP\^, \fIdy\fP\^;
+.FN
+.IP \fIr\fP 1i
+Specifies the region.
+.ds Dy shrink
+.IP \fIdx\fP 1i
+.br
+.ns
+.IP \fIdy\fP 1i
+Specify the x and y coordinates,
+which define the amount you want to \*(Dy the specified region.
+.LP
+.eM
+Positive values shrink the size of the region,
+and negative values expand the region.
+.NH 3
+Computing with Regions
+.XS
+\*(SN Computing with Regions
+.XE
+.LP
+.sp
+To generate the smallest rectangle enclosing a region, use
+.PN XClipBox .
+.IN "XClipBox" "" "@DEF@"
+.sM
+.FD 0
+XClipBox\^(\^\fIr\fP\^, \fIrect_return\fP\^)
+.br
+ Region \fIr\fP\^;
+.br
+ XRectangle *\fIrect_return\fP\^;
+.FN
+.IP \fIr\fP 1i
+Specifies the region.
+.IP \fIrect_return\fP 1i
+Returns the smallest enclosing rectangle.
+.LP
+.eM
+The
+.PN XClipBox
+function returns the smallest rectangle enclosing the specified region.
+.sp
+.LP
+To compute the intersection of two regions, use
+.PN XIntersectRegion .
+.IN "XIntersectRegion" "" "@DEF@"
+.sM
+.FD 0
+XIntersectRegion\^(\^\fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^)
+.br
+ Region \fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^;
+.FN
+.IP \fIsra\fP 1i
+.br
+.ns
+.IP \fIsrb\fP 1i
+Specify the two regions with which you want to perform the computation.
+.IP \fIdr_return\fP 1i
+Returns the result of the computation.
+.LP
+.eM
+.sp
+To compute the union of two regions, use
+.PN XUnionRegion .
+.IN "XUnionRegion" "" "@DEF@"
+.sM
+.FD 0
+XUnionRegion\^(\^\fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^)
+.br
+ Region \fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^;
+.FN
+.IP \fIsra\fP 1i
+.br
+.ns
+.IP \fIsrb\fP 1i
+Specify the two regions with which you want to perform the computation.
+.IP \fIdr_return\fP 1i
+Returns the result of the computation.
+.LP
+.eM
+.sp
+To create a union of a source region and a rectangle, use
+.PN XUnionRectWithRegion .
+.IN "XUnionRectWithRegion" "" "@DEF@"
+.sM
+.FD 0
+XUnionRectWithRegion\^(\^\fIrectangle\fP, \fIsrc_region\fP, \
+\fIdest_region_return\fP\^)
+.br
+ XRectangle *\fIrectangle\fP\^;
+.br
+ Region \fIsrc_region\fP\^;
+.br
+ Region \fIdest_region_return\fP\^;
+.FN
+.IP \fIrectangle\fP 1i
+Specifies the rectangle.
+.IP \fIsrc_region\fP 1i
+Specifies the source region to be used.
+.IP \fIdest_region_return\fP 1i
+Returns the destination region.
+.LP
+.eM
+The
+.PN XUnionRectWithRegion
+function updates the destination region from a union of the specified rectangle
+and the specified source region.
+.LP
+.sp
+To subtract two regions, use
+.PN XSubtractRegion .
+.IN "XSubtractRegion" "" "@DEF@"
+.sM
+.FD 0
+XSubtractRegion\^(\^\fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^)
+.br
+ Region \fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^;
+.FN
+.IP \fIsra\fP 1i
+.br
+.ns
+.IP \fIsrb\fP 1i
+Specify the two regions with which you want to perform the computation.
+.IP \fIdr_return\fP 1i
+Returns the result of the computation.
+.LP
+.eM
+The
+.PN XSubtractRegion
+function subtracts srb from sra and stores the results in dr_return.
+.LP
+.sp
+To calculate the difference between the union and intersection
+of two regions, use
+.PN XXorRegion .
+.IN "XXorRegion" "" "@DEF@"
+.sM
+.FD 0
+XXorRegion\^(\^\fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^)
+.br
+ Region \fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^;
+.FN
+.IP \fIsra\fP 1i
+.br
+.ns
+.IP \fIsrb\fP 1i
+Specify the two regions with which you want to perform the computation.
+.IP \fIdr_return\fP 1i
+Returns the result of the computation.
+.LP
+.eM
+.NH 3
+Determining if Regions Are Empty or Equal
+.XS
+\*(SN Determining if Regions Are Empty or Equal
+.XE
+.LP
+To determine if the specified region is empty, use
+.PN XEmptyRegion .
+.IN "XEmptyRegion" "" "@DEF@"
+.sM
+.FD 0
+Bool XEmptyRegion\^(\^\fIr\fP\^)
+.br
+ Region \fIr\fP\^;
+.FN
+.IP \fIr\fP 1i
+Specifies the region.
+.LP
+.eM
+The
+.PN XEmptyRegion
+function returns
+.PN True
+if the region is empty.
+.LP
+.sp
+To determine if two regions have the same offset, size, and shape, use
+.PN XEqualRegion .
+.IN "XEqualRegion" "" "@DEF@"
+.sM
+.FD 0
+Bool XEqualRegion\^(\^\fIr1\fP\^, \fIr2\fP\^)
+.br
+ Region \fIr1\fP\^, \fIr2\fP\^;
+.FN
+.IP \fIr1\fP 1i
+.br
+.ns
+.IP \fIr2\fP 1i
+Specify the two regions.
+.LP
+.eM
+The
+.PN XEqualRegion
+function returns
+.PN True
+if the two regions have the same offset, size, and shape.
+.NH 3
+Locating a Point or a Rectangle in a Region
+.XS
+\*(SN Locating a Point or a Rectangle in a Region
+.XE
+.LP
+To determine if a specified point resides in a specified region, use
+.PN XPointInRegion .
+.IN "XPointInRegion" "" "@DEF@"
+.sM
+.FD 0
+Bool XPointInRegion\^(\^\fIr\fP\^, \fIx\fP\^, \fIy\fP\^)
+.br
+ Region \fIr\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.FN
+.IP \fIr\fP 1i
+Specifies the region.
+.ds Xy , which define the point
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.LP
+.eM
+The
+.PN XPointInRegion
+function returns
+.PN True
+if the point (x, y) is contained in the region r.
+.LP
+.sp
+To determine if a specified rectangle is inside a region, use
+.PN XRectInRegion .
+.IN "XRectInRegion" "" "@DEF@"
+.sM
+.FD 0
+int XRectInRegion\^(\^\fIr\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^)
+.br
+ Region \fIr\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ unsigned int \fIwidth\fP\^, \fIheight\fP\^;
+.FN
+.IP \fIr\fP 1i
+Specifies the region.
+.ds Xy , which define the coordinates of the upper-left corner of the rectangle
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.ds Wh , which define the rectangle
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.LP
+.eM
+The
+.PN XRectInRegion
+function returns
+.PN RectangleIn
+if the rectangle is entirely in the specified region,
+.PN RectangleOut
+if the rectangle is entirely out of the specified region,
+and
+.PN RectanglePart
+if the rectangle is partially in the specified region.
+.NH 2
+Using Cut Buffers
+.XS
+\*(SN Using Cut Buffers
+.XE
+.LP
+.IN "Cut Buffers"
+Xlib provides functions to manipulate cut buffers,
+a very simple form of cut-and-paste inter-client communication.
+Selections are a much more powerful and useful mechanism for
+interchanging data between clients (see section 4.5)
+and generally should be used instead of cut buffers.
+.LP
+Cut buffers are implemented as properties on the first root window
+of the display.
+The buffers can only contain text, in the STRING encoding.
+The text encoding is not changed by Xlib when fetching or storing.
+Eight buffers are provided
+and can be accessed as a ring or as explicit buffers (numbered 0 through 7).
+.LP
+.sp
+To store data in cut buffer 0, use
+.PN XStoreBytes .
+.IN "XStoreBytes" "" "@DEF@"
+.sM
+.FD 0
+XStoreBytes\^(\^\fIdisplay\fP, \fIbytes\fP\^, \fInbytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIbytes\fP\^;
+.br
+ int \^\fInbytes\fP\^;
+.br
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIbytes\fP 1i
+Specifies the bytes, which are not necessarily ASCII or null-terminated.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes to be stored.
+.LP
+.eM
+The data can have embedded null characters
+and need not be null-terminated.
+The cut buffer's contents can be retrieved later by
+any client calling
+.PN XFetchBytes .
+.LP
+.PN XStoreBytes
+can generate a
+.PN BadAlloc
+error.
+.LP
+.sp
+To store data in a specified cut buffer, use
+.PN XStoreBuffer .
+.IN "XStoreBuffer" "" "@DEF@"
+.sM
+.FD 0
+XStoreBuffer\^(\^\fIdisplay\fP, \fIbytes\fP\^, \fInbytes\fP\^, \fIbuffer\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIbytes\fP\^;
+.br
+ int \^\fInbytes\fP\^;
+.br
+ int \fIbuffer\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIbytes\fP 1i
+Specifies the bytes, which are not necessarily ASCII or null-terminated.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes to be stored.
+.ds Fn in which you want to store the bytes
+.IP \fIbuffer\fP 1i
+Specifies the buffer \*(Fn.
+.LP
+.eM
+If an invalid buffer is specified, the call has no effect.
+The data can have embedded null characters
+and need not be null-terminated.
+.LP
+.PN XStoreBuffer
+can generate a
+.PN BadAlloc
+error.
+.LP
+.sp
+To return data from cut buffer 0, use
+.PN XFetchBytes .
+.IN "XFetchBytes" "" "@DEF@"
+.sM
+.FD 0
+char *XFetchBytes\^(\^\fIdisplay\fP, \fInbytes_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fInbytes_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInbytes_return\fP 1i
+Returns the number of bytes in the buffer.
+.LP
+.eM
+The
+.PN XFetchBytes
+function
+returns the number of bytes in the nbytes_return argument,
+if the buffer contains data.
+Otherwise, the function
+returns NULL and sets nbytes to 0.
+The appropriate amount of storage is allocated and the pointer returned.
+The client must free this storage when finished with it by calling
+.PN XFree .
+.LP
+.sp
+To return data from a specified cut buffer, use
+.PN XFetchBuffer .
+.IN "XFetchBuffer" "" "@DEF@"
+.sM
+.FD 0
+char *XFetchBuffer\^(\^\fIdisplay\fP, \fInbytes_return\fP\^, \fIbuffer\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fInbytes_return\fP\^;
+.br
+ int \fIbuffer\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInbytes_return\fP 1i
+Returns the number of bytes in the buffer.
+.ds Fn from which you want the stored data returned
+.IP \fIbuffer\fP 1i
+Specifies the buffer \*(Fn.
+.LP
+.eM
+The
+.PN XFetchBuffer
+function returns zero to the nbytes_return argument
+if there is no data in the buffer or if an invalid
+buffer is specified.
+.LP
+.sp
+To rotate the cut buffers, use
+.PN XRotateBuffers .
+.IN "XRotateBuffers" "" "@DEF@"
+.sM
+.FD 0
+XRotateBuffers\^(\^\fIdisplay\fP, \fIrotate\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIrotate\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIrotate\fP 1i
+Specifies how much to rotate the cut buffers.
+.LP
+.eM
+The
+.PN XRotateBuffers
+function rotates the cut
+buffers, such that buffer 0 becomes buffer n,
+buffer 1 becomes n + 1 mod 8, and so on.
+This cut buffer numbering is global to the display.
+Note that
+.PN XRotateBuffers
+generates
+.PN BadMatch
+errors if any of the eight buffers have not been created.
+.NH 2
+Determining the Appropriate Visual Type
+.XS
+\*(SN Determining the Appropriate Visual Type
+.XE
+.LP
+A single display can support multiple screens.
+Each screen can have several different visual types supported
+at different depths.
+You can use the functions described in this section to determine
+which visual to use for your application.
+.LP
+The functions in this section use the visual information masks and the
+.PN XVisualInfo
+structure,
+which is defined in
+.hN X11/Xutil.h
+and contains:
+.sM
+.LP
+/* Visual information mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN VisualNoMask
+T} T{
+0x0
+T}
+T{
+#define
+T} T{
+.PN VisualIDMask
+T} T{
+0x1
+T}
+T{
+#define
+T} T{
+.PN VisualScreenMask
+T} T{
+0x2
+T}
+T{
+#define
+T} T{
+.PN VisualDepthMask
+T} T{
+0x4
+T}
+T{
+#define
+T} T{
+.PN VisualClassMask
+T} T{
+0x8
+T}
+T{
+#define
+T} T{
+.PN VisualRedMaskMask
+T} T{
+0x10
+T}
+T{
+#define
+T} T{
+.PN VisualGreenMaskMask
+T} T{
+0x20
+T}
+T{
+#define
+T} T{
+.PN VisualBlueMaskMask
+T} T{
+0x40
+T}
+T{
+#define
+T} T{
+.PN VisualColormapSizeMask
+T} T{
+0x80
+T}
+T{
+#define
+T} T{
+.PN VisualBitsPerRGBMask
+T} T{
+0x100
+T}
+T{
+#define
+T} T{
+.PN VisualAllMask
+T} T{
+0x1FF
+T}
+.TE
+.IN "XVisualInfo" "" "@DEF@"
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+/* Values */
+
+typedef struct {
+ Visual *visual;
+ VisualID visualid;
+ int screen;
+ unsigned int depth;
+ int class;
+ unsigned long red_mask;
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ int colormap_size;
+ int bits_per_rgb;
+} XVisualInfo;
+.De
+.LP
+.eM
+To obtain a list of visual information structures that match a specified
+template, use
+.PN XGetVisualInfo .
+.IN "XGetVisualInfo" "" "@DEF@"
+.sM
+.FD 0
+XVisualInfo *XGetVisualInfo\^(\^\fIdisplay\fP, \fIvinfo_mask\fP, \fIvinfo_template\fP, \fInitems_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ long \fIvinfo_mask\fP\^;
+.br
+ XVisualInfo *\fIvinfo_template\fP\^;
+.br
+ int *\fInitems_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIvinfo_mask\fP 1i
+Specifies the visual mask value.
+.IP \fIvinfo_template\fP 1i
+Specifies the visual attributes that are to be used in matching the visual
+structures.
+.IP \fInitems_return\fP 1i
+Returns the number of matching visual structures.
+.LP
+.eM
+The
+.PN XGetVisualInfo
+function returns a list of visual structures that have attributes
+equal to the attributes specified by vinfo_template.
+If no visual structures match the template using the specified vinfo_mask,
+.PN XGetVisualInfo
+returns a NULL.
+To free the data returned by this function, use
+.PN XFree .
+.LP
+.sp
+To obtain the visual information that matches the specified depth and
+class of the screen, use
+.PN XMatchVisualInfo .
+.IN "XMatchVisualInfo" "" "@DEF@"
+.sM
+.FD 0
+Status XMatchVisualInfo\^(\^\fIdisplay\fP, \fIscreen\fP, \fIdepth\fP, \fIclass\fP, \fIvinfo_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen\fP\^;
+.br
+ int \fIdepth\fP\^;
+.br
+ int \fIclass\fP\^;
+.br
+ XVisualInfo *\fIvinfo_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen\fP 1i
+Specifies the screen.
+.IP \fIdepth\fP 1i
+Specifies the depth of the screen.
+.IP \fIclass\fP 1i
+Specifies the class of the screen.
+.IP \fIvinfo_return\fP 1i
+Returns the matched visual information.
+.LP
+.eM
+The
+.PN XMatchVisualInfo
+function returns the visual information for a visual that matches the specified
+depth and class for a screen.
+Because multiple visuals that match the specified depth and class can exist,
+the exact visual chosen is undefined.
+If a visual is found,
+.PN XMatchVisualInfo
+returns nonzero and the information on the visual to vinfo_return.
+Otherwise, when a visual is not found,
+.PN XMatchVisualInfo
+returns zero.
+.NH 2
+Manipulating Images
+.XS
+\*(SN Manipulating Images
+.XE
+.LP
+Xlib provides several functions that perform basic operations on images.
+All operations on images are defined using an
+.PN XImage
+structure,
+as defined in
+.hN X11/Xlib.h .
+Because the number of different types of image formats can be very large,
+this hides details of image storage properly from applications.
+.LP
+This section describes the functions for generic operations on images.
+Manufacturers can provide very fast implementations of these for the
+formats frequently encountered on their hardware.
+These functions are neither sufficient nor desirable to use for general image
+processing.
+Rather, they are here to provide minimal functions on screen format
+images.
+The basic operations for getting and putting images are
+.PN XGetImage
+and
+.PN XPutImage .
+.LP
+Note that no functions have been defined, as yet, to read and write images
+to and from disk files.
+.LP
+The
+.PN XImage
+structure describes an image as it exists in the client's memory.
+The user can request that some of the members such as height, width,
+and xoffset be changed when the image is sent to the server.
+Note that bytes_per_line in concert with offset can be used to
+extract a subset of the image.
+Other members (for example, byte order, bitmap_unit, and so forth)
+are characteristics of both the image and the server.
+If these members
+differ between the image and the server,
+.PN XPutImage
+makes the appropriate conversions.
+The first byte of the first line of
+plane n must be located at the address (data + (n * height * bytes_per_line)).
+For a description of the
+.PN XImage
+structure,
+see section 8.7.
+.LP
+.sp
+To allocate an
+.PN XImage
+structure and initialize it with image format values from a display, use
+.PN XCreateImage .
+.IN "XCreateImage" "" "@DEF@"
+.sM
+.FD 0
+XImage *XCreateImage\^(\^\fIdisplay\fP, \fIvisual\fP, \fIdepth\fP, \fIformat\fP, \fIoffset\fP, \fIdata\fP, \fIwidth\fP, \fIheight\fP\^, \fIbitmap_pad\fP,
+.br
+ \fIbytes_per_line\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Visual *\fIvisual\fP\^;
+.br
+ unsigned int \fIdepth\fP\^;
+.br
+ int \fIformat\fP\^;
+.br
+ int \fIoffset\fP\^;
+.br
+ char *\fIdata\fP\^;
+.br
+ unsigned int \fIwidth\fP\^;
+.br
+ unsigned int \fIheight\fP\^;
+.br
+ int \fIbitmap_pad\fP\^;
+.br
+ int \fIbytes_per_line\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIvisual\fP 1i
+Specifies the
+.PN Visual
+structure.
+.IP \fIdepth\fP 1i
+Specifies the depth of the image.
+.IP \fIformat\fP 1i
+Specifies the format for the image.
+You can pass
+.PN XYBitmap ,
+.PN XYPixmap ,
+or
+.PN ZPixmap .
+.IP \fIoffset\fP 1i
+Specifies the number of pixels to ignore at the beginning of the scanline.
+.IP \fIdata\fP 1i
+Specifies the image data.
+.IP \fIwidth\fP 1i
+Specifies the width of the image, in pixels.
+.IP \fIheight\fP 1i
+Specifies the height of the image, in pixels.
+.IP \fIbitmap_pad\fP 1i
+Specifies the quantum of a scanline (8, 16, or 32).
+In other words, the start of one scanline is separated in client memory from
+the start of the next scanline by an integer multiple of this many bits.
+.IP \fIbytes_per_line\fP 1i
+Specifies the number of bytes in the client image between
+the start of one scanline and the start of the next.
+.LP
+.eM
+The
+.PN XCreateImage
+function allocates the memory needed for an
+.PN XImage
+structure for the
+specified display but does not allocate space for the image itself.
+Rather, it initializes the structure byte-order, bit-order, and bitmap-unit
+values from the display and returns a pointer to the
+.PN XImage
+structure.
+The red, green, and blue mask values are defined for Z format images only
+and are derived from the
+.PN Visual
+structure passed in.
+Other values also are passed in.
+The offset permits the rapid displaying of the image without requiring each
+scanline to be shifted into position.
+If you pass a zero value in bytes_per_line,
+Xlib assumes that the scanlines are contiguous
+in memory and calculates the value of bytes_per_line itself.
+.LP
+Note that when the image is created using
+.PN XCreateImage ,
+.PN XGetImage ,
+or
+.PN XSubImage ,
+the destroy procedure that the
+.PN XDestroyImage
+function calls frees both the image structure
+and the data pointed to by the image structure.
+.LP
+The basic functions used to get a pixel, set a pixel, create a subimage,
+and add a constant value to an image are defined in the image object.
+The functions in this section are really macro invocations of the functions
+in the image object and are defined in
+.hN X11/Xutil.h .
+.LP
+.sp
+To obtain a pixel value in an image, use
+.PN XGetPixel .
+.IN "XGetPixel" "" "@DEF@"
+.sM
+.FD 0
+unsigned long XGetPixel\^(\^\fIximage\fP, \fIx\fP, \fIy\fP\^)
+.br
+ XImage *\fIximage\fP\^;
+.br
+ int \fIx\fP\^;
+.br
+ int \fIy\fP\^;
+.FN
+.IP \fIximage\fP 1i
+Specifies the image.
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates.
+.LP
+.eM
+The
+.PN XGetPixel
+function returns the specified pixel from the named image.
+The pixel value is returned in normalized format (that is,
+the least significant byte of the long is the least significant byte
+of the pixel).
+The image must contain the x and y coordinates.
+.LP
+.sp
+To set a pixel value in an image, use
+.PN XPutPixel .
+.IN "XPutPixel" "" "@DEF@"
+.sM
+.FD 0
+XPutPixel\^(\^\fIximage\fP, \fIx\fP, \fIy\fP, \fIpixel\fP\^)
+.br
+ XImage *\fIximage\fP\^;
+.br
+ int \fIx\fP\^;
+.br
+ int \fIy\fP\^;
+.br
+ unsigned long \fIpixel\fP\^;
+.FN
+.IP \fIximage\fP 1i
+Specifies the image.
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates.
+.IP \fIpixel\fP 1i
+Specifies the new pixel value.
+.LP
+.eM
+The
+.PN XPutPixel
+function overwrites the pixel in the named image with the specified pixel value.
+The input pixel value must be in normalized format
+(that is, the least significant byte of the long is the least significant
+byte of the pixel).
+The image must contain the x and y coordinates.
+.LP
+.sp
+To create a subimage, use
+.PN XSubImage .
+.IN "XSubImage" "" "@DEF@"
+.sM
+.FD 0
+XImage *XSubImage\^(\^\fIximage\fP, \fIx\fP, \fIy\fP, \fIsubimage_width\fP, \fIsubimage_height\fP\^)
+.br
+ XImage *\fIximage\fP\^;
+.br
+ int \fIx\fP\^;
+.br
+ int \fIy\fP\^;
+.br
+ unsigned int \fIsubimage_width\fP\^;
+.br
+ unsigned int \fIsubimage_height\fP\^;
+.FN
+.IP \fIximage\fP 1i
+Specifies the image.
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates.
+.IP \fIsubimage_width\fP 1i
+Specifies the width of the new subimage, in pixels.
+.IP \fIsubimage_height\fP 1i
+Specifies the height of the new subimage, in pixels.
+.LP
+.eM
+The
+.PN XSubImage
+function creates a new image that is a subsection of an existing one.
+It allocates the memory necessary for the new
+.PN XImage
+structure
+and returns a pointer to the new image.
+The data is copied from the source image,
+and the image must contain the rectangle defined by x, y, subimage_width,
+and subimage_height.
+.LP
+.sp
+To increment each pixel in an image by a constant value, use
+.PN XAddPixel .
+.IN "XAddPixel" "" "@DEF@"
+.sM
+.FD 0
+XAddPixel\^(\^\fIximage\fP, \fIvalue\fP\^)
+.br
+ XImage *\fIximage\fP\^;
+.br
+ long \fIvalue\fP\^;
+.FN
+.IP \fIximage\fP 1i
+Specifies the image.
+.IP \fIvalue\fP 1i
+Specifies the constant value that is to be added.
+.LP
+.eM
+The
+.PN XAddPixel
+function adds a constant value to every pixel in an image.
+It is useful when you have a base pixel value from allocating
+color resources and need to manipulate the image to that form.
+.LP
+.sp
+To deallocate the memory allocated in a previous call to
+.PN XCreateImage ,
+use
+.PN XDestroyImage .
+.IN "XDestroyImage" "" "@DEF@"
+.sM
+.FD 0
+XDestroyImage\^(\^\fIximage\fP\^)
+.br
+ XImage *\^\fIximage\fP\^;
+.FN
+.IP \fIximage\fP 1i
+Specifies the image.
+.LP
+.eM
+The
+.PN XDestroyImage
+function deallocates the memory associated with the
+.PN XImage
+structure.
+.LP
+Note that when the image is created using
+.PN XCreateImage ,
+.PN XGetImage ,
+or
+.PN XSubImage ,
+the destroy procedure that this macro calls
+frees both the image structure and the data pointed to by the image structure.
+.NH 2
+Manipulating Bitmaps
+.XS
+\*(SN Manipulating Bitmaps
+.XE
+.LP
+Xlib provides functions that you can use to read a bitmap from a file,
+save a bitmap to a file, or create a bitmap.
+This section describes those functions that transfer bitmaps to and
+from the client's file system, thus allowing their reuse in a later
+connection (for example, from an entirely different client or to a
+different display or server).
+.LP
+The X version 11 bitmap file format is:
+.LP
+.sM
+.Ds 0
+#define \fIname\fP_width \fIwidth\fP
+#define \fIname\fP_height \fIheight\fP
+#define \fIname\fP_x_hot \fIx\fP
+#define \fIname\fP_y_hot \fIy\fP
+static unsigned char \fIname\fP_bits[] = { 0x\fINN\fP,... }
+.De
+.LP
+.eM
+The lines for the variables ending with _x_hot and _y_hot suffixes are optional
+because they are present only if a hotspot has been defined for this bitmap.
+The lines for the other variables are required.
+The word ``unsigned'' is optional;
+that is, the type of the _bits array can be ``char'' or ``unsigned char''.
+The _bits array must be large enough to contain the size bitmap.
+The bitmap unit is 8.
+.LP
+.sp
+To read a bitmap from a file and store it in a pixmap, use
+.PN XReadBitmapFile .
+.IN "XReadBitmapFile" "" "@DEF@"
+.sM
+.FD 0
+int XReadBitmapFile(\^\fIdisplay\fP, \fId\fP, \fIfilename\fP, \fIwidth_return\fP, \fIheight_return\fP, \fIbitmap_return\fP, \fIx_hot_return\fP,
+.br
+ \fIy_hot_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ char *\fIfilename\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
+.br
+ Pixmap *\fIbitmap_return\fP\^;
+.br
+ int *\fIx_hot_return\fP, *\fIy_hot_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Dr \ that indicates the screen
+.IP \fId\fP 1i
+Specifies the drawable\*(Dr.
+.IP \fIfilename\fP 1i
+Specifies the file name to use.
+The format of the file name is operating-system dependent.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height values of the read in bitmap file.
+.IP \fIbitmap_return\fP 1i
+Returns the bitmap that is created.
+.IP \fIx_hot_return\fP 1i
+.br
+.ns
+.IP \fIy_hot_return\fP 1i
+Return the hotspot coordinates.
+.LP
+.eM
+The
+.PN XReadBitmapFile
+function reads in a file containing a bitmap.
+The file is parsed in the encoding of the current locale.
+The ability to read other than the standard format
+is implementation-dependent.
+If the file cannot be opened,
+.PN XReadBitmapFile
+returns
+.PN BitmapOpenFailed .
+If the file can be opened but does not contain valid bitmap data,
+it returns
+.PN BitmapFileInvalid .
+If insufficient working storage is allocated,
+it returns
+.PN BitmapNoMemory .
+If the file is readable and valid,
+it returns
+.PN BitmapSuccess .
+.LP
+.PN XReadBitmapFile
+returns the bitmap's height and width, as read
+from the file, to width_return and height_return.
+It then creates a pixmap of the appropriate size,
+reads the bitmap data from the file into the pixmap,
+and assigns the pixmap to the caller's variable bitmap.
+The caller must free the bitmap using
+.PN XFreePixmap
+when finished.
+If \fIname\fP_x_hot and \fIname\fP_y_hot exist,
+.PN XReadBitmapFile
+returns them to x_hot_return and y_hot_return;
+otherwise, it returns \-1,\-1.
+.LP
+.PN XReadBitmapFile
+can generate
+.PN BadAlloc ,
+.PN BadDrawable ,
+and
+.PN BadGC
+errors.
+.LP
+.sp
+To read a bitmap from a file and return it as data, use
+.PN XReadBitmapFileData .
+.IN "XReadBitmapFileData" "" "@DEF@"
+.sM
+.FD 0
+int XReadBitmapFileData(\^\fIfilename\fP, \fIwidth_return\fP, \fIheight_return\fP, \fIdata_return\fP, \fIx_hot_return\fP, \fIy_hot_return\fP\^)
+.br
+ char *\fIfilename\fP\^;
+.br
+ unsigned int *\fIwidth_return\fP, *\fIheight_return\fP\^;
+.br
+ unsigned char *\fIdata_return\fP\^;
+.br
+ int *\fIx_hot_return\fP, *\fIy_hot_return\fP\^;
+.FN
+.IP \fIfilename\fP 1i
+Specifies the file name to use.
+The format of the file name is operating-system dependent.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height values of the read in bitmap file.
+.IP \fIdata_return\fP 1i
+Returns the bitmap data.
+.IP \fIx_hot_return\fP 1i
+.br
+.ns
+.IP \fIy_hot_return\fP 1i
+Return the hotspot coordinates.
+.LP
+.eM
+The
+.PN XReadBitmapFileData
+function reads in a file containing a bitmap, in the same manner as
+.PN XReadBitmapFile ,
+but returns the data directly rather than creating a pixmap in the server.
+The bitmap data is returned in data_return; the client must free this
+storage when finished with it by calling
+.PN XFree .
+The status and other return values are the same as for
+.PN XReadBitmapFile .
+.LP
+.sp
+To write out a bitmap from a pixmap to a file, use
+.PN XWriteBitmapFile .
+.IN "XWriteBitmapFile" "" "@DEF@"
+.sM
+.FD 0
+int XWriteBitmapFile(\^\fIdisplay\fP, \fIfilename\fP, \fIbitmap\fP, \fIwidth\fP, \fIheight\fP, \fIx_hot\fP, \fIy_hot\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIfilename\fP\^;
+.br
+ Pixmap \fIbitmap\fP\^;
+.br
+ unsigned int \fIwidth\fP, \fIheight\fP\^;
+.br
+ int \fIx_hot\fP, \fIy_hot\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfilename\fP 1i
+Specifies the file name to use.
+The format of the file name is operating-system dependent.
+.IP \fIbitmap\fP 1i
+Specifies the bitmap.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height.
+.IP \fIx_hot\fP 1i
+.br
+.ns
+.IP \fIy_hot\fP 1i
+Specify where to place the hotspot coordinates (or \-1,\-1 if none are present)
+in the file.
+.LP
+.eM
+The
+.PN XWriteBitmapFile
+function writes a bitmap out to a file in the X Version 11 format.
+The name used in the output file is derived from the file name
+by deleting the directory prefix.
+The file is written in the encoding of the current locale.
+If the file cannot be opened for writing,
+it returns
+.PN BitmapOpenFailed .
+If insufficient memory is allocated,
+.PN XWriteBitmapFile
+returns
+.PN BitmapNoMemory ;
+otherwise, on no error,
+it returns
+.PN BitmapSuccess .
+If x_hot and y_hot are not \-1, \-1,
+.PN XWriteBitmapFile
+writes them out as the hotspot coordinates for the bitmap.
+.LP
+.PN XWriteBitmapFile
+can generate
+.PN BadDrawable
+and
+.PN BadMatch
+errors.
+.LP
+.sp
+To create a pixmap and then store bitmap-format data into it, use
+.PN XCreatePixmapFromBitmapData .
+.IN "XCreatePixmapFromBitmapData" "" "@DEF@"
+.sM
+.FD 0
+Pixmap XCreatePixmapFromBitmapData\^(\^\fIdisplay\fP, \fId\fP, \fIdata\fP, \fIwidth\fP, \fIheight\fP, \fIfg\fP, \fIbg\fP, \fIdepth\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ char *\fIdata\fP\^;
+.br
+ unsigned int \fIwidth\fP, \fIheight\fP\^;
+.br
+ unsigned long \fIfg\fP, \fIbg\fP\^;
+.br
+ unsigned int \fIdepth\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Dr \ that indicates the screen
+.IP \fId\fP 1i
+Specifies the drawable\*(Dr.
+.IP \fIdata\fP 1i
+Specifies the data in bitmap format.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height.
+.IP \fIfg\fP 1i
+.br
+.ns
+.IP \fIbg\fP 1i
+Specify the foreground and background pixel values to use.
+.IP \fIdepth\fP 1i
+Specifies the depth of the pixmap.
+.LP
+.eM
+The
+.PN XCreatePixmapFromBitmapData
+function creates a pixmap of the given depth and then does a bitmap-format
+.PN XPutImage
+of the data into it.
+The depth must be supported by the screen of the specified drawable,
+or a
+.PN BadMatch
+error results.
+.LP
+.PN XCreatePixmapFromBitmapData
+can generate
+.PN BadAlloc ,
+.PN BadDrawable ,
+.PN BadGC ,
+and
+.PN BadValue
+errors.
+.LP
+.sp
+To include a bitmap written out by
+.PN XWriteBitmapFile
+.IN "XWriteBitmapFile"
+in a program directly, as opposed to reading it in every time at run time, use
+.PN XCreateBitmapFromData .
+.IN "XCreateBitmapFromData" "" "@DEF@"
+.sM
+.FD 0
+Pixmap XCreateBitmapFromData(\^\fIdisplay\fP, \fId\fP, \fIdata\fP, \fIwidth\fP, \fIheight\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ char *\fIdata\fP\^;
+.br
+ unsigned int \fIwidth\fP, \fIheight\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Dr \ that indicates the screen
+.IP \fId\fP 1i
+Specifies the drawable\*(Dr.
+.IP \fIdata\fP 1i
+Specifies the location of the bitmap data.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height.
+.LP
+.eM
+The
+.PN XCreateBitmapFromData
+function allows you to include in your C program (using
+.PN #include )
+a bitmap file that was written out by
+.PN XWriteBitmapFile
+(X version 11 format only) without reading in the bitmap file.
+The following example creates a gray bitmap:
+.LP
+.Ds 0
+#include "gray.bitmap"
+.sp 6p
+Pixmap bitmap;
+bitmap = XCreateBitmapFromData(display, window, gray_bits, gray_width, gray_height);
+.De
+.LP
+If insufficient working storage was allocated,
+.PN XCreateBitmapFromData
+returns
+.PN None .
+It is your responsibility to free the
+bitmap using
+.PN XFreePixmap
+when finished.
+.LP
+.PN XCreateBitmapFromData
+can generate
+.PN BadAlloc
+and
+.PN BadGC
+errors.
+.NH 2
+Using the Context Manager
+.XS
+\*(SN Using the Context Manager
+.XE
+.LP
+The context manager provides a way of associating data with an X resource ID
+(mostly typically a window) in your program.
+Note that this is local to your program;
+the data is not stored in the server on a property list.
+Any amount of data in any number of pieces can be associated with a
+resource ID,
+and each piece of data has a type associated with it.
+The context manager requires knowledge of the resource ID
+and type to store or retrieve data.
+.LP
+Essentially, the context manager can be viewed as a two-dimensional,
+sparse array: one dimension is subscripted by the X resource ID
+and the other by a context type field.
+Each entry in the array contains a pointer to the data.
+Xlib provides context management functions with which you can
+save data values, get data values, delete entries, and create a unique
+context type.
+The symbols used are in
+.hN X11/Xutil.h .
+.LP
+.sp
+To save a data value that corresponds to a resource ID and context type, use
+.PN XSaveContext .
+.IN "XSaveContext" "" "@DEF@"
+.sM
+.FD 0
+int XSaveContext(\^\fIdisplay\fP, \fIrid\fP, \fIcontext\fP, \fIdata\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIrid\fP\^;
+.br
+ XContext \fIcontext\fP\^;
+.br
+ XPointer \fIdata\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIrid\fP 1i
+Specifies the resource ID with which the data is associated.
+.IP \fIcontext\fP 1i
+Specifies the context type to which the data belongs.
+.IP \fIdata\fP 1i
+Specifies the data to be associated with the window and type.
+.LP
+.eM
+If an entry with the specified resource ID and type already exists,
+.PN XSaveContext
+overrides it with the specified context.
+The
+.PN XSaveContext
+function returns a nonzero error code if an error has occurred
+and zero otherwise.
+Possible errors are
+.PN XCNOMEM
+(out of memory).
+.LP
+.sp
+To get the data associated with a resource ID and type, use
+.PN XFindContext .
+.IN "XFindContext" "" "@DEF@"
+.sM
+.FD 0
+int XFindContext(\^\fIdisplay\fP, \fIrid\fP, \fIcontext\fP, \fIdata_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIrid\fP\^;
+.br
+ XContext \fIcontext\fP\^;
+.br
+ XPointer *\fIdata_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIrid\fP 1i
+Specifies the resource ID with which the data is associated.
+.IP \fIcontext\fP 1i
+Specifies the context type to which the data belongs.
+.IP \fIdata_return\fP 1i
+Returns the data.
+.LP
+.eM
+Because it is a return value,
+the data is a pointer.
+The
+.PN XFindContext
+function returns a nonzero error code if an error has occurred
+and zero otherwise.
+Possible errors are
+.PN XCNOENT
+(context-not-found).
+.LP
+.sp
+To delete an entry for a given resource ID and type, use
+.PN XDeleteContext .
+.IN "XDeleteContext" "" "@DEF@"
+.sM
+.FD 0
+int XDeleteContext(\^\fIdisplay\fP, \fIrid\fP, \fIcontext\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIrid\fP;
+.br
+ XContext \fIcontext\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIrid\fP 1i
+Specifies the resource ID with which the data is associated.
+.IP \fIcontext\fP 1i
+Specifies the context type to which the data belongs.
+.LP
+.eM
+The
+.PN XDeleteContext
+function deletes the entry for the given resource ID
+and type from the data structure.
+This function returns the same error codes that
+.PN XFindContext
+returns if called with the same arguments.
+.PN XDeleteContext
+does not free the data whose address was saved.
+.LP
+.sp
+To create a unique context type that may be used in subsequent calls to
+.PN XSaveContext
+and
+.PN XFindContext ,
+use
+.PN XUniqueContext .
+.IN "XUniqueContext" "" "@DEF@"
+.sM
+.FD 0
+XContext XUniqueContext(\^)
+.FN
+.LP
+.eM
+.bp
diff --git a/specs/X11/abstract.t b/specs/X11/abstract.t
new file mode 100644
index 0000000..6841aa2
--- /dev/null
+++ b/specs/X11/abstract.t
@@ -0,0 +1,102 @@
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.sp 5
+.ce 6
+\s+2\fBXlib \- C Language X Interface\fP\s-2
+
+\s+1\fBX Consortium Standard\fP\s-1
+
+\s+1\fBX Version 11, Release 6.4\fP\s-1
+.sp 6
+.ce 4
+\s-1James Gettys
+.sp 6p
+Cambridge Research Laboratory
+Digital Equipment Corporation
+.sp 2
+.ce 4
+Robert W. Scheifler
+.sp 6p
+Laboratory for Computer Science
+Massachusetts Institute of Technology
+.sp 3
+.ce 1
+\fIwith contributions from\fP
+.sp 3
+.ce 11
+Chuck Adams, Tektronix, Inc.
+.sp 1
+Vania Joloboff, Open Software Foundation
+.sp 1
+Hideki Hiura, SunSoft, Inc.
+.sp 1
+Bill McMahon, Hewlett-Packard Company
+.sp 1
+Ron Newman, Massachusetts Institute of Technology
+.sp 1
+Al Tabayoyon, Tektronix, Inc.
+.sp 1
+Glenn Widener, Tektronix, Inc.
+.sp 1
+Shigeru Yamada, Fujitsu OSSI
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+The X Window System is a trademark of X Consortium, Inc.
+.LP
+TekHVC is a trademark of Tektronix, Inc.
+.sp 2
+.LP
+Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994,1996 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+.sp 3
+.LP
+Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+Digital Equipment Corporation
+.LP
+Portions Copyright \(co 1990, 1991 by
+Tektronix, Inc.
+.LP
+Permission to use, copy, modify and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice appears in all copies and that both that copyright notice and
+this permission notice appear in all copies, and that the names of
+Digital and Tektronix not be used in in advertising or publicity
+pertaining to this documentation without specific, written prior permission.
+Digital and Tektronix makes no representations about the suitability
+of this documentation for any purpose.
+It is provided ``as is'' without express or implied warranty.
+.ps 11
+.nr PS 11
+.bp
diff --git a/specs/X11/credits.t b/specs/X11/credits.t
new file mode 100644
index 0000000..5d9909d
--- /dev/null
+++ b/specs/X11/credits.t
@@ -0,0 +1,216 @@
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.XS ii
+Table of Contents
+.XE
+.XS iii
+Acknowledgments
+.XE
+\&
+.sp 1
+.ce 3
+\s+1\fBAcknowledgments\fP\s-1
+.sp 2
+.na
+.LP
+The design and implementation of the first 10 versions of X
+were primarily the work of three individuals: Robert Scheifler of the
+MIT Laboratory for Computer Science and Jim Gettys of Digital
+Equipment Corporation and Ron Newman of MIT, both at MIT
+Project Athena.
+X version 11, however, is the result of the efforts of
+dozens of individuals at almost as many locations and organizations.
+At the risk of offending some of the players by exclusion,
+we would like to acknowledge some of the people who deserve special credit
+and recognition for their work on Xlib.
+Our apologies to anyone inadvertently overlooked.
+.SH
+Release 1
+.LP
+Our thanks does to Ron Newman (MIT Project Athena),
+who contributed substantially to the
+design and implementation of the Version 11 Xlib interface.
+.LP
+Our thanks also goes to Ralph Swick (Project Athena and Digital) who kept
+it all together for us during the early releases.
+He handled literally thousands of requests from people everywhere
+and saved the sanity of at least one of us.
+His calm good cheer was a foundation on which we could build.
+.LP
+Our thanks also goes to Todd Brunhoff (Tektronix) who was ``loaned''
+to Project Athena at exactly the right moment to provide very capable
+and much-needed assistance during the alpha and beta releases.
+He was responsible for the successful integration of sources
+from multiple sites;
+we would not have had a release without him.
+.LP
+Our thanks also goes to Al Mento and Al Wojtas of Digital's ULTRIX
+Documentation Group.
+With good humor and cheer,
+they took a rough draft and made it an infinitely better and more useful
+document.
+The work they have done will help many everywhere.
+We also would like to thank Hal Murray (Digital SRC) and
+Peter George (Digital VMS) who contributed much
+by proofreading the early drafts of this document.
+.LP
+Our thanks also goes to Jeff Dike (Digital UEG), Tom Benson,
+Jackie Granfield, and Vince Orgovan (Digital VMS) who helped with the
+library utilities implementation;
+to Hania Gajewska (Digital UEG-WSL) who,
+along with Ellis Cohen (CMU and Siemens),
+was instrumental in the semantic design of the window manager properties;
+and to Dave Rosenthal (Sun Microsystems) who also contributed to the protocol
+and provided the sample generic color frame buffer device-dependent code.
+.LP
+The alpha and beta test participants deserve special recognition and thanks
+as well.
+It is significant
+that the bug reports (and many fixes) during alpha and beta test came almost
+exclusively from just a few of the alpha testers, mostly hardware vendors
+working on product implementations of X.
+The continued public
+contribution of vendors and universities is certainly to the benefit
+of the entire X community.
+.LP
+Our special thanks must go to Sam Fuller, Vice-President of Corporate
+Research at Digital, who has remained committed to the widest public
+availability of X and who made it possible to greatly supplement MIT's
+resources with the Digital staff in order to make version 11 a reality.
+Many of the people mentioned here are part of the Western
+Software Laboratory (Digital UEG-WSL) of the ULTRIX Engineering group
+and work for Smokey Wallace, who has been vital to the project's success.
+Others not mentioned here worked on the toolkit and are acknowledged
+in the X Toolkit documentation.
+.LP
+Of course,
+we must particularly thank Paul Asente, formerly of Stanford University
+and now of Digital UEG-WSL, who wrote W, the predecessor to X,
+and Brian Reid, formerly of Stanford University and now of Digital WRL,
+who had much to do with W's design.
+.LP
+Finally, our thanks goes to MIT, Digital Equipment Corporation,
+and IBM for providing the environment where it could happen.
+.SH
+Release 4
+.LP
+Our thanks go to Jim Fulton (MIT X Consortium) for designing and
+specifying the new Xlib functions for Inter-Client Communication
+Conventions (ICCCM) support.
+.LP
+We also thank Al Mento of Digital for his continued effort in
+maintaining this document and Jim Fulton and Donna Converse (MIT X Consortium)
+for their much-appreciated efforts in reviewing the changes.
+.SH
+Release 5
+.LP
+The principal authors of the Input Method facilities are
+Vania Joloboff (Open Software Foundation) and Bill McMahon (Hewlett-Packard).
+The principal author of the rest of the internationalization facilities
+is Glenn Widener (Tektronix). Our thanks to them for keeping their
+sense of humor through a long and sometimes difficult design process.
+Although the words and much of the design are due to them, many others
+have contributed substantially to the design and implementation.
+Tom McFarland (HP) and Frank Rojas (IBM) deserve particular recognition
+for their contributions. Other contributors were:
+Tim Anderson (Motorola), Alka Badshah (OSF), Gabe Beged-Dov (HP),
+Chih-Chung Ko (III), Vera Cheng (III), Michael Collins (Digital),
+Walt Daniels (IBM), Noritoshi Demizu (OMRON), Keisuke Fukui (Fujitsu),
+Hitoshoi Fukumoto (Nihon Sun), Tim Greenwood (Digital), John Harvey (IBM),
+Hideki Hiura (Sun), Fred Horman (AT&T), Norikazu Kaiya (Fujitsu),
+Yuji Kamata (IBM),
+Yutaka Kataoka (Waseda University), Ranee Khubchandani (Sun), Akira Kon (NEC),
+Hiroshi Kuribayashi (OMRON), Teruhiko Kurosaka (Sun), Seiji Kuwari (OMRON),
+Sandra Martin (OSF), Narita Masahiko (Fujitsu), Masato Morisaki (NTT),
+Nelson Ng (Sun),
+Takashi Nishimura (NTT America), Makato Nishino (IBM),
+Akira Ohsone (Nihon Sun), Chris Peterson (MIT), Sam Shteingart (AT&T),
+Manish Sheth (AT&T), Muneiyoshi Suzuki (NTT), Cori Mehring (Digital),
+Shoji Sugiyama (IBM), and Eiji Tosa (IBM).
+.LP
+We are deeply indebted to Tatsuya Kato (NTT),
+Hiroshi Kuribayashi (OMRON), Seiji Kuwari (OMRON), Muneiyoshi Suzuki (NTT),
+and Li Yuhong (OMRON) for producing one of the first complete
+sample implementation of the internationalization facilities, and
+Hiromu Inukai (Nihon Sun), Takashi Fujiwara (Fujitsu), Hideki Hiura (Sun),
+Yasuhiro Kawai (Oki Technosystems Laboratory), Kazunori Nishihara (Fuji Xerox),
+Masaki Takeuchi (Sony), Katsuhisa Yano (Toshiba),
+Makoto Wakamatsu (Sony Corporation) for producing the another complete
+sample implementation of the internationalization facilities.
+.LP
+The principal authors (design and implementation) of the Xcms color
+management facilities are Al Tabayoyon (Tektronix)
+and Chuck Adams (Tektronix).
+Joann Taylor (Tektronix), Bob Toole (Tektronix),
+and Keith Packard (MIT X Consortium) also
+contributed significantly to the design. Others who contributed are:
+Harold Boll (Kodak), Ken Bronstein (HP), Nancy Cam (SGI),
+Donna Converse (MIT X Consortium), Elias Israel (ISC), Deron Johnson (Sun),
+Jim King (Adobe), Ricardo Motta (HP), Chuck Peek (IBM),
+Wil Plouffe (IBM), Dave Sternlicht (MIT X Consortium), Kumar Talluri (AT&T),
+and Richard Verberg (IBM).
+.LP
+We also once again thank Al Mento of Digital for his work in formatting
+and reformatting text for this manual, and for producing man pages.
+Thanks also to Clive Feather (IXI) for proof-reading and finding a
+number of small errors.
+.SH
+Release 6
+.LP
+Stephen Gildea (X Consortium) authored the threads support.
+Ovais Ashraf (Sun) and Greg Olsen (Sun) contributed substantially
+by testing the facilities and reporting bugs in a timely fashion.
+.LP
+The principal authors of the internationalization facilities, including
+Input and Output Methods, are Hideki Hiura (SunSoft) and
+Shigeru Yamada (Fujitsu OSSI).
+Although the words and much of the design are due to them, many others
+have contributed substantially to the design and implementation.
+They are: Takashi Fujiwara (Fujitsu), Yoshio Horiuchi (IBM),
+Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft),
+Song JaeKyung (KAIST), Franky Ling (Digital), Tom McFarland (HP),
+Hiroyuki Miyamoto (Digital), Masahiko Narita (Fujitsu),
+Frank Rojas (IBM), Hidetoshi Tajima (HP), Masaki Takeuchi (Sony),
+Makoto Wakamatsu (Sony), Masaki Wakao (IBM), Katsuhisa Yano(Toshiba) and
+Jinsoo Yoon (KAIST).
+.LP
+The principal producers of the sample implementation of the
+internationalization facilities are:
+Jeffrey Bloomfield (Fujitsu OSSI), Takashi Fujiwara (Fujitsu),
+Hideki Hiura (SunSoft), Yoshio Horiuchi (IBM),
+Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft),
+Song JaeKyung (KAIST), Riki Kawaguchi (Fujitsu),
+Franky Ling (Digital), Hiroyuki Miyamoto (Digital),
+Hidetoshi Tajima (HP), Toshimitsu Terazono (Fujitsu),
+Makoto Wakamatsu (Sony), Masaki Wakao (IBM),
+Shigeru Yamada (Fujitsu OSSI) and Katsuhisa Yano (Toshiba).
+.LP
+The coordinators of the integration, testing, and release of this
+implementation of the internationalization facilities are
+Nobuyuki Tanaka (Sony) and Makoto Wakamatsu (Sony).
+.LP
+Others who have contributed to the architectural design or
+testing of the sample implementation of the
+internationalization facilities are:
+Hector Chan (Digital), Michael Kung (IBM), Joseph Kwok (Digital),
+Hiroyuki Machida (Sony), Nelson Ng (SunSoft), Frank Rojas (IBM),
+Yoshiyuki Segawa (Fujitsu OSSI), Makiko Shimamura (Fujitsu),
+Shoji Sugiyama (IBM), Lining Sun (SGI), Masaki Takeuchi (Sony),
+Jinsoo Yoon (KAIST) and Akiyasu Zen (HP).
+.sp 2
+.LP
+.Ds 0
+.TA 1.5i 3i
+.ta 1.5i 3i
+.R
+Jim Gettys
+Cambridge Research Laboratory
+Digital Equipment Corporation
+
+Robert W. Scheifler
+Laboratory for Computer Science
+Massachusetts Institute of Technology
+.DE
+.bp 1
diff --git a/specs/X11/glossary b/specs/X11/glossary
new file mode 100644
index 0000000..a130928
--- /dev/null
+++ b/specs/X11/glossary
@@ -0,0 +1,1484 @@
+\&
+.sp 1
+.ce 1
+\s+1\fBGlossary\fP\s-1
+.sp 2
+.na
+.LP
+.XS
+Glossary
+.XE
+.KS
+\fBAccess control list\fP
+.IN "Access control list" "" "@DEF@"
+.IP
+X maintains a list of hosts from which client programs can be run.
+By default,
+only programs on the local host and hosts specified in an initial list read
+by the server can use the display.
+This access control list can be changed by clients on the local host.
+Some server implementations can also implement other authorization mechanisms
+in addition to or in place of this mechanism.
+The action of this mechanism can be conditional based on the authorization
+protocol name and data received by the server at connection setup.
+.KE
+.LP
+.KS
+\fBActive grab\fP
+.IN "Active grab" "" "@DEF@"
+.IP
+A grab is active when the pointer or keyboard is actually owned by the
+single grabbing client.
+.KE
+.LP
+.KS
+\fBAncestors\fP
+.IN "Ancestors" "" "@DEF@"
+.IP
+If W is an inferior of A, then A is an ancestor of W.
+.KE
+.LP
+.KS
+\fBAtom\fP
+.IN "Atom" "" "@DEF@"
+.IP
+An atom is a unique ID corresponding to a string name.
+Atoms are used to identify properties, types, and selections.
+.KE
+.LP
+.KS
+\fBBackground\fP
+.IN "Background" "" "@DEF@"
+.IP
+An
+.PN InputOutput
+window can have a background, which is defined as a pixmap.
+When regions of the window have their contents lost
+or invalidated,
+the server automatically tiles those regions with the background.
+.KE
+.LP
+.KS
+\fBBacking store\fP
+.IN "Backing store" "" "@DEF@"
+.IP
+When a server maintains the contents of a window,
+the pixels saved off-screen are known as a backing store.
+.KE
+.LP
+.KS
+\fBBase font name\fP
+.IN "Base font name" "" "@DEF@"
+.IP
+A font name used to select a family of fonts whose members may be encoded
+in various charsets.
+The
+.PN CharSetRegistry
+and
+.PN CharSetEncoding
+fields of an XLFD name identify the charset of the font.
+A base font name may be a full XLFD name, with all fourteen '-' delimiters,
+or an abbreviated XLFD name containing only the first 12 fields of an XLFD name,
+up to but not including
+.PN CharSetRegistry ,
+with or without the thirteenth '-', or a non-XLFD name.
+Any XLFD fields may contain wild cards.
+.IP
+When creating an
+.PN XFontSet ,
+Xlib accepts from the client a list of one or more base font names
+which select one or more font families.
+They are combined with charset names obtained from the encoding of the locale
+to load the fonts required to render text.
+.KE
+.LP
+.KS
+\fBBit gravity\fP
+.IN "Bit" "gravity" "@DEF@"
+.IP
+When a window is resized,
+the contents of the window are not necessarily discarded.
+It is possible to request that the server relocate the previous contents
+to some region of the window (though no guarantees are made).
+This attraction of window contents for some location of
+a window is known as bit gravity.
+.KE
+.LP
+.KS
+\fBBit plane\fP
+.IN "Bit" "plane" "@DEF@"
+.IP
+When a pixmap or window is thought of as a stack of bitmaps,
+each bitmap is called a bit plane or plane.
+.KE
+.LP
+.KS
+\fBBitmap\fP
+.IN "Bitmap" "" "@DEF@"
+.IP
+A bitmap is a pixmap of depth one.
+.KE
+.LP
+.KS
+\fBBorder\fP
+.IN "Border" "" "@DEF@"
+.IP
+An
+.PN InputOutput
+window can have a border of equal thickness on all four sides of the window.
+The contents of the border are defined by a pixmap,
+and the server automatically maintains the contents of the border.
+Exposure events are never generated for border regions.
+.KE
+.LP
+.KS
+\fBButton grabbing\fP
+.IN "Button" "grabbing" "@DEF@"
+.IP
+Buttons on the pointer can be passively grabbed by a client.
+When the button is pressed,
+the pointer is then actively grabbed by the client.
+.KE
+.LP
+.KS
+\fBByte order\fP
+.IN "Byte" "order" "@DEF@"
+.IP
+For image (pixmap/bitmap) data,
+the server defines the byte order,
+and clients with different native byte ordering must swap bytes as
+necessary.
+For all other parts of the protocol,
+the client defines the byte order,
+and the server swaps bytes as necessary.
+.KE
+.LP
+.KS
+\fBCharacter\fP
+.IN "Character" "" "@DEF@"
+.IP
+A member of a set of elements used for the organization,
+control, or representation of text (ISO2022, as adapted by XPG3).
+Note that in ISO2022 terms, a character is not bound to a coded value
+until it is identified as part of a coded character set.
+.KE
+.LP
+.KS
+\fBCharacter glyph\fP
+.IN "Character glyph" "" "@DEF@"
+.IP
+The abstract graphical symbol for a character.
+Character glyphs may or may not map one-to-one to font glyphs,
+and may be context-dependent, varying with the adjacent characters.
+Multiple characters may map to a single character glyph.
+.KE
+.LP
+.KS
+\fBCharacter set\fP
+.IN "Character set" "" "@DEF@"
+.IP
+A collection of characters.
+.KE
+.LP
+.KS
+\fBCharset\fP
+.IN "Charset" "" "@DEF@"
+.IP
+An encoding with a uniform, state-independent mapping from characters
+to codepoints.
+A coded character set.
+.IP
+For display in X,
+there can be a direct mapping from a charset to one font,
+if the width of all characters in the charset is either one or two bytes.
+A text string encoded in an encoding such as Shift-JIS cannot be passed
+directly to the X server, because the text imaging requests accept only
+single-width charsets (either 8 or 16 bits).
+Charsets which meet these restrictions can serve as ``font charsets''.
+Font charsets strictly speaking map font indices to font glyphs,
+not characters to character glyphs.
+.IP
+Note that a single font charset is sometimes used as the encoding of a locale,
+for example, ISO8859-1.
+.KE
+.LP
+.KS
+\fBChildren\fP
+.IN "Children" "" "@DEF@"
+.IP
+The children of a window are its first-level subwindows.
+.KE
+.LP
+.KS
+\fBClass\fP
+.IN "Class" "" "@DEF@"
+.IP
+Windows can be of different classes or types.
+See the entries for
+.PN InputOnly
+and
+.PN InputOutput
+windows for further information about valid window types.
+.KE
+.LP
+.KS
+\fBClient\fP
+.IN "Client" "" "@DEF@"
+.IP
+An application program connects to the window system server by some
+interprocess communication (IPC) path, such as a TCP connection or a
+shared memory buffer.
+This program is referred to as a client of the window system server.
+More precisely,
+the client is the IPC path itself.
+A program with multiple paths open to the server is viewed as
+multiple clients by the protocol.
+Resource lifetimes are controlled by
+connection lifetimes, not by program lifetimes.
+.KE
+.LP
+.KS
+\fBClipping region\fP
+.IN "Clipping region" "" "@DEF@"
+.IP
+In a graphics context,
+a bitmap or list of rectangles can be specified
+to restrict output to a particular region of the window.
+The image defined by the bitmap or rectangles is called a clipping region.
+.KE
+.LP
+.KS
+\fBCoded character\fP
+.IN "Coded character" "" "@DEF@"
+.IP
+A character bound to a codepoint.
+.KE
+.LP
+.KS
+\fBCoded character set\fP
+.IN "Coded character set" "" "@DEF@"
+.IP
+A set of unambiguous rules that establishes a character set
+and the one-to-one relationship between each character of the set
+and its bit representation.
+(ISO2022, as adapted by XPG3)
+A definition of a one-to-one mapping of a set of characters to a set of
+codepoints.
+.KE
+.LP
+.KS
+\fBCodepoint\fP
+.IN "Codepoint" "" "@DEF@"
+.IP
+The coded representation of a single character in a coded character set.
+.KE
+.LP
+.KS
+\fBColormap\fP
+.IN "Colormap" "" "@DEF@"
+.IP
+A colormap consists of a set of entries defining color values.
+The colormap associated with a window is used to display the contents of
+the window; each pixel value indexes the colormap to produce an RGB value
+that drives the guns of a monitor.
+Depending on hardware limitations,
+one or more colormaps can be installed at one time so
+that windows associated with those maps display with true colors.
+.KE
+.LP
+.KS
+\fBConnection\fP
+.IN "Connection" "" "@DEF@"
+.IP
+The IPC path between the server and client program is known as a connection.
+A client program typically (but not necessarily) has one
+connection to the server over which requests and events are sent.
+.KE
+.LP
+.KS
+\fBContainment\fP
+.IN "Containment" "" "@DEF@"
+.IP
+A window contains the pointer if the window is viewable and the
+hotspot of the cursor is within a visible region of the window or a
+visible region of one of its inferiors.
+The border of the window is included as part of the window for containment.
+The pointer is in a window if the window contains the pointer
+but no inferior contains the pointer.
+.KE
+.LP
+.KS
+\fBCoordinate system\fP
+.IN "Coordinate system" "" "@DEF@"
+.IP
+The coordinate system has X horizontal and Y vertical,
+with the origin [0, 0] at the upper left.
+Coordinates are integral and coincide with pixel centers.
+Each window and pixmap has its own coordinate system.
+For a window,
+the origin is inside the border at the inside upper-left corner.
+.KE
+.LP
+.KS
+\fBCursor\fP
+.IN "Cursor" "" "@DEF@"
+.IP
+A cursor is the visible shape of the pointer on a screen.
+It consists of a hotspot, a source bitmap, a shape bitmap,
+and a pair of colors.
+The cursor defined for a window controls the visible
+appearance when the pointer is in that window.
+.KE
+.LP
+.KS
+\fBDepth\fP
+.IN "Depth" "" "@DEF@"
+.IP
+The depth of a window or pixmap is the number of bits per pixel it has.
+The depth of a graphics context is the depth of the drawables it can be
+used in conjunction with graphics output.
+.KE
+.LP
+.KS
+\fBDevice\fP
+.IN "Device" "" "@DEF@"
+.IP
+Keyboards, mice, tablets, track-balls, button boxes, and so on are all
+collectively known as input devices.
+Pointers can have one or more buttons
+(the most common number is three).
+The core protocol only deals with two devices: the keyboard
+and the pointer.
+.KE
+.LP
+.KS
+\fBDirectColor\fP
+.IN "DirectColor" "" "@DEF@"
+.IP
+.PN DirectColor
+is a class of colormap in which a pixel value is decomposed into three
+separate subfields for indexing.
+The first subfield indexes an array to produce red intensity values.
+The second subfield indexes a second array to produce blue intensity values.
+The third subfield indexes a third array to produce green intensity values.
+The RGB (red, green, and blue) values in the colormap entry can be
+changed dynamically.
+.KE
+.LP
+.KS
+\fBDisplay\fP
+.IN "Display" "" "@DEF@"
+.IP
+A server, together with its screens and input devices, is called a display.
+The Xlib
+.PN Display
+.IN "Display" "structure"
+structure contains all information about the particular display and its screens
+as well as the state that Xlib needs to communicate with the display over a
+particular connection.
+.KE
+.LP
+.KS
+\fBDrawable\fP
+.IN "Drawable" "" "@DEF@"
+.IP
+Both windows and pixmaps can be used as sources and destinations
+in graphics operations.
+These windows and pixmaps are collectively known as drawables.
+However, an
+.PN InputOnly
+window cannot be used as a source or destination in a
+graphics operation.
+.KE
+.LP
+.KS
+\fBEncoding\fP
+.IN "Encoding" "" "@DEF@"
+.IP
+A set of unambiguous rules that establishes a character set
+and a relationship between the characters and their representations.
+The character set does not have to be fixed to a finite pre-defined set of
+characters.
+The representations do not have to be of uniform length.
+Examples are an ISO2022 graphic set, a state-independent
+or state-dependent combination of graphic sets, possibly including control
+sets, and the X Compound Text encoding.
+.IP
+In X, encodings are identified by a string
+which appears as: the
+.PN CharSetRegistry
+and
+.PN CharSetEncoding
+components of an XLFD
+name; the name of a charset of the locale for which a font could not be
+found; or an atom which identifies the encoding of a text property or
+which names an encoding for a text selection target type.
+Encoding names should be composed of characters from the X Portable
+Character Set.
+.KE
+.LP
+.KS
+\fBEscapement\fP
+.IN "Escapement" "" "@DEF@"
+.IP
+The escapement of a string is the distance in pixels in the
+primary draw direction from the drawing origin to the origin of the next
+character (that is, the one following the given string) to be drawn.
+.KE
+.LP
+.KS
+\fBEvent\fP
+.IN "Event" "" "@DEF@"
+.IP
+Clients are informed of information asynchronously by means of events.
+These events can be either asynchronously generated from devices or
+generated as side effects of client requests.
+Events are grouped into types.
+The server never sends an event to a client unless the
+client has specifically asked to be informed of that type of event.
+However, clients can force events to be sent to other clients.
+Events are typically reported relative to a window.
+.KE
+.LP
+.KS
+\fBEvent mask\fP
+.IN "Event" "mask" "@DEF@"
+.IP
+Events are requested relative to a window.
+The set of event types a client requests relative to a window is described
+by using an event mask.
+.KE
+.LP
+.KS
+\fBEvent propagation\fP
+.IN "Event" "propagation" "@DEF@"
+.IP
+Device-related events propagate from the source window to ancestor
+windows until some client has expressed interest in handling that type
+of event or until the event is discarded explicitly.
+.KE
+.LP
+.KS
+\fBEvent source\fP
+.IN "Event" "source" "@DEF@"
+.IP
+The deepest viewable window that the pointer is in is called
+the source of a device-related event.
+.KE
+.LP
+.KS
+\fBEvent synchronization\fP
+.IN "Event" "synchronization" "@DEF@"
+.IP
+There are certain race conditions possible when demultiplexing device
+events to clients (in particular, deciding where pointer and keyboard
+events should be sent when in the middle of window management
+operations).
+The event synchronization mechanism allows synchronous processing of
+device events.
+.KE
+.LP
+.KS
+\fBExposure event\fP
+.IN "Event" "Exposure" "@DEF@"
+.IP
+Servers do not guarantee to preserve the contents of windows when
+windows are obscured or reconfigured.
+Exposure events are sent to clients to inform them when contents of regions
+of windows have been lost.
+.KE
+.LP
+.KS
+\fBExtension\fP
+.IN "Extension" "" "@DEF@"
+.IP
+Named extensions to the core protocol can be defined to extend the system.
+Extensions to output requests, resources, and event types are all possible
+and expected.
+.KE
+.LP
+.KS
+\fBFont\fP
+.IN "Font" "" "@DEF@"
+.IP
+A font is an array of glyphs (typically characters).
+The protocol does no translation or interpretation of character sets.
+The client simply indicates values used to index the glyph array.
+A font contains additional metric information to determine interglyph
+and interline spacing.
+.KE
+.LP
+.KS
+\fBFont glyph\fP
+.IN "Font glyph" "" "@DEF@"
+.IP
+The abstract graphical symbol for an index into a font.
+.KE
+.LP
+.KS
+\fBFrozen events\fP
+.IN "Frozen events" "" "@DEF@"
+.IP
+Clients can freeze event processing during keyboard and pointer grabs.
+.KE
+.LP
+.KS
+\fBGC\fP
+.IN "GC" "" "@DEF@"
+.IP
+GC is an abbreviation for graphics context.
+See \fBGraphics context\fP.
+.KE
+.LP
+.KS
+\fBGlyph\fP
+.IN "Glyph" "" "@DEF@"
+.IP
+An identified abstract graphical symbol independent of any actual image.
+(ISO/IEC/DIS 9541-1)
+An abstract visual representation of a graphic character,
+not bound to a codepoint.
+.KE
+.LP
+.KS
+\fBGlyph image\fP
+.IN "Glyph image" "" "@DEF@"
+.IP
+An image of a glyph, as obtained from a glyph representation displayed
+on a presentation surface.
+(ISO/IEC/DIS 9541-1)
+.KE
+.LP
+.KS
+\fBGrab\fP
+.IN "Grab" "" "@DEF@"
+.IP
+Keyboard keys, the keyboard, pointer buttons, the pointer,
+and the server can be grabbed for exclusive use by a client.
+In general,
+these facilities are not intended to be used by normal applications
+but are intended for various input and window managers to implement various
+styles of user interfaces.
+.KE
+.LP
+.KS
+\fBGraphics context\fP
+.IN "Graphics context" "" "@DEF@"
+.IP
+Various information for graphics output is stored in a graphics
+context (GC), such as foreground pixel, background
+pixel, line width, clipping region, and so on.
+A graphics context can only
+be used with drawables that have the same root and the same depth as
+the graphics context.
+.KE
+.LP
+.KS
+\fBGravity\fP
+.IN "Gravity" "" "@DEF@"
+.IP
+The contents of windows and windows themselves have a gravity,
+which determines how the contents move when a window is resized.
+See \fBBit gravity\fP and \fBWindow gravity\fP.
+.KE
+.LP
+.KS
+\fBGrayScale\fP
+.IN "GrayScale" "" "@DEF@"
+.IP
+.PN GrayScale
+can be viewed as a degenerate case of
+.PN PseudoColor ,
+in which the red, green, and blue values in any given colormap entry
+are equal and thus, produce shades of gray.
+The gray values can be changed dynamically.
+.KE
+.LP
+.KS
+\fBHost Portable Character Encoding\fP
+.IN "Host Portable Character Encoding" "" "@DEF@"
+.IP
+The encoding of the X Portable Character Set on the host.
+The encoding itself is not defined by this standard,
+but the encoding must be the same in all locales supported by Xlib on the host.
+If a string is said to be in the Host Portable Character Encoding,
+then it only contains characters from the X Portable Character Set,
+in the host encoding.
+.KE
+.LP
+.KS
+\fBHotspot\fP
+.IN "Hotspot" "" "@DEF@"
+.IP
+A cursor has an associated hotspot, which defines the point in the
+cursor corresponding to the coordinates reported for the pointer.
+.KE
+.LP
+.KS
+\fBIdentifier\fP
+.IN "Identifier" "" "@DEF@"
+.IP
+An identifier is a unique value associated with a resource
+that clients use to name that resource.
+The identifier can be used over any connection to name the resource.
+.KE
+.LP
+.KS
+\fBInferiors\fP
+.IN "Inferiors" "" "@DEF@"
+.IP
+The inferiors of a window are all of the subwindows nested below it:
+the children, the children's children, and so on.
+.KE
+.LP
+.KS
+\fBInput focus\fP
+.IN "Input" "focus" "@DEF@"
+.IP
+The input focus is usually a window defining the scope for processing
+of keyboard input.
+If a generated keyboard event usually would be reported to this window
+or one of its inferiors,
+the event is reported as usual.
+Otherwise, the event is reported with respect to the focus window.
+The input focus also can be set such that all keyboard events are discarded
+and such that the focus window is dynamically taken to be the root window
+of whatever screen the pointer is on at each keyboard event.
+.KE
+.LP
+.KS
+\fBInput manager\fP
+.IN "Input" "manager" "@DEF@"
+.IP
+Control over keyboard input is typically provided by an input manager
+client, which usually is part of a window manager.
+.KE
+.LP
+.KS
+\fBInputOnly window\fP
+.IN "Window" "InputOnly" "@DEF@"
+.IP
+An
+.PN InputOnly
+window is a window that cannot be used for graphics requests.
+.PN InputOnly
+windows are invisible and are used to control such things as cursors,
+input event generation, and grabbing.
+.PN InputOnly
+windows cannot have
+.PN InputOutput
+windows as inferiors.
+.KE
+.LP
+.KS
+\fBInputOutput window\fP
+.IN "Window" "InputOutput" "@DEF@"
+.IP
+An
+.PN InputOutput
+window is the normal kind of window that is used for both input and output.
+.PN InputOutput
+windows can have both
+.PN InputOutput
+and
+.PN InputOnly
+windows as inferiors.
+.KE
+.LP
+.KS
+\fBInternationalization\fP
+.IN "Internationalization" "" "@DEF@"
+.IP
+The process of making software adaptable to the requirements
+of different native languages, local customs, and character string encodings.
+Making a computer program adaptable to different locales
+without program source modifications or recompilation.
+.KE
+.LP
+.KS
+\fBISO2022\fP
+.IN "ISO2022" "" "@DEF@"
+.IP
+ISO standard for code extension techniques for 7-bit and 8-bit coded
+character sets.
+.KE
+.LP
+.KS
+\fBKey grabbing\fP
+.IN "Key" "grabbing" "@DEF@"
+.IP
+Keys on the keyboard can be passively grabbed by a client.
+When the key is pressed,
+the keyboard is then actively grabbed by the client.
+.KE
+.LP
+.KS
+\fBKeyboard grabbing\fP
+.IN "Keyboard" "grabbing" "@DEF@"
+.IP
+A client can actively grab control of the keyboard, and key events
+will be sent to that client rather than the client the events would
+normally have been sent to.
+.KE
+.LP
+.KS
+\fBKeysym\fP
+.IN "Keysym" "" "@DEF@"
+.IP
+An encoding of a symbol on a keycap on a keyboard.
+.KE
+.LP
+.KS
+\fBLatin-1\fP
+.IN "Latin-1" "" "@DEF@"
+.IP
+The coded character set defined by the ISO8859-1 standard.
+.KE
+.LP
+.KS
+\fBLatin Portable Character Encoding\fP
+.IN "Latin Portable Character Encoding" "" "@DEF@"
+.IP
+The encoding of the X Portable Character Set using the Latin-1 codepoints
+plus ASCII control characters.
+If a string is said to be in the Latin Portable Character Encoding,
+then it only contains characters from the X Portable Character Set,
+not all of Latin-1.
+.KE
+.LP
+.KS
+\fBLocale\fP
+.IN "Locale" "" "@DEF@"
+.IP
+The international environment of a computer program defining the ``localized''
+behavior of that program at run-time.
+This information can be established from one or more sets of localization data.
+ANSI C defines locale-specific processing by C system library calls.
+See ANSI C and the X/Open Portability Guide specifications for more details.
+In this specification, on implementations that conform to the ANSI C library,
+the ``current locale'' is the current setting of the LC_CTYPE
+.PN setlocale
+category.
+Associated with each locale is a text encoding. When text is processed
+in the context of a locale, the text must be in the encoding of the locale.
+The current locale affects Xlib in its:
+.RS
+.IP \(bu 5
+Encoding and processing of input method text
+.IP \(bu 5
+Encoding of resource files and values
+.IP \(bu 5
+Encoding and imaging of text strings
+.IP \(bu 5
+Encoding and decoding for inter-client text communication
+.RE
+.KE
+.LP
+.KS
+\fBLocale name\fP
+.IN "Locale name" "" "@DEF@"
+.IP
+The identifier used to select the desired locale for the host C library
+and X library functions.
+On ANSI C library compliant systems,
+the locale argument to the
+.PN setlocale
+function.
+.KE
+.LP
+.KS
+\fBLocalization\fP
+.IN "Localization" "" "@DEF@"
+.IP
+The process of establishing information within a computer system specific
+to the operation of particular native languages, local customs
+and coded character sets.
+(XPG3)
+.KE
+.LP
+.KS
+\fBMapped\fP
+.IN "Mapped window" "" "@DEF@"
+.IP
+A window is said to be mapped if a map call has been performed on it.
+Unmapped windows and their inferiors are never viewable or visible.
+.KE
+.LP
+.KS
+\fBModifier keys\fP
+.IN "Modifier keys" "" "@DEF@"
+.IP
+Shift, Control, Meta, Super, Hyper, Alt, Compose, Apple, CapsLock,
+ShiftLock, and similar keys are called modifier keys.
+.KE
+.LP
+.KS
+\fBMonochrome\fP
+.IN "Monochrome" "" "@DEF@"
+.IP
+Monochrome is a special case of
+.PN StaticGray
+in which there are only two colormap entries.
+.KE
+.LP
+.KS
+\fBMultibyte\fP
+.IN "Multibyte" "" "@DEF@"
+.IP
+A character whose codepoint is stored in more than one byte;
+any encoding which can contain multibyte characters;
+text in a multibyte encoding.
+The ``char *'' null-terminated string datatype in ANSI C.
+Note that references in this document to multibyte strings
+imply only that the strings \fImay\fP contain multibyte characters.
+.KE
+.LP
+.KS
+\fBObscure\fP
+.IN "Obscure" "" "@DEF@"
+.IP
+A window is obscured if some other window obscures it.
+A window can be partially obscured and so still have visible regions.
+Window A obscures window B if both are viewable
+.PN InputOutput
+windows, if A is higher in the global stacking order,
+and if the rectangle defined by the outside
+edges of A intersects the rectangle defined by the outside edges of B.
+Note the distinction between obscures and occludes.
+Also note that window borders are included in the calculation.
+.KE
+.LP
+.KS
+\fBOcclude\fP
+.IN "Occlude" "" "@DEF@"
+.IP
+A window is occluded if some other window occludes it.
+Window A occludes window B if both are mapped,
+if A is higher in the global stacking order,
+and if the rectangle defined by the outside edges of A intersects the rectangle defined
+by the outside edges of B.
+Note the distinction between occludes and obscures.
+Also note that window borders are included in the calculation
+and that
+.PN InputOnly
+windows never obscure other windows but can occlude other windows.
+.KE
+.LP
+.KS
+\fBPadding\fP
+.IN "Padding" "" "@DEF@"
+.IP
+Some padding bytes are inserted in the data stream to maintain
+alignment of the protocol requests on natural boundaries.
+This increases ease of portability to some machine architectures.
+.KE
+.LP
+.KS
+\fBParent window\fP
+.IN "Window" "parent" "@DEF@"
+.IP
+If C is a child of P, then P is the parent of C.
+.KE
+.LP
+.KS
+\fBPassive grab\fP
+.IN "Passive grab" "" "@DEF@"
+.IP
+Grabbing a key or button is a passive grab.
+The grab activates when the key or button is actually pressed.
+.KE
+.LP
+.KS
+\fBPixel value\fP
+.IN "Pixel value" "" "@DEF@"
+.IP
+A pixel is an N-bit value,
+where N is the number of bit planes used in a particular window or pixmap
+(that is, is the depth of the window or pixmap).
+A pixel in a window indexes a colormap to derive an actual color to be
+displayed.
+.KE
+.LP
+.KS
+\fBPixmap\fP
+.IN "Pixmap" "" "@DEF@"
+.EQ
+delim %%
+.EN
+.IP
+A pixmap is a three-dimensional array of bits.
+A pixmap is normally thought of as a two-dimensional array of pixels,
+where each pixel can be a value from 0 to %2 sup N %\-1,
+and where N is the depth (z axis) of the pixmap.
+A pixmap can also be thought of as a stack of N bitmaps.
+A pixmap can only be used on the screen that it was created in.
+.KE
+.LP
+.KS
+\fBPlane\fP
+.IN "Plane" "" "@DEF@"
+.IP
+When a pixmap or window is thought of as a stack of bitmaps, each
+bitmap is called a plane or bit plane.
+.KE
+.LP
+.KS
+\fBPlane mask\fP
+.IN "Plane" "mask" "@DEF@"
+.IP
+Graphics operations can be restricted to only affect a subset of bit
+planes of a destination.
+A plane mask is a bit mask describing which planes are to be modified.
+The plane mask is stored in a graphics context.
+.KE
+.LP
+.KS
+\fBPointer\fP
+.IN "Pointer" "" "@DEF@"
+.IP
+The pointer is the pointing device currently attached to the cursor
+and tracked on the screens.
+.KE
+.LP
+.KS
+\fBPointer grabbing\fP
+.IN "Pointer" "grabbing" "@DEF@"
+.IP
+A client can actively grab control of the pointer.
+Then button and motion events will be sent to that client
+rather than the client the events would normally have been sent to.
+.KE
+.LP
+.KS
+\fBPointing device\fP
+.IN "Pointing device" "" "@DEF@"
+.IP
+A pointing device is typically a mouse, tablet, or some other
+device with effective dimensional motion.
+The core protocol defines only one visible cursor,
+which tracks whatever pointing device is attached as the pointer.
+.KE
+.LP
+.KS
+\fBPOSIX\fP
+.IN "POSIX" "" "@DEF@"
+.IP
+Portable Operating System Interface, ISO/IEC 9945-1 (IEEE Std 1003.1).
+.KE
+.LP
+.KS
+\fBPOSIX Portable Filename Character Set\fP
+.IN "POSIX Portable Filename Character Set" "" "@DEF@"
+.IP
+The set of 65 characters which can be used in naming files on a POSIX-compliant
+host that are correctly processed in all locales.
+The set is:
+.IP
+.Ds 0
+a..z A..Z 0..9 ._-
+.De
+.KE
+.LP
+.KS
+\fBProperty\fP
+.IN "Property" "" "@DEF@"
+.IP
+Windows can have associated properties that consist of a name, a type,
+a data format, and some data.
+The protocol places no interpretation on properties.
+They are intended as a general-purpose naming mechanism for clients.
+For example, clients might use properties to share information such as resize
+hints, program names, and icon formats with a window manager.
+.KE
+.LP
+.KS
+\fBProperty list\fP
+.IN "Property list" "" "@DEF@"
+.IP
+The property list of a window is the list of properties that have
+been defined for the window.
+.KE
+.LP
+.KS
+\fBPseudoColor\fP
+.IN "PseudoColor" "" "@DEF@"
+.IP
+.PN PseudoColor
+is a class of colormap in which a pixel value indexes the colormap entry to
+produce an independent RGB value;
+that is, the colormap is viewed as an array of triples (RGB values).
+The RGB values can be changed dynamically.
+.KE
+.LP
+.KS
+\fBRectangle\fP
+.IN "Rectangle" "" "@DEF@"
+.IP
+A rectangle specified by [x,y,w,h] has an infinitely thin
+outline path with corners at [x,y], [x+w,y], [x+w,y+h], and [x, y+h].
+When a rectangle is filled,
+the lower-right edges are not drawn.
+For example,
+if w=h=0,
+nothing would be drawn.
+For w=h=1,
+a single pixel would be drawn.
+.KE
+.LP
+.KS
+\fBRedirecting control\fP
+.IN "Redirecting control" "" "@DEF@"
+.IP
+Window managers (or client programs) may enforce window layout
+policy in various ways.
+When a client attempts to change the size or position of a window,
+the operation may be redirected to a specified client
+rather than the operation actually being performed.
+.KE
+.LP
+.KS
+\fBReply\fP
+.IN "Reply" "" "@DEF@"
+.IP
+Information requested by a client program using the X protocol
+is sent back to the client with a reply.
+Both events and replies are multiplexed on the same connection.
+Most requests do not generate replies,
+but some requests generate multiple replies.
+.KE
+.LP
+.KS
+\fBRequest\fP
+.IN "Request" "" "@DEF@"
+.IP
+A command to the server is called a request.
+It is a single block of data sent over a connection.
+.KE
+.LP
+.KS
+\fBResource\fP
+.IN "Resource" "" "@DEF@"
+.IP
+Windows, pixmaps, cursors, fonts, graphics contexts, and colormaps are
+known as resources.
+They all have unique identifiers associated with them for naming purposes.
+The lifetime of a resource usually is bounded by the lifetime of the
+connection over which the resource was created.
+.KE
+.LP
+.KS
+\fBRGB values\fP
+.IN "RGB values" "" "@DEF@"
+.IP
+RGB values are the red, green, and blue intensity values that are used
+to define a color.
+These values are always represented as 16-bit, unsigned numbers, with 0
+the minimum intensity and 65535 the maximum intensity.
+The X server scales these values to match the display hardware.
+.KE
+.LP
+.KS
+\fBRoot\fP
+.IN "Root" "" "@DEF@"
+.IP
+The root of a pixmap or graphics context is the same as the root
+of whatever drawable was used when the pixmap or GC was created.
+The root of a window is the root window under which the window was created.
+.KE
+.LP
+.KS
+\fBRoot window\fP
+.IN "Window" "root" "@DEF@"
+.IP
+Each screen has a root window covering it.
+The root window cannot be reconfigured or unmapped,
+but otherwise it acts as a full-fledged window.
+A root window has no parent.
+.KE
+.LP
+.KS
+\fBSave set\fP
+.IN "Save set" "" "@DEF@"
+.IP
+The save set of a client is a list of other clients' windows that,
+if they are inferiors of one of the client's windows at connection
+close, should not be destroyed and that should be remapped
+if currently unmapped.
+Save sets are typically used by window managers to avoid
+lost windows if the manager should terminate abnormally.
+.KE
+.LP
+.KS
+\fBScanline\fP
+.IN "Scanline" "" "@DEF@"
+.IP
+A scanline is a list of pixel or bit values viewed as a horizontal
+row (all values having the same y coordinate) of an image, with the
+values ordered by increasing the x coordinate.
+.KE
+.LP
+.KS
+\fBScanline order\fP
+.IN "Scanline" "order" "@DEF@"
+.IP
+An image represented in scanline order contains scanlines ordered by
+increasing the y coordinate.
+.KE
+.LP
+.KS
+\fBScreen\fP
+.IN "Screen" "" "@DEF@"
+.IP
+A server can provide several independent screens,
+which typically have physically independent monitors.
+This would be the expected configuration when there is only a single keyboard
+and pointer shared among the screens.
+A
+.PN Screen
+.IN "Screen" "structure"
+structure contains the information about that screen
+and is linked to the
+.PN Display
+.IN "Display" "structure"
+structure.
+.KE
+.LP
+.KS
+\fBSelection\fP
+.IN "Selection" "" "@DEF@"
+.IP
+A selection can be thought of as an indirect property with dynamic
+type.
+That is, rather than having the property stored in the X server,
+it is maintained by some client (the owner).
+A selection is global and is thought of as belonging to the user
+and being maintained by clients,
+rather than being private to a particular window subhierarchy
+or a particular set of clients.
+When a client asks for the contents of
+a selection, it specifies a selection target type,
+which can be used to control the transmitted representation of the contents.
+For example, if the selection is ``the last thing the user clicked on,''
+and that is currently an image, then the target type might specify
+whether the contents of the image should be sent in XY format or
+Z format.
+.IP
+The target type can also be used to control the class of
+contents transmitted; for example,
+asking for the ``looks'' (fonts, line
+spacing, indentation, and so forth) of a paragraph selection, rather than the
+text of the paragraph.
+The target type can also be used for other
+purposes.
+The protocol does not constrain the semantics.
+.KE
+.LP
+.KS
+\fBServer\fP
+.IN "Server" "" "@DEF@"
+.IP
+The server, which is also referred to as the X server,
+provides the basic windowing mechanism.
+It handles IPC connections from clients,
+multiplexes graphics requests onto the screens,
+and demultiplexes input back to the appropriate clients.
+.KE
+.LP
+.KS
+\fBServer grabbing\fP
+.IN "Server" "grabbing" "@DEF@"
+.IP
+The server can be grabbed by a single client for exclusive use.
+This prevents processing of any requests from other client connections until
+the grab is completed.
+This is typically only a transient state for such things as rubber-banding,
+pop-up menus, or executing requests indivisibly.
+.KE
+.LP
+.KS
+\fBShift sequence\fP
+.IN "Shift sequence" "" "@DEF@"
+.IP
+ISO2022 defines control characters and escape sequences
+which temporarily (single shift) or permanently (locking shift) cause a
+different character set to be in effect (``invoking'' a character set).
+.KE
+.LP
+.KS
+\fBSibling\fP
+.IN "Sibling" "" "@DEF@"
+.IP
+Children of the same parent window are known as sibling windows.
+.KE
+.LP
+.KS
+\fBStacking order\fP
+.IN "Stacking order" "" "@DEF@"
+.IP
+Sibling windows, similar to sheets of paper on a desk,
+can stack on top of each other.
+Windows above both obscure and occlude lower windows.
+The relationship between sibling windows is known as the stacking order.
+.KE
+.LP
+.KS
+\fBState-dependent encoding\fP
+.IN "State-dependent encoding" "" "@DEF@"
+.IP
+An encoding in which an invocation of a charset can apply to multiple
+characters in sequence.
+A state-dependent encoding begins in an ``initial state''
+and enters other ``shift states'' when specific ``shift sequences''
+are encountered in the byte sequence.
+In ISO2022 terms,
+this means use of locking shifts, not single shifts.
+.KE
+.LP
+.KS
+\fBState-independent encoding\fP
+.IN "State-independent encoding" "" "@DEF@"
+.IP
+Any encoding in which the invocations of the charsets are fixed,
+or span only a single character.
+In ISO2022 terms,
+this means use of at most single shifts, not locking shifts.
+.KE
+.LP
+.KS
+\fBStaticColor\fP
+.IN "StaticColor" "" "@DEF@"
+.IP
+.PN StaticColor
+can be viewed as a degenerate case of
+.PN PseudoColor
+in which the RGB values are predefined and read-only.
+.KE
+.LP
+.KS
+\fBStaticGray\fP
+.IN "StaticGray" "" "@DEF@"
+.IP
+.PN StaticGray
+can be viewed as a degenerate case of
+.PN GrayScale
+in which the gray values are predefined and read-only.
+The values are typically linear or near-linear increasing ramps.
+.KE
+.LP
+.KS
+\fBStatus\fP
+.IN "Status" "" "@DEF@"
+.IP
+Many Xlib functions return a success status.
+If the function does not succeed,
+however, its arguments are not disturbed.
+.KE
+.LP
+.KS
+\fBStipple\fP
+.IN "Stipple" "" "@DEF@"
+.IP
+A stipple pattern is a bitmap that is used to tile a region to serve
+as an additional clip mask for a fill operation with the foreground
+color.
+.KE
+.KS
+.LP
+.KS
+\fBSTRING encoding\fP
+.IN "STRING encoding" "" "@DEF@"
+.IP
+Latin-1, plus tab and newline.
+.KE
+.LP
+\fBString Equivalence\fP
+.IN "String Equivalence" "" "@DEF@"
+.IP
+Two ISO Latin-1 STRING8 values are considered equal if they are the same
+length and if corresponding bytes are either equal or are equivalent as
+follows: decimal values 65 to 90 inclusive (characters ``A'' to ``Z'') are
+pairwise equivalent to decimal values 97 to 122 inclusive
+(characters ``a'' to ``z''), decimal values 192 to 214 inclusive
+(characters ``A grave'' to ``O diaeresis'') are pairwise equivalent to decimal
+values 224 to 246 inclusive (characters ``a grave'' to ``o diaeresis''),
+and decimal values 216 to 222 inclusive (characters ``O oblique'' to ``THORN'')
+are pairwise equivalent to decimal values 246 to 254 inclusive
+(characters ``o oblique'' to ``thorn'').
+.KE
+.LP
+.KS
+\fBTile\fP
+.IN "Tile" "" "@DEF@"
+.IP
+A pixmap can be replicated in two dimensions to tile a region.
+The pixmap itself is also known as a tile.
+.KE
+.LP
+.KS
+\fBTimestamp\fP
+.IN "Timestamp" "" "@DEF@"
+.IP
+A timestamp is a time value expressed in milliseconds.
+It is typically the time since the last server reset.
+Timestamp values wrap around (after about 49.7 days).
+The server, given its current time is represented by timestamp T,
+always interprets timestamps from clients by treating half
+of the timestamp space as being earlier in time than T
+and half of the timestamp space as being later in time than T.
+One timestamp value, represented by the constant
+.PN CurrentTime ,
+is never generated by the server.
+This value is reserved for use in requests to represent the current server time.
+.KE
+.LP
+.KS
+\fBTrueColor\fP
+.IN "TrueColor" "" "@DEF@"
+.IP
+.PN TrueColor
+can be viewed as a degenerate case of
+.PN DirectColor
+in which the subfields in the pixel value directly encode the corresponding RGB
+values.
+That is, the colormap has predefined read-only RGB values.
+The values are typically linear or near-linear increasing ramps.
+.KE
+.LP
+.KS
+\fBType\fP
+.IN "Type" "" "@DEF@"
+.IP
+A type is an arbitrary atom used to identify the interpretation of property
+data.
+Types are completely uninterpreted by the server.
+They are solely for the benefit of clients.
+X predefines type atoms for many frequently used types,
+and clients also can define new types.
+.KE
+.LP
+.KS
+\fBViewable\fP
+.IN "Viewable" "" "@DEF@"
+.IP
+A window is viewable if it and all of its ancestors are mapped.
+This does not imply that any portion of the window is actually visible.
+Graphics requests can be performed on a window when it is not
+viewable, but output will not be retained unless the server is maintaining
+backing store.
+.KE
+.LP
+.KS
+\fBVisible\fP
+.IN "Visible" "" "@DEF@"
+.IP
+A region of a window is visible if someone looking at the screen can
+actually see it; that is, the window is viewable and the region is not occluded
+by any other window.
+.KE
+.LP
+.KS
+\fBWhitespace\fP
+.IN "Whitespace" "" "@DEF@"
+.IP
+Any spacing character.
+On implementations that conform to the ANSI C library,
+whitespace is any character for which
+.PN isspace
+returns true.
+.KE
+.LP
+.KS
+\fBWindow gravity\fP
+.IN "Window" "gravity" "@DEF@"
+.IP
+When windows are resized,
+subwindows may be repositioned automatically relative to some position in the
+window.
+This attraction of a subwindow to some part of its parent is known
+as window gravity.
+.KE
+.LP
+.KS
+\fBWindow manager\fP
+.IN "Window" "manager" "@DEF@"
+.IP
+Manipulation of windows on the screen and much of the user interface
+(policy) is typically provided by a window manager client.
+.KE
+.LP
+.KS
+\fBX Portable Character Set\fP
+.IN "X Portable Character Set" "" "@DEF@"
+.IP
+A basic set of 97 characters which are assumed to exist in all
+locales supported by Xlib. This set contains the following characters:
+.IP
+.Ds 0
+.EQ
+delim DD
+.EN
+a..z A..Z 0..9
+!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~
+<space>, <tab>, and <newline>
+.EQ
+delim %%
+.EN
+.De
+.IP
+This is the left/lower half (also called the G0 set)
+of the graphic character set of ISO8859-1 plus <space>, <tab>, and <newline>.
+It is also the set of graphic characters in 7-bit ASCII plus the same
+three control characters.
+The actual encoding of these characters on the host is system dependent;
+see the Host Portable Character Encoding.
+.KE
+.LP
+.KS
+\fBXLFD\fP
+.IN "XLFD" "" "@DEF@"
+.IP
+The X Logical Font Description Conventions that define a standard syntax
+for structured font names.
+.KE
+.LP
+.KS
+\fBXY format\fP
+.IN "XY format" "" "@DEF@"
+.IP
+The data for a pixmap is said to be in XY format if it is organized as
+a set of bitmaps representing individual bit planes with the planes
+appearing from most-significant to least-significant bit order.
+.KE
+.LP
+.KS
+\fBZ format\fP
+.IN "Z format" "" "@DEF@"
+.IP
+The data for a pixmap is said to be in Z format if it is organized as
+a set of pixel values in scanline order.
+.KE
+.LP
+\fBReferences\fP
+.LP
+ANSI Programming Language - C: ANSI X3.159-1989, December 14, 1989.
+.LP
+Draft Proposed Multibyte Extension of ANSI C, Draft 1.1, November 30,
+1989, SC22/C WG/SWG IPSJ/ITSCJ Japan.
+.LP
+ISO2022: Information processing - ISO 7-bit and 8-bit coded character
+sets - Code extension techniques.
+.LP
+ISO8859-1: Information processing - 8-bit single-byte coded graphic
+character sets - Part 1: Latin alphabet No. 1.
+.LP
+POSIX: Information Technology - Portable Operating System Interface (POSIX) -
+Part 1: System Application Program Interface (API) [C Language],
+ISO/IEC 9945-1.
+.LP
+Text of ISO/IEC/DIS 9541-1, Information Processing - Font Information
+Interchange - Part 1: Architecture.
+.LP
+X/Open Portability Guide, Issue 3, December 1988 (XPG3), X/Open Company,
+Ltd, Prentice-Hall, Inc. 1989. ISBN 0-13-685835-8.
+(See especially Volume 3: XSI Supplementary Definitions.)
+.bp
diff --git a/specs/X11/indexmacros.t b/specs/X11/indexmacros.t
new file mode 100644
index 0000000..e1b873d
--- /dev/null
+++ b/specs/X11/indexmacros.t
@@ -0,0 +1,3 @@
+.eh '\fBXlib \- C Library\fP''\fBX11, Release 6.4\fP'
+.oh '\fBXlib \- C Library\fP''\fBX11, Release 6.4\fP'
+.so index.pageno
diff --git a/specs/X11/postproc b/specs/X11/postproc
new file mode 100644
index 0000000..0f45a5a
--- /dev/null
+++ b/specs/X11/postproc
@@ -0,0 +1,17 @@
+.\"
+.\" print Table of Contents
+.if e \& \" Force blank page to begin TOC on an odd (right-hand) page.
+.EH ''''
+.OH ''''
+.bp
+\& \" Want old footings if blank page was forced.
+.EF ''''
+.OF ''''
+.XS
+Index
+.XE
+.EQ
+delim $$
+.EN
+.tm .pn \n%
+.PX
diff --git a/specs/XDMCP/xdmcp.ms b/specs/XDMCP/xdmcp.ms
new file mode 100644
index 0000000..8f6df8a
--- /dev/null
+++ b/specs/XDMCP/xdmcp.ms
@@ -0,0 +1,2170 @@
+.\" Use eqn, tbl, and -ms
+.\" $Xorg: xdmcp.ms,v 1.3 2000/08/17 19:42:20 cpqbld Exp $
+.EQ
+delim @@
+define oc % "\\fR{\\fP" %
+define cc % "\\fR}\\fP" %
+.EN
+.de PT
+..
+.de BT
+..
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 7
+\s+2\fBX Display Manager Control Protocol\fP\s-2
+
+\s+1\fBVersion 1.0
+
+X Consortium Standard
+
+X Version 11, Release 6.4\fP\s-1
+.sp 4
+.ce 5
+\s-1Keith Packard
+
+X Consortium
+Laboratory for Computer Science
+Massachusetts Institute of Technology\s+1
+.bp
+.br
+\&
+.sp 15
+Copyright \(co 1989 X Consortium
+.sp 3
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.LP
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.de PT
+.ie o .tl 'XDMCP''X Display Manager Control Protocol '
+.el .tl 'X Display Manager Control Protocol ''XDMCP'
+..
+.bp 1
+.de BT
+.tl ''\fB % \fP''
+..
+.NH 1
+Purpose and Goals
+.XS
+\*(SN Purpose and Goals
+.XE
+.LP
+The purpose of the X Display Manager Control Protocol (XDMCP)
+is to provide a uniform mechanism for an autonomous
+display to request login service from a remote host.
+By autonomous, we mean
+the display consists of hardware and processes that are independent of any
+particular host where login service is desired. (For example, the server
+cannot simply be started by a
+.PN fork/exec
+sequence on the host.)
+An X terminal (screen, keyboard, mouse, processor, network interface)
+is a prime example of an autonomous display.
+.LP
+From the point of view of the end user, it is very important to make
+autonomous displays as easy to use as traditional hardwired character
+terminals. Specifically, you can typically just power on a hardwired
+terminal and be greeted with a login prompt. The same should be possible
+with autonomous displays. However, in a network environment with multiple
+hosts, the end user may want to choose which host(s) to connect to. In an
+environment with many displays and many hosts, a site administrator may want
+to associate particular collections of hosts with particular displays. We
+would like to support the following options:
+.IP \(bu 5
+The display has a single, fixed host to which it should connect. It should be
+possible to power on the display and receive a login prompt, without user
+intervention.
+.IP \(bu 5
+Any one of several hosts on a network or subnetwork may be acceptable
+for accepting login from the display.
+(For example, the user's file systems can be mounted onto
+any such host, providing comparable environments.) It should be possible
+for the display to broadcast to find such hosts and to have the display
+either automatically choose a host or present the possible hosts to the
+user for selection.
+.IP \(bu 5
+The display has a fixed set of hosts that it can connect to. It should be
+possible for the display to have that set stored in RAM, but it should also be
+possible for a site administrator to be able to maintain host sets for a
+large number of displays using a centralized facility, without having to
+interact (physically or electronically) with each individual display.
+Particular hosts should be allowed to refuse login service, based on
+whatever local criteria are desired.
+.LP
+The control protocol should be designed in such a way that it can be used over
+a reasonable variety of communication transport layers. In fact, it is quite
+desirable if every major network protocol family that supports the standard X
+protocol is also capable of supporting XDMCP, because the end result of XDMCP
+negotiation will be standard X protocol connections to the display.
+However, because the number of displays per host may be large,
+a connection-based protocol appears less desirable
+than a connection-less protocol. For this reason the protocol is designed
+to use datagram services with the display responsible for sequencing and
+retransmission.
+.LP
+To keep the burden on displays at a minimum (because display cost is not
+a factor that can be ignored), it is desirable that displays not be required
+to maintain permanent state (across power cycles) for the purposes
+of the control protocol,
+and it is desirable to keep required state at a minimum while the
+display is powered on.
+.LP
+Security is an important consideration and must be an integral part of the
+design. The important security goals in the context of XDMCP are:
+.IP \(bu 5
+It should be possible for the display to verify that it is communicating
+with a legitimate host login service. Because the user will present
+credentials (for example, password) to this service,
+it is important to avoid spoof attacks.
+.IP \(bu 5
+It should be possible for the display and the login service to negotiate the
+authorization mechanism to be used for the standard X protocol.
+.IP \(bu 5
+It should be possible to provide the same level of security in verifying the
+login service as is provided by the negotiated authorization mechanism.
+.IP \(bu 5
+Because there are no firm standards yet in the area of security,
+XDMCP must be flexible enough to accomodate a variety of security mechanisms.
+.NH 1
+Overview of the Protocol
+.XS
+\*(SN Overview of the Protocol
+.XE
+.LP
+XDMCP is designed to provide authenticated access to display management
+services for remote displays. A new network server, called a \fIDisplay
+Manager\fP, will use XDMCP to communicate with displays to negotiate the
+startup of X sessions. The protocol allows the display to authenticate the
+manager. It also allows most of the configuration information to be
+centralized with the manager and to ease the burden of system administration
+in a large network of displays.
+The essential goal is to provide plug-and-play
+services similar to those provided in the familiar mainframe/terminal world.
+.LP
+Displays may be turned off by the user at any time. Any existing session
+running on a display that has been turned off must be identifiable. This
+is made possible by requiring a three-way handshake to start a session. If
+the handshake succeeds, any existing session is terminated immediately and a
+new session started. There is the problem (at least with TCP) that
+connections may not be closed when the display is turned off. In most
+environments, the manager should reduce this problem by periodically XSync'ing
+on its own connection, perhaps every five to ten minutes, and terminating the
+session if its own connection ever closes.
+.LP
+Displays should not be required to retain permanent state for purposes of
+the control protocol. One solution to packets received out of sequence
+would be to use monotonically increasing message identifiers in each message
+to allow both sides to ignore messages that arrive out-of-sequence. For
+this to work, displays would at a minimum have to increment a stable crash
+count each time they are powered on and use that number as part of a
+larger sequence number. But if displays cannot retain permanent state this
+cannot work. Instead, the manager assumes the responsibility for permanent
+state by generating unique numbers that identify a particular session and
+the protocol simply ignores packets that correspond to an invalid session.
+.LP
+The Manager must not be responsible for packet reception. To prevent the
+Manager from becoming stuck because of a hostile display, no portion of the
+protocol requires the Manager to retransmit a packet. Part of this means
+that any valid packet that the Manager does receive must be
+acknowledged in some way to prevent the display from continuously resending
+packets. The display can keep the protocol running as it will always know
+when the Manager has received (at least one copy of) a packet. On the
+Manager side, this means that any packet may be received more than once (if
+the response was lost) and duplicates must be ignored.
+.NH 1
+Data Types
+.XS
+\*(SN Data Types
+.XE
+.LP
+XDMCP packets contain several types of data. Integer values are always
+stored most significant byte first in the packet (``Big Endian'' order).
+As XDMCP will not be used to transport large quantities of data, this
+restriction will not substantially hamper the efficiency of any
+implementation. Also, no padding of any sort will occur within the packets.
+.TS H
+lw(1.25i) lw(.75i) lw(3.5i).
+_
+.sp 6p
+.B
+Type Name Length (Bytes) Description
+.sp 6p
+_
+.sp 6p
+.R
+.TH
+CARD8 1 A single byte unsigned integer
+CARD16 2 Two byte unsigned integer
+CARD32 4 Four byte unsigned integer
+ARRAY8 n+2 This is actually a CARD16 followed by
+ a collection of CARD8. The value of the CARD16
+ field (n) specifies the number of CARD8 values to
+ follow
+ARRAY16 2*m+1 This is a CARD8 (m) which specifies the
+ number of CARD16 values to follow
+ARRAY32 4*l+1 This is a CARD8 (l) which specifies the
+ number of CARD32 values to follow
+ARRAYofARRAY8 ? This is a CARD8 which specifies the
+ number of ARRAY8 values to follow.
+.sp 6p
+_
+.TE
+.NH 1
+Packet Format
+.XS
+\*(SN Packet Format
+.XE
+.LP
+All XDMCP packets have the following information:
+.TS
+lw(1.25i) lw(.75i) lw(3.5i).
+_
+.sp 6p
+.B
+Length (Bytes) Field Type Description
+.sp 6p
+_
+.R
+2 CARD16 version number
+2 CARD16 opcode packet header
+2 CARD16 n = length of remaining data in bytes
+
+n ??? packet-specific data
+.sp 6p
+_
+.TE
+.LP
+The fields are as follows:
+.IP \(bu 5
+Version number
+.IP
+This specifies the version of XDMCP that generated this packet in
+case changes in this protocol are required. Displays and
+managers may choose to support older versions for compatibility.
+This field will initially be one (1).
+.IP \(bu 5
+Opcode
+.IP
+This specifies what step of the protocol this packet represents and should
+contain one of the following values (encoding provided in section below):
+.PN BroadcastQuery ,
+.PN Query ,
+.PN IndirectQuery ,
+.PN ForwardQuery ,
+.PN Willing ,
+.PN Unwilling ,
+.PN Request ,
+.PN Accept ,
+.PN Decline ,
+.PN Manage ,
+.PN Refuse ,
+.PN Failed ,
+.PN KeepAlive ,
+or
+.PN Alive .
+.IP \(bu 5
+Length of data in bytes
+.IP
+This specifies the length of the information following the first 6 bytes.
+Each packet-type has a different format and will need to be separately
+length-checked against this value. Because every data item has either an
+explicit or implicit length, this can be easily accomplished.
+Packets that have too little or too much data should be ignored.
+.LP
+Packets should be checked to make sure that they satisfy the following
+conditions:
+.IP 1. 5
+They must contain valid opcodes.
+.IP 2. 5
+The length of the remaining data should correspond to the sum of the
+lengths of the individual remaining data items.
+.IP 3. 5
+The opcode should be expected (a finite state diagram is given
+in a later section).
+.IP 4. 5
+If the packet is of type
+.PN Manage
+or
+.PN Refuse ,
+the Session ID should match the value sent in the preceding
+.PN Accept
+packet.
+.NH 1
+Protocol
+.XS
+\*(SN Protocol
+.XE
+.LP
+Each of the opcodes is described below. Because a given packet type is only
+ever sent one way, each packet description below indicates the direction.
+Most of the packets have additional information included beyond the
+description above. The additional information is appended to the packet
+header in the order described without padding, and the length field is
+computed accordingly.
+.LP
+.PN Query
+.br
+.PN BroadcastQuery
+.br
+.PN IndirectQuery
+.RS
+Display \(-> Manager
+.br
+Additional Fields:
+.RS
+\fIAuthentication Names\fP: ARRAYofARRAY8
+.RS
+Specifies a list of authentication names that the display supports.
+The manager will choose one of these and return it in the
+.PN Willing
+packet.
+.RE
+.RE
+Semantics:
+.RS
+A
+.PN Query
+packet is sent from the display to a specific host to ask if
+that host is willing to provide management services to this display. The
+host should respond with
+.PN Willing
+if it is willing to service the display or
+.PN Unwilling
+if it is not.
+.LP
+A
+.PN BroadcastQuery
+packet is similar to the
+.PN Query
+packet except that it is intended to be received by all hosts on the network
+(or subnetwork). However, unlike
+.PN Query
+requests, hosts that are not willing to service the display
+should simply ignore
+.PN BroadcastQuery
+requests.
+.LP
+An
+.PN IndirectQuery
+packet is sent to a well known manager that forwards
+the request to a larger collection of secondary managers using
+.PN ForwardQuery
+packets.
+In this way, the collection of managers that respond can be grouped
+on other than network boundaries; the use of a central manager reduces
+system administrative overhead.
+The primary manager may also send a
+.PN Willing
+packet in response to this packet.
+.LP
+Each packet type has slightly different semantics:
+.IP \(bu 5
+The
+.PN Query
+packet is destined only for a single host.
+If the display is instructed to
+.PN Query
+multiple managers, it will send multiple
+.PN Query
+packets. The
+.PN Query
+packet also demands a response from the manager, either
+.PN Willing
+or
+.PN Unwilling .
+.IP \(bu 5
+The
+.PN BroadcastQuery
+packet is sent to many hosts.
+Each manager that receives this packet will not respond with an
+.PN Unwilling
+packet.
+.IP \(bu 5
+The
+.PN IndirectQuery
+packet is sent to only one manager with the request
+that the request be forwarded to a larger list of managers using
+.PN ForwardQuery
+packets. This list is expected to be maintained at one
+central site to reduce administrative overhead.
+The function of this packet type is similar to
+.PN BroadcastQuery except that
+.PN BroadcastQuery
+is not forwarded.
+.RE
+Valid Responses:
+.RS
+.PN Willing ,
+.PN Unwilling
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+Not all managers receive the query packet.
+.RE
+.RS
+Indication:
+.RS
+None if
+.PN BroadcastQuery
+or
+.PN IndirectQuery
+was sent, else failure to receive
+.PN Willing .
+.RE
+Solution:
+.RS
+Repeatedly send the packet while waiting for user to choose a manager.
+.RE
+.RE
+.RE
+Timeout/Retransmission policy:
+.RS
+An exponential backoff algorithm should be used here to reduce network load
+for long-standing idle displays. Start at 2 seconds, back off by factors of
+2 to 32 seconds, and discontinue retransmit after 126 seconds. The display
+should reset the timeout when user-input is detected. In this way, the
+display will wakeup when touched by the user.
+.RE
+.RE
+.LP
+.PN ForwardQuery
+.RS
+Primary Manager \(-> Secondary Manager
+.br
+Additional Fields:
+.RS
+\fIClient Address\fP: ARRAY8
+.RS
+Specifies the network address of the client display.
+.RE
+\fIClient Port\fP: ARRAY8
+.RS
+Specifies an identification of the client task on the client display.
+.RE
+\fIAuthentication Names\fP: ARRAYofARRAY8
+.RS
+Is a duplicate of Authentication Names array that was received
+in the
+.PN IndirectQuery
+packet.
+.RE
+.RE
+Semantics:
+.RS
+When primary manager receives a
+.PN IndirectQuery
+packet, it is responsible for sending
+.PN ForwardQuery
+packets to an appropriate list of
+managers that can provide service to the display using the same network
+type as the one the original
+.PN IndirectQuery
+packet was received from.
+The Client Address and Client Port fields must contain an
+address that the secondary manager can use to reach the display also using
+this same network. Each secondary manager sends a
+.PN Willing
+packet to the display if it is willing to provide service.
+.LP
+.PN ForwardQuery
+packets are similar to
+.PN BroadcastQuery
+packets in that managers that are not willing to service
+particular displays should not send a
+.PN Unwilling
+packet.
+.RE
+Valid Responses:
+.RS
+.PN Willing
+.RE
+Problems/Solutions:
+.RS
+Identical to
+.PN BroadcastQuery
+.RE
+Timeout/Retransmission policy:
+.RS
+Like all packets sent from a manager, this packet should never be
+retransmitted.
+.RE
+.RE
+.LP
+.PN Willing
+.RS
+Manager \(-> Display
+.br
+Additional Fields:
+.RS
+\fIAuthentication Name\fP: ARRAY8
+.RS
+Specifies the authentication method, selected from the list offered in the
+.PN Query ,
+.PN BroadcastQuery ,
+or
+.PN IndirectQuery
+packet that the manger expects the display to use in the subsequent
+.PN Request
+packet.
+This choice should remain as constant as feasible so that displays that
+send multiple
+.PN Query
+packets can use the Authentication Name from any
+.PN Willing
+packet that arrives.
+.LP
+The display is free to ignore managers that request an insufficient level
+of authentication.
+.RE
+\fIHostname\fP: ARRAY8
+.RS
+Is a human readable string describing the host from which the packet was sent.
+The protocol specifies no interpretation of the data in this field.
+.RE
+\fIStatus\fP: ARRAY8
+.RS
+Is a human readable string describing the status of the host. This could
+include load average/number of users connected or other information. The
+protocol specifies no interpretation of the data in this field.
+.RE
+.RE
+Semantics:
+.RS
+A
+.PN Willing
+packet is sent by managers that may service connections from
+this display. It is sent in response to either a
+.PN Query ,
+.PN BroadcastQuery ,
+or
+.PN ForwardQuery
+but does not imply a commitment to provide service
+(for example, it may later decide that it has accepted enough
+connections already).
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+.PN Willing
+not received by the display.
+.br
+Indication:
+.RS
+None if
+.PN BroadcastQuery
+or
+.PN IndirectQuery
+was sent, else failure to receive
+.PN Willing .
+.RE
+Solution:
+.RS
+The display should continue to send the query until a response is received.
+.RE
+.RE
+.RE
+Timeout/Retransmission policy:
+.RS
+Like all packets sent from the manager to the display, this packet should
+never be retransmitted.
+.RE
+.RE
+.LP
+.PN Unwilling
+.RS
+Manager \(-> Display
+.br
+Additional Fields:
+.RS
+The Hostname and Status fields as in the
+.PN Willing
+packet.
+The Status field should indicate to the user a reason
+for the refusal of service.
+.RE
+Semantics:
+.RS
+An
+.PN Unwilling
+packet is sent by managers in response to direct
+.PN Query
+requests (as opposed to
+.PN BroadcastQuery
+or
+.PN IndirectQuery
+requests) if the manager will not accept requests for management.
+This is typically sent by managers that wish to only service
+particular displays or that handle a limited number of displays at once.
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+.PN Unwilling
+not received by the display.
+.br
+Indication:
+.RS
+Display fails to receive
+.PN Unwilling .
+.RE
+Solution:
+.RS
+The display should continue to send
+.PN Query
+messages until a response is received.
+.RE
+.RE
+.RE
+Timeout/Retransmission policy:
+.RS
+Like all packets sent from the manager to the display, this packet should
+never be retransmitted.
+.RE
+.RE
+.LP
+.PN Request
+.br
+.RS
+Display \(-> Manager
+.br
+Additional Fields:
+.RS
+\fIDisplay Number\fP: CARD16
+.RS
+Specifies the index of this particular server for the host
+on which the display is resident.
+This value will be zero for most autonomous displays.
+.RE
+\fIConnection Types\fP: ARRAY16
+.RS
+Specifies an array indicating the stream services accepted by the display.
+If the high-order byte in a particular entry is zero, the low-order byte
+corresponds to an X-protocol host family type.
+.RE
+\fIConnection Addresses\fP: ARRAYofARRAY8
+.RS
+For each connection type in the previous array, the corresponding entry in
+this array indicates the network address of the display device.
+.RE
+\fIAuthentication Name\fP: ARRAY8
+.br
+\fIAuthentication Data\fP: ARRAY8
+.RS
+Specifies the authentication protocol that the display expects
+the manager to validate itself with. The Authentication Data is
+expected to contain data that the manager will interpret, modify
+and use to authenticate itself.
+.RE
+\fIAuthorization Names\fP: ARRAYofARRAY8
+.RS
+Specifies which types of authorization the display supports. The
+manager may decide to reject displays with which it cannot perform
+authorization.
+.RE
+\fIManufacturer Display ID\fP: ARRAY8
+.RS
+Can be used by the manager to determine how to decrypt the
+Authentication Data field in this packet. See the section below on
+Manufacturer Display ID Format.
+.RE
+.RE
+Semantics:
+.RS
+A
+.PN Request
+packet is sent by a display to a specific host to request a
+session ID in preparation for a establishing a connection. If the manager
+is willing to service a connection to this display, it should return an
+.PN Accept
+packet with a valid session ID and should be ready for a subsequent
+.PN Manage
+request. Otherwise, it should return a
+.PN Decline
+packet.
+.RE
+Valid Responses:
+.RS
+.PN Accept ,
+.PN Decline
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+Request not received by manager.
+.br
+Indication:
+.RS
+Display timeout waiting for response.
+.RE
+Solution:
+.RS
+Display resends
+.PN Request
+message.
+.RE
+.RE
+Problem:
+.RS
+Message received out of order by manager.
+.br
+Indication:
+.RS
+None.
+.RE
+Solution:
+.RS
+Each time a
+.PN Request
+is sent, the manager sends the Session ID
+associated with the next session in the
+.PN Accept .
+If that next session is not yet started,
+the manager will simply resend with the same Session ID.
+If the session is in progress, the manager will reply
+with a new Session ID; in which case, the
+.PN Accept
+will be discarded by the display.
+.RE
+.RE
+.RE
+Timeout/Retransmission policy:
+.RS
+Timeout after 2 seconds, exponential backoff to 32 seconds.
+After no more than 126 seconds, give up and report an error to the user.
+.RE
+.RE
+.LP
+.PN Accept
+.RS
+Manager \(-> Display
+.br
+Additional Fields:
+.RS
+\fISession ID\fP: CARD32
+.RS
+Identifies the session that can be started by the manager.
+.RE
+\fIAuthentication Name\fP: ARRAY8
+.br
+\fIAuthentication Data\fP: ARRAY8
+.RS
+Is the data sent back to the display to authenticate the manager.
+If the Authentication Data is not the value expected by the display, it
+should terminate the protocol at this point and display an error to the user.
+.RE
+\fIAuthorization Name\fP: ARRAY8
+.br
+\fIAuthorization Data\fP: ARRAY8
+.RS
+Is the data sent to the display to indicate the type of authorization the
+manager will be using in the first call to
+.PN XOpenDisplay
+after the
+.PN Manage
+packet is received.
+.RE
+.RE
+Semantics:
+.RS
+An
+.PN Accept
+packet is sent by a manager in response to a
+.PN Request
+packet if the manager is willing to establish a connection for the display.
+The Session ID is used to identify this connection from any preceding
+ones and will be used by the display in its subsequent
+.PN Manage
+packet.
+The Session ID is a 32-bit number that is incremented each time an
+.PN Accept
+packet is sent as it must be unique over a reasonably long period of time.
+.LP
+If the authentication information is invalid, a
+.PN Decline
+packet will be returned with an appropriate
+.PN Status
+message.
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+.PN Accept
+or
+.PN Decline
+not received by display.
+.br
+Indication:
+.RS
+Display timeout waiting for response to
+.PN Request .
+.RE
+Solution:
+.RS
+Display resends
+.PN Request
+message.
+.RE
+.RE
+Problem:
+.RS
+Message received out of order by display.
+.br
+Indication:
+.RS
+Display receives
+.PN Accept
+after
+.PN Manage
+has been sent.
+.RE
+Solution:
+.RS
+Display discards
+.PN Accept
+messages after it has sent a
+.PN Manage
+message.
+.RE
+.RE
+.RE
+Timeout/Retransmission policy:
+.RS
+Like all packets sent from the manager to the display, this packet should
+never be retransmitted.
+.RE
+.RE
+.LP
+.PN Decline
+.RS
+Manager \(-> Display
+.br
+Additional Fields:
+.RS
+\fIStatus\fP: ARRAY8
+.RS
+Is a human readable string indicating the reason for refusal of
+service.
+.RE
+\fIAuthentication Name\fP:
+ARRAY8
+.br
+\fIAuthentication Data\fP:
+ARRAY8
+.RS
+Is the data sent back to the display to authenticate the manager. If the
+Authentication Data is not the value expected by the display, it
+should terminate the protocol at this point and display an error to the user.
+.RE
+.RE
+Semantics:
+.RS
+A
+.PN Decline
+packet is sent by a manager in response to a
+.PN Request
+packet if the manager is unwilling to establish a connection for the
+display.
+This is allowed even if the manager had responded
+.PN Willing
+to a previous query.
+.RE
+Problems/Solutions:
+.RS
+Same as for
+.PN Accept .
+.RE
+Timeout/Retransmission policy:
+.RS
+Like all packets sent from a manager to a display, this packet should never
+be retransmitted.
+.RE
+.RE
+.LP
+.PN Manage
+.RS
+Display \(-> Manager
+.br
+Additional Fields:
+.RS
+\fISession ID\fP: CARD32
+.RS
+Should contain the nonzero session ID returned in the
+.PN Accept
+packet.
+.RE
+\fIDisplay Number\fP: CARD16
+.RS
+Must match the value sent in the previous
+.PN Request
+packet.
+.RE
+\fIDisplay Class\fP: ARRAY8
+.RS
+Specifies the class of the display.
+See the Display Class Format section,
+which discusses the format of this field.
+.RE
+.RE
+Semantics:
+.RS
+A
+.PN Manage
+packet is sent by a display to ask the manager to begin a
+session on the display. If the Session ID is correct the manager
+should open a connection; otherwise, it should respond with a
+.PN Refuse
+or
+.PN Failed
+packet, unless the Session ID matches a currently
+running session or a session that has not yet successfully opened the
+display but has not given up the attempt. In this latter case, the
+.PN Manage
+packet should be ignored.
+This will work as stream connections give positive success indication
+to both halves of the stream, and positive failure indication
+to the connection initiator (which will eventually generate a
+.PN Failed
+packet).
+.RE
+Valid Responses:
+.RS
+X connection with correct auth info,
+.PN Refuse ,
+.PN Failed .
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+.PN Manage
+not received by manager.
+.br
+Indication:
+.RS
+Display timeout waiting for response.
+.RE
+Solution:
+.RS
+Display resends
+.PN Manage
+message.
+.RE
+.RE
+Problem:
+.RS
+.PN Manage
+received out of order by manager.
+.br
+Indication:
+.RS
+Session already in progress with matching Session ID.
+.RE
+Solution:
+.RS
+.PN Manage
+packet ignored.
+.RE
+Indication:
+.RS
+Session ID does not match next Session ID.
+.RE
+Solution:
+.RS
+.PN Refuse
+message is sent.
+.RE
+.RE
+Problem:
+.RS
+Display cannot be opened on selected stream.
+.br
+Indication:
+.RS
+Display connection setup fails.
+.RE
+Solution:
+.RS
+.PN Failed
+message is sent including a human readable reason.
+.RE
+.RE
+Problem:
+.RS
+Display open does not succeed before a second manage packet is received
+because of a timeout occuring in the display.
+.br
+Indication:
+.RS
+.PN Manage
+packet received with Session ID matching the session
+attempting to connect to the display.
+.RE
+Solution:
+.RS
+.PN Manage
+packet is ignored. As the stream connection will either
+succeed, which will result in an active session, or the stream will
+eventually give up hope of connecting and send a
+.PN Failed
+packet; no response to this
+.PN Manage
+packet is necessary.
+.RE
+.RE
+.RE
+Timeout/Retransmission policy:
+.RS
+Timeout after 2 seconds, exponential backoff to 32 seconds. After no more
+than 126 seconds, give up and report an error to the user.
+.RE
+.RE
+.LP
+.PN Refuse
+.RS
+Manager \(-> Display
+.br
+Additional Fields:
+.RS
+\fISession ID\fP: CARD32
+.RS
+Should be set to the Session ID received in the
+.PN Manage
+packet.
+.RE
+.RE
+Semantics:
+.RS
+A
+.PN Refuse
+packet is sent by a manager when the Session ID received in the
+.PN Manage
+packet does not match the current Session ID.
+The display should assume that it received an old
+.PN Accept
+packet and should resend its
+.PN Request
+packet.
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+Error message is lost.
+.br
+Indication:
+.RS
+Display times out waiting for
+new connection,
+.PN Refuse
+or
+.PN Failed .
+.RE
+Solution:
+.RS
+Display resends
+.PN Manage
+message.
+.RE
+.RE
+.RE
+Timeout/Retransmission policy:
+.RS
+Like all packets sent from a manager to a display, this packet should never be
+retransmitted.
+.RE
+.RE
+.LP
+.PN Failed
+.RS
+Manager \(-> Display
+.br
+Additional Fields:
+.RS
+\fISession ID\fP: CARD32
+.RS
+Should be set to the Session ID received in the
+.PN Manage
+packet.
+.RE
+\fIStatus\fP: ARRAY8
+.RS
+Is a human readable string indicating the reason for failure.
+.RE
+.RE
+Semantics:
+.RS
+A
+.PN Failed
+packet is sent by a manager when it has problems establishing
+the initial X connection in response to the
+.PN Manage
+packet.
+.RE
+Problems/Solutions
+.RS
+Same as for
+.PN Refuse .
+.RE
+.RE
+.LP
+.PN KeepAlive
+.RS
+Display \(-> Manager
+.br
+Additional Fields:
+.RS
+\fIDisplay Number\fP: CARD16
+.RS
+Set to the display index for the display host.
+.RE
+.RE
+.RS
+\fISession ID\fP: CARD32
+.RS
+Should be set to the Session ID received in the
+.PN Manage
+packet during the negotiation for the current session.
+.RE
+.RE
+Sematics:
+.RS
+A
+.PN KeepAlive
+packet can be sent at any time during the session by a
+display to discover if the manager is running.
+The manager should respond with
+.PN Alive
+whenever it receives this type of packet.
+.LP
+This allows the display to discover when the manager host
+is no longer running.
+A display is not required to send
+.PN KeepAlive
+packets and, upon lack of receipt of
+.PN Alive
+packets, is not required to perform any specific action.
+.LP
+The expected use of this packet is to terminate an active session when the
+manager host or network link fails. The display should keep track of the
+time since any packet has been received from the manager host and use
+.PN KeepAlive
+packets when a substantial time has elapsed since the
+most recent packet.
+.RE
+Valid Responses:
+.RS
+.PN Alive
+.RE
+Problems/Solutions:
+.RS
+Problem:
+.RS
+Manager does not receive the packet or display does not receive the response.
+.RE
+.RS
+Indication:
+.RS
+No
+.PN Alive
+packet is returned.
+.RE
+Solution:
+.RS
+Retransmit the packet with an exponential backoff; start at 2 seconds and
+assume the host is not up after no less than 30 seconds.
+.RE
+.RE
+.RE
+.RE
+.LP
+.PN Alive
+.RS
+Manager \(-> Display
+.br
+Additional Fields:
+.RS
+\fISession Running\fP: CARD8
+.RS
+Indicates that the session identified by Session ID is
+currently active. The value is zero if no session is active
+or one if a session
+is active.
+.RE
+\fISession ID\fP: CARD32
+.RS
+Specifies the ID of the currently running session; if any.
+When no session is active this field should be zero.
+.RE
+.RE
+Semantics:
+.RS
+An
+.PN Alive
+packet is sent in response to a
+.PN KeepAlive
+request.
+If a session is currently active on the display, the manager includes the
+Session ID in the packet. The display can use this information to
+determine the status of the manager.
+.RE
+.RE
+.NH 1
+Session Termination
+.XS
+\*(SN Session Termination
+.XE
+.LP
+When the session is over, the initial connection with the display (the one
+that acknowledges the
+.PN Manage
+packet) will be closed by the manager.
+If only a single session was active on the display,
+all other connections should be closed by the display
+and the display should be reset. If multiple sessions
+are active simultaneously and the display can identify which connections
+belong to the terminated sesssion, those connections should be closed.
+Otherwise, all connections should be closed and the display reset only when
+all sessions have been terminated (that is, all initial connections closed).
+.LP
+The session may also be terminated at any time by the display if the
+managing host no longer responds to
+.PN KeepAlive
+packets.
+The exact time-outs for sending
+.PN KeepAlive
+packets is not specified in this protocol as the trade off
+should not be fixed between loading an otherwise idle system with spurious
+.PN KeepAlive
+packets and not noticing that the manager host is down for a long time.
+.NH 1
+State Diagrams
+.XS
+\*(SN State Diagrams
+.XE
+.LP
+The following state diagrams are designed to cover all actions of both
+the display and the manager. Any packet that is received out-of-sequence
+will be ignored.
+.LP
+Display:
+.RS
+.sp
+.LP
+\fIstart\fP:
+.RS
+User-requested connect to one host \(-> \fIquery\fP
+.br
+User-requested connect to some host \(-> \fIbroadcast\fP
+.br
+User-requested connect to site host-list \(-> \fIindirect\fP
+.RE
+.sp
+.LP
+\fIquery\fP:
+.RS
+Send
+.PN Query
+packet
+.br
+\(-> \fIcollect-query\fP
+.RE
+.sp
+.LP
+\fIcollect-query\fP:
+.RS
+Receive
+.PN Willing
+\(-> \fIstart-connection\fP
+.br
+Receive
+.PN Unwilling
+\(-> \fIstop-connection\fP
+.br
+Timeout \(-> \fIquery\fP
+.RE
+.sp
+.LP
+\fIbroadcast\fP:
+.RS
+Send
+.PN BroadcastQuery
+packet
+.br
+\(-> \fIcollect-broadcast-query\fP
+.RE
+.sp
+.LP
+\fIcollect-broadcast-query\fP:
+.RS
+Receive
+.PN Willing
+\(-> \fIupdate-broadcast-willing\fP
+.br
+User-requested connect to one host \(-> \fIstart-connection\fP
+.br
+Timeout \(-> \fIbroadcast\fP
+.RE
+.sp
+.LP
+\fIupdate-broadcast-willing\fP:
+.RS
+Add new host to the host list presented to the user
+.br
+\(-> \fIcollect-broadcast-query\fP
+.RE
+.sp
+.LP
+\fIindirect\fP:
+.RS
+Send
+.PN IndirectQuery
+packet
+.br
+\(-> \fIcollect-indirect-query\fP
+.RE
+.sp
+.LP
+\fIcollect-indirect-query\fP:
+.RS
+Receive
+.PN Willing
+\(-> \fIupdate-indirect-willing\fP
+.br
+User-requested connect to one host \(-> \fIstart-connection\fP
+.br
+Timeout \(-> \fIindirect\fP
+.RE
+.sp
+.LP
+\fIupdate-indirect-willing\fP:
+.RS
+Add new host to the host list presented to the user
+.br
+\(-> \fIcollect-indirect-query\fP
+.RE
+.sp
+.LP
+\fIstart-connection\fP:
+.RS
+Send
+.PN Request
+packet
+.br
+\(-> \fIawait-request-response\fP
+.RE
+.sp
+.LP
+\fIawait-request-response\fP:
+.RS
+Receive
+.PN Accept
+\(-> \fImanage\fP
+.br
+Receive
+.PN Decline
+\(-> \fIstop-connection\fP
+.br
+Timeout \(-> \fIstart-connection\fP
+.RE
+.sp
+.LP
+\fImanage\fP:
+.RS
+Save Session ID
+.br
+Send
+.PN Manage
+packet with Session ID
+.br
+\(-> \fIawait-manage-response\fP
+.RE
+.sp
+.LP
+\fIawait-manage-response\fP:
+.RS
+Receive
+.PN XOpenDisplay :
+\(-> \fIrun-session\fP
+.br
+Receive
+.PN Refuse
+with matching Session ID \(-> \fIstart-connection\fP
+.br
+Receive
+.PN Failed
+with matching Session ID \(-> \fIstop-connection\fP
+.br
+Timeout \(-> \fImanage\fP
+.RE
+.sp
+.LP
+\fIstop-connection\fP:
+.RS
+Display cause of termination to user
+.br
+\(-> \fIstart\fP
+.RE
+.sp
+.LP
+\fIrun-session\fP:
+.RS
+Decide to send
+.PN KeepAlive
+packet \(-> \fIkeep-alive\fP
+.br
+Await close of first display connection
+.br
+\(-> \fIreset-display\fP
+.RE
+.sp
+.LP
+\fIkeep-alive\fP:
+.RS
+Send
+.PN KeepAlive
+packet with current Session ID
+.br
+\(-> \fIawait-alive\fP
+.RE
+.sp
+.LP
+\fIawait-alive\fP:
+.RS
+Receive
+.PN Alive
+with matching Session ID \(-> \fIrun-session\fP
+.br
+Receive
+.PN Alive
+with nonmatching Session ID
+or FALSE Session Running \(-> \fIreset-display\fP
+.br
+Final timeout without receiving
+.PN Alive
+packet \(-> \fIreset-display\fP
+.br
+Timeout \(-> \fIkeep-alive\fP
+.RE
+.sp
+.LP
+\fIreset-display\fP:
+.RS
+(if possible) \(-> close all display connections associated with this session
+.br
+Last session \(-> close all display connections
+.br
+\(-> \fIstart\fP
+.RE
+.RE
+.LP
+Manager:
+.RS
+.sp
+.LP
+\fIidle\fP:
+.RS
+Receive
+.PN Query
+\(-> \fIquery-respond\fP
+.br
+Receive
+.PN BroadcastQuery
+\(-> \fIbroadcast-respond\fP
+.br
+Receive
+.PN IndirectQuery
+\(-> \fIindirect-respond\fP
+.br
+Receive
+.PN ForwardQuery
+\(-> \fIforward-respond\fP
+.br
+Receive
+.PN Request
+\(-> \fIrequest-respond\fP
+.br
+Receive
+.PN Manage
+\(-> \fImanage\fP
+.br
+An active session terminates \(-> \fIfinish-session\fP
+.br
+Receive
+.PN KeepAlive
+\(-> \fIsend-alive\fP
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIquery-respond\fP:
+.RS
+If willing to manage \(-> \fIsend-willing\fP
+.br
+\(-> \fIsend-unwilling\fP
+.RE
+.sp
+.LP
+\fIbroadcast-respond\fP:
+.RS
+If willing to manage \(-> \fIsend-willing\fP
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIindirect-respond\fP:
+.RS
+Send
+.PN ForwardQuery
+packets to all managers on redirect list
+.br
+If willing to manage \(-> \fIsend-willing\fP
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIforward-respond\fP:
+.RS
+Decode destination address, if willing to manage \(-> \fIsend-willing\fP
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIsend-willing\fP:
+.RS
+Send
+.PN Willing
+packet
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIsend-unwilling\fP:
+.RS
+Send
+.PN Unwilling
+packet
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIrequest-respond\fP:
+.RS
+If manager is willing to allow a session on display \(-> \fIaccept-session\fP
+.br
+\(-> \fIdecline-session\fP
+.RE
+.sp
+.LP
+\fIaccept-session\fP:
+.RS
+Generate Session ID and save Session ID, display address, and
+display number somewhere
+.br
+Send
+.PN Accept
+packet
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIdecline-session\fP:
+.RS
+Send
+.PN Decline
+packet
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fImanage\fP:
+.RS
+If Session ID matches saved Session ID \(-> \fIrun-session\fP
+.br
+If Session ID matches Session ID of session in process of
+starting up, or currently active session \(-> \fIidle\fP
+.br
+\(-> \fIrefuse\fP
+.RE
+.sp
+.LP
+\fIrefuse\fP:
+.RS
+Send
+.PN Refuse
+packet
+.br
+\(->
+\fIidle\fP
+.RE
+.sp
+.LP
+\fIrun-session\fP:
+.RS
+Terminate any session in progress
+.br
+.PN XOpenDisplay
+.br
+Open display succeeds \(->
+\fIstart-session\fP
+.br
+\(->
+\fIfailed\fP
+.RE
+.sp
+.LP
+\fIfailed\fP:
+.RS
+Send
+.PN Failed
+packet
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIstart-session\fP:
+.RS
+Start a new session
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIfinish-session\fP:
+.RS
+.PN XCloseDisplay
+.br
+\(-> \fIidle\fP
+.RE
+.sp
+.LP
+\fIsend-alive\fP:
+.RS
+Send
+.PN Alive
+packet containing current status
+.br
+\(-> \fIidle\fP
+.RE
+.RE
+.NH 1
+Protocol Encoding
+.XS
+\*(SN Protocol Encoding
+.XE
+.LP
+When XDMCP is implemented on top of the Internet User Datagram Protocol (UDP),
+port number 177 is to be used.
+The version number in all packets will be 1.
+Packet opcodes are 16-bit integers.
+.RS
+.TS
+l l.
+_
+.sp 6p
+.B
+Packet Name Encoding
+.sp 6p
+_
+.sp 6p
+.R
+T{
+.PN BroadcastQuery
+T} T{
+1
+T}
+T{
+.PN Query
+T} T{
+2
+T}
+T{
+.PN IndirectQuery
+T} T{
+3
+T}
+T{
+.PN ForwardQuery
+T} T{
+4
+T}
+T{
+.PN Willing
+T} T{
+5
+T}
+T{
+.PN Unwilling
+T} T{
+6
+T}
+T{
+.PN Request
+T} T{
+7
+T}
+T{
+.PN Accept
+T} T{
+8
+T}
+T{
+.PN Decline
+T} T{
+9
+T}
+T{
+.PN Manage
+T} T{
+10
+T}
+T{
+.PN Refuse
+T} T{
+11
+T}
+T{
+.PN Failed
+T} T{
+12
+T}
+T{
+.PN KeepAlive
+T} T{
+13\(dg
+T}
+T{
+.PN Alive
+T} T{
+14\(dg
+T}
+.sp 6p
+_
+.TE
+.RE
+.FS \(dg
+A previous version of this document incorrectly reversed the opcodes of
+.PN Alive
+and
+.PN KeepAlive .
+.FE
+.LP
+Per packet information follows:
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Query
+.PN BroadcastQuery
+.PN IndirectQuery
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Query, BroadcastQuery or IndirectQuery)
+ 2 CARD16 length
+ 1 CARD8 number of Authentication Names sent (m)
+ 2 CARD16 length of first Authentication Name (m\d\s-21\s+2\u)
+ m\d\s-21\s+2\u CARD8 first Authentication Name
+ \&... Other Authentication Names
+.De
+Note that these three packets are identical except for the opcode field.
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN ForwardQuery
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always ForwardQuery)
+ 2 CARD16 length
+ 2 CARD16 length of Client Address (m)
+ m CARD8 Client Address
+ 2 CARD16 length of Client Port (n)
+ n CARD8 Client Port
+ 1 CARD8 number of Authentication Names sent (o)
+ 2 CARD16 length of first Authentication Name (o\d\s-21\s+2\u)
+ o\d\s-21\s+2\u CARD8 first Authentication Name
+ \&... Other Authentication Names
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Willing
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Willing)
+ 2 CARD16 length (6 + m + n + o)
+ 2 CARD16 Length of Authentication Name (m)
+ m CARD8 Authentication Name
+ 2 CARD16 Hostname length (n)
+ n CARD8 Hostname
+ 2 CARD16 Status length (o)
+ o CARD8 Status
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Unwilling
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Unwilling)
+ 2 CARD16 length (4 + m + n)
+ 2 CARD16 Hostname length (m)
+ m CARD8 Hostname
+ 2 CARD16 Status length (n)
+ n CARD8 Status
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Request
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Request)
+ 2 CARD16 length
+ 2 CARD16 Display Number
+ 1 CARD8 Count of Connection Types (m)
+ 2 \(mu m CARD16 Connection Types
+ 1 CARD8 Count of Connection Addresses (n)
+ 2 CARD16 Length of first Connection Address (n\s-2\d1\u\s+2)
+ n\s-2\d1\u\s+2 CARD8 First Connection Address
+ \&... Other connection addresses
+ 2 CARD16 Length of Authentication Name (o)
+ o CARD8 Authentication Name
+ 2 CARD16 Length of Authentication Data (p)
+ p CARD8 Authentication Data
+ 1 CARD8 Count of Authorization Names (q)
+ 2 CARD16 Length of first Authorization Name (q\s-2\d1\u\s+2)
+ q\s-2\d1\u\s+2 CARD8 First Authorization Name
+ \&... Other authorization names
+ 2 CARD16 Length of Manufacturer Display ID (r)
+ r CARD8 Manufacturer Display ID
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Accept
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Accept)
+ 2 CARD16 length (12 + n + m + o + p)
+ 4 CARD32 Session ID
+ 2 CARD16 Length of Authentication Name (n)
+ n CARD8 Authentication Name
+ 2 CARD16 Length of Authentication Data (m)
+ m CARD8 Authentication Data
+ 2 CARD16 Length of Authorization Name (o)
+ o CARD8 Authorization Name
+ 2 CARD16 Length of Authorization Data (p)
+ p CARD8 Authorization Data
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Decline
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Decline)
+ 2 CARD16 length (6 + m + n + o)
+ 2 CARD16 Length of Status (m)
+ m CARD8 Status
+ 2 CARD16 Length of Authentication Name (n)
+ n CARD8 Authentication Name
+ 2 CARD16 Length of Authentication Data (o)
+ o CARD8 Authentication Data
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Manage
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Manage)
+ 2 CARD16 length (8 + m)
+ 4 CARD32 Session ID
+ 2 CARD16 Display Number
+ 2 CARD16 Length of Display Class (m)
+ m CARD8 Display Class
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Refuse
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Refuse)
+ 2 CARD16 length (4)
+ 4 CARD32 Session ID
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Failed
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Failed)
+ 2 CARD16 length (6 + m)
+ 4 CARD32 Session ID
+ 2 CARD16 Length of Status (m)
+ m CARD8 Status
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN KeepAlive
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always KeepAlive)
+ 2 CARD16 length (6)
+ 2 CARD16 Display Number
+ 4 CARD32 Session ID
+.De
+.LP
+.Ds 0
+.TA .2i .75i 1.75i 2.5i
+.ta .2i .75i 1.75i 2.5i
+.PN Alive
+.sp 3p
+ 2 CARD16 version number (always 1)
+ 2 CARD16 opcode (always Alive)
+ 2 CARD16 length (5)
+ 1 CARD8 Session Running (0: not running 1: running)
+ 4 CARD32 Session ID (0: not running)
+.De
+.NH 1
+Display Class Format
+.XS
+\*(SN Display Class Format
+.XE
+.LP
+The Display Class field of the
+.PN Manage
+packet is used by the display manager to collect common sorts of
+displays into manageable groups. This field is a string encoded of
+ISO-LATIN-1 characters in the following format:
+.LP
+.Ds
+\fIManufacturerID\fP\^-\^\fIModelNumber\fP
+.De
+.LP
+Both elements of this string must exclude characters of the set { \fB-\fP,
+\&\fB.\fP, \fB:\fP, \fB*\fP, \fB?\fP, \fI<space>\fP }.
+The ManufacturerID is a string that should be registered
+with the X Consortium.
+The ModelNumber is designed to identify characteristics of the display
+within the manufacturer's product line.
+This string should be documented in the users manual for the
+particular device and should probably not be specifiable by the
+display user to avoid unexpected configuration errors.
+.NH 1
+Manufacturer Display ID Format
+.XS
+\*(SN Manufacturer Display ID Format
+.XE
+.LP
+To authenticate the manager, the display and manager will share a private
+key.
+The manager, then, must be able to discover which key to use for a
+particular device.
+The Manufacturer Display ID field of the
+.PN Request
+packet is intended for this purpose. Typically, the manager host will
+contain a map between this number and the key. This field is intended to be
+unique per display, possibly the ethernet address of the display in the form:
+.LP
+.Ds
+-Ethernet-8:0:2b:a:f:d2
+.De
+.LP
+It can also be a string of the form:
+.LP
+.Ds
+\fIManufacturerID\fP\^-\^\fIModelNumber\fP\^-\^\fISerialNumber\fP
+.De
+.LP
+The ManufacturerID, ModelNumber and SerialNumber are encoded using
+ISO-LATIN-1 characters, excluding { \fB-\fP,
+\&\fB.\fP, \fB*\fP, \fB?\fP, \fI<space>\fP }
+.LP
+When the display is shipped to a customer, it should include both the
+Manufacturer Display ID and the private key in the documentation set.
+This information should not be modifiable by the display user.
+.NH 1
+Authentication
+.XS
+\*(SN Authentication
+.XE
+.LP
+In an environment where authentication is not needed, XDMCP can disable
+authentication by having the display send empty Authentication Name
+and Authentication Data fields in the
+.PN Request
+packet.
+In this case, the manager will not attempt to authenticate itself.
+Other authentication protocols may be developed, depending on local needs.
+.LP
+In an unsecure environment, the display must be able to verify that the
+source of the various packets is a trusted manager. These packets will
+contain authentication information. As an example of such a system, the
+following discussion describes the "XDM-AUTHENTICATION-1" authentication
+system. This system uses a 56-bit shared private key, and 64 bits of
+authentication data. An associated example X authorization protocol
+"XDM-AUTHORIZATION-1" will also be discussed. The 56-bit key is represented
+as a 64-bit number in network order (big endian). This means that the first
+octet in the representation will be zero. When incrementing a 64-bit value,
+the 8 octets of data will be interpreted in network order (big endian).
+That is, the last octet will be incremented, subsequent carries propogate
+towards the first octet.
+.IP \(bu 5
+Assumptions
+.RS
+.IP 1. 5
+The display and manager share a private key. This key could be programmed
+into the display by the manufacturer and shipped with the unit. It must not
+be available from the display itself, but should allow the value to be
+modified in some way. The system administrator would be responsible for
+managing a database of terminal keys.
+.IP 2. 5
+The display can generate random authentication numbers.
+.RE
+.LP
+Some definitions first:
+.EQ
+oc D cc sup kappa mark = "encryption of plain text " D " by key " kappa
+.EN C
+.EQ
+oc DELTA cc * sup kappa lineup = "decryption of crypto text " DELTA " with key " kappa
+.EN C
+.EQ
+{ tau } lineup = "private key shared by display and manager"
+.EN C
+.EQ
+rho lineup = "64 bit random number generated by display"
+.EN C
+.EQ
+alpha lineup = "authentication data in XDMCP packets"
+.EN C
+.EQ
+sigma lineup = "per-session private key, generated by manager"
+.EN C
+.EQ
+beta lineup = "authorization data"
+.EN
+.LP
+Encryption will use the DES; blocks shorter than 64 bits will be zero-filled
+on the right to 64 bits. Blocks longer than 64 bits will use block chaining:
+.EQ
+oc { D } cc sup kappa lineup = oc { D sub 1 } cc sup kappa " "
+oc { D sub 2 } " " xor " " oc { D sub 1 } cc sup kappa cc sup kappa
+.EN
+.LP
+The display generates the first authentication data in the
+.PN Request
+packet:
+.EQ
+alpha sub roman Request mark = oc rho cc sup tau
+.EN
+.LP
+For the
+.PN Accept
+packet, the manager decrypts the initial message and returns
+@alpha sub roman Accept@:
+.EQ
+rho lineup = oc alpha sub roman Request cc * sup tau
+.EN C
+.EQ
+alpha sub roman Accept lineup = oc rho + 1 cc sup tau
+.EN
+.LP
+The
+.PN Accept
+packet also contains the authorization intended for use by
+the X server. A description of authorization type ``XDM-AUTHORIZATION-1''
+follows.
+.LP
+The
+.PN Accept
+packet contains the authorization name
+``XDM-AUTHORIZATION-1''. The authorization data is the string:
+.EQ
+beta sub Accept mark = oc sigma cc sup tau
+.EN
+.LP
+To create authorization information for connection setup with the X server
+using the XDM-AUTHORIZATION-1 authorization protocol, the client computes the
+following:
+.EQ
+N mark = "X client identifier"
+.EN C
+.EQ
+T lineup = "Current time in seconds on client host (32 bits)"
+.EN
+.EQ C
+beta lineup = oc rho N T cc sup sigma
+.EN
+.LP
+For TCP connections @N@ is 48 bits long and contains the 32-bit IP address of
+the client host followed by the 16-bit port number of the client socket.
+Formats for other connections must be registered.
+The resulting value, @beta@, is 192 bits of authorization data that is sent
+in the connection setup to the server. The server receives the packet,
+decrypts the contents. To accept the connection, the following must hold:
+.IP \(bu 5
+@rho@ must match the value generated for the most recent XDMCP negotiation.
+.IP \(bu 5
+@T@ must be within 1200 seconds of the internally stored time. If no time
+been received before, the current time is set to @T@.
+.IP \(bu 5
+No packet containing the same pair (@N@, @T@) can have been received
+in the last 1200 seconds (20 minutes).
+.bp
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.TC
diff --git a/specs/XIM/xim.ms b/specs/XIM/xim.ms
new file mode 100644
index 0000000..488e88c
--- /dev/null
+++ b/specs/XIM/xim.ms
@@ -0,0 +1,4276 @@
+.\" $Xorg: xim.ms,v 1.3 2000/08/17 19:42:21 cpqbld Exp $
+.\" To print this out, type tbl macros.t ThisFile | troff -ms
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.TL
+\s+3\fBThe Input Method Protocol\fP\s-3
+.sp
+\fBVersion 1.0\fP
+.sp
+\fBX Consortium Standard\fP
+.sp
+\fBX Version 11, Release 6.4\fP
+.sp 3
+.AU
+Masahiko Narita
+.AI
+FUJITSU Limited.
+.AU
+Hideki Hiura
+.AI
+SunSoft, Inc.
+.sp 3
+.AB
+.LP
+This specifies a protocol between IM library and IM (Input Method)
+Server for internationalized text input, which is independent from
+any specific language, any specific input method and the transport layer
+used in communication between the IM library and the IM Server, and uses
+a client-server model.
+This protocol allows user to use his/her favorite input method for all
+applications within the stand-alone distributed environment.
+.AE
+.ce 0
+.br
+\&
+.LP
+.ps 11
+.nr PS 11
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+.DS C
+X Window System is a trademark of X Consortium, Inc.
+.sp
+Copyright \(co 1993, 1994 by X Consortium, Inc.
+.DE
+.sp 2
+.LP
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+.sp 3
+.DS C
+Copyright \(co 1993, 1994 by FUJITSU LIMITED
+.sp
+Copyright \(co 1993, 1994 by Sun Microsystems, Inc.
+.DE
+.sp 2
+.LP
+Permission to use, copy, modify, and distribute this documentation
+for any purpose and without fee is hereby granted, provided
+that the above copyright notice and this permission
+notice appear in all copies.
+Fujitsu and Sun Microsystems make no representations
+about the suitability for any purpose of the information in this document.
+This documentation is provided as is without express or implied warranty.
+.ps 11
+.nr PS 11
+.bp 1
+.EH '\fBX Input Method Protocol\fP''\fBX11, Release 6.1\fP'
+.OH '\fBX Input Method Protocol\fP''\fBX11, Release 6.1\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Introduction
+.XS
+\*(SN Introduction
+.XE
+.NH 2
+Scope
+.XS
+\*(SN Scope
+.XE
+.LP
+The internationalization in the
+X Window System
+Version 11, Release 5 (X11R5) provides a common API which application
+developers can use to create portable internationalized programs and to
+adapt them to the requirements of different native languages, local customs,
+and character string encodings (this is called ``localization'').
+As one of its internationalization mechanisms X11R5 has defined a functional
+interface for internationalized text input, called XIM (X Input Method).
+.LP
+When a client-server model is used with an IM (Input Method) implementation,
+a protocol must be established between the client and the server.
+However, the protocol used to interface Input Method Servers (IM Servers)
+with the Input Method libraries (IM libraries) to which applications are
+linked was not addressed in X11R5.
+This led application developers to depend on vendor-specific input methods,
+decreased the user's choice of available input methods, and made it more
+difficult for developers to create portable applications. This paper describes
+the Input Method Protocol developed for X11R6 to resolve the above problems
+and to address the requirements of existing and future input methods.
+.LP
+The Input Method Protocol is independent from the transport layer used in
+communication between the IM library and the IM Server.
+Thus, the input method protocol can be built on any inter-process
+communication mechanism, such as TCP/IP or the X protocol.
+.LP
+In addition, the protocol provides for future extensions such as differing
+input model types.
+.LP
+.NH 2
+Background
+.XS
+\*(SN Background
+.XE
+.LP
+Text input is much more simple for some languages than
+others. English, for instance, uses an alphabet of a manageable size,
+and input consists of pressing the corresponding key on a keyboard,
+perhaps in combination with a shift key for capital letters or special
+characters.
+.LP
+Some languages have larger alphabets, or modifiers such as accents,
+which require the addition of special key combinations in order to enter
+text. These input methods may require ``dead-keys'' or ``compose-keys''
+which, when followed by different combinations of key strokes,
+generate different characters.
+.LP
+Text input for ideographic languages is much less simple. In these
+languages, characters represent actual objects rather than phonetic
+sounds used in pronouncing a word, and the number of characters
+in these languages may continue to grow. In Japanese, for instance, most
+text input methods involve entering characters in a phonetic alphabet,
+after which the input method searches a dictionary for possible
+ideographic equivalents (of which there may be many). The input method then
+presents the candidate characters for the user to choose from.
+.LP
+In Japanese, either Kana (phonetic symbols) or Roman letters are
+typed and then a region is selected for conversion to Kanji. Several
+Kanji characters may have the same phonetic representation. If that
+is the case with the string entered, a menu of characters is presented
+and the user must choose the appropriate one. If no choice is necessary
+or a preference has been established, the input method does the
+substitution directly.
+.LP
+These complicated input methods must present state information (Status Area),
+text entry and edit space (Preedit Area), and menu/choice presentations
+(Auxiliary Area). Much of the protocol between the IM library and the IM
+Server involves managing these IM areas.
+Because of the size and complexity of these input methods, and because
+of how widely they vary from one language or locale to another, they are
+usually implemented as separate processes which can serve many client
+processes on the same computer or network.
+.LP
+.NH 2
+Input Method Styles
+.XS
+\*(SN Input Method Styles
+.XE
+.LP
+X11 internationalization support includes the following four types of
+input method:
+.RS
+.IP "- on-the-spot:" 20
+The client application is directed by the IM Server to display all
+pre-edit data at the site of text insertion. The client registers
+callbacks invoked by the input method during pre-editing.
+.IP "- off-the-spot:" 20
+The client application provides display windows for the pre-edit data
+to the input method which displays into them directly.
+.IP "- over-the-spot:" 20
+The input method displays pre-edit data in a window which it brings up
+directly over the text insertion position.
+.IP "- root-window:" 20
+The input method displays all pre-edit data in a separate area of the
+screen in a window specific to the input method.
+.RE
+.LP
+Client applications must choose from the available input methods
+supported by the IM Server and provide the display areas and callbacks
+required by the input method.
+.LP
+.NH 1
+Architecture
+.XS
+\*(SN Architecture
+.XE
+.NH 2
+Implementation Model
+.XS
+\*(SN Implementation Model
+.XE
+.LP
+Within the X Window System environment, the following two typical
+architectural models can be used as an input method's implementation
+model.
+.RS
+.IP "- Client/Server model:" 20
+A separate process, the IM Server, processes input and handles preediting,
+converting, and committing. The IM library within the application, acting
+as client to the IM Server, simply receives the committed string from the
+IM Server.
+.IP "- Library model:" 20
+All input is handled by the IM library within the application. The
+event process is closed within the IM library and a separate IM Server
+process may not be required.
+.RE
+.LP
+Most languages which need complex preediting, such as Asian languages,
+are implemented using the Client/Server IM model. Other languages
+which need only dead key or compose key processing, such as European
+languages, are implemented using the Library model.
+.LP
+In this paper, we discuss mainly the Client/Server IM model and the
+protocol used in communication between the IM library (client) and the IM
+Server.
+.LP
+.NH 2
+Structure of IM
+.XS
+\*(SN Structure of IM
+.XE
+.LP
+When the client connects or disconnects to the IM Server, an open or close
+operation occurs between the client and the IM Server.
+.LP
+The IM can be specified at the time of XOpenIM() by setting the locale
+of the client and a locale modifier. Since the IM remembers
+the locale at the time of creation XOpenIM() can be called
+multiple times (with the
+setting for the locale and the locale modifier changed) to support
+multiple languages.
+.LP
+In addition, the supported IM type can be obtained using XGetIMValues().
+.LP
+The client usually holds multiple input (text) fields. Xlib provides a
+value type called the ``Input Context'' (IC) to manage each individual
+input field. An IC can be created by specifying XIM using XCreateIC(),
+and it can be destroyed using XDestroyIC().
+.LP
+The IC can specify the type of IM which is supported by XIM for each
+input field, so each input field can handle a different type of IM.
+.LP
+Most importantly information such as the committed string sent from
+the IM Server to the client, is exchanged based on each IC.
+.LP
+Since each IC corresponds to an input field, the focused input field
+should be announced to the IM Server using XSetICFocus(). (XUnsetICFocus()
+can also be used to change the focus.)
+.LP
+.NH 2
+Event Handling Model
+.XS
+\*(SN Event Handling Model
+.XE
+.LP
+Existing input methods support either the FrontEnd method, the BackEnd method,
+or both. This protocol specifically supports the BackEnd method as
+the default method, but also supports the FrontEnd method as an optional
+IM Server extension.
+.LP
+The difference between the FrontEnd and BackEnd methods is in how
+events are delivered to the IM Server. (Fig. 1)
+.LP
+.NH 3
+BackEnd Method
+.XS
+\*(SN BackEnd Method
+.XE
+.LP
+In the BackEnd method, client window input events are always delivered
+to the IM library, which then passes them to the IM Server. Events are
+handled serially in the order delivered, and therefore there is no
+synchronization problem between the IM library and the IM Server.
+.LP
+Using this method, the IM library forwards all KeyPress and KeyRelease
+events to the IM Server (as required by the Event Flow Control model
+described in section 2.4. ``Event Flow Control''), and synchronizes
+with the IM Server (as described in section 4.16. ``Filtering Events'').
+.LP
+.NH 3
+FrontEnd Method
+.XS
+\*(SN FrontEnd Method
+.XE
+.LP
+In the FrontEnd method, client window input events are delivered by the
+X server directly to both the IM Server and the IM library. Therefore this
+method provides much better interactive performance while preediting
+(particularly in cases such as when the IM Server is running locally on
+the user's workstation and the client application is running on another
+workstation over a relatively slow network).
+.LP
+However, the FrontEnd model may have synchronization problems between
+the key events handled in the IM Server and other events handled in the
+client, and these problems could possibly cause the loss or duplication
+of key events. For this reason, the BackEnd method is the core method
+supported, and the FrontEnd method is made available as an extension for
+performance purposes. (Refer to Appendix A for more information.)
+.LP
+.LP
+.bp
+... 0.05 6.513 4.737 10.45
+... 0.000i 3.937i 4.687i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 3.937i 4.687i
+.br
+.ps
+.ps 10
+\h'3.687i'\v'3.437i'\v'-.13m'\L'-0.500i\(br'\v'.13m'
+.sp -1
+\h'3.712i'\v'3.037i'\D'l-0.025i -0.100i'
+.sp -1
+\h'3.687i'\v'2.937i'\D'l-0.025i 0.100i'
+.sp -1
+\h'2.187i'\v'1.938i'\v'-.13m'\L'-0.750i\(br'\v'.13m'
+.sp -1
+\h'2.187i'\v'1.188i'\l'0.750i'
+.sp -1
+\h'2.937i'\v'1.188i'\v'-.13m'\L'1.250i\(br'\v'.13m'
+.sp -1
+\h'2.912i'\v'2.338i'\D'l0.025i 0.100i'
+.sp -1
+\h'2.937i'\v'2.438i'\D'l0.025i -0.100i'
+.sp -1
+\h'2.187i'\v'3.437i'\v'-.13m'\L'-1.499i\(br'\v'.13m'
+.sp -1
+\h'2.212i'\v'2.038i'\D'l-0.025i -0.100i'
+.sp -1
+\h'2.187i'\v'1.938i'\D'l-0.025i 0.100i'
+.sp -1
+\h'1.938i'\v'3.437i'\l'1.999i'
+.sp -1
+\h'3.937i'\v'3.437i'\v'-.13m'\L'0.500i\(br'\v'.13m'
+.sp -1
+\h'3.937i'\v'3.937i'\l'-1.999i'
+.sp -1
+\h'1.938i'\v'3.937i'\v'-.13m'\L'-0.500i\(br'\v'.13m'
+.sp -1
+\h'2.562i'\v'2.438i'\l'2.125i'
+.sp -1
+\h'4.687i'\v'2.438i'\v'-.13m'\L'0.499i\(br'\v'.13m'
+.sp -1
+\h'4.687i'\v'2.937i'\l'-2.125i'
+.sp -1
+\h'2.562i'\v'2.937i'\v'-.13m'\L'-0.499i\(br'\v'.13m'
+.sp -1
+\h'2.562i'\v'1.438i'\l'1.313i'
+.sp -1
+\h'3.875i'\v'1.438i'\v'-.13m'\L'0.437i\(br'\v'.13m'
+.sp -1
+\h'3.875i'\v'1.875i'\l'-1.313i'
+.sp -1
+\h'2.562i'\v'1.875i'\v'-.13m'\L'-0.437i\(br'\v'.13m'
+.sp -1
+\h'1.938i'\v'0.438i'\l'1.999i'
+.sp -1
+\h'3.937i'\v'0.438i'\v'-.13m'\L'1.500i\(br'\v'.13m'
+.sp -1
+\h'3.937i'\v'1.938i'\l'-1.999i'
+.sp -1
+\h'1.938i'\v'1.938i'\v'-.13m'\L'-1.500i\(br'\v'.13m'
+.sp -1
+\D'l0.000i 0.000i'
+.sp -1
+.ps
+.ps 12
+\h'3.812i'\v'3.217i'\h'-0.0m'\v'0.2m'FrontEnd Method (Extension)
+.sp -1
+\h'0.813i'\v'3.217i'\h'-0.0m'\v'0.2m'BackEnd Method (Core)
+.sp -1
+\h'2.562i'\v'3.779i'\h'-0.0m'\v'0.2m'X Server
+.sp -1
+\h'3.062i'\v'2.779i'\h'-0.0m'\v'0.2m'IM Server
+.sp -1
+\h'3.062i'\v'1.717i'\h'-0.0m'\v'0.2m'Library
+.sp -1
+\h'2.187i'\v'0.904i'\h'-0.0m'\v'0.2m'Application
+.sp -1
+.ps
+.ft
+.sp 1+3.937i
+.PE
+.if \n(00 .fi
+.ce
+.sp
+Fig.1 The Flow of Events
+.LP
+.NH 2
+Event Flow Control
+.XS
+\*(SN Event Flow Control
+.XE
+.LP
+This protocol supports two event flow models for communication between the
+IM library and the IM Server (Static and Dynamic).
+.LP
+Static Event Flow requires that input events always be sent to the IM
+Server from the client.
+.LP
+Dynamic Event Flow, however, requires only that those input events which
+need to be processed (converted) be sent to the IM Server from the client.
+.LP
+For instance, in the case of inputing a combination of ASCII characters
+and Chinese characters, ASCII characters do not need to be processed in
+the IM Server, so their key events do not have to be sent to the IM
+Server. On the other hand, key events necessary for composing Chinese
+characters must be sent to the IM Server.
+.LP
+Thus, by adopting the Dynamic Event Flow, the number of requests among the
+X Server, the client, and the IM Server is significantly reduced, and the
+number of context switches is also reduced, resulting in improved performance.
+The IM Server can send
+.PN XIM_REGISTER_TRIGGERKEYS
+message in order to switch the event flow in the Dynamic Event Flow.
+.LP
+The protocol for this process is described in section 4.5. ``Event Flow
+Control''.
+.LP
+.NH 1
+Default Preconnection Convention
+.XS
+\*(SN Default Preconnection Convention
+.XE
+.LP
+IM Servers are strongly encouraged to register their symbolic
+names as the ATOM names into the IM Server directory property,
+.PN XIM_SERVERS,
+on the root window of the screen_number 0.
+This property can contain a list of ATOMs, and the each ATOM represents
+each possible IM Server.
+IM Server names are restricted to POSIX Portable Filename Character Set.
+To discover if the IM Server is active, see if there is an owner for
+the selection with that atom name. To learn the address of that IM Server,
+convert the selection target
+.PN TRANSPORT,
+which will return a string form of the transport address(es).
+To learn the supported locales of that IM Server, convert the selection target
+.PN LOCALES,
+which will return a set of names of the supported locales in the syntax
+X/Open defines.
+.LP
+The basic semantics to determine the IM Server if there are
+multiple ATOMs are found in
+.PN XIM_SERVERS
+property, is first fit if the IM Server name is not given as
+a X modifier's category
+.PN im.
+.LP
+The address information retrievable from the
+.PN TRANSPORT
+target is a transport-specific name.
+The preregistered formats for transport-specific names are listed in Appendix B.
+Additional transport-specific names may be registered with X Consortium.
+.LP
+For environments that lack X connections, or for IM Servers which
+do not use the X Window System, the preconnection convention with IM Server
+may be given outside the X Window system (e.g. using a Name Service).
+.LP
+.NH 1
+Protocol
+.XS
+\*(SN Protocol
+.XE
+.LP
+The protocol described below uses the bi-directional
+synchronous/asynchronous request/reply/error model and is specified
+using the same conventions outlined in Section 2 of the core X Window
+System protocol [1]:
+.LP
+.NH 2
+Basic Requests Packet Format
+.XS
+\*(SN Basic Requests Packet Format
+.XE
+.LP
+This section describes the requests that may be exchanged between the client
+and the IM Server.
+.LP
+The basic request packet header format is as follows.
+.RS
+.DS
+ major-opcode: CARD8
+ minor-opcode: CARD8
+ length: CARD16
+.DE
+.RE
+The MAJOR-OPCODE specifies which core request or extension package this
+packet represents. If the MAJOR-OPCODE corresponds to a core request,
+the MINOR-OPCODE contains 8 bits of request-specific data.
+(If the MINOR-OPCODE is not used, it is 0.)
+Otherwise, the MAJOR-OPCODE and the MINOR-OPCODE are specified by
+.PN XIM_QUERY_EXTENSION
+message. (Refer to 4.7. Query the supported extension protocol list.)
+The LENGTH field specifies the number of 4 bytes elements following the
+header. If no additional data is followed by the header, the LENGTH field
+will be 0.
+.LP
+.NH 2
+Data Types
+.XS
+\*(SN Data Types
+.XE
+.LP
+The following data types are used in the core X IM Server protocol:
+.LP
+.nf
+.ta .2i .5i 2.0i
+BITMASK16
+ CARD16
+.sp
+BITMASK32
+ CARD32
+.sp
+PADDING FORMAT
+ Where N is some expression, and Pad(N) is the number of bytes needed to round N up to a
+ multiple of four.
+ Pad(N) = (4 - (N mod 4)) mod 4
+.sp
+LPCE
+ 1 A character from the4 X Portable Character Set in Latin Portable
+ Character Encoding
+.bp
+STRING
+ 2 n length of string in bytes
+ n LISTofLPCE string
+ p unused, p=Pad(2+n)
+.sp
+STR
+ 1 n length of name in bytes
+ n STRING8 name
+.sp
+XIMATTR
+ 2 CARD16 attribute ID (*1)
+ 2 CARD16 type of the value (*2)
+ 2 n length of im-attribute
+ n STRING8 im-attribute
+ p unused, p = Pad(2+n)
+.sp
+The im-attribute argument specifies XIM values such as XNQueryInputStyle.
+.sp
+XICATTR
+ 2 CARD16 attribute ID (*1)
+ 2 CARD16 type of the value (*2)
+ 2 n length of ic-attribute
+ n STRING8 ic-attribute
+ p unused, p = Pad(2+n)
+.LP
+.IP (*1)
+XIMATTR and XICATTR are used during the setup stage and XIMATTRIBUTE and
+XICATTRIBUTE are used after each attribute ID has been recognized by
+the IM Server and the IM library.
+.sp
+.IP (*2)
+The value types are defined as follows:
+.TS H
+tab(:);
+l l l s s
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+l l l s s
+l l l s s
+l l l s s
+l l l s s
+l l l s s
+l l l l l.
+_
+.sp 6p
+.B
+values:data:format
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+#0:Separator of NestedList:----- (*3)
+#1:byte data:CARD8
+#2:word data:CARD16
+#3:long data:CARD32
+#4:char data:STRING8
+#5:Window:CARD32
+#10:XIMStyles:2:n:number of XIMStyle list
+::2::unused
+::n:CARD32:XIMStyle list
+#11:XRectangle:2:INT16:X
+::2:INT16:Y
+::2:CARD16:width
+::2:CARD16:height
+#12:XPoint:2:INT16:X
+::2:INT16:Y
+#13:XFontSet:2:n:length of Base font name
+::n:STRING8:Base font name list
+::p::unused, p = Pad(2+n)
+#15:XIMHotKeyTriggers:4:n:T{
+number of XIMTRIGGERKEY list (*4)
+T}
+::n:XIMTRIGGERKEY:XIMHotkeyTrigger list
+#16:XIMHotKeyState::XIMHOTKEYSTATE:T{
+HotKey processing state
+T}
+#17:XIMStringConversion:XIMSTRCONVTEXT
+#18:XIMPreeditState:XIMPREEDITSTATE
+#19:XIMResetState:XIMRESETSTATE
+#x7fff:NestedList:-----
+.sp 6p
+_
+.TE
+.LP
+.IP (*3)
+The IC value for the separator of NestedList is defined as follows,
+.br
+ #define XNSeparatorofNestedList ``separatorofNestedList''
+.br
+, which is registered in X Consortium and cannot be used for any
+other purpose.
+.sp
+.IP (*4)
+LISTofFOO
+.RS
+A Type name of the form LISTof FOO means a counted list of elements of
+type FOO.
+The size of the length field may vary (it is not necessarily the same
+size as a FOO), and in some cases, it may be implicit.
+.RE
+.sp
+.LP
+.nf
+.ta .2i .5i 2.0i
+XIMTRIGGERKEY
+ 4 CARD32 keysym
+ 4 CARD32 modifier
+ 4 CARD32 modifier mask
+.sp
+ENCODINGINFO
+ 2 n length of encoding info
+ n STRING8 encoding info
+ p unused, p=Pad(2+n)
+.sp
+EXT
+ 1 CARD8 extension major-opcode
+ 1 CARD8 extension minor-opcode
+ 2 n length of extension name
+ n STRING8 extension name
+ p unused, p = Pad(n)
+.sp
+XIMATTRIBUTE
+ 2 CARD16 attribute ID
+ 2 n value length
+ n value
+ p unused, p = Pad(n)
+.sp
+XICATTRIBUTE
+ 2 CARD16 attribute ID
+ 2 n value length
+ n value
+ p unused, p = Pad(n)
+.sp
+.bp
+.ta .2i .5i 3.0i
+XIMSTRCONVTEXT
+ 2 CARD16 XIMStringConversionFeedback
+ #x0000001 XIMStringConversionLeftEdge
+ #x0000002 XIMStringConversionRightEdge
+ #x0000004 XIMStringConversionTopEdge
+ #x0000008 XIMStringConversionBottomEdge
+ #x0000010 XIMStringConversionConvealed
+ #x0000020 XIMStringConversionWrapped
+ 2 n byte length of the retrieved string
+ n STRING8 retrieved string
+ p unused, p = Pad(n)
+ 2 m byte length of feedback array
+ 2 unused
+ m LISTofXIMSTRCONVFEEDBACK feedback array(*1)
+.IP (*1)
+This field is reserved for future use.
+.sp
+.LP
+.nf
+.ta .2i .5i 2.0i
+XIMFEEDBACK
+ 4 CARD32 XIMFeedback
+ #x000001 XIMReverse
+ #x000002 XIMUnderline
+ #x000004 XIMHighlight
+ #x000008 XIMPrimary
+ #x000010 XIMSecondary
+ #x000020 XIMTertiary
+ #x000040 XIMVisibleToForward
+ #x000080 XIMVisibleToBackward
+ #x000100 XIMVisibleCenter
+.sp
+XIMHOTKEYSTATE
+ 4 CARD32 XIMHotKeyState
+ #x0000001 XIMHotKeyStateON
+ #x0000002 XIMHotKeyStateOFF
+.sp
+XIMPREEDITSTATE
+ 4 CARD32 XIMPreeditState
+ #x0000001 XIMPreeditEnable
+ #x0000002 XIMPreeditDisable
+.sp
+XIMRESETSTATE
+ 4 CARD32 XIMResetState
+ #x0000001 XIMInitialState
+ #x0000002 XIMPreserveState
+.LP
+.NH 2
+Error Notification
+.XS
+\*(SN Error Notification
+.XE
+.LP
+Both the IM Server and the IM library return
+.PN XIM_ERROR
+messages instead of the corresponding reply messages if any errors occur
+during data processing.
+.LP
+At most one error is generated per request. If more than one error condition
+is encountered in processing a request, the choice of which error is returned
+is implementation-dependent.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_ERROR (IM Server \(<-\(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:BITMASK16:flag (*1)
+::#0000:Both Input-Method-ID and Input-Context-ID are invalid
+::#0001:Input-Method-ID is valid
+::#0002:Input-Context-ID is valid
+:2:CARD16:Error Code
+::#1:BadAlloc
+::#2:BadStyle
+::#3:BadClientWindow
+::#4:BadFocusWindow
+::#5:BadArea
+::#6:BadSpotLocation
+::#7:BadColormap
+::#8:BadAtom
+::#9:BadPixel
+::#10:BadPixmap
+::#11:BadName
+::#12:BadCursor
+::#13:BadProtocol
+::#14:BadForeground
+::#15:BadBackground
+::#16:LocaleNotSupported
+::#999:BadSomething (*2)
+:2:n:byte length of error detail.
+:2:CARD16:type of error detail (*3)
+:n:STRING8:error detail (*4)
+:p::unused, p = Pad(n)
+.TE
+.LP
+.IP (*1)
+Before an IM is created, both Input-Method-ID and
+Input-Context-ID are invalid.
+Before an IC is created, only Input-Method-ID is valid.
+After that, both of Input-Method-ID and Input-Context-ID are valid.
+.IP (*2)
+Unspecific error, for example ``language engine died''
+.IP (*3)
+This field is reserved for future use.
+.IP (*4)
+Vendor defined detail error message
+.RE
+.LP
+.NH 2
+Connection Establishment
+.XS
+\*(SN Connection Establishment
+.XE
+.LP
+.PN XIM_CONNECT
+message requests to establish a connection over a mutually-understood virtual
+stream.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_CONNECT (IM library \(-> IM Server)
+.sp 6p
+:1::byte order
+::#x42 MSB first
+::#x6c LSB first
+:1::unused
+:2:CARD16:client-major-protocol-version (*1)
+:2:CARD16:client-minor-protocol-version (*1)
+:2:CARD16:number of client-auth-protocol-names
+:n:LISTofSTRING:client-auth-protocol-names
+.TE
+.LP
+.IP (*1)
+Specify the version of IM Protocol that the client supports.
+.RE
+.sp
+.LP
+A client must send
+.PN XIM_CONNECT
+message as the first message on the connection.
+The list specifies the names of authentication protocols the sending
+IM Server is willing to perform.
+(If the client need not authenticate, the list may be omited.)
+.LP
+.PN XIM_AUTH_REQUIRED
+message is used to send the authentication protocol name and protocol-specific
+data.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_AUTH_REQUIRED (IM library \(<-\(-> IM Server)
+.sp 6p
+:1:CARD8:auth-protocol-index
+:3::unused
+:2:n:length of authentication data
+:2::unused
+:n:<varies>:data
+:p::unused, p = Pad(n)
+.TE
+.RE
+.LP
+The auth-protocol is specified by an index into the list of names
+given in the
+.PN XIM_CONNECT
+or
+.PN XIM_AUTH_SETUP
+message. Any protocol-specific data that might be required is also sent.
+.LP
+The IM library sends
+.PN XIM_AUTH_REPLY
+message as the reply to
+.PN XIM_AUTH_REQUIRED
+message, if the IM Server is authenticated.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_AUTH_REPLY (IM library \(-> IM Server)
+.sp 6p
+:2:n:length of authentication data
+:2::unused
+:2:n:length of authentication data
+:2::unused
+:n:<varies>:data
+:p::unused, p = Pad(n)
+.TE
+.RE
+.LP
+The auth data is specific to the authentication protocol in use.
+.LP
+.PN XIM_AUTH_NEXT
+message requests to send more auth data.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_AUTH_NEXT (IM library \(<-\(-> IM Server)
+.sp 6p
+:2:n:length of authentication data
+:2::unused
+:n:<varies>:data
+:p::unused, p = Pad(n)
+.TE
+.RE
+.LP
+The auth data is specific to the authentication protocol in use.
+.LP
+The IM Server sends
+.PN XIM_AUTH_SETUP
+message to authenticate the client.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_AUTH_SETUP (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:number of client-auth-protocol-names
+:2::unused
+:n:LISTofSTRING:server-auth-protocol-names
+.TE
+.RE
+.LP
+The list specifies the names of authentication protocols the
+client is willing to perform.
+.LP
+.PN XIM_AUTH_NG
+message requests to give up the connection.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_AUTH_NG (IM library \(<-\(-> IM Server)
+.TE
+.RE
+.LP
+The IM Server sends
+.PN XIM_CONNECT_REPLY
+message as the reply to
+.PN XIM_CONNECT
+or
+.PN XIM_AUTH_REQUIRED
+message.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_CONNECT_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:server-major-protocol-version (*1)
+:2:CARD16:server-minor-protocol-version (*1)
+.TE
+.LP
+.IP (*1)
+Specify the version of IM Protocol that the IM Server supports.
+This document specifies major version one, minor version zero.
+.RE
+.sp
+.LP
+Here are the state diagrams for the client and the IM Server.
+.sp
+.B
+State transitions for the client
+.R
+.RS
+.LP
+\fIinit_status\fP:
+.RS
+Use authorization function \(-> \fIclient_ask\fP
+.br
+Not use authorization function \(-> \fIclient_no_check\fP
+.RE
+.sp
+.LP
+\fIstart\fP:
+.RS
+Send
+.PN XIM_CONNECT
+.RS
+If \fIclient_ask\fP \(-> \fIclient_wait1\fP
+.br
+If \fIclient_no_check\fP, client-auth-protocol-names may be omited \(-> \fIclient_wait2\fP
+.RE
+.RE
+.sp
+.LP
+\fIclient_wait1\fP:
+.RS
+Receive
+.PN XIM_AUTH_REQUIRED
+\(-> \fIclient_check\fP
+.br
+Receive <other> \(-> \fIclient_NG\fP
+.RE
+.sp
+.LP
+\fIclient_check\fP:
+.RS
+If no more auth needed, send
+.PN XIM_AUTH_REPLY
+\(-> \fIclient_wait2\fP
+.br
+If good auth data, send
+.PN XIM_AUTH_NEXT
+\(-> \fIclient_wait1\fP
+.br
+If bad auth data, send
+.PN XIM_AUTH_NG
+\(-> give up on this protocol
+.RE
+.sp
+.LP
+\fIclient_wait2\fP:
+.RS
+Receive
+.PN XIM_CONNECT_REPLY
+\(-> connect
+.br
+Receive
+.PN XIM_AUTH_SETUP
+\(-> \fIclient_more\fP
+.br
+Receive
+.PN XIM_AUTH_NEXT
+\(-> \fIclient_more\fP
+.br
+Receive
+.PN XIM_AUTH_NG
+\(-> give up on this protocol
+.br
+Receive <other> \(-> \fIclient_NG\fP
+.RE
+.sp
+.LP
+\fIclient_more\fP:
+.RS
+Send
+.PN XIM_AUTH_REQUIRED
+\(-> \fIclient_wait2\fP
+.RE
+.sp
+.LP
+\fIclient_NG\fP:
+.RS
+Send
+.PN XIM_AUTH_NG
+\(-> give up on this protocol
+.RE
+.RE
+.sp
+.LP
+.B
+State transitions for the IM Server
+.R
+.RS
+.LP
+\fIinit-status\fP:
+.RS
+Use authorization function \(-> \fIserver_ask\fP
+.br
+Not use authorization function \(-> \fIserver_no_check\fP
+.RE
+.sp
+.LP
+\fIstart\fP:
+.RS
+Receive
+.PN XIM_CONNECT
+\(-> \fIstart2\fP
+.br
+Receive <other> \(-> \fIserver_NG\fP
+.RE
+.sp
+.LP
+\fIstart2\fP:
+.RS
+If \fIclient_ask\fP, send
+.PN XIM_AUTH_REQUIRED
+\(-> \fIserver_wait1\fP
+.br
+If \fIclient_no_check\fP and \fIserver_ask\fP, send
+.PN XIM_AUTH_SETUP
+\(-> \fIserver_wait2\fP
+.br
+If \fIclient_no_check\fP and \fIserver_no_check\fP, send
+.PN XIM_CONNECT_REPLY
+\(-> connect
+.RE
+.sp
+.LP
+\fIserver_wait1\fP:
+.RS
+Receive
+.PN XIM_AUTH_REPLY
+\(-> \fIserver2\fP
+.br
+Receive
+.PN XIM_AUTH_NEXT
+\(-> \fIserver_more\fP
+.br
+Receive <other> \(-> \fIserver_NG\fP
+.RE
+.sp
+.LP
+\fIserver_more\fP
+.RS
+Send
+.PN XIM_AUTH_REQUIRED
+\(-> \fIserver_wait1\fP
+.RE
+.sp
+.LP
+\fIserver2\fP
+.RS
+If \fIserver_ask\fP, send
+.PN XIM_AUTH_SETUP
+\(-> \fIserver_wait2\fP
+.br
+If \fIserver_no_check\fP, send
+.PN XIM_CONNECT_REPLY
+\(-> connect
+.RE
+.sp
+.LP
+\fIserver_wait2\fP
+.RS
+Receive
+.PN XIM_AUTH_REQUIRED
+\(-> \fIserver_check\fP
+.br
+Receive <other> \(-> \fIserver_NG\fP
+.RE
+.sp
+.LP
+\fIserver_check\fP
+.RS
+If no more auth data, send
+.PN XIM_CONNECT_REPLY
+\(-> connect
+.br
+If bad auth data, send
+.PN XIM_AUTH_NG
+\(-> give up on this protocol
+.br
+If good auth data, send
+.PN XIM_AUTH_NEXT
+\(-> \fIserver_wait2\fP
+.RE
+.sp
+.LP
+\fIserver_NG\fP
+.RS
+Send
+.PN XIM_AUTH_NG
+\(-> give up on this protocol
+.RE
+.RE
+.sp
+.LP
+.PN XIM_DISCONNECT
+message requests to shutdown the connection over a mutually-understood
+virtual stream.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_DISCONNECT (IM library \(-> IM Server)
+.TE
+.RE
+.LP
+.PN XIM_DISCONNECT
+is a synchronous request. The IM library should wait until it receives
+either an
+.PN XIM_DISCONNECT_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_DISCONNECT_REPLY (IM Server \(-> IM library)
+.TE
+.RE
+.LP
+.PN XIM_OPEN
+requests to establish a logical connection between the IM library and the IM
+Server.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_OPEN (IM library \(-> IM Server)
+.sp 6p
+:n:STR:locale name
+:p::unused, p = Pad(n)
+.TE
+.RE
+.LP
+.PN XIM_OPEN
+is a synchronous request. The IM library should wait until receiving
+either an
+.PN XIM_OPEN_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_OPEN_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:n:byte length of IM attributes supported
+:n:LISTofXIMATTR:IM attributes supported
+:2:m:byte length of IC attributes supported
+:2:CARD16:unused
+:m:LISTofXICATTR: IC attributes supported
+.TE
+.RE
+.LP
+.PN XIM_OPEN_REPLY
+message returns all supported IM and IC attributes in LISTofXIMATTR and
+LISTofXICATTR. These IM and IC attribute IDs are used to reduce the amount
+of data which must be transferred via the network. In addition, this
+indicates to the IM library what kinds of IM/IC attributes can be used
+in this session, and what types of data will be exchanged. This allows
+the IM Server provider and application writer to support IM system
+enhancements with new IM/IC attributes, without modifying Xlib.
+The IC value for the separator of NestedList must be included in the
+LISTofXICATTR.
+.LP
+.PN XIM_CLOSE
+message requests to shutdown the logical connection between the IM library
+and the IM Server.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_CLOSE (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2::unused
+.TE
+.RE
+.LP
+.PN XIM_CLOSE
+is a synchronous request. The IM library should wait until receiving
+either an
+.PN XIM_CLOSE_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_CLOSE_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2::unused
+.TE
+.RE
+.LP
+.NH 2
+Event Flow Control
+.XS
+\*(SN Event Flow Control
+.XE
+.LP
+An IM Server must send
+.PN XIM_SET_EVENT_MASK
+message to the IM library in order for events to be forwarded to the IM
+Server, since the IM library initially doesn't forward any events to the
+IM Server. In the protocol, the IM Server will specify masks of X events
+to be forwarded and which need to be synchronized by the IM library.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SET_EVENT_MASK (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:EVENTMASK:forward-event-mask (*1)
+:4:EVENTMASK:synchronous-event-mask (*2)
+.TE
+.LP
+.IP (*1)
+Specify all the events to be forwarded to the IM Server by the IM library.
+.IP (*2)
+Specify the events to be forwarded with synchronous flag on by the IM library.
+.RE
+.sp
+.LP
+.PN XIM_SET_EVENT_MASK
+is an asynchronous request. The event masks are valid immediately after
+they are set until changed by another
+.PN XIM_SET_EVENT_MASK
+message. If input-context-ID is set to zero, the default value of the
+input-method-ID will be changed to the event masks specified in the request.
+That value will be used for the IC's which have no individual values.
+.LP
+Using the Dynamic Event Flow model, an IM Server sends
+.PN XIM_REGISTER_TRIGGERKEYS
+message to the IM library before sending
+.PN XIM_OPEN_REPLY
+message.
+Or the IM library may suppose that the IM Server uses the Static Event Flow
+model.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_REGISTER_TRIGGERKEYS (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2::unused
+:4:n:byte length of on-keys
+:n:LISTofXIMTRIGGERKEY:on-keys list
+:4:m:byte length of off-keys
+:m:LISTofXIMTRIGGERKEY:off-keys list
+.TE
+.RE
+.LP
+.PN XIM_REGISTER_TRIGGERKEYS
+is an asynchronous request.
+The IM Server notifys the IM library of on-keys and off-keys lists with
+this message.
+.LP
+The IM library notifys the IM Server with
+.PN XIM_TRIGGER_NOTIFY
+message that a key event matching either on-keys or off-keys has been occurred.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_TRIGGER_NOTIFY (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:CARD32:flag
+::#0:on-keys list
+::#1:off-keys list
+:4:CARD32:index of keys list
+:4:EVENTMASK:client-select-event-mask (*1)
+.TE
+.LP
+.IP (*1)
+Specify the events currently selected by the IM library with XSelectInput.
+.RE
+.sp
+.LP
+.PN XIM_TRIGGER_NOTIFY
+is a synchronous request. The IM library should wait until receiving
+either an
+.PN XIM_TRIGGER_NOTIFY_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_TRIGGER_NOTIFY_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.NH 2
+Encoding Negotiation
+.XS
+\*(SN Encoding Negotiation
+.XE
+.LP
+.PN XIM_ENCODING_NEGOTIATION
+message requests to decide which encoding to be sent across the wire.
+When the negotiation fails, the fallback default encoding is Portable
+Character Encoding.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_ENCODING_NEGOTIATION (IM library \(-> IM Server).sp 6p
+:2:CARD16:input-method-ID
+:2:n:byte length of encodings listed by name
+:n:LISTofSTR:list of encodings supported in the IM library.
+:p::unused, p = Pad(n)
+:2:m:byte length of encodings listed by detailed data
+:2::unused
+:m:LISTofENCODINGINFO:list of encordings supported in the IM library
+.TE
+.RE
+.LP
+The IM Server must choose one encoding from the list sent by the IM library.
+If index of the encording determined is -1 to indicate that the negotiation
+is failed, the fallback default encoding is used.
+The message must be issued after sending
+.PN XIM_OPEN
+message via XOpenIM().
+The name of encoding may be registered with X Consortium.
+.LP
+.PN XIM_ENCODING_NEGOTIATION
+is a synchronous request. The IM library should wait until receiving
+either an
+.PN XIM_ENCODING_NEGOTIATION_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_ENCODING_NEGOTIATION_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:category of the encoding determined.
+::#0:name
+::#1:detailed data
+:2:INT16:index of the encoding determinated.
+:2::unused
+.TE
+.RE
+.LP
+.NH 2
+Query the supported extension protocol list
+.XS
+\*(SN Query the supported extension protocol list
+.XE
+.LP
+.PN XIM_QUERY_EXTENSION
+message requests to query the IM extensions supported by the IM Server to
+which the client is being connected.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_QUERY_EXTENSION (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:n:T{
+byte length of extensions supported by the IM library
+T}
+:n:LISTofSTR:extensions supported by the IM library
+:p::unused, p = Pad(n)
+.TE
+.RE
+.LP
+An example of a supported extension is FrontEnd.
+The message must be issued after sending
+.PN XIM_OPEN
+message via XOpenIM().
+.LP
+If n is 0, the IM library queries the IM Server for all extensions.
+.LP
+If n is not 0, the IM library queries whether the IM Server supports the
+contents specified in the list.
+.LP
+If a client uses an extension request without previously having issued a
+.PN XIM_QUERY_EXTENSION
+message for that extension, the IM Server responds with a
+.PN BadProtocol
+error. If the IM Server encounters a request with an unknown MAJOR-OPCODE
+or MINOR-OPCODE, it responds with a
+.PN BadProtocol
+error.
+.LP
+.PN XIM_QUERY_EXTENSION
+is a synchronous request. The IM library should wait until receiving
+either an
+.PN XIM_QUERY_EXTENSION_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_QUERY_EXTENSION_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:n:T{
+byte length of extensions supported by both the IM library and the IM Server
+T}
+:n:LISTofEXT:T{
+list of extensions supported by both the IM library and the IM Server
+T}
+.TE
+.RE
+.LP
+.PN XIM_QUERY_EXTENSION_REPLY
+message returns the list of extensions supported by both the IM library and
+the IM Server. If the list passed in
+.PN XIM_QUERY_EXTENSION
+message is NULL, the IM Server returns the full list of extensions supported
+by the IM Server. If the list is not NULL, the IM Server returns the
+extensions in the list that are supported by the IM Server.
+.LP
+A zero-length string is not a valid extension name. The IM library should
+disregard any zero-length strings that are returned in the extension list.
+The IM library does not use the requests which are not supported by the IM
+Server.
+.LP
+.NH 2
+Setting IM Values
+.XS
+\*(SN Setting IM Values
+.XE
+.LP
+.PN XIM_SET_IM_VALUES
+requests to set attributes to the IM.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SET_IM_VALUES (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:n:byte length of im-attribute
+:n:LISTofXIMATTRIBUTE:im-attributes
+.TE
+.RE
+.LP
+The im-attributes in
+.PN XIM_SET_IM_VALUES
+message are specified as a LISTofXIMATTRIBUTE, specifying the attributes
+to be set. Attributes other than the ones returned by
+.PN XIM_OPEN_REPLY
+message should not be specified.
+.LP
+.PN XIM_SET_IM_VALUES
+is a synchronous request. The IM library should wait until receiving
+either an
+.PN XIM_SET_IM_VALUES_REPLY
+packet or an
+.PN XIM_ERROR
+packet, because it must receive the error attribute if
+.PN XIM_ERROR
+message is returned.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SET_IM_VALUES_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2::unused
+.TE
+.RE
+.LP
+.PN XIM_SET_IM_VALUES_REPLY
+message returns the input-method-ID to distinguish replies from multiple IMs.
+.LP
+.NH 2
+Getting IM Values
+.XS
+\*(SN getting IM Values
+.XE
+.LP
+.PN XIM_GET_IM_VALUES
+requests to query IM values supported by the IM Server currently being
+connected.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_GET_IM_VALUES (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:n:byte length of im-attribute-id
+:n:LISTofCARD16:im-attribute-id
+:p::unused, p=Pad(n)
+.TE
+.RE
+.LP
+.PN XIM_GET_IM_VALUES
+is a synchronous request. The IM library should wait until it receives
+either an
+.PN XIM_GET_IM_VALUES_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_GET_IM_VALUES_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:n:byte length of im-attributes returned
+:n:LISTofXIMATTRIBUTE:im-attributes returned
+.TE
+.RE
+.LP
+The IM Server returns IM values with
+.PN XIM_GET_IM_VALUES_REPLY
+message. The order of the returned im-attribute values corresponds directly
+to that of the list passed with the
+.PN XIM_GET_IM_VALUES
+message.
+.LP
+.NH 2
+Creating an IC
+.XS
+\*(SN Creating an IC
+.XE
+.LP
+.PN XIM_CREATE_IC
+message requests to create an IC.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_CREATE_IC (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:n:byte length of ic-attributes
+:n:LISTofXICATTRIBUTE:ic-attributes
+.TE
+.RE
+.LP
+The input-context-id is specified by the IM Server to identify the client
+(IC). (It is not specified by the client in
+.PN XIM_CREATE_IC
+message.), and it should not be set to zero.
+.LP
+.PN XIM_CREATE_IC
+is a synchronous request which returns the input-context-ID.
+The IM library should wait until it receives either an
+.PN XIM_CREATE_IC_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_CREATE_IC_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.NH 2
+Destroying the IC
+.XS
+\*(SN Destroying the IC
+.XE
+.LP
+.PN XIM_DESTROY_IC
+message requests to destroy the IC.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_DESTROY_IC (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.PN XIM_DESTROY_IC
+is a synchronous request. The IM library should not free its resources
+until it receives an
+.PN XIM_DESTROY_IC_REPLY
+message because
+.PN XIM_DESTROY_IC
+message may result in Callback packets such as
+.PN XIM_PREEDIT_DRAW
+and
+.PN XIM_PREEDIT_DONE.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_DESTROY_IC_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.NH 2
+Setting IC Values
+.XS
+\*(SN Setting IC Values
+.XE
+.LP
+.PN XIM_SET_IC_VALUES
+messages requests to set attributes to the IC.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SET_IC_VALUES (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:n:byte length of ic-attributes
+:2::unused
+:n:LISTofXICATTRIBUTE:ic-attributes
+.TE
+.RE
+.LP
+The ic-attributes in
+.PN XIM_SET_IC_VALUES
+message are specified as a LISTofXICATTRIBUTE, specifying the attributes
+to be set. Attributes other than the ones returned by
+.PN XIM_OPEN_REPLY
+message should not be specified.
+.LP
+.PN XIM_SET_IC_VALUES
+is a synchronous request. The IM library should wait until receiving
+either an
+.PN XIM_SET_IC_VALUES_REPLY
+packet or an
+.PN XIM_ERROR
+packet, because it must receive the error attribute if
+.PN XIM_ERROR
+message is returned.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SET_IC_VALUES_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.NH 2
+Getting IC Values
+.XS
+\*(SN Getting IC Values
+.XE
+.LP
+.PN XIM_GET_IC_VALUES
+message requests to query IC values supported by the IM Server currently
+being connected.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_GET_IC_VALUES (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:n:byte length of ic-attribute-id
+:n:LISTofCARD16:ic-attribute-id
+:p::unused, p=Pad(2+n)
+.TE
+.RE
+.LP
+In LISTofCARD16, the appearance of the ic-attribute-id for the separator
+of NestedList shows the end of the heading nested list.
+.LP
+.PN XIM_GET_IC_VALUES
+is a synchronous request and returns each attribute with its values to
+show the correspondence. The IM library should wait until receiving
+either an
+.PN XIM_GET_IC_VALUES_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_GET_IC_VALUES_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:n:byte length of ic-attribute
+:2::unused
+:n:LISTofXICATTRIBUTE:ic-attribute
+.TE
+.RE
+.LP
+.NH 2
+Setting IC Focus
+.XS
+\*(SN Setting IC Focus
+.XE
+.LP
+.PN XIM_SET_IC_FOCUS
+message requests to set the focus to the IC.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SET_IC_FOCUS (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.PN XIM_SET_IC_FOCUS
+is an asynchronous request.
+.LP
+.NH 2
+Unsetting IC Focus
+.XS
+\*(SN Unsetting IC Focus
+.XE
+.LP
+.PN XIM_UNSET_IC_FOCUS
+message requests to unset the focus to the focused IC.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_UNSET_IC_FOCUS (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.PN XIM_UNSET_IC_FOCUS
+is an asynchronous request.
+.LP
+.NH 2
+Filtering Events
+.XS
+\*(SN Filtering Events
+.XE
+.LP
+Event filtering is mainly provided for BackEnd method to allow input method
+to capture X events transparently to clients.
+.LP
+X Events are forwarded by
+.PN XIM_FORWARD_EVENT
+message.
+This message can be operated both synchronously and asynchronously.
+If the requester sets the synchronous flag, the receiver must send
+.PN XIM_SYNC_REPLY
+message back to the requester when all the data processing is done.
+.sp
+.B
+Protocol flow of BackEnd model
+.R
+.LP
+.LP
+With BackEnd method, the protocol flow can be classified into two
+methods in terms of synchronization, depending on the synchronous-eventmask
+of
+.PN XIM_SET_EVENT_MASK
+message. One can be called on-demand-synchronous method and another
+can be called as full-synchronous method.
+.LP
+In on-demand-synchronous method, the IM library always receives
+.PN XIM_FORWARD_EVENT
+or
+.PN XIM_COMMIT
+message as a synchronous request. Also, the IM Server needs to synchronously
+process the correspondent reply from the IM library and the following
+.PN XIM_FORWARD_EVENT
+message sent from the IM library when any of the event causes the IM Server
+to send
+.PN XIM_FORWARD_EVENT
+or
+.PN XIM_COMMIT
+message to the IM library, so that the input service is consistent. If the
+IM library gets the control back from the application after receiving the
+synchronous request, the IM library replies for the synchronous request before
+processing any of the events. In this time, the IM Server blocks
+.PN XIM_FORWARD_EVENT
+message which is sent by the IM library, and handles it after receiving the
+reply. However, the IM Server handles the other protocols at any time.
+.LP
+In full-synchronous method, the IM library always sends
+.PN XIM_FORWARD_EVENT
+message to the IM Server as a synchronous request. Therefore, the reply to it
+from the IM Server will be put between the
+.PN XIM_FORWARD_EVENT
+message and its
+.PN XIM_SYNC_REPLY
+message.
+In case of sending
+.PN XIM_FORWARD_EVENT
+or
+.PN XIM_COMMIT
+message, the IM Server should set the synchronous flag off. Because the
+synchronization can be done by the following
+.PN XIM_SYNC_REPLY
+message.
+.sp
+.LP
+.B
+Sample Protocol flow chart 1
+.R
+.LP
+Following chart shows one of the simplest protocol flow which only
+deals with keyevents for preediting operation.
+.LP
+.\"====================== event flow figure start =====================
+... 0.425 6.888 6.3 10.296
+... 0.000i 3.408i 5.875i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 3.408i 5.875i
+.br
+.ps 11
+\h'3.125i'\v'0.496i'\D'l1.625i 0.250i'
+.sp -1
+\h'4.647i'\v'0.756i'\D'l0.103i -0.010i'
+.sp -1
+\h'4.655i'\v'0.706i'\D'l0.095i 0.040i'
+.sp -1
+\h'3.125i'\v'1.221i'\D'l1.687i 0.188i'
+.sp -1
+\h'4.710i'\v'1.423i'\D'l0.102i -0.014i'
+.sp -1
+\h'4.715i'\v'1.373i'\D'l0.097i 0.036i'
+.sp -1
+\h'4.750i'\v'0.971i'\D'l-1.625i 0.438i'
+.sp -1
+\h'3.215i'\v'1.359i'\D'l-0.090i 0.050i'
+.sp -1
+\h'3.228i'\v'1.407i'\D'l-0.103i 0.002i'
+.sp -1
+\h'2.000i'\v'0.409i'\D'l1.000i 0.062i'
+.sp -1
+\h'2.899i'\v'0.490i'\D'l0.101i -0.019i'
+.sp -1
+\h'2.902i'\v'0.440i'\D'l0.098i 0.031i'
+.sp -1
+\h'2.000i'\v'1.034i'\D'l1.000i 0.125i'
+.sp -1
+\h'2.898i'\v'1.171i'\D'l0.102i -0.012i'
+.sp -1
+\h'2.904i'\v'1.122i'\D'l0.096i 0.037i'
+.sp -1
+\h'3.000i'\v'1.409i'\D'l-1.000i 0.062i'
+.sp -1
+\h'2.098i'\v'1.440i'\D'l-0.098i 0.031i'
+.sp -1
+\h'2.101i'\v'1.490i'\D'l-0.101i -0.019i'
+.sp -1
+\h'1.125i'\v'1.846i'\l'-0.500i'
+.sp -1
+\h'0.725i'\v'1.821i'\D'l-0.100i 0.025i'
+.sp -1
+\h'0.725i'\v'1.871i'\D'l-0.100i -0.025i'
+.sp -1
+\h'0.688i'\v'0.159i'\l'0.437i'
+.sp -1
+\h'1.025i'\v'0.184i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.025i'\v'0.134i'\D'l0.100i 0.025i'
+.sp -1
+\h'0.688i'\v'0.846i'\l'0.437i'
+.sp -1
+\h'1.025i'\v'0.871i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.025i'\v'0.821i'\D'l0.100i 0.025i'
+.sp -1
+\h'5.562i'\v'1.409i'\l'0.313i'
+.sp -1
+\h'5.875i'\v'1.409i'\v'-.13m'\L'1.937i\(br'\v'.13m'
+.sp -1
+\h'5.875i'\v'3.346i'\D'l-0.250i 0.000i'
+.sp -1
+\h'5.725i'\v'3.321i'\D'l-0.100i 0.025i'
+.sp -1
+\h'5.725i'\v'3.371i'\D'l-0.100i -0.025i'
+.sp -1
+\h'2.062i'\v'2.096i'\l'0.875i'
+.sp -1
+\h'2.837i'\v'2.121i'\D'l0.100i -0.025i'
+.sp -1
+\h'2.837i'\v'2.071i'\D'l0.100i 0.025i'
+.sp -1
+\h'3.000i'\v'0.034i'\v'-.13m'\L'3.374i\(br'\v'.13m'
+.sp -1
+\h'4.875i'\v'0.034i'\v'-.13m'\L'3.374i\(br'\v'.13m'
+.sp -1
+\h'2.013i'\v'2.871i'\D'l0.937i 0.250i'
+.sp -1
+\h'2.847i'\v'3.119i'\D'l0.103i 0.002i'
+.sp -1
+\h'2.860i'\v'3.071i'\D'l0.090i 0.050i'
+.sp -1
+\h'3.062i'\v'3.134i'\D'l1.688i 0.187i'
+.sp -1
+\h'4.648i'\v'3.335i'\D'l0.102i -0.014i'
+.sp -1
+\h'4.653i'\v'3.285i'\D'l0.097i 0.036i'
+.sp -1
+\h'3.062i'\v'2.533i'\D'l1.750i 0.213i'
+.sp -1
+\h'4.710i'\v'2.759i'\D'l0.102i -0.013i'
+.sp -1
+\h'4.716i'\v'2.709i'\D'l0.096i 0.037i'
+.sp -1
+\h'3.062i'\v'2.096i'\l'1.750i'
+.sp -1
+\h'4.712i'\v'2.121i'\D'l0.100i -0.025i'
+.sp -1
+\h'4.712i'\v'2.071i'\D'l0.100i 0.025i'
+.sp -1
+\h'4.812i'\v'2.284i'\l'-1.750i'
+.sp -1
+\h'3.162i'\v'2.259i'\D'l-0.100i 0.025i'
+.sp -1
+\h'3.162i'\v'2.309i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.250i'\v'0.193i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'1.250i'\v'0.381i'\h'-0.0m'\v'0.2m'\s10\fRXFilterEvent\fP
+.sp -1
+\h'1.250i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'1.250i'\v'1.068i'\h'-0.0m'\v'0.2m'\s10\fRXFilterEvent\fP
+.sp -1
+\h'1.250i'\v'1.506i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'1.250i'\v'1.881i'\h'-0.0m'\v'0.2m'\s10\fRXmbLookupString\fP
+.sp -1
+\h'4.875i'\h'-0.0m'\v'0.2m'\s12\fRIM Server\fP
+.sp -1
+\h'2.437i'\h'-0.0m'\v'0.2m'\s12\fRIM library\fP
+.sp -1
+\h'1.250i'\v'1.693i'\h'-0.0m'\v'0.2m'\s10\fRXFilterEvent (returns False) \fP
+.sp -1
+\v'2.168i'\h'-0.0m'\v'0.2m'\s10\fRthe focus\fP
+.sp -1
+\h'1.250i'\h'-0.0m'\v'0.2m'\s12\fRXlib API\fP
+.sp -1
+\v'2.006i'\h'-0.0m'\v'0.2m'\s10\fRApplication moves\fP
+.sp -1
+\h'3.187i'\v'0.443i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+\h'3.187i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+\h'3.187i'\v'1.631i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+\h'3.187i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRor XIM_COMMIT\fP
+.sp -1
+\h'5.000i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRsynchronous \fP
+.sp -1
+\h'5.000i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRrequest\fP
+.sp -1
+\h'0.062i'\v'0.193i'\h'-0.0m'\v'0.2m'\s10\fRKey event\fP
+.sp -1
+\h'0.062i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRKey event\fP
+.sp -1
+\h'3.187i'\v'1.131i'\h'-0.0m'\v'0.2m'\s10\fR(synchronous) \fP
+.sp -1
+\h'5.000i'\v'1.443i'\h'-0.0m'\v'0.2m'\s10\fRPending\fP
+.sp -1
+\h'5.000i'\v'2.381i'\h'-0.0m'\v'0.2m'\s10\fRprocessed\fP
+.sp -1
+\h'5.000i'\v'2.506i'\h'-0.0m'\v'0.2m'\s10\fR(The focused\fP
+.sp -1
+\h'5.000i'\v'2.631i'\h'-0.0m'\v'0.2m'\s10\fRIC is changed) \fP
+.sp -1
+\h'5.000i'\v'2.881i'\h'-0.0m'\v'0.2m'\s10\fRprocessed\fP
+.sp -1
+\h'1.250i'\v'2.131i'\h'-0.0m'\v'0.2m'\s10\fRXSetICFocus\fP
+.sp -1
+\h'3.125i'\v'2.881i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SYNC_REPLY as a reply\fP
+.sp -1
+\h'3.125i'\v'3.043i'\h'-0.0m'\v'0.2m'\s10\fRof the XIM_FORWARD_EVENT\fP
+.sp -1
+\h'1.250i'\v'2.881i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'3.312i'\v'2.506i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SET_IC_FOCUS\fP
+.sp -1
+\h'3.312i'\v'2.006i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SYNC\fP
+.sp -1
+\h'3.312i'\v'2.193i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SYNC_REPLY\fP
+.sp -1
+\h'5.000i'\v'3.381i'\h'-0.0m'\v'0.2m'\s10\fRprocessed\fP
+.sp -1
+.sp 1+3.408i
+.PE
+.if \n(00 .fi
+
+.\"====================== event flow figure end =======================
+.ce
+.sp
+Fig.2 Sample Protocol Flow
+.sp
+.LP
+.B
+Sample Protocol flow chart 2
+.R
+.LP
+Following chart shows one of the complex protocol flow, which deals
+with multiple focus windows and button press event as well as keyevent,
+and the focus is moved by the application triggered by both of keyevent
+and button press event.
+.LP
+.bp
+.\"====================== event2 flow figure start =====================
+... 0.425 5.575 6.3 10.296
+... 0.000i 4.721i 5.875i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 4.721i 5.875i
+.br
+.ps 11
+\h'3.125i'\v'0.496i'\D'l1.625i 0.163i'
+.sp -1
+\h'4.648i'\v'0.674i'\D'l0.102i -0.015i'
+.sp -1
+\h'4.653i'\v'0.624i'\D'l0.097i 0.035i'
+.sp -1
+\h'2.000i'\v'0.409i'\D'l1.000i 0.062i'
+.sp -1
+\h'2.899i'\v'0.490i'\D'l0.101i -0.019i'
+.sp -1
+\h'2.902i'\v'0.440i'\D'l0.098i 0.031i'
+.sp -1
+\h'0.688i'\v'0.159i'\l'0.437i'
+.sp -1
+\h'1.025i'\v'0.184i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.025i'\v'0.134i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.250i'\v'0.193i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'1.250i'\v'0.381i'\h'-0.0m'\v'0.2m'\s10\fRXFilterEvent\fP
+.sp -1
+\h'3.187i'\v'0.443i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+\h'0.062i'\v'0.193i'\h'-0.0m'\v'0.2m'\s10\fRKey event\fP
+.sp -1
+\h'3.125i'\v'1.221i'\D'l1.687i 0.125i'
+.sp -1
+\h'4.710i'\v'1.364i'\D'l0.102i -0.018i'
+.sp -1
+\h'4.714i'\v'1.314i'\D'l0.098i 0.032i'
+.sp -1
+\h'4.750i'\v'0.971i'\D'l-1.625i 0.750i'
+.sp -1
+\h'3.205i'\v'1.656i'\D'l-0.080i 0.065i'
+.sp -1
+\h'3.226i'\v'1.702i'\D'l-0.101i 0.019i'
+.sp -1
+\h'2.000i'\v'1.034i'\D'l1.000i 0.125i'
+.sp -1
+\h'2.898i'\v'1.171i'\D'l0.102i -0.012i'
+.sp -1
+\h'2.904i'\v'1.122i'\D'l0.096i 0.037i'
+.sp -1
+\h'0.688i'\v'0.846i'\l'0.437i'
+.sp -1
+\h'1.025i'\v'0.871i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.025i'\v'0.821i'\D'l0.100i 0.025i'
+.sp -1
+\h'3.000i'\v'0.034i'\v'-.13m'\L'4.687i\(br'\v'.13m'
+.sp -1
+\h'0.750i'\v'1.346i'\l'0.313i'
+.sp -1
+\h'0.963i'\v'1.371i'\D'l0.100i -0.025i'
+.sp -1
+\h'0.963i'\v'1.321i'\D'l0.100i 0.025i'
+.sp -1
+\h'3.125i'\v'1.509i'\D'l1.687i 0.125i'
+.sp -1
+\h'4.710i'\v'1.652i'\D'l0.102i -0.018i'
+.sp -1
+\h'4.714i'\v'1.602i'\D'l0.098i 0.032i'
+.sp -1
+\h'4.812i'\v'1.721i'\D'l-1.687i 0.188i'
+.sp -1
+\h'3.222i'\v'1.873i'\D'l-0.097i 0.036i'
+.sp -1
+\h'3.227i'\v'1.923i'\D'l-0.102i -0.014i'
+.sp -1
+\h'2.937i'\v'1.971i'\D'l-0.937i 0.188i'
+.sp -1
+\h'2.093i'\v'2.115i'\D'l-0.093i 0.044i'
+.sp -1
+\h'2.103i'\v'2.164i'\D'l-0.103i -0.005i'
+.sp -1
+\h'1.125i'\v'2.533i'\l'-0.500i'
+.sp -1
+\h'0.725i'\v'2.508i'\D'l-0.100i 0.025i'
+.sp -1
+\h'0.725i'\v'2.558i'\D'l-0.100i -0.025i'
+.sp -1
+\h'5.562i'\v'1.346i'\l'0.313i'
+.sp -1
+\h'5.875i'\v'1.346i'\v'-.13m'\L'2.687i\(br'\v'.13m'
+.sp -1
+\h'5.875i'\v'4.033i'\D'l-0.250i 0.000i'
+.sp -1
+\h'5.725i'\v'4.008i'\D'l-0.100i 0.025i'
+.sp -1
+\h'5.725i'\v'4.058i'\D'l-0.100i -0.025i'
+.sp -1
+\h'2.013i'\v'3.559i'\D'l0.937i 0.250i'
+.sp -1
+\h'2.847i'\v'3.807i'\D'l0.103i 0.002i'
+.sp -1
+\h'2.860i'\v'3.759i'\D'l0.090i 0.050i'
+.sp -1
+\h'3.062i'\v'3.821i'\D'l1.688i 0.188i'
+.sp -1
+\h'4.648i'\v'4.023i'\D'l0.102i -0.014i'
+.sp -1
+\h'4.653i'\v'3.973i'\D'l0.097i 0.036i'
+.sp -1
+\h'2.000i'\v'1.358i'\D'l1.000i 0.126i'
+.sp -1
+\h'2.898i'\v'1.496i'\D'l0.102i -0.012i'
+.sp -1
+\h'2.904i'\v'1.447i'\D'l0.096i 0.037i'
+.sp -1
+\h'3.062i'\v'2.159i'\D'l-0.250i 0.000i'
+.sp -1
+\h'2.812i'\v'2.159i'\v'-.13m'\L'1.812i\(br'\v'.13m'
+.sp -1
+\h'2.812i'\v'3.971i'\D'l0.125i 0.125i'
+.sp -1
+\h'2.849i'\v'4.043i'\D'l0.088i 0.053i'
+.sp -1
+\h'2.884i'\v'4.008i'\D'l0.053i 0.088i'
+.sp -1
+\h'2.062i'\v'2.783i'\l'0.875i'
+.sp -1
+\h'2.837i'\v'2.808i'\D'l0.100i -0.025i'
+.sp -1
+\h'2.837i'\v'2.758i'\D'l0.100i 0.025i'
+.sp -1
+\h'2.062i'\v'3.783i'\D'l0.813i 0.438i'
+.sp -1
+\h'2.775i'\v'4.196i'\D'l0.100i 0.025i'
+.sp -1
+\h'2.799i'\v'4.152i'\D'l0.076i 0.069i'
+.sp -1
+\h'0.625i'\v'3.533i'\l'0.438i'
+.sp -1
+\h'0.963i'\v'3.558i'\D'l0.100i -0.025i'
+.sp -1
+\h'0.963i'\v'3.508i'\D'l0.100i 0.025i'
+.sp -1
+\h'3.062i'\v'4.346i'\D'l1.625i 0.163i'
+.sp -1
+\h'4.585i'\v'4.524i'\D'l0.102i -0.015i'
+.sp -1
+\h'4.590i'\v'4.474i'\D'l0.097i 0.035i'
+.sp -1
+\h'4.875i'\v'0.034i'\v'-.13m'\L'4.687i\(br'\v'.13m'
+.sp -1
+\h'3.062i'\v'4.146i'\D'l1.688i 0.187i'
+.sp -1
+\h'4.648i'\v'4.347i'\D'l0.102i -0.014i'
+.sp -1
+\h'4.653i'\v'4.297i'\D'l0.097i 0.036i'
+.sp -1
+\h'3.062i'\v'2.871i'\D'l1.750i 0.212i'
+.sp -1
+\h'4.710i'\v'3.096i'\D'l0.102i -0.013i'
+.sp -1
+\h'4.716i'\v'3.046i'\D'l0.096i 0.037i'
+.sp -1
+\h'1.250i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'1.250i'\v'1.068i'\h'-0.0m'\v'0.2m'\s10\fRXFilterEvent\fP
+.sp -1
+\h'4.875i'\h'-0.0m'\v'0.2m'\s12\fRIM Server\fP
+.sp -1
+\h'2.437i'\h'-0.0m'\v'0.2m'\s12\fRIM library\fP
+.sp -1
+\h'1.250i'\h'-0.0m'\v'0.2m'\s12\fRXlib API\fP
+.sp -1
+\h'3.187i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+\h'5.000i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRsynchronous \fP
+.sp -1
+\h'5.000i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRrequest\fP
+.sp -1
+\h'0.062i'\v'0.881i'\h'-0.0m'\v'0.2m'\s10\fRKey event\fP
+.sp -1
+\h'3.187i'\v'1.131i'\h'-0.0m'\v'0.2m'\s10\fR(synchronous) \fP
+.sp -1
+\h'0.062i'\v'1.256i'\h'-0.0m'\v'0.2m'\s10\fRButton press causes\fP
+.sp -1
+\h'0.062i'\v'1.381i'\h'-0.0m'\v'0.2m'\s10\fRfocus change\fP
+.sp -1
+\h'1.250i'\v'1.381i'\h'-0.0m'\v'0.2m'\s10\fRXSetICFocus\fP
+.sp -1
+\h'3.250i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRor XIM_COMMIT\fP
+.sp -1
+\h'3.187i'\v'1.443i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+\h'3.687i'\v'1.693i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SYNC\fP
+.sp -1
+\h'3.375i'\v'2.006i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SYNC_REPLY\fP
+.sp -1
+\h'1.250i'\v'2.193i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'1.250i'\v'2.568i'\h'-0.0m'\v'0.2m'\s10\fRXmbLookupString\fP
+.sp -1
+\h'1.250i'\v'2.381i'\h'-0.0m'\v'0.2m'\s10\fRXFilterEvent (returns False) \fP
+.sp -1
+\v'2.856i'\h'-0.0m'\v'0.2m'\s10\fRthe focus\fP
+.sp -1
+\v'2.693i'\h'-0.0m'\v'0.2m'\s10\fRApplication moves\fP
+.sp -1
+\h'5.000i'\v'3.068i'\h'-0.0m'\v'0.2m'\s10\fRprocessed\fP
+.sp -1
+\h'5.000i'\v'3.193i'\h'-0.0m'\v'0.2m'\s10\fR(The focused\fP
+.sp -1
+\h'5.000i'\v'3.318i'\h'-0.0m'\v'0.2m'\s10\fRIC is changed) \fP
+.sp -1
+\h'5.000i'\v'3.568i'\h'-0.0m'\v'0.2m'\s10\fRprocessed\fP
+.sp -1
+\h'3.125i'\v'3.568i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SYNC_REPLY as a reply\fP
+.sp -1
+\h'3.125i'\v'3.731i'\h'-0.0m'\v'0.2m'\s10\fRof the XIM_FORWARD_EVENT\fP
+.sp -1
+\h'1.250i'\v'3.568i'\h'-0.0m'\v'0.2m'\s10\fRXNextEvent\fP
+.sp -1
+\h'5.000i'\v'4.068i'\h'-0.0m'\v'0.2m'\s10\fRprocessed\fP
+.sp -1
+\h'5.000i'\v'1.381i'\h'-0.0m'\v'0.2m'\s10\fRPending\fP
+.sp -1
+\h'5.000i'\v'4.256i'\h'-0.0m'\v'0.2m'\s10\fRprocessed\fP
+.sp -1
+\h'1.250i'\v'2.818i'\h'-0.0m'\v'0.2m'\s10\fRXSetICFocus\fP
+.sp -1
+\h'3.125i'\v'2.443i'\h'-0.0m'\v'0.2m'\s10\fRis started by XIM_COMMIT\fP
+.sp -1
+\h'3.125i'\v'2.193i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SET_IC_FOCUS is\fP
+.sp -1
+\h'3.125i'\v'2.318i'\h'-0.0m'\v'0.2m'\s10\fRpend because another sync cycle\fP
+.sp -1
+\h'2.062i'\v'1.693i'\h'-0.0m'\v'0.2m'\s10\fRsync cycle is done\fP
+.sp -1
+\h'2.062i'\v'1.568i'\h'-0.0m'\v'0.2m'\s10\fRPending until\fP
+.sp -1
+\v'3.568i'\h'-0.0m'\v'0.2m'\s10\fRKey event\fP
+.sp -1
+\h'1.250i'\v'3.756i'\h'-0.0m'\v'0.2m'\s10\fRXFilterEvent\fP
+.sp -1
+\h'3.125i'\v'4.631i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+\h'3.375i'\v'4.131i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SET_IC_FOCUS\fP
+.sp -1
+\h'3.250i'\v'2.818i'\h'-0.0m'\v'0.2m'\s10\fRXIM_SET_IC_FOCUS\fP
+.sp -1
+.sp 1+4.721i
+.PE
+.if \n(00 .fi
+
+.\"====================== event2 flow figure end =======================
+.ce
+.sp
+Fig.3 Sample Protocol Flow chart
+.LP
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_FORWARD_EVENT (IM library \(<-\(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:BITMASK16:flag
+::#0001:synchronous
+::#0002:request filtering (*1)
+::#0004:request lookupstring (*2)
+:2:CARD16:serial number
+::XEVENT:X event
+.TE
+.LP
+.IP (*1)
+Indicate the receiver should filter events and possible preedit may be invoked.
+.IP (*2)
+Indicate the receiver should only do lookup string. The IM Server is expected
+to just do a conversion of the key event to the best candidate. This bit may
+affect the state of the preedit state (e.g. compose of dead key sequences).
+.RE
+.LP
+XEVENT format is same as the X Protocol event format(xEvent).
+As the value of xEvent's sequenceNumber is the bottom of 16 bit of XEvent's
+xany.serial, the top of 16 bit is sent by serial number(INT16).
+.LP
+.PN XIM_FORWARD_EVENT
+message is used for forwarding the events from the IM library to the IM Server
+in order for IM to be able to filter the event. On the other hand, this
+message is also used for forwarding the events from the IM Server to the IM
+library if the event forwarded from the IM library is not filtered.
+The IM Server, which receives
+.PN XIM_FORWARD_EVENT
+message without synchronous bit, should set synchronous bit.
+If both ``request event filtering'' and ``request lookupstring'' flag are
+set, then both filtering and lookup should be done for the same event.
+.LP
+.NH 2
+Synchronizing with the IM Server
+.XS
+\*(SN Synchronizing with the IM Server
+.XE
+.LP
+.PN XIM_SYNC
+message requests to synchronize the IM library and the IM Server.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SYNC (IM library \(<-\(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+This synchronization can be started either on the IM library side or on the
+IM Server side. The side which receives
+.PN XIM_SYNC
+message should process all XIM requests before replying. The input-context-ID
+is necessary to distinguish the IC with which the IM library and the IM
+Server are synchronized.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_SYNC_REPLY (IM Server \(<-\(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+The side which receives
+.PN XIM_FORWARD_EVENT,
+.PN XIM_COMMIT
+or any other message with synchronous bit, should process all XIM request
+before replying, and send
+.PN XIM_SYNC_REPLY
+message as the reply to the previous message.
+.LP
+.NH 2
+Sending a committed string
+.XS
+\*(SN Sending a committed string
+.XE
+.LP
+When the IM Server commits a string, the IM Server sends either the committed
+string or list of KeySym, or both, by
+.PN XIM_COMMIT
+message.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_COMMIT (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:BITMASK16:flag
+::#0001:synchronous
+::#0002:XLookupChars
+::#0004:XLookupKeySym
+::#0006: XLookupBoth = XLookupChars | XLookupKeySym
+.TE
+.LP
+If flag is XLookupKeySym, the arguments continue as follows:
+.TS
+tab(:);
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+:2::unused
+:4:KEYSYM:KeySym
+.TE
+.LP
+If flag is XLookupChars, the arguments continue as follows:
+.TS
+tab(:);
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+:2:m:byte length of committed string
+:m:LISTofBYTE:committed string
+:p::unused, p = Pad(m)
+.TE
+.LP
+If flag is XLookupBoth, the arguments continue as follows:
+.TS
+tab(:);
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+:2::unused
+:4:KEYSYM:KeySym
+:2:n:byte length of committed string
+:n:LISTofBYTE:committed string
+:p::unused, p = Pad(2+n)
+.TE
+.RE
+.LP
+The IM Server which receives
+.PN XIM_COMMIT
+message without synchronous bit should set synchronous bit.
+.LP
+.NH 2
+Reset IC
+.XS
+\*(SN Reset IC
+.XE
+.LP
+.PN XIM_RESET_IC
+message requests to reset the status of IC in the IM Server.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_RESET_IC (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.PN XIM_RESET_IC
+is a synchronous request. The IM library should wait until receiving either an
+.PN XIM_RESET_IC_REPLY
+packet or an
+.PN XIM_ERROR
+packet.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_RESET_IC_REPLY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:n:byte length of preedit string
+:n:LISTofBYTE:preedit string
+:p::unused, p = Pad(2+n)
+.TE
+.RE
+.LP
+.PN XIM_RESET_IC_REPLY
+message returns the input-context-ID to distinguish replies from multiple ICs.
+.LP
+.\"============================== Callbacks ===============================
+.NH 2
+Callbacks
+.XS
+\*(SN Callbacks
+.XE
+.LP
+If XIMStyle has XIMPreeditArea or XIMStatusArea set, XIMGeometryCallback
+may be used, and if XIMPreeditCallback and/or XIMStatusCallback are set,
+corresponding callbacks may be used.
+.LP
+Any callback request may be sent from an IM Server to an IM client
+asynchronously in response to any request previously sent by the IM client
+to the IM Server.
+.LP
+When an IM Server needs to send a callback request synchronously with
+the request previously sent by an IM client, the IM Server sends it
+before replying to the previous request.
+.LP
+.NH 3
+Negotiating geometry
+.XS
+\*(SN Negotiating geometry
+.XE
+.LP
+The IM Server sends
+.PN XIM_GEOMETRY
+message to start geometry negotiation, if XIMStyle has XIMPreeditArea or
+XIMStatusArea set.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_GEOMETRY (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+There is always a single Focus Window, even if some input fields have only
+one IC.
+.LP
+.NH 3
+Converting a string
+.XS
+\*(SN Converting a string
+.XE
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_STR_CONVERSION (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:CARD16:XIMStringConversionPosition
+:2::unused
+:4:CARD32:XIMCaretDirection
+::#0:XIMForwardChar
+::#1:XIMBackwardChar
+::#2:XIMForwardWord
+::#3:XIMBackwardWord
+::#4:XIMCaretUp
+::#5:XIMCaretDown
+::#6:XIMNextLine
+::#7:XIMCPreviousLine
+::#8:XIMLineStart
+::#9:XIMLineEnd
+::#10:XIMAbsolutePosition
+::#11:XIMDontChange
+:2:CARD16:factor
+:2:CARD16:XIMStringConversionOperation
+::#0001:XIMStringConversionSubstitution
+::#0002:XIMStringConversionRetrieval
+:2:INT16:T{
+byte length to multiply the XIMStringConversionType
+T}
+.TE
+.RE
+.sp
+.LP
+.PN XIM_STR_CONVERSION
+message may be used to start the string conversion from the IM
+Server.
+.LP
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_STR_CONVERSION_REPLY (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:CARD32:XIMStringConversionFeedback
+::XIMSTRCONVTEXT:XIMStringConversionText
+.SP
+.TE
+.RE
+.LP
+.PN XIM_STR_CONVERSION_REPLY
+message returns the string to be converted and the feedback information array.
+.LP
+.NH 3
+Preedit Callbacks
+.XS
+\*(SN Preedit Callbacks
+.XE
+.LP
+The IM Server sends
+.PN XIM_PREEDIT_START
+message to call the XIMPreeditStartCallback function.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_PREEDIT_START (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+The reply to this message must be sent synchronously. The reply forwards
+the return value from the callback function to the IM Server.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_PREEDIT_START_REPLY (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:INT32:return value
+.TE
+.RE
+.LP
+.PN XIM_PREEDIT_START_REPLY
+message returns the input-context-ID to distinguish replies from multiple
+IC's. The return value contains the return value of the function
+XIMPreeditStartCallback.
+.LP
+The IM Server sends
+.PN XIM_PREEDIT_DRAW
+message to call the XIMPreeditDrawCallback function.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_PREEDIT_DRAW (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:INT32:caret
+:4:INT32:chg_first
+:4:INT32:chg_length
+:4:BITMASK32:status
+::#x0000001:no string
+::#x0000002:no feedback
+:2:n:length of preedit string
+:n:STRING8:preedit string
+:p::unused, p = Pad(2+n)
+:2:m:byte length of feedback array
+:2::unused
+:m:LISTofXIMFEEDBACK:feedback array
+.TE
+.RE
+.LP
+The fields ``caret'', ``chg_first'' and ``chg_length'' correspond to the
+fields of XIMPreeditDrawCallbackStruct.
+When the ``no string'' bit of the status field is set, the text field of
+XIMPreeditDrawCallbackStruct is NULL.
+When the ``no feedback'' bit of the status field is set, the text feedback
+field of XIMPreeditDrawCallbackStruct is NULL.
+When the above bits are not set, ``preedit string'' contains the preedit
+string to be displayed, and the feedback array contains feedback information.
+.LP
+The IM Server sends
+.PN XIM_PREEDIT_CARET
+message to call the PreeditCaretCallback function.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_PREEDIT_CARET (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:INT32:position
+:4:CARD32:direction
+::#0:XIMForwardChar
+::#1:XIMBackwardChar
+::#2:XIMForwardWord
+::#3:XIMBackwardWord
+::#4:XIMCaretUp
+::#5:XIMCaretDown
+::#6:XIMNextLine
+::#7:XIMCPreviousLine
+::#8:XIMLineStart
+::#9:XIMLineEnd
+::#10:XIMAbsolutePosition
+::#11:XIMDontChange
+:4:CARD32:style
+::#0:XIMInvisible
+::#1:XIMCPrimary
+::#2:XIMSecondary
+.TE
+.RE
+.LP
+Each entry corresponds to a field of XIMPreeditCaretCallbackStruct.
+Since this callback sets the caret position, its reply must be sent
+synchronously.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_PREEDIT_CARET_REPLY (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:CARD32:position
+.TE
+.RE
+.LP
+The position is the value returned by the callback function after it
+has been called.
+.LP
+The IM Server sends
+.PN XIM_PREEDIT_DONE
+message to call the XIMPreeditDoneCallback function.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_PREEDIT_DONE (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.NH 3
+Preedit state notify
+.XS
+\*(SN Preedit state notify
+.XE
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_PREEDITSTATE (IM Server \(-> IM Library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:BITMASK32:XIMPreeditState
+::#x0000000:XIMPreeditUnknown
+::#x0000001:XIMPreeditEnable
+::#x0000002:XIMPreeditDisable
+.TE
+.SP
+.TE
+.RE
+.LP
+.PN XIM_PREEDITSTATE
+message is used to call the XIMPreeditStateNotifyCallback function.
+.LP
+.NH 3
+Status Callbacks
+.XS
+\*(SN Status Callbacks
+.XE
+.LP
+The IM Server sends
+.PN XIM_STATUS_START
+message to call the XIMStatusStartCallback function.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_STATUS_START (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+The IM Server sends
+.PN XIM_STATUS_DRAW
+message to call the XIMStatusDrawCallback function.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_STATUS_DRAW (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:CARD32:type
+::#0:XIMTextType
+::#1:XIMBitmapType
+.TE
+.LP
+If type is XIMTextType, the arguments continue as follows.
+.TS
+tab(:);
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+:4:BITMASK32:status
+::#x0000001:no string
+::#x0000002:no feedback
+:2:n:length of status string
+:n:STRING8:status string
+:p::unused, p = Pad(2+n)
+:2:m:byte length of feedback array
+:2::unused
+:m:LISTofXIMFEEDBACK:feedback array
+.TE
+.LP
+If type is XIMBitmapType, the arguments continue as follows.
+.TS
+tab(:);
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+:4:PIXMAP:pixmap data
+.TE
+.RE
+.LP
+The field ``type'' corresponds to the field in XIMStatusDrawCallbackStruct.
+.LP
+The IM Server sends
+.PN XIM_STATUS_DONE
+message to call the XIMStatusDoneCallback function.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_STATUS_DONE (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+.TE
+.RE
+.LP
+.bp
+.NH 1
+Acknowledgements
+.XS
+\*(SN Acknowledgements
+.XE
+.LP
+This document represents the culmination of several years of debate and
+experiments done under the auspices of the MIT X Consortium i18n working
+group. Although this was a group effort, the author remains responsible
+for any errors or omissions.
+.LP
+We would like to thank to all members of this group.
+And we would like to make special thanks to the following people
+(in alphabetical order) for their participation in the IM Protocol
+design,
+Hector Chan, Takashi Fujiwara, Yoshio Horiuchi, Makoto Inada,
+Hiromu Inukai, Mickael Kung, Seiji Kuwari, Franky Ling, Hiroyuki Machida,
+Hiroyuki Miyamoto, Frank Rojas, Bob Scheifler, Makiko Shimamura,
+Shoji Sugiyama, Hidetoshi Tajima, Masaki Takeuchi, Makoto Wakamatsu,
+Masaki Wakao, Nobuyuki Tanaka, Shigeru Yamada, Katsuhisa Yano, Jinsoo Yoon.
+.LP
+.NH 1
+References
+.XS
+\*(SN References
+.XE
+.LP
+All of the following documents are X Consortium standards available from MIT:
+.LP
+[1] Scheifler, Robert W., \fI``X Window System Protocol Version 11''\fP
+.LP
+[2] Scheifler, Robert W. etc., \fI``Xlib \- C Language X Interface''\fP
+.LP
+.bp
+.XS
+Appendix A \- Common Extensions
+.XE
+.ce 10
+.sp 5
+\s+2\fBAppendix A\fP\s-2
+.sp
+\s+1\fBCommon Extensions\fP\s-1
+.ce 0
+.sp
+.LP
+Extension opcodes and packet names (e.g.
+.PN XIM_EXT_SET_EVENT_MASK
+) for additional extensions may be registered with X Consortium.
+The following is a commonly well-known extended packet.
+.LP
+.LP
+.IP \fB(1)
+Extension to manipulate the event handling\fP
+.LP
+.PN XIM_EXT_SET_EVENT_MASK
+message specifies the set of event masks that the IM library should manipulate.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_EXT_SET_EVENT_MASK (IM Server \(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:4:EVENTMASK:filter-event-mask (*1)
+:4:EVENTMASK:intercept-event-mask (*2)
+:4:EVENTMASK:select-event-mask (*3)
+:4:EVENTMASK:forward-event-mask (*4)
+:4:EVENTMASK:synchronous-event-mask (*5)
+.TE
+.IP (*1)
+Specify the events to be neglected by the IM library via XFilterEvent.
+.IP (*2)
+Specify the events to be deselected by the IM library with XSelectInput.
+.IP (*3)
+Specify the events to be selected by the IM library with XSelectInput.
+.IP (*4)
+Specify all the events to be forwarded to the IM Server by the IM library.
+.IP (*5)
+Specify the events to be forwarded with synchronous flag on by the IM library.
+.RE
+.LP
+The IM library must reply
+.PN XIM_SYNC_REPLY
+message to the IM Server. This request is valid after the ic is created.
+.LP
+.sp
+.IP \fB(2)
+Extension for improvement of performance\fR
+.LP
+The following requests may be used for improvement of performance.
+.LP
+.PN XIM_EXT_FORWARD_KEYEVENT
+message may be used instead of
+.PN XIM_FORWARD_EVENT
+message.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_EXT_FORWARD_KEYEVENT (IM Server \(<-\(-> IM library)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:BITMASK16:flag
+::#0001:synchronous
+:2:CARD16:sequence number
+:1:BYTE:xEvent.u.u.type
+:1:BYTE:keycode
+:2:CARD16:state
+:4:CARD32:time
+:4:CARD32:window
+.TE
+.RE
+.LP
+.bp
+.PN XIM_EXT_MOVE
+message may be used to change the spot location instead of
+.PN
+XIM_SET_IC_VALUES
+message.
+It is effective only if the client specified XIMPreeditPosition.
+.RS
+.TS
+tab(:);
+lfB s s s
+lw(.25i) lw(.25i) lw(1.75i) lw(3.5i).
+XIM_EXT_MOVE (IM library \(-> IM Server)
+.sp 6p
+:2:CARD16:input-method-ID
+:2:CARD16:input-context-ID
+:2:INT16:X
+:2:INT16:Y
+.TE
+.RE
+.LP
+.PN XIM_EXT_MOVE
+message is a asynchronous request.
+.LP
+.bp
+.XS
+Appendix B \- The list of transport specific IM Server names registered
+.XE
+.ce 10
+.sp 5
+\s+2\fBAppendix B\fP\s-2
+.sp
+\s+1\fBThe list of transport specific IM Server address format registered\fP\s-1
+.ce 0
+.sp
+.LP
+The following format represents the ATOM contained in
+.PN XIM_SERVERS
+property and the string returned from the request converting
+selection target LOCALES and TRANSPORT.
+.DS
+ ``{@\^\fIcategory\fP\^=[\^\fIvalue\fP,...]}...''
+.DE
+.LP
+The following categories are currently registered.
+.RS
+.TS
+tab(;);
+l l.
+\fBserver\fP;: IM Server name (used for XIM_SERVERS)
+\fBlocale\fP;: XPG4 locale name (LOCALES)
+\fBtransport\fP;: transport-specific name (TRANSPORT)
+.TE
+.RE
+.LP
+The preregistered formats for transport-specific names are as follows:
+.RS
+.LP
+\fBTCP/IP Names\fP
+.LP
+.RS
+The following syntax should be used for system internal domain names:
+.DS
+<\fIlocal name\fP> ::= ``local/''<\fIhostname\fP>``:''<\fIpathname\fP>
+.DE
+.LP
+Where <\fIpathname\fP> is a path name of socket address.
+.LP
+IM Server's name should be set to <\fIpathname\fP> to run multiple IM Server
+at the same time
+.LP
+The following syntax should be used for Internet domain names:
+.DS
+<\fITCP name\fP> ::= ``tcp/''<\fIhostname\fP>``:''<\fIipportnumber\fP>
+.DE
+where <\fIhostname\fP> is either symbolic (such as expo.lcs.mit.edu) or
+numeric decimal (such as 18.30.0.212). The <\fIipportnumber\fP> is the
+port on which the IM Server is listening for connections.
+For example:
+.DS
+tcp/expo.lcs.mit.edu:8012
+tcp/18.30.0.212:7890
+.DE
+.RE
+.LP
+\fBDECnet Names\fP
+.LP
+.RS
+The following syntax should be used for DECnet names:
+.DS
+<\fIDECnet name\fP> ::= ``decnet/''<\fInodename\fP>``::IMSERVER$''<\fIobjname\fP>
+.DE
+where <\fInodename\fP> is either symbolic (such as SRVNOD) or the numeric
+decimal form of the DECnet address (such as 44.70). The <\fIobjname\fP>
+is normal, case-insensitive DECnet object name. For example:
+.DS
+DECNET/SRVNOD::IMSERVER$DEFAULT
+decnet/44.70::IMSERVER$other
+.DE
+.RE
+.LP
+\fBX Names\fP
+.LP
+.RS
+The following syntax should be used for X names:
+.DS
+<\fIX name\fP> ::= ``X/''
+.DE
+.RE
+.RE
+.LP
+If a given category has multiple values, the value is evaluated in order of
+setting.
+.bp
+.XS
+Appendix C \- Protocol number
+.XE
+.ce 10
+.sp 5
+\s+2\fBAppendix C\fP\s-2
+.sp
+\s+1\fBProtocol number\fP\s-1
+.ce 0
+.sp
+.LP
+\fBMajor Protocol number\fP
+.TS
+center, tab(:);
+lw(9c) l.
+XIM_CONNECT:#001
+XIM_CONNECT_REPLY:#002
+XIM_DISCONNECT:#003
+XIM_DISCONNECT_REPLY:#004
+
+XIM_AUTH_REQUIRED:#010
+XIM_AUTH_REPLY:#011
+XIM_AUTH_NEXT:#012
+XIM_AUTH_SETUP:#013
+XIM_AUTH_NG:#014
+
+XIM_ERROR:#020
+
+XIM_OPEN:#030
+XIM_OPEN_REPLY:#031
+XIM_CLOSE:#032
+XIM_CLOSE_REPLY:#033
+XIM_REGISTER_TRIGGERKEYS:#034
+XIM_TRIGGER_NOTIFY:#035
+XIM_TRIGGER_NOTIFY_REPLY:#036
+XIM_SET_EVENT_MASK:#037
+XIM_ENCODING_NEGOTIATION:#038
+XIM_ENCODING_NEGOTIATION_REPLY:#039
+XIM_QUERY_EXTENSION:#040
+XIM_QUERY_EXTENSION_REPLY:#041
+XIM_SET_IM_VALUES:#042
+XIM_SET_IM_VALUES_REPLY:#043
+XIM_GET_IM_VALUES:#044
+XIM_GET_IM_VALUES_REPLY:#045
+
+XIM_CREATE_IC:#050
+XIM_CREATE_IC_REPLY:#051
+XIM_DESTROY_IC:#052
+XIM_DESTROY_IC_REPLY:#053
+XIM_SET_IC_VALUES:#054
+XIM_SET_IC_VALUES_REPLY:#055
+XIM_GET_IC_VALUES:#056
+XIM_GET_IC_VALUES_REPLY:#057
+XIM_SET_IC_FOCUS:#058
+XIM_UNSET_IC_FOCUS:#059
+XIM_FORWARD_EVENT:#060
+XIM_SYNC:#061
+XIM_SYNC_REPLY:#062
+XIM_COMMIT:#063
+XIM_RESET_IC:#064
+XIM_RESET_IC_REPLY:#065
+
+XIM_GEOMETRY:#070
+XIM_STR_CONVERSION:#071
+XIM_STR_CONVERSION_REPLY:#072
+XIM_PREEDIT_START:#073
+XIM_PREEDIT_START_REPLY:#074
+XIM_PREEDIT_DRAW:#075
+XIM_PREEDIT_CARET:#076
+XIM_PREEDIT_CARET_REPLY:#077
+XIM_PREEDIT_DONE:#078
+XIM_STATUS_START:#079
+XIM_STATUS_DRAW:#080
+XIM_STATUS_DONE:#081
+XIM_PREEDITSTATE:#082
+.TE
+.sp
+(*) The IM Server's extension protocol number should be more than #128.
+.bp
+.XS
+Appendix D \- Implementation Tips
+.XE
+.ce 10
+.sp 5
+\s+2\fBAppendix D\fP\s-2
+.sp
+\s+1\fBImplementation Tips\fP\s-1
+.ce 0
+.sp
+.LP
+.B
+.IP \fB(1)
+FrontEnd Method\fP
+.LP
+FrontEnd method is recognized as a performance acceleration by the
+trade off of the variety of the reliability.
+.LP
+In order to use the FrontEnd method, the IM library must query the IM
+Server to see if the FrontEnd extension is available. The query is
+made by using the
+.PN XIM_QUERY_EXTENSION
+message. The IM Server may send
+.PN XIM_EXT_SET_EVENT_MASK
+message with intercept-event-mask, forward-event-mask, and
+synchronous-event-mask values set after replying
+.PN XIM_QUERY_EXTENSION_REPLY
+message.
+.LP
+FrontEnd method can be implemented in a couple of ways depending on
+how the IM Server utilize
+.PN XIM_EXT_SET_EVENT_MASK
+message.
+.LP
+One approach is to update both of the input mask and the filter-event-mask
+depending on the preeidting state. The sample protocol sequence using the
+static event flow is as follows:
+.LP
+.\"===================================================================
+.sp
+... 1.675 6.888 6.237 10.296
+... 0.000i 3.408i 4.562i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 3.408i 4.562i
+.br
+.ps 11
+\h'3.750i'\v'0.034i'\v'-.13m'\L'3.374i\(br'\v'.13m'
+.sp -1
+\h'3.912i'\v'1.384i'\D'l-0.100i 0.025i'
+.sp -1
+\h'3.912i'\v'1.434i'\D'l-0.100i -0.025i'
+.sp -1
+\h'3.812i'\v'1.409i'\l'0.750i'
+.sp -1
+\h'3.750i'\h'-0.0m'\v'0.2m'\s12\fRIM Server\fP
+.sp -1
+\h'3.812i'\v'0.818i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+\h'3.812i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRto select the event\fP
+.sp -1
+\h'3.875i'\v'2.381i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+\h'3.875i'\v'2.568i'\h'-0.0m'\v'0.2m'\s10\fRto deselect the event\fP
+.sp -1
+\h'3.875i'\v'1.631i'\h'-0.0m'\v'0.2m'\s10\fRX events directly come\fP
+.sp -1
+\h'3.875i'\v'1.756i'\h'-0.0m'\v'0.2m'\s10\fRto the IM Server.\fP
+.sp -1
+\h'3.875i'\v'2.006i'\h'-0.0m'\v'0.2m'\s10\fRwhen preediting is turning off\fP
+.sp -1
+\h'0.625i'\v'0.284i'\l'0.875i'
+.sp -1
+\h'1.400i'\v'0.309i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.400i'\v'0.259i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.750i'\v'0.346i'\l'1.687i'
+.sp -1
+\h'3.337i'\v'0.371i'\D'l0.100i -0.025i'
+.sp -1
+\h'3.337i'\v'0.321i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.850i'\v'2.134i'\D'l-0.100i 0.025i'
+.sp -1
+\h'1.850i'\v'2.184i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.750i'\v'2.159i'\l'1.687i'
+.sp -1
+\h'1.562i'\v'0.034i'\v'-.13m'\L'3.374i\(br'\v'.13m'
+.sp -1
+\h'1.850i'\v'0.446i'\D'l-0.100i 0.025i'
+.sp -1
+\h'1.850i'\v'0.496i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.750i'\v'0.471i'\l'1.687i'
+.sp -1
+\h'1.687i'\v'0.631i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\h'1.875i'\v'0.818i'\h'-0.0m'\v'0.2m'\s10\fRintercept-event-mask is set\fP
+.sp -1
+\h'1.687i'\v'2.318i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\h'1.875i'\v'2.443i'\h'-0.0m'\v'0.2m'\s10\fRselect-event-mask is set\fP
+.sp -1
+\h'0.937i'\h'-0.0m'\v'0.2m'\s12\fRIM library\fP
+.sp -1
+\v'0.193i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the on-key-list\fP
+.sp -1
+\h'0.250i'\v'2.318i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+\h'0.250i'\v'2.506i'\h'-0.0m'\v'0.2m'\s10\fRto select the event\fP
+.sp -1
+\h'0.250i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRto deselect the event\fP
+.sp -1
+\h'0.250i'\v'0.818i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+\h'1.812i'\v'0.256i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+.sp 1+3.408i
+.PE
+.if \n(00 .fi
+.sp
+.\"===================================================================
+.LP
+To pursuit a maximum performance regardless of the preediting mode,
+the IM Server may use the dynamic event flow with the following
+sample protocol sequence.
+.bp
+.LP
+.\"===================================================================
+... 1.675 6.888 6.237 10.296
+... 0.000i 3.408i 4.562i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 3.408i 4.562i
+.br
+.ps 11
+\h'3.750i'\v'0.034i'\v'-.13m'\L'3.374i\(br'\v'.13m'
+.sp -1
+\h'3.912i'\v'1.384i'\D'l-0.100i 0.025i'
+.sp -1
+\h'3.912i'\v'1.434i'\D'l-0.100i -0.025i'
+.sp -1
+\h'3.812i'\v'1.409i'\l'0.750i'
+.sp -1
+\h'3.750i'\h'-0.0m'\v'0.2m'\s12\fRIM Server\fP
+.sp -1
+\h'3.812i'\v'0.818i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+\h'3.812i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRto select the event\fP
+.sp -1
+\h'3.875i'\v'2.381i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+\h'3.875i'\v'2.568i'\h'-0.0m'\v'0.2m'\s10\fRto deselect the event\fP
+.sp -1
+\h'3.875i'\v'1.631i'\h'-0.0m'\v'0.2m'\s10\fRX events directly come\fP
+.sp -1
+\h'3.875i'\v'1.756i'\h'-0.0m'\v'0.2m'\s10\fRto the IM Server.\fP
+.sp -1
+\h'3.875i'\v'2.006i'\h'-0.0m'\v'0.2m'\s10\fRwhen preediting is turning off\fP
+.sp -1
+\h'0.625i'\v'0.284i'\l'0.875i'
+.sp -1
+\h'1.400i'\v'0.309i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.400i'\v'0.259i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.750i'\v'0.346i'\l'1.687i'
+.sp -1
+\h'3.337i'\v'0.371i'\D'l0.100i -0.025i'
+.sp -1
+\h'3.337i'\v'0.321i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.850i'\v'1.196i'\D'l-0.100i 0.025i'
+.sp -1
+\h'1.850i'\v'1.246i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.750i'\v'1.221i'\l'1.687i'
+.sp -1
+\h'1.850i'\v'2.134i'\D'l-0.100i 0.025i'
+.sp -1
+\h'1.850i'\v'2.184i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.750i'\v'2.159i'\l'1.687i'
+.sp -1
+\h'1.562i'\v'0.034i'\v'-.13m'\L'3.374i\(br'\v'.13m'
+.sp -1
+\h'1.850i'\v'0.446i'\D'l-0.100i 0.025i'
+.sp -1
+\h'1.850i'\v'0.496i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.750i'\v'0.471i'\l'1.687i'
+.sp -1
+\h'1.812i'\v'0.256i'\h'-0.0m'\v'0.2m'\s10\fRXIM_TRIGGER_NOTIFY\fP
+.sp -1
+\h'1.687i'\v'1.068i'\h'-0.0m'\v'0.2m'\s10\fRXIM_TRIGGER_NOTIFY_REPLY\fP
+.sp -1
+\h'1.687i'\v'0.631i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\h'1.875i'\v'0.818i'\h'-0.0m'\v'0.2m'\s10\fRintercept-event-mask is set\fP
+.sp -1
+\h'1.687i'\v'2.318i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\h'1.875i'\v'2.443i'\h'-0.0m'\v'0.2m'\s10\fRselect-event-mask is set\fP
+.sp -1
+\h'0.937i'\h'-0.0m'\v'0.2m'\s12\fRIM library\fP
+.sp -1
+\v'0.193i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the on-key-list\fP
+.sp -1
+\h'0.250i'\v'2.318i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+\h'0.250i'\v'2.506i'\h'-0.0m'\v'0.2m'\s10\fRto select the event\fP
+.sp -1
+\h'0.250i'\v'1.006i'\h'-0.0m'\v'0.2m'\s10\fRto deselect the event\fP
+.sp -1
+\h'0.250i'\v'0.818i'\h'-0.0m'\v'0.2m'\s10\fRevent mask is changed\fP
+.sp -1
+.sp 1+3.408i
+.PE
+.if \n(00 .fi
+.\"===================================================================
+.LP
+This method can reduce the XIM protocol traffic dramatically
+by updating intercept-event-mask and select-event-mask accordingly.
+The tradeoff of this performance improvement is that the key
+events may be lost or disordered in some particular situation, such as
+when the user types the keyboard in following sequence really fast:
+.sp 6p
+.RS
+<preediting on key>``some strings''<preediting off key>``another string''
+.RE
+.sp 6p
+Since this method requires the input mask updates to the both the IM Server
+and Xlib when turning on and off the preediting, and there is a time lag
+till the requests take effect when two client issues the input mask updates
+simultaneously.
+.LP
+Another approach of the FrontEnd method is to update the filter-event-mask
+depending on the preediting state and not to update the input mask.
+The IM Server must register both of the preediting on key list and off key
+list by
+.PN XIM_REGISTER_TRIGGERKEYS
+message.
+In this method, Both the IM Server and the IM client select the same
+events on the same client's window, so that the events are delivered
+to both of the IM Server and the client. The preediting on and off
+states are expressed by whether the key events are filtered or not.
+The sample protocol sequence are as follows:
+.LP
+.bp
+<<Using static event flow>>
+.LP
+.\"====================================================================
+.sp
+... 1.488 7.325 6.487 10.358
+... 0.000i 3.033i 4.999i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 3.033i 4.999i
+.br
+.ps 11
+\h'4.099i'\v'0.383i'\D'l-0.100i 0.025i'
+.sp -1
+\h'4.099i'\v'0.433i'\D'l-0.100i -0.025i'
+.sp -1
+\h'3.999i'\v'0.408i'\l'1.000i'
+.sp -1
+\h'4.099i'\v'1.696i'\D'l-0.100i 0.025i'
+.sp -1
+\h'4.099i'\v'1.746i'\D'l-0.100i -0.025i'
+.sp -1
+\h'3.999i'\v'1.721i'\l'1.000i'
+.sp -1
+\h'3.937i'\v'0.096i'\v'-.13m'\L'2.937i\(br'\v'.13m'
+.sp -1
+\h'3.937i'\v'0.062i'\h'-0.0m'\v'0.2m'\s12\fRIM Server\fP
+.sp -1
+\h'4.062i'\v'0.755i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'4.062i'\v'0.943i'\h'-0.0m'\v'0.2m'\s10\fRare being processed\fP
+.sp -1
+\h'4.062i'\v'2.255i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'4.062i'\v'2.443i'\h'-0.0m'\v'0.2m'\s10\fRare being discarded\fP
+.sp -1
+\h'4.249i'\v'1.568i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the off-key-list\fP
+.sp -1
+\h'4.187i'\v'0.318i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the on-key-list\fP
+.sp -1
+\h'0.812i'\v'0.346i'\l'0.875i'
+.sp -1
+\h'1.587i'\v'0.371i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.587i'\v'0.321i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.937i'\v'0.408i'\l'1.687i'
+.sp -1
+\h'3.524i'\v'0.433i'\D'l0.100i -0.025i'
+.sp -1
+\h'3.524i'\v'0.383i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.749i'\v'0.096i'\v'-.13m'\L'2.937i\(br'\v'.13m'
+.sp -1
+\h'2.037i'\v'0.508i'\D'l-0.100i 0.025i'
+.sp -1
+\h'2.037i'\v'0.558i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.937i'\v'0.533i'\l'1.687i'
+.sp -1
+\h'0.812i'\v'1.721i'\l'0.875i'
+.sp -1
+\h'1.587i'\v'1.746i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.587i'\v'1.696i'\D'l0.100i 0.025i'
+.sp -1
+\h'2.099i'\v'1.758i'\D'l-0.100i 0.025i'
+.sp -1
+\h'2.099i'\v'1.808i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.999i'\v'1.783i'\l'1.688i'
+.sp -1
+\h'1.874i'\v'0.693i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\v'0.255i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the on-key-list\fP
+.sp -1
+\h'2.062i'\v'0.880i'\h'-0.0m'\v'0.2m'\s10\fRfilter-event-mask is set\fP
+.sp -1
+\h'0.624i'\v'0.755i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'0.624i'\v'0.943i'\h'-0.0m'\v'0.2m'\s10\fRare being filtered\fP
+.sp -1
+\h'1.937i'\v'1.943i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\h'2.124i'\v'2.068i'\h'-0.0m'\v'0.2m'\s10\fRfilter-event-mask is set\fP
+.sp -1
+\h'0.062i'\v'1.568i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the off-key-list\fP
+.sp -1
+\h'1.062i'\h'-0.0m'\v'0.2m'\s12\fRIM library\fP
+.sp -1
+\h'0.624i'\v'2.255i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'0.624i'\v'2.443i'\h'-0.0m'\v'0.2m'\s10\fRare being processed\fP
+.sp -1
+\h'1.999i'\v'0.318i'\h'-0.0m'\v'0.2m'\s10\fRXIM_FORWARD_EVENT\fP
+.sp -1
+.sp 1+3.033i
+.PE
+.if \n(00 .fi
+.\"====================================================================
+.LP
+<<Using the dynamic event flow>>
+.LP
+.\"====================================================================
+... 1.488 7.325 6.487 10.358
+... 0.000i 3.033i 4.999i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 3.033i 4.999i
+.br
+.ps 11
+\h'4.099i'\v'0.383i'\D'l-0.100i 0.025i'
+.sp -1
+\h'4.099i'\v'0.433i'\D'l-0.100i -0.025i'
+.sp -1
+\h'3.999i'\v'0.408i'\l'1.000i'
+.sp -1
+\h'4.099i'\v'1.696i'\D'l-0.100i 0.025i'
+.sp -1
+\h'4.099i'\v'1.746i'\D'l-0.100i -0.025i'
+.sp -1
+\h'3.999i'\v'1.721i'\l'1.000i'
+.sp -1
+\h'3.937i'\v'0.096i'\v'-.13m'\L'2.937i\(br'\v'.13m'
+.sp -1
+\h'3.937i'\v'0.062i'\h'-0.0m'\v'0.2m'\s12\fRIM Server\fP
+.sp -1
+\h'4.062i'\v'0.755i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'4.062i'\v'0.943i'\h'-0.0m'\v'0.2m'\s10\fRare being processed\fP
+.sp -1
+\h'4.062i'\v'2.255i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'4.062i'\v'2.443i'\h'-0.0m'\v'0.2m'\s10\fRare being discarded\fP
+.sp -1
+\h'4.249i'\v'1.568i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the off-key-list\fP
+.sp -1
+\h'4.187i'\v'0.318i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the on-key-list\fP
+.sp -1
+\h'0.812i'\v'0.346i'\l'0.875i'
+.sp -1
+\h'1.587i'\v'0.371i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.587i'\v'0.321i'\D'l0.100i 0.025i'
+.sp -1
+\h'1.937i'\v'0.408i'\l'1.687i'
+.sp -1
+\h'3.524i'\v'0.433i'\D'l0.100i -0.025i'
+.sp -1
+\h'3.524i'\v'0.383i'\D'l0.100i 0.025i'
+.sp -1
+\h'2.037i'\v'1.258i'\D'l-0.100i 0.025i'
+.sp -1
+\h'2.037i'\v'1.308i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.937i'\v'1.283i'\l'1.687i'
+.sp -1
+\h'1.749i'\v'0.096i'\v'-.13m'\L'2.937i\(br'\v'.13m'
+.sp -1
+\h'2.037i'\v'0.508i'\D'l-0.100i 0.025i'
+.sp -1
+\h'2.037i'\v'0.558i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.937i'\v'0.533i'\l'1.687i'
+.sp -1
+\h'0.812i'\v'1.721i'\l'0.875i'
+.sp -1
+\h'1.587i'\v'1.746i'\D'l0.100i -0.025i'
+.sp -1
+\h'1.587i'\v'1.696i'\D'l0.100i 0.025i'
+.sp -1
+\h'2.099i'\v'1.758i'\D'l-0.100i 0.025i'
+.sp -1
+\h'2.099i'\v'1.808i'\D'l-0.100i -0.025i'
+.sp -1
+\h'1.999i'\v'1.783i'\l'1.688i'
+.sp -1
+\h'1.999i'\v'0.318i'\h'-0.0m'\v'0.2m'\s10\fRXIM_TRIGGER_NOTIFY\fP
+.sp -1
+\h'1.874i'\v'1.130i'\h'-0.0m'\v'0.2m'\s10\fRXIM_TRIGGER_NOTIFY_REPLY\fP
+.sp -1
+\h'1.874i'\v'0.693i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\v'0.255i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the on-key-list\fP
+.sp -1
+\h'2.062i'\v'0.880i'\h'-0.0m'\v'0.2m'\s10\fRfilter-event-mask is set\fP
+.sp -1
+\h'0.624i'\v'0.755i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'0.624i'\v'0.943i'\h'-0.0m'\v'0.2m'\s10\fRare being filtered\fP
+.sp -1
+\h'1.937i'\v'1.943i'\h'-0.0m'\v'0.2m'\s10\fRXIM_EXT_SET_EVENT_MASK\fP
+.sp -1
+\h'2.124i'\v'2.068i'\h'-0.0m'\v'0.2m'\s10\fRfilter-event-mask is set\fP
+.sp -1
+\h'0.062i'\v'1.568i'\h'-0.0m'\v'0.2m'\s10\fRKeys in the off-key-list\fP
+.sp -1
+\h'1.062i'\h'-0.0m'\v'0.2m'\s12\fRIM library\fP
+.sp -1
+\h'0.624i'\v'2.255i'\h'-0.0m'\v'0.2m'\s10\fRthe specified events\fP
+.sp -1
+\h'0.624i'\v'2.443i'\h'-0.0m'\v'0.2m'\s10\fRare being processed\fP
+.sp -1
+.sp 1+3.033i
+.PE
+.if \n(00 .fi
+
+.\"====================================================================
+.LP
+This method does not have the problem of the time lag when going across
+the preediting on and off mode, however, the amount of the performance
+acceleration is not as good as the method described above.
+.LP
+In general, the FrontEnd method requires some synchronization to some
+of the X protocols, such as the ChangeWindowAttribute protocol for the
+event mask change or the GrabKey protocol, since it relies on the X's
+principal event dispatching mechanism. Any X protocol bindings do not
+consider the synchronization might cause some mis-synchronization
+between the IM clients and the IM Server.
+.LP
+.bp
+.IP \fB(2)
+Transport Layer\fP
+.LP
+The Xlib XIM implementation is layered into three functions, a protocol
+layer, an interface layer and a transport layer. The purpose of this
+layering is to make the protocol independent of transport implementation.
+Each function of these layers are:
+.RS 3
+.IP "\fIThe protocol layer\fP"
+.br
+implements overall function of XIM and calls the interface layer
+functions when it needs to communicate to IM Server.
+.IP "\fIThe interface layer\fP"
+.br
+separates the implementation of the transport layer from the protocol
+layer, in other words, it provides implementation independent hook for
+the transport layer functions.
+.IP "\fIThe transport layer\fP"
+.br
+handles actual data communication with IM Server. It is done by a set
+of several functions named transporters.
+.RE
+.LP
+The interface layer and the transport layer make various communication
+channels usable such as X Protocol, TCP/IP, DECnet or STREAM.
+The following is a sample implementation for the transporter using
+the X connection.
+Refer to "xtrans" for the transporter using Socket Transport.
+.LP
+At the beginning of the X Transport connection for the XIM transport
+mechanism, two different windows must be created either in an Xlib XIM
+or in an IM Server, with which the Xlib and the IM Server exchange the
+XIM transports by using the ClientMessage events and Window Properties.
+In the following, the window created by the Xlib is referred as the
+"client communication window", and on the other hand, the window created
+by the IM Server is referred as the "IMS communication window".
+.LP
+.B
+Connection
+.LP
+.RS
+In order to establish a connection, a communication window is created.
+A ClientMessage in the following event's format is sent to the owner
+window of XIM_SERVER selection, which the IM Server has created.
+.LP
+Refer to "The Input Method Protocol" for the XIM_SERVER atom.
+.LP
+.ce
+Table D-1; The ClientMessage sent to the IMS window.
+.TS H
+tab(:);
+l s|l
+l l|l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:IMS Window ID
+Atom:message_type:XInternAtom(display, ``_XIM_XCONNECT'', False)
+int:format:32
+long:data.l[0]:client communication window ID
+long:data.l[1]:client-major-transport-version (*1)
+long:data.l[2]:client-major-transport-version (*1)
+.sp 6p
+_
+.TE
+.LP
+In order to establish the connection (to notify the IM Server communication
+window), the IM Server sends a ClientMessage in the following event's
+format to the client communication window.
+.LP
+.bp
+.ce
+Table D-2; The ClientMessage sent by IM Server.
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:client communication window ID
+Atom:message_type:XInternAtom(display, ``_XIM_XCONNECT'', False)
+int:format:32
+long:data.l[0]:IMS communication window ID
+long:data.l[1]:server-major-transport-version (*1)
+long:data.l[2]:server-minor-transport-version (*1)
+long:data.l[3]:dividing size between ClientMessage and Property (*2)
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+major/minor-transport-version
+.RS
+The read/write method is decided by the combination of
+major/minor-transport-version, as follows:
+.LP
+.ce
+Table D-3; The read/write method and the major/minor-transport-version
+.TS
+center, tab(:);
+| c s | l |
+| c | c | l |.
+_
+.sp 6p
+.B
+Transport-version:read/write
+.sp 6p
+_
+.sp 6p
+major:minor:
+.sp 6p
+_
+.sp 6p
+.R
+0:0:only-CM & Property-with-CM
+:1:only-CM & multi-CM
+:2:only-CM & multi-CM & Property-with-CM
+.sp 6p
+_
+.sp 6p
+1:0:PropertyNotify
+.sp 6p
+_
+.sp 6p
+2:0:only-CM & PropertyNotify
+:1:only-CM & multi-CM & PropertyNotify
+.sp 6p
+_
+.TE
+.LP
+.RS
+.TS
+center, tab(;);
+l n l.
+only-CM;:;data is sent via a ClientMessage
+multi-CM;:;data is sent via multiple ClientMessages
+Property-with-CM;:;T{
+data is written in Property, and its Atom is send via ClientMessage
+T}
+PropertyNotify;:;T{
+data is written in Property, and its Atom is send via PropertyNotify
+T}
+.TE
+.RE
+.LP
+The method to decide major/minor-transport-version is as follows:
+.LP
+.IP (1)
+The client sends 0 as major/minor-transport-version to the IM Server.
+The client must support all methods in Table D-3.
+The client may send another number as major/minor-transport-version to
+use other method than the above in the future.
+.IP (2)
+The IM Server sends its major/minor-transport-version number to
+the client. The client sends data using the method specified by the
+IM Server.
+.IP (3)
+If major/minor-transport-version number is not available, it is regarded
+as 0.
+.RE
+.LP
+.IP (*2)
+dividing size between ClientMessage and Property
+.RS
+If data is sent via both of multi-CM and Property, specify the dividing
+size between ClientMessage and Property. The data, which is smaller than
+this size, is sent via multi-CM (or only-CM), and the data, which is
+lager than this size, is sent via Property.
+.RE
+.RE
+.LP
+.sp
+.LP
+.B
+read/write
+.LP
+.RS
+The data is transferred via either ClientMessage or Window Property in
+the X Window System.
+.LP
+.B
+Format for the data from the Client to the IM Server
+.LP
+.RS
+.B
+ClientMessage
+.LP
+If data is sent via ClientMessage event, the format is as follows:
+.LP
+.ce
+Table D-4; The ClientMessage event's format (first or middle)
+.TS
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;IMS communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_MOREDATA'', False)
+int;format;8
+char;data.b[20];(read/write DATA : 20 byte)
+.sp 6p
+_
+.TE
+.LP
+.ce
+Table D-5; The ClientMessage event's format (only or last)
+.TS H
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;IMS communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int;format;8
+char;data.b[20];(read/write DATA : MAX 20 byte) (*1)
+.sp 6p
+_
+.TE
+.IP (*1)
+If the data is smaller than 20 byte, all data other than available data
+must be 0.
+.RE
+.LP
+.RS
+.B
+Property
+.LP
+In the case of large data, data will be sent via the Window Property
+for the efficiency. There are the following two methods to notify
+Property, and transport-version is decided which method is used.
+.LP
+.IP (1)
+The XChangeProperty function is used to store data in the client
+communication window, and Atom of the stored data is notified to the
+IM Server via ClientMessage event.
+.IP (2)
+The XChangeProperty function is used to store data in the client
+communication window, and Atom of the stored data is notified to the
+IM Server via PropertyNotify event.
+.LP
+The arguments of the XChangeProperty are as follows:
+.LP
+.bp
+.ce
+Table D-6; The XChangeProperty event's format
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Argument:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Display:*display:The display to which connects
+Window:window:IMS communication window ID
+Atom:property:read/write property Atom (*1)
+Atom:type:XA_STRING
+int:format:8
+int:mode:PropModeAppend
+u_char:*data:read/write DATA
+int:nelements:length of DATA
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+The read/write property ATOM allocates the following strings by
+\fBXInternAtom\fP.
+.RS
+``_clientXXX''
+.RE
+.LP
+The client changes the property with the mode of PropModeAppend and
+the IM Server will read it with the delete mode i.e. (delete = True).
+.LP
+If Atom is notified via ClientMessage event, the format of the ClientMessage
+is as follows:
+.LP
+.ce
+Table D-7; The ClientMessage event's format to send Atom of property
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:IMS communication window ID
+Atom:message_type:XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int:format:32
+long:data.l[0]:length of read/write property Atom
+long:data.l[1]:read/write property Atom
+.sp 6p
+_
+.TE
+.RE
+.LP
+.B
+Format for the data from the IM Server to the Client
+.LP
+.RS
+.B
+ClientMessage
+.LP
+The format of the ClientMessage is as follows:
+.LP
+.ce
+Table D-8; The ClientMessage event's format (first or middle)
+.TS H
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event ;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;client communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_MOREDATA'', False)
+int;format;8
+char;data.b[20];(read/write DATA : 20 byte)
+.sp 6p
+_
+.TE
+.LP
+.bp
+.ce
+Table D-9; The ClientMessage event's format (only or last)
+.TS
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event ;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;client communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int;format;8
+char;data.b[20];(read/write DATA : MAX 20 byte) (*1)
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+If the data size is smaller than 20 bytes, all data other than available
+data must be 0.
+.LP
+.B
+Property
+.LP
+In the case of large data, data will be sent via the Window Property
+for the efficiency. There are the following two methods to notify
+Property, and transport-version is decided which method is used.
+.LP
+.IP (1)
+The XChangeProperty function is used to store data in the IMS
+communication window, and Atom of the property is sent via the
+ClientMessage event.
+.IP (2)
+The XChangeProperty function is used to store data in the IMS
+communication window, and Atom of the property is sent via
+PropertyNotify event.
+.LP
+The arguments of the XChangeProperty are as follows:
+.LP
+.ce
+Table D-10; The XChangeProperty event's format
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Argument:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Display:*display:The display which to connects
+Window:window:client communication window ID
+Atom:property:read/write property Atom (*1)
+Atom:type:XA_STRING
+int:format:8
+int:mode:PropModeAppend
+u_char:*data:read/write DATA
+int:nelements:length of DATA
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+The read/write property ATOM allocates some strings, which are not
+allocated by the client, by \fBXInternAtom\fP.
+.LP
+The IM Server changes the property with the mode of PropModeAppend and
+the client reads it with the delete mode, i.e. (delete = True).
+.LP
+If Atom is notified via ClientMessage event, the format of the ClientMessage
+is as follows:
+.LP
+.bp
+.ce
+Table D-11; The ClientMessage event's format to send Atom of property
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:client communication window ID
+Atom:message_type:XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int:format:32
+long:data.l[0]:length of read/write property ATOM
+long:data.l[1]:read/write property ATOM
+.sp 6p
+_
+.TE
+.RE
+.RE
+.LP
+.B
+Closing Connection
+.RS
+.LP
+If the client disconnect with the IM Server, shutdown function should
+free the communication window properties and etc..
+.RE
+.LP
+.bp
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.TC
+
diff --git a/specs/XKB/Proto/XKBproto.book b/specs/XKB/Proto/XKBproto.book
new file mode 100644
index 0000000..264920c
--- /dev/null
+++ b/specs/XKB/Proto/XKBproto.book
Binary files differ
diff --git a/specs/XKB/Proto/dflttrns.fm5 b/specs/XKB/Proto/dflttrns.fm5
new file mode 100644
index 0000000..9290d91
--- /dev/null
+++ b/specs/XKB/Proto/dflttrns.fm5
Binary files differ
diff --git a/specs/XKB/Proto/encoding.fm5 b/specs/XKB/Proto/encoding.fm5
new file mode 100644
index 0000000..1a4a240
--- /dev/null
+++ b/specs/XKB/Proto/encoding.fm5
Binary files differ
diff --git a/specs/XKB/Proto/keysyms.fm5 b/specs/XKB/Proto/keysyms.fm5
new file mode 100644
index 0000000..21a5c89
--- /dev/null
+++ b/specs/XKB/Proto/keysyms.fm5
Binary files differ
diff --git a/specs/XKB/Proto/protocol.fm5 b/specs/XKB/Proto/protocol.fm5
new file mode 100644
index 0000000..61b28fa
--- /dev/null
+++ b/specs/XKB/Proto/protocol.fm5
Binary files differ
diff --git a/specs/XKB/Proto/prototoc.doc b/specs/XKB/Proto/prototoc.doc
new file mode 100644
index 0000000..acc9c27
--- /dev/null
+++ b/specs/XKB/Proto/prototoc.doc
Binary files differ
diff --git a/specs/XKB/Proto/title.fm5 b/specs/XKB/Proto/title.fm5
new file mode 100644
index 0000000..3cba83b
--- /dev/null
+++ b/specs/XKB/Proto/title.fm5
Binary files differ
diff --git a/specs/XKB/Proto/types.fm5 b/specs/XKB/Proto/types.fm5
new file mode 100644
index 0000000..662ec29
--- /dev/null
+++ b/specs/XKB/Proto/types.fm5
Binary files differ
diff --git a/specs/XKB/XKBlib/XKBlib.book b/specs/XKB/XKBlib/XKBlib.book
new file mode 100644
index 0000000..d01db48
--- /dev/null
+++ b/specs/XKB/XKBlib/XKBlib.book
Binary files differ
diff --git a/specs/XKB/XKBlib/allchaps.fm5 b/specs/XKB/XKBlib/allchaps.fm5
new file mode 100644
index 0000000..2019d12
--- /dev/null
+++ b/specs/XKB/XKBlib/allchaps.fm5
Binary files differ
diff --git a/specs/XKB/XKBlib/allchaps.ix b/specs/XKB/XKBlib/allchaps.ix
new file mode 100644
index 0000000..d855d0a
--- /dev/null
+++ b/specs/XKB/XKBlib/allchaps.ix
Binary files differ
diff --git a/specs/XKB/XKBlib/allchaps.lof b/specs/XKB/XKBlib/allchaps.lof
new file mode 100644
index 0000000..e5c081a
--- /dev/null
+++ b/specs/XKB/XKBlib/allchaps.lof
Binary files differ
diff --git a/specs/XKB/XKBlib/allchaps.lot b/specs/XKB/XKBlib/allchaps.lot
new file mode 100644
index 0000000..6eddc58
--- /dev/null
+++ b/specs/XKB/XKBlib/allchaps.lot
Binary files differ
diff --git a/specs/XKB/XKBlib/allchaps.ps b/specs/XKB/XKBlib/allchaps.ps
new file mode 100644
index 0000000..5f9cdcd
--- /dev/null
+++ b/specs/XKB/XKBlib/allchaps.ps
@@ -0,0 +1,74364 @@
+%!PS-Adobe-3.0
+%%BoundingBox: (atend)
+%%Pages: (atend)
+%%PageOrder: (atend)
+%%DocumentFonts: (atend)
+%%Creator: Frame 4.0
+%%DocumentData: Clean7Bit
+%%EndComments
+%%BeginProlog
+%
+% Frame ps_prolog 5.0, for use with Frame 5.0 products
+% This ps_prolog file is Copyright (c) 1986-1995 Frame Technology
+% Corporation. All rights reserved. This ps_prolog file may be
+% freely copied and distributed in conjunction with documents created
+% using FrameMaker, FrameMaker/SGML and FrameViewer as long as this
+% copyright notice is preserved.
+%
+% FrameMaker users specify the proper paper size for each print job in the
+% "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the
+% printer that the PS file is sent to does not support the requested paper
+% size, or if there is no paper tray of the proper size currently installed,
+% then the job will not be printed. The following flag, if set to true, will
+% cause the job to print on the default paper in such cases.
+/FMAllowPaperSizeMismatch false def
+%
+% Frame products normally print colors as their true color on a color printer
+% or as shades of gray, based on luminance, on a black-and white printer. The
+% following flag, if set to true, forces all non-white colors to print as pure
+% black. This has no effect on bitmap images.
+/FMPrintAllColorsAsBlack false def
+%
+% Frame products can either set their own line screens or use a printer's
+% default settings. Three flags below control this separately for no
+% separations, spot separations and process separations. If a flag
+% is true, then the default printer settings will not be changed. If it is
+% false, Frame products will use their own settings from a table based on
+% the printer's resolution.
+/FMUseDefaultNoSeparationScreen true def
+/FMUseDefaultSpotSeparationScreen true def
+/FMUseDefaultProcessSeparationScreen false def
+%
+% For any given PostScript printer resolution, Frame products have two sets of
+% screen angles and frequencies for printing process separations, which are
+% recomended by Adobe. The following variable chooses the higher frequencies
+% when set to true or the lower frequencies when set to false. This is only
+% effective if the appropriate FMUseDefault...SeparationScreen flag is false.
+/FMUseHighFrequencyScreens true def
+%
+% The following is a set of predefined optimal frequencies and angles for various
+% common dpi settings. This is taken from "Advances in Color Separation Using
+% PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043)
+% and corrolated with information which is in various PPD (4.0) files.
+%
+% The "dpiranges" figure is the minimum dots per inch device resolution which
+% can support this setting. The "low" and "high" values are controlled by the
+% setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control
+% the use of the "Yellow Triple Dot" feature whereby the frequency id divided by
+% three, but the dot function is "trippled" giving a block of 3x3 dots per cell.
+%
+% PatFreq is a compromise pattern frequency for ps Level 2 printers which is close
+% to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat
+% (too badly) against the screen frequencies of any separations for that DPI.
+/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def
+/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def
+/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def
+/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def
+/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def
+/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def
+/YLowTDot [ true true false true true false false false ] def
+/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def
+/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def
+/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def
+/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def
+/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def
+/YHighTDot [ false false true false false true true false ] def
+/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def
+%
+% PostScript Level 2 printers contain an "Accurate Screens" feature which can
+% improve process separation rendering at the expense of compute time. This
+% flag is ignored by PostScript Level 1 printers.
+/FMUseAcccurateScreens true def
+%
+% The following PostScript procedure defines the spot function that Frame
+% products will use for process separations. You may un-comment-out one of
+% the alternative functions below, or use your own.
+%
+% Dot function
+/FMSpotFunction {abs exch abs 2 copy add 1 gt
+ {1 sub dup mul exch 1 sub dup mul add 1 sub }
+ {dup mul exch dup mul add 1 exch sub }ifelse } def
+%
+% Line function
+% /FMSpotFunction { pop } def
+%
+% Elipse function
+% /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add
+% sqrt 1 exch sub } def
+%
+%
+/FMversion (5.0) def
+/fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def
+/FMPColor
+ fMLevel1 {
+ false
+ /colorimage where {pop pop true} if
+ } {
+ true
+ } ifelse
+def
+/FrameDict 400 dict def
+systemdict /errordict known not {/errordict 10 dict def
+ errordict /rangecheck {stop} put} if
+% The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk
+FrameDict /tmprangecheck errordict /rangecheck get put
+errordict /rangecheck {FrameDict /bug true put} put
+FrameDict /bug false put
+mark
+% Some PS machines read past the CR, so keep the following 3 lines together!
+currentfile 5 string readline
+00
+0000000000
+cleartomark
+errordict /rangecheck FrameDict /tmprangecheck get put
+FrameDict /bug get {
+ /readline {
+ /gstring exch def
+ /gfile exch def
+ /gindex 0 def
+ {
+ gfile read pop
+ dup 10 eq {exit} if
+ dup 13 eq {exit} if
+ gstring exch gindex exch put
+ /gindex gindex 1 add def
+ } loop
+ pop
+ gstring 0 gindex getinterval true
+ } bind def
+ } if
+/FMshowpage /showpage load def
+/FMquit /quit load def
+/FMFAILURE {
+ dup = flush
+ FMshowpage
+ /Helvetica findfont 12 scalefont setfont
+ 72 200 moveto show
+ 72 220 moveto show
+ FMshowpage
+ FMquit
+ } def
+/FMVERSION {
+ FMversion ne {
+ (Frame product version does not match ps_prolog! Check installation;)
+ (also check ~/fminit and ./fminit for old versions) FMFAILURE
+ } if
+ } def
+/FMBADEPSF {
+ (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4)
+ (says your EPS file is not valid, as it calls X )
+ dup dup (X) search pop exch pop exch pop length
+ 5 -1 roll
+ putinterval
+ FMFAILURE
+ } def
+/fmConcatProcs
+ {
+ /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def
+ newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx
+}def
+FrameDict begin [
+ /ALDsave
+ /FMdicttop
+ /FMoptop
+ /FMpointsize
+ /FMsaveobject
+ /b
+ /bitmapsave
+ /blut
+ /bpside
+ /bs
+ /bstring
+ /bwidth
+ /c
+ /cf
+ /cs
+ /cynu
+ /depth
+ /edown
+ /fh
+ /fillvals
+ /fw
+ /fx
+ /fy
+ /g
+ /gfile
+ /gindex
+ /grnt
+ /gryt
+ /gstring
+ /height
+ /hh
+ /i
+ /im
+ /indx
+ /is
+ /k
+ /kk
+ /landscape
+ /lb
+ /len
+ /llx
+ /lly
+ /m
+ /magu
+ /manualfeed
+ /n
+ /offbits
+ /onbits
+ /organgle
+ /orgbangle
+ /orgbfreq
+ /orgbproc
+ /orgbxfer
+ /orgfreq
+ /orggangle
+ /orggfreq
+ /orggproc
+ /orggxfer
+ /orgmatrix
+ /orgproc
+ /orgrangle
+ /orgrfreq
+ /orgrproc
+ /orgrxfer
+ /orgxfer
+ /pagesave
+ /paperheight
+ /papersizedict
+ /paperwidth
+ /pos
+ /pwid
+ /r
+ /rad
+ /redt
+ /sl
+ /str
+ /tran
+ /u
+ /urx
+ /ury
+ /val
+ /width
+ /width
+ /ws
+ /ww
+ /x
+ /x1
+ /x2
+ /xindex
+ /xpoint
+ /xscale
+ /xx
+ /y
+ /y1
+ /y2
+ /yelu
+ /yindex
+ /ypoint
+ /yscale
+ /yy
+] { 0 def } forall
+/FmBD {bind def} bind def
+systemdict /pdfmark known {
+ /fMAcrobat true def
+
+ /FmPD /pdfmark load def
+
+
+ /FmPT /show load def
+
+
+ currentdistillerparams /CoreDistVersion get 2000 ge {
+
+
+ /FmPD2 /pdfmark load def
+
+
+
+
+
+ /FmPA { mark exch /Dest exch 5 3 roll
+ /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD
+ }FmBD
+ } {
+
+ /FmPD2 /cleartomark load def
+ /FmPA {pop pop pop}FmBD
+ } ifelse
+} {
+
+ /fMAcrobat false def
+ /FmPD /cleartomark load def
+ /FmPD2 /cleartomark load def
+ /FmPT /pop load def
+ /FmPA {pop pop pop}FmBD
+} ifelse
+/FmDC {
+ transform fMDefaultMatrix itransform cvi exch cvi exch
+}FmBD
+/FmBx {
+ dup 3 index lt {3 1 roll exch} if
+ 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if
+}FmBD
+/FMnone 0 def
+/FMcyan 1 def
+/FMmagenta 2 def
+/FMyellow 3 def
+/FMblack 4 def
+/FMcustom 5 def
+/fMNegative false def
+/FrameSepIs FMnone def
+/FrameSepBlack 0 def
+/FrameSepYellow 0 def
+/FrameSepMagenta 0 def
+/FrameSepCyan 0 def
+/FrameSepRed 1 def
+/FrameSepGreen 1 def
+/FrameSepBlue 1 def
+/FrameCurGray 1 def
+/FrameCurPat null def
+/FrameCurColors [ 0 0 0 1 0 0 0 ] def
+/FrameColorEpsilon .001 def
+/eqepsilon {
+ sub dup 0 lt {neg} if
+ FrameColorEpsilon le
+} bind def
+/FrameCmpColorsCMYK {
+ 2 copy 0 get exch 0 get eqepsilon {
+ 2 copy 1 get exch 1 get eqepsilon {
+ 2 copy 2 get exch 2 get eqepsilon {
+ 3 get exch 3 get eqepsilon
+ } {pop pop false} ifelse
+ }{pop pop false} ifelse
+ } {pop pop false} ifelse
+} bind def
+/FrameCmpColorsRGB {
+ 2 copy 4 get exch 0 get eqepsilon {
+ 2 copy 5 get exch 1 get eqepsilon {
+ 6 get exch 2 get eqepsilon
+ }{pop pop false} ifelse
+ } {pop pop false} ifelse
+} bind def
+/RGBtoCMYK {
+ 1 exch sub
+ 3 1 roll
+ 1 exch sub
+ 3 1 roll
+ 1 exch sub
+ 3 1 roll
+ 3 copy
+ 2 copy
+ le { pop } { exch pop } ifelse
+ 2 copy
+ le { pop } { exch pop } ifelse
+ dup dup dup
+ 6 1 roll
+ 4 1 roll
+ 7 1 roll
+ sub
+ 6 1 roll
+ sub
+ 5 1 roll
+ sub
+ 4 1 roll
+} bind def
+/CMYKtoRGB {
+ dup dup 4 -1 roll add
+ 5 1 roll 3 -1 roll add
+ 4 1 roll add
+ 1 exch sub dup 0 lt {pop 0} if 3 1 roll
+ 1 exch sub dup 0 lt {pop 0} if exch
+ 1 exch sub dup 0 lt {pop 0} if exch
+} bind def
+/FrameSepInit {
+ 1.0 RealSetgray
+} bind def
+/FrameSetSepColor {
+ /FrameSepBlue exch def
+ /FrameSepGreen exch def
+ /FrameSepRed exch def
+ /FrameSepBlack exch def
+ /FrameSepYellow exch def
+ /FrameSepMagenta exch def
+ /FrameSepCyan exch def
+ /FrameSepIs FMcustom def
+ setCurrentScreen
+} bind def
+/FrameSetCyan {
+ /FrameSepBlue 1.0 def
+ /FrameSepGreen 1.0 def
+ /FrameSepRed 0.0 def
+ /FrameSepBlack 0.0 def
+ /FrameSepYellow 0.0 def
+ /FrameSepMagenta 0.0 def
+ /FrameSepCyan 1.0 def
+ /FrameSepIs FMcyan def
+ setCurrentScreen
+} bind def
+
+/FrameSetMagenta {
+ /FrameSepBlue 1.0 def
+ /FrameSepGreen 0.0 def
+ /FrameSepRed 1.0 def
+ /FrameSepBlack 0.0 def
+ /FrameSepYellow 0.0 def
+ /FrameSepMagenta 1.0 def
+ /FrameSepCyan 0.0 def
+ /FrameSepIs FMmagenta def
+ setCurrentScreen
+} bind def
+
+/FrameSetYellow {
+ /FrameSepBlue 0.0 def
+ /FrameSepGreen 1.0 def
+ /FrameSepRed 1.0 def
+ /FrameSepBlack 0.0 def
+ /FrameSepYellow 1.0 def
+ /FrameSepMagenta 0.0 def
+ /FrameSepCyan 0.0 def
+ /FrameSepIs FMyellow def
+ setCurrentScreen
+} bind def
+
+/FrameSetBlack {
+ /FrameSepBlue 0.0 def
+ /FrameSepGreen 0.0 def
+ /FrameSepRed 0.0 def
+ /FrameSepBlack 1.0 def
+ /FrameSepYellow 0.0 def
+ /FrameSepMagenta 0.0 def
+ /FrameSepCyan 0.0 def
+ /FrameSepIs FMblack def
+ setCurrentScreen
+} bind def
+
+/FrameNoSep {
+ /FrameSepIs FMnone def
+ setCurrentScreen
+} bind def
+/FrameSetSepColors {
+ FrameDict begin
+ [ exch 1 add 1 roll ]
+ /FrameSepColors
+ exch def end
+ } bind def
+/FrameColorInSepListCMYK {
+ FrameSepColors {
+ exch dup 3 -1 roll
+ FrameCmpColorsCMYK
+ { pop true exit } if
+ } forall
+ dup true ne {pop false} if
+ } bind def
+/FrameColorInSepListRGB {
+ FrameSepColors {
+ exch dup 3 -1 roll
+ FrameCmpColorsRGB
+ { pop true exit } if
+ } forall
+ dup true ne {pop false} if
+ } bind def
+/RealSetgray /setgray load def
+/RealSetrgbcolor /setrgbcolor load def
+/RealSethsbcolor /sethsbcolor load def
+end
+/setgray {
+ FrameDict begin
+ FrameSepIs FMnone eq
+ { RealSetgray }
+ {
+ FrameSepIs FMblack eq
+ { RealSetgray }
+ { FrameSepIs FMcustom eq
+ FrameSepRed 0 eq and
+ FrameSepGreen 0 eq and
+ FrameSepBlue 0 eq and {
+ RealSetgray
+ } {
+ 1 RealSetgray pop
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+} bind def
+/setrgbcolor {
+ FrameDict begin
+ FrameSepIs FMnone eq
+ { RealSetrgbcolor }
+ {
+ 3 copy [ 4 1 roll ]
+ FrameColorInSepListRGB
+ {
+ FrameSepBlue eq exch
+ FrameSepGreen eq and exch
+ FrameSepRed eq and
+ { 0 } { 1 } ifelse
+ }
+ {
+ FMPColor {
+ RealSetrgbcolor
+ currentcmykcolor
+ } {
+ RGBtoCMYK
+ } ifelse
+ FrameSepIs FMblack eq
+ {1.0 exch sub 4 1 roll pop pop pop} {
+ FrameSepIs FMyellow eq
+ {pop 1.0 exch sub 3 1 roll pop pop} {
+ FrameSepIs FMmagenta eq
+ {pop pop 1.0 exch sub exch pop } {
+ FrameSepIs FMcyan eq
+ {pop pop pop 1.0 exch sub }
+ {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse
+ } ifelse
+ RealSetgray
+ }
+ ifelse
+ end
+} bind def
+/sethsbcolor {
+ FrameDict begin
+ FrameSepIs FMnone eq
+ { RealSethsbcolor }
+ {
+ RealSethsbcolor
+ currentrgbcolor
+ setrgbcolor
+ }
+ ifelse
+ end
+} bind def
+FrameDict begin
+/setcmykcolor where {
+ pop /RealSetcmykcolor /setcmykcolor load def
+} {
+ /RealSetcmykcolor {
+ 4 1 roll
+ 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat
+ RealSetrgbcolor pop
+ } bind def
+} ifelse
+userdict /setcmykcolor {
+ FrameDict begin
+ FrameSepIs FMnone eq
+ { RealSetcmykcolor }
+ {
+ 4 copy [ 5 1 roll ]
+ FrameColorInSepListCMYK
+ {
+ FrameSepBlack eq exch
+ FrameSepYellow eq and exch
+ FrameSepMagenta eq and exch
+ FrameSepCyan eq and
+ { 0 } { 1 } ifelse
+ }
+ {
+ FrameSepIs FMblack eq
+ {1.0 exch sub 4 1 roll pop pop pop} {
+ FrameSepIs FMyellow eq
+ {pop 1.0 exch sub 3 1 roll pop pop} {
+ FrameSepIs FMmagenta eq
+ {pop pop 1.0 exch sub exch pop } {
+ FrameSepIs FMcyan eq
+ {pop pop pop 1.0 exch sub }
+ {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse
+ } ifelse
+ RealSetgray
+ }
+ ifelse
+ end
+ } bind put
+fMLevel1 {
+
+
+
+ /patScreenDict 7 dict dup begin
+ <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD
+ <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD
+ <cccccccccccccccc> [ 0 { pop } dup .5 2 ] FmBD
+ <ffff0000ffff0000> [ 90 { pop } dup .5 2 ] FmBD
+ <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD
+ <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD
+ <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD
+ end def
+} {
+
+ /patProcDict 5 dict dup begin
+ <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke
+ 4 -4 moveto 12 4 lineto stroke
+ -4 4 moveto 4 12 lineto stroke} bind def
+ <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke
+ -4 4 moveto 4 -4 lineto stroke
+ 4 12 moveto 12 4 lineto stroke} bind def
+ <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke
+ -1 -1 moveto 9 9 lineto stroke } bind def
+ <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke
+ 4 -4 moveto 12 4 lineto stroke
+ -4 4 moveto 4 12 lineto stroke} bind def
+ <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke
+ -4 4 moveto 4 -4 lineto stroke
+ 4 12 moveto 12 4 lineto stroke} bind def
+ end def
+ /patDict 15 dict dup begin
+ /PatternType 1 def
+ /PaintType 2 def
+ /TilingType 3 def
+ /BBox [ 0 0 8 8 ] def
+ /XStep 8 def
+ /YStep 8 def
+ /PaintProc {
+ begin
+ patProcDict bstring known {
+ patProcDict bstring get exec
+ } {
+ 8 8 true [1 0 0 -1 0 8] bstring imagemask
+ } ifelse
+ end
+ } bind def
+ end def
+} ifelse
+/combineColor {
+ FrameSepIs FMnone eq
+ {
+ graymode fMLevel1 or not {
+
+ [/Pattern [/DeviceCMYK]] setcolorspace
+ FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor
+ } {
+ FrameCurColors 3 get 1.0 ge {
+ FrameCurGray RealSetgray
+ } {
+ fMAcrobat not FMPColor graymode and and {
+ 0 1 3 {
+ FrameCurColors exch get
+ 1 FrameCurGray sub mul
+ } for
+ RealSetcmykcolor
+ } {
+ 4 1 6 {
+ FrameCurColors exch get
+ graymode {
+ 1 exch sub 1 FrameCurGray sub mul 1 exch sub
+ } {
+ 1.0 lt {FrameCurGray} {1} ifelse
+ } ifelse
+ } for
+ RealSetrgbcolor
+ } ifelse
+ } ifelse
+ } ifelse
+ } {
+ FrameCurColors 0 4 getinterval aload
+ FrameColorInSepListCMYK {
+ FrameSepBlack eq exch
+ FrameSepYellow eq and exch
+ FrameSepMagenta eq and exch
+ FrameSepCyan eq and
+ FrameSepIs FMcustom eq and
+ { FrameCurGray } { 1 } ifelse
+ } {
+ FrameSepIs FMblack eq
+ {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} {
+ FrameSepIs FMyellow eq
+ {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} {
+ FrameSepIs FMmagenta eq
+ {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } {
+ FrameSepIs FMcyan eq
+ {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub }
+ {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse
+ } ifelse
+ graymode fMLevel1 or not {
+
+ [/Pattern [/DeviceGray]] setcolorspace
+ FrameCurPat setcolor
+ } {
+ graymode not fMLevel1 and {
+
+ dup 1 lt {pop FrameCurGray} if
+ } if
+ RealSetgray
+ } ifelse
+ } ifelse
+} bind def
+/savematrix {
+ orgmatrix currentmatrix pop
+ } bind def
+/restorematrix {
+ orgmatrix setmatrix
+ } bind def
+/fMDefaultMatrix matrix defaultmatrix def
+/fMatrix2 matrix def
+/dpi 72 0 fMDefaultMatrix dtransform
+ dup mul exch dup mul add sqrt def
+
+/freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def
+/sangle 1 0 fMDefaultMatrix dtransform exch atan def
+ sangle fMatrix2 rotate
+ fMDefaultMatrix fMatrix2 concatmatrix
+ dup 0 get /sflipx exch def
+ 3 get /sflipy exch def
+/screenIndex {
+ 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for
+} bind def
+/getCyanScreen {
+ FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse
+ screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load
+} bind def
+/getMagentaScreen {
+ FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse
+ screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load
+} bind def
+/getYellowScreen {
+ FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse
+ screenIndex dup 3 1 roll get 3 1 roll get { 3 div
+ {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat
+ FMSpotFunction } } {/FMSpotFunction load } ifelse
+ 0.0 exch
+} bind def
+/getBlackScreen {
+ FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse
+ screenIndex get 45.0 /FMSpotFunction load
+} bind def
+/getSpotScreen {
+ getBlackScreen
+} bind def
+/getCompositeScreen {
+ getBlackScreen
+} bind def
+/FMSetScreen
+ fMLevel1 { /setscreen load
+ }{ {
+ 8 dict begin
+ /HalftoneType 1 def
+ /SpotFunction exch def
+ /Angle exch def
+ /Frequency exch def
+ /AccurateScreens FMUseAcccurateScreens def
+ currentdict end sethalftone
+ } bind } ifelse
+def
+/setDefaultScreen {
+ FMPColor {
+ orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer
+ }
+ {
+ orgxfer cvx settransfer
+ } ifelse
+ orgfreq organgle orgproc cvx setscreen
+} bind def
+/setCurrentScreen {
+ FrameSepIs FMnone eq {
+ FMUseDefaultNoSeparationScreen {
+ setDefaultScreen
+ } {
+ getCompositeScreen FMSetScreen
+ } ifelse
+ } {
+ FrameSepIs FMcustom eq {
+ FMUseDefaultSpotSeparationScreen {
+ setDefaultScreen
+ } {
+ getSpotScreen FMSetScreen
+ } ifelse
+ } {
+ FMUseDefaultProcessSeparationScreen {
+ setDefaultScreen
+ } {
+ FrameSepIs FMcyan eq {
+ getCyanScreen FMSetScreen
+ } {
+ FrameSepIs FMmagenta eq {
+ getMagentaScreen FMSetScreen
+ } {
+ FrameSepIs FMyellow eq {
+ getYellowScreen FMSetScreen
+ } {
+ getBlackScreen FMSetScreen
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} bind def
+end
+
+/FMDOCUMENT {
+ array /FMfonts exch def
+ /#copies exch def
+ FrameDict begin
+ 0 ne /manualfeed exch def
+ /paperheight exch def
+ /paperwidth exch def
+ 0 ne /fMNegative exch def
+ 0 ne /edown exch def
+ /yscale exch def
+ /xscale exch def
+ fMLevel1 {
+ manualfeed {setmanualfeed} if
+ /FMdicttop countdictstack 1 add def
+ /FMoptop count def
+ setpapername
+ manualfeed {true} {papersize} ifelse
+ {manualpapersize} {false} ifelse
+ {desperatepapersize} {false} ifelse
+ {papersizefailure} if
+ count -1 FMoptop {pop pop} for
+ countdictstack -1 FMdicttop {pop end} for
+ }
+ {2 dict
+ dup /PageSize [paperwidth paperheight] put
+ manualfeed {dup /ManualFeed manualfeed put} if
+ {setpagedevice} stopped {papersizefailure} if
+ }
+ ifelse
+
+ FMPColor {
+ currentcolorscreen
+ cvlit /orgproc exch def
+ /organgle exch def
+ /orgfreq exch def
+ cvlit /orgbproc exch def
+ /orgbangle exch def
+ /orgbfreq exch def
+ cvlit /orggproc exch def
+ /orggangle exch def
+ /orggfreq exch def
+ cvlit /orgrproc exch def
+ /orgrangle exch def
+ /orgrfreq exch def
+ currentcolortransfer
+ fMNegative {
+ 1 1 4 {
+ pop { 1 exch sub } fmConcatProcs 4 1 roll
+ } for
+ 4 copy
+ setcolortransfer
+ } if
+ cvlit /orgxfer exch def
+ cvlit /orgbxfer exch def
+ cvlit /orggxfer exch def
+ cvlit /orgrxfer exch def
+ } {
+ currentscreen
+ cvlit /orgproc exch def
+ /organgle exch def
+ /orgfreq exch def
+
+ currenttransfer
+ fMNegative {
+ { 1 exch sub } fmConcatProcs
+ dup settransfer
+ } if
+ cvlit /orgxfer exch def
+ } ifelse
+ end
+} def
+/FMBEGINPAGE {
+ FrameDict begin
+ /pagesave save def
+ 3.86 setmiterlimit
+ /landscape exch 0 ne def
+ landscape {
+ 90 rotate 0 exch dup /pwid exch def neg translate pop
+ }{
+ pop /pwid exch def
+ } ifelse
+ edown { [-1 0 0 1 pwid 0] concat } if
+ 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto
+ 0 paperheight lineto 0 0 lineto 1 setgray fill
+ xscale yscale scale
+ /orgmatrix matrix def
+ gsave
+} def
+/FMENDPAGE {
+ grestore
+ pagesave restore
+ end
+ showpage
+ } def
+/FMFONTDEFINE {
+ FrameDict begin
+ findfont
+ ReEncode
+ 1 index exch
+ definefont
+ FMfonts 3 1 roll
+ put
+ end
+ } def
+/FMFILLS {
+ FrameDict begin dup
+ array /fillvals exch def
+ dict /patCache exch def
+ end
+ } def
+/FMFILL {
+ FrameDict begin
+ fillvals 3 1 roll put
+ end
+ } def
+/FMNORMALIZEGRAPHICS {
+ newpath
+ 1 setlinewidth
+ 0 setlinecap
+ 0 0 0 sethsbcolor
+ 0 setgray
+ } bind def
+/FMBEGINEPSF {
+ end
+ /FMEPSF save def
+ /showpage {} def
+% See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714.
+% "...the following operators MUST NOT be used in an EPS file:" (emphasis ours)
+ /banddevice {(banddevice) FMBADEPSF} def
+ /clear {(clear) FMBADEPSF} def
+ /cleardictstack {(cleardictstack) FMBADEPSF} def
+ /copypage {(copypage) FMBADEPSF} def
+ /erasepage {(erasepage) FMBADEPSF} def
+ /exitserver {(exitserver) FMBADEPSF} def
+ /framedevice {(framedevice) FMBADEPSF} def
+ /grestoreall {(grestoreall) FMBADEPSF} def
+ /initclip {(initclip) FMBADEPSF} def
+ /initgraphics {(initgraphics) FMBADEPSF} def
+ /quit {(quit) FMBADEPSF} def
+ /renderbands {(renderbands) FMBADEPSF} def
+ /setglobal {(setglobal) FMBADEPSF} def
+ /setpagedevice {(setpagedevice) FMBADEPSF} def
+ /setshared {(setshared) FMBADEPSF} def
+ /startjob {(startjob) FMBADEPSF} def
+ /lettertray {(lettertray) FMBADEPSF} def
+ /letter {(letter) FMBADEPSF} def
+ /lettersmall {(lettersmall) FMBADEPSF} def
+ /11x17tray {(11x17tray) FMBADEPSF} def
+ /11x17 {(11x17) FMBADEPSF} def
+ /ledgertray {(ledgertray) FMBADEPSF} def
+ /ledger {(ledger) FMBADEPSF} def
+ /legaltray {(legaltray) FMBADEPSF} def
+ /legal {(legal) FMBADEPSF} def
+ /statementtray {(statementtray) FMBADEPSF} def
+ /statement {(statement) FMBADEPSF} def
+ /executivetray {(executivetray) FMBADEPSF} def
+ /executive {(executive) FMBADEPSF} def
+ /a3tray {(a3tray) FMBADEPSF} def
+ /a3 {(a3) FMBADEPSF} def
+ /a4tray {(a4tray) FMBADEPSF} def
+ /a4 {(a4) FMBADEPSF} def
+ /a4small {(a4small) FMBADEPSF} def
+ /b4tray {(b4tray) FMBADEPSF} def
+ /b4 {(b4) FMBADEPSF} def
+ /b5tray {(b5tray) FMBADEPSF} def
+ /b5 {(b5) FMBADEPSF} def
+ FMNORMALIZEGRAPHICS
+ [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
+ fx fw 2 div add fy fh 2 div add translate
+ rotate
+ fw 2 div neg fh 2 div neg translate
+ fw urx llx sub div fh ury lly sub div scale
+ llx neg lly neg translate
+ /FMdicttop countdictstack 1 add def
+ /FMoptop count def
+ } bind def
+/FMENDEPSF {
+ count -1 FMoptop {pop pop} for
+ countdictstack -1 FMdicttop {pop end} for
+ FMEPSF restore
+ FrameDict begin
+ } bind def
+FrameDict begin
+/setmanualfeed {
+%%BeginFeature *ManualFeed True
+ statusdict /manualfeed true put
+%%EndFeature
+ } bind def
+/max {2 copy lt {exch} if pop} bind def
+/min {2 copy gt {exch} if pop} bind def
+/inch {72 mul} def
+/pagedimen {
+ paperheight sub abs 16 lt exch
+ paperwidth sub abs 16 lt and
+ {/papername exch def} {pop} ifelse
+ } bind def
+/setpapername {
+ /papersizedict 14 dict def
+ papersizedict begin
+ /papername /unknown def
+ /Letter 8.5 inch 11.0 inch pagedimen
+ /LetterSmall 7.68 inch 10.16 inch pagedimen
+ /Tabloid 11.0 inch 17.0 inch pagedimen
+ /Ledger 17.0 inch 11.0 inch pagedimen
+ /Legal 8.5 inch 14.0 inch pagedimen
+ /Statement 5.5 inch 8.5 inch pagedimen
+ /Executive 7.5 inch 10.0 inch pagedimen
+ /A3 11.69 inch 16.5 inch pagedimen
+ /A4 8.26 inch 11.69 inch pagedimen
+ /A4Small 7.47 inch 10.85 inch pagedimen
+ /B4 10.125 inch 14.33 inch pagedimen
+ /B5 7.16 inch 10.125 inch pagedimen
+ end
+ } bind def
+/papersize {
+ papersizedict begin
+ /Letter {lettertray letter} def
+ /LetterSmall {lettertray lettersmall} def
+ /Tabloid {11x17tray 11x17} def
+ /Ledger {ledgertray ledger} def
+ /Legal {legaltray legal} def
+ /Statement {statementtray statement} def
+ /Executive {executivetray executive} def
+ /A3 {a3tray a3} def
+ /A4 {a4tray a4} def
+ /A4Small {a4tray a4small} def
+ /B4 {b4tray b4} def
+ /B5 {b5tray b5} def
+ /unknown {unknown} def
+ papersizedict dup papername known {papername} {/unknown} ifelse get
+ end
+ statusdict begin stopped end
+ } bind def
+/manualpapersize {
+ papersizedict begin
+ /Letter {letter} def
+ /LetterSmall {lettersmall} def
+ /Tabloid {11x17} def
+ /Ledger {ledger} def
+ /Legal {legal} def
+ /Statement {statement} def
+ /Executive {executive} def
+ /A3 {a3} def
+ /A4 {a4} def
+ /A4Small {a4small} def
+ /B4 {b4} def
+ /B5 {b5} def
+ /unknown {unknown} def
+ papersizedict dup papername known {papername} {/unknown} ifelse get
+ end
+ stopped
+ } bind def
+/desperatepapersize {
+ statusdict /setpageparams known
+ {
+ paperwidth paperheight 0 1
+ statusdict begin
+ {setpageparams} stopped
+ end
+ } {true} ifelse
+ } bind def
+/papersizefailure {
+ FMAllowPaperSizeMismatch not
+ {
+(The requested paper size is not available in any currently-installed tray)
+(Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray)
+ FMFAILURE } if
+ } def
+/DiacriticEncoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
+/numbersign /dollar /percent /ampersand /quotesingle /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
+/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
+/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
+/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
+/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
+/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
+/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
+/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
+/udieresis /dagger /.notdef /cent /sterling /section /bullet
+/paragraph /germandbls /registered /copyright /trademark /acute
+/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
+/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
+/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
+/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
+/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
+/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
+/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
+/periodcentered /quotesinglbase /quotedblbase /perthousand
+/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
+/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
+/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
+/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
+] def
+/ReEncode {
+ dup
+ length
+ dict begin
+ {
+ 1 index /FID ne
+ {def}
+ {pop pop} ifelse
+ } forall
+ 0 eq {/Encoding DiacriticEncoding def} if
+ currentdict
+ end
+ } bind def
+FMPColor
+
+ {
+ /BEGINBITMAPCOLOR {
+ BITMAPCOLOR} def
+ /BEGINBITMAPCOLORc {
+ BITMAPCOLORc} def
+ /BEGINBITMAPTRUECOLOR {
+ BITMAPTRUECOLOR } def
+ /BEGINBITMAPTRUECOLORc {
+ BITMAPTRUECOLORc } def
+ /BEGINBITMAPCMYK {
+ BITMAPCMYK } def
+ /BEGINBITMAPCMYKc {
+ BITMAPCMYKc } def
+ }
+
+ {
+ /BEGINBITMAPCOLOR {
+ BITMAPGRAY} def
+ /BEGINBITMAPCOLORc {
+ BITMAPGRAYc} def
+ /BEGINBITMAPTRUECOLOR {
+ BITMAPTRUEGRAY } def
+ /BEGINBITMAPTRUECOLORc {
+ BITMAPTRUEGRAYc } def
+ /BEGINBITMAPCMYK {
+ BITMAPCMYKGRAY } def
+ /BEGINBITMAPCMYKc {
+ BITMAPCMYKGRAYc } def
+ }
+ifelse
+/K {
+ FMPrintAllColorsAsBlack {
+ dup 1 eq 2 index 1 eq and 3 index 1 eq and not
+ {7 {pop} repeat 0 0 0 1 0 0 0} if
+ } if
+ FrameCurColors astore
+ pop combineColor
+} bind def
+/graymode true def
+fMLevel1 {
+ /fmGetFlip {
+ fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse
+ } FmBD
+} if
+/setPatternMode {
+ fMLevel1 {
+ 2 index patScreenDict exch known {
+ pop pop
+ patScreenDict exch get aload pop
+ freq
+ mul
+ 5 2 roll
+ fMatrix2 currentmatrix 1 get 0 ne {
+ 3 -1 roll 90 add 3 1 roll
+ sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul
+ } {
+ sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul
+ } ifelse
+ 0 lt {exch pop} {pop} ifelse
+ fMNegative {
+ {neg} fmConcatProcs
+ } if
+ bind
+
+
+
+ systemdict /setscreen get exec
+ /FrameCurGray exch def
+ } {
+ /bwidth exch def
+ /bpside exch def
+ /bstring exch def
+ /onbits 0 def /offbits 0 def
+ freq sangle landscape {90 add} if
+ {/ypoint exch def
+ /xpoint exch def
+ /xindex xpoint 1 add 2 div bpside mul cvi def
+ /yindex ypoint 1 add 2 div bpside mul cvi def
+ bstring yindex bwidth mul xindex 8 idiv add get
+ 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if
+ {/onbits onbits 1 add def 1}
+ {/offbits offbits 1 add def 0}
+ ifelse
+ }
+ setscreen
+ offbits offbits onbits add div fMNegative {1.0 exch sub} if
+ /FrameCurGray exch def
+ } ifelse
+ } {
+ pop pop
+ dup patCache exch known {
+ patCache exch get
+ } {
+ dup
+ patDict /bstring 3 -1 roll put
+ patDict
+ 9 PatFreq screenIndex get div dup matrix scale
+ makepattern
+ dup
+ patCache 4 -1 roll 3 -1 roll put
+ } ifelse
+ /FrameCurGray 0 def
+ /FrameCurPat exch def
+ } ifelse
+ /graymode false def
+ combineColor
+} bind def
+/setGrayScaleMode {
+ graymode not {
+ /graymode true def
+ fMLevel1 {
+ setCurrentScreen
+ } if
+ } if
+ /FrameCurGray exch def
+ combineColor
+} bind def
+/normalize {
+ transform round exch round exch itransform
+ } bind def
+/dnormalize {
+ dtransform round exch round exch idtransform
+ } bind def
+/lnormalize {
+ 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
+ } bind def
+/H {
+ lnormalize setlinewidth
+ } bind def
+/Z {
+ setlinecap
+ } bind def
+
+/PFill {
+ graymode fMLevel1 or not {
+ gsave 1 setgray eofill grestore
+ } if
+} bind def
+/PStroke {
+ graymode fMLevel1 or not {
+ gsave 1 setgray stroke grestore
+ } if
+ stroke
+} bind def
+/X {
+ fillvals exch get
+ dup type /stringtype eq
+ {8 1 setPatternMode}
+ {setGrayScaleMode}
+ ifelse
+ } bind def
+/V {
+ PFill gsave eofill grestore
+ } bind def
+/Vclip {
+ clip
+ } bind def
+/Vstrk {
+ currentlinewidth exch setlinewidth PStroke setlinewidth
+ } bind def
+/N {
+ PStroke
+ } bind def
+/Nclip {
+ strokepath clip newpath
+ } bind def
+/Nstrk {
+ currentlinewidth exch setlinewidth PStroke setlinewidth
+ } bind def
+/M {newpath moveto} bind def
+/E {lineto} bind def
+/D {curveto} bind def
+/O {closepath} bind def
+/L {
+ /n exch def
+ newpath
+ normalize
+ moveto
+ 2 1 n {pop normalize lineto} for
+ } bind def
+/Y {
+ L
+ closepath
+ } bind def
+/R {
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x1 y1
+ x2 y1
+ x2 y2
+ x1 y2
+ 4 Y
+ } bind def
+/rarc
+ {rad
+ arcto
+ } bind def
+/RR {
+ /rad exch def
+ normalize
+ /y2 exch def
+ /x2 exch def
+ normalize
+ /y1 exch def
+ /x1 exch def
+ mark
+ newpath
+ {
+ x1 y1 rad add moveto
+ x1 y2 x2 y2 rarc
+ x2 y2 x2 y1 rarc
+ x2 y1 x1 y1 rarc
+ x1 y1 x1 y2 rarc
+ closepath
+ } stopped {x1 y1 x2 y2 R} if
+ cleartomark
+ } bind def
+/RRR {
+ /rad exch def
+ normalize /y4 exch def /x4 exch def
+ normalize /y3 exch def /x3 exch def
+ normalize /y2 exch def /x2 exch def
+ normalize /y1 exch def /x1 exch def
+ newpath
+ normalize moveto
+ mark
+ {
+ x2 y2 x3 y3 rarc
+ x3 y3 x4 y4 rarc
+ x4 y4 x1 y1 rarc
+ x1 y1 x2 y2 rarc
+ closepath
+ } stopped
+ {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if
+ cleartomark
+ } bind def
+/C {
+ grestore
+ gsave
+ R
+ clip
+ setCurrentScreen
+} bind def
+/CP {
+ grestore
+ gsave
+ Y
+ clip
+ setCurrentScreen
+} bind def
+/F {
+ FMfonts exch get
+ FMpointsize scalefont
+ setfont
+ } bind def
+/Q {
+ /FMpointsize exch def
+ F
+ } bind def
+/T {
+ moveto show
+ } bind def
+/RF {
+ rotate
+ 0 ne {-1 1 scale} if
+ } bind def
+/TF {
+ gsave
+ moveto
+ RF
+ show
+ grestore
+ } bind def
+/P {
+ moveto
+ 0 32 3 2 roll widthshow
+ } bind def
+/PF {
+ gsave
+ moveto
+ RF
+ 0 32 3 2 roll widthshow
+ grestore
+ } bind def
+/S {
+ moveto
+ 0 exch ashow
+ } bind def
+/SF {
+ gsave
+ moveto
+ RF
+ 0 exch ashow
+ grestore
+ } bind def
+/B {
+ moveto
+ 0 32 4 2 roll 0 exch awidthshow
+ } bind def
+/BF {
+ gsave
+ moveto
+ RF
+ 0 32 4 2 roll 0 exch awidthshow
+ grestore
+ } bind def
+/G {
+ gsave
+ newpath
+ normalize translate 0.0 0.0 moveto
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath
+ PFill fill
+ grestore
+ } bind def
+/Gstrk {
+ savematrix
+ newpath
+ 2 index 2 div add exch 3 index 2 div sub exch
+ normalize 2 index 2 div sub exch 3 index 2 div add exch
+ translate
+ scale
+ 0.0 0.0 1.0 5 3 roll arc
+ restorematrix
+ currentlinewidth exch setlinewidth PStroke setlinewidth
+ } bind def
+/Gclip {
+ newpath
+ savematrix
+ normalize translate 0.0 0.0 moveto
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath
+ clip newpath
+ restorematrix
+ } bind def
+/GG {
+ gsave
+ newpath
+ normalize translate 0.0 0.0 moveto
+ rotate
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath
+ PFill
+ fill
+ grestore
+ } bind def
+/GGclip {
+ savematrix
+ newpath
+ normalize translate 0.0 0.0 moveto
+ rotate
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath
+ clip newpath
+ restorematrix
+ } bind def
+/GGstrk {
+ savematrix
+ newpath
+ normalize translate 0.0 0.0 moveto
+ rotate
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath
+ restorematrix
+ currentlinewidth exch setlinewidth PStroke setlinewidth
+ } bind def
+/A {
+ gsave
+ savematrix
+ newpath
+ 2 index 2 div add exch 3 index 2 div sub exch
+ normalize 2 index 2 div sub exch 3 index 2 div add exch
+ translate
+ scale
+ 0.0 0.0 1.0 5 3 roll arc
+ restorematrix
+ PStroke
+ grestore
+ } bind def
+/Aclip {
+ newpath
+ savematrix
+ normalize translate 0.0 0.0 moveto
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath
+ strokepath clip newpath
+ restorematrix
+} bind def
+/Astrk {
+ Gstrk
+} bind def
+/AA {
+ gsave
+ savematrix
+ newpath
+
+ 3 index 2 div add exch 4 index 2 div sub exch
+
+ normalize 3 index 2 div sub exch 4 index 2 div add exch
+ translate
+ rotate
+ scale
+ 0.0 0.0 1.0 5 3 roll arc
+ restorematrix
+ PStroke
+ grestore
+ } bind def
+/AAclip {
+ savematrix
+ newpath
+ normalize translate 0.0 0.0 moveto
+ rotate
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath
+ strokepath clip newpath
+ restorematrix
+} bind def
+/AAstrk {
+ GGstrk
+} bind def
+/BEGINPRINTCODE {
+ /FMdicttop countdictstack 1 add def
+ /FMoptop count 7 sub def
+ /FMsaveobject save def
+ userdict begin
+ /showpage {} def
+ FMNORMALIZEGRAPHICS
+ 3 index neg 3 index neg translate
+ } bind def
+/ENDPRINTCODE {
+ count -1 FMoptop {pop pop} for
+ countdictstack -1 FMdicttop {pop end} for
+ FMsaveobject restore
+ } bind def
+/gn {
+ 0
+ { 46 mul
+ cf read pop
+ 32 sub
+ dup 46 lt {exit} if
+ 46 sub add
+ } loop
+ add
+ } bind def
+/cfs {
+ /str sl string def
+ 0 1 sl 1 sub {str exch val put} for
+ str def
+ } bind def
+/ic [
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0
+ {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
+ {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
+ {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
+ {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
+ {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
+ {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
+ {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
+ {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
+ {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
+ ] def
+/ms {
+ /sl exch def
+ /val 255 def
+ /ws cfs
+ /im cfs
+ /val 0 def
+ /bs cfs
+ /cs cfs
+ } bind def
+400 ms
+/ip {
+ is
+ 0
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop
+
+ } bind def
+/rip {
+
+
+ bis ris copy pop
+ is
+ 0
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop pop
+ ris gis copy pop
+ dup is exch
+
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop pop
+ gis bis copy pop
+ dup add is exch
+
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop
+
+ } bind def
+/rip4 {
+
+
+ kis cis copy pop
+ is
+ 0
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop pop
+ cis mis copy pop
+ dup is exch
+
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop pop
+ mis yis copy pop
+ dup dup add is exch
+
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop pop
+ yis kis copy pop
+ 3 mul is exch
+
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop
+
+ } bind def
+/wh {
+ /len exch def
+ /pos exch def
+ ws 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/bl {
+ /len exch def
+ /pos exch def
+ bs 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/s1 1 string def
+/fl {
+ /len exch def
+ /pos exch def
+ /val cf s1 readhexstring pop 0 get def
+ pos 1 pos len add 1 sub {im exch val put} for
+ pos len
+ } bind def
+/hx {
+ 3 copy getinterval
+ cf exch readhexstring pop pop
+ } bind def
+/wbytes {
+ dup dup
+ 8 gt { pop 8 idiv mul }
+ { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse
+ } bind def
+/BEGINBITMAPBWc {
+ 1 {} COMMONBITMAPc
+ } bind def
+/BEGINBITMAPGRAYc {
+ 8 {} COMMONBITMAPc
+ } bind def
+/BEGINBITMAP2BITc {
+ 2 {} COMMONBITMAPc
+ } bind def
+/COMMONBITMAPc {
+
+ /cvtProc exch def
+ /depth exch def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /lb width depth wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+ cvtProc
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ width height depth [width 0 0 height neg 0 height]
+ {ip} image
+ bitmapsave restore
+ grestore
+ } bind def
+/BEGINBITMAPBW {
+ 1 {} COMMONBITMAP
+ } bind def
+/BEGINBITMAPGRAY {
+ 8 {} COMMONBITMAP
+ } bind def
+/BEGINBITMAP2BIT {
+ 2 {} COMMONBITMAP
+ } bind def
+/COMMONBITMAP {
+ /cvtProc exch def
+ /depth exch def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /bitmapsave save def
+ cvtProc
+ /is width depth wbytes string def
+ /cf currentfile def
+ width height depth [width 0 0 height neg 0 height]
+ {cf is readhexstring pop} image
+ bitmapsave restore
+ grestore
+ } bind def
+/ngrayt 256 array def
+/nredt 256 array def
+/nbluet 256 array def
+/ngreent 256 array def
+fMLevel1 {
+/colorsetup {
+ currentcolortransfer
+ /gryt exch def
+ /blut exch def
+ /grnt exch def
+ /redt exch def
+ 0 1 255 {
+ /indx exch def
+ /cynu 1 red indx get 255 div sub def
+ /magu 1 green indx get 255 div sub def
+ /yelu 1 blue indx get 255 div sub def
+ /kk cynu magu min yelu min def
+ /u kk currentundercolorremoval exec def
+% /u 0 def
+ nredt indx 1 0 cynu u sub max sub redt exec put
+ ngreent indx 1 0 magu u sub max sub grnt exec put
+ nbluet indx 1 0 yelu u sub max sub blut exec put
+ ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put
+ } for
+ {255 mul cvi nredt exch get}
+ {255 mul cvi ngreent exch get}
+ {255 mul cvi nbluet exch get}
+ {255 mul cvi ngrayt exch get}
+ setcolortransfer
+ {pop 0} setundercolorremoval
+ {} setblackgeneration
+ } bind def
+}
+{
+/colorSetup2 {
+ [ /Indexed /DeviceRGB 255
+ {dup red exch get 255 div
+ exch dup green exch get 255 div
+ exch blue exch get 255 div}
+ ] setcolorspace
+} bind def
+} ifelse
+/fakecolorsetup {
+ /tran 256 string def
+ 0 1 255 {/indx exch def
+ tran indx
+ red indx get 77 mul
+ green indx get 151 mul
+ blue indx get 28 mul
+ add add 256 idiv put} for
+ currenttransfer
+ {255 mul cvi tran exch get 255.0 div}
+ exch fmConcatProcs settransfer
+} bind def
+/BITMAPCOLOR {
+ /depth 8 def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /bitmapsave save def
+ fMLevel1 {
+ colorsetup
+ /is width depth wbytes string def
+ /cf currentfile def
+ width height depth [width 0 0 height neg 0 height]
+ {cf is readhexstring pop} {is} {is} true 3 colorimage
+ } {
+ colorSetup2
+ /is width depth wbytes string def
+ /cf currentfile def
+ 7 dict dup begin
+ /ImageType 1 def
+ /Width width def
+ /Height height def
+ /ImageMatrix [width 0 0 height neg 0 height] def
+ /DataSource {cf is readhexstring pop} bind def
+ /BitsPerComponent depth def
+ /Decode [0 255] def
+ end image
+ } ifelse
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPCOLORc {
+ /depth 8 def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /lb width depth wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+ fMLevel1 {
+ colorsetup
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ width height depth [width 0 0 height neg 0 height]
+ {ip} {is} {is} true 3 colorimage
+ } {
+ colorSetup2
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ 7 dict dup begin
+ /ImageType 1 def
+ /Width width def
+ /Height height def
+ /ImageMatrix [width 0 0 height neg 0 height] def
+ /DataSource {ip} bind def
+ /BitsPerComponent depth def
+ /Decode [0 255] def
+ end image
+ } ifelse
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPTRUECOLORc {
+ /depth 24 def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /lb width depth wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+
+ /is im 0 lb getinterval def
+ /ris im 0 width getinterval def
+ /gis im width width getinterval def
+ /bis im width 2 mul width getinterval def
+
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ {width rip pop ris} {gis} {bis} true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPCMYKc {
+ /depth 32 def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /lb width depth wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+
+ /is im 0 lb getinterval def
+ /cis im 0 width getinterval def
+ /mis im width width getinterval def
+ /yis im width 2 mul width getinterval def
+ /kis im width 3 mul width getinterval def
+
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPTRUECOLOR {
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /bitmapsave save def
+ /is width string def
+ /gis width string def
+ /bis width string def
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ { cf is readhexstring pop }
+ { cf gis readhexstring pop }
+ { cf bis readhexstring pop }
+ true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPCMYK {
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /bitmapsave save def
+ /is width string def
+ /mis width string def
+ /yis width string def
+ /kis width string def
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ { cf is readhexstring pop }
+ { cf mis readhexstring pop }
+ { cf yis readhexstring pop }
+ { cf kis readhexstring pop }
+ true 4 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPTRUEGRAYc {
+ /depth 24 def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /lb width depth wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+
+ /is im 0 lb getinterval def
+ /ris im 0 width getinterval def
+ /gis im width width getinterval def
+ /bis im width 2 mul width getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ {width rip pop ris gis bis width gray} image
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPCMYKGRAYc {
+ /depth 32 def
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /lb width depth wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+
+ /is im 0 lb getinterval def
+ /cis im 0 width getinterval def
+ /mis im width width getinterval def
+ /yis im width 2 mul width getinterval def
+ /kis im width 3 mul width getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ {width rip pop cis mis yis kis width cgray} image
+ bitmapsave restore
+ grestore
+ } bind def
+/cgray {
+ /ww exch def
+ /k exch def
+ /y exch def
+ /m exch def
+ /c exch def
+ 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB
+ .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add
+ c i 3 -1 roll floor cvi put } for
+ c
+ } bind def
+/gray {
+ /ww exch def
+ /b exch def
+ /g exch def
+ /r exch def
+ 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul
+ b i get .114 mul add add r i 3 -1 roll floor cvi put } for
+ r
+ } bind def
+/BITMAPTRUEGRAY {
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /bitmapsave save def
+ /is width string def
+ /gis width string def
+ /bis width string def
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ { cf is readhexstring pop
+ cf gis readhexstring pop
+ cf bis readhexstring pop width gray} image
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPCMYKGRAY {
+ gsave
+
+ 3 index 2 div add exch
+ 4 index 2 div add exch
+ translate
+ rotate
+ 1 index 2 div neg
+ 1 index 2 div neg
+ translate
+ scale
+ /height exch def /width exch def
+ /bitmapsave save def
+ /is width string def
+ /yis width string def
+ /mis width string def
+ /kis width string def
+ /cf currentfile def
+ width height 8 [width 0 0 height neg 0 height]
+ { cf is readhexstring pop
+ cf mis readhexstring pop
+ cf yis readhexstring pop
+ cf kis readhexstring pop width cgray} image
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPGRAY {
+ 8 {fakecolorsetup} COMMONBITMAP
+ } bind def
+/BITMAPGRAYc {
+ 8 {fakecolorsetup} COMMONBITMAPc
+ } bind def
+/ENDBITMAP {
+ } bind def
+end
+ /ALDmatrix matrix def ALDmatrix currentmatrix pop
+/StartALD {
+ /ALDsave save def
+ savematrix
+ ALDmatrix setmatrix
+ } bind def
+/InALD {
+ restorematrix
+ } bind def
+/DoneALD {
+ ALDsave restore
+ } bind def
+/I { setdash } bind def
+/J { [] 0 setdash } bind def
+%%EndProlog
+%%BeginSetup
+(5.0) FMVERSION
+1 1 0 0 612 792 0 1 29 FMDOCUMENT
+0 0 /Helvetica-Bold FMFONTDEFINE
+1 0 /Times-Italic FMFONTDEFINE
+2 0 /Times-Roman FMFONTDEFINE
+3 0 /Times-Bold FMFONTDEFINE
+4 0 /Helvetica FMFONTDEFINE
+5 0 /Courier FMFONTDEFINE
+6 1 /Symbol FMFONTDEFINE
+7 0 /Times-BoldItalic FMFONTDEFINE
+32 FMFILLS
+0 0 FMFILL
+1 0.1 FMFILL
+2 0.3 FMFILL
+3 0.5 FMFILL
+4 0.7 FMFILL
+5 0.9 FMFILL
+6 0.97 FMFILL
+7 1 FMFILL
+8 <0f1e3c78f0e1c387> FMFILL
+9 <0f87c3e1f0783c1e> FMFILL
+10 <cccccccccccccccc> FMFILL
+11 <ffff0000ffff0000> FMFILL
+12 <8142241818244281> FMFILL
+13 <03060c183060c081> FMFILL
+14 <8040201008040201> FMFILL
+16 1 FMFILL
+17 0.9 FMFILL
+18 0.7 FMFILL
+19 0.5 FMFILL
+20 0.3 FMFILL
+21 0.1 FMFILL
+22 0.03 FMFILL
+23 0 FMFILL
+24 <f0e1c3870f1e3c78> FMFILL
+25 <f0783c1e0f87c3e1> FMFILL
+26 <3333333333333333> FMFILL
+27 <0000ffff0000ffff> FMFILL
+28 <7ebddbe7e7dbbd7e> FMFILL
+29 <fcf9f3e7cf9f3f7e> FMFILL
+30 <7fbfdfeff7fbfdfe> FMFILL
+%%EndSetup
+%%Page: "1" 1
+%%BeginPaperSize: Letter
+%%EndPaperSize
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+J
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 24 Q
+0 X
+0 0 0 1 0 0 0 K
+(The X K) 150.56 646 T
+(e) 239.56 646 T
+(yboar) 252.54 646 T
+(d Extension:) 317.41 646 T
+(Librar) 187.18 617 T
+(y Speci\336cation) 255.43 617 T
+0 14 Q
+(Librar) 160.6 524.67 T
+(y V) 200.42 524.67 T
+(er) 220.73 524.67 T
+(sion 1.0 / Document Re) 233.75 524.67 T
+(vision 1.1) 387.58 524.67 T
+(X Consor) 227.82 490.67 T
+(tium Standar) 290.33 490.67 T
+(d) 375.62 490.67 T
+(X V) 222.41 456.67 T
+(er) 244.27 456.67 T
+(sion 11, Release 6.4) 257.29 456.67 T
+1 12 Q
+(Amber J) 224.23 263 T
+(. Benson and Gary Aitk) 264.25 263 T
+(en) 376.45 263 T
+(Erik F) 275.47 235 T
+(ortune) 305.2 235 T
+2 F
+(Silicon Graphics, Inc.) 253.67 221 T
+1 F
+(Donna Con) 265.81 193 T
+(ver) 320.99 193 T
+(se) 336.2 193 T
+2 F
+(X Consortium Inc.) 261.17 179 T
+1 F
+(Geor) 272.88 151 T
+(g) 297.1 151 T
+(e Sac) 302.98 151 T
+(hs) 328.45 151 T
+2 F
+(He) 241.18 137 T
+(wlett-P) 254.87 137 T
+(ackard Compan) 289.36 137 T
+(y) 364.82 137 T
+1 F
+(W) 278.11 109 T
+(ill W) 287.45 109 T
+(alk) 309.35 109 T
+(er) 323.89 109 T
+2 F
+(Digital Equipment Corporation) 231 95 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "1" 1
+%%Page: "2" 2
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+2 12 Q
+0 X
+0 0 0 1 0 0 0 K
+(Cop) 72 516 T
+(yright \251 1995, 1996 X Consortium Inc.) 91.88 516 T
+(Cop) 72 502 T
+(yright \251 1995, 1996 Silicon Graphics Inc.) 91.88 502 T
+(Cop) 72 488 T
+(yright \251 1995, 1996 He) 91.88 488 T
+(wlett-P) 209.36 488 T
+(ackard Compan) 243.85 488 T
+(y) 319.32 488 T
+(Cop) 72 474 T
+(yright \251 1995, 1996 Digital Equipment Corporation) 91.88 474 T
+(Permission is hereby granted, free of char) 72 446 T
+(ge, to an) 272.06 446 T
+(y person obtaining a cop) 312.88 446 T
+(y of this softw) 430.74 446 T
+(are and) 499.62 446 T
+(associated documentation \336les \050the \322Softw) 72 432 T
+(are\323\051, to deal in the Softw) 277.19 432 T
+(are without restriction,) 401.04 432 T
+-0.35 (including without limitation the rights to use, cop) 72 418 P
+-0.35 (y) 306.79 418 P
+-0.35 (, modify) 312.01 418 P
+-0.35 (, mer) 351.55 418 P
+-0.35 (ge, publish, distrib) 375.64 418 P
+-0.35 (ute, sublicense,) 464.04 418 P
+-0.08 (and/or sell copies of the Softw) 72 404 P
+-0.08 (are, and to permit persons to whom the Softw) 217.82 404 P
+-0.08 (are is furnished to do) 436.06 404 P
+(so, subject to the follo) 72 390 T
+(wing conditions:) 178.03 390 T
+-0.47 (The abo) 72 362 P
+-0.47 (v) 110.34 362 P
+-0.47 (e cop) 116.16 362 P
+-0.47 (yright notice and this permission notice shall be included in all copies or substantial) 141.23 362 P
+(portions of the Softw) 72 348 T
+(are.) 173.54 348 T
+(THE SOFTW) 72 320 T
+(ARE IS PR) 137.56 320 T
+(O) 192.42 320 T
+(VIDED \322) 200.48 320 T
+(AS IS\323, WITHOUT W) 245.17 320 T
+(ARRANTY OF ANY KIND,) 354.37 320 T
+(EXPRESS OR IMPLIED, INCLUDING B) 72 306 T
+(UT NO) 278.21 306 T
+(T LIMITED T) 314.05 306 T
+(O THE W) 383.82 306 T
+(ARRANTIES OF) 431.7 306 T
+(MERCHANT) 72 292 T
+(ABILITY) 138.22 292 T
+(, FITNESS FOR A P) 184.66 292 T
+(AR) 284.57 292 T
+(TICULAR PURPOSE AND NONINFRINGE-) 300.52 292 T
+(MENT) 72 278 T
+(. IN NO EVENT SHALL THE X CONSOR) 105.11 278 T
+(TIUM BE LIABLE FOR ANY CLAIM,) 317.03 278 T
+-0.46 (D) 72 264 P
+-0.46 (AMA) 80.18 264 P
+-0.46 (GES OR O) 107.7 264 P
+-0.46 (THER LIABILITY) 160.3 264 P
+-0.46 (, WHETHER IN AN A) 251.94 264 P
+-0.46 (CTION OF CONTRA) 361.93 264 P
+-0.46 (CT) 467.86 264 P
+-0.46 (, T) 482.31 264 P
+-0.46 (OR) 494.97 264 P
+-0.46 (T OR) 510.92 264 P
+-0.52 (O) 72 250 P
+-0.52 (THER) 80.18 250 P
+-0.52 (WISE, ARISING FR) 110.86 250 P
+-0.52 (OM, OUT OF OR IN CONNECTION WITH THE SOFTW) 211 250 P
+-0.52 (ARE OR) 494.37 250 P
+(THE USE OR O) 72 236 T
+(THER DEALINGS IN THE SOFTW) 151.85 236 T
+(ARE.) 330.38 236 T
+(Except as contained in this notice, the names of the X Consortium, Silicon Graphics Inc.,) 72 208 T
+-0.38 (He) 72 194 P
+-0.38 (wlett-P) 85.69 194 P
+-0.38 (ackard Compan) 120.18 194 P
+-0.38 (y) 195.26 194 P
+-0.38 (, and Digital Equipment Corporation shall not be used in adv) 200.48 194 P
+-0.38 (ertising or) 488.77 194 P
+-0.12 (otherwise to promote the sale, use or other dealings in this Softw) 72 180 P
+-0.12 (are without prior written authori-) 381.85 180 P
+(zation.) 72 166 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "2" 2
+%%Page: "3" 3
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+3 14 Q
+0 X
+0 0 0 1 0 0 0 K
+(Ackno) 251.24 710.67 T
+(wledgments) 289.99 710.67 T
+2 12 Q
+-0.26 (This document is the result of a great deal of hard w) 72 678 P
+-0.26 (ork by a great man) 319.3 678 P
+-0.26 (y people. W) 408.05 678 P
+-0.26 (ithout Erik F) 465.36 678 P
+-0.26 (or-) 526.01 678 P
+-0.11 (tune\325) 72 664 P
+-0.11 (s w) 96 664 P
+-0.11 (ork as Architect of the X K) 112.1 664 P
+-0.11 (e) 241.77 664 P
+-0.11 (yboard Extension and the longtime support of Silicon Graph-) 246.91 664 P
+(ics Inc. there w) 72 650 T
+(ould not be a k) 145.19 650 T
+(e) 216.4 650 T
+(yboard e) 221.54 650 T
+(xtension.) 263.02 650 T
+-0.18 (W) 72 622 P
+-0.18 (e gratefully thank W) 82.37 622 P
+-0.18 (ill W) 180.34 622 P
+-0.18 (alk) 203.54 622 P
+-0.18 (er and Geor) 218.08 622 P
+-0.18 (ge Sachs for their help and e) 274.15 622 P
+-0.18 (xpertise in pro) 409.55 622 P
+-0.18 (viding some) 478.35 622 P
+(of the content for this document, and Digital Equipment Corporation and He) 72 608 T
+(wlett-P) 439 608 T
+(ackard for) 473.48 608 T
+(allo) 72 594 T
+(wing them to participate in this project, and we are deeply indebted to IBM for pro) 89.7 594 T
+(viding the) 486.79 594 T
+(funding to complete this library speci\336cation.) 72 580 T
+(Most of all, we thank Gary Aitk) 72 552 T
+(en and Amber J. Benson for their long hours and late nights as) 225.53 552 T
+-0.02 (ultimate authors of this speci\336cation, and for serving as authors, document editors, and XKB pro-) 72 538 P
+(tocol and implementation re) 72 524 T
+(vie) 206.69 524 T
+(wers. Their commitment to accurac) 221.05 524 T
+(y and completeness, their) 391.16 524 T
+(attention to detail, their k) 72 510 T
+(een insight, and their good natures when w) 192.88 510 T
+(orking under tremendous) 398.72 510 T
+(pressure are in some measure responsible not only for the quality of this document, b) 72 496 T
+(ut for the) 480.04 496 T
+(quality of the K) 72 482 T
+(e) 147.36 482 T
+(yboard e) 152.51 482 T
+(xtension itself.) 193.98 482 T
+(Matt Landau) 72 440 T
+(Manager) 72 426 T
+(, X W) 114.17 426 T
+(indo) 142.68 426 T
+(w System) 163.72 426 T
+(X Consortium Inc.) 72 412 T
+(5 February 1996) 72 398 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "3" 3
+%%Page: "4" 4
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 12 Q
+(The following table shows the font conventions used in this document:) 108 712 T
+1 F
+(Usa) 109 673 T
+(g) 128.21 673 T
+(e) 134.09 673 T
+(F) 298 673 T
+(ont e) 304.07 673 T
+(xample) 327.5 673 T
+2 11 Q
+(K) 109 657.67 T
+(e) 116.67 657.67 T
+(y Labels) 121.39 657.67 T
+4 F
+(Num_Loc) 298 657.67 T
+(k) 344.85 657.67 T
+2 F
+(Ne) 109 642.67 T
+(w terms) 121.55 642.67 T
+1 12 Q
+(SlowK) 298 642.67 T
+(e) 328.92 642.67 T
+(ys acceptance delay) 333.89 642.67 T
+2 11 Q
+(Function de\336nitions) 109 627.67 T
+(XkbColorPtr) 298 627.67 T
+3 F
+(XkbAddGeomColor) 357.59 627.67 T
+2 F
+(\050) 452.92 627.67 T
+1 F
+(g) 456.59 627.67 T
+(eom) 461.98 627.67 T
+2 F
+(,) 480.3 627.67 T
+1 F
+(spec) 483.05 627.67 T
+2 F
+(,) 502.6 627.67 T
+1 F
+(pixel) 505.35 627.67 T
+2 F
+(\051) 526.73 627.67 T
+(Function references) 109 612.67 T
+1 12 Q
+(XkbAddGeomColor) 298 612.67 T
+2 11 Q
+(P) 109 597.67 T
+(arameters or ar) 114.95 597.67 T
+(guments) 180.72 597.67 T
+1 12 Q
+(g) 298 597 T
+(eom) 303.88 597 T
+2 11 Q
+(Structure de\336nitions) 109 581.67 T
+3 F
+(XkbGeometryRec) 298 581.67 T
+2 F
+(Structure references) 109 566.67 T
+5 12 Q
+-0.6 (XkbGeometryRec) 298 566.67 S
+2 11 Q
+(References to \336elds in a data structure) 109 551.67 T
+1 12 Q
+(key_aliases) 298 551 T
+2 11 Q
+(References to masks, modi\336ers, controls) 109 535.67 T
+5 12 Q
+-0.6 (IgnoreGroupLock) 298 535.67 S
+108 685 540 685 2 L
+V
+0.5 H
+0 Z
+N
+108 667 540 667 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "4" 4
+%%Page: "1" 5
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(T) 509.04 40.62 T
+(OC-1) 515.56 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 12 Q
+(1) 72 712 T
+(Ov) 108 712 T
+(ervie) 122.48 712 T
+(w) 146.17 712 T
+(..................................................................................................................) 156 712 T
+(1) 498 712 T
+2 10 Q
+(1.1) 108 697.33 T
+(Core X Protocol Support for K) 144 697.33 T
+(e) 267.35 697.33 T
+(yboards) 271.64 697.33 T
+(.............................................................................) 305 697.33 T
+(1) 499 697.33 T
+(1.2) 108 683.33 T
+(Xkb K) 144 683.33 T
+(e) 170.69 683.33 T
+(yboard Extension Support for K) 174.98 683.33 T
+(e) 303.05 683.33 T
+(yboards) 307.34 683.33 T
+(...............................................................) 340 683.33 T
+(1) 499 683.33 T
+(1.3) 108 669.33 T
+(Xkb Extension Components) 144 669.33 T
+(................................................................................................) 257.5 669.33 T
+(1) 499 669.33 T
+(1.3.1) 144 657.33 T
+(Groups and Shift Le) 180 657.33 T
+(v) 261.13 657.33 T
+(els) 265.98 657.33 T
+(........................................................................................) 277.5 657.33 T
+(3) 499 657.33 T
+(1.3.2) 144 645.33 T
+(Radio Groups) 180 645.33 T
+(........................................................................................................) 237.5 645.33 T
+(3) 499 645.33 T
+(1.4) 108 631.33 T
+(Client T) 144 631.33 T
+(ypes) 176.26 631.33 T
+(.........................................................................................................................) 195 631.33 T
+(3) 499 631.33 T
+(1.5) 108 617.33 T
+(Compatibility W) 144 617.33 T
+(ith the Core Protocol) 211.11 617.33 T
+(.................................................................................) 295 617.33 T
+(4) 499 617.33 T
+(1.6) 108 603.33 T
+(Additional Protocol Errors) 144 603.33 T
+(..................................................................................................) 252.5 603.33 T
+(4) 499 603.33 T
+(1.7) 108 589.33 T
+(Extension Library Functions) 144 589.33 T
+(...............................................................................................) 260 589.33 T
+(4) 499 589.33 T
+(1.7.1) 144 577.33 T
+(Error Indications) 180 577.33 T
+(...................................................................................................) 250 577.33 T
+(4) 499 577.33 T
+2 12 Q
+(2) 72 558 T
+(Initialization and General Programming Information) 108 558 T
+(..............................................) 360 558 T
+(6) 498 558 T
+2 10 Q
+(2.1) 108 543.33 T
+(Extension Header Files) 144 543.33 T
+(........................................................................................................) 237.5 543.33 T
+(6) 499 543.33 T
+(2.2) 108 529.33 T
+(Extension Name) 144 529.33 T
+(..................................................................................................................) 212.5 529.33 T
+(6) 499 529.33 T
+(2.3) 108 515.33 T
+(Determining Library Compatibility) 144 515.33 T
+(....................................................................................) 287.5 515.33 T
+(6) 499 515.33 T
+(2.4) 108 501.33 T
+(Initializing the K) 144 501.33 T
+(e) 212.08 501.33 T
+(yboard Extension) 216.37 501.33 T
+(....................................................................................) 287.5 501.33 T
+(7) 499 501.33 T
+(2.5) 108 487.33 T
+(Disabling the K) 144 487.33 T
+(e) 207.08 487.33 T
+(yboard Extension) 211.37 487.33 T
+(......................................................................................) 282.5 487.33 T
+(8) 499 487.33 T
+(2.6) 108 473.33 T
+(Protocol Errors) 144 473.33 T
+(....................................................................................................................) 207.5 473.33 T
+(9) 499 473.33 T
+(2.7) 108 459.33 T
+(Display and De) 144 459.33 T
+(vice Speci\336cations in Function Calls) 205.96 459.33 T
+(.........................................................) 355 459.33 T
+(9) 499 459.33 T
+2 12 Q
+(3) 72 440 T
+(Data Structures) 108 440 T
+(.......................................................................................................) 183 440 T
+(11) 492 440 T
+2 10 Q
+(3.1) 108 425.33 T
+(Allocating Xkb Data Structures) 144 425.33 T
+(........................................................................................) 272.5 425.33 T
+(11) 494 425.33 T
+(3.2) 108 411.33 T
+(Adding Data and Editing Data Structures) 144 411.33 T
+(.........................................................................) 310 411.33 T
+(11) 494 411.33 T
+(3.3) 108 397.33 T
+(Making Changes to the Serv) 144 397.33 T
+(er\325) 257.73 397.33 T
+(s K) 268.28 397.33 T
+(e) 281.64 397.33 T
+(yboard Description) 285.93 397.33 T
+(...................................................) 365 397.33 T
+(12) 494 397.33 T
+(3.4) 108 383.33 T
+(T) 144 383.33 T
+(racking K) 149.76 383.33 T
+(e) 189.22 383.33 T
+(yboard Changes in the Serv) 193.51 383.33 T
+(er) 303.9 383.33 T
+(........................................................................) 312.5 383.33 T
+(12) 494 383.33 T
+(3.5) 108 369.33 T
+(Freeing Data Structures) 144 369.33 T
+(.....................................................................................................) 240 369.33 T
+(13) 494 369.33 T
+2 12 Q
+(4) 72 350 T
+(Xkb Ev) 108 350 T
+(ents) 144.82 350 T
+(.............................................................................................................) 165 350 T
+(14) 492 350 T
+2 10 Q
+(4.1) 108 335.33 T
+(Xkb Ev) 144 335.33 T
+(ent T) 174.68 335.33 T
+(ypes) 194.71 335.33 T
+(...............................................................................................................) 215 335.33 T
+(14) 494 335.33 T
+(4.2) 108 321.33 T
+(Xkb Ev) 144 321.33 T
+(ent Data Structures) 174.68 321.33 T
+(................................................................................................) 252.5 321.33 T
+(15) 494 321.33 T
+(4.3) 108 307.33 T
+(Selecting Xkb Ev) 144 307.33 T
+(ents) 214.4 307.33 T
+(........................................................................................................) 232.5 307.33 T
+(15) 494 307.33 T
+(4.3.1) 144 295.33 T
+(Ev) 180 295.33 T
+(ent Masks) 190.96 295.33 T
+(........................................................................................................) 232.5 295.33 T
+(17) 494 295.33 T
+(4.4) 108 281.33 T
+(Uni\336ed Xkb Ev) 144 281.33 T
+(ent T) 207.18 281.33 T
+(ype) 227.21 281.33 T
+(....................................................................................................) 242.5 281.33 T
+(18) 494 281.33 T
+2 12 Q
+(5) 72 262 T
+(K) 108 262 T
+(e) 116.36 262 T
+(yboard State) 121.51 262 T
+(.......................................................................................................) 183 262 T
+(19) 492 262 T
+2 10 Q
+(5.1) 108 247.33 T
+(K) 144 247.33 T
+(e) 150.97 247.33 T
+(yboard State Description) 155.26 247.33 T
+(...............................................................................................) 255 247.33 T
+(19) 494 247.33 T
+(5.2) 108 233.33 T
+(Changing the K) 144 233.33 T
+(e) 207.08 233.33 T
+(yboard State) 211.37 233.33 T
+(............................................................................................) 262.5 233.33 T
+(22) 494 233.33 T
+(5.2.1) 144 221.33 T
+(Changing Modi\336ers) 180 221.33 T
+(............................................................................................) 262.5 221.33 T
+(22) 494 221.33 T
+(5.2.2) 144 209.33 T
+(Changing Groups) 180 209.33 T
+(................................................................................................) 252.5 209.33 T
+(23) 494 209.33 T
+(5.3) 108 195.33 T
+(Determining K) 144 195.33 T
+(e) 204.02 195.33 T
+(yboard State) 208.31 195.33 T
+(.............................................................................................) 260 195.33 T
+(23) 494 195.33 T
+(5.4) 108 181.33 T
+(T) 144 181.33 T
+(racking K) 149.76 181.33 T
+(e) 189.22 181.33 T
+(yboard State) 193.51 181.33 T
+(...................................................................................................) 245 181.33 T
+(24) 494 181.33 T
+2 12 Q
+(6) 72 162 T
+(Complete K) 108 162 T
+(e) 166.03 162 T
+(yboard Description) 171.18 162 T
+(............................................................................) 264 162 T
+(27) 492 162 T
+2 10 Q
+(6.1) 108 147.33 T
+(The XkbDescRec Structure) 144 147.33 T
+(...............................................................................................) 255 147.33 T
+(27) 494 147.33 T
+(6.2) 108 133.33 T
+(Obtaining a K) 144 133.33 T
+(e) 200.41 133.33 T
+(yboard Description from the Serv) 204.7 133.33 T
+(er) 338.97 133.33 T
+(..........................................................) 347.5 133.33 T
+(28) 494 133.33 T
+(6.3) 108 119.33 T
+(T) 144 119.33 T
+(racking Changes to the K) 149.76 119.33 T
+(e) 251.16 119.33 T
+(yboard Description in the Serv) 255.45 119.33 T
+(er) 378.06 119.33 T
+(..........................................) 387.5 119.33 T
+(28) 494 119.33 T
+(6.4) 108 105.33 T
+(Allocating and Freeing a K) 144 105.33 T
+(e) 252.62 105.33 T
+(yboard Description) 256.91 105.33 T
+(...............................................................) 335 105.33 T
+(28) 494 105.33 T
+2 12 Q
+(7) 72 86 T
+(V) 108 86 T
+(irtual Modi\336ers) 115.94 86 T
+(....................................................................................................) 192 86 T
+(30) 492 86 T
+2 10 Q
+(7.1) 108 71.33 T
+(V) 144 71.33 T
+(irtual Modi\336er Names and Masks) 150.62 71.33 T
+(..................................................................................) 287.5 71.33 T
+(30) 494 71.33 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "1" 5
+%%Page: "2" 6
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(T) 509.04 40.62 T
+(OC-2) 515.56 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 10 Q
+(7.2) 108 713.33 T
+(Modi\336er De\336nitions) 144 713.33 T
+(..........................................................................................................) 227.5 713.33 T
+(30) 494 713.33 T
+(7.3) 108 699.33 T
+(Binding V) 144 699.33 T
+(irtual Modi\336ers to Real Modi\336ers) 185.35 699.33 T
+(....................................................................) 322.5 699.33 T
+(31) 494 699.33 T
+(7.4) 108 685.33 T
+(V) 144 685.33 T
+(irtual Modi\336er K) 150.62 685.33 T
+(e) 218.7 685.33 T
+(y Mapping) 222.99 685.33 T
+(..........................................................................................) 267.5 685.33 T
+(31) 494 685.33 T
+(7.4.1) 144 673.33 T
+(Inacti) 180 673.33 T
+(v) 202.52 673.33 T
+(e Modi\336er Sets) 207.37 673.33 T
+(.........................................................................................) 270 673.33 T
+(32) 494 673.33 T
+(7.5) 108 659.33 T
+(Con) 144 659.33 T
+(v) 160.27 659.33 T
+(entions) 165.12 659.33 T
+(.......................................................................................................................) 195 659.33 T
+(32) 494 659.33 T
+(7.6) 108 645.33 T
+(Example) 144 645.33 T
+(.............................................................................................................................) 180 645.33 T
+(32) 494 645.33 T
+2 12 Q
+(8) 72 626 T
+(Indicators) 108 626 T
+(................................................................................................................) 156 626 T
+(34) 492 626 T
+2 10 Q
+(8.1) 108 611.33 T
+(Indicator Names) 144 611.33 T
+(................................................................................................................) 212.5 611.33 T
+(34) 494 611.33 T
+(8.2) 108 597.33 T
+(Indicator Data Structures) 144 597.33 T
+(...................................................................................................) 245 597.33 T
+(34) 494 597.33 T
+(8.2.1) 144 585.33 T
+(XkbIndicatorRec) 180 585.33 T
+(.................................................................................................) 250 585.33 T
+(34) 494 585.33 T
+(8.2.2) 144 573.33 T
+(XkbIndicatorMapRec) 180 573.33 T
+(..........................................................................................) 267.5 573.33 T
+(35) 494 573.33 T
+(8.3) 108 559.33 T
+(Getting Information About Indicators) 144 559.33 T
+(...............................................................................) 295 559.33 T
+(39) 494 559.33 T
+(8.3.1) 144 547.33 T
+(Getting Indicator State) 180 547.33 T
+(........................................................................................) 272.5 547.33 T
+(40) 494 547.33 T
+(8.3.2) 144 535.33 T
+(Getting Indicator Information by Inde) 180 535.33 T
+(x) 331.49 535.33 T
+(..............................................................) 337.5 535.33 T
+(40) 494 535.33 T
+(8.3.3) 144 523.33 T
+(Getting Indicator Information by Name) 180 523.33 T
+(.............................................................) 340 523.33 T
+(40) 494 523.33 T
+(8.4) 108 509.33 T
+(Changing Indicator Maps and State) 144 509.33 T
+(..................................................................................) 287.5 509.33 T
+(41) 494 509.33 T
+(8.4.1) 144 497.33 T
+(Ef) 180 497.33 T
+(fects of Explicit Changes on Indicators) 189.19 497.33 T
+(...........................................................) 345 497.33 T
+(41) 494 497.33 T
+(8.4.2) 144 485.33 T
+(Changing Indicator Maps by Inde) 180 485.33 T
+(x) 314.83 485.33 T
+(.....................................................................) 320 485.33 T
+(42) 494 485.33 T
+(8.4.3) 144 473.33 T
+(Changing Indicator Maps by Name) 180 473.33 T
+(....................................................................) 322.5 473.33 T
+(43) 494 473.33 T
+(8.4.4) 144 461.33 T
+(The XkbIndicatorChangesRec Structure) 180 461.33 T
+(............................................................) 342.5 461.33 T
+(43) 494 461.33 T
+(8.5) 108 447.33 T
+(T) 144 447.33 T
+(racking Changes to Indicator State or Map) 149.76 447.33 T
+(.....................................................................) 320 447.33 T
+(44) 494 447.33 T
+(8.6) 108 433.33 T
+(Allocating and Freeing Indicator Maps) 144 433.33 T
+(.............................................................................) 300 433.33 T
+(45) 494 433.33 T
+2 12 Q
+(9) 72 414 T
+(Bells) 108 414 T
+(.......................................................................................................................) 135 414 T
+(47) 492 414 T
+2 10 Q
+(9.1) 108 399.33 T
+(Bell Names) 144 399.33 T
+(........................................................................................................................) 192.5 399.33 T
+(47) 494 399.33 T
+(9.2) 108 385.33 T
+(Audible Bells) 144 385.33 T
+(.....................................................................................................................) 200 385.33 T
+(48) 494 385.33 T
+(9.3) 108 371.33 T
+(Bell Functions) 144 371.33 T
+(...................................................................................................................) 205 371.33 T
+(48) 494 371.33 T
+(9.3.1) 144 359.33 T
+(Generating Named Bells) 180 359.33 T
+(.....................................................................................) 280 359.33 T
+(49) 494 359.33 T
+(9.3.2) 144 347.33 T
+(Generating Named Bell Ev) 180 347.33 T
+(ents) 288.44 347.33 T
+(...........................................................................) 305 347.33 T
+(50) 494 347.33 T
+(9.3.3) 144 335.33 T
+(F) 180 335.33 T
+(orcing a Serv) 185.41 335.33 T
+(er) 238.58 335.33 T
+(-Generated Bell) 246.15 335.33 T
+(.........................................................................) 310 335.33 T
+(51) 494 335.33 T
+(9.4) 108 321.33 T
+(Detecting Bells) 144 321.33 T
+(..................................................................................................................) 207.5 321.33 T
+(51) 494 321.33 T
+2 12 Q
+(10) 72 302 T
+(K) 108 302 T
+(e) 116.36 302 T
+(yboard Controls) 121.51 302 T
+(.................................................................................................) 201 302 T
+(53) 492 302 T
+2 10 Q
+(10.1) 108 287.33 T
+(Controls that Enable and Disable Other Controls) 144 287.33 T
+(.............................................................) 340 287.33 T
+(54) 494 287.33 T
+(10.1.1) 144 275.33 T
+(The EnabledControls Control) 180 275.33 T
+(.............................................................................) 300 275.33 T
+(54) 494 275.33 T
+(10.1.2) 144 263.33 T
+(The AutoReset Control) 180 263.33 T
+(.......................................................................................) 275 263.33 T
+(55) 494 263.33 T
+(10.2) 108 249.33 T
+(Control for Bell Beha) 144 249.33 T
+(vior) 230.74 249.33 T
+(..................................................................................................) 247.5 249.33 T
+(56) 494 249.33 T
+(10.2.1) 144 237.33 T
+(The AudibleBell Control) 180 237.33 T
+(.....................................................................................) 280 237.33 T
+(56) 494 237.33 T
+(10.3) 108 223.33 T
+(Controls for Repeat K) 144 223.33 T
+(e) 232.35 223.33 T
+(y Beha) 236.64 223.33 T
+(vior) 264.49 223.33 T
+(....................................................................................) 282.5 223.33 T
+(56) 494 223.33 T
+(10.3.1) 144 211.33 T
+(The PerK) 180 211.33 T
+(e) 218.35 211.33 T
+(yRepeat Control) 222.64 211.33 T
+(.................................................................................) 290 211.33 T
+(56) 494 211.33 T
+(10.3.2) 144 199.33 T
+(The RepeatK) 180 199.33 T
+(e) 232.79 199.33 T
+(ys Control) 237.08 199.33 T
+(.....................................................................................) 280 199.33 T
+(56) 494 199.33 T
+(10.3.3) 144 187.33 T
+(The DetectableAutorepeat Control) 180 187.33 T
+(.....................................................................) 320 187.33 T
+(57) 494 187.33 T
+(10.4) 108 173.33 T
+(Controls for K) 144 173.33 T
+(e) 202.08 173.33 T
+(yboard Ov) 206.37 173.33 T
+(erlays \050Ov) 248.71 173.33 T
+(erlay1 and Ov) 290.49 173.33 T
+(erlay2 Controls\051) 346.99 173.33 T
+(................................) 412.5 173.33 T
+(58) 494 173.33 T
+(10.5) 108 159.33 T
+(Controls for Using the Mouse from the K) 144 159.33 T
+(e) 309.57 159.33 T
+(yboard) 313.86 159.33 T
+(............................................................) 342.5 159.33 T
+(59) 494 159.33 T
+(10.5.1) 144 147.33 T
+(The MouseK) 180 147.33 T
+(e) 232.24 147.33 T
+(ys Control) 236.53 147.33 T
+(.....................................................................................) 280 147.33 T
+(59) 494 147.33 T
+(10.5.2) 144 135.33 T
+(The MouseK) 180 135.33 T
+(e) 232.24 135.33 T
+(ysAccel Control) 236.53 135.33 T
+(............................................................................) 302.5 135.33 T
+(59) 494 135.33 T
+(10.6) 108 121.33 T
+(Controls for Better K) 144 121.33 T
+(e) 229.02 121.33 T
+(yboard Access by Ph) 233.31 121.33 T
+(ysically Impaired Persons) 317.41 121.33 T
+(............................) 422.5 121.33 T
+(61) 494 121.33 T
+(10.6.1) 144 109.33 T
+(The AccessXK) 180 109.33 T
+(e) 240.56 109.33 T
+(ys Control) 244.85 109.33 T
+(..................................................................................) 287.5 109.33 T
+(62) 494 109.33 T
+(10.6.2) 144 97.33 T
+(The AccessXT) 180 97.33 T
+(imeout Control) 239.35 97.33 T
+(............................................................................) 302.5 97.33 T
+(62) 494 97.33 T
+(10.6.3) 144 85.33 T
+(The AccessXFeedback Control) 180 85.33 T
+(...........................................................................) 305 85.33 T
+(63) 494 85.33 T
+(10.6.4) 144 73.33 T
+(AccessXNotify Ev) 180 73.33 T
+(ents) 255.11 73.33 T
+(........................................................................................) 272.5 73.33 T
+(64) 494 73.33 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "2" 6
+%%Page: "3" 7
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(T) 509.04 40.62 T
+(OC-3) 515.56 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 10 Q
+(10.6.5) 144 713.33 T
+(Stick) 180 713.33 T
+(yK) 200.41 713.33 T
+(e) 212.38 713.33 T
+(ys, RepeatK) 216.67 713.33 T
+(e) 265.3 713.33 T
+(ys, and MouseK) 269.59 713.33 T
+(e) 334.61 713.33 T
+(ys Ev) 338.9 713.33 T
+(ents) 361.25 713.33 T
+(..............................................) 377.5 713.33 T
+(65) 494 713.33 T
+(10.6.6) 144 701.33 T
+(The Slo) 180 701.33 T
+(wK) 211.14 701.33 T
+(e) 225.33 701.33 T
+(ys Control) 229.62 701.33 T
+(........................................................................................) 272.5 701.33 T
+(65) 494 701.33 T
+(10.6.7) 144 689.33 T
+(The BounceK) 180 689.33 T
+(e) 235.57 689.33 T
+(ys Control) 239.86 689.33 T
+(....................................................................................) 282.5 689.33 T
+(66) 494 689.33 T
+(10.6.8) 144 677.33 T
+(The Stick) 180 677.33 T
+(yK) 218.46 677.33 T
+(e) 230.43 677.33 T
+(ys Control) 234.72 677.33 T
+(......................................................................................) 277.5 677.33 T
+(67) 494 677.33 T
+(10.7) 108 663.33 T
+(Controls for General K) 144 663.33 T
+(e) 236.23 663.33 T
+(yboard Mapping) 240.52 663.33 T
+(..........................................................................) 307.5 663.33 T
+(68) 494 663.33 T
+(10.7.1) 144 651.33 T
+(The GroupsWrap Control) 180 651.33 T
+(...................................................................................) 285 651.33 T
+(69) 494 651.33 T
+(10.7.2) 144 639.33 T
+(The IgnoreLockMods Control) 180 639.33 T
+(............................................................................) 302.5 639.33 T
+(69) 494 639.33 T
+(10.7.3) 144 627.33 T
+(The IgnoreGroupLock Control) 180 627.33 T
+(...........................................................................) 305 627.33 T
+(70) 494 627.33 T
+(10.7.4) 144 615.33 T
+(The InternalMods Control) 180 615.33 T
+(...................................................................................) 285 615.33 T
+(70) 494 615.33 T
+(10.8) 108 601.33 T
+(The XkbControlsRec Structure) 144 601.33 T
+(.........................................................................................) 270 601.33 T
+(71) 494 601.33 T
+(10.9) 108 587.33 T
+(Querying Controls) 144 587.33 T
+(.............................................................................................................) 220 587.33 T
+(77) 494 587.33 T
+(10.10) 108 573.33 T
+(Changing Controls) 144 573.33 T
+(.............................................................................................................) 220 573.33 T
+(77) 494 573.33 T
+(10.10.1) 144 561.33 T
+(The XkbControlsChangesRec Structure) 180 561.33 T
+(.............................................................) 340 561.33 T
+(78) 494 561.33 T
+(10.11) 108 547.33 T
+(T) 144 547.33 T
+(racking Changes to K) 149.76 547.33 T
+(e) 236.44 547.33 T
+(yboard Controls) 240.73 547.33 T
+(..........................................................................) 307.5 547.33 T
+(79) 494 547.33 T
+(10.12) 108 533.33 T
+(Allocating and Freeing an XkbControlsRec) 144 533.33 T
+(.....................................................................) 320 533.33 T
+(80) 494 533.33 T
+(10.13) 108 519.33 T
+(The Miscellaneous Per) 144 519.33 T
+(-client Controls) 235.45 519.33 T
+(.............................................................................) 300 519.33 T
+(81) 494 519.33 T
+2 12 Q
+(11) 72 500 T
+(X Library Controls) 108 500 T
+(.................................................................................................) 201 500 T
+(82) 492 500 T
+2 10 Q
+(11.1) 108 485.33 T
+(Controls Af) 144 485.33 T
+(fecting K) 191.25 485.33 T
+(e) 228.49 485.33 T
+(ycode-to-String T) 232.78 485.33 T
+(ranslation) 303.81 485.33 T
+(...........................................................) 345 485.33 T
+(82) 494 485.33 T
+(11.1.1) 144 473.33 T
+(F) 180 473.33 T
+(orceLatin1Lookup) 185.41 473.33 T
+(.............................................................................................) 260 473.33 T
+(82) 494 473.33 T
+(11.1.2) 144 461.33 T
+(ConsumeLookupMods) 180 461.33 T
+(........................................................................................) 272.5 461.33 T
+(82) 494 461.33 T
+(11.1.3) 144 449.33 T
+(Al) 180 449.33 T
+(w) 189.9 449.33 T
+(aysConsumeShiftAndLock) 197.02 449.33 T
+(..........................................................................) 307.5 449.33 T
+(83) 494 449.33 T
+(11.2) 108 435.33 T
+(Controls Af) 144 435.33 T
+(fecting Compose Processing) 191.25 435.33 T
+(..........................................................................) 307.5 435.33 T
+(83) 494 435.33 T
+(11.2.1) 144 423.33 T
+(ConsumeK) 180 423.33 T
+(e) 224.75 423.33 T
+(ysOnComposeF) 229.04 423.33 T
+(ail) 293.34 423.33 T
+(...........................................................................) 305 423.33 T
+(83) 494 423.33 T
+(11.2.2) 144 411.33 T
+(ComposeLED) 180 411.33 T
+(......................................................................................................) 237.5 411.33 T
+(84) 494 411.33 T
+(11.2.3) 144 399.33 T
+(BeepOnComposeF) 180 399.33 T
+(ail) 255.96 399.33 T
+(..........................................................................................) 267.5 399.33 T
+(84) 494 399.33 T
+(11.3) 108 385.33 T
+(Controls Ef) 144 385.33 T
+(fecting Ev) 190.14 385.33 T
+(ent Deli) 231.37 385.33 T
+(v) 263.06 385.33 T
+(ery) 267.91 385.33 T
+(....................................................................................) 282.5 385.33 T
+(84) 494 385.33 T
+(11.3.1) 144 373.33 T
+(IgnoreNe) 180 373.33 T
+(wK) 217.51 373.33 T
+(e) 231.7 373.33 T
+(yboards) 235.99 373.33 T
+(.........................................................................................) 270 373.33 T
+(84) 494 373.33 T
+(11.4) 108 359.33 T
+(Manipulating the Library Controls) 144 359.33 T
+(....................................................................................) 282.5 359.33 T
+(85) 494 359.33 T
+(11.4.1) 144 347.33 T
+(Determining Which Library Controls are Implemented) 180 347.33 T
+(.....................................) 400 347.33 T
+(85) 494 347.33 T
+(11.4.2) 144 335.33 T
+(Determining the State of the Library Controls) 180 335.33 T
+(...................................................) 365 335.33 T
+(85) 494 335.33 T
+(11.4.3) 144 323.33 T
+(Changing the State of the Library Controls) 180 323.33 T
+(........................................................) 352.5 323.33 T
+(85) 494 323.33 T
+2 12 Q
+(12) 72 304 T
+(Interpreting K) 108 304 T
+(e) 176.02 304 T
+(y Ev) 181.16 304 T
+(ents) 203.32 304 T
+(.........................................................................................) 225 304 T
+(87) 492 304 T
+2 10 Q
+(12.1) 108 289.33 T
+(Ef) 144 289.33 T
+(fects of Xkb on the Core X Library) 153.19 289.33 T
+(...............................................................................) 295 289.33 T
+(87) 494 289.33 T
+(12.1.1) 144 277.33 T
+(Ef) 180 277.33 T
+(fects of Xkb on Ev) 189.19 277.33 T
+(ent State) 264.58 277.33 T
+(.............................................................................) 300 277.33 T
+(87) 494 277.33 T
+(12.1.2) 144 265.33 T
+(Ef) 180 265.33 T
+(fects of Xkb on MappingNotify Ev) 189.19 265.33 T
+(ents) 329.3 265.33 T
+(..........................................................) 347.5 265.33 T
+(87) 494 265.33 T
+(12.1.3) 144 253.33 T
+(X Library Functions Af) 180 253.33 T
+(fected by Xkb) 274.46 253.33 T
+(................................................................) 332.5 253.33 T
+(88) 494 253.33 T
+(12.2) 108 239.33 T
+(Xkb Ev) 144 239.33 T
+(ent and K) 174.68 239.33 T
+(e) 213.31 239.33 T
+(ymap Functions) 217.6 239.33 T
+(....................................................................................) 282.5 239.33 T
+(89) 494 239.33 T
+2 12 Q
+(13) 72 220 T
+(K) 108 220 T
+(e) 116.36 220 T
+(yboard Geometry) 121.51 220 T
+(...............................................................................................) 207 220 T
+(92) 492 220 T
+2 10 Q
+(13.1) 108 205.33 T
+(Shapes and Outlines) 144 205.33 T
+(..........................................................................................................) 227.5 205.33 T
+(94) 494 205.33 T
+(13.2) 108 191.33 T
+(Sections) 144 191.33 T
+(.............................................................................................................................) 180 191.33 T
+(95) 494 191.33 T
+(13.3) 108 177.33 T
+(Ro) 144 177.33 T
+(ws and K) 155.42 177.33 T
+(e) 192.94 177.33 T
+(ys) 197.23 177.33 T
+(..................................................................................................................) 207.5 177.33 T
+(95) 494 177.33 T
+(13.4) 108 163.33 T
+(Doodads) 144 163.33 T
+(.............................................................................................................................) 180 163.33 T
+(96) 494 163.33 T
+(13.5) 108 149.33 T
+(Ov) 144 149.33 T
+(erlay Ro) 156.07 149.33 T
+(ws and Ov) 189.98 149.33 T
+(erlay K) 232.6 149.33 T
+(e) 262.06 149.33 T
+(ys) 266.35 149.33 T
+(......................................................................................) 277.5 149.33 T
+(96) 494 149.33 T
+(13.6) 108 135.33 T
+(Dra) 144 135.33 T
+(wing a K) 158.84 135.33 T
+(e) 195.25 135.33 T
+(yboard Representation) 199.54 135.33 T
+(.................................................................................) 290 135.33 T
+(97) 494 135.33 T
+(13.7) 108 121.33 T
+(Geometry Data Structures) 144 121.33 T
+(.................................................................................................) 250 121.33 T
+(98) 494 121.33 T
+(13.8) 108 107.33 T
+(Getting K) 144 107.33 T
+(e) 183.47 107.33 T
+(yboard Geometry From the Serv) 187.76 107.33 T
+(er) 317.59 107.33 T
+(................................................................) 327.5 107.33 T
+(104) 489 107.33 T
+(13.9) 108 93.33 T
+(Using K) 144 93.33 T
+(e) 177.36 93.33 T
+(yboard Geometry) 181.65 93.33 T
+(..............................................................................................) 252.5 93.33 T
+(105) 489 93.33 T
+(13.10) 108 79.33 T
+(Adding Elements to a K) 144 79.33 T
+(e) 240.41 79.33 T
+(yboard Geometry) 244.7 79.33 T
+(.....................................................................) 315 79.33 T
+(106) 489 79.33 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "3" 7
+%%Page: "4" 8
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(T) 509.04 40.62 T
+(OC-4) 515.56 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 10 Q
+(13.11) 108 713.33 T
+(Allocating and Freeing Geometry Components) 144 713.33 T
+(..............................................................) 332.5 713.33 T
+(110) 489 713.33 T
+2 12 Q
+(14) 72 694 T
+(Xkb K) 108 694 T
+(e) 140.03 694 T
+(yboard Mapping) 145.18 694 T
+(.......................................................................................) 225 694 T
+(116) 486 694 T
+2 10 Q
+(14.1) 108 679.33 T
+(Notation and T) 144 679.33 T
+(erminology) 203.85 679.33 T
+(...............................................................................................) 250 679.33 T
+(116) 489 679.33 T
+(14.1.1) 144 667.33 T
+(Core Implementation) 180 667.33 T
+(........................................................................................) 267.5 667.33 T
+(117) 489 667.33 T
+(14.1.2) 144 655.33 T
+(Xkb Implementation) 180 655.33 T
+(.........................................................................................) 265 655.33 T
+(117) 489 655.33 T
+(14.2) 108 641.33 T
+(Getting Map Components from the Serv) 144 641.33 T
+(er) 305.23 641.33 T
+(.....................................................................) 315 641.33 T
+(118) 489 641.33 T
+(14.3) 108 627.33 T
+(Changing Map Components in the Serv) 144 627.33 T
+(er) 302.46 627.33 T
+(......................................................................) 312.5 627.33 T
+(120) 489 627.33 T
+(14.3.1) 144 615.33 T
+(The XkbMapChangesRec Structure) 180 615.33 T
+(.................................................................) 325 615.33 T
+(120) 489 615.33 T
+(14.4) 108 601.33 T
+(T) 144 601.33 T
+(racking Changes to Map Components) 149.76 601.33 T
+(..........................................................................) 302.5 601.33 T
+(122) 489 601.33 T
+(14.5) 108 587.33 T
+(Allocating and Freeing Client and Serv) 144 587.33 T
+(er Maps) 300.78 587.33 T
+(.............................................................) 335 587.33 T
+(123) 489 587.33 T
+(14.5.1) 144 575.33 T
+(Allocating an Empty Client Map) 180 575.33 T
+(......................................................................) 312.5 575.33 T
+(123) 489 575.33 T
+(14.5.2) 144 563.33 T
+(Freeing a Client Map) 180 563.33 T
+(........................................................................................) 267.5 563.33 T
+(124) 489 563.33 T
+(14.5.3) 144 551.33 T
+(Allocating an Empty Serv) 180 551.33 T
+(er Map) 284.01 551.33 T
+(.....................................................................) 315 551.33 T
+(124) 489 551.33 T
+(14.5.4) 144 539.33 T
+(Freeing a Serv) 180 539.33 T
+(er Map) 238.17 539.33 T
+(........................................................................................) 267.5 539.33 T
+(125) 489 539.33 T
+2 12 Q
+(15) 72 520 T
+(Xkb Client K) 108 520 T
+(e) 172.37 520 T
+(yboard Mapping) 177.52 520 T
+(............................................................................) 258 520 T
+(126) 486 520 T
+2 10 Q
+(15.1) 108 505.33 T
+(The XkbClientMapRec Structure) 144 505.33 T
+(....................................................................................) 277.5 505.33 T
+(127) 489 505.33 T
+(15.2) 108 491.33 T
+(K) 144 491.33 T
+(e) 150.97 491.33 T
+(y T) 155.26 491.33 T
+(ypes) 168.07 491.33 T
+(........................................................................................................................) 187.5 491.33 T
+(127) 489 491.33 T
+(15.2.1) 144 479.33 T
+(The Canonical K) 180 479.33 T
+(e) 248.07 479.33 T
+(y T) 252.36 479.33 T
+(ypes) 265.17 479.33 T
+(.................................................................................) 285 479.33 T
+(129) 489 479.33 T
+(15.2.2) 144 467.33 T
+(Getting K) 180 467.33 T
+(e) 219.47 467.33 T
+(y T) 223.76 467.33 T
+(ypes from the Serv) 236.57 467.33 T
+(er) 312.24 467.33 T
+(..................................................................) 322.5 467.33 T
+(131) 489 467.33 T
+(15.2.3) 144 455.33 T
+(Changing the Number of Le) 180 455.33 T
+(v) 292.51 455.33 T
+(els in a K) 297.36 455.33 T
+(e) 335.16 455.33 T
+(y T) 339.45 455.33 T
+(ype) 352.26 455.33 T
+(................................................) 367.5 455.33 T
+(132) 489 455.33 T
+(15.2.4) 144 443.33 T
+(Cop) 180 443.33 T
+(ying K) 196.57 443.33 T
+(e) 223.82 443.33 T
+(y T) 228.11 443.33 T
+(ypes) 240.92 443.33 T
+(...........................................................................................) 260 443.33 T
+(132) 489 443.33 T
+(15.3) 108 429.33 T
+(K) 144 429.33 T
+(e) 150.97 429.33 T
+(y Symbol Map) 155.26 429.33 T
+(.............................................................................................................) 215 429.33 T
+(133) 489 429.33 T
+(15.3.1) 144 417.33 T
+(Per) 180 417.33 T
+(-K) 193.13 417.33 T
+(e) 203.43 417.33 T
+(y K) 207.72 417.33 T
+(e) 222.19 417.33 T
+(y T) 226.48 417.33 T
+(ype Indices) 239.29 417.33 T
+(................................................................................) 287.5 417.33 T
+(133) 489 417.33 T
+(15.3.2) 144 405.33 T
+(Per) 180 405.33 T
+(-K) 193.13 405.33 T
+(e) 203.43 405.33 T
+(y Group Information) 207.72 405.33 T
+(..............................................................................) 292.5 405.33 T
+(134) 489 405.33 T
+(15.3.3) 144 393.33 T
+(K) 180 393.33 T
+(e) 186.97 393.33 T
+(y W) 191.26 393.33 T
+(idth) 207.8 393.33 T
+(.........................................................................................................) 225 393.33 T
+(135) 489 393.33 T
+(15.3.4) 144 381.33 T
+(Of) 180 381.33 T
+(fset in to the Symbol Map) 190.3 381.33 T
+(.............................................................................) 295 381.33 T
+(135) 489 381.33 T
+(15.3.5) 144 369.33 T
+(Getting the Symbol Map for K) 180 369.33 T
+(e) 302.8 369.33 T
+(ys from the Serv) 307.09 369.33 T
+(er) 373.32 369.33 T
+(..........................................) 382.5 369.33 T
+(136) 489 369.33 T
+(15.3.6) 144 357.33 T
+(Changing the Number of Groups and T) 180 357.33 T
+(ypes Bound to a K) 336.4 357.33 T
+(e) 410.59 357.33 T
+(y) 414.88 357.33 T
+(...........................) 420 357.33 T
+(137) 489 357.33 T
+(15.3.7) 144 345.33 T
+(Changing the Number of Symbols Bound to a K) 180 345.33 T
+(e) 373.08 345.33 T
+(y) 377.37 345.33 T
+(..........................................) 382.5 345.33 T
+(138) 489 345.33 T
+(15.4) 108 331.33 T
+(The Per) 144 331.33 T
+(-K) 175.18 331.33 T
+(e) 185.48 331.33 T
+(y Modi\336er Map) 189.77 331.33 T
+(.............................................................................................) 255 331.33 T
+(138) 489 331.33 T
+(15.4.1) 144 319.33 T
+(Getting the Per) 180 319.33 T
+(-K) 240.35 319.33 T
+(e) 250.65 319.33 T
+(y Modi\336er Map from the Serv) 254.94 319.33 T
+(er) 375.61 319.33 T
+(.........................................) 385 319.33 T
+(139) 489 319.33 T
+2 12 Q
+(16) 72 300 T
+(Xkb Serv) 108 300 T
+(er K) 153.48 300 T
+(e) 174.17 300 T
+(yboard Mapping) 179.32 300 T
+(...........................................................................) 261 300 T
+(140) 486 300 T
+2 10 Q
+(16.1) 108 285.33 T
+(K) 144 285.33 T
+(e) 150.97 285.33 T
+(y Actions) 155.26 285.33 T
+(.....................................................................................................................) 195 285.33 T
+(141) 489 285.33 T
+(16.1.1) 144 273.33 T
+(The XkbAction Structure) 180 273.33 T
+(..................................................................................) 282.5 273.33 T
+(142) 489 273.33 T
+(16.1.2) 144 261.33 T
+(The XkbAn) 180 261.33 T
+(yAction Structure) 227.34 261.33 T
+(...........................................................................) 300 261.33 T
+(143) 489 261.33 T
+(16.1.3) 144 249.33 T
+(Actions for Changing Modi\336ers\325 State) 180 249.33 T
+(.............................................................) 335 249.33 T
+(143) 489 249.33 T
+(16.1.4) 144 237.33 T
+(Actions for Changing Group State) 180 237.33 T
+(....................................................................) 317.5 237.33 T
+(145) 489 237.33 T
+(16.1.5) 144 225.33 T
+(Actions for Mo) 180 225.33 T
+(ving the Pointer) 241.51 225.33 T
+(........................................................................) 307.5 225.33 T
+(147) 489 225.33 T
+(16.1.6) 144 213.33 T
+(Actions for Simulating Pointer Button Press and Release) 180 213.33 T
+(................................) 407.5 213.33 T
+(148) 489 213.33 T
+(16.1.7) 144 201.33 T
+(Actions for Changing the Pointer Button Simulated) 180 201.33 T
+(........................................) 387.5 201.33 T
+(149) 489 201.33 T
+(16.1.8) 144 189.33 T
+(Actions for Locking Modi\336ers and Group) 180 189.33 T
+(........................................................) 347.5 189.33 T
+(150) 489 189.33 T
+(16.1.9) 144 177.33 T
+(Actions for Changing the Acti) 180 177.33 T
+(v) 300.85 177.33 T
+(e Screen) 305.7 177.33 T
+(...........................................................) 340 177.33 T
+(153) 489 177.33 T
+(16.1.10) 144 165.33 T
+(Actions for Changing Boolean Controls State) 180 165.33 T
+(..................................................) 362.5 165.33 T
+(154) 489 165.33 T
+(16.1.11) 144 153.33 T
+(Actions for Generating Messages) 180 153.33 T
+(.....................................................................) 315 153.33 T
+(155) 489 153.33 T
+(16.1.12) 144 141.33 T
+(Actions for Generating a Dif) 180 141.33 T
+(ferent K) 294.72 141.33 T
+(e) 327.51 141.33 T
+(ycode) 331.8 141.33 T
+(....................................................) 357.5 141.33 T
+(156) 489 141.33 T
+(16.1.13) 144 129.33 T
+(Actions for Generating De) 180 129.33 T
+(viceButtonPress and De) 286.11 129.33 T
+(viceButtonRelease) 381.96 129.33 T
+(............) 457.5 129.33 T
+(158) 489 129.33 T
+(16.1.14) 144 117.33 T
+(Actions for Simulating Ev) 180 117.33 T
+(ents from De) 285.13 117.33 T
+(vice V) 337.09 117.33 T
+(aluators) 362.36 117.33 T
+(.....................................) 395 117.33 T
+(159) 489 117.33 T
+(16.1.15) 144 105.33 T
+(Obtaining K) 180 105.33 T
+(e) 229.47 105.33 T
+(y Actions for K) 233.76 105.33 T
+(e) 296 105.33 T
+(ys from the Serv) 300.29 105.33 T
+(er) 366.52 105.33 T
+(.............................................) 375 105.33 T
+(160) 489 105.33 T
+(16.1.16) 144 93.33 T
+(Changing the Number of Actions Bound to a K) 180 93.33 T
+(e) 369.18 93.33 T
+(y) 373.47 93.33 T
+(...........................................) 380 93.33 T
+(160) 489 93.33 T
+(16.2) 108 79.33 T
+(K) 144 79.33 T
+(e) 150.97 79.33 T
+(y Beha) 155.26 79.33 T
+(vior) 183.11 79.33 T
+(...................................................................................................................) 200 79.33 T
+(161) 489 79.33 T
+(16.2.1) 144 67.33 T
+(Radio Groups) 180 67.33 T
+(....................................................................................................) 237.5 67.33 T
+(161) 489 67.33 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "4" 8
+%%Page: "5" 9
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(T) 509.04 40.62 T
+(OC-5) 515.56 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 10 Q
+(16.2.2) 144 713.33 T
+(The XkbBeha) 180 713.33 T
+(vior Structure) 235.62 713.33 T
+(..............................................................................) 292.5 713.33 T
+(161) 489 713.33 T
+(16.2.3) 144 701.33 T
+(Obtaining K) 180 701.33 T
+(e) 229.47 701.33 T
+(y Beha) 233.76 701.33 T
+(viors for K) 261.61 701.33 T
+(e) 305.24 701.33 T
+(ys from the Serv) 309.53 701.33 T
+(er) 375.76 701.33 T
+(.........................................) 385 701.33 T
+(162) 489 701.33 T
+(16.3) 108 687.33 T
+(Explicit Components\321A) 144 687.33 T
+(v) 245.21 687.33 T
+(oiding Automatic Remapping by the Serv) 250.01 687.33 T
+(er) 416.8 687.33 T
+(.........................) 425 687.33 T
+(163) 489 687.33 T
+(16.3.1) 144 675.33 T
+(Obtaining Explicit Components for K) 180 675.33 T
+(e) 330.86 675.33 T
+(ys from the Serv) 335.15 675.33 T
+(er) 401.38 675.33 T
+(...............................) 410 675.33 T
+(163) 489 675.33 T
+(16.4) 108 661.33 T
+(V) 144 661.33 T
+(irtual Modi\336er Mapping) 150.62 661.33 T
+(...............................................................................................) 250 661.33 T
+(164) 489 661.33 T
+(16.4.1) 144 649.33 T
+(Obtaining V) 180 649.33 T
+(irtual Modi\336er Bindings from the Serv) 229.12 649.33 T
+(er) 383.69 649.33 T
+(......................................) 392.5 649.33 T
+(165) 489 649.33 T
+(16.4.2) 144 637.33 T
+(Obtaining Per) 180 637.33 T
+(-K) 235.63 637.33 T
+(e) 245.93 637.33 T
+(y V) 250.22 637.33 T
+(irtual Modi\336er Mappings from the Serv) 264.34 637.33 T
+(er) 422.79 637.33 T
+(......................) 432.5 637.33 T
+(166) 489 637.33 T
+2 12 Q
+(17) 72 618 T
+(The Xkb Compatibility Map) 108 618 T
+(................................................................................) 246 618 T
+(167) 486 618 T
+2 10 Q
+(17.1) 108 603.33 T
+(The XkbCompatMap Structure) 144 603.33 T
+(.......................................................................................) 270 603.33 T
+(169) 489 603.33 T
+(17.1.1) 144 591.33 T
+(Xkb State to Core Protocol State T) 180 591.33 T
+(ransformation) 319.09 591.33 T
+(............................................) 377.5 591.33 T
+(169) 489 591.33 T
+(17.1.2) 144 579.33 T
+(Core K) 180 579.33 T
+(e) 208.91 579.33 T
+(yboard Mapping to Xkb K) 213.2 579.33 T
+(e) 319.05 579.33 T
+(yboard Mapping T) 323.34 579.33 T
+(ransformation) 397.98 579.33 T
+(.............) 455 579.33 T
+(170) 489 579.33 T
+(17.1.3) 144 567.33 T
+(Xkb K) 180 567.33 T
+(e) 206.69 567.33 T
+(yboard Mapping to Core K) 210.98 567.33 T
+(e) 319.05 567.33 T
+(yboard Mapping T) 323.34 567.33 T
+(ransformations) 397.98 567.33 T
+(...........) 460 567.33 T
+(173) 489 567.33 T
+(17.2) 108 553.33 T
+(Getting Compatibility Map Components From the Serv) 144 553.33 T
+(er) 365.53 553.33 T
+(.............................................) 375 553.33 T
+(174) 489 553.33 T
+(17.3) 108 539.33 T
+(Using the Compatibility Map) 144 539.33 T
+(..........................................................................................) 262.5 539.33 T
+(175) 489 539.33 T
+(17.4) 108 525.33 T
+(Changing the Serv) 144 525.33 T
+(er\325) 218.29 525.33 T
+(s Compatibility Map) 228.84 525.33 T
+(......................................................................) 312.5 525.33 T
+(177) 489 525.33 T
+(17.5) 108 511.33 T
+(T) 144 511.33 T
+(racking Changes to the Compatibility Map) 149.76 511.33 T
+(..................................................................) 322.5 511.33 T
+(178) 489 511.33 T
+(17.6) 108 497.33 T
+(Allocating and Freeing the Compatibility Map) 144 497.33 T
+(...............................................................) 330 497.33 T
+(179) 489 497.33 T
+2 12 Q
+(18) 72 478 T
+(Symbolic Names) 108 478 T
+(..................................................................................................) 192 478 T
+(180) 486 478 T
+2 10 Q
+(18.1) 108 463.33 T
+(The XkbNamesRec Structure) 144 463.33 T
+(..........................................................................................) 262.5 463.33 T
+(180) 489 463.33 T
+(18.2) 108 449.33 T
+(Symbolic Names Masks) 144 449.33 T
+(..................................................................................................) 242.5 449.33 T
+(182) 489 449.33 T
+(18.3) 108 435.33 T
+(Getting Symbolic Names From the Serv) 144 435.33 T
+(er) 304.68 435.33 T
+(......................................................................) 312.5 435.33 T
+(183) 489 435.33 T
+(18.4) 108 421.33 T
+(Changing Symbolic Names on the Serv) 144 421.33 T
+(er) 301.9 421.33 T
+(.......................................................................) 310 421.33 T
+(183) 489 421.33 T
+(18.5) 108 407.33 T
+(T) 144 407.33 T
+(racking Name Changes) 149.76 407.33 T
+(.................................................................................................) 245 407.33 T
+(185) 489 407.33 T
+(18.6) 108 393.33 T
+(Allocating and Freeing Symbolic Names) 144 393.33 T
+(........................................................................) 307.5 393.33 T
+(186) 489 393.33 T
+2 12 Q
+(19) 72 374 T
+(Replacing a K) 108 374 T
+(e) 176.35 374 T
+(yboard \322On the Fly\323) 181.5 374 T
+(....................................................................) 282 374 T
+(187) 486 374 T
+(20) 72 354 T
+(Serv) 108 354 T
+(er Database of K) 129.82 354 T
+(e) 210.48 354 T
+(yboard Components) 215.63 354 T
+(.........................................................) 315 354 T
+(190) 486 354 T
+2 10 Q
+(20.1) 108 339.33 T
+(Component Names) 144 339.33 T
+(..........................................................................................................) 222.5 339.33 T
+(191) 489 339.33 T
+(20.2) 108 325.33 T
+(Listing the Kno) 144 325.33 T
+(wn K) 206.53 325.33 T
+(e) 228.22 325.33 T
+(yboard Components) 232.51 325.33 T
+(.....................................................................) 315 325.33 T
+(191) 489 325.33 T
+(20.3) 108 311.33 T
+(Component Hints) 144 311.33 T
+(.............................................................................................................) 215 311.33 T
+(192) 489 311.33 T
+(20.4) 108 297.33 T
+(Building a K) 144 297.33 T
+(e) 195.42 297.33 T
+(yboard Description Using the Serv) 199.71 297.33 T
+(er Database) 338.43 297.33 T
+(........................................) 387.5 297.33 T
+(193) 489 297.33 T
+2 12 Q
+(21) 72 278 T
+(Attaching Xkb Actions to X Input Extension De) 108 278 T
+(vices) 339.35 278 T
+(........................................) 366 278 T
+(198) 486 278 T
+2 10 Q
+(21.1) 108 263.33 T
+(XkbDe) 144 263.33 T
+(viceInfoRec) 172.63 263.33 T
+(..........................................................................................................) 222.5 263.33 T
+(199) 489 263.33 T
+(21.2) 108 249.33 T
+(Querying Xkb Features for Non-K) 144 249.33 T
+(e) 282.05 249.33 T
+(yClass Input Extension De) 286.34 249.33 T
+(vices) 393.03 249.33 T
+(.............................) 415 249.33 T
+(200) 489 249.33 T
+(21.3) 108 235.33 T
+(Allocating, Initializing, and Freeing the XkbDe) 144 235.33 T
+(viceInfoRec Structure) 333.45 235.33 T
+(..........................) 422.5 235.33 T
+(203) 489 235.33 T
+(21.4) 108 221.33 T
+(Setting Xkb Features for Non-K) 144 221.33 T
+(e) 272.62 221.33 T
+(yClass Input Extension De) 276.91 221.33 T
+(vices) 383.6 221.33 T
+(.................................) 405 221.33 T
+(204) 489 221.33 T
+(21.5) 108 207.33 T
+(XkbExtensionDe) 144 207.33 T
+(viceNotify Ev) 212.63 207.33 T
+(ent) 268.86 207.33 T
+(..................................................................................) 282.5 207.33 T
+(206) 489 207.33 T
+(21.6) 108 193.33 T
+(T) 144 193.33 T
+(racking Changes to Extension De) 149.76 193.33 T
+(vices) 283.38 193.33 T
+(.........................................................................) 305 193.33 T
+(207) 489 193.33 T
+2 12 Q
+(22) 72 174 T
+(Deb) 108 174 T
+(ugging Aids) 127.75 174 T
+(...................................................................................................) 189 174 T
+(210) 486 174 T
+(T) 72 154 T
+(able 22.1) 78.37 154 T
+(Glossary) 122.36 154 T
+(..........................................................................................................) 168 154 T
+(211) 486 154 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "5" 9
+%%Page: "12" 10
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(LOF-12) 504.56 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 12 Q
+(Figure 1.1) 72 712 T
+(Ov) 144 712 T
+(erall Xkb Structure) 158.48 712 T
+(..................................................................................) 252 712 T
+(2) 498 712 T
+(Figure 5.1) 72 696 T
+(Xkb State) 144 696 T
+(....................................................................................................) 192 696 T
+(19) 492 696 T
+(Figure 10.1) 72 680 T
+(MouseK) 144 680 T
+(e) 185.03 680 T
+(ys Acceleration) 190.18 680 T
+(...........................................................................) 267 680 T
+(61) 492 680 T
+(Figure 131) 72 664 T
+(Rotated K) 144 664 T
+(e) 192.7 664 T
+(yboard Sections) 197.84 664 T
+(........................................................................) 276 664 T
+(92) 492 664 T
+(Figure 13.2) 72 648 T
+(K) 144 648 T
+(e) 152.36 648 T
+(yboard with F) 157.51 648 T
+(our Sections) 224.66 648 T
+(.....................................................................) 285 648 T
+(94) 492 648 T
+(Figure 13.3) 72 632 T
+(Ro) 144 632 T
+(ws in a Section) 157.7 632 T
+(.......................................................................................) 231 632 T
+(95) 492 632 T
+(Figure 13.4) 72 616 T
+(Xkb Geometry Data Structures) 144 616 T
+(..................................................................) 294 616 T
+(98) 492 616 T
+(Figure 13.5) 72 600 T
+(Xkb Geometry Data Structures \050Doodads\051) 144 600 T
+(................................................) 348 600 T
+(99) 492 600 T
+(Figure 13.6) 72 584 T
+(Xkb Geometry Data Structures \050Ov) 144 584 T
+(erlays\051) 314.45 584 T
+(..............................................) 348 584 T
+(100) 486 584 T
+(Figure 13.7) 72 568 T
+(K) 144 568 T
+(e) 152.36 568 T
+(y Surf) 157.51 568 T
+(ace, Shape Outlines, and Bounding Box) 187.06 568 T
+(...................................) 381 568 T
+(105) 486 568 T
+(Figure 14.1) 72 552 T
+(Shift Le) 144 552 T
+(v) 182.7 552 T
+(els and Groups) 188.52 552 T
+(...........................................................................) 261 552 T
+(117) 486 552 T
+(Figure 15.1) 72 536 T
+(Xkb Client Map) 144 536 T
+(........................................................................................) 222 536 T
+(126) 486 536 T
+(Figure 16.1) 72 520 T
+(Serv) 144 520 T
+(er Map Relationships) 165.82 520 T
+(........................................................................) 270 520 T
+(140) 486 520 T
+(Figure 16.2) 72 504 T
+(V) 144 504 T
+(irtual Modi\336er Relationships) 151.94 504 T
+(.................................................................) 291 504 T
+(165) 486 504 T
+(Figure 17.1) 72 488 T
+(Serv) 144 488 T
+(er Interaction with T) 165.82 488 T
+(ypes of Clients) 263.83 488 T
+(..................................................) 336 488 T
+(167) 486 488 T
+(Figure 17.2) 72 472 T
+(Serv) 144 472 T
+(er Deri) 165.82 472 T
+(v) 199.16 472 T
+(ation of State and K) 204.86 472 T
+(e) 300.55 472 T
+(yboard Mapping Components) 305.7 472 T
+(............) 450 472 T
+(168) 486 472 T
+(Figure 17.3) 72 456 T
+(Xkb Compatibility Data Structures) 144 456 T
+(..........................................................) 312 456 T
+(169) 486 456 T
+(Figure 20.1) 72 440 T
+(Building a Ne) 144 440 T
+(w K) 211.03 440 T
+(e) 231.06 440 T
+(yboard Description from the Serv) 236.21 440 T
+(er Database) 397.33 440 T
+(..........) 456 440 T
+(196) 486 440 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "12" 10
+%%Page: "1" 11
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(LO) 510.9 40.62 T
+(T) 525.13 40.62 T
+(-1) 530.84 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 12 Q
+(T) 72 712 T
+(able 1.1) 78.37 712 T
+(Function Error Returns Due to Extension Problems) 135 712 T
+(.............................................) 381 712 T
+(4) 516 712 T
+(T) 72 696 T
+(able 2.1) 78.37 696 T
+(Xkb Protocol Errors) 135 696 T
+(..............................................................................................) 234 696 T
+(9) 516 696 T
+(T) 72 680 T
+(able 2.2) 78.37 680 T
+(BadK) 135 680 T
+(e) 162.7 680 T
+(yboard Protocol Error resource_id V) 167.84 680 T
+(alues) 342.47 680 T
+(.................................................) 369 680 T
+(9) 516 680 T
+(T) 72 664 T
+(able 4.1) 78.37 664 T
+(Xkb Ev) 135 664 T
+(ent T) 171.82 664 T
+(ypes) 195.85 664 T
+(.................................................................................................) 219 664 T
+(14) 510 664 T
+(T) 72 648 T
+(able 4.2) 78.37 648 T
+(XkbSelectEv) 135 648 T
+(ents Mask Constants) 198.14 648 T
+(......................................................................) 300 648 T
+(17) 510 648 T
+(T) 72 632 T
+(able 5.1) 78.37 632 T
+(Real Modi\336er Masks) 135 632 T
+(...........................................................................................) 237 632 T
+(22) 510 632 T
+(T) 72 616 T
+(able 5.2) 78.37 616 T
+(Symbolic Group Names) 135 616 T
+(......................................................................................) 252 616 T
+(23) 510 616 T
+(T) 72 600 T
+(able 5.3) 78.37 600 T
+(XkbStateNotify Ev) 135 600 T
+(ent Detail Masks) 227.15 600 T
+(...................................................................) 309 600 T
+(24) 510 600 T
+(T) 72 584 T
+(able 6.1) 78.37 584 T
+(XkbDescRec Component References) 135 584 T
+(.................................................................) 315 584 T
+(27) 510 584 T
+(T) 72 568 T
+(able 6.2) 78.37 568 T
+(Mask Bits for XkbDescRec) 135 568 T
+(................................................................................) 270 568 T
+(28) 510 568 T
+(T) 72 552 T
+(able 8.1) 78.37 552 T
+(XkbIndicatorMapRec \337ags Field) 135 552 T
+(........................................................................) 294 552 T
+(35) 510 552 T
+(T) 72 536 T
+(able 8.2) 78.37 536 T
+(XkbIndicatorMapRec which_groups and groups, K) 135 536 T
+(e) 380.99 536 T
+(yboard Dri) 386.14 536 T
+(v) 438.16 536 T
+(es Indicator) 443.98 536 T
+(...) 501 536 T
+(37) 510 536 T
+(T) 72 520 T
+(able 8.3) 78.37 520 T
+(XkbIndicatorMapRec which_groups and groups, Indicator Dri) 135 520 T
+(v) 434.64 520 T
+(es K) 440.46 520 T
+(e) 461.82 520 T
+(yboard) 466.97 520 T
+(...) 501 520 T
+(37) 510 520 T
+(T) 72 504 T
+(able 8.4) 78.37 504 T
+(XkbIndicatorMapRec which_mods and mods, K) 135 504 T
+(e) 367.67 504 T
+(yboard Dri) 372.82 504 T
+(v) 424.84 504 T
+(es Indicator) 430.66 504 T
+(.......) 489 504 T
+(38) 510 504 T
+(T) 72 488 T
+(able 8.5) 78.37 488 T
+(XkbIndicatorMapRec which_mods and mods, Indicator Dri) 135 488 T
+(v) 421.32 488 T
+(es K) 427.14 488 T
+(e) 448.5 488 T
+(yboard) 453.65 488 T
+(.......) 489 488 T
+(39) 510 488 T
+(T) 72 472 T
+(able 9.1) 78.37 472 T
+(Prede\336ned Bells) 135 472 T
+(..................................................................................................) 216 472 T
+(48) 510 472 T
+(T) 72 456 T
+(able 9.2) 78.37 456 T
+(Bell Sounding and Bell Ev) 135 456 T
+(ent Generating) 263.5 456 T
+(..........................................................) 336 456 T
+(49) 510 456 T
+(T) 72 440 T
+(able 10.1) 78.37 440 T
+(Xkb K) 135 440 T
+(e) 167.03 440 T
+(yboard Controls) 172.18 440 T
+(......................................................................................) 252 440 T
+(53) 510 440 T
+(T) 72 424 T
+(able 10.2) 78.37 424 T
+(MouseK) 135 424 T
+(e) 176.03 424 T
+(ysAccel Fields) 181.18 424 T
+(.....................................................................................) 255 424 T
+(59) 510 424 T
+(T) 72 408 T
+(able 10.3) 78.37 408 T
+(AccessXFeedback Masks) 135 408 T
+(....................................................................................) 258 408 T
+(63) 510 408 T
+(T) 72 392 T
+(able 10.4) 78.37 392 T
+(AccessXNotify Ev) 135 392 T
+(ents) 225.13 392 T
+(........................................................................................) 246 392 T
+(64) 510 392 T
+(T) 72 376 T
+(able 10.5) 78.37 376 T
+(AccessXNotify Ev) 135 376 T
+(ent Details) 225.13 376 T
+(.............................................................................) 279 376 T
+(65) 510 376 T
+(T) 72 360 T
+(able 10.6) 78.37 360 T
+(Xkb Controls) 135 360 T
+(.......................................................................................................) 201 360 T
+(72) 510 360 T
+(T) 72 344 T
+(able 10.7) 78.37 344 T
+(Controls Mask Bits) 135 344 T
+(.............................................................................................) 231 344 T
+(73) 510 344 T
+(T) 72 328 T
+(able 10.8) 78.37 328 T
+(GroupsWrap options \050groups_wrap \336eld\051) 135 328 T
+(..........................................................) 336 328 T
+(74) 510 328 T
+(T) 72 312 T
+(able 10.9) 78.37 312 T
+(Access X Enable/Disable Bits \050ax_options \336eld\051) 135 312 T
+(...............................................) 369 312 T
+(75) 510 312 T
+(T) 72 296 T
+(able 11.1) 78.37 296 T
+(Library Control Masks) 135 296 T
+(........................................................................................) 246 296 T
+(85) 510 296 T
+(T) 72 280 T
+(able 13.1) 78.37 280 T
+(Doodad T) 135 280 T
+(ypes) 182.36 280 T
+(.....................................................................................................) 207 280 T
+(96) 510 280 T
+(T) 72 264 T
+(able 14.1) 78.37 264 T
+(Xkb Mapping Component Masks and Con) 135 264 T
+(v) 338.18 264 T
+(enience Functions) 344 264 T
+(........................) 432 264 T
+(118) 504 264 T
+(T) 72 248 T
+(able 14.2) 78.37 248 T
+(XkbMapChangesRec Masks) 135 248 T
+(.............................................................................) 273 248 T
+(121) 504 248 T
+(T) 72 232 T
+(able 14.3) 78.37 232 T
+(XkbAllocClientMap Masks) 135 232 T
+(..............................................................................) 270 232 T
+(123) 504 232 T
+(T) 72 216 T
+(able 14.4) 78.37 216 T
+(XkbAllocServ) 135 216 T
+(erMap Masks) 204.14 216 T
+(..............................................................................) 270 216 T
+(124) 504 216 T
+(T) 72 200 T
+(able 15.1) 78.37 200 T
+(Example K) 135 200 T
+(e) 189.02 200 T
+(y T) 194.17 200 T
+(ype) 209.54 200 T
+(............................................................................................) 228 200 T
+(128) 504 200 T
+(T) 72 184 T
+(able 15.2) 78.37 184 T
+(group_info Range Normalization) 135 184 T
+(.....................................................................) 297 184 T
+(134) 504 184 T
+(T) 72 168 T
+(able 15.3) 78.37 168 T
+(Group Inde) 135 168 T
+(x Constants) 189.8 168 T
+(.....................................................................................) 249 168 T
+(137) 504 168 T
+(T) 72 152 T
+(able 16.1) 78.37 152 T
+(Action T) 135 152 T
+(ypes) 177.04 152 T
+(.....................................................................................................) 201 152 T
+(143) 504 152 T
+(T) 72 136 T
+(able 16.2) 78.37 136 T
+(Modi\336er Action T) 135 136 T
+(ypes) 222.04 136 T
+(......................................................................................) 246 136 T
+(144) 504 136 T
+(T) 72 120 T
+(able 16.3) 78.37 120 T
+(Modi\336er Action Flags) 135 120 T
+(.......................................................................................) 243 120 T
+(145) 504 120 T
+(T) 72 104 T
+(able 16.4) 78.37 104 T
+(Group Action T) 135 104 T
+(ypes) 210.7 104 T
+(..........................................................................................) 234 104 T
+(146) 504 104 T
+(T) 72 88 T
+(able 16.5) 78.37 88 T
+(Group Action Flags) 135 88 T
+(...........................................................................................) 231 88 T
+(146) 504 88 T
+(T) 72 72 T
+(able 16.6) 78.37 72 T
+(Pointer Action T) 135 72 T
+(ypes) 214.7 72 T
+(.........................................................................................) 237 72 T
+(147) 504 72 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "1" 11
+%%Page: "2" 12
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(LO) 510.9 40.62 T
+(T) 525.13 40.62 T
+(-2) 530.84 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+2 12 Q
+(T) 72 712 T
+(able 16.7) 78.37 712 T
+(Pointer Button Action T) 135 712 T
+(ypes) 250.38 712 T
+(.............................................................................) 273 712 T
+(149) 504 712 T
+(T) 72 696 T
+(able 16.8) 78.37 696 T
+(Pointer Button Action Flags) 135 696 T
+(.............................................................................) 273 696 T
+(149) 504 696 T
+(T) 72 680 T
+(able 16.9) 78.37 680 T
+(Pointer Def) 135 680 T
+(ault Flags) 190.54 680 T
+(........................................................................................) 240 680 T
+(150) 504 680 T
+(T) 72 664 T
+(able 16.10) 78.37 664 T
+(ISO Action Flags when XkbSA_ISOD\337tIsGroup is Set) 135 664 T
+(..................................) 402 664 T
+(151) 504 664 T
+(T) 72 648 T
+(able 16.11) 78.37 648 T
+(ISO Action Flags when XkbSA_ISOD\337tIsGroup is Not Set) 135 648 T
+(...........................) 423 648 T
+(152) 504 648 T
+(T) 72 632 T
+(able 16.12) 78.37 632 T
+(ISO Action Af) 135 632 T
+(fect Field V) 205.36 632 T
+(alues) 261.35 632 T
+(........................................................................) 288 632 T
+(152) 504 632 T
+(T) 72 616 T
+(able 16.13) 78.37 616 T
+(Switch Screen Action Flags) 135 616 T
+(..............................................................................) 270 616 T
+(153) 504 616 T
+(T) 72 600 T
+(able 16.14) 78.37 600 T
+(Controls Action T) 135 600 T
+(ypes) 221.38 600 T
+(......................................................................................) 246 600 T
+(154) 504 600 T
+(T) 72 584 T
+(able 16.15) 78.37 584 T
+(Control Action Flags) 135 584 T
+(.........................................................................................) 237 584 T
+(154) 504 584 T
+(T) 72 568 T
+(able 16.16) 78.37 568 T
+(Message Action Flags) 135 568 T
+(.......................................................................................) 243 568 T
+(155) 504 568 T
+(T) 72 552 T
+(able 16.17) 78.37 552 T
+(De) 135 552 T
+(vice Button Action T) 148.69 552 T
+(ypes) 249.4 552 T
+(.............................................................................) 273 552 T
+(158) 504 552 T
+(T) 72 536 T
+(able 16.18) 78.37 536 T
+(De) 135 536 T
+(vice Button Action Flags) 148.69 536 T
+(..............................................................................) 270 536 T
+(158) 504 536 T
+(T) 72 520 T
+(able 16.19) 78.37 520 T
+(De) 135 520 T
+(vice V) 148.69 520 T
+(aluator v<n>_what High Bits V) 179.02 520 T
+(alues) 329.88 520 T
+(.................................................) 357 520 T
+(159) 504 520 T
+(T) 72 504 T
+(able 16.20) 78.37 504 T
+(K) 135 504 T
+(e) 143.36 504 T
+(y Beha) 148.51 504 T
+(viors) 181.93 504 T
+(...................................................................................................) 207 504 T
+(161) 504 504 T
+(T) 72 488 T
+(able 16.21) 78.37 488 T
+(Explicit Component Masks) 135 488 T
+(...............................................................................) 267 488 T
+(163) 504 488 T
+(T) 72 472 T
+(able 17.1) 78.37 472 T
+(Symbol Interpretation Match Criteria) 135 472 T
+(...............................................................) 315 472 T
+(172) 504 472 T
+(T) 72 456 T
+(able 17.2) 78.37 456 T
+(Compatibility Map Component Masks) 135 456 T
+(.............................................................) 321 456 T
+(174) 504 456 T
+(T) 72 440 T
+(able 18.1) 78.37 440 T
+(Symbolic Names Masks) 135 440 T
+(....................................................................................) 252 440 T
+(182) 504 440 T
+(T) 72 424 T
+(able 18.2) 78.37 424 T
+(XkbNameChanges Fields) 135 424 T
+(..................................................................................) 258 424 T
+(184) 504 424 T
+(T) 72 408 T
+(able 19.1) 78.37 408 T
+(XkbNe) 135 408 T
+(wK) 169.36 408 T
+(e) 186.38 408 T
+(yboardNotifyEv) 191.53 408 T
+(ent Details) 269.34 408 T
+(.............................................................) 321 408 T
+(188) 504 408 T
+(T) 72 392 T
+(able 20.1) 78.37 392 T
+(Serv) 135 392 T
+(er Database K) 156.82 392 T
+(e) 224.48 392 T
+(yboard Components) 229.63 392 T
+(...........................................................) 327 392 T
+(190) 504 392 T
+(T) 72 376 T
+(able 20.2) 78.37 376 T
+(XkbComponentNameRec Flags Bits) 135 376 T
+(................................................................) 312 376 T
+(193) 504 376 T
+(T) 72 360 T
+(able 20.3) 78.37 360 T
+(W) 135 360 T
+(ant and Need Mask Bits and Required Names Components) 145.37 360 T
+(.........................) 429 360 T
+(195) 504 360 T
+(T) 72 344 T
+(able 20.4) 78.37 344 T
+(XkbDescRec Components Returned for V) 135 344 T
+(alues of W) 336.3 344 T
+(ant & Needs) 387.32 344 T
+(..................) 450 344 T
+(197) 504 344 T
+(T) 72 328 T
+(able 21.1) 78.37 328 T
+(XkbDe) 135 328 T
+(viceInfoRec Mask Bits) 169.36 328 T
+(..........................................................................) 282 328 T
+(200) 504 328 T
+(T) 72 312 T
+(able 22.1) 78.37 312 T
+(Deb) 135 312 T
+(ug Control Masks) 154.75 312 T
+(.......................................................................................) 243 312 T
+(210) 504 312 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "2" 12
+%%Page: "1" 13
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(1) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(1 Ov) 483.32 744.87 T
+(ervie) 510.34 744.87 T
+(w) 532.06 744.87 T
+0 14 Q
+(1) 72 710.67 T
+(Over) 108 710.67 T
+(vie) 140.05 710.67 T
+(w) 159.3 710.67 T
+2 12 Q
+-0.47 (The X Keyboard Extension provides capabilities that are lacking or are cumbersome in the) 108 688 P
+(core X protocol.) 108 675 T
+0 F
+(1.1) 72 650 T
+(Core X Pr) 108 650 T
+(otocol Suppor) 162.44 650 T
+(t f) 244.02 650 T
+(or K) 255.11 650 T
+(e) 278.93 650 T
+(yboar) 285.42 650 T
+(ds) 317.86 650 T
+2 F
+(The core X protocol specifies the ways that the) 108 630 T
+5 F
+-0.6 (Shift) 336.95 630 S
+2 F
+(,) 369.95 630 T
+5 F
+-0.6 (Control,) 375.95 630 S
+2 F
+( and) 428.75 630 T
+5 F
+-0.6 (Lock) 452.08 630 S
+2 F
+( modifiers) 478.48 630 T
+(and the modifiers bound to the) 108 617 T
+4 11 Q
+(Mode_s) 257.99 617 T
+(witch) 296.79 617 T
+2 12 Q
+( or) 321.84 617 T
+4 11 Q
+(Num_Loc) 337.84 617 T
+(k) 384.69 617 T
+2 12 Q
+( keysyms interact to generate) 390.19 617 T
+(keysyms and characters. The core protocol also allows users to specify that a key affects) 108 604 T
+(one or more modifiers. This behavior is simple and fairly flexible, but it has a number of) 108 591 T
+-0.38 (limitations that make it difficult or impossible to properly support many common varieties) 108 578 P
+(of keyboard behavior. The limitations of core protocol support for keyboards include:) 108 565 T
+2 11 Q
+(\245) 126 544.67 T
+-0.02 (Use of a single, uniform, four) 139.68 544.67 P
+-0.02 (-symbol mapping for all k) 269.82 544.67 P
+-0.02 (e) 384.52 544.67 P
+-0.02 (yboard k) 389.23 544.67 P
+-0.02 (e) 427.9 544.67 P
+-0.02 (ys mak) 432.62 544.67 P
+-0.02 (es it dif) 463.96 544.67 P
+-0.02 (\336cult) 496.65 544.67 P
+(to properly support k) 139.68 532.67 T
+(e) 232.15 532.67 T
+(yboard o) 236.87 532.67 T
+(v) 275.5 532.67 T
+(erlays, PC-style break k) 280.83 532.67 T
+(e) 385.82 532.67 T
+(ys, or k) 390.54 532.67 T
+(e) 423.12 532.67 T
+(yboards that comply) 427.84 532.67 T
+(with ISO9995, or a host of other national and international standards.) 139.68 520.67 T
+(\245) 126 508.67 T
+(A second k) 139.68 508.67 T
+(e) 189.06 508.67 T
+(yboard group may be speci\336ed using a modi\336er) 193.78 508.67 T
+(, b) 403.23 508.67 T
+(ut this has side ef) 414.01 508.67 T
+(fects) 490.12 508.67 T
+(that wreak ha) 139.68 496.67 T
+(v) 198.72 496.67 T
+(oc with client grabs and X toolkit translations. Furthermore, this) 204 496.67 T
+(approach limits the number of k) 139.68 484.67 T
+(e) 280.41 484.67 T
+(yboard groups to tw) 285.13 484.67 T
+(o.) 373.32 484.67 T
+(\245) 126 472.67 T
+-0.27 (Poorly speci\336ed locking k) 139.68 472.67 P
+-0.27 (e) 253.94 472.67 P
+-0.27 (y beha) 258.66 472.67 P
+-0.27 (vior requires X serv) 287.19 472.67 P
+-0.27 (ers to look for a fe) 373.87 472.67 P
+-0.27 (w \322magic\323 k) 453.18 472.67 P
+-0.27 (e) 508.12 472.67 P
+-0.27 (y-) 512.84 472.67 P
+(syms to determine that k) 139.68 460.67 T
+(e) 247.73 460.67 T
+(ys should lock when pressed. This leads to incompatibilities) 252.45 460.67 T
+(between X serv) 139.68 448.67 T
+(ers with no w) 207.93 448.67 T
+(ay for clients to detect implementation dif) 267.4 448.67 T
+(ferences.) 451.66 448.67 T
+(\245) 126 436.67 T
+-0.19 (Poorly speci\336ed capitalization and control beha) 139.68 436.67 P
+-0.19 (vior requires modi\336cations to X library) 347.78 436.67 P
+(source code to support ne) 139.68 424.67 T
+(w character sets or locales and can lead to incompatibilities) 251.82 424.67 T
+(between system wide and X library capitalization beha) 139.68 412.67 T
+(vior) 380.49 412.67 T
+(.) 397.61 412.67 T
+(\245) 126 400.67 T
+-0.19 (Limited interactions between modi\336ers speci\336ed by the core protocol mak) 139.68 400.67 P
+-0.19 (e man) 465.11 400.67 P
+-0.19 (y com-) 491.33 400.67 P
+-0.1 (mon k) 139.68 388.67 P
+-0.1 (e) 167.28 388.67 P
+-0.1 (yboard beha) 172 388.67 P
+-0.1 (viors dif) 225.75 388.67 P
+-0.1 (\336cult or impossible to implement. F) 262.35 388.67 P
+-0.1 (or e) 419.39 388.67 P
+-0.1 (xample, there is no) 435.92 388.67 P
+-0.18 (reliable w) 139.68 376.67 P
+-0.18 (ay to indicate whether or not the shift modi\336er should \322cancel\323 the lock mod-) 183.07 376.67 P
+(i\336er) 139.68 364.67 T
+(.) 156.8 364.67 T
+(\245) 126 352.67 T
+(The lack of an) 139.68 352.67 T
+(y e) 202.74 352.67 T
+(xplicit descriptions for indicators, most modi\336ers, and other aspects) 215.71 352.67 T
+(of the k) 139.68 340.67 T
+(e) 173.18 340.67 T
+(yboard appearance requires clients that wish to clearly describe the k) 177.89 340.67 T
+(e) 480.81 340.67 T
+(yboard) 485.53 340.67 T
+(to a user to resort to a mish-) 139.68 328.67 T
+(mash of prior kno) 262.8 328.67 T
+(wledge and heuristics.) 341.05 328.67 T
+0 12 Q
+(1.2) 72 304 T
+(Xkb K) 108 304 T
+(e) 141.83 304 T
+(yboar) 148.32 304 T
+(d Extension Suppor) 180.76 304 T
+(t f) 294.35 304 T
+(or K) 305.44 304 T
+(e) 329.26 304 T
+(yboar) 335.75 304 T
+(ds) 368.18 304 T
+2 F
+-0.47 (The X Keyboard Extension makes it possible to clearly and explicitly specify most aspects) 108 284 P
+-0.15 (of keyboard behavior on a per-key basis. It adds the notion of a keyboard group to the glo-) 108 271 P
+-0.42 (bal keyboard state and provides mechanisms to more closely track the logical and physical) 108 258 P
+(state of the keyboard. For keyboard-control clients, Xkb provides descriptions and sym-) 108 245 T
+(bolic names for many aspects of keyboard appearance and behavior.) 108 232 T
+(In addition, the X Keyboard Extension includes additional keyboard controls designed to) 108 211 T
+(make keyboards more accessible to people with movement impairments.) 108 198 T
+0 F
+(1.3) 72 173 T
+(Xkb Extension Components) 108 173 T
+2 F
+(The Xkb extension is composed of two parts: a server extension, and a client-side X) 108 153 T
+(library extension. These consist of a loadable module that may be activated when an X) 108 140 T
+(server is started and a modified version of Xlib. Both server and Xlib versions must be at) 108 127 T
+(least X11 R6.) 108 114 T
+FMENDPAGE
+%%EndPage: "1" 13
+%%Page: "2" 14
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(2) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(1 Ov) 483.32 744.87 T
+(ervie) 510.34 744.87 T
+(w) 532.06 744.87 T
+2 12 Q
+(Figure 1.1 shows the overall structure of the Xkb extension:) 108 712 T
+3 F
+(Figur) 227.66 373.5 T
+(e 1.1 Ov) 256.11 373.5 T
+(erall Xkb Structur) 297.65 373.5 T
+(e) 392.77 373.5 T
+2 F
+-0.12 (The server portion of the Xkb extension encompasses a database of named keyboard com-) 108 345.5 P
+(ponents, in unspecified format, that may be used to configure a keyboard. Internally, the) 108 332.5 T
+-0.36 (server maintains a) 108 319.5 P
+1 F
+-0.36 (k) 197.23 319.5 P
+-0.36 (e) 202.44 319.5 P
+-0.36 (yboar) 207.4 319.5 P
+-0.36 (d description) 234.96 319.5 P
+2 F
+-0.36 ( that includes the keyboard state and configuration) 297.6 319.5 P
+-0.12 (\050mapping\051. By \322keyboard\323 we mean the logical keyboard device, which includes not only) 108 306.5 P
+-0.29 (the physical keys, but also potentially a set of up to 32 indicators \050usually LEDs\051 and bells.) 108 293.5 P
+-0.4 (The keyboard description is a composite of several different data structures, each of which) 108 272.5 P
+(may be manipulated separately. When manipulating the server components, the design) 108 259.5 T
+(allows partial components to be transmitted between the server and a client. The individ-) 108 246.5 T
+(ual components are shown in Figure 1.1.) 108 233.5 T
+0 11 Q
+(Client Map) 108 211.17 T
+2 12 Q
+(The key mapping information needed to convert arbitrary keycodes to symbols.) 126 192.5 T
+0 11 Q
+(Server Map) 108 170.17 T
+2 12 Q
+(The key mapping information categorizing keys by functionality \050which keys are) 126 151.5 T
+(modifiers, how keys behave, and so on\051.) 126 138.5 T
+0 11 Q
+(Controls) 108 116.17 T
+2 12 Q
+(Client configurable quantities effecting how the keyboard behaves, such as repeat) 126 97.5 T
+(behavior and modifications for people with movement impairments.) 126 84.5 T
+83.34 394.5 528.66 708 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(Xkb Extension) 279.59 691.34 T
+88.59 484.75 228.84 549.25 R
+7 X
+V
+0.5 H
+0 Z
+0 X
+N
+(Core Xlib) 164.74 531.06 T
+(Xkb) 106.6 534.53 T
+(\050Xkb*) 102.43 499.78 T
+141.34 518.75 228 518.75 2 L
+8 X
+N
+0 X
+(Xkb Modifications) 145.86 506.78 T
+(functions) 165.16 488.01 T
+327.53 487.5 526.59 592.25 R
+N
+328.68 561.56 526.48 561.56 2 L
+N
+(X Server) 419.44 573.21 T
+(Xkb Server Extension) 393.21 543.88 T
+374.34 406.25 500.34 451.25 R
+N
+(Server Database of) 398.08 433.25 T
+(Keyboard Components) 391.12 419.86 T
+437.34 475.96 434.37 475.97 437.34 486.34 440.32 475.97 4 Y
+N
+437.34 475.96 434.37 475.97 437.34 486.34 440.32 475.97 4 Y
+V
+437.34 451.25 437.34 475.72 2 L
+N
+300.79 579 300.79 576.02 290.41 579 300.79 581.97 4 Y
+N
+300.79 579 300.79 576.02 290.41 579 300.79 581.97 4 Y
+V
+315.72 579 315.72 581.97 326.1 579 315.72 576.02 4 Y
+N
+315.72 579 315.72 581.97 326.1 579 315.72 576.02 4 Y
+V
+301.04 579 315.47 579 2 L
+N
+193.59 614.72 190.62 614.72 193.59 625.09 196.57 614.72 4 Y
+N
+193.59 614.72 190.62 614.72 193.59 625.09 196.57 614.72 4 Y
+V
+193.59 560.53 196.57 560.53 193.59 550.16 190.62 560.53 4 Y
+N
+193.59 560.53 196.57 560.53 193.59 550.16 190.62 560.53 4 Y
+V
+193.59 614.47 193.59 560.78 2 L
+N
+329.25 513.66 526.5 513.66 2 L
+8 X
+N
+378.84 534.25 378.84 513.25 2 L
+N
+0 X
+(Client Map) 329.96 521.21 T
+432.99 534.25 432.99 513.25 2 L
+8 X
+N
+0 X
+(Server Map) 382.46 521.21 T
+(Compatibility Map) 442.66 521.21 T
+329.58 534.78 525.53 534.78 2 L
+8 X
+N
+374.87 512.16 374.87 491.16 2 L
+N
+0 X
+(Controls) 335.38 497.21 T
+441.9 512.16 441.9 491.16 2 L
+8 X
+N
+0 X
+(Indicator Map) 379.94 497.21 T
+(Names) 446.97 497.21 T
+479.79 512.16 479.79 491.16 2 L
+8 X
+N
+0 X
+(Geometry) 484.86 497.21 T
+383.09 631.25 473.09 658.25 R
+N
+(Keyboard) 408.39 640.3 T
+429.59 617.72 426.62 617.72 429.59 628.09 432.57 617.72 4 Y
+N
+429.59 617.72 426.62 617.72 429.59 628.09 432.57 617.72 4 Y
+V
+429.59 604.29 432.57 604.29 429.59 593.91 426.62 604.29 4 Y
+N
+429.59 604.29 432.57 604.29 429.59 593.91 426.62 604.29 4 Y
+V
+429.59 617.47 429.59 604.54 2 L
+N
+141.25 548.5 141.25 484.75 2 L
+N
+( to Xlib) 101.18 511.36 T
+(Additions) 96.74 522.95 T
+(functions\051) 96.19 488.2 T
+( to Core Xlib) 157.52 497.39 T
+232.47 560.02 287.97 593.02 R
+7 X
+V
+0 X
+N
+(Core Xlib) 240.37 572.06 T
+162.84 626.73 224.34 670.98 R
+N
+(Xkb-capable) 166.81 656.55 T
+(User) 184.16 645.48 T
+(Application) 170 634.42 T
+95.84 626.73 157.34 670.98 R
+N
+(Xkb-aware) 103.14 656.55 T
+(User) 117.16 645.48 T
+(Application) 103 634.42 T
+229.84 626.73 291.34 670.98 R
+N
+(Xkb-unaware) 232.15 656.55 T
+(User) 251.16 645.48 T
+(Application) 237 634.42 T
+140.04 615.26 137.21 614.35 136.87 625.14 142.88 616.17 4 Y
+N
+140.04 615.26 137.21 614.35 136.87 625.14 142.88 616.17 4 Y
+V
+157.8 559.99 160.63 560.9 160.97 550.11 154.97 559.08 4 Y
+N
+157.8 559.99 160.63 560.9 160.97 550.11 154.97 559.08 4 Y
+V
+140.12 615.02 157.72 560.23 2 L
+N
+119.59 614.72 116.62 614.72 119.59 625.09 122.57 614.72 4 Y
+N
+119.59 614.72 116.62 614.72 119.59 625.09 122.57 614.72 4 Y
+V
+119.59 560.53 122.57 560.53 119.59 550.16 116.62 560.53 4 Y
+N
+119.59 560.53 122.57 560.53 119.59 550.16 116.62 560.53 4 Y
+V
+119.59 614.47 119.59 560.78 2 L
+N
+240.04 536.77 241.1 533.99 230.35 533.07 238.98 539.55 4 Y
+N
+240.04 536.77 241.1 533.99 230.35 533.07 238.98 539.55 4 Y
+V
+317.21 566.22 316.15 569.01 326.9 569.93 318.27 563.45 4 Y
+N
+317.21 566.22 316.15 569.01 326.9 569.93 318.27 563.45 4 Y
+V
+240.28 536.86 316.98 566.14 2 L
+N
+260.09 614.21 257.12 614.21 260.09 624.59 263.07 614.21 4 Y
+N
+260.09 614.21 257.12 614.21 260.09 624.59 263.07 614.21 4 Y
+V
+260.09 604.78 263.07 604.78 260.09 594.41 257.12 604.78 4 Y
+N
+260.09 604.78 263.07 604.78 260.09 594.41 257.12 604.78 4 Y
+V
+260.09 613.96 260.09 605.03 2 L
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "2" 14
+%%Page: "3" 15
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(3) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(1 Ov) 483.32 744.87 T
+(ervie) 510.34 744.87 T
+(w) 532.06 744.87 T
+0 F
+(Indicators) 108 712.67 T
+2 12 Q
+(The mapping of behavior to indicators.) 126 694 T
+0 11 Q
+(Geometry) 108 671.67 T
+2 12 Q
+(A complete description of the physical keyboard layout, sufficient to draw a represen-) 126 653 T
+(tation of the keyboard.) 126 640 T
+0 11 Q
+(Names) 108 617.67 T
+2 12 Q
+(A mapping of names to various aspects of the keyboard such as individual virtual) 126 599 T
+(modifiers, indicators, and bells.) 126 586 T
+0 11 Q
+(Compatibility Map) 108 563.67 T
+2 12 Q
+(The definition of how to map core protocol keyboard state to Xkb keyboard state.) 126 545 T
+(A client application interrogates and manipulates the keyboard by reading and writing) 108 524 T
+(portions of the server description for the keyboard. In a typical sequence a client would) 108 511 T
+(fetch the current information it is interested in, modify it, and write it back. If a client) 108 498 T
+(wishes to track some portion of the keyboard state, it typically maintains a local copy of) 108 485 T
+(the portion of the server keyboard description dealing with the items of interest and) 108 472 T
+(updates this local copy from events describing state transitions that are sent by the server.) 108 459 T
+(A client may request the server to reconfigure the keyboard either by sending explicit) 108 438 T
+(reconfiguration instructions to it, or by telling it to load a new configuration from its data-) 108 425 T
+(base of named components. Partial reconfiguration and incremental reconfiguration are) 108 412 T
+(both supported.) 108 399 T
+0 F
+(1.3.1) 72 374 T
+(Gr) 108 374 T
+(oups and Shift Le) 121.76 374 T
+(vels) 222.26 374 T
+2 F
+-0.01 (The graphic characters or control functions that may be accessed by one key are logically) 108 354 P
+(arranged in groups and levels. See section 14.1for a complete description of groups and) 108 341 T
+(levels.) 108 328 T
+0 F
+(1.3.2) 72 303 T
+(Radio Gr) 108 303 T
+(oups) 158.44 303 T
+2 F
+-0.14 (A radio group is a set of keys whose behavior simulates a set of radio buttons. Once a key) 108 283 P
+(in a radio group is pressed, it stays logically depressed until another key in the group is) 108 270 T
+(pressed, at which point the previously depressed key is logically released. Consequently,) 108 257 T
+(at most one key in a radio group can be logically depressed at one time. A radio group is) 108 244 T
+(defined by a radio group index, an optional name, and by assigning each key in the radio) 108 231 T
+(group) 108 218 T
+5 F
+-0.6 (XkbKB_RadioGroup) 139 218 S
+2 F
+( behavior and the radio group index.) 244.6 218 T
+0 F
+(1.4) 72 193 T
+(Client T) 108 193 T
+(ypes) 151.28 193 T
+2 F
+(This specification differentiates between three different classes of client applications:) 108 173 T
+2 11 Q
+(\245) 126 152.67 T
+(Xkb-a) 139.68 152.67 T
+(w) 167 152.67 T
+(are applications) 174.84 152.67 T
+(These applications mak) 139.68 140.67 T
+(e speci\336c use of Xkb functionality and APIs not present in the) 243.44 140.67 T
+(core protocol.) 139.68 127.67 T
+(\245) 126 114.67 T
+(Xkb-capable applications) 139.68 114.67 T
+(These applications mak) 139.68 102.67 T
+(e no use of Xkb e) 243.44 102.67 T
+(xtended functionality and Application Pro-) 320.56 102.67 T
+(gramming Interf) 139.68 89.67 T
+(aces \050APIs\051 directly) 211.97 89.67 T
+(. Ho) 298.62 89.67 T
+(we) 317.29 89.67 T
+(v) 329.84 89.67 T
+(er) 335.17 89.67 T
+(, the) 343.28 89.67 T
+(y are link) 362.06 89.67 T
+(ed with a v) 403.49 89.67 T
+(ersion of Xlib) 451.9 89.67 T
+(that includes Xkb and indirectly bene\336t from some of Xkb\325) 139.68 76.67 T
+(s features.) 400.29 76.67 T
+FMENDPAGE
+%%EndPage: "3" 15
+%%Page: "4" 16
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(4) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(1 Ov) 483.32 744.87 T
+(ervie) 510.34 744.87 T
+(w) 532.06 744.87 T
+(\245) 126 712.67 T
+(Xkb-una) 139.68 712.67 T
+(w) 178 712.67 T
+(are applications) 185.84 712.67 T
+(These applications mak) 139.68 700.67 T
+(e no use of Xkb e) 243.44 700.67 T
+(xtended functionality or APIs and require) 320.56 700.67 T
+(Xkb\325) 139.68 687.67 T
+(s functionality to be mapped to core Xlib functionality to operate properly) 161.68 687.67 T
+(.) 486.95 687.67 T
+0 12 Q
+(1.5) 72 662 T
+(Compatibility With the Core Pr) 108 662 T
+(otocol) 281.11 662 T
+2 F
+(Because the Xkb extension allows a keyboard to be configured in ways not foreseen by) 108 642 T
+(the core protocol, and because Xkb-unaware clients are allowed to connect to a server) 108 629 T
+(using the Xkb extension, there must be a means of converting between the Xkb domain) 108 616 T
+(and the core protocol. The Xkb server extension maintains a compatibility map as part of) 108 603 T
+-0.33 (its keyboard description; this map controls the conversion of Xkb generated events to core) 108 590 P
+(protocol events and the results of core protocol requests to appropriate Xkb state and con-) 108 577 T
+(figuration.) 108 564 T
+0 F
+(1.6) 72 539 T
+(Ad) 108 539 T
+(ditional Pr) 123.88 539 T
+(otocol Err) 182.32 539 T
+(or) 238.75 539 T
+(s) 250.57 539 T
+2 F
+-0.09 (The Xkb extension adds a single protocol error,) 108 519 P
+5 F
+-0.19 -0.6 (BadKeyboard) 338.94 519 B
+2 F
+-0.09 (, to the core protocol error) 411.55 519 P
+(set. See section 2.6 for a discussion of the) 108 506 T
+5 F
+-0.6 (BadKeyboard) 311.64 506 S
+2 F
+( protocol error.) 384.24 506 T
+0 F
+(1.7) 72 481 T
+(Extension Librar) 108 481 T
+(y Functions) 202.81 481 T
+2 F
+(The X Keyboard Extension replaces the core protocol definition of a keyboard with a) 108 461 T
+(more comprehensive one. The X Keyboard Extension library interfaces are included in) 108 448 T
+(Xlib.) 108 435 T
+2 9.6 Q
+(1) 132.34 439.8 T
+2 12 Q
+(Xlib detects the presence of the X Keyboard server extension and uses Xkb protocol to) 108 414 T
+(replace some standard X library functions related to the keyboard. If an application uses) 108 401 T
+-0.35 (only standard X library functions to examine the keyboard or process key events, it should) 108 388 P
+(not need to be modified when linked with an X library containing the X keyboard exten-) 108 375 T
+(sion. All of the keyboard-related X library functions have been modified to automatically) 108 362 T
+(use Xkb protocol when the server extension is present.) 108 349 T
+-0.02 (The Xkb extension adds library interfaces to allow a client application to directly manipu-) 108 328 P
+(late the new capabilities.) 108 315 T
+0 F
+(1.7.1) 72 290 T
+(Err) 108 290 T
+(or Indications) 125.1 290 T
+2 F
+-0.25 (Xkb functions that communicate with the X server check to be sure the Xkb extension has) 108 270 P
+-0.13 (been properly initialized prior to doing any other operations. If the extension has not been) 108 257 P
+-0.02 (properly initialized or the application, library, and server versions are incompatible, these) 108 244 P
+(functions return an error indication as shown in Table 1.1. Because of this test,) 108 231 T
+5 F
+-0.6 (BadAc-) 488.94 231 S
+-0.6 (cess) 108 218 S
+2 F
+( and) 134.4 218 T
+5 F
+-0.6 (BadMatch) 157.73 218 S
+2 F
+( \050due to incompatible versions\051 protocol errors should normally not) 210.53 218 T
+(be generated.) 108 205 T
+72 90 540 110 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 98 204 98 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+0 0 612 792 C
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(1. X11R6.1 is the \336rst release by the X Consortium, Inc.,that includes the X K) 72 83.33 T
+(e) 387.28 83.33 T
+(yboard Extension in Xlib) 391.57 83.33 T
+(. X11R6) 492 83.33 T
+(included w) 72 71.33 T
+(ork in progress on this e) 116.06 71.33 T
+(xtension as nonstandard additions to the library) 212.29 71.33 T
+(.) 401.07 71.33 T
+3 12 Q
+(T) 104.9 185 T
+(able 1.1 Function Err) 111.8 185 T
+(or Retur) 224.59 185 T
+(ns Due to Extension Pr) 268.73 185 T
+(oblems) 385.85 185 T
+1 F
+(Functions r) 109 165 T
+(eturn type) 164.22 165 T
+(Return value) 280 165 T
+2 11 Q
+(pointer to a structure) 109 150.67 T
+(NULL) 280 150.67 T
+(Bool) 109 136.67 T
+(F) 280 136.67 T
+(alse) 285.95 136.67 T
+(Status) 109 122.67 T
+(BadAccess) 280 122.67 T
+108 177 405 177 2 L
+V
+0.5 H
+0 Z
+N
+108 160 405 160 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "4" 16
+%%Page: "5" 17
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(5) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(1 Ov) 483.32 744.87 T
+(ervie) 510.34 744.87 T
+(w) 532.06 744.87 T
+2 12 Q
+(Many Xkb functions do not actually communicate with the X server; they only require) 108 712 T
+(processing in the client-side portion of the library. Furthermore, some applications may) 108 699 T
+-0.18 (never actually need to communicate with the server; they simply use the Xkb library capa-) 108 686 P
+-0.02 (bilities. The functions that do not communicate with the server return either a pointer to a) 108 673 P
+(structure, a Bool, or a Status. These functions check that the application has queried the) 108 660 T
+(Xkb library version and return the values shown in Table 1.1 if it has not.) 108 647 T
+FMENDPAGE
+%%EndPage: "5" 17
+%%Page: "6" 18
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(6) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.39 (2 Initialization and General Programming) 350.58 744.87 P
+0 14 Q
+(2) 72 710.67 T
+(Initialization and General Pr) 108 710.67 T
+(ogramming Inf) 292.11 710.67 T
+(ormation) 389.06 710.67 T
+0 12 Q
+(2.1) 72 684 T
+(Extension Header Files) 108 684 T
+2 F
+(The following include files are part of the Xkb standard:) 108 664 T
+2 11 Q
+(\245) 126 643.67 T
+5 12 Q
+-0.6 (<X11/XKBlib.h>) 139.68 643.67 S
+-0.41 -0.6 (XKBlib.h) 139.68 631.67 B
+2 11 Q
+-0.17 (is the main header \336le for Xkb; it declares constants, types, and functions.) 198.67 631.67 P
+(\245) 126 619.67 T
+5 12 Q
+-0.6 (<X11/extensions/XKBstr.h>) 139.68 619.67 S
+-0.6 (XKBstr.h) 139.68 607.67 S
+2 11 Q
+(declares types and constants for Xkb) 199.08 607.67 T
+(. It is included automatically from) 360.24 607.67 T
+5 12 Q
+-0.71 -0.6 (<X11/XKBlib.h>) 139.68 595.67 B
+2 11 Q
+-0.29 (; you should ne) 232.08 595.67 P
+-0.29 (v) 298.45 595.67 P
+-0.29 (er need to reference it directly in your application) 303.79 595.67 P
+(code.) 139.68 583.67 T
+(\245) 126 571.67 T
+5 12 Q
+-0.6 (<X11/extensions/XKB.h>) 139.68 571.67 S
+-0.6 (XKB.h) 139.68 559.67 S
+2 11 Q
+(de\336nes constants for Xkb) 179.28 559.67 T
+(. It is included automatically from) 290.96 559.67 T
+5 12 Q
+-0.6 (<X11/XKB-) 443.42 559.67 S
+-0.6 (str.h>) 139.68 547.67 S
+2 11 Q
+(; you should ne) 179.28 547.67 T
+(v) 246.54 547.67 T
+(er need to reference it directly in your application code.) 251.87 547.67 T
+(\245) 126 535.67 T
+5 12 Q
+-0.6 (<X11/extensions/XKBgeom.h>) 139.68 535.67 S
+-0.6 (XKBgeom.h) 139.68 523.67 S
+2 11 Q
+(declares types, symbolic constants, and functions for manipulating k) 205.68 523.67 T
+(e) 506.82 523.67 T
+(y-) 511.54 523.67 T
+(board geometry descriptions.) 139.68 511.67 T
+0 12 Q
+(2.2) 72 487 T
+(Extension Name) 108 487 T
+2 F
+(The name of the Xkb extension is given in) 108 467 T
+5 F
+-0.6 (<X11/extensions/Xkb.h>:) 314.98 467 S
+2 F
+(#define XkbName \322XKEYBOARD\323) 108 446 T
+-0.33 (Most extensions to the X protocol are initialized by calling) 108 425 P
+1 F
+-0.33 (XInitExtension) 390 425 P
+2 F
+-0.33 ( and passing the) 461.33 425 P
+(extension name. However, as explained in section 2.4, Xkb requires a more complex ini-) 108 412 T
+(tialization sequence, and a client program should not call) 108 399 T
+1 F
+(XInitExtension) 384.62 399 T
+2 F
+( directly.) 455.95 399 T
+0 F
+(2.3) 72 374 T
+(Determining Librar) 108 374 T
+(y Compatibility) 215.47 374 T
+2 F
+(If an application is dynamically linked, both the X server and the client-side X library) 108 354 T
+(must contain the Xkb extension in order for the client to use the Xkb extension capabili-) 108 341 T
+-0.4 (ties. Therefore a dynamically linked application must check both the library and the server) 108 328 P
+-0.2 (for compatibility before using Xkb function calls. A properly written program must check) 108 315 P
+(for compatibility between the version of the Xkb library that is dynamically loaded and) 108 302 T
+(the one used when the application was built. It must then check the server version for) 108 289 T
+(compatibility with the version of Xkb in the library.) 108 276 T
+(If your application is statically linked, you must still check for server compatibility and) 108 255 T
+(may check library compatibility. \050It is possible to compile against one set of header files) 108 242 T
+(and link against a different, incompatible, version of the library, although this should not) 108 229 T
+(normally occur.\051) 108 216 T
+(To determine the compatibility of a library at runtime, call) 108 195 T
+1 F
+(XkbLibraryVersion) 391.63 195 T
+2 F
+(.) 484.3 195 T
+2 11 Q
+(Bool) 108 174.67 T
+3 F
+(XkbLibraryV) 132.15 174.67 T
+(ersion) 196.44 174.67 T
+2 F
+(\050) 225.16 174.67 T
+1 F
+(lib_major_in_out) 228.82 174.67 T
+2 F
+(,) 305.83 174.67 T
+1 F
+(lib_minor_in_out) 311.33 174.67 T
+2 F
+(\051) 388.35 174.67 T
+(int *) 126 161.67 T
+1 F
+(lib_major_in_out;) 153 161.67 T
+2 F
+(/* speci\336es and returns the major Xkb library v) 252 161.67 T
+(ersion. */) 459.58 161.67 T
+(int *) 126 148.67 T
+1 F
+(lib_minor_in_out;) 153 148.67 T
+2 F
+(/* speci\336es and returns the minor Xkb library v) 252 148.67 T
+(ersion. */) 460.2 148.67 T
+2 12 Q
+(Pass the symbolic value) 108 129 T
+5 F
+-0.6 (XkbMajorVersion) 226 129 S
+2 F
+( in) 325 129 T
+1 F
+(lib_major_in_out) 340.33 129 T
+2 F
+( and) 424.35 129 T
+5 F
+-0.6 (XkbMinorVer-) 447.67 129 S
+-0.6 (sion) 108 116 S
+2 F
+( in) 134.4 116 T
+1 F
+(lib_minor_in_out) 149.74 116 T
+2 F
+(. These arguments represent the version of the library used at) 233.75 116 T
+(compile time. The) 108 103 T
+1 F
+(XkbLibr) 198.66 103 T
+(aryV) 237.82 103 T
+(er) 259.81 103 T
+(sion) 269.69 103 T
+2 F
+(function backfills the major and minor version) 292.69 103 T
+(numbers of the library used at run time in) 108 90 T
+1 F
+(lib_major_in_out) 310.31 90 T
+2 F
+( and) 394.32 90 T
+1 F
+(lib_minor_in_out) 417.65 90 T
+2 F
+(. If the) 501.66 90 T
+FMENDPAGE
+%%EndPage: "6" 18
+%%Page: "7" 19
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(7) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.39 (2 Initialization and General Programming) 350.58 744.87 P
+2 12 Q
+(versions of the compile time and run time libraries are compatible,) 108 712 T
+1 F
+(XkbLibr) 430.62 712 T
+(aryV) 469.78 712 T
+(er) 491.77 712 T
+(sion) 501.65 712 T
+2 F
+(returns) 108 699 T
+5 F
+-0.6 (True) 144.32 699 S
+2 F
+(, otherwise, it returns) 170.73 699 T
+5 F
+-0.6 (False.) 275.38 699 S
+2 F
+(In addition, in order to use the Xkb extension, you must ensure that the extension is) 108 678 T
+(present in the server and that the server supports the version of the extension expected by) 108 665 T
+(the client. Use) 108 652 T
+1 F
+(XkbQueryExtension) 179.99 652 T
+2 F
+( to do this, as described in the next section.) 275.96 652 T
+0 F
+(2.4) 72 627 T
+(Initializing the K) 108 627 T
+(e) 199.84 627 T
+(yboar) 206.33 627 T
+(d Extension) 238.76 627 T
+2 F
+(Call) 108 607 T
+1 F
+(XkbQueryExtension) 131 607 T
+2 F
+( to check for the presence and compatibility of the extension in) 226.98 607 T
+(the server and to initialize the extension. Because of potential version mismatches, you) 108 594 T
+(cannot use the generic extension mechanism functions \050) 108 581 T
+1 F
+(XQueryExtension) 376.28 581 T
+2 F
+(and) 463.93 581 T
+1 F
+( XInitExten-) 481.26 581 T
+(sion) 108 568 T
+2 F
+(\051 for checking for the presence of, and initializing the Xkb extension.) 128 568 T
+-0.38 (You must call) 108 547 P
+1 F
+-0.38 (XkbQueryExtension) 177.19 547 P
+2 F
+-0.38 ( or) 273.16 547 P
+1 F
+-0.38 (XkbOpenDisplay) 288.39 547 P
+2 F
+-0.38 ( before using any other Xkb library) 370.38 547 P
+-0.05 (interfaces, unless such usage is explicitly allowed in the interface description in this docu-) 108 534 P
+-0.15 (ment. The exceptions are:) 108 521 P
+1 F
+-0.15 (XkbIgnor) 234.37 521 P
+-0.15 (eExtension) 279.25 521 P
+2 F
+-0.15 (,) 331.9 521 P
+1 F
+-0.15 (XkbLibr) 337.75 521 P
+-0.15 (aryV) 376.91 521 P
+-0.15 (er) 398.9 521 P
+-0.15 (sion) 408.78 521 P
+2 F
+-0.15 (, and a handful of audi-) 428.78 521 P
+(ble-bell functions. You should not use any other Xkb functions if the extension is not) 108 508 T
+-0.14 (present or is uninitialized. In general, calls to Xkb library functions made prior to initializ-) 108 495 P
+(ing the Xkb extension cause) 108 482 T
+5 F
+-0.6 (BadAccess) 246.31 482 S
+2 F
+( protocol errors.) 305.71 482 T
+1 F
+-0.37 (XkbQueryExtension) 108 461 P
+2 F
+-0.37 ( both determines whether a compatible Xkb e) 203.98 461 P
+-0.37 (xtension is present in the) 419.51 461 P
+(X serv) 108 448 T
+(er and initializes the e) 139.48 448 T
+(xtension when it is present.) 244.61 448 T
+2 11 Q
+(Bool) 108 427.67 T
+3 F
+(XkbQueryExtension) 132.15 427.67 T
+2 F
+(\050) 228.71 427.67 T
+1 F
+(dpy) 232.38 427.67 T
+(, opcode_rtrn, e) 247.66 427.67 T
+(vent_rtrn, err) 317.76 427.67 T
+(or_rtrn, major_in_out,) 377.15 427.67 T
+(minor_in_out) 261 414.67 T
+2 F
+(\051) 320.89 414.67 T
+(Display *) 126 401.67 T
+1 F
+(dpy;) 180 401.67 T
+2 F
+(/* connection to the X serv) 261 401.67 T
+(er */) 379.68 401.67 T
+(int *) 126 388.67 T
+1 F
+(opcode_rtrn) 180 388.67 T
+2 F
+(;) 234.38 388.67 T
+(/* back\336lled with the major e) 261 388.67 T
+(xtension opcode */) 390.07 388.67 T
+(int *) 126 375.67 T
+1 F
+(e) 180 375.67 T
+(vent_rtrn) 184.72 375.67 T
+2 F
+(;) 225.66 375.67 T
+(/* back\336lled with the e) 261 375.67 T
+(xtension base e) 361.66 375.67 T
+(v) 428.6 375.67 T
+(ent code */) 433.93 375.67 T
+(int *) 126 362.67 T
+1 F
+(err) 180 362.67 T
+(or_rtrn) 192.95 362.67 T
+2 F
+(;) 225.34 362.67 T
+(/* back\336lled with the e) 261 362.67 T
+(xtension base error code */) 361.66 362.67 T
+(int *) 126 349.67 T
+1 F
+(major_in_out) 180 349.67 T
+2 F
+(;) 239.9 349.67 T
+-0.26 (/* compile time lib major v) 261 349.67 P
+-0.26 (ersion in, serv) 379.64 349.67 P
+-0.26 (er major v) 440.98 349.67 P
+-0.26 (ersion out */) 485.51 349.67 P
+(int *) 126 336.67 T
+1 F
+(minor_in_out;) 180 336.67 T
+2 F
+(/* compile time lib min v) 261 336.67 T
+(ersion in, serv) 372.38 336.67 T
+(er minor v) 434.23 336.67 T
+(ersion out */) 479.89 336.67 T
+2 12 Q
+(The) 108 317 T
+1 F
+(XkbQueryExtension) 129.66 317 T
+2 F
+( function determines whether a compatible version of the X Key-) 225.64 317 T
+(board Extension is present in the server. If a compatible extension is present,) 108 304 T
+1 F
+(XkbQue-) 479.6 304 T
+(ryExtension) 108 291 T
+2 F
+( returns) 165.32 291 T
+5 F
+-0.6 (True) 204.65 291 S
+2 F
+(; otherwise, it returns) 231.05 291 T
+5 F
+-0.6 (False) 336.04 291 S
+2 F
+(.) 369.04 291 T
+(If a compatible version of Xkb is present,) 108 270 T
+1 F
+(XkbQueryExtension) 310.3 270 T
+2 F
+( initializes the extension. It) 406.27 270 T
+-0.3 (backfills the major opcode for the keyboard extension in) 108 257 P
+1 F
+-0.3 (opcode_rtrn) 379.55 257 P
+2 F
+-0.3 (, the base event code) 438.88 257 P
+-0.1 (in) 108 244 P
+1 F
+-0.1 (e) 120.23 244 P
+-0.1 (vent_rtrn) 125.38 244 P
+2 F
+-0.1 (, the base error code) 170.04 244 P
+-0.1 ( in) 266.59 244 P
+1 F
+-0.1 (err) 281.72 244 P
+-0.1 (or_rtrn) 295.85 244 P
+2 F
+-0.1 (, and the major and minor version numbers) 331.19 244 P
+(of the extension in) 108 231 T
+1 F
+(major_in_out) 199.99 231 T
+2 F
+( and) 265.33 231 T
+1 F
+(minor_in_out) 288.66 231 T
+2 F
+(. The major opcode is reported in the) 354 231 T
+1 F
+-0.12 (req_major) 108 218 P
+2 F
+-0.12 ( fields of some Xkb events. For a discussion of the base event code, see section) 158.66 218 P
+(4.1.) 108 205 T
+FMENDPAGE
+%%EndPage: "7" 19
+%%Page: "8" 20
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(8) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.39 (2 Initialization and General Programming) 350.58 744.87 P
+2 12 Q
+(As a convenience, you can use the function) 108 712 T
+1 F
+(XkbOpenDisplay) 318.95 712 T
+2 F
+( to perform these three tasks) 400.93 712 T
+(at once: open a connection to an X server, check for a compatible version of the Xkb) 108 699 T
+(extension in both the library and the server, and initialize the extension for use.) 108 686 T
+2 11 Q
+(Display *) 108 665.67 T
+3 F
+(XkbOpenDisplay) 150.47 665.67 T
+2 F
+(\050) 231.77 665.67 T
+1 F
+(display_name) 235.43 665.67 T
+(, e) 296.43 665.67 T
+(vent_rtrn, err) 306.65 665.67 T
+(or_rtrn, major_in_out, minor_in_out,) 366.04 665.67 T
+(r) 252 652.67 T
+(eason_rtrn\051) 255.87 652.67 T
+2 F
+(char *) 126 639.67 T
+1 F
+(display_name) 153.18 639.67 T
+2 F
+(;) 214.29 639.67 T
+(/* hardw) 234 639.67 T
+(are display name, which determines the display and) 272.69 639.67 T
+(communications domain to be used */) 246 626.67 T
+(int *) 126 613.67 T
+1 F
+(e) 153 613.67 T
+(vent_rtrn) 157.72 613.67 T
+2 F
+(;) 198.66 613.67 T
+(/* back\336lled with the e) 234 613.67 T
+(xtension base e) 334.66 613.67 T
+(v) 401.6 613.67 T
+(ent code */) 406.93 613.67 T
+(int *) 126 600.67 T
+1 F
+(err) 153 600.67 T
+(or_rtrn) 165.95 600.67 T
+2 F
+(;) 198.34 600.67 T
+(/* back\336lled with the e) 234 600.67 T
+(xtension base error code */) 334.66 600.67 T
+(int *) 126 587.67 T
+1 F
+(major_in_out) 153 587.67 T
+2 F
+(;) 212.9 587.67 T
+(/* compile time lib major v) 234 587.67 T
+(ersion in, serv) 353.92 587.67 T
+(er major v) 415.77 587.67 T
+(ersion out */) 460.82 587.67 T
+(int *) 126 574.67 T
+1 F
+(minor_in_out) 153 574.67 T
+2 F
+(;) 212.9 574.67 T
+(/* compile time lib minor v) 234 574.67 T
+(ersion in, serv) 354.54 574.67 T
+(er minor v) 416.39 574.67 T
+(ersion out */) 462.05 574.67 T
+(int *) 126 561.67 T
+1 F
+(r) 153 561.67 T
+(eason_rtrn) 156.87 561.67 T
+2 F
+(;) 205.15 561.67 T
+(/* back\336lled with a status code */) 234 561.67 T
+1 12 Q
+-0.16 (XkbOpenDisplay) 108 542 P
+2 F
+-0.16 (is a convenience function that opens an X display connection and initial-) 192.82 542 P
+-0.48 (izes the X keyboard extension. In all cases, upon return) 108 529 P
+1 F
+-0.48 (r) 371.84 529 P
+-0.48 (eason_rtrn) 376.06 529 P
+2 F
+-0.48 ( contains a status value) 428.73 529 P
+(indicating success or the type of failure. If) 108 516 T
+1 F
+(major_in_out) 313.62 516 T
+2 F
+( and) 378.96 516 T
+1 F
+(minor_in_out) 402.29 516 T
+2 F
+( are not) 467.63 516 T
+5 F
+-0.6 (NULL) 506.62 516 S
+2 F
+(,) 533.02 516 T
+1 F
+(XkbOpenDisplay) 108 503 T
+2 F
+( first calls) 189.98 503 T
+1 F
+(XkbLibr) 240.31 503 T
+(aryV) 279.47 503 T
+(er) 301.46 503 T
+(sion) 311.34 503 T
+2 F
+( to determine whether the client library is) 331.34 503 T
+(compatible, passing it the values pointed to by) 108 490 T
+1 F
+(major_in_out) 333.66 490 T
+2 F
+( and) 399 490 T
+1 F
+(minor_in_out) 422.33 490 T
+2 F
+(. If the) 487.67 490 T
+(library is incompatible,) 108 477 T
+1 F
+(XkbOpenDisplay) 222.66 477 T
+2 F
+( backfills) 304.64 477 T
+1 F
+(major_in_out) 351.97 477 T
+2 F
+( and) 417.31 477 T
+1 F
+(minor_in_out) 440.64 477 T
+2 F
+( with) 505.98 477 T
+(the major and minor extension versions of the library being used and returns) 108 464 T
+5 F
+-0.6 (NULL) 477.61 464 S
+2 F
+(. If the) 504.01 464 T
+(library is compatible,) 108 451 T
+1 F
+( XkbOpenDisplay) 210.32 451 T
+2 F
+(next calls) 298.31 451 T
+1 F
+(XOpenDisplay) 346.97 451 T
+2 F
+( with the) 417.62 451 T
+1 F
+(display_name) 462.62 451 T
+2 F
+(.) 529.28 451 T
+(If this fails, the function returns) 108 438 T
+5 F
+-0.6 (NULL) 262.98 438 S
+2 F
+(. If successful,) 289.38 438 T
+1 F
+(XkbOpenDisplay) 361.69 438 T
+2 F
+(calls) 446.68 438 T
+1 F
+(XkbQueryEx-) 471.67 438 T
+(tension) 108 425 T
+2 F
+( and) 142.67 425 T
+(backfills the major and minor Xkb server extension version numbers in) 166 425 T
+1 F
+-0.31 (major_in_out) 108 412 P
+2 F
+-0.31 ( and) 173.34 412 P
+1 F
+-0.31 (minor_in_out) 196.06 412 P
+2 F
+-0.31 (.) 261.4 412 P
+-0.31 (If the server extension version is not compatible with the) 267.09 412 P
+(library extension version or if the server extension is not present,) 108 399 T
+1 F
+(XkbOpenDisplay) 422.62 399 T
+2 F
+(closes) 507.6 399 T
+(the display and returns) 108 386 T
+5 F
+-0.6 (NULL) 219.98 386 S
+2 F
+(. When successful, the function returns the display connec-) 246.38 386 T
+(tion) 108 373 T
+5 F
+-0.6 (.) 126.67 373 S
+2 F
+(The possible values for) 108 352 T
+1 F
+(r) 222.65 352 T
+(eason_rtrn) 226.87 352 T
+2 F
+( are:) 279.54 352 T
+2 11 Q
+(\245) 126 331.67 T
+5 12 Q
+-0.6 (XkbOD_BadLibraryVersion) 139.68 331.67 S
+2 11 Q
+( indicates) 291.48 331.67 T
+1 F
+(XkbLibr) 336.09 331.67 T
+(aryV) 371.98 331.67 T
+(er) 392.14 331.67 T
+(sion) 401.2 331.67 T
+2 F
+(returned) 422.28 331.67 T
+5 12 Q
+-0.6 (False) 461.69 331.67 S
+2 11 Q
+(.) 494.69 331.67 T
+(\245) 126 319.67 T
+5 12 Q
+-0.6 (XkbOD_ConnectionRefused) 139.68 319.67 S
+2 11 Q
+( indicates the display could not be opened.) 291.48 319.67 T
+(\245) 126 307.67 T
+5 12 Q
+-0.9 -0.6 (XkbOD_BadServerVersion) 139.68 307.67 B
+2 11 Q
+-0.37 ( indicates the library and the serv) 284.88 307.67 P
+-0.37 (er ha) 428.5 307.67 P
+-0.37 (v) 449.59 307.67 P
+-0.37 (e incompatible) 454.92 307.67 P
+(e) 139.68 295.67 T
+(xtension v) 144.4 295.67 T
+(ersions.) 189.76 295.67 T
+(\245) 126 283.67 T
+5 12 Q
+-0.6 (XkbOD_NonXkbServer) 139.68 283.67 S
+2 11 Q
+( indicates the e) 258.48 283.67 T
+(xtension is not present in the X serv) 324 283.67 T
+(er) 481.79 283.67 T
+(.) 489.73 283.67 T
+(\245) 126 271.67 T
+5 12 Q
+-0.6 (XkbOD_Success) 139.68 271.67 S
+2 11 Q
+( indicates that the function succeeded.) 225.48 271.67 T
+0 12 Q
+(2.5) 72 247 T
+(Disab) 108 247 T
+(ling the K) 140.56 247 T
+(e) 195.05 247 T
+(yboar) 201.54 247 T
+(d Extension) 233.98 247 T
+2 F
+(If a server supports the Xkb extension, the X library normally implements preXkb key-) 108 227 T
+(board functions using the Xkb keyboard description and state. The server Xkb keyboard) 108 214 T
+(state may differ from the preXkb keyboard state. This difference does not affect most cli-) 108 201 T
+(ents, but there are exceptions. To allow these clients to work properly, you may instruct) 108 188 T
+(the extension not to use Xkb functionality.) 108 175 T
+(Call) 108 154 T
+1 F
+(XkbIgnoreExtension) 131 154 T
+2 F
+( to prevent core X library keyboard functions from using the X) 228.98 154 T
+-0.29 (Keyboard Extension. You must call) 108 141 P
+1 F
+-0.29 (XkbIgnoreExtension) 281.18 141 P
+2 F
+-0.29 ( before you open a server connec-) 379.16 141 P
+(tion; Xkb does not provide a way to enable or disable use of the extension once a connec-) 108 128 T
+(tion is established.) 108 115 T
+2 11 Q
+(Bool) 108 94.67 T
+3 F
+( XkbIgnor) 129.4 94.67 T
+(eExtension) 178.4 94.67 T
+2 F
+(\050) 229.74 94.67 T
+1 F
+(ignor) 233.4 94.67 T
+(e) 256.83 94.67 T
+2 F
+(\051) 261.71 94.67 T
+(Bool) 126 81.67 T
+1 F
+(ignor) 189 81.67 T
+(e) 212.43 81.67 T
+2 F
+(;) 217.31 81.67 T
+(/*) 234 81.67 T
+5 12 Q
+-0.6 (True) 245.31 81.67 S
+2 11 Q
+( means ignore the e) 271.71 81.67 T
+(xtension */) 357.08 81.67 T
+FMENDPAGE
+%%EndPage: "8" 20
+%%Page: "9" 21
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(9) 534.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.39 (2 Initialization and General Programming) 350.58 744.87 P
+1 12 Q
+(XkbIgnor) 108 712 T
+(eExtension) 152.88 712 T
+2 F
+( tells the X library whether to use the X Keyboard Extension on any) 205.54 712 T
+0 (subsequently opened X display connections. If ignore is) 108 699 P
+5 F
+0 -0.6 (True) 379.62 699 B
+2 F
+0 (, the library does not initial-) 406.02 699 P
+(ize the Xkb extension when it opens a new display. This forces the X server to use com-) 108 686 T
+(patibility mode and communicate with the client using only core protocol requests and) 108 673 T
+(events. If ignore is) 108 660 T
+5 F
+-0.6 (False) 200.32 660 S
+2 F
+(, the library treats subsequent calls to) 233.32 660 T
+1 F
+(XOpenDisplay) 414.62 660 T
+2 F
+( normally) 485.28 660 T
+-0.22 (and uses Xkb extension requests, events, and state. Do not explicitly use Xkb on a connec-) 108 647 P
+(tion for which it is disabled.) 108 634 T
+1 F
+( XkbIgnor) 242.66 634 T
+(eExtension) 290.54 634 T
+2 F
+( returns) 343.2 634 T
+5 F
+-0.6 (False) 382.52 634 S
+2 F
+( if it was unable to apply) 415.52 634 T
+(the ignore request.) 108 621 T
+0 F
+(2.6) 72 596 T
+(Pr) 108 596 T
+(otocol Err) 120.43 596 T
+(or) 176.87 596 T
+(s) 188.69 596 T
+2 F
+(Many of the Xkb extension library functions described in this document can cause the X) 108 582 T
+(server to report an error, referred to in this document as a) 108 569 T
+5 F
+-0.6 (BadXxx) 385.58 569 S
+2 F
+( protocol error, where) 425.18 569 T
+5 F
+-0.95 -0.6 (Xxx) 108 556 B
+2 F
+-0.43 ( is some name. These errors are fielded in the normal manner, by the default Xlib error) 127.8 556 P
+-0.02 (handler or one replacing it. Note that X protocol errors are not necessarily reported imme-) 108 543 P
+(diately because of the buffering of X protocol requests in Xlib and the server.) 108 530 T
+(Table 2.1 lists the protocol errors that can be generated, and their causes.) 108 509 T
+-0.09 (The Xkb extension adds a single protocol error,) 108 320 P
+5 F
+-0.19 -0.6 (BadKeyboard) 338.94 320 B
+2 F
+-0.09 (, to the core protocol error) 411.55 320 P
+(set. This error code will be reported as the) 108 307 T
+1 F
+(err) 313.28 307 T
+(or_rtrn) 327.41 307 T
+2 F
+( when) 362.75 307 T
+1 F
+(XkbQueryExtension) 394.74 307 T
+2 F
+( is called.) 490.72 307 T
+(When a) 108 294 T
+5 F
+-0.6 (BadKeyboard) 147.98 294 S
+2 F
+( error is reported in an) 220.59 294 T
+5 F
+-0.6 (XErrorEvent) 330.55 294 S
+2 F
+(, additional information is) 403.15 294 T
+-0.04 (reported in the) 108 281 P
+1 F
+-0.04 (resource_id) 180.86 281 P
+2 F
+-0.04 ( field. The most significant byte of the) 238.19 281 P
+1 F
+-0.04 (resource_id) 424.85 281 P
+2 F
+-0.04 ( is a further) 482.18 281 P
+(refinement of the error cause, as defined in Table 2.2. The least significant byte will con-) 108 268 T
+(tain the device, class, or feedback ID as indicated in the table.) 108 255 T
+0 F
+(2.7) 72 136 T
+(Displa) 108 136 T
+(y and De) 143.77 136 T
+(vice Speci\336cations in Function Calls) 193.61 136 T
+2 F
+(Where a connection to the server is passed as an argument \050Display*\051 and an) 108 116 T
+5 F
+-0.6 (XkbDescPtr) 108 103 S
+2 F
+( is also passed as an argument, the Display* argument must match the) 174 103 T
+1 F
+(dpy) 512.63 103 T
+2 F
+(field of the) 108 90 T
+5 F
+-0.6 (XkbDescRec) 163.66 90 S
+2 F
+( pointed to by the) 229.66 90 T
+5 F
+-0.6 (XkbDescPtr) 316.66 90 S
+2 F
+( argument, or else the) 382.66 90 T
+1 F
+(dpy) 489.3 90 T
+2 F
+( field) 506.63 90 T
+(of the) 108 77 T
+5 F
+-0.6 (XkbDescRec) 138.66 77 S
+2 F
+( must be) 204.66 77 T
+5 F
+-0.6 (NULL) 248.33 77 S
+2 F
+(. If they don\325t match or the) 274.73 77 T
+1 F
+(dpy) 406.71 77 T
+2 F
+( field is not) 424.03 77 T
+5 F
+-0.6 (NULL) 481.37 77 S
+2 F
+(, a) 507.77 77 T
+3 F
+(T) 251.98 489 T
+(able 2.1 Xkb Pr) 258.88 489 T
+(otocol Err) 341.67 489 T
+(ors) 393.77 489 T
+1 F
+(Err) 109 469 T
+(or) 125.13 469 T
+(Cause) 208 469 T
+2 11 Q
+(BadAccess) 109 454.67 T
+(The Xkb e) 208 454.67 T
+(xtension has not been properly initialized) 254.27 454.67 T
+(BadK) 109 440.67 T
+(e) 134.39 440.67 T
+(yboard) 139.11 440.67 T
+(The de) 208 440.67 T
+(vice speci\336ed w) 237.96 440.67 T
+(as not a v) 308.73 440.67 T
+(alid core or input e) 350.31 440.67 T
+(xtension de) 433.24 440.67 T
+(vice) 483.37 440.67 T
+(BadImplementation) 109 426.67 T
+(In) 208 426.67 T
+(v) 216.72 426.67 T
+(alid reply from serv) 221.95 426.67 T
+(er) 308.85 426.67 T
+(BadAlloc) 109 412.67 T
+(Unable to allocate storage) 208 412.67 T
+(BadMatch) 109 398.67 T
+-0.25 (A compatible v) 208 398.67 P
+-0.25 (ersion of Xkb w) 275.16 398.67 P
+-0.25 (as not a) 345.47 398.67 P
+-0.25 (v) 378.36 398.67 P
+-0.25 (ailable in the serv) 383.58 398.67 P
+-0.25 (er or an ar) 460.56 398.67 P
+-0.25 (gument) 504.5 398.67 P
+(has correct type and range, b) 208 387.67 T
+(ut is otherwise in) 334.24 387.67 T
+(v) 409.27 387.67 T
+(alid) 414.49 387.67 T
+(BadV) 109 373.67 T
+(alue) 133.44 373.67 T
+(An ar) 208 373.67 T
+(gument is out of range) 232.54 373.67 T
+(BadAtom) 109 359.67 T
+(A name is neither a v) 208 359.67 T
+(alid Atom or) 301.51 359.67 T
+5 12 Q
+-0.6 (None) 360.48 359.67 S
+2 11 Q
+(BadDe) 109 345.67 T
+(vice) 139.27 345.67 T
+(De) 208 345.67 T
+(vice, Feedback Class, or Feedback ID in) 220.55 345.67 T
+(v) 397.9 345.67 T
+(alid) 403.13 345.67 T
+3 12 Q
+(T) 179.9 235 T
+(able 2.2 BadK) 186.8 235 T
+(eyboard Pr) 261.85 235 T
+(otocol Err) 319.3 235 T
+(or r) 371.4 235 T
+(esour) 390.84 235 T
+(ce_id V) 418.62 235 T
+(alues) 455.84 235 T
+1 F
+(high-or) 109.21 215 T
+(der byte) 144.77 215 T
+(value) 217.21 215 T
+(meaning) 262.21 215 T
+(low-or) 462.32 215 T
+(der byte) 493.88 215 T
+2 11 Q
+(XkbErr_BadDe) 109.21 200.67 T
+(vice) 177.97 200.67 T
+(0xf) 217.21 200.67 T
+(f) 231.6 200.67 T
+(de) 262.21 200.67 T
+(vice not found) 272.32 200.67 T
+(de) 462.32 200.67 T
+(vice ID) 472.43 200.67 T
+(XkbErr_BadClass) 109.21 186.67 T
+(0xfe) 217.21 186.67 T
+(de) 262.21 186.67 T
+(vice found, b) 272.32 186.67 T
+(ut it is of the wrong class) 329.84 186.67 T
+(class ID) 462.32 186.67 T
+(XkbErr_BadId) 109.21 172.67 T
+(0xfd) 217.21 172.67 T
+(de) 262.21 172.67 T
+(vice found, class ok, b) 272.32 172.67 T
+(ut de) 370.47 172.67 T
+(vice does not) 391.89 172.67 T
+(contain a feedback with the indicated ID) 262.21 161.67 T
+(feedback ID) 462.32 172.67 T
+108 481 540 481 2 L
+V
+0.5 H
+0 Z
+N
+108 464 540 464 2 L
+V
+N
+108.21 227 539.79 227 2 L
+V
+N
+108.21 210 539.79 210 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "9" 21
+%%Page: "10" 22
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(10) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.39 (2 Initialization and General Programming) 350.58 744.87 P
+5 12 Q
+-0.6 (BadMatch) 108 712 S
+2 F
+( error is returned \050either in the return value or a backfilled) 160.8 712 T
+5 F
+-0.6 (Status) 441.39 712 S
+2 F
+( variable\051.) 480.99 712 T
+(Upon successful return, the) 108 699 T
+1 F
+(dpy) 242.3 699 T
+2 F
+( field of the) 259.63 699 T
+5 F
+-0.6 (XkbDescRec) 318.29 699 S
+2 F
+( always contains the Display*) 384.29 699 T
+(value passed in.) 108 686 T
+(The Xkb extension can communicate with the X input extension if it is present. Conse-) 108 665 T
+-0.24 (quently, there can potentially be more than one input device connected to the server. Most) 108 652 P
+-0.28 (Xkb library calls that require communicating with the server involve both a server connec-) 108 639 P
+-0.09 (tion \050Display *) 108 626 P
+1 F
+-0.09 (dpy) 182.72 626 P
+2 F
+-0.09 (\051 and a device identifier \050unsigned int) 200.05 626 P
+1 F
+-0.09 (de) 382.36 626 P
+-0.09 (vice_spec) 393.51 626 P
+2 F
+-0.09 (\051. In some cases, the) 440.16 626 P
+-0.09 (device identifier is implicit and is taken as the) 108 613 P
+1 F
+-0.09 (device_spec) 330.83 613 P
+2 F
+-0.09 ( field of an) 388.8 613 P
+5 F
+-0.2 -0.6 (XkbDescRec) 443.77 613 B
+2 F
+-0.09 ( struc-) 509.77 613 P
+(ture passed as an argument.) 108 600 T
+-0.09 (The device identifier can specify any X input extension device with a) 108 579 P
+5 F
+-0.22 (KeyClass) 442.83 579 P
+2 F
+-0.09 ( compo-) 500.43 579 P
+(nent, or it can specify the constant,) 108 566 T
+5 F
+-0.6 (XkbUseCoreKbd) 278.3 566 S
+2 F
+(. The use of) 364.11 566 T
+5 F
+-0.6 (XkbUseCoreKbd) 423.76 566 S
+2 F
+(allows applications to indicate the core keyboard without having to determine its device) 108 553 T
+(identifier.) 108 540 T
+(Where an Xkb device identifier is passed as an argument and an) 108 519 T
+5 F
+-0.6 (XkbDescPtr) 418.58 519 S
+2 F
+( is also) 484.58 519 T
+(passed as an argument, if either the argument or the) 108 506 T
+5 F
+-0.6 (XkbDescRec) 358.94 506 S
+1 F
+(de) 427.95 506 T
+(vice_spec) 439.09 506 T
+2 F
+( field is) 485.74 506 T
+5 F
+-0.6 (XkbUseCoreKbd) 108 493 S
+2 F
+(, and if the function returns successfully, the) 193.8 493 T
+5 F
+-0.6 (XkbDescPtr) 409.77 493 S
+1 F
+(device_spec) 478.77 493 T
+2 F
+-0.25 (field will have been converted from) 108 480 P
+5 F
+-0.54 -0.6 (XkbUseCoreKbd) 281.14 480 B
+2 F
+-0.25 ( to a real Xkb device ID. If the func-) 366.95 480 P
+(tion does not complete successfully, the) 108 467 T
+1 F
+(device_spec) 302.32 467 T
+2 F
+( field remains unchanged. Subse-) 360.29 467 T
+(quently, the device id argument must match the) 108 454 T
+1 F
+(de) 338.98 454 T
+(vice_spec) 350.12 454 T
+2 F
+( field of the) 396.77 454 T
+5 F
+-0.6 (XkbDescPtr) 455.42 454 S
+2 F
+0 (argument. If they don\325t match, a) 108 441 P
+5 F
+0 -0.6 (BadMatch) 265.95 441 B
+2 F
+0 ( error is returned \050either in the return value or) 318.76 441 P
+(a backfilled) 108 428 T
+5 F
+-0.6 (Status) 167.32 428 S
+2 F
+( variable\051.) 206.92 428 T
+(When the Xkb extension in the server hands an application a device identifier to use for) 108 407 T
+(the keyboard, that ID is the input extension identifier for the device if the server supports) 108 394 T
+(the X Input Extension. If the server does not support the input extension, the meaning of) 108 381 T
+(the identifier is undefined \321 the only guarantee is that when you use) 108 368 T
+5 F
+-0.6 (XkbUseCoreKbd) 442.28 368 S
+2 F
+(,) 528.09 368 T
+5 F
+-0.01 -0.6 (XkbUseCoreKbd) 108 355 B
+2 F
+0 ( will work and the identifier returned by the server will refer to the core) 193.8 355 P
+(keyboard device.) 108 342 T
+FMENDPAGE
+%%EndPage: "10" 22
+%%Page: "11" 23
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(11) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(3 Data Structures) 458.13 744.87 T
+0 14 Q
+(3) 72 710.67 T
+(Data Structures) 108 710.67 T
+2 12 Q
+(An Xkb keyboard description consists of a variety of data structures, each of which) 108 688 T
+(describes some aspect of the keyboard. Although each data structure has its own peculiar-) 108 675 T
+(ities, there are a number of features common to nearly all Xkb structures. This chapter) 108 662 T
+(describes these common features and techniques for manipulating them.) 108 649 T
+(Many Xkb data structures are interdependent; changing a field in one might require) 108 628 T
+(changes to others. As an additional complication, some Xkb library functions allocate) 108 615 T
+(related components as a group to reduce fragmentation and allocator overhead. In these) 108 602 T
+(cases, simply allocating and freeing fields of Xkb structures might corrupt program mem-) 108 589 T
+(ory. Creating and destroying such structures or keeping them properly synchronized dur-) 108 576 T
+(ing editing is complicated and error prone.) 108 563 T
+(Xkb provides functions and macros to allocate and free all major data structures. You) 108 542 T
+(should use them instead of allocating and freeing the structures yourself.) 108 529 T
+0 F
+(3.1) 72 504 T
+(Allocating Xkb Data Structures) 108 504 T
+2 F
+(Xkb provides functions, known as allocators, to create and initialize Xkb data structures.) 108 484 T
+-0.13 (In most situations, the Xkb functions that read a keyboard description from the server call) 108 471 P
+-0.14 (these allocators automatically. As a result, you will seldom have to directly allocate or ini-) 108 458 P
+(tialize Xkb data structures.) 108 445 T
+(However, if you need to enlarge an existing structure or construct a keyboard definition) 108 424 T
+(from scratch, you may need to allocate and initialize Xkb data structures directly. Each) 108 411 T
+(major Xkb data structure has its own unique allocator. The allocator functions share com-) 108 398 T
+-0.12 (mon features: allocator functions for structures with optional components take as an input) 108 385 P
+-0.13 (argument a mask of subcomponents to be allocated. Allocators for data structures contain-) 108 372 P
+(ing variable-length data take an argument specifying the initial length of the data.) 108 359 T
+(You may call an allocator to change the size of the space allocated for variable-length) 108 338 T
+(data. When you call an allocator with an existing data structure as a parameter, the alloca-) 108 325 T
+(tor does not change the data in any of the fields, with one exception: variable-length data) 108 312 T
+(might be moved. The allocator resizes the allocated memory if the current size is too) 108 299 T
+-0.13 (small. This normally involves allocating new memory, copying existing data to the newly) 108 286 P
+(allocated memory, and freeing the original memory. This possible reallocation is impor-) 108 273 T
+-0.09 (tant to note because local variables pointing into Xkb data structures might be invalidated) 108 260 P
+(by calls to allocator functions.) 108 247 T
+0 F
+(3.2) 72 222 T
+(Ad) 108 222 T
+(ding Data and Editing Data Structures) 123.88 222 T
+2 F
+(You should edit most data structures via the Xkb-supplied helper functions and macros,) 108 202 T
+(although a few data structures can be edited directly. The helper functions and macros) 108 189 T
+(make sure everything is initialized and interdependent values are properly updated for) 108 176 T
+(those Xkb structures that have interdependencies. As a general rule, if there is a helper) 108 163 T
+(function or macro to edit the data structure, use it. For example, increasing the width of a) 108 150 T
+(type requires you to resize every key that uses that type. This is complicated and ugly,) 108 137 T
+(which is why there\325s an) 108 124 T
+1 F
+(XkbResizeK) 224.98 124 T
+(e) 281.88 124 T
+(yT) 286.85 124 T
+(ype) 297.96 124 T
+2 F
+( function.) 314.62 124 T
+-0.2 (Many Xkb data structures have arrays whose size is reported by two fields. The first field,) 108 103 P
+-0.35 (whose name is usually prefixed by) 108 90 P
+1 F
+-0.35 (sz_) 275.21 90 P
+2 F
+-0.35 (, represents the total number of elements that can be) 290.55 90 P
+(stored in the array. The second field, whose name is usually prefixed by) 108 77 T
+1 F
+(num_) 456.26 77 T
+2 F
+(, specifies) 482.93 77 T
+FMENDPAGE
+%%EndPage: "11" 23
+%%Page: "12" 24
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(12) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(3 Data Structures) 458.13 744.87 T
+2 12 Q
+-0.4 (the number of elements currently stored there. These arrays typically represent data whose) 108 712 P
+(total size cannot always be determined when the array is created. In these instances, the) 108 699 T
+(usual way to allocate space and add data is as follows:) 108 686 T
+2 11 Q
+(\245) 126 665.67 T
+(Call the allocator function with some arbitrary size, as a hint.) 139.68 665.67 T
+(\245) 126 653.67 T
+(F) 139.68 653.67 T
+(or those arrays that ha) 145.63 653.67 T
+(v) 242.55 653.67 T
+(e an) 247.89 653.67 T
+1 F
+(Xkb) 268.65 653.67 T
+(...Add...) 285.32 653.67 T
+2 F
+( function, call it each time you w) 319.54 653.67 T
+(ant to add) 464.25 653.67 T
+(ne) 139.68 641.67 T
+(w data to the array) 149.79 641.67 T
+(. The function e) 230.94 641.67 T
+(xpands the array if necessary) 300.42 641.67 T
+(.) 427.39 641.67 T
+2 12 Q
+(For example, call:) 108 623 T
+(XkbAllocGeomShapes\050geom,4\051) 108 602 T
+(to say \322I\325ll need space for four new shapes in this geometry.\323 This makes sure that) 108 581 T
+1 F
+(sz_shapes) 108 568 T
+2 F
+( -) 156 568 T
+1 F
+(num_shapes) 166 568 T
+2 F
+( >= 4, and resizes the shapes array if it isn\325t. If this function suc-) 225.32 568 T
+(ceeds, you are guaranteed to have space for the number of shapes you need.) 108 555 T
+(When you call an editing function for a structure, you do not need to check for space,) 108 534 T
+-0.26 (because the function automatically checks the) 108 521 P
+1 F
+-0.26 (sz_) 329.72 521 P
+2 F
+-0.26 ( and) 345.06 521 P
+1 F
+-0.26 (num_) 367.87 521 P
+2 F
+-0.26 ( fields of the array, resizes the) 394.53 521 P
+(array if necessary, adds the entry to the array, and then updates the) 108 508 T
+1 F
+(num_) 430.91 508 T
+2 F
+( field.) 457.57 508 T
+0 F
+(3.3) 72 483 T
+(Making Chang) 108 483 T
+(es to the Ser) 190.13 483 T
+(ver\325) 262.27 483 T
+(s K) 282.9 483 T
+(e) 301.39 483 T
+(yboar) 307.88 483 T
+(d Description) 340.32 483 T
+2 F
+(In Xkb, as in the core protocol, the client and server have independent copies of the data) 108 463 T
+-0.49 (structures that describe the keyboard. The recommended way to change some aspect of the) 108 450 P
+(keyboard mapping in the X server is to edit a local copy of the Xkb keyboard description) 108 437 T
+(and then send only the changes to the X server. This method helps eliminate the need to) 108 424 T
+(transfer the entire keyboard description or even an entire data structure for only minor) 108 411 T
+(changes.) 108 398 T
+(To help you keep track of the changes you make to a local copy of the keyboard descrip-) 108 377 T
+-0.07 (tion, Xkb provides separate special) 108 364 P
+1 F
+-0.07 (c) 278.95 364 P
+-0.07 (hang) 284.09 364 P
+-0.07 (es) 307.97 364 P
+2 F
+-0.07 ( data structures for each major Xkb data struc-) 317.97 364 P
+-0.31 (ture. These data structures do not contain the actual changed values: they only indicate the) 108 351 P
+(changes that have been made to the structures that actually describe the keyboard.) 108 338 T
+(When you wish to change the keyboard description in the server, you first modify a local) 108 317 T
+(copy of the keyboard description and then flag the modifications in an appropriate) 108 304 T
+(changes data structure. When you finish editing the local copy of the keyboard descrip-) 108 291 T
+(tion, you pass your modified version of the keyboard description and the modified) 108 278 T
+(changes data structure to an Xkb function. This function uses the modified keyboard) 108 265 T
+-0.26 (description and changes structure to pass only the changed information to the server. Note) 108 252 P
+(that modifying the keyboard description but not setting the appropriate flags in the) 108 239 T
+(changes data structure causes indeterminate behavior.) 108 226 T
+0 F
+(3.4) 72 201 T
+(T) 108 201 T
+(rac) 114.37 201 T
+(king K) 132.14 201 T
+(e) 168.64 201 T
+(yboar) 175.13 201 T
+(d Chang) 207.56 201 T
+(es in the Ser) 255.68 201 T
+(ver) 327.17 201 T
+2 F
+(The server reports all changes in its keyboard description to any interested clients via spe-) 108 181 T
+-0.13 (cial Xkb events. Just as clients use special changes data structures to change the keyboard) 108 168 P
+(description in the server, the server uses special changes data structures to tell a client) 108 155 T
+(what changed in the server\325s keyboard description.) 108 142 T
+(Unlike clients, however, the server does not always pass the new values when it reports) 108 121 T
+(changes to its copy of the keyboard description. Instead, the server only passes a changes) 108 108 T
+(data structure when it reports changes to its keyboard description. This is done for effi-) 108 95 T
+(ciency reasons \321 some clients do not always need to update their copy of the keyboard) 108 82 T
+(description with every report from the server.) 108 69 T
+FMENDPAGE
+%%EndPage: "12" 24
+%%Page: "13" 25
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(13) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(3 Data Structures) 458.13 744.87 T
+2 12 Q
+(When your client application receives a report from the server indicating the keyboard) 108 712 T
+(description has changed, you can determine the set of changes by passing the event to an) 108 699 T
+(Xkb function that \322notes\323 event information in the corresponding changes data structure.) 108 686 T
+(These \322note changes\323 functions are defined for all major Xkb components, and their) 108 673 T
+(names have the form) 108 660 T
+1 F
+(XkbNote{Component}Chang) 211.31 660 T
+(es) 349.45 660 T
+2 F
+(, where) 359.45 660 T
+1 F
+(Component) 397.76 660 T
+2 F
+( is the name of a) 453.1 660 T
+-0.43 (major Xkb component such as) 108 647 P
+1 F
+-0.43 (Map) 254.82 647 P
+2 F
+-0.43 ( or) 276.81 647 P
+1 F
+-0.43 (Names) 291.94 647 P
+2 F
+-0.43 (. When you want to copy these changes from) 324.61 647 P
+(the server into a local copy of the keyboard description, use the corresponding) 108 634 T
+1 F
+(Xkb-) 486.59 634 T
+(Get{Component}Chang) 108 621 T
+(es) 222.14 621 T
+2 F
+( function) 232.14 621 T
+1 F
+(,) 275.14 621 T
+2 F
+(passing it the changes structure. The function then) 281.14 621 T
+(retrieves only the changed structures from the server and copies the modified pieces into) 108 608 T
+(the local keyboard description.) 108 595 T
+0 F
+(3.5) 72 570 T
+(Freeing Data Structures) 108 570 T
+2 F
+(For the same reasons you should not directly use) 108 550 T
+1 F
+(malloc) 344.98 550 T
+2 F
+( to allocate Xkb data structures,) 377.64 550 T
+(you should not free Xkb data structures or components directly using) 108 537 T
+1 F
+(fr) 442.96 537 T
+(ee) 450.52 537 T
+2 F
+( or) 461.17 537 T
+1 F
+(Xfr) 477.17 537 T
+(ee) 492.06 537 T
+2 F
+(. Xkb) 502.72 537 T
+(provides functions to free the various data structures and their components.) 108 524 T
+508.6 522.8 471.94 522.8 2 L
+V
+0.6 H
+0 Z
+N
+(Always) 471.94 524 T
+( use) 508.6 524 T
+(the free functions supplied by Xkb. There is no guarantee that any particular field can be) 108 511 T
+(safely freed by) 108 498 T
+1 F
+(fr) 182.3 498 T
+(ee) 189.86 498 T
+2 F
+( or) 200.52 498 T
+1 F
+(Xfr) 216.52 498 T
+(ee) 231.41 498 T
+2 F
+(.) 242.06 498 T
+FMENDPAGE
+%%EndPage: "13" 25
+%%Page: "14" 26
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(14) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(4 Xkb Ev) 474.78 744.87 T
+(ents) 522.28 744.87 T
+0 14 Q
+(4) 72 710.67 T
+(Xkb Events) 108 710.67 T
+2 12 Q
+-0.02 (The primary way the X server communicates with clients is by sending X events to them.) 108 688 P
+-0.31 (Some events are sent to all clients, while others are sent only to clients that have requested) 108 675 P
+(them. Some of the events that can be requested are associated with a particular window) 108 662 T
+-0.2 (and are only sent to those clients who have both requested the event and specified the win-) 108 649 P
+(dow in which the event occurred.) 108 636 T
+(The Xkb extension uses events to communicate the keyboard status to interested clients.) 108 615 T
+-0.38 (These events are not associated with a particular window. Instead, all Xkb keyboard status) 108 602 P
+(events are reported to all interested clients, regardless of which window currently has the) 108 589 T
+(keyboard focus and regardless of the grab state of the keyboard.) 108 576 T
+2 9.6 Q
+(1) 414.91 580.8 T
+2 12 Q
+(The X server reports the events defined by the Xkb extension to your client application) 108 555 T
+-0.21 (only if you have requested them. You may request Xkb events by calling either) 108 542 P
+1 F
+-0.21 (XkbSelect-) 488.69 542 P
+-0.54 (Events) 108 529 P
+2 F
+-0.54 (or) 142.46 529 P
+1 F
+-0.54 (XkbSelectEventDetails) 154.91 529 P
+2 F
+-0.54 (.) 264.22 529 P
+1 F
+-0.54 (XkbSelectEvents) 269.69 529 P
+2 F
+-0.54 ( requests Xkb events by their event type) 348.99 529 P
+-0.35 (and causes them to be reported to your client application under all circumstances. You can) 108 516 P
+-0.33 (specify a finer granularity for event reporting by using) 108 503 P
+1 F
+-0.33 (XkbSelectEventDetails) 369.33 503 P
+2 F
+-0.33 (; in this case) 478.64 503 P
+(events are reported only when the specific detail conditions you specify have been met.) 108 490 T
+0 F
+(4.1) 72 465 T
+(Xkb Event T) 108 465 T
+(ypes) 175.97 465 T
+2 F
+-0.06 (The Xkb Extension adds new event types to the X protocol definition. An Xkb event type) 108 445 P
+(is defined by two fields in the X event data structure. One is the) 108 432 T
+1 F
+(type) 416.95 432 T
+2 F
+( field, containing the) 436.94 432 T
+1 F
+(base e) 108 419 T
+(vent code) 138.14 419 T
+(.) 183.61 419 T
+2 F
+( This base event code is a value the X server assigns to each X extension) 186.61 419 T
+-0.26 (at runtime and thatidentifies the extension that generated the event; thus, the event code in) 108 406 P
+(the) 108 393 T
+1 F
+(type) 125.66 393 T
+2 F
+( field identifies the event as an Xkb extension event, rather than an event from) 145.66 393 T
+-0.38 (another extension or a core X protocol event. You can obtain the base event code via a call) 108 380 P
+-0.28 (to) 108 367 P
+1 F
+-0.28 (XkbQueryExtension) 120.06 367 P
+2 F
+-0.28 ( or) 216.04 367 P
+1 F
+-0.28 (XkbOpenDisplay) 231.48 367 P
+2 F
+-0.28 (. The second field is the Xkb event type, which) 313.46 367 P
+(contains a value uniquely identifying each different Xkb event type. Possible values are) 108 354 T
+(defined by constants declared in the header file) 108 341 T
+1 F
+(<X11/extensions/Xkb.h>.) 337.27 341 T
+2 F
+-0.2 (Table 4.1 lists the categories of events defined by Xkb and their associated event types, as) 108 320 P
+(defined in) 108 307 T
+1 F
+(Xkb) 159.32 307 T
+(.h) 177.5 307 T
+2 F
+(. Each event is described in more detail in the section referenced for that) 186.5 307 T
+(event.) 108 294 T
+72 90 540 110 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 98 204 98 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+0 0 612 792 C
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(1.) 72 83.33 T
+(The one exception to this rule is the) 84.5 83.33 T
+5 F
+-0.5 (XkbExtensionDeviceNotify) 230.04 83.33 S
+2 F
+( event report that is sent when a client) 362.04 83.33 T
+(attempts to use an unsupported feature of an X Input Extension device \050see section 21.4\051.) 72 71.33 T
+3 12 Q
+(T) 262.8 274 T
+(able 4.1 Xkb Ev) 269.7 274 T
+(ent T) 353.92 274 T
+(ypes) 380.04 274 T
+1 F
+(Event T) 109 254 T
+(ype) 145.11 254 T
+(Conditions Gener) 260.5 254 T
+(ating Event) 345.99 254 T
+(Section) 454.75 254 T
+(P) 499.75 254 T
+(a) 506.12 254 T
+(g) 512 254 T
+(e) 517.88 254 T
+5 11 Q
+-0.33 (XkbNewKeyboardNotify) 109 239.67 S
+2 F
+(K) 260.5 239.67 T
+(e) 268.17 239.67 T
+(yboard geometry; k) 272.89 239.67 T
+(e) 358.93 239.67 T
+(ycode range change) 363.65 239.67 T
+(19) 454.75 239.67 T
+(187) 499.75 239.67 T
+5 F
+-0.33 (XkbMapNotify) 109 225.67 S
+2 F
+(K) 260.5 225.67 T
+(e) 268.17 225.67 T
+(yboard mapping change) 272.89 225.67 T
+(14.4) 454.75 225.67 T
+(122) 499.75 225.67 T
+5 F
+-0.33 (XkbStateNotify) 109 211.67 S
+2 F
+(K) 260.5 211.67 T
+(e) 268.17 211.67 T
+(yboard state change) 272.89 211.67 T
+(5.4) 454.75 211.67 T
+(25) 499.75 211.67 T
+5 F
+-0.33 (XkbControlsNotify) 109 197.67 S
+2 F
+(K) 260.5 197.67 T
+(e) 268.17 197.67 T
+(yboard controls state change) 272.89 197.67 T
+(10.11) 454.75 197.67 T
+(79) 499.75 197.67 T
+5 F
+-0.33 (XkbIndicatorStateNotify) 109 183.67 S
+2 F
+(K) 260.5 183.67 T
+(e) 268.17 183.67 T
+(yboard indicators state change) 272.89 183.67 T
+(8.5) 454.75 183.67 T
+(45) 499.75 183.67 T
+5 F
+-0.33 (XkbIndicatorMapNotify) 109 169.67 S
+2 F
+(K) 260.5 169.67 T
+(e) 268.17 169.67 T
+(yboard indicators map change) 272.89 169.67 T
+(8.5) 454.75 169.67 T
+(45) 499.75 169.67 T
+5 F
+-0.33 (XkbNamesNotify) 109 155.67 S
+2 F
+(K) 260.5 155.67 T
+(e) 268.17 155.67 T
+(yboard name change) 272.89 155.67 T
+(18.5) 454.75 155.67 T
+(185) 499.75 155.67 T
+5 F
+-0.33 (XkbCompatMapNotify) 109 141.67 S
+2 F
+(K) 260.5 141.67 T
+(e) 268.17 141.67 T
+(yboard compatibility map change) 272.89 141.67 T
+(17.5) 454.75 141.67 T
+(178) 499.75 141.67 T
+5 F
+-0.33 (XkbBellNotify) 109 127.67 S
+2 F
+(K) 260.5 127.67 T
+(e) 268.17 127.67 T
+(yboard bell generated) 272.89 127.67 T
+(9.4) 454.75 127.67 T
+(52) 499.75 127.67 T
+108 266 543.75 266 2 L
+V
+0.5 H
+0 Z
+N
+108 249 543.75 249 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "14" 26
+%%Page: "15" 27
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(15) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(4 Xkb Ev) 474.78 744.87 T
+(ents) 522.28 744.87 T
+0 12 Q
+(4.2) 72 625 T
+(Xkb Event Data Structures) 108 625 T
+2 F
+-0.29 (Xkb reports each event it generates in a unique structure holding the data values needed to) 108 605 P
+-0.38 (describe the conditions the event is reporting. However, all Xkb events have certain things) 108 592 P
+(in common. These common features are contained in the same fields at the beginning of) 108 579 T
+(all Xkb event structures and are described in the) 108 566 T
+5 F
+-0.6 (XkbAnyEvent) 342.28 566 S
+2 F
+( structure:) 414.88 566 T
+2 11 Q
+(typedef struct {) 126 545.67 T
+(int) 144 532.67 T
+(type;) 234 532.67 T
+(/* Xkb e) 297 532.67 T
+(xtension base e) 334.72 532.67 T
+(v) 401.65 532.67 T
+(ent code */) 406.99 532.67 T
+(unsigned long) 144 519.67 T
+(serial;) 234 519.67 T
+(/* X serv) 297 519.67 T
+(er serial number for e) 337.16 519.67 T
+(v) 431.57 519.67 T
+(ent */) 436.91 519.67 T
+(Bool) 144 506.67 T
+(send_e) 234 506.67 T
+(v) 264.27 506.67 T
+(ent;) 269.61 506.67 T
+(/*) 297 506.67 T
+5 12 Q
+-0.6 (True) 308.31 506.67 S
+2 11 Q
+( => synthetically generated */) 334.71 506.67 T
+(Display *) 144 493.67 T
+(display;) 234 493.67 T
+(/* serv) 297 493.67 T
+(er connection where e) 326.47 493.67 T
+(v) 423.02 493.67 T
+(ent generated */) 428.35 493.67 T
+(T) 144 480.67 T
+(ime) 150.34 480.67 T
+(time;) 234 480.67 T
+(/* serv) 297 480.67 T
+(er time when e) 326.47 480.67 T
+(v) 391.26 480.67 T
+(ent generated */) 396.59 480.67 T
+(int) 144 467.67 T
+(xkb_type;) 234 467.67 T
+(/* Xkb minor e) 297 467.67 T
+(v) 363.64 467.67 T
+(ent code */) 368.97 467.67 T
+(unsigned int) 144 454.67 T
+(de) 234 454.67 T
+(vice;) 244.11 454.67 T
+(/* Xkb de) 297 454.67 T
+(vice ID, will not be) 340.11 454.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 428.1 454.67 S
+2 F
+( */) 509.61 454.67 T
+(}) 126 441.67 T
+3 F
+(XkbAnyEv) 134.03 441.67 T
+(ent) 186.49 441.67 T
+2 F
+(;) 201.15 441.67 T
+2 12 Q
+(For any Xkb event, the) 108 422 T
+1 F
+(type) 221.32 422 T
+2 F
+( field is set to the base event code for the Xkb extension,) 241.31 422 T
+(assigned by the server to all Xkb extension events. The) 108 409 T
+1 F
+(serial) 375.62 409 T
+2 F
+(,) 402.96 409 T
+1 F
+(send_event) 408.96 409 T
+2 F
+(, and) 462.28 409 T
+1 F
+(display) 488.6 409 T
+2 F
+(fields are as described for all X11 events. The) 108 396 T
+1 F
+(time) 331.27 396 T
+2 F
+( field is set to the time when the event) 351.94 396 T
+(was generated and is expressed in milliseconds. The) 108 383 T
+1 F
+(xkb_type) 361.62 383 T
+2 F
+( field contains the minor) 404.27 383 T
+(extension event code, which is the extension event type, and is one of the values listed in) 108 370 T
+(Table 4.1. The) 108 357 T
+1 F
+(device) 180.98 357 T
+2 F
+( field contains the keyboard device identifier associated with the) 211.63 357 T
+(event. This is never) 108 344 T
+5 F
+-0.6 (XkbUseCoreKbd) 204.98 344 S
+2 F
+(, even if the request that generated the event speci-) 290.79 344 T
+(fied a device of) 108 331 T
+5 F
+-0.6 (XkbUseCoreKbd) 185.3 331 S
+2 F
+(. If the request that generated the event specified) 271.11 331 T
+5 F
+-0.6 (XkbUseCoreKbd) 108 318 S
+2 F
+(,) 193.8 318 T
+1 F
+(device) 199.8 318 T
+2 F
+( contains a value assigned by the server to specify the core key-) 230.45 318 T
+-0.33 (board. If the request that generated the event specified an X input extension device,) 108 305 P
+1 F
+-0.33 (device) 506.68 305 P
+2 F
+(contains that same identifier.) 108 292 T
+(Other data fields specific to individual Xkb events are described in subsequent chapters) 108 271 T
+(where the events are described.) 108 258 T
+0 F
+(4.3) 72 233 T
+(Selecting Xkb Events) 108 233 T
+2 F
+(Xkb events are selected using an event mask, much the same as normal core X events are) 108 213 T
+(selected. However, unlike selecting core X events, where you must specify the selection) 108 200 T
+(status \050on or off\051 for all possible event types whenever you wish to change the selection) 108 187 T
+(criteria for any one event, Xkb allows you to restrict the specification to only the event) 108 174 T
+(types you wish to change. This means that you do not need to remember the event selec-) 108 161 T
+(tion values for all possible types each time you want to change one of them.) 108 148 T
+(Many Xkb event types are generated under several different circumstances. When select-) 108 127 T
+(ing to receive an Xkb event, you may specify either that you want it delivered under all) 108 114 T
+(circumstances, or that you want it delivered only for a subset of the possible circum-) 108 101 T
+(stances.) 108 88 T
+5 11 Q
+-0.33 (XkbActionMessage) 109 677.67 S
+2 F
+(K) 260.5 677.67 T
+(e) 268.17 677.67 T
+(yboard action message) 272.89 677.67 T
+(16.1.11) 454.75 677.67 T
+(155) 499.75 677.67 T
+5 F
+-0.33 (XkbAccessXNotify) 109 663.67 S
+2 F
+(AccessX state change) 260.5 663.67 T
+(10.6.4) 454.75 663.67 T
+(65) 499.75 663.67 T
+5 F
+-0.33 (XkbExtensionDeviceNotify) 109 649.67 S
+2 F
+(Extension de) 260.5 649.67 T
+(vice change) 317.36 649.67 T
+(21.6) 454.75 649.67 T
+(207) 499.75 649.67 T
+3 12 Q
+(T) 262.8 712 T
+(able 4.1 Xkb Ev) 269.7 712 T
+(ent T) 353.92 712 T
+(ypes) 380.04 712 T
+1 F
+(Event T) 109 692 T
+(ype) 145.11 692 T
+(Conditions Gener) 260.5 692 T
+(ating Event) 345.99 692 T
+(Section) 454.75 692 T
+(P) 499.75 692 T
+(a) 506.12 692 T
+(g) 512 692 T
+(e) 517.88 692 T
+108 704 543.75 704 2 L
+V
+0.5 H
+0 Z
+N
+108 687 543.75 687 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "15" 27
+%%Page: "16" 28
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(16) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(4 Xkb Ev) 474.78 744.87 T
+(ents) 522.28 744.87 T
+2 12 Q
+(You can also deselect an event type that was previously selected for, using the same gran-) 108 712 T
+(ularity.) 108 699 T
+(Xkb provides two functions to select and deselect delivery of Xkb events.) 108 678 T
+1 F
+(XkbSelect-) 464.94 678 T
+(Events) 108 665 T
+2 F
+( allows you to select or deselect delivery of more than one Xkb event type at once.) 139.99 665 T
+(Events selected using) 108 652 T
+1 F
+(XkbSelectEvents) 214.32 652 T
+2 F
+( are delivered to your program under all circum-) 293.63 652 T
+(stances that generate the events. To restrict delivery of an event to a subset of the condi-) 108 639 T
+(tions under which it occurs, use) 108 626 T
+1 F
+(XkbSelectEventDetails) 262.98 626 T
+2 F
+(.) 372.29 626 T
+1 F
+(XkbSelectEventDetails) 378.29 626 T
+2 F
+( only) 487.6 626 T
+-0.16 (allows you to change the selection conditions for a single event at a time, but it provides a) 108 613 P
+(means of fine-tuning the conditions under which the event is delivered.) 108 600 T
+-0.4 (To select and / or deselect for delivery of one or more Xkb events and have them delivered) 108 579 P
+(under all conditions, use) 108 566 T
+1 F
+(XkbSelectEvents) 228.32 566 T
+2 F
+(.) 307.63 566 T
+2 11 Q
+(Bool) 108 545.67 T
+3 F
+(XkbSelectEv) 132.15 545.67 T
+(ents) 192.54 545.67 T
+2 F
+(\050) 211.48 545.67 T
+1 F
+(display) 215.14 545.67 T
+(, de) 246.31 545.67 T
+(vice_spec, bits_to_c) 262.03 545.67 T
+(hang) 350.46 545.67 T
+(e) 372.35 545.67 T
+(, values_for_bits) 377.13 545.67 T
+2 F
+(\051) 450.46 545.67 T
+(Display *) 126 532.67 T
+1 F
+(display) 207 532.67 T
+2 F
+(;) 238.78 532.67 T
+(/* connection to the X serv) 279 532.67 T
+(er */) 397.68 532.67 T
+(unsigned int) 126 519.67 T
+1 F
+(de) 207 519.67 T
+(vice_spec) 217.22 519.67 T
+2 F
+(;) 259.98 519.67 T
+(/* de) 279 519.67 T
+(vice ID, or) 300.42 519.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 350.51 519.67 S
+2 F
+( */) 429.16 519.67 T
+(unsigned long int) 126 506.67 T
+1 F
+(bits_to_c) 207 506.67 T
+(hang) 247.17 506.67 T
+(e;) 269.06 506.67 T
+2 F
+(/* determines e) 279 506.67 T
+(v) 345.93 506.67 T
+(ents to be selected / deselected */) 351.27 506.67 T
+(unsigned long int) 126 493.67 T
+1 F
+(values_for_bits) 207 493.67 T
+2 F
+(;) 274.84 493.67 T
+(/* 1=>select, 0->deselect; for e) 279 493.67 T
+(v) 415.55 493.67 T
+(ents in) 420.89 493.67 T
+1 F
+(bits_to_c) 452.67 493.67 T
+(hang) 492.84 493.67 T
+(e) 514.73 493.67 T
+2 F
+( */) 519.61 493.67 T
+2 12 Q
+(This request changes the Xkb event selection mask for the keyboard specified by) 108 474 T
+1 F
+(de) 108 461 T
+(vice_spec) 119.15 461 T
+2 F
+(.) 165.79 461 T
+(Each Xkb event that can be selected is represented by a bit in the) 108 440 T
+1 F
+(bits_to_c) 422.59 440 T
+(hang) 466.42 440 T
+(e) 490.3 440 T
+2 F
+( and) 495.62 440 T
+1 F
+(values_for_bits) 108 427 T
+2 F
+( masks. Only the event selection bits specified by the) 182 427 T
+1 F
+(bits_to_c) 439.64 427 T
+(hang) 483.47 427 T
+(e) 507.35 427 T
+2 F
+-0.25 (parameter are affected; any unspecified bits are left unchanged. To turn on event selection) 108 414 P
+(for an event, set the bit for the event in the) 108 401 T
+1 F
+(bits_to_c) 314.63 401 T
+(hang) 358.45 401 T
+(e) 382.33 401 T
+2 F
+( parameter and set the corre-) 387.66 401 T
+-0.11 (sponding bit in the) 108 388 P
+1 F
+-0.11 (values_for_bits) 200.25 388 P
+2 F
+-0.11 ( parameter. To turn off event selection for an event, set) 274.25 388 P
+(the bit for the event in the) 108 375 T
+1 F
+(bits_to_c) 234.98 375 T
+(hang) 278.81 375 T
+(e) 302.69 375 T
+2 F
+( parameter and do not set the corresponding bit) 308.02 375 T
+(in the) 108 362 T
+1 F
+(values_for_bits) 138 362 T
+2 F
+( parameter. The valid values for both of these parameters are an) 212 362 T
+-0.25 (inclusive bitwise OR of the masks shown in Table 4.2. There is no interface to return your) 108 349 P
+(client\325s current event selection mask. Clients cannot set other clients\325 event selection) 108 336 T
+(masks.) 108 323 T
+(If a bit is not set in the) 108 302 T
+1 F
+(bits_to_c) 218.66 302 T
+(hang) 262.49 302 T
+(e) 286.37 302 T
+2 F
+( parameter, but the corresponding bit is set in the) 291.7 302 T
+1 F
+-0.1 (values_for_bits) 108 289 P
+2 F
+-0.1 ( parameter, a) 182 289 P
+5 F
+-0.22 -0.6 (BadMatch) 247.01 289 B
+2 F
+-0.1 ( protocol error results. If an undefined bit is set in) 299.81 289 P
+(either the) 108 276 T
+1 F
+(bits_to_c) 155.99 276 T
+(hang) 199.81 276 T
+(e) 223.69 276 T
+2 F
+( or the) 229.02 276 T
+1 F
+(values_for_bits) 262.68 276 T
+2 F
+( parameter, a) 336.68 276 T
+5 F
+-0.6 (BadValue) 401.99 276 S
+2 F
+( protocol error) 454.79 276 T
+(results.) 108 263 T
+-0.14 (All event selection bits are initially zero for clients using the Xkb extension. Once you set) 108 242 P
+(some bits, they remain set for your client until you clear them via another call to) 108 229 T
+1 F
+(XkbSe-) 496.28 229 T
+(lectEvents) 108 216 T
+2 F
+(.) 157.32 216 T
+1 F
+(XkbSelectEvents) 108 195 T
+2 F
+( returns) 187.31 195 T
+5 F
+-0.6 (False) 226.63 195 S
+2 F
+( if the Xkb extension has not been initilialized and) 259.63 195 T
+5 F
+-0.6 (True) 504.28 195 S
+2 F
+(otherwise.) 108 182 T
+(To select or deselect for a specific Xkb event and optionally place conditions on when) 108 161 T
+-0.28 (events of that type are reported to your client, use) 108 148 P
+1 F
+-0.28 (XkbSelectEventDetails) 346.14 148 P
+2 F
+-0.28 (. This allows you) 455.45 148 P
+FMENDPAGE
+%%EndPage: "16" 28
+%%Page: "17" 29
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(17) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(4 Xkb Ev) 474.78 744.87 T
+(ents) 522.28 744.87 T
+2 12 Q
+(to exercise a finer granularity of control over delivery of Xkb events with) 108 712 T
+1 F
+(XkbSelect-) 463.58 712 T
+(Events) 108 699 T
+2 F
+(.) 139.99 699 T
+2 11 Q
+(Bool) 108 678.67 T
+3 F
+(XkbSelectEv) 132.15 678.67 T
+(entDetails) 192.54 678.67 T
+2 F
+(\050) 239.58 678.67 T
+1 F
+(display) 243.24 678.67 T
+(, de) 274.42 678.67 T
+(vice_spec, e) 290.14 678.67 T
+(vent_type) 343.11 678.67 T
+(, bits_to_c) 385.16 678.67 T
+(hang) 430.83 678.67 T
+(e) 452.72 678.67 T
+2 F
+(,) 457.6 678.67 T
+1 F
+(values_for_bits) 463.1 678.67 T
+2 F
+(\051) 530.94 678.67 T
+(Display *) 126 665.67 T
+1 F
+(display) 207 665.67 T
+2 F
+(;) 238.78 665.67 T
+(/* connection to the X serv) 279 665.67 T
+(er */) 397.68 665.67 T
+(unsigned int) 126 652.67 T
+1 F
+(de) 207 652.67 T
+(vice_spec) 217.22 652.67 T
+2 F
+(;) 259.98 652.67 T
+(/* de) 279 652.67 T
+(vice ID, or) 300.42 652.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 350.51 652.67 S
+2 F
+( */) 429.16 652.67 T
+(unsigned int) 126 639.67 T
+1 F
+(e) 207 639.67 T
+(vent_type) 211.72 639.67 T
+2 F
+(;) 253.87 639.67 T
+(/* Xkb e) 279 639.67 T
+(v) 316.61 639.67 T
+(ent type of interest */) 321.94 639.67 T
+(unsigned long int) 126 626.67 T
+1 F
+(bits_to_c) 207 626.67 T
+(hang) 247.17 626.67 T
+(e) 269.06 626.67 T
+2 F
+(;) 273.95 626.67 T
+(/* e) 279 626.67 T
+(v) 294.92 626.67 T
+(ent selection details */) 300.25 626.67 T
+(unsigned long int) 126 613.67 T
+1 F
+(values_for_bits) 207 613.67 T
+2 F
+(;) 274.84 613.67 T
+(/* v) 279 613.67 T
+(alues for bits selected by) 295.53 613.67 T
+1 F
+(bits_to_c) 407.04 613.67 T
+(hang) 447.21 613.67 T
+(e) 469.1 613.67 T
+2 F
+( */) 473.99 613.67 T
+2 12 Q
+(While) 108 594 T
+1 F
+(XkbSelectEvents) 140.33 594 T
+2 F
+( allows multiple events to be selected,) 219.64 594 T
+1 F
+(XkbSelectEventDetails) 404.95 594 T
+2 F
+(changes the selection criteria for a single type of Xkb event. The interpretation of the) 108 581 T
+1 F
+(bits_to_c) 108 568 T
+(hang) 151.82 568 T
+(e) 175.7 568 T
+2 F
+( and) 181.03 568 T
+1 F
+(values_for_bits) 204.36 568 T
+2 F
+( masks depends on the event type in question.) 278.36 568 T
+1 F
+(XkbSelectEventDetails) 108 547 T
+2 F
+( changes the Xkb event selection mask for the keyboard specified) 217.31 547 T
+(by) 108 534 T
+1 F
+(de) 123 534 T
+(vice_spec) 134.15 534 T
+2 F
+( and the Xkb event specified by) 180.79 534 T
+1 F
+(e) 335.76 534 T
+(vent_type) 340.91 534 T
+2 F
+(. To turn on event selection for) 386.89 534 T
+(an event detail, set the bit for the detail in the) 108 521 T
+1 F
+(bits_to_c) 327.97 521 T
+(hang) 371.8 521 T
+(e) 395.68 521 T
+2 F
+( parameter and set the corre-) 401 521 T
+(sponding bit in the) 108 508 T
+1 F
+(values_for_bits) 200.68 508 T
+2 F
+( parameter. To turn off event detail selection for a) 274.68 508 T
+(detail, set the bit for the detail in the) 108 495 T
+1 F
+(bits_to_c) 284.65 495 T
+(hang) 328.48 495 T
+(e) 352.36 495 T
+2 F
+( parameter and do not set the corre-) 357.68 495 T
+(sponding bit in the) 108 482 T
+1 F
+(values_for_bits) 200.68 482 T
+2 F
+( parameter.) 274.68 482 T
+-0.34 (If an invalid event type is specified, a) 108 461 P
+5 F
+-0.74 -0.6 (BadValue) 288.27 461 B
+2 F
+-0.34 ( protocol error results. If a bit is not set in) 341.07 461 P
+(the) 108 448 T
+1 F
+(bits_to_c) 125.66 448 T
+(hang) 169.49 448 T
+(e) 193.37 448 T
+2 F
+( parameter, but the corresponding bit is set in the) 198.7 448 T
+1 F
+(values_for_bits) 436.33 448 T
+2 F
+(parameter, a) 108 435 T
+5 F
+-0.6 (BadMatch) 170.3 435 S
+2 F
+( protocol error results. If an undefined bit is set in either the) 223.1 435 T
+1 F
+(bits_to_c) 108 422 T
+(hang) 151.82 422 T
+(e) 175.7 422 T
+2 F
+( or the) 181.03 422 T
+1 F
+(values_for_bits) 214.69 422 T
+2 F
+( parameter, a) 288.7 422 T
+5 F
+-0.6 (BadValue) 354 422 S
+2 F
+( protocol error results.) 406.8 422 T
+(For each type of Xkb event, the legal event details that you can specify in the) 108 401 T
+1 F
+(XkbSelect-) 481.6 401 T
+(EventDetails) 108 388 T
+2 F
+( request are listed in the chapters that describe each event in detail.) 169.99 388 T
+0 F
+(4.3.1) 72 363 T
+(Event Masks) 108 363 T
+2 F
+-0.21 (The X server reports the events defined by Xkb to your client application only if you have) 108 343 P
+(requested them via a call to) 108 330 T
+1 F
+(XkbSelectEvents) 242.64 330 T
+2 F
+( or) 321.95 330 T
+1 F
+(XkbSelectEventDetails) 337.94 330 T
+2 F
+(. Specify the event) 447.25 330 T
+(types in which you are interested in a mask, as described in section 4.3.) 108 317 T
+(Table 4.2 lists the event mask constants that can be specified with the) 108 296 T
+1 F
+(XkbSelectEvents) 444.62 296 T
+2 F
+(request and the circumstances in which the mask should be specified.) 108 283 T
+3 F
+(T) 218.48 263 T
+(able 4.2 XkbSelectEv) 225.38 263 T
+(ents Mask Constants) 336.6 263 T
+1 F
+(Event Mask) 110.95 243 T
+(V) 304.21 243 T
+(alue) 310.21 243 T
+(Noti\336cation W) 374.61 243 T
+(anted) 443.18 243 T
+5 11 Q
+-0.33 (XkbNewKeyboardNotifyMask) 110.95 228.67 S
+2 F
+(\0501L<<0\051) 304.21 228.67 T
+(K) 374.61 228.67 T
+(e) 382.27 228.67 T
+(yboard geometry change) 386.99 228.67 T
+5 F
+-0.33 (XkbMapNotifyMask) 110.95 214.67 S
+2 F
+(\0501L<<1\051) 304.21 214.67 T
+(K) 374.61 214.67 T
+(e) 382.27 214.67 T
+(yboard mapping change) 386.99 214.67 T
+5 F
+-0.33 (XkbStateNotifyMask) 110.95 200.67 S
+2 F
+(\0501L<<2\051) 304.21 200.67 T
+(K) 374.61 200.67 T
+(e) 382.27 200.67 T
+(yboard state change) 386.99 200.67 T
+5 F
+-0.33 (XkbControlsNotifyMask) 110.95 186.67 S
+2 F
+(\0501L<<3\051) 304.21 186.67 T
+(K) 374.61 186.67 T
+(e) 382.27 186.67 T
+(yboard control change) 386.99 186.67 T
+5 F
+-0.33 (XkbIndicatorStateNotifyMask) 110.95 172.67 S
+2 F
+(\0501L<<4\051) 304.21 172.67 T
+(K) 374.61 172.67 T
+(e) 382.27 172.67 T
+(yboard indicator state change) 386.99 172.67 T
+5 F
+-0.33 (XkbIndicatorMapNotifyMask) 110.95 158.67 S
+2 F
+(\0501L<<5\051) 304.21 158.67 T
+(K) 374.61 158.67 T
+(e) 382.27 158.67 T
+(yboard indicator map change) 386.99 158.67 T
+5 F
+-0.33 (XkbNamesNotifyMask) 110.95 144.67 S
+2 F
+(\0501L<<6\051) 304.21 144.67 T
+(K) 374.61 144.67 T
+(e) 382.27 144.67 T
+(yboard name change) 386.99 144.67 T
+5 F
+-0.33 (XkbCompatMapNotifyMask) 110.95 130.67 S
+2 F
+(\0501L<<7\051) 304.21 130.67 T
+(K) 374.61 130.67 T
+(e) 382.27 130.67 T
+(yboard compat map change) 386.99 130.67 T
+5 F
+-0.33 (XkbBellNotifyMask) 110.95 116.67 S
+2 F
+(\0501L<<8\051) 304.21 116.67 T
+(Bell) 374.61 116.67 T
+5 F
+-0.33 (XkbActionMessageMask) 110.95 102.67 S
+2 F
+(\0501L<<9\051) 304.21 102.67 T
+(Action message) 374.61 102.67 T
+5 F
+-0.33 (XkbAccessXNotifyMask) 110.95 88.67 S
+2 F
+(\0501L<<10\051) 304.21 88.67 T
+(AccessX features) 374.61 88.67 T
+5 F
+-0.33 (XkbExtensionDeviceNotifyMask) 110.95 74.67 S
+2 F
+(\0501L<<11\051) 304.21 74.67 T
+(Extension de) 374.61 74.67 T
+(vice) 431.47 74.67 T
+109.95 255 538.05 255 2 L
+V
+0.5 H
+0 Z
+N
+109.95 238 538.05 238 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "17" 29
+%%Page: "18" 30
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(18) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(4 Xkb Ev) 474.78 744.87 T
+(ents) 522.28 744.87 T
+0 12 Q
+(4.4) 72 653 T
+(Uni\336ed Xkb Event T) 108 653 T
+(ype) 219.97 653 T
+2 F
+(The) 108 633 T
+5 F
+-0.6 (XkbEvent) 129.66 633 S
+2 F
+( structure is a union of the individual structures declared for each Xkb) 182.46 633 T
+-0.44 (event type and for the core protocol) 108 620 P
+5 F
+-0.98 -0.6 (XEvent) 279.18 620 B
+2 F
+-0.44 ( type. Given an) 318.78 620 P
+5 F
+-0.98 -0.6 (XkbEvent) 393.32 620 B
+2 F
+-0.44 ( structure, you may) 446.12 620 P
+-0.33 (use the) 108 607 P
+1 F
+-0.33 (type) 144 607 P
+2 F
+-0.33 ( field to determine if the event is an Xkb event \050) 163.99 607 P
+1 F
+-0.33 (type) 390.67 607 P
+2 F
+-0.33 ( equals the Xkb base event) 410.67 607 P
+(code; see section 2.4\051. If the event is an Xkb event, you may then use the) 108 594 T
+1 F
+(any.xkb_type) 460.93 594 T
+2 F
+-0.22 (field to determine the type of Xkb event and thereafter access the event-dependent compo-) 108 581 P
+(nents using the union member corresponding to the particular Xkb event type.) 108 568 T
+2 11 Q
+(typedef union _XkbEv) 126 547.67 T
+(ent {) 226.04 547.67 T
+(int) 144 534.67 T
+(type;) 306 534.67 T
+(XkbAn) 144 521.67 T
+(yEv) 176.22 521.67 T
+(ent) 193.77 521.67 T
+(an) 306 521.67 T
+(y;) 316.22 521.67 T
+(XkbStateNotifyEv) 144 508.67 T
+(ent) 225.72 508.67 T
+(state;) 306 508.67 T
+(XkbMapNotifyEv) 144 495.67 T
+(ent) 223.88 495.67 T
+(map;) 306 495.67 T
+(XkbControlsNotifyEv) 144 482.67 T
+(ent) 241.61 482.67 T
+(ctrls;) 306 482.67 T
+(XkbIndicatorNotifyEv) 144 469.67 T
+(ent) 243.43 469.67 T
+(indicators;) 306 469.67 T
+(XkbBellNotifyEv) 144 456.67 T
+(ent) 222.06 456.67 T
+(bell;) 306 456.67 T
+(XkbAccessXNotifyEv) 144 443.67 T
+(ent) 242.81 443.67 T
+(accessx;) 306 443.67 T
+(XkbNamesNotifyEv) 144 430.67 T
+(ent) 234.27 430.67 T
+(names;) 306 430.67 T
+(XkbCompatMapNotifyEv) 144 417.67 T
+(ent) 258.72 417.67 T
+(compat;) 306 417.67 T
+(XkbActionMessageEv) 144 404.67 T
+(ent) 243.43 404.67 T
+(message;) 306 404.67 T
+(XkbExtensionDe) 144 391.67 T
+(viceNotifyEv) 219.49 391.67 T
+(ent) 278.6 391.67 T
+(de) 306 391.67 T
+(vice;) 316.11 391.67 T
+(XkbNe) 144 378.67 T
+(wK) 175.49 378.67 T
+(e) 191.1 378.67 T
+(yboardNotifyEv) 195.82 378.67 T
+(ent) 267.14 378.67 T
+(ne) 306 378.67 T
+(w_kbd;) 316.11 378.67 T
+(XEv) 144 365.67 T
+(ent) 164 365.67 T
+(core;) 306 365.67 T
+(}) 126 352.67 T
+3 F
+(XkbEv) 134.03 352.67 T
+(ent) 166.93 352.67 T
+2 F
+(;) 181.59 352.67 T
+2 12 Q
+-0.01 (This unified Xkb event type includes a normal) 108 333 P
+5 F
+-0.03 -0.6 (XEvent) 333.87 333 B
+2 F
+-0.01 ( as used by the core protocol, so it) 373.47 333 P
+-0.33 (is straightforward for applications that use Xkb events to call the X library event functions) 108 320 P
+-0.22 (without having to cast every reference. For example, to get the next event, you can simply) 108 307 P
+(declare a variable of type) 108 294 T
+5 F
+-0.6 (XkbEvent) 232.28 294 S
+2 F
+( and call:) 285.08 294 T
+2 11 Q
+(XNe) 144 273.67 T
+(xtEv) 164.6 273.67 T
+(ent\050dp) 185.22 273.67 T
+(y) 213.21 273.67 T
+(,&xkbe) 218 273.67 T
+(v) 250.41 273.67 T
+(.core\051;) 255.2 273.67 T
+5 F
+-0.33 (XkbAllEventsMask) 110.95 677.67 S
+2 F
+(\0500xFFF\051) 304.21 677.67 T
+(All Xkb e) 374.61 677.67 T
+(v) 417.72 677.67 T
+(ents) 423.05 677.67 T
+3 12 Q
+(T) 218.48 712 T
+(able 4.2 XkbSelectEv) 225.38 712 T
+(ents Mask Constants) 336.6 712 T
+1 F
+(Event Mask) 110.95 692 T
+(V) 304.21 692 T
+(alue) 310.21 692 T
+(Noti\336cation W) 374.61 692 T
+(anted) 443.18 692 T
+109.95 704 538.05 704 2 L
+V
+0.5 H
+0 Z
+N
+109.95 687 538.05 687 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "18" 30
+%%Page: "19" 31
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(19) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+0 14 Q
+(5) 72 710.67 T
+(K) 108 710.67 T
+(e) 117.9 710.67 T
+(yboar) 125.47 710.67 T
+(d State) 163.31 710.67 T
+2 12 Q
+-0.02 (Keyboard state encompasses all of the transitory information necessary to map a physical) 108 688 P
+-0.04 (key press or release to an appropriate event. The Xkb keyboard state consists of primitive) 108 675 P
+-0.48 (components and additional derived components that are maintained for efficiency reasons.) 108 662 P
+(Figure 5.1 shows the components of Xkb keyboard state and their relationships.) 108 649 T
+3 F
+(Figur) 259.99 234.25 T
+(e 5.1 Xkb State) 288.44 234.25 T
+0 F
+(5.1) 72 206.25 T
+(K) 108 206.25 T
+(e) 116.48 206.25 T
+(yboar) 122.98 206.25 T
+(d State Description) 155.41 206.25 T
+2 F
+(The Xkb keyboard state is comprised of the state of all keyboard modifiers, the keyboard) 108 186.25 T
+(group, and the state of the pointer buttons. These are grouped into the following compo-) 108 173.25 T
+(nents:) 108 160.25 T
+2 11 Q
+(\245) 126 139.92 T
+(The lock) 139.68 139.92 T
+(ed group and lock) 178.37 139.92 T
+(ed modi\336ers) 257.38 139.92 T
+(\245) 126 127.92 T
+(The latched group and latched modi\336ers) 139.68 127.92 T
+(\245) 126 115.92 T
+(The base group and base modi\336ers) 139.68 115.92 T
+(\245) 126 103.92 T
+(The ef) 139.68 103.92 T
+(fecti) 167.81 103.92 T
+(v) 187.08 103.92 T
+(e group and ef) 192.41 103.92 T
+(fecti) 255.37 103.92 T
+(v) 274.64 103.92 T
+(e modi\336ers) 279.97 103.92 T
+(\245) 126 91.92 T
+(The state of the core pointer b) 139.68 91.92 T
+(uttons) 271.43 91.92 T
+55.71 255.25 556.29 645 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+217.21 286.19 396.71 313.19 R
+0.5 H
+0 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 10 Q
+(Compatibility Map) 264.17 298.19 T
+78.96 268.69 549.21 635.06 R
+N
+213.88 539.19 213.88 542.16 224.26 539.19 213.88 536.21 4 Y
+N
+213.88 539.19 213.88 542.16 224.26 539.19 213.88 536.21 4 Y
+V
+203.41 539.19 213.63 539.19 2 L
+N
+322.63 450.69 322.63 453.66 333.01 450.69 322.63 447.71 4 Y
+N
+322.63 450.69 322.63 453.66 333.01 450.69 322.63 447.71 4 Y
+V
+318.17 450.69 322.38 450.69 2 L
+N
+198.16 329.94 318.17 329.94 318.17 540.69 311.08 540.69 4 L
+N
+(Xkb State) 294.86 617.44 T
+227.46 526.14 312.46 553.14 R
+N
+(Effective Modifiers) 230.69 535.19 T
+85.21 349.09 196.46 376.09 R
+N
+(Server Internal Modifiers) 90.04 358.14 T
+85.21 588.49 196.46 615.49 R
+N
+(Base Modifiers) 110.16 597.54 T
+85.21 554.29 196.46 581.29 R
+N
+(Base Group) 117.11 563.34 T
+85.21 520.09 196.46 547.09 R
+N
+(Locked Modifiers) 104.89 529.14 T
+85.21 485.89 196.46 512.89 R
+N
+(Locked Group) 111.83 494.94 T
+85.21 451.69 196.46 478.69 R
+N
+(Latched Modifiers) 103.78 460.74 T
+85.21 417.49 196.46 444.49 R
+N
+(Latched Group) 110.72 426.54 T
+85.21 383.29 196.46 410.29 R
+N
+(Core Pointer Buttons) 98.64 392.34 T
+85.21 314.89 196.46 341.89 R
+N
+(IgnoreLock Modifiers) 96.57 323.94 T
+85.21 280.69 196.46 307.69 R
+N
+(IgnoreGroupLock) 104.76 289.74 T
+335.21 436.39 398.46 463.39 R
+N
+(Lookup State) 340.05 445.44 T
+424.46 569.09 544.71 596.09 R
+N
+(Compatibility State) 445.58 578.14 T
+424.46 534.89 544.71 561.89 R
+N
+(Compatibility Lookup State) 428.78 543.94 T
+424.46 500.69 544.71 527.69 R
+N
+(Compatibility Grab State) 434.34 509.74 T
+227.46 491.94 312.46 518.94 R
+N
+(Effective Group) 237.63 500.99 T
+335.21 402.19 398.46 429.19 R
+N
+(Grab State) 345.6 411.24 T
+196.66 601.94 203.41 601.94 203.41 532.94 3 L
+N
+397.92 300.19 404.67 300.19 404.67 544.69 3 L
+N
+196.66 533.69 203.41 533.69 203.41 465.44 196.66 465.44 4 L
+N
+212.64 505.32 212.54 508.29 223.01 505.66 212.73 502.34 4 Y
+N
+212.64 505.32 212.54 508.29 223.01 505.66 212.73 502.34 4 Y
+V
+208.66 505.19 212.39 505.31 2 L
+N
+197.16 568.44 208.12 568.44 208.12 499.44 3 L
+N
+197.16 500.19 208.12 500.19 208.12 431.94 197.16 431.94 4 L
+N
+3 24 Q
+(.) 205.46 497.73 T
+(.) 201.46 536.72 T
+(.) 205.46 502.73 T
+(.) 201.46 530.72 T
+(.) 315.21 448.73 T
+322.63 415.69 322.63 418.66 333.01 415.69 322.63 412.71 4 Y
+N
+322.63 415.69 322.63 418.66 333.01 415.69 322.63 412.71 4 Y
+V
+318.17 415.69 322.38 415.69 2 L
+N
+(.) 315.71 413.98 T
+197.66 363.19 208.62 363.19 208.62 294.94 197.66 294.94 4 L
+N
+(.) 205.96 327.22 T
+411.89 580.49 411.77 583.46 422.26 580.9 412.01 577.51 4 Y
+N
+411.89 580.49 411.77 583.46 422.26 580.9 412.01 577.51 4 Y
+V
+312.17 544.19 404.42 544.19 404.42 580.19 411.64 580.48 4 L
+N
+411.13 547.19 411.13 550.16 421.51 547.19 411.13 544.21 4 Y
+N
+411.13 547.19 411.13 550.16 421.51 547.19 411.13 544.21 4 Y
+V
+398.42 448.94 408.17 448.94 408.17 547.19 410.88 547.19 4 L
+N
+398.41 295.5 408.17 295.5 408.17 450.19 3 L
+N
+(.) 401.21 542.72 T
+(.) 405.21 446.98 T
+415.37 513.79 415.4 515.91 422.76 513.7 415.35 511.67 4 Y
+N
+415.37 513.79 415.4 515.91 422.76 513.7 415.35 511.67 4 Y
+V
+399.67 415.44 413.42 415.56 413.42 513.81 415.12 513.79 4 L
+N
+397.41 291.5 413.54 291.5 413.54 416 3 L
+N
+(.) 410.59 414.04 T
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "19" 31
+%%Page: "20" 32
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(20) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+2 12 Q
+(The) 108 712 T
+1 F
+(modi\336er) 129.66 712 T
+(s) 169.54 712 T
+2 F
+( are) 174.2 712 T
+5 F
+-0.6 (Shift) 194.86 712 S
+2 F
+(,) 227.86 712 T
+5 F
+-0.6 (Lock) 233.86 712 S
+2 F
+(,) 260.26 712 T
+5 F
+-0.6 (Control) 266.26 712 S
+2 F
+(, and) 312.46 712 T
+5 F
+-0.6 (Mod1) 338.79 712 S
+2 F
+(-) 365.19 712 T
+5 F
+-0.6 (Mod5) 369.18 712 S
+2 F
+(, as defined by the core proto-) 395.58 712 T
+(col. A modifier can be thought of as a toggle that is either set or unset. All modifiers are) 108 699 T
+(initially unset. When a modifier is locked, it is set and remains set for all future key) 108 686 T
+(events, until it is explicitly unset. A latched modifier is set, but automatically unsets after) 108 673 T
+(the next key event that does not change the keyboard state. Locked and latched modifier) 108 660 T
+(state can be changed by keyboard activity or via Xkb extension library functions.) 108 647 T
+(The Xkb extension provides support for) 108 626 T
+1 F
+(k) 302.64 626 T
+(e) 307.85 626 T
+(ysym) 312.82 626 T
+(gr) 339.8 626 T
+(oups) 349.93 626 T
+2 F
+(, as defined by ISO9995:) 372.6 626 T
+2 11 Q
+(Group) 126 605.67 T
+-0.09 (A logical state of a k) 198 605.67 P
+-0.09 (e) 288.8 605.67 P
+-0.09 (yboard pro) 293.52 605.67 P
+-0.09 (viding access to a collection of characters. A) 341.22 605.67 P
+(group usually contains a set of characters that logically belong together and) 198 592.67 T
+(that may be arranged on se) 198 579.67 T
+(v) 315.94 579.67 T
+(eral shift le) 321.28 579.67 T
+(v) 370.49 579.67 T
+(els within that group.) 375.83 579.67 T
+2 12 Q
+-0.12 (The Xkb extension supports up to four keysym groups. Groups are named beginning with) 108 560 P
+-0.37 (one and indexed beginning with zero. All group states are indicated using the group index.) 108 547 P
+-0.21 (At any point in time, there is zero or one locked group, zero or one latched group, and one) 108 534 P
+-0.19 (base group. When a group is locked, it supersedes any previous locked group and remains) 108 521 P
+(the locked group for all future key events, until a new group is locked. A latched group) 108 508 T
+-0.23 (applies only to the next key event that does not change the keyboard state. The locked and) 108 495 P
+-0.1 (latched group can be changed by keyboard activity or via Xkb extension library functions.) 108 482 P
+-0.23 (Changing to a different group changes the keyboard state to produce characters from a dif-) 108 461 P
+-0.15 (ferent group. Groups are typically used to switch between keysyms of different languages) 108 448 P
+(and locales.) 108 435 T
+(The) 108 414 T
+1 F
+(pointer b) 129.66 414 T
+(uttons) 173.09 414 T
+2 F
+( are) 202.43 414 T
+5 F
+-0.6 (Button1) 223.08 414 S
+2 F
+( -) 269.28 414 T
+5 F
+-0.6 (Button5) 279.28 414 S
+2 F
+(, as defined by the core protocol.) 325.48 414 T
+(The) 108 393 T
+1 F
+(base gr) 129.66 393 T
+(oup) 164.78 393 T
+2 F
+( and) 182.78 393 T
+1 F
+(base modi\336er) 206.11 393 T
+(s) 270.98 393 T
+2 F
+( represent keys that are physically or logically down.) 275.65 393 T
+(These and the pointer buttons can be changed by keyboard activity and not by Xkb) 108 380 T
+-0.31 (requests. It is possible for a key to be logically down, but not physically down, and neither) 108 367 P
+(latched nor locked.) 108 354 T
+2 9.6 Q
+(1) 199.64 358.8 T
+2 12 Q
+-0.46 (The) 108 333 P
+1 F
+-0.46 (ef) 129.2 333 P
+-0.46 (fective modi\336er) 137.65 333 P
+-0.46 (s) 211.38 333 P
+2 F
+-0.46 ( are the bitwise union of the locked, latched, and the base modifiers.) 216.05 333 P
+-0.18 (The) 108 312 P
+1 F
+-0.18 (ef) 129.48 312 P
+-0.18 (fective gr) 137.93 312 P
+-0.18 (oup) 182.2 312 P
+2 F
+-0.18 ( is the arithmetic sum of the group indices of the latched group, locked) 200.2 312 P
+(group, and base group, which is then normalized by some function. The result is a mean-) 108 299 T
+(ingful group index.) 108 286 T
+2 11 Q
+(n = number of k) 139.68 265.67 T
+(e) 210.54 265.67 T
+(yboard groups, 1<= n <= 4) 215.26 265.67 T
+(0 <= an) 139.68 252.67 T
+(y of lock) 173.31 252.67 T
+(ed, latched, or base group < n) 212.3 252.67 T
+(ef) 139.68 239.67 T
+(fecti) 147.95 239.67 T
+(v) 167.22 239.67 T
+(e group = f\050lock) 172.56 239.67 T
+(ed group + latched group + base group\051) 243.72 239.67 T
+2 12 Q
+(The function f ensures that the effective group is within range. The precise function is) 108 220 T
+(specified for the keyboard and can be retrieved through the keyboard description. It may) 108 207 T
+-0.4 (wrap around, clamp down, or default. Few applications will actually examine the effective) 108 194 P
+(group, and far fewer still will examine the locked, latched, and base groups.) 108 181 T
+(There are two circumstances under which groups are normalized:) 108 160 T
+72 90 540 110 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 98 204 98 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+0 0 612 792 C
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(1. K) 72 83.33 T
+(e) 91.47 83.33 T
+(ys may be logically do) 95.76 83.33 T
+(wn when the) 186.06 83.33 T
+(y are ph) 237.01 83.33 T
+(ysically up because of their electrical properties or because of the) 269.17 83.33 T
+(k) 72 71.33 T
+(e) 76.9 71.33 T
+(yboard e) 81.19 71.33 T
+(xtension in the X serv) 115.75 71.33 T
+(er ha) 203.37 71.33 T
+(ving \336ltered the k) 222.88 71.33 T
+(e) 293.61 71.33 T
+(y release, for esoteric reasons.) 297.9 71.33 T
+FMENDPAGE
+%%EndPage: "20" 32
+%%Page: "21" 33
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(21) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+2 12 Q
+(1.) 108 712 T
+(The global locked or effective group changes. In this case, the changed group is nor-) 125.25 712 T
+(malized into range according to the settings of the) 126 699 T
+1 F
+(gr) 368.96 699 T
+(oups_wr) 379.09 699 T
+(ap) 420.25 699 T
+2 F
+( field of the) 432.25 699 T
+5 F
+-0.6 (XkbCon-) 490.91 699 S
+-0.6 (trolsRec) 126 686 S
+2 F
+( structure for the keyboard \050see section 10.7.1\051.) 178.8 686 T
+(2.) 108 665 T
+(The Xkb library is interpreting an event with an effective group that is legal for the) 125.25 665 T
+(keyboard as a whole, but not for the key in question. In this case, the group to use for) 126 652 T
+196.67 637.8 126 637.8 2 L
+V
+0.6 H
+0 Z
+N
+(this event only) 126 639 T
+( is determined using the) 196.67 639 T
+1 F
+(gr) 314.33 639 T
+(oup_info) 324.46 639 T
+2 F
+( field of the key symbol mapping) 367.13 639 T
+(\050) 126 626 T
+5 F
+-0.6 (XkbSymMapRec) 130 626 S
+2 F
+(\051 for the event key.) 209.2 626 T
+(Each nonmodifier key on a keyboard has zero or more symbols, or keysyms, associated) 108 605 T
+-0.14 (with it. These are the logical symbols that the key can generate when it is pressed. The set) 108 592 P
+-0.1 (of all possible keysyms for a keyboard is divided into groups. Each key is associated with) 108 579 P
+(zero or more groups; each group contains one or more symbols. When a key is pressed,) 108 566 T
+(the determination of which symbol for the key is selected is based on the effective group) 108 553 T
+(and the shift level, which is determined by which modifiers are set.) 108 540 T
+(A client that does not explicitly call Xkb functions, but that otherwise makes use of an X) 108 519 T
+-0.31 (library containing the Xkb extension, will have keyboard state represented in bits 0 - 14 of) 108 506 P
+(the state field of events that report modifier and button state. Such a client is said to be) 108 493 T
+1 F
+(Xkb-capable) 108 480 T
+2 F
+(. A client that does explicitly call Xkb functions is an) 168.65 480 T
+1 F
+(Xkb-awar) 427.3 480 T
+(e) 474.18 480 T
+2 F
+( client. The) 479.51 480 T
+(Xkb keyboard state includes information derived from the effective state and from two) 108 467 T
+(server parameters that can be set through the keyboard extension. The following compo-) 108 454 T
+(nents of keyboard state pertain to Xkb-capable and Xkb-aware clients:) 108 441 T
+2 11 Q
+(\245) 126 420.67 T
+(lookup state: lookup group and lookup modi\336ers) 139.68 420.67 T
+(\245) 126 408.67 T
+(grab state: grab group and grab modi\336ers) 139.68 408.67 T
+2 12 Q
+-0.06 (The) 108 390 P
+1 F
+-0.06 (lookup modi\336er) 129.6 390 P
+-0.06 (s) 205.09 390 P
+2 F
+-0.06 ( and) 209.75 390 P
+1 F
+-0.06 (lookup gr) 232.97 390 P
+-0.06 (oup) 278.7 390 P
+2 F
+-0.06 ( are represented in the state field of core X events.) 296.7 390 P
+(The modifier state and keycode of a key event are used to determine the symbols associ-) 108 377 T
+(ated with the event. For) 108 364 T
+5 F
+-0.6 (KeyPress) 224.65 364 S
+2 F
+( and) 277.45 364 T
+5 F
+-0.6 (KeyRelease) 300.78 364 S
+2 F
+( events, the lookup modifiers are) 366.78 364 T
+(computed as:) 108 351 T
+(\050\050base | latched | locked\051 & ~) 126 330 T
+1 F
+(server_internal_modi\336er) 264.59 330 T
+(s) 384.46 330 T
+2 F
+(\051) 389.12 330 T
+(Otherwise the lookup modifiers are computed as:) 108 309 T
+(\050\050\050base | latched | \050locked & ~) 126 288 T
+1 F
+(ignor) 268.58 288 T
+(e_loc) 294.14 288 T
+(ks) 319.9 288 T
+2 F
+(\051\051 & ~) 329.89 288 T
+1 F
+(server_internal_modi\336er) 359.71 288 T
+(s) 479.58 288 T
+2 F
+(\051) 484.25 288 T
+(The lookup group is the same as the effective group.) 108 267 T
+(When an Xkb-capable or Xkb-aware client wishes to map a keycode to a keysym, it) 108 246 T
+(should use the) 108 233 T
+1 F
+(lookup state) 179.66 233 T
+2 F
+( \321 the lookup group and the lookup modifiers.) 238 233 T
+(The) 108 212 T
+1 F
+(gr) 129.66 212 T
+(ab state) 140.15 212 T
+2 F
+( is the state used when matching events to passive grabs. If the event acti-) 177.82 212 T
+-0.18 (vates a grab, the) 108 199 P
+1 F
+-0.18 (gr) 188.26 199 P
+-0.18 (ab modi\336er) 198.75 199 P
+-0.18 (s) 253.45 199 P
+2 F
+-0.18 ( and) 258.11 199 P
+1 F
+-0.18 (gr) 281.08 199 P
+-0.18 (ab gr) 291.57 199 P
+-0.18 (oup) 316.52 199 P
+2 F
+-0.18 ( are represented in the state field of core X) 334.52 199 P
+(events; otherwise, the lookup state is used. The grab modifiers are computed as:) 108 186 T
+(\050\050\050base | latched | \050locked & ~ignore_locks\051\051 & ~server_internal_modifiers\051) 126 165 T
+-0.37 (If the server\325s) 108 144 P
+5 F
+-0.82 -0.6 (IgnoreGroupLock) 176.51 144 B
+2 F
+-0.37 ( control \050see section 10.7.3\051 is not set, the grab group is) 275.52 144 P
+(the same as the effective group. Otherwise, the grab group is computed from the base) 108 131 T
+(group and latched group, ignoring the locked group.) 108 118 T
+(The final three components of Xkb state are applicable to clients that are not linked with) 108 97 T
+(an Xlib containing the X keyboard extension library and therefore are not aware of the) 108 84 T
+(keyboard extension \050) 108 71 T
+1 F
+(Xkb-unawar) 208.64 71 T
+(e) 267.53 71 T
+2 F
+(clients\051:) 275.86 71 T
+FMENDPAGE
+%%EndPage: "21" 33
+%%Page: "22" 34
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(22) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+(\245) 126 712.67 T
+(The compatibility modi\336er state) 139.68 712.67 T
+(\245) 126 700.67 T
+(The compatibility lookup modi\336er state) 139.68 700.67 T
+(\245) 126 688.67 T
+(The compatibility grab modi\336er state) 139.68 688.67 T
+2 12 Q
+(The X11 protocol interpretation of modifiers does not include direct support for multiple) 108 670 T
+-0.05 (groups. When an Xkb-extended X server connects to an Xkb-unaware client, the compati-) 108 657 P
+(bility states remap the keyboard group into a core modifier whenever possible. The com-) 108 644 T
+(patibility state corresponds to the effective modifier and effective group state, with the) 108 631 T
+-0.21 (group remapped to a modifier. The compatibility lookup and grab states correspond to the) 108 618 P
+-0.1 (lookup and grab states, respectively, with the group remapped to a modifier. The compati-) 108 605 P
+(bility lookup state is reported in events that do not trigger passive grabs; otherwise, the) 108 592 T
+(compatibility grab state is reported.) 108 579 T
+0 F
+(5.2) 72 554 T
+(Changing the K) 108 554 T
+(e) 196.49 554 T
+(yboar) 202.98 554 T
+(d State) 235.42 554 T
+(5.2.1) 72 528 T
+(Changing Modi\336er) 108 528 T
+(s) 213.16 528 T
+2 F
+-0.02 (The functions in this section that change the use of modifiers use a mask in the parameter) 108 508 P
+1 F
+(af) 108 495 T
+(fect) 117.12 495 T
+2 F
+(. It is a bitwise inclusive OR of the legal modifier masks:) 134.45 495 T
+(To lock and unlock any of the eight real keyboard modifiers, use) 108 317 T
+1 F
+(XkbLockModifiers:) 421.61 317 T
+2 11 Q
+(Bool) 108 296.67 T
+3 F
+(XkbLockModi\336ers) 132.15 296.67 T
+2 F
+(\050) 221.38 296.67 T
+1 F
+(display) 225.04 296.67 T
+(, de) 256.21 296.67 T
+(vice_spec, af) 271.93 296.67 T
+(fect, values) 328.55 296.67 T
+2 F
+(\051) 378.04 296.67 T
+(Display *) 126 283.67 T
+1 F
+(display) 189 283.67 T
+2 F
+(;) 220.78 283.67 T
+(/* connection to the X serv) 252 283.67 T
+(er */) 370.68 283.67 T
+(unsigned int) 126 270.67 T
+1 F
+(de) 189 270.67 T
+(vice_spec) 199.22 270.67 T
+2 F
+(;) 241.98 270.67 T
+(/* de) 252 270.67 T
+(vice ID, or) 273.42 270.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 323.51 270.67 S
+2 F
+( */) 402.16 270.67 T
+(unsigned int) 126 257.67 T
+1 F
+(af) 189 257.67 T
+(fect) 197.36 257.67 T
+2 F
+(;) 213.24 257.67 T
+(/* mask of real modi\336ers whose lock state is to change */) 252 257.67 T
+(unsigned int) 126 244.67 T
+1 F
+(values) 189 244.67 T
+2 F
+(;) 217.1 244.67 T
+(/* 1 => lock, 0 => unlock; only for modi\336ers selected by) 252 244.67 T
+1 F
+(af) 504.44 244.67 T
+(fect) 512.8 244.67 T
+2 F
+( */) 528.68 244.67 T
+1 12 Q
+-0.03 (XkbLoc) 108 225 P
+-0.03 (kModi\336er) 144.42 225 P
+-0.03 (s) 190.96 225 P
+2 F
+-0.03 ( sends a request to the serv) 195.62 225 P
+-0.03 (er to lock the real modi\336ers selected by both) 323.93 225 P
+1 F
+-0.29 (af) 108 212 P
+-0.29 (fect) 117.12 212 P
+2 F
+-0.29 ( and) 134.45 212 P
+1 F
+-0.29 (values) 157.2 212 P
+2 F
+-0.29 ( and to unlock the real modi\336ers selected by) 187.86 212 P
+1 F
+-0.29 (af) 400.24 212 P
+-0.29 (fect) 409.36 212 P
+2 F
+-0.29 ( b) 426.69 212 P
+-0.29 (ut not selected by) 435.17 212 P
+1 F
+-0.29 (val-) 521.34 212 P
+(ues) 108 199 T
+2 F
+(.) 124 199 T
+1 F
+(XkbLoc) 130 199 T
+(kModi\336er) 166.42 199 T
+(s) 212.95 199 T
+2 F
+( does not w) 217.62 199 T
+(ait for a reply from the serv) 272.5 199 T
+(er) 404.28 199 T
+(. It returns) 412.94 199 T
+5 F
+-0.6 (True) 465.6 199 S
+2 F
+( if the) 492 199 T
+(request w) 108 186 T
+(as sent, and) 154.2 186 T
+5 F
+-0.6 (False) 212.86 186 S
+2 F
+( otherwise.) 245.86 186 T
+(To latch and unlatch any of the eight real keyboard modifiers, use) 108 165 T
+1 F
+(XkbLatchModifiers:) 426.94 165 T
+2 11 Q
+(Bool) 108 144.67 T
+3 F
+(XkbLatchModi\336ers) 132.15 144.67 T
+2 F
+(\050d) 225.04 144.67 T
+1 F
+(isplay) 234.2 144.67 T
+(, de) 259.88 144.67 T
+(vice_spec, af) 275.6 144.67 T
+(fect, values) 332.21 144.67 T
+2 F
+(\051) 381.7 144.67 T
+(Display *) 126 131.67 T
+1 F
+(display) 189 131.67 T
+2 F
+(;) 220.78 131.67 T
+(/* connection to the X serv) 252 131.67 T
+(er */) 370.68 131.67 T
+(unsigned int) 126 118.67 T
+1 F
+(de) 189 118.67 T
+(vice_spec) 199.22 118.67 T
+2 F
+(;) 241.98 118.67 T
+(/* de) 252 118.67 T
+(vice ID, or) 273.42 118.67 T
+5 12 Q
+-0.6 (XkbUseCoreKbd) 323.51 118.67 S
+2 11 Q
+( */) 409.31 118.67 T
+(unsigned int) 126 105.67 T
+1 F
+(af) 189 105.67 T
+(fect) 197.36 105.67 T
+2 F
+(;) 213.24 105.67 T
+(/* mask of modi\336ers whose latch state is to change */) 252 105.67 T
+(unsigned int) 126 92.67 T
+1 F
+(values) 189 92.67 T
+2 F
+(;) 217.1 92.67 T
+(/* 1 => latch, 0 => unlatch; only for mods selected by) 252 92.67 T
+1 F
+(af) 491.6 92.67 T
+(fect) 499.96 92.67 T
+2 F
+( */) 515.85 92.67 T
+3 12 Q
+(T) 251.09 475 T
+(able 5.1 Real Modi\336er Masks) 257.99 475 T
+1 F
+(Mask) 289 455 T
+2 11 Q
+(ShiftMask) 289 440.67 T
+(LockMask) 289 426.67 T
+(ControlMask) 289 412.67 T
+(Mod1Mask) 289 398.67 T
+(Mod2Mask) 289 384.67 T
+(Mod3Mask) 289 370.67 T
+(Mod4Mask) 289 356.67 T
+(Mod5Mask) 289 342.67 T
+288 467 360 467 2 L
+V
+0.5 H
+0 Z
+N
+288 450 360 450 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "22" 34
+%%Page: "23" 35
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(23) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+1 12 Q
+-0.47 (XkbLatc) 108 712 P
+-0.47 (hModi\336er) 147.82 712 P
+-0.47 (s) 195.02 712 P
+2 F
+-0.47 ( sends a request to the serv) 199.69 712 P
+-0.47 (er to latch the real modi\336ers selected by both) 325.31 712 P
+1 F
+(af) 108 699 T
+(fect) 117.12 699 T
+2 F
+( and) 134.45 699 T
+1 F
+(values) 157.78 699 T
+2 F
+( and to unlatch the real modi\336ers selected by) 188.44 699 T
+1 F
+(af) 406.07 699 T
+(fect) 415.19 699 T
+2 F
+( b) 432.52 699 T
+(ut not selected by) 441.28 699 T
+1 F
+-0.11 (values) 108 686 P
+2 F
+-0.11 (.) 138.66 686 P
+1 F
+-0.11 (XkbLatc) 144.55 686 P
+-0.11 (hModi\336er) 184.37 686 P
+-0.11 (s) 231.58 686 P
+2 F
+-0.11 ( does not w) 236.24 686 P
+-0.11 (ait for a reply from the serv) 290.8 686 P
+-0.11 (er) 421.93 686 P
+-0.11 (. It returns) 430.6 686 P
+5 F
+-0.24 -0.6 (True) 482.93 686 B
+2 F
+-0.11 ( if the) 509.33 686 P
+(request w) 108 673 T
+(as sent, and) 154.2 673 T
+5 F
+-0.6 (False) 212.86 673 S
+2 F
+( otherwise.) 245.86 673 T
+0 F
+(5.2.2) 72 648 T
+(Changing Gr) 108 648 T
+(oups) 180.43 648 T
+2 F
+(Reference the keysym group indices with these symbolic constants:) 108 628 T
+(To lock the keysym group, use) 108 506 T
+1 F
+(XkbLockGroup.) 258.98 506 T
+2 11 Q
+(Bool) 108 485.67 T
+3 F
+(XkbLockGr) 132.15 485.67 T
+(oup) 189.4 485.67 T
+2 F
+(\050) 207.13 485.67 T
+1 F
+(display) 210.79 485.67 T
+(, de) 241.97 485.67 T
+(vice_spec, gr) 257.69 485.67 T
+(oup) 315.23 485.67 T
+2 F
+(\051) 331.73 485.67 T
+(Display *) 126 472.67 T
+1 F
+(display) 189 472.67 T
+2 F
+(;) 220.78 472.67 T
+(/* connection to the X serv) 252 472.67 T
+(er */) 370.68 472.67 T
+(unsigned int) 126 459.67 T
+1 F
+(de) 189 459.67 T
+(vice_spec) 199.22 459.67 T
+2 F
+(;) 241.98 459.67 T
+(/* de) 252 459.67 T
+(vice ID, or) 273.42 459.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 323.51 459.67 S
+2 F
+( */) 402.16 459.67 T
+(unsigned int) 126 446.67 T
+1 F
+(gr) 189 446.67 T
+(oup) 198.28 446.67 T
+2 F
+(;) 214.78 446.67 T
+(/* inde) 252 446.67 T
+(x of the k) 282.08 446.67 T
+(e) 323.83 446.67 T
+(ysym group to lock */) 328.55 446.67 T
+1 12 Q
+(XkbLoc) 108 427 T
+(kGr) 144.42 427 T
+(oup) 162.54 427 T
+2 F
+( sends a request to the server to lock the specified) 180.54 427 T
+1 F
+(gr) 421.49 427 T
+(oup) 431.62 427 T
+2 F
+(and) 452.62 427 T
+(does not w) 472.94 427 T
+(ait) 524.82 427 T
+(for a reply) 108 414 T
+(. It returns) 157.2 414 T
+5 F
+-0.6 (True) 209.86 414 S
+2 F
+( if the request w) 236.26 414 T
+(as sent and) 313.45 414 T
+5 F
+-0.6 (False) 369.11 414 S
+2 F
+( otherwise.) 402.11 414 T
+(To latch the keysym group, use) 108 393 T
+1 F
+(XkbLatchGroup.) 261.65 393 T
+2 11 Q
+(Bool) 108 372.67 T
+3 F
+(XkbLatchGr) 132.15 372.67 T
+(oup) 193.06 372.67 T
+2 F
+(\050) 210.79 372.67 T
+1 F
+(display) 214.46 372.67 T
+(, de) 245.63 372.67 T
+(vice_spec, gr) 261.35 372.67 T
+(oup) 318.89 372.67 T
+2 F
+(\051) 335.39 372.67 T
+(Display *) 126 359.67 T
+1 F
+(display) 189 359.67 T
+2 F
+(;) 220.78 359.67 T
+(/* connection to the X serv) 252 359.67 T
+(er */) 370.68 359.67 T
+(unsigned int) 126 346.67 T
+1 F
+(de) 189 346.67 T
+(vice_spec) 199.22 346.67 T
+2 F
+(;) 241.98 346.67 T
+(/* de) 252 346.67 T
+(vice ID, or) 273.42 346.67 T
+5 12 Q
+-0.6 (XkbUseCoreKbd) 323.51 346.67 S
+2 11 Q
+( */) 409.31 346.67 T
+(unsigned int) 126 333.67 T
+1 F
+(gr) 189 333.67 T
+(oup) 198.28 333.67 T
+2 F
+(;) 214.78 333.67 T
+(/* inde) 252 333.67 T
+(x of the k) 282.08 333.67 T
+(e) 323.83 333.67 T
+(ysym group to latch */) 328.55 333.67 T
+1 12 Q
+-0.4 (XkbLatc) 108 314 P
+-0.4 (hGr) 147.82 314 P
+-0.4 (oup) 166.61 314 P
+2 F
+-0.4 ( sends a request to the server to latch the specified group) 184.61 314 P
+-0.4 (and) 454.4 314 P
+-0.4 (does not w) 474.33 314 P
+-0.4 (ait) 525.4 314 P
+(for a reply) 108 301 T
+(. It returns) 157.2 301 T
+5 F
+-0.6 (True) 209.86 301 S
+2 F
+( if the request w) 236.26 301 T
+(as sent and) 313.45 301 T
+5 F
+-0.6 (False) 369.11 301 S
+2 F
+( otherwise.) 402.11 301 T
+0 F
+(5.3) 72 276 T
+(Determining K) 108 276 T
+(e) 189.83 276 T
+(yboar) 196.32 276 T
+(d State) 228.76 276 T
+2 F
+(Xkb keyboard state may be represented in an) 108 256 T
+5 F
+-0.6 (XkbStateRec) 327.28 256 S
+2 F
+( structure:) 399.88 256 T
+2 11 Q
+(typedef struct {) 126 235.67 T
+(unsigned char) 144 222.67 T
+(group;) 225 222.67 T
+(/* ef) 324 222.67 T
+(fecti) 343.58 222.67 T
+(v) 362.85 222.67 T
+(e group inde) 368.19 222.67 T
+(x */) 423.01 222.67 T
+(unsigned char) 144 209.67 T
+(base_group;) 225 209.67 T
+(/* base group inde) 324 209.67 T
+(x */) 404.8 209.67 T
+(unsigned char) 144 196.67 T
+(latched_group;) 225 196.67 T
+(/* latched group inde) 324 196.67 T
+(x */) 417.02 196.67 T
+(unsigned char) 144 183.67 T
+(lock) 225 183.67 T
+(ed_group;) 243.83 183.67 T
+(/* lock) 324 183.67 T
+(ed group inde) 354.14 183.67 T
+(x */) 414.46 183.67 T
+(unsigned char) 144 170.67 T
+(mods;) 225 170.67 T
+(/* ef) 324 170.67 T
+(fecti) 343.58 170.67 T
+(v) 362.85 170.67 T
+(e modi\336ers */) 368.19 170.67 T
+(unsigned char) 144 157.67 T
+(base_mods;) 225 157.67 T
+(/* base modi\336ers */) 324 157.67 T
+(unsigned char) 144 144.67 T
+(latched_mods;) 225 144.67 T
+(/* latched modi\336ers */) 324 144.67 T
+(unsigned char) 144 131.67 T
+(lock) 225 131.67 T
+(ed_mods;) 243.83 131.67 T
+(/* lock) 324 131.67 T
+(ed modi\336ers */) 354.14 131.67 T
+(unsigned char) 144 118.67 T
+(compat_state;) 225 118.67 T
+(/* ef) 324 118.67 T
+(fecti) 343.58 118.67 T
+(v) 362.85 118.67 T
+(e group => modi\336ers */) 368.19 118.67 T
+(unsigned char) 144 105.67 T
+(grab_mods;) 225 105.67 T
+(/* modi\336ers used for grabs */) 324 105.67 T
+(unsigned char) 144 92.67 T
+(compat_grab_mods;) 225 92.67 T
+(/* mods used for compatibility mode grabs */) 324 92.67 T
+(unsigned char) 144 79.67 T
+(lookup_mods;) 225 79.67 T
+(/* modi\336ers used to lookup symbols */) 324 79.67 T
+(unsigned char) 144 66.67 T
+(compat_lookup_mods;) 225 66.67 T
+(/* mods used for compatibility lookup */) 325.84 66.67 T
+3 12 Q
+(T) 243.86 608 T
+(able 5.2 Symbolic Gr) 250.76 608 T
+(oup Names) 360.89 608 T
+1 F
+(Symbolic Name) 253 588 T
+(V) 361 588 T
+(alue) 367 588 T
+2 11 Q
+(XkbGroup1Inde) 253 573.67 T
+(x) 324.93 573.67 T
+(0) 361 573.67 T
+(XkbGroup2Inde) 253 559.67 T
+(x) 324.93 559.67 T
+(1) 361 559.67 T
+(XkbGroup3Inde) 253 545.67 T
+(x) 324.93 545.67 T
+(2) 361 545.67 T
+(XkbGroup4Inde) 253 531.67 T
+(x) 324.93 531.67 T
+(3) 361 531.67 T
+252 600 396 600 2 L
+V
+0.5 H
+0 Z
+N
+252 583 396 583 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "23" 35
+%%Page: "24" 36
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(24) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+(unsigned short) 144 712.67 T
+(ptr_b) 225 712.67 T
+(uttons;) 248 712.67 T
+(/* 1 bit => corresponding pointer btn is do) 324 712.67 T
+(wn */) 510.3 712.67 T
+(}) 126 699.67 T
+3 F
+(XkbStateRec) 134.03 699.67 T
+2 F
+(,*XkbStatePtr;) 195.74 699.67 T
+2 12 Q
+(To obtain the keyboard state, use) 108 680 T
+1 F
+(XkbGetState) 269.64 680 T
+(.) 329.45 680 T
+2 11 Q
+(Status) 108 659.67 T
+3 F
+(XkbGetState) 137.65 659.67 T
+2 F
+(\050) 198.75 659.67 T
+1 F
+(display) 202.41 659.67 T
+2 F
+(,) 233.48 659.67 T
+1 F
+(de) 238.98 659.67 T
+(vice_spec) 249.2 659.67 T
+2 F
+(,) 291.95 659.67 T
+1 F
+(state_r) 297.45 659.67 T
+(eturn) 327.6 659.67 T
+2 F
+(\051) 350.83 659.67 T
+(Display *) 126 646.67 T
+1 F
+(display) 234 646.67 T
+2 F
+(;) 265.78 646.67 T
+(/* connection to the X serv) 306 646.67 T
+(er */) 424.68 646.67 T
+(unsigned int) 126 633.67 T
+1 F
+(de) 234 633.67 T
+(vice_spec) 244.22 633.67 T
+2 F
+(;) 286.98 633.67 T
+(/* de) 306 633.67 T
+(vice ID, or) 327.42 633.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 377.51 633.67 S
+2 F
+( */) 456.16 633.67 T
+(XkbStatePtr) 126 620.67 T
+1 F
+(state_r) 234 620.67 T
+(eturn) 264.15 620.67 T
+2 F
+(;) 287.37 620.67 T
+(/* back\336lled with Xkb state */) 306 620.67 T
+2 12 Q
+(The) 108 601 T
+1 F
+(XkbGetState) 129.66 601 T
+2 F
+(function queries the server for the current keyboard state, waits for a) 192.65 601 T
+(reply, and then backfills) 108 588 T
+1 F
+(state_r) 226.98 588 T
+(eturn) 259.87 588 T
+2 F
+( with the results.) 285.2 588 T
+(All group values are expressed as group indices in the range [0..3]. Modifiers and the) 108 567 T
+(compatibility modifier state values are expressed as the bitwise union of the core X11) 108 554 T
+(modifier masks. The pointer button state is reported as in the core X11 protocol.) 108 541 T
+0 F
+(5.4) 72 516 T
+(T) 108 516 T
+(rac) 114.37 516 T
+(king K) 132.14 516 T
+(e) 168.64 516 T
+(yboar) 175.13 516 T
+(d State) 207.56 516 T
+2 F
+(The Xkb extension reports) 108 496 T
+5 F
+-0.6 (XkbStateNotify) 238.64 496 S
+2 F
+(events to clients wanting notification) 337.65 496 T
+(whenever the Xkb state changes. The changes reported include changes to any aspect of) 108 483 T
+(the keyboard state: when a modifier is set or unset, when the current group changes, or) 108 470 T
+(when a pointer button is pressed or released. As with all Xkb events,) 108 457 T
+5 F
+-0.6 (XkbStateNotify) 440.28 457 S
+2 F
+(events are reported to all interested clients without regard to the current keyboard input) 108 444 T
+(focus or grab state.) 108 431 T
+(There are many different types of Xkb state changes. Xkb defines an event detail mask) 108 410 T
+(corresponding to each type of change. The event detail masks are listed in Table 5.3.) 108 397 T
+(To track changes in the keyboard state for a particular device, select to receive) 108 121 T
+5 F
+-0.6 (Xkb-) 487.55 121 S
+-0.6 (StateNotify) 108 108 S
+2 F
+( events by calling either) 180.6 108 T
+1 F
+(XkbSelectEvents) 298.25 108 T
+2 F
+( or) 377.56 108 T
+1 F
+(XkbSelectEventDetails) 393.55 108 T
+2 F
+( \050see) 502.86 108 T
+(section 4.3\051.) 108 95 T
+3 F
+(T) 213.32 377 T
+(able 5.3 XkbStateNotify Ev) 220.22 377 T
+(ent Detail Masks) 362.44 377 T
+1 F
+(Mask) 217 357 T
+(V) 361 357 T
+(alue) 367 357 T
+2 11 Q
+(XkbModi\336erStateMask) 217 342.67 T
+(\0501L << 0\051) 361 342.67 T
+(XkbModi\336erBaseMask) 217 328.67 T
+(\0501L << 1\051) 361 328.67 T
+(XkbModi\336erLatchMask) 217 314.67 T
+(\0501L << 2\051) 361 314.67 T
+(XkbModi\336erLockMask) 217 300.67 T
+(\0501L << 3\051) 361 300.67 T
+(XkbGroupStateMask) 217 286.67 T
+(\0501L << 4\051) 361 286.67 T
+(XkbGroupBaseMask) 217 272.67 T
+(\0501L << 5\051) 361 272.67 T
+(XkbGroupLatchMask) 217 258.67 T
+(\0501L << 6\051) 361 258.67 T
+(XkbGroupLockMask) 217 244.67 T
+(\0501L << 7\051) 361 244.67 T
+(XkbCompatStateMask) 217 230.67 T
+(\0501L << 8\051) 361 230.67 T
+(XkbGrabModsMask) 217 216.67 T
+(\0501L << 9\051) 361 216.67 T
+(XkbCompatGrabModsMask) 217 202.67 T
+(\0501L << 10\051) 361 202.67 T
+(XkbLookupModsMask) 217 188.67 T
+(\0501L << 11\051) 361 188.67 T
+(XkbCompatLookupModsMask) 217 174.67 T
+(\0501L << 12\051) 361 174.67 T
+(XkbPointerButtonMask) 217 160.67 T
+(\0501L << 13\051) 361 160.67 T
+(XkbAllStateComponentsMask) 217 146.67 T
+(\0500x3f) 361 146.67 T
+(f) 384.55 146.67 T
+(f\051) 387.94 146.67 T
+216 369 432 369 2 L
+V
+0.5 H
+0 Z
+N
+216 352 432 352 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "24" 36
+%%Page: "25" 37
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(25) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+2 12 Q
+(To receive) 108 712 T
+5 F
+-0.6 (XkbStateNotify) 161.98 712 S
+2 F
+( events under all possible conditions, use) 254.38 712 T
+1 F
+(XkbSelectEvents) 453.7 712 T
+2 F
+(and pass) 108 699 T
+5 F
+-0.6 (XkbStateNotifyMask) 151.99 699 S
+2 F
+( in both) 270.8 699 T
+1 F
+(bits_to_c) 310.47 699 T
+(hang) 354.29 699 T
+(e) 378.17 699 T
+2 F
+( and) 383.5 699 T
+1 F
+(values_for_bits) 406.83 699 T
+2 F
+(.) 480.83 699 T
+(To receive) 108 678 T
+5 F
+-0.6 (XkbStateNotify) 161.98 678 S
+2 F
+( events only under certain conditions, use) 254.38 678 T
+1 F
+(XkbSelectEvent-) 456.35 678 T
+(Details) 108 665 T
+2 F
+( using) 142.67 665 T
+5 F
+-0.6 (XkbStateNotify) 174.67 665 S
+2 F
+( as the) 267.07 665 T
+1 F
+(e) 300.73 665 T
+(vent_type) 305.88 665 T
+2 F
+( and specifying the desired state) 351.87 665 T
+(changes in) 108 652 T
+1 F
+(bits_to_c) 161.99 652 T
+(hang) 205.81 652 T
+(e) 229.69 652 T
+2 F
+( and) 235.02 652 T
+1 F
+(values_for_bits) 258.35 652 T
+2 F
+( using mask bits from Table 5.3.) 332.35 652 T
+(The structure for) 108 631 T
+5 F
+-0.6 (XkbStateNotify) 191.64 631 S
+2 F
+( events is:) 284.04 631 T
+2 11 Q
+(typedef struct {) 126 610.67 T
+(int) 144 597.67 T
+(type;) 234 597.67 T
+(/* Xkb e) 306 597.67 T
+(xtension base e) 343.72 597.67 T
+(v) 410.65 597.67 T
+(ent code */) 415.99 597.67 T
+(unsigned long) 144 584.67 T
+(serial;) 234 584.67 T
+(/* X serv) 306 584.67 T
+(er serial number for e) 346.16 584.67 T
+(v) 440.57 584.67 T
+(ent */) 445.91 584.67 T
+(Bool) 144 571.67 T
+(send_e) 234 571.67 T
+(v) 264.27 571.67 T
+(ent;) 269.61 571.67 T
+(/*) 306 571.67 T
+5 12 Q
+-0.6 (True) 317.31 571.67 S
+2 11 Q
+( => synthetically generated */) 343.71 571.67 T
+(Display *) 144 558.67 T
+(display;) 234 558.67 T
+(/* serv) 306 558.67 T
+(er connection where e) 335.47 558.67 T
+(v) 432.02 558.67 T
+(ent generated */) 437.35 558.67 T
+(T) 144 545.67 T
+(ime) 150.34 545.67 T
+(time;) 234 545.67 T
+(/* serv) 306 545.67 T
+(er time when e) 335.47 545.67 T
+(v) 400.26 545.67 T
+(ent generated */) 405.59 545.67 T
+(int) 144 532.67 T
+(xkb_type;) 234 532.67 T
+(/*) 306 532.67 T
+5 F
+-0.33 (XkbStateNotify) 317.31 532.67 S
+2 F
+( */) 405.09 532.67 T
+(int) 144 519.67 T
+(de) 234 519.67 T
+(vice;) 244.11 519.67 T
+(/* Xkb de) 306 519.67 T
+(vice ID, will not be) 349.11 519.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 437.1 519.67 S
+2 F
+( */) 518.61 519.67 T
+(unsigned int) 144 506.67 T
+(changed;) 234 506.67 T
+(/* bits indicating what has changed */) 306 506.67 T
+(int) 144 493.67 T
+(group;) 234 493.67 T
+(/* group inde) 306 493.67 T
+(x of ef) 364.5 493.67 T
+(fecti) 392.93 493.67 T
+(v) 412.2 493.67 T
+(e group */) 417.54 493.67 T
+(int) 144 480.67 T
+(base_group;) 234 480.67 T
+(/* group inde) 306 480.67 T
+(x of base group */) 364.5 480.67 T
+(int) 144 467.67 T
+(latched_group;) 234 467.67 T
+(/* group inde) 306 467.67 T
+(x of latched group */) 364.5 467.67 T
+(int) 144 454.67 T
+(lock) 234 454.67 T
+(ed_group;) 252.83 454.67 T
+(/* group inde) 306 454.67 T
+(x of lock) 364.5 454.67 T
+(ed group */) 403.49 454.67 T
+(unsigned int) 144 441.67 T
+(mods;) 234 441.67 T
+(/* ef) 306 441.67 T
+(fecti) 325.58 441.67 T
+(v) 344.85 441.67 T
+(e modi\336ers */) 350.19 441.67 T
+(unsigned int) 144 428.67 T
+(base_mods;) 234 428.67 T
+(/* base modi\336ers */) 306 428.67 T
+(unsigned int) 144 415.67 T
+(latched_mods;) 234 415.67 T
+(/* latched modi\336ers */) 306 415.67 T
+(unsigned int) 144 402.67 T
+(lock) 234 402.67 T
+(ed_mods;) 252.83 402.67 T
+(/* lock) 306 402.67 T
+(ed modi\336ers */) 336.14 402.67 T
+(int) 144 389.67 T
+(compat_state;) 234 389.67 T
+(/* computed compatibility state */) 306 389.67 T
+(unsigned char) 144 376.67 T
+(grab_mods;) 234 376.67 T
+(/* modi\336ers used for grabs */) 306 376.67 T
+(unsigned char) 144 363.67 T
+(compat_grab_mods;) 234 363.67 T
+(/* modi\336ers used for compatibility grabs */) 342 363.67 T
+(unsigned char) 144 350.67 T
+(lookup_mods;) 234 350.67 T
+(/* modi\336ers used to lookup symbols */) 306 350.67 T
+(unsigned char) 144 337.67 T
+(compat_lookup_mods;) 234 337.67 T
+(/* mods used for compatibility look up */) 342 337.67 T
+(int) 144 324.67 T
+(ptr_b) 234 324.67 T
+(uttons;) 257 324.67 T
+(/* core pointer b) 306 324.67 T
+(uttons */) 378.18 324.67 T
+(K) 144 311.67 T
+(e) 151.67 311.67 T
+(yCode) 156.39 311.67 T
+(k) 234 311.67 T
+(e) 239.39 311.67 T
+(ycode;) 244.11 311.67 T
+(/* k) 306 311.67 T
+(e) 322.7 311.67 T
+(ycode causing e) 327.42 311.67 T
+(v) 397.4 311.67 T
+(ent, 0 if programmatic */) 402.73 311.67 T
+(char) 144 298.67 T
+(e) 234 298.67 T
+(v) 238.61 298.67 T
+(ent_type;) 243.94 298.67 T
+(/* core e) 306 298.67 T
+(v) 343.6 298.67 T
+(ent if) 348.93 298.67 T
+1 F
+(r) 374.6 298.67 T
+(eq_major) 378.47 298.67 T
+2 F
+( or) 420.63 298.67 T
+1 F
+(r) 435.29 298.67 T
+(eq_minor) 439.17 298.67 T
+2 F
+( non zero */) 481.33 298.67 T
+(char) 144 285.67 T
+(req_major;) 234 285.67 T
+(/* major request code if program trigger) 306 285.67 T
+(, else 0 */) 482.13 285.67 T
+(char) 144 272.67 T
+(req_minor;) 234 272.67 T
+(/* minor request code if program trigger) 306 272.67 T
+(, else 0 */) 482.75 272.67 T
+(}) 126 259.67 T
+3 F
+(XkbStateNotifyEv) 134.03 259.67 T
+(ent) 220.08 259.67 T
+2 F
+(;) 234.75 259.67 T
+2 12 Q
+(When you receive an) 108 240 T
+5 F
+-0.6 (XkbStateNotify) 212.63 240 S
+2 F
+( event, the) 305.03 240 T
+1 F
+(changed) 357.69 240 T
+2 F
+( field indicates which ele-) 398.34 240 T
+(ments of keyboard state have changed. This will be the bitwise inclusive OR of one or) 108 227 T
+-0.17 (more of the) 108 214 P
+5 F
+-0.37 -0.6 (XkbStateNotify) 165.82 214 B
+2 F
+-0.17 ( event detail masks shown in Table 5.3. All fields reported) 258.22 214 P
+(in the event are valid, but only those indicated in) 108 201 T
+1 F
+(changed) 344.98 201 T
+2 F
+( have changed values.) 385.63 201 T
+(The) 108 180 T
+1 F
+(group) 129.66 180 T
+2 F
+( field is the group index of the effective keysym group. The) 158.33 180 T
+1 F
+(base_group) 447.28 180 T
+2 F
+(,) 503.94 180 T
+1 F
+(latched_group) 108 167 T
+2 F
+(, and) 178 167 T
+1 F
+(locked_group) 204.32 167 T
+2 F
+( fields are set to a group index value representing the) 270.31 167 T
+-0.37 (base group, the latched group, and the locked group, respectively. The X server can set the) 108 154 P
+-0.42 (modifier and compatibility state fields to a union of the core modifier mask bits; this union) 108 141 P
+(represents the corresponding modifier states. The) 108 128 T
+1 F
+(ptr_button) 347.62 128 T
+2 F
+( field gives the state of the) 398.29 128 T
+(core pointer buttons as a mask composed of an inclusive OR of zero or more of the core) 108 115 T
+(pointer button masks.) 108 102 T
+(Xkb state changes can occur either in response to keyboard activity or under application) 108 81 T
+(control. If a key event caused the state change, the) 108 68 T
+1 F
+(keycode) 352.6 68 T
+2 F
+( field gives the keycode of the) 391.24 68 T
+FMENDPAGE
+%%EndPage: "25" 37
+%%Page: "26" 38
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(26) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(5 K) 458.57 744.87 T
+(e) 479.98 744.87 T
+(yboard State) 484.7 744.87 T
+2 12 Q
+-0.3 (key event, and the) 108 712 P
+1 F
+-0.3 (event_type) 197.13 712 P
+2 F
+-0.3 ( field is set to either) 248.44 712 P
+5 F
+-0.65 -0.6 (KeyPress) 344.66 712 B
+2 F
+-0.3 ( or) 397.46 712 P
+5 F
+-0.65 -0.6 (KeyRelease) 412.86 712 B
+2 F
+-0.3 (. If a pointer) 478.87 712 P
+(button event caused the state change, the) 108 699 T
+1 F
+(k) 306.62 699 T
+(e) 311.83 699 T
+(ycode) 316.8 699 T
+2 F
+( field is zero, and the) 344.78 699 T
+1 F
+(e) 448.43 699 T
+(vent_type) 453.58 699 T
+2 F
+( field is) 499.56 699 T
+(set to either) 108 686 T
+5 F
+-0.6 (ButtonPress) 166.99 686 S
+2 F
+( or) 239.59 686 T
+5 F
+-0.6 (ButtonRelease) 255.59 686 S
+2 F
+(. Otherwise, the major and minor codes) 341.39 686 T
+(of the request that caused the state change are given in the) 108 673 T
+1 F
+(req_major) 389.93 673 T
+2 F
+( and) 440.59 673 T
+1 F
+(req_minor) 463.92 673 T
+2 F
+-0.44 (fields, and the) 108 660 P
+1 F
+-0.44 (keycode) 177.34 660 P
+2 F
+-0.44 ( field is zero. The) 215.98 660 P
+1 F
+-0.44 (req_major) 301.08 660 P
+2 F
+-0.44 ( value is the same as the) 351.75 660 P
+2 11 Q
+-0.4 (major e) 467.65 660 P
+-0.4 (xtension) 500.37 660 P
+(opcode) 108 647 T
+2 12 Q
+(.) 139.77 647 T
+FMENDPAGE
+%%EndPage: "26" 38
+%%Page: "27" 39
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(27) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(6 Complete K) 383.71 744.87 T
+(e) 450.66 744.87 T
+(yboard Description) 455.38 744.87 T
+0 14 Q
+(6) 72 710.67 T
+(Complete K) 108 710.67 T
+(e) 185.57 710.67 T
+(yboar) 193.15 710.67 T
+(d Description) 230.99 710.67 T
+2 12 Q
+(The complete Xkb description for a keyboard device is accessed using a single structure) 108 688 T
+-0.14 (containing pointers to major Xkb components. This chapter describes this single structure) 108 675 P
+(and provides references to other sections of this document that discuss the major Xkb) 108 662 T
+(components in detail.) 108 649 T
+0 F
+(6.1) 72 624 T
+(The XkbDescRec Structure) 108 624 T
+2 F
+(The complete description of an Xkb keyboard is given by an) 108 604 T
+5 F
+-0.6 (XkbDescRec) 401.62 604 S
+2 F
+(. The compo-) 467.62 604 T
+(nent structures in the) 108 591 T
+5 F
+-0.6 (XkbDescRec) 211.32 591 S
+2 F
+( represent the major Xkb components outlined in Fig-) 277.32 591 T
+(ure 1.1.) 108 578 T
+2 11 Q
+(typedef struct {) 126 557.67 T
+(struct _XDisplay *) 144 544.67 T
+(display;) 270 544.67 T
+(/* connection to X serv) 342 544.67 T
+(er */) 444.49 544.67 T
+(unsigned short) 144 531.67 T
+(\337ags;) 270 531.67 T
+(/* pri) 342 531.67 T
+(v) 365.25 531.67 T
+(ate to Xkb, do not modify */) 370.48 531.67 T
+(unsigned short) 144 518.67 T
+(de) 270 518.67 T
+(vice_spec;) 280.11 518.67 T
+(/* de) 342 518.67 T
+(vice of interest */) 363.42 518.67 T
+(K) 144 505.67 T
+(e) 151.67 505.67 T
+(yCode) 156.39 505.67 T
+(min_k) 270 505.67 T
+(e) 298.01 505.67 T
+(y_code;) 302.73 505.67 T
+(/* minimum k) 342 505.67 T
+(e) 404.24 505.67 T
+(ycode for de) 408.96 505.67 T
+(vice */) 463.66 505.67 T
+(K) 144 492.67 T
+(e) 151.67 492.67 T
+(yCode) 156.39 492.67 T
+(max_k) 270 492.67 T
+(e) 299.83 492.67 T
+(y_code;) 304.55 492.67 T
+(/* maximum k) 342 492.67 T
+(e) 406.06 492.67 T
+(ycode for de) 410.78 492.67 T
+(vice */) 465.49 492.67 T
+(XkbControlsPtr) 144 479.67 T
+(ctrls;) 270 479.67 T
+(/* controls */) 342 479.67 T
+(XkbServ) 144 466.67 T
+(erMapPtr) 182.94 466.67 T
+(serv) 270 466.67 T
+(er;) 288.16 466.67 T
+(/* serv) 342 466.67 T
+(er k) 371.47 466.67 T
+(e) 388.16 466.67 T
+(ymap */) 392.88 466.67 T
+(XkbClientMapPtr) 144 453.67 T
+(map;) 270 453.67 T
+(/* client k) 342 453.67 T
+(e) 385.89 453.67 T
+(ymap */) 390.61 453.67 T
+(XkbIndicatorPtr) 144 440.67 T
+(indicators;) 270 440.67 T
+(/* indicator map */) 342 440.67 T
+(XkbNamesPtr) 144 427.67 T
+(names;) 270 427.67 T
+(/* names for all components */) 342 427.67 T
+(XkbCompatMapPtr) 144 414.67 T
+(compat;) 270 414.67 T
+(/* compatibility map */) 342 414.67 T
+(XkbGeometryPtr) 144 401.67 T
+(geom;) 270 401.67 T
+(/* ph) 342 401.67 T
+(ysical geometry of k) 364.25 401.67 T
+(e) 454.27 401.67 T
+(yboard */) 458.98 401.67 T
+(}) 126 388.67 T
+3 F
+(XkbDescRec) 134.03 388.67 T
+2 F
+(, *XkbDescPtr;) 193.9 388.67 T
+2 12 Q
+(The) 108 369 T
+1 F
+(display) 129.66 369 T
+2 F
+( field points to an X display structure. The) 164.33 369 T
+1 F
+(flags) 370.31 369 T
+2 F
+( field is private to the library:) 393.65 369 T
+(modifying) 108 356 T
+1 F
+(flags) 161 356 T
+2 F
+( may yield unpredictable results. The) 184.34 356 T
+1 F
+(device_spec) 365.32 356 T
+2 F
+( field specifies the) 423.29 356 T
+(device identifier of the keyboard input device, or) 108 343 T
+5 F
+-0.6 (XkbUseCoreKeyboard) 345.61 343 S
+2 F
+(, which speci-) 464.41 343 T
+(fies the core keyboard device. The) 108 330 T
+1 F
+(min_key_code) 276.28 330 T
+2 F
+( and) 344.92 330 T
+1 F
+(max_key_code) 368.24 330 T
+2 F
+( fields specify the) 438.88 330 T
+(least and greatest keycode that can be returned by the keyboard.) 108 317 T
+(The other fields specify structure components of the keyboard description and are) 108 296 T
+(described in detail in other sections of this document. Table 6.1 identifies the subsequent) 108 283 T
+(sections of this document that discuss the individual components of the) 108 270 T
+5 F
+-0.6 (XkbDescRec) 452.99 270 S
+2 F
+(.) 518.99 270 T
+(Each structure component has a corresponding mask bit that is used in function calls to) 108 106 T
+(indicate that the structure should be manipulated in some manner, such as allocating it or) 108 93 T
+3 F
+(T) 193.22 250 T
+(able 6.1 XkbDescRec Component Refer) 200.12 250 T
+(ences) 405.2 250 T
+1 F
+(XkbDescRec F) 217 230 T
+(ield) 287.43 230 T
+(F) 325 230 T
+(or mor) 331.07 230 T
+(e info) 363.63 230 T
+2 11 Q
+(ctrls) 217 215.67 T
+(Chapter 10) 325 215.67 T
+(serv) 217 201.67 T
+(er) 235.16 201.67 T
+(Chapter 16) 325 201.67 T
+(map) 217 187.67 T
+(Chapter 15) 325 187.67 T
+(indicators) 217 173.67 T
+(Chapter 8) 325 173.67 T
+(names) 217 159.67 T
+(Chapter 18) 325 159.67 T
+(compat) 217 145.67 T
+(Chapter 17) 325 145.67 T
+(geom) 217 131.67 T
+(Chapter 13) 325 131.67 T
+216 242 396 242 2 L
+V
+0.5 H
+0 Z
+N
+216 225 396 225 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "27" 39
+%%Page: "28" 40
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(28) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(6 Complete K) 383.71 744.87 T
+(e) 450.66 744.87 T
+(yboard Description) 455.38 744.87 T
+2 12 Q
+-0.17 (freeing it. These masks and their relationships to the fields in the) 108 712 P
+5 F
+-0.38 -0.6 (XkbDescRec) 419.54 712 B
+2 F
+-0.17 ( are shown) 485.54 712 P
+(in Table 6.2.) 108 699 T
+0 F
+(6.2) 72 507 T
+(Obtaining a K) 108 507 T
+(e) 185.83 507 T
+(yboar) 192.32 507 T
+(d Description fr) 224.76 507 T
+(om the Ser) 313.2 507 T
+(ver) 375.34 507 T
+2 F
+(To retrieve one or more components of a keyboard device description, use) 108 487 T
+1 F
+(XkbGetK) 467.58 487 T
+(e) 511.15 487 T
+(y-) 516.12 487 T
+(boar) 108 474 T
+(d) 130.22 474 T
+2 F
+( \050see also) 136.22 474 T
+1 F
+(XkbGetK) 183.88 474 T
+(e) 227.45 474 T
+(yboar) 232.42 474 T
+(dbyName) 259.97 474 T
+2 F
+(\051.) 305.29 474 T
+2 11 Q
+(XkbDescPtr) 108 453.67 T
+3 F
+(XkbGetK) 164.52 453.67 T
+(eyboard) 210.08 453.67 T
+2 F
+(\050) 248.58 453.67 T
+1 F
+(display) 252.24 453.67 T
+(, whic) 283.42 453.67 T
+(h, de) 309.53 453.67 T
+(vice_spec) 330.75 453.67 T
+2 F
+(\051) 373.51 453.67 T
+(Display *) 126 440.67 T
+1 F
+(display) 189 440.67 T
+2 F
+(;) 220.78 440.67 T
+(/* connection to X serv) 252 440.67 T
+(er */) 354.49 440.67 T
+(unsigned int) 126 427.67 T
+1 F
+(whic) 189 427.67 T
+(h) 209.61 427.67 T
+2 F
+(;) 215.11 427.67 T
+(/* mask indicating components to return */) 252 427.67 T
+(unsigned int) 126 414.67 T
+1 F
+(de) 189 414.67 T
+(vice_spec) 199.22 414.67 T
+2 F
+(;) 241.98 414.67 T
+(/* de) 252 414.67 T
+(vice for which to fetch description, or) 273.42 414.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 442.05 414.67 S
+2 F
+( */) 520.7 414.67 T
+1 12 Q
+(XkbGetK) 108 395 T
+(e) 151.57 395 T
+(yboar) 156.54 395 T
+(d) 184.09 395 T
+2 F
+(allocates and returns a pointer to a keyboard description. It queries the) 193.09 395 T
+(server for those components specified in the) 108 382 T
+1 F
+(whic) 322.96 382 T
+(h) 345.44 382 T
+2 F
+( parameter for device) 351.44 382 T
+1 F
+(device_spec) 456.73 382 T
+2 F
+( and) 514.7 382 T
+(copies the results to the) 108 369 T
+5 F
+-0.6 (XkbDescRec) 223.66 369 S
+2 F
+( it allocated. The remaining fields in the keyboard) 289.66 369 T
+(description are set to) 108 356 T
+5 F
+-0.6 (NULL) 210.65 356 S
+2 F
+(. The valid masks for) 237.05 356 T
+1 F
+(which) 341.7 356 T
+2 F
+( are those listed in Table 6.2.) 370.37 356 T
+1 F
+(XkbGetK) 108 335 T
+(e) 151.57 335 T
+(yboar) 156.54 335 T
+(d) 184.09 335 T
+2 F
+( can generate) 190.09 335 T
+5 F
+-0.6 (BadAlloc) 256.39 335 S
+2 F
+( protocol errors.) 309.19 335 T
+(To free the returned keyboard description, use) 108 314 T
+1 F
+(XkbF) 332.6 314 T
+(r) 357.94 314 T
+(eeK) 362.16 314 T
+(e) 380.4 314 T
+(yboar) 385.37 314 T
+(d) 412.92 314 T
+2 F
+( \050see section 6.4\051.) 418.92 314 T
+0 F
+(6.3) 72 289 T
+(T) 108 289 T
+(rac) 114.37 289 T
+(king Chang) 132.14 289 T
+(es to the K) 197.6 289 T
+(e) 258.77 289 T
+(yboar) 265.26 289 T
+(d Description in the Ser) 297.7 289 T
+(ver) 432.52 289 T
+2 F
+-0.23 (The server can generate events whenever its copy of the keyboard description for a device) 108 269 P
+(changes. Refer to section 14.4 for detailed information on tracking changes to the key-) 108 256 T
+(board description.) 108 243 T
+0 F
+(6.4) 72 218 T
+(Allocating) 108 218 T
+(and Freeing a K) 169.34 218 T
+(e) 259.19 218 T
+(yboar) 265.68 218 T
+(d Description) 298.12 218 T
+2 F
+(Applications seldom need to directly allocate a keyboard description; calling) 108 198 T
+1 F
+(XkbGetK) 479.28 198 T
+(e) 522.85 198 T
+(y-) 527.82 198 T
+(boar) 108 185 T
+(d) 130.22 185 T
+2 F
+( usually suffices. In the event you need to create a keyboard description from) 136.22 185 T
+(scratch, however, use) 108 172 T
+1 F
+(XkbAllocK) 214.3 172 T
+(e) 265.87 172 T
+(yboar) 270.84 172 T
+(d) 298.39 172 T
+2 F
+( rather than directly calling) 304.39 172 T
+1 F
+(malloc) 437.36 172 T
+2 F
+(or) 473.03 172 T
+1 F
+(Xmalloc) 486.02 172 T
+2 F
+(.) 526.02 172 T
+2 11 Q
+(XkbDescRec *) 108 151.67 T
+3 F
+(XkbAllocK) 177.04 151.67 T
+(eyboard) 229.93 151.67 T
+2 F
+(\050v) 268.43 151.67 T
+(oid\051) 277.38 151.67 T
+2 12 Q
+(If) 108 132 T
+1 F
+(XkbAllocK) 118.99 132 T
+(e) 170.57 132 T
+(yboar) 175.54 132 T
+(d) 203.09 132 T
+2 F
+( fails to allocate the keyboard description, it returns) 209.09 132 T
+5 F
+-0.6 (NULL) 459.05 132 S
+2 F
+(. Other-) 485.45 132 T
+-0.47 (wise, it returns a pointer to an empty keyboard description structure. The) 108 119 P
+1 F
+-0.47 (device_spec) 454.97 119 P
+2 F
+-0.47 ( field) 512.94 119 P
+(will have been initialized to) 108 106 T
+5 F
+-0.6 (XkbUseCoreKbd) 244.32 106 S
+2 F
+(. You may then either fill in the structure) 330.12 106 T
+(components or use Xkb functions to obtain values for the structure components from a) 108 93 T
+(keyboard device.) 108 80 T
+3 F
+(T) 217.75 679 T
+(able 6.2 Mask Bits f) 224.65 679 T
+(or XkbDescRec) 328.36 679 T
+1 F
+(Mask Bit) 172 652 T
+(XkbDescRec) 298 659 T
+(F) 298 645 T
+(ield) 304.79 645 T
+(V) 370 652 T
+(alue) 376 652 T
+2 11 Q
+(XkbControlsMask) 172 630.67 T
+(ctrls) 298 630.67 T
+(\0501L<<0\051) 370 630.67 T
+(XkbServ) 172 616.67 T
+(erMapMask) 210.94 616.67 T
+(serv) 298 616.67 T
+(er) 316.16 616.67 T
+(\0501L<<1\051) 370 616.67 T
+(XkbIClientMapMask) 172 602.67 T
+(map) 298 602.67 T
+(\0501L<<2\051) 370 602.67 T
+(XkbIndicatorMapMask) 172 588.67 T
+(indicators) 298 588.67 T
+(\0501L<<3\051) 370 588.67 T
+(XkbNamesMask) 172 574.67 T
+(names) 298 574.67 T
+(\0501L<<4\051) 370 574.67 T
+(XkbCompatMapMask) 172 560.67 T
+(compat) 298 560.67 T
+(\0501L<<5\051) 370 560.67 T
+(XkbGeometryMask) 172 546.67 T
+(geom) 298 546.67 T
+(\0501L<<6\051) 370 546.67 T
+(XkbAllComponentsMask) 172 532.67 T
+(All Fields) 298 532.67 T
+(\0500x7f\051) 370 532.67 T
+171 671 441 671 2 L
+V
+0.5 H
+0 Z
+N
+171 640 441 640 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "28" 40
+%%Page: "29" 41
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(29) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(6 Complete K) 383.71 744.87 T
+(e) 450.66 744.87 T
+(yboard Description) 455.38 744.87 T
+2 12 Q
+-0.21 (To destroy either an entire an) 108 712 P
+5 F
+-0.46 -0.6 (XkbDescRec) 250.71 712 B
+2 F
+-0.21 ( or just some of its members, use) 316.71 712 P
+1 F
+-0.21 (XkbFreeKey-) 476.03 712 P
+(board.) 108 699 T
+2 11 Q
+(v) 108 678.67 T
+(oid) 113.28 678.67 T
+3 F
+(XkbFr) 130.09 678.67 T
+(eeK) 161.67 678.67 T
+(eyboard) 179.72 678.67 T
+1 F
+(\050xkb, whic) 218.22 678.67 T
+(h, fr) 263.27 678.67 T
+(ee_all) 281.2 678.67 T
+2 F
+(\051) 308.08 678.67 T
+(XkbDescPtr) 126 665.67 T
+1 F
+(xkb) 234 665.67 T
+2 F
+(;) 249.27 665.67 T
+(/* k) 306 665.67 T
+(e) 322.7 665.67 T
+(yboard description with components to free */) 327.42 665.67 T
+(unsigned int) 126 652.67 T
+1 F
+(whic) 234 652.67 T
+(h) 254.61 652.67 T
+2 F
+(;) 260.11 652.67 T
+(/* mask selecting components to free */) 306 652.67 T
+(Bool) 126 639.67 T
+1 F
+(fr) 234 639.67 T
+(ee_all) 240.93 639.67 T
+2 F
+(;) 267.81 639.67 T
+(/*) 306 639.67 T
+5 F
+-0.55 (True) 317.31 639.67 S
+2 F
+( => free all components and) 341.51 639.67 T
+1 F
+(xkb) 467.56 639.67 T
+2 F
+( */) 482.83 639.67 T
+1 12 Q
+(XkbF) 108 620 T
+(r) 133.33 620 T
+(eeK) 137.56 620 T
+(e) 155.8 620 T
+(yboar) 160.76 620 T
+(d) 188.32 620 T
+2 F
+( frees the components of) 194.32 620 T
+1 F
+(xkb) 315.29 620 T
+2 F
+( specified by) 331.94 620 T
+1 F
+(whic) 396.26 620 T
+(h) 418.75 620 T
+2 F
+( and sets the corre-) 424.75 620 T
+(sponding values to) 108 607 T
+5 F
+-0.6 (NULL) 201 607 S
+2 F
+(. If) 227.4 607 T
+1 F
+(fr) 244.39 607 T
+(ee_all) 251.95 607 T
+2 F
+( is) 281.28 607 T
+5 F
+-0.6 (True) 295.28 607 S
+2 F
+(,) 321.68 607 T
+1 F
+(XkbF) 327.68 607 T
+(r) 353.02 607 T
+(eeK) 357.24 607 T
+(e) 375.48 607 T
+(yboar) 380.45 607 T
+(d) 408 607 T
+2 F
+( frees every non-) 414 607 T
+5 F
+-0.6 (NULL) 494.96 607 S
+2 F
+(component of) 108 594 T
+1 F
+(xkb) 177.32 594 T
+2 F
+( and then frees the) 193.98 594 T
+1 F
+(xkb) 284.95 594 T
+2 F
+( structure itself.) 301.61 594 T
+FMENDPAGE
+%%EndPage: "29" 41
+%%Page: "30" 42
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(30) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(7 V) 450.22 744.87 T
+(irtual Modi\336ers) 471.25 744.87 T
+0 14 Q
+(7) 72 710.67 T
+(Vir) 108 710.67 T
+(tual Modi\336er) 126.96 710.67 T
+(s) 209.98 710.67 T
+2 12 Q
+-0.47 (The core protocol specifies that certain keysyms, when bound to modifiers, affect the rules) 108 688 P
+(of keycode to keysym interpretation for all keys; for example, when the) 108 675 T
+4 11 Q
+(Num_Loc) 454.93 675 T
+(k) 501.78 675 T
+2 12 Q
+( key-) 507.28 675 T
+(sym is bound to some modifier, that modifier is used to select between shifted and) 108 662 T
+(unshifted state for the numeric keypad keys. The core protocol does not provide a conve-) 108 649 T
+-0.16 (nient way to determine the mapping of modifier bits \050in particular) 108 636 P
+5 F
+-0.36 -0.6 (Mod1) 425.18 636 B
+2 F
+-0.16 ( through) 451.58 636 P
+5 F
+-0.36 -0.6 (Mod5) 494.59 636 B
+2 F
+-0.16 (\051 to) 520.99 636 P
+(keysyms such as) 108 623 T
+4 11 Q
+(Num_Loc) 190.99 623 T
+(k) 237.84 623 T
+2 12 Q
+( and) 243.34 623 T
+4 11 Q
+(Mode_s) 266.67 623 T
+(witch) 305.47 623 T
+2 12 Q
+(. Using the core protocol only, a client) 330.52 623 T
+-0.28 (application must retrieve and search the modifier map to determine the keycodes bound to) 108 610 P
+(each modifier, and then retrieve and search the keyboard mapping to determine the key-) 108 597 T
+(syms bound to the keycodes. It must repeat this process for all modifiers whenever any) 108 584 T
+(part of the modifier mapping is changed.) 108 571 T
+(Xkb alleviates these problems by defining virtual modifiers. In addition to the eight core) 108 550 T
+(modifiers, referred to as the) 108 537 T
+1 F
+(r) 243.96 537 T
+(eal modi\336er) 248.18 537 T
+(s) 305.72 537 T
+2 F
+(, Xkb provides a set of sixteen named) 310.39 537 T
+1 F
+(virtual) 494.03 537 T
+(modi\336er) 108 524 T
+(s) 147.88 524 T
+2 F
+(. Each virtual modifier can be bound to any set of the real modifiers \050) 152.54 524 T
+5 F
+-0.6 (Shift) 484.81 524 S
+2 F
+(,) 517.81 524 T
+5 F
+-0.6 (Lock) 108 511 S
+2 F
+(,) 134.4 511 T
+5 F
+-0.6 (Control,) 140.4 511 S
+2 F
+( and) 193.2 511 T
+5 F
+-0.6 (Mod1) 216.53 511 S
+2 F
+(-) 242.93 511 T
+5 F
+-0.6 (Mod5) 246.93 511 S
+2 F
+(\051.) 273.33 511 T
+(The separation of function from physical modifier bindings makes it easier to specify) 108 490 T
+-0.31 (more clearly the intent of a binding. X servers do not all assign modifiers the same way \321) 108 477 P
+-0.41 (for example,) 108 464 P
+4 11 Q
+-0.42 (Num_Loc) 170.83 464 P
+-0.42 (k) 217.68 464 P
+2 12 Q
+-0.41 ( might be bound to) 223.18 464 P
+5 F
+-0.98 (Mod2) 314.8 464 P
+2 F
+-0.41 ( for one vendor and to) 343.6 464 P
+5 F
+-0.98 (Mod4) 450.45 464 P
+2 F
+-0.41 ( for another.) 479.25 464 P
+-0.38 (This makes it cumbersome to automatically remap the keyboard to a desired configuration) 108 451 P
+(without some kind of prior knowledge about the keyboard layout and bindings. With) 108 438 T
+(XKB, applications can use virtual modifiers to specify the desired behavior, without) 108 425 T
+(regard for the actual physical bindings in effect.) 108 412 T
+0 F
+(7.1) 72 387 T
+(Vir) 108 387 T
+(tual Modi\336er Names and Masks) 124.25 387 T
+2 F
+-0.15 (Virtual modifiers are named by converting their string name to an X) 108 367 P
+5 F
+-0.32 -0.6 (Atom) 436.86 367 B
+2 F
+-0.15 ( and storing the) 463.26 367 P
+(Atom in the) 108 354 T
+1 F
+(names.vmods) 168.34 354 T
+2 F
+( array in an) 232.66 354 T
+5 F
+-0.6 (XkbDescRec) 289.97 354 S
+2 F
+( structure \050see section 6.1\051. The posi-) 355.97 354 T
+(tion of a name Atom in the) 108 341 T
+1 F
+(names.vmods) 240.32 341 T
+2 F
+( array defines the bit position used to represent) 304.64 341 T
+(the virtual modifier and also the index used when accessing virtual modifier information) 108 328 T
+-0.37 (in arrays: the name in the i-th \0500 relative\051 entry of) 108 315 P
+1 F
+-0.37 (names.vmods) 344.89 315 P
+2 F
+-0.37 ( is the i-th virtual modifier,) 409.21 315 P
+-0.19 (represented by the mask \0501<<i\051. Throughout Xkb, various functions have a parameter that) 108 302 P
+-0.17 (is a mask representing virtual modifier choices. In each case, the i-th bit \0500 relative\051 of the) 108 289 P
+(mask represents the i-th virtual modifier.) 108 276 T
+(To set the name of a virtual modifier, use) 108 255 T
+1 F
+(XkbSetNames) 309.3 255 T
+2 F
+(, using) 375.29 255 T
+5 F
+-0.6 (XkbVirtualModNames-) 410.29 255 S
+-0.41 -0.6 (Mask) 108 242 B
+2 F
+-0.19 ( in) 134.4 242 P
+1 F
+-0.19 (whic) 149.36 242 P
+-0.19 (h) 171.85 242 P
+2 F
+-0.19 ( and the name in the) 177.85 242 P
+1 F
+-0.19 (xkb) 276.71 242 P
+2 F
+-0.19 ( argument; to retrieve indicator names, use) 293.37 242 P
+1 F
+-0.19 (XkbGet-) 500.02 242 P
+(Names) 108 229 T
+2 F
+(. These functions are discussed in Chapter 18.) 140.66 229 T
+0 F
+(7.2) 72 204 T
+(Modi\336er De\336nitions) 108 204 T
+2 F
+(An Xkb) 108 184 T
+1 F
+( modi\336er de\336nition) 146.33 184 T
+2 F
+( enumerates a collection of real and virtual modifiers but does) 237.66 184 T
+(not in itself bind those modifiers to any particular key or to each other. Modifier defini-) 108 171 T
+(tions are included in a number of structures in the keyboard description to define the col-) 108 158 T
+(lection of modifiers that affect or are affected by some other entity. A modifier definition) 108 145 T
+-0.37 (is relevant only in the context of some other entity such as an indicator map, a control, or a) 108 132 P
+(key type. \050See sections 8.2.2, 10.8, and 15.2.\051) 108 119 T
+2 11 Q
+(typedef struct _XkbMods {) 126 98.67 T
+(unsigned char) 144 85.67 T
+(mask;) 234 85.67 T
+(/* real_mods | vmods mapped to real modi\336ers */) 306 85.67 T
+(unsigned char) 144 72.67 T
+(real_mods;) 234 72.67 T
+(/* real modi\336er bits */) 306 72.67 T
+FMENDPAGE
+%%EndPage: "30" 42
+%%Page: "31" 43
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(31) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(7 V) 450.22 744.87 T
+(irtual Modi\336ers) 471.25 744.87 T
+(unsigned short) 144 712.67 T
+(vmods;) 234 712.67 T
+(/* virtual modi\336er bits */) 306 712.67 T
+(}) 126 699.67 T
+3 F
+(XkbModsRec) 134.03 699.67 T
+2 F
+(,*XkbModsPtr;) 198.19 699.67 T
+2 12 Q
+(An Xkb modifier definition consists of a set of bit masks corresponding to the eight real) 108 680 T
+(modifiers \050) 108 667 T
+1 F
+(real_mods) 160.99 667 T
+2 F
+(\051; a similar set of bitmasks corresponding to the 16 named virtual) 211.66 667 T
+-0.16 (modifiers \050) 108 654 P
+1 F
+-0.16 (vmods) 160.83 654 P
+2 F
+-0.16 (\051; and an effective mask \050) 191.49 654 P
+1 F
+-0.16 (mask) 313 654 P
+2 F
+-0.16 (\051. The effective mask represents the set of) 337.66 654 P
+(all real modifiers that can logically be set either by setting any of the real modifiers or by) 108 641 T
+-0.02 (setting any of the virtual modifiers in the definition.) 108 628 P
+1 F
+-0.02 (mask) 359.83 628 P
+2 F
+-0.02 ( is derived from the real and vir-) 384.49 628 P
+(tual modifiers and should never be explicitly changed \321 it contains all of the real modifi-) 108 615 T
+(ers specified in the definition \050) 108 602 T
+1 F
+(real_mods) 254.98 602 T
+2 F
+(\051) 305.64 602 T
+1 F
+( plus) 309.64 602 T
+2 F
+( any real modifiers that are bound to the) 332.64 602 T
+(virtual modifiers specified in the definition \050) 108 589 T
+1 F
+(vmods) 321.31 589 T
+2 F
+(\051. The binding of the virtual modifiers) 351.97 589 T
+(to real modifiers is exterior to the modifier definition. Xkb automatically recomputes the) 108 576 T
+(mask field of modifier definitions as necessary. Whenever you access a modifier defini-) 108 563 T
+(tion that has been retrieved using an Xkb library function, the mask field will be correct) 108 550 T
+(for the keyboard mapping of interest.) 108 537 T
+0 F
+(7.3) 72 512 T
+(Binding Vir) 108 512 T
+(tual Modi\336er) 172.25 512 T
+(s to Real Modi\336er) 243.41 512 T
+(s) 343.25 512 T
+2 F
+(The binding of virtual modifiers to real modifiers is defined by the) 108 492 T
+1 F
+(server.vmods) 430.63 492 T
+2 F
+( array in) 494.28 492 T
+-0.13 (an) 108 479 P
+5 F
+-0.28 -0.6 (XkbDescRec) 122.2 479 B
+2 F
+-0.13 ( structure. Each entry contains the real modifier bits that are bound to the) 188.2 479 P
+-0.15 (virtual modifier corresponding to the entry. The overall relationship of fields dealing with) 108 466 P
+(virtual modifiers in the server keyboard description are shown in Figure 16.2.) 108 453 T
+0 F
+(7.4) 72 428 T
+(Vir) 108 428 T
+(tual Modi\336er K) 124.25 428 T
+(e) 207.41 428 T
+(y Mapping) 213.9 428 T
+2 F
+(Xkb maintains a) 108 408 T
+1 F
+(virtual modi\336er mapping) 189.66 408 T
+2 F
+(, which lists the virtual modifiers associated) 309.66 408 T
+-0.22 (with, or bound to, each key. The real modifiers bound to a virtual modifier always include) 108 395 P
+(all of the modifiers bound to any of the keys that specify that virtual modifier in their vir-) 108 382 T
+(tual modifier mapping. The) 108 369 T
+1 F
+(server.vmodmap) 242.99 369 T
+2 F
+( array indicates which virtual modifiers are) 322.63 369 T
+(bound to each key; each entry is a bitmask for the virtual modifier bits. The) 108 356 T
+1 F
+(server.vmod-) 473.28 356 T
+(map) 108 343 T
+2 F
+( array is indexed by keycode.) 128.66 343 T
+(The) 108 322 T
+1 F
+(vmodmap) 129.66 322 T
+2 F
+( and) 176.32 322 T
+1 F
+(vmods) 199.64 322 T
+2 F
+( members of the server map are the \322master\323 virtual modifier) 230.3 322 T
+(definitions. Xkb automatically propagates any changes to these fields to all other fields) 108 309 T
+(that use virtual modifier mappings \050see section 16.4\051.) 108 296 T
+(For example, if) 108 275 T
+5 F
+-0.6 (Mod3) 184.66 275 S
+2 F
+( is bound to the) 211.06 275 T
+4 11 Q
+(Num_Loc) 288.06 275 T
+(k) 334.91 275 T
+2 12 Q
+( key by the core protocol modifier map-) 340.41 275 T
+(ping, and the) 108 262 T
+5 F
+-0.6 (NumLock) 173.33 262 S
+2 F
+( virtual modifier is bound to they) 219.53 262 T
+4 11 Q
+(Num_Loc) 381.19 262 T
+(k) 428.04 262 T
+2 12 Q
+( key by the virtual) 433.54 262 T
+(modifier mapping,) 108 249 T
+5 F
+-0.6 (Mod3) 200.33 249 S
+2 F
+( is added to the set of modifiers associated with) 226.73 249 T
+5 F
+-0.6 (NumLock) 457.37 249 S
+2 F
+(.) 503.57 249 T
+(The virtual modifier mapping is normally updated whenever actions are automatically) 108 228 T
+(applied to symbols \050see section 16.4 for details\051, and few applications should need to) 108 215 T
+(change the virtual modifier mapping explicitly.) 108 202 T
+(Use) 108 181 T
+1 F
+(XkbGetMap) 129.66 181 T
+2 F
+(\050see section 14.2\051 to get the virtual modifiers from the server or use) 190.64 181 T
+1 F
+(Xkb-) 517.25 181 T
+(GetV) 108 168 T
+(irtualMods) 131.77 168 T
+2 F
+( \050see section 16.4.1\051 to update a local copy of the virtual modifiers bind-) 185.11 168 T
+(ings from the server. To set the binding of a virtual modifier to a real modifier, use) 108 155 T
+1 F
+(XkbSetMap) 108 142 T
+2 F
+( \050see) 163.32 142 T
+(section 14.3) 188.64 142 T
+1 F
+(\051.) 246.64 142 T
+FMENDPAGE
+%%EndPage: "31" 43
+%%Page: "32" 44
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(32) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(7 V) 450.22 744.87 T
+(irtual Modi\336ers) 471.25 744.87 T
+2 12 Q
+(To determine the mapping of virtual modifiers to core X protocol modifiers, use) 108 712 T
+1 F
+(XkbVir-) 495.95 712 T
+(tualModsToReal) 108 699 T
+2 F
+(.) 188 699 T
+2 11 Q
+(Bool) 108 678.67 T
+3 F
+(XkbV) 132.15 678.67 T
+(irtualModsT) 159.85 678.67 T
+(oReal) 218.74 678.67 T
+2 F
+(\050) 245.62 678.67 T
+1 F
+(xkb, virtual_mask, mask_rtrn) 249.28 678.67 T
+2 F
+(\051) 378.21 678.67 T
+(XkbDescPtr) 126 665.67 T
+1 F
+(xkb) 234 665.67 T
+2 F
+(;) 249.27 665.67 T
+(/* k) 306 665.67 T
+(e) 322.7 665.67 T
+(yboard description for input de) 327.42 665.67 T
+(vice */) 463.4 665.67 T
+(unsigned int) 126 652.67 T
+1 F
+(virtual_mask) 234 652.67 T
+2 F
+(;) 291.44 652.67 T
+(/* virtual modi\336er mask to translate */) 306 652.67 T
+(unsigned int *) 126 639.67 T
+1 F
+(mask_rtrn) 234 639.67 T
+2 F
+(;) 279.22 639.67 T
+(/* back\336lled with real modi\336ers */) 306 639.67 T
+2 12 Q
+-0.17 (If the keyboard description defined by) 108 620 P
+1 F
+-0.17 (xkb) 293.6 620 P
+2 F
+-0.17 ( includes bindings for virtual modifiers,) 310.26 620 P
+1 F
+-0.17 (XkbV) 502.9 620 P
+-0.17 (ir-) 528 620 P
+-0.3 (tualModsT) 108 607 P
+-0.3 (oReal) 158.9 607 P
+2 F
+-0.3 ( uses those bindings to determine the set of real modifiers that correspond) 186.9 607 P
+(to the set of virtual modifiers specified in) 108 594 T
+1 F
+(virtual_mask) 309.31 594 T
+2 F
+(. The) 371.98 594 T
+1 F
+(virtual_mask) 399.64 594 T
+2 F
+( parameter is a) 462.3 594 T
+(mask specifying the virtual modifiers to translate; the i-th bit \0500 relative\051 of the mask rep-) 108 581 T
+(resents the i-th virtual modifier. If) 108 568 T
+1 F
+(mask_rtrn) 274.31 568 T
+2 F
+( is non-) 323.64 568 T
+5 F
+-0.6 (NULL) 359.64 568 S
+2 F
+(,) 386.04 568 T
+1 F
+(XkbV) 392.04 568 T
+(irtualModsT) 417.14 568 T
+(oReal) 476.05 568 T
+2 F
+( back-) 504.05 568 T
+(fills it with the resulting real modifier mask. If the keyboard description in) 108 555 T
+1 F
+(xkb) 467.96 555 T
+2 F
+( does not) 484.62 555 T
+(include virtual modifier bindings,) 108 542 T
+1 F
+(XkbV) 272.33 542 T
+(irtualModsT) 297.43 542 T
+(oReal) 356.34 542 T
+2 F
+( returns) 384.34 542 T
+5 F
+-0.6 (False) 423.66 542 S
+2 F
+(; otherwise, it) 456.66 542 T
+(returns) 108 529 T
+5 F
+-0.6 (True) 144.32 529 S
+2 F
+(.) 170.73 529 T
+0 F
+(Note) 126 508.67 T
+2 11 Q
+(It is possible for a local \050client-side\051 k) 162 508.67 T
+(e) 329 508.67 T
+(yboard description \050the) 333.72 508.67 T
+1 F
+(xkb) 438.51 508.67 T
+2 F
+( parameter\051 to not) 453.77 508.67 T
+(contain an) 162 496.67 T
+(y virtual modi\336er information \050simply because the client has not requested) 207.35 496.67 T
+(it\051 while the serv) 162 484.67 T
+(er\325) 236.07 484.67 T
+(s corresponding de\336nition may contain virtual modi\336er informa-) 247.68 484.67 T
+(tion.) 162 472.67 T
+0 12 Q
+(7.4.1) 72 448 T
+(Inactive Modi\336er Sets) 108 448 T
+2 F
+(An unbound virtual modifier is one that is not bound to any real modifier) 108 428 T
+(\050) 108 415 T
+1 F
+(server) 112 415 T
+2 F
+(->) 141.98 415 T
+1 F
+(vmods) 152.75 415 T
+2 F
+([virtual_modifier_index] is zero\051.) 183.41 415 T
+(Some Xkb operations ignore modifier definitions in which the virtual modifiers are) 108 394 T
+(unbound. Consider this example:) 108 381 T
+2 11 Q
+(if \050state matches {Shift}\051 Do OneThing;) 144 360.67 T
+(if \050state matches {Shift+NumLock}\051 Do Another;) 144 348.67 T
+2 12 Q
+-0.32 (If the) 108 330 P
+5 F
+-0.71 -0.6 (NumLock) 136.01 330 B
+2 F
+-0.32 ( virtual modifier is not bound to any real modifiers, the effective masks for) 182.21 330 P
+(these two cases are identical \050that is, contain only) 108 317 T
+5 F
+-0.6 (Shift) 348.62 317 S
+2 F
+(\051. When it is essential to distin-) 381.62 317 T
+(guish between) 108 304 T
+(OneThing) 179.99 304 T
+( and Another, Xkb considers only those modifier definitions for) 228.65 304 T
+(which all virtual modifiers are bound.) 108 291 T
+0 F
+(7.5) 72 266 T
+(Con) 108 266 T
+(ventions) 130.85 266 T
+2 F
+(The Xkb extension does not require any specific virtual modifier names. However, every-) 108 246 T
+(one benefits if the same names are used for common modifiers. The following names are) 108 233 T
+(suggested:) 108 220 T
+5 F
+-0.6 (NumLock) 126 199 S
+-0.6 (ScrollLock) 126 186 S
+-0.6 (Alt) 126 173 S
+-0.6 (Meta) 126 160 S
+-0.6 (AltGr) 126 147 S
+-0.6 (LevelThree) 126 134 S
+0 F
+(7.6) 72 109 T
+(Example) 108 109 T
+2 F
+(If the second \0500-relative\051 entry in) 108 89 T
+1 F
+(names.vmods) 269.95 89 T
+2 F
+( contains the Atom for \322NumLock\323, then) 334.27 89 T
+-0.41 (0x4 \0501<<2\051 is the virtual modifier bit for the) 108 76 P
+5 F
+-0.89 -0.6 (NumLock) 319.53 76 B
+2 F
+-0.41 ( virtual modifier. If) 365.73 76 P
+1 F
+-0.41 (server.vmods) 459.77 76 P
+2 F
+-0.41 ([2]) 523.41 76 P
+FMENDPAGE
+%%EndPage: "32" 44
+%%Page: "33" 45
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(33) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(7 V) 450.22 744.87 T
+(irtual Modi\336ers) 471.25 744.87 T
+2 12 Q
+(contains) 108 712 T
+5 F
+-0.6 (Mod3Mask) 151 712 S
+2 F
+(, then the) 203.8 712 T
+5 F
+-0.6 (NumLock) 251.12 712 S
+2 F
+( virtual modifier is bound to the) 297.33 712 T
+5 F
+-0.6 (Mod3) 452.99 712 S
+2 F
+( real modi-) 479.39 712 T
+(fier.) 108 699 T
+(A virtual modifier definition for this example would have:) 108 678 T
+(real_mods = 0) 126 657 T
+(vmods = 0x4 \050NumLock named virtual modifier\051) 126 644 T
+(mask = 0x20 \050Mod3Mask\051) 126 631 T
+(Continuing the example, if the keyboard has a) 108 610 T
+4 11 Q
+(Num_Loc) 332.3 610 T
+(k) 379.15 610 T
+2 12 Q
+( keysym bound to the key with) 384.65 610 T
+(keycode 14, and the) 108 597 T
+5 F
+-0.6 (NumLock) 206.98 597 S
+2 F
+( virtual modifier is bound to this key,) 253.18 597 T
+1 F
+(server.vmodmap) 434.85 597 T
+2 F
+([14]) 514.49 597 T
+(contains 0x4.) 108 584 T
+(Finally, if the keyboard also used the real) 108 563 T
+5 F
+-0.6 (Mod1) 309.64 563 S
+2 F
+( modifier for numeric lock operations, the) 336.04 563 T
+(modifier definition below would represent the situation where either the key bound to) 108 550 T
+5 F
+-0.6 (Mod1) 108 537 S
+2 F
+( or the) 134.4 537 T
+5 F
+-0.6 (NumLock) 168.06 537 S
+2 F
+( virtual modifier could be used for this purpose:) 214.26 537 T
+(real_mods = 0x8 \050Mod1Mask\051) 126 516 T
+(vmods = 0x4 \050NumLock named virtual modifier\051) 126 503 T
+(mask = 0x28 \050Mod1Mask | Mod3Mask\051) 126 490 T
+FMENDPAGE
+%%EndPage: "33" 45
+%%Page: "34" 46
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(34) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+0 14 Q
+(8) 72 710.67 T
+(Indicator) 108 710.67 T
+(s) 166.91 710.67 T
+2 12 Q
+(Although the core X implementation supports up to 32 LEDs on an input device, it does) 108 688 T
+(not provide any linkage between the state of the LEDs and the logical state of the input) 108 675 T
+(device. For example, most keyboards have a) 108 662 T
+5 F
+-0.6 (CapsLock) 324.29 662 S
+2 F
+( LED, but X does not provide a) 377.09 662 T
+(mechanism to make the LED automatically follow the logical state of the) 108 649 T
+4 11 Q
+(CapsLoc) 462.62 649 T
+(k) 505.81 649 T
+2 12 Q
+( key.) 511.31 649 T
+(Furthermore, the core X implementation does not provide clients with the ability to deter-) 108 628 T
+-0.31 (mine what bits in the) 108 615 P
+1 F
+-0.31 (led_mask) 210.1 615 P
+2 F
+-0.31 ( field of the) 255.43 615 P
+5 F
+-0.69 -0.6 (XKeyboardState) 312.83 615 B
+2 F
+-0.31 ( map to the particular LEDs) 405.23 615 P
+-0.25 (on the keyboard. For example, X does not provide a method for a client to determine what) 108 602 P
+(bit to set in the) 108 589 T
+1 F
+(led_mask) 182.34 589 T
+2 F
+( field to turn on the) 227.66 589 T
+2 11 Q
+(Scroll Lock) 322.99 589 T
+2 12 Q
+(LED or whether the keyboard) 377.38 589 T
+(even has a) 108 576 T
+2 11 Q
+(Scroll Lock) 160.98 576 T
+2 12 Q
+( LED.) 212.61 576 T
+-0.13 (Xkb provides indicator names and programmable indicators to help solve these problems.) 108 555 P
+(Using Xkb, clients can determine the names of the various indicators, determine and con-) 108 542 T
+(trol the way that the individual indicators should be updated to reflect keyboard changes,) 108 529 T
+(and determine which of the 32 keyboard indicators reported by the protocol are actually) 108 516 T
+-0.45 (present on the keyboard. Clients may also request immediate notification of changes to the) 108 503 P
+(state of any subset of the keyboard indicators, which makes it straightforward to provide) 108 490 T
+-0.4 (an on-screen \322virtual\323 LED panel. This chapter describes Xkb indicators and the functions) 108 477 P
+(used for manipulating them.) 108 464 T
+0 F
+(8.1) 72 439 T
+(Indicator Names) 108 439 T
+2 F
+(Xkb provides the capability of symbolically naming indicators. Xkb itself doesn\325t use) 108 419 T
+-0.23 (these symbolic names for anything; they are there only to help make the keyboard descrip-) 108 406 P
+-0.23 (tion comprehensible to humans. To set the names of specific indicators, use) 108 393 P
+1 F
+-0.23 (XkbSetNames) 471.24 393 P
+2 F
+(as discussed in Chapter 18. Then set the map using) 108 380 T
+1 F
+(XkbSetMap) 355.64 380 T
+2 F
+( \050see section 14.3\051 or) 410.96 380 T
+1 F
+(Xkb-) 514.27 380 T
+-0.06 (SetNamedIndicator) 108 367 P
+2 F
+-0.06 ( \050below\051. To retrieve indicator names, use) 201.32 367 P
+1 F
+-0.06 (XkbGetNames) 404.49 367 P
+2 F
+-0.06 ( \050Chapter 18\051.) 473.14 367 P
+0 F
+(8.2) 72 342 T
+(Indicator Data Structures) 108 342 T
+2 F
+(Use the indicator description record,) 108 322 T
+5 F
+-0.6 (XkbIndicatorRec) 285.96 322 S
+2 F
+(, and its indicator map,) 384.96 322 T
+5 F
+-0.6 (XkbIndicatorMapRec) 108 309 S
+2 F
+(, to inquire about and control most indicator properties and) 226.8 309 T
+(behaviors.) 108 296 T
+0 F
+(8.2.1) 72 271 T
+(XkbIndicatorRec) 108 271 T
+2 F
+(The description for all the Xkb indicators is held in the) 108 251 T
+1 F
+(indicators) 374.3 251 T
+2 F
+( field of the complete) 422.98 251 T
+(keyboard description \050see Chapter 6\051, which is defined as follows:) 108 238 T
+2 11 Q
+(#de\336ne) 126 217.67 T
+(XkbNumIndicators) 162 217.67 T
+(32) 279 217.67 T
+(typedef struct {) 126 197.67 T
+(unsigned long) 144 184.67 T
+(ph) 270 184.67 T
+(ys_indicators;) 280.95 184.67 T
+(/* LEDs e) 414 184.67 T
+(xistence */) 458.44 184.67 T
+(XkbIndicatorMapRec) 144 171.67 T
+(maps[XkbNumIndicators];) 270 171.67 T
+(/* indicator maps */) 414 171.67 T
+(}) 126 158.67 T
+3 F
+(XkbIndicatorRec) 134.03 158.67 T
+2 F
+(,*XkbIndicatorPtr;) 215.91 158.67 T
+2 12 Q
+(This structure contains the) 108 139 T
+1 F
+(phys_indicators) 237.98 139 T
+2 F
+( field, which relates some information about) 314.65 139 T
+(the correspondence between indicators and physical LEDs on the keyboard, and an array) 108 126 T
+(of indicator) 108 113 T
+1 F
+(maps) 166.66 113 T
+2 F
+(, one map per indicator.) 191.99 113 T
+(The) 108 92 T
+1 F
+(phys_indicators) 129.66 92 T
+2 F
+( field indicates which indicators are bound to physical LEDs on the) 206.33 92 T
+(keyboard; if a bit is set in) 108 79 T
+1 F
+(phys_indicators) 232.99 79 T
+2 F
+(, then the associated indicator has a physical) 309.66 79 T
+FMENDPAGE
+%%EndPage: "34" 46
+%%Page: "35" 47
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(35) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+-0.02 (LED associated with it. This field is necessary because some indicators may not have cor-) 108 712 P
+(responding physical LEDs on the keyboard. For example, most keyboards have an LED) 108 699 T
+(for indicating the state of) 108 686 T
+5 F
+-0.6 (CapsLock) 231.65 686 S
+2 F
+(, but most keyboards do not have an LED that indi-) 284.45 686 T
+-0.24 (cates the current group. Because) 108 673 P
+1 F
+-0.24 (phys_indicators) 265.41 673 P
+2 F
+-0.24 ( describes a physical characteristic of the) 342.08 673 P
+(keyboard, you cannot directly change it under program control. However, if a client pro-) 108 660 T
+(gram loads a completely new keyboard description via) 108 647 T
+1 F
+(XkbGetK) 373.28 647 T
+(e) 416.86 647 T
+(yboar) 421.82 647 T
+(dByName) 449.38 647 T
+2 F
+(, or if a) 496.03 647 T
+(new keyboard is attached and the X implementation notices,) 108 634 T
+1 F
+(phys_indicators) 400.62 634 T
+2 F
+( changes if) 477.29 634 T
+(the indicators for the new keyboard are different.) 108 621 T
+0 F
+(8.2.2) 72 596 T
+(XkbIndicatorMapRec) 108 596 T
+2 F
+(Each indicator has its own set of attributes that specify whether clients can explicitly set) 108 576 T
+(its state and whether it tracks the keyboard state. The attributes of each indicator are held) 108 563 T
+(in the) 108 550 T
+1 F
+(maps) 138 550 T
+2 F
+( array, which is an array of) 163.33 550 T
+5 F
+-0.6 (XkbIndicatorRec) 295.28 550 S
+2 F
+( structures:) 394.29 550 T
+2 11 Q
+(typedef struct {) 126 529.67 T
+(unsigned char) 144 516.67 T
+(\337ags;) 234 516.67 T
+(/* ho) 315 516.67 T
+(w the indicator can be changed */) 337.03 516.67 T
+(unsigned char) 144 503.67 T
+(which_groups;) 234 503.67 T
+(/* match criteria for groups */) 315 503.67 T
+(unsigned char) 144 490.67 T
+(groups;) 234 490.67 T
+(/* which k) 315 490.67 T
+(e) 361.33 490.67 T
+(yboard groups the indicator w) 366.05 490.67 T
+(atches */) 497.92 490.67 T
+(unsigned char) 144 477.67 T
+(which_mods;) 234 477.67 T
+(/* match criteria for modi\336ers */) 315 477.67 T
+(XkbModsRec) 144 464.67 T
+(mods;) 234 464.67 T
+(/* which modi\336ers the indicator w) 315 464.67 T
+(atches */) 466.13 464.67 T
+(unsigned int) 144 451.67 T
+(ctrls;) 234 451.67 T
+(/* which controls the indicator w) 315 451.67 T
+(atches */) 460.01 451.67 T
+(}) 126 438.67 T
+3 F
+(XkbIndicatorMapRec) 134.03 438.67 T
+2 F
+(, *XkbIndicatorMapPtr;) 237.91 438.67 T
+2 12 Q
+(This indicator map specifies for each indicator:) 108 419 T
+2 11 Q
+(\245) 126 398.67 T
+(The conditions under which the k) 139.68 398.67 T
+(e) 287.14 398.67 T
+(yboard modi\336er state af) 291.85 398.67 T
+(fects the indicator) 396.36 398.67 T
+(\245) 126 386.67 T
+(The conditions under which the k) 139.68 386.67 T
+(e) 287.14 386.67 T
+(yboard group state af) 291.85 386.67 T
+(fects the indicator) 384.75 386.67 T
+(\245) 126 374.67 T
+(The conditions under which the state of the boolean controls af) 139.68 374.67 T
+(fects the indicator) 416.8 374.67 T
+(\245) 126 362.67 T
+(The ef) 139.68 362.67 T
+(fect \050if an) 167.81 362.67 T
+(y\051 of attempts to e) 210.4 362.67 T
+(xplicitly change the state of the indicator using the) 290.28 362.67 T
+(functions) 139.68 350.67 T
+1 12 Q
+(XkbSetControls) 183.37 350.67 T
+2 11 Q
+( or) 258.71 350.67 T
+1 F
+(XChang) 273.37 350.67 T
+(eK) 309.32 350.67 T
+(e) 321.15 350.67 T
+(yboar) 325.71 350.67 T
+(dContr) 350.96 350.67 T
+(ol) 381.64 350.67 T
+2 12 Q
+(For more information on the effects of explicit changes to indicators and the relationship) 108 332 T
+(to the indicator map, see section 8.4.1.) 108 319 T
+0 11 Q
+(XkbIndicatorMapRec flags field) 108 296.67 T
+2 12 Q
+(The) 108 278 T
+1 F
+(flags) 129.66 278 T
+2 F
+( field specifies the conditions under which the indicator can be changed and the) 153 278 T
+(effects of changing the indicator. The valid values for) 108 265 T
+1 F
+(flags) 368.6 265 T
+2 F
+( and their effects are shown in) 391.94 265 T
+(Table 8.1.) 108 252 T
+(Note that if) 108 111 T
+5 F
+-0.6 (XkbIM_NoAutomatic) 165.66 111 S
+2 F
+( is not set, by default the indicator follows the key-) 277.86 111 T
+(board state.) 108 98 T
+3 F
+(T) 220.42 232 T
+(able 8.1 XkbIndicatorMapRec \337ags Field) 227.32 232 T
+1 F
+(V) 109 212 T
+(alue) 115 212 T
+(Ef) 271 212 T
+(fect) 281.45 212 T
+2 11 Q
+(XkbIM_NoExplicit) 109 197.67 T
+(\0501L<<7\051) 217 197.67 T
+(Client applications cannot change the state of the indicator) 271 197.67 T
+(.) 528.25 197.67 T
+(XkbIM_NoAutomatic) 109 183.67 T
+(\0501L<<6\051) 217 183.67 T
+-0.14 (Xkb does not automatically change the v) 271 183.67 P
+-0.14 (alue of the indicator) 449.52 183.67 P
+(based upon a change in the k) 271 172.67 T
+(e) 397.97 172.67 T
+(yboard state, re) 402.69 172.67 T
+(g) 470.03 172.67 T
+(ardless of the) 475.48 172.67 T
+(v) 271 161.67 T
+(alues for the other \336elds of the indicator map.) 276.23 161.67 T
+(XkbIM_LEDDri) 109 147.67 T
+(v) 182.66 147.67 T
+(esKB) 187.99 147.67 T
+(\0501L<<5\051) 217 147.67 T
+-0.41 (A client application changing the state of the indicator causes) 271 147.67 P
+(the state of the k) 271 136.67 T
+(e) 343.6 136.67 T
+(yboard to change.) 348.32 136.67 T
+108 224 540 224 2 L
+V
+0.5 H
+0 Z
+N
+108 207 540 207 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "35" 47
+%%Page: "36" 48
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(36) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+-0.44 (If) 108 712 P
+5 F
+-0.96 -0.6 (XkbIM_LEDDrivesKB) 118.56 712 B
+2 F
+-0.44 ( is set and) 230.76 712 P
+5 F
+-0.96 -0.6 (XkbIM_NoExplicit) 279.67 712 B
+2 F
+-0.44 ( is not, and if you call a function) 385.28 712 P
+(which updates the server\325s image of the indicator map \050such as) 108 699 T
+1 F
+(XkbSetIndicatorMap) 412.93 699 T
+2 F
+( or) 512.92 699 T
+1 F
+(XkbSetNamedIndicator) 108 686 T
+2 F
+(\051, Xkb changes the keyboard state and controls to reflect the other) 219.98 686 T
+-0.05 (fields of the indicator map, as described in the remainder of this section. If you attempt to) 108 673 P
+(explicitly change the value of an indicator for which) 108 660 T
+5 F
+-0.6 (XkbIM_LEDDrivesKB) 362.28 660 S
+2 F
+( is absent or) 474.48 660 T
+(for which) 108 647 T
+5 F
+-0.6 (XkbIM_NoExplicit) 157.32 647 S
+2 F
+( is present, keyboard state or controls are unaffected.) 262.92 647 T
+(For example, a keyboard designer may want to make the) 108 626 T
+5 F
+-0.6 (CapsLock) 382.94 626 S
+2 F
+( LED controllable) 435.74 626 T
+(only by the server, but allow the) 108 613 T
+2 11 Q
+(Scroll Lock) 265.98 613 T
+2 12 Q
+( LED to be controlled by client applications.) 317.61 613 T
+(To do so, the keyboard designer could set the) 108 600 T
+5 F
+-0.6 (XkbIM_NoExplicit) 328.63 600 S
+2 F
+( flag for the) 434.23 600 T
+5 F
+-0.6 (CapsLock) 108 587 S
+2 F
+(LED, but not set it for the) 163.55 587 T
+2 11 Q
+(Scroll Lock) 290.21 587 T
+2 12 Q
+( LED. Or the keyboard designer may) 341.85 587 T
+(wish to allow the) 108 574 T
+5 F
+-0.6 (CapsLock) 193.33 574 S
+2 F
+( LED to be controlled by both the server and client applica-) 246.13 574 T
+-0.22 (tions and also have the server to automatically change the) 108 561 P
+5 F
+-0.48 -0.6 (CapsLock) 385.77 561 B
+2 F
+-0.22 (modifier state when-) 441.12 561 P
+(ever a client application changes the) 108 548 T
+5 F
+-0.6 (CapsLock) 285.29 548 S
+2 F
+( LED. To do so, the keyboard designer) 338.09 548 T
+(would not set the) 108 535 T
+5 F
+-0.6 (XkbIM_NoExplicit) 193.33 535 S
+2 F
+( flag, but would instead set the) 298.93 535 T
+5 F
+-0.6 (XkbIM_LEDDrivesKB) 108 522 S
+2 F
+( flag.) 220.2 522 T
+(The remaining fields in the indicator map specify the conditions under which Xkb auto-) 108 501 T
+(matically turns an indicator on or off \050only if) 108 488 T
+5 F
+-0.6 (XkbIM_NoAutomatic) 326.3 488 S
+2 F
+( is not set\051. If these) 438.51 488 T
+(conditions match the keyboard state, Xkb turns the indicator on. If the conditions do not) 108 475 T
+(match, Xkb turns the indicator off.) 108 462 T
+0 11 Q
+(XkbIndicatorMapRec which_groups and groups fields) 108 439.67 T
+2 12 Q
+-0.09 (The) 108 421 P
+1 F
+-0.09 (which_groups) 129.57 421 P
+2 F
+-0.09 ( and the) 197.57 421 P
+1 F
+-0.09 (groups) 238.29 421 P
+2 F
+-0.09 ( fields of an indicator map determine how the keyboard) 271.63 421 P
+(group state affects the corresponding indicator. The) 108 408 T
+1 F
+(which_groups) 358.61 408 T
+2 F
+( field controls the inter-) 426.61 408 T
+(pretation of) 108 395 T
+1 F
+(groups) 166.66 395 T
+2 F
+( and may contain any one of the following values:) 199.99 395 T
+2 11 Q
+(#de\336ne XkbIM_UseNone) 126 374.67 T
+(0) 279 374.67 T
+(#de\336ne XkbIM_UseBase) 126 361.67 T
+(\0501L << 0\051) 279 361.67 T
+(#de\336ne XkbIM_UseLatched) 126 348.67 T
+(\0501L << 1\051) 279 348.67 T
+(#de\336ne XkbIM_UseLock) 126 335.67 T
+(ed) 238.62 335.67 T
+(\0501L << 2\051) 279 335.67 T
+(#de\336ne XkbIM_UseEf) 126 322.67 T
+(fecti) 226.23 322.67 T
+(v) 245.5 322.67 T
+(e) 250.84 322.67 T
+(\0501L << 3\051) 279 322.67 T
+(#de\336ne XkbIM_UseAn) 126 309.67 T
+(yGroup) 229.4 309.67 T
+(XkbIM_UseLatched | XkbIM_UseLock) 279 309.67 T
+(ed |) 454.6 309.67 T
+(XkbIM_UseEf) 279 296.67 T
+(fecti) 344.1 296.67 T
+(v) 363.37 296.67 T
+(e) 368.7 296.67 T
+2 12 Q
+(The) 108 277 T
+1 F
+(groups) 129.66 277 T
+2 F
+(field specifies what keyboard groups an indicator watches and is the bitwise) 166 277 T
+(inclusive OR of the following valid values:) 108 264 T
+2 11 Q
+(#de\336ne XkbGroup1Mask) 126 243.67 T
+(\0501<<0\051) 279 243.67 T
+(#de\336ne XkbGroup2Mask) 126 230.67 T
+(\0501<<1\051) 279 230.67 T
+(#de\336ne XkbGroup3Mask) 126 217.67 T
+(\0501<<2\051) 279 217.67 T
+(#de\336ne XkbGroup4Mask) 126 204.67 T
+(\0501<<3\051) 279 204.67 T
+(#de\336ne XkbAn) 126 191.67 T
+(yGroupMask) 193.35 191.67 T
+(\0501<<7\051) 279 191.67 T
+(#de\336ne XkbAllGroupsMask) 126 178.67 T
+(\0500xf\051) 279 178.67 T
+FMENDPAGE
+%%EndPage: "36" 48
+%%Page: "37" 49
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(37) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+(If) 108 712 T
+5 F
+-0.6 (XkbIM_NoAutomatic) 118.99 712 S
+2 F
+( is not set \050the keyboard drives the indicator\051, the effect of) 231.19 712 T
+1 F
+(which_groups) 108 699 T
+2 F
+( and) 176 699 T
+1 F
+(gr) 199.33 699 T
+(oups) 209.46 699 T
+2 F
+( is shown in Table 8.2.) 232.13 699 T
+(The effect of) 108 469 T
+1 F
+(which_groups) 172.97 469 T
+2 F
+( and) 240.97 469 T
+1 F
+(groups) 264.3 469 T
+2 F
+( when you change an indicator for which) 297.64 469 T
+5 F
+-0.6 (XkbIM_LEDDrivesKB) 108 456 S
+2 F
+( is set \050the indicator drives the keyboard\051 is shown in Table 8.3.) 220.2 456 T
+(The \322New State\323 column refers to the new state to which you set the indicator.) 108 443 T
+0 11 Q
+(XkbIndicatorMapRec which_mods and mods fields) 108 172.67 T
+2 12 Q
+(The) 108 154 T
+1 F
+(mods) 129.66 154 T
+2 F
+(field specifies what modifiers an indicator watches. The) 157.99 154 T
+1 F
+(mods) 429.6 154 T
+2 F
+( field is an Xkb) 454.93 154 T
+-0.33 (modifier definition,) 108 141 P
+5 F
+-0.72 -0.6 (XkbModsRec) 204.34 141 B
+2 F
+-0.33 (, as described in section 7.2, which can specify both real) 270.34 141 P
+(and virtual modifiers. The) 108 128 T
+1 F
+(mods) 236.32 128 T
+2 F
+( field takes effect even if some or all of the virtual indica-) 261.65 128 T
+(tors specified in) 108 115 T
+1 F
+(mods) 187.66 115 T
+2 F
+( are unbound. To specify the mods field, in general, assign the mod-) 212.99 115 T
+(ifiers of interest to) 108 102 T
+1 F
+(mods.r) 199.32 102 T
+(eal_mods) 231.88 102 T
+2 F
+( and the virtual modifiers of interest to) 277.87 102 T
+1 F
+(mods.vmods) 465.85 102 T
+2 F
+(.) 524.84 102 T
+(You can disregard the) 108 89 T
+1 F
+(mods.mask) 216.64 89 T
+2 F
+( field unless your application needs to interpret the indi-) 269.63 89 T
+-0.47 (cator map directly \050that is, to simulate automatic indicator behavior on its own\051. Relatively) 108 76 P
+3 F
+(T) 93 679 T
+(able 8.2 XkbIndicatorMapRec which_gr) 99.9 679 T
+(oups and gr) 309.35 679 T
+(oups, K) 369.82 679 T
+(eyboard Dri) 408.86 679 T
+(v) 471.07 679 T
+(es Indicator) 476.95 679 T
+1 F
+(whic) 111 659 T
+(h_gr) 133.49 659 T
+(oups) 155.62 659 T
+(Ef) 219 659 T
+(fect) 229.45 659 T
+2 11 Q
+(XkbIM_UseNone) 111 643.67 T
+(The) 219 643.67 T
+1 F
+(gr) 238.85 643.67 T
+(oups) 248.14 643.67 T
+2 F
+( \336eld and the current k) 268.92 643.67 T
+(e) 368.09 643.67 T
+(yboard group state are ignored.) 372.81 643.67 T
+(XkbIM_UseBase) 111 628.67 T
+(If) 219 628.67 T
+1 12 Q
+(gr) 229.08 628.67 T
+(oups) 239.2 628.67 T
+2 11 Q
+( is nonzero, the indicator is lit whene) 261.87 628.67 T
+(v) 424.13 628.67 T
+(er the base k) 429.47 628.67 T
+(e) 484.64 628.67 T
+(yboard) 489.36 628.67 T
+-0.37 (group is nonzero. If) 219 617.67 P
+1 12 Q
+-0.4 (gr) 307.02 617.67 P
+-0.4 (oups) 317.15 617.67 P
+2 11 Q
+-0.37 ( is zero, the indicator is lit whene) 339.82 617.67 P
+-0.37 (v) 482.99 617.67 P
+-0.37 (er the base) 488.33 617.67 P
+(k) 219 606.67 T
+(e) 224.39 606.67 T
+(yboard group is zero.) 229.11 606.67 T
+(XkbIM_UseLatched) 111 591.67 T
+(If) 219 591.67 T
+1 12 Q
+(gr) 229.08 591.67 T
+(oups) 239.2 591.67 T
+2 11 Q
+( is nonzero, the indicator is lit whene) 261.87 591.67 T
+(v) 424.13 591.67 T
+(er the latched k) 429.47 591.67 T
+(e) 496.86 591.67 T
+(yboard) 501.58 591.67 T
+(group is nonzero. If) 219 580.67 T
+1 12 Q
+(gr) 308.51 580.67 T
+(oups) 318.64 580.67 T
+2 11 Q
+( is zero, the indicator is lit whene) 341.3 580.67 T
+(v) 487.06 580.67 T
+(er the) 492.4 580.67 T
+(latched k) 219 569.67 T
+(e) 258.91 569.67 T
+(yboard group is zero.) 263.63 569.67 T
+(XkbIM_UseLock) 111 554.67 T
+(ed) 188.48 554.67 T
+(The) 219 554.67 T
+1 12 Q
+(gr) 238.85 554.67 T
+(oups) 248.98 554.67 T
+2 11 Q
+( \336eld is interpreted as a mask. The indicator is lit when the) 271.65 554.67 T
+(current lock) 219 543.67 T
+(ed k) 271.73 543.67 T
+(e) 290.26 543.67 T
+(yboard group matches one of the bits that are set in) 294.98 543.67 T
+1 12 Q
+(gr) 219 532.67 T
+(oups) 229.13 532.67 T
+2 11 Q
+(.) 251.8 532.67 T
+(XkbIM_UseEf) 111 517.67 T
+(fecti) 176.1 517.67 T
+(v) 195.37 517.67 T
+(e) 200.71 517.67 T
+(The) 219 517.67 T
+1 12 Q
+(gr) 238.85 517.67 T
+(oups) 248.98 517.67 T
+2 11 Q
+( \336eld is interpreted as a mask. The indicator is lit when the) 271.65 517.67 T
+(current ef) 219 506.67 T
+(fecti) 261.17 506.67 T
+(v) 280.45 506.67 T
+(e k) 285.78 506.67 T
+(e) 298.8 506.67 T
+(yboard group matches one of the bits that are set in) 303.52 506.67 T
+1 12 Q
+(gr) 219 495.67 T
+(oups) 229.13 495.67 T
+2 11 Q
+(.) 251.8 495.67 T
+3 12 Q
+(T) 93 423 T
+(able 8.3 XkbIndicatorMapRec which_gr) 99.9 423 T
+(oups and gr) 309.35 423 T
+(oups, Indicator Dri) 369.82 423 T
+(v) 468.04 423 T
+(es K) 473.92 423 T
+(eyboard) 495.95 423 T
+1 F
+( whic) 109 403 T
+(h_gr) 134.49 403 T
+(oups) 156.62 403 T
+(Ne) 217 403 T
+(w State) 230.15 403 T
+(Ef) 271 403 T
+(fect on K) 281.45 403 T
+(e) 324.36 403 T
+(yboar) 329.33 403 T
+(d Gr) 356.88 403 T
+(oup State) 378.68 403 T
+2 11 Q
+(XkbIM_UseNone) 109 388.67 T
+(On or Of) 221.95 388.67 T
+(f) 261.39 388.67 T
+(No ef) 271 388.67 T
+(fect) 295.46 388.67 T
+(XkbIM_UseBase) 109 374.67 T
+(On or Of) 221.95 374.67 T
+(f) 261.39 374.67 T
+(No ef) 271 374.67 T
+(fect) 295.46 374.67 T
+(XkbIM_UseLatched) 109 360.67 T
+(On) 236.78 360.67 T
+(The) 271 360.67 T
+1 F
+(groups) 290.86 360.67 T
+2 F
+( \336eld is treated as a group mask. The k) 321.41 360.67 T
+(e) 491.17 360.67 T
+(yboard) 495.88 360.67 T
+(group latch is changed to the lo) 271 349.67 T
+(west numbered group speci-) 408.82 349.67 T
+-0.44 (\336ed in) 271 338.67 P
+1 F
+-0.44 (groups) 300.67 338.67 P
+2 F
+-0.44 (; if) 331.23 338.67 P
+1 F
+-0.44 (groups) 345.63 338.67 P
+2 F
+-0.44 ( is empty) 376.18 338.67 P
+-0.44 (, the k) 414.92 338.67 P
+-0.44 (e) 441.12 338.67 P
+-0.44 (yboard group latch is) 445.84 338.67 P
+(changed to zero.) 271 327.67 T
+(XkbIM_UseLatched) 109 313.67 T
+(Of) 236 313.67 T
+(f) 247.33 313.67 T
+-0.32 (The) 271 313.67 P
+1 F
+-0.32 (groups) 290.54 313.67 P
+2 F
+-0.32 ( \336eld is treated as a group mask. If the indicator is) 321.1 313.67 P
+(e) 271 302.67 T
+(xplicitly e) 275.72 302.67 T
+(xtinguished, k) 319.86 302.67 T
+(e) 382.09 302.67 T
+(yboard group latch is changed to) 386.81 302.67 T
+-0.27 (the lo) 271 291.67 P
+-0.27 (west numbered group not speci\336ed in) 295.21 291.67 P
+1 F
+-0.27 (groups) 461.65 291.67 P
+2 F
+-0.27 (; if) 492.21 291.67 P
+1 F
+-0.27 (groups) 506.96 291.67 P
+2 F
+(is zero, the k) 271 280.67 T
+(e) 327.1 280.67 T
+(yboard group latch is set to the inde) 331.82 280.67 T
+(x of the) 489 280.67 T
+(highest le) 271 269.67 T
+(g) 313.31 269.67 T
+(al k) 318.75 269.67 T
+(e) 334.83 269.67 T
+(yboard group.) 339.55 269.67 T
+(XkbIM_UseLock) 109 255.67 T
+(ed or) 186.48 255.67 T
+(XkbIM_UseEf) 109 242.67 T
+(fecti) 174.1 242.67 T
+(v) 193.37 242.67 T
+(e) 198.71 242.67 T
+(On) 236.78 255.67 T
+-0.45 (If the) 271 255.67 P
+1 F
+-0.45 (groups) 296.37 255.67 P
+2 F
+-0.45 ( mask is empty) 326.92 255.67 P
+-0.45 (, group is not changed; otherwise,) 391.17 255.67 P
+(the lock) 271 244.67 T
+(ed k) 306.02 244.67 T
+(e) 324.55 244.67 T
+(yboard group is changed to the lo) 329.27 244.67 T
+(west num-) 476.25 244.67 T
+(bered group speci\336ed in) 271 233.67 T
+1 F
+(groups) 379.76 233.67 T
+2 F
+(.) 410.32 233.67 T
+(XkbIM_UseLock) 109 219.67 T
+(ed or) 186.48 219.67 T
+(XkbIM_UseEf) 109 206.67 T
+(fecti) 174.1 206.67 T
+(v) 193.37 206.67 T
+(e) 198.71 206.67 T
+(Of) 236 219.67 T
+(f) 247.33 219.67 T
+(Lock) 271 219.67 T
+(ed k) 293.49 219.67 T
+(e) 312.02 219.67 T
+(yboard group is changed to the lo) 316.74 219.67 T
+(west numbered) 463.72 219.67 T
+-0.04 (group that is not speci\336ed in the) 271 208.67 P
+1 F
+-0.04 (groups) 414.6 208.67 P
+2 F
+-0.04 ( mask, or to) 445.16 208.67 P
+5 F
+-0.1 -0.33 (Group1) 499.67 208.67 B
+2 F
+(if the) 271 197.67 T
+1 F
+(groups) 296.66 197.67 T
+2 F
+( mask contains all k) 327.22 197.67 T
+(e) 414.49 197.67 T
+(yboard groups.) 419.21 197.67 T
+108 671 540 671 2 L
+V
+0.5 H
+0 Z
+N
+108 653 540 653 2 L
+V
+N
+108 415 540 415 2 L
+V
+N
+108 398 540 398 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "37" 49
+%%Page: "38" 50
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(38) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+(few applications need to do so, but if you find it necessary, you can either read the indica-) 108 712 T
+(tor map back from the server after you update it \050the server automatically updates the) 108 699 T
+(mask field whenever any of the real or virtual modifiers are changed in the modifier defi-) 108 686 T
+(nition\051 or you can use) 108 673 T
+1 F
+(XkbV) 215.65 673 T
+(irtualModsT) 240.76 673 T
+(oReal) 299.66 673 T
+2 F
+( to determine the proper contents for the) 327.66 673 T
+(mask field, assuming that the) 108 660 T
+5 F
+-0.6 (XkbDescRec) 251.33 660 S
+2 F
+( contains the virtual modifier definitions.) 317.33 660 T
+1 F
+-0.33 (which_mods) 108 639 P
+2 F
+-0.33 ( specifies what criteria Xkb uses to determine a match with the corresponding) 168 639 P
+1 F
+(mods) 108 626 T
+2 F
+( field by specifying one or more components of the Xkb keyboard state. If) 133.33 626 T
+5 F
+-0.6 (XkbIM_NoAutomatic) 108 613 S
+2 F
+( is not set \050the keyboard drives the indicator\051, the indicator is lit) 220.2 613 T
+(whenever any of the modifiers specified in the) 108 600 T
+1 F
+(mask) 333.95 600 T
+2 F
+( field of the) 358.61 600 T
+1 F
+( mods) 414.26 600 T
+2 F
+( modifier definition) 442.6 600 T
+(are also set in any of the current keyboard state components specified by) 108 587 T
+1 F
+(which_mods) 459.59 587 T
+2 F
+(.) 519.59 587 T
+-0.2 (Remember that the) 108 574 P
+1 F
+-0.2 (mask) 201.71 574 P
+2 F
+-0.2 ( field is comprised of all of the real modifiers specified in the def-) 226.37 574 P
+(inition plus any real modifiers that are bound to the virtual modifiers specified in the defi-) 108 561 T
+-0.06 (nition. \050See Chapter 5 for more information on the keyboard state and Chapter 7 for more) 108 548 P
+(information on virtual modifiers.\051 Use a bitwise inclusive OR of the following values to) 108 535 T
+(compose a value for) 108 522 T
+1 F
+(whic) 207.97 522 T
+(h_mods) 230.46 522 T
+2 F
+(:) 267.79 522 T
+2 11 Q
+(#de\336ne XkbIM_UseNone) 126 501.67 T
+(0) 270 501.67 T
+(#de\336ne XkbIM_UseBase) 126 488.67 T
+(\0501L << 0\051) 270 488.67 T
+(#de\336ne XkbIM_UseLatched) 126 475.67 T
+(\0501L << 1\051) 270 475.67 T
+(#de\336ne XkbIM_UseLock) 126 462.67 T
+(ed) 238.62 462.67 T
+(\0501L << 2\051) 270 462.67 T
+(#de\336ne XkbIM_UseEf) 126 449.67 T
+(fecti) 226.23 449.67 T
+(v) 245.5 449.67 T
+(e) 250.84 449.67 T
+(\0501L << 3\051) 270 449.67 T
+(#de\336ne XkbIM_UseCompat) 126 436.67 T
+(\0501L << 4\051) 270 436.67 T
+(#de\336ne XkbIM_UseAn) 126 423.67 T
+(yMods) 229.4 423.67 T
+(XkbIM_UseBase | XkbIM_UseLatched |) 270 423.67 T
+-2.81 (XkbIM_UseLock) 452.19 423.67 P
+-2.81 (ed) 529.68 423.67 P
+(| XkbIM_UseEf) 270 410.67 T
+(fecti) 340.05 410.67 T
+(v) 359.32 410.67 T
+(e | XkbIM_UseCompat) 364.65 410.67 T
+2 12 Q
+(If) 108 391 T
+5 F
+-0.6 (XkbIM_NoAutomatic) 118.99 391 S
+2 F
+( is not set \050the keyboard drives the indicator\051, the effect of) 231.19 391 T
+1 F
+(which_mods) 108 378 T
+2 F
+( and) 168 378 T
+1 F
+(mods) 191.33 378 T
+2 F
+( is shown in Table 8.4) 216.66 378 T
+3 F
+(T) 108 358 T
+(able 8.4 XkbIndicatorMapRec which_mods and mods, K) 114.9 358 T
+(eyboard Dri) 408.29 358 T
+(v) 470.5 358 T
+(es Indicator) 476.38 358 T
+1 F
+(whic) 109 338 T
+(h_mods) 131.49 338 T
+(Ef) 217 338 T
+(fect on K) 227.45 338 T
+(e) 270.36 338 T
+(yboar) 275.33 338 T
+(d Modi\336er) 302.88 338 T
+(s) 353.09 338 T
+2 11 Q
+(XkbIM_UseNone) 109 323.67 T
+(The mods \336eld and the current k) 217 323.67 T
+(e) 359.87 323.67 T
+(yboard modi\336er state are ignored.) 364.59 323.67 T
+(XkbIM_UseBase) 109 309.67 T
+-0.3 (The indicator is lit when an) 217 309.67 P
+-0.3 (y of the modi\336ers speci\336ed in the) 336.02 309.67 P
+1 F
+-0.3 (mask) 483.94 309.67 P
+2 F
+-0.3 ( \336eld) 506.54 309.67 P
+(of) 217 298.67 T
+1 F
+(mods) 228.91 298.67 T
+2 F
+( are on in the k) 252.13 298.67 T
+(e) 317.7 298.67 T
+(yboard base state.) 322.42 298.67 T
+2 12 Q
+(If both) 403.68 298.67 T
+1 F
+(mods.r) 439.01 298.67 T
+(eal_mods) 471.57 298.67 T
+2 F
+(and) 217 287.67 T
+1 F
+(mods.vmods) 237.33 287.67 T
+2 F
+( are zero, the indicator is lit when the base key-) 296.32 287.67 T
+(board state contains no modifiers.) 217 276.67 T
+2 11 Q
+(XkbIM_UseLatched) 109 262.67 T
+-0.3 (The indicator is lit when an) 217 262.67 P
+-0.3 (y of the modi\336ers speci\336ed in the) 336.02 262.67 P
+1 F
+-0.3 (mask) 483.94 262.67 P
+2 F
+-0.3 ( \336eld) 506.54 262.67 P
+(of) 217 251.67 T
+1 F
+(mods) 228.91 251.67 T
+2 F
+( are latched.) 252.13 251.67 T
+2 12 Q
+(If both) 308.33 251.67 T
+1 F
+(mods.r) 343.66 251.67 T
+(eal_mods) 376.22 251.67 T
+2 F
+( and) 422.21 251.67 T
+1 F
+(mods.vmods) 445.54 251.67 T
+2 F
+( are) 504.53 251.67 T
+(zero, the indicator is lit when none of the modifier keys are) 217 240.67 T
+(latched.) 217 229.67 T
+2 11 Q
+(XkbIM_UseLock) 109 215.67 T
+(ed) 186.48 215.67 T
+-0.3 (The indicator is lit when an) 217 215.67 P
+-0.3 (y of the modi\336ers speci\336ed in the) 336.02 215.67 P
+1 F
+-0.3 (mask) 483.94 215.67 P
+2 F
+-0.3 ( \336eld) 506.54 215.67 P
+(of) 217 204.67 T
+1 F
+(mods) 228.91 204.67 T
+2 F
+( are lock) 252.13 204.67 T
+(ed.) 289.9 204.67 T
+2 12 Q
+(If both) 305.78 204.67 T
+1 F
+(mods.r) 341.11 204.67 T
+(eal_mods) 373.67 204.67 T
+2 F
+( and) 419.66 204.67 T
+1 F
+(mods.vmods) 442.99 204.67 T
+2 F
+( are) 501.98 204.67 T
+(zero, the indicator) 217 193.67 T
+2 11 Q
+(is lit when none of the modi\336er k) 306.98 193.67 T
+(e) 453.22 193.67 T
+(ys are lock) 457.94 193.67 T
+(ed.) 505.48 193.67 T
+(XkbIM_UseEf) 109 179.67 T
+(fecti) 174.1 179.67 T
+(v) 193.37 179.67 T
+(e) 198.71 179.67 T
+-0.3 (The indicator is lit when an) 217 179.67 P
+-0.3 (y of the modi\336ers speci\336ed in the) 336.02 179.67 P
+1 F
+-0.3 (mask) 483.94 179.67 P
+2 F
+-0.3 ( \336eld) 506.54 179.67 P
+(of) 217 168.67 T
+1 F
+(mods) 228.91 168.67 T
+2 F
+( are in the ef) 252.13 168.67 T
+(fecti) 306.84 168.67 T
+(v) 326.11 168.67 T
+(e k) 331.44 168.67 T
+(e) 344.47 168.67 T
+(yboard state.) 349.19 168.67 T
+2 12 Q
+(If both) 408.15 168.67 T
+1 F
+(mods.r) 443.48 168.67 T
+(eal_mods) 476.03 168.67 T
+2 F
+(and) 217 157.67 T
+1 F
+(mods.vmods) 237.33 157.67 T
+2 F
+( are zero, the indicator is lit when the effective) 296.32 157.67 T
+(keyboard state contains no modifiers.) 217 146.67 T
+2 11 Q
+(XkbIM_UseCompat) 109 132.67 T
+-0.3 (The indicator is lit when an) 217 132.67 P
+-0.3 (y of the modi\336ers speci\336ed in the) 336.02 132.67 P
+1 F
+-0.3 (mask) 483.94 132.67 P
+2 F
+-0.3 ( \336eld) 506.54 132.67 P
+(of) 217 121.67 T
+1 F
+(mods) 228.91 121.67 T
+2 F
+( are in the k) 252.13 121.67 T
+(e) 303.95 121.67 T
+(yboard compatibility state.) 308.67 121.67 T
+2 12 Q
+(If both) 429.06 121.67 T
+1 F
+(mods.r) 217 110.67 T
+(eal_mods) 249.56 110.67 T
+2 F
+( and) 295.55 110.67 T
+1 F
+(mods.vmods) 318.88 110.67 T
+2 F
+( are zero, the indicator is lit) 377.87 110.67 T
+(when) 217 99.67 T
+2 11 Q
+( the k) 242.99 99.67 T
+(e) 267.32 99.67 T
+(yboard compatibility state contains no modi\336ers.) 272.04 99.67 T
+108 350 531 350 2 L
+V
+0.5 H
+0 Z
+N
+108 333 531 333 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "38" 50
+%%Page: "39" 51
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(39) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+(The effect on the keyboard modifiers of) 108 712 T
+1 F
+(which_mods) 302.28 712 T
+2 F
+( and) 362.28 712 T
+1 F
+(mods) 385.61 712 T
+2 F
+( when you change an indi-) 410.94 712 T
+-0.09 (cator for which) 108 699 P
+5 F
+-0.19 -0.6 (XkbIM_LEDDrivesKB) 184.04 699 B
+2 F
+-0.09 ( is set \050the indicator drives the keyboard\051 is shown) 296.25 699 P
+(in Table 8.5. The \322New State\323 column refers to the new state to which you set the indica-) 108 686 T
+(tor.) 108 673 T
+0 11 Q
+(XkbIndicatorMapRec ctrls field) 108 417.67 T
+2 12 Q
+(The) 108 399 T
+1 F
+(ctrls) 129.66 399 T
+2 F
+( field specifies what controls \050see Chapter 10\051 the indicator watches and is com-) 151 399 T
+(posed using the bitwise inclusive OR of the following values:) 108 386 T
+2 11 Q
+(#de\336ne XkbRepeatK) 126 365.67 T
+(e) 218.29 365.67 T
+(ysMask) 223.01 365.67 T
+(\0501L << 0\051) 297 365.67 T
+(#de\336ne XkbSlo) 126 352.67 T
+(wK) 194.48 352.67 T
+(e) 210.08 352.67 T
+(ysMask) 214.8 352.67 T
+(\0501L << 1\051) 297 352.67 T
+(#de\336ne XkbBounceK) 126 339.67 T
+(e) 221.35 339.67 T
+(ysMask) 226.07 339.67 T
+(\0501L << 2\051) 297 339.67 T
+(#de\336ne XkbStick) 126 326.67 T
+(yK) 202.53 326.67 T
+(e) 215.69 326.67 T
+(ysMask) 220.41 326.67 T
+(\0501L << 3\051) 297 326.67 T
+(#de\336ne XkbMouseK) 126 313.67 T
+(e) 217.68 313.67 T
+(ysMask) 222.4 313.67 T
+(\0501L << 4\051) 297 313.67 T
+(#de\336ne XkbMouseK) 126 300.67 T
+(e) 217.68 300.67 T
+(ysAccelMask) 222.4 300.67 T
+(\0501L << 5\051) 297 300.67 T
+(#de\336ne XkbAccessXK) 126 287.67 T
+(e) 226.84 287.67 T
+(ysMask) 231.56 287.67 T
+(\0501L << 6\051) 297 287.67 T
+(#de\336ne XkbAccessXT) 126 274.67 T
+(imeoutMask) 225.51 274.67 T
+(\0501L << 7\051) 297 274.67 T
+(#de\336ne XkbAccessXFeedbackMask) 126 261.67 T
+(\0501L << 8\051) 297 261.67 T
+(#de\336ne XkbAudibleBellMask) 126 248.67 T
+(\0501L << 9\051) 297 248.67 T
+(#de\336ne XkbOv) 126 235.67 T
+(erlay1Mask) 193.35 235.67 T
+(\0501L << 10\051) 297 235.67 T
+(#de\336ne XkbOv) 126 222.67 T
+(erlay2Mask) 193.35 222.67 T
+(\0501L << 11\051) 297 222.67 T
+(#de\336ne XkbAllBooleanCtrlsMask) 126 209.67 T
+(\0500x00001FFF\051) 297 209.67 T
+2 12 Q
+-0.16 (Xkb lights the indicator whenever any of the boolean controls specified in) 108 190 P
+1 F
+-0.16 (ctrls) 464.66 190 P
+2 F
+-0.16 ( is enabled.) 486 190 P
+0 F
+(8.3) 72 165 T
+(Getting Inf) 108 165 T
+(ormation About Indicator) 167.76 165 T
+(s) 310.92 165 T
+2 F
+(Xkb allows applications to obtain information about indicators using two different meth-) 108 145 T
+-0.06 (ods. The first method, which is similar to the core X implementation, uses a mask to spec-) 108 132 P
+(ify the indicators. The second method, which is more suitable for applications concerned) 108 119 T
+(with interoperability, uses indicator names. The correspondence between the indicator) 108 106 T
+-0.16 (name and the bit position in masks is as follows: one of the parameters returned from) 108 93 P
+1 F
+-0.16 (Xkb-) 517.34 93 P
+(GetNamedIndicator) 108 80 T
+(s) 203.87 80 T
+2 F
+( is an index that is the bit position to use in any function call that) 208.54 80 T
+3 F
+(T) 108 653 T
+(able 8.5 XkbIndicatorMapRec which_mods and mods, Indicator Dri) 114.9 653 T
+(v) 467.46 653 T
+(es K) 473.34 653 T
+(eyboard) 495.37 653 T
+1 F
+(whic) 109 632 T
+(h_mods) 131.49 632 T
+(Ne) 217 632 T
+(w State) 230.15 632 T
+(Ef) 271 632 T
+(fect on K) 281.45 632 T
+(e) 324.36 632 T
+(yboar) 329.33 632 T
+(d Modi\336er) 356.88 632 T
+(s) 407.09 632 T
+2 11 Q
+(XkbIM_UseNone or) 109 614.67 T
+(XkbIM_UseBase) 109 601.67 T
+(On or Of) 221.95 614.67 T
+(f) 261.39 614.67 T
+(No Ef) 271 614.67 T
+(fect) 297.3 614.67 T
+(XkbIM_UseLatched) 109 584.67 T
+(On) 236.78 584.67 T
+(An) 271 584.67 T
+(y modi\336ers speci\336ed in the) 284.28 584.67 T
+1 F
+(mask) 406.19 584.67 T
+2 F
+( \336eld of) 428.8 584.67 T
+1 F
+(mods) 465.77 584.67 T
+2 F
+( are) 488.99 584.67 T
+(added to the latched modi\336ers.) 271 573.67 T
+(XkbIM_UseLatched) 109 556.67 T
+(Of) 236 556.67 T
+(f) 247.33 556.67 T
+(An) 271 556.67 T
+(y modi\336ers speci\336ed in the) 284.28 556.67 T
+1 F
+(mask) 406.19 556.67 T
+2 F
+( \336eld of) 428.8 556.67 T
+1 F
+(mods) 465.77 556.67 T
+2 F
+( are) 488.99 556.67 T
+(remo) 271 545.67 T
+(v) 293.44 545.67 T
+(ed from the latched modi\336ers.) 298.77 545.67 T
+(XkbIM_UseLock) 109 528.67 T
+(ed,) 186.48 528.67 T
+-0.12 (XkbIM_UseCompat, or) 109 515.67 P
+(XkbIM_UseEf) 109 502.67 T
+(fecti) 174.1 502.67 T
+(v) 193.37 502.67 T
+(e) 198.71 502.67 T
+(On) 236.78 528.67 T
+(An) 271 528.67 T
+(y modi\336ers speci\336ed in the) 284.28 528.67 T
+1 F
+(mask) 406.19 528.67 T
+2 F
+( \336eld of) 428.8 528.67 T
+1 F
+(mods) 465.77 528.67 T
+2 F
+( are) 488.99 528.67 T
+(added to the lock) 271 517.67 T
+(ed modi\336ers.) 346.35 517.67 T
+(XkbIM_UseLock) 109 485.67 T
+(ed) 186.48 485.67 T
+(Of) 236 485.67 T
+(f) 247.33 485.67 T
+(An) 271 485.67 T
+(y modi\336ers speci\336ed in the) 284.28 485.67 T
+1 F
+(mask) 406.19 485.67 T
+2 F
+( \336eld of) 428.8 485.67 T
+1 F
+(mods) 465.77 485.67 T
+2 F
+( are) 488.99 485.67 T
+(remo) 271 474.67 T
+(v) 293.44 474.67 T
+(ed from the lock) 298.77 474.67 T
+(ed modi\336ers.) 371.07 474.67 T
+(XkbIM_UseCompat or) 109 457.67 T
+(XkbIM_UseEf) 109 444.67 T
+(fecti) 174.1 444.67 T
+(v) 193.37 444.67 T
+(e) 198.71 444.67 T
+(Of) 236 457.67 T
+(f) 247.33 457.67 T
+(An) 271 457.67 T
+(y modi\336ers speci\336ed in the) 284.28 457.67 T
+1 F
+(mask) 406.19 457.67 T
+2 F
+( \336eld of) 428.8 457.67 T
+1 F
+(mods) 465.77 457.67 T
+2 F
+( are) 488.99 457.67 T
+(remo) 271 446.67 T
+(v) 293.44 446.67 T
+(ed from both the lock) 298.77 446.67 T
+(ed and latched modi\336ers.) 393.38 446.67 T
+108 645 522 645 2 L
+V
+0.5 H
+0 Z
+N
+108 625 522 625 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "39" 51
+%%Page: "40" 52
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(40) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+(requires a mask of indicator bits, as well as the indicator\325s index into the) 108 712 T
+5 F
+-0.6 (XkbIndica-) 458.95 712 S
+-0.6 (torRec) 108 699 S
+2 F
+( array of indicator maps.) 147.6 699 T
+0 F
+(8.3.1) 72 674 T
+(Getting Indicator State) 108 674 T
+2 F
+-0.07 (Because the state of the indicators is relatively volatile, the keyboard description does not) 108 654 P
+(hold the current state of the indicators. To obtain the current state of the keyboard indica-) 108 641 T
+(tors, use) 108 628 T
+1 F
+(XkbGetIndicatorState) 151 628 T
+2 F
+(.) 255.65 628 T
+2 11 Q
+(Status) 108 607.67 T
+3 F
+(XkbGetIndicatorState) 137.65 607.67 T
+2 F
+(\050) 242.75 607.67 T
+1 F
+(display) 246.41 607.67 T
+2 F
+(,) 277.48 607.67 T
+1 F
+(de) 282.98 607.67 T
+(vice_spec) 293.2 607.67 T
+2 F
+(,) 335.95 607.67 T
+1 F
+(state_r) 341.45 607.67 T
+(eturn) 371.6 607.67 T
+2 F
+(\051) 394.83 607.67 T
+(Display *) 126 594.67 T
+1 F
+(display) 189 594.67 T
+2 F
+(;) 220.78 594.67 T
+(/* connection to the X serv) 252 594.67 T
+(er */) 370.68 594.67 T
+(unsigned int) 126 581.67 T
+1 F
+(de) 189 581.67 T
+(vice_spec) 199.22 581.67 T
+2 F
+(;) 241.98 581.67 T
+(/* de) 252 581.67 T
+(vice ID, or) 273.42 581.67 T
+5 12 Q
+-0.6 (XkbUseCoreKbd) 323.51 581.67 S
+2 11 Q
+( */) 409.31 581.67 T
+(unsigned int *) 126 568.67 T
+1 F
+(state_r) 189 568.67 T
+(eturn) 219.15 568.67 T
+2 F
+(;) 242.37 568.67 T
+(/* back\336lled with a mask of the indicator state */) 252 568.67 T
+1 12 Q
+-0.12 (XkbGetIndicatorState) 108 549 P
+2 F
+-0.12 ( queries the) 212.65 549 P
+1 F
+-0.12 (display) 270.61 549 P
+2 F
+-0.12 ( for the state of the indicators on the device spec-) 305.27 549 P
+(ified by the) 108 536 T
+1 F
+(device_spec) 165.66 536 T
+2 F
+(. For each indicator that is \322turned on\323 on the device, the associ-) 223.63 536 T
+-0.23 (ated bit is set in) 108 523 P
+1 F
+-0.23 (state_return) 185.17 523 P
+2 F
+-0.23 (. If a compatible version of the Xkb extension is not available) 243.84 523 P
+(in the server,) 108 510 T
+1 F
+(XkbGetIndicatorState) 173.32 510 T
+2 F
+( returns a) 277.97 510 T
+5 F
+-0.6 (BadMatch) 325.62 510 S
+2 F
+( error. Otherwise, it sends the) 378.42 510 T
+(request to the X server, places the state of the indicators into) 108 497 T
+1 F
+(state_r) 400.94 497 T
+(eturn,) 433.84 497 T
+2 F
+( and returns) 462.17 497 T
+5 F
+-0.6 (Success) 108 484 S
+2 F
+(. Thus the value reported by) 154.2 484 T
+1 F
+(XkbGetIndicatorState) 291.84 484 T
+2 F
+( is identical to the value) 396.49 484 T
+(reported by the core protocol.) 108 471 T
+0 F
+(8.3.2) 72 446 T
+(Getting Indicator Inf) 108 446 T
+(ormation b) 221.77 446 T
+(y Inde) 283.54 446 T
+(x) 318.04 446 T
+2 F
+-0.17 (To get the map for one or more indicators, using a mask to specify the indicators, use) 108 426 P
+1 F
+-0.17 (Xkb-) 517.34 426 P
+(GetIndicatorMap) 108 413 T
+2 F
+(.) 191.99 413 T
+2 11 Q
+(Status) 108 392.67 T
+3 F
+(XkbGetIndicatorMap) 137.65 392.67 T
+2 F
+(\050) 240.92 392.67 T
+1 F
+(dpy) 244.59 392.67 T
+2 F
+(,) 259.76 392.67 T
+1 F
+( whic) 262.51 392.67 T
+(h) 285.87 392.67 T
+2 F
+(,) 291.37 392.67 T
+1 F
+( desc) 294.12 392.67 T
+2 F
+(\051) 316.42 392.67 T
+(Display *) 126 379.67 T
+1 F
+(dpy) 189 379.67 T
+2 F
+(;) 204.88 379.67 T
+(/* connection to the X serv) 234 379.67 T
+(er */) 352.68 379.67 T
+(unsigned int) 126 366.67 T
+1 F
+(whic) 189 366.67 T
+(h) 209.61 366.67 T
+2 F
+(;) 215.11 366.67 T
+(/* mask of indicators for which maps should be returned */) 234 366.67 T
+(XkbDescPtr) 126 353.67 T
+1 F
+(desc) 189 353.67 T
+2 F
+(;) 208.55 353.67 T
+(/* k) 234 353.67 T
+(e) 250.7 353.67 T
+(yboard description to be updated */) 255.42 353.67 T
+1 12 Q
+(XkbGetIndicatorMap) 108 334 T
+2 F
+( obtains the maps from the server for only those indicators specified) 210.65 334 T
+-0.44 (by the) 108 321 P
+1 F
+-0.44 (whic) 139.79 321 P
+-0.44 (h) 162.28 321 P
+2 F
+-0.44 ( mask and copies the values into the keyboard description specified by) 168.28 321 P
+1 11 Q
+-0.4 (desc) 504.33 321 P
+2 12 Q
+-0.44 (. If) 523.88 321 P
+(the) 108 308 T
+1 F
+(indicators) 125.66 308 T
+2 F
+( field of the) 174.34 308 T
+1 F
+(desc) 232.99 308 T
+2 F
+( parameter is) 254.32 308 T
+5 F
+-0.6 (NULL) 319.3 308 S
+2 F
+(,) 345.7 308 T
+1 F
+(XkbGetIndicatorMap) 351.7 308 T
+2 F
+( allocates and ini-) 454.34 308 T
+(tializes it.) 108 295 T
+1 F
+(XkbGetIndicatorMap) 108 274 T
+2 F
+( can generate) 210.65 274 T
+5 F
+-0.6 (BadAlloc) 276.95 274 S
+2 F
+(,) 329.75 274 T
+5 F
+-0.6 (BadLength) 335.75 274 S
+2 F
+(,) 395.15 274 T
+5 F
+-0.6 (BadMatch) 401.15 274 S
+2 F
+(, and) 453.95 274 T
+5 F
+-0.6 (BadImple-) 480.28 274 S
+-0.6 (mentation) 108 261 S
+2 F
+( errors.) 167.4 261 T
+(To free the indicator maps, use) 108 240 T
+1 F
+(XkbF) 259.63 240 T
+(r) 284.96 240 T
+(eeIndicatorMaps) 289.19 240 T
+2 F
+( \050see section 8.6\051.) 371.17 240 T
+0 F
+(8.3.3) 72 215 T
+(Getting Indicator Inf) 108 215 T
+(ormation b) 221.77 215 T
+(y Name) 283.54 215 T
+2 F
+(Xkb also allows applications to refer to indicators by name. Use) 108 195 T
+1 F
+(XkbGetNames) 418.62 195 T
+2 F
+( to get the) 487.27 195 T
+(indicator names \050see Chapter 18\051. Using names eliminates the need for hard-coding bit-) 108 182 T
+(mask values for particular keyboards. For example, instead of using vendor-specific con-) 108 169 T
+(stants such as) 108 156 T
+5 F
+-0.6 (WSKBLed_ScrollLock) 176.33 156 S
+2 F
+( mask on Digital workstations or) 295.13 156 T
+5 F
+-0.6 (XLED_SCROLL_LOCK) 108 143 S
+2 F
+( on Sun workstations, you can instead use) 213.6 143 T
+1 F
+(XkbGetNamedIndicator) 417.25 143 T
+2 F
+(to look up information on the indicator named \322Scroll Lock.\323) 108 130 T
+FMENDPAGE
+%%EndPage: "40" 52
+%%Page: "41" 53
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(41) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+(Use) 108 712 T
+1 F
+(XkbGetNamedIndicator) 129.66 712 T
+2 F
+( to look up the indicator map and other information for an) 244.31 712 T
+(indicator by name.) 108 699 T
+2 11 Q
+(Bool) 108 678.67 T
+3 F
+(XkbGetNamedIndicator) 132.15 678.67 T
+2 F
+(\050) 247.03 678.67 T
+1 F
+(dpy) 250.69 678.67 T
+2 F
+(,) 265.86 678.67 T
+1 F
+( de) 268.61 678.67 T
+(v_spec) 281.58 678.67 T
+2 F
+(,) 311.51 678.67 T
+1 F
+( name) 314.26 678.67 T
+2 F
+(,) 340.84 678.67 T
+1 F
+( ndx_rtrn) 343.59 678.67 T
+2 F
+(,) 384.84 678.67 T
+1 F
+( state_rtrn) 387.59 678.67 T
+2 F
+(,) 433.73 678.67 T
+1 F
+( map_rtrn) 436.48 678.67 T
+2 F
+(,) 480.79 678.67 T
+1 F
+(r) 486.29 678.67 T
+(eal_rtrn) 490.16 678.67 T
+2 F
+(\051) 526.22 678.67 T
+(Display *) 126 665.67 T
+1 F
+(dpy) 189 665.67 T
+2 F
+(;) 204.88 665.67 T
+(/* connection to the X serv) 248.25 665.67 T
+(er */) 366.93 665.67 T
+(unsigned int) 126 652.67 T
+1 F
+(de) 189 652.67 T
+(vice_spec) 199.22 652.67 T
+2 F
+(;) 241.98 652.67 T
+(/* k) 248.25 652.67 T
+(e) 264.95 652.67 T
+(yboard de) 269.67 652.67 T
+(vice ID, or) 313.07 652.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 363.17 652.67 S
+2 F
+( */) 444.68 652.67 T
+(Atom) 126 639.67 T
+1 F
+(name) 189 639.67 T
+2 F
+(;) 212.83 639.67 T
+(/* name of the indicator to be retrie) 248.25 639.67 T
+(v) 403.47 639.67 T
+(ed */) 408.81 639.67 T
+(int *) 126 626.67 T
+1 F
+(ndx_rtrn) 189 626.67 T
+2 F
+(;) 227.5 626.67 T
+(/* back\336lled with the inde) 248.25 626.67 T
+(x of the retrie) 362.97 626.67 T
+(v) 422.26 626.67 T
+(ed indicator */) 427.59 626.67 T
+(Bool *) 126 613.67 T
+1 F
+(state_rtrn) 189 613.67 T
+2 F
+(;) 232.4 613.67 T
+(/* back\336lled with the current state of the retrie) 248.25 613.67 T
+(v) 452.05 613.67 T
+(ed indicator */) 457.38 613.67 T
+(XkbIndicatorMapPtr) 126 600.67 T
+1 F
+(map_rtrn) 217.65 600.67 T
+2 F
+(;) 259.21 600.67 T
+(/* back\336lled with the mapping for the retrie) 262.27 600.67 T
+(v) 454.16 600.67 T
+(ed indicator */) 459.5 600.67 T
+(Bool *) 126 587.67 T
+1 F
+(r) 189 587.67 T
+(eal_rtrn) 192.87 587.67 T
+2 F
+(;) 228.93 587.67 T
+-0.12 (/* back\336lled with) 248.25 587.67 P
+5 12 Q
+-0.29 -0.6 (True) 327.64 587.67 B
+2 11 Q
+-0.12 ( if the named indicator is real \050ph) 354.04 587.67 P
+-0.12 (ysical\051 */) 499.48 587.67 P
+2 12 Q
+(If the device specified by) 108 568 T
+1 F
+(device_spec) 232.3 568 T
+2 F
+( has an indicator named) 290.27 568 T
+1 F
+(name) 407.24 568 T
+2 F
+(,) 433.24 568 T
+1 F
+( XkbGetNamedIndi-) 436.24 568 T
+(cator) 108 555 T
+2 F
+( returns) 133.33 555 T
+5 F
+-0.6 (True) 172.66 555 S
+2 F
+( and populates the rest of the parameters with information about the) 199.06 555 T
+(indicator. Otherwise,) 108 542 T
+1 F
+(XkbGetNamedIndicator) 211.98 542 T
+2 F
+( returns) 326.63 542 T
+5 F
+-0.6 (False) 365.95 542 S
+2 F
+(.) 398.95 542 T
+(The) 108 521 T
+1 F
+(ndx_rtrn) 129.66 521 T
+2 F
+( field returns the zero-based index of the named indicator. This index is the) 171.66 521 T
+-0.07 (bit position to use in any function call that requires a mask of indicator bits, as well as the) 108 508 P
+(indicator\325s index into the) 108 495 T
+5 F
+-0.6 (XkbIndicatorRec) 231.32 495 S
+2 F
+( array of indicator maps.) 330.33 495 T
+1 F
+(state_rtrn) 450.96 495 T
+2 F
+( returns) 498.3 495 T
+(the current state of the named indicator \050) 108 482 T
+5 F
+-0.6 (True) 302.95 482 S
+2 F
+( = on,) 329.35 482 T
+5 F
+-0.6 (False) 360.12 482 S
+2 F
+( = off\051.) 393.12 482 T
+1 F
+(map_rtrn) 429.88 482 T
+2 F
+( returns the) 475.21 482 T
+-0.2 (indicator map for the named indicator. In addition, if the indicator is mapped to a physical) 108 469 P
+(LED, the) 108 456 T
+1 F
+(real_rtrn) 154.99 456 T
+2 F
+( parameter is set to) 199 456 T
+5 F
+-0.6 (True) 292.64 456 S
+2 F
+(.) 319.04 456 T
+(Each of the \322) 108 435 T
+1 F
+(_rtrn) 170.98 435 T
+2 F
+(\323 arguments is optional; you can pass) 195.65 435 T
+5 F
+-0.6 (NULL) 377.96 435 S
+2 F
+( for any unneeded \322) 404.36 435 T
+1 F
+(_rtrn) 499 435 T
+2 F
+(\323) 523.67 435 T
+(arguments.) 108 422 T
+1 F
+(XkbGetNamedIndicator) 108 401 T
+2 F
+( can generate) 222.65 401 T
+5 F
+-0.6 (BadAtom) 288.95 401 S
+2 F
+( and) 335.15 401 T
+5 F
+-0.6 (BadImplementation) 358.48 401 S
+2 F
+( errors.) 470.68 401 T
+0 F
+(8.4) 72 376 T
+(Changing Indicator Maps and State) 108 376 T
+2 F
+-0.1 (Just as you can get the indicator map using a mask or using an indicator name, so you can) 108 356 P
+(change it using a mask or a name.) 108 343 T
+0 F
+(Note) 126 322.67 T
+2 11 Q
+(Y) 162 322.67 T
+(ou cannot change the) 168.73 322.67 T
+1 12 Q
+(phys_indicator) 264.65 322.67 T
+(s) 336.53 322.67 T
+2 11 Q
+( \336eld of the indicators structure. The only) 341.2 322.67 T
+(w) 162 310.67 T
+(ay to change the) 169.83 310.67 T
+1 12 Q
+(phys_indicator) 244.37 310.67 T
+(s) 316.25 310.67 T
+2 11 Q
+( \336eld is to change the k) 320.92 310.67 T
+(e) 422.85 310.67 T
+(yboard map.) 427.57 310.67 T
+2 12 Q
+(There are two ways to make changes to indicator maps and state: either change a local) 108 290 T
+-0.05 (copy of the indicator maps and use) 108 277 P
+1 F
+-0.05 (XkbSetIndicatorMap) 277.95 277 P
+2 F
+-0.05 ( or) 377.94 277 P
+1 F
+-0.05 (XkbSetNamedIndicator) 393.83 277 P
+2 F
+-0.05 (, or, to) 505.82 277 P
+(reduce network traffic, use an) 108 264 T
+5 F
+-0.6 (XkbIndicatorChangesRec) 253.94 264 S
+2 F
+( structure and use) 399.15 264 T
+1 F
+(XkbChang) 108 251 T
+(eIndicator) 158.54 251 T
+(s) 208.42 251 T
+2 F
+(.) 213.08 251 T
+0 F
+(8.4.1) 72 226 T
+(Eff) 108 226 T
+(ects of Explicit Chang) 123.88 226 T
+(es on Indicator) 249.36 226 T
+(s) 334.54 226 T
+2 F
+(This section discusses the effects of explicitly changing indicators depending upon differ-) 108 206 T
+(ent settings in the indicator map. See Tables 8.3 and Table 8.5 for information on the) 108 193 T
+(effects of the indicator map fields when explicit changes are made.) 108 180 T
+-0.44 (If) 108 159 P
+5 F
+-0.96 -0.6 (XkbIM_LEDDrivesKB) 118.56 159 B
+2 F
+-0.44 ( is set and) 230.76 159 P
+5 F
+-0.96 -0.6 (XkbIM_NoExplicit) 279.67 159 B
+2 F
+-0.44 ( is not, and if you call a function) 385.28 159 P
+-0.02 (that updates the server\325s image of the indicator map \050such as) 108 146 P
+1 F
+-0.02 (XkbSetIndicatorMap) 401.4 146 P
+2 F
+-0.02 ( or) 501.39 146 P
+1 F
+-0.02 (Xkb-) 517.34 146 P
+(SetNamedIndicator) 108 133 T
+2 F
+(\051, Xkb changes the keyboard state and controls to reflect the other) 201.32 133 T
+-0.35 (fields of the indicator map. If you attempt to explicitly change the value of an indicator for) 108 120 P
+(which) 108 107 T
+5 F
+-0.6 (XkbIM_LEDDrivesKB) 140.33 107 S
+2 F
+( is absent or for which) 252.53 107 T
+5 F
+-0.6 (XkbIM_NoExplicit) 362.51 107 S
+2 F
+( is present,) 468.11 107 T
+(keyboard state or controls are unaffected.) 108 94 T
+FMENDPAGE
+%%EndPage: "41" 53
+%%Page: "42" 54
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(42) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+(If neither) 108 712 T
+5 F
+-0.6 (XkbIM_NoAutomatic) 155.32 712 S
+2 F
+( nor) 267.52 712 T
+5 F
+-0.6 (XkbIM_NoExplicit) 289.51 712 S
+2 F
+( is set in an indicator map,) 395.12 712 T
+(Xkb honors any request to change the state of the indicator, but the new state might be) 108 699 T
+(immediately superseded by automatic changes to the indicator state if the keyboard state) 108 686 T
+(or controls change.) 108 673 T
+-0.24 (The effects of changing an indicator that drives the keyboard are cumulative; it is possible) 108 652 P
+(for a single change to affect keyboard group, modifiers, and controls simultaneously.) 108 639 T
+(If you change an indicator for which both the) 108 618 T
+5 F
+-0.6 (XkbIM_LEDDrivesKB) 328.28 618 S
+2 F
+( and) 440.49 618 T
+5 F
+-0.56 -0.6 (XkbIM_NoAutomatic) 108 605 B
+2 F
+-0.25 ( flags are specified, Xkb applies the keyboard changes specified in) 220.2 605 P
+-0.15 (the other indicator map fields and changes the indicator to reflect the state that was explic-) 108 592 P
+(itly requested. The indicator remains in the new state until it is explicitly changed again.) 108 579 T
+-0.44 (If the) 108 558 P
+5 F
+-0.97 -0.6 (XkbIM_NoAutomatic) 135.78 558 B
+2 F
+-0.44 ( flag is not set and) 247.98 558 P
+5 F
+-0.97 -0.6 (XkbIM_LEDDrivesKB) 336 558 B
+2 F
+-0.44 ( is set, Xkb applies) 448.2 558 P
+-0.17 (the changes specified in the other indicator map fields and sets the state of the indicator to) 108 545 P
+(the values specified by the indicator map. Note that it is possible in this case for the indi-) 108 532 T
+-0.21 (cator to end up in a different state than the one that was explicitly requested. For example,) 108 519 P
+(Xkb does not extinguish an indicator with) 108 506 T
+1 F
+(which_mods) 312.32 506 T
+2 F
+( of) 372.32 506 T
+5 F
+-0.6 (XkbIM_UseBase) 388.32 506 S
+2 F
+( and) 474.12 506 T
+1 F
+(mods) 497.45 506 T
+2 F
+( of) 522.78 506 T
+5 F
+-0.78 -0.6 (Shift) 108 493 B
+2 F
+-0.35 ( if, at the time Xkb processes the request to extinguish the indicator, one of the) 141 493 P
+2 11 Q
+-0.32 (Shift) 515.96 493 P
+2 12 Q
+(keys is physically depressed.) 108 480 T
+-0.42 (If you explicitly light an indicator for which) 108 459 P
+5 F
+-0.92 -0.6 (XkbIM_LEDDrivesKB) 319.31 459 B
+2 F
+-0.42 ( is set, Xkb enables all) 431.51 459 P
+(of the boolean controls specified in the) 108 446 T
+1 F
+(ctrls) 297.64 446 T
+2 F
+( field of its indicator map. Explicitly extin-) 318.97 446 T
+(guishing such an indicator causes Xkb to disable all of the boolean controls specified in) 108 433 T
+1 F
+(ctrls) 108 420 T
+2 F
+(.) 129.34 420 T
+0 F
+(8.4.2) 72 395 T
+(Changing Indicator Maps b) 108 395 T
+(y Inde) 261.78 395 T
+(x) 296.28 395 T
+2 F
+(To update the maps for one or more indicators, first modify a local copy of the keyboard) 108 375 T
+(description, then use) 108 362 T
+1 F
+(XkbSetIndicatorMap) 209.99 362 T
+2 F
+( to download the changes to the server:) 309.97 362 T
+2 11 Q
+(Bool) 108 341.67 T
+3 F
+( XkbSetIndicatorMap) 129.4 341.67 T
+2 F
+(\050) 232.98 341.67 T
+1 F
+(dpy) 236.65 341.67 T
+2 F
+(,) 251.81 341.67 T
+1 F
+( whic) 254.56 341.67 T
+(h) 277.93 341.67 T
+2 F
+(,) 283.43 341.67 T
+1 F
+( desc) 286.18 341.67 T
+2 F
+(\051) 308.48 341.67 T
+(Display *) 126 328.67 T
+1 F
+(dpy) 189 328.67 T
+2 F
+(;) 204.88 328.67 T
+(/* connection to the X serv) 234 328.67 T
+(er */) 352.68 328.67 T
+(unsigned int) 126 315.67 T
+1 F
+(whic) 189 315.67 T
+(h) 209.61 315.67 T
+2 F
+(;) 215.11 315.67 T
+(/* mask of indicators to change */) 234 315.67 T
+(XkbDescPtr) 126 302.67 T
+1 F
+(desc) 189 302.67 T
+2 F
+(;) 208.55 302.67 T
+(/* k) 234 302.67 T
+(e) 250.7 302.67 T
+(yboard description from which the maps are tak) 255.42 302.67 T
+(en */) 465.79 302.67 T
+2 12 Q
+(For each) 108 283 T
+(bit set in the) 152.65 283 T
+1 F
+(whic) 214.66 283 T
+(h) 237.14 283 T
+2 F
+(parameter,) 246.14 283 T
+1 F
+( XkbSetIndicatorMap) 297.12 283 T
+2 F
+( sends the corresponding) 400.1 283 T
+(indicator map from the) 108 270 T
+1 F
+(desc) 221.32 270 T
+2 F
+( parameter to the server.) 242.64 270 T
+FMENDPAGE
+%%EndPage: "42" 54
+%%Page: "43" 55
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(43) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+0 12 Q
+(8.4.3) 72 712 T
+(Changing Indicator Maps b) 108 712 T
+(y Name) 261.78 712 T
+1 F
+(XkbSetNamedIndicator) 108 692 T
+2 F
+( can do several related things:) 219.98 692 T
+2 11 Q
+(\245) 126 671.67 T
+(Name an indicator if it is not already named) 139.68 671.67 T
+(\245) 126 659.67 T
+(T) 139.68 659.67 T
+(oggle the state of the indicator) 145.52 659.67 T
+(\245) 126 647.67 T
+(Set the indicator to a speci\336ed state) 139.68 647.67 T
+(\245) 126 635.67 T
+(Set the indicator map for the indicator) 139.68 635.67 T
+(Bool) 108 617.67 T
+3 F
+( XkbSetNamedIndicator) 129.4 617.67 T
+2 F
+(\050) 244.59 617.67 T
+1 F
+(dpy) 248.25 617.67 T
+2 F
+(,) 263.42 617.67 T
+1 F
+( de) 266.17 617.67 T
+(vice_spec) 279.14 617.67 T
+2 F
+(,) 321.89 617.67 T
+1 F
+( name) 324.64 617.67 T
+2 F
+(,) 351.22 617.67 T
+1 F
+( c) 353.97 617.67 T
+(hang) 361.44 617.67 T
+(e_state) 383.33 617.67 T
+(, state) 414.38 617.67 T
+2 F
+(,) 440.66 617.67 T
+1 F
+( cr) 443.41 617.67 T
+(eate_ne) 454.92 617.67 T
+(w) 488.96 617.67 T
+2 F
+(,) 495.58 617.67 T
+1 F
+( map) 498.33 617.67 T
+2 F
+(\051) 520.03 617.67 T
+(Display *) 126 604.67 T
+1 F
+(dpy) 225 604.67 T
+2 F
+(;) 240.88 604.67 T
+(/* connection to the X serv) 288 604.67 T
+(er */) 406.68 604.67 T
+(unsigned int) 126 591.67 T
+1 F
+(de) 225 591.67 T
+(vice_spec) 235.22 591.67 T
+2 F
+(;) 277.98 591.67 T
+(/* de) 288 591.67 T
+(vice ID, or) 309.42 591.67 T
+5 12 Q
+-0.6 (XkbUseCoreKbd) 359.51 591.67 S
+2 11 Q
+( */) 445.31 591.67 T
+(Atom) 126 578.67 T
+1 F
+(name) 225 578.67 T
+2 F
+(;) 248.83 578.67 T
+(/* name of the indicator to change */) 288 578.67 T
+(Bool) 126 565.67 T
+1 F
+(c) 225 565.67 T
+(hang) 229.72 565.67 T
+(e_state) 251.61 565.67 T
+2 F
+(;) 282.77 565.67 T
+(/* whether to change the indicator state or not */) 288 565.67 T
+(Bool) 126 552.67 T
+1 F
+(state) 225 552.67 T
+2 F
+(;) 245.78 552.67 T
+(/* desired ne) 288 552.67 T
+(w state for the indicator */) 343.93 552.67 T
+(Bool) 126 539.67 T
+1 F
+(cr) 225 539.67 T
+(eate_ne) 233.76 539.67 T
+(w) 267.8 539.67 T
+2 F
+(;) 275.14 539.67 T
+(/* whether a ne) 288 539.67 T
+(w indicator with the speci\336ed name) 355.23 539.67 T
+(should be created when necessary */) 298.5 526.67 T
+(XkbIndicatorMapPtr) 126 513.67 T
+1 F
+(map) 225 513.67 T
+2 F
+(;) 243.94 513.67 T
+(/* ne) 288 513.67 T
+(w map for the indicator */) 309.42 513.67 T
+2 12 Q
+(If a compatible version of the Xkb extension is not available in the server,) 108 494 T
+1 F
+(XkbSetNamed-) 466.27 494 T
+(Indicator) 108 481 T
+2 F
+( returns) 152.66 481 T
+5 F
+-0.6 (False) 191.99 481 S
+2 F
+(. Otherwise, it sends a request to the X server to change the indi-) 224.99 481 T
+(cator specified by) 108 468 T
+1 F
+(name) 196.31 468 T
+2 F
+( and returns) 222.3 468 T
+5 F
+-0.6 (True) 281.95 468 S
+2 F
+(.) 308.35 468 T
+(If) 108 447 T
+1 F
+(c) 118.99 447 T
+(hang) 124.14 447 T
+(e_state) 148.02 447 T
+2 F
+( is) 182.02 447 T
+5 F
+-0.6 (True) 196.02 447 S
+2 F
+(, and the optional parameter,) 222.42 447 T
+1 F
+(state) 362.72 447 T
+2 F
+(, is not) 385.39 447 T
+5 F
+-0.6 (NULL) 420.73 447 S
+2 F
+(,) 447.13 447 T
+1 F
+(XkbSetNamed-) 453.13 447 T
+(Indicator) 108 434 T
+2 F
+( tells the server to change the state of the named indicator to the value specified) 152.66 434 T
+(by) 108 421 T
+1 F
+(state) 123 421 T
+2 F
+(.) 145.67 421 T
+(If an indicator with the name specified by) 108 400 T
+1 F
+(name) 311.29 400 T
+2 F
+( does not already exist, the) 337.28 400 T
+1 F
+(create_new) 468.26 400 T
+2 F
+-0.35 (parameter tells the server whether it should create a new named indicator. If) 108 387 P
+1 F
+-0.35 (create_new) 471.37 387 P
+2 F
+-0.35 ( is) 526.69 387 P
+5 F
+-0.6 (True) 108 374 S
+2 F
+(, the server finds the first indicator that doesn\325t have a name and gives it the name) 134.4 374 T
+(specified by) 108 361 T
+1 F
+(name) 169.32 361 T
+2 F
+(.) 195.31 361 T
+(If the optional parameter,) 108 340 T
+1 F
+(map) 232.97 340 T
+2 F
+(, is not) 253.63 340 T
+5 F
+-0.6 (NULL) 288.97 340 S
+2 F
+(,) 315.37 340 T
+1 F
+(XkbSetNamedIndicator) 321.37 340 T
+2 F
+( tells the server to) 433.36 340 T
+(change the indicator\325s map to the values specified in) 108 327 T
+1 F
+(map) 362.95 327 T
+2 F
+(.) 383.62 327 T
+1 F
+(XkbSetNamedIndicator) 108 306 T
+2 F
+( can generate) 219.98 306 T
+5 F
+-0.6 (BadAtom) 286.28 306 S
+2 F
+( and) 332.48 306 T
+5 F
+-0.6 (BadImplementation) 355.81 306 S
+2 F
+( errors. In) 468.02 306 T
+-0.06 (addition, it can also generate) 108 293 P
+5 F
+-0.14 -0.6 (XkbIndicatorStateNotify) 248.33 293 B
+2 F
+-0.06 ( \050see section 8.5\051,) 400.13 293 P
+5 F
+-0.14 -0.6 (XkbIndi-) 487.2 293 B
+-0.6 (catorMapNotify) 108 280 S
+2 F
+(, and) 200.4 280 T
+5 F
+-0.6 (XkbNamesNotify) 226.73 280 S
+2 F
+( events \050see section 18.5\051.) 319.13 280 T
+0 F
+(8.4.4) 72 255 T
+(The XkbIndicatorChang) 108 255 T
+(esRec Structure) 242.81 255 T
+2 F
+(The) 108 235 T
+5 F
+-0.6 (XkbIndicatorChangesRec) 129.66 235 S
+2 F
+( identifies small modifications to the indicator map.) 274.86 235 T
+(Use it with the function) 108 222 T
+1 F
+(XkbChang) 224.33 222 T
+(eIndicator) 274.87 222 T
+(s) 324.74 222 T
+2 F
+( to reduce the amount of traffic sent to the) 329.41 222 T
+(server.) 108 209 T
+2 11 Q
+(typedef struct _XkbIndicatorChanges {) 126 188.67 T
+(unsigned int) 144 175.67 T
+( state_changes;) 234 175.67 T
+(unsigned int) 144 162.67 T
+( map_changes;) 234 162.67 T
+(}) 126 149.67 T
+3 F
+(XkbIndicatorChangesRec) 131.28 149.67 T
+2 F
+(,*XkbIndicatorChangesPtr;) 253.5 149.67 T
+2 12 Q
+-0.33 (The) 108 130 P
+1 F
+-0.33 (state_c) 129.33 130 P
+-0.33 (hang) 163.15 130 P
+-0.33 (es) 187.03 130 P
+2 F
+-0.33 ( field is a mask that specifies the indicators that have changed state, and) 197.02 130 P
+1 F
+(map_c) 108 117 T
+(hang) 139.81 117 T
+(es) 163.69 117 T
+2 F
+( is a mask that specifies the indicators whose maps have changed.) 173.69 117 T
+FMENDPAGE
+%%EndPage: "43" 55
+%%Page: "44" 56
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(44) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+2 12 Q
+(To change indicator maps or state without passing the entire keyboard description, use) 108 712 T
+1 F
+(XkbChang) 108 699 T
+(eIndicator) 158.54 699 T
+(s) 208.42 699 T
+2 F
+(.) 213.08 699 T
+2 11 Q
+(Bool) 108 678.67 T
+3 F
+(XkbChangeIndicators) 132.15 678.67 T
+2 F
+(\050) 236.66 678.67 T
+1 F
+(dpy) 240.32 678.67 T
+(, xkb, c) 255.6 678.67 T
+(hang) 286.58 678.67 T
+(es, state) 308.48 678.67 T
+2 F
+(\051) 343.92 678.67 T
+(Display *) 126 665.67 T
+1 F
+(dpy) 243 665.67 T
+2 F
+(;) 258.88 665.67 T
+(/* connection to the X serv) 288 665.67 T
+(er */) 406.68 665.67 T
+(XkbDescPtr) 126 652.67 T
+1 F
+(xkb) 243 652.67 T
+2 F
+(;) 258.27 652.67 T
+(/* k) 288 652.67 T
+(e) 304.7 652.67 T
+(yboard description from which names are to be) 309.42 652.67 T
+(tak) 298.5 639.67 T
+(en. */) 311.83 639.67 T
+(XkbIndicatorChangesPtr) 126 626.67 T
+1 F
+(c) 243 626.67 T
+(hang) 247.72 626.67 T
+(es) 269.61 626.67 T
+2 F
+(;) 278.77 626.67 T
+(/* indicators to be updated on the serv) 288 626.67 T
+(er */) 455.56 626.67 T
+(unsigned int) 126 613.67 T
+1 F
+(state) 243 613.67 T
+2 F
+(;) 263.78 613.67 T
+(/* ne) 288 613.67 T
+(w state of indicators listed in) 309.42 613.67 T
+1 F
+(c) 298.5 600.67 T
+(hang) 303.22 600.67 T
+(es) 325.11 600.67 T
+2 F
+(->) 334.27 600.67 T
+1 F
+(state_c) 344.14 600.67 T
+(hang) 375.14 600.67 T
+(es) 397.03 600.67 T
+2 F
+( */) 406.19 600.67 T
+1 12 Q
+(XkbChang) 108 581 T
+(eIndicator) 158.54 581 T
+(s) 208.42 581 T
+2 F
+( copies any maps specified by) 213.08 581 T
+1 F
+(c) 359.72 581 T
+(hang) 364.87 581 T
+(es) 388.75 581 T
+2 F
+( from the keyboard descrip-) 398.75 581 T
+(tion,) 108 568 T
+1 F
+(xkb) 132.67 568 T
+2 F
+(, to the server specified by) 149.33 568 T
+1 F
+(dpy) 278.96 568 T
+2 F
+(. If any bits are set in the) 296.29 568 T
+1 F
+(state_c) 417.94 568 T
+(hang) 451.75 568 T
+(es) 475.63 568 T
+2 F
+( field of) 485.63 568 T
+1 F
+(c) 108 555 T
+(hang) 113.15 555 T
+(es) 137.03 555 T
+2 F
+(,) 147.02 555 T
+1 F
+(XkbChang) 153.02 555 T
+(eIndicator) 203.57 555 T
+(s) 253.44 555 T
+2 F
+( also sets the state of those indicators to the values speci-) 258.11 555 T
+-0.03 (fied in the) 108 542 P
+1 F
+-0.03 (state) 159.56 542 P
+2 F
+-0.03 ( mask. A 1 bit in) 182.23 542 P
+1 F
+-0.03 (state) 265.04 542 P
+2 F
+-0.03 ( turns the corresponding indicator on, a 0 bit turns it) 287.71 542 P
+(off.) 108 529 T
+1 F
+(XkbChang) 108 508 T
+(eIndicator) 158.54 508 T
+2 F
+(s can generate) 208.54 508 T
+5 F
+-0.6 (BadAtom) 279.5 508 S
+2 F
+( and) 325.7 508 T
+5 F
+-0.6 (BadImplementation) 349.03 508 S
+2 F
+( errors. In addi-) 461.23 508 T
+-0.59 (tion, it can also generate) 108 495 P
+5 F
+-1.29 -0.6 (XkbIndicatorStateNotify) 225.03 495 B
+2 F
+-0.59 ( and) 376.83 495 P
+5 F
+-1.29 -0.6 (XkbIndicatorMapNotify) 398.99 495 B
+2 F
+(events \050see section 8.5\051.) 108 482 T
+0 F
+(8.5) 72 457 T
+(T) 108 457 T
+(rac) 114.37 457 T
+(king Chang) 132.14 457 T
+(es to Indicator State or Map) 197.6 457 T
+2 F
+(Whenever an indicator changes state, the server sends) 108 437 T
+5 F
+-0.6 (XkbIndicatorStateNotify) 369.59 437 S
+2 F
+-0.25 (events to all interested clients. Similarly, whenever an indicator\325s map changes, the server) 108 424 P
+(sends) 108 411 T
+5 F
+-0.6 (XkbIndicatorMapNotify) 137.66 411 S
+2 F
+( events to all interested clients.) 276.27 411 T
+(To receive) 108 390 T
+5 F
+-0.6 (XkbIndicatorStateNotify) 161.98 390 S
+2 F
+( events, use) 313.78 390 T
+1 F
+(XkbSelectEvents) 372.43 390 T
+2 F
+( \050see section 4.3\051) 451.74 390 T
+(with both the) 108 377 T
+1 F
+(bits_to_c) 174.34 377 T
+(hang) 218.16 377 T
+(e) 242.04 377 T
+2 F
+(and) 250.37 377 T
+1 F
+( values_for_bits) 267.7 377 T
+2 F
+( parameters containing) 344.7 377 T
+5 F
+-0.6 (XkbIndica-) 457.01 377 S
+-0.6 (torStateNotifyMask) 108 364 S
+2 F
+(. To receive) 226.8 364 T
+5 F
+-0.6 (XkbIndicatorMapNotify) 286.78 364 S
+2 F
+( events, use) 425.38 364 T
+1 F
+(XkbSelect-) 484.04 364 T
+(Events) 108 351 T
+2 F
+( with) 139.99 351 T
+5 F
+-0.6 (XkbIndicatorMapNotifyMask) 167.33 351 S
+2 F
+(.) 332.33 351 T
+(To receive events for only specific indicators, use) 108 330 T
+1 F
+(XkbSelectEventDetails) 349.61 330 T
+2 F
+(. Set the) 458.92 330 T
+1 F
+(e) 108 317 T
+(vent_type) 113.15 317 T
+2 F
+( parameter) 159.13 317 T
+5 F
+-0.6 ( to XkbIndicatorStateNotify) 210.11 317 S
+2 F
+( or) 388.31 317 T
+5 F
+-0.6 (XkbIndicatorMapNo-) 404.31 317 S
+-0.6 (tify) 108 304 S
+2 F
+(, and set both the) 134.4 304 T
+1 F
+(bits_to_c) 219.06 304 T
+(hang) 262.89 304 T
+(e) 286.77 304 T
+2 F
+(and) 295.09 304 T
+1 F
+( values_for_bits) 312.42 304 T
+2 F
+( detail parameters to a mask) 389.42 304 T
+(where each bit specifies one indicator, turning on those bits that specify the indicators for) 108 291 T
+(which you want to receive events.) 108 278 T
+(Both types of indicator events use the same structure:) 108 257 T
+2 11 Q
+(typedef struct _XkbIndicatorNotify {) 126 236.67 T
+(int) 144 223.67 T
+(type;) 216 223.67 T
+(/* Xkb e) 279 223.67 T
+(xtension base e) 316.72 223.67 T
+(v) 383.65 223.67 T
+(ent code */) 388.99 223.67 T
+(unsigned long) 144 210.67 T
+(serial;) 216 210.67 T
+(/* X serv) 279 210.67 T
+(er serial number for e) 319.16 210.67 T
+(v) 413.57 210.67 T
+(ent */) 418.91 210.67 T
+(Bool) 144 197.67 T
+(send_e) 216 197.67 T
+(v) 246.27 197.67 T
+(ent;) 251.61 197.67 T
+(/*) 279 197.67 T
+5 12 Q
+-0.6 (True) 290.31 197.67 S
+2 11 Q
+( => synthetically generated */) 316.71 197.67 T
+(Display *) 144 184.67 T
+(display;) 216 184.67 T
+(/* serv) 279 184.67 T
+(er connection where e) 308.47 184.67 T
+(v) 405.02 184.67 T
+(ent generated */) 410.35 184.67 T
+(T) 144 171.67 T
+(ime) 150.34 171.67 T
+(time;) 216 171.67 T
+(/* serv) 279 171.67 T
+(er time when e) 308.47 171.67 T
+(v) 373.26 171.67 T
+(ent generated */) 378.59 171.67 T
+(int) 144 158.67 T
+(xkb_type;) 216 158.67 T
+(/* speci\336es state or map notify */) 279 158.67 T
+(int) 144 145.67 T
+(de) 216 145.67 T
+(vice;) 226.11 145.67 T
+(/* Xkb de) 279 145.67 T
+(vice ID, will not be) 322.11 145.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 410.1 145.67 S
+2 F
+(*/) 491.61 145.67 T
+(unsigned int) 144 132.67 T
+(changed;) 216 132.67 T
+(/* mask of indicators with ne) 279 132.67 T
+(w state or map */) 406.74 132.67 T
+(unsigned int) 144 119.67 T
+(state;) 216 119.67 T
+(/* current state of all indicators */) 279 119.67 T
+(}) 126 106.67 T
+3 F
+(XkbIndicatorNotifyEv) 134.03 106.67 T
+(ent) 240.26 106.67 T
+2 F
+(;) 254.92 106.67 T
+FMENDPAGE
+%%EndPage: "44" 56
+%%Page: "45" 57
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(45) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+1 12 Q
+(xkb_type) 108 712 T
+2 F
+( is either) 150.65 712 T
+5 F
+-0.6 (XkbIndicatorStateNotify) 194.98 712 S
+2 F
+( or) 346.78 712 T
+5 F
+-0.6 (XkbIndicatorMapNotify) 362.77 712 S
+2 F
+(,) 501.38 712 T
+(depending on whether the event is a) 108 699 T
+5 F
+-0.6 (kbIndicatorStateNotify) 283.63 699 S
+2 F
+( event or) 428.83 699 T
+5 F
+-0.6 (kbIndica-) 473.82 699 S
+-0.6 (torMapNotify) 108 686 S
+2 F
+( event.) 187.2 686 T
+(The) 108 665 T
+1 F
+(changed) 129.66 665 T
+2 F
+( parameter is a mask that is the bitwise inclusive OR of the indicators that) 170.32 665 T
+(have changed. If the event is of type) 108 652 T
+5 F
+-0.6 (XkbIndicatorMapNotify) 284.95 652 S
+2 F
+(,) 423.55 652 T
+1 F
+(c) 429.55 652 T
+(hang) 434.7 652 T
+(ed) 458.58 652 T
+2 F
+( reports the) 469.91 652 T
+-0.51 (maps that changed. If the event is of type) 108 639 P
+5 F
+-1.12 -0.6 (XkbIndicatorStateNotify) 304.04 639 B
+2 F
+-0.51 (,) 455.85 639 P
+1 F
+-0.51 (c) 461.34 639 P
+-0.51 (hang) 466.49 639 P
+-0.51 (ed) 490.37 639 P
+2 F
+-0.51 ( reports) 501.7 639 P
+-0.04 (the indicators that have changed state.) 108 626 P
+1 F
+-0.04 (state) 293.42 626 P
+2 F
+-0.04 ( is a mask that specifies the current state of all) 316.09 626 P
+(indicators, whether they have changed or not, for both) 108 613 T
+5 F
+-0.6 (XkbIndicatorStateNotify) 370.94 613 S
+2 F
+(and) 108 600 T
+5 F
+-0.6 (IndicatorMapNotify) 128.33 600 S
+2 F
+( events.) 247.13 600 T
+(When your client application receives either a) 108 579 T
+5 F
+-0.6 (XkbIndicatorStateNotify) 331.61 579 S
+2 F
+( event or) 483.41 579 T
+5 F
+-0.6 (XkbIndicatorMapNotify) 108 566 S
+2 F
+( event, you can note the changes in a changes structure by) 246.6 566 T
+(calling) 108 553 T
+1 F
+(XkbNoteIndicatorChang) 143.66 553 T
+(es) 261.54 553 T
+2 F
+(.) 271.54 553 T
+2 11 Q
+(v) 108 532.67 T
+(oid) 113.28 532.67 T
+3 F
+(XkbNoteIndicatorChanges) 130.09 532.67 T
+2 F
+(\050) 256.59 532.67 T
+1 F
+(old) 260.25 532.67 T
+2 F
+(,) 274.31 532.67 T
+1 F
+( ne) 277.06 532.67 T
+(w) 290.03 532.67 T
+2 F
+(,) 296.65 532.67 T
+1 F
+( wanted) 299.4 532.67 T
+2 F
+(\051) 333.93 532.67 T
+(XkbIndicatorChangesPtr) 126 519.67 T
+1 F
+(old) 252 519.67 T
+2 F
+(;) 266.06 519.67 T
+(/* XkbIndicatorChanges structure to be updated */) 306 519.67 T
+(XkbIndicatorNotifyEv) 126 506.67 T
+(ent *) 225.43 506.67 T
+1 F
+(ne) 252 506.67 T
+(w) 262.22 506.67 T
+2 F
+(;) 269.56 506.67 T
+(/* e) 306 506.67 T
+(v) 321.92 506.67 T
+(ent from which changes are to be copied */) 327.25 506.67 T
+(unsigned int) 126 493.67 T
+1 F
+(wanted) 252 493.67 T
+2 F
+(;) 283.78 493.67 T
+(/* which changes are to be noted */) 306 493.67 T
+2 12 Q
+(The) 108 474 T
+1 F
+(wanted) 129.66 474 T
+2 F
+( parameter is the bitwise inclusive OR of) 164.33 474 T
+5 F
+-0.6 (XkbIndicatorMapMask) 363.64 474 S
+2 F
+( and) 489.04 474 T
+5 F
+-0.6 (XkbIndicatorStateMask) 108 461 S
+2 F
+(.) 246.6 461 T
+1 F
+(XkbNoteIndicatorChang) 252.6 461 T
+(es) 370.48 461 T
+2 F
+( copies any changes reported in) 380.48 461 T
+1 F
+(ne) 108 448 T
+(w) 119.15 448 T
+2 F
+( and specified in) 127.15 448 T
+1 F
+(wanted) 209.14 448 T
+2 F
+( into the changes record specified by) 243.8 448 T
+1 F
+(old) 422.76 448 T
+2 F
+(.) 438.1 448 T
+-0.06 (To update a local copy of the keyboard description with the actual values, pass the results) 108 427 P
+(of one or more calls to) 108 414 T
+1 F
+(XkbNoteIndicatorChanges) 219.31 414 T
+2 F
+( to) 347.3 414 T
+1 F
+(XkbGetIndicatorChanges) 362.64 414 T
+2 F
+(:) 485.29 414 T
+2 11 Q
+(Status) 108 393.67 T
+3 F
+(XkbGetIndicatorChanges) 137.65 393.67 T
+2 F
+(\050) 259.26 393.67 T
+1 F
+(dpy) 262.92 393.67 T
+2 F
+(,) 278.09 393.67 T
+1 F
+( xkb) 280.84 393.67 T
+2 F
+(,) 298.86 393.67 T
+1 F
+( c) 301.61 393.67 T
+(hang) 309.08 393.67 T
+(es) 330.97 393.67 T
+2 F
+(,) 340.13 393.67 T
+1 F
+( state) 342.88 393.67 T
+2 F
+(\051) 366.41 393.67 T
+(Display *) 126 380.67 T
+1 F
+(dpy) 243 380.67 T
+2 F
+(;) 258.88 380.67 T
+(/* connection to the X serv) 288 380.67 T
+(er */) 406.68 380.67 T
+(XkbDescPtr) 126 367.67 T
+1 F
+(xkb) 243 367.67 T
+2 F
+(;) 258.27 367.67 T
+(/* k) 288 367.67 T
+(e) 304.7 367.67 T
+(yboard description to hold the ne) 309.42 367.67 T
+(w v) 454.27 367.67 T
+(alues */) 470.18 367.67 T
+(XkbIndicatorChangesPtr) 126 354.67 T
+1 F
+(c) 243 354.67 T
+(hang) 247.72 354.67 T
+(es) 269.61 354.67 T
+2 F
+(;) 278.77 354.67 T
+(/* indicator maps/state to be obtained from the serv) 288 354.67 T
+(er */) 513.92 354.67 T
+(unsigned int *) 126 341.67 T
+1 F
+(state) 243 341.67 T
+2 F
+(;) 263.78 341.67 T
+(/* back\336lled with the state of the indicators */) 288 341.67 T
+1 12 Q
+-0.09 (XkbGetIndicatorChang) 108 322 P
+-0.09 (es) 220.54 322 P
+2 F
+-0.09 ( examines the) 230.53 322 P
+1 F
+-0.09 (c) 299.25 322 P
+-0.09 (hang) 304.4 322 P
+-0.09 (es) 328.28 322 P
+2 F
+-0.09 ( parameter, pulls over the necessary infor-) 338.27 322 P
+-0.45 (mation from the server, and copies the results into the) 108 309 P
+1 F
+-0.45 (xkb) 364.43 309 P
+2 F
+-0.45 ( keyboard description. If any bits) 381.08 309 P
+(are set in the) 108 296 T
+1 F
+(state_c) 171.98 296 T
+(hang) 205.8 296 T
+(es) 229.68 296 T
+2 F
+( field of) 239.68 296 T
+1 F
+(c) 280.67 296 T
+(hang) 285.82 296 T
+(es) 309.7 296 T
+2 F
+(,) 319.69 296 T
+1 F
+(XkbGetIndicatorChang) 325.69 296 T
+(es) 438.23 296 T
+2 F
+( also places the) 448.22 296 T
+(state of those indicators in) 108 283 T
+1 F
+(state) 236.99 283 T
+2 F
+(. If the) 259.66 283 T
+1 F
+(indicators) 294.31 283 T
+2 F
+( field of) 342.98 283 T
+1 F
+(xkb) 383.98 283 T
+2 F
+( is) 400.63 283 T
+5 F
+-0.6 (NULL) 414.64 283 S
+2 F
+(,) 441.04 283 T
+1 F
+(XkbGetIndicator-) 447.04 283 T
+(Chang) 108 270 T
+(es) 139.88 270 T
+2 F
+( allocates and initializes it. To free the) 149.88 270 T
+1 F
+(indicators) 336.18 270 T
+2 F
+( field, use) 384.85 270 T
+1 F
+(XkbF) 434.84 270 T
+(r) 460.18 270 T
+(eeIndicator) 464.4 270 T
+(s) 519.6 270 T
+2 F
+(\050see section 8.6\051.) 108 257 T
+1 F
+(XkbGetIndicatorChang) 108 236 T
+(es) 220.54 236 T
+2 F
+( can generate) 230.53 236 T
+5 F
+-0.6 (BadAlloc) 296.83 236 S
+2 F
+(,) 349.63 236 T
+5 F
+-0.6 (BadImplementation,) 355.63 236 S
+2 F
+( and) 474.44 236 T
+5 F
+-0.6 (Bad-) 497.76 236 S
+-0.6 (Match) 108 223 S
+2 F
+( errors.) 141 223 T
+0 F
+(8.6) 72 198 T
+(Allocating and Freeing Indicator Maps) 108 198 T
+2 F
+(Most applications do not need to directly allocate the) 108 178 T
+1 F
+(indicators) 365.64 178 T
+2 F
+( member of the keyboard) 414.31 178 T
+-0.06 (description record \050the keyboard description record is described in Chapter 6\051. If the need) 108 165 P
+(arises, however, use) 108 152 T
+1 F
+(XkbAllocIndicatorMaps.) 207.64 152 T
+2 11 Q
+(Status) 108 131.67 T
+3 F
+(XkbAllocIndicatorMaps) 137.65 131.67 T
+2 F
+(\050) 252.54 131.67 T
+1 F
+(xkb) 256.2 131.67 T
+2 F
+(\051) 271.47 131.67 T
+(XkbDescPtr) 126 118.67 T
+1 F
+(xkb) 189 118.67 T
+2 F
+(;) 204.27 118.67 T
+(/* k) 234 118.67 T
+(e) 250.7 118.67 T
+(yboard description structure */) 255.42 118.67 T
+2 12 Q
+(The) 108 99 T
+1 F
+(xkb) 129.66 99 T
+2 F
+( parameter must point to a valid keyboard description. If it doesn\325t,) 146.32 99 T
+1 F
+(XkbAllocIndi-) 470.94 99 T
+(catorMaps) 108 86 T
+2 F
+( returns a) 160 86 T
+5 F
+-0.6 (BadMatch) 207.65 86 S
+2 F
+( error. Otherwise,) 260.45 86 T
+1 F
+(XkbAllocIndicatorMaps) 348.08 86 T
+2 F
+( allocates and) 463.4 86 T
+(initializes the) 108 73 T
+1 F
+(indicators) 175.33 73 T
+2 F
+( member of the keyboard description record and returns) 224 73 T
+5 F
+-0.6 (Suc-) 494.27 73 S
+FMENDPAGE
+%%EndPage: "45" 57
+%%Page: "46" 58
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(46) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(8 Indicators) 482.26 744.87 T
+5 12 Q
+-0.6 (cess) 108 712 S
+2 F
+(. If) 134.4 712 T
+1 F
+(XkbAllocIndicatorMaps) 151.39 712 T
+2 F
+( was unable to allocate the indicators record, it reports a) 266.71 712 T
+(Bad) 108 699 T
+5 F
+-0.6 (Alloc) 127.33 699 S
+2 F
+( error.) 160.33 699 T
+(To free memory used by the) 108 678 T
+1 F
+(indicators) 246.64 678 T
+2 F
+( member of an) 295.31 678 T
+5 F
+-0.6 (XkbDescRec) 367.96 678 S
+2 F
+( structure, use) 433.96 678 T
+1 F
+(XkbF) 108 665 T
+(r) 133.33 665 T
+(eeIndicatorMaps.) 137.56 665 T
+2 11 Q
+(v) 108 644.67 T
+(oid) 113.28 644.67 T
+3 F
+(XkbFr) 130.09 644.67 T
+(eeIndicatorMaps) 161.67 644.67 T
+2 F
+(\050) 241.72 644.67 T
+1 F
+(xkb) 245.38 644.67 T
+2 F
+(\051) 260.65 644.67 T
+(XkbDescPtr) 126 631.67 T
+1 F
+(xkb) 189 631.67 T
+2 F
+(;) 204.27 631.67 T
+(/* k) 234 631.67 T
+(e) 250.7 631.67 T
+(yboard description structure */) 255.42 631.67 T
+2 12 Q
+-0.42 (If the) 108 612 P
+1 F
+-0.42 (indicators) 135.82 612 P
+2 F
+-0.42 ( member of the keyboard description record pointed to by) 184.49 612 P
+1 F
+-0.42 (xkb) 460.27 612 P
+2 F
+-0.42 ( is not) 476.93 612 P
+5 F
+-0.92 -0.6 (NULL) 508.02 612 B
+2 F
+-0.42 (,) 534.42 612 P
+1 F
+(XkbF) 108 599 T
+(r) 133.33 599 T
+(eeIndicatorMaps) 137.56 599 T
+2 F
+( frees the memory associated with the) 219.54 599 T
+1 F
+(indicators) 403.84 599 T
+2 F
+( member of) 452.51 599 T
+1 F
+(xkb) 510.83 599 T
+2 F
+(.) 527.48 599 T
+FMENDPAGE
+%%EndPage: "46" 58
+%%Page: "47" 59
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(47) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(9 Bells) 503.63 744.87 T
+0 14 Q
+(9) 72 710.67 T
+(Bells) 108 710.67 T
+2 12 Q
+(The core X protocol allows only applications to explicitly sound the system bell with a) 108 688 T
+(given duration, pitch, and volume. Xkb extends this capability by allowing clients to) 108 675 T
+(attach symbolic names to bells, disable audible bells, and receive an event whenever the) 108 662 T
+(keyboard bell is rung. For the purposes of this document, the) 108 649 T
+1 F
+(audible) 402.97 649 T
+2 F
+( bell is defined to be) 438.97 649 T
+-0.11 (the system bell, or the default keyboard bell, as opposed to any other audible sound gener-) 108 636 P
+(ated elsewhere in the system.) 108 623 T
+(You can ask to receive) 108 602 T
+5 F
+-0.6 (XkbBellNotify) 220.3 602 S
+2 F
+( events \050see section 9.4\051 when any client rings) 306.1 602 T
+(any one of the following:) 108 589 T
+2 11 Q
+(\245) 126 568.67 T
+(The def) 139.68 568.67 T
+(ault bell) 173.47 568.67 T
+(\245) 126 556.67 T
+(An) 139.68 556.67 T
+(y bell on an input de) 152.96 556.67 T
+(vice that can be speci\336ed by a) 242.82 556.67 T
+1 12 Q
+(bell_class) 377.53 556.67 T
+2 11 Q
+( and) 425.53 556.67 T
+1 12 Q
+(bell_id) 446.92 556.67 T
+2 11 Q
+( pair) 480.25 556.67 T
+(\245) 126 544.67 T
+(An) 139.68 544.67 T
+(y bell speci\336ed only by an arbitrary name. \050This is, from the serv) 152.96 544.67 T
+(er\325) 438.75 544.67 T
+(s point of vie) 450.35 544.67 T
+(w) 507.83 544.67 T
+(,) 515.05 544.67 T
+(merely a name, and not connected with an) 139.68 532.67 T
+(y ph) 325.25 532.67 T
+(ysical sound-generating de) 344.45 532.67 T
+(vice. Some) 462.09 532.67 T
+-0.15 (client application must generate the sound, or visual feedback, if an) 139.68 520.67 P
+-0.15 (y) 435 520.67 P
+-0.15 (, that is associated) 439.79 520.67 P
+(with the name.\051) 139.68 508.67 T
+2 12 Q
+-0.4 (You can also ask to receive) 108 490 P
+5 F
+-0.89 -0.6 (XkbBellNotify) 240.21 490 B
+2 F
+-0.4 ( events when the server rings the default bell) 326.01 490 P
+(or if any client has requested events only \050without the bell sounding\051 for any of the bell) 108 477 T
+(types previously listed.) 108 464 T
+(You can disable audible bells on a global basis \050to set the) 108 443 T
+5 F
+-0.6 (AudibleBell) 385.97 443 S
+2 F
+( control, see) 458.57 443 T
+-0.24 (Chapter 10\051. For example, a client that replaces the keyboard bell with some other audible) 108 430 P
+(cue might want to turn off the) 108 417 T
+5 F
+-0.6 (AudibleBell) 254.32 417 S
+2 F
+( control to prevent the server from also gen-) 326.92 417 T
+(erating a sound and avoid cacophony. If you disable audible bells and request to receive) 108 404 T
+5 F
+-0.6 (XkbBellNotify) 108 391 S
+2 F
+( events, you can generate feedback different from the default bell.) 193.8 391 T
+-0.37 (You can, however, override the) 108 370 P
+5 F
+-0.82 -0.6 (AudibleBell) 260.43 370 B
+2 F
+-0.37 ( control by calling one of the functions that) 333.03 370 P
+(force the ringing of a bell in spite of the setting of the) 108 357 T
+5 F
+-0.6 (AudibleBell) 367.63 357 S
+2 F
+( control \321) 440.23 357 T
+1 F
+(Xkb-) 495.23 357 T
+(F) 108 344 T
+(or) 114.07 344 T
+(ceDe) 124.3 344 T
+(viceBell) 148.76 344 T
+2 F
+( or) 187.42 344 T
+1 F
+(XkbF) 203.41 344 T
+(or) 228.14 344 T
+(ceBell) 238.37 344 T
+2 F
+( \050see section 9.3.3\051. In this case the server does not gen-) 268.36 344 T
+(erate a bell event.) 108 331 T
+-0.01 (Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeat-) 108 310 P
+(ing, Xkb can provide feedback for the controls by using special beep codes. The) 108 297 T
+5 F
+-0.6 (AccessXFeedback) 108 284 S
+2 F
+( control is used to configure the specific types of operations that gen-) 207 284 T
+(erate feedback. See section 10.6.3 for a discussion on) 108 271 T
+5 F
+-0.6 (AccessXFeedback) 367.27 271 S
+2 F
+( control.) 466.27 271 T
+(This chapter describes bell names, the functions used to generate named bells, and the) 108 250 T
+(events the server generates for bells.) 108 237 T
+0 F
+(9.1) 72 212 T
+(Bell Names) 108 212 T
+2 F
+(You can associate a name to an act of ringing a bell by converting the name to an Atom) 108 192 T
+(and then using this name when you call the functions listed in this chapter. If an event is) 108 179 T
+(generated as a result, the name is then passed to all other clients interested in receiving) 108 166 T
+5 F
+-0.6 (XkbBellNotify) 108 153 S
+2 F
+( events. Note that these are arbitrary names and that there is no binding) 193.8 153 T
+(to any sounds. Any sounds or other effects \050such as visual bells on the screen\051 must be) 108 140 T
+-0.31 (generated by a client application upon receipt of the bell event containing the name. There) 108 127 P
+(is no default name for the default keyboard bell. The server does generate some pre-) 108 114 T
+(defined bells for the AccessX controls \050see section 10.6.3\051. These named bells are shown) 108 101 T
+(in Table 9.1; the name is included in any bell event sent to clients that have requested to) 108 88 T
+(receive) 108 75 T
+5 F
+-0.6 (XkbBellNotify) 145.64 75 S
+2 F
+( events.) 231.45 75 T
+FMENDPAGE
+%%EndPage: "47" 59
+%%Page: "48" 60
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(48) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(9 Bells) 503.63 744.87 T
+0 12 Q
+(9.2) 72 436 T
+(A) 108 436 T
+(udib) 116.3 436 T
+(le Bells) 141.52 436 T
+2 F
+(Using Xkb you can generate bell events that do not necessarily ring the system bell. This) 108 416 T
+-0.22 (is useful if you need to use an audio server instead of the system beep. For example, when) 108 403 P
+(an audio client starts, it could disable the audible bell \050the system bell\051 and then listen for) 108 390 T
+5 F
+-0.95 -0.6 (XkbBellNotify) 108 377 B
+2 F
+-0.43 ( events \050see section 9.4\051. When it receives a) 193.8 377 P
+5 F
+-0.95 -0.6 (XkbBellNotify) 402.84 377 B
+2 F
+-0.43 ( event, the) 488.64 377 P
+(audio client could then send a request to an audio server to play a sound.) 108 364 T
+(You can control the audible bells feature by passing the) 108 343 T
+5 F
+-0.6 (XkbAudibleBellMask) 377.95 343 S
+2 F
+( to) 496.75 343 T
+1 F
+(XkbChang) 108 330 T
+(eEnabledContr) 158.54 330 T
+(ols) 231.34 330 T
+2 F
+( \050see section 10.1.1\051. If you set) 245.34 330 T
+5 F
+-0.6 (XkbAudibleBellMask) 395.98 330 S
+2 F
+( on,) 514.78 330 T
+(the server rings the system bell when a bell event occurs. This is the default. If you set) 108 317 T
+5 F
+-0.6 (XkbAudibleBellMask) 108 304 S
+2 F
+( off and a bell event occurs, the server does not ring the system) 226.8 304 T
+(bell unless you call) 108 291 T
+1 F
+(XkbF) 203.33 291 T
+(or) 228.06 291 T
+(ceDe) 238.28 291 T
+(viceBell) 262.75 291 T
+2 F
+( or) 301.4 291 T
+1 F
+(XkbF) 317.4 291 T
+(or) 342.13 291 T
+(ceBell) 352.36 291 T
+2 F
+( \050see section 9.3.3\051.) 382.34 291 T
+(Audible bells are also part of the per-client auto-reset controls. For more information on) 108 270 T
+(auto-reset controls, see section 10.1.2.) 108 257 T
+0 F
+(9.3) 72 232 T
+(Bell Functions) 108 232 T
+2 F
+(Use the functions described in this section to ring bells and to generate bell events.) 108 212 T
+(The input extension has two types of feedbacks that can generate bells \321 bell feedback) 108 191 T
+(and keyboard feedback. Some of the functions in this section have) 108 178 T
+1 F
+(bell_class) 429.28 178 T
+2 F
+( and) 477.28 178 T
+1 F
+(bell_id) 500.6 178 T
+2 F
+(parameters; set them as follows: Set) 108 165 T
+1 F
+(bell_class) 283.98 165 T
+2 F
+( to) 331.98 165 T
+5 F
+-0.6 (BellFeedbackClass) 347.32 165 S
+2 F
+( or) 459.52 165 T
+5 F
+-0.6 (KbdFeed-) 475.51 165 S
+-0.6 (backClass) 108 152 S
+2 F
+(. A device can have more than one feedback of each type; set) 167.4 152 T
+1 F
+(bell_id) 463.97 152 T
+2 F
+( to the) 497.3 152 T
+(particular bell feedback of) 108 139 T
+1 F
+(bell_class) 237.29 139 T
+2 F
+( type.) 285.29 139 T
+3 F
+(T) 249.86 692 T
+(able 9.1 Pr) 256.76 692 T
+(ede\336ned Bells) 314.54 692 T
+1 F
+(Action) 109 672 T
+(Named Bell) 370 672 T
+2 11 Q
+(Indicator turned on) 109 657.67 T
+(AX_IndicatorOn) 370 657.67 T
+(Indicator turned of) 109 643.67 T
+(f) 191.2 643.67 T
+(AX_IndicatorOf) 370 643.67 T
+(f) 442.42 643.67 T
+(More than one indicator changed state) 109 629.67 T
+(AX_IndicatorChange) 370 629.67 T
+(Control turned on) 109 615.67 T
+(AX_FeatureOn) 370 615.67 T
+(Control turned of) 109 601.67 T
+(f) 185.11 601.67 T
+(AX_FeatureOf) 370 601.67 T
+(f) 435.7 601.67 T
+(More than one control changed state) 109 587.67 T
+(AX_FeatureChange) 370 587.67 T
+(Slo) 109 573.67 T
+(wK) 123.4 573.67 T
+(e) 139.01 573.67 T
+(ys and BounceK) 143.73 573.67 T
+(e) 216.16 573.67 T
+(ys about to be turned on or of) 220.88 573.67 T
+(f) 350.45 573.67 T
+(AX_Slo) 370 573.67 T
+(wK) 405.78 573.67 T
+(e) 421.39 573.67 T
+(ysW) 426.11 573.67 T
+(arning) 445.39 573.67 T
+(Slo) 109 559.67 T
+(wK) 123.4 559.67 T
+(e) 139.01 559.67 T
+(ys k) 143.73 559.67 T
+(e) 161.65 559.67 T
+(y pressed) 166.37 559.67 T
+(AX_Slo) 370 559.67 T
+(wK) 405.78 559.67 T
+(e) 421.39 559.67 T
+(yPress) 426.11 559.67 T
+(Slo) 109 545.67 T
+(wK) 123.4 545.67 T
+(e) 139.01 545.67 T
+(ys k) 143.73 545.67 T
+(e) 161.65 545.67 T
+(y accepted) 166.37 545.67 T
+(AX_Slo) 370 545.67 T
+(wK) 405.78 545.67 T
+(e) 421.39 545.67 T
+(yAccept) 426.11 545.67 T
+(Slo) 109 531.67 T
+(wK) 123.4 531.67 T
+(e) 139.01 531.67 T
+(ys k) 143.73 531.67 T
+(e) 161.65 531.67 T
+(y rejected) 166.37 531.67 T
+(AX_Slo) 370 531.67 T
+(wK) 405.78 531.67 T
+(e) 421.39 531.67 T
+(yReject) 426.11 531.67 T
+(Accepted Slo) 109 517.67 T
+(wK) 167.68 517.67 T
+(e) 183.29 517.67 T
+(ys k) 188.01 517.67 T
+(e) 205.93 517.67 T
+(y released) 210.65 517.67 T
+(AX_Slo) 370 517.67 T
+(wK) 405.78 517.67 T
+(e) 421.39 517.67 T
+(yRelease) 426.11 517.67 T
+(BounceK) 109 503.67 T
+(e) 150.27 503.67 T
+(ys k) 154.99 503.67 T
+(e) 172.91 503.67 T
+(y rejected) 177.63 503.67 T
+(AX_BounceK) 370 503.67 T
+(e) 432.66 503.67 T
+(yReject) 437.38 503.67 T
+(Stick) 109 489.67 T
+(yK) 131.45 489.67 T
+(e) 144.62 489.67 T
+(ys k) 149.34 489.67 T
+(e) 167.26 489.67 T
+(y latched) 171.98 489.67 T
+(AX_Stick) 370 489.67 T
+(yLatch) 413.83 489.67 T
+(Stick) 109 475.67 T
+(yK) 131.45 475.67 T
+(e) 144.62 475.67 T
+(ys k) 149.34 475.67 T
+(e) 167.26 475.67 T
+(y lock) 171.98 475.67 T
+(ed) 199.06 475.67 T
+(AX_Stick) 370 475.67 T
+(yLock) 413.83 475.67 T
+(Stick) 109 461.67 T
+(yK) 131.45 461.67 T
+(e) 144.62 461.67 T
+(ys k) 149.34 461.67 T
+(e) 167.26 461.67 T
+(y unlock) 171.98 461.67 T
+(ed) 210.06 461.67 T
+(AX_Stick) 370 461.67 T
+(yUnlock) 413.83 461.67 T
+108 684 513 684 2 L
+V
+0.5 H
+0 Z
+N
+108 667 513 667 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "48" 60
+%%Page: "49" 61
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(49) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(9 Bells) 503.63 744.87 T
+2 12 Q
+-0.36 (Table 9.2 shows the conditions that cause a bell to sound or an) 108 712 P
+5 F
+-0.8 -0.6 (XkbBellNotifyEvent) 406.59 712 B
+2 F
+-0.36 ( to) 525.39 712 P
+(be generated when a bell function is called.) 108 699 T
+0 F
+(9.3.1) 72 512 T
+(Generating Named Bells) 108 512 T
+2 F
+(To ring the bell on an X input extension device or the default keyboard, use) 108 492 T
+1 F
+(XkbDevice-) 473.94 492 T
+(Bell.) 108 479 T
+2 11 Q
+(Bool) 108 458.67 T
+3 F
+(XkbDe) 132.15 458.67 T
+(viceBell) 164.98 458.67 T
+2 F
+(\050) 201.64 458.67 T
+1 F
+(display) 205.31 458.67 T
+(, window) 236.48 458.67 T
+(, de) 275.4 458.67 T
+(vice_id, bell_class, bell_id, per) 291.12 458.67 T
+(cent, name) 428.2 458.67 T
+2 F
+(\051) 475.85 458.67 T
+(Display *) 126 445.67 T
+1 F
+(display) 189 445.67 T
+2 F
+(;) 220.78 445.67 T
+(/* connection to the X serv) 252 445.67 T
+(er */) 370.68 445.67 T
+(W) 126 432.67 T
+(indo) 135.94 432.67 T
+(w) 155.23 432.67 T
+1 F
+(window) 189 432.67 T
+2 F
+(;) 223.23 432.67 T
+(/* windo) 252 432.67 T
+(w for which the bell is generated, or None */) 290.53 432.67 T
+(unsigned int) 126 419.67 T
+1 F
+(de) 189 419.67 T
+(vice_spec) 199.22 419.67 T
+2 F
+(;) 241.98 419.67 T
+(/* de) 252 419.67 T
+(vice ID, or) 273.42 419.67 T
+5 12 Q
+-0.6 (XkbUseCoreKbd) 323.51 419.67 S
+2 11 Q
+( */) 409.31 419.67 T
+(unsigned int) 126 406.67 T
+1 F
+(bell_class) 189 406.67 T
+2 F
+(;) 233 406.67 T
+(/* X input e) 252 406.67 T
+(xtension bell class of the bell to be rung */) 304.08 406.67 T
+(unsigned int) 126 393.67 T
+1 F
+(bell_id) 189 393.67 T
+2 F
+(;) 219.56 393.67 T
+(/* X input e) 252 393.67 T
+(xtension bell ID of the bell to be rung */) 304.08 393.67 T
+(int) 126 380.67 T
+1 F
+(per) 189 380.67 T
+(cent) 203.26 380.67 T
+2 F
+(;) 221.58 380.67 T
+(/* bell v) 252 380.67 T
+(olume, from -100 to 100 inclusi) 287.84 380.67 T
+(v) 427.51 380.67 T
+(e */) 432.84 380.67 T
+(Atom) 126 367.67 T
+1 F
+(name) 189 367.67 T
+2 F
+(;) 212.83 367.67 T
+(/* a name for the bell, or) 252 367.67 T
+5 12 Q
+-0.6 (NULL) 363.2 367.67 S
+2 11 Q
+( */) 389.6 367.67 T
+2 12 Q
+-0.11 (Set) 108 348 P
+1 F
+-0.11 (per) 126.23 348 P
+-0.11 (cent) 141.78 348 P
+2 F
+-0.11 ( to be the volume relative to the base volume for the keyboard as described for) 161.77 348 P
+1 F
+(XBell) 108 335 T
+2 F
+(.) 134.66 335 T
+(Note that) 108 314 T
+1 F
+(bell_class) 155.33 314 T
+2 F
+( and) 203.33 314 T
+1 F
+(bell_id) 226.66 314 T
+2 F
+( indicate the bell to physically ring.) 259.99 314 T
+1 F
+(name) 432.65 314 T
+2 F
+( is simply an) 458.64 314 T
+(arbitrary moniker for the client application\325s use.) 108 301 T
+(To determine the current feedback settings of an extension input device, use) 108 280 T
+1 F
+(XGetF) 476.26 280 T
+(eed-) 507.35 280 T
+(bac) 108 267 T
+(kContr) 125.09 267 T
+(ol) 157.88 267 T
+2 F
+(. See the X input extension documentation for more information on) 167.22 267 T
+1 F
+(XGet-) 493.19 267 T
+(F) 108 254 T
+(eedbac) 114.43 254 T
+(kContr) 148.18 254 T
+(ol) 180.97 254 T
+2 F
+( and related data structures.) 190.31 254 T
+(If a compatible keyboard extension is not present in the X server,) 108 233 T
+1 F
+(XkbDe) 424.27 233 T
+(viceBell) 456.74 233 T
+2 F
+( immedi-) 495.4 233 T
+(ately returns) 108 220 T
+5 F
+-0.6 (False) 170.65 220 S
+2 F
+(. Otherwise,) 203.65 220 T
+1 F
+(XkbDe) 264.97 220 T
+(viceBell) 297.45 220 T
+2 F
+(rings the bell as specified for the display) 339.1 220 T
+(and keyboard device and returns) 108 207 T
+5 F
+-0.6 (True) 266.95 207 S
+2 F
+(. If you have disabled the audible bell, the server) 293.35 207 T
+(does not ring the system bell, although it does generate a) 108 194 T
+5 F
+-0.6 (XkbBellNotify) 383.3 194 S
+2 F
+( event.) 469.11 194 T
+(You can call) 108 173 T
+1 F
+(XkbDe) 171.65 173 T
+(viceBell) 204.12 173 T
+2 F
+( without first initializing the keyboard extension.) 242.77 173 T
+(As a convenience function, Xkb provides a function to ring the bell on the default key-) 108 152 T
+(board:) 108 139 T
+1 F
+(XkbBell.) 141.66 139 T
+2 11 Q
+(Bool) 108 118.67 T
+3 F
+(XkbBell) 132.15 118.67 T
+2 F
+(\050) 170.66 118.67 T
+1 F
+(display) 174.32 118.67 T
+(, window) 205.49 118.67 T
+(, per) 244.41 118.67 T
+(cent, name) 264.17 118.67 T
+2 F
+(\051) 311.82 118.67 T
+(Display *) 126 105.67 T
+1 F
+(display) 189 105.67 T
+2 F
+(;) 220.78 105.67 T
+(/* connection to the X serv) 252 105.67 T
+(er */) 370.68 105.67 T
+(W) 126 92.67 T
+(indo) 135.94 92.67 T
+(w) 155.23 92.67 T
+1 F
+(window) 189 92.67 T
+2 F
+(;) 223.23 92.67 T
+(/* e) 252 92.67 T
+(v) 267.92 92.67 T
+(ent windo) 273.25 92.67 T
+(w) 316.67 92.67 T
+(, or None*/) 323.9 92.67 T
+(int) 126 79.67 T
+1 F
+(per) 189 79.67 T
+(cent) 203.26 79.67 T
+2 F
+(;) 221.58 79.67 T
+(/* relati) 252 79.67 T
+(v) 285.64 79.67 T
+(e v) 290.97 79.67 T
+(olume, which can range from -100 to 100 inclusi) 303.89 79.67 T
+(v) 518.39 79.67 T
+(e */) 523.72 79.67 T
+(Atom) 126 66.67 T
+1 F
+(name) 189 66.67 T
+2 F
+(;) 212.83 66.67 T
+(/* a bell name, or) 252 66.67 T
+5 12 Q
+-0.6 (NULL) 331.43 66.67 S
+2 11 Q
+( */) 357.83 66.67 T
+3 12 Q
+(T) 190.3 679 T
+(able 9.2 Bell Sounding and Bell Ev) 197.2 679 T
+(ent Generating) 376.46 679 T
+1 F
+(Function called) 108 651 T
+(A) 252 651 T
+(udibleBell) 259.09 651 T
+(Server sounds) 333 658 T
+(a bell) 333 644 T
+(Server sends an) 423 658 T
+(XkbBellNotifyEvent) 423 644 T
+2 11 Q
+(XkbDe) 108 628.67 T
+(viceBell) 139.49 628.67 T
+(On) 252 628.67 T
+(Y) 333 628.67 T
+(es) 339.84 628.67 T
+(Y) 423 628.67 T
+(es) 429.84 628.67 T
+(XkbDe) 108 615.67 T
+(viceBell) 139.49 615.67 T
+(Of) 252 615.67 T
+(f) 263.33 615.67 T
+(No) 333 615.67 T
+(Y) 423 615.67 T
+(es) 429.84 615.67 T
+(XkbBell) 108 602.67 T
+(On) 252 602.67 T
+(Y) 333 602.67 T
+(es) 339.84 602.67 T
+(Y) 423 602.67 T
+(es) 429.84 602.67 T
+(XkbBell) 108 589.67 T
+(Of) 252 589.67 T
+(f) 263.33 589.67 T
+(No) 333 589.67 T
+(Y) 423 589.67 T
+(es) 429.84 589.67 T
+(XkbDe) 108 576.67 T
+(viceBellEv) 139.49 576.67 T
+(ent) 188.21 576.67 T
+(On or Of) 252 576.67 T
+(f) 291.43 576.67 T
+(No) 333 576.67 T
+(Y) 423 576.67 T
+(es) 429.84 576.67 T
+(XkbBellEv) 108 563.67 T
+(ent) 157.34 563.67 T
+(On or Of) 252 563.67 T
+(f) 291.43 563.67 T
+(No) 333 563.67 T
+(Y) 423 563.67 T
+(es) 429.84 563.67 T
+(XkbDe) 108 550.67 T
+(viceF) 139.49 550.67 T
+(orceBell) 163.77 550.67 T
+(On or Of) 252 550.67 T
+(f) 291.43 550.67 T
+(Y) 333 550.67 T
+(es) 339.84 550.67 T
+(No) 423 550.67 T
+(XkbF) 108 537.67 T
+(orceBell) 132.89 537.67 T
+(On or Of) 252 537.67 T
+(f) 291.43 537.67 T
+(Y) 333 537.67 T
+(es) 339.84 537.67 T
+(No) 423 537.67 T
+108 671 522 671 2 L
+V
+0.5 H
+0 Z
+N
+108 637 522 637 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "49" 61
+%%Page: "50" 62
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(50) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(9 Bells) 503.63 744.87 T
+2 12 Q
+(If a compatible keyboard extension isn\325t present in the X server,) 108 712 T
+1 F
+(XkbBell) 419.27 712 T
+2 F
+( calls) 457.26 712 T
+1 F
+(XBell) 485.26 712 T
+2 F
+(with) 514.92 712 T
+(the specified) 108 699 T
+1 F
+(display) 171.98 699 T
+2 F
+( and) 206.65 699 T
+1 F
+(per) 229.98 699 T
+(cent) 245.53 699 T
+2 F
+(, and returns) 265.52 699 T
+5 F
+-0.6 (False) 328.18 699 S
+2 F
+(. Otherwise,) 361.18 699 T
+1 F
+(XkbBell) 422.5 699 T
+2 F
+(calls) 463.49 699 T
+1 F
+(XkbDe) 488.48 699 T
+(vi-) 520.96 699 T
+-0.05 (ceBell) 108 686 P
+2 F
+-0.05 ( with the specified) 137.99 686 P
+1 F
+-0.05 (display) 229.12 686 P
+-0.05 (, window) 263.13 686 P
+-0.05 (, per) 305.54 686 P
+-0.05 (cent,) 327.05 686 P
+2 F
+-0.05 (and) 352.99 686 P
+1 F
+-0.05 (name) 373.27 686 P
+2 F
+-0.05 (, a) 399.27 686 P
+1 F
+-0.05 (de) 413.5 686 P
+-0.05 (vice_spec) 424.65 686 P
+2 F
+-0.05 ( of) 471.3 686 P
+5 F
+-0.1 -0.6 (XkbUseC-) 487.2 686 B
+-0.21 -0.6 (oreKbd) 108 673 B
+2 F
+-0.1 (, a) 147.6 673 P
+1 F
+-0.1 (bell_class) 161.73 673 P
+2 F
+-0.1 (of) 212.64 673 P
+5 F
+-0.21 -0.6 (XkbDfltXIClass) 225.54 673 B
+2 F
+-0.1 (, and a) 317.94 673 P
+1 F
+-0.1 (bell_id) 352.3 673 P
+2 F
+-0.1 (of) 388.54 673 P
+5 F
+-0.21 -0.6 (XkbDfltXIId,) 401.44 673 B
+2 F
+-0.1 ( and returns) 480.64 673 P
+5 F
+-0.6 (True) 108 660 S
+2 F
+(.) 134.4 660 T
+(If you have disabled the audible bell, the server does not ring the system bell, although it) 108 639 T
+(does generate a) 108 626 T
+5 F
+-0.6 (XkbBellNotify) 184.97 626 S
+2 F
+( event.) 270.77 626 T
+(You can call) 108 605 T
+1 F
+(XkbBell) 171.65 605 T
+2 F
+( without first initializing the keyboard extension.) 209.64 605 T
+0 F
+(9.3.2) 72 580 T
+(Generating Named Bell Events) 108 580 T
+2 F
+(Using Xkb, you can also generate a named bell event that does not ring any bell. This) 108 560 T
+(allows you to do things such as generate events when your application starts.) 108 547 T
+(For example, if an audio client listens for these types of bells, it can produce a \322whoosh\323) 108 526 T
+(sound when it receives a named bell event to indicate a client just started. In this manner,) 108 513 T
+(applications can generate start-up feedback and not worry about producing annoying) 108 500 T
+(beeps if an audio server is not running.) 108 487 T
+-0.11 (To cause a bell event for an X input extension device or for the keyboard, without ringing) 108 466 P
+(the corresponding bell, use) 108 453 T
+1 F
+(XkbDeviceBellEvent.) 240.31 453 T
+2 11 Q
+(Bool) 108 432.67 T
+3 F
+(XkbDe) 132.15 432.67 T
+(viceBellEv) 164.98 432.67 T
+(ent) 214.37 432.67 T
+2 F
+(\050) 229.03 432.67 T
+1 F
+(display) 232.7 432.67 T
+(, window) 263.87 432.67 T
+(, de) 302.79 432.67 T
+(vice_spec, bell_class, bell_id, per) 318.51 432.67 T
+(cent, name) 466.58 432.67 T
+2 F
+(\051) 514.23 432.67 T
+(Display *) 126 419.67 T
+1 F
+(display) 189 419.67 T
+2 F
+(;) 220.78 419.67 T
+(/* connection to the X serv) 234 419.67 T
+(er */) 352.68 419.67 T
+(W) 126 406.67 T
+(indo) 135.94 406.67 T
+(w) 155.23 406.67 T
+1 F
+(window) 189 406.67 T
+2 F
+(;) 223.23 406.67 T
+(/* e) 234 406.67 T
+(v) 249.92 406.67 T
+(ent windo) 255.25 406.67 T
+(w) 298.67 406.67 T
+(, or None*/) 305.9 406.67 T
+(unsigned int) 126 393.67 T
+1 F
+(de) 189 393.67 T
+(vice_spec) 199.22 393.67 T
+2 F
+(;) 241.98 393.67 T
+(/* de) 245.03 393.67 T
+(vice ID, or) 266.45 393.67 T
+5 12 Q
+-0.6 (XkbUseCoreKbd) 316.55 393.67 S
+2 11 Q
+( */) 402.35 393.67 T
+(unsigned int) 126 380.67 T
+1 F
+(bell_class;) 189 380.67 T
+2 F
+(/* input e) 236.66 380.67 T
+(xtension bell class for the e) 278.06 380.67 T
+(v) 397.85 380.67 T
+(ent */) 403.18 380.67 T
+(unsigned int) 126 367.67 T
+1 F
+(bell_id) 189 367.67 T
+2 F
+(;) 219.56 367.67 T
+(/* input e) 234 367.67 T
+(xtension bell ID for the e) 275.39 367.67 T
+(v) 385.4 367.67 T
+(ent */) 390.74 367.67 T
+(int) 126 354.67 T
+1 F
+(per) 189 354.67 T
+(cent) 203.26 354.67 T
+2 F
+(;) 221.58 354.67 T
+(/* v) 234 354.67 T
+(olume for the bell, which can range from -100 to 100 inclusi) 250.59 354.67 T
+(v) 516.11 354.67 T
+(e */) 521.44 354.67 T
+(Atom) 126 341.67 T
+1 F
+(name) 189 341.67 T
+2 F
+(;) 212.83 341.67 T
+(/* a bell name, or) 234 341.67 T
+5 12 Q
+-0.6 (NULL) 313.43 341.67 S
+2 11 Q
+( */) 339.83 341.67 T
+2 12 Q
+(If a compatible keyboard extension isn\325t present in the X server,) 108 322 T
+1 F
+(XkbDe) 419.27 322 T
+(viceBellEvent) 451.74 322 T
+2 F
+0 (immediately returns) 108 309 P
+5 F
+-0.01 -0.6 (False) 207.31 309 B
+2 F
+0 (. Otherwise,) 240.31 309 P
+1 F
+0 (XkbDe) 301.62 309 P
+0 (viceBellEvent) 334.1 309 P
+2 F
+0 (causes an) 402.82 309 P
+5 F
+-0.01 -0.6 (XkbBellNotify) 451.45 309 B
+2 F
+-0.15 (event to be sent to all interested clients and returns) 108 296 P
+5 F
+-0.32 -0.6 (True) 352.25 296 B
+2 11 Q
+-0.14 (.) 378.65 296 P
+2 12 Q
+-0.15 (Set) 384.02 296 P
+1 F
+-0.15 (per) 402.21 296 P
+-0.15 (cent) 417.76 296 P
+2 F
+-0.15 ( to be the volume rel-) 437.75 296 P
+(ative to the base volume for the keyboard as described for) 108 283 T
+1 F
+(XBell) 388.93 283 T
+2 F
+(.) 415.6 283 T
+(In addition,) 108 262 T
+1 F
+(XkbDe) 166.33 262 T
+(viceBellEvent) 198.8 262 T
+2 F
+( may generate) 264.78 262 T
+5 F
+-0.6 (Atom) 335.09 262 S
+2 F
+( protocol errors as well as) 361.49 262 T
+5 F
+-0.6 (Xkb-) 488.12 262 S
+-0.6 (BellNotify) 108 249 S
+2 F
+( events. You can call) 174 249 T
+1 F
+(XkbBell) 277.31 249 T
+2 F
+( without first initializing the keyboard exten-) 315.3 249 T
+(sion.) 108 236 T
+-0.22 (As a convenience function, Xkb provides a function to cause a bell event for the keyboard) 108 215 P
+(without ringing the bell:) 108 202 T
+1 F
+(XkbBellEvent.) 227.34 202 T
+2 11 Q
+(Bool) 108 181.67 T
+3 F
+(XkbBellEv) 132.15 181.67 T
+(ent) 183.38 181.67 T
+2 F
+(\050) 198.05 181.67 T
+1 F
+(display) 201.71 181.67 T
+(, window) 232.88 181.67 T
+(, per) 271.8 181.67 T
+(cent, name) 291.56 181.67 T
+2 F
+(\051) 339.21 181.67 T
+(Display *) 126 168.67 T
+1 F
+(display) 189 168.67 T
+2 F
+(;) 220.78 168.67 T
+(/* connection to the X serv) 252 168.67 T
+(er */) 370.68 168.67 T
+(W) 126 155.67 T
+(indo) 135.94 155.67 T
+(w) 155.23 155.67 T
+1 F
+(window) 189 155.67 T
+2 F
+(;) 223.23 155.67 T
+(/* the e) 252 155.67 T
+(v) 284.11 155.67 T
+(ent windo) 289.44 155.67 T
+(w) 332.86 155.67 T
+(, or None */) 340.09 155.67 T
+(int) 126 142.67 T
+1 F
+(per) 189 142.67 T
+(cent) 203.26 142.67 T
+2 F
+(;) 221.58 142.67 T
+(/* relati) 252 142.67 T
+(v) 285.64 142.67 T
+(e v) 290.97 142.67 T
+(olume, which can range from -100 to 100 inclusi) 303.89 142.67 T
+(v) 518.39 142.67 T
+(e */) 523.72 142.67 T
+(Atom) 126 129.67 T
+1 F
+(name) 189 129.67 T
+2 F
+(;) 212.83 129.67 T
+(/* a bell name, or) 252 129.67 T
+5 12 Q
+-0.6 (NULL) 331.43 129.67 S
+2 11 Q
+( */) 357.83 129.67 T
+2 12 Q
+(If a compatible keyboard extension isn\325t present in the X server,) 108 110 T
+1 F
+(XkbBellEvent) 419.27 110 T
+2 F
+( immedi-) 484.58 110 T
+(ately returns) 108 97 T
+5 F
+-0.6 (False) 170.65 97 S
+2 F
+(. Otherwise,) 203.65 97 T
+1 F
+(XkbBellEvent) 264.97 97 T
+2 F
+(calls) 333.29 97 T
+1 F
+( XkbDe) 355.28 97 T
+(viceBellEvent) 390.76 97 T
+2 F
+( with the speci-) 456.73 97 T
+(fied) 108 84 T
+1 F
+(display) 129.66 84 T
+(, window) 163.67 84 T
+(, per) 206.12 84 T
+(cent,) 227.68 84 T
+2 F
+(and) 253.67 84 T
+1 F
+(name) 274 84 T
+2 F
+(, a) 299.99 84 T
+1 F
+(de) 314.32 84 T
+(vice_spec) 325.46 84 T
+2 F
+( of) 372.11 84 T
+5 F
+-0.6 (XkbUseCoreKbd) 388.1 84 S
+2 F
+(, a) 473.91 84 T
+1 F
+(bell_class) 488.23 84 T
+FMENDPAGE
+%%EndPage: "50" 62
+%%Page: "51" 63
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(51) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(9 Bells) 503.63 744.87 T
+2 12 Q
+(of) 108 712 T
+5 F
+-0.6 (XkbDfltXIClass) 121 712 S
+2 F
+(, and a) 213.4 712 T
+1 F
+(bell_id) 248.05 712 T
+2 F
+(of) 284.39 712 T
+5 F
+-0.6 (XkbDfltXIId,) 297.39 712 S
+2 F
+( and returns what) 376.59 712 T
+1 F
+(XkbDe) 462.57 712 T
+(vice-) 495.04 712 T
+(BellEvent) 108 699 T
+2 F
+( returns.) 154.66 699 T
+1 F
+(XkbBellEvent) 108 678 T
+2 F
+( generates a) 173.32 678 T
+5 F
+-0.6 (XkbBellNotify) 232.96 678 S
+2 F
+( event.) 318.76 678 T
+(You can call) 108 657 T
+1 F
+(XkbBellEvent) 171.65 657 T
+2 F
+( without first initializing the keyboard extension.) 236.96 657 T
+0 F
+(9.3.3) 72 632 T
+(For) 108 632 T
+(cing a Ser) 127.09 632 T
+(ver) 184.57 632 T
+(-Generated Bell) 202.34 632 T
+2 F
+-0.24 (To ring the bell on any keyboard, overriding user preference settings for audible bells, use) 108 612 P
+1 F
+(XkbForceDeviceBell) 108 599 T
+2 F
+(.) 207.96 599 T
+2 11 Q
+(Bool) 108 578.67 T
+3 F
+(XkbF) 132.15 578.67 T
+(or) 158.76 578.67 T
+(ceDe) 168.95 578.67 T
+(viceBell) 191.38 578.67 T
+2 F
+(\050) 228.04 578.67 T
+1 F
+(display) 231.71 578.67 T
+(, window) 262.88 578.67 T
+(, de) 301.8 578.67 T
+(vice_spec, bell_class, bell_id, per) 317.52 578.67 T
+(cent) 465.59 578.67 T
+2 F
+(\051) 483.91 578.67 T
+(Display *) 126 565.67 T
+1 F
+(display) 189 565.67 T
+2 F
+(;) 220.78 565.67 T
+(/* connection to the X serv) 252 565.67 T
+(er */) 370.68 565.67 T
+(W) 126 552.67 T
+(indo) 135.94 552.67 T
+(w) 155.23 552.67 T
+1 F
+(window) 189 552.67 T
+2 F
+(;) 223.23 552.67 T
+(/* e) 252 552.67 T
+(v) 267.92 552.67 T
+(ent windo) 273.25 552.67 T
+(w) 316.67 552.67 T
+(, or None */) 323.9 552.67 T
+(unsigned int) 126 539.67 T
+1 F
+(de) 189 539.67 T
+(vice_spec) 199.22 539.67 T
+2 F
+(;) 241.98 539.67 T
+(/* de) 252 539.67 T
+(vice ID, or) 273.42 539.67 T
+5 12 Q
+-0.6 (XkbUseCoreKbd) 323.51 539.67 S
+2 11 Q
+( */) 409.31 539.67 T
+(unsigned int) 126 526.67 T
+1 F
+(bell_class) 189 526.67 T
+2 F
+(;) 233 526.67 T
+(/* input e) 252 526.67 T
+(xtension class of the bell to be rung */) 293.39 526.67 T
+(unsigned int) 126 513.67 T
+1 F
+(bell_id) 189 513.67 T
+2 F
+(;) 219.56 513.67 T
+(/* input e) 252 513.67 T
+(xtension ID of the bell to be rung */) 293.39 513.67 T
+(int) 126 500.67 T
+1 F
+(per) 189 500.67 T
+(cent) 203.26 500.67 T
+2 F
+(;) 221.58 500.67 T
+(/* relati) 252 500.67 T
+(v) 285.64 500.67 T
+(e v) 290.97 500.67 T
+(olume, which can range from -100 to 100 inclusi) 303.89 500.67 T
+(v) 518.39 500.67 T
+(e */) 523.72 500.67 T
+2 12 Q
+(If a compatible keyboard extension isn\325t present in the X server,) 108 481 T
+1 F
+(XkbF) 419.27 481 T
+(or) 444 481 T
+(ceDe) 454.22 481 T
+(viceBell) 478.69 481 T
+2 F
+-0.43 (immediately returns) 108 468 P
+5 F
+-0.94 -0.6 (False) 206.47 468 B
+2 F
+-0.43 (. Otherwise,) 239.47 468 P
+1 F
+-0.43 (XkbF) 299.94 468 P
+-0.43 (or) 324.67 468 P
+-0.43 (ceDe) 334.89 468 P
+-0.43 (viceBell) 359.36 468 P
+2 F
+-0.43 (rings the bell as specified for) 400.59 468 P
+-0.39 (the display and keyboard device and returns) 108 455 P
+5 F
+-0.86 -0.6 (True) 319.56 455 B
+2 F
+-0.39 (. Set) 345.96 455 P
+1 F
+-0.39 (per) 369.52 455 P
+-0.39 (cent) 385.08 455 P
+2 F
+-0.39 ( to be the volume relative to) 405.07 455 P
+(the base volume for the keyboard as described for) 108 442 T
+1 F
+(XBell) 350.27 442 T
+2 F
+(. There is no) 376.93 442 T
+1 F
+(name) 439.92 442 T
+2 F
+( parameter) 465.91 442 T
+(because) 108 429 T
+1 F
+(XkbF) 148.98 429 T
+(or) 173.71 429 T
+(ceDe) 183.94 429 T
+(viceBell) 208.4 429 T
+2 F
+(does not cause an) 250.06 429 T
+5 F
+-0.6 (XkbBellNotify) 337.37 429 S
+2 F
+( event.) 423.17 429 T
+(You can call) 108 408 T
+1 F
+(XkbBell) 171.65 408 T
+2 F
+( without first initializing the keyboard extension.) 209.64 408 T
+(To ring the bell on the default keyboard, overriding user preference settings for audible) 108 387 T
+(bells, use) 108 374 T
+1 F
+(XkbF) 155.66 374 T
+(or) 180.4 374 T
+(ceBell) 190.62 374 T
+2 F
+(.) 220.61 374 T
+2 11 Q
+(Bool) 108 353.67 T
+3 F
+(XkbF) 132.15 353.67 T
+(or) 158.76 353.67 T
+(ceBell) 168.95 353.67 T
+2 F
+(\050) 197.06 353.67 T
+1 F
+(display) 200.72 353.67 T
+(, per) 231.89 353.67 T
+(cent\051) 251.65 353.67 T
+2 F
+(Display *) 126 340.67 T
+1 F
+(display) 189 340.67 T
+2 F
+(;) 220.78 340.67 T
+(/* connection to the X serv) 234 340.67 T
+(er */) 352.68 340.67 T
+(int) 126 327.67 T
+1 F
+(per) 189 327.67 T
+(cent) 203.26 327.67 T
+2 F
+(;) 221.58 327.67 T
+(/* v) 234 327.67 T
+(olume for the bell, which can range from -100 to 100 inclusi) 250.59 327.67 T
+(v) 516.11 327.67 T
+(e */) 521.44 327.67 T
+2 12 Q
+-0.13 (If a compatible keyboard extension isn\325t present in the X server,) 108 308 P
+1 F
+-0.13 (XkbF) 417.8 308 P
+-0.13 (or) 442.53 308 P
+-0.13 (ceBell) 452.75 308 P
+2 F
+-0.13 ( calls) 482.74 308 P
+1 F
+-0.13 (XBell) 510.47 308 P
+2 F
+(with the specified) 108 295 T
+1 F
+(display) 196.32 295 T
+2 F
+( and) 230.99 295 T
+1 F
+(per) 254.32 295 T
+(cent) 269.87 295 T
+2 F
+( and returns) 289.86 295 T
+5 F
+-0.6 (False) 349.51 295 S
+2 F
+(. Otherwise,) 382.51 295 T
+1 F
+(XkbF) 443.83 295 T
+(or) 468.56 295 T
+(ceBell) 478.79 295 T
+2 F
+(calls) 511.78 295 T
+1 F
+(XkbF) 108 282 T
+(or) 132.73 282 T
+(ceDe) 142.96 282 T
+(viceBell) 167.42 282 T
+2 F
+( with the specified) 206.08 282 T
+1 F
+(display) 297.4 282 T
+2 F
+(and) 335.06 282 T
+1 F
+( per) 352.39 282 T
+(cent) 370.94 282 T
+2 F
+(,) 390.94 282 T
+1 F
+(de) 396.94 282 T
+(vice_spec) 408.08 282 T
+2 F
+( =) 454.73 282 T
+5 F
+-0.6 (XkbUseC-) 464.5 282 S
+-0.7 -0.6 (oreKbd) 108 269 B
+2 F
+-0.32 (,) 147.6 269 P
+1 F
+-0.32 (bell_class) 153.28 269 P
+2 F
+-0.32 (=) 203.96 269 P
+5 F
+-0.7 -0.6 (XkbDfltXIClass) 213.41 269 B
+2 F
+-0.32 (,) 305.81 269 P
+1 F
+-0.32 (bell_id) 311.49 269 P
+2 F
+-0.32 (=) 347.51 269 P
+5 F
+-0.7 -0.6 (XkbDfltXIId,) 356.96 269 B
+1 F
+-0.32 (window) 438.84 269 P
+2 F
+-0.32 ( = None, and) 476.19 269 P
+1 F
+(name) 108 256 T
+2 F
+( =) 133.99 256 T
+5 F
+-0.6 (NULL) 146.76 256 S
+2 F
+(, and returns what) 173.16 256 T
+1 F
+( XkbF) 259.14 256 T
+(or) 286.87 256 T
+(ceDe) 297.1 256 T
+(viceBell) 321.56 256 T
+2 F
+( returns.) 360.22 256 T
+1 F
+(XkbF) 108 235 T
+(or) 132.73 235 T
+(ceBell) 142.96 235 T
+2 F
+(does not cause an) 175.94 235 T
+5 F
+-0.6 (XkbBellNotify) 263.26 235 S
+2 F
+( event.) 349.06 235 T
+(You can call) 108 214 T
+1 F
+(XkbBell) 171.65 214 T
+2 F
+( without first initializing the keyboard extension.) 209.64 214 T
+0 F
+(9.4) 72 189 T
+(Detecting Bells) 108 189 T
+2 F
+(Xkb generates) 108 169 T
+5 F
+-0.6 (XkbBellNotify) 179.98 169 S
+2 F
+( events for all bells except for those resulting from calls) 265.78 169 T
+(to) 108 156 T
+1 F
+(XkbF) 120.34 156 T
+(or) 145.07 156 T
+(ceDe) 155.29 156 T
+(viceBell) 179.76 156 T
+2 F
+( and) 218.41 156 T
+1 F
+(XkbF) 241.74 156 T
+(or) 266.47 156 T
+(ceBell) 276.7 156 T
+2 F
+(. To receive) 306.68 156 T
+5 F
+-0.6 (XkbBellNotify) 366.66 156 S
+2 F
+( events under all) 452.46 156 T
+(possible conditions, pass) 108 143 T
+5 F
+-0.6 (XkbBellNotifyMask) 230 143 S
+2 F
+( in both the) 342.21 143 T
+1 F
+(bits_to_c) 399.54 143 T
+(hang) 443.37 143 T
+(e) 467.25 143 T
+2 F
+(and) 475.57 143 T
+1 F
+(values_for_bits) 108 130 T
+2 F
+( parameters to) 182 130 T
+1 F
+(XkbSelectEvents) 252.98 130 T
+2 F
+( \050see section 4.3\051.) 332.29 130 T
+(The) 108 109 T
+5 F
+(XkbBellNotify) 129.66 109 T
+2 F
+( event has no event details. It is either selected or it is not. How-) 223.26 109 T
+(ever, you can call) 108 96 T
+1 F
+(XkbSelectEventDetails) 195.64 96 T
+2 F
+( using) 304.94 96 T
+5 F
+-0.6 (XkbBellNotify) 336.95 96 S
+2 F
+( as the) 422.75 96 T
+1 F
+(e) 456.41 96 T
+(vent_type) 461.56 96 T
+2 F
+( and) 507.54 96 T
+(specifying) 108 83 T
+5 F
+-0.6 (XkbAllBellNotifyMask) 160.99 83 S
+2 F
+( in) 292.99 83 T
+1 F
+(bits_to_c) 308.33 83 T
+(hang) 352.15 83 T
+(e) 376.04 83 T
+2 F
+( and) 381.36 83 T
+1 F
+(values_for_bits.) 404.69 83 T
+2 F
+( This has) 481.7 83 T
+(the same effect as a call to) 108 70 T
+1 F
+(XkbSelectEvents) 237.62 70 T
+2 F
+(.) 316.93 70 T
+FMENDPAGE
+%%EndPage: "51" 63
+%%Page: "52" 64
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(52) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(9 Bells) 503.63 744.87 T
+2 12 Q
+(The structure for the) 108 712 T
+5 F
+-0.6 (XkbBellNotify) 209.3 712 S
+2 F
+( event type contains:) 295.11 712 T
+2 11 Q
+(typedef struct _XkbBellNotify {) 126 691.67 T
+(int) 144 678.67 T
+(type;) 216 678.67 T
+(/* Xkb e) 279 678.67 T
+(xtension base e) 316.72 678.67 T
+(v) 383.65 678.67 T
+(ent code */) 388.99 678.67 T
+(unsigned long) 144 665.67 T
+(serial;) 216 665.67 T
+(/* X serv) 279 665.67 T
+(er serial number for e) 319.16 665.67 T
+(v) 413.57 665.67 T
+(ent */) 418.91 665.67 T
+(Bool) 144 652.67 T
+(send_e) 216 652.67 T
+(v) 246.27 652.67 T
+(ent;) 251.61 652.67 T
+(/*) 279 652.67 T
+5 12 Q
+-0.6 (True) 290.31 652.67 S
+2 11 Q
+( => synthetically generated */) 316.71 652.67 T
+(Display *) 144 639.67 T
+(display;) 216 639.67 T
+(/* serv) 279 639.67 T
+(er connection where e) 308.47 639.67 T
+(v) 405.02 639.67 T
+(ent generated */) 410.35 639.67 T
+(T) 144 626.67 T
+(ime) 150.34 626.67 T
+(time;) 216 626.67 T
+(/* serv) 279 626.67 T
+(er time when e) 308.47 626.67 T
+(v) 373.26 626.67 T
+(ent generated */) 378.59 626.67 T
+(int) 144 613.67 T
+(xkb_type;) 216 613.67 T
+(/*) 279 613.67 T
+5 F
+-0.33 (XkbBellNotify) 290.31 613.67 S
+2 F
+( */) 371.82 613.67 T
+(unsigned int) 144 600.67 T
+(de) 216 600.67 T
+(vice;) 226.11 600.67 T
+(/* Xkb de) 279 600.67 T
+(vice ID, will not be) 322.11 600.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 410.1 600.67 S
+2 F
+( */) 491.61 600.67 T
+(int) 144 587.67 T
+(percent;) 216 587.67 T
+(/* requested v) 279 587.67 T
+(olume as % of max */) 340.49 587.67 T
+(int) 144 574.67 T
+(pitch;) 216 574.67 T
+(/* requested pitch in Hz */) 279 574.67 T
+(int) 144 561.67 T
+(duration;) 216 561.67 T
+(/* requested duration in microseconds */) 279 561.67 T
+(unsigned int) 144 548.67 T
+(bell_class;) 216 548.67 T
+(/* X input e) 279 548.67 T
+(xtension feedback class */) 331.08 548.67 T
+(unsigned int) 144 535.67 T
+(bell_id;) 216 535.67 T
+(/* X input e) 279 535.67 T
+(xtension feedback ID */) 331.08 535.67 T
+(Atom) 144 522.67 T
+(name;) 216 522.67 T
+(/* \322name\323 of requested bell */) 279 522.67 T
+(W) 144 509.67 T
+(indo) 153.94 509.67 T
+(w) 173.23 509.67 T
+(windo) 216 509.67 T
+(w;) 243.23 509.67 T
+(/* windo) 279 509.67 T
+(w associated with e) 317.53 509.67 T
+(v) 403.1 509.67 T
+(ent */) 408.44 509.67 T
+(Bool) 144 496.67 T
+(e) 216 496.67 T
+(v) 220.61 496.67 T
+(ent_only;) 225.94 496.67 T
+(/*) 279 496.67 T
+5 12 Q
+-0.6 (False) 290.31 496.67 S
+2 11 Q
+( -> the serv) 323.31 496.67 T
+(er did not produce a beep */) 373.03 496.67 T
+(}) 126 483.67 T
+3 F
+(XkbBellNotifyEv) 134.03 483.67 T
+(ent) 214.59 483.67 T
+2 F
+(;) 229.26 483.67 T
+2 12 Q
+-0.08 (If your application needs to generate visual bell feedback on the screen when it receives a) 108 464 P
+(bell event, use the window ID in the) 108 451 T
+5 F
+-0.6 (XkbBellNotifyEvent) 284.98 451 S
+2 F
+(, if present.) 403.78 451 T
+FMENDPAGE
+%%EndPage: "52" 64
+%%Page: "53" 65
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(53) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+0 14 Q
+(10) 72 710.67 T
+(K) 108 710.67 T
+(e) 117.9 710.67 T
+(yboar) 125.47 710.67 T
+(d Contr) 163.31 710.67 T
+(ols) 212.8 710.67 T
+2 12 Q
+(The Xkb extension is composed of two parts: a server extension, and a client-side X) 108 688 T
+(library extension. This chapter discusses functions used to modify controls effecting the) 108 675 T
+(behavior of the server portion of the Xkb extension. Chapter 11 discusses functions used) 108 662 T
+-0.46 (to modify controls that affect only the behavior of the client portion of the extension; those) 108 649 P
+(controls are known as Library Controls.) 108 636 T
+(Xkb contains control features that affect the entire keyboard, known as global keyboard) 108 615 T
+-0.11 (controls. Some of the controls may be selectively enabled and disabled; these controls are) 108 602 P
+(known as the) 108 589 T
+1 F
+(Boolean Contr) 174.32 589 T
+(ols) 244.79 589 T
+2 F
+(. Boolean Controls can be turned on or off under program) 258.79 589 T
+(control and can also be automatically set to an on or off condition when a client program) 108 576 T
+-0.66 (exits. The remaining controls, known as the) 108 563 P
+1 F
+-0.66 (Non-Boolean Contr) 316.37 563 P
+-0.66 (ols) 410.18 563 P
+2 F
+-0.66 (, are always active. The) 424.18 563 P
+5 F
+-0.11 -0.6 (XkbControlsRec) 108 550 B
+2 F
+-0.05 ( structure describes the current state of most of the global controls and) 200.4 550 P
+(the attributes effecting the behavior of each of these Xkb features. This chapter describes) 108 537 T
+(the Xkb controls and how to manipulate them.) 108 524 T
+-0.38 (There are two possible components for each of the Boolean Controls: attributes describing) 108 503 P
+(how the control should work, and a state describing whether the behavior as a whole is) 108 490 T
+(enabled or disabled. The attributes and state for most of these controls are held in the) 108 477 T
+5 F
+-0.6 (XkbControlsRec) 108 464 S
+2 F
+( structure \050see section 10.8\051.) 200.4 464 T
+(You can manipulate the Xkb controls individually, via convenience functions, or as a) 108 443 T
+-0.13 (whole. To treat them as a group, modify an) 108 430 P
+5 F
+-0.29 -0.6 (XkbControlsRec) 317.1 430 B
+2 F
+-0.13 ( structure to describe all of) 409.5 430 P
+(the changes to be made, and then pass that structure and appropriate flags to an Xkb) 108 417 T
+(library function, or use a) 108 404 T
+5 F
+-0.6 (XkbControlsChangesRec) 229.31 404 S
+2 F
+( \050see section 10.10.1\051 to reduce net-) 367.91 404 T
+(work traffic. When using a convenience function to manipulate one control individually,) 108 391 T
+(you do not use an) 108 378 T
+5 F
+-0.6 (XkbControlsRec) 195.66 378 S
+2 F
+( structure directly.) 288.06 378 T
+(The Xkb controls are grouped as shown in Table 10.1.) 108 357 T
+3 F
+(T) 241.14 337 T
+(able 10.1 Xkb K) 248.04 337 T
+(eyboard Contr) 333.42 337 T
+(ols) 408.86 337 T
+1 F
+(T) 109 317 T
+(ype of Contr) 114.78 317 T
+(ol) 174.24 317 T
+(Contr) 343 317 T
+(ol Name) 370.47 317 T
+(Boolean Contr) 451 317 T
+(ol?) 521.46 317 T
+2 11 Q
+(Controls for enabling and disabling other controls) 109 302.67 T
+(EnabledControls) 343 302.67 T
+(No) 451 302.67 T
+(AutoReset) 343 288.67 T
+(No) 451 288.67 T
+(Control for bell beha) 109 274.67 T
+(vior) 200.74 274.67 T
+(AudibleBell) 343 274.67 T
+(Boolean) 451 274.67 T
+(Controls for repeat k) 109 260.67 T
+(e) 200.23 260.67 T
+(y beha) 204.95 260.67 T
+(vior) 233.75 260.67 T
+(PerK) 343 260.67 T
+(e) 365.33 260.67 T
+(yRepeat) 370.05 260.67 T
+(No) 451 260.67 T
+(RepeatK) 343 246.67 T
+(e) 381.21 246.67 T
+(ys) 385.93 246.67 T
+(Boolean) 451 246.67 T
+(DetectableAutorepeat) 343 232.67 T
+(Boolean) 451 232.67 T
+(Controls for k) 109 218.67 T
+(e) 170.61 218.67 T
+(yboard o) 175.33 218.67 T
+(v) 213.96 218.67 T
+(erlays) 219.3 218.67 T
+(Ov) 343 218.67 T
+(erlay1) 356.28 218.67 T
+(Boolean) 451 218.67 T
+(Ov) 343 204.67 T
+(erlay2) 356.28 204.67 T
+(Boolean) 451 204.67 T
+(Controls for using the mouse from the k) 109 190.67 T
+(e) 285.19 190.67 T
+(yboard) 289.91 190.67 T
+(MouseK) 343 190.67 T
+(e) 380.61 190.67 T
+(ys) 385.33 190.67 T
+(Boolean) 451 190.67 T
+(MouseK) 343 176.67 T
+(e) 380.61 176.67 T
+(ysAccel) 385.33 176.67 T
+(Boolean) 451 176.67 T
+(Controls for better k) 109 162.67 T
+(e) 198.41 162.67 T
+(yboard access by) 203.13 162.67 T
+(AccessXFeedback) 343 162.67 T
+(Boolean) 451 162.67 T
+(ph) 109 148.67 T
+(ysically impaired persons) 119.94 148.67 T
+(AccessXK) 343 148.67 T
+(e) 389.76 148.67 T
+(ys) 394.48 148.67 T
+(Boolean) 451 148.67 T
+(AccessXT) 343 134.67 T
+(imeout) 388.43 134.67 T
+(Boolean) 451 134.67 T
+(BounceK) 343 120.67 T
+(e) 384.27 120.67 T
+(ys) 388.99 120.67 T
+(Boolean) 451 120.67 T
+(Slo) 343 106.67 T
+(wK) 357.4 106.67 T
+(e) 373.01 106.67 T
+(ys) 377.73 106.67 T
+(Boolean) 451 106.67 T
+(Stick) 343 92.67 T
+(yK) 365.45 92.67 T
+(e) 378.62 92.67 T
+(ys) 383.34 92.67 T
+(Boolean) 451 92.67 T
+(Controls for general k) 109 78.67 T
+(e) 205.73 78.67 T
+(yboard mapping) 210.45 78.67 T
+(GroupsWrap) 343 78.67 T
+(No) 451 78.67 T
+108 329 542.25 329 2 L
+V
+0.5 H
+0 Z
+N
+108 312 542.25 312 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "53" 65
+%%Page: "54" 66
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(54) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(The individual categories and controls are described first, together with functions for) 108 557 T
+(manipulating them. A description of the) 108 544 T
+5 F
+-0.6 (XkbControlsRec) 302.99 544 S
+2 F
+( structure and the general) 395.39 544 T
+(functions for dealing with all of the controls at once follow at the end of the chapter.) 108 531 T
+0 F
+(10.1) 72 506 T
+(Contr) 108 506 T
+(ols that Enab) 139.75 506 T
+(le and Disab) 214.98 506 T
+(le Other Contr) 285.55 506 T
+(ols) 365.99 506 T
+2 F
+(Enable and disable the boolean controls under program control by using the) 108 486 T
+5 F
+-0.6 (Enabled-) 474.61 486 S
+-0.6 (Controls) 108 473 S
+2 F
+( control; enable and disable them upon program exit by configuring the) 160.8 473 T
+5 F
+-0.6 (AutoReset) 108 460 S
+2 F
+( control.) 167.4 460 T
+0 F
+(10.1.1) 72 435 T
+(The Enab) 108 435 T
+(ledContr) 161.89 435 T
+(ols Contr) 210.98 435 T
+(ol) 263.41 435 T
+2 F
+(The) 108 415 T
+5 F
+-0.6 (EnabledControls) 129.66 415 S
+2 F
+( control is a bit mask where each bit that is turned on means the) 228.66 415 T
+(corresponding control is enabled, and when turned off, disabled. It corresponds to the) 108 402 T
+1 F
+(enabled_ctrls) 108 389 T
+2 F
+( field of an) 173.33 389 T
+5 F
+-0.6 (XkbControlsRec) 228.65 389 S
+2 F
+( structure \050see section 10.8\051. The bits describ-) 321.05 389 T
+(ing which controls are turned on or off are defined in Table 10.7.) 108 376 T
+(Use) 108 355 T
+1 F
+(XkbChang) 129.66 355 T
+(eEnabledContr) 180.2 355 T
+(ols) 253 355 T
+2 F
+( to manipulate the) 267 355 T
+5 F
+-0.6 (EnabledControls) 356.33 355 S
+2 F
+( control.) 455.33 355 T
+2 11 Q
+(Bool) 108 334.67 T
+3 F
+(XkbChangeEnabledContr) 132.15 334.67 T
+(ols) 255.41 334.67 T
+2 F
+(\050) 268.25 334.67 T
+1 F
+(dpy) 271.91 334.67 T
+2 F
+(,) 287.08 334.67 T
+1 F
+(de) 292.58 334.67 T
+(vice_spec) 302.8 334.67 T
+2 F
+(,) 345.56 334.67 T
+1 F
+(mask) 351.06 334.67 T
+2 F
+(,) 373.66 334.67 T
+1 F
+( values) 376.41 334.67 T
+2 F
+(\051) 407.27 334.67 T
+(Display *) 126 321.67 T
+1 F
+(dpy) 234 321.67 T
+2 F
+(;) 249.88 321.67 T
+(/* connection to X serv) 306 321.67 T
+(er */) 408.49 321.67 T
+(unsigned int) 126 308.67 T
+1 F
+(de) 234 308.67 T
+(vice_spec) 244.22 308.67 T
+2 F
+(;) 286.98 308.67 T
+(/* k) 306 308.67 T
+(e) 322.7 308.67 T
+(yboard de) 327.42 308.67 T
+(vice to modify */) 370.82 308.67 T
+(unsigned int) 126 295.67 T
+1 F
+(mask) 234 295.67 T
+2 F
+(;) 256.61 295.67 T
+(/* 1 bit -> controls to enable / disable */) 306 295.67 T
+(unsigned int) 126 282.67 T
+1 F
+(values) 234 282.67 T
+2 F
+(;) 262.11 282.67 T
+(/* 1 bit => enable, 0 bit => disable */) 306 282.67 T
+2 12 Q
+(The) 108 263 T
+1 F
+(mask) 129.66 263 T
+2 F
+( parameter specifies the boolean controls to be enabled or disabled, and the) 154.32 263 T
+1 F
+(val-) 517.57 263 T
+(ues) 108 250 T
+2 F
+( mask specifies the new state for those controls. Valid values for both of these masks) 124 250 T
+(are composed of a bitwise inclusive OR of bits taken from the set of mask bits in Table) 108 237 T
+(10.7, using only those masks with \322ok\323 in the) 108 224 T
+1 F
+(enabled_ctrls) 329.66 224 T
+2 F
+( column.) 394.99 224 T
+-0.18 (If the X server does not support a compatible version of Xkb or the Xkb extension has not) 108 203 P
+(been properly initialized,) 108 190 T
+1 F
+(XkbChang) 231.31 190 T
+(eEnabledContr) 281.86 190 T
+(ols) 354.65 190 T
+2 F
+( returns) 368.65 190 T
+5 F
+-0.6 (False) 407.98 190 S
+2 F
+(; otherwise, it sends) 440.98 190 T
+(the request to the X server and returns) 108 177 T
+5 F
+-0.6 (True) 293.95 177 S
+2 F
+(.) 320.35 177 T
+(Note that the) 108 156 T
+5 F
+-0.6 (EnabledControls) 172.99 156 S
+2 F
+( control only enables and disables controls; it does not) 271.99 156 T
+-0.13 (configure them. Some controls, such as the) 108 143 P
+5 F
+-0.28 -0.6 (AudibleBell) 316.74 143 B
+2 F
+-0.13 ( control, have no configuration) 389.34 143 P
+(attributes and are therefore manipulated solely by enabling and disabling them. Others,) 108 130 T
+(however, have additional attributes to configure their behavior. For example, the) 108 117 T
+5 F
+-0.6 (RepeatControl) 108 104 S
+2 F
+( control uses) 193.8 104 T
+1 F
+(repeat_delay) 257.46 104 T
+2 F
+( and) 320.11 104 T
+1 F
+(repeat_interval) 343.44 104 T
+2 F
+( fields to describe the) 417.43 104 T
+(timing behavior of keys that repeat. The) 108 91 T
+5 F
+-0.6 (RepeatControl) 303.3 91 S
+2 F
+( behavior is turned on or off) 389.1 91 T
+2 11 Q
+(IgnoreGroupLock) 343 677.67 T
+(Boolean) 451 677.67 T
+(IgnoreLockMods) 343 663.67 T
+(No) 451 663.67 T
+(InternalMods) 343 649.67 T
+(No) 451 649.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(Miscellaneous per) 109 635.67 T
+(-client controls) 189.12 635.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(GrabsUseXKBState) 343 635.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(Boolean) 451 635.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(LookupStateWhenGrab) 343 621.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(bed) 343 608.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(Boolean) 451 621.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(SendEv) 343 594.67 T
+(entUsesXKBSta) 377.06 594.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(te) 343 581.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(Boolean) 451 594.67 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+3 12 Q
+(T) 241.14 712 T
+(able 10.1 Xkb K) 248.04 712 T
+(eyboard Contr) 333.42 712 T
+(ols) 408.86 712 T
+1 F
+(T) 109 692 T
+(ype of Contr) 114.78 692 T
+(ol) 174.24 692 T
+(Contr) 343 692 T
+(ol Name) 370.47 692 T
+(Boolean Contr) 451 692 T
+(ol?) 521.46 692 T
+108 704 542.25 704 2 L
+V
+0.5 H
+0 Z
+N
+108 687 542.25 687 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "54" 66
+%%Page: "55" 67
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(55) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(depending on the value of the) 108 712 T
+5 F
+-0.6 (XkbRepeatKeysMask) 253.31 712 S
+2 F
+( bit, but you must use other means,) 365.51 712 T
+(as described in this chapter, to configure its behavior in detail.) 108 699 T
+0 F
+(10.1.2) 72 674 T
+(The A) 108 674 T
+(utoReset Contr) 140.98 674 T
+(ol) 227.4 674 T
+2 F
+(You can configure the boolean controls to automatically be enabled or disabled when a) 108 654 T
+-0.18 (program exits. This capability is controlled via two masks maintained in the X server on a) 108 641 P
+(per-client basis. There is no client-side Xkb data structure corresponding to these masks.) 108 628 T
+(Whenever the client exits for any reason, any boolean controls specified in the) 108 615 T
+1 F
+(auto-r) 487.25 615 T
+(eset) 516.8 615 T
+(mask) 108 602 T
+2 F
+( are set to the corresponding value from the) 132.66 602 T
+1 F
+(auto-r) 344.28 602 T
+(eset values) 373.84 602 T
+2 F
+( mask. This makes it) 426.16 602 T
+-0.3 (possible for clients to \322clean up after themselves\323 automatically, even if abnormally termi-) 108 589 P
+(nated. The bits used in the masks correspond to the) 108 576 T
+5 F
+-0.6 (EnabledControls) 356.3 576 S
+2 F
+( control bits.) 455.31 576 T
+(For example, a client that replaces the keyboard bell with some other audible cue might) 108 555 T
+(want to turn off the) 108 542 T
+5 F
+-0.6 (AudibleBell) 203.65 542 S
+2 F
+( control to prevent the server from also generating a) 276.25 542 T
+-0.43 (sound and avoid cacophony. If the client were to exit without resetting the) 108 529 P
+5 F
+-0.94 -0.6 (AudibleBell) 461.74 529 B
+2 F
+-0.01 (control, the user would be left without any feedback at all. Setting) 108 516 P
+5 F
+-0.03 -0.6 (AudibleBell) 427.77 516 B
+2 F
+-0.01 ( in both) 500.37 516 P
+(the auto-reset mask and auto-reset values guarantees that the audible bell will be turned) 108 503 T
+(back on when the client exits.) 108 490 T
+(To get the current values of the auto-reset controls, use) 108 469 T
+1 F
+(XkbGetA) 374.94 469 T
+(utoResetContr) 418.02 469 T
+(ols) 486.82 469 T
+2 F
+(.) 500.82 469 T
+2 11 Q
+(Bool) 108 448.67 T
+3 F
+(XkbGetA) 132.15 448.67 T
+(utoResetContr) 176.82 448.67 T
+(ols) 245.65 448.67 T
+2 F
+(\050) 258.49 448.67 T
+1 F
+(dpy) 262.15 448.67 T
+2 F
+(,) 277.32 448.67 T
+1 F
+(auto_ctrls) 282.82 448.67 T
+2 F
+(,) 327.44 448.67 T
+1 F
+(auto_values) 332.94 448.67 T
+2 F
+(\051) 386.1 448.67 T
+(Display *) 126 435.67 T
+1 F
+(dpy) 234 435.67 T
+2 F
+(;) 249.88 435.67 T
+(/* connection to X serv) 306 435.67 T
+(er */) 408.49 435.67 T
+(unsigned int *) 126 422.67 T
+1 F
+(auto_ctrls) 234 422.67 T
+2 F
+(;) 278.62 422.67 T
+(/* speci\336es which bits in) 306 422.67 T
+1 F
+(auto_values) 417.53 422.67 T
+2 F
+( are rele) 470.69 422.67 T
+(v) 505.84 422.67 T
+(ant */) 511.06 422.67 T
+(unsigned int *) 126 409.67 T
+1 F
+(auto_values) 234 409.67 T
+2 F
+(;) 287.16 409.67 T
+-0.06 (/* 1 bit => corresponding control has auto-reset on */) 306 409.67 P
+1 12 Q
+(XkbGetA) 108 390 T
+(utoResetContr) 151.08 390 T
+(ols) 219.88 390 T
+2 F
+( backfills) 233.88 390 T
+1 F
+(auto_ctrls) 281.21 390 T
+2 F
+( and) 329.88 390 T
+1 F
+(auto_values) 353.21 390 T
+2 F
+( with the) 411.2 390 T
+5 F
+-0.6 (AutoReset) 456.2 390 S
+2 F
+( con-) 515.6 390 T
+-0.15 (trol attributes for this particular client. It returns) 108 377 P
+5 F
+-0.34 -0.6 (True) 339.73 377 B
+2 F
+-0.15 ( if successful, and) 366.13 377 P
+5 F
+-0.34 -0.6 (False) 454.5 377 B
+2 F
+-0.15 ( otherwise.) 487.5 377 P
+(To change the current values of the) 108 356 T
+5 F
+-0.6 (AutoReset) 280.28 356 S
+2 F
+( control attributes, use) 339.68 356 T
+1 F
+(XkbSetA) 449.34 356 T
+(utoReset-) 489.76 356 T
+(Contr) 108 343 T
+(ols.) 135.47 343 T
+2 11 Q
+(Bool) 108 322.67 T
+3 F
+(XkbSetA) 132.15 322.67 T
+(utoResetContr) 174.37 322.67 T
+(ols) 243.21 322.67 T
+2 F
+(\050) 256.05 322.67 T
+1 F
+(dpy) 259.71 322.67 T
+2 F
+(,) 274.88 322.67 T
+1 F
+(c) 280.38 322.67 T
+(hang) 285.1 322.67 T
+(es) 306.99 322.67 T
+2 F
+(,) 316.15 322.67 T
+1 F
+( auto_ctrls) 318.9 322.67 T
+2 F
+(,) 366.27 322.67 T
+1 F
+(auto_values) 371.77 322.67 T
+2 F
+(\051) 424.93 322.67 T
+(Display *) 126 309.67 T
+1 F
+(dpy) 234 309.67 T
+2 F
+(;) 249.88 309.67 T
+(/* connection to X serv) 306 309.67 T
+(er */) 408.49 309.67 T
+(unsigned int) 126 296.67 T
+1 F
+(c) 234 296.67 T
+(hang) 238.72 296.67 T
+(es) 260.61 296.67 T
+2 F
+(;) 269.77 296.67 T
+(/* controls for which to change auto-reset v) 306 296.67 T
+(alues */) 497.27 296.67 T
+(unsigned int *) 126 283.67 T
+1 F
+(auto_ctrls) 234 283.67 T
+2 F
+(;) 278.62 283.67 T
+(/* controls from changes that should auto reset */) 306 283.67 T
+(unsigned int *) 126 270.67 T
+1 F
+(auto_values) 234 270.67 T
+2 F
+(;) 287.16 270.67 T
+(/* 1 bit => auto-reset on */) 306 270.67 T
+1 12 Q
+(XkbSetA) 108 251 T
+(utoResetContr) 148.42 251 T
+(ols) 217.21 251 T
+2 F
+( changes the auto-reset status and associated auto-reset values) 231.22 251 T
+(for the controls selected by) 108 238 T
+1 F
+(c) 240.97 238 T
+(hang) 246.12 238 T
+(es) 270 238 T
+2 F
+(. For any control selected by) 280 238 T
+1 F
+(c) 419.64 238 T
+(hang) 424.79 238 T
+(es) 448.67 238 T
+2 F
+(, if the corre-) 458.66 238 T
+(sponding bit is set in) 108 225 T
+1 F
+(auto_ctrls) 210.35 225 T
+2 F
+(, the control is configured to auto-reset when the client) 259.02 225 T
+-0.33 (exits. If the corresponding bit in) 108 212 P
+1 F
+-0.33 (auto_values) 263 212 P
+2 F
+-0.33 ( is on, the control is turned on when the client) 320.99 212 P
+(exits; if zero, the control is turned off when the client exits. For any control selected by) 108 199 T
+1 F
+(c) 108 186 T
+(hang) 113.15 186 T
+(es) 137.03 186 T
+2 F
+(, if the corresponding bit is not set in) 147.02 186 T
+1 F
+(auto_ctrls) 326.35 186 T
+2 F
+(, the control is configured to not) 375.02 186 T
+(reset when the client exits. For example:) 108 173 T
+(To leave the auto-reset controls for) 108 152 T
+5 F
+-0.6 (StickyKeys) 279.29 152 S
+2 F
+( the way they are:) 345.29 152 T
+2 11 Q
+(ok = XkbSetAutoResetControls\050dp) 144 131.67 T
+(y) 298.59 131.67 T
+(, 0, 0, 0\051;) 303.38 131.67 T
+2 12 Q
+(To change the auto-reset controls so that) 108 112 T
+5 F
+-0.6 (StickyKeys) 305.63 112 S
+2 F
+( are unaffected when the client) 371.63 112 T
+(exits:) 108 99 T
+2 11 Q
+(ok = XkbSetAutoResetControls\050dp) 144 78.67 T
+(y) 298.59 78.67 T
+(, XkbStick) 303.38 78.67 T
+(yK) 350.27 78.67 T
+(e) 363.44 78.67 T
+(ysMask, 0, 0\051;) 368.16 78.67 T
+FMENDPAGE
+%%EndPage: "55" 67
+%%Page: "56" 68
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(56) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(To change the auto-reset controls so that) 108 712 T
+5 F
+-0.6 (StickyKeys) 305.63 712 S
+2 F
+( are turned off when the client) 371.63 712 T
+(exits:) 108 699 T
+2 11 Q
+(ok = XkbSetAutoResetControls\050dp) 144 678.67 T
+(y) 298.59 678.67 T
+(, XkbStick) 303.38 678.67 T
+(yK) 350.27 678.67 T
+(e) 363.44 678.67 T
+(ysMask, XkbStick) 368.16 678.67 T
+(yK) 449.27 678.67 T
+(e) 462.44 678.67 T
+(ysMask, 0\051;) 467.16 678.67 T
+2 12 Q
+-0.23 (To change the auto-reset controls so that) 108 659 P
+5 F
+-0.51 -0.6 (StickyKeys) 303.99 659 B
+2 F
+-0.23 ( are turned on when the client exits:) 370 659 P
+2 11 Q
+(ok = XkbSetAutoResetControls\050dp) 144 638.67 T
+(y) 298.59 638.67 T
+(, XkbStick) 303.38 638.67 T
+(yK) 350.27 638.67 T
+(e) 363.44 638.67 T
+(ysMask, XkbStick) 368.16 638.67 T
+(yK) 449.27 638.67 T
+(e) 462.44 638.67 T
+(ysMask,) 467.16 638.67 T
+(XkbStick) 144 625.67 T
+(yK) 185.39 625.67 T
+(e) 198.56 625.67 T
+(ysMask\051;) 203.28 625.67 T
+1 12 Q
+(XkbSetA) 108 606 T
+(utoResetContr) 148.42 606 T
+(ols) 217.21 606 T
+2 F
+( backfills) 231.22 606 T
+1 F
+(auto_ctrls) 278.54 606 T
+2 F
+( and) 327.22 606 T
+1 F
+(auto_values) 350.54 606 T
+2 F
+( with the auto-reset con-) 408.54 606 T
+(trols for this particular client. Note that all of the bits are valid in the returned values, not) 108 593 T
+(just the ones selected in the) 108 580 T
+1 F
+(c) 242.65 580 T
+(hang) 247.8 580 T
+(es) 271.68 580 T
+2 F
+( mask.) 281.68 580 T
+0 F
+(10.2) 72 555 T
+(Contr) 108 555 T
+(ol f) 139.75 555 T
+(or Bell Beha) 157.51 555 T
+(vior) 227.35 555 T
+2 F
+(The X server\325s generation of sounds is controlled by the) 108 535 T
+5 F
+-0.6 (AudibleBell) 380.62 535 S
+2 F
+( control. Configu-) 453.22 535 T
+(ration of different bell sounds is discussed in Chapter 9.) 108 522 T
+0 F
+(10.2.1) 72 497 T
+(The A) 108 497 T
+(udib) 140.98 497 T
+(leBell Contr) 166.19 497 T
+(ol) 233.29 497 T
+2 F
+(The) 108 477 T
+5 F
+-0.6 (AudibleBell) 129.66 477 S
+2 F
+( control is a boolean control that has no attributes. As such, you may) 202.26 477 T
+(enable and disable it using either the) 108 464 T
+5 F
+-0.6 (EnabledControls) 286.31 464 S
+2 F
+( control or the) 385.31 464 T
+5 F
+-0.6 (AutoReset) 455.97 464 S
+2 F
+( con-) 515.37 464 T
+(trol discussed in section 10.1.1. When enabled, protocol requests to generate a sound) 108 451 T
+(result in the X server actually producing a real sound; when disabled, requests to the) 108 438 T
+(server to generate a sound are ignored unless the sound is forced. See section 9.2.) 108 425 T
+0 F
+(10.3) 72 400 T
+(Contr) 108 400 T
+(ols f) 139.75 400 T
+(or Repeat K) 164.18 400 T
+(e) 231.35 400 T
+(y Beha) 237.84 400 T
+(vior) 277.01 400 T
+2 F
+(The repeating behavior of keyboard keys is governed by three controls, the) 108 380 T
+5 F
+-0.6 (PerKeyRe-) 470.92 380 S
+-0.6 (peat) 108 367 S
+2 F
+( control, which is always active, and the) 134.4 367 T
+5 F
+-0.6 (RepeatKeys) 329.7 367 S
+2 F
+( and) 395.7 367 T
+5 F
+-0.6 (DetectableAutore-) 419.03 367 S
+-0.6 (peat) 108 354 S
+2 F
+( controls, which are boolean controls that may be enabled and disabled.) 134.4 354 T
+5 F
+-0.6 (PerKeyRepeat) 108 341 S
+2 F
+( determines which keys are allowed to repeat.) 187.2 341 T
+5 F
+-0.6 (RepeatKeys) 409.48 341 S
+2 F
+( governs the) 475.48 341 T
+(behavior of an individual key when it is repeating.) 108 328 T
+5 F
+-0.6 (DetectableAutorepeat) 352.63 328 S
+2 F
+( allows a) 484.64 328 T
+(client to detect when a key is repeating as a result of being held down.) 108 315 T
+0 F
+(10.3.1) 72 290 T
+(The P) 108 290 T
+(erK) 140.32 290 T
+(e) 160.14 290 T
+(yRepeat Contr) 166.63 290 T
+(ol) 248.4 290 T
+2 F
+-0.09 (The) 108 270 P
+5 F
+-0.19 -0.6 (PerKeyRepeat) 129.57 270 B
+2 F
+-0.09 ( control is a bitmask long enough to contain a bit for each key on the) 208.77 270 P
+(device; it determines which individual keys are allowed to repeat. The Xkb) 108 257 T
+5 F
+-0.6 (PerKeyRe-) 471.6 257 S
+-0.6 (peat) 108 244 S
+2 F
+( control provides no functionality different from that available via the core X proto-) 134.4 244 T
+(col. There are no convenience functions in Xkb for manipulating this control. The) 108 231 T
+5 F
+-0.6 (PerKeyRepeat) 108 218 S
+2 F
+( control settings are carried in the) 187.2 218 T
+1 F
+(per_key_repeat) 350.83 218 T
+2 F
+( field of an) 425.47 218 T
+5 F
+-0.6 (XkbCon-) 480.79 218 S
+-0.6 (trolsRec) 108 205 S
+2 F
+( structure, discussed in section 10.8.) 160.8 205 T
+0 F
+(10.3.2) 72 180 T
+(The RepeatK) 108 180 T
+(e) 181.16 180 T
+(ys Contr) 187.66 180 T
+(ol) 236.09 180 T
+2 F
+(The core protocol allows only control over whether or not the entire keyboard or individ-) 108 160 T
+(ual keys should auto-repeat when held down.) 108 147 T
+5 F
+-0.6 (RepeatKeys) 327.96 147 S
+2 F
+( is a boolean control that) 393.96 147 T
+-0.45 (extends this capability by adding control over the delay until a key begins to repeat and the) 108 134 P
+(rate at which it repeats.) 108 121 T
+5 F
+-0.6 (RepeatKeys) 222.64 121 S
+2 F
+( is coupled with the core auto-repeat control: when) 288.64 121 T
+5 F
+-0.6 (RepeatKeys) 108 108 S
+2 F
+( is enabled or disabled, the core auto-repeat is enabled or disabled and vice) 174 108 T
+(versa.) 108 95 T
+FMENDPAGE
+%%EndPage: "56" 68
+%%Page: "57" 69
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(57) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(Auto-repeating keys are controlled by two attributes. The first,) 108 712 T
+1 F
+(timeout) 411.61 712 T
+2 F
+(, is the delay after) 447.61 712 T
+(the initial press of an auto-repeating key and the first generated repeat event. The second,) 108 699 T
+1 F
+(interval) 108 686 T
+2 F
+(, is the delay between all subsequent generated repeat events. As with all boolean) 145.33 686 T
+(controls, configuring the attributes that determine how the control operates does not auto-) 108 673 T
+(matically enable the control as a whole; see section 10.1.) 108 660 T
+(To get the current attributes of the) 108 639 T
+5 F
+-0.6 (RepeatKeys) 274.97 639 S
+2 F
+( control for a keyboard device, use) 340.97 639 T
+1 F
+(Xkb-) 510.25 639 T
+(GetAutoRepeatRate) 108 626 T
+2 F
+(.) 203.32 626 T
+2 11 Q
+(Bool) 108 605.67 T
+3 F
+(XkbGetA) 132.15 605.67 T
+(utoRepeatRate) 176.82 605.67 T
+2 F
+(\050) 247.07 605.67 T
+1 F
+(display) 250.74 605.67 T
+(, de) 281.91 605.67 T
+(vice_spec, timeout_rtrn, interval_rtrn) 297.63 605.67 T
+2 F
+(\051) 463.84 605.67 T
+(Display *) 126 592.67 T
+1 F
+(display) 234 592.67 T
+2 F
+(;) 265.78 592.67 T
+(/* connection to X serv) 306 592.67 T
+(er */) 408.49 592.67 T
+(unsigned int) 126 579.67 T
+1 F
+(de) 234 579.67 T
+(vice_spec) 244.22 579.67 T
+2 F
+(;) 286.98 579.67 T
+(/* desired de) 306 579.67 T
+(vice ID, or) 361.93 579.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 412.03 579.67 S
+2 F
+( */) 490.68 579.67 T
+(unsigned int) 126 566.67 T
+1 F
+(*) 182.84 566.67 T
+(timeout_rtrn) 234 566.67 T
+2 F
+(;) 289.62 566.67 T
+(/* back\336lled with initial repeat delay) 306 566.67 T
+(, ms */) 466.91 566.67 T
+(unsigned int) 126 553.67 T
+1 F
+(*) 182.84 553.67 T
+(interval_rtrn) 234 553.67 T
+2 F
+(;) 290.84 553.67 T
+(/* back\336lled with subsequent repeat delay) 306 553.67 T
+(, ms */) 490.12 553.67 T
+1 12 Q
+-0.34 (XkbGetA) 108 534 P
+-0.34 (utoRepeatRate) 151.08 534 P
+2 F
+-0.34 ( queries the server for the current values of the) 221.74 534 P
+5 F
+-0.75 -0.6 (RepeatControls) 444.94 534 B
+2 F
+-0.28 (control attributes, backfills) 108 521 P
+1 F
+-0.28 (timeout_rtrn) 239.15 521 P
+2 F
+-0.28 ( and) 299.82 521 P
+1 F
+-0.28 (interval_rtrn) 322.58 521 P
+2 F
+-0.28 ( with them, and returns) 384.59 521 P
+5 F
+-0.62 -0.6 (True) 497.17 521 B
+2 F
+-0.28 (. If) 523.57 521 P
+(a compatible version of the Xkb extension is not available in the server) 108 508 T
+1 F
+(XkbGetA) 452.28 508 T
+(utoRepe-) 495.36 508 T
+(atRate) 108 495 T
+2 F
+( returns) 139.33 495 T
+5 F
+-0.6 (False) 178.66 495 S
+2 F
+(.) 211.66 495 T
+(To set the attributes of the RepeatKeys control for a keyboard device, use) 108 474 T
+1 F
+(XkbSetAutoRe-) 463.92 474 T
+(peatRate) 108 461 T
+2 F
+(.) 150.66 461 T
+2 11 Q
+(Bool) 108 440.67 T
+3 F
+(XkbSetA) 132.15 440.67 T
+(utoRepeatRate) 174.37 440.67 T
+2 F
+(\050) 244.63 440.67 T
+1 F
+(display) 248.29 440.67 T
+(, de) 279.47 440.67 T
+(vice_spec, timeout, interval) 295.19 440.67 T
+2 F
+(\051) 416.17 440.67 T
+(Display *) 126 427.67 T
+1 F
+(display) 234 427.67 T
+2 F
+(;) 265.78 427.67 T
+(/* connection to X serv) 306 427.67 T
+(er */) 408.49 427.67 T
+(unsigned int) 126 414.67 T
+1 F
+(de) 234 414.67 T
+(vice_spec) 244.22 414.67 T
+2 F
+(;) 286.98 414.67 T
+(/* de) 306 414.67 T
+(vice to con\336gure, or) 327.42 414.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 418.76 414.67 S
+2 F
+( */) 497.41 414.67 T
+(unsigned int) 126 401.67 T
+1 F
+(timeout) 234 401.67 T
+2 F
+(;) 267 401.67 T
+(/* initial delay) 306 401.67 T
+(, ms */) 368.84 401.67 T
+(unsigned int) 126 388.67 T
+1 F
+(interval) 234 388.67 T
+2 F
+(;) 268.22 388.67 T
+(/* delay between repeats, ms */) 306 388.67 T
+1 12 Q
+-0.08 (XkbSetA) 108 369 P
+-0.08 (utoRepeatRate) 148.42 369 P
+2 F
+-0.08 ( sends a request to the X server to configure the) 219.07 369 P
+5 F
+-0.19 -0.6 (AutoRepeat) 449.76 369 B
+2 F
+-0.08 ( con-) 515.76 369 P
+(trol attributes to the values specified in) 108 356 T
+1 F
+(timeout) 297.65 356 T
+2 F
+( and) 333.65 356 T
+1 F
+(interval) 356.98 356 T
+2 F
+(.) 394.31 356 T
+1 F
+(XkbSetA) 108 335 T
+(utoRepeatRate) 148.42 335 T
+2 F
+( does not wait for a reply; it normally returns) 219.07 335 T
+5 F
+-0.6 (True) 437.71 335 S
+2 F
+(. Specifying a) 464.11 335 T
+(zero value for either) 108 322 T
+1 F
+(timeout) 207.96 322 T
+2 F
+( or) 243.96 322 T
+1 F
+(interval) 259.96 322 T
+2 F
+( causes the server to generate a) 297.29 322 T
+5 F
+-0.6 (BadValue) 448.9 322 S
+2 F
+( proto-) 501.7 322 T
+(col error. If a compatible version of the Xkb extension is not available in the server,) 108 309 T
+1 F
+(Xkb-) 513.25 309 T
+(SetA) 108 296 T
+(utoRepeatRate) 129.76 296 T
+2 F
+( returns) 200.41 296 T
+5 F
+-0.6 (False) 239.74 296 S
+2 F
+(.) 272.74 296 T
+0 F
+(10.3.3) 72 271 T
+(The Detectab) 108 271 T
+(leA) 183.23 271 T
+(utorepeat Contr) 201.54 271 T
+(ol) 291.3 271 T
+2 F
+(Auto-repeat is the generation of multiple key events by a keyboard when the user presses) 108 251 T
+(a key and holds it down. Keyboard hardware and device-dependent X server software) 108 238 T
+-0.46 (often implement auto-repeat by generating multiple) 108 225 P
+5 F
+-1.02 -0.6 (KeyPress) 355.86 225 B
+2 F
+-0.46 ( events with no intervening) 408.66 225 P
+5 F
+-0.6 (KeyRelease) 108 212 S
+2 F
+( event. The standard behavior of the X server is to generate a) 174 212 T
+5 F
+-0.6 (KeyRelease) 469.25 212 S
+2 F
+(event for every) 108 199 T
+5 F
+-0.6 (KeyPress) 183.64 199 S
+2 F
+( event. If the keyboard hardware and device-dependent soft-) 236.44 199 T
+-0.16 (ware of the X server implement auto-repeat by generating multiple) 108 186 P
+5 F
+-0.35 -0.6 (KeyPress) 430.35 186 B
+2 F
+-0.16 ( events, the) 483.15 186 P
+-0.21 (device-independent part of the X server by default synthetically generates a) 108 173 P
+5 F
+-0.47 -0.6 (KeyRelease) 471.21 173 B
+2 F
+(event after each) 108 160 T
+5 F
+-0.6 (KeyPress) 186.96 160 S
+2 F
+( event. This provides predictable behavior for X clients, but) 239.76 160 T
+(does not allow those clients to detect the fact that a key is auto-repeating.) 108 147 T
+(Xkb allows clients to request) 108 126 T
+1 F
+(detectable auto-r) 250.32 126 T
+(epeat) 332.2 126 T
+2 F
+(. If a client requests and the server) 358.19 126 T
+(supports) 108 113 T
+5 F
+-0.6 (DetectableAutorepeat) 151.67 113 S
+2 F
+(, Xkb generates) 283.67 113 T
+5 F
+-0.6 (KeyRelease) 361.65 113 S
+2 F
+( events only when the) 427.65 113 T
+(key is physically released. If) 108 100 T
+5 F
+-0.6 (DetectableAutorepeat) 247.97 100 S
+2 F
+( is not supported or has not been) 379.97 100 T
+(requested, the server synthesizes a) 108 87 T
+5 F
+-0.6 (KeyRelease) 275.95 87 S
+2 F
+( event for each repeating) 341.95 87 T
+5 F
+-0.6 (KeyPress) 463.57 87 S
+2 F
+(event it generates.) 108 74 T
+FMENDPAGE
+%%EndPage: "57" 69
+%%Page: "58" 70
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(58) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+5 12 Q
+-0.6 (DetectableAutorepeat) 108 712 S
+2 F
+(, unlike the other controls in this chapter, is not contained in) 240 712 T
+(the) 108 699 T
+5 F
+-0.6 (XkbControlsRec) 125.66 699 S
+2 F
+( structure, nor can it be enabled or disabled via the) 218.07 699 T
+5 F
+-0.6 (EnabledCon-) 463.35 699 S
+-0.6 (trols) 108 686 S
+2 F
+( control. Instead, query and set) 141 686 T
+5 F
+-0.6 (DetectableAutorepeat) 291.64 686 S
+2 F
+( using) 423.64 686 T
+1 F
+(XkbGetDetectab-) 455.64 686 T
+(leA) 108 673 T
+(utor) 123.76 673 T
+(epeat) 143.32 673 T
+2 F
+( and) 169.31 673 T
+1 F
+(XkbSetDetectableA) 192.64 673 T
+(utor) 285.04 673 T
+(epeat) 304.6 673 T
+2 F
+(.) 330.59 673 T
+5 F
+-1.07 -0.6 (DetectableAutorepeat) 108 652 B
+2 F
+-0.48 ( is a condition that applies to all keyboard devices for a client\325s) 240 652 P
+(connection to a given X server; it cannot be selectively set for some devices and not for) 108 639 T
+(others. For this reason, none of the Xkb library functions involving) 108 626 T
+5 F
+-0.6 (DetectableAu-) 432.97 626 S
+-0.6 (torepeat) 108 613 S
+2 F
+( involve a device specifier.) 160.8 613 T
+(To determine whether or not the server supports) 108 592 T
+5 F
+-0.6 (DetectableAutorepeat) 341.95 592 S
+2 F
+(, use) 473.95 592 T
+1 F
+(XkbGet-) 498.95 592 T
+(DetectableA) 108 579 T
+(utor) 167.08 579 T
+(epeat) 186.64 579 T
+2 F
+(.) 212.63 579 T
+2 11 Q
+(Bool) 108 558.67 T
+3 F
+(XkbGetDetectableA) 132.15 558.67 T
+(utor) 226.29 558.67 T
+(epeat) 246.26 558.67 T
+2 F
+(\050) 271.31 558.67 T
+1 F
+(display) 274.97 558.67 T
+(, supported_rtrn) 306.14 558.67 T
+2 F
+(\051) 378.26 558.67 T
+(Display *) 126 545.67 T
+1 F
+(display) 180 545.67 T
+2 F
+(;) 211.78 545.67 T
+(/* connection to X serv) 261 545.67 T
+(er */) 363.49 545.67 T
+(Bool *) 126 532.67 T
+1 F
+(supported_rtrn) 180 532.67 T
+2 F
+(;) 246.62 532.67 T
+(/* back\336lled) 261 532.67 T
+5 12 Q
+-0.6 (True) 318.44 532.67 S
+2 11 Q
+( if) 344.84 532.67 T
+5 F
+-0.33 (DetectableAutorepeat) 357.06 532.67 S
+2 F
+( supported */) 482.46 532.67 T
+1 F
+(XkbGetDetectableA) 108 513 T
+(utor) 195.14 513 T
+(epeat) 213.07 513 T
+2 12 Q
+( queries the server for the current state of) 236.9 513 T
+5 F
+-0.6 (DetectableAu-) 437.17 513 S
+-1.02 -0.6 (torepeat) 108 500 B
+2 F
+-0.47 ( and waits for a reply. If) 160.8 500 P
+1 F
+-0.47 (supported_rtrn) 276.17 500 P
+2 F
+-0.47 ( is not) 348.85 500 P
+5 F
+-1.02 -0.6 (NULL) 379.79 500 B
+2 F
+-0.47 (, it backfills) 406.19 500 P
+1 F
+-0.47 (supported_rtrn) 464.79 500 P
+2 F
+(with) 108 487 T
+5 F
+-0.6 (True) 132.34 487 S
+2 F
+( if the server supports) 158.74 487 T
+5 F
+-0.6 (DetectableAutorepeat) 265.72 487 S
+2 F
+(, and) 397.72 487 T
+5 F
+-0.6 (False) 424.05 487 S
+2 F
+( otherwise.) 457.05 487 T
+1 11 Q
+(Xkb-) 512.7 487 T
+(GetDetectableA) 108 474 T
+(utor) 178.04 474 T
+(epeat) 195.97 474 T
+2 12 Q
+( returns the current state of) 219.79 474 T
+5 F
+-0.6 (DetectableAutorepeat) 351.76 474 S
+2 F
+( for the) 483.76 474 T
+(requesting client:) 108 461 T
+5 F
+-0.6 (True) 193.99 461 S
+2 F
+( if) 220.39 461 T
+5 F
+-0.6 (DetectableAutorepeat) 233.72 461 S
+2 F
+( is set, and) 365.73 461 T
+5 F
+-0.6 (False) 419.39 461 S
+2 F
+( otherwise.) 452.39 461 T
+(To set) 108 440 T
+5 F
+-0.6 (DetectableAutorepeat) 140.66 440 S
+2 F
+(, use) 272.67 440 T
+1 F
+(XkbSetDetectableA) 297.66 440 T
+(utor) 390.06 440 T
+(epeat) 409.62 440 T
+2 F
+(. This request affects) 435.61 440 T
+-0.09 (all keyboard activity for the requesting client only; other clients still see the expected non-) 108 427 P
+(detectable auto-repeat behavior, unless they have requested otherwise.) 108 414 T
+2 11 Q
+(Bool) 108 393.67 T
+3 F
+(XkbSetDetectableA) 132.15 393.67 T
+(utor) 223.85 393.67 T
+(epeat) 243.82 393.67 T
+2 F
+(\050) 268.86 393.67 T
+1 F
+(display) 272.53 393.67 T
+(, detectable) 303.7 393.67 T
+(, supported_rtrn) 354.3 393.67 T
+2 F
+(\051) 426.42 393.67 T
+(Display *) 126 380.67 T
+1 F
+(display) 180 380.67 T
+2 F
+(;) 211.78 380.67 T
+(/* connection to X serv) 261 380.67 T
+(er */) 363.49 380.67 T
+(Bool) 126 367.67 T
+1 F
+(detectable) 180 367.67 T
+2 F
+(;) 225.21 367.67 T
+(/*) 261 367.67 T
+5 12 Q
+-0.6 (True) 272.31 367.67 S
+2 11 Q
+( => set) 298.71 367.67 T
+5 F
+-0.33 (DetectableAutorepeat) 331.59 367.67 S
+2 F
+( */) 456.99 367.67 T
+(Bool *) 126 354.67 T
+1 F
+(supported_rtrn) 180 354.67 T
+2 F
+(;) 246.62 354.67 T
+(/* back\336lled) 261 354.67 T
+5 12 Q
+-0.6 (True) 318.44 354.67 S
+2 11 Q
+( if) 344.84 354.67 T
+5 F
+-0.33 (DetectableAutorepeat) 357.06 354.67 S
+2 F
+( supported */) 482.46 354.67 T
+1 12 Q
+(XkbSetDetectableA) 108 335 T
+(utor) 200.4 335 T
+(epeat) 219.96 335 T
+2 F
+( sends a request to the server to set) 245.95 335 T
+5 F
+-0.6 (DetectableAutore-) 415.58 335 S
+-0.34 -0.6 (peat) 108 322 B
+2 F
+-0.15 ( on for the current client if) 134.4 322 P
+1 F
+-0.15 (detectable) 262.97 322 P
+2 F
+-0.15 ( is) 312.29 322 P
+5 F
+-0.34 -0.6 (True) 325.99 322 B
+2 F
+-0.15 (, and off it) 352.39 322 P
+1 F
+-0.15 (detectable) 404.77 322 P
+2 F
+-0.15 ( is) 454.09 322 P
+5 F
+-0.34 -0.6 (False) 467.79 322 B
+2 F
+-0.15 (; it then) 500.79 322 P
+(waits for a reply. If) 108 309 T
+1 F
+(supported_rtrn) 203.3 309 T
+2 F
+( is not) 275.98 309 T
+5 F
+-0.6 (NULL) 308.32 309 S
+2 F
+(,) 334.72 309 T
+1 F
+(XkbSetDetectableA) 340.72 309 T
+(utor) 433.12 309 T
+(epeat) 452.68 309 T
+2 F
+( backfills) 478.67 309 T
+1 F
+(supported_rtrn) 108 296 T
+2 F
+( with) 180.67 296 T
+5 F
+-0.6 (True) 208.01 296 S
+2 F
+( if the server supports) 234.41 296 T
+5 F
+-0.6 (DetectableAutorepeat) 341.39 296 S
+2 F
+(, and) 473.39 296 T
+5 F
+-0.6 (False) 499.72 296 S
+2 F
+(if it does not.) 108 283 T
+1 F
+(XkbSetDetectableA) 174.34 283 T
+(utor) 266.74 283 T
+(epeat) 286.3 283 T
+2 F
+( returns the current state of) 312.29 283 T
+5 F
+-0.6 (DetectableAu-) 444.25 283 S
+-1.07 -0.6 (torepeat) 108 270 B
+2 F
+-0.49 ( for the requesting client:) 160.8 270 P
+5 F
+-1.07 -0.6 (True) 282.01 270 B
+2 F
+-0.49 ( if) 308.41 270 P
+5 F
+-1.07 -0.6 (DetectableAutorepeat) 320.77 270 B
+2 F
+-0.49 ( is set, and) 452.77 270 P
+5 F
+-1.07 -0.6 (False) 504.49 270 B
+2 F
+(otherwise.) 108 257 T
+0 F
+(10.4) 72 232 T
+(Contr) 108 232 T
+(ols f) 139.75 232 T
+(or K) 164.18 232 T
+(e) 188 232 T
+(yboar) 194.5 232 T
+(d Overla) 226.93 232 T
+(ys \050Overla) 274.72 232 T
+(y1 and Overla) 332.51 232 T
+(y2 Contr) 410.98 232 T
+(ols\051) 459.41 232 T
+2 F
+-0.37 (A keyboard overlay allows some subset of the keyboard to report alternate keycodes when) 108 212 P
+-0.37 (the overlay is enabled. For example, a keyboard overlay can be used to simulate a numeric) 108 199 P
+(or editing keypad on a keyboard that does not actually have one by reusing some portion) 108 186 T
+-0.04 (of the keyboard as an overlay. This technique is very common on portable computers and) 108 173 P
+(embedded systems with small keyboards.) 108 160 T
+(Xkb includes direct support for two keyboard overlays, using the) 108 139 T
+5 F
+-0.6 (Overlay1) 422.95 139 S
+2 F
+( and) 475.75 139 T
+5 F
+-0.6 (Overlay2) 108 126 S
+2 F
+( controls. When) 160.8 126 T
+5 F
+-0.6 (Overlay1) 240.12 126 S
+2 F
+( is enabled, all of the keys that are members of the) 292.92 126 T
+(first keyboard overlay generate an alternate keycode. When) 108 113 T
+5 F
+-0.6 (Overlay2) 396.9 113 S
+2 F
+( is enabled, all of) 449.7 113 T
+(the keys that are members of the second keyboard overlay generate an alternate keycode.) 108 100 T
+(The two overlays are mutually exclusive; any particular key may be in at most one over-) 108 87 T
+-0.32 (lay.) 108 74 P
+5 F
+-0.71 -0.6 (Overlay1) 128.34 74 B
+2 F
+-0.32 ( and) 181.14 74 P
+5 F
+-0.71 -0.6 (Overlay2) 203.82 74 B
+2 F
+-0.32 ( are boolean controls. As such, you may enable and disable) 256.62 74 P
+FMENDPAGE
+%%EndPage: "58" 70
+%%Page: "59" 71
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(59) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+-0.2 (them using either the) 108 712 P
+5 F
+-0.44 -0.6 (EnabledControls) 211.2 712 B
+2 F
+-0.2 ( control or the) 310.2 712 P
+5 F
+-0.44 -0.6 (AutoReset) 380.06 712 B
+2 F
+-0.2 ( control discussed in) 439.46 712 P
+(section 10.1.1.) 108 699 T
+-0.37 (To specify the overlay to which a key belongs and the alternate keycode it should generate) 108 678 P
+-0.48 (when that overlay is enabled, assign it either the) 108 665 P
+5 F
+-1.06 -0.6 (XkbKB_Overlay1) 337.64 665 B
+2 F
+-0.48 ( or) 430.04 665 P
+5 F
+-1.06 -0.6 (XkbKB_Overlay2) 445.08 665 B
+2 F
+(key behaviors, as described in section 16.2.) 108 652 T
+0 F
+(10.5) 72 627 T
+(Contr) 108 627 T
+(ols f) 139.75 627 T
+(or Using the Mouse fr) 164.18 627 T
+(om the K) 287.29 627 T
+(e) 338.45 627 T
+(yboar) 344.94 627 T
+(d) 377.38 627 T
+2 F
+(Using Xkb, it is possible to configure the keyboard to allow simulation of the X pointer) 108 607 T
+-0.26 (device. This simulation includes both movement of the pointer itself and press and release) 108 594 P
+(events associated with the buttons on the pointer. Two controls affect this behavior: the) 108 581 T
+5 F
+-0.6 (MouseKeys) 108 568 S
+2 F
+( control determines whether or not simulation of the pointer device is active,) 167.4 568 T
+(as well as configuring the default button; the) 108 555 T
+5 F
+-0.6 (MouseKeysAccel) 325.31 555 S
+2 F
+( control determines the) 417.71 555 T
+(movement characteristics of the pointer when simulated via the keyboard. Both of them) 108 542 T
+(are boolean controls; as such, you may enable and disable them using either the) 108 529 T
+5 F
+-0.6 (EnabledControls) 108 516 S
+2 F
+( control or the) 207 516 T
+5 F
+-0.6 (AutoReset) 277.66 516 S
+2 F
+( control discussed in section 10.1.1. The) 337.06 516 T
+-0.04 (individual keys that simulate different aspects of the pointer device are determined by the) 108 503 P
+(keyboard mapping, discussed in Chapter 16.) 108 490 T
+0 F
+(10.5.1) 72 465 T
+(The MouseK) 108 465 T
+(e) 179.16 465 T
+(ys Contr) 185.65 465 T
+(ol) 234.08 465 T
+2 F
+(The) 108 445 T
+5 F
+-0.6 (MouseKeys) 129.66 445 S
+2 F
+( control allows a user to control all the mouse functions from the key-) 189.06 445 T
+(board. When) 108 432 T
+5 F
+-0.6 (MouseKeys) 172.98 432 S
+2 F
+( are enabled, all keys with) 232.38 432 T
+5 F
+-0.6 (MouseKeys) 360.68 432 S
+2 F
+( actions bound to them) 420.09 432 T
+(generate core pointer events instead of normal) 108 419 T
+5 F
+-0.6 (KeyPress) 332.94 419 S
+2 F
+( and) 385.74 419 T
+5 F
+-0.6 (KeyRelease) 409.07 419 S
+2 F
+( events.) 475.07 419 T
+(The) 108 398 T
+5 F
+-0.6 (MouseKeys) 129.66 398 S
+2 F
+( control has a single attribute,) 189.06 398 T
+1 F
+(mk_dflt_btn) 334.05 398 T
+2 F
+( that specifies the core button) 391.38 398 T
+(number to be used by mouse keys actions that do not explicitly specify a button. There is) 108 385 T
+(no convenience function for getting or setting the attribute; instead use) 108 372 T
+1 F
+(XkbGetContr) 450.29 372 T
+(ols) 513.74 372 T
+2 F
+(and) 108 359 T
+1 F
+(XkbSetContr) 128.33 359 T
+(ols) 189.12 359 T
+2 F
+( \050see sections 10.9 and 10.10\051.) 203.12 359 T
+0 F
+(Note) 126 338.67 T
+5 F
+-0.91 -0.6 (MouseKeys) 162 338.67 B
+2 11 Q
+-0.38 ( can also be turned on and of) 221.4 338.67 P
+-0.38 (f by pressing the k) 345.26 338.67 P
+-0.38 (e) 424.91 338.67 P
+-0.38 (y combination necessary) 429.62 338.67 P
+(to produce an) 162 326.67 T
+5 12 Q
+-0.6 (XK_Pointer_EnableKeys) 224.62 326.67 S
+2 11 Q
+( k) 363.23 326.67 T
+(e) 371.37 326.67 T
+(ysym. The de f) 376.08 326.67 T
+(acto def) 441.96 326.67 T
+(ault standard) 476.98 326.67 T
+(for this is) 162 314.67 T
+5 12 Q
+-0.6 (Shift+Alt+NumLock) 206.31 314.67 S
+2 11 Q
+(, b) 318.51 314.67 T
+(ut this may v) 329.29 314.67 T
+(ary depending on the k) 386.16 314.67 T
+(e) 486.86 314.67 T
+(ymap.) 491.58 314.67 T
+0 12 Q
+(10.5.2) 72 290 T
+(The MouseK) 108 290 T
+(e) 179.16 290 T
+(ysAccel Contr) 185.65 290 T
+(ol) 266.1 290 T
+2 F
+(When the) 108 270 T
+5 F
+-0.6 (MouseKeysAccel) 157.32 270 S
+2 F
+( control is enabled, the effect of a key-activated pointer) 249.72 270 T
+(motion action changes as a key is held down. If the control is disabled, pressing a) 108 257 T
+(mouse-pointer key yields one mouse event. When) 108 244 T
+5 F
+-0.6 (MouseKeysAccel) 350.63 244 S
+2 F
+( is enabled, mouse) 443.03 244 T
+(movement is defined by an initial distance specified in the) 108 231 T
+5 F
+-0.6 (XkbSA_MovePtr) 390.64 231 S
+2 F
+( action and) 476.44 231 T
+(the following fields in the) 108 218 T
+5 F
+-0.6 (XkbControlsRec) 235 218 S
+2 F
+( structure \050see section 10.8\051.) 327.4 218 T
+3 F
+(T) 242.32 198 T
+(able 10.2 MouseK) 249.22 198 T
+(eysAccel Fields) 343.58 198 T
+1 F
+(F) 108 179 T
+(ield) 114.79 179 T
+(Function) 207 179 T
+2 11 Q
+(mk_delay) 108 165.67 T
+(T) 207 165.67 T
+(ime \050ms\051 between the initial k) 213.34 165.67 T
+(e) 344.91 165.67 T
+(y press and the \336rst repeated motion e) 349.63 165.67 T
+(v) 516.46 165.67 T
+(ent) 521.8 165.67 T
+(mk_interv) 108 152.67 T
+(al) 152.95 152.67 T
+(T) 207 152.67 T
+(ime \050ms\051 between repeated motion e) 213.34 152.67 T
+(v) 373.44 152.67 T
+(ents) 378.78 152.67 T
+(mk_time_to_max) 108 139.67 T
+(Number of e) 207 139.67 T
+(v) 262.32 139.67 T
+(ents \050count\051 before the pointer reaches maximum speed) 267.65 139.67 T
+(mk_max_speed) 108 126.67 T
+(The maximum speed \050in pix) 207 126.67 T
+(els per e) 330.88 126.67 T
+(v) 367.26 126.67 T
+(ent\051 the pointer reaches) 372.59 126.67 T
+(mk_curv) 108 113.67 T
+(e) 146.94 113.67 T
+(The ramp used to reach maximum pointer speed) 207 113.67 T
+108 190 541.8 190 2 L
+V
+0.5 H
+0 Z
+N
+108 174 541.8 174 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "59" 71
+%%Page: "60" 72
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(60) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(There are no convenience functions to query or change the attributes of the) 108 712 T
+5 F
+-0.6 (MouseKey-) 470.9 712 S
+-0.6 (sAccel) 108 699 S
+2 F
+( control; instead use) 147.6 699 T
+1 F
+(XkbGetContr) 246.93 699 T
+(ols) 310.38 699 T
+2 F
+( and) 324.39 699 T
+1 F
+(XkbSetContr) 347.71 699 T
+(ols) 408.51 699 T
+2 F
+( \050see sections 10.9 and) 422.51 699 T
+(10.10\051.) 108 686 T
+(The effects of the attributes of the) 108 665 T
+5 F
+-0.6 (MouseKeysAccel) 273.62 665 S
+2 F
+( control depend on whether the) 366.03 665 T
+5 F
+-0.6 (XkbSA_MovePtr) 108 652 S
+2 F
+( action \050see section 16.1\051 specifies relative or absolute pointer motion.) 193.8 652 T
+0 11 Q
+(Absolute Pointer Motion) 108 629.67 T
+2 12 Q
+-0.22 (If an) 108 611 P
+5 F
+-0.48 -0.6 (XkbSA_MovePtr) 132.88 611 B
+2 F
+-0.22 ( action specifies an absolute position for one of the coordinates but) 218.68 611 P
+(still allows acceleration, all repeated events contain any absolute coordinates specified in) 108 598 T
+(the action. For example, if the) 108 585 T
+5 F
+-0.6 (XkbSA_MovePtr) 255.31 585 S
+2 F
+( action specifies an absolute position for) 341.11 585 T
+(the X direction, but a relative motion for the Y direction, the pointer accelerates in the Y) 108 572 T
+(direction, but stays at the same X position.) 108 559 T
+0 11 Q
+(Relative Pointer Motion) 108 536.67 T
+2 12 Q
+(If the) 108 518 T
+5 F
+-0.6 (XkbSA_MovePtr) 136.66 518 S
+2 F
+( action specifies relative motion, the initial event always moves) 222.46 518 T
+(the cursor the distance specified in the action. After) 108 505 T
+1 F
+(mk_delay) 358.61 505 T
+2 F
+( milliseconds, a second) 404.59 505 T
+(motion event is generated, and another occurs every) 108 492 T
+1 F
+(mk_interval) 360.94 492 T
+2 F
+( milliseconds until the) 418.26 492 T
+(user releases the key.) 108 479 T
+(Between the time of the second motion event and) 108 458 T
+1 F
+(mk_time_to_max) 348.3 458 T
+2 F
+( intervals, the change) 430.28 458 T
+(in pointer distance per interval increases with each interval. After) 108 445 T
+1 F
+(mk_time_to_max) 424.92 445 T
+2 F
+( inter-) 506.9 445 T
+(vals have elapsed, the change in pointer distance per interval remains the same and is cal-) 108 432 T
+(culated by multiplying the original distance specified in the action by) 108 419 T
+1 F
+(mk_max_speed) 443.64 419 T
+2 F
+(.) 516.95 419 T
+-0.01 (For example, if the) 108 398 P
+5 F
+-0.01 -0.6 (XkbSA_MovePtr) 202.29 398 B
+2 F
+-0.01 ( action specifies a relative motion in the X direction) 288.1 398 P
+(of 5,) 108 385 T
+1 F
+(mk_delay) 133 385 T
+2 F
+(=160,) 178.98 385 T
+1 F
+(mk_interval) 209.75 385 T
+2 F
+(=40,) 267.07 385 T
+1 F
+(mk_time_to_max) 291.84 385 T
+2 F
+(=30, and) 373.82 385 T
+1 F
+(mk_max_speed) 418.92 385 T
+2 F
+(=30, the) 492.23 385 T
+(following happens when the user presses the key:) 108 372 T
+2 11 Q
+(\245) 126 351.67 T
+(The pointer immediately mo) 139.68 351.67 T
+(v) 265.09 351.67 T
+(es 5 pix) 270.43 351.67 T
+(els in the X direction when the k) 304.48 351.67 T
+(e) 447.66 351.67 T
+(y is pressed.) 452.38 351.67 T
+(\245) 126 339.67 T
+-0.4 (After 160 milliseconds \050) 139.68 339.67 P
+1 F
+-0.4 (mk_delay) 245.72 339.67 P
+2 F
+-0.4 (\051, and e) 287.87 339.67 P
+-0.4 (v) 319.48 339.67 P
+-0.4 (ery 40 milliseconds thereafter \050) 324.82 339.67 P
+1 F
+-0.4 (mk_interval) 460.69 339.67 P
+2 F
+-0.4 (\051,) 513.24 339.67 P
+(the pointer mo) 139.68 327.67 T
+(v) 203.68 327.67 T
+(es in the X direction.) 209.01 327.67 T
+(\245) 126 315.67 T
+(The distance in the X direction increases with each interv) 139.68 315.67 T
+(al until 30 interv) 392.04 315.67 T
+(als) 464.8 315.67 T
+(\050) 139.68 303.67 T
+1 F
+(mk_time_to_max) 143.34 303.67 T
+2 F
+(\051 ha) 218.49 303.67 T
+(v) 235.07 303.67 T
+(e elapsed.) 240.41 303.67 T
+(\245) 126 291.67 T
+(After 30 interv) 139.68 291.67 T
+(als, the pointer stops accelerating, and mo) 204.78 291.67 T
+(v) 389.14 291.67 T
+(es 150 pix) 394.47 291.67 T
+(els) 439.53 291.67 T
+(\050) 139.68 279.67 T
+1 F
+(mk_max_speed) 143.34 279.67 T
+2 F
+( * the original distance\051 e) 210.54 279.67 T
+(v) 321.77 279.67 T
+(ery interv) 327.11 279.67 T
+(al thereafter) 369.29 279.67 T
+(, until the k) 421.69 279.67 T
+(e) 471.69 279.67 T
+(y is) 476.41 279.67 T
+(released.) 139.68 267.67 T
+2 12 Q
+-0.21 (The increase in pointer difference for each interval is a function of) 108 249 P
+1 F
+-0.21 ( mk_curve.) 424.56 249 P
+2 F
+-0.21 ( Events after) 476.99 249 P
+-0.01 (the first but before maximum acceleration has been achieved are accelerated according to) 108 236 P
+(the formula:) 108 223 T
+(Where) 108 170.03 T
+1 F
+(action_delta) 142.98 170.03 T
+2 F
+( is the relative motion specified by the) 202.98 170.03 T
+5 F
+-0.6 (XkbSA_MovePtr) 389.63 170.03 S
+2 F
+( action,) 475.43 170.03 T
+1 F
+(mk_max_speed) 108 157.03 T
+2 F
+(and) 184.31 157.03 T
+1 F
+(mk_time_to_max) 204.64 157.03 T
+2 F
+( are parameters to the) 286.62 157.03 T
+5 F
+-0.6 (MouseKeysAccel) 392.92 157.03 S
+2 F
+( control,) 485.32 157.03 T
+-0.06 (and the curveFactor is computed using the) 108 144.03 P
+5 F
+-0.13 -0.6 (MouseKeysAccel) 313.89 144.03 B
+1 F
+-0.06 (mk_curve) 409.23 144.03 P
+2 F
+-0.06 ( parameter as fol-) 455.88 144.03 P
+(lows:) 108 131.03 T
+72 63 540 720 C
+126 187.03 540 219 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+1 9 Q
+0 X
+0 0 0 1 0 0 0 K
+(d) 207.46 200.79 T
+2 F
+(step) 216.37 200.79 T
+6 F
+(\050) 212.74 200.79 T
+(\051) 231.51 200.79 T
+2 F
+(action_delta) 248.57 200.79 T
+(max_accel) 331.62 205.99 T
+(steps_to_max) 305.81 193.71 T
+1 7 Q
+(c) 355.76 196.47 T
+(u) 359.41 196.47 T
+(r) 363.45 196.47 T
+(v) 366.71 196.47 T
+(e) 370.35 196.47 T
+(F) 374 196.47 T
+(a) 378.82 196.47 T
+(c) 382.85 196.47 T
+(t) 386.5 196.47 T
+(o) 388.98 196.47 T
+(r) 393.02 196.47 T
+2 9 Q
+(-) 305.81 201 T
+(-) 307.31 201 T
+(-) 308.81 201 T
+(-) 310.31 201 T
+(-) 311.81 201 T
+(-) 313.3 201 T
+(-) 314.8 201 T
+(-) 316.3 201 T
+(-) 317.8 201 T
+(-) 319.3 201 T
+(-) 320.8 201 T
+(-) 322.3 201 T
+(-) 323.79 201 T
+(-) 325.29 201 T
+(-) 326.79 201 T
+(-) 328.29 201 T
+(-) 329.79 201 T
+(-) 331.29 201 T
+(-) 332.79 201 T
+(-) 334.28 201 T
+(-) 335.78 201 T
+(-) 337.28 201 T
+(-) 338.78 201 T
+(-) 340.28 201 T
+(-) 341.78 201 T
+(-) 343.27 201 T
+(-) 344.77 201 T
+(-) 346.27 201 T
+(-) 347.77 201 T
+(-) 349.27 201 T
+(-) 350.77 201 T
+(-) 352.27 201 T
+(-) 353.76 201 T
+(-) 355.26 201 T
+(-) 356.76 201 T
+(-) 358.26 201 T
+(-) 359.76 201 T
+(-) 361.26 201 T
+(-) 362.76 201 T
+(-) 364.25 201 T
+(-) 365.75 201 T
+(-) 367.25 201 T
+(-) 368.75 201 T
+(-) 370.25 201 T
+(-) 371.75 201 T
+(-) 373.24 201 T
+(-) 374.74 201 T
+(-) 376.24 201 T
+(-) 377.74 201 T
+(-) 379.24 201 T
+(-) 380.74 201 T
+(-) 382.24 201 T
+(-) 383.73 201 T
+(-) 385.23 201 T
+(-) 386.73 201 T
+(-) 388.23 201 T
+(-) 389.73 201 T
+(-) 391.23 201 T
+(-) 392.73 201 T
+(-) 392.91 201 T
+6 F
+(\350) 302 196.26 T
+(\370) 396.28 196.26 T
+(\346) 302 203.97 T
+(\366) 396.28 203.97 T
+2 F
+(step) 409.15 200.79 T
+2 7 Q
+(curveFactor) 424.1 203.55 T
+6 9 Q
+(\264) 401.97 200.79 T
+(\264) 294.81 200.79 T
+2 F
+(=) 239 200.79 T
+72 63 540 720 C
+0 0 612 792 C
+72 63 540 720 C
+126 93.05 540 127.03 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+2 9 Q
+0 X
+0 0 0 1 0 0 0 K
+(curveFactor\050curve\051) 273.78 108.54 T
+(1) 356.81 108.54 T
+(curve) 371.06 113.54 T
+(1000) 372.05 102.52 T
+(-) 371.06 108.54 T
+(-) 372.55 108.54 T
+(-) 374.05 108.54 T
+(-) 375.55 108.54 T
+(-) 377.05 108.54 T
+(-) 378.55 108.54 T
+(-) 380.05 108.54 T
+(-) 381.55 108.54 T
+(-) 383.04 108.54 T
+(-) 384.54 108.54 T
+(-) 386.04 108.54 T
+(-) 387.54 108.54 T
+(-) 388.05 108.54 T
+(+) 363.55 108.54 T
+(=) 347.24 108.54 T
+72 63 540 720 C
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "60" 72
+%%Page: "61" 73
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(61) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(With the result that a) 108 712 T
+1 F
+(mk_curve) 211.66 712 T
+2 F
+( of zero causes the distance moved to increase linearly) 258.3 712 T
+(from) 108 699 T
+1 F
+(action_delta) 134.33 699 T
+2 F
+( to) 194.33 699 T
+(. A negative) 326.66 699 T
+1 F
+(mk_curve) 387.98 699 T
+2 F
+( causes an initial) 434.63 699 T
+(sharp increase in acceleration that tapers off, and a positive curve yields a slower initial) 108 686 T
+(increase in acceleration followed by a sharp increase as the number of pointer events gen-) 108 673 T
+(erated by the action approaches) 108 660 T
+1 F
+(mk_time_to_max) 262.28 660 T
+2 F
+(. The legal values for) 344.27 660 T
+1 F
+(mk_curve) 448.91 660 T
+2 F
+( are) 495.55 660 T
+(between -1000 and 1000.) 108 647 T
+(A distance vs. time graph of the pointer motion is shown in Figure 10.1.) 108 626 T
+3 F
+(Figur) 219.15 252 T
+(e 10.1 MouseK) 247.6 252 T
+(eys Acceleration) 322.96 252 T
+0 F
+(10.6) 72 224 T
+(Contr) 108 224 T
+(ols f) 139.75 224 T
+(or Better K) 164.18 224 T
+(e) 226.01 224 T
+(yboar) 232.5 224 T
+(d Access b) 264.94 224 T
+(y Ph) 328.06 224 T
+(ysicall) 353.16 224 T
+(y Impaired P) 389.68 224 T
+(er) 460.68 224 T
+(sons) 471.84 224 T
+2 F
+(The Xkb extension includes several controls specifically aimed at making keyboard use) 108 204 T
+(more effective for physically impaired people. All of these controls are boolean controls) 108 191 T
+(and may be individually enabled and disabled, as well as configured to tune their specific) 108 178 T
+(behavior. The behavior of these controls is based on the AccessDOS package) 108 165 T
+2 9.6 Q
+(1) 479.24 169.8 T
+2 12 Q
+(.) 484.04 165 T
+72 114 540 134 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 122 204 122 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+0 0 612 792 C
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(1. AccessDOS pro) 72 107.33 T
+(vides access to the DOS operating system for people with ph) 148.5 107.33 T
+(ysical impairments and w) 391.75 107.33 T
+(as de) 494.14 107.33 T
+(v) 514.16 107.33 T
+(el-) 519.01 107.33 T
+(oped by the T) 72 95.33 T
+(race R&D Center at the Uni) 126.92 95.33 T
+(v) 238.59 95.33 T
+(ersity of W) 243.44 95.33 T
+(isconsin. F) 288.03 95.33 T
+(or more information on AccessDOS, contact the) 331.22 95.33 T
+(T) 72 83.33 T
+(race R&D Center) 77.76 83.33 T
+(, W) 147.34 83.33 T
+(aisman Center and Department of Industrial Engineering, Uni) 160.98 83.33 T
+(v) 407.91 83.33 T
+(ersity of W) 412.76 83.33 T
+(isconsin-Madison) 457.35 83.33 T
+(WI 53705-2280. Phone: 608-262-6966. e-mail: info@trace.wisc.edu.) 72 71.33 T
+209.66 694.75 326.66 706.75 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+2 9 Q
+0 X
+0 0 0 1 0 0 0 K
+(mk_max_speed) 212.79 699 T
+(action_delta) 278.72 699 T
+6 F
+(\264) 271.53 699 T
+(\050) 209.15 699 T
+(\051) 323.35 699 T
+0 0 612 792 C
+72 63 540 720 C
+107.72 273 504.28 622 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+143.72 595 143.72 388 2 L
+0.5 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+404.72 388 143.72 388 2 L
+N
+186.72 388 186.72 379 2 L
+4 H
+N
+194.82 388 194.82 379 2 L
+0.5 H
+N
+202.93 388 202.93 379 2 L
+N
+211.03 388 211.03 379 2 L
+N
+219.13 388 219.13 379 2 L
+N
+227.24 388 227.24 379 2 L
+N
+235.34 388 235.34 379 2 L
+N
+243.45 388 243.45 379 2 L
+N
+251.55 388 251.55 379 2 L
+N
+259.65 388 259.65 379 2 L
+N
+267.76 388 267.76 379 2 L
+N
+275.86 388 275.86 379 2 L
+N
+283.97 388 283.97 379 2 L
+N
+292.07 388 292.07 379 2 L
+N
+300.17 388 300.17 379 2 L
+N
+308.28 388 308.28 379 2 L
+N
+316.39 388 316.39 379 2 L
+4 H
+N
+143.59 377 161.72 361 2 L
+0.5 H
+N
+185.84 375.75 161.72 361 2 L
+N
+2 12 Q
+(mk_delay) 140.22 349 T
+342.82 377 349.19 361 2 L
+N
+349.19 362.11 351.07 378.61 2 L
+N
+(mk_interval) 321.32 349.75 T
+184.29 375.77 240.96 355.77 2 L
+N
+316.51 374.66 238.73 354.66 2 L
+N
+(mk_time_to_max) 200.84 345.2 T
+143.72 424 134.72 424 2 L
+N
+(d) 119.72 523.82 T
+(i) 119.72 511.82 T
+(s) 119.72 499.82 T
+(t) 119.72 487.82 T
+(a) 119.72 475.82 T
+(n) 119.72 463.82 T
+(c) 119.72 451.82 T
+(e) 119.72 439.82 T
+143.72 424 143.72 388 2 L
+4 H
+N
+(Action delta) 161.72 406 T
+143.72 424 184.29 424 2 L
+N
+143.72 460 134.72 460 2 L
+0.5 H
+N
+143.72 496 134.72 496 2 L
+N
+143.72 532 134.72 532 2 L
+N
+143.72 568 134.72 568 2 L
+N
+157.07 410.77 147.62 423 2 L
+N
+157.07 410.77 147.07 391.33 2 L
+N
+317.62 570.78 400.4 570.78 2 L
+4 H
+N
+(\050msec\051) 140.22 337 T
+326.25 388.33 326.25 379.33 2 L
+0.5 H
+N
+334.36 388.33 334.36 379.33 2 L
+N
+342.46 388.33 342.46 379.33 2 L
+N
+350.57 388.33 350.57 379.33 2 L
+N
+358.67 388.33 358.67 379.33 2 L
+N
+366.77 388.33 366.77 379.33 2 L
+N
+374.88 388.33 374.88 379.33 2 L
+N
+382.98 388.33 382.98 379.33 2 L
+N
+391.09 388.33 391.09 379.33 2 L
+N
+399.19 388.33 399.19 379.33 2 L
+N
+(\050count\051) 200.84 333.2 T
+(\050msec\051) 321.32 337.75 T
+(mk_max_speed * Action delta) 348.48 489.61 T
+335.4 493 315.96 565.78 2 L
+N
+335.96 493 317.62 395.22 2 L
+N
+187.07 425.22 315.96 570.22 2 L
+4 H
+N
+(mk_curve=0) 355.4 312.44 T
+90 180 131.11 143.89 315.4 426.89 A
+(mk_curve<0) 355.4 300.44 T
+(mk_curve>0) 355.4 288.44 T
+8 X
+270 360 128.33 144.45 187.07 569.11 A
+347.07 290.22 315.4 290.22 2 L
+N
+349.85 315.77 313.73 315.77 2 L
+0 X
+N
+348.73 303.55 312.07 304.11 2 L
+N
+72 63 540 720 C
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "61" 73
+%%Page: "62" 74
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(62) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+0 12 Q
+(10.6.1) 72 712 T
+(The AccessXK) 108 712 T
+(e) 191.18 712 T
+(ys Contr) 197.68 712 T
+(ol) 246.11 712 T
+2 F
+(Enabling or disabling the keyboard controls through a graphical user interface may be) 108 692 T
+(impossible for people who need to use the controls. For example, a user who needs) 108 679 T
+5 F
+-0.11 -0.6 (SlowKeys) 108 666 B
+2 F
+-0.05 ( \050see section 10.6.6\051 may not even be able to start the graphical application, let) 160.8 666 P
+(alone use it, if) 108 653 T
+5 F
+-0.6 (SlowKeys) 178.99 653 S
+2 F
+( is not enabled. To allow easier access to some of the controls,) 231.79 653 T
+(the) 108 640 T
+5 F
+-0.6 (AccessXKeys) 125.66 640 S
+2 F
+( control provides a set of special key sequences similar to those avail-) 198.27 640 T
+(able in AccessDOS.) 108 627 T
+(When the) 108 606 T
+5 F
+-0.6 (AccessXKeys) 157.32 606 S
+2 F
+( control is enabled, the user can turn controls on or off from the) 229.92 606 T
+(keyboard by entering the following standard key sequences:) 108 593 T
+2 11 Q
+(\245) 126 572.67 T
+(Holding do) 139.68 572.67 T
+(wn a shift k) 189.21 572.67 T
+(e) 240.74 572.67 T
+(y by itself for eight seconds toggles the) 245.46 572.67 T
+5 12 Q
+-0.6 (SlowKeys) 420.83 572.67 S
+2 11 Q
+( control.) 473.63 572.67 T
+(\245) 126 560.67 T
+(Pressing and releasing the left or right) 139.68 560.67 T
+4 F
+(Shift) 309.85 560.67 T
+2 F
+( k) 331.86 560.67 T
+(e) 340 560.67 T
+(y \336v) 344.72 560.67 T
+(e times in a ro) 364.42 560.67 T
+(w) 426.47 560.67 T
+(, without an) 433.7 560.67 T
+(y inter-) 485.78 560.67 T
+(v) 139.68 548.67 T
+(ening k) 145.01 548.67 T
+(e) 177.6 548.67 T
+(y e) 182.32 548.67 T
+(v) 195.18 548.67 T
+(ents and with less than 30 seconds delay between consecuti) 200.51 548.67 T
+(v) 461.44 548.67 T
+(e presses,) 466.78 548.67 T
+(toggles the state of the) 139.68 536.67 T
+5 12 Q
+-0.6 (StickyKeys) 241.42 536.67 S
+2 11 Q
+( control.) 307.42 536.67 T
+(\245) 126 524.67 T
+(Simultaneously operating tw) 139.68 524.67 T
+(o or more modi\336er k) 266.07 524.67 T
+(e) 357.01 524.67 T
+(ys deacti) 361.73 524.67 T
+(v) 400.25 524.67 T
+(ates the) 405.47 524.67 T
+5 12 Q
+-0.6 (StickyKeys) 441.52 524.67 S
+2 11 Q
+(control.) 139.68 512.67 T
+2 12 Q
+-0.08 (When the) 108 494 P
+5 F
+-0.18 -0.6 (AccessXKeys) 157.16 494 B
+2 F
+-0.08 ( control is disabled, Xkb does not look for the above special key) 229.76 494 P
+(sequences.) 108 481 T
+(Some of these key sequences optionally generate audible feedback of the change in state,) 108 460 T
+(as described in section 10.6.3, or) 108 447 T
+5 F
+-0.6 (XkbControlsNotify) 268.31 447 S
+2 F
+( events, described in section) 380.51 447 T
+(10.11.) 108 434 T
+0 F
+(10.6.2) 72 409 T
+(The AccessXTimeout Contr) 108 409 T
+(ol) 264.46 409 T
+2 F
+(In environments where computers are shared, features such as) 108 389 T
+5 F
+-0.6 (SlowKeys) 408.58 389 S
+2 F
+( present a prob-) 461.38 389 T
+-0.15 (lem: if) 108 376 P
+5 F
+-0.33 -0.6 (SlowKeys) 142.37 376 B
+2 F
+-0.15 ( is on, the keyboard can appear to be unresponsive because keys are not) 195.17 376 P
+(accepted until they are held for a certain period of time. To help solve this problem, Xkb) 108 363 T
+-0.3 (provides an) 108 350 P
+5 F
+-0.66 -0.6 (AccessXTimeout) 166.05 350 B
+2 F
+-0.3 ( control to automatically change the enabled/disabled state) 258.45 350 P
+(of any boolean controls and to change the value of the) 108 337 T
+5 F
+-0.6 (AccessXKeys) 370.94 337 S
+2 F
+( and) 443.55 337 T
+5 F
+-0.6 (AccessX-) 466.87 337 S
+-0.6 (Feedback) 108 324 S
+2 F
+( control attributes if the keyboard is idle for a specified period of time.) 160.8 324 T
+(When a timeout as specified by) 108 303 T
+5 F
+-0.6 (AccessXTimeout) 261.97 303 S
+2 F
+( occurs and a control is consequently) 354.37 303 T
+(modified, Xkb generates an) 108 290 T
+5 F
+-0.6 (XkbControlsNotify) 243.64 290 S
+2 F
+( event. For more information on) 355.84 290 T
+5 F
+-0.6 (Xkb-) 512.82 290 S
+-0.6 (ControlsNotify) 108 277 S
+2 F
+( events, refer to section 10.11.) 200.4 277 T
+(Use) 108 256 T
+1 F
+(XkbGetAccessXT) 129.66 256 T
+(imeout) 211.64 256 T
+2 F
+( to query the current) 244.31 256 T
+5 F
+-0.6 (AccessXTimeout) 344.62 256 S
+2 F
+( options for a key-) 437.02 256 T
+(board device.) 108 243 T
+2 11 Q
+(Bool) 108 222.67 T
+3 F
+(XkbGetAccessXT) 132.15 222.67 T
+(imeout) 215.66 222.67 T
+2 F
+(\050) 248.04 222.67 T
+1 F
+(display) 251.7 222.67 T
+2 F
+(,) 282.77 222.67 T
+1 F
+( de) 285.52 222.67 T
+(vice_spec) 298.49 222.67 T
+2 F
+(,) 341.24 222.67 T
+1 F
+( timeout_rtrn) 343.99 222.67 T
+2 F
+(,) 402.36 222.67 T
+1 F
+( ctrls_mask_rtrn) 405.11 222.67 T
+2 F
+(,) 478.14 222.67 T
+1 F
+(ctrls_values_rtrn) 252 209.67 T
+2 F
+(,) 327.78 209.67 T
+1 F
+( options_mask_rtrn, options_values_rtrn) 330.53 209.67 T
+2 F
+(\051) 510.51 209.67 T
+(Display *) 126 196.67 T
+1 F
+(display) 234 196.67 T
+2 F
+(;) 265.78 196.67 T
+(/* connection to X serv) 342 196.67 T
+(er */) 444.49 196.67 T
+(unsigned int) 126 183.67 T
+1 F
+(de) 234 183.67 T
+(vice_spec) 244.22 183.67 T
+2 F
+(;) 286.98 183.67 T
+(/* de) 342 183.67 T
+(vice to query) 363.42 183.67 T
+(, or) 420.13 183.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 437.55 183.67 S
+2 F
+( */) 516.2 183.67 T
+(unsigned short *) 126 170.67 T
+1 F
+(timeout_rtrn) 234 170.67 T
+2 F
+(;) 289.62 170.67 T
+(/* delay until AccessXT) 342 170.67 T
+(imeout, seconds */) 448.24 170.67 T
+(unsigned int *) 126 157.67 T
+1 F
+(ctrls_mask_rtrn) 234 157.67 T
+2 F
+(;) 304.28 157.67 T
+(/* back\336lled with controls to modify */) 342 157.67 T
+(unsigned int *) 126 144.67 T
+1 F
+(ctrls_values_rtrn) 234 144.67 T
+2 F
+(;) 309.78 144.67 T
+-0.18 (/* back\336lled with on/of) 342 144.67 P
+-0.18 (f status for controls */) 444.16 144.67 P
+(unsigned short *) 126 131.67 T
+1 F
+(opts_mask_rtrn) 234 131.67 T
+2 F
+(;) 303.06 131.67 T
+(/* back\336lled with) 342 131.67 T
+1 F
+(ax_options) 421.75 131.67 T
+2 F
+( to modify */) 470.03 131.67 T
+(unsigned short *) 126 118.67 T
+1 F
+(opts_values_rtrn) 234 118.67 T
+2 F
+(;) 308.56 118.67 T
+(/* back\336lled with v) 342 118.67 T
+(alues for) 426.98 118.67 T
+1 F
+(ax_options) 467.91 118.67 T
+2 F
+( */) 516.18 118.67 T
+1 12 Q
+-0.24 (XkbGetAccessXT) 108 99 P
+-0.24 (imeout) 189.98 99 P
+2 F
+-0.24 ( sends a request to the X server to obtain the current values for the) 222.65 99 P
+5 F
+-0.6 (AccessXTimeout) 108 86 S
+2 F
+( attributes, waits for a reply, and backfills the values) 200.4 86 T
+(into the appropri-) 454.36 86 T
+(ate ar) 108 73 T
+(guments) 134.1 73 T
+(.) 174.77 73 T
+(The parameters) 180.77 73 T
+1 F
+(opts_mask_rtrn) 258.07 73 T
+2 F
+( and) 333.41 73 T
+1 F
+(opts_values_rtrn) 356.74 73 T
+2 F
+( are backfilled with) 438.07 73 T
+FMENDPAGE
+%%EndPage: "62" 74
+%%Page: "63" 75
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(63) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(the options to modify and the values for) 108 712 T
+1 F
+(ax_options) 302.65 712 T
+2 F
+(, which is a field in the) 355.32 712 T
+5 F
+-0.6 (XkbCon-) 467.98 712 S
+-0.6 (trolsRec) 108 699 S
+2 F
+( structure \050see section 10.8\051.) 160.8 699 T
+1 F
+(XkbGetAccessXT) 299.1 699 T
+(imeout) 381.08 699 T
+2 F
+(returns) 416.75 699 T
+5 F
+-0.6 (True) 452.82 699 S
+2 F
+( if success-) 479.22 699 T
+(ful; if a compatible version of the Xkb extension is not available in the server,) 108 686 T
+1 F
+(XkbGetAccessXT) 108 673 T
+(imeout) 189.98 673 T
+2 F
+( returns) 222.65 673 T
+5 F
+-0.6 (False) 261.97 673 S
+2 F
+(.) 294.97 673 T
+(To configure the) 108 652 T
+5 F
+-0.6 (AccessXTimeout) 190.98 652 S
+2 F
+( options for a keyboard device, use) 283.38 652 T
+1 F
+(XkbSetAccessX-) 454.01 652 T
+(Timeout) 108 639 T
+2 F
+(.) 147.34 639 T
+2 11 Q
+(Bool) 108 618.67 T
+3 F
+(XkbSetAccessXT) 132.15 618.67 T
+(imeout) 213.21 618.67 T
+2 F
+(\050) 245.6 618.67 T
+1 F
+(display) 249.26 618.67 T
+2 F
+(,) 280.33 618.67 T
+1 F
+( de) 283.08 618.67 T
+(vice_spec, timeout, ctrls_mask, ctrls_values,) 296.05 618.67 T
+(opts_mask, opts_values) 252 605.67 T
+2 F
+(\051) 355.88 605.67 T
+(Display *) 126 592.67 T
+1 F
+(display) 234 592.67 T
+2 F
+(;) 265.78 592.67 T
+(/* connection to X serv) 306 592.67 T
+(er */) 408.49 592.67 T
+(unsigned int) 126 579.67 T
+1 F
+(de) 234 579.67 T
+(vice_spec) 244.22 579.67 T
+2 F
+(;) 286.98 579.67 T
+(/* de) 306 579.67 T
+(vice to con\336gure, or) 327.42 579.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 418.76 579.67 S
+2 F
+( */) 497.41 579.67 T
+(unsigned short) 126 566.67 T
+1 F
+(timeout) 234 566.67 T
+2 F
+(;) 267 566.67 T
+(/* seconds idle until AccessXT) 306 566.67 T
+(imeout occurs */) 442.49 566.67 T
+(unsigned int) 126 553.67 T
+1 F
+(ctrls_mask) 234 553.67 T
+2 F
+(;) 281.66 553.67 T
+(/* boolean controls to modify */) 306 553.67 T
+(unsigned int) 126 540.67 T
+1 F
+(ctrls_values) 234 540.67 T
+2 F
+(;) 287.16 540.67 T
+(/* ne) 306 540.67 T
+(w bits for controls selected by) 327.42 540.67 T
+1 F
+(ctrls_mask) 462.45 540.67 T
+2 F
+( */) 510.12 540.67 T
+(unsigned short) 126 527.67 T
+1 F
+(opts_mask) 234 527.67 T
+2 F
+(;) 280.44 527.67 T
+(/*) 306 527.67 T
+1 F
+(ax_options) 317.31 527.67 T
+2 F
+( to change */) 365.59 527.67 T
+(unsigned short) 126 514.67 T
+1 F
+(opts_values) 234 514.67 T
+2 F
+(;) 285.94 514.67 T
+(/* ne) 306 514.67 T
+(w bits for) 327.42 514.67 T
+1 F
+(ax_options) 372.33 514.67 T
+2 F
+( selected by) 420.61 514.67 T
+1 F
+(opts_mask) 475.29 514.67 T
+2 F
+( */) 521.73 514.67 T
+1 12 Q
+-0.06 (timeout) 108 495 P
+2 F
+-0.06 ( specifies the number of seconds the keyboard must be idle before the controls are) 144 495 P
+(modified.) 108 482 T
+1 F
+(ctrls_mask) 157.33 482 T
+2 F
+( specifies what controls are to be enabled or disabled, and) 209.33 482 T
+1 F
+-0.02 (ctrls_values) 108 469 P
+2 F
+-0.02 ( specifies whether those controls are to be enabled or disabled. The bit values) 166 469 P
+(correspond to those for enabling and disabling boolean controls \050see section 10.1.1\051. The) 108 456 T
+1 F
+-0.02 (opts_mask) 108 443 P
+2 F
+-0.02 ( field specifies which attributes of the) 158.66 443 P
+5 F
+-0.05 -0.6 (AccessXKeys) 342.14 443 B
+2 F
+-0.02 ( and) 414.74 443 P
+5 F
+-0.05 -0.6 (AccessXFeedback) 438.02 443 B
+2 F
+(controls are to be changed, and) 108 430 T
+1 F
+(opts_values) 260.29 430 T
+2 F
+( specifies the new values for those options.) 316.96 430 T
+-0.46 (The bit values correspond to those for the) 108 417 P
+1 F
+-0.46 (ax_options) 306.93 417 P
+2 F
+-0.46 ( field of an) 359.6 417 P
+5 F
+-1.02 -0.6 (XkbDescRec) 413.07 417 B
+2 F
+-0.46 ( \050see section) 479.07 417 P
+(10.8\051.) 108 404 T
+1 11 Q
+(XkbSetAccessXT) 108 383 T
+(imeout) 180.71 383 T
+2 12 Q
+( sends a request to configure the) 210.65 383 T
+5 F
+-0.6 (AccessXTimeout) 368.28 383 S
+2 F
+( control to the) 460.69 383 T
+(server.) 108 370 T
+(It does not wait for a reply, and normally returns) 143.32 370 T
+5 F
+-0.6 (True) 379.61 370 S
+2 F
+(. If a compatible version of) 406.01 370 T
+(the Xkb extension is not available in the server,) 108 357 T
+1 11 Q
+(XkbSetAccessXT) 339.3 357 T
+(imeout) 412.01 357 T
+2 12 Q
+( returns) 441.95 357 T
+5 F
+-0.6 (False) 481.28 357 S
+2 F
+(.) 514.28 357 T
+0 F
+(10.6.3) 72 332 T
+(The AccessXFeedbac) 108 332 T
+(k Contr) 231.14 332 T
+(ol) 272.9 332 T
+2 F
+-0.01 (Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeat-) 108 312 P
+(ing, Xkb can provide feedback for the controls by using special beep codes. Use the) 108 299 T
+5 F
+-0.6 (AccessXFeedback) 108 286 S
+2 F
+( control to configure the specific types of operations that generate) 207 286 T
+(feedback.) 108 273 T
+-0.51 (There is no convenience function for modifying the) 108 252 P
+5 F
+-1.12 -0.6 (AccessXFeedback) 354.53 252 B
+2 F
+-0.51 ( control, although) 453.54 252 P
+(the feedback as a whole can be enabled or disabled just as other boolean controls are \050see) 108 239 T
+(section 10.1\051. Individual beep codes are turned on or off by modifying the following bits) 108 226 T
+(in the) 108 213 T
+1 F
+(ax_options) 138 213 T
+2 F
+( field of an) 190.67 213 T
+5 F
+-0.6 (XkbControlsRec) 245.99 213 S
+2 F
+( structure and using) 338.39 213 T
+1 F
+(XkbSetContr) 435.71 213 T
+(ols) 496.5 213 T
+2 F
+( \050see) 510.51 213 T
+(section 10.10\051:) 108 200 T
+3 F
+(T) 236.25 180 T
+(able 10.3 AccessXF) 243.15 180 T
+(eedback Masks) 344.17 180 T
+1 F
+(Action) 108 161 T
+(Beep Code) 267.75 161 T
+(ax_options bit) 405.75 161 T
+2 11 Q
+(LED turned on) 108 147.67 T
+(High-pitched beep) 267.75 147.67 T
+(XkbAX_IndicatorFBMask) 405.75 147.67 T
+(LED turned of) 108 134.67 T
+(f) 171.88 134.67 T
+(Lo) 267.75 134.67 T
+(w-pitched beep) 279.7 134.67 T
+(XkbAX_IndicatorFBMask) 405.75 134.67 T
+(More than one LED changed state) 108 121.67 T
+(T) 267.75 121.67 T
+(w) 273.59 121.67 T
+(o high-pitched beeps) 281.42 121.67 T
+(XkbAX_IndicatorFBMask) 405.75 121.67 T
+(Control turned on) 108 108.67 T
+(Rising tone) 267.75 108.67 T
+(XkbAX_FeatureFBMask) 405.75 108.67 T
+(Control turned of) 108 95.67 T
+(f) 184.11 95.67 T
+(F) 267.75 95.67 T
+(alling tone) 273.7 95.67 T
+(XkbAX_FeatureFBMask) 405.75 95.67 T
+-0.13 (More than one control changed state) 108 82.67 P
+(T) 267.75 82.67 T
+(w) 273.59 82.67 T
+(o high-pitched beeps) 281.42 82.67 T
+(XkbAX_FeatureFBMask) 405.75 82.67 T
+108 172 537 172 2 L
+V
+0.5 H
+0 Z
+N
+108 156 537 156 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "63" 75
+%%Page: "64" 76
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(64) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(Implementations that cannot generate continuous tones may generate multiple beeps) 108 529 T
+-0.02 (instead of falling and rising tones; for example, they can generate a high-pitched beep fol-) 108 516 P
+(lowed by a low-pitched beep instead of a continuous falling tone. Other implementations) 108 503 T
+(can only ring the bell with one fixed pitch. In these cases, use the) 108 490 T
+5 F
+-0.6 (XkbAX_DumbBellFBMask) 108 477 S
+2 F
+( bit of) 240 477 T
+1 F
+(ax_options) 271.67 477 T
+2 F
+( to indicate that the bell can only ring with a) 324.34 477 T
+(fixed pitch.) 108 464 T
+-0.38 (When any of the above feedbacks occur, Xkb may generate a) 108 443 P
+5 F
+-0.84 -0.6 (XkbBellNotify) 401.03 443 B
+2 F
+-0.38 ( event \050see) 486.83 443 P
+(section 9.4\051.) 108 430 T
+0 F
+(10.6.4) 72 405 T
+(AccessXNotify Events) 108 405 T
+2 F
+(The server can generate) 108 385 T
+5 F
+-0.6 (XkbAccessXNotify) 225.28 385 S
+2 F
+( events for some of the global keyboard) 330.88 385 T
+(controls. The structure for the) 108 372 T
+5 F
+-0.6 (XkbAccessXNotify) 253.97 372 S
+2 F
+( event type is as follows:) 359.57 372 T
+2 11 Q
+(typedef struct {) 108 351.67 T
+2 12 Q
+(int) 126 338.67 T
+(type;) 225 338.67 T
+(/*) 306 338.67 T
+2 11 Q
+(Xkb e) 318.34 338.67 T
+(xtension base e) 344.75 338.67 T
+(v) 411.68 338.67 T
+(ent code) 417.02 338.67 T
+2 12 Q
+( */) 453.98 338.67 T
+(unsigned long) 126 325.67 T
+(serial;) 225 325.67 T
+(/*) 306 325.67 T
+2 11 Q
+(X serv) 318.34 325.67 T
+(er serial number for e) 347.19 325.67 T
+(v) 441.6 325.67 T
+(ent) 446.94 325.67 T
+2 12 Q
+( */) 460.38 325.67 T
+(Bool) 126 312.67 T
+(send_event;) 225 312.67 T
+(/*) 306 312.67 T
+5 F
+-0.6 (True) 318.34 312.67 S
+2 11 Q
+( => synthetically generated) 344.74 312.67 T
+2 12 Q
+( */) 464.37 312.67 T
+(Display *) 126 299.67 T
+(display;) 225 299.67 T
+(/*) 306 299.67 T
+2 11 Q
+(serv) 318.34 299.67 T
+(er connection where e) 336.5 299.67 T
+(v) 433.04 299.67 T
+(ent generated) 438.38 299.67 T
+2 12 Q
+(*/) 500.08 299.67 T
+(Time) 126 286.67 T
+(time;) 225 286.67 T
+(/*) 306 286.67 T
+2 11 Q
+(serv) 318.34 286.67 T
+(er time when e) 336.5 286.67 T
+(v) 401.29 286.67 T
+(ent generated) 406.62 286.67 T
+2 12 Q
+( */) 465.57 286.67 T
+(int) 126 273.67 T
+(xkb_type;) 225 273.67 T
+(/*) 306 273.67 T
+5 11 Q
+-0.33 (XkbAccessXNotify) 318.34 273.67 S
+2 12 Q
+( */) 418.66 273.67 T
+(int) 126 260.67 T
+(device) 225 260.67 T
+2 11 Q
+(;) 256.32 260.67 T
+(/* Xkb de) 306 260.67 T
+(vice ID, will not be) 349.11 260.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 437.1 260.67 S
+2 F
+( */) 518.61 260.67 T
+(int) 126 247.67 T
+(detail;) 225 247.67 T
+(/* XkbAXN_* */) 306 247.67 T
+(K) 126 234.67 T
+(e) 133.67 234.67 T
+(yCode) 138.39 234.67 T
+(k) 225 234.67 T
+(e) 230.39 234.67 T
+(ycode;) 235.11 234.67 T
+(/* k) 306 234.67 T
+(e) 322.7 234.67 T
+(y of e) 327.42 234.67 T
+(v) 352.19 234.67 T
+(ent */) 357.52 234.67 T
+(int) 126 221.67 T
+(slo) 225 221.67 T
+(wK) 237.56 221.67 T
+(e) 253.17 221.67 T
+(ysDelay;) 257.89 221.67 T
+(/* current Slo) 306 221.67 T
+(wK) 365.61 221.67 T
+(e) 381.22 221.67 T
+(ys delay */) 385.94 221.67 T
+(int) 126 208.67 T
+(debounceDelay;) 225 208.67 T
+(/* current debounce delay */) 306 208.67 T
+(}) 108 195.67 T
+3 F
+(XkbAccessXNotifyEv) 116.03 195.67 T
+(ent) 217.35 195.67 T
+2 F
+(;) 232.01 195.67 T
+2 12 Q
+(The) 108 176 T
+1 F
+(detail) 129.66 176 T
+2 F
+( field describes what AccessX event just occurred and can be any of the values) 157 176 T
+(in Table 10.4.) 108 163 T
+2 11 Q
+(Slo) 108 679.67 T
+(wK) 122.4 679.67 T
+(e) 138.01 679.67 T
+(ys and BounceK) 142.73 679.67 T
+(e) 215.16 679.67 T
+(ys about) 219.88 679.67 T
+(to be turned on or of) 108 668.67 T
+(f) 197.85 668.67 T
+(Three high-pitched beeps) 267.75 679.67 T
+(XkbAX_Slo) 405.75 679.67 T
+(wW) 460.48 679.67 T
+(arnFBMask) 477.92 679.67 T
+(Slo) 108 655.67 T
+(wK) 122.4 655.67 T
+(e) 138.01 655.67 T
+(ys k) 142.73 655.67 T
+(e) 160.65 655.67 T
+(y pressed) 165.37 655.67 T
+(Medium-pitched beep) 267.75 655.67 T
+(XkbAX_SKPressFBMask) 405.75 655.67 T
+(Slo) 108 642.67 T
+(wK) 122.4 642.67 T
+(e) 138.01 642.67 T
+(ys k) 142.73 642.67 T
+(e) 160.65 642.67 T
+(y accepted) 165.37 642.67 T
+(Medium-pitched beep) 267.75 642.67 T
+(XkbAX_SKAcceptFBMask) 405.75 642.67 T
+(Slo) 108 629.67 T
+(wK) 122.4 629.67 T
+(e) 138.01 629.67 T
+(ys k) 142.73 629.67 T
+(e) 160.65 629.67 T
+(y rejected) 165.37 629.67 T
+(Lo) 267.75 629.67 T
+(w-pitched beep) 279.7 629.67 T
+(XkbAX_SKRejectFBMask) 405.75 629.67 T
+(Accepted Slo) 108 616.67 T
+(wK) 166.68 616.67 T
+(e) 182.29 616.67 T
+(ys k) 187.01 616.67 T
+(e) 204.93 616.67 T
+(y released) 209.65 616.67 T
+(Medium-pitched beep) 267.75 616.67 T
+(XkbAX_SKReleaseFBMask) 405.75 616.67 T
+(BounceK) 108 603.67 T
+(e) 149.27 603.67 T
+(ys k) 153.99 603.67 T
+(e) 171.91 603.67 T
+(y rejected) 176.63 603.67 T
+(Lo) 267.75 603.67 T
+(w-pitched beep) 279.7 603.67 T
+(XkbAX_BKRejectFBMask) 405.75 603.67 T
+(Stick) 108 590.67 T
+(yK) 130.45 590.67 T
+(e) 143.62 590.67 T
+(ys k) 148.34 590.67 T
+(e) 166.26 590.67 T
+(y latched) 170.98 590.67 T
+(Lo) 267.75 590.67 T
+(w-pitched beep follo) 279.7 590.67 T
+(wed by) 370.46 590.67 T
+(high-pitched beep) 267.75 579.67 T
+(XkbAX_Stick) 405.75 590.67 T
+(yK) 468.53 590.67 T
+(e) 481.69 590.67 T
+(ysFBMask) 486.41 590.67 T
+(Stick) 108 566.67 T
+(yK) 130.45 566.67 T
+(e) 143.62 566.67 T
+(ys k) 148.34 566.67 T
+(e) 166.26 566.67 T
+(y lock) 170.98 566.67 T
+(ed) 198.06 566.67 T
+(High-pitched beep) 267.75 566.67 T
+(XkbAX_Stick) 405.75 566.67 T
+(yK) 468.53 566.67 T
+(e) 481.69 566.67 T
+(ysFBMask) 486.41 566.67 T
+(Stick) 108 553.67 T
+(yK) 130.45 553.67 T
+(e) 143.62 553.67 T
+(ys k) 148.34 553.67 T
+(e) 166.26 553.67 T
+(y unlock) 170.98 553.67 T
+(ed) 209.06 553.67 T
+(Lo) 267.75 553.67 T
+(w-pitched beep) 279.7 553.67 T
+(XkbAX_Stick) 405.75 553.67 T
+(yK) 468.53 553.67 T
+(e) 481.69 553.67 T
+(ysFBMask) 486.41 553.67 T
+3 12 Q
+(T) 254.66 143 T
+(able 10.4 AccessXNotify Ev) 261.56 143 T
+(ents) 404.42 143 T
+1 F
+(detail) 126 124 T
+(Reason) 252 124 T
+2 11 Q
+(XkbAXN_SKPress) 126 110.67 T
+(A k) 252 110.67 T
+(e) 268.08 110.67 T
+(y w) 272.8 110.67 T
+(as pressed when Slo) 288.88 110.67 T
+(wK) 377.51 110.67 T
+(e) 393.12 110.67 T
+(ys w) 397.84 110.67 T
+(as enabled.) 418.2 110.67 T
+(XkbAXN_SKAccept) 126 97.67 T
+(A k) 252 97.67 T
+(e) 268.08 97.67 T
+(y w) 272.8 97.67 T
+(as accepted \050held longer than the Slo) 288.88 97.67 T
+(wK) 450.52 97.67 T
+(e) 466.13 97.67 T
+(ys delay\051.) 470.85 97.67 T
+(XkbAXN_SKRelease) 126 84.67 T
+(An accepted Slo) 252 84.67 T
+(wK) 323.82 84.67 T
+(e) 339.43 84.67 T
+(ys k) 344.15 84.67 T
+(e) 362.07 84.67 T
+(y w) 366.79 84.67 T
+(as released.) 382.87 84.67 T
+(XkbAXN_SKReject) 126 71.67 T
+-0.1 (A k) 252 71.67 P
+-0.1 (e) 267.98 71.67 P
+-0.1 (y w) 272.7 71.67 P
+-0.1 (as rejected \050released before the Slo) 288.68 71.67 P
+-0.1 (wK) 441.53 71.67 P
+-0.1 (e) 457.14 71.67 P
+-0.1 (ys delay e) 461.86 71.67 P
+-0.1 (xpired\051.) 505.48 71.67 P
+3 12 Q
+(T) 236.25 712 T
+(able 10.3 AccessXF) 243.15 712 T
+(eedback Masks) 344.17 712 T
+1 F
+(Action) 108 693 T
+(Beep Code) 267.75 693 T
+(ax_options bit) 405.75 693 T
+108 704 537 704 2 L
+V
+0.5 H
+0 Z
+N
+108 688 537 688 2 L
+V
+N
+126 135 540 135 2 L
+V
+N
+126 119 540 119 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "64" 76
+%%Page: "65" 77
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(65) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(The) 108 618 T
+1 F
+(keycode) 129.66 618 T
+2 F
+( field reports the keycode of the key for which the event occurred. If the) 168.3 618 T
+(action is related to) 108 605 T
+5 F
+-0.6 (SlowKeys) 199.32 605 S
+2 F
+(, the) 252.12 605 T
+1 11 Q
+(slowKeysDelay) 275.79 605 T
+2 12 Q
+( field contains the current) 343.61 605 T
+5 F
+-0.6 (SlowKeys) 469.25 605 S
+2 F
+-0.36 (acceptance delay. If the action is related to) 108 592 P
+5 F
+-0.79 -0.6 (BounceKeys) 312.72 592 B
+2 F
+-0.36 (, the) 378.72 592 P
+1 11 Q
+-0.33 (debounceDelay) 401.67 592 P
+2 12 Q
+-0.36 ( field contains) 470.09 592 P
+(the current) 108 579 T
+5 F
+-0.6 (BounceKeys) 162.65 579 S
+2 F
+( debounce delay.) 228.65 579 T
+0 11 Q
+(Selecting for AccessX Events) 108 556.67 T
+2 12 Q
+(To receive) 108 538 T
+5 F
+-0.6 (XkbAccessXNotify) 161.98 538 S
+2 F
+( events under all possible conditions, use) 267.58 538 T
+1 F
+(XkbSelect-) 466.9 538 T
+(Events) 108 525 T
+2 F
+( \050see section 4.3\051 and pass) 139.99 525 T
+5 F
+-0.6 (XkbAccesXNotifyMask) 268.3 525 S
+2 F
+( in both) 393.7 525 T
+1 F
+(bits_to_c) 433.37 525 T
+(hang) 477.2 525 T
+(e) 501.08 525 T
+2 F
+( and) 506.4 525 T
+1 F
+(values_for_bits) 108 512 T
+2 F
+(.) 182 512 T
+(To receive) 108 491 T
+5 F
+-0.6 (XkbStateNotify) 161.98 491 S
+2 F
+( events only under certain conditions, use) 254.38 491 T
+1 F
+(XkbSelectEvent-) 456.35 491 T
+(Details) 108 478 T
+2 F
+( using) 142.67 478 T
+5 F
+-0.6 (XkbAccessXNotify) 174.67 478 S
+2 F
+( as the) 280.27 478 T
+1 F
+(e) 313.93 478 T
+(vent_type) 319.08 478 T
+2 F
+( and specifying the desired state) 365.07 478 T
+(changes in) 108 465 T
+1 F
+(bits_to_c) 161.99 465 T
+(hang) 205.81 465 T
+(e) 229.69 465 T
+2 F
+( and) 235.02 465 T
+1 F
+(values_for_bits) 258.35 465 T
+2 F
+( using mask bits from Table 10.5.) 332.35 465 T
+0 F
+(10.6.5) 72 296 T
+(Stic) 108 296 T
+(kyK) 129.77 296 T
+(e) 151.6 296 T
+(ys, RepeatK) 158.09 296 T
+(e) 226.6 296 T
+(ys, and MouseK) 233.09 296 T
+(e) 324.26 296 T
+(ys Events) 330.76 296 T
+2 F
+(The) 108 276 T
+5 F
+-0.6 (StickyKeys) 129.66 276 S
+2 F
+(,) 195.66 276 T
+5 F
+-0.6 (RepeatKeys) 201.66 276 S
+2 F
+(, and) 267.66 276 T
+5 F
+-0.6 (MouseKeys) 293.99 276 S
+2 F
+( controls do not generate specific) 353.39 276 T
+-0.08 (events. Instead, the latching, unlatching, locking, or unlocking of modifiers using) 108 263 P
+5 F
+-0.18 -0.6 (Stick-) 500.4 263 B
+-0.6 (yKeys) 108 250 S
+2 F
+( generates) 141 250 T
+5 F
+-0.6 (XkbStateNotify) 192.31 250 S
+2 F
+( events as described in section 5.4. Repeating keys) 284.71 250 T
+(generate normal) 108 237 T
+5 F
+-0.6 (KeyPress) 188.64 237 S
+2 F
+( and) 241.44 237 T
+5 F
+-0.6 (KeyRelease) 264.77 237 S
+2 F
+( events, though the auto-repeat can be) 330.77 237 T
+(detected using) 108 224 T
+5 F
+-0.6 (DetectableAutorepeat) 179.99 224 S
+2 F
+( \050see section 10.3.3\051. Finally,) 311.99 224 T
+5 F
+-0.6 (MouseKeys) 454.31 224 S
+2 F
+( gen-) 513.71 224 T
+(erates pointer events identical to those of the core pointer device.) 108 211 T
+0 F
+(10.6.6) 72 186 T
+(The Slo) 108 186 T
+(wK) 151.16 186 T
+(e) 168.98 186 T
+(ys Contr) 175.48 186 T
+(ol) 223.91 186 T
+2 F
+(Some users may accidentally bump keys while moving a hand or typing stick toward the) 108 166 T
+(key they want. Usually, the keys that are accidentally bumped are just hit for a very short) 108 153 T
+(period of time. The) 108 140 T
+5 F
+-0.6 (SlowKeys) 203.65 140 S
+2 F
+( control helps filter these accidental bumps by telling the) 256.45 140 T
+-0.01 (server to wait a specified period, called the) 108 127 P
+1 F
+-0.01 (SlowK) 316.88 127 P
+-0.01 (e) 347.8 127 P
+-0.01 (ys acceptance delay) 352.77 127 P
+2 F
+-0.01 (, before delivering) 448.72 127 P
+(key events. If the key is released before this period elapses, no key events are generated.) 108 114 T
+(Users can then bump any number of keys on their way to the one they want without acci-) 108 101 T
+-0.33 (dentally getting those characters. Once they have reached the key they want, they can then) 108 88 P
+2 11 Q
+(XkbAXN_BKAccept) 126 679.67 T
+(A k) 252 679.67 T
+(e) 268.08 679.67 T
+(y w) 272.8 679.67 T
+(as accepted by BounceK) 288.88 679.67 T
+(e) 397.05 679.67 T
+(ys.) 401.77 679.67 T
+(XkbAXN_BKReject) 126 666.67 T
+(A k) 252 666.67 T
+(e) 268.08 666.67 T
+(y w) 272.8 666.67 T
+(as rejected \050pressed before the BounceK) 288.88 666.67 T
+(e) 466.07 666.67 T
+(ys delay) 470.79 666.67 T
+(e) 252 655.67 T
+(xpired\051.) 256.72 655.67 T
+(XkbAXN_AXKW) 126 642.67 T
+(arning) 207.6 642.67 T
+(AccessXK) 252 642.67 T
+(e) 298.76 642.67 T
+(ys is about to turn on/of) 303.48 642.67 T
+(f Stick) 408.01 642.67 T
+(yK) 436.88 642.67 T
+(e) 450.04 642.67 T
+(ys or BounceK) 454.76 642.67 T
+(e) 520.48 642.67 T
+(ys.) 525.2 642.67 T
+3 12 Q
+(T) 219.83 445 T
+(able 10.5 AccessXNotify Ev) 226.73 445 T
+(ent Details) 369.59 445 T
+1 F
+(XkbAccessXNotify Event Details) 108 426 T
+(V) 270 426 T
+(alue) 276 426 T
+(Cir) 320.4 426 T
+(cumstances) 335.96 426 T
+2 11 Q
+(XkbAXN_SKPressMask) 108 412.67 T
+(\0501<<0\051) 270 412.67 T
+(Slo) 320.4 412.67 T
+(w k) 334.8 412.67 T
+(e) 350.88 412.67 T
+(y press noti\336cation w) 355.6 412.67 T
+(anted) 449.9 412.67 T
+(XkbAXN_SKAcceptMask) 108 399.67 T
+(\0501<<1\051) 270 399.67 T
+(Slo) 320.4 399.67 T
+(w k) 334.8 399.67 T
+(e) 350.88 399.67 T
+(y accept noti\336cation w) 355.6 399.67 T
+(anted) 455.39 399.67 T
+(XkbAXN_SKRejectMask) 108 386.67 T
+(\0501<<2\051) 270 386.67 T
+(Slo) 320.4 386.67 T
+(w k) 334.8 386.67 T
+(e) 350.88 386.67 T
+(y reject noti\336cation w) 355.6 386.67 T
+(anted) 451.73 386.67 T
+(XkbAXN_SKReleaseMask) 108 373.67 T
+(\0501<<3\051) 270 373.67 T
+(Slo) 320.4 373.67 T
+(w k) 334.8 373.67 T
+(e) 350.88 373.67 T
+(y release noti\336cation w) 355.6 373.67 T
+(anted) 457.83 373.67 T
+(XkbAXN_BKAcceptMask) 108 360.67 T
+(\0501<<4\051) 270 360.67 T
+(Bounce k) 320.4 360.67 T
+(e) 362.14 360.67 T
+(y accept noti\336cation w) 366.86 360.67 T
+(anted) 466.65 360.67 T
+(XkbAXN_BKRejectMask) 108 347.67 T
+(\0501<<5\051) 270 347.67 T
+(Bounce k) 320.4 347.67 T
+(e) 362.14 347.67 T
+(y reject noti\336cation w) 366.86 347.67 T
+(anted) 462.99 347.67 T
+(XkbAXN_AXKW) 108 334.67 T
+(arningMask) 189.6 334.67 T
+(\0501<<6\051) 270 334.67 T
+(AccessX w) 320.4 334.67 T
+(arning noti\336cation w) 370.07 334.67 T
+(anted) 461.63 334.67 T
+(XkbAXN_AllEv) 108 321.67 T
+(entsMask) 182.38 321.67 T
+(\0500x7f\051) 270 321.67 T
+(All AccessX features noti\336cations w) 320.4 321.67 T
+(anted) 481.59 321.67 T
+3 12 Q
+(T) 254.66 712 T
+(able 10.4 AccessXNotify Ev) 261.56 712 T
+(ents) 404.42 712 T
+1 F
+(detail) 126 693 T
+(Reason) 252 693 T
+126 704 540 704 2 L
+V
+0.5 H
+0 Z
+N
+126 688 540 688 2 L
+V
+N
+108 437 522 437 2 L
+V
+N
+108 421 522 421 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "65" 77
+%%Page: "66" 78
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(66) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(hold the desired key long enough for the computer to accept it.) 108 712 T
+5 F
+-0.6 (SlowKeys) 412.28 712 S
+2 F
+( is a boolean) 465.08 712 T
+(control with one configurable attribute.) 108 699 T
+(When the) 108 678 T
+5 F
+-0.6 (SlowKeys) 157.32 678 S
+2 F
+( control is active, the server reports the initial key press, subsequent) 210.12 678 T
+(acceptance or rejection, and release of any key to interested clients by sending an appro-) 108 665 T
+(priate) 108 652 T
+5 F
+-0.6 (AccessXNotify) 138.32 652 S
+2 F
+( event \050see section 10.6.4\051.) 224.13 652 T
+(To get the) 108 631 T
+5 F
+-0.6 (SlowKeys) 159.66 631 S
+2 F
+( acceptance delay for a keyboard device, use) 212.46 631 T
+1 F
+(XkbGetSlowKeysDe-) 429.37 631 T
+(lay) 108 618 T
+2 F
+(.) 122.66 618 T
+2 11 Q
+(Bool) 108 597.67 T
+3 F
+(XkbGetSlo) 132.15 597.67 T
+(wK) 183.99 597.67 T
+(eysDelay) 200.21 597.67 T
+2 F
+(\050) 241.76 597.67 T
+1 F
+(display) 245.42 597.67 T
+2 F
+(,) 276.49 597.67 T
+1 F
+( de) 279.24 597.67 T
+(vice_spec) 292.21 597.67 T
+2 F
+(,) 334.96 597.67 T
+1 F
+( delay_rtrn) 337.71 597.67 T
+2 F
+(\051) 386.9 597.67 T
+(Display *) 126 584.67 T
+1 F
+(display) 234 584.67 T
+2 F
+(;) 265.78 584.67 T
+(/* connection to X serv) 306 584.67 T
+(er */) 408.49 584.67 T
+(unsigned int) 126 571.67 T
+1 F
+(de) 234 571.67 T
+(vice_spec) 244.22 571.67 T
+2 F
+(;) 286.98 571.67 T
+(/* de) 306 571.67 T
+(vice ID, or) 327.42 571.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 377.51 571.67 S
+2 F
+( */) 456.16 571.67 T
+(unsigned int *) 126 558.67 T
+1 F
+(delay_rtrn) 234 558.67 T
+2 F
+(;) 280.44 558.67 T
+(/* back\336lled with) 306 558.67 T
+5 F
+-0.55 (SlowKeys) 385.75 558.67 S
+2 F
+( delay) 434.15 558.67 T
+(, ms */) 460.01 558.67 T
+1 12 Q
+(XkbGetSlowK) 108 539 T
+(e) 174.91 539 T
+(ysDelay) 179.88 539 T
+2 F
+(requests the attributes of the) 221.53 539 T
+5 F
+-0.6 (SlowKeys) 359.84 539 S
+2 F
+( control from the server,) 412.64 539 T
+(waits for a reply and backfills) 108 526 T
+1 F
+(delay_rtrn) 253.97 526 T
+2 F
+(with the) 307.63 526 T
+5 F
+-0.6 (SlowKeys) 349.63 526 S
+2 F
+( delay attribute.) 402.43 526 T
+1 F
+(Xkb-) 480.42 526 T
+(GetSlowK) 108 513 T
+(e) 156.25 513 T
+(ysDelay) 161.22 513 T
+2 F
+(returns) 202.87 513 T
+5 F
+-0.6 (True) 239.2 513 S
+2 F
+( if successful; if a compatible version of the Xkb exten-) 265.6 513 T
+(sion is not available in the server,) 108 500 T
+1 F
+(XkbGetSlowK) 271.98 500 T
+(e) 338.89 500 T
+(ysDelay) 343.86 500 T
+2 F
+( returns) 382.51 500 T
+5 F
+-0.6 (False) 421.84 500 S
+2 F
+(.) 454.84 500 T
+(To set the) 108 479 T
+5 F
+-0.6 (SlowKeys) 158.33 479 S
+2 F
+( acceptance delay for a keyboard device, use) 211.13 479 T
+1 F
+(XkbSetSlowKeysDelay) 428.04 479 T
+2 F
+(.) 536.69 479 T
+2 11 Q
+(Bool) 108 458.67 T
+3 F
+(XkbSetSlo) 132.15 458.67 T
+(wK) 181.55 458.67 T
+(eysDelay) 197.77 458.67 T
+2 F
+(\050) 239.32 458.67 T
+1 F
+(display) 242.98 458.67 T
+2 F
+(,) 274.05 458.67 T
+1 F
+( de) 276.8 458.67 T
+(vice_spec) 289.76 458.67 T
+2 F
+(,) 332.52 458.67 T
+1 F
+( delay) 335.27 458.67 T
+2 F
+(\051) 361.85 458.67 T
+(Display *) 126 445.67 T
+1 F
+(display) 234 445.67 T
+2 F
+(;) 265.78 445.67 T
+(/* connection to X serv) 306 445.67 T
+(er */) 408.49 445.67 T
+(unsigned int) 126 432.67 T
+1 F
+(de) 234 432.67 T
+(vice_spec) 244.22 432.67 T
+2 F
+(;) 286.98 432.67 T
+(/* de) 306 432.67 T
+(vice to con\336gure, or) 327.42 432.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 418.76 432.67 S
+2 F
+( */) 497.41 432.67 T
+(unsigned int) 126 419.67 T
+1 F
+(delay) 234 419.67 T
+2 F
+(;) 257.83 419.67 T
+(/*) 306 419.67 T
+5 F
+-0.55 (SlowKeys) 317.31 419.67 S
+2 F
+( delay) 365.71 419.67 T
+(, ms */) 391.57 419.67 T
+1 12 Q
+-0.15 (XkbSetSlowK) 108 400 P
+-0.15 (e) 172.25 400 P
+-0.15 (ysDelay) 177.22 400 P
+2 F
+-0.15 ( sends a request to configure the) 215.87 400 P
+5 F
+-0.33 -0.6 (SlowKeys) 372.45 400 B
+2 F
+-0.15 ( control to the server.) 425.25 400 P
+-0.15 (It) 529.82 400 P
+-0.27 (does not wait for a reply, and normally returns) 108 387 P
+5 F
+-0.6 -0.6 (True) 331.5 387 B
+2 F
+-0.27 (. Specifying a value of) 357.9 387 P
+5 F
+-0.6 -0.6 (0) 467.85 387 B
+2 F
+-0.27 ( for the) 474.45 387 P
+1 F
+-0.27 (delay) 511.28 387 P
+2 F
+-0.3 (parameter causes) 108 374 P
+1 F
+-0.3 (XkbSetSlowK) 192.7 374 P
+-0.3 (e) 256.95 374 P
+-0.3 (ys) 261.92 374 P
+2 F
+-0.3 ( to generate a) 271.91 374 P
+5 F
+-0.66 -0.6 (BadValue) 338.03 374 B
+2 F
+-0.3 ( protocol error. If a compatible) 390.83 374 P
+(version of the Xkb extension is not available in the server) 108 361 T
+1 F
+(XkbSetSlowK) 387.62 361 T
+(e) 451.87 361 T
+(ysDelay) 456.84 361 T
+2 F
+( returns) 495.49 361 T
+5 F
+-0.6 (False) 108 348 S
+2 F
+(.) 141 348 T
+0 F
+(10.6.7) 72 323 T
+(The BounceK) 108 323 T
+(e) 185.16 323 T
+(ys Contr) 191.65 323 T
+(ol) 240.08 323 T
+2 F
+(Some users may accidentally \322bounce\323 on a key when they release it. They press it once,) 108 303 T
+-0.25 (then accidentally press it again after they release it. The) 108 290 P
+5 F
+-0.55 -0.6 (BounceKeys) 375.76 290 B
+2 F
+-0.25 ( control temporarily) 441.76 290 P
+(disables a key after it has been pressed, effectively \322debouncing\323 the keyboard. The) 108 277 T
+(period of time the key is disabled after it is released is known as the) 108 264 T
+1 F
+(BounceK) 436.28 264 T
+(e) 479.86 264 T
+(ys delay) 484.82 264 T
+2 F
+(.) 523.81 264 T
+5 F
+-0.6 (BounceKeys) 108 251 S
+2 F
+( is a boolean control.) 174 251 T
+-0.16 (When the) 108 230 P
+5 F
+-0.35 -0.6 (BounceKeys) 157 230 B
+2 F
+-0.16 ( control is active, the server reports acceptance or rejection of any) 223 230 P
+(key to interested clients by sending an appropriate) 108 217 T
+5 F
+-0.6 (AccessXNotify) 351.96 217 S
+2 F
+( event \050see section) 437.76 217 T
+(10.6.4\051.) 108 204 T
+(Use) 108 183 T
+1 F
+(XkbGetBounceKeysDelay) 129.66 183 T
+2 F
+( to query the current) 253.62 183 T
+5 F
+-0.6 (BounceKeys) 353.93 183 S
+2 F
+( delay for a keyboard) 419.93 183 T
+(device.) 108 170 T
+2 11 Q
+(Bool) 108 149.67 T
+3 F
+(XkbGetBounceK) 132.15 149.67 T
+(eysDelay) 212.54 149.67 T
+2 F
+(\050) 254.09 149.67 T
+1 F
+(display) 257.75 149.67 T
+2 F
+(,) 288.82 149.67 T
+1 F
+( de) 291.57 149.67 T
+(vice_spec) 304.54 149.67 T
+2 F
+(,) 347.29 149.67 T
+1 F
+( delay_rtrn) 350.04 149.67 T
+2 F
+(\051) 399.24 149.67 T
+(Display *) 126 136.67 T
+1 F
+(display) 234 136.67 T
+2 F
+(;) 265.78 136.67 T
+(/* connection to X serv) 306 136.67 T
+(er */) 408.49 136.67 T
+(unsigned int) 126 123.67 T
+1 F
+(de) 234 123.67 T
+(vice_spec) 244.22 123.67 T
+2 F
+(;) 286.98 123.67 T
+(/* de) 306 123.67 T
+(vice ID, or) 327.42 123.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 377.51 123.67 S
+2 F
+( */) 456.16 123.67 T
+(unsigned int *) 126 110.67 T
+1 F
+(delay_rtrn) 234 110.67 T
+2 F
+(;) 280.44 110.67 T
+(/* back\336lled with bounce k) 306 110.67 T
+(e) 425.66 110.67 T
+(ys delay) 430.38 110.67 T
+(, ms */) 466.02 110.67 T
+1 12 Q
+(XkbGetBounceK) 108 91 T
+(e) 187.56 91 T
+(ysDelay) 192.53 91 T
+2 F
+(requests the attributes of the) 234.18 91 T
+5 F
+-0.6 (BounceKeys) 372.49 91 S
+2 F
+( control from the) 438.49 91 T
+(server, waits for a reply, and backfills) 108 78 T
+1 F
+(delay_rtrn) 292.28 78 T
+2 F
+(with the) 345.95 78 T
+5 F
+-0.6 (BounceKeys) 387.95 78 S
+2 F
+( delay attribute.) 453.95 78 T
+FMENDPAGE
+%%EndPage: "66" 78
+%%Page: "67" 79
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(67) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+1 12 Q
+(XkbGetBounceK) 108 712 T
+(e) 187.56 712 T
+(ysDelay) 192.53 712 T
+2 F
+(returns) 234.18 712 T
+5 F
+-0.6 (True) 270.25 712 S
+2 F
+( if successful; if a compatible version of the Xkb) 296.65 712 T
+(extension is not available in the server) 108 699 T
+1 F
+(XkbGetSlowK) 294.97 699 T
+(e) 361.88 699 T
+(ysDelay) 366.85 699 T
+2 F
+( returns) 405.5 699 T
+5 F
+-0.6 (False) 444.83 699 S
+2 F
+(.) 477.83 699 T
+(To set the) 108 678 T
+5 F
+-0.6 (BounceKeys) 158.33 678 S
+2 F
+( delay for a keyboard device, use) 224.33 678 T
+1 F
+(XkbSetBounceKeysDelay) 385.61 678 T
+2 F
+(.) 506.9 678 T
+2 11 Q
+(Bool) 108 657.67 T
+3 F
+(XkbSetBounceK) 132.15 657.67 T
+(eysDelay) 210.1 657.67 T
+2 F
+(\050) 251.65 657.67 T
+1 F
+(display) 255.31 657.67 T
+2 F
+(,) 286.38 657.67 T
+1 F
+( de) 289.13 657.67 T
+(vice_spec) 302.1 657.67 T
+2 F
+(,) 344.85 657.67 T
+1 F
+( delay) 347.6 657.67 T
+2 F
+(\051) 374.18 657.67 T
+(Display *) 126 644.67 T
+1 F
+(display) 234 644.67 T
+2 F
+(;) 265.78 644.67 T
+(/* connection to X serv) 306 644.67 T
+(er */) 408.49 644.67 T
+(unsigned int) 126 631.67 T
+1 F
+(de) 234 631.67 T
+(vice_spec) 244.22 631.67 T
+2 F
+(;) 286.98 631.67 T
+(/* de) 306 631.67 T
+(vice to con\336gure, or) 327.42 631.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 418.76 631.67 S
+2 F
+( */) 497.41 631.67 T
+(unsigned int) 126 618.67 T
+1 F
+(delay) 234 618.67 T
+2 F
+(;) 257.83 618.67 T
+(/* bounce k) 306 618.67 T
+(e) 357.22 618.67 T
+(ys delay) 361.93 618.67 T
+(, ms */) 397.58 618.67 T
+1 12 Q
+(XkbSetBounceK) 108 599 T
+(e) 184.9 599 T
+(ysDelay) 189.86 599 T
+2 F
+( sends a request to configure the) 228.52 599 T
+5 F
+-0.6 (BounceKeys) 386.15 599 S
+2 F
+( control to the) 452.15 599 T
+-0.4 (server.) 108 586 P
+-0.4 (It does not wait for a reply and normally returns) 142.91 586 P
+5 F
+-0.88 -0.6 (True) 372.18 586 B
+2 F
+-0.4 (. Specifying a value of) 398.58 586 P
+5 F
+-0.88 -0.6 (zero) 507.88 586 B
+2 F
+-0.32 (for the) 108 573 P
+1 F
+-0.32 (delay) 142.01 573 P
+2 F
+-0.32 (parameter causes) 170.68 573 P
+1 F
+-0.32 (XkbSetBounceK) 255.32 573 P
+-0.32 (e) 332.22 573 P
+-0.32 (ysDelay) 337.19 573 P
+2 F
+-0.32 ( to generate a) 375.84 573 P
+5 F
+-0.71 -0.6 (BadValue) 441.85 573 B
+2 F
+-0.32 ( protocol) 494.65 573 P
+(error. If a compatible version of the Xkb extension is not available in the server,) 108 560 T
+1 F
+(XkbSet-) 495.59 560 T
+(BounceK) 108 547 T
+(e) 151.57 547 T
+(ysDelay) 156.54 547 T
+2 F
+( returns) 195.19 547 T
+5 F
+-0.6 (False) 234.52 547 S
+2 F
+(.) 267.52 547 T
+0 F
+(10.6.8) 72 522 T
+(The Stic) 108 522 T
+(kyK) 154.44 522 T
+(e) 176.27 522 T
+(ys Contr) 182.76 522 T
+(ol) 231.19 522 T
+2 F
+-0.09 (Some people find it difficult or even impossible to press two keys at once. For example, a) 108 502 P
+-0.38 (one-fingered typist or someone using a mouth stick cannot press the) 108 489 P
+4 11 Q
+-0.38 (Shift) 433.48 489 P
+2 12 Q
+-0.38 ( and) 455.49 489 P
+4 11 Q
+-0.38 (1) 478.07 489 P
+2 12 Q
+-0.38 ( keys at the) 484.18 489 P
+-0.16 (same time. The) 108 476 P
+5 F
+-0.36 -0.6 (StickyKeys) 184.16 476 B
+2 F
+-0.16 ( control solves this problem by changing the behavior of the) 250.17 476 P
+-0.37 (modifier keys. With) 108 463 P
+5 F
+-0.82 -0.6 (StickyKeys) 206.21 463 B
+2 F
+-0.37 (, the user can first press a modifier, release it, then press) 272.21 463 P
+(another key. For example, to get an exclamation point on a PC-style keyboard, the user) 108 450 T
+(can press the) 108 437 T
+4 11 Q
+(Shift) 172.98 437 T
+2 12 Q
+( key, release it, and then press the) 194.99 437 T
+4 11 Q
+(1) 359.62 437 T
+2 12 Q
+( key.) 365.73 437 T
+5 F
+-0.6 (StickyKeys) 108 416 S
+2 F
+( also allows users to lock modifier keys without requiring special locking) 174 416 T
+(keys. When) 108 403 T
+5 F
+-0.6 (StickyKeys) 167.65 403 S
+2 F
+( is enabled, a modifier is latched when the user presses it just) 233.65 403 T
+-0.43 (once. The user can press a modifier twice in a row to lock it, and then unlock it by pressing) 108 390 P
+(it one more time.) 108 377 T
+-0.44 (When a modifier is latched, it becomes unlatched when the user presses a nonmodifier key) 108 356 P
+-0.34 (or a pointer button. For instance, to enter the sequence) 108 343 P
+5 F
+-0.74 -0.6 (Shift) 368.57 343 B
+2 F
+-0.34 (+) 401.57 343 P
+5 F
+-0.74 -0.6 (Control) 408.34 343 B
+2 F
+-0.34 (+) 454.54 343 P
+4 11 Q
+-0.34 (Z) 461.31 343 P
+2 12 Q
+-0.34 ( the user could) 468.03 343 P
+-0.12 (press and release the) 108 330 P
+4 11 Q
+-0.13 (Shift) 209.46 330 P
+2 12 Q
+-0.12 ( key to latch it, then press and release the) 231.47 330 P
+4 11 Q
+-0.13 (Control) 430.51 330 P
+2 12 Q
+-0.12 ( key to latch it,) 465.96 330 P
+-0.45 (and finally press and release the Z key. Because the) 108 317 P
+4 11 Q
+-0.46 (Control) 354.4 317 P
+2 12 Q
+-0.45 ( key is a modifier key, pressing) 389.86 317 P
+(it does not unlatch the) 108 304 T
+4 11 Q
+(Shift) 217 304 T
+2 12 Q
+( key. Thus, after the user presses the) 239.01 304 T
+4 11 Q
+(Control) 416.3 304 T
+2 12 Q
+( key, both the) 451.75 304 T
+5 F
+-0.07 -0.6 (Shift) 108 291 B
+2 F
+-0.03 ( and) 141 291 P
+5 F
+-0.07 -0.6 (Control) 164.27 291 B
+2 F
+-0.03 ( modifiers are latched. When the user presses the) 210.47 291 P
+4 11 Q
+-0.03 (Z) 448.13 291 P
+2 12 Q
+-0.03 ( key, the effect is) 454.85 291 P
+(as though the user had pressed) 108 278 T
+5 F
+-0.6 (Shift) 257.3 278 S
+2 F
+(+) 290.3 278 T
+5 F
+-0.6 (Control) 297.07 278 S
+2 F
+(+) 343.27 278 T
+4 11 Q
+(Z) 350.04 278 T
+2 12 Q
+(. In addition, because the) 356.76 278 T
+4 11 Q
+(Z) 479.74 278 T
+2 12 Q
+( key is not) 486.46 278 T
+(a modifier key, the) 108 265 T
+5 F
+-0.6 (Shift) 201.65 265 S
+2 F
+( and) 234.65 265 T
+5 F
+-0.6 (Control) 257.98 265 S
+2 F
+( modifiers are unlatched.) 304.18 265 T
+-0.04 (Locking a modifier key means that the modifier affects any key or pointer button the user) 108 244 P
+(presses until the user unlocks it or it is unlocked programmatically. For example, to enter) 108 231 T
+(the sequence \050\322XKB\323\051 on a keyboard where \324\050\325 is a shifted \3249\325, \324\051\325 is a shifted \3240\325, and \324\323\325) 108 218 T
+(is a shifted single quote, the user could press and release the) 108 205 T
+4 11 Q
+(Shift) 399.61 205 T
+2 12 Q
+( key twice to lock the) 421.62 205 T
+5 F
+-0.6 (Shift) 108 192 S
+2 F
+( modifier. Then, when the user presses the) 141 192 T
+4 11 Q
+(9) 346.96 192 T
+2 12 Q
+(,) 353.07 192 T
+4 11 Q
+(\324) 359.07 192 T
+2 12 Q
+(,) 361.52 192 T
+4 11 Q
+(x) 367.52 192 T
+2 12 Q
+(,) 373.02 192 T
+4 11 Q
+(k) 379.02 192 T
+2 12 Q
+(,) 384.52 192 T
+4 11 Q
+(b) 390.52 192 T
+2 12 Q
+(,) 396.63 192 T
+4 11 Q
+(\324) 402.63 192 T
+2 12 Q
+(, and) 405.07 192 T
+4 11 Q
+(0) 431.4 192 T
+2 12 Q
+( keys in sequence, it) 437.52 192 T
+-0.44 (generates \050\322XKB\323\051. To unlock the) 108 179 P
+5 F
+-0.96 -0.6 (Shift) 273.76 179 B
+2 F
+-0.44 ( modifier, the user can press and release the) 306.76 179 P
+4 11 Q
+-0.45 (Shift) 515.43 179 P
+2 12 Q
+(key.) 108 166 T
+5 F
+-0.6 (StickyKeys) 108 145 S
+2 F
+( is a boolean control with two separate attributes that may be individually) 174 145 T
+(configured: one to automatically disable it, and one to control the latching behavior of) 108 132 T
+(modifier keys.) 108 119 T
+FMENDPAGE
+%%EndPage: "67" 79
+%%Page: "68" 80
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(68) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+0 F
+(StickyKeys Options) 108 712.67 T
+2 12 Q
+(The) 108 694 T
+5 F
+-0.6 (StickyKeys) 129.66 694 S
+2 F
+( control has two options that can be accessed via the) 195.66 694 T
+1 F
+(ax_options) 449.28 694 T
+2 F
+( of an) 501.95 694 T
+5 F
+-0.6 (XkbControlsRec) 108 681 S
+2 F
+( structure \050see section 10.8\051. The first option,) 200.4 681 T
+5 F
+-0.6 (TwoKeys) 419.37 681 S
+2 F
+(, specifies) 465.57 681 T
+(whether) 108 668 T
+5 F
+-0.6 (StickyKeys) 149.65 668 S
+2 F
+( should automatically turn off when two keys are pressed at the) 215.65 668 T
+-0.31 (same time. This feature is useful for shared computers so people who do not want them do) 108 655 P
+(not need to turn) 108 642 T
+5 F
+-0.6 (StickyKeys) 186.66 642 S
+2 F
+( off if a previous user left) 252.66 642 T
+5 F
+-0.6 (StickyKeys) 377.63 642 S
+2 F
+( on. The second) 443.63 642 T
+(option,) 108 629 T
+5 F
+-0.6 (LatchToLock) 144.67 629 S
+2 F
+(, specifies whether or not) 217.27 629 T
+5 F
+-0.6 (StickyKeys) 341.24 629 S
+2 F
+( locks a modifier when) 407.25 629 T
+(pressed twice in a row.) 108 616 T
+-0.4 (Use) 108 595 P
+1 F
+-0.4 (XkbGetStic) 129.26 595 P
+-0.4 (k) 183 595 P
+-0.4 (yK) 188.21 595 P
+-0.4 (e) 201.12 595 P
+-0.4 (ysOptions) 206.09 595 P
+2 F
+-0.4 ( to query the current) 254.09 595 P
+5 F
+-0.89 -0.6 (StickyKeys) 352.38 595 B
+2 F
+-0.4 ( attributes for a keyboard) 418.38 595 P
+(device.) 108 582 T
+2 11 Q
+(Bool) 108 561.67 T
+3 F
+(XkbGetStick) 132.15 561.67 T
+(yK) 193.1 561.67 T
+(eysOptions) 206.88 561.67 T
+2 F
+(\050) 258.83 561.67 T
+1 F
+(display) 262.49 561.67 T
+2 F
+(,) 293.56 561.67 T
+1 F
+( de) 296.31 561.67 T
+(vice_spec) 309.28 561.67 T
+2 F
+(,) 352.04 561.67 T
+1 F
+( options_rtrn) 354.79 561.67 T
+2 F
+(\051) 412.55 561.67 T
+(Display *) 126 548.67 T
+1 F
+(display) 234 548.67 T
+2 F
+(;) 265.78 548.67 T
+(/* connection to X serv) 306 548.67 T
+(er */) 408.49 548.67 T
+(unsigned int) 126 535.67 T
+1 F
+(de) 234 535.67 T
+(vice_spec) 244.22 535.67 T
+2 F
+(;) 286.98 535.67 T
+(/* de) 306 535.67 T
+(vice ID, or) 327.42 535.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 377.51 535.67 S
+2 F
+( */) 456.16 535.67 T
+(unsigned int *) 126 522.67 T
+1 F
+(options_rtrn) 234 522.67 T
+2 F
+(;) 289.01 522.67 T
+(/* back\336lled with Stick) 306 522.67 T
+(yK) 408.2 522.67 T
+(e) 421.37 522.67 T
+(ys option mask */) 426.09 522.67 T
+1 12 Q
+(XkbGetStic) 108 503 T
+(k) 161.75 503 T
+(yK) 166.96 503 T
+(e) 179.87 503 T
+(ysOptions) 184.84 503 T
+2 F
+(requests the attributes of the) 235.84 503 T
+5 F
+-0.6 (StickyKeys) 374.15 503 S
+2 F
+( control from the) 440.15 503 T
+(server, waits for a reply, and backfills) 108 490 T
+1 F
+(options_rtrn) 292.28 490 T
+2 F
+(with a mask indicating whether the) 355.3 490 T
+(individual) 108 477 T
+5 F
+-0.6 (StickyKeys) 159.67 477 S
+2 F
+( options are on or off. Valid bits in) 225.67 477 T
+1 F
+(options_rtrn) 394.99 477 T
+2 F
+( are:) 455.01 477 T
+5 F
+-0.6 (XkbAX_TwoKeysMask) 139.68 456 S
+-0.6 (XkbAX_LatchToLockMask) 139.68 442 S
+1 F
+(XkbGetStic) 108 422 T
+(k) 161.75 422 T
+(yK) 166.96 422 T
+(e) 179.87 422 T
+(ysOptions) 184.84 422 T
+2 F
+(returns) 235.84 422 T
+5 F
+-0.6 (True) 272.16 422 S
+2 F
+( if successful; if a compatible version of the Xkb) 298.56 422 T
+(extension is not available in the server) 108 409 T
+1 F
+(XkbGetStic) 294.97 409 T
+(k) 348.72 409 T
+(yK) 353.93 409 T
+(e) 366.84 409 T
+(ysOptions) 371.81 409 T
+2 F
+( returns) 419.81 409 T
+5 F
+-0.6 (False) 459.13 409 S
+2 F
+(.) 492.13 409 T
+(To set the) 108 388 T
+5 F
+-0.6 (StickyKeys) 158.33 388 S
+2 F
+( attributes for a keyboard device, use) 224.33 388 T
+1 F
+(XkbSetStickyKeysOptions) 404.28 388 T
+2 F
+(.) 527.59 388 T
+2 11 Q
+(Bool) 108 367.67 T
+3 F
+(XkbSetStick) 132.15 367.67 T
+(yK) 190.65 367.67 T
+(eysOptions) 204.44 367.67 T
+2 F
+(\050) 256.39 367.67 T
+1 F
+(display) 260.05 367.67 T
+2 F
+(,) 291.12 367.67 T
+1 F
+( de) 293.87 367.67 T
+(vice_spec, mask, values) 306.84 367.67 T
+2 F
+(\051) 411.3 367.67 T
+(Display *) 126 354.67 T
+1 F
+(display) 234 354.67 T
+2 F
+(;) 265.78 354.67 T
+(/* connection to X serv) 306 354.67 T
+(er */) 408.49 354.67 T
+(unsigned int) 126 341.67 T
+1 F
+(de) 234 341.67 T
+(vice_spec) 244.22 341.67 T
+2 F
+(;) 286.98 341.67 T
+(/* de) 306 341.67 T
+(vice to con\336gure, or XkbUseCoreKbd */) 327.42 341.67 T
+(unsigned int) 126 328.67 T
+1 F
+(mask) 234 328.67 T
+2 F
+(;) 256.61 328.67 T
+(/* selects Stick) 306 328.67 T
+(yK) 371.83 328.67 T
+(e) 385 328.67 T
+(ys attrib) 389.72 328.67 T
+(utes to modify */) 425.25 328.67 T
+(unsigned int) 126 315.67 T
+1 F
+(values;) 234 315.67 T
+2 F
+(/* v) 306 315.67 T
+(alues for selected attrib) 322.53 315.67 T
+(utes */) 424.65 315.67 T
+1 12 Q
+(XkbSetStic) 108 296 T
+(k) 159.08 296 T
+(yK) 164.29 296 T
+(e) 177.2 296 T
+(ysOptions) 182.17 296 T
+2 F
+( sends a request to configure the) 230.17 296 T
+5 F
+-0.6 (StickyKeys) 387.8 296 S
+2 F
+( control to the) 453.8 296 T
+(server.) 108 283 T
+(It does not wait for a reply and normally returns) 143.32 283 T
+5 F
+-0.6 (True) 376.61 283 S
+2 F
+(. The valid bits to use for) 403.01 283 T
+(both the) 108 270 T
+1 F
+(mask) 150 270 T
+2 F
+( and) 174.66 270 T
+1 F
+(values) 197.99 270 T
+2 F
+( parameters are:) 228.65 270 T
+5 F
+-0.6 (XkbAX_TwoKeysMask) 139.68 249 S
+-0.6 (XkbAX_LatchToLockMask) 139.68 235 S
+2 F
+( If a compatible version of the Xkb extension is not available in the server,) 108 215 T
+1 F
+(XkbSetStic) 469.27 215 T
+(k-) 520.36 215 T
+(yK) 108 202 T
+(e) 120.91 202 T
+(ysOptions) 125.88 202 T
+2 F
+( returns) 173.88 202 T
+5 F
+-0.6 (False) 213.2 202 S
+2 F
+(.) 246.21 202 T
+0 F
+(10.7) 72 177 T
+(Contr) 108 177 T
+(ols f) 139.75 177 T
+(or General K) 164.18 177 T
+(e) 236.03 177 T
+(yboar) 242.52 177 T
+(d Mapping) 274.96 177 T
+2 F
+(There are several controls that apply to the keyboard mapping in general. They control) 108 157 T
+-0.17 (handling of out-of-range group indices and how modifiers are processed and consumed in) 108 144 P
+(the server. These are:) 108 131 T
+5 F
+-0.6 (GroupsWrap) 139.68 110 S
+-0.6 (IgnoreGroupLock) 139.68 96 S
+-0.6 (IgnoreLockMods) 139.68 82 S
+-0.6 (InternalMods) 139.68 68 S
+FMENDPAGE
+%%EndPage: "68" 80
+%%Page: "69" 81
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(69) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+5 12 Q
+-0.6 (IgnoreGroupLock) 108 712 S
+2 F
+( is a boolean control; the rest are always active.) 207 712 T
+(Without the modifier processing options provided by Xkb, passive grabs set via transla-) 108 691 T
+(tions in a client \050for example,) 108 678 T
+5 F
+-0.6 (Alt<KeyPress>space) 252.31 678 S
+2 F
+(\051 do not trigger if any modifiers) 371.11 678 T
+(other than those specified by the translation are set. This results in problems in the user) 108 665 T
+(interface when either) 108 652 T
+5 F
+-0.6 (NumLock) 212.29 652 S
+2 F
+( or a secondary keyboard group is active. The) 258.49 652 T
+5 F
+-0.6 (Ignore-) 480.43 652 S
+-0.29 -0.6 (LockMods) 108 639 B
+2 F
+-0.13 ( and) 160.8 639 P
+5 F
+-0.29 -0.6 (IgnoreGroupLock) 183.87 639 B
+2 F
+-0.13 ( controls make it possible to avoid this behavior with-) 282.87 639 P
+(out exhaustively specifying a grab for every possible modifier combination.) 108 626 T
+0 F
+(10.7.1) 72 601 T
+(The Gr) 108 601 T
+(oupsWrap Contr) 146.44 601 T
+(ol) 240.19 601 T
+2 F
+(The) 108 581 T
+5 F
+-0.6 (GroupsWrap) 129.66 581 S
+2 F
+( control determines how illegal groups are handled on a global basis.) 195.66 581 T
+(There are a number of valid keyboard sequences that can cause the effective group num-) 108 568 T
+(ber to go out of range. When this happens, the group must be normalized back to a valid) 108 555 T
+(number. The) 108 542 T
+5 F
+-0.6 (GroupsWrap) 172.32 542 S
+2 F
+( control specifies how this is done.) 238.32 542 T
+(When dealing with group numbers, all computations are done using the group index,) 108 521 T
+(which is the group number minus one. There are three different algorithms; the) 108 508 T
+5 F
+-0.6 (GroupsWrap) 108 495 S
+2 F
+( control specifies which one is used:) 174 495 T
+2 11 Q
+(\245) 126 474.67 T
+(XkbRedirectIntoRange) 139.68 474.67 T
+2 12 Q
+-0.37 (All invalid group numbers are converted to a valid group number by taking the last) 144 456 P
+(four bits of the) 144 443 T
+5 F
+-0.6 (GroupsWrap) 217.99 443 S
+2 F
+( control and using them as the group index. If the) 283.99 443 T
+(result is still out of range, Group one is used.) 144 430 T
+2 11 Q
+(\245) 126 409.67 T
+(XkbClampIntoRange) 139.68 409.67 T
+2 12 Q
+-0.25 (All invalid group numbers are converted to the nearest valid group number. Group) 144 391 P
+-0.43 (numbers larger than the highest supported group number are mapped to the highest) 144 378 P
+(supported group; those less than one are mapped to group one.) 144 365 T
+2 11 Q
+(\245) 126 344.67 T
+(XkbWrapIntoRange) 139.68 344.67 T
+2 12 Q
+(All invalid group numbers are converted to a valid group number using integer) 144 326 T
+(modulus applied to the group index.) 144 313 T
+(There are no convenience functions for manipulating the) 108 292 T
+5 F
+-0.6 (GroupsWrap) 383.27 292 S
+2 F
+( control. Manipu-) 449.27 292 T
+(late the) 108 279 T
+5 F
+-0.6 (GroupsWrap) 145.99 279 S
+2 F
+( control via the) 211.99 279 T
+1 F
+(groups_wrap) 287.32 279 T
+2 F
+( field in the) 351.33 279 T
+5 F
+-0.6 (XkbControlsRec) 409.32 279 S
+2 F
+( struc-) 501.72 279 T
+-0.07 (ture, then use) 108 266 P
+1 F
+-0.07 (XkbSetContr) 175.12 266 P
+-0.07 (ols) 235.91 266 P
+2 F
+-0.07 ( and) 249.91 266 P
+1 F
+-0.07 (XkbGetContr) 273.11 266 P
+-0.07 (ols) 336.56 266 P
+2 F
+-0.07 ( \050see section 10.9 and section 10.10\051 to) 350.57 266 P
+(query and change this control.) 108 253 T
+0 F
+(Note) 126 232.67 T
+2 11 Q
+-0.11 (See also section 15.3.2 or a discussion of the related \336eld,) 162 232.67 P
+1 F
+-0.11 (gr) 418.01 232.67 P
+-0.11 (oup_info) 427.29 232.67 P
+2 F
+-0.11 (, which also nor-) 466.41 232.67 P
+(malizes a group under certain circumstances.) 162 220.67 T
+0 12 Q
+(10.7.2) 72 196 T
+(The IgnoreLoc) 108 196 T
+(kMods Contr) 190.44 196 T
+(ol) 263.53 196 T
+2 F
+-0.09 (The core protocol does not provide a way to exclude specific modifiers from grab calcula-) 108 176 P
+(tions, with the result that locking modifiers sometimes have unanticipated side effects.) 108 163 T
+-0.12 (The) 108 142 P
+5 F
+-0.27 -0.6 (IgnoreLockMods) 129.54 142 B
+2 F
+-0.12 ( control specifies modifiers that should be excluded from grab cal-) 221.94 142 P
+(culations. These modifiers are also not reported in any core events except) 108 129 T
+5 F
+-0.6 (KeyPress) 463.58 129 S
+2 F
+( and) 516.39 129 T
+5 F
+-0.38 -0.6 (KeyRelease) 108 116 B
+2 F
+-0.17 ( events that do not activate a passive grab and that do not occur while a grab) 174 116 P
+(is active.) 108 103 T
+FMENDPAGE
+%%EndPage: "69" 81
+%%Page: "70" 82
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(70) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(Manipulate the) 108 712 T
+5 F
+-0.6 (IgnoreLockMods) 183.32 712 S
+2 F
+( control via the) 275.73 712 T
+1 F
+(ignore_lock) 351.05 712 T
+2 F
+( field in the) 408.37 712 T
+5 F
+-0.6 (XkbCon-) 466.37 712 S
+-0.27 -0.6 (trolsRec) 108 699 B
+2 F
+-0.12 ( structure, then use) 160.8 699 P
+1 F
+-0.12 (XkbSetContr) 253.96 699 P
+-0.12 (ols) 314.75 699 P
+2 F
+-0.12 ( and) 328.76 699 P
+1 F
+-0.12 (XkbGetContr) 351.84 699 P
+-0.12 (ols) 415.3 699 P
+2 F
+-0.12 ( \050see sections 10.9 and) 429.3 699 P
+(10.10\051 to query and change this control. Alternatively, use) 108 686 T
+1 F
+(XkbSetIgnor) 390.62 686 T
+(eLoc) 450.17 686 T
+(kMods) 473.26 686 T
+2 F
+(.) 505.25 686 T
+(To set the modifiers that, if locked, are not to be reported in matching events to passive) 108 665 T
+(grabs, use) 108 652 T
+1 F
+(XkbSetIgnoreLockMods.) 158.99 652 T
+2 11 Q
+(Bool) 108 631.67 T
+3 F
+(XkbSetIgnor) 132.15 631.67 T
+(eLockMods) 193.06 631.67 T
+2 F
+(\050) 248.06 631.67 T
+1 F
+(display) 251.73 631.67 T
+(, de) 282.9 631.67 T
+(vice_spec, af) 298.62 631.67 T
+(fect_r) 355.24 631.67 T
+(eal, r) 380.49 631.67 T
+(eal_values, af) 403.31 631.67 T
+(fect_virtual,) 464.21 631.67 T
+(virtual_values) 252 618.67 T
+2 F
+(\051) 314.94 618.67 T
+(Display *) 126 605.67 T
+1 F
+(display) 189 605.67 T
+2 F
+(;) 220.78 605.67 T
+(/* connection to the X serv) 252 605.67 T
+(er */) 370.68 605.67 T
+(unsigned int) 126 592.67 T
+1 F
+(de) 189 592.67 T
+(vice_spec) 199.22 592.67 T
+2 F
+(;) 241.98 592.67 T
+(/* de) 252 592.67 T
+(vice ID, or) 273.42 592.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 323.51 592.67 S
+2 F
+( */) 402.16 592.67 T
+(unsigned int) 126 579.67 T
+1 F
+(af) 189 579.67 T
+(fect_r) 197.36 579.67 T
+(eal) 222.62 579.67 T
+2 F
+(;) 236.06 579.67 T
+(/* mask of real modi\336ers af) 252 579.67 T
+(fected by this call */) 373.01 579.67 T
+(unsigned int) 126 566.67 T
+1 F
+(r) 189 566.67 T
+(eal_values) 192.87 566.67 T
+2 F
+(;) 239.92 566.67 T
+(/* v) 252 566.67 T
+(alues for af) 268.53 566.67 T
+(fected real modi\336ers \0501=>set, 0=>unset\051 */) 317.74 566.67 T
+(unsigned int) 126 553.67 T
+1 F
+(af) 189 553.67 T
+(fect_virtual) 197.36 553.67 T
+2 F
+(;) 248.08 553.67 T
+(/* mask of virtual modi\336ers af) 252 553.67 T
+(fected by this call */) 385.24 553.67 T
+(unsigned int) 126 540.67 T
+1 F
+(virtual_values) 189 540.67 T
+2 F
+(;) 251.94 540.67 T
+(/* v) 255 540.67 T
+(alues for af) 271.53 540.67 T
+(fected virtual modi\336ers \0501=>set, 0=>unset\051 */) 320.74 540.67 T
+1 12 Q
+(XkbSetIgnoreLockMods) 108 521 T
+2 F
+( sends a request to the server to change the server\325s) 223.31 521 T
+5 F
+-0.6 (Ignore-) 472.24 521 S
+-0.6 (LockMods) 108 508 S
+2 F
+( control.) 160.8 508 T
+1 F
+(af) 203.8 508 T
+(fect_r) 212.92 508 T
+(eal) 240.47 508 T
+2 F
+( and) 255.13 508 T
+1 F
+(r) 278.46 508 T
+(eal_values) 282.68 508 T
+2 F
+( are masks of real modifier bits indicating) 334.01 508 T
+(which real modifiers are to be added and removed from the server\325s) 108 495 T
+5 F
+-0.6 (IgnoreLockMods) 436.57 495 S
+2 F
+(control. Modifiers selected by both) 108 482 T
+1 F
+(af) 279.31 482 T
+(fect_r) 288.43 482 T
+(eal) 315.98 482 T
+2 F
+( and) 330.65 482 T
+1 F
+(r) 353.98 482 T
+(eal_values) 358.2 482 T
+2 F
+( are added to the server\325s) 409.52 482 T
+5 F
+-0.6 (IgnoreLockMods) 108 469 S
+2 F
+( control; those selected by) 200.4 469 T
+1 F
+(af) 328.72 469 T
+(fect_r) 337.84 469 T
+(eal) 365.39 469 T
+2 F
+( but not by) 380.05 469 T
+1 F
+(r) 434.73 469 T
+(eal_values) 438.95 469 T
+2 F
+( are) 490.27 469 T
+(removed from the server\325s) 108 456 T
+5 F
+-0.6 (IgnoreLockMods) 237.96 456 S
+2 F
+( control. Valid values for) 330.36 456 T
+1 F
+(af) 453.67 456 T
+(fect_r) 462.79 456 T
+(eal) 490.35 456 T
+2 F
+( and) 505.01 456 T
+1 F
+(r) 108 443 T
+(eal_values) 112.22 443 T
+2 F
+( consist of any combination of the eight core modifier bits:) 163.55 443 T
+5 F
+-0.6 (ShiftMask) 448.52 443 S
+2 F
+(,) 507.92 443 T
+5 F
+-1 -0.6 (LockMask) 108 430 B
+2 F
+-0.46 (,) 160.8 430 P
+5 F
+-1 -0.6 (ControlMask) 166.35 430 B
+2 F
+-0.46 (,) 238.95 430 P
+5 F
+-1 -0.6 (Mod1Mask) 244.49 430 B
+2 F
+-0.46 ( -) 297.29 430 P
+5 F
+-1 -0.6 (Mod5Mask) 306.38 430 B
+2 F
+-0.46 (.) 359.18 430 P
+1 F
+-0.46 (af) 364.73 430 P
+-0.46 (fect_virtual) 373.85 430 P
+2 F
+-0.46 ( and) 429.18 430 P
+1 F
+-0.46 (virtual_values) 451.59 430 P
+2 F
+-0.46 ( are) 520.26 430 P
+(masks of virtual modifier bits indicating which virtual modifiers are to be added and) 108 417 T
+(removed from the server\325s) 108 404 T
+5 F
+-0.6 (IgnoreLockMods) 237.96 404 S
+2 F
+( control. Modifiers selected by both) 330.36 404 T
+1 F
+(af) 108 391 T
+(fect_virtual) 117.12 391 T
+2 F
+( and) 172.45 391 T
+1 F
+(virtual_values) 195.78 391 T
+2 F
+( are added to the server\325s) 264.44 391 T
+5 F
+-0.6 (IgnoreLockMods) 387.73 391 S
+2 F
+( control;) 480.13 391 T
+(those selected by) 108 378 T
+1 F
+(af) 192.98 378 T
+(fect_virtual) 202.1 378 T
+2 F
+( but not by) 257.44 378 T
+1 F
+(virtual_values) 312.11 378 T
+2 F
+( are removed from the server\325s) 380.77 378 T
+5 F
+-0.6 (IgnoreLockMods) 108 365 S
+2 F
+( control.) 200.4 365 T
+(See section 7.1 for a discussion of virtual modifier masks to) 243.4 365 T
+0 (use in) 108 352 P
+1 F
+0 (af) 139.32 352 P
+0 (fect_virtual) 148.44 352 P
+2 F
+0 ( and) 203.77 352 P
+1 F
+0 (virtual_values) 227.09 352 P
+2 F
+0 (.) 295.76 352 P
+1 F
+0 (XkbSetIgnoreLockMods) 301.75 352 P
+2 F
+0 ( does not wait for a reply) 417.06 352 P
+(from the server. It returns) 108 339 T
+5 F
+-0.6 (True) 233.96 339 S
+2 F
+( if the request was sent, and) 260.36 339 T
+5 F
+-0.6 (False) 396.34 339 S
+2 F
+( otherwise.) 429.34 339 T
+0 F
+(10.7.3) 72 314 T
+(The IgnoreGr) 108 314 T
+(oupLoc) 183.11 314 T
+(k Contr) 226.2 314 T
+(ol) 267.96 314 T
+2 F
+(The) 108 294 T
+5 F
+-0.6 (IgnoreGroupLock) 129.66 294 S
+2 F
+( control is a boolean control with no attributes. If enabled, it) 228.66 294 T
+(specifies that the locked state of the keyboard group should not be considered when acti-) 108 281 T
+(vating passive grabs.) 108 268 T
+-0.05 (Because) 108 247 P
+5 F
+-0.11 -0.6 (IgnoreGroupLock) 150.93 247 B
+2 F
+-0.05 ( is a boolean control with no attributes, use the general bool-) 249.93 247 P
+(ean controls functions \050see section 10.1\051 to change its state.) 108 234 T
+0 F
+(10.7.4) 72 209 T
+(The InternalMods Contr) 108 209 T
+(ol) 242.44 209 T
+2 F
+(The core protocol does not provide any means to prevent a modifier from being reported) 108 189 T
+(in events sent to clients; Xkb, however makes this possible via the) 108 176 T
+5 F
+-0.6 (InternalMods) 428.98 176 S
+2 F
+( con-) 508.18 176 T
+(trol. It specifies modifiers that should be consumed by the server and not reported to cli-) 108 163 T
+(ents. When a key is pressed and a modifier that has its bit set in the) 108 150 T
+5 F
+-0.6 (InternalMods) 432.96 150 S
+2 F
+-0.31 (control is reported to the server, the server uses the modifier when determining the actions) 108 137 P
+(to apply for the key. The server then clears the bit, so it is not actually reported to the cli-) 108 124 T
+(ent. In addition, modifiers specified in the) 108 111 T
+5 F
+-0.6 (InternalMods) 312.31 111 S
+2 F
+( control are not used to deter-) 391.51 111 T
+(mine grabs and are not used to calculate core protocol compatibility state.) 108 98 T
+FMENDPAGE
+%%EndPage: "70" 82
+%%Page: "71" 83
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(71) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(Manipulate the) 108 712 T
+5 F
+-0.6 (InternalMods) 183.32 712 S
+2 F
+( control via the) 262.53 712 T
+1 F
+(internal) 337.85 712 T
+2 F
+( field in the) 375.85 712 T
+5 F
+-0.6 (XkbControlsRec) 433.85 712 S
+2 F
+(structure, using) 108 699 T
+1 F
+(XkbSetContr) 184.99 699 T
+(ols) 245.78 699 T
+2 F
+( and) 259.79 699 T
+1 F
+(XkbGetContr) 283.12 699 T
+(ols) 346.57 699 T
+2 F
+( \050see sections10.9 and 10.10\051.) 360.58 699 T
+(Alter-) 505.88 699 T
+(nati) 108 686 T
+(v) 125.7 686 T
+(ely) 131.52 686 T
+(, use) 145.4 686 T
+1 F
+(XkbSetServerInternalMods) 170.4 686 T
+2 F
+(.) 300.37 686 T
+-0.08 (To set the modifiers that are consumed by the server before events are delivered to the cli-) 108 665 P
+(ent, use) 108 652 T
+1 F
+(XkbSetServerInternalMods.) 147.66 652 T
+2 11 Q
+(Bool) 108 631.67 T
+3 F
+(XkbSetSer) 132.15 631.67 T
+(v) 182.76 631.67 T
+(erInter) 188.15 631.67 T
+(nalMods) 221.57 631.67 T
+2 F
+(\050) 262.53 631.67 T
+1 F
+(display) 266.19 631.67 T
+(, de) 297.36 631.67 T
+(vice_spec, af) 313.08 631.67 T
+(fect_r) 369.7 631.67 T
+(eal, r) 394.96 631.67 T
+(eal_values, af) 417.77 631.67 T
+(fect_virtual,) 478.68 631.67 T
+(virtual_values) 252 618.67 T
+2 F
+(\051) 314.94 618.67 T
+(Display *) 126 605.67 T
+1 F
+(display) 189 605.67 T
+2 F
+(;) 220.78 605.67 T
+(/* connection to the X serv) 252 605.67 T
+(er */) 370.68 605.67 T
+(unsigned int) 126 592.67 T
+1 F
+(de) 189 592.67 T
+(vice_spec) 199.22 592.67 T
+2 F
+(;\324) 241.98 592.67 T
+(/* de) 252 592.67 T
+(vice ID, or) 273.42 592.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 323.51 592.67 S
+2 F
+( */) 402.16 592.67 T
+(unsigned int) 126 579.67 T
+1 F
+(af) 189 579.67 T
+(fect_r) 197.36 579.67 T
+(eal) 222.62 579.67 T
+2 F
+(;) 236.06 579.67 T
+(/* mask of real modi\336ers af) 252 579.67 T
+(fected by this call */) 373.01 579.67 T
+(unsigned int) 126 566.67 T
+1 F
+(r) 189 566.67 T
+(eal_values) 192.87 566.67 T
+2 F
+(;) 239.92 566.67 T
+(/* v) 252 566.67 T
+(alues for af) 268.53 566.67 T
+(fected real modi\336ers \0501=>set, 0=>unset\051 */) 317.74 566.67 T
+(unsigned int) 126 553.67 T
+1 F
+(af) 189 553.67 T
+(fect_virtual) 197.36 553.67 T
+2 F
+(;) 248.08 553.67 T
+(/* mask of virtual modi\336ers af) 252 553.67 T
+(fected by this call */) 385.24 553.67 T
+(unsigned int) 126 540.67 T
+1 F
+(virtual_values) 189 540.67 T
+2 F
+(;) 251.94 540.67 T
+(/* v) 255 540.67 T
+(alues for af) 271.53 540.67 T
+(fected virtual modi\336ers \0501=>set, 0=>unset\051 */) 320.74 540.67 T
+1 12 Q
+(XkbSetServerInternalMods) 108 521 T
+2 F
+( sends a request to the server to change the internal modifiers) 237.97 521 T
+(consumed by the server.) 108 508 T
+1 F
+(af) 227.64 508 T
+(fect_r) 236.76 508 T
+(eal) 264.31 508 T
+2 F
+( and) 278.98 508 T
+1 F
+(r) 302.3 508 T
+(eal_values) 306.53 508 T
+2 F
+( are masks of real modifier bits indi-) 357.85 508 T
+(cating which real modifiers are to be added and removed from the server\325s internal modi-) 108 495 T
+(fiers control. Modifiers selected by both) 108 482 T
+1 F
+(af) 303.64 482 T
+(fect_r) 312.76 482 T
+(eal) 340.31 482 T
+2 F
+( and) 354.97 482 T
+1 F
+(r) 378.3 482 T
+(eal_values) 382.52 482 T
+2 F
+( are added to the) 433.85 482 T
+-0.4 (server\325s internal modifiers control; those selected by) 108 469 P
+1 F
+-0.4 (af) 360.17 469 P
+-0.4 (fect_r) 369.29 469 P
+-0.4 (eal) 396.85 469 P
+2 F
+-0.4 ( but not by) 411.51 469 P
+1 F
+-0.4 (r) 464.59 469 P
+-0.4 (eal_values) 468.82 469 P
+2 F
+-0.4 ( are) 520.14 469 P
+(removed from the server\325s internal modifiers mask. Valid values for) 108 456 T
+1 F
+(af) 438.26 456 T
+(fect_r) 447.38 456 T
+(eal) 474.94 456 T
+2 F
+( and) 489.6 456 T
+1 F
+(r) 108 443 T
+(eal_values) 112.22 443 T
+2 F
+( consist of any combination of the eight core modifier bits:) 163.55 443 T
+5 F
+-0.6 (ShiftMask) 448.52 443 S
+2 F
+(,) 507.92 443 T
+5 F
+-1 -0.6 (LockMask) 108 430 B
+2 F
+-0.46 (,) 160.8 430 P
+5 F
+-1 -0.6 (ControlMask) 166.35 430 B
+2 F
+-0.46 (,) 238.95 430 P
+5 F
+-1 -0.6 (Mod1Mask) 244.49 430 B
+2 F
+-0.46 ( -) 297.29 430 P
+5 F
+-1 -0.6 (Mod5Mask) 306.38 430 B
+2 F
+-0.46 (.) 359.18 430 P
+1 F
+-0.46 ( af) 362.18 430 P
+-0.46 (fect_virtual) 373.85 430 P
+2 F
+-0.46 ( and) 429.18 430 P
+1 F
+-0.46 (virtual_values) 451.59 430 P
+2 F
+-0.46 ( are) 520.26 430 P
+(masks of virtual modifier bits indicating which virtual modifiers are to be added and) 108 417 T
+(removed from the server\325s internal modifiers control. Modifiers selected by both) 108 404 T
+1 F
+-0.42 (af) 108 391 P
+-0.42 (fect_virtual) 117.12 391 P
+2 F
+-0.42 ( and) 172.45 391 P
+1 F
+-0.42 (virtual_values) 194.94 391 P
+2 F
+-0.42 ( are added to the server\325s internal modifiers control; those) 263.6 391 P
+-0.21 (selected by) 108 378 P
+1 F
+-0.21 (af) 164.24 378 P
+-0.21 (fect_virtual) 173.35 378 P
+2 F
+-0.21 ( but not by) 228.69 378 P
+1 F
+-0.21 (virtual_values) 282.52 378 P
+2 F
+-0.21 ( are removed from the server\325s internal) 351.19 378 P
+(modifiers control.) 108 365 T
+(See section 7.1 for a discussion of virtual modifier masks to use in) 196.99 365 T
+1 F
+(af) 108 352 T
+(fect_virtual) 117.12 352 T
+2 F
+( and) 172.45 352 T
+1 F
+(virtual_values) 195.78 352 T
+2 F
+(.) 264.44 352 T
+1 F
+( XkbSetServerInternalMods) 267.44 352 T
+2 F
+( does not wait for a reply) 400.42 352 T
+(from the server. It returns) 108 339 T
+5 F
+-0.6 (True) 233.96 339 S
+2 F
+( if the request was sent and) 260.36 339 T
+5 F
+-0.6 (False) 393.34 339 S
+2 F
+( otherwise.) 426.34 339 T
+0 F
+(10.8) 72 314 T
+(The XkbContr) 108 314 T
+(olsRec Structure) 186.43 314 T
+2 F
+(Many of the individual controls described in sections 10.1 through 10.7 may be manipu-) 108 294 T
+-0.25 (lated via convenience functions discussed in those sections. Some of them, however, have) 108 281 P
+(no convenience functions. The) 108 268 T
+5 F
+-0.6 (XkbControlsRec) 258.3 268 S
+2 F
+( structure allows the manipulation of) 350.7 268 T
+(one or more of the controls in a single operation and to track changes to any of them in) 108 255 T
+(conjunction with the) 108 242 T
+1 F
+(XkbGetContr) 209.66 242 T
+(ols) 273.12 242 T
+2 F
+( and) 287.12 242 T
+1 F
+(XkbSetContr) 310.45 242 T
+(ols) 371.24 242 T
+2 F
+( functions. This is the only way) 385.25 242 T
+(to manipulate those controls that have no convenience functions.) 108 229 T
+(The) 108 208 T
+5 F
+-0.6 (XkbControlsRec) 129.66 208 S
+2 F
+( structure is defined as follows:) 222.06 208 T
+2 11 Q
+(#de\336ne) 126 182.67 T
+(XkbMaxLe) 162 182.67 T
+(g) 212.54 182.67 T
+(alK) 217.99 182.67 T
+(e) 233.6 182.67 T
+(yCode) 238.32 182.67 T
+(255) 306 182.67 T
+(#de\336ne) 126 169.67 T
+(XkbPerK) 162 169.67 T
+(e) 203.27 169.67 T
+(yBitArraySize) 207.99 169.67 T
+(\050\050XkbMaxLe) 306 169.67 T
+(g) 363.87 169.67 T
+(alK) 369.32 169.67 T
+(e) 384.92 169.67 T
+(yCode+1\051/8\051) 389.64 169.67 T
+(typedef struct {) 126 149.67 T
+(unsigned char) 144 136.67 T
+(mk_d\337t_btn;) 224.25 136.67 T
+(/* def) 306.75 136.67 T
+(ault b) 332 136.67 T
+(utton for k) 356.53 136.67 T
+(e) 402.86 136.67 T
+(yboard dri) 407.58 136.67 T
+(v) 452.82 136.67 T
+(en mouse */) 458.15 136.67 T
+(unsigned char) 144 123.67 T
+(num_groups;) 224.25 123.67 T
+(/* number of k) 306.75 123.67 T
+(e) 371.72 123.67 T
+(yboard groups */) 376.44 123.67 T
+(unsigned char) 144 110.67 T
+(groups_wrap;) 224.25 110.67 T
+(/* ho) 306.75 110.67 T
+(w to wrap out-of-bounds groups */) 328.78 110.67 T
+(XkbModsRec) 144 97.67 T
+(internal;) 224.25 97.67 T
+(/* de\336nes serv) 306.75 97.67 T
+(er internal modi\336ers */) 370.13 97.67 T
+(XkbModsRec) 144 84.67 T
+(ignore_lock;) 224.25 84.67 T
+(/* modi\336ers to ignore when checking for grab */) 306.75 84.67 T
+(unsigned int) 144 71.67 T
+(enabled_ctrls;) 224.25 71.67 T
+(/* 1 bit => corresponding boolean control enabled */) 306.75 71.67 T
+FMENDPAGE
+%%EndPage: "71" 83
+%%Page: "72" 84
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(72) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+(unsigned short) 144 712.67 T
+(repeat_delay;) 224.25 712.67 T
+(/* ms delay until \336rst repeat */) 306.75 712.67 T
+(unsigned short) 144 699.67 T
+(repeat_interv) 224.25 699.67 T
+(al;) 282.01 699.67 T
+(/* ms delay between repeats */) 306.75 699.67 T
+(unsigned short) 144 686.67 T
+(slo) 224.25 686.67 T
+(w_k) 236.81 686.67 T
+(e) 255.64 686.67 T
+(ys_delay;) 260.36 686.67 T
+(/* ms minimum time k) 306.75 686.67 T
+(e) 406.88 686.67 T
+(y must be do) 411.6 686.67 T
+(wn to be ok */) 467.86 686.67 T
+(unsigned short) 144 673.67 T
+(debounce_delay;) 224.25 673.67 T
+(/* ms delay before k) 306.75 673.67 T
+(e) 396.46 673.67 T
+(y reacti) 401.17 673.67 T
+(v) 433.58 673.67 T
+(ated */) 438.81 673.67 T
+(unsigned short) 144 660.67 T
+(mk_delay;) 224.25 660.67 T
+(/* ms delay to second mouse motion e) 306.75 660.67 T
+(v) 474.83 660.67 T
+(ent */) 480.17 660.67 T
+(unsigned short) 144 647.67 T
+(mk_interv) 224.25 647.67 T
+(al;) 269.2 647.67 T
+(/* ms delay between repeat mouse e) 306.75 647.67 T
+(v) 465.33 647.67 T
+(ents */) 470.66 647.67 T
+(unsigned short) 144 634.67 T
+(mk_time_to_max;) 224.25 634.67 T
+(/* # interv) 306.75 634.67 T
+(als until constant mouse mo) 351.7 634.67 T
+(v) 474.37 634.67 T
+(e */) 479.7 634.67 T
+(unsigned short) 144 621.67 T
+(mk_max_speed;) 224.25 621.67 T
+(/* multiplier for maximum mouse speed */) 306.75 621.67 T
+(short) 144 608.67 T
+(mk_curv) 224.25 608.67 T
+(e;) 263.19 608.67 T
+(/* determines mouse mo) 306.75 608.67 T
+(v) 414.44 608.67 T
+(e curv) 419.78 608.67 T
+(e type */) 446.79 608.67 T
+(unsigned short) 144 595.67 T
+(ax_options;) 224.25 595.67 T
+(/* 1 bit => Access X option enabled */) 306.75 595.67 T
+(unsigned short) 144 582.67 T
+(ax_timeout;) 224.25 582.67 T
+(/* seconds until Access X disabled */) 306.75 582.67 T
+(unsigned short) 144 569.67 T
+(axt_opts_mask;) 224.25 569.67 T
+(/* 1 bit => options to reset on Access X timeout */) 306.75 569.67 T
+(unsigned short) 144 556.67 T
+(axt_opts_v) 224.25 556.67 T
+(alues;) 272.25 556.67 T
+(/* 1 bit => turn option on, 0=> of) 306.75 556.67 T
+(f */) 453.22 556.67 T
+(unsigned int) 144 543.67 T
+(axt_ctrls_mask;) 224.25 543.67 T
+(/* which bits in) 306.75 543.67 T
+1 F
+(enabled_ctrls) 377.65 543.67 T
+2 F
+( to modify */) 437.53 543.67 T
+(unsigned int) 144 530.67 T
+(axt_ctrls_v) 224.25 530.67 T
+(alues;) 272.86 530.67 T
+(/* v) 306.75 530.67 T
+(alues for ne) 323.28 530.67 T
+(w bits in) 374.32 530.67 T
+1 F
+(enabled_ctrls) 414.97 530.67 T
+2 F
+( */) 474.85 530.67 T
+(unsigned char) 144 517.67 T
+(per_k) 224.25 517.67 T
+(e) 249.19 517.67 T
+(y_repeat[XkbPerK) 253.91 517.67 T
+(e) 336.71 517.67 T
+(yBitArraySize];) 341.43 517.67 T
+( /* per k) 411.7 517.67 T
+(e) 447.95 517.67 T
+(y auto repeat */) 452.67 517.67 T
+(}) 126 504.67 T
+3 F
+(XkbContr) 134.03 504.67 T
+(olsRec) 182.11 504.67 T
+2 F
+(, *XkbControlsPtr;) 212.66 504.67 T
+2 12 Q
+-0.36 (The general-purpose functions that work with the) 108 485 P
+5 F
+-0.8 -0.6 (XkbControlsRec) 345.76 485 B
+2 F
+-0.36 ( structure use a mask) 438.16 485 P
+-0.09 (to specify which controls are to be manipulated. Table 10.6 lists these controls, the masks) 108 472 P
+(used to select them in the general function calls \050) 108 459 T
+1 F
+(whic) 342.96 459 T
+(h) 365.45 459 T
+2 F
+( parameter\051, and the data fields in) 371.45 459 T
+-0.06 (the) 108 446 P
+5 F
+-0.13 -0.6 (XkbControlsRec) 125.61 446 B
+2 F
+-0.06 ( structure that comprise each of the individual controls. Also listed) 218.01 446 P
+(are the bit used to turn boolean controls on and off and the section where each control is) 108 433 T
+(described in more detail.) 108 420 T
+3 F
+(T) 268.38 400 T
+(able 10.6 Xkb Contr) 275.28 400 T
+(ols) 382.07 400 T
+1 F
+(Contr) 73 373 T
+(ol) 100.47 373 T
+(Contr) 157.15 380 T
+(ol Selection Mask) 184.62 380 T
+(\050whic) 157.15 366 T
+(h par) 183.63 366 T
+(ameter\051) 209.12 366 T
+(Rele) 286.75 380 T
+(vant XkbContr) 307.89 380 T
+(olsRec) 377.69 380 T
+(Data F) 286.75 366 T
+(ields) 320.54 366 T
+(Boolean Contr) 423.55 380 T
+(ol) 494.01 380 T
+(enabled_ctrls bit) 423.55 366 T
+(Secti) 550.9 380 T
+(on) 550.9 366 T
+2 11 Q
+(AccessXFeedback) 73 351.67 T
+(XkbAccessXFeedbackMask) 157.15 351.67 T
+(ax_options:) 286.75 351.67 T
+(XkbAX_*FBMask) 295.75 338.67 T
+(XkbAccessXFeedbackMask) 424.41 351.67 T
+(10.6.3) 550.9 351.67 T
+(AccessXK) 73 324.67 T
+(e) 119.76 324.67 T
+(ys) 124.48 324.67 T
+(XkbAccessXK) 423.55 324.67 T
+(e) 489.25 324.67 T
+(ysMask) 493.97 324.67 T
+(10.6.1) 550.9 324.67 T
+(AccessXT) 73 310.67 T
+(imeout) 118.43 310.67 T
+(XkbAccessXT) 157.15 310.67 T
+(imeoutMask) 221.52 310.67 T
+(ax_timeout) 286.75 310.67 T
+(axt_opts_mask) 286.75 297.67 T
+(axt_opts_v) 286.75 284.67 T
+(alues) 334.75 284.67 T
+(axt_ctrls_mask) 286.75 271.67 T
+(axt_ctrls_v) 286.75 258.67 T
+(alues) 335.36 258.67 T
+(XkbAccessXT) 423.55 310.67 T
+(imeoutMask) 487.92 310.67 T
+(10.6.2) 550.9 310.67 T
+(AudibleBell) 73 244.67 T
+(XkbAudibleBellMask) 423.55 244.67 T
+(9.2) 550.9 244.67 T
+(AutoReset) 73 230.67 T
+(10.1.2) 550.9 230.67 T
+(BounceK) 73 216.67 T
+(e) 114.27 216.67 T
+(ys) 118.99 216.67 T
+(XkbBounceK) 157.15 216.67 T
+(e) 217.36 216.67 T
+(ysMask) 222.08 216.67 T
+(debounce_delay) 286.75 216.67 T
+(XkbBounceK) 423.55 216.67 T
+(e) 483.76 216.67 T
+(ysMask) 488.48 216.67 T
+(10.6.7) 550.9 216.67 T
+(Detectable-) 73 202.67 T
+(Autorepeat) 73 189.67 T
+(10.3.3) 550.9 202.67 T
+(EnabledControls) 73 175.67 T
+(XkbControlsEnabledMask) 157.15 175.67 T
+(enabled_ctrls) 286.75 175.67 T
+1 F
+(Non-Boolean Contr) 423.55 175.67 T
+(ol) 510.14 175.67 T
+2 F
+(10.1.1) 550.9 175.67 T
+(GroupsWrap) 73 161.67 T
+(XkbGroupsWrapMask) 157.15 161.67 T
+(groups_wrap) 286.75 161.67 T
+1 F
+(Non-Boolean Contr) 423.55 161.67 T
+(ol) 510.14 161.67 T
+2 F
+(10.7.1) 550.9 161.67 T
+(IgnoreGroupLock) 73 147.67 T
+(XkbIgnoreGroupLockMask) 423.55 147.67 T
+(10.7.3) 550.9 147.67 T
+(IgnoreLockMods) 73 133.67 T
+(XkbIgnoreLockModsMask) 157.15 133.67 T
+(ignore_lock) 286.75 133.67 T
+1 F
+(Non-Boolean Contr) 423.55 133.67 T
+(ol) 510.14 133.67 T
+2 F
+(5.1) 550.9 133.67 T
+(InternalMods) 73 119.67 T
+(XkbInternalModsMask) 157.15 119.67 T
+(internal) 286.75 119.67 T
+1 F
+(Non-Boolean Contr) 423.55 119.67 T
+(ol) 510.14 119.67 T
+2 F
+(5.1) 550.9 119.67 T
+(MouseK) 73 105.67 T
+(e) 110.61 105.67 T
+(ys) 115.33 105.67 T
+(XkbMouseK) 157.15 105.67 T
+(e) 213.7 105.67 T
+(ysMask) 218.42 105.67 T
+(mk_d\337t_btn) 286.75 105.67 T
+(XkbMouseK) 423.55 105.67 T
+(e) 480.1 105.67 T
+(ysMask) 484.82 105.67 T
+(10.5.1) 550.9 105.67 T
+72 392 578.7 392 2 L
+V
+0.5 H
+0 Z
+N
+72 361 578.7 361 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "72" 84
+%%Page: "73" 85
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(73) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(Table 10.7 shows the actual values for the individual mask bits used to select controls for) 108 464 T
+(modification and to enable and disable the control. Note that the same mask bit is used to) 108 451 T
+-0.19 (specify general modifications to the parameters used to configure the control \050) 108 438 P
+1 F
+-0.19 (whic) 481.56 438 P
+-0.19 (h) 504.05 438 P
+2 F
+-0.19 (\051, and) 510.05 438 P
+(to enable and disable the control \050) 108 425 T
+1 F
+(enabled_ctrls) 270.64 425 T
+2 F
+(\051. The anomalies in the table \050no \322ok\323 in) 335.96 425 T
+(column\051 are for controls that have no configurable attributes; and for controls that are not) 108 412 T
+(boolean controls and therefore cannot be enabled or disabled.) 108 399 T
+2 11 Q
+(MouseK) 73 663.67 T
+(e) 110.61 663.67 T
+(ysAccel) 115.33 663.67 T
+(XkbMouseK) 157.15 663.67 T
+(e) 213.7 663.67 T
+(ysAccelMask) 218.42 663.67 T
+(mk_delay) 286.75 663.67 T
+(mk_interv) 286.75 650.67 T
+(al) 331.7 650.67 T
+(mk_time_to_max) 286.75 637.67 T
+(mk_max_speed) 286.75 624.67 T
+(mk_curv) 286.75 611.67 T
+(e) 325.69 611.67 T
+(XkbMouseK) 423.55 663.67 T
+(e) 480.1 663.67 T
+(ysAccelMask) 484.82 663.67 T
+(10.5.2) 550.9 663.67 T
+(Ov) 73 597.67 T
+(erlay1) 86.28 597.67 T
+(XkbOv) 423.55 597.67 T
+(erlay1Mask) 455.77 597.67 T
+(10.4) 550.9 597.67 T
+(Ov) 73 583.67 T
+(erlay2) 86.28 583.67 T
+(XkbOv) 423.55 583.67 T
+(erlay2Mask) 455.77 583.67 T
+(10.4) 550.9 583.67 T
+(PerK) 73 569.67 T
+(e) 95.33 569.67 T
+(yRepeat) 100.05 569.67 T
+(XkbPerK) 157.15 569.67 T
+(e) 198.42 569.67 T
+(yRepeatMask) 203.14 569.67 T
+(per_k) 286.75 569.67 T
+(e) 311.69 569.67 T
+(y_repeat) 316.41 569.67 T
+1 F
+(Non-Boolean Contr) 423.55 569.67 T
+(ol) 510.14 569.67 T
+2 F
+(10.3.1) 550.9 569.67 T
+(RepeatK) 73 555.67 T
+(e) 111.21 555.67 T
+(ys) 115.93 555.67 T
+(XkbRepeatK) 157.15 555.67 T
+(e) 214.31 555.67 T
+(ysMask) 219.02 555.67 T
+(repeat_delay) 286.75 555.67 T
+(repeat_interv) 286.75 542.67 T
+(al) 344.51 542.67 T
+(XkbRepeatK) 423.55 555.67 T
+(e) 480.71 555.67 T
+(ysMask) 485.42 555.67 T
+(10.3) 550.9 555.67 T
+(Slo) 73 528.67 T
+(wK) 87.4 528.67 T
+(e) 103.01 528.67 T
+(ys) 107.73 528.67 T
+(XkbSlo) 157.15 528.67 T
+(wK) 190.49 528.67 T
+(e) 206.1 528.67 T
+(ysMask) 210.82 528.67 T
+(slo) 286.75 528.67 T
+(w_k) 299.31 528.67 T
+(e) 318.14 528.67 T
+(ys_delay) 322.86 528.67 T
+(XkbSlo) 423.55 528.67 T
+(wK) 456.89 528.67 T
+(e) 472.5 528.67 T
+(ysMask) 477.22 528.67 T
+(10.6.6) 550.9 528.67 T
+(Stick) 73 514.67 T
+(yK) 95.45 514.67 T
+(e) 108.62 514.67 T
+(ys) 113.34 514.67 T
+(XkbStick) 157.15 514.67 T
+(yK) 198.54 514.67 T
+(e) 211.71 514.67 T
+(ysMask) 216.43 514.67 T
+(ax_options:) 286.75 514.67 T
+(XkbAX_T) 295.75 501.67 T
+(w) 341.92 501.67 T
+(oK) 349.75 501.67 T
+(e) 362.92 501.67 T
+(ysMask) 367.64 501.67 T
+(XkbAX_LatchT) 295.75 488.67 T
+(oLockMask) 366.96 488.67 T
+(XkbStick) 423.55 514.67 T
+(yK) 464.94 514.67 T
+(e) 478.11 514.67 T
+(ysMask) 482.83 514.67 T
+(10.6.8) 550.9 514.67 T
+3 12 Q
+(T) 252.2 379 T
+(able 10.7 Contr) 259.1 379 T
+(ols Mask Bits) 340.88 379 T
+1 F
+(Mask Bit) 107.76 352 T
+(whic) 256.68 359 T
+(h or) 279.17 359 T
+(c) 256.68 345 T
+(hang) 261.83 345 T
+(ed_ctrls) 285.71 345 T
+(enabled_ctrls) 331.87 352 T
+(V) 407.24 352 T
+(alue) 413.24 352 T
+2 11 Q
+(XkbRepeatK) 107.76 330.67 T
+(e) 164.91 330.67 T
+(ysMask) 169.63 330.67 T
+(ok) 256.68 330.67 T
+(ok) 331.87 330.67 T
+(\0501L<<0\051) 407.24 330.67 T
+(XkbSlo) 107.76 316.67 T
+(wK) 141.1 316.67 T
+(e) 156.71 316.67 T
+(ysMask) 161.43 316.67 T
+(ok) 256.68 316.67 T
+(ok) 331.87 316.67 T
+(\0501L<<1\051) 407.24 316.67 T
+(XkbBounceK) 107.76 302.67 T
+(e) 167.97 302.67 T
+(ysMask) 172.69 302.67 T
+(ok) 256.68 302.67 T
+(ok) 331.87 302.67 T
+(\0501L<<2\051) 407.24 302.67 T
+(XkbStick) 107.76 288.67 T
+(yK) 149.15 288.67 T
+(e) 162.32 288.67 T
+(ysMask) 167.04 288.67 T
+(ok) 256.68 288.67 T
+(ok) 331.87 288.67 T
+(\0501L<<3\051) 407.24 288.67 T
+(XkbMouseK) 107.76 274.67 T
+(e) 164.31 274.67 T
+(ysMask) 169.03 274.67 T
+(ok) 256.68 274.67 T
+(ok) 331.87 274.67 T
+(\0501L<<4\051) 407.24 274.67 T
+(XkbMouseK) 107.76 260.67 T
+(e) 164.31 260.67 T
+(ysAccelMask) 169.03 260.67 T
+(ok) 256.68 260.67 T
+(ok) 331.87 260.67 T
+(\0501L<<5\051) 407.24 260.67 T
+(XkbAccessXK) 107.76 246.67 T
+(e) 173.46 246.67 T
+(ysMask) 178.18 246.67 T
+(ok) 256.68 246.67 T
+(ok) 331.87 246.67 T
+(\0501L<<6\051) 407.24 246.67 T
+(XkbAccessXT) 107.76 232.67 T
+(imeoutMask) 172.13 232.67 T
+(ok) 256.68 232.67 T
+(ok) 331.87 232.67 T
+(\0501L<<7\051) 407.24 232.67 T
+(XkbAccessXFeedbackMask) 107.76 218.67 T
+(ok) 256.68 218.67 T
+(ok) 331.87 218.67 T
+(\0501L<<8\051) 407.24 218.67 T
+(XkbAudibleBellMask) 107.76 204.67 T
+(ok) 331.87 204.67 T
+(\0501L<<9\051) 407.24 204.67 T
+(XkbOv) 107.76 190.67 T
+(erlay1Mask) 139.98 190.67 T
+(ok) 331.87 190.67 T
+(\0501L<<10\051) 407.24 190.67 T
+(XkbOv) 107.76 176.67 T
+(erlay2Mask) 139.98 176.67 T
+(ok) 331.87 176.67 T
+(\0501L<<11\051) 407.24 176.67 T
+(XkbIgnoreGroupLockMask) 107.76 162.67 T
+(ok) 331.87 162.67 T
+(\0501L<<12\051) 407.24 162.67 T
+(XkbGroupsWrapMask) 107.76 148.67 T
+(ok) 256.68 148.67 T
+(\0501L<<27\051) 407.24 148.67 T
+(XkbInternalModsMask) 107.76 134.67 T
+(ok) 256.68 134.67 T
+(\0501L<<28\051) 407.24 134.67 T
+(XkbIgnoreLockModsMask) 107.76 120.67 T
+(ok) 256.68 120.67 T
+(\0501L<<29\051) 407.24 120.67 T
+(XkbPerK) 107.76 106.67 T
+(e) 149.03 106.67 T
+(yRepeatMask) 153.75 106.67 T
+(ok) 256.68 106.67 T
+(\0501L<<30\051) 407.24 106.67 T
+(XkbControlsEnabledMask) 107.76 92.67 T
+(ok) 256.68 92.67 T
+(\0501L<<31\051) 407.24 92.67 T
+(XkbAccessXOptionsMask) 107.76 78.67 T
+(ok) 256.68 78.67 T
+(ok) 331.87 78.67 T
+(\050XkbStick) 407.24 78.67 T
+(yK) 452.3 78.67 T
+(e) 465.46 78.67 T
+(ysMask |) 470.18 78.67 T
+(XkbAccessXFeedbackMask\051) 407.24 67.67 T
+3 12 Q
+(T) 268.38 712 T
+(able 10.6 Xkb Contr) 275.28 712 T
+(ols) 382.07 712 T
+1 F
+(Contr) 73 685 T
+(ol) 100.47 685 T
+(Contr) 157.15 692 T
+(ol Selection Mask) 184.62 692 T
+(\050whic) 157.15 678 T
+(h par) 183.63 678 T
+(ameter\051) 209.12 678 T
+(Rele) 286.75 692 T
+(vant XkbContr) 307.89 692 T
+(olsRec) 377.69 692 T
+(Data F) 286.75 678 T
+(ields) 320.54 678 T
+(Boolean Contr) 423.55 692 T
+(ol) 494.01 692 T
+(enabled_ctrls bit) 423.55 678 T
+(Secti) 550.9 692 T
+(on) 550.9 678 T
+72 704 578.7 704 2 L
+V
+0.5 H
+0 Z
+N
+72 673 578.7 673 2 L
+V
+N
+106.76 371 541.24 371 2 L
+V
+N
+106.76 340 541.24 340 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "73" 85
+%%Page: "74" 86
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(74) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(The individual fields of the) 108 625 T
+5 F
+-0.6 (XkbControlsRec) 241.66 625 S
+2 F
+( structure are defined as follows.) 334.06 625 T
+0 11 Q
+(mk_dflt_btn) 108 602.67 T
+1 12 Q
+(mk_dflt_btn) 108 584 T
+2 F
+( is an attribute of the) 165.34 584 T
+5 F
+-0.6 (MouseKeys) 267.32 584 S
+2 F
+( control \050see section 10.5\051. It specifies the) 326.73 584 T
+(mouse button number to use for keyboard simulated mouse button operations. Its value) 108 571 T
+(should be one of the core symbols) 108 558 T
+5 F
+-0.6 (Button1) 274.98 558 S
+2 F
+( -) 321.18 558 T
+5 F
+-0.6 (Button5) 331.18 558 S
+2 F
+(.) 377.38 558 T
+0 11 Q
+(num_groups) 108 535.67 T
+1 12 Q
+-0.42 (num_groups) 108 517 P
+2 F
+-0.42 ( is not a part of any control, but is reported in the) 168 517 P
+5 F
+-0.93 -0.6 (XkbControlsRec) 400.46 517 B
+2 F
+-0.42 ( structure) 492.86 517 P
+(whenever any of its components are fetched from the server. It reports the number of) 108 504 T
+(groups the particular keyboard configuration uses and is computed automatically by the) 108 491 T
+(server whenever the keyboard mapping changes.) 108 478 T
+0 11 Q
+(groups_wrap) 108 455.67 T
+1 12 Q
+(groups_wrap) 108 437 T
+2 F
+( is an attrib) 172.01 437 T
+(ute of the) 225.43 437 T
+5 F
+-0.6 (GroupsWrap) 273.76 437 S
+2 F
+( control \050) 339.76 437 T
+(see section 10.7.1) 383.75 437 T
+(\051. It speci\336es) 469.07 437 T
+(the handling of ille) 108 424 T
+(g) 198.82 424 T
+(al groups on a global basis. V) 204.76 424 T
+(alid v) 345.74 424 T
+(alues for) 372.44 424 T
+1 F
+(groups_wrap) 417.1 424 T
+2 F
+( are sho) 481.1 424 T
+(wn) 518.12 424 T
+(in T) 108 411 T
+(able 10.8.) 126.71 411 T
+(When) 108 303 T
+1 F
+(groups_wrap) 139.66 303 T
+2 F
+( is set to) 203.66 303 T
+5 F
+-0.6 (XkbRedirectIntoRange) 246.34 303 S
+2 F
+(, its four low-order bits specify) 378.34 303 T
+(the index of the group to use.) 108 290 T
+0 11 Q
+(internal) 108 267.67 T
+1 12 Q
+(internal) 108 249 T
+2 F
+( is an attrib) 146 249 T
+(ute of the) 199.43 249 T
+5 F
+-0.6 (InternalMods) 247.75 249 S
+2 F
+( control \050see section 10.7.4\051. It speci\336es) 326.95 249 T
+(modifiers to be consumed in the server and not passed on to clients when events are) 108 236 T
+(reported. Valid values consist of any combination of the eight core modifier bits:) 108 223 T
+5 F
+-0.6 (Shift-) 499.28 223 S
+-0.6 (Mask) 108 210 S
+2 F
+(,) 134.4 210 T
+5 F
+-0.6 (LockMask) 140.4 210 S
+2 F
+(,) 193.2 210 T
+5 F
+-0.6 (ControlMask) 199.2 210 S
+2 F
+(,) 271.8 210 T
+5 F
+-0.6 (Mod1Mask) 277.8 210 S
+2 F
+( -) 330.6 210 T
+5 F
+-0.6 (Mod5Mask) 340.6 210 S
+2 F
+(.) 393.4 210 T
+0 11 Q
+(ignore_lock) 108 187.67 T
+1 12 Q
+(ignore_lock) 108 169 T
+2 F
+( is an attrib) 165.32 169 T
+(ute of the) 218.75 169 T
+5 F
+-0.6 (IgnoreLockMods) 267.07 169 S
+2 F
+( control \050see section 10.7.2\051. It speci-) 359.47 169 T
+(\336es) 108 156 T
+(modifiers to be ignored in grab calculations. Valid values consist of any combination) 127.67 156 T
+(of the eight core modifier bits:) 108 143 T
+5 F
+-0.6 (ShiftMask) 257.32 143 S
+2 F
+(,) 316.72 143 T
+5 F
+-0.6 (LockMask) 322.72 143 S
+2 F
+(,) 375.52 143 T
+5 F
+-0.6 (ControlMask) 381.52 143 S
+2 F
+(,) 454.12 143 T
+5 F
+-0.6 (Mod1Mask) 460.12 143 S
+2 F
+( -) 512.92 143 T
+5 F
+-0.6 (Mod5Mask) 108 130 S
+2 F
+(.) 160.8 130 T
+0 11 Q
+(enabled_ctrls) 108 107.67 T
+1 12 Q
+(enabled_ctrls) 108 89 T
+2 F
+( is an attribute of the) 173.33 89 T
+5 F
+-0.6 (EnabledControls) 275.32 89 S
+2 F
+( control \050see section 10.1.1\051. It) 374.32 89 T
+(contains one bit per boolean control. Each bit determines whether the corresponding con-) 108 76 T
+2 11 Q
+(XkbAllBooleanCtrlsMask) 107.76 663.67 T
+(ok) 331.87 663.67 T
+(\0500x00001FFF\051) 407.24 663.67 T
+(XkbAllControlsMask) 107.76 649.67 T
+(ok) 256.68 649.67 T
+(\0500xF8001FFF\051) 407.24 649.67 T
+3 12 Q
+(T) 197.02 391 T
+(able 10.8 Gr) 203.92 391 T
+(oupsWrap options \050) 269.7 391 T
+7 F
+(groups_wrap) 371.05 391 T
+3 F
+( \336eld\051) 435.73 391 T
+1 F
+(gr) 217 371 T
+(oups_wr) 227.13 371 T
+(ap symbolic name) 268.29 371 T
+(value) 361 371 T
+2 11 Q
+(XkbWrapIntoRange) 217 356.67 T
+(\0500x00\051) 361 356.67 T
+(XkbClampIntoRange) 217 342.67 T
+(\0500x40\051) 361 342.67 T
+(XkbRedirectIntoRange) 217 328.67 T
+(\0500x80\051) 361 328.67 T
+3 12 Q
+(T) 252.2 712 T
+(able 10.7 Contr) 259.1 712 T
+(ols Mask Bits) 340.88 712 T
+1 F
+(Mask Bit) 107.76 685 T
+(whic) 256.68 692 T
+(h or) 279.17 692 T
+(c) 256.68 678 T
+(hang) 261.83 678 T
+(ed_ctrls) 285.71 678 T
+(enabled_ctrls) 331.87 685 T
+(V) 407.24 685 T
+(alue) 413.24 685 T
+106.76 704 541.24 704 2 L
+V
+0.5 H
+0 Z
+N
+106.76 673 541.24 673 2 L
+V
+N
+216 383 432 383 2 L
+V
+N
+216 366 432 366 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "74" 86
+%%Page: "75" 87
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(75) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(trol is enabled or disabled; a one bit means the control is enabled. The mask bits used to) 108 712 T
+(enable these controls are listed in Table 10.7, using only those masks with \322ok\323 in the) 108 699 T
+1 F
+(enabled_ctrls) 108 686 T
+2 F
+( column.) 173.33 686 T
+0 11 Q
+(repeat_delay and repeat_interval) 108 663.67 T
+1 12 Q
+(repeat_delay) 108 645 T
+2 F
+( and) 170.65 645 T
+1 F
+(repeat_interval) 193.98 645 T
+2 F
+( are attrib) 267.97 645 T
+(utes of the) 313.72 645 T
+5 F
+-0.6 (RepeatKeys) 366.71 645 S
+2 F
+( control \050see section) 432.71 645 T
+(10.3.2\051.) 108 632 T
+1 F
+(repeat_delay) 148 632 T
+2 F
+( is the initial delay before a k) 210.65 632 T
+(e) 350.17 632 T
+(y be) 355.32 632 T
+(gins repeating, in milliseconds;) 375.47 632 T
+1 F
+(repeat_interval) 108 619 T
+2 F
+( is the delay between subsequent k) 181.99 619 T
+(e) 347.84 619 T
+(y e) 352.99 619 T
+(v) 367.02 619 T
+(ents, in milliseconds.) 372.84 619 T
+0 11 Q
+(slow_keys_delay) 108 596.67 T
+1 12 Q
+(slow_keys_delay) 108 578 T
+2 F
+( is an attrib) 188.65 578 T
+(ute of the) 242.08 578 T
+5 F
+-0.6 (SlowKeys) 290.4 578 S
+2 F
+( control \050see section 10.6.6\051. Its v) 343.2 578 T
+(alue) 503.21 578 T
+(speci\336es the) 108 565 T
+5 F
+-0.6 (SlowKeys) 169.99 565 S
+2 F
+( acceptance delay period in milliseconds before a k) 222.79 565 T
+(e) 467.94 565 T
+(y press is) 473.09 565 T
+(accepted by the serv) 108 552 T
+(er) 205.45 552 T
+(.) 214.12 552 T
+0 11 Q
+(debounce_delay) 108 529.67 T
+1 12 Q
+(debounce_delay) 108 511 T
+2 F
+( is an attrib) 185.98 511 T
+(ute of the) 239.4 511 T
+5 F
+-0.6 (BounceKeys) 287.72 511 S
+2 F
+( control \050see section 10.6.7\051. Its v) 353.73 511 T
+(alue) 513.73 511 T
+-0.26 (speci\336es the) 108 498 P
+5 F
+-0.57 -0.6 (BounceKeys) 169.47 498 B
+2 F
+-0.26 ( delay period in milliseconds for which the k) 235.47 498 P
+-0.26 (e) 447.91 498 P
+-0.26 (y is disabled after) 453.06 498 P
+(ha) 108 485 T
+(ving been pressed before another press of the same k) 119.09 485 T
+(e) 372.56 485 T
+(y is accepted by the serv) 377.71 485 T
+(er) 495.17 485 T
+(.) 503.83 485 T
+0 11 Q
+(mk_delay, mk_interval, mk_time_to_max, mk_max_speed, and mk_curve) 108 462.67 T
+1 12 Q
+(mk_delay) 108 444 T
+2 F
+(,) 153.98 444 T
+1 F
+(mk_interval) 159.98 444 T
+2 F
+(,) 217.31 444 T
+1 F
+(mk_time_to_max) 223.31 444 T
+2 F
+(,) 305.29 444 T
+1 F
+(mk_max_speed) 311.29 444 T
+2 F
+(, and) 384.6 444 T
+1 F
+(mk_curve) 410.93 444 T
+2 F
+( are attrib) 457.57 444 T
+(utes of) 503.32 444 T
+-0.33 (the) 108 431 P
+5 F
+-0.74 -0.6 (MouseKeysAccel) 125.33 431 B
+2 F
+-0.33 ( control. Refer to section 10.5.2 for a description of these \336elds and) 217.73 431 P
+(the units in) 108 418 T
+(v) 160.86 418 T
+(olv) 166.62 418 T
+(ed.) 181.78 418 T
+0 11 Q
+(ax_options) 108 395.67 T
+2 12 Q
+(The) 108 377 T
+1 F
+(ax_options) 129.66 377 T
+2 F
+( field contains attributes used to configure two different controls, the) 182.33 377 T
+5 F
+-0.6 (StickyKeys) 108 364 S
+2 F
+( control \050see section 10.6.8\051 and the) 174 364 T
+5 F
+-0.6 (AccessXFeedback) 348.3 364 S
+2 F
+( control \050see sec-) 447.3 364 T
+(tion 10.6.3\051. The) 108 351 T
+1 F
+(ax_options) 191.33 351 T
+2 F
+( field is a bitmask and may include any combination of the) 244 351 T
+(bits defined in Table 10.9.) 108 338 T
+3 F
+(T) 182.25 318 T
+(able 10.9 Access X Enable/Disable Bits \050) 189.15 318 T
+7 F
+(ax_options) 396.49 318 T
+3 F
+( \336eld\051) 450.5 318 T
+1 F
+(Access X Contr) 172 298 T
+(ol) 245.45 298 T
+(ax_options bit) 262 298 T
+(value) 406 298 T
+2 11 Q
+(AccessXFeedback) 172 283.67 T
+(XkbAX_SKPressFBMask) 262 283.67 T
+(\0501L<<0\051) 406 283.67 T
+(XkbAX_SKAcceptFBMask) 262 269.67 T
+(\0501L << 1\051) 406 269.67 T
+(XkbAX_FeatureFBMask) 262 255.67 T
+(\0501L << 2\051) 406 255.67 T
+(XkbAX_Slo) 262 241.67 T
+(wW) 316.73 241.67 T
+(arnFBMask) 334.17 241.67 T
+(\0501L << 3\051) 406 241.67 T
+(XkbAX_IndicatorFBMask) 262 227.67 T
+(\0501L << 4\051) 406 227.67 T
+(XkbAX_Stick) 262 213.67 T
+(yK) 324.78 213.67 T
+(e) 337.94 213.67 T
+(ysFBMask) 342.66 213.67 T
+(\0501L << 5\051) 406 213.67 T
+(XkbAX_SKReleaseFBMask) 262 199.67 T
+(\0501L << 8\051) 406 199.67 T
+(XkbAX_SKRejectFBMask) 262 185.67 T
+(\0501L << 9\051) 406 185.67 T
+(XkbAX_BKRejectFBMask) 262 171.67 T
+(\0501L << 10\051) 406 171.67 T
+(XkbAX_DumbBellFBMask) 262 157.67 T
+(\0501L << 11\051) 406 157.67 T
+(Stick) 172 143.67 T
+(yK) 194.45 143.67 T
+(e) 207.62 143.67 T
+(ys) 212.34 143.67 T
+(XkbAX_T) 262 143.67 T
+(w) 308.17 143.67 T
+(oK) 316 143.67 T
+(e) 329.17 143.67 T
+(ysMask) 333.89 143.67 T
+(\0501L << 6\051) 406 143.67 T
+(XkbAX_LatchT) 262 129.67 T
+(oLockMask) 333.21 129.67 T
+(\0501L << 7\051) 406 129.67 T
+(XkbAX_AllOptionsMask) 262 115.67 T
+(\0500xFFF\051) 406 115.67 T
+171 310 477 310 2 L
+V
+0.5 H
+0 Z
+N
+171 293 477 293 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "75" 87
+%%Page: "76" 88
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(76) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(The fields pertaining to each control are relevant only when the) 108 712 T
+2 11 Q
+(control is enabled \050) 415.6 712 T
+5 12 Q
+-0.6 (XkbAc-) 500.22 712 S
+-0.6 (cessXFeedbackMask) 108 699 S
+2 F
+( or) 220.2 699 T
+5 F
+-0.6 (XkbStickyKeysMask) 236.2 699 S
+2 F
+( bit is turned on in the) 348.4 699 T
+1 F
+(enabled_cntrls) 456.74 699 T
+2 F
+(field\051.) 108 686 T
+(Xkb provides a set of convenience macros for working with the) 108 665 T
+1 F
+(ax_options) 416.27 665 T
+2 F
+( field of an) 468.94 665 T
+5 F
+-0.6 (XkbControlsRec) 108 652 S
+2 F
+( structure:) 200.4 652 T
+2 11 Q
+(#de\336ne) 126 626.67 T
+3 F
+(XkbAX_NeedOption) 162 626.67 T
+2 F
+(\050c,w\051) 260.39 626.67 T
+(\050\050c\051->ax_options&\050w\051\051) 306 626.67 T
+2 12 Q
+(The) 108 606 T
+1 F
+(XkbAX_NeedOption) 129.66 606 T
+2 F
+( macro is useful for determining whether a particular AccessX) 226.98 606 T
+-0.25 (option is enabled or not. It accepts a pointer to an) 108 593 P
+5 F
+-0.55 -0.6 (XkbControlsRec) 345.21 593 B
+2 F
+-0.25 ( structure and a valid) 437.61 593 P
+(mask bit from Table 10.9. If the specified mask bit in the) 108 580 T
+1 F
+(ax_options) 384.64 580 T
+2 F
+( field of the controls) 437.3 580 T
+(structure is set, the macro returns the mask bit. Otherwise, it returns zero. Thus,) 108 567 T
+(XkbAX_NeedOption\050ctlrec, XkbAX_) 108 546 T
+2 11 Q
+(LatchT) 291.29 546 T
+(oLockMask) 322.18 546 T
+2 12 Q
+(\051) 374.72 546 T
+(is nonzero if the latch to lock transition for latching keys is enabled, and zero if it is dis-) 108 525 T
+(abled. Note that) 108 512 T
+1 F
+(XkbAX_NeedOption) 187.32 512 T
+2 F
+( only determines whether or not the particular capa-) 284.64 512 T
+(bility is configured to operate; the) 108 499 T
+5 F
+-0.6 (XkbAccessXFeedbackMask) 273.98 499 S
+2 F
+( bit must also be turned) 419.19 499 T
+(on in) 108 486 T
+1 F
+(enabled_ctrls) 135.34 486 T
+2 F
+( for the capability to actually be functioning.) 200.66 486 T
+2 11 Q
+(#de\336ne) 126 460.67 T
+3 F
+(XkbAX_AnyF) 162 460.67 T
+(eedback) 229.56 460.67 T
+2 F
+(\050c\051) 268.06 460.67 T
+(\050\050c\051->enabled_ctrls&XkbAccessXFeedbackMask\051) 306 460.67 T
+2 12 Q
+(The) 108 440 T
+1 F
+(XkbAX_AnyF) 129.66 440 T
+(eebac) 194.08 440 T
+(k) 221.82 440 T
+2 F
+( macro accepts a pointer to an) 227.15 440 T
+5 F
+-0.6 (XkbControlsRec) 373.44 440 S
+2 F
+( structure and) 465.84 440 T
+-0.47 (tells whether the) 108 427 P
+5 F
+-1.03 -0.6 (AccessXFeedback) 188.91 427 B
+2 F
+-0.47 ( control is enabled or not. If the) 287.91 427 P
+5 F
+-1.03 -0.6 (AccessXFeedback) 438.47 427 B
+2 F
+(control is enabled, the macro returns) 108 414 T
+5 F
+-0.6 (XkbAccessXFeedbackMask) 286.3 414 S
+2 F
+(. Otherwise, it returns) 431.5 414 T
+(zero.) 108 401 T
+2 11 Q
+(#de\336ne) 126 375.67 T
+3 F
+(XkbAX_NeedF) 162 375.67 T
+(eedback) 233.83 375.67 T
+2 F
+(\050c,w\051) 272.33 375.67 T
+(\050XkbAX_An) 162 362.67 T
+(yFeedback\050c\051&&XkbAX_NeedOption\050c,w\051\051) 219.27 362.67 T
+2 12 Q
+(The) 108 342 T
+1 F
+(XkbAX_NeedF) 129.66 342 T
+(eedbac) 200.08 342 T
+(k) 233.82 342 T
+2 F
+( macro is useful for determining if both the) 239.15 342 T
+5 F
+-0.6 (AccessXFeed-) 448.79 342 S
+-0.6 (back) 108 329 S
+2 F
+( control and a particular AccessX feedback option are enabled. The macro accepts a) 134.4 329 T
+(pointer to an) 108 316 T
+5 F
+-0.6 (XkbControlsRec) 171.66 316 S
+2 F
+( structure and a feedback option from the table above. If) 264.06 316 T
+(both the) 108 303 T
+5 F
+-0.6 (AccessXFeedback) 150 303 S
+2 F
+( control and the specified feedback option are enabled, the) 249 303 T
+(macro returns) 108 290 T
+5 F
+-0.6 (True) 177.31 290 S
+2 F
+(. Otherwise it returns) 203.71 290 T
+5 F
+-0.6 (False) 308.03 290 S
+2 F
+(.) 341.03 290 T
+0 11 Q
+(ax_timeout, axt_opts_mask, axt_opts_values, axt_ctrls_mask, and) 108 267.67 T
+(axt_ctrls_values) 108 255.67 T
+1 12 Q
+(ax_timeout) 108 237 T
+2 F
+(,) 161.33 237 T
+1 F
+(act_opts_mask) 167.33 237 T
+2 F
+(,) 238.66 237 T
+1 F
+(axt_opts_values) 244.66 237 T
+2 F
+(,) 321.98 237 T
+1 F
+(axt_ctrls_mask) 327.98 237 T
+2 F
+(, and) 400.64 237 T
+1 F
+(axt_ctrls_values) 426.97 237 T
+2 F
+( are) 505.63 237 T
+(attrib) 108 224 T
+(utes of the) 133.09 224 T
+5 F
+-0.6 (AccessXTimeout) 186.08 224 S
+2 F
+( control. Refer to section 10.6.2 for a description of) 278.49 224 T
+(these \336elds and the units in) 108 211 T
+(v) 237.85 211 T
+(olv) 243.61 211 T
+(ed.) 258.77 211 T
+0 11 Q
+(per_key_repeat) 108 188.67 T
+2 12 Q
+-0.2 (The) 108 170 P
+1 F
+-0.2 (per_key_repeat) 129.46 170 P
+2 F
+-0.2 ( field mirrors the) 204.1 170 P
+1 F
+-0.2 (auto_repeats) 287.26 170 P
+2 F
+-0.2 ( field of the core protocol) 349.93 170 P
+5 F
+-0.45 -0.6 (XKeyboard-) 474 170 B
+-0.6 (State) 108 157 S
+2 F
+( structure: changing the) 141 157 T
+1 F
+(auto_repeats) 256.98 157 T
+2 F
+( field automatically changes) 319.64 157 T
+1 F
+(per_key_repeat) 457.62 157 T
+2 F
+-0.13 (and vice versa. It is provided for convenience and to reduce protocol traffic. For example,) 108 144 P
+(to obtain the individual repeat key behavior as well as the repeat delay and rate, use) 108 131 T
+1 F
+(Xkb-) 512.24 131 T
+-0.07 (GetContr) 108 118 P
+-0.07 (ols) 152.8 118 P
+2 F
+-0.07 (. If the) 166.8 118 P
+1 F
+-0.07 (per_key_repeat) 201.24 118 P
+2 F
+-0.07 ( were not in this structure, you would have to call both) 275.88 118 P
+1 F
+-0.27 (XGetK) 108 105 P
+-0.27 (e) 140.24 105 P
+-0.27 (yboar) 145.21 105 P
+-0.27 (dContr) 172.76 105 P
+-0.27 (ol) 206.23 105 P
+2 F
+-0.27 ( and) 215.57 105 P
+1 F
+-0.27 (XkbGetContr) 238.35 105 P
+-0.27 (ols) 301.8 105 P
+2 F
+-0.27 ( to get this information. The bits correspond to) 315.81 105 P
+-0.25 (keycodes. The first seven keys \050keycodes 1-7\051 are indicated in) 108 92 P
+1 F
+-0.25 (per_k) 407.05 92 P
+-0.25 (e) 434.25 92 P
+-0.25 (y_r) 439.22 92 P
+-0.25 (epeat) 454.77 92 P
+2 F
+-0.25 ([0], with bit) 480.76 92 P
+FMENDPAGE
+%%EndPage: "76" 88
+%%Page: "77" 89
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(77) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+-0.3 (position 0 \050low order\051 corresponding to the fictitious keycode 0. Following array elements) 108 712 P
+(correspond to 8 keycodes per element. A 1 bit indicates that the key is a repeating key.) 108 699 T
+0 F
+(10.9) 72 674 T
+(Quer) 108 674 T
+(ying Contr) 136.13 674 T
+(ols) 195.89 674 T
+2 F
+(Use) 108 654 T
+1 F
+(XkbGetControls) 129.66 654 T
+2 F
+( to find the current state of Xkb server controls.) 207.66 654 T
+2 11 Q
+(Status) 108 633.67 T
+3 F
+(XkbGetContr) 137.65 633.67 T
+(ols) 202.83 633.67 T
+2 F
+(\050) 215.67 633.67 T
+1 F
+(display) 219.33 633.67 T
+(, whic) 250.51 633.67 T
+(h, xkb\051) 276.62 633.67 T
+2 F
+(Display *) 126 620.67 T
+1 F
+(display) 234 620.67 T
+2 F
+(;) 265.78 620.67 T
+(/* connection to X serv) 306 620.67 T
+(er */) 408.49 620.67 T
+(unsigned long) 126 607.67 T
+1 F
+(whic) 234 607.67 T
+(h) 254.61 607.67 T
+2 F
+(;) 260.11 607.67 T
+(/* mask of controls requested */) 306 607.67 T
+(XkbDescPtr) 126 594.67 T
+1 F
+(xkb) 234 594.67 T
+2 F
+(;) 249.27 594.67 T
+(/* k) 306 594.67 T
+(e) 322.7 594.67 T
+(yboard description for controls information*/) 327.42 594.67 T
+1 12 Q
+-0.28 (XkbGetContr) 108 575 P
+-0.28 (ols) 171.46 575 P
+2 F
+-0.28 ( queries the server for the requested control information, waits for a reply,) 185.46 575 P
+-0.19 (and then copies the server\325s values for the requested information into the) 108 562 P
+1 F
+-0.19 (ctrls) 458.26 562 P
+2 F
+-0.19 ( structure of) 479.6 562 P
+(the) 108 549 T
+1 F
+(xkb) 125.66 549 T
+2 F
+( argument. Only those components specified by the) 142.32 549 T
+1 F
+(whic) 391.96 549 T
+(h) 414.44 549 T
+2 F
+( parameter are copied.) 420.44 549 T
+(Valid values for) 108 536 T
+1 F
+(which) 188.32 536 T
+2 F
+( are any combination of the masks listed in Table 10.7 that have) 216.98 536 T
+(\322ok\323 in the) 108 523 T
+1 F
+(whic) 163.66 523 T
+(h) 186.14 523 T
+2 F
+( column.) 192.14 523 T
+(If) 108 502 T
+1 F
+(xkb) 118.99 502 T
+2 F
+(->) 135.65 502 T
+1 F
+(ctrls) 146.41 502 T
+2 F
+(is) 170.75 502 T
+5 F
+-0.6 (NULL) 181.75 502 S
+2 F
+(,) 208.15 502 T
+1 F
+(XkbGetContr) 214.15 502 T
+(ols) 277.61 502 T
+2 F
+( allocates and initializes it before obtaining the val-) 291.61 502 T
+(ues specified by) 108 489 T
+1 F
+(which) 188.32 489 T
+2 F
+(. If) 216.98 489 T
+1 F
+(xkb) 233.98 489 T
+2 F
+(->) 250.63 489 T
+1 F
+(ctrls) 261.4 489 T
+2 F
+( is not) 282.73 489 T
+5 F
+-0.6 (NULL) 315.07 489 S
+2 F
+(,) 341.47 489 T
+1 F
+(XkbGetContr) 347.47 489 T
+(ols) 410.93 489 T
+2 F
+( modifies only those) 424.93 489 T
+(portions of) 108 476 T
+1 F
+(xkb) 163.33 476 T
+2 F
+(->) 179.99 476 T
+1 F
+(ctrls) 190.75 476 T
+2 F
+( corresponding to the values specified by) 212.09 476 T
+1 F
+(whic) 411.72 476 T
+(h) 434.21 476 T
+2 F
+(.) 440.21 476 T
+1 F
+(XkbGetContr) 108 455 T
+(ols) 171.46 455 T
+2 F
+( returns) 185.46 455 T
+5 F
+-0.6 (Success) 224.78 455 S
+2 F
+( if successful; otherwise, it returns) 270.98 455 T
+5 F
+-0.6 (BadAlloc) 438.62 455 S
+2 F
+( if it can-) 491.43 455 T
+(not obtain sufficient storage,) 108 442 T
+5 F
+-0.6 (BadMatch) 248.32 442 S
+2 F
+( if) 301.12 442 T
+1 F
+(xkb) 314.45 442 T
+2 F
+( is) 331.11 442 T
+5 F
+-0.6 (NULL) 345.11 442 S
+2 F
+( or) 371.51 442 T
+1 F
+(whic) 387.51 442 T
+(h) 409.99 442 T
+2 F
+( is empty, or) 415.99 442 T
+5 F
+-0.6 (BadImple-) 478.99 442 S
+-0.6 (mentation) 108 429 S
+2 F
+(.) 167.4 429 T
+(To free the) 108 408 T
+1 F
+(ctrls) 163.64 408 T
+2 F
+( member of a keyboard description, use) 184.98 408 T
+1 F
+(XkbF) 377.6 408 T
+(r) 402.94 408 T
+(eeContr) 407.16 408 T
+(ols) 445.28 408 T
+2 F
+( \050see section) 459.29 408 T
+(10.12\051) 108 395 T
+(The) 108 374 T
+1 F
+(num_groups) 129.66 374 T
+2 F
+( field in the) 189.66 374 T
+1 F
+(ctrls) 247.66 374 T
+2 F
+( structure is always filled in by) 268.99 374 T
+1 F
+(XkbGetContr) 419.98 374 T
+(ols) 483.43 374 T
+2 F
+(, regard-) 497.44 374 T
+(less of which bits are selected by) 108 361 T
+1 F
+(which) 268.97 361 T
+2 F
+(.) 297.64 361 T
+0 F
+(10.10) 72 336 T
+(Changing Contr) 108 336 T
+(ols) 198.42 336 T
+2 F
+(There are two ways to make changes to controls: either change a local copy keyboard) 108 316 T
+(description and call) 108 303 T
+1 F
+(XkbSetContr) 204.98 303 T
+(ols) 265.78 303 T
+2 F
+(, or, to reduce network traffic, use an) 279.78 303 T
+5 F
+-0.6 (XkbCon-) 460.06 303 S
+-0.6 (trolsChangesRec) 108 290 S
+2 F
+( structure and call) 207 290 T
+1 F
+(XkbChang) 295.65 290 T
+(eContr) 346.19 290 T
+(ols) 378.99 290 T
+2 F
+(.) 392.99 290 T
+-0.16 (To change the state of one or more controls, first modify the) 108 269 P
+1 F
+-0.16 (ctrls) 398.33 269 P
+2 F
+-0.16 ( structure in a local copy) 419.67 269 P
+(of the keyboard description and then use) 108 256 T
+1 F
+(XkbSetControls) 305.63 256 T
+2 F
+( to copy those changes to the X) 380.96 256 T
+(server.) 108 243 T
+2 11 Q
+(Bool) 108 222.67 T
+3 F
+(XkbSetContr) 132.15 222.67 T
+(ols) 194.89 222.67 T
+2 F
+(\050) 207.73 222.67 T
+1 F
+(display) 211.39 222.67 T
+(, whic) 242.56 222.67 T
+(h, xkb\051) 268.68 222.67 T
+2 F
+(Display *) 126 209.67 T
+1 F
+(display) 234 209.67 T
+2 F
+(;) 265.78 209.67 T
+(/* connection to X serv) 306 209.67 T
+(er */) 408.49 209.67 T
+(unsigned long) 126 196.67 T
+1 F
+(whic) 234 196.67 T
+(h) 254.61 196.67 T
+2 F
+(;) 260.11 196.67 T
+(/* mask of controls to change */) 306 196.67 T
+(XkbDescPtr) 126 183.67 T
+1 F
+(xkb) 234 183.67 T
+2 F
+(;) 249.27 183.67 T
+(/*) 306 183.67 T
+1 12 Q
+(ctrls) 317.31 183.67 T
+2 11 Q
+( \336eld contains ne) 338.64 183.67 T
+(w v) 413.22 183.67 T
+(alues to be set */) 429.14 183.67 T
+2 12 Q
+(For each bit that is set in the) 108 164 T
+1 F
+(whic) 246.66 164 T
+(h) 269.15 164 T
+2 F
+( parameter,) 275.15 164 T
+1 F
+(XkbSetContr) 332.12 164 T
+(ols) 392.92 164 T
+2 F
+( sends the corresponding) 406.92 164 T
+-0.05 (values from the) 108 151 P
+1 F
+-0.05 (xkb) 185.51 151 P
+2 F
+-0.05 (->) 202.17 151 P
+1 F
+-0.05 (ctrls) 212.93 151 P
+2 F
+-0.05 ( field to the server. Valid values for) 234.27 151 P
+1 F
+-0.05 (which) 407.53 151 P
+2 F
+-0.05 ( are any combination) 436.2 151 P
+(of the masks listed in Table 10.7 that have \322ok\323 in the) 108 138 T
+1 F
+(whic) 369.64 138 T
+(h) 392.12 138 T
+2 F
+( column.) 398.12 138 T
+-0.2 (If) 108 117 P
+1 F
+-0.2 (xkb) 118.79 117 P
+2 F
+-0.2 (->) 135.45 117 P
+1 F
+-0.2 (ctrls) 146.21 117 P
+2 F
+-0.2 ( is) 167.55 117 P
+5 F
+-0.44 -0.6 (NULL) 181.15 117 B
+2 F
+-0.2 (, the server does not support a compatible version of Xkb, or the Xkb) 207.55 117 P
+(extension has not been properly initialized,) 108 104 T
+1 F
+(XkbSetContr) 317.64 104 T
+(ols) 378.43 104 T
+2 F
+( returns) 392.44 104 T
+5 F
+-0.6 (False) 431.76 104 S
+2 F
+(. Otherwise, it) 464.76 104 T
+(sends the request to the X server and returns) 108 91 T
+5 F
+-0.6 (True) 323.62 91 S
+2 F
+(.) 350.02 91 T
+FMENDPAGE
+%%EndPage: "77" 89
+%%Page: "78" 90
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(78) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+-0.31 (Note that changes to attributes of controls in the) 108 712 P
+5 F
+-0.68 -0.6 (XkbControlsRec) 338.87 712 B
+2 F
+-0.31 ( structure are apparent) 431.27 712 P
+(only when the associated control is enabled, although the corresponding values are still) 108 699 T
+(updated in the X server. For example, the) 108 686 T
+1 F
+(repeat_delay) 309.96 686 T
+2 F
+( and) 372.61 686 T
+1 F
+(repeat_interval) 395.94 686 T
+2 F
+( fields are) 469.93 686 T
+(ignored unless the) 108 673 T
+5 F
+-0.6 (RepeatKeys) 198.32 673 S
+2 F
+( control is enabled \050that is, the X server\325s equivalent of) 264.33 673 T
+1 F
+0 (xkb->ctrls) 108 660 P
+2 F
+0 ( has) 158.09 660 P
+5 F
+0 -0.6 (XkbRepeatKeyMask) 180.08 660 B
+2 F
+0 ( set in) 285.68 660 P
+1 F
+0 (enabled_ctrls) 317.35 660 P
+2 F
+0 (\051. It is permissible to modify the) 382.68 660 P
+-0.37 (attributes of a control in one call to XkbSetControls and enable the control in a subsequent) 108 647 P
+(call. See section 10.1.1 for more information on enabling and disabling controls.) 108 634 T
+-0.05 (Note that the) 108 613 P
+1 F
+-0.05 (enabled_ctrls) 172.85 613 P
+2 F
+-0.05 ( field is itself a control \321 the) 238.18 613 P
+5 F
+-0.1 -0.6 (EnabledControls) 381.81 613 B
+2 F
+-0.05 ( control. As) 480.81 613 P
+-0.46 (such, to set a specific configuration of enabled and disabled boolean controls, you must set) 108 600 P
+1 F
+(enabled_ctrls) 108 587 T
+2 F
+( to the appropriate bits to enable only the controls you want and disable all) 173.33 587 T
+(others, then specify the) 108 574 T
+5 F
+-0.6 (XkbControlsEnabledMask) 222.31 574 S
+2 F
+( in a call to) 367.52 574 T
+1 F
+(XkbSetContr) 423.84 574 T
+(ols) 484.64 574 T
+2 F
+(.) 498.64 574 T
+(Because this is somewhat awkward if all you want to do is enable and disable controls,) 108 561 T
+-0.26 (and not modify any of their attributes, a convenience function is also provided for this pur-) 108 548 P
+(pose \050) 108 535 T
+1 F
+(XkbChang) 136.99 535 T
+(eEnabledContr) 187.54 535 T
+(ols) 260.33 535 T
+2 F
+(, section 10.1.1\051.) 274.33 535 T
+0 F
+(10.10.1) 72 510 T
+(The XkbContr) 112.03 510 T
+(olsChang) 190.46 510 T
+(esRec Structure) 245.26 510 T
+2 F
+(The) 108 490 T
+5 F
+-0.6 (XkbControlsChangesRec) 129.66 490 S
+2 F
+( structure allows applications to track modifications to) 268.26 490 T
+-0.47 (an) 108 477 P
+5 F
+-1.04 -0.6 (XkbControlsRec) 121.85 477 B
+2 F
+-0.47 ( structure and thereby reduce the amount of traffic sent to the server.) 214.26 477 P
+(The same) 108 464 T
+5 F
+-0.6 (XkbControlsChangesRec) 157.32 464 S
+2 F
+( structure may be used in several successive modi-) 295.92 464 T
+(fications to the same) 108 451 T
+5 F
+-0.6 (XkbControlsRec) 209.99 451 S
+2 F
+( structure, then subsequently used to cause all of) 302.39 451 T
+(the changes, and only the changes, to be propagated to the server. The) 108 438 T
+5 F
+-0.6 (XkbCon-) 447.25 438 S
+-0.6 (trolsChangesRec) 108 425 S
+2 F
+( structure is defined as follows:) 207 425 T
+2 11 Q
+(typedef struct _XkbControlsChanges {) 126 404.67 T
+(unsigned) 144 391.67 T
+(int) 186.47 391.67 T
+( changed_ctrls;) 198.09 391.67 T
+(/* bits indicating changed control data */) 314.25 391.67 T
+(unsigned) 144 378.67 T
+( int) 183.72 378.67 T
+( enabled_ctrls_changes;) 198.09 378.67 T
+(/* bits indicating enabled/disabled controls */) 314.25 378.67 T
+(Bool) 144 365.67 T
+( num_groups_changed;) 198 365.67 T
+(/*) 314.25 365.67 T
+5 12 Q
+-0.6 (True) 325.56 365.67 S
+2 11 Q
+( if number of k) 351.96 365.67 T
+(e) 417.84 365.67 T
+(yboard groups changed */) 422.56 365.67 T
+(}) 126 352.67 T
+3 F
+(XkbContr) 134.03 352.67 T
+(olsChangesRec) 182.11 352.67 T
+2 F
+(,*XkbControlsChangesPtr;) 252.99 352.67 T
+2 12 Q
+(The) 108 333 T
+1 F
+(c) 129.66 333 T
+(hang) 134.81 333 T
+(ed_ctrls) 158.69 333 T
+2 F
+( field is a mask specifying which logical sets of data in the controls) 197.35 333 T
+(structure have been modified. In this context, modified means) 108 320 T
+1 F
+(set) 408.29 320 T
+2 F
+(, that is, if a value is set) 421.62 320 T
+(to the same value it previously contained, it has still been modified, and is noted as) 108 307 T
+-0.11 (changed. Valid values for) 108 294 P
+1 F
+-0.11 (changed_ctrls) 233.84 294 P
+2 F
+-0.11 ( are any combination of the masks listed in Table) 301.84 294 P
+(10.7 that have \322ok\323 in the) 108 281 T
+1 F
+(c) 234.31 281 T
+(hang) 239.46 281 T
+(ed_ctrls) 263.34 281 T
+2 F
+( column. Setting a bit implies the corresponding) 302 281 T
+(data fields from the \322Relevant XkbControlsRec Data Fields\323 column in Table 10.6 have) 108 268 T
+(been modified. The) 108 255 T
+1 F
+(enabled_ctrls_changes) 204.65 255 T
+2 F
+( field specifies which bits in the) 315.3 255 T
+1 F
+(enabled_ctrls) 470.95 255 T
+2 F
+(field have changed. If the number of keyboard groups has changed, the) 108 242 T
+1 F
+(num_groups_changed) 108 229 T
+2 F
+( field is set to) 214.66 229 T
+5 F
+-0.6 (True) 282.32 229 S
+2 F
+(.) 308.72 229 T
+(If you have an Xkb description with controls that have been modified and an) 108 208 T
+5 F
+-0.6 (XkbCon-) 479.27 208 S
+-0.6 (trolsChangesRec) 108 195 S
+2 F
+( that describes the changes that have been made, the) 207 195 T
+1 F
+(XkbChang) 459.94 195 T
+(eCon-) 510.48 195 T
+(tr) 108 182 T
+(ols) 115.46 182 T
+2 F
+( function provides a flexible method for updating the controls in a server to match) 129.47 182 T
+(those in the changed keyboard description.) 108 169 T
+2 11 Q
+(Bool) 108 148.67 T
+3 F
+(XkbChangeContr) 132.15 148.67 T
+(ols) 216.28 148.67 T
+2 F
+(\050) 229.12 148.67 T
+1 F
+(dpy) 232.78 148.67 T
+(, xkb, c) 248.06 148.67 T
+(hang) 279.05 148.67 T
+(es) 300.94 148.67 T
+2 F
+(\051) 310.1 148.67 T
+(Display *) 126 135.67 T
+1 F
+(dpy) 261 135.67 T
+2 F
+(;) 276.88 135.67 T
+(/* connection to X serv) 306 135.67 T
+(er */) 408.49 135.67 T
+(XkbDescPtr) 126 122.67 T
+1 F
+(xkb) 261 122.67 T
+2 F
+(;) 276.27 122.67 T
+(/* k) 306 122.67 T
+(e) 322.7 122.67 T
+(yboard description with changed) 327.42 122.67 T
+1 F
+(xkb->ctrls) 474.06 122.67 T
+2 F
+( */) 519.97 122.67 T
+(XkbControlsChangesPtr) 126 109.67 T
+1 F
+(c) 261 109.67 T
+(hang) 265.72 109.67 T
+(es) 287.61 109.67 T
+2 F
+(;) 296.77 109.67 T
+(/* which parts of) 306 109.67 T
+1 F
+(xkb->ctrls) 382.99 109.67 T
+2 F
+( ha) 428.9 109.67 T
+(v) 441.82 109.67 T
+(e changed */) 447.15 109.67 T
+1 12 Q
+(XkbChang) 108 90 T
+(eContr) 158.54 90 T
+(ols) 191.34 90 T
+2 F
+( copies any controls fields specified by) 205.34 90 T
+1 F
+(c) 394.98 90 T
+(hang) 400.13 90 T
+(es) 424.01 90 T
+2 F
+( from the keyboard) 434 90 T
+(description controls structure,) 108 77 T
+1 F
+(xkb) 253.98 77 T
+2 F
+(->) 270.64 77 T
+1 F
+(ctrls) 281.4 77 T
+2 F
+(, to the server specified by) 302.74 77 T
+1 F
+(dpy) 432.37 77 T
+2 F
+(.) 449.7 77 T
+FMENDPAGE
+%%EndPage: "78" 90
+%%Page: "79" 91
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(79) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+0 12 Q
+(10.11) 72 712 T
+(T) 108 712 T
+(rac) 114.37 712 T
+(king Chang) 132.14 712 T
+(es to K) 197.6 712 T
+(e) 237.43 712 T
+(yboar) 243.92 712 T
+(d Contr) 276.36 712 T
+(ols) 318.78 712 T
+2 F
+(Whenever a field in the controls structure changes in the server\325s keyboard description,) 108 692 T
+(the server sends an) 108 679 T
+5 F
+-0.6 (XkbControlsNotify) 201.97 679 S
+2 F
+( event to all interested clients.To receive) 314.17 679 T
+5 F
+-0.6 (Xkb-) 511.47 679 S
+-0.3 -0.6 (ControlsNotify) 108 666 B
+2 F
+-0.14 ( events under all possible conditions, use) 200.4 666 P
+1 F
+-0.14 (XkbSelectEvents) 398.78 666 P
+2 F
+-0.14 ( \050see section) 478.09 666 P
+(4.3\051 and pass) 108 653 T
+5 F
+-0.6 (XkbControlsNotifyMask) 173.99 653 S
+2 F
+( in both) 312.59 653 T
+1 F
+(bits_to_c) 352.26 653 T
+(hang) 396.09 653 T
+(e) 419.97 653 T
+2 F
+( and) 425.3 653 T
+1 F
+(values_for_bits) 448.62 653 T
+2 F
+(.) 522.63 653 T
+(To receive) 108 632 T
+5 F
+-0.6 (XkbControlsNotify) 161.98 632 S
+2 F
+( events only under certain conditions, use) 274.18 632 T
+1 F
+(XkbSelect-) 476.15 632 T
+(EventDetails) 108 619 T
+2 F
+( using) 169.99 619 T
+5 F
+-0.6 (XkbControlsNotify) 202 619 S
+2 F
+( as the) 314.2 619 T
+1 F
+(e) 347.86 619 T
+(vent_type) 353.01 619 T
+2 F
+( and specifying the desired) 398.99 619 T
+(state changes in) 108 606 T
+1 F
+(bits_to_c) 186.98 606 T
+(hang) 230.81 606 T
+(e) 254.69 606 T
+2 F
+( and) 260.02 606 T
+1 F
+(values_for_bits) 283.34 606 T
+2 F
+( using mask bits from Table 10.7.) 357.35 606 T
+(The structure for the) 108 585 T
+5 F
+-0.6 (XkbControlsNotify) 209.3 585 S
+2 F
+( event is defined as follows:) 321.51 585 T
+2 11 Q
+(typedef struct {) 126 564.67 T
+(int) 144 551.67 T
+(type;) 219.75 551.67 T
+(/* Xkb e) 297 551.67 T
+(xtension base e) 334.72 551.67 T
+(v) 401.65 551.67 T
+(ent code */) 406.99 551.67 T
+(unsigned long) 144 538.67 T
+(serial;) 219.75 538.67 T
+(/* X serv) 297 538.67 T
+(er serial number for e) 337.16 538.67 T
+(v) 431.57 538.67 T
+(ent */) 436.91 538.67 T
+(Bool) 144 525.67 T
+(send_e) 219.75 525.67 T
+(v) 250.02 525.67 T
+(ent;) 255.36 525.67 T
+(/*) 297 525.67 T
+5 12 Q
+-0.6 (True) 308.31 525.67 S
+2 11 Q
+( => synthetically generated */) 334.71 525.67 T
+(Display *) 144 512.67 T
+(display;) 219.75 512.67 T
+(/* serv) 297 512.67 T
+(er connection where e) 326.47 512.67 T
+(v) 423.02 512.67 T
+(ent generated */) 428.35 512.67 T
+(T) 144 499.67 T
+(ime) 150.34 499.67 T
+(time;) 219.75 499.67 T
+(/* serv) 297 499.67 T
+(er time when e) 326.47 499.67 T
+(v) 391.26 499.67 T
+(ent generated */) 396.59 499.67 T
+(int) 144 486.67 T
+(xkb_type;) 219.75 486.67 T
+(/*) 297 486.67 T
+5 F
+-0.33 (XkbCompatMapNotify) 308.31 486.67 S
+2 F
+( */) 421.17 486.67 T
+(int) 144 473.67 T
+(de) 219.75 473.67 T
+(vice;) 229.86 473.67 T
+(/* Xkb de) 297 473.67 T
+(vice ID, will not be) 340.11 473.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 428.1 473.67 S
+2 F
+( */) 509.61 473.67 T
+(unsigned int) 144 460.67 T
+(changed_ctrls;) 219.75 460.67 T
+(/* bits indicating which controls data ha) 297 460.67 T
+(v) 472.77 460.67 T
+(e changed*/) 478.1 460.67 T
+(unsigned int) 144 447.67 T
+(enabled_ctrls;) 219.75 447.67 T
+(/* controls currently enabled in serv) 297 447.67 T
+(er */) 455.39 447.67 T
+(unsigned int) 144 434.67 T
+(enabled_ctrl_changes;) 219.75 434.67 T
+(/* bits indicating enabled/disabled controls */) 324 434.67 T
+(int) 144 421.67 T
+(num_groups;) 219.75 421.67 T
+(/* current number of k) 297 421.67 T
+(e) 395.87 421.67 T
+(yboard groups */) 400.59 421.67 T
+(K) 144 408.67 T
+(e) 151.67 408.67 T
+(yCode) 156.39 408.67 T
+(k) 219.75 408.67 T
+(e) 225.14 408.67 T
+(ycode;) 229.86 408.67 T
+(/* != 0 => k) 297 408.67 T
+(e) 349.72 408.67 T
+(ycode of k) 354.44 408.67 T
+(e) 400.76 408.67 T
+(y causing change */) 405.48 408.67 T
+(char) 144 395.67 T
+(e) 219.75 395.67 T
+(v) 224.36 395.67 T
+(ent_type;) 229.69 395.67 T
+(/* T) 297 395.67 T
+(ype of e) 314.15 395.67 T
+(v) 349.3 395.67 T
+(ent causing change */) 354.64 395.67 T
+(char) 144 382.67 T
+(req_major;) 219.75 382.67 T
+(/* major e) 297 382.67 T
+(v) 341.33 382.67 T
+(ent code of e) 346.67 382.67 T
+(v) 402.9 382.67 T
+(ent causing change */) 408.23 382.67 T
+(char) 144 369.67 T
+(req_minor;) 219.75 369.67 T
+(/* minor e) 297 369.67 T
+(v) 341.95 369.67 T
+(ent code of e) 347.28 369.67 T
+(v) 403.51 369.67 T
+(ent causing change */) 408.85 369.67 T
+(}) 126 356.67 T
+3 F
+(XkbContr) 134.03 356.67 T
+(olsNotifyEv) 182.11 356.67 T
+(ent) 237 356.67 T
+2 F
+(;) 251.66 356.67 T
+2 12 Q
+-0.16 (The) 108 337 P
+1 F
+-0.16 (changed_ctrls) 129.5 337 P
+2 F
+-0.16 ( field specifies the controls components that have changed and consists) 197.49 337 P
+-0.18 (of bits taken from the masks defined in Table 10.7 with \322ok\323 in the) 108 324 P
+1 F
+-0.18 (c) 430.48 324 P
+-0.18 (hang) 435.63 324 P
+-0.18 (ed_ctrls) 459.51 324 P
+2 F
+-0.18 ( column.) 498.18 324 P
+(The controls currently enabled in the server are reported in the) 108 303 T
+1 F
+(enabled_ctrls) 410.92 303 T
+2 F
+( field. If any) 476.24 303 T
+(controls were just enabled or disabled \050that is, the contents of the) 108 290 T
+1 F
+(enabled_ctrls) 422.95 290 T
+2 F
+( field) 488.28 290 T
+(changed\051, they are flagged in the) 108 277 T
+1 F
+(enabled_ctrl_changes) 268.28 277 T
+2 F
+( field. The valid bits for these) 374.27 277 T
+(fields are the masks listed in Table 10.7 with \322ok\323 in the) 108 264 T
+1 F
+(enabled_ctrls) 381.64 264 T
+2 F
+( column. The) 446.96 264 T
+1 F
+(num_groups) 108 251 T
+2 F
+( field reports the number of groups bound to the key belonging to the most) 168 251 T
+(number of groups and is automatically updated when the keyboard mapping changes.) 108 238 T
+-0.02 (If the change was caused by a request from a client, the) 108 217 P
+1 F
+-0.02 (keycode) 376.68 217 P
+2 F
+-0.02 ( and) 415.32 217 P
+1 F
+-0.02 (e) 438.61 217 P
+-0.02 (vent_type) 443.76 217 P
+2 F
+-0.02 ( fields are) 489.74 217 P
+(set to) 108 204 T
+5 F
+-0.6 (zero) 136.67 204 S
+2 F
+(and the) 169.67 204 T
+1 F
+(req_major) 207.66 204 T
+2 F
+( and) 258.33 204 T
+1 F
+(req_minor) 281.65 204 T
+2 F
+( fields identify the request. The) 332.32 204 T
+1 F
+(req_major) 485.29 204 T
+2 F
+(value is the same as the) 108 191 T
+2 11 Q
+(major e) 223.98 191 T
+(xtension opcode) 257.11 191 T
+2 12 Q
+(. Otherwise,) 328.91 191 T
+1 F
+(event_type) 390.23 191 T
+2 F
+( is set to the type of) 441.54 191 T
+(event that caused the change \050one of) 108 178 T
+5 F
+-0.6 (KeyPress) 285.61 178 S
+2 F
+(,) 338.41 178 T
+5 F
+-0.6 (KeyRelease) 344.41 178 S
+2 F
+(,) 410.41 178 T
+5 F
+-0.6 (DeviceKeyPress) 416.41 178 S
+2 F
+(,) 508.82 178 T
+5 F
+-0.6 (DeviceKeyRelease) 108 165 S
+2 F
+(,) 213.6 165 T
+5 F
+-0.6 (ButtonPress) 219.6 165 S
+2 F
+( or) 292.2 165 T
+5 F
+-0.6 (ButtonRelease) 308.2 165 S
+2 F
+(\051, and) 394 165 T
+1 F
+(req_major) 424.33 165 T
+2 F
+( and) 474.99 165 T
+1 F
+(req_minor) 108 152 T
+2 F
+( are undefined. If) 158.66 152 T
+1 F
+(e) 244.3 152 T
+(vent_type) 249.44 152 T
+2 F
+( is) 295.43 152 T
+5 F
+-0.6 (KeyPress) 309.43 152 S
+2 F
+(,) 362.23 152 T
+5 F
+-0.6 (KeyRelease) 368.23 152 S
+2 F
+(,) 434.23 152 T
+5 F
+-0.6 (DeviceKeyPress) 440.23 152 S
+2 F
+(,) 532.64 152 T
+(or) 108 139 T
+5 F
+-0.6 (DeviceKeyRelease) 121 139 S
+2 F
+(, the) 226.6 139 T
+1 F
+(keycode) 250.26 139 T
+2 F
+( field is set to the key that caused the change. If) 288.9 139 T
+1 F
+(e) 108 126 T
+(vent_type) 113.15 126 T
+2 F
+( is) 159.13 126 T
+5 F
+-0.6 (ButtonPress) 173.14 126 S
+2 F
+( or) 245.74 126 T
+5 F
+-0.6 (ButtonRelease) 261.73 126 S
+2 F
+(,) 347.54 126 T
+1 F
+(k) 353.54 126 T
+(e) 358.74 126 T
+(ycode) 363.71 126 T
+2 F
+( contains the button number.) 391.7 126 T
+FMENDPAGE
+%%EndPage: "79" 91
+%%Page: "80" 92
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(80) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(When a client receives an) 108 712 T
+5 F
+-0.6 (XkbControlsNotify) 234.29 712 S
+2 F
+( event, it can note the changes in a) 346.49 712 T
+(changes structure using) 108 699 T
+1 F
+(XkbNoteContr) 223.64 699 T
+(olsChang) 292.44 699 T
+(es) 338.33 699 T
+2 F
+(.) 348.32 699 T
+2 11 Q
+(v) 108 678.67 T
+(oid) 113.28 678.67 T
+3 F
+(XkbNoteContr) 130.09 678.67 T
+(olsChanges) 200.16 678.67 T
+2 F
+(\050) 253.33 678.67 T
+1 F
+(c) 256.99 678.67 T
+(hang) 261.71 678.67 T
+(es) 283.6 678.67 T
+2 F
+(,) 292.77 678.67 T
+1 F
+( ne) 295.52 678.67 T
+(w) 308.49 678.67 T
+2 F
+(,) 315.11 678.67 T
+1 F
+( wanted) 317.86 678.67 T
+2 F
+(\051) 352.39 678.67 T
+(XkbControlsChangesPtr) 126 665.67 T
+1 F
+(c) 261 665.67 T
+(hang) 265.72 665.67 T
+(es) 287.61 665.67 T
+2 F
+(;) 296.77 665.67 T
+(/* records changes indicated by ne) 306 665.67 T
+(w */) 457.55 665.67 T
+(XkbControlsNotifyEv) 126 652.67 T
+(ent *) 223.61 652.67 T
+1 F
+(ne) 261 652.67 T
+(w) 271.22 652.67 T
+2 F
+(;) 278.56 652.67 T
+(/* tells which things ha) 306 652.67 T
+(v) 407.84 652.67 T
+(e changed */) 413.17 652.67 T
+(unsigned int) 126 639.67 T
+1 F
+(wanted) 261 639.67 T
+2 F
+(;) 292.78 639.67 T
+(/* tells which parts of ne) 306 639.67 T
+(w to record in changes */) 414.18 639.67 T
+2 12 Q
+(The) 108 620 T
+1 F
+(wanted) 129.66 620 T
+2 F
+( parameter is a bitwise inclusive OR of bits taken from the set of masks speci-) 164.33 620 T
+(fied in Table 10.7 with \322ok\323 in the) 108 607 T
+1 F
+(c) 276.31 607 T
+(hang) 281.46 607 T
+(ed_ctrls) 305.34 607 T
+2 F
+( column.) 344 607 T
+1 F
+(XkbNoteContr) 389 607 T
+(olsChang) 457.8 607 T
+(es) 503.69 607 T
+2 F
+( cop-) 513.68 607 T
+-0.09 (ies any changes reported in) 108 594 P
+1 F
+-0.09 (ne) 241.17 594 P
+-0.09 (w) 252.32 594 P
+2 F
+-0.09 ( and specified in) 260.32 594 P
+1 F
+-0.09 (wanted) 341.93 594 P
+2 F
+-0.09 ( into the changes record specified) 376.6 594 P
+(by) 108 581 T
+1 F
+(old) 123 581 T
+2 F
+(.) 138.34 581 T
+(Use) 108 560 T
+1 F
+(XkbGetControlsChanges) 129.66 560 T
+2 F
+( to update a local copy of a keyboard description with the) 249.66 560 T
+(changes previously noted by one or more calls to) 108 547 T
+1 F
+(XkbNoteControlsChanges.) 346.3 547 T
+2 11 Q
+(Status) 108 526.67 T
+3 F
+(XkbGetContr) 137.65 526.67 T
+(olsChanges) 202.83 526.67 T
+2 F
+(\050) 256.01 526.67 T
+1 F
+(dpy) 259.67 526.67 T
+2 F
+(,) 274.84 526.67 T
+1 F
+( xkb) 277.59 526.67 T
+2 F
+(,) 295.61 526.67 T
+1 F
+( c) 298.36 526.67 T
+(hang) 305.82 526.67 T
+(es) 327.71 526.67 T
+2 F
+(\051) 336.88 526.67 T
+(Display *) 126 513.67 T
+1 F
+(dpy) 234 513.67 T
+2 F
+(;) 249.88 513.67 T
+(/* connection to X serv) 306 513.67 T
+(er */) 408.49 513.67 T
+(XkbDescPtr) 126 500.67 T
+1 F
+(xkb) 234 500.67 T
+2 F
+(;) 249.27 500.67 T
+(/*) 306 500.67 T
+1 12 Q
+(xkb->ctrls) 317.31 500.67 T
+2 11 Q
+( will be updated */) 367.4 500.67 T
+(XkbNameChangesPtr) 126 487.67 T
+1 F
+(c) 234 487.67 T
+(hang) 238.72 487.67 T
+(es) 260.61 487.67 T
+2 F
+(;) 269.77 487.67 T
+(/* indicates which parts of) 306 487.67 T
+1 12 Q
+(xkb->ctrls) 424.84 487.67 T
+2 11 Q
+( to update */) 474.93 487.67 T
+1 12 Q
+(XkbGetContr) 108 468 T
+(olsChang) 171.46 468 T
+(es) 217.34 468 T
+2 F
+( examines the) 227.34 468 T
+1 F
+(c) 296.33 468 T
+(hang) 301.48 468 T
+(es) 325.36 468 T
+2 F
+( parameter, queries the server for the nec-) 335.35 468 T
+(essary information, and copies the results into the) 108 455 T
+1 F
+(xkb) 348.97 455 T
+2 F
+(->) 365.63 455 T
+1 F
+(ctrls) 376.39 455 T
+2 F
+( keyboard description. If the) 397.73 455 T
+1 F
+(ctrls) 108 442 T
+2 F
+( field of) 129.34 442 T
+1 F
+(xkb) 170.33 442 T
+2 F
+( is) 186.98 442 T
+5 F
+-0.6 (NULL) 200.99 442 S
+2 F
+(,) 227.39 442 T
+1 F
+(XkbGetContr) 233.39 442 T
+(olsChang) 296.84 442 T
+(es) 342.73 442 T
+2 F
+( allocates and initializes it. To free the) 352.73 442 T
+1 F
+(ctrls) 108 429 T
+2 F
+( field, use) 129.34 429 T
+1 F
+(XkbF) 179.33 429 T
+(r) 204.66 429 T
+(eeContr) 208.88 429 T
+(ols) 247.01 429 T
+2 F
+( \050see section 10.12\051.) 261.01 429 T
+1 F
+(XkbGetContr) 108 408 T
+(olsChang) 171.46 408 T
+(es) 217.34 408 T
+2 F
+( returns) 227.34 408 T
+5 F
+-0.6 (Success) 266.66 408 S
+2 F
+( if successful and can generate) 312.86 408 T
+5 F
+-0.6 (BadAlloc) 462.14 408 S
+2 F
+(,) 514.95 408 T
+5 F
+-0.6 (BadImplementation,) 108 395 S
+2 F
+( and) 226.8 395 T
+5 F
+-0.6 (BadMatch) 250.13 395 S
+2 F
+( errors.) 302.93 395 T
+0 F
+(10.12) 72 370 T
+(Allocating and Freeing an XkbContr) 108 370 T
+(olsRec) 311.8 370 T
+2 F
+-0.25 (The need to allocate an) 108 350 P
+5 F
+-0.56 -0.6 (XkbControlsRec) 221.02 350 B
+2 F
+-0.25 ( structure seldom arises; Xkb creates one when) 313.43 350 P
+-0.3 (an application calls) 108 337 P
+1 F
+-0.3 (XkbGetControls) 202.74 337 P
+2 F
+-0.3 ( or a related function. For those situations where there) 280.74 337 P
+(is not an) 108 324 T
+5 F
+-0.6 (XkbControlsRec) 151.67 324 S
+2 F
+( structure allocated in the) 244.07 324 T
+5 F
+-0.6 (XkbDescRec) 368.38 324 S
+2 F
+(, allocate one by call-) 434.38 324 T
+(ing) 108 311 T
+1 F
+(XkbAllocControls) 126.34 311 T
+2 F
+(.) 212.34 311 T
+2 11 Q
+(Status) 108 290.67 T
+3 F
+(XkbAllocContr) 137.65 290.67 T
+(ols) 210.17 290.67 T
+2 F
+(\050) 223.01 290.67 T
+1 F
+(xkb, whic) 226.67 290.67 T
+(h) 268.05 290.67 T
+2 F
+(\051) 273.55 290.67 T
+(XkbDescPtr) 126 277.67 T
+1 F
+(xkb) 234 277.67 T
+2 F
+(;) 249.27 277.67 T
+(/* Xkb description in which to allocate ctrls rec */) 306 277.67 T
+(unsigned int) 126 264.67 T
+1 F
+(whic) 234 264.67 T
+(h) 254.61 264.67 T
+2 F
+(;) 260.11 264.67 T
+(/* mask of components of) 306 264.67 T
+1 F
+(ctrls) 423.02 264.67 T
+2 F
+( to allocate */) 442.58 264.67 T
+1 12 Q
+-0.43 (XkbAllocContr) 108 245 P
+-0.43 (ols) 179.46 245 P
+2 F
+-0.43 ( allocates the) 193.46 245 P
+1 F
+-0.43 (ctrls) 257.82 245 P
+2 F
+-0.43 ( field of the) 279.15 245 P
+1 F
+-0.43 (xkb) 336.08 245 P
+2 F
+-0.43 ( parameter, initializes all fields to zero,) 352.73 245 P
+-0.26 (and returns) 108 232 P
+5 F
+-0.58 -0.6 (Success) 164.12 232 B
+2 F
+-0.26 (. If the) 210.32 232 P
+1 F
+-0.26 (ctrls) 244.18 232 P
+2 F
+-0.26 ( field is not) 265.52 232 P
+5 F
+-0.58 -0.6 (NULL) 321.8 232 B
+2 F
+-0.26 (,) 348.2 232 P
+1 F
+-0.26 (XkbAllocContr) 353.93 232 P
+-0.26 (ols) 425.39 232 P
+2 F
+-0.26 ( simply returns) 439.39 232 P
+5 F
+-0.58 -0.6 (Suc-) 513.6 232 B
+-0.05 -0.6 (cess) 108 219 B
+2 F
+-0.02 (. If) 134.4 219 P
+1 F
+-0.02 (xkb) 151.35 219 P
+2 F
+-0.02 ( is) 168 219 P
+5 F
+-0.05 -0.6 (NULL) 181.96 219 B
+2 F
+-0.02 (,) 208.36 219 P
+1 F
+-0.02 (XkbAllocContr) 214.34 219 P
+-0.02 (ols) 285.8 219 P
+2 F
+-0.02 ( reports a) 299.8 219 P
+5 F
+-0.05 -0.6 (BadMatch) 347.39 219 B
+2 F
+-0.02 ( error. If the) 400.19 219 P
+1 F
+-0.02 (ctrls) 461.07 219 P
+2 F
+-0.02 ( field could) 482.41 219 P
+(not be allocated, it reports a) 108 206 T
+5 F
+-0.6 (BadAlloc) 244.31 206 S
+2 F
+( error.) 297.11 206 T
+-0.41 (The) 108 185 P
+1 F
+-0.41 (which) 129.25 185 P
+2 F
+-0.41 ( mask specifies the individual fields of the) 157.91 185 P
+1 F
+-0.41 (ctrls) 360.6 185 P
+2 F
+-0.41 ( structure to be allocated and can) 381.93 185 P
+(contain any of the valid masks defined in Table 10.7. Because none of the currently exist-) 108 172 T
+-0.16 (ing controls have any structures associated with them, which is currently of little practical) 108 159 P
+(value in this call.) 108 146 T
+FMENDPAGE
+%%EndPage: "80" 92
+%%Page: "81" 93
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(81) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(10 K) 437.17 744.87 T
+(e) 464.09 744.87 T
+(yboard Controls) 468.81 744.87 T
+2 12 Q
+(To free memory used by the) 108 712 T
+1 F
+(ctrls) 246.64 712 T
+2 F
+( member of an) 267.97 712 T
+5 F
+-0.6 (XkbDescRec) 340.62 712 S
+2 F
+(structure, use) 413.22 712 T
+1 F
+(XkbFree-) 480.2 712 T
+(Controls:) 108 699 T
+2 11 Q
+(v) 108 678.67 T
+(oid) 113.28 678.67 T
+3 F
+(XkbFr) 130.09 678.67 T
+(eeContr) 161.67 678.67 T
+(ols) 199.34 678.67 T
+2 F
+(\050) 212.18 678.67 T
+1 F
+(xkb, whic) 215.84 678.67 T
+(h, fr) 257.23 678.67 T
+(ee_all) 275.16 678.67 T
+2 F
+(\051) 302.04 678.67 T
+(XkbDescPtr) 126 665.67 T
+1 F
+(xkb) 198 665.67 T
+2 F
+(;) 213.27 665.67 T
+(/* Xkb description in which to free controls components */) 252 665.67 T
+(unsigned int) 126 652.67 T
+1 F
+(whic) 198 652.67 T
+(h) 218.61 652.67 T
+2 F
+(;) 224.11 652.67 T
+(/* mask of components of) 252 652.67 T
+1 F
+(ctrls) 369.02 652.67 T
+2 F
+( to free */) 388.58 652.67 T
+(Bool) 126 639.67 T
+1 F
+(fr) 198 639.67 T
+(ee_all) 204.93 639.67 T
+2 F
+(;) 231.81 639.67 T
+(/*) 252 639.67 T
+5 12 Q
+-0.6 (True) 263.31 639.67 S
+2 11 Q
+( => free e) 289.71 639.67 T
+(v) 332.07 639.67 T
+(erything + ctrls itself */) 337.4 639.67 T
+1 12 Q
+(XkbF) 108 620 T
+(r) 133.33 620 T
+(eeContr) 137.56 620 T
+(ols) 175.68 620 T
+2 F
+( frees the specified components of the) 189.68 620 T
+1 F
+(ctrls) 374.64 620 T
+2 F
+( field in the) 395.98 620 T
+1 F
+(xkb) 453.97 620 T
+2 F
+( keyboard) 470.63 620 T
+(description and sets the corresponding structure component values to) 108 607 T
+5 F
+-0.6 (NULL) 442.28 607 S
+2 F
+( or) 468.68 607 T
+5 F
+-0.6 (zero) 484.68 607 S
+2 F
+(. The) 511.08 607 T
+1 F
+(whic) 108 594 T
+(h) 130.49 594 T
+2 F
+( mask specifies the fields of) 136.49 594 T
+1 F
+(ctrls) 273.13 594 T
+2 F
+( to be freed and can contain any of the controls) 294.47 594 T
+(components specified in Table 10.7.) 108 581 T
+(If) 108 560 T
+1 F
+(fr) 118.99 560 T
+(ee_all) 126.55 560 T
+2 F
+( is) 155.88 560 T
+5 F
+-0.6 (True) 169.88 560 S
+2 F
+(,) 196.29 560 T
+1 F
+(XkbF) 202.29 560 T
+(r) 227.62 560 T
+(eeContr) 231.84 560 T
+(ols) 269.96 560 T
+2 F
+( frees every non-) 283.97 560 T
+5 F
+-0.6 (NULL) 364.93 560 S
+2 F
+( structure component in the) 391.33 560 T
+-0.46 (controls, frees the) 108 547 P
+5 F
+-1.01 -0.6 (XkbControlsRec) 195.27 547 B
+2 F
+-0.46 ( structure referenced by the) 287.67 547 P
+1 F
+-0.46 (ctrls) 419.65 547 P
+2 F
+-0.46 ( member of) 440.99 547 P
+1 F
+-0.46 (xkb) 497.93 547 P
+2 F
+-0.46 (, and) 514.59 547 P
+(sets) 108 534 T
+1 F
+(ctrls) 129 534 T
+2 F
+( to) 150.34 534 T
+5 F
+-0.6 (NULL.) 165.67 534 S
+0 F
+(10.13) 72 509 T
+(The Miscellaneous P) 108 509 T
+(er) 225.68 509 T
+(-c) 236.78 509 T
+(lient Contr) 247.21 509 T
+(ols) 306.97 509 T
+2 F
+-0.33 (You can configure the boolean per-client controls which affect the) 108 489 P
+1 F
+-0.33 (state) 426.65 489 P
+2 F
+-0.33 ( reported in button) 449.31 489 P
+-0.09 (and key events. See section 12.1.1, 12.3, 12.5, and 16.3.11 of the XKB Protocol specifica-) 108 476 P
+(tion for more details.) 108 463 T
+(To get the current values of the) 108 442 T
+5 F
+-0.6 (per-client) 260.96 442 S
+2 F
+( controls, use) 326.96 442 T
+1 F
+(XkbGetP) 393.62 442 T
+(erClientContr) 435.98 442 T
+(ols) 502.79 442 T
+2 F
+(.) 516.79 442 T
+2 11 Q
+(Bool) 108 421.67 T
+3 F
+(XkbGetP) 132.15 421.67 T
+(erClientContr) 175.93 421.67 T
+(ols) 242.32 421.67 T
+2 F
+(\050) 255.16 421.67 T
+1 F
+(dpy) 258.82 421.67 T
+2 F
+(,) 273.99 421.67 T
+1 F
+(ctrls) 279.49 421.67 T
+2 F
+(\051) 299.05 421.67 T
+(Display *) 126 408.67 T
+1 F
+(dpy) 234 408.67 T
+2 F
+(;) 249.88 408.67 T
+(/* connection to X serv) 306 408.67 T
+(er */) 408.49 408.67 T
+(unsigned int *) 126 395.67 T
+1 F
+(ctrls) 234 395.67 T
+2 F
+(;) 253.56 395.67 T
+(/* 1 bit => corresponding control is on */) 306 395.67 T
+1 12 Q
+(XkbGetP) 108 376 T
+(erClientContr) 150.36 376 T
+(ols) 217.16 376 T
+2 F
+( backfills) 231.17 376 T
+1 F
+(ctrls) 278.5 376 T
+2 F
+( with the) 299.83 376 T
+5 F
+-0.6 (per-client) 344.83 376 S
+2 F
+(control attributes for this) 417.43 376 T
+(particular client. It returns) 108 363 T
+5 F
+-0.6 (True) 236.3 363 S
+2 F
+( if successful, and) 262.7 363 T
+5 F
+-0.6 (False) 351.68 363 S
+2 F
+( otherwise.) 384.68 363 T
+(To change the current values of the) 108 342 T
+5 F
+-0.6 (per-client) 280.28 342 S
+2 F
+( control attributes, use) 346.29 342 T
+1 F
+(XkbSetP) 455.94 342 T
+(erClient-) 495.64 342 T
+(Contr) 108 329 T
+(ols.) 135.47 329 T
+2 11 Q
+(Bool) 108 308.67 T
+3 F
+(XkbSetP) 132.15 308.67 T
+(erClientContr) 173.48 308.67 T
+(ols) 239.88 308.67 T
+2 F
+(\050) 252.72 308.67 T
+1 F
+(dpy) 256.38 308.67 T
+2 F
+(,) 271.55 308.67 T
+1 F
+(ctrls) 277.05 308.67 T
+2 F
+(\051) 296.61 308.67 T
+(Display *) 126 295.67 T
+1 F
+(dpy) 234 295.67 T
+2 F
+(;) 249.88 295.67 T
+(/* connection to X serv) 306 295.67 T
+(er */) 408.49 295.67 T
+(unsigned int) 126 282.67 T
+1 F
+(c) 234 282.67 T
+(hang) 238.72 282.67 T
+(e) 260.61 282.67 T
+2 F
+(;) 265.49 282.67 T
+(/* 1 bit => change control */) 306 282.67 T
+(unsigned int *) 126 269.67 T
+1 F
+(value) 234 269.67 T
+2 F
+(;) 257.83 269.67 T
+(/* 1 bit => control on */) 306 269.67 T
+1 12 Q
+-0.34 (XkbSetP) 108 250 P
+-0.34 (erClientContr) 147.7 250 P
+-0.34 (ols) 214.5 250 P
+2 F
+-0.34 ( changes the per-client values for the controls selected by) 228.5 250 P
+1 F
+-0.34 (c) 502.99 250 P
+-0.34 (hang) 508.14 250 P
+-0.34 (e) 532.02 250 P
+2 F
+(to the corresponding v) 108 237 T
+(alue in) 215.35 237 T
+1 F
+(value) 250.68 237 T
+(.) 276.49 237 T
+2 F
+(Le) 282.49 237 T
+(g) 294.97 237 T
+(al v) 300.91 237 T
+(alues for) 318.28 237 T
+1 F
+( c) 359.93 237 T
+(hang) 368.08 237 T
+(e) 391.96 237 T
+2 F
+(and) 400.28 237 T
+1 F
+( value) 417.61 237 T
+2 F
+( are:) 446.6 237 T
+1 F
+(XkbPCF_Gr) 108 224 T
+(absUseXKBStateMask, XkbPCF_LookupStateWhenGr) 168.48 224 T
+(abbed, and) 430.27 224 T
+-0.34 (XkbPCF_SendEventUsesXKBState) 108 211 P
+-0.34 (.) 275.8 211 P
+2 F
+-0.34 (More than one control may be changed at one time by) 281.46 211 P
+(OR-ing the v) 108 198 T
+(alues together) 170.36 198 T
+(.) 236.69 198 T
+1 F
+(XkbSetP) 242.69 198 T
+(erClientContr) 282.38 198 T
+(ols) 349.19 198 T
+2 F
+( back\336lls) 363.19 198 T
+1 F
+(value) 409.86 198 T
+2 F
+( with the) 435.85 198 T
+5 F
+-0.6 (per-cli-) 480.85 198 S
+-0.6 (ent) 108 185 S
+2 F
+(control attrib) 134.4 185 T
+(utes for this particular client.) 196.49 185 T
+(It returns) 337.8 185 T
+5 F
+-0.6 (True) 384.46 185 S
+2 F
+( if successful, and) 410.86 185 T
+5 F
+-0.6 (False) 499.84 185 S
+2 F
+(otherwise.) 108 172 T
+FMENDPAGE
+%%EndPage: "81" 93
+%%Page: "82" 94
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(82) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(11 X Library Controls) 436.42 744.87 T
+0 14 Q
+(11) 72 710.67 T
+(X Librar) 108 710.67 T
+(y Contr) 161.05 710.67 T
+(ols) 209.77 710.67 T
+2 12 Q
+(The Xkb extension is composed of two parts: a server extension, and a client-side X) 108 688 T
+(library extension. Chapter 10 discusses functions used to modify controls affecting the) 108 675 T
+-0.21 (behavior of the server portion of the Xkb extension. This chapter discusses functions used) 108 662 P
+-0.41 (to modify controls that affect only the behavior of the client portion of the extension; these) 108 649 P
+(controls are known as Library Controls.) 108 636 T
+(All of the Library Controls are boolean flags that may be enabled and disabled. The con-) 108 615 T
+(trols can be divided into several categories:) 108 602 T
+2 11 Q
+(\245) 126 581.67 T
+(Controls af) 139.68 581.67 T
+(fecting general string lookups) 188.6 581.67 T
+(\245) 126 569.67 T
+(Controls af) 139.68 569.67 T
+(fecting compose processing) 188.6 569.67 T
+(\245) 126 557.67 T
+(Controls af) 139.68 557.67 T
+(fecting e) 188.6 557.67 T
+(v) 226.5 557.67 T
+(ent deli) 231.84 557.67 T
+(v) 264.26 557.67 T
+(ery) 269.59 557.67 T
+2 12 Q
+(There are two types of string lookups performed by) 108 539 T
+1 F
+(XLookupString) 358.28 539 T
+2 F
+(. The first type) 430.96 539 T
+(involves translating a single keycode into a string; the controls in the first category affect) 108 526 T
+-0.23 (this type of lookup. The second type involves translating a series of keysyms into a string;) 108 513 P
+(the controls in the second category affect this type of lookup.) 108 500 T
+(An Xkb implementation is required to support the programming interface for all of the) 108 479 T
+-0.44 (controls. However, an implementation may choose not to support the semantics associated) 108 466 P
+(with the controls that deal with compose processing. In this case, a program that accesses) 108 453 T
+(these controls should still function normally; however, the feedback that would normally) 108 440 T
+(occur with the controls enabled may be missing.) 108 427 T
+0 F
+(11.1) 72 402 T
+(Contr) 108 402 T
+(ols Aff) 139.75 402 T
+(ecting K) 176.96 402 T
+(e) 224.12 402 T
+(ycode-to-String T) 230.62 402 T
+(ranslation) 328.99 402 T
+2 F
+(The first type of string lookups, which are here called) 108 382 T
+1 F
+(simple string lookups) 368.28 382 T
+2 F
+(, involves) 470.95 382 T
+(translating a single keycode into a string. Because these simple lookups involve only a) 108 369 T
+(single keycode, all of the information needed to do the translation is contained in the key-) 108 356 T
+(board state in a single event. The controls affecting simple string lookups are:) 108 343 T
+5 F
+-0.6 (ForceLatin1Lookup) 139.68 322 S
+-0.6 (ConsumeLookupMods) 139.68 308 S
+-0.6 (LevelOneUsesShiftAndLock) 139.68 294 S
+0 F
+(11.1.1) 72 268 T
+(For) 108 268 T
+(ceLatin1Lookup) 127.09 268 T
+2 F
+-0.32 (If the) 108 248 P
+5 F
+-0.7 -0.6 (ForceLatin1Lookup) 136.02 248 B
+2 F
+-0.32 ( control is enabled,) 248.22 248 P
+1 F
+-0.32 (XLookupString) 341.26 248 P
+2 F
+-0.32 ( only returns strings using) 413.93 248 P
+(the Latin1 character set. If) 108 235 T
+5 F
+-0.6 (ForceLatin1Lookup) 237.29 235 S
+2 F
+( is not enabled,) 349.49 235 T
+1 F
+(XLookupString) 425.15 235 T
+2 F
+( can) 497.82 235 T
+(return characters that are not in the Latin1 set. By default, this control is disabled, allow-) 108 222 T
+(ing characters outside of the Latin1 set to be returned.) 108 209 T
+0 F
+(11.1.2) 72 184 T
+(ConsumeLookupMods) 108 184 T
+2 F
+-0.36 (Simple string lookups in) 108 164 P
+1 F
+-0.36 (XLookupString) 227.24 164 P
+2 F
+-0.36 ( involve two different translation phases. The first) 299.92 164 P
+-0.46 (phase translates raw device keycodes to individual keysyms. The second phase attempts to) 108 151 P
+(map the resulting keysym into a string of one or more characters. In the first phase, some) 108 138 T
+(of the modifiers are normally used to determine the appropriate shift level for a key.) 108 125 T
+(The) 108 104 T
+5 F
+-0.6 (ConsumeLookupMods) 129.66 104 S
+2 F
+( control determines whether or not) 241.86 104 T
+1 F
+(XLookupString) 410.5 104 T
+(consumes) 486.17 104 T
+2 F
+(the modifiers it uses during the first phase of processing \050mapping a keycode to a key-) 108 91 T
+(sym\051. When a modifier is consumed, it is effectively removed from the working copy of) 108 78 T
+FMENDPAGE
+%%EndPage: "82" 94
+%%Page: "83" 95
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(83) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(11 X Library Controls) 436.42 744.87 T
+2 12 Q
+(the keyboard state information) 108 712 T
+1 F
+(XLookupString) 257.98 712 T
+2 F
+( is using and appears to be unset for the) 330.65 712 T
+(remainder of the processing.) 108 699 T
+(If the) 108 678 T
+5 F
+-0.6 (ConsumeLookupMods) 136.66 678 S
+2 F
+( control is enabled,) 248.86 678 T
+1 F
+(XLookupString) 343.18 678 T
+2 F
+( does not use the modifi-) 415.85 678 T
+-0.33 (ers used to translate the keycode of the event to a keysym when it is determining the string) 108 665 P
+-0.11 (associated with a keysym. For example, assume the keymap for the \324A\325 key only contains) 108 652 P
+(the shift modifier and the) 108 639 T
+5 F
+-0.6 (ConsumeLookupMods) 232.32 639 S
+2 F
+( control is enabled. If a user presses the) 344.52 639 T
+4 11 Q
+-0.45 (Shift) 108 626 P
+2 12 Q
+-0.44 ( key and the) 130.01 626 P
+4 11 Q
+-0.45 (A) 189.58 626 P
+2 12 Q
+-0.44 ( key while the) 196.92 626 P
+4 11 Q
+-0.45 (Num_Loc) 265.83 626 P
+-0.45 (k) 312.67 626 P
+2 12 Q
+-0.44 ( key is locked,) 318.17 626 P
+1 F
+-0.44 (XLookupString) 388.75 626 P
+2 F
+-0.44 ( uses the) 461.42 626 P
+5 F
+-0.96 -0.6 (Shift) 504.44 626 B
+2 F
+-0.43 (modifier when mapping the keycode for the \324a\325 key to the keysym for \324A\325; subsequently, it) 108 613 P
+(only uses the) 108 600 T
+5 F
+-0.6 (NumLock) 173.66 600 S
+2 F
+( modifier when determining the string associated with the keysym) 219.87 600 T
+(\324A\325.) 108 587 T
+(If the) 108 566 T
+5 F
+-0.6 (ConsumeLookupMods) 136.66 566 S
+2 F
+( control is not enabled,) 248.86 566 T
+1 F
+(XLookupString) 361.51 566 T
+2 F
+( uses all of the event) 434.19 566 T
+(modifiers to determine the string associated with a keysym. This behavior mirrors the) 108 553 T
+(behavior of) 108 540 T
+1 F
+(XLookupString) 165.98 540 T
+2 F
+( in the core implementation.) 238.66 540 T
+-0.15 (The) 108 519 P
+5 F
+-0.34 -0.6 (ConsumeLookupMods) 129.51 519 B
+2 F
+-0.15 ( control is unset by default. For more information on modifier) 241.71 519 P
+(consumption, refer to Chapter 12.) 108 506 T
+0 F
+(11.1.3) 72 481 T
+(Al) 108 481 T
+(wa) 119.82 481 T
+(ysConsumeShiftAndLoc) 135.59 481 T
+(k) 274.69 481 T
+2 F
+(The) 108 461 T
+5 F
+-0.6 (AlwaysConsumeShiftAndLock) 129.66 461 S
+2 F
+( control, if enabled, forces) 294.66 461 T
+1 F
+(XLookupString) 423.63 461 T
+2 F
+( to con-) 496.3 461 T
+(sume the) 108 448 T
+5 F
+-0.6 (Shift) 154 448 S
+2 F
+( and) 187 448 T
+5 F
+-0.6 (Lock) 210.32 448 S
+2 F
+( modifiers when processing all keys, even if the definition for) 236.73 448 T
+-0.13 (the key type does not specify these modifiers. The) 108 435 P
+5 F
+-0.28 -0.6 (AlwaysConsumeShiftAndLock) 350.8 435 B
+2 F
+-0.13 ( con-) 515.8 435 P
+(trol is unset by default. See section 15.2 for a discussion of key types.) 108 422 T
+0 F
+(11.2) 72 397 T
+(Contr) 108 397 T
+(ols Aff) 139.75 397 T
+(ecting Compose Pr) 176.96 397 T
+(ocessing) 286.08 397 T
+2 F
+(The second type of string lookup performed by) 108 377 T
+1 F
+(XLookupString) 337.3 377 T
+2 F
+( involves translating a) 409.97 377 T
+(series of keysyms into a string. Because these lookups can involve more than one key) 108 364 T
+(event, they require) 108 351 T
+1 F
+(XLookupString) 200.64 351 T
+2 F
+( to retain some state information between successive) 273.31 351 T
+(calls. The process of mapping a series of keysyms to a string is known as) 108 338 T
+1 F
+(compose pr) 461.95 338 T
+(o-) 517.07 338 T
+(cessing) 108 325 T
+2 F
+(. The controls affecting compose processing are:) 143.33 325 T
+5 F
+-0.6 (ConsumeKeysOnComposeFail) 139.68 304 S
+-0.6 (ComposeLED) 139.68 290 S
+-0.6 (BeepOnComposeFail) 139.68 276 S
+2 F
+(Because different vendors have historically used different algorithms to implement com-) 108 256 T
+(pose processing, and these algorithms may be incompatible with the semantics required) 108 243 T
+(by the Xkb compose processing controls, implementation of the compose processing con-) 108 230 T
+(trols is optional in an Xkb implementation.) 108 217 T
+0 F
+(11.2.1) 72 192 T
+(ConsumeK) 108 192 T
+(e) 171.16 192 T
+(ysOnComposeF) 177.65 192 T
+(ail) 269.42 192 T
+2 F
+(Some compose processing algorithms signal the start of a compose sequence by a key) 108 172 T
+(event meaning \322start compose\323.) 108 159 T
+2 9.6 Q
+(1) 261.3 163.8 T
+2 12 Q
+(The subsequent key events should normally result in a) 266.1 159 T
+(valid composition yielding a valid translation to a string. If the subsequent key events do) 108 146 T
+(not have a valid translation, some decision must be made about what to do with the key) 108 133 T
+(events that were processed while attempting the compose. The) 108 120 T
+5 F
+-0.6 (ConsumeKeysOnCom-) 411.28 120 S
+72 90 540 110 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 98 204 98 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+0 0 612 792 C
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(1. Another possibility is to ha) 72 83.33 T
+(v) 192.64 83.33 T
+(e the compose processing simply be the result of a \336nite state acceptor; a compose) 197.49 83.33 T
+(sequence w) 72 71.33 T
+(ould ne) 118.27 71.33 T
+(v) 147.74 71.33 T
+(er f) 152.59 71.33 T
+(ail for a properly written \336nite state acceptor) 166.09 71.33 T
+(.) 344.11 71.33 T
+FMENDPAGE
+%%EndPage: "83" 95
+%%Page: "84" 96
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(84) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(11 X Library Controls) 436.42 744.87 T
+5 12 Q
+-0.6 (poseFail) 108 712 S
+2 F
+( control allows a client to specify what happens with the key events) 160.8 712 T
+1 F
+(XLookup-) 487.75 712 T
+(String) 108 699 T
+2 F
+( has been considering when it reaches a dead end in a compose sequence.) 137.34 699 T
+(If the) 108 678 T
+5 F
+-0.6 (ConsumeKeysOnComposeFail) 136.66 678 S
+2 F
+( control is set, all keys associated with a failed) 295.06 678 T
+(compose sequence should be consumed \050discarded\051. If the) 108 665 T
+5 F
+-0.6 (ConsumeKeysOnCompose-) 390.26 665 S
+-0.6 (Fail) 108 652 S
+2 F
+( control is not set, the key events associated with a failed compose sequence should) 134.4 652 T
+(be processed as a normal sequence of key events.) 108 639 T
+(The) 108 618 T
+5 F
+-0.6 (ConsumeKeysOnComposeFail) 129.66 618 S
+2 F
+( control is disabled by default.) 288.06 618 T
+0 F
+(11.2.2) 72 593 T
+(ComposeLED) 108 593 T
+2 F
+-0.02 (The) 108 573 P
+5 F
+-0.04 -0.6 (ComposeLED) 129.64 573 B
+2 F
+-0.02 ( control allows a client to specify whether or not an indicator should be) 195.64 573 P
+(set and cleared to provide feedback when compose processing is in progress. The control) 108 560 T
+(does not specify which indicator should be used; the mapping for this is up to the individ-) 108 547 T
+(ual implementation. If the) 108 534 T
+5 F
+-0.6 (ComposeLED) 235.66 534 S
+2 F
+( control is enabled, it specifies that an indicator) 301.66 534 T
+(should be set when a compose sequence is in progress and cleared when one is not in) 108 521 T
+(progress. The) 108 508 T
+5 F
+-0.6 (ComposeLED) 176.32 508 S
+2 F
+( control is disabled by default.) 242.32 508 T
+-0.37 (While the Xkb extension does not specify the type of type of indicator to be used when the) 108 487 P
+5 F
+-0.6 (ComposeLED) 108 474 S
+2 F
+( control is implemented, a consistent convention between implementations) 174 474 T
+(is to everyone\325s benefit. If a named indicator is used for this purpose, the recommended) 108 461 T
+(name is \322) 108 448 T
+5 F
+-0.6 (Compose) 153.32 448 S
+2 F
+(\323. Note that some implementations may use an unnamed, custom hard-) 199.52 448 T
+(ware LED for this purpose.) 108 435 T
+0 F
+(11.2.3) 72 410 T
+(BeepOnComposeF) 108 410 T
+(ail) 215.77 410 T
+2 F
+-0.11 (The) 108 390 P
+5 F
+-0.23 -0.6 (BeepOnComposeFail) 129.55 390 B
+2 F
+-0.11 ( control allows a client to specify whether or not a bell should) 241.76 390 P
+(be activated to provide feedback when a compose sequence fails. The control does not) 108 377 T
+(specify the type of bell that should be used; the mapping for this is up to the individual) 108 364 T
+(implementation. If the) 108 351 T
+5 F
+-0.6 (BeepOnComposeFail) 217.99 351 S
+2 F
+( control is enabled, it specifies that a bell) 330.19 351 T
+-0.43 (should be activated when a compose sequence fails. The) 108 338 P
+5 F
+-0.94 -0.6 (BeepOnComposeFail) 378.08 338 B
+2 F
+-0.43 ( control is) 490.28 338 P
+(disabled by default. If implemented, the bell should be activated using) 108 325 T
+1 F
+(XkbBell) 448.3 325 T
+2 F
+( or) 486.29 325 T
+1 F
+(XkbDe-) 502.28 325 T
+(viceBell) 108 312 T
+2 F
+(.) 146.65 312 T
+(While the Xkb extension does not specify the type of bell to be used when the) 108 291 T
+5 F
+-0.6 (BeepOn-) 485.28 291 S
+-0.47 -0.6 (ComposeFail) 108 278 B
+2 F
+-0.21 ( control is implemented, a consistent convention between implementations) 180.6 278 P
+-0.45 (is to everyone\325s benefit. If a named bell is used for this purpose, the recommended name is) 108 265 P
+(\322) 108 252 T
+5 F
+-0.6 (ComposeFail) 113.33 252 S
+2 F
+(\323.) 185.93 252 T
+0 F
+(11.3) 72 227 T
+(Contr) 108 227 T
+(ols Eff) 139.75 227 T
+(ecting Event Deliver) 176.3 227 T
+(y) 291.13 227 T
+(11.3.1) 72 201 T
+(IgnoreNe) 108 201 T
+(wK) 159.83 201 T
+(e) 177.65 201 T
+(yboar) 184.14 201 T
+(ds) 216.58 201 T
+2 F
+(When Xkb is initialized, it implicitly forces requests for) 108 181 T
+5 F
+-0.6 (NewKeyboardNotify) 379.31 181 S
+2 F
+( events.) 491.51 181 T
+-0.28 (These events may be used by the Xkb library extension internally; they are normally trans-) 108 168 P
+(lated into core protocol) 108 155 T
+5 F
+-0.6 (MappingNotify) 222.65 155 S
+2 F
+( events before being passed to the client. While) 308.45 155 T
+-0.39 (delivering the event to the client is appropriate in most cases, it is not appropriate for some) 108 142 P
+(clients that maintain per-key data structures. This is because once the server has sent a) 108 129 T
+5 F
+-0.6 (NewKeyboardNotify) 108 116 S
+2 F
+( event, it is free to send the client events for all keys in the new) 220.2 116 T
+(range and that range may be outside of the per-key data structures the client is maintain-) 108 103 T
+(ing.) 108 90 T
+FMENDPAGE
+%%EndPage: "84" 96
+%%Page: "85" 97
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(85) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(11 X Library Controls) 436.42 744.87 T
+2 12 Q
+(The) 108 712 T
+5 F
+-0.6 (IgnoreNewKeyboards) 129.66 712 S
+2 F
+( control, if enabled, prevents Xkb from mapping) 248.46 712 T
+5 F
+-0.6 (NewKey-) 483.76 712 S
+-1.08 -0.6 (boardNotify) 108 699 B
+2 F
+-0.49 ( events to core) 180.6 699 P
+5 F
+-1.08 -0.6 (MappingNotify) 251.29 699 B
+2 F
+-0.49 ( events and passing them to the client. The) 337.09 699 P
+(control is initially disabled.) 108 686 T
+0 F
+(11.4) 72 661 T
+(Manipulating the Librar) 108 661 T
+(y Contr) 240.8 661 T
+(ols) 282.56 661 T
+2 F
+(The Library Controls are manipulated using functions that deal with bitmasks to indicate) 108 641 T
+(which controls to manipulate. The controls are identified by the masks defined in Table) 108 628 T
+(11.1.) 108 615 T
+0 F
+(11.4.1) 72 437 T
+(Determining Whic) 108 437 T
+(h Librar) 209.89 437 T
+(y Contr) 254.69 437 T
+(ols are Implemented) 296.45 437 T
+2 F
+(To determine which Library Controls are actually implemented, use) 108 417 T
+1 F
+(XkbXlibContr) 437.28 417 T
+(olsIm-) 503.41 417 T
+(plemented) 108 404 T
+2 F
+(.) 157.32 404 T
+2 11 Q
+(unsigned int) 108 383.67 T
+3 F
+(XkbXlibContr) 164.84 383.67 T
+(olsImplemented) 233.09 383.67 T
+2 F
+(\050) 308.26 383.67 T
+1 F
+(display) 311.92 383.67 T
+2 F
+(\051) 343.7 383.67 T
+(Display *) 126 370.67 T
+1 F
+(display) 234 370.67 T
+2 F
+(;) 265.78 370.67 T
+(/* connection to X serv) 342 370.67 T
+(er */) 444.49 370.67 T
+1 12 Q
+(XkbXlibContr) 108 351 T
+(olsImplemented) 174.13 351 T
+2 F
+( returns a bitmask indicating the controls actually imple-) 250.12 351 T
+(mented in the Xkb library and is composed of an inclusive OR of bits from Table 11.1.) 108 338 T
+0 F
+(11.4.2) 72 313 T
+(Determining the State of the Librar) 108 313 T
+(y Contr) 305.48 313 T
+(ols) 347.24 313 T
+2 F
+(To determine the current state of the Library Controls, use) 108 293 T
+1 F
+(XkbGetXlibContr) 390.95 293 T
+(ols) 474.41 293 T
+2 F
+(.) 488.41 293 T
+2 11 Q
+(unsigned int) 108 272.67 T
+3 F
+(XkbGetXlibContr) 164.84 272.67 T
+(ols) 250.2 272.67 T
+2 F
+(\050) 263.03 272.67 T
+1 F
+(display) 266.7 272.67 T
+2 F
+(\051) 298.48 272.67 T
+(Display *) 126 259.67 T
+1 F
+(display) 234 259.67 T
+2 F
+(;) 265.78 259.67 T
+(/* connection to X serv) 342 259.67 T
+(er */) 444.49 259.67 T
+1 12 Q
+(XkbGetXlibContr) 108 240 T
+(ols) 191.46 240 T
+2 F
+( returns the current state of the Library Controls as a bit mask that is) 205.46 240 T
+-0.45 (an inclusive OR of the control masks from Table 11.1 for the controls that are enabled. For) 108 227 P
+-0.22 (the optional compose processing controls, the fact that a control is enabled does not imply) 108 214 P
+(that it is actually implemented.) 108 201 T
+0 F
+(11.4.3) 72 176 T
+(Changing the State of the Librar) 108 176 T
+(y Contr) 290.81 176 T
+(ols) 332.57 176 T
+2 F
+(To change the state of the Library Controls, use) 108 156 T
+1 F
+(XkbSetXlibContr) 339.96 156 T
+(ols) 420.76 156 T
+2 F
+(.) 434.76 156 T
+2 11 Q
+(Bool) 108 135.67 T
+3 F
+(XkbSetXlibContr) 132.15 135.67 T
+(ols) 215.06 135.67 T
+2 F
+(\050) 227.9 135.67 T
+1 F
+(display) 231.56 135.67 T
+(, bits_to_c) 262.74 135.67 T
+(hang) 308.41 135.67 T
+(e) 330.3 135.67 T
+(, values_for_bits) 335.07 135.67 T
+2 F
+(\051) 408.41 135.67 T
+(Display *) 126 122.67 T
+1 F
+(display) 234 122.67 T
+2 F
+(;) 265.78 122.67 T
+(/* connection to X serv) 342 122.67 T
+(er */) 444.49 122.67 T
+(unsigned long) 126 109.67 T
+1 F
+(bits_to_c) 234 109.67 T
+(hang) 274.17 109.67 T
+(e) 296.06 109.67 T
+2 F
+(;) 300.95 109.67 T
+(/* selects controls to be modi\336ed */) 342 109.67 T
+(unsigned long) 126 96.67 T
+1 F
+(values_for_bits) 234 96.67 T
+2 F
+(;) 301.84 96.67 T
+(/* turns selected controls on \0501\051 or of) 342 96.67 T
+(f \0500\051 */) 504.56 96.67 T
+3 12 Q
+(T) 241.87 595 T
+(able 11.1 Library Contr) 248.77 595 T
+(ol Masks) 374.21 595 T
+1 F
+(Libr) 194.5 575 T
+(ary Contr) 215 575 T
+(ol Mask) 261.46 575 T
+(V) 392.5 575 T
+(alue) 398.5 575 T
+2 11 Q
+(XkbLC_F) 194.5 560.67 T
+(orceLatin1Lookup) 238.95 560.67 T
+(\0501 << 0\051) 392.5 560.67 T
+(XkbLC_ConsumeLookupMods) 194.5 546.67 T
+(\0501 << 1\051) 392.5 546.67 T
+(XkbLC_Al) 194.5 532.67 T
+(w) 243.89 532.67 T
+(aysConsumeShiftAndLock) 251.72 532.67 T
+(\0501 << 2\051) 392.5 532.67 T
+(XkbLC_IgnoreNe) 194.5 518.67 T
+(wK) 274.26 518.67 T
+(e) 289.87 518.67 T
+(yboards) 294.59 518.67 T
+(\0501 << 3\051) 392.5 518.67 T
+(XkbLC_ConsumeK) 194.5 504.67 T
+(e) 282.23 504.67 T
+(ysOnComposeF) 286.94 504.67 T
+(ail) 357.67 504.67 T
+(\0501 << 29\051) 392.5 504.67 T
+(XkbLC_ComposeLED) 194.5 490.67 T
+(\0501 << 30\051) 392.5 490.67 T
+(XkbLC_BeepOnComposeF) 194.5 476.67 T
+(ail) 316.56 476.67 T
+(\0501 << 31\051) 392.5 476.67 T
+(XkbLC_AllControls) 194.5 462.67 T
+(\0500xc0000007\051) 392.5 462.67 T
+193.5 587 454.5 587 2 L
+V
+0.5 H
+0 Z
+N
+193.5 570 454.5 570 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "85" 97
+%%Page: "86" 98
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(86) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(11 X Library Controls) 436.42 744.87 T
+1 12 Q
+-0.32 (XkbSetXlibContr) 108 712 P
+-0.32 (ols) 188.8 712 P
+2 F
+-0.32 ( modifies the state of the controls selected by) 202.8 712 P
+1 F
+-0.32 (bits_to_c) 419.58 712 P
+-0.32 (hang) 463.41 712 P
+-0.32 (e) 487.29 712 P
+2 F
+-0.32 (; only the) 492.61 712 P
+(controls selected by) 108 699 T
+1 F
+(bits_to_c) 206.32 699 T
+(hang) 250.14 699 T
+(e) 274.02 699 T
+2 F
+( are modified. If the bit corresponding to a control is) 279.35 699 T
+-0.22 (on in) 108 686 P
+1 F
+-0.22 (bits_to_c) 134.89 686 P
+-0.22 (hang) 178.72 686 P
+-0.22 (e) 202.6 686 P
+2 F
+-0.22 ( and also on in) 207.93 686 P
+1 F
+-0.22 (values_for_bits) 279.81 686 P
+2 F
+-0.22 (, the control is enabled. If the bit corre-) 353.82 686 P
+(sponding to a control is on in) 108 673 T
+1 F
+(bits_to_c) 251 673 T
+(hang) 294.83 673 T
+(e) 318.71 673 T
+2 F
+( but off in) 324.04 673 T
+1 F
+(values_for_bits) 374.7 673 T
+2 F
+(, the control is dis-) 448.7 673 T
+(abled.) 108 660 T
+1 F
+(bits_to_c) 139.99 660 T
+(hang) 183.82 660 T
+(e) 207.7 660 T
+2 F
+( should be an inclusive OR of bits from Table 11.1.) 213.02 660 T
+FMENDPAGE
+%%EndPage: "86" 98
+%%Page: "87" 99
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(87) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(12 Interpreting K) 415.66 744.87 T
+(e) 497.25 744.87 T
+(y Ev) 501.97 744.87 T
+(ents) 522.28 744.87 T
+0 14 Q
+(12) 72 710.67 T
+(Interpreting K) 108 710.67 T
+(e) 199.57 710.67 T
+(y Events) 207.15 710.67 T
+2 12 Q
+(Xkb provides functions to help developers interpret key events without having to directly) 108 688 T
+(interpret Xkb data structures. Xkb also modifies the behavior of several core X library) 108 675 T
+(functions.) 108 662 T
+0 F
+(12.1) 72 637 T
+(Eff) 108 637 T
+(ects of Xkb on the Core X Librar) 123.88 637 T
+(y) 306.71 637 T
+2 F
+(When support for Xkb is built into the X library, the) 108 617 T
+1 F
+(XOpenDisplay) 361.98 617 T
+2 F
+( function looks for a) 432.64 617 T
+(compatible version of Xkb on the server. If it finds a compatible version, it initializes the) 108 604 T
+(extension and enables) 108 591 T
+1 F
+(implicit support) 216.31 591 T
+2 F
+( for Xkb in a number of X library functions. This) 292.66 591 T
+-0.33 (makes it possible for clients to take advantage of nearly all Xkb features without having to) 108 578 P
+(be rewritten or even recompiled, if they are built with shared libraries. This implicit sup-) 108 565 T
+-0.37 (port is invisible to most clients, but it can have side effects, so the extension includes ways) 108 552 P
+(to control or disable it.) 108 539 T
+0 F
+(12.1.1) 72 514 T
+(Eff) 108 514 T
+(ects of Xkb on Event State) 123.88 514 T
+2 F
+(Because) 108 494 T
+1 F
+(XOpenDisplay) 150.98 494 T
+2 F
+( initializes Xkb, some events contain an Xkb description of the) 221.64 494 T
+(keyboard state instead of that normally used by the core protocol. See section 17.1.1 for) 108 481 T
+(more information about the differences between Xkb keyboard state and that reported by) 108 468 T
+(the core protocol.) 108 455 T
+0 F
+(12.1.2) 72 430 T
+(Eff) 108 430 T
+(ects of Xkb on MappingNotify Events) 123.88 430 T
+2 F
+(When Xkb is missing or disabled, the X library tracks changes to the keyboard mapping) 108 410 T
+(using) 108 397 T
+5 F
+-0.6 (MappingNotify) 137 397 S
+2 F
+( events. Whenever the keyboard mapping is changed, the server) 222.81 397 T
+(sends all clients a) 108 384 T
+5 F
+-0.6 (MappingNotify) 195.32 384 S
+2 F
+( event to report the change. When a client receives a) 281.13 384 T
+5 F
+-0.6 (MappingNotify) 108 371 S
+2 F
+( event, it is supposed to call) 193.8 371 T
+1 F
+(XRefr) 329.8 371 T
+(eshK) 357.35 371 T
+(e) 380.93 371 T
+(yboar) 385.9 371 T
+(dMapping) 413.45 371 T
+2 F
+( to update the) 462.78 371 T
+(keyboard description used internally by the X library.) 108 358 T
+(The X Keyboard Extension uses) 108 337 T
+5 F
+-0.6 (XkbMapNotify) 266.3 337 S
+2 F
+( and) 345.51 337 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 368.83 337 S
+2 F
+( events) 500.84 337 T
+(to track changes to the keyboard mapping. When an Xkb-aware client receives either) 108 324 T
+(event, it should call) 108 311 T
+1 F
+(XkbRefr) 205 311 T
+(eshK) 243.88 311 T
+(e) 267.46 311 T
+(yboar) 272.42 311 T
+(dMapping) 299.98 311 T
+2 F
+( to update the keyboard description) 349.31 311 T
+-0.45 (used internally by the X library. To avoid duplicate events, the X server does not send core) 108 298 P
+(protocol) 108 285 T
+5 F
+-0.6 (MappingNotify) 151 285 S
+2 F
+( events to a client that has selected for) 236.8 285 T
+5 F
+-0.6 (XkbMapNotify) 422.43 285 S
+2 F
+( events.) 501.63 285 T
+(The implicit support for Xkb selects for) 108 264 T
+5 F
+-0.6 (XkbMapNotify) 301.64 264 S
+2 F
+( events. This means that clients) 380.85 264 T
+-0.19 (that do not explicitly use Xkb but that are using a version of the X library that has implicit) 108 251 P
+(support for Xkb do not receive) 108 238 T
+5 F
+-0.6 (MappingNotify) 258.64 238 S
+2 F
+( events over the wire. Clients that were) 344.44 238 T
+-0.04 (not written with Xkb in mind do not recognize or properly handle the new Xkb events, so) 108 225 P
+(the implicit support converts them to) 108 212 T
+5 F
+-0.6 (MappingNotify) 288 212 S
+2 F
+( events that report approximately) 373.8 212 T
+(the same information, unless the client has explicitly selected for the Xkb version of the) 108 199 T
+(event.) 108 186 T
+(An Xkb-capable X server does not send events from keys that fall outside the legal range) 108 165 T
+-0.17 (of keycodes expected by that client. Once the server sends a client an) 108 152 P
+5 F
+-0.38 -0.6 (XkbNewKeyboard-) 441 152 B
+-0.6 (Notify) 108 139 S
+2 F
+( event, it reports events from all keys because it assumes that any client that has) 147.6 139 T
+(receieved an) 108 126 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 171.3 126 S
+2 F
+( event expects key events from the new range of) 303.3 126 T
+-0.33 (keycodes. The implicit support for Xkb asks for) 108 113 P
+5 F
+-0.73 -0.6 (XkbNewKeyboardNotify) 338.33 113 B
+2 F
+-0.33 ( events, so the) 470.33 113 P
+(range of keycodes reported to the client might vary without the client\325s knowledge. Most) 108 100 T
+(clients don\325t really care about the range of legal keycodes, but some clients maintain) 108 87 T
+(information about each key and might have problems with events that come from unex-) 108 74 T
+FMENDPAGE
+%%EndPage: "87" 99
+%%Page: "88" 100
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(88) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(12 Interpreting K) 415.66 744.87 T
+(e) 497.25 744.87 T
+(y Ev) 501.97 744.87 T
+(ents) 522.28 744.87 T
+2 12 Q
+-0.09 (pected keys. Such clients can set the) 108 712 P
+5 F
+-0.2 -0.6 (XkbLC_IgnoreNewKeyboards) 284.66 712 B
+2 F
+-0.09 ( library control \050see) 443.06 712 P
+(section 11.3.1\051 to prevent the implicit support from requesting notification of changes to) 108 699 T
+(the legal range of keycodes.) 108 686 T
+0 F
+(12.1.3) 72 661 T
+(X Librar) 108 661 T
+(y Functions Aff) 153.47 661 T
+(ected b) 240.68 661 T
+(y Xkb) 282.46 661 T
+2 F
+(The following X library functions are modified by Xkb:) 108 641 T
+1 11 Q
+(XK) 139.68 620.67 T
+(e) 153.35 620.67 T
+(ycodeT) 157.91 620.67 T
+(oK) 188.66 620.67 T
+(e) 201.12 620.67 T
+(ysym) 205.67 620.67 T
+(XK) 139.68 607.67 T
+(e) 153.35 607.67 T
+(ysymT) 157.91 607.67 T
+(oK) 185 607.67 T
+(e) 197.45 607.67 T
+(ycode) 202.01 607.67 T
+(XLookupK) 139.68 594.67 T
+(e) 186.35 594.67 T
+(ysym) 190.91 594.67 T
+(XLookupString) 139.68 581.67 T
+(XRefr) 139.68 568.67 T
+(eshK) 164.94 568.67 T
+(e) 186.55 568.67 T
+(yboar) 191.1 568.67 T
+(dMapping) 216.36 568.67 T
+(XRebindK) 139.68 555.67 T
+(e) 184.52 555.67 T
+(ysym) 189.07 555.67 T
+2 12 Q
+(The implicit support for Xkb replaces a number of X library functions with versions that) 108 536 T
+(understand and use the X Keyboard Extension. In most cases, the semantics of the new) 108 523 T
+-0.06 (versions are identical to those of the old, but there are occasional visible differences. This) 108 510 P
+(section lists all of the functions that are affected and the differences in behavior, if any,) 108 497 T
+(that are visible to clients.) 108 484 T
+(The) 108 463 T
+1 F
+(XK) 129.66 463 T
+(e) 144.58 463 T
+(ycodeT) 149.54 463 T
+(oK) 183.1 463 T
+(e) 196.68 463 T
+(ysym) 201.65 463 T
+2 F
+( function reports the keysym associated with a particular index) 225.64 463 T
+(for a single key. The index specifies a column of symbols in the core keyboard mapping) 108 450 T
+(\050that is, as reported by the core protocol) 108 437 T
+1 F
+(GetK) 302.29 437 T
+(e) 327.2 437 T
+(yboar) 332.17 437 T
+(dMapping) 359.72 437 T
+2 F
+( request\051. The order of the) 409.06 437 T
+(symbols in the core mapping does not necessarily correspond to the order of the symbols) 108 424 T
+(used by Xkb; section 17.1.3 describes the differences.) 108 411 T
+(The) 108 390 T
+1 F
+(XK) 129.66 390 T
+(e) 144.58 390 T
+(ysymT) 149.54 390 T
+(oK) 179.1 390 T
+(e) 192.68 390 T
+(ycode) 197.65 390 T
+2 F
+( function reports a keycode to which a particular keysym is) 225.64 390 T
+(bound. When Xkb is missing or disabled, this function looks in each column of the core) 108 377 T
+-0.2 (keyboard mapping in turn and returns the lowest numbered key that matches in the lowest) 108 364 P
+(numbered group. When Xkb is present, this function uses the Xkb ordering for symbols) 108 351 T
+(instead.) 108 338 T
+(The) 108 317 T
+1 F
+(XLookupK) 129.66 317 T
+(e) 180.58 317 T
+(ysym) 185.54 317 T
+2 F
+( function reports the symbol in a specific column of the key associ-) 209.53 317 T
+(ated with an event. Whether or not Xkb is present, the column specifies an index into the) 108 304 T
+(core symbol mapping.) 108 291 T
+(The) 108 270 T
+1 F
+(XLookupString) 129.66 270 T
+2 F
+( function reports the symbol and string associated with a key event,) 202.33 270 T
+-0.06 (taking into account the keycode and keyboard state as reported in the event. When Xkb is) 108 257 P
+(disabled or missing,) 108 244 T
+1 F
+(XLookupString) 207.34 244 T
+2 F
+( uses the rules specified by the core protocol and) 280.01 244 T
+(reports only ISO Latin-1 characters. When Xkb is present,) 108 231 T
+1 F
+(XLookupString) 390.94 231 T
+2 F
+( uses the) 463.61 231 T
+(explicit keyboard group, key types, and rules specified by Xkb. When Xkb is present,) 108 218 T
+1 F
+(XLookupString) 108 205 T
+2 F
+( is allowed, but not required, to return strings in character sets other than) 180.67 205 T
+(ISO Latin-1, depending on the current locale. If any key bindings are defined,) 108 192 T
+1 F
+(XLookup-) 484.58 192 T
+(String) 108 179 T
+2 F
+( does not use any consumed modifiers \050see sections 11.1.2 and 15.2\051 to determine) 137.34 179 T
+(matching bindings.) 108 166 T
+-0.49 (The) 108 145 P
+1 F
+-0.49 (XRefr) 129.17 145 P
+-0.49 (eshK) 156.72 145 P
+-0.49 (e) 180.3 145 P
+-0.49 (yboar) 185.27 145 P
+-0.49 (dMapping) 212.82 145 P
+2 F
+-0.49 ( function updates the X library\325s internal representation of) 262.15 145 P
+(the keyboard to reflect changes reported via) 108 132 T
+5 F
+-0.6 (MappingNotify) 321.6 132 S
+2 F
+( events. When Xkb is miss-) 407.4 132 T
+-0.19 (ing or disabled, this function reloads the entire modifier map or keyboard mapping. When) 108 119 P
+(Xkb is present, the implicit Xkb support keeps track of the changed components reported) 108 106 T
+(by each) 108 93 T
+5 F
+-0.6 (XkbMapNotify) 147.98 93 S
+2 F
+( event and updates only those pieces of the keyboard description) 227.19 93 T
+(that have changed. If the implicit support has not noted any keyboard mapping changes,) 108 80 T
+1 F
+(XRefr) 108 67 T
+(eshK) 135.55 67 T
+(e) 159.13 67 T
+(yboar) 164.1 67 T
+(dMapping) 191.65 67 T
+2 F
+( updates the entire keyboard description.) 240.98 67 T
+FMENDPAGE
+%%EndPage: "88" 100
+%%Page: "89" 101
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(89) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(12 Interpreting K) 415.66 744.87 T
+(e) 497.25 744.87 T
+(y Ev) 501.97 744.87 T
+(ents) 522.28 744.87 T
+2 12 Q
+(The) 108 712 T
+1 F
+(XRebindK) 129.66 712 T
+(e) 178.57 712 T
+(ysym) 183.54 712 T
+2 F
+( function associates a string with a keysym and a set of modifiers.) 207.53 712 T
+(Xkb does not directly change this function, but it does affect the way that the state) 108 699 T
+(reported in the event is compared to the state specified to) 108 686 T
+1 F
+(XRebindK) 384.95 686 T
+(e) 433.86 686 T
+(ysym) 438.83 686 T
+2 F
+(. When Xkb is) 462.82 686 T
+(missing or disabled,) 108 673 T
+1 F
+(XLookupString) 207.34 673 T
+2 F
+( returns the specified string if the modifiers in the) 280.01 673 T
+-0.33 (event exactly match the modifiers from this call. When Xkb is present, any modifiers used) 108 660 P
+(to determine the keysym are consumed and are not used to look up the string.) 108 647 T
+0 F
+(12.2) 72 622 T
+(Xkb Event and K) 108 622 T
+(e) 202.51 622 T
+(ymap Functions) 209 622 T
+2 F
+(To find the keysym bound to a particular key at a specified group and shift level, use) 108 602 T
+1 F
+(XkbKeycodeToKeysym) 108 589 T
+2 F
+(.) 217.97 589 T
+2 11 Q
+(K) 108 568.67 T
+(e) 115.67 568.67 T
+(ySym) 120.39 568.67 T
+3 F
+(XkbK) 148.81 568.67 T
+(eycodeT) 177.27 568.67 T
+(oK) 215.36 568.67 T
+(eysym) 229.14 568.67 T
+2 F
+(\050) 258.47 568.67 T
+1 F
+(dpy) 262.13 568.67 T
+(, kc, gr) 277.41 568.67 T
+(oup, le) 307.46 568.67 T
+(vel) 337.24 568.67 T
+2 F
+(\051) 350.07 568.67 T
+(Display *) 126 555.67 T
+(dp) 234 555.67 T
+(y;) 244.89 555.67 T
+(/* connection to X serv) 306 555.67 T
+(er */) 408.49 555.67 T
+(K) 126 542.67 T
+(e) 133.67 542.67 T
+(yCode) 138.39 542.67 T
+(kc;) 234 542.67 T
+(/* k) 306 542.67 T
+(e) 322.7 542.67 T
+(y of interest */) 327.42 542.67 T
+(unsigned int) 126 529.67 T
+(group;) 234 529.67 T
+(/* group of interest */) 306 529.67 T
+(unsigned int) 126 516.67 T
+(le) 234 516.67 T
+(v) 241.67 516.67 T
+(el;) 247 516.67 T
+(/* shift le) 306 516.67 T
+(v) 347.28 516.67 T
+(el of interest */) 352.62 516.67 T
+1 12 Q
+-0.18 (XkbK) 108 497 P
+-0.18 (e) 134.24 497 P
+-0.18 (ycodeT) 139.21 497 P
+-0.18 (oK) 172.76 497 P
+-0.18 (e) 186.35 497 P
+-0.18 (ysym) 191.32 497 P
+2 F
+-0.18 ( returns the keysym bound to a particular group and shift level for a) 215.3 497 P
+-0.38 (particular key on the core keyboard. If) 108 484 P
+1 11 Q
+-0.35 (kc) 292.58 484 P
+2 12 Q
+-0.38 ( is not a legal keycode for the core keyboard, or if) 302.35 484 P
+1 11 Q
+-0.18 (gr) 108 471 P
+-0.18 (oup) 117.28 471 P
+2 12 Q
+-0.2 ( or) 133.78 471 P
+1 11 Q
+-0.18 (le) 149.39 471 P
+-0.18 (vel) 157.16 471 P
+2 12 Q
+-0.2 ( are out of range for the specified key,) 169.99 471 P
+1 F
+-0.2 (XkbK) 354.16 471 P
+-0.2 (e) 380.41 471 P
+-0.2 (ycodeT) 385.38 471 P
+-0.2 (oK) 418.93 471 P
+-0.2 (e) 432.51 471 P
+-0.2 (ysym) 437.48 471 P
+2 F
+-0.2 ( returns) 461.47 471 P
+5 F
+-0.43 -0.6 (NoSym-) 500.4 471 B
+-0.6 (bol) 108 458 S
+2 F
+(.) 127.8 458 T
+(To find the set of modifiers bound to a particular keysym on the core keyboard, use) 108 437 T
+1 11 Q
+(XkbK) 108 424 T
+(e) 132.06 424 T
+(ysymT) 136.61 424 T
+(oModi\336er) 163.7 424 T
+(s) 206.98 424 T
+2 12 Q
+(.) 211.26 424 T
+2 11 Q
+(unsigned) 108 403.67 T
+(int) 150.47 403.67 T
+3 F
+(XkbK) 164.84 403.67 T
+(eysymT) 193.29 403.67 T
+(oModi\336ers) 228.95 403.67 T
+2 F
+(\050) 279.67 403.67 T
+1 F
+(dpy) 283.33 403.67 T
+2 F
+(,) 298.5 403.67 T
+1 F
+( ks) 301.25 403.67 T
+2 F
+(\051) 313.16 403.67 T
+(Display *) 126 390.67 T
+1 F
+(dpy) 234 390.67 T
+2 F
+(;) 249.88 390.67 T
+(/* connection to X serv) 306 390.67 T
+(er */) 408.49 390.67 T
+(K) 126 377.67 T
+(e) 133.67 377.67 T
+(ySym) 138.39 377.67 T
+1 F
+(ks) 234 377.67 T
+2 F
+(;) 243.16 377.67 T
+(/* k) 306 377.67 T
+(e) 322.7 377.67 T
+(ysym of interest */) 327.42 377.67 T
+1 F
+(XkbK) 108 358 T
+(e) 132.06 358 T
+(ysymT) 136.61 358 T
+(oModi\336er) 163.7 358 T
+(s) 206.98 358 T
+2 12 Q
+( finds the set of modifiers currently bound to the keysym) 211.26 358 T
+1 F
+(ks) 486.9 358 T
+2 F
+( on the) 496.89 358 T
+-0.01 (core keyboard. The value returned is the mask of modifiers bound to the keysym) 108 345 P
+1 F
+-0.01 (ks) 498.06 345 P
+2 F
+-0.01 (. If no) 508.05 345 P
+(modifiers are bound to the keysym,) 108 332 T
+1 11 Q
+(XkbK) 280.98 332 T
+(e) 305.04 332 T
+(ysymT) 309.59 332 T
+(oModi\336er) 336.68 332 T
+(s) 379.96 332 T
+2 12 Q
+( returns zero; otherwise, it) 384.24 332 T
+(returns the inclusive OR of zero or more of the following:) 108 319 T
+5 F
+-0.6 (ShiftMask) 388.96 319 S
+2 F
+(,) 448.36 319 T
+5 F
+-0.6 (ControlMask) 454.36 319 S
+2 F
+(,) 526.96 319 T
+5 F
+-0.6 (LockMask) 108 306 S
+2 F
+(,) 160.8 306 T
+5 F
+-0.6 (Mod1Mask) 166.8 306 S
+2 F
+(,) 219.6 306 T
+5 F
+-0.6 (Mod2Mask) 225.6 306 S
+2 F
+(,) 278.4 306 T
+5 F
+-0.6 (Mod3Mask) 284.4 306 S
+2 F
+(,) 337.2 306 T
+5 F
+-0.6 (Mod4Mask,) 343.2 306 S
+2 F
+( and) 402.61 306 T
+5 F
+-0.6 (Mod5Mask) 425.93 306 S
+2 F
+(.) 478.73 306 T
+(Use) 108 285 T
+1 F
+(XkbLookupKeySym) 129.66 285 T
+2 F
+( to find the symbol associated with a key for a particular state.) 222.97 285 T
+2 11 Q
+(Bool) 108 264.67 T
+3 F
+(XkbLookupK) 132.15 264.67 T
+(eySym) 197.29 264.67 T
+2 F
+(\050) 228.45 264.67 T
+1 F
+(dpy) 232.11 264.67 T
+2 F
+(,) 247.28 264.67 T
+1 F
+( k) 250.03 264.67 T
+(e) 257.56 264.67 T
+(y) 262.11 264.67 T
+2 F
+(,) 266.28 264.67 T
+1 F
+( state) 269.03 264.67 T
+2 F
+(,) 292.56 264.67 T
+1 F
+( mods_rtrn) 295.31 264.67 T
+2 F
+(,) 343.89 264.67 T
+1 F
+( sym_rtrn) 346.64 264.67 T
+2 F
+(\051) 389.12 264.67 T
+(Display *) 126 251.67 T
+1 F
+(dpy) 234 251.67 T
+2 F
+(;) 249.88 251.67 T
+(/* connection to X serv) 297.75 251.67 T
+(er */) 400.24 251.67 T
+(K) 126 238.67 T
+(e) 133.67 238.67 T
+(yCode) 138.39 238.67 T
+1 F
+(k) 234 238.67 T
+(e) 238.77 238.67 T
+(y) 243.33 238.67 T
+2 F
+(;) 248.21 238.67 T
+(/* k) 297.75 238.67 T
+(e) 314.45 238.67 T
+(y for which symbols are to be found */) 319.17 238.67 T
+(unsigned int) 126 225.67 T
+1 F
+(state) 234 225.67 T
+2 F
+(;) 254.78 225.67 T
+(/* state for which symbol should be found */) 297.75 225.67 T
+(unsigned int *) 126 212.67 T
+1 F
+(mods_rtrn) 234 212.67 T
+2 F
+(;) 279.84 212.67 T
+(/* back\336lled with unconsumed modi\336ers */) 297.75 212.67 T
+(K) 126 199.67 T
+(e) 133.67 199.67 T
+(ySym *) 138.39 199.67 T
+1 F
+(sym_rtrn) 234 199.67 T
+2 F
+(;) 273.72 199.67 T
+-0.19 (/* back\336lled with symbol associated with k) 297.75 199.67 P
+-0.19 (e) 487.17 199.67 P
+-0.19 (y + state */) 491.89 199.67 P
+1 12 Q
+(XkbLookupK) 108 180 T
+(e) 170.24 180 T
+(ySym) 175.21 180 T
+2 F
+( is the equivalent of the core) 200.53 180 T
+1 F
+(XLookupK) 339.5 180 T
+(e) 390.42 180 T
+(ySym) 395.39 180 T
+2 F
+( function. For the core) 420.71 180 T
+-0.28 (keyboard, given a keycode) 108 167 P
+1 F
+-0.28 (k) 238.51 167 P
+-0.28 (e) 243.72 167 P
+-0.28 (y) 248.68 167 P
+2 F
+-0.28 ( and an Xkb state) 254.01 167 P
+1 F
+-0.28 (state) 338.93 167 P
+2 F
+-0.28 (,) 361.6 167 P
+1 F
+-0.28 (XkbLookupK) 367.32 167 P
+-0.28 (e) 429.56 167 P
+-0.28 (ySym) 434.53 167 P
+2 F
+-0.28 ( returns the sym-) 459.85 167 P
+(bol associated with the key in) 108 154 T
+1 F
+(sym_rtrn) 256.32 154 T
+2 F
+( and the list of modifiers that should still be) 299.65 154 T
+(applied in) 108 141 T
+1 F
+(mods_rtrn) 158.66 141 T
+2 F
+(. The) 208.67 141 T
+1 F
+(state) 236.33 141 T
+2 F
+( parameter is the state from a) 259 141 T
+5 F
+-0.6 (KeyPress) 401.29 141 S
+2 F
+( or) 454.09 141 T
+5 F
+-0.6 (KeyRelease) 470.09 141 S
+2 F
+(event.) 108 128 T
+1 F
+(XkbLookupK) 139.99 128 T
+(e) 202.24 128 T
+(ySym) 207.2 128 T
+2 F
+( returns) 232.52 128 T
+5 F
+-0.6 (True) 271.85 128 S
+2 F
+( if it succeeds.) 298.25 128 T
+FMENDPAGE
+%%EndPage: "89" 101
+%%Page: "90" 102
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(90) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(12 Interpreting K) 415.66 744.87 T
+(e) 497.25 744.87 T
+(y Ev) 501.97 744.87 T
+(ents) 522.28 744.87 T
+2 12 Q
+(Use) 108 712 T
+1 F
+(XkbLookupKeyBinding) 129.66 712 T
+2 F
+( to find the string bound to a key by) 240.98 712 T
+1 F
+(XRebindKeySym) 415.64 712 T
+2 F
+(.) 495.62 712 T
+1 F
+(XkbLookupKeyBinding) 108 699 T
+2 F
+( is the equivalent of the core) 219.32 699 T
+1 F
+(XLookupString) 358.3 699 T
+2 F
+( function.) 430.97 699 T
+2 11 Q
+(int) 108 678.67 T
+3 F
+(XkbLookupK) 122.37 678.67 T
+(eyBinding) 187.51 678.67 T
+2 F
+(\050) 235.19 678.67 T
+1 F
+(dpy) 238.86 678.67 T
+2 F
+(,) 254.02 678.67 T
+1 F
+( sym) 256.77 678.67 T
+2 F
+(,) 276.63 678.67 T
+1 F
+( state) 279.38 678.67 T
+2 F
+(,) 302.91 678.67 T
+1 F
+( b) 305.66 678.67 T
+(uf) 313.69 678.67 T
+2 F
+(,) 322.25 678.67 T
+1 F
+( nbytes) 325 678.67 T
+2 F
+(,) 355.85 678.67 T
+1 F
+( e) 358.6 678.67 T
+(xtr) 366.02 678.67 T
+(a_rtrn) 378.07 678.67 T
+2 F
+(\051) 406.19 678.67 T
+(Display *) 126 665.67 T
+1 F
+(dpy) 234 665.67 T
+2 F
+(;) 249.88 665.67 T
+(/* connection to serv) 306 665.67 T
+(er */) 397.8 665.67 T
+(K) 126 652.67 T
+(e) 133.67 652.67 T
+(ySym) 138.39 652.67 T
+1 F
+(sym) 234 652.67 T
+2 F
+(;) 251.1 652.67 T
+(/* symbol to be look) 306 652.67 T
+(ed up */) 396.34 652.67 T
+(unsigned int) 126 639.67 T
+1 F
+(state) 234 639.67 T
+2 F
+(;) 254.78 639.67 T
+(/* state for which string is to be look) 306 639.67 T
+(ed up */) 467.22 639.67 T
+(char *) 126 626.67 T
+1 F
+(b) 234 626.67 T
+(uf) 239.28 626.67 T
+2 F
+(;) 247.84 626.67 T
+(/* b) 306 626.67 T
+(uf) 322.59 626.67 T
+(fer into which returned string is written */) 331.48 626.67 T
+(int) 126 613.67 T
+1 F
+(nbytes) 234 613.67 T
+2 F
+(;) 262.11 613.67 T
+(/* size of b) 306 613.67 T
+(uf) 354.36 613.67 T
+(fer in bytes */) 363.24 613.67 T
+(int *) 126 600.67 T
+1 F
+(e) 234 600.67 T
+(xtr) 238.66 600.67 T
+(a_rtrn) 250.72 600.67 T
+2 F
+(;) 278.84 600.67 T
+(/* back\336lled with number bytes o) 306 600.67 T
+(v) 453.41 600.67 T
+(er\337o) 458.75 600.67 T
+(w */) 478.63 600.67 T
+1 12 Q
+(XRebindK) 108 581 T
+(e) 156.91 581 T
+(ysym) 161.88 581 T
+2 F
+( binds an ASCII string to a specified keysym, so that the string and key-) 185.87 581 T
+(sym are returned when the key is pressed and a specified list of modifiers are also being) 108 568 T
+(held down.) 108 555 T
+1 F
+(XkbLookupK) 164.33 555 T
+(e) 226.57 555 T
+(yBinding) 231.54 555 T
+2 F
+( returns in) 274.87 555 T
+1 F
+(b) 326.53 555 T
+(uf) 332.29 555 T
+2 F
+( the string associated with the keysym) 341.63 555 T
+1 F
+(sym) 108 542 T
+2 F
+( and modifier state) 126.66 542 T
+1 F
+(state) 219.31 542 T
+2 F
+(.) 241.98 542 T
+1 F
+(b) 247.98 542 T
+(uf) 253.74 542 T
+2 F
+( is) 263.08 542 T
+5 F
+-0.6 (NULL) 277.08 542 S
+2 F
+( terminated unless there\325s an overflow. If the) 303.48 542 T
+(string returned is larger than) 108 529 T
+1 F
+(nbytes) 246.97 529 T
+2 F
+(, a count of bytes that does not fit into the buffer is) 277.63 529 T
+(returned in) 108 516 T
+1 F
+(extra_rtrn) 163.32 516 T
+2 F
+(.) 212.65 516 T
+1 F
+(XkbTranslateKeySym) 218.65 516 T
+2 F
+( returns the number of bytes that it placed) 321.97 516 T
+(into) 108 503 T
+1 F
+(b) 129.67 503 T
+(uf) 135.43 503 T
+2 F
+(.) 144.77 503 T
+(To find the string and symbol associated with a keysym for a given keyboard state, use) 108 482 T
+1 F
+(XkbTranslateKeySym) 108 469 T
+2 F
+(.) 211.32 469 T
+2 11 Q
+(int) 108 448.67 T
+3 F
+(XkbT) 122.37 448.67 T
+(ranslateK) 149.06 448.67 T
+(eySym) 195.23 448.67 T
+2 F
+(\050) 226.39 448.67 T
+1 F
+(dpy) 230.06 448.67 T
+2 F
+(,) 245.23 448.67 T
+1 F
+( sym_inout) 247.98 448.67 T
+2 F
+(,) 295.95 448.67 T
+1 F
+( mods) 298.7 448.67 T
+2 F
+(,) 324.67 448.67 T
+1 F
+( b) 327.42 448.67 T
+(uf) 335.45 448.67 T
+2 F
+(,) 344.01 448.67 T
+1 F
+( nbytes) 346.76 448.67 T
+2 F
+(,) 377.61 448.67 T
+1 F
+(e) 383.11 448.67 T
+(xtr) 387.77 448.67 T
+(a_rtrn) 399.83 448.67 T
+2 F
+(\051) 427.95 448.67 T
+(Display *) 126 435.67 T
+1 F
+(dpy) 234 435.67 T
+2 F
+(;) 249.88 435.67 T
+(/* connection to X serv) 306 435.67 T
+(er */) 408.49 435.67 T
+(K) 126 422.67 T
+(e) 133.67 422.67 T
+(ySym *) 138.39 422.67 T
+1 F
+(sym_inout) 234 422.67 T
+2 F
+(;) 279.22 422.67 T
+(/* symbol to be translated; result of translation */) 306 422.67 T
+(unsigned int) 126 409.67 T
+1 F
+(mods) 234 409.67 T
+2 F
+(;) 257.22 409.67 T
+(/* modi\336ers to apply to) 306 409.67 T
+1 F
+(sym_inout) 411.42 409.67 T
+2 F
+( */) 456.64 409.67 T
+(char *) 126 396.67 T
+1 F
+(b) 234 396.67 T
+(uf) 239.28 396.67 T
+2 F
+(;) 247.84 396.67 T
+(/* b) 306 396.67 T
+(uf) 322.59 396.67 T
+(fer into which returned string is written */) 331.48 396.67 T
+(int) 126 383.67 T
+1 F
+(nbytes) 234 383.67 T
+2 F
+(;) 262.11 383.67 T
+(/* size of b) 306 383.67 T
+(uf) 354.36 383.67 T
+(fer in bytes */) 363.24 383.67 T
+(int *) 126 370.67 T
+1 F
+(e) 234 370.67 T
+(xtr) 238.66 370.67 T
+(a_rtrn) 250.72 370.67 T
+2 F
+(;) 278.84 370.67 T
+(/* number of bytes o) 306 370.67 T
+(v) 396.88 370.67 T
+(er\337o) 402.22 370.67 T
+(w*/) 422.11 370.67 T
+1 12 Q
+(XkbT) 108 351 T
+(r) 132.67 351 T
+(anslateK) 137.16 351 T
+(e) 179.41 351 T
+(ySym) 184.38 351 T
+2 F
+( applies the transformations specified in) 209.7 351 T
+1 F
+(mods) 404.34 351 T
+2 F
+( to the symbol speci-) 429.67 351 T
+(fied by) 108 338 T
+1 F
+(sym_inout) 144.66 338 T
+2 F
+(. It returns in) 193.99 338 T
+1 F
+(b) 258.98 338 T
+(uf) 264.74 338 T
+2 F
+( the string, if any, associated with the keysym for the) 274.08 338 T
+(current locale. If the transformations in) 108 325 T
+1 F
+(mods) 298.96 325 T
+2 F
+( changes the keysym,) 324.29 325 T
+1 F
+(sym_inout) 429.94 325 T
+2 F
+( is updated) 479.27 325 T
+(accordingly. If the string returned is larger than) 108 312 T
+1 F
+(nbytes) 338.28 312 T
+2 F
+(, a count of bytes that does not fit) 368.94 312 T
+-0.2 (into the buffer is returned in) 108 299 P
+1 F
+-0.2 (extra_rtrn) 244.77 299 P
+2 F
+-0.2 (.) 294.11 299 P
+1 F
+-0.2 (XkbTranslateKeySym) 299.91 299 P
+2 F
+-0.2 ( returns the number of bytes) 403.23 299 P
+(it placed into) 108 286 T
+1 F
+(b) 173.66 286 T
+(uf) 179.42 286 T
+2 F
+(.) 188.76 286 T
+(To update the keyboard description that is internal to the X library, use) 108 265 T
+1 F
+(XkbRefr) 451.28 265 T
+(eshK) 490.16 265 T
+(e) 513.74 265 T
+(y-) 518.71 265 T
+(boar) 108 252 T
+(dMapping) 130.22 252 T
+2 F
+(.) 179.56 252 T
+2 11 Q
+(Status) 108 231.67 T
+3 F
+(XkbRefr) 137.65 231.67 T
+(eshK) 178.99 231.67 T
+(eyboardMapping) 202.56 231.67 T
+2 F
+(\050) 283.85 231.67 T
+1 F
+(e) 287.51 231.67 T
+(vent\051) 292.23 231.67 T
+2 F
+(XkbMapNotifyEv) 126 218.67 T
+(ent *) 205.88 218.67 T
+1 F
+(e) 234 218.67 T
+(vent) 238.72 218.67 T
+2 F
+(;) 257.05 218.67 T
+(/* e) 306 218.67 T
+(v) 321.92 218.67 T
+(ent initiating remapping */) 327.25 218.67 T
+1 12 Q
+(XkbRefr) 108 199 T
+(eshK) 146.88 199 T
+(e) 170.46 199 T
+(yboar) 175.43 199 T
+(dMapping) 202.98 199 T
+2 F
+( is the Xkb equivalent of the core) 252.31 199 T
+1 F
+(XRefr) 414.95 199 T
+(eshK) 442.5 199 T
+(e) 466.08 199 T
+(yboar) 471.05 199 T
+(dMap-) 498.6 199 T
+(ping) 108 186 T
+2 F
+(function. It requests that the X server send the current key mapping information to) 132.34 186 T
+(this client. A client usually invokes) 108 173 T
+1 F
+(XkbRefr) 280.33 173 T
+(eshK) 319.21 173 T
+(e) 342.79 173 T
+(yboar) 347.76 173 T
+(dMapping) 375.31 173 T
+2 F
+( after receiving an) 424.64 173 T
+5 F
+-0.25 -0.6 (XkbMapNotify) 108 160 B
+2 F
+-0.11 ( event.) 187.2 160 P
+1 F
+-0.11 (XkbRefr) 221.97 160 P
+-0.11 (eshK) 260.85 160 P
+-0.11 (e) 284.43 160 P
+-0.11 (yboar) 289.4 160 P
+-0.11 (dMapping) 316.95 160 P
+2 F
+-0.11 ( returns) 366.28 160 P
+5 F
+-0.25 -0.6 (Success) 405.38 160 B
+2 F
+-0.11 ( if it succeeds and) 451.58 160 P
+5 F
+-0.6 (BadMatch) 108 147 S
+2 F
+( if the event is not an Xkb event.) 160.8 147 T
+(The) 108 126 T
+5 F
+-0.6 (XkbMapNotify) 129.66 126 S
+2 F
+( event can be generated when some client calls) 208.86 126 T
+1 F
+(XkbSetMap) 436.46 126 T
+2 F
+(,) 491.79 126 T
+1 F
+-0.32 (XkbChang) 108 113 P
+-0.32 (eMap) 158.54 113 P
+2 F
+-0.32 (,) 185.87 113 P
+1 F
+-0.32 (XkbGetK) 191.54 113 P
+-0.32 (e) 235.12 113 P
+-0.32 (yboar) 240.08 113 P
+-0.32 (dByName) 267.64 113 P
+2 F
+-0.32 (, or any of the standard X library functions that) 314.29 113 P
+(change the keyboard mapping or modifier mapping.) 108 100 T
+FMENDPAGE
+%%EndPage: "90" 102
+%%Page: "91" 103
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(91) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(12 Interpreting K) 415.66 744.87 T
+(e) 497.25 744.87 T
+(y Ev) 501.97 744.87 T
+(ents) 522.28 744.87 T
+2 12 Q
+(To translate a keycode to a key symbol and modifiers, use) 108 712 T
+1 F
+(XkbTranslateKeyCode) 389.95 712 T
+2 F
+(.) 498.61 712 T
+2 11 Q
+(Booll) 108 691.67 T
+3 F
+(XkbT) 135.2 691.67 T
+(ranslateK) 161.9 691.67 T
+(eyCode) 208.07 691.67 T
+2 F
+(\050) 242.89 691.67 T
+1 F
+(xkb, k) 246.56 691.67 T
+(e) 272.1 691.67 T
+(y) 276.65 691.67 T
+(, mods, mods_rtrn, k) 280.93 691.67 T
+(e) 371.26 691.67 T
+(ysym_rtrn\051) 375.82 691.67 T
+2 F
+(XkbDescPtr) 126 678.67 T
+1 F
+(xkb) 234 678.67 T
+2 F
+(;) 249.27 678.67 T
+(/* k) 306 678.67 T
+(e) 322.7 678.67 T
+(yboard description to use for translation */) 327.42 678.67 T
+(K) 126 665.67 T
+(e) 133.67 665.67 T
+(yCode) 138.39 665.67 T
+1 F
+(k) 234 665.67 T
+(e) 238.77 665.67 T
+(y) 243.33 665.67 T
+2 F
+(;) 248.21 665.67 T
+(/* k) 306 665.67 T
+(e) 322.7 665.67 T
+(ycode to translate */) 327.42 665.67 T
+(unsigned int) 126 652.67 T
+1 F
+(mods) 234 652.67 T
+2 F
+(;) 257.22 652.67 T
+(/* modi\336ers to apply when translating) 306 652.67 T
+1 F
+(k) 475.88 652.67 T
+(e) 480.66 652.67 T
+(y) 485.21 652.67 T
+2 F
+( */) 490.1 652.67 T
+(unsigned int *) 126 639.67 T
+1 F
+(mods_rtrn) 234 639.67 T
+2 F
+(;) 279.84 639.67 T
+(/* back\336lled with unconsumed modi\336ers */) 306 639.67 T
+(K) 126 626.67 T
+(e) 133.67 626.67 T
+(ySym *) 138.39 626.67 T
+1 F
+(k) 234 626.67 T
+(e) 238.77 626.67 T
+(ysym_rtrn) 243.33 626.67 T
+2 F
+(;) 287.93 626.67 T
+(/* k) 306 626.67 T
+(e) 322.7 626.67 T
+(ysym resulting from translation */) 327.42 626.67 T
+1 12 Q
+(mods_rtrn) 108 607 T
+2 11 Q
+( is back\336lled with the modi\336ers consumed by the translation process.) 158 607 T
+1 12 Q
+(mods) 465.01 607 T
+2 F
+( is a bit-) 490.34 607 T
+(wise inclusive OR of the legal modifier masks:) 108 594 T
+5 F
+-0.6 (ShiftMask) 336.65 594 S
+2 F
+(,) 396.05 594 T
+5 F
+-0.6 (LockMask) 402.05 594 S
+2 F
+(,) 454.85 594 T
+5 F
+-0.6 (ControlMask) 460.85 594 S
+2 F
+(,) 533.45 594 T
+5 F
+-0.6 (Mod1Mask) 108 581 S
+2 F
+(,) 160.8 581 T
+5 F
+-0.6 (Mod2Mask) 166.8 581 S
+2 F
+(,) 219.6 581 T
+5 F
+-0.6 (Mod3Mask) 225.6 581 S
+2 F
+(,) 278.4 581 T
+5 F
+-0.6 (Mod4Mask) 284.4 581 S
+2 F
+(,) 337.2 581 T
+5 F
+-0.6 (Mod5Mask) 343.2 581 S
+2 11 Q
+(.The) 396.01 581 T
+5 12 Q
+-0.6 (AlwaysConsume-) 418.61 581 S
+-0.6 (ShiftAndLock) 108 568 S
+2 11 Q
+( library control \050see section 11.1.3\051, if enabled, causes) 187.2 568 T
+1 12 Q
+(XkbTranslateKeyCode) 427.62 568 T
+2 11 Q
+(to consume shift and lock.) 108 555 T
+1 12 Q
+( XkbTranslateKeyCode) 223.8 555 T
+2 F
+( returns) 335.46 555 T
+5 F
+-0.6 (True) 374.78 555 S
+2 F
+( if the translation resulted in) 401.18 555 T
+(a keysym, and) 108 542 T
+5 F
+-0.6 (False) 179.99 542 S
+2 F
+( if it resulted in) 212.99 542 T
+5 F
+-0.6 (NoSymbol) 289.32 542 S
+2 F
+(.) 342.12 542 T
+FMENDPAGE
+%%EndPage: "91" 103
+%%Page: "92" 104
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(92) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+0 14 Q
+(13) 72 710.67 T
+(K) 108 710.67 T
+(e) 117.9 710.67 T
+(yboar) 125.47 710.67 T
+(d Geometr) 163.31 710.67 T
+(y) 233.47 710.67 T
+2 12 Q
+-0.17 (The Xkb description of a keyboard includes an optional) 108 688 P
+1 F
+-0.17 (keyboard geometry) 376.73 688 P
+2 F
+-0.17 (that describes) 471.69 688 P
+(the physical appearance of the keyboard. Keyboard geometry describes the shape, loca-) 108 675 T
+(tion, and color of all keyboard keys or other visible keyboard components such as indica-) 108 662 T
+(tors. The information contained in a keyboard geometry is sufficient to allow a client) 108 649 T
+(program to draw an accurate two-dimensional image of the keyboard.) 108 636 T
+(You can retrieve a keyboard geometry from an X server that supports Xkb, or you can) 108 615 T
+(allocate it from scratch and initialize it in a client program. The keyboard geometry need) 108 602 T
+-0.06 (not have any correspondence with the physical keyboard that is connected to the X server.) 108 589 P
+-0.28 (Geometry measurements are specified in) 108 568 P
+2 9.6 Q
+-0.22 (mm) 305.57 572.8 P
+2 12 Q
+-0.28 (/) 320.51 568 P
+2 9.6 Q
+-0.22 (10) 323.84 565 P
+2 12 Q
+-0.28 ( units. The origin \0500,0\051 is in the top left cor-) 333.44 568 P
+-0.41 (ner of the keyboard image. A component\325s own origin is also its upper left corner. In some) 108 555 P
+-0.41 (cases a component needs to be drawn rotated. For example, a special keyboard may have a) 108 542 P
+(section of keys arranged in rows in a rectangular area, but the entire rectangle may not be) 108 529 T
+(in alignment with the rest of the keyboard, and instead, it is rotated from horizontal by) 108 516 T
+(30) 108 503 T
+2 9.6 Q
+(o) 120 507.8 T
+2 12 Q
+(. Rotation for a geometry object is specified in) 124.8 503 T
+2 9.6 Q
+(1) 350.77 507.8 T
+2 12 Q
+(/) 355.57 503 T
+2 9.6 Q
+(10) 358.91 500 T
+(o) 370.91 507.8 T
+2 12 Q
+(increments about its origin. An) 378.11 503 T
+(example of a keyboard with rotated sections is shown in Figure 13.1.) 108 490 T
+3 F
+(Figur) 212.64 330.25 T
+(e 131 Rotated K) 241.09 330.25 T
+(eyboard Sections) 326.11 330.25 T
+2 F
+(Some geometry components include a) 108 302.25 T
+1 F
+(priority) 294.31 302.25 T
+2 F
+(, which indicates the order in which over-) 330.98 302.25 T
+(lapping objects should be drawn. Objects should be drawn in order from highest priority) 108 289.25 T
+(\0500\051 to lowest \050255\051.) 108 276.25 T
+(The keyboard geometry\325s top-level) 108 255.25 T
+2 11 Q
+( description is stored in a) 276.96 255.25 T
+5 12 Q
+-0.6 (XkbGeometryRec) 390.01 255.25 S
+2 11 Q
+( structure.) 482.41 255.25 T
+2 12 Q
+(This structure contains three types of information:) 108 242.25 T
+(1.) 126 221.25 T
+(Lists of items, not used to draw the basic keyboard, but indexed by the geometry) 144 221.25 T
+(descriptions that comprise the entire keyboard geometry \050colors, geometry proper-) 144 208.25 T
+(ties, key aliases, shapes\051) 144 195.25 T
+(2.) 126 180.25 T
+(A number of singleton items that describe the keyboard as a whole \050keyboard) 144 180.25 T
+(name, width and height, a color for the keyboard as a whole, and a color for key-) 144 167.25 T
+(board key labels\051) 144 154.25 T
+(3.) 126 139.25 T
+(A list of the keyboard\325s sections and nonkey doodads) 144 139.25 T
+(The top-level geometry is described in more detail in the following.) 108 120.25 T
+-0.09 (The lists of items used by components of the keyboard geometry description is as follows:) 108 99.25 P
+114.19 351.25 497.81 486 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+277.63 396.56 342.43 472.16 R
+7 X
+0 0 0 1 0 0 0 K
+V
+1 H
+0 Z
+0 X
+N
+281.23 457.76 293.83 468.56 R
+7 X
+V
+0 X
+N
+295.63 457.76 308.23 468.56 R
+7 X
+V
+0 X
+N
+310.03 457.76 322.63 468.56 R
+7 X
+V
+0 X
+N
+326.59 457.76 338.83 468.56 R
+7 X
+V
+0 X
+N
+281.23 443.36 293.83 454.16 R
+7 X
+V
+0 X
+N
+295.63 443.36 308.23 454.16 R
+7 X
+V
+0 X
+N
+310.03 443.36 322.63 454.16 R
+7 X
+V
+0 X
+N
+326.59 429.32 338.83 453.8 R
+7 X
+V
+0 X
+N
+281.23 428.96 293.83 439.76 R
+7 X
+V
+0 X
+N
+295.63 428.96 308.23 439.76 R
+7 X
+V
+0 X
+N
+310.03 428.96 322.63 439.76 R
+7 X
+V
+0 X
+N
+281.77 400.16 307.69 410.96 R
+7 X
+V
+0 X
+N
+310.03 400.16 322.63 410.96 R
+7 X
+V
+0 X
+N
+281.23 414.56 293.83 425.36 R
+7 X
+V
+0 X
+N
+295.63 414.56 308.23 425.36 R
+7 X
+V
+0 X
+N
+310.03 414.56 322.63 425.36 R
+7 X
+V
+0 X
+N
+326.59 400.52 338.83 425 R
+7 X
+V
+0 X
+N
+252.8 441.23 243.35 448.42 236.55 438.97 246 431.79 4 Y
+N
+232.83 438.81 223.38 445.99 216.57 436.54 226.02 429.36 4 Y
+N
+240.84 450.05 231.39 457.24 224.58 447.79 234.03 440.61 4 Y
+N
+244.35 430.08 234.9 437.26 228.09 427.81 237.54 420.63 4 Y
+N
+256.05 421.26 246.6 428.44 239.79 418.99 249.24 411.81 4 Y
+N
+264.05 432.51 254.6 439.69 247.8 430.24 257.25 423.06 4 Y
+N
+267.75 432.52 249.75 408.07 212.81 436.01 230.62 460.64 4 Y
+N
+368.93 441.23 378.38 448.42 385.18 438.97 375.73 431.79 4 Y
+N
+388.91 438.81 398.36 445.99 405.17 436.54 395.71 429.36 4 Y
+N
+380.9 450.05 390.35 457.24 397.15 447.79 387.7 440.61 4 Y
+N
+377.39 430.08 386.84 437.26 393.64 427.81 384.2 420.63 4 Y
+N
+365.69 421.26 375.14 428.44 381.95 418.99 372.49 411.81 4 Y
+N
+357.68 432.51 367.13 439.69 373.93 430.24 364.48 423.06 4 Y
+N
+353.99 432.52 371.99 408.07 408.92 436.01 391.11 460.64 4 Y
+N
+2 12 Q
+(Rotated Sections) 269.86 361.11 T
+257.36 393.35 255.05 392.07 252.88 401.41 259.67 394.64 4 Y
+N
+257.36 393.35 255.05 392.07 252.88 401.41 259.67 394.64 4 Y
+V
+267 376 257.6 392.92 2 L
+N
+362.64 393.35 360.33 394.64 367.12 401.41 364.95 392.07 4 Y
+N
+362.64 393.35 360.33 394.64 367.12 401.41 364.95 392.07 4 Y
+V
+353 376 362.4 392.92 2 L
+N
+204.19 387 420.19 477 R
+0.5 H
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "92" 104
+%%Page: "93" 105
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(93) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+(\245) 126 712.67 T
+-0.13 (The top-le) 139.68 712.67 P
+-0.13 (v) 184.79 712.67 P
+-0.13 (el k) 190.12 712.67 P
+-0.13 (e) 206.07 712.67 P
+-0.13 (yboard geometry description includes a list of up to) 210.79 712.67 P
+5 12 Q
+-0.32 -0.6 (MaxColors) 439.04 712.67 B
+2 11 Q
+-0.13 ( \05032\051) 498.44 712.67 P
+1 12 Q
+(color names) 139.68 700.67 T
+2 11 Q
+(. A color name is a string whose interpretation is not speci\336ed by Xkb) 198.67 700.67 T
+(.) 506.2 700.67 T
+(The) 139.68 688.67 T
+5 12 Q
+-0.6 (XkbColorRec) 159.54 688.67 S
+2 11 Q
+( structure pro) 232.14 688.67 T
+(vides a \336eld for this name as well as a pix) 290.62 688.67 T
+(el \336eld.) 474.38 688.67 T
+(The pix) 139.68 676.67 T
+(el \336eld is a con) 173.43 676.67 T
+(v) 239.59 676.67 T
+(enient place for an application to store a pix) 244.93 676.67 T
+(el v) 437.83 676.67 T
+(alue or color) 453.75 676.67 T
+(de\336nition, if it needs to. All other geometry data structures refer to colors using their) 139.68 664.67 T
+(indices in this global list.) 139.68 652.67 T
+(\245) 126 640.67 T
+(The top-le) 139.68 640.67 T
+(v) 184.92 640.67 T
+(el k) 190.26 640.67 T
+(e) 206.34 640.67 T
+(yboard geometry description includes a list of) 211.06 640.67 T
+1 12 Q
+(g) 415.45 640.67 T
+(eometry pr) 421.33 640.67 T
+(operties) 473.11 640.67 T
+2 11 Q
+(.) 511.77 640.67 T
+(A geometry property associates an arbitrary string with an equally arbitrary name.) 139.68 628.67 T
+(Geometry properties can be used to pro) 139.68 616.67 T
+(vide hints to programs that display images of) 313.03 616.67 T
+(k) 139.68 604.67 T
+(e) 145.07 604.67 T
+(yboards, b) 149.79 604.67 T
+(ut the) 195.4 604.67 T
+(y are not interpreted by Xkb) 219.98 604.67 T
+(. No other geometry structures refer to) 343.87 604.67 T
+(geometry properties. As an e) 139.68 592.67 T
+(xample of a possible use of) 266.29 592.67 T
+1 12 Q
+(pr) 389.11 592.67 T
+(operties) 399.23 592.67 T
+2 11 Q
+(, consider the) 437.9 592.67 T
+(pause/break k) 139.68 580.67 T
+(e) 200.36 580.67 T
+(y on most PC k) 205.07 580.67 T
+(e) 272.81 580.67 T
+(yboards: the \322break\323 symbol is usually on the front of) 277.53 580.67 T
+(the k) 139.68 568.67 T
+(e) 161.26 568.67 T
+(y and is often a dif) 165.98 568.67 T
+(ferent color) 247.89 568.67 T
+(. A program might set a property to:) 298.29 568.67 T
+(LBL_P) 139.68 556.67 T
+(A) 171.06 556.67 T
+(US = \322{P) 178.4 556.67 T
+(ause/top/black,Break/front/red}\323) 220.28 556.67 T
+(and use the property information to dra) 139.68 543.67 T
+(w the k) 311.82 543.67 T
+(e) 344.09 543.67 T
+(y with a front label as well as a top) 348.81 543.67 T
+(label.) 139.68 530.67 T
+(\245) 126 517.67 T
+-0.17 (The top-le) 139.68 517.67 P
+-0.17 (v) 184.75 517.67 P
+-0.17 (el k) 190.09 517.67 P
+-0.17 (e) 206 517.67 P
+-0.17 (yboard geometry description includes a list of) 210.72 517.67 P
+1 F
+-0.17 (key aliases) 413.93 517.67 P
+2 F
+-0.17 ( \050see Chapter) 461.72 517.67 P
+(18\051. K) 139.68 505.67 T
+(e) 167.51 505.67 T
+(y aliases allo) 172.23 505.67 T
+(w the k) 228.78 505.67 T
+(e) 261.05 505.67 T
+(yboard layout designer to assign multiple k) 265.77 505.67 T
+(e) 455.71 505.67 T
+(y names to a) 460.43 505.67 T
+(single k) 139.68 493.67 T
+(e) 174.1 493.67 T
+(y) 178.82 493.67 T
+(.) 183.6 493.67 T
+0 12 Q
+(Note) 126 475.67 T
+2 11 Q
+-0.19 (K) 162 475.67 P
+-0.19 (e) 169.67 475.67 P
+-0.19 (y aliases de\336ned in the geometry component of a k) 174.39 475.67 P
+-0.19 (e) 396.47 475.67 P
+-0.19 (yboard mapping o) 401.19 475.67 P
+-0.19 (v) 480.68 475.67 P
+-0.19 (erride those) 486.02 475.67 P
+(de\336ned in the k) 162 463.67 T
+(e) 230.02 463.67 T
+(ycodes component of the serv) 234.74 463.67 T
+(er database, which are stored in the) 365.94 463.67 T
+5 12 Q
+-0.6 (XkbNamesRec) 162 451.67 S
+2 11 Q
+( \050) 234.6 451.67 T
+1 12 Q
+(xkb->names) 241.01 451.67 T
+2 11 Q
+(\051. Therefore, consider the k) 300.43 451.67 T
+(e) 420.05 451.67 T
+(y aliases de\336ned by the) 424.77 451.67 T
+(geometry before considering k) 162 439.67 T
+(e) 296.61 439.67 T
+(y aliases supplied by the k) 301.33 439.67 T
+(e) 417.01 439.67 T
+(ycodes.) 421.73 439.67 T
+(\245) 126 419.67 T
+-0.06 (The top-le) 139.68 419.67 P
+-0.06 (v) 184.87 419.67 P
+-0.06 (el k) 190.2 419.67 P
+-0.06 (e) 206.23 419.67 P
+-0.06 (yboard geometry description includes a list of) 210.95 419.67 P
+1 12 Q
+-0.06 (shapes) 414.94 419.67 P
+2 11 Q
+-0.06 (; other k) 447.6 419.67 P
+-0.06 (e) 484.04 419.67 P
+-0.06 (yboard) 488.76 419.67 P
+(components refer to shapes by their inde) 139.68 407.67 T
+(x in this list. A shape consists of an arbitrary) 317.92 407.67 T
+(name of type Atom and one or more closed-polygon) 139.68 395.67 T
+1 12 Q
+(outlines) 372.78 395.67 T
+2 11 Q
+(. All points in an outline) 410.79 395.67 T
+(are speci\336ed relati) 139.68 383.67 T
+(v) 220.05 383.67 T
+(e to the origin of its enclosing shape, that is, whiche) 225.38 383.67 T
+(v) 453.64 383.67 T
+(er shape that) 458.98 383.67 T
+(contains this outline in its list of outlines. One outline is the primary outline. The pri-) 139.68 371.67 T
+(mary outline is by def) 139.68 359.67 T
+(ault the \336rst outline, or it can be optionally speci\336ed by the) 236.12 359.67 T
+1 12 Q
+(pri-) 498.58 359.67 T
+(mary) 139.68 347.67 T
+2 11 Q
+( \336eld in the) 164.34 347.67 T
+5 12 Q
+-0.6 (XkbShapeRec) 216.9 347.67 S
+2 11 Q
+( structure. A k) 289.5 347.67 T
+(e) 352.32 347.67 T
+(yboard display application can) 357.04 347.67 T
+(generate a simpler b) 139.68 335.67 T
+(ut still accurate k) 228.35 335.67 T
+(e) 303.7 335.67 T
+(yboard image by displaying only the primary) 308.42 335.67 T
+(outlines for each shape. Nonrectangular k) 139.68 323.67 T
+(e) 322.85 323.67 T
+(ys must include a rectangular) 327.57 323.67 T
+1 12 Q
+(appr) 459.24 323.67 T
+(oxima-) 481.37 323.67 T
+(tion) 139.68 311.67 T
+2 11 Q
+( as one of the outlines associated with the shape. The approximation is not nor-) 158.35 311.67 T
+(mally displayed b) 139.68 299.67 T
+(ut can be used by v) 217.68 299.67 T
+(ery simple k) 302.14 299.67 T
+(e) 356.41 299.67 T
+(yboard display applications to) 361.13 299.67 T
+(generate a recognizable b) 139.68 287.67 T
+(ut de) 251.55 287.67 T
+(graded image of the k) 273.08 287.67 T
+(e) 368.89 287.67 T
+(yboard.) 373.61 287.67 T
+2 12 Q
+-0.6 (The) 108 269 P
+5 F
+-1.31 -0.6 (XkbGeometryRec) 129.06 269 B
+2 F
+-0.6 ( top-level geometry description contains the following information) 221.47 269 P
+(that pertains to the keyboard as a whole:) 108 256 T
+2 11 Q
+(\245) 126 235.67 T
+(A) 139.68 235.67 T
+1 12 Q
+(k) 150.37 235.67 T
+(e) 155.58 235.67 T
+(yboar) 160.55 235.67 T
+(d symbolic name) 188.1 235.67 T
+2 11 Q
+( of type Atom to help users identify the k) 268.75 235.67 T
+(e) 449.82 235.67 T
+(yboard.) 454.54 235.67 T
+(\245) 126 223.67 T
+(The) 139.68 223.67 T
+1 12 Q
+(width) 159.54 223.67 T
+2 11 Q
+( and) 186.21 223.67 T
+1 12 Q
+(height) 207.6 223.67 T
+2 11 Q
+( of the k) 237.6 223.67 T
+(e) 273.84 223.67 T
+(yboard, in) 278.56 223.67 T
+2 9.6 Q
+(mm) 325.91 228.47 T
+2 12 Q
+(/) 340.85 223.67 T
+2 9.6 Q
+(10) 344.19 220.67 T
+2 11 Q
+(. F) 353.79 223.67 T
+(or nonrectangular k) 365.24 223.67 T
+(e) 451.27 223.67 T
+(yboards, the) 455.99 223.67 T
+(width and height describe the smallest bounding box that encloses the outline of the) 139.68 211.67 T
+(k) 139.68 199.67 T
+(e) 145.07 199.67 T
+(yboard.) 149.79 199.67 T
+(\245) 126 187.67 T
+(The) 139.68 187.67 T
+1 12 Q
+( base color) 156.79 187.67 T
+2 11 Q
+( of the k) 210.11 187.67 T
+(e) 246.36 187.67 T
+(yboard is the predominant color on the k) 251.08 187.67 T
+(e) 429.7 187.67 T
+(yboard and is used) 434.41 187.67 T
+(as the def) 139.68 175.67 T
+(ault color for an) 181.72 175.67 T
+(y components whose color is not e) 252.12 175.67 T
+(xplicitly speci\336ed.) 404.11 175.67 T
+(\245) 126 163.67 T
+(The) 139.68 163.67 T
+1 12 Q
+(label color) 159.54 163.67 T
+2 11 Q
+( is the color used to dra) 211.87 163.67 T
+(w the labels on most of the k) 314.35 163.67 T
+(e) 441.04 163.67 T
+(yboard k) 445.76 163.67 T
+(e) 484.45 163.67 T
+(ys.) 489.17 163.67 T
+(\245) 126 151.67 T
+-0.33 (The) 139.68 151.67 P
+1 12 Q
+-0.36 (label font) 159.2 151.67 P
+2 11 Q
+-0.33 ( is a string that describes the font used to dra) 204.51 151.67 P
+-0.33 (w labels on most k) 397.16 151.67 P
+-0.33 (e) 478.22 151.67 P
+-0.33 (ys; label) 482.94 151.67 P
+(fonts are arbitrary strings, because Xkb does not specify the format or name space for) 139.68 139.67 T
+(font names.) 139.68 127.67 T
+2 12 Q
+-0.45 (The keyboard is subdivided into named) 108 109 P
+1 F
+-0.45 (sections) 297.96 109 P
+2 F
+-0.45 ( of related keys and) 336.62 109 P
+1 F
+-0.45 (doodads) 431.35 109 P
+2 F
+-0.45 (. The sections) 472.02 109 P
+(and doodads on the keyboard are listed in the) 108 96 T
+5 F
+-0.6 (XkbGeometryRec) 328.3 96 S
+2 F
+( top-level keyboard) 420.7 96 T
+-0.1 (geometry description. A) 108 83 P
+1 F
+-0.1 (section) 227.02 83 P
+2 F
+-0.1 ( is composed of keys that are physically together and logi-) 261.02 83 P
+FMENDPAGE
+%%EndPage: "93" 105
+%%Page: "94" 106
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(94) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(cally related. Figure 13.2 shows a keyboard that is divided into four sections. A) 108 712 T
+1 F
+(doodad) 492.29 712 T
+2 F
+(describes some visible aspect of the keyboard that is not a key and is not a section.) 108 699 T
+3 F
+(Figur) 206.12 497 T
+(e 13.2 K) 234.57 497 T
+(eyboard with F) 278.93 497 T
+(our Sections) 356.63 497 T
+0 F
+(13.1) 72 469 T
+(Shapes and Outlines) 108 469 T
+2 F
+-0.22 (A) 108 449 P
+1 F
+-0.22 (shape) 119.44 449 P
+2 F
+-0.22 (, used to draw keyboard components and stored in a) 147.44 449 P
+5 F
+-0.49 -0.6 (XkbShapeRec) 397.52 449 B
+2 F
+-0.22 ( structure, has:) 470.12 449 P
+2 11 Q
+(\245) 126 428.67 T
+(An arbitrary name of type Atom.) 139.68 428.67 T
+(\245) 126 416.67 T
+(Bounds \050tw) 139.68 416.67 T
+(o x and y coordinates\051 that describe the corners of a rectangle containing) 190.6 416.67 T
+(the shape\325) 139.68 404.67 T
+(s top surf) 183.98 404.67 T
+(ace outline.) 224.81 404.67 T
+(\245) 126 392.67 T
+(A list of one or more outlines \050described belo) 139.68 392.67 T
+(w\051.) 339.21 392.67 T
+(\245) 126 380.67 T
+(Optional pointers to a primary and an approximation outline \050described belo) 139.68 380.67 T
+(w\051. If) 474.86 380.67 T
+(either of these pointers is) 139.68 368.67 T
+5 12 Q
+-0.6 (NULL) 253.02 368.67 S
+2 11 Q
+(, the def) 279.42 368.67 T
+(ault primary/approximation outline is the \336rst) 315.05 368.67 T
+(one in the list of outlines for the shape.) 139.68 356.67 T
+2 12 Q
+(An) 108 338 T
+1 F
+(outline) 125.66 338 T
+2 F
+(, stored in a) 159 338 T
+5 F
+-0.6 (XkbOutlineRec) 217.99 338 S
+2 F
+( structure, is a list of one or more points that) 303.79 338 T
+(describes a single closed-polygon, as follows:) 108 325 T
+2 11 Q
+(\245) 126 304.67 T
+-0.38 (A list with a single point describes a rectangle with one corner at the origin of the shape) 139.68 304.67 P
+(\0500,0\051 and the opposite corner at the speci\336ed point.) 139.68 292.67 T
+(\245) 126 280.67 T
+(A list of tw) 139.68 280.67 T
+(o points describes a rectangle with one corner at the position speci\336ed by) 189.38 280.67 T
+(the \336rst point and the opposite corner at the position speci\336ed by the second point.) 139.68 268.67 T
+(\245) 126 256.67 T
+(A list of three or more points describes an arbitrary polygon. If necessary) 139.68 256.67 T
+(, the polygon) 461.25 256.67 T
+(is automatically closed by connecting the last point in the list with the \336rst.) 139.68 244.67 T
+(\245) 126 232.67 T
+(A nonzero v) 139.68 232.67 T
+(alue for the) 193.78 232.67 T
+1 F
+(corner_radius) 246.62 232.67 T
+2 F
+( \336eld speci\336es that the corners of the polygon) 309.56 232.67 T
+(should be dra) 139.68 220.67 T
+(wn as circles with the speci\336ed radius.) 198.78 220.67 T
+2 12 Q
+-0.27 (All points in an outline are specified relative to the origin of the enclosing shape. Points in) 108 202 P
+(an outline may have negative values for the X and Y coordinate.) 108 189 T
+(One outline is the primary outline; a keyboard display application can generate a simple) 108 168 T
+(but still accurate keyboard image by displaying only the primary outlines for each shape.) 108 155 T
+(The default primary outline is the first in a shape\325s list of outlines. If the) 108 142 T
+1 F
+(primary) 457.3 142 T
+2 F
+( field of) 495.96 142 T
+(the) 108 129 T
+5 F
+-0.6 (XkbShapeRec) 125.66 129 S
+2 F
+( structure is not) 198.27 129 T
+5 F
+-0.6 (NULL) 275.59 129 S
+2 F
+(, it points to the primary outline. A rectangular) 301.99 129 T
+1 F
+-0.03 (appr) 108 116 P
+-0.03 (oximation) 130.13 116 P
+2 F
+-0.03 ( must be included for nonrectangular keys as one of the outlines associated) 178.13 116 P
+(with the shape; the approximation is not normally displayed but can be used by very sim-) 108 103 T
+(ple keyboard display applications to generate a recognizable but degraded image of the) 108 90 T
+(keyboard.) 108 77 T
+72 63 540 720 C
+82.2 518 529.8 674 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+207.63 635.6 220.23 646.4 R
+7 X
+0 0 0 1 0 0 0 K
+V
+1 H
+0 Z
+0 X
+N
+222.03 635.6 234.63 646.4 R
+7 X
+V
+0 X
+N
+236.43 635.6 249.03 646.4 R
+7 X
+V
+0 X
+N
+252.63 635.6 265.23 646.4 R
+7 X
+V
+0 X
+N
+174.33 635.6 186.93 646.4 R
+7 X
+V
+0 X
+N
+340.83 635.6 353.43 646.4 R
+7 X
+V
+0 X
+N
+355.23 635.6 367.83 646.4 R
+7 X
+V
+0 X
+N
+369.63 635.6 382.23 646.4 R
+7 X
+V
+0 X
+N
+384.03 635.6 396.27 646.4 R
+7 X
+V
+0 X
+N
+276.03 635.6 288.63 646.4 R
+7 X
+V
+0 X
+N
+290.43 635.6 303.03 646.4 R
+7 X
+V
+0 X
+N
+304.83 635.6 317.43 646.4 R
+7 X
+V
+0 X
+N
+319.23 635.6 331.83 646.4 R
+7 X
+V
+0 X
+N
+408.6 606.8 421.75 617.6 R
+7 X
+V
+0 X
+N
+423.63 606.8 436.77 617.6 R
+7 X
+V
+0 X
+N
+438.65 606.8 451.8 617.6 R
+7 X
+V
+0 X
+N
+408.6 635.6 421.75 646.4 R
+7 X
+V
+0 X
+N
+423.63 635.6 436.77 646.4 R
+7 X
+V
+0 X
+N
+438.65 635.6 451.8 646.4 R
+7 X
+V
+0 X
+N
+408.6 592.4 421.75 603.2 R
+7 X
+V
+0 X
+N
+423.63 592.4 436.77 603.2 R
+7 X
+V
+0 X
+N
+438.65 592.4 451.8 603.2 R
+7 X
+V
+0 X
+N
+423.63 563.6 436.77 574.4 R
+7 X
+V
+0 X
+N
+408.6 549.2 421.75 560 R
+7 X
+V
+0 X
+N
+423.63 549.2 436.77 560 R
+7 X
+V
+0 X
+N
+438.65 549.2 451.8 560 R
+7 X
+V
+0 X
+N
+171 542 401.4 621.2 R
+7 X
+V
+0 X
+N
+311.4 606.8 324 617.6 R
+7 X
+V
+0 X
+N
+325.8 606.8 338.4 617.6 R
+7 X
+V
+0 X
+N
+340.2 606.8 352.8 617.6 R
+7 X
+V
+0 X
+N
+356.4 606.8 369 617.6 R
+7 X
+V
+0 X
+N
+250.2 606.8 262.8 617.6 R
+7 X
+V
+0 X
+N
+264.6 606.8 277.2 617.6 R
+7 X
+V
+0 X
+N
+279 606.8 291.6 617.6 R
+7 X
+V
+0 X
+N
+295.2 606.8 307.8 617.6 R
+7 X
+V
+0 X
+N
+189 606.8 201.6 617.6 R
+7 X
+V
+0 X
+N
+203.4 606.8 216 617.6 R
+7 X
+V
+0 X
+N
+217.8 606.8 230.4 617.6 R
+7 X
+V
+0 X
+N
+234 606.8 246.6 617.6 R
+7 X
+V
+0 X
+N
+174.6 606.8 187.2 617.6 R
+7 X
+V
+0 X
+N
+372.6 606.8 396 617.6 R
+7 X
+V
+0 X
+N
+318.6 592.4 331.2 603.2 R
+7 X
+V
+0 X
+N
+333 592.4 345.6 603.2 R
+7 X
+V
+0 X
+N
+347.4 592.4 360 603.2 R
+7 X
+V
+0 X
+N
+361.8 592.4 374.4 603.2 R
+7 X
+V
+0 X
+N
+257.4 592.4 270 603.2 R
+7 X
+V
+0 X
+N
+271.8 592.4 284.4 603.2 R
+7 X
+V
+0 X
+N
+286.2 592.4 298.8 603.2 R
+7 X
+V
+0 X
+N
+302.4 592.4 315 603.2 R
+7 X
+V
+0 X
+N
+196.2 592.4 208.8 603.2 R
+7 X
+V
+0 X
+N
+210.6 592.4 223.2 603.2 R
+7 X
+V
+0 X
+N
+225 592.4 237.6 603.2 R
+7 X
+V
+0 X
+N
+241.2 592.4 253.8 603.2 R
+7 X
+V
+0 X
+N
+174.6 592.4 192.6 603.2 R
+7 X
+V
+0 X
+N
+376.56 592.4 396 603.2 R
+7 X
+V
+0 X
+N
+322.2 578 334.8 588.8 R
+7 X
+V
+0 X
+N
+338.4 578 351 588.8 R
+7 X
+V
+0 X
+N
+352.8 578 365.4 588.8 R
+7 X
+V
+0 X
+N
+261 578 273.6 588.8 R
+7 X
+V
+0 X
+N
+275.4 578 288 588.8 R
+7 X
+V
+0 X
+N
+289.8 578 302.4 588.8 R
+7 X
+V
+0 X
+N
+306 578 318.6 588.8 R
+7 X
+V
+0 X
+N
+198 578 210.6 588.8 R
+7 X
+V
+0 X
+N
+214.2 578 226.8 588.8 R
+7 X
+V
+0 X
+N
+228.6 578 241.2 588.8 R
+7 X
+V
+0 X
+N
+244.8 578 257.4 588.8 R
+7 X
+V
+0 X
+N
+174.6 578 195.12 588.8 R
+7 X
+V
+0 X
+N
+369 578 396 588.8 R
+7 X
+V
+0 X
+N
+343.8 548.48 361.8 559.28 R
+7 X
+V
+0 X
+N
+232.2 548.48 340.2 559.28 R
+7 X
+V
+0 X
+N
+210.6 548.48 228.6 559.28 R
+7 X
+V
+0 X
+N
+174.6 548.48 192.6 559.28 R
+7 X
+V
+0 X
+N
+378.35 548.48 396.35 559.28 R
+7 X
+V
+0 X
+N
+327.6 563.6 340.2 574.4 R
+7 X
+V
+0 X
+N
+342 563.6 354.6 574.4 R
+7 X
+V
+0 X
+N
+264.6 563.6 277.2 574.4 R
+7 X
+V
+0 X
+N
+279 563.6 291.6 574.4 R
+7 X
+V
+0 X
+N
+295.2 563.6 307.8 574.4 R
+7 X
+V
+0 X
+N
+311.4 563.6 324 574.4 R
+7 X
+V
+0 X
+N
+203.4 563.6 216 574.4 R
+7 X
+V
+0 X
+N
+217.8 563.6 230.4 574.4 R
+7 X
+V
+0 X
+N
+232.2 563.6 244.8 574.4 R
+7 X
+V
+0 X
+N
+248.4 563.6 261 574.4 R
+7 X
+V
+0 X
+N
+174.6 563.6 199.8 574.4 R
+7 X
+V
+0 X
+N
+356.4 563.6 396 574.4 R
+7 X
+V
+0 X
+N
+459 545.6 523.8 621.2 R
+7 X
+V
+0 X
+N
+462.6 606.8 475.2 617.6 R
+7 X
+V
+0 X
+N
+477 606.8 489.6 617.6 R
+7 X
+V
+0 X
+N
+491.4 606.8 504 617.6 R
+7 X
+V
+0 X
+N
+507.96 606.8 520.2 617.6 R
+7 X
+V
+0 X
+N
+462.6 592.4 475.2 603.2 R
+7 X
+V
+0 X
+N
+477 592.4 489.6 603.2 R
+7 X
+V
+0 X
+N
+491.4 592.4 504 603.2 R
+7 X
+V
+0 X
+N
+507.96 578.36 520.2 602.84 R
+7 X
+V
+0 X
+N
+462.6 578 475.2 588.8 R
+7 X
+V
+0 X
+N
+477 578 489.6 588.8 R
+7 X
+V
+0 X
+N
+491.4 578 504 588.8 R
+7 X
+V
+0 X
+N
+463.14 549.2 489.06 560 R
+7 X
+V
+0 X
+N
+491.4 549.2 504 560 R
+7 X
+V
+0 X
+N
+462.6 563.6 475.2 574.4 R
+7 X
+V
+0 X
+N
+477 563.6 489.6 574.4 R
+7 X
+V
+0 X
+N
+491.4 563.6 504 574.4 R
+7 X
+V
+0 X
+N
+507.96 549.56 520.2 574.04 R
+7 X
+V
+0 X
+N
+2 12 Q
+(Editing) 88.2 639.2 T
+(Function) 88.2 610.4 T
+(Alpha) 88.2 578 T
+(Keypad) 88.2 549.2 T
+156.6 614 135 614 2 L
+7 X
+V
+2 Z
+0 X
+N
+156.37 581.6 156.37 584.24 165.59 581.6 156.37 578.96 4 Y
+0 Z
+N
+156.37 581.6 156.37 584.24 165.59 581.6 156.37 578.96 4 Y
+V
+121.5 581.6 155.87 581.6 2 L
+7 X
+V
+2 Z
+0 X
+N
+109.8 653.6 109.8 668 2 L
+7 X
+V
+0 X
+N
+109.8 668 433.8 668 2 L
+7 X
+V
+0 X
+N
+433.8 664.64 436.44 664.64 433.8 655.41 431.16 664.64 4 Y
+0 Z
+N
+433.8 664.64 436.44 664.64 433.8 655.41 431.16 664.64 4 Y
+V
+433.8 668 433.8 665.14 2 L
+7 X
+V
+2 Z
+0 X
+N
+109.8 542 109.8 524 2 L
+7 X
+V
+0 X
+N
+491.4 524 109.8 524 2 L
+7 X
+V
+0 X
+N
+491.4 530.96 488.76 530.96 491.4 540.19 494.04 530.96 4 Y
+0 Z
+N
+491.4 530.96 488.76 530.96 491.4 540.19 494.04 530.96 4 Y
+V
+491.4 524 491.4 530.46 2 L
+7 X
+V
+2 Z
+0 X
+N
+156.6 614 156.6 639.2 2 L
+7 X
+V
+0 X
+N
+158.9 639.2 158.9 641.12 165.59 639.2 158.9 637.28 4 Y
+0 Z
+N
+158.9 639.2 158.9 641.12 165.59 639.2 158.9 637.28 4 Y
+V
+156.6 639.2 158.4 639.2 2 L
+7 X
+V
+2 Z
+0 X
+N
+405 542 455.4 650 R
+0 Z
+N
+171 632 401.4 650 R
+N
+72 63 540 720 C
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "94" 106
+%%Page: "95" 107
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(95) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+0 12 Q
+(13.2) 72 712 T
+(Sections) 108 712 T
+2 F
+(As previously noted, a keyboard is subdivided into) 108 692 T
+1 F
+(sections) 354.98 692 T
+2 F
+( of related keys. Each section) 393.65 692 T
+-0.39 (has its own coordinate system \321 if a section is rotated, the coordinates of any components) 108 679 P
+(within the section are interpreted relative to the edges that were on the top and left before) 108 666 T
+(rotation. The components that make up a section, stored in a) 108 653 T
+5 F
+-0.6 (XkbSectionRec) 400.3 653 S
+2 F
+(, include:) 486.1 653 T
+2 11 Q
+(\245) 126 632.67 T
+(An arbitrary name of type Atom.) 139.68 632.67 T
+(\245) 126 620.67 T
+(A priority) 139.68 620.67 T
+(, to indicate dra) 182.66 620.67 T
+(wing order) 250.92 620.67 T
+(. 0 is the highest priority) 298.28 620.67 T
+(, 255 the lo) 405.12 620.67 T
+(west.) 454.35 620.67 T
+(\245) 126 608.67 T
+(Origin of the section, relati) 139.68 608.67 T
+(v) 258.25 608.67 T
+(e to the origin of the k) 263.58 608.67 T
+(e) 361.24 608.67 T
+(yboard.) 365.96 608.67 T
+(\245) 126 596.67 T
+(The width and height and the angle of rotation.) 139.68 596.67 T
+(\245) 126 584.67 T
+(A list of) 139.68 584.67 T
+1 12 Q
+(r) 178.49 584.67 T
+(ows) 182.62 584.67 T
+2 11 Q
+(. A ro) 201.29 584.67 T
+(w is a list of horizontally or v) 226.37 584.67 T
+(ertically adjacent k) 356.06 584.67 T
+(e) 439.65 584.67 T
+(ys. Horizontal) 444.37 584.67 T
+-0.14 (ro) 139.68 572.67 P
+-0.14 (ws parallel the \050prerotation\051 top of the section, and v) 148.57 572.67 P
+-0.14 (ertical ro) 378.07 572.67 P
+-0.14 (ws parallel the \050prerota-) 417.05 572.67 P
+-0.37 (tion\051 left of the section. All k) 139.68 560.67 P
+-0.37 (e) 265.35 560.67 P
+-0.37 (ys in a horizontal ro) 270.06 560.67 P
+-0.37 (w share a common top coordinate; all) 356.28 560.67 P
+-0.1 (k) 139.68 548.67 P
+-0.1 (e) 145.07 548.67 P
+-0.1 (ys in a v) 149.79 548.67 P
+-0.1 (ertical ro) 186.29 548.67 P
+-0.1 (w share a left coordinate. Figure 13.3 sho) 225.32 548.67 P
+-0.1 (ws the alpha section from) 406.72 548.67 P
+(the k) 139.68 536.67 T
+(e) 161.26 536.67 T
+(yboard sho) 165.98 536.67 T
+(wn in Figure 13.2, di) 214.28 536.67 T
+(vided into ro) 306.29 536.67 T
+(ws. Ro) 362.23 536.67 T
+(ws and k) 392.52 536.67 T
+(e) 431.51 536.67 T
+(ys are de\336ned) 436.23 536.67 T
+(belo) 139.68 524.67 T
+(w) 158.35 524.67 T
+(.) 165.57 524.67 T
+3 12 Q
+(Figur) 235.88 377.9 T
+(e 13.3 Ro) 264.33 377.9 T
+(ws in a Section) 314.2 377.9 T
+2 11 Q
+(\245) 126 350.57 T
+(An optional list of) 139.68 350.57 T
+1 12 Q
+(doodads) 222.8 350.57 T
+2 11 Q
+(; an) 263.46 350.57 T
+(y type of doodad can be enclosed within a section.) 279.49 350.57 T
+(Position and angle of rotation are relati) 139.68 338.57 T
+(v) 311.1 338.57 T
+(e to the origin and angle of rotation of the sec-) 316.44 338.57 T
+(tions that contain them. Priority for doodads in a section is relati) 139.68 326.57 T
+(v) 422.34 326.57 T
+(e to the other compo-) 427.67 326.57 T
+(nents of the section, not to the k) 139.68 314.57 T
+(e) 280.12 314.57 T
+(yboard as a whole.) 284.84 314.57 T
+(\245) 126 302.57 T
+(An optional) 139.68 302.57 T
+1 12 Q
+(o) 194.68 302.57 T
+(verlay) 200.56 302.57 T
+2 11 Q
+( with a name of type Atom and a list of o) 230.55 302.57 T
+(v) 410.95 302.57 T
+(erlay ro) 416.28 302.57 T
+(ws \050described) 449.91 302.57 T
+(belo) 139.68 290.57 T
+(w\051.) 158.35 290.57 T
+(\245) 126 278.57 T
+(Bounds \050tw) 139.68 278.57 T
+(o x and y coordinates\051 that describe the corners of a rectangle containing) 190.6 278.57 T
+(the entire section.) 139.68 266.57 T
+0 12 Q
+(13.3) 72 241.9 T
+(Ro) 108 241.9 T
+(ws and K) 123.82 241.9 T
+(e) 176.32 241.9 T
+(ys) 182.81 241.9 T
+2 F
+(A row description \050) 108 221.9 T
+5 F
+-0.6 (XkbRowRec) 201.65 221.9 S
+2 F
+(\051 consists of the coordinates of its origin relative to its) 261.05 221.9 T
+(enclosing section, a flag indicating whether the row is horizontal or vertical, and a list of) 108 208.9 T
+(keys in the row.) 108 195.9 T
+(A key description \050) 108 174.9 T
+5 F
+-0.6 (XkbKeyRec) 200.32 174.9 S
+2 F
+(\051 consists of a key name, a shape, a key color, and a gap.) 259.72 174.9 T
+-0.24 (The key name should correspond to one of the keys named in the keyboard names descrip-) 108 161.9 P
+-0.21 (tion, the shape specifies the appearance of the key, and the key color specifies the color of) 108 148.9 P
+-0.22 (the key \050not the label on the key; the label color is stored in the) 108 135.9 P
+5 F
+-0.48 -0.6 (XkbGeometryRec) 410.38 135.9 B
+2 F
+-0.22 (\051. Keys) 502.78 135.9 P
+(are normally drawn immediately adjacent to one another from left to right \050or top to bot-) 108 122.9 T
+(tom\051 within a row. The gap field specifies the distance between a key and its predecessor.) 108 109.9 T
+72 63 540 720 C
+107.76 398.9 504.24 502 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+392.04 482.5 407.79 496 R
+9 X
+0 0 0 1 0 0 0 K
+V
+1 H
+0 Z
+0 X
+N
+410.04 482.5 425.79 496 R
+9 X
+V
+0 X
+N
+428.04 482.5 443.79 496 R
+9 X
+V
+0 X
+N
+448.29 482.5 464.04 496 R
+9 X
+V
+0 X
+N
+315.54 482.5 331.29 496 R
+9 X
+V
+0 X
+N
+333.54 482.5 349.29 496 R
+9 X
+V
+0 X
+N
+351.54 482.5 367.29 496 R
+9 X
+V
+0 X
+N
+371.79 482.5 387.54 496 R
+9 X
+V
+0 X
+N
+239.04 482.5 254.79 496 R
+9 X
+V
+0 X
+N
+257.04 482.5 272.79 496 R
+9 X
+V
+0 X
+N
+275.04 482.5 290.79 496 R
+9 X
+V
+0 X
+N
+295.29 482.5 311.04 496 R
+9 X
+V
+0 X
+N
+221.04 482.5 236.79 496 R
+9 X
+V
+0 X
+N
+468.54 482.5 497.79 496 R
+9 X
+V
+0 X
+N
+401.04 464.5 416.79 478 R
+7 X
+V
+0 X
+N
+419.04 464.5 434.79 478 R
+7 X
+V
+0 X
+N
+437.04 464.5 452.79 478 R
+7 X
+V
+0 X
+N
+455.04 464.5 470.79 478 R
+7 X
+V
+0 X
+N
+324.54 464.5 340.29 478 R
+7 X
+V
+0 X
+N
+342.54 464.5 358.29 478 R
+7 X
+V
+0 X
+N
+360.54 464.5 376.29 478 R
+7 X
+V
+0 X
+N
+380.79 464.5 396.54 478 R
+7 X
+V
+0 X
+N
+248.04 464.5 263.79 478 R
+7 X
+V
+0 X
+N
+266.04 464.5 281.79 478 R
+7 X
+V
+0 X
+N
+284.04 464.5 299.79 478 R
+7 X
+V
+0 X
+N
+304.29 464.5 320.04 478 R
+7 X
+V
+0 X
+N
+221.04 464.5 243.54 478 R
+7 X
+V
+0 X
+N
+473.49 464.5 497.79 478 R
+7 X
+V
+0 X
+N
+405.54 446.5 421.29 460 R
+12 X
+V
+0 X
+N
+425.79 446.5 441.54 460 R
+12 X
+V
+0 X
+N
+443.79 446.5 459.54 460 R
+12 X
+V
+0 X
+N
+329.04 446.5 344.79 460 R
+12 X
+V
+0 X
+N
+347.04 446.5 362.79 460 R
+12 X
+V
+0 X
+N
+365.04 446.5 380.79 460 R
+12 X
+V
+0 X
+N
+385.29 446.5 401.04 460 R
+12 X
+V
+0 X
+N
+250.29 446.5 266.04 460 R
+12 X
+V
+0 X
+N
+270.54 446.5 286.29 460 R
+12 X
+V
+0 X
+N
+288.54 446.5 304.29 460 R
+12 X
+V
+0 X
+N
+308.79 446.5 324.54 460 R
+12 X
+V
+0 X
+N
+221.04 446.5 246.69 460 R
+12 X
+V
+0 X
+N
+464.04 446.5 497.79 460 R
+12 X
+V
+0 X
+N
+432.54 409.6 455.04 423.11 R
+3 X
+V
+0 X
+N
+293.04 409.6 428.04 423.11 R
+3 X
+V
+0 X
+N
+266.04 409.6 288.54 423.11 R
+3 X
+V
+0 X
+N
+221.04 409.6 243.54 423.11 R
+3 X
+V
+0 X
+N
+475.73 409.6 498.24 423.11 R
+3 X
+V
+0 X
+N
+412.29 428.5 428.04 442 R
+11 X
+V
+0 X
+N
+430.29 428.5 446.04 442 R
+11 X
+V
+0 X
+N
+333.54 428.5 349.29 442 R
+11 X
+V
+0 X
+N
+351.54 428.5 367.29 442 R
+11 X
+V
+0 X
+N
+371.79 428.5 387.54 442 R
+11 X
+V
+0 X
+N
+392.04 428.5 407.79 442 R
+11 X
+V
+0 X
+N
+257.04 428.5 272.79 442 R
+11 X
+V
+0 X
+N
+275.04 428.5 290.79 442 R
+11 X
+V
+0 X
+N
+293.04 428.5 308.79 442 R
+11 X
+V
+0 X
+N
+313.29 428.5 329.04 442 R
+11 X
+V
+0 X
+N
+221.04 428.5 252.54 442 R
+11 X
+V
+0 X
+N
+448.29 428.5 497.79 442 R
+11 X
+V
+0 X
+N
+113.76 481.42 126.36 492.22 R
+9 X
+V
+0 X
+N
+113.76 461.62 126.36 472.42 R
+7 X
+V
+0 X
+N
+113.76 443.62 126.36 454.42 R
+12 X
+V
+0 X
+N
+113.76 425.62 126.36 436.42 R
+11 X
+V
+0 X
+N
+113.76 409.42 126.36 420.22 R
+3 X
+V
+0 X
+N
+2 20 Q
+(Ro) 140.76 481.24 T
+(w 1) 163.6 481.24 T
+(Ro) 140.76 463.24 T
+(w 2) 163.6 463.24 T
+(Ro) 140.76 445.24 T
+(w 3) 163.6 445.24 T
+(Ro) 140.76 427.24 T
+(w 4) 163.6 427.24 T
+(Ro) 140.76 409.24 T
+(w 5) 163.6 409.24 T
+72 63 540 720 C
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "95" 107
+%%Page: "96" 108
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(96) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+0 12 Q
+(13.4) 72 712 T
+(Doodads) 108 712 T
+2 F
+-0.39 (Doodads can be global to the keyboard or part of a section. Doodads have symbolic names) 108 692 P
+(of arbitrary length. The only doodad name whose interpretation is specified by Xkb is) 108 679 T
+(\322Edges\323, which, if present, describes the outline of the entire keyboard.) 108 666 T
+(Each doodad\325s origin is stored in fields named) 108 645 T
+1 F
+(left) 333.97 645 T
+2 F
+( and) 349.31 645 T
+1 F
+(top) 372.64 645 T
+2 F
+(, which are the coordinates of) 387.97 645 T
+-0.1 (the doodad\325s origin relative to its enclosing object, whether it be a section or the top-level) 108 632 P
+(keyboard. The priority for doodads that are listed in the top-level geometry is relative to) 108 619 T
+(the other doodads listed in the top-level geometry and the sections listed in the top-level) 108 606 T
+-0.13 (geometry. The priority for doodads listed in a section are relative to the other components) 108 593 P
+(of the section. Each doodad is stored in a structure with a) 108 580 T
+1 F
+(type) 385.62 580 T
+2 F
+( field, which specifies the) 405.61 580 T
+(type of doodad.) 108 567 T
+(Xkb supports five types of doodads:) 108 546 T
+2 11 Q
+(\245) 126 525.67 T
+(An) 139.68 525.67 T
+1 12 Q
+(indicator doodad) 155.87 525.67 T
+2 11 Q
+( describes one of the ph) 238.88 525.67 T
+(ysical k) 342.99 525.67 T
+(e) 376.79 525.67 T
+(yboard indicators. Indicator) 381.51 525.67 T
+-0.14 (doodads specify the shape of the indicator) 139.68 513.67 P
+-0.14 (, the indicator color when it is lit \050) 323.52 513.67 P
+1 12 Q
+-0.16 (on_color) 472.4 513.67 P
+2 11 Q
+-0.14 (\051) 515.73 513.67 P
+(and the indicator color when it is dark \050) 139.68 501.67 T
+1 12 Q
+(of) 313.2 501.67 T
+(f_color) 322.33 501.67 T
+2 11 Q
+(\051.) 356.99 501.67 T
+(\245) 126 489.67 T
+-0.17 (An) 139.68 489.67 P
+1 12 Q
+-0.18 (outline doodad) 155.71 489.67 P
+2 11 Q
+-0.17 ( describes some aspect of the k) 227.86 489.67 P
+-0.17 (e) 362.99 489.67 P
+-0.17 (yboard to be dra) 367.71 489.67 P
+-0.17 (wn as one or more) 438.83 489.67 P
+(hollo) 139.68 477.67 T
+(w) 162.02 477.67 T
+(, closed polygons. Outline doodads specify the shape, color) 169.25 477.67 T
+(, and angle of rota-) 430.02 477.67 T
+(tion about the doodad origin at which the) 139.68 465.67 T
+(y should be dra) 320.7 465.67 T
+(wn.) 388.05 465.67 T
+(\245) 126 453.67 T
+(A) 139.68 453.67 T
+1 12 Q
+(solid doodad) 150.37 453.67 T
+2 11 Q
+( describes some aspect of the k) 212.71 453.67 T
+(e) 348.85 453.67 T
+(yboard to be dra) 353.57 453.67 T
+(wn as one or more) 425.19 453.67 T
+-0.05 (\336lled polygons. Solid doodads specify the shape, color) 139.68 441.67 P
+-0.05 (, and angle of rotation about the) 379.36 441.67 P
+(doodad origin at which the) 139.68 429.67 T
+(y should be dra) 257.45 429.67 T
+(wn.) 324.8 429.67 T
+(\245) 126 417.67 T
+-0.45 (A) 139.68 417.67 P
+1 12 Q
+-0.49 (te) 149.92 417.67 P
+-0.49 (xt doodad) 158.35 417.67 P
+2 11 Q
+-0.45 ( describes a te) 205.52 417.67 P
+-0.45 (xt label some) 266.02 417.67 P
+-0.45 (where on the k) 323.51 417.67 P
+-0.45 (e) 387.12 417.67 P
+-0.45 (yboard. T) 391.84 417.67 P
+-0.45 (e) 433.39 417.67 P
+-0.45 (xt doodads specify) 438.11 417.67 P
+-0.02 (the label string, the font and color to use when dra) 139.68 405.67 P
+-0.02 (wing the label, and the angle of rota-) 360.22 405.67 P
+(tion of the doodad about its origin.) 139.68 393.67 T
+(\245) 126 381.67 T
+(A) 139.68 381.67 T
+1 12 Q
+(lo) 150.37 381.67 T
+(go doodad) 159.59 381.67 T
+2 11 Q
+(is a catch-all, which describes some other visible element of the k) 213.59 381.67 T
+(e) 502.48 381.67 T
+(y-) 507.2 381.67 T
+(board. A logo doodad is essentially an outline doodad with an additional symbolic) 139.68 369.67 T
+-0.26 (name that describes the element to be dra) 139.68 357.67 P
+-0.26 (wn. If a k) 319.44 357.67 P
+-0.26 (e) 360.7 357.67 P
+-0.26 (yboard display program recognizes) 365.42 357.67 P
+(the symbolic name, it can dra) 139.68 345.67 T
+(w something appropriate within the bounding re) 269.05 345.67 T
+(gion of) 480.92 345.67 T
+(the shape speci\336ed in the doodad. If the symbolic name does not describe a recogniz-) 139.68 333.67 T
+(able image, it should dra) 139.68 321.67 T
+(w an outline using the speci\336ed shape, outline, and angle of) 247.98 321.67 T
+(rotation. The Xkb e) 139.68 309.67 T
+(xtension does not specify the interpretation of logo names.) 225.67 309.67 T
+2 12 Q
+(The structures these doodads are stored in and the values of the) 108 291 T
+1 F
+(type) 414.6 291 T
+2 F
+( fields are shown in) 434.59 291 T
+(Table 13.1.) 108 278 T
+0 F
+(13.5) 72 142 T
+(Overla) 108 142 T
+(y Ro) 145.12 142 T
+(ws and Overla) 170.94 142 T
+(y K) 252.07 142 T
+(e) 270.56 142 T
+(ys) 277.06 142 T
+2 F
+-0.13 (An) 108 122 P
+1 F
+-0.13 (o) 125.54 122 P
+-0.13 (verlay r) 131.42 122 P
+-0.13 (ow) 168.41 122 P
+2 F
+-0.13 ( \050) 182.41 122 P
+5 F
+-0.28 -0.6 (XkbOverlayRowRec) 189.28 122 B
+2 F
+-0.13 (\051 contains a pointer to the row it overlays and a list) 294.88 122 P
+(of) 108 109 T
+1 F
+(o) 121 109 T
+(verlay k) 126.88 109 T
+(e) 165.07 109 T
+(ys) 170.04 109 T
+2 F
+(.) 180.04 109 T
+-0.46 (Each overlay key definition \050) 108 88 P
+5 F
+-1.02 -0.6 (XkbOverlayKeyRec) 246.12 88 B
+2 F
+-0.46 (\051 indicates a key that can yield multiple) 351.72 88 P
+(keycodes and consists of a field named) 108 75 T
+1 F
+(under) 298.3 75 T
+2 F
+(, which specifies the primary name of the) 326.29 75 T
+3 F
+(T) 256.36 258 T
+(able 13.1 Doodad T) 263.26 258 T
+(ypes) 364.72 258 T
+1 F
+(Doodad) 109 238 T
+(Structur) 235 238 T
+(e) 273.89 238 T
+(T) 397 238 T
+(ype) 402.78 238 T
+(indicator doodad) 109 223.67 T
+5 F
+-0.6 (XkbIndicatorDoodadRec) 235 223.67 S
+1 F
+(XkbIndicatorDoodad) 397 223.67 T
+(outline doodad) 109 209.67 T
+5 F
+-0.6 (XkbShapeDoodadRec) 235 209.67 S
+1 F
+(XkbOutlineDoodad) 397 209.67 T
+(solid doodad) 109 195.67 T
+5 F
+-0.6 (XkbShapeDoodadRec) 235 195.67 S
+1 F
+(XkbSolidDoodad) 397 195.67 T
+(te) 109 181.67 T
+(xt doodad) 117.42 181.67 T
+5 F
+-0.6 (XkbTextDoodadRec) 235 181.67 S
+1 F
+(XkbT) 397 181.67 T
+(e) 421.23 181.67 T
+(xtDoodad) 426.32 181.67 T
+(lo) 109 167.67 T
+(go doodad) 118.22 167.67 T
+5 F
+-0.6 (XkbLogoDoodadRec) 235 167.67 S
+1 F
+(XkbLo) 397 167.67 T
+(goDoodad) 428.21 167.67 T
+108 250 522 250 2 L
+V
+0.5 H
+0 Z
+N
+108 233 522 233 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "96" 108
+%%Page: "97" 109
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(97) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(key and a field named) 108 712 T
+1 F
+(over) 216.97 712 T
+2 F
+(, which specifies the name for the key when the overlay key-) 238.3 712 T
+-0.23 (code is selected. The key specified in) 108 699 P
+1 F
+-0.23 (under) 288.34 699 P
+2 F
+-0.23 ( must be a member of the section that contains) 316.34 699 P
+(the overlay key definition, while the key specified in) 108 686 T
+1 F
+(over) 363.96 686 T
+2 F
+( must not be.) 385.28 686 T
+0 F
+(13.6) 72 661 T
+(Dra) 108 661 T
+(wing a K) 127.82 661 T
+(e) 176.99 661 T
+(yboar) 183.48 661 T
+(d Representation) 215.92 661 T
+2 F
+(To draw a representation of the keyboard, draw in the following order:) 108 641 T
+2 11 Q
+(Dra) 144 620.67 T
+(w the top-le) 160.32 620.67 T
+(v) 212.6 620.67 T
+(el k) 217.93 620.67 T
+(e) 234.01 620.67 T
+(yboard as a rectangle, using its width and height.) 238.73 620.67 T
+(F) 144 607.67 T
+(or each component \050section or doodad\051 of the top-le) 149.95 607.67 T
+(v) 378.18 607.67 T
+(el geometry) 383.51 607.67 T
+(, in priority order:) 435.04 607.67 T
+(If component is a section) 162 594.67 T
+(F) 198 581.67 T
+(or each ro) 203.95 581.67 T
+(w) 247.65 581.67 T
+(, in the order it appears in the section) 254.88 581.67 T
+(Dra) 234 568.67 T
+(w k) 250.32 568.67 T
+(e) 266.41 568.67 T
+(ys in the order the) 271.12 568.67 T
+(y appear in the ro) 350.39 568.67 T
+(w) 427.09 568.67 T
+(Dra) 198 555.67 T
+(w doodads within the section in priority order) 214.32 555.67 T
+(.) 415.06 555.67 T
+(Else dra) 162 542.67 T
+(w doodad) 197.57 542.67 T
+FMENDPAGE
+%%EndPage: "97" 109
+%%Page: "98" 110
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(98) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+0 12 Q
+(13.7) 72 712 T
+(Geometr) 108 712 T
+(y Data Structures) 157.46 712 T
+2 F
+(In the following figures, a solid arrow denotes a pointer to an array of structures or a sin-) 108 692 T
+(gleton structure. A dotted arrow denotes an index or a pointer into the array.) 108 679 T
+3 F
+(Figur) 200.61 72.75 T
+(e 13.4 Xkb Geometry Data Structur) 229.06 72.75 T
+(es) 415.15 72.75 T
+72 93.75 540 675 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+218.5 654 299.5 672 R
+7 X
+0 0 0 1 0 0 0 K
+V
+0.5 H
+0 Z
+0 X
+N
+214.5 650.25 295.5 668.25 R
+7 X
+V
+0 X
+N
+210.25 646.75 291.25 664.75 R
+7 X
+V
+0 X
+N
+90.75 480 171.75 663.5 R
+N
+90.75 453 171.75 471 R
+7 X
+V
+2 10 Q
+0 X
+(XkbGeometryRec) 94.87 464.33 T
+90.75 588 171.75 588 2 L
+7 X
+V
+0 X
+N
+90.75 570 171.75 570 2 L
+7 X
+V
+0 X
+N
+90.75 552 171.75 552 2 L
+7 X
+V
+0 X
+N
+90.75 534 171.75 534 2 L
+7 X
+V
+0 X
+N
+90.75 516 171.75 516 2 L
+7 X
+V
+0 X
+N
+90.75 498 171.75 498 2 L
+7 X
+V
+0 X
+N
+(properties) 108.36 577 T
+(colors) 108.36 559 T
+(shapes) 108.36 541 T
+(sections) 108.36 523 T
+(doodads) 108.36 505 T
+(key_aliases) 108.36 487 T
+204 545 285 575.75 R
+7 X
+V
+0 X
+(XkbColorRec\050s\051) 211.45 569.08 T
+(\050array\051) 230.9 559.08 T
+205.25 612 286.25 636 R
+7 X
+V
+0 X
+(XkbPropertyRec\050s\051) 206.87 629.33 T
+(\050array\051) 232.15 619.33 T
+206.25 643 287.25 661 R
+7 X
+V
+0 X
+N
+217.75 592.88 298.75 610.88 R
+7 X
+V
+0 X
+N
+213.75 589.12 294.75 607.12 R
+7 X
+V
+0 X
+N
+209.5 585.62 290.5 603.62 R
+7 X
+V
+0 X
+N
+205.5 581.87 286.5 599.87 R
+7 X
+V
+0 X
+N
+90.5 627.75 171.5 627.75 2 L
+7 X
+V
+0 X
+N
+90.75 609.75 171.75 609.75 2 L
+7 X
+V
+0 X
+N
+90.75 645.75 171.75 645.75 2 L
+7 X
+V
+0 X
+N
+(label_color) 108.36 633.75 T
+(base_color) 108.36 615.75 T
+99 262 180 351 R
+7 X
+V
+0 X
+N
+94 257 175 346 R
+7 X
+V
+0 X
+N
+89 251 170 341 R
+7 X
+V
+0 X
+N
+89 216.5 170 245 R
+7 X
+V
+0 X
+(XkbSectionRec\050s\051) 92.84 238.33 T
+(\050array\051) 115.9 228.33 T
+89 323 170 323 2 L
+7 X
+V
+0 X
+N
+89 305 170 305 2 L
+7 X
+V
+0 X
+N
+89 287 170 287 2 L
+7 X
+V
+0 X
+N
+89 269 170 269 2 L
+7 X
+V
+0 X
+N
+(rows) 107 314 T
+(doodads) 107 296 T
+(bounds) 107 278 T
+(overlays) 107 260 T
+201.13 641.51 198.43 642.77 205.49 650.93 203.83 640.26 4 Y
+N
+201.13 641.51 198.43 642.77 205.49 650.93 203.83 640.26 4 Y
+V
+172.13 579 201.02 641.29 2 L
+7 X
+V
+0 X
+N
+453.5 331.5 534.5 401.75 R
+7 X
+V
+0 X
+N
+448.5 324.25 529.5 396.75 R
+7 X
+V
+0 X
+N
+443.5 319 524.5 391.75 R
+7 X
+V
+0 X
+N
+442.75 284.5 523.75 313 R
+7 X
+V
+0 X
+(doodads \050s\051) 460.06 306.33 T
+(\050array\051) 469.65 296.33 T
+443.5 373.75 524.5 373.75 2 L
+7 X
+V
+0 X
+N
+443.5 355.75 524.5 355.75 2 L
+7 X
+V
+0 X
+N
+443.5 337.75 524.5 337.75 2 L
+7 X
+V
+0 X
+N
+103 416 184 434 R
+7 X
+V
+0 X
+N
+99 412.25 180 430.25 R
+7 X
+V
+0 X
+N
+94.75 408.75 175.75 426.75 R
+7 X
+V
+0 X
+N
+89.75 372.25 176 396.25 R
+7 X
+V
+0 X
+(XkbKeyAliasRec\050s\051) 92.33 389.58 T
+(\050array\051) 119.28 379.58 T
+90.75 405 171.75 423 R
+7 X
+V
+0 X
+N
+222.75 293.25 303.75 350 R
+7 X
+V
+0 X
+N
+217.75 288.25 298.75 345 R
+7 X
+V
+0 X
+N
+212.75 285.25 293.75 340 R
+7 X
+V
+0 X
+N
+213.5 248.5 294.5 277 R
+7 X
+V
+0 X
+(XkbRowRec\050s\051) 222.89 270.33 T
+(\050array\051) 240.4 260.33 T
+212.75 322 293.75 322 2 L
+7 X
+V
+0 X
+N
+212.75 304 293.75 304 2 L
+7 X
+V
+0 X
+N
+(keys) 230.75 313 T
+(bounds) 231.5 292 T
+201.34 313.75 201.34 316.72 211.72 313.75 201.34 310.77 4 Y
+N
+201.34 313.75 201.34 316.72 211.72 313.75 201.34 310.77 4 Y
+V
+169.88 313.75 201.09 313.75 2 L
+7 X
+V
+0 X
+N
+210 109.87 291 127.87 R
+7 X
+V
+0 X
+N
+210 85 291 103 R
+7 X
+V
+0 X
+(XkbBoundsRec) 218.84 96.33 T
+221.25 178.5 302.25 248.75 R
+7 X
+V
+0 X
+N
+216.25 171.25 297.25 243.75 R
+7 X
+V
+0 X
+N
+211.25 166 292.25 238.75 R
+7 X
+V
+0 X
+N
+210.5 131.5 291.5 160 R
+7 X
+V
+0 X
+(doodads \050s\051) 227.81 153.33 T
+(\050array\051) 237.4 143.33 T
+211.25 220.75 292.25 220.75 2 L
+7 X
+V
+0 X
+N
+211.25 202.75 292.25 202.75 2 L
+7 X
+V
+0 X
+N
+211.25 184.75 292.25 184.75 2 L
+7 X
+V
+0 X
+N
+199.09 119 199.09 121.97 209.47 119 199.09 116.02 4 Y
+N
+199.09 119 199.09 121.97 209.47 119 199.09 116.02 4 Y
+V
+169.88 276.5 191.18 276.5 191.18 119 198.84 119 4 L
+N
+209.06 249.17 211.94 249.92 211.65 239.13 206.18 248.43 4 Y
+N
+209.06 249.17 211.94 249.92 211.65 239.13 206.18 248.43 4 Y
+V
+169.88 295.25 197.18 295.25 208.99 249.42 3 L
+N
+322.59 314.25 322.59 317.22 332.97 314.25 322.59 311.27 4 Y
+N
+322.59 314.25 322.59 317.22 332.97 314.25 322.59 311.27 4 Y
+V
+293.38 314.25 322.34 314.25 2 L
+N
+345 277.25 426 334 R
+7 X
+V
+0 X
+N
+340 273 421 329 R
+7 X
+V
+0 X
+N
+335 269.25 416 324 R
+7 X
+V
+0 X
+N
+334.25 231.75 415.25 260.25 R
+7 X
+V
+0 X
+(XkbKeyRec\050s\051) 344.76 253.58 T
+(\050array\051) 361.15 243.58 T
+335 306 416 306 2 L
+7 X
+V
+0 X
+N
+335 288 416 288 2 L
+7 X
+V
+0 X
+N
+(shape_ndx) 353.46 295 T
+(color_ndx) 353.46 277 T
+334 199.37 415 217.37 R
+7 X
+V
+0 X
+N
+334 174.5 415 192.5 R
+7 X
+V
+0 X
+(XkbBoundsRec) 342.83 185.83 T
+329.05 218.45 331.73 219.72 333.49 209.07 326.36 217.17 4 Y
+N
+329.05 218.45 331.73 219.72 333.49 209.07 326.36 217.17 4 Y
+V
+293.38 293.75 328.94 218.67 2 L
+7 X
+V
+0 X
+N
+196.12 581.06 194.09 583.23 203.71 588.13 198.15 578.88 4 Y
+N
+196.12 581.06 194.09 583.23 203.71 588.13 198.15 578.88 4 Y
+V
+171.38 558 195.94 580.89 2 L
+7 X
+V
+0 X
+N
+193.84 597.75 193.84 600.73 204.22 597.75 193.84 594.77 4 Y
+8 X
+N
+193.84 597.75 193.84 600.73 204.22 597.75 193.84 594.77 4 Y
+V
+171.38 636.75 185.63 636.75 185.63 597.75 193.59 597.75 4 L
+N
+193.84 591.75 193.84 594.72 204.22 591.75 193.84 588.77 4 Y
+N
+193.84 591.75 193.84 594.72 204.22 591.75 193.84 588.77 4 Y
+V
+171.38 617.25 183.38 617.25 182.63 591.75 193.59 591.75 4 L
+N
+337 475.25 418 564.25 R
+7 X
+V
+0 X
+N
+332 470.25 413 559.25 R
+7 X
+V
+0 X
+N
+327 464.25 408 554.25 R
+7 X
+V
+0 X
+N
+327 426.75 408 455.25 R
+7 X
+V
+0 X
+(XkbShapeRec\050s\051) 333.62 448.58 T
+(\050array\051) 353.9 438.58 T
+327 536.25 408 536.25 2 L
+7 X
+V
+0 X
+N
+327 518.25 408 518.25 2 L
+7 X
+V
+0 X
+N
+327 500.25 408 500.25 2 L
+7 X
+V
+0 X
+N
+327 482.25 408 482.25 2 L
+7 X
+V
+0 X
+N
+(outlines) 345 527.25 T
+(approx) 345 509.25 T
+(primary) 345 491.25 T
+(bounds) 345 473.25 T
+457.5 512.12 538.5 530.12 R
+7 X
+V
+0 X
+N
+453.5 508.38 534.5 526.38 R
+7 X
+V
+0 X
+N
+449.25 504.88 530.25 522.88 R
+7 X
+V
+0 X
+N
+445.25 501.12 526.25 519.12 R
+7 X
+V
+0 X
+N
+435.23 514.67 436.66 517.28 444.33 509.68 433.8 512.06 4 Y
+N
+435.23 514.67 436.66 517.28 444.33 509.68 433.8 512.06 4 Y
+V
+407.81 529.69 435.01 514.79 2 L
+7 X
+V
+0 X
+N
+433.84 508.5 433.84 511.48 444.22 508.5 433.84 505.52 4 Y
+8 X
+N
+433.84 508.5 433.84 511.48 444.22 508.5 433.84 505.52 4 Y
+V
+407.63 508.5 433.59 508.5 2 L
+7 X
+V
+8 X
+N
+434.8 503.95 433.6 506.68 444.3 508.13 436 501.23 4 Y
+9 X
+N
+434.8 503.95 433.6 506.68 444.3 508.13 436 501.23 4 Y
+V
+407.63 492 434.57 503.85 2 L
+7 X
+V
+9 X
+N
+446 469 527 495.25 R
+7 X
+V
+0 X
+(XkbOutlineRec\050s\051) 449.84 488.58 T
+(\050array\051) 472.9 478.58 T
+447.25 444.62 528.25 462.62 R
+7 X
+V
+0 X
+N
+447.25 419.75 528.25 437.75 R
+7 X
+V
+0 X
+(XkbBoundsRec) 456.08 431.08 T
+437.4 457.52 438.79 460.15 446.58 452.67 436.01 454.89 4 Y
+N
+437.4 457.52 438.79 460.15 446.58 452.67 436.01 454.89 4 Y
+V
+407.63 473.25 437.18 457.64 2 L
+7 X
+V
+0 X
+N
+435.2 504.38 434.12 506.98 444.29 508.15 436.28 501.77 4 Y
+N
+435.2 504.38 434.12 506.98 444.29 508.15 436.28 501.77 4 Y
+V
+432.94 503.44 434.97 504.28 2 L
+7 X
+V
+0 X
+N
+434.47 508.57 434.39 511.42 444.41 508.85 434.55 505.72 4 Y
+N
+434.47 508.57 434.39 511.42 444.41 508.85 434.55 505.72 4 Y
+V
+432 508.5 434.22 508.56 2 L
+7 X
+V
+0 X
+N
+315.34 543 315.34 545.97 325.72 543 315.34 540.02 4 Y
+N
+315.34 543 315.34 545.97 325.72 543 315.34 540.02 4 Y
+V
+172.13 543 315.09 543 2 L
+7 X
+V
+0 X
+N
+316.09 538.5 316.09 541.47 326.47 538.5 316.09 535.52 4 Y
+8 X
+N
+316.09 538.5 316.09 541.47 326.47 538.5 316.09 535.52 4 Y
+V
+333.83 297 313.13 296.25 313.13 538.5 315.84 538.5 4 L
+N
+297.41 586.5 297.41 583.52 287.03 586.5 297.41 589.47 4 Y
+N
+297.41 586.5 297.41 583.52 287.03 586.5 297.41 589.47 4 Y
+V
+334.88 279.75 307.11 279.75 307.11 586.5 297.66 586.5 4 L
+N
+181.15 329.79 181.29 326.81 170.78 329.29 181.01 332.76 4 Y
+0 X
+N
+181.15 329.79 181.29 326.81 170.78 329.29 181.01 332.76 4 Y
+V
+172.24 525.75 192.38 525.75 192.38 330.32 181.4 329.8 4 L
+N
+182.65 414.96 182.51 411.99 172.28 415.46 182.79 417.93 4 Y
+N
+182.65 414.96 182.51 411.99 172.28 415.46 182.79 417.93 4 Y
+V
+171.38 486.75 187.13 486.75 187.13 414.75 182.9 414.95 4 L
+N
+448.13 358.5 520.13 370.5 R
+7 X
+V
+0 X
+(\050See Figure 13.5\051) 449.27 363.83 T
+215.63 204.5 287.63 217.25 R
+7 X
+V
+0 X
+(\050See Figure 13.5\051) 216.77 210.58 T
+99 153.25 180 223.5 R
+7 X
+V
+0 X
+N
+94 146 175 218.5 R
+7 X
+V
+0 X
+N
+89 140.75 170 213.5 R
+7 X
+V
+0 X
+N
+88.25 106.25 169.25 134.75 R
+7 X
+V
+0 X
+(overlays \050s\051) 105.29 128.08 T
+(\050array\051) 115.15 118.08 T
+89 195.5 170 195.5 2 L
+7 X
+V
+0 X
+N
+89 177.5 170 177.5 2 L
+7 X
+V
+0 X
+N
+89 159.5 170 159.5 2 L
+7 X
+V
+0 X
+N
+181.16 202.5 181.16 199.52 170.78 202.5 181.16 205.47 4 Y
+N
+181.16 202.5 181.16 199.52 170.78 202.5 181.16 205.47 4 Y
+V
+169.88 260.25 186.38 260.25 186.38 202.5 181.41 202.5 4 L
+N
+93.88 181.75 165.88 193.75 R
+7 X
+V
+0 X
+(\050See Figure 13.6\051) 95.02 187.08 T
+432.34 385.5 432.34 388.48 442.72 385.5 432.34 382.52 4 Y
+N
+432.34 385.5 432.34 388.48 442.72 385.5 432.34 382.52 4 Y
+V
+171.38 507.75 246.38 507.75 246.38 385.5 432.09 385.5 4 L
+N
+2 12 Q
+(...) 353.46 310.5 T
+(...) 231.75 330.56 T
+(...) 108.33 330.81 T
+(...) 108.21 597.19 T
+(...) 108.08 651.07 T
+(...) 346.08 543.69 T
+316.69 538.56 316.69 541.37 326.47 538.56 316.69 535.76 4 Y
+N
+316.69 538.56 316.69 541.37 326.47 538.56 316.69 535.76 4 Y
+V
+316.44 538.56 314.25 538.56 2 L
+N
+194.47 591.55 194.42 594.4 204.41 591.73 194.52 588.7 4 Y
+N
+194.47 591.55 194.42 594.4 204.41 591.73 194.52 588.7 4 Y
+V
+194.22 591.54 192 591.5 2 L
+N
+194.44 597.78 194.4 600.59 204.22 597.92 194.48 594.98 4 Y
+N
+194.44 597.78 194.4 600.59 204.22 597.92 194.48 594.98 4 Y
+V
+194.19 597.78 192 597.75 2 L
+N
+296.69 586.35 296.65 583.63 287.22 586.49 296.73 589.06 4 Y
+N
+296.69 586.35 296.65 583.63 287.22 586.49 296.73 589.06 4 Y
+V
+296.94 586.34 299.06 586.31 2 L
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "98" 110
+%%Page: "99" 111
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(99) 529 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+3 12 Q
+(Figur) 172.78 68.75 T
+(e 13.5 Xkb Geometry Data Structur) 201.23 68.75 T
+(es \050Doodads\051) 387.31 68.75 T
+75.37 89.75 536.62 716 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+164.88 529.75 245.88 713.25 R
+0.5 H
+0 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+164.88 502.75 245.88 520.75 R
+7 X
+V
+2 10 Q
+0 X
+(XkbGeometryRec) 168.99 514.08 T
+164.88 637.75 245.88 637.75 2 L
+7 X
+V
+0 X
+N
+164.88 619.75 245.88 619.75 2 L
+7 X
+V
+0 X
+N
+164.88 601.75 245.88 601.75 2 L
+7 X
+V
+0 X
+N
+164.88 583.75 245.88 583.75 2 L
+7 X
+V
+0 X
+N
+164.88 565.75 245.88 565.75 2 L
+7 X
+V
+0 X
+N
+164.88 547.75 245.88 547.75 2 L
+7 X
+V
+0 X
+N
+(properties) 182.49 626.75 T
+(colors) 182.49 608.75 T
+(shapes) 182.49 590.75 T
+(sections) 182.49 572.75 T
+(doodads) 182.49 554.75 T
+(key_aliases) 182.49 536.75 T
+397.88 371.12 478.88 401.87 R
+7 X
+V
+0 X
+(XkbColorRec\050s\051) 405.33 395.21 T
+(\050array\051) 424.77 385.21 T
+411.62 419 492.62 437 R
+7 X
+V
+0 X
+N
+407.62 415.25 488.62 433.25 R
+7 X
+V
+0 X
+N
+403.38 411.75 484.38 429.75 R
+7 X
+V
+0 X
+N
+399.37 408 480.37 426 R
+7 X
+V
+0 X
+N
+164.62 677.5 245.62 677.5 2 L
+7 X
+V
+0 X
+N
+164.88 659.5 245.88 659.5 2 L
+7 X
+V
+0 X
+N
+164.88 695.5 245.88 695.5 2 L
+7 X
+V
+0 X
+N
+(label_color) 182.49 683.5 T
+(base_color) 182.49 665.5 T
+2 12 Q
+(...) 182.33 646.94 T
+(...) 182.21 700.82 T
+409.5 222 490.5 311 R
+7 X
+V
+0 X
+N
+404.5 217 485.5 306 R
+7 X
+V
+0 X
+N
+399.5 211 480.5 301 R
+7 X
+V
+0 X
+N
+399.5 173.5 480.5 202 R
+7 X
+V
+2 10 Q
+0 X
+(XkbShapeRec\050s\051) 406.12 195.33 T
+(\050array\051) 426.4 185.33 T
+399.5 283 480.5 283 2 L
+7 X
+V
+0 X
+N
+399.5 265 480.5 265 2 L
+7 X
+V
+0 X
+N
+399.5 247 480.5 247 2 L
+7 X
+V
+0 X
+N
+399.5 229 480.5 229 2 L
+7 X
+V
+0 X
+N
+(outlines) 417.5 274 T
+(approx) 417.5 256 T
+(primary) 417.5 238 T
+(bounds) 417.5 220 T
+2 12 Q
+(...) 418.58 290.44 T
+165.12 429.62 246.12 484.38 R
+7 X
+V
+0 X
+N
+156.88 406.38 259.62 422.13 R
+7 X
+V
+2 10 Q
+0 X
+-0.83 (XkbShapeDoodadRec\050s\051) 158.54 415.46 P
+165.12 466.38 246.12 466.38 2 L
+7 X
+V
+0 X
+N
+165.12 448.38 246.12 448.38 2 L
+7 X
+V
+0 X
+N
+(color_ndx) 183.12 454.38 T
+(shape_ndx) 183.12 436.38 T
+2 12 Q
+(...) 185.58 473.44 T
+165.21 348.62 246.21 384.62 R
+7 X
+V
+0 X
+N
+159.96 322.38 255.96 341.12 R
+7 X
+V
+2 10 Q
+0 X
+(XkbTextDoodadRec\050s\051) 161.3 334.46 T
+165.21 366.62 246.21 366.62 2 L
+7 X
+V
+0 X
+N
+(color_ndx) 183.21 354.62 T
+2 12 Q
+(...) 185.67 373.69 T
+165.37 229.25 246.37 302 R
+7 X
+V
+0 X
+N
+149.62 205.25 265.12 223.25 R
+7 X
+V
+2 10 Q
+0 X
+(XkbIndicatorDoodadRec\050s\051) 151.83 216.58 T
+165.37 284 246.37 284 2 L
+7 X
+V
+0 X
+N
+165.37 266 246.37 266 2 L
+7 X
+V
+0 X
+N
+165.37 248 246.37 248 2 L
+7 X
+V
+0 X
+N
+(shape_ndx) 183.37 272 T
+(on_color_ndx) 183.37 254 T
+(off_color_ndx) 183.37 236 T
+2 12 Q
+(...) 185.83 291.07 T
+165.12 123.5 246.12 178.25 R
+7 X
+V
+0 X
+N
+156.12 97.25 259.62 113.75 R
+7 X
+V
+2 10 Q
+0 X
+(XkbLogoDoodadRec\050s\051) 159.83 107.08 T
+165.12 160.25 246.12 160.25 2 L
+7 X
+V
+0 X
+N
+165.12 142.25 246.12 142.25 2 L
+7 X
+V
+0 X
+N
+(color_ndx) 183.12 148.25 T
+(shape_ndx) 183.12 130.25 T
+2 12 Q
+(...) 185.58 167.32 T
+391.83 281.96 389.71 284.05 399.12 289.35 393.95 279.87 4 Y
+10 X
+N
+391.83 281.96 389.71 284.05 399.12 289.35 393.95 279.87 4 Y
+V
+246 134 391.65 281.78 2 L
+7 X
+V
+10 X
+N
+388.54 290.99 388.2 293.95 398.85 292.15 388.87 288.03 4 Y
+N
+388.54 290.99 388.2 293.95 398.85 292.15 388.87 288.03 4 Y
+V
+246 275 388.29 290.96 2 L
+7 X
+V
+10 X
+N
+391.46 303.65 393.47 305.83 399.09 296.61 389.44 301.46 4 Y
+N
+391.46 303.65 393.47 305.83 399.09 296.61 389.44 301.46 4 Y
+V
+246 437.75 391.27 303.82 2 L
+7 X
+V
+10 X
+N
+387.95 427.27 388.55 430.19 398.11 425.18 387.35 424.36 4 Y
+N
+387.95 427.27 388.55 430.19 398.11 425.18 387.35 424.36 4 Y
+V
+246 456.5 387.7 427.32 2 L
+7 X
+V
+10 X
+N
+388.59 417.66 387.44 420.41 398.17 421.65 389.73 414.91 4 Y
+N
+388.59 417.66 387.44 420.41 398.17 421.65 389.73 414.91 4 Y
+V
+246 358.25 388.36 417.56 2 L
+7 X
+V
+10 X
+N
+391.21 409.33 389.06 411.38 398.38 416.84 393.37 407.28 4 Y
+N
+391.21 409.33 389.06 411.38 398.38 416.84 393.37 407.28 4 Y
+V
+246 257 391.04 409.15 2 L
+7 X
+V
+10 X
+N
+391.59 405.24 389.34 407.2 398.41 413.07 393.83 403.29 4 Y
+N
+391.59 405.24 389.34 407.2 398.41 413.07 393.83 403.29 4 Y
+V
+246 238.25 391.42 405.06 2 L
+7 X
+V
+10 X
+N
+393.26 401.04 390.7 402.55 398.54 409.97 395.82 399.52 4 Y
+N
+393.26 401.04 390.7 402.55 398.54 409.97 395.82 399.52 4 Y
+V
+246 152 393.13 400.82 2 L
+7 X
+V
+10 X
+N
+435.75 437.03 438.73 437.03 435.75 426.65 432.78 437.03 4 Y
+0 X
+N
+435.75 437.03 438.73 437.03 435.75 426.65 432.78 437.03 4 Y
+V
+246 610.25 435.75 610.25 435.75 437.28 3 L
+N
+492.04 295.25 492.04 292.27 481.66 295.25 492.04 298.22 4 Y
+N
+492.04 295.25 492.04 292.27 481.66 295.25 492.04 298.22 4 Y
+V
+246 591.5 516 591.5 516 295.25 492.29 295.25 4 L
+N
+2 10 Q
+(doodads array) 91.5 302.75 T
+112.5 317 112.5 321.5 112.5 487.25 152.25 487.25 4 L
+N
+110.75 258 110.75 253.72 110.75 96 150.5 96 4 L
+N
+388.31 427.25 389.03 430.06 398.12 424.73 387.58 424.43 4 Y
+N
+388.31 427.25 389.03 430.06 398.12 424.73 387.58 424.43 4 Y
+V
+388.06 427.31 385.88 427.87 2 L
+N
+388.55 417.9 387.5 420.55 397.78 421.54 389.59 415.25 4 Y
+N
+388.55 417.9 387.5 420.55 397.78 421.54 389.59 415.25 4 Y
+V
+388.31 417.81 386.25 417 2 L
+N
+391.36 409.8 389.27 411.81 398.37 417.1 393.45 407.79 4 Y
+N
+391.36 409.8 389.27 411.81 398.37 417.1 393.45 407.79 4 Y
+V
+391.19 409.62 389.63 408 2 L
+N
+391.54 404.46 389.23 406.33 398.06 412.54 393.86 402.6 4 Y
+N
+391.54 404.46 389.23 406.33 398.06 412.54 393.86 402.6 4 Y
+V
+391.39 404.27 389.25 401.62 2 L
+N
+393.27 401.46 390.85 403.07 398.87 409.87 395.68 399.85 4 Y
+N
+393.27 401.46 390.85 403.07 398.87 409.87 395.68 399.85 4 Y
+V
+393.13 401.25 391.88 399.37 2 L
+N
+391.93 303.2 393.85 305.2 398.91 296.5 390.01 301.2 4 Y
+N
+391.93 303.2 393.85 305.2 398.91 296.5 390.01 301.2 4 Y
+V
+391.75 303.37 390.19 304.87 2 L
+N
+389.03 291.09 388.71 293.85 398.66 292.21 389.35 288.33 4 Y
+N
+389.03 291.09 388.71 293.85 398.66 292.21 389.35 288.33 4 Y
+V
+388.78 291.06 386.62 290.81 2 L
+N
+391.85 282.19 389.72 284.28 399.11 289.6 393.97 280.11 4 Y
+N
+391.85 282.19 389.72 284.28 399.11 289.6 393.97 280.11 4 Y
+V
+391.67 282.02 390 280.31 2 L
+N
+(may contain) 91.5 291.68 T
+(any of these) 91.5 280.62 T
+(doodad types) 91.5 269.56 T
+(XkbGeometryRec,) 360 678.75 T
+(repeated from) 359.25 643.03 T
+(Figure 16.4) 360 631.12 T
+(XkbColorRec, and) 360 666.84 T
+(XkbShapeRec) 360 654.93 T
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "99" 111
+%%Page: "100" 112
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(100) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+3 12 Q
+(Figur) 172.18 326.25 T
+(e 13.6 Xkb Geometry Data Structur) 200.63 326.25 T
+(es \050Ov) 386.71 326.25 T
+(erlays\051) 418.92 326.25 T
+2 11 Q
+(typedef struct _XkbGeometry {) 108 298.92 T
+(/* top-le) 288 298.92 T
+(v) 324.7 298.92 T
+(el k) 330.03 298.92 T
+(e) 346.11 298.92 T
+(yboard geometry structure */) 350.83 298.92 T
+(Atom) 126 285.92 T
+(name;) 207 285.92 T
+(/* k) 288 285.92 T
+(e) 304.7 285.92 T
+(yboard name */) 309.42 285.92 T
+(unsigned short) 126 272.92 T
+(width_mm;) 207 272.92 T
+(/* k) 288 272.92 T
+(e) 304.7 272.92 T
+(yboard width in) 309.42 272.92 T
+2 9.6 Q
+(mm) 381.83 277.72 T
+2 11 Q
+(/) 396.77 272.92 T
+2 9.6 Q
+(10) 399.83 269.92 T
+2 11 Q
+( */) 409.42 272.92 T
+(unsigned short) 126 259.92 T
+(height_mm;) 207 259.92 T
+(/* k) 288 259.92 T
+(e) 304.7 259.92 T
+(yboard height in) 309.42 259.92 T
+2 9.6 Q
+(mm) 384.27 264.72 T
+2 11 Q
+(/) 399.21 259.92 T
+2 9.6 Q
+(10) 402.27 256.92 T
+2 11 Q
+( */) 411.87 259.92 T
+(char *) 126 246.92 T
+(label_font;) 207 246.92 T
+(/* font for k) 288 246.92 T
+(e) 340.74 246.92 T
+(y labels */) 345.46 246.92 T
+(XkbColorPtr) 126 233.92 T
+(label_color;) 207 233.92 T
+(/* color for k) 288 233.92 T
+(e) 345.63 233.92 T
+(y labels - pointer into colors array */) 350.35 233.92 T
+(XkbColorPtr) 126 220.92 T
+(base_color;) 207 220.92 T
+(/* color for basic k) 288 220.92 T
+(e) 370.98 220.92 T
+(yboard - pointer into colors array */) 375.7 220.92 T
+(unsigned short) 126 207.92 T
+(sz_properties;) 207 207.92 T
+(/* size of properties array */) 288 207.92 T
+(unsigned short) 126 194.92 T
+(sz_colors;) 207 194.92 T
+(/* size of colors array */) 288 194.92 T
+(unsigned short) 126 181.92 T
+(sz_shapes;) 207 181.92 T
+(/* size of shapes array */) 288 181.92 T
+(unsigned short) 126 168.92 T
+(sz_sections;) 207 168.92 T
+(/* size of sections array */) 288 168.92 T
+(unsigned short) 126 155.92 T
+(sz_doodads;) 207 155.92 T
+(/* size of doodads array */) 288 155.92 T
+(unsigned short) 126 142.92 T
+(sz_k) 207 142.92 T
+(e) 227.05 142.92 T
+(y_aliases;) 231.77 142.92 T
+(/* size of k) 288 142.92 T
+(e) 336.47 142.92 T
+(y aliases array */) 341.18 142.92 T
+(unsigned short) 126 129.92 T
+(num_properties;) 207 129.92 T
+(/* number of properties in the properties array */) 288 129.92 T
+(unsigned short) 126 116.92 T
+(num_colors;) 207 116.92 T
+(/* number of colors in the colors array */) 288 116.92 T
+(unsigned short) 126 103.92 T
+(num_shapes;) 207 103.92 T
+(/* number of shapes in the shapes array */) 288 103.92 T
+(unsigned short) 126 90.92 T
+(num_sections;) 207 90.92 T
+(/* number of sections in the sections array */) 288 90.92 T
+(unsigned short) 126 77.92 T
+(num_doodads;) 207 77.92 T
+(/* number of doodads in the doodads array */) 288 77.92 T
+74.25 347.25 537.75 708 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+94.56 615.75 175.56 704.75 R
+7 X
+0 0 0 1 0 0 0 K
+V
+0.5 H
+0 Z
+0 X
+N
+89.56 610.75 170.56 699.75 R
+7 X
+V
+0 X
+N
+84.56 604.75 165.56 694.75 R
+7 X
+V
+0 X
+N
+84.56 570.25 165.56 598.75 R
+7 X
+V
+2 10 Q
+0 X
+(XkbSectionRec\050s\051) 88.4 592.08 T
+(\050array\051) 111.46 582.08 T
+84.56 676.75 165.56 676.75 2 L
+7 X
+V
+0 X
+N
+84.56 658.75 165.56 658.75 2 L
+7 X
+V
+0 X
+N
+84.56 640.75 165.56 640.75 2 L
+7 X
+V
+0 X
+N
+84.56 622.75 165.56 622.75 2 L
+7 X
+V
+0 X
+N
+(rows) 102.56 667.75 T
+(doodads) 102.56 649.75 T
+(bounds) 102.56 631.75 T
+(overlays) 102.56 613.75 T
+264.56 631.25 345.56 688 R
+7 X
+V
+0 X
+N
+259.56 626.25 340.56 683 R
+7 X
+V
+0 X
+N
+254.56 623.25 335.56 678 R
+7 X
+V
+0 X
+N
+255.31 586.5 336.31 615 R
+7 X
+V
+0 X
+(XkbRowRec\050s\051) 264.71 608.33 T
+(\050array\051) 282.21 598.33 T
+254.56 660 335.56 660 2 L
+7 X
+V
+0 X
+N
+254.56 642 335.56 642 2 L
+7 X
+V
+0 X
+N
+(keys) 272.56 651 T
+(bounds) 273.31 630 T
+242.97 666.75 242.97 669.73 253.34 666.75 242.97 663.77 4 Y
+N
+242.97 666.75 242.97 669.73 253.34 666.75 242.97 663.77 4 Y
+V
+166.94 666.75 242.72 666.75 2 L
+7 X
+V
+0 X
+N
+2 12 Q
+(...) 273.56 668.57 T
+(...) 103.89 684.57 T
+94.62 469.12 175.62 539.38 R
+7 X
+V
+0 X
+N
+89.62 461.87 170.62 534.37 R
+7 X
+V
+0 X
+N
+84.62 456.62 165.62 529.37 R
+7 X
+V
+0 X
+N
+83.87 422.12 164.87 450.62 R
+7 X
+V
+2 10 Q
+0 X
+(XkbOverlayRec \050s\051) 85.36 443.96 T
+(\050array\051) 110.77 433.96 T
+84.62 511.37 165.62 511.37 2 L
+7 X
+V
+0 X
+N
+84.62 493.37 165.62 493.37 2 L
+7 X
+V
+0 X
+N
+84.62 475.37 165.62 475.37 2 L
+7 X
+V
+0 X
+N
+(section_under) 102.62 500.37 T
+(rows) 102.62 482.37 T
+(bounds) 102.62 464.37 T
+2 12 Q
+(...) 103.64 519.81 T
+262.5 446 343.5 502 R
+7 X
+V
+0 X
+N
+257.5 441 338.5 497 R
+7 X
+V
+0 X
+N
+252.5 436.5 333.5 492 R
+7 X
+V
+0 X
+N
+243.5 400.5 341.75 429 R
+7 X
+V
+2 10 Q
+0 X
+(XkbOverlayRowRec \050s\051) 244.16 422.33 T
+(\050array\051) 279.02 412.33 T
+252.5 474 333.5 474 2 L
+7 X
+V
+0 X
+N
+(row_under) 270.5 463 T
+2 12 Q
+(...) 271.52 482.44 T
+253.5 374.38 334.5 392.38 R
+7 X
+V
+0 X
+N
+253.5 349.5 334.5 367.5 R
+7 X
+V
+2 10 Q
+0 X
+(XkbBoundsRec) 262.33 360.83 T
+396.63 401.56 491.88 432.31 R
+7 X
+V
+0 X
+(XkbOv) 398.43 425.64 T
+(erlayK) 427.72 425.64 T
+(e) 454.68 425.64 T
+(yRec\050s\051) 458.97 425.64 T
+(\050array\051) 430.65 415.64 T
+416.38 449.44 497.38 467.44 R
+7 X
+V
+0 X
+N
+412.38 445.69 493.38 463.69 R
+7 X
+V
+0 X
+N
+408.13 442.19 489.13 460.19 R
+7 X
+V
+0 X
+N
+404.12 438.44 485.12 456.44 R
+7 X
+V
+0 X
+N
+177.78 689.25 177.78 686.27 167.41 689.25 177.78 692.23 4 Y
+N
+177.78 689.25 177.78 686.27 167.41 689.25 177.78 692.23 4 Y
+V
+166.5 500.25 200.25 500.25 200.25 689.25 178.03 689.25 4 L
+N
+241.47 483.75 241.47 486.73 251.84 483.75 241.47 480.77 4 Y
+N
+241.47 483.75 241.47 486.73 251.84 483.75 241.47 480.77 4 Y
+V
+165.75 483.75 241.22 483.75 2 L
+N
+392.97 447 392.97 449.97 403.35 447 392.97 444.02 4 Y
+N
+392.97 447 392.97 449.97 403.35 447 392.97 444.02 4 Y
+V
+333.75 447 392.72 447 2 L
+N
+245.42 390.37 247.5 392.51 252.85 383.13 243.34 388.24 4 Y
+N
+245.42 390.37 247.5 392.51 252.85 383.13 243.34 388.24 4 Y
+V
+165.75 468 245.24 390.55 2 L
+N
+253.25 454.75 334.25 454.75 2 L
+N
+(keys) 271.75 442.25 T
+346.54 671.25 346.54 668.27 336.16 671.25 346.54 674.23 4 Y
+N
+346.54 671.25 346.54 668.27 336.16 671.25 346.54 674.23 4 Y
+V
+333.75 465 381 465 381 671.25 346.79 671.25 4 L
+N
+(repeated from) 417.27 634.97 T
+(Figure 16.4) 418.02 623.06 T
+(XkbSectionRec and) 418.02 658.78 T
+(XkbRowRec) 418.02 646.88 T
+254.25 555 335.25 573 R
+7 X
+V
+0 X
+N
+254.25 530.12 335.25 548.12 R
+7 X
+V
+0 X
+(XkbBoundsRec) 263.08 541.46 T
+346.53 564 346.53 561.02 336.16 564 346.53 566.98 4 Y
+N
+346.53 564 346.53 561.02 336.16 564 346.53 566.98 4 Y
+V
+335.25 636 353.25 636 353.25 564 346.78 564 4 L
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "100" 112
+%%Page: "101" 113
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(101) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+(unsigned short) 126 712.67 T
+(num_k) 207 712.67 T
+(e) 237.45 712.67 T
+(y_aliases;) 242.17 712.67 T
+(/* number of k) 288 712.67 T
+(e) 352.97 712.67 T
+(y aliases in the k) 357.68 712.67 T
+(e) 430.9 712.67 T
+(y */) 435.62 712.67 T
+(XkbPropertyPtr) 126 699.67 T
+(properties;) 207 699.67 T
+(/* properties array */) 288 699.67 T
+(XkbColorPtr) 126 686.67 T
+(colors;) 207 686.67 T
+(/* colors array */) 288 686.67 T
+(XkbShapePtr) 126 673.67 T
+(shapes;) 207 673.67 T
+(/* shapes array */) 288 673.67 T
+(XkbSectionPtr) 126 660.67 T
+(sections;) 207 660.67 T
+(/* sections array */) 288 660.67 T
+(XkbDoodadPtr) 126 647.67 T
+(doodads;) 207 647.67 T
+(/* doodads array */) 288 647.67 T
+(XkbK) 126 634.67 T
+(e) 152.61 634.67 T
+(yAliasPtr) 157.33 634.67 T
+(k) 207 634.67 T
+(e) 212.39 634.67 T
+(y_aliases;) 217.11 634.67 T
+(/* k) 288 634.67 T
+(e) 304.7 634.67 T
+(y aliases array */) 309.42 634.67 T
+(}) 108 621.67 T
+3 F
+(XkbGeometryRec) 116.03 621.67 T
+2 F
+( *XkbGeometryPtr;) 200.95 621.67 T
+2 12 Q
+-0.41 (The) 108 602 P
+1 F
+-0.41 (doodads) 129.26 602 P
+2 F
+-0.41 ( array is only for doodads not contained in any of the) 169.92 602 P
+1 F
+-0.41 (sections) 422.36 602 P
+2 F
+-0.41 ( that has its own) 461.02 602 P
+1 F
+(doodads) 108 589 T
+2 F
+(. The key aliases contained in the) 148.67 589 T
+1 F
+(k) 311.3 589 T
+(e) 316.51 589 T
+(y_aliases) 321.48 589 T
+2 F
+( array take precedence over any) 366.14 589 T
+2 11 Q
+(de\336ned in the k) 108 576 T
+(e) 176.02 576 T
+(ycodes component) 180.74 576 T
+2 12 Q
+( of the keyboard description.) 262.92 576 T
+2 11 Q
+(typedef struct _XkbProperty {) 108 555.67 T
+(char *) 126 542.67 T
+(name;) 207 542.67 T
+(/* property name */) 288 542.67 T
+(char *) 126 529.67 T
+(v) 207 529.67 T
+(alue;) 212.23 529.67 T
+(/* property v) 288 529.67 T
+(alue */) 344.55 529.67 T
+(}) 108 516.67 T
+3 F
+(XkbPr) 116.03 516.67 T
+(opertyRec) 147.61 516.67 T
+2 F
+(,*XkbPropertyPtr;) 195.87 516.67 T
+(typedef struct _XkbColor {) 108 496.67 T
+(unsigned int) 126 483.67 T
+(pix) 207 483.67 T
+(el;) 220.89 483.67 T
+(/* color */) 288 483.67 T
+(char *) 126 470.67 T
+(spec;) 207 470.67 T
+(/* color name */) 288 470.67 T
+(}) 108 457.67 T
+3 F
+(XkbColorRec) 116.03 457.67 T
+2 F
+(,*XkbColorPtr;) 180.8 457.67 T
+(typedef struct _XkbK) 108 437.67 T
+(e) 203.04 437.67 T
+(yAliasRec {) 207.76 437.67 T
+(char) 126 424.67 T
+(real[XkbK) 189 424.67 T
+(e) 235.76 424.67 T
+(yNameLength];) 240.48 424.67 T
+(/* real name of the k) 324 424.67 T
+(e) 414.62 424.67 T
+(y */) 419.34 424.67 T
+(char) 126 411.67 T
+(alias[XkbK) 189 411.67 T
+(e) 239.43 411.67 T
+(yNameLength];) 244.15 411.67 T
+(/* alias for the k) 324 411.67 T
+(e) 395.38 411.67 T
+(y */) 400.1 411.67 T
+(}) 108 398.67 T
+3 F
+(XkbK) 116.03 398.67 T
+(eyAliasRec) 144.49 398.67 T
+2 F
+(,*XkbK) 196.42 398.67 T
+(e) 231.28 398.67 T
+(yAliasPtr;) 236 398.67 T
+2 12 Q
+(typedef struct _XkbPoint {) 108 378 T
+(/* x,y coordinates */) 288 378 T
+(short) 126 364 T
+(x;) 207 364 T
+(short) 126 350 T
+(y;) 207 350 T
+(}) 108 336 T
+3 11 Q
+(XkbP) 116.76 336 T
+(ointRec) 143.43 336 T
+2 12 Q
+(, *XkbPointPtr;) 179.48 336 T
+2 11 Q
+(typedef struct _XkbOutline {) 108 315.67 T
+(unsigned short) 126 302.67 T
+(num_points;) 207 302.67 T
+(/* number of points in the outline */) 288 302.67 T
+(unsigned short) 126 289.67 T
+(sz_points;) 207 289.67 T
+(/* size of the points array */) 288 289.67 T
+(unsigned short) 126 276.67 T
+(corner_radius;) 207 276.67 T
+(/* dra) 288 276.67 T
+(w corners as circles with this radius */) 313.19 276.67 T
+(XkbPointPtr) 126 263.67 T
+(points;) 207 263.67 T
+(/* array of points de\336ning the outline */) 288 263.67 T
+(}) 108 250.67 T
+3 F
+(XkbOutlineRec) 116.03 250.67 T
+2 F
+(, *XkbOutlinePtr;) 189.37 250.67 T
+(typedef struct _XkbBounds {) 108 230.67 T
+(short) 126 217.67 T
+(x1,y1;) 207 217.67 T
+(/* upper left corner of the bounds, in) 288 217.67 T
+2 9.6 Q
+(mm) 452.05 222.47 T
+2 11 Q
+(/) 466.99 217.67 T
+2 9.6 Q
+(10) 470.05 214.67 T
+2 11 Q
+( */) 479.65 217.67 T
+(short) 126 204.67 T
+(x2,y2;) 207 204.67 T
+(/* lo) 288 204.67 T
+(wer right corner of the bounds, in) 307.59 204.67 T
+2 9.6 Q
+(mm) 457.89 209.47 T
+2 11 Q
+(/) 472.83 204.67 T
+2 9.6 Q
+(10) 475.89 201.67 T
+2 11 Q
+( */) 485.49 204.67 T
+(}) 108 191.67 T
+3 F
+(XkbBoundsRec) 116.03 191.67 T
+2 F
+(, *XkbBoundsPtr;) 189.38 191.67 T
+(typedef struct _XkbShape {) 108 171.67 T
+(Atom) 126 158.67 T
+(name;) 207 158.67 T
+(/* shape\325) 279 158.67 T
+(s name */) 318.41 158.67 T
+(unsigned short) 126 145.67 T
+(num_outlines;) 207 145.67 T
+(/* number of outlines for the shape */) 279 145.67 T
+(unsigned short) 126 132.67 T
+(sz_outlines;) 207 132.67 T
+(/* size of the outlines array */) 279 132.67 T
+(XkbOutlinePtr) 126 119.67 T
+(outlines;) 207 119.67 T
+(/* array of outlines for the shape */) 279 119.67 T
+(XkbOutlinePtr) 126 106.67 T
+(approx;) 207 106.67 T
+(/* pointer into the array to the approximating outline */) 279 106.67 T
+(XkbOutlinePtr) 126 93.67 T
+(primary;) 207 93.67 T
+(/* pointer into the array to the primary outline */) 279 93.67 T
+(XkbBoundsRec) 126 80.67 T
+(bounds;) 207 80.67 T
+(/* bounding box for the shape; encompasses all outlines */) 279 80.67 T
+(}) 108 67.67 T
+3 F
+(XkbShapeRec) 116.03 67.67 T
+2 F
+(, *XkbShapePtr;) 182.65 67.67 T
+FMENDPAGE
+%%EndPage: "101" 113
+%%Page: "102" 114
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(102) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+-0.16 (If) 108 712 P
+1 F
+-0.16 (appr) 118.84 712 P
+-0.16 (ox) 140.96 712 P
+2 F
+-0.16 ( and/or) 152.29 712 P
+1 F
+-0.16 (primary) 188.64 712 P
+2 F
+-0.16 ( is) 227.31 712 P
+5 F
+-0.34 -0.6 (NULL) 241 712 B
+2 F
+-0.16 (, the default value is used. The default primary outline is) 267.4 712 P
+(the first element in the outlines array, as is the default approximating outline.) 108 699 T
+2 11 Q
+(typedef struct _XkbK) 108 678.67 T
+(e) 203.04 678.67 T
+(y {) 207.76 678.67 T
+(/* k) 288 678.67 T
+(e) 304.7 678.67 T
+(y in a ro) 309.42 678.67 T
+(w */) 345.5 678.67 T
+(XkbK) 126 665.67 T
+(e) 152.61 665.67 T
+(yNameRec) 157.33 665.67 T
+(name;) 216 665.67 T
+(/* k) 288 665.67 T
+(e) 304.7 665.67 T
+(y name */) 309.42 665.67 T
+(short) 126 652.67 T
+(g) 216 652.67 T
+(ap;) 221.45 652.67 T
+(/* g) 288 652.67 T
+(ap in) 304.75 652.67 T
+2 9.6 Q
+(mm) 329.2 657.47 T
+2 11 Q
+(/) 344.13 652.67 T
+2 9.6 Q
+(10) 347.19 649.67 T
+2 11 Q
+( from pre) 356.79 652.67 T
+(vious k) 397.45 652.67 T
+(e) 429.42 652.67 T
+(y in ro) 434.14 652.67 T
+(w */) 462.59 652.67 T
+(unsigned char) 126 639.67 T
+(shape_ndx;) 216 639.67 T
+(/* inde) 288 639.67 T
+(x of shape for k) 318.08 639.67 T
+(e) 387.01 639.67 T
+(y */) 391.73 639.67 T
+(unsigned char) 126 626.67 T
+(color_ndx;) 216 626.67 T
+(/* inde) 288 626.67 T
+(x of color for k) 318.08 626.67 T
+(e) 384.57 626.67 T
+(y body */) 389.29 626.67 T
+(}) 108 613.67 T
+3 F
+(XkbK) 116.03 613.67 T
+(eyRec) 144.49 613.67 T
+2 F
+(, *XkbK) 172.58 613.67 T
+(e) 210.19 613.67 T
+(yPtr;) 214.91 613.67 T
+(typedef struct _XkbRo) 108 593.67 T
+(w {) 207.93 593.67 T
+(/* ro) 261 593.67 T
+(w in a section */) 281.2 593.67 T
+(short) 126 580.67 T
+(top;) 207 580.67 T
+(/* top coordinate of ro) 261 580.67 T
+(w origin, relati) 359.1 580.67 T
+(v) 423.9 580.67 T
+(e to section\325) 429.23 580.67 T
+(s origin */) 482.4 580.67 T
+(short) 126 567.67 T
+(left;) 207 567.67 T
+(/* left coordinate of ro) 261 567.67 T
+(w origin, relati) 359.7 567.67 T
+(v) 424.5 567.67 T
+(e to section\325) 429.84 567.67 T
+(s origin */) 483 567.67 T
+(unsigned short) 126 554.67 T
+(num_k) 207 554.67 T
+(e) 237.45 554.67 T
+(ys;) 242.17 554.67 T
+(/* number of k) 261 554.67 T
+(e) 325.97 554.67 T
+(ys in the k) 330.68 554.67 T
+(e) 376.1 554.67 T
+(ys array */) 380.82 554.67 T
+(unsigned short) 126 541.67 T
+(sz_k) 207 541.67 T
+(e) 227.05 541.67 T
+(ys;) 231.77 541.67 T
+(/* size of the k) 261 541.67 T
+(e) 325.66 541.67 T
+(ys array */) 330.38 541.67 T
+(int) 126 528.67 T
+(v) 207 528.67 T
+(ertical;) 212.34 528.67 T
+(/*) 261 528.67 T
+5 12 Q
+-0.6 (True) 272.31 528.67 S
+2 11 Q
+(=>v) 298.71 528.67 T
+(ertical ro) 316.45 528.67 T
+(w) 355.58 528.67 T
+(,) 362.81 528.67 T
+5 12 Q
+-0.6 (False) 368.31 528.67 S
+2 11 Q
+(=>horizontal ro) 401.31 528.67 T
+(w */) 469.96 528.67 T
+(XkbK) 126 515.67 T
+(e) 152.61 515.67 T
+(yPtr) 157.33 515.67 T
+(k) 207 515.67 T
+(e) 212.39 515.67 T
+(ys;) 217.11 515.67 T
+(/* array of k) 261 515.67 T
+(e) 314.95 515.67 T
+(ys in the ro) 319.67 515.67 T
+(w*/) 368.59 515.67 T
+(XkbBoundsRec) 126 502.67 T
+(bounds;) 207 502.67 T
+(/* bounding box for the ro) 261 502.67 T
+(w */) 376.52 502.67 T
+(}) 108 489.67 T
+3 F
+(XkbRo) 116.03 489.67 T
+(wRec) 149.54 489.67 T
+2 F
+(, *XkbRo) 175.19 489.67 T
+(wPtr;) 217.69 489.67 T
+1 12 Q
+(top) 108 470 T
+2 F
+( and) 123.34 470 T
+1 F
+(left) 146.66 470 T
+2 F
+( are in) 162 470 T
+2 9.6 Q
+(mm) 194.99 474.8 T
+2 11 Q
+(/) 209.93 470 T
+2 9.6 Q
+(10) 212.98 467 T
+2 12 Q
+(.) 222.58 470 T
+2 11 Q
+(typedef struct _XkbOv) 108 449.67 T
+(erlayRec {) 208.65 449.67 T
+(Atom) 126 436.67 T
+(name;) 225 436.67 T
+(/* o) 297 436.67 T
+(v) 313.64 436.67 T
+(erlay name */) 318.98 436.67 T
+(XkbSectionPtr) 126 423.67 T
+(section_under;) 225 423.67 T
+(/* the section under this o) 297 423.67 T
+(v) 410.19 423.67 T
+(erlay */) 415.52 423.67 T
+(unsigned short) 126 410.67 T
+(num_ro) 225 410.67 T
+(ws;) 258.95 410.67 T
+(/* number of ro) 297 410.67 T
+(ws in the ro) 365.46 410.67 T
+(ws array */) 416.82 410.67 T
+(unsigned short) 126 397.67 T
+(sz_ro) 225 397.67 T
+(ws;) 248.55 397.67 T
+(/* size of the ro) 297 397.67 T
+(ws array */) 365.16 397.67 T
+(XkbOv) 126 384.67 T
+(erlayRo) 158.22 384.67 T
+(wPtr) 192.77 384.67 T
+(ro) 225 384.67 T
+(ws;) 233.89 384.67 T
+(/* array of ro) 297 384.67 T
+(ws in the o) 354.45 384.67 T
+(v) 402.26 384.67 T
+(erlay */) 407.59 384.67 T
+(XkbBoundsPtr) 126 371.67 T
+(bounds;) 225 371.67 T
+(/* bounding box for the o) 297 371.67 T
+(v) 408.97 371.67 T
+(erlay */) 414.3 371.67 T
+(}) 108 358.67 T
+3 F
+(XkbOv) 116.03 358.67 T
+(erlayRec) 150.15 358.67 T
+2 F
+(,*XkbOv) 191.69 358.67 T
+(erlayPtr;) 232.16 358.67 T
+(typedef struct _XkbOv) 108 338.67 T
+(erlayRo) 208.65 338.67 T
+(w {) 243.2 338.67 T
+(unsigned short) 126 325.67 T
+(ro) 225 325.67 T
+(w_under;) 233.89 325.67 T
+(/* inde) 288 325.67 T
+(x into the ro) 318.08 325.67 T
+(w under this o) 371.28 325.67 T
+(v) 433.75 325.67 T
+(erlay ro) 439.08 325.67 T
+(w */) 472.71 325.67 T
+(unsigned short) 126 312.67 T
+(num_k) 225 312.67 T
+(e) 255.45 312.67 T
+(ys;) 260.17 312.67 T
+(/* number of k) 288 312.67 T
+(e) 352.97 312.67 T
+(ys in the k) 357.68 312.67 T
+(e) 403.1 312.67 T
+(ys array */) 407.82 312.67 T
+(unsigned short) 126 299.67 T
+(sz_k) 225 299.67 T
+(e) 245.05 299.67 T
+(ys;) 249.77 299.67 T
+(/* size of the k) 288 299.67 T
+(e) 352.66 299.67 T
+(ys array */) 357.38 299.67 T
+(XkbOv) 126 286.67 T
+(erlayK) 158.22 286.67 T
+(e) 187.88 286.67 T
+(yPtr) 192.59 286.67 T
+(k) 225 286.67 T
+(e) 230.39 286.67 T
+(ys;) 235.11 286.67 T
+(/* array of k) 288 286.67 T
+(e) 341.95 286.67 T
+(ys in the o) 346.67 286.67 T
+(v) 392.04 286.67 T
+(erlay ro) 397.37 286.67 T
+(w */) 431 286.67 T
+(}) 108 273.67 T
+3 F
+(XkbOv) 116.03 273.67 T
+(erlayRo) 150.15 273.67 T
+(wRec) 187.31 273.67 T
+2 F
+(,*XkbOv) 212.96 273.67 T
+(erlayRo) 253.43 273.67 T
+(wPtr;) 287.98 273.67 T
+1 12 Q
+-0.13 (r) 108 254 P
+-0.13 (ow_under) 112.13 254 P
+2 F
+-0.13 ( is an index into the array of) 160.13 254 P
+1 F
+-0.13 (r) 297.07 254 P
+-0.13 (ows) 301.19 254 P
+2 F
+-0.13 ( in the section under this overlay. The section) 319.86 254 P
+(under this overlay row is the one pointed to by) 108 241 T
+1 F
+(section_under) 334.64 241 T
+2 F
+( in this overlay row\325s) 402.64 241 T
+5 F
+-0.6 (XkbOverlayRec) 108 228 S
+2 F
+(.) 193.8 228 T
+2 11 Q
+(typedef struct _XkbOv) 108 207.67 T
+(erlayK) 208.65 207.67 T
+(e) 238.31 207.67 T
+(y {) 243.02 207.67 T
+(XkbK) 126 194.67 T
+(e) 152.61 194.67 T
+(yNameRec) 157.33 194.67 T
+(o) 243 194.67 T
+(v) 248.34 194.67 T
+(er;) 253.67 194.67 T
+(/* name of this o) 306 194.67 T
+(v) 379.78 194.67 T
+(erlay k) 385.11 194.67 T
+(e) 415.24 194.67 T
+(y */) 419.96 194.67 T
+(XkbK) 126 181.67 T
+(e) 152.61 181.67 T
+(yNameRec) 157.33 181.67 T
+(under;) 243 181.67 T
+(/* name of the k) 306 181.67 T
+(e) 377.38 181.67 T
+(y under this o) 382.1 181.67 T
+(v) 442.12 181.67 T
+(erlay k) 447.46 181.67 T
+(e) 477.59 181.67 T
+(y */) 482.31 181.67 T
+(}) 108 168.67 T
+3 F
+(XkbOv) 116.03 168.67 T
+(erlayK) 150.15 168.67 T
+(eyRec) 182.26 168.67 T
+2 F
+(,*XkbOv) 210.35 168.67 T
+(erlayK) 250.82 168.67 T
+(e) 280.48 168.67 T
+(yPtr;) 285.2 168.67 T
+(typedef struct _XkbSection {) 108 148.67 T
+(Atom) 126 135.67 T
+(name;) 243 135.67 T
+(/* section name */) 315 135.67 T
+( unsigned char) 126 122.67 T
+(priority;) 243 122.67 T
+(/* dra) 315 122.67 T
+(wing priority) 340.19 122.67 T
+(, 0=>highest, 255=>lo) 397.23 122.67 T
+(west */) 495.1 122.67 T
+(short) 126 109.67 T
+(top;) 243 109.67 T
+(/* top coordinate of section origin */) 315 109.67 T
+(short) 126 96.67 T
+(left;) 243 96.67 T
+(/* left coordinate of ro) 315 96.67 T
+(w origin */) 413.7 96.67 T
+(unsigned short) 126 83.67 T
+(width;) 243 83.67 T
+(/* section width, in) 315 83.67 T
+2 9.6 Q
+(mm) 402.09 88.47 T
+2 11 Q
+(/) 417.02 83.67 T
+2 9.6 Q
+(10) 420.08 80.67 T
+2 11 Q
+( */) 429.68 83.67 T
+(unsigned short) 126 70.67 T
+(height;) 243 70.67 T
+(/* section height, in) 315 70.67 T
+2 9.6 Q
+(mm) 404.53 75.47 T
+2 11 Q
+(/) 419.47 70.67 T
+2 9.6 Q
+(10) 422.52 67.67 T
+2 11 Q
+( */) 432.12 70.67 T
+FMENDPAGE
+%%EndPage: "102" 114
+%%Page: "103" 115
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(103) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+(short) 126 712.67 T
+(angle;) 243 712.67 T
+(/* angle of section rotation, counterclockwise */) 315 712.67 T
+(unsigned short) 126 699.67 T
+(num_ro) 243 699.67 T
+(ws;) 276.95 699.67 T
+(/* number of ro) 315 699.67 T
+(ws in the ro) 383.46 699.67 T
+(ws array */) 434.82 699.67 T
+(unsigned short) 126 686.67 T
+(num_doodads;) 243 686.67 T
+(/* number of doodads in the doodads array */) 315 686.67 T
+(unsigned short) 126 673.67 T
+(num_o) 243 673.67 T
+(v) 273.39 673.67 T
+(erlays;) 278.73 673.67 T
+(/* number of o) 315 673.67 T
+(v) 379.91 673.67 T
+(erlays in the o) 385.25 673.67 T
+(v) 447.1 673.67 T
+(erlays array */) 452.43 673.67 T
+(unsigned short) 126 660.67 T
+(sz_ro) 243 660.67 T
+(ws;) 266.55 660.67 T
+(/* size of the ro) 315 660.67 T
+(ws array */) 383.16 660.67 T
+(unsigned short) 126 647.67 T
+(sz_doodads;) 243 647.67 T
+(/* size of the doodads array */) 315 647.67 T
+(unsigned short) 126 634.67 T
+(sz_o) 243 634.67 T
+(v) 263 634.67 T
+(erlays;) 268.33 634.67 T
+(/* size of the o) 315 634.67 T
+(v) 379.6 634.67 T
+(erlays array */) 384.94 634.67 T
+(XkbRo) 126 621.67 T
+(wPtr) 157.5 621.67 T
+(ro) 243 621.67 T
+(ws;) 251.89 621.67 T
+(/* section ro) 315 621.67 T
+(ws array */) 369.11 621.67 T
+(XkbDoodadPtr) 126 608.67 T
+(doodads;) 243 608.67 T
+(/* section doodads array */) 315 608.67 T
+(XkbBoundsRec) 126 595.67 T
+(bounds;) 243 595.67 T
+(/* bounding box for the section, before rotation*/) 315 595.67 T
+(XkbOv) 126 582.67 T
+(erlayPtr) 158.22 582.67 T
+(o) 243 582.67 T
+(v) 248.34 582.67 T
+(erlays;) 253.67 582.67 T
+(/* section o) 315 582.67 T
+(v) 365.56 582.67 T
+(erlays array */) 370.89 582.67 T
+(}) 108 569.67 T
+3 F
+(XkbSectionRec) 116.03 569.67 T
+2 F
+(, *XkbSectionPtr;) 188.13 569.67 T
+1 12 Q
+(top) 108 550 T
+2 F
+( and) 123.34 550 T
+1 F
+(left) 146.66 550 T
+2 F
+( are the origin of the section, relative to the origin of the keyboard, in) 162 550 T
+2 9.6 Q
+(mm) 496.94 554.8 T
+2 11 Q
+(/) 511.88 550 T
+2 9.6 Q
+(10) 514.94 547 T
+2 12 Q
+(.) 524.54 550 T
+1 F
+(angle) 108 537 T
+2 F
+( is in) 134.66 537 T
+2 9.6 Q
+(1) 161 541.8 T
+2 12 Q
+(/) 165.8 537 T
+2 9.6 Q
+(10) 169.14 534 T
+2 12 Q
+( degrees.) 178.74 537 T
+0 11 Q
+(DoodadRec Structures) 108 514.67 T
+2 12 Q
+(The doodad arrays in the) 108 496 T
+5 F
+-0.6 (XkbGeometryRec) 230.3 496 S
+2 F
+( and the) 322.71 496 T
+5 F
+-0.6 (XkbSectionRec) 363.7 496 S
+2 F
+( may contain any) 449.5 496 T
+(of the doodad structures and types shown in Table 13.1.) 108 483 T
+(The doodad structures form a union:) 108 462 T
+2 11 Q
+(typedef union _XkbDoodad {) 126 441.67 T
+( XkbAn) 126 428.67 T
+(yDoodadRec) 180.22 428.67 T
+(an) 306 428.67 T
+(y;) 316.22 428.67 T
+( XkbShapeDoodadRec) 126 415.67 T
+(shape;) 306 415.67 T
+( XkbT) 126 402.67 T
+(e) 172.89 402.67 T
+(xtDoodadRec) 177.61 402.67 T
+(te) 306 402.67 T
+(xt;) 313.78 402.67 T
+( XkbIndicatorDoodadRec) 126 389.67 T
+(indicator;) 306 389.67 T
+( XkbLogoDoodadRec) 126 376.67 T
+(logo;) 306 376.67 T
+(}) 126 363.67 T
+3 F
+(XkbDoodadRec) 134.03 363.67 T
+2 F
+(, *XkbDoodadPtr;) 208.59 363.67 T
+2 12 Q
+-0.37 (The) 108 344 P
+1 F
+-0.37 (top) 129.29 344 P
+2 F
+-0.37 ( and) 144.63 344 P
+1 F
+-0.37 (left) 167.22 344 P
+2 F
+-0.37 ( coordinates of each doodad are the coordinates of the origin of the doodad) 182.56 344 P
+(relative to the keyboard\325s origin if the doodad is in the) 108 331 T
+5 F
+-0.6 (XkbGeometryRec) 372.3 331 S
+2 F
+( doodad array,) 464.7 331 T
+(and with respect to the section\325s origin if the doodad is in a) 108 318 T
+5 F
+-0.6 (XkbSectionRec) 394.97 318 S
+2 F
+( doodad) 480.77 318 T
+(array.) 108 305 T
+2 11 Q
+(The) 138.65 305 T
+1 12 Q
+(color_ndx) 158.5 305 T
+2 11 Q
+( or) 207.16 305 T
+1 12 Q
+(on_color_ndx) 221.83 305 T
+2 11 Q
+( and) 288.49 305 T
+1 12 Q
+(of) 309.87 305 T
+(f_color_ndx) 318.99 305 T
+2 11 Q
+( \336elds are color indices into the) 376.99 305 T
+5 12 Q
+-0.6 (XkbGeometryRec) 108 292 S
+2 11 Q
+(\325) 200.4 292 T
+(s color array and are the colors to dra) 203.46 292 T
+(w the doodads with. Similarly) 367.02 292 T
+(, the) 498.61 292 T
+1 12 Q
+(shape_ndx) 108 279 T
+2 11 Q
+( \336elds are indices into the) 159.32 279 T
+5 12 Q
+-0.6 (XkbGeometryRec) 274.81 279 S
+2 11 Q
+(\325) 367.21 279 T
+(s shape array) 370.27 279 T
+(.) 426.98 279 T
+(typedef struct _XkbShapeDoodad {) 108 258.67 T
+(Atom) 126 245.67 T
+(name;) 207 245.67 T
+(/* doodad name */) 279 245.67 T
+(unsigned char) 126 232.67 T
+(type;) 207 232.67 T
+(/*) 279 232.67 T
+5 F
+-0.33 (XkbOutlineDoodad) 290.31 232.67 S
+2 F
+( or) 390.63 232.67 T
+5 F
+-0.33 (XkbSolidDoodad) 405.29 232.67 S
+2 F
+(*/) 493.07 232.67 T
+(unsigned char) 126 219.67 T
+(priority;) 207 219.67 T
+(/* dra) 279 219.67 T
+(wing priority) 304.19 219.67 T
+(, 0=>highest, 255=>lo) 361.23 219.67 T
+(west */) 459.1 219.67 T
+(short) 126 206.67 T
+(top;) 207 206.67 T
+(/* top coordinate, in) 279 206.67 T
+2 9.6 Q
+(mm) 370.36 211.47 T
+2 11 Q
+(/) 385.29 206.67 T
+2 9.6 Q
+(10) 388.35 203.67 T
+2 11 Q
+( */) 397.95 206.67 T
+(short) 126 193.67 T
+(left;) 207 193.67 T
+(/* left coordinate, in) 279 193.67 T
+2 9.6 Q
+(mm) 370.96 198.47 T
+2 11 Q
+(/) 385.9 193.67 T
+2 9.6 Q
+(10) 388.95 190.67 T
+2 11 Q
+( */) 398.55 193.67 T
+(short) 126 180.67 T
+(angle;) 207 180.67 T
+(/* angle of rotation, clockwise, in) 279 180.67 T
+2 9.6 Q
+(1) 429.32 185.47 T
+2 11 Q
+(/) 434.11 180.67 T
+2 9.6 Q
+(10) 437.17 177.67 T
+2 11 Q
+( de) 446.77 180.67 T
+(grees */) 459.74 180.67 T
+(unsigned short) 126 167.67 T
+(color_ndx;) 207 167.67 T
+(/* doodad color */) 279 167.67 T
+(unsigned short) 126 154.67 T
+(shape_ndx;) 207 154.67 T
+(/* doodad shape */) 279 154.67 T
+(}) 108 141.67 T
+3 F
+(XkbShapeDoodadRec) 116.03 141.67 T
+2 F
+(, *XkbShapeDoodadPtr;) 219.32 141.67 T
+(typedef struct _XkbT) 108 121.67 T
+(e) 201.32 121.67 T
+(xtDoodad {) 206.04 121.67 T
+(Atom) 126 108.67 T
+(name;) 207 108.67 T
+(/* doodad name */) 279 108.67 T
+(unsigned char) 126 95.67 T
+(type;) 207 95.67 T
+(/*) 279 95.67 T
+5 F
+-0.33 (XkbTextDoodad) 290.31 95.67 S
+2 F
+( */) 371.82 95.67 T
+(unsigned char) 126 82.67 T
+(priority;) 207 82.67 T
+(/* dra) 279 82.67 T
+(wing priority) 304.19 82.67 T
+(, 0=>highest, 255=>lo) 361.23 82.67 T
+(west */) 459.1 82.67 T
+(short) 126 69.67 T
+(top;) 207 69.67 T
+(/* top coordinate, in) 279 69.67 T
+2 9.6 Q
+(mm) 370.36 74.47 T
+2 11 Q
+(/) 385.29 69.67 T
+2 9.6 Q
+(10) 388.35 66.67 T
+2 11 Q
+( */) 397.95 69.67 T
+FMENDPAGE
+%%EndPage: "103" 115
+%%Page: "104" 116
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(104) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+(short) 126 712.67 T
+(left;) 207 712.67 T
+(/* left coordinate, in) 279 712.67 T
+2 9.6 Q
+(mm) 370.96 717.47 T
+2 11 Q
+(/) 385.9 712.67 T
+2 9.6 Q
+(10) 388.95 709.67 T
+2 11 Q
+( */) 398.55 712.67 T
+(short) 126 699.67 T
+(angle;) 207 699.67 T
+(/* angle of rotation, clockwise, in) 279 699.67 T
+2 9.6 Q
+(1) 429.32 704.47 T
+2 11 Q
+(/) 434.11 699.67 T
+2 9.6 Q
+(10) 437.17 696.67 T
+2 11 Q
+( de) 446.77 699.67 T
+(grees */) 459.74 699.67 T
+(short) 126 686.67 T
+(width;) 207 686.67 T
+(/* width in) 279 686.67 T
+2 9.6 Q
+(mm) 329.42 691.47 T
+2 11 Q
+(/) 344.36 686.67 T
+2 9.6 Q
+(10) 347.42 683.67 T
+2 11 Q
+( */) 357.02 686.67 T
+(short) 126 673.67 T
+(height;) 207 673.67 T
+(/* height in) 279 673.67 T
+2 9.6 Q
+(mm) 331.87 678.47 T
+2 11 Q
+(/) 346.8 673.67 T
+2 9.6 Q
+(10) 349.86 670.67 T
+2 11 Q
+( */) 359.46 673.67 T
+(unsigned short) 126 660.67 T
+(color_ndx;) 207 660.67 T
+(/* doodad color */) 279 660.67 T
+(char *) 126 647.67 T
+(te) 207 647.67 T
+(xt;) 214.78 647.67 T
+(/* doodad te) 279 647.67 T
+(xt */) 333.22 647.67 T
+(char *) 126 634.67 T
+(font;) 207 634.67 T
+(/* arbitrary font name for doodad te) 279 634.67 T
+(xt */) 436.46 634.67 T
+(}) 108 621.67 T
+3 F
+(XkbT) 116.03 621.67 T
+(extDoodadRec) 142.53 621.67 T
+2 F
+(, *XkbT) 210.96 621.67 T
+(e) 246.85 621.67 T
+(xtDoodadPtr;) 251.57 621.67 T
+(typedef struct _XkbIndicatorDoodad {) 108 601.67 T
+(Atom) 126 588.67 T
+(name;) 207 588.67 T
+(/* doodad name */) 279 588.67 T
+(unsigned char) 126 575.67 T
+(type;) 207 575.67 T
+(/*) 279 575.67 T
+5 F
+-0.33 (XkbIndicatorDoodad) 290.31 575.67 S
+2 F
+( */) 403.17 575.67 T
+(unsigned char) 126 562.67 T
+(priority;) 207 562.67 T
+(/* dra) 279 562.67 T
+(wing priority) 304.19 562.67 T
+(, 0=>highest, 255=>lo) 361.23 562.67 T
+(west */) 459.1 562.67 T
+(short) 126 549.67 T
+(top;) 207 549.67 T
+(/* top coordinate, in) 279 549.67 T
+2 9.6 Q
+(mm) 370.36 554.47 T
+2 11 Q
+(/) 385.29 549.67 T
+2 9.6 Q
+(10) 388.35 546.67 T
+2 11 Q
+( */) 397.95 549.67 T
+(short) 126 536.67 T
+(left;) 207 536.67 T
+(/* left coordinate, in) 279 536.67 T
+2 9.6 Q
+(mm) 370.96 541.47 T
+2 11 Q
+(/) 385.9 536.67 T
+2 9.6 Q
+(10) 388.95 533.67 T
+2 11 Q
+( */) 398.55 536.67 T
+(short) 126 523.67 T
+(angle;) 207 523.67 T
+(/* angle of rotation, clockwise, in) 279 523.67 T
+2 9.6 Q
+(1) 429.32 528.47 T
+2 11 Q
+(/) 434.11 523.67 T
+2 9.6 Q
+(10) 437.17 520.67 T
+2 11 Q
+( de) 446.77 523.67 T
+(grees */) 459.74 523.67 T
+(unsigned short) 126 510.67 T
+(shape_ndx;) 207 510.67 T
+(/* doodad shape */) 279 510.67 T
+(unsigned short) 126 497.67 T
+(on_color_ndx;) 207 497.67 T
+(/* color for doodad if indicator is on */) 279 497.67 T
+(unsigned short) 126 484.67 T
+(of) 207 484.67 T
+(f_color_ndx;) 215.89 484.67 T
+(/* color for doodad if indicator is of) 279 484.67 T
+(f */) 436.67 484.67 T
+(}) 108 471.67 T
+3 F
+(XkbIndicatorDoodadRec) 116.03 471.67 T
+2 F
+(, *XkbIndicatorDoodadPtr;) 234.59 471.67 T
+(typedef struct _XkbLogoDoodad {) 108 451.67 T
+(Atom) 126 438.67 T
+(name;) 207 438.67 T
+(/* doodad name */) 279 438.67 T
+(unsigned char) 126 425.67 T
+(type;) 207 425.67 T
+(/*) 279 425.67 T
+5 F
+-0.33 (XkbLogoDoodad) 290.31 425.67 S
+2 F
+( */) 371.82 425.67 T
+(unsigned char) 126 412.67 T
+(priority;) 207 412.67 T
+(/* dra) 279 412.67 T
+(wing priority) 304.19 412.67 T
+(, 0=>highest, 255=>lo) 361.23 412.67 T
+(west */) 459.1 412.67 T
+(short) 126 399.67 T
+(top;) 207 399.67 T
+(/* top coordinate, in) 279 399.67 T
+2 9.6 Q
+(mm) 370.36 404.47 T
+2 11 Q
+(/) 385.29 399.67 T
+2 9.6 Q
+(10) 388.35 396.67 T
+2 11 Q
+( */) 397.95 399.67 T
+(short) 126 386.67 T
+(left;) 207 386.67 T
+(/* left coordinate, in) 279 386.67 T
+2 9.6 Q
+(mm) 370.96 391.47 T
+2 11 Q
+(/) 385.9 386.67 T
+2 9.6 Q
+(10) 388.95 383.67 T
+2 11 Q
+( */) 398.55 386.67 T
+(short) 126 373.67 T
+(angle;) 207 373.67 T
+(/* angle of rotation, clockwise, in) 279 373.67 T
+2 9.6 Q
+(1) 429.32 378.47 T
+2 11 Q
+(/) 434.11 373.67 T
+2 9.6 Q
+(10) 437.17 370.67 T
+2 11 Q
+( de) 446.77 373.67 T
+(grees */) 459.74 373.67 T
+(unsigned short) 126 360.67 T
+(color_ndx;) 207 360.67 T
+(/* doodad color */) 279 360.67 T
+(unsigned short) 126 347.67 T
+(shape_ndx;) 207 347.67 T
+(/* doodad shape */) 279 347.67 T
+(char *) 126 334.67 T
+(logo_name;) 207 334.67 T
+(/* te) 279 334.67 T
+(xt for logo */) 298.08 334.67 T
+(}) 108 321.67 T
+3 F
+(XkbLogoDoodadRec) 116.03 321.67 T
+2 F
+(, *XkbLogoDoodadPtr) 214.43 321.67 T
+0 12 Q
+(13.8) 72 296 T
+(Getting K) 108 296 T
+(e) 161.82 296 T
+(yboar) 168.31 296 T
+(d Geometr) 200.75 296 T
+(y Fr) 260.88 296 T
+(om the Ser) 282.65 296 T
+(ver) 344.78 296 T
+2 F
+(Y) 108 276 T
+(ou can load a k) 115.34 276 T
+(e) 187.87 276 T
+(yboard geometry as part of the k) 193.02 276 T
+(e) 348.86 276 T
+(yboard description returned by) 354.01 276 T
+1 F
+(Xkb-) 504.65 276 T
+(GetKeyboard) 108 263 T
+2 F
+(. Ho) 172.66 263 T
+(we) 193.02 263 T
+(v) 206.71 263 T
+(er) 212.53 263 T
+(, if a k) 221.38 263 T
+(e) 251.92 263 T
+(yboard description has been pre) 257.06 263 T
+(viously loaded, you can) 409.39 263 T
+(instead obtain the geometry by calling the) 108 250 T
+1 F
+(XkbGetGeometry) 312.31 250 T
+2 F
+(. In this case, the geometry) 394.84 250 T
+(returned is the one associated with the k) 108 237 T
+(e) 300.18 237 T
+(yboard whose de) 305.33 237 T
+(vice ID is contained in the k) 386.34 237 T
+(e) 521.53 237 T
+(y-) 526.68 237 T
+(board description.) 108 224 T
+(To load a keyboard geometry if you already have the keyboard description, use) 108 203 T
+1 F
+(XkbGet-) 491.24 203 T
+(Geometry) 108 190 T
+2 F
+(.) 155.32 190 T
+2 11 Q
+(Status) 108 169.67 T
+3 F
+(XkbGetGeometry) 137.65 169.67 T
+2 F
+(\050) 221.96 169.67 T
+1 F
+(dpy) 225.62 169.67 T
+2 F
+(,) 240.79 169.67 T
+1 F
+( xkb) 243.54 169.67 T
+2 F
+(\051) 261.56 169.67 T
+(Display *) 126 156.67 T
+1 F
+(dpy) 207 156.67 T
+2 F
+(;) 222.88 156.67 T
+(/* connection to the X serv) 270 156.67 T
+(er */) 388.68 156.67 T
+(XkbDescPtr) 126 143.67 T
+1 F
+(xkb) 207 143.67 T
+2 F
+(;) 222.27 143.67 T
+-0.07 (/* k) 270 143.67 P
+-0.07 (e) 286.62 143.67 P
+-0.07 (yboard description that contains the ID for the k) 291.34 143.67 P
+-0.07 (e) 502.06 143.67 P
+-0.07 (yboard) 506.78 143.67 P
+(and into which the geometry should be loaded */) 279 130.67 T
+1 12 Q
+(XkbGetGeometry) 108 111 T
+2 F
+( can return) 191.3 111 T
+5 F
+-0.6 (BadValue) 245.62 111 S
+2 F
+(,) 298.42 111 T
+5 F
+-0.6 (BadImplementation) 304.42 111 S
+2 F
+(,) 416.62 111 T
+5 F
+-0.6 (BadName) 422.62 111 S
+2 F
+(,) 468.82 111 T
+5 F
+-0.6 (BadAlloc,) 474.82 111 S
+2 F
+(or) 108 98 T
+5 F
+-0.6 (BadLength) 121 98 S
+2 F
+( errors or) 180.4 98 T
+5 F
+-0.6 (Success) 227.38 98 S
+2 F
+( if it succeeds.) 273.58 98 T
+FMENDPAGE
+%%EndPage: "104" 116
+%%Page: "105" 117
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(105) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(It is also possible to load a keyboard geometry by name. The X server maintains a data-) 108 712 T
+(base of keyboard components \050see Chapter 20\051. To load a keyboard geometry description) 108 699 T
+(from this database by name, use) 108 686 T
+1 F
+(XkbGetNamedGeometry) 264.97 686 T
+2 F
+(.) 382.27 686 T
+2 11 Q
+(Status) 108 665.67 T
+3 F
+(XkbGetNamedGeometry) 137.65 665.67 T
+2 F
+(\050) 255.57 665.67 T
+1 F
+(dpy) 259.23 665.67 T
+2 F
+(,) 274.4 665.67 T
+1 F
+( xkb) 277.15 665.67 T
+2 F
+(,) 295.17 665.67 T
+1 F
+( name) 297.92 665.67 T
+2 F
+(\051) 324.49 665.67 T
+(Display *) 126 652.67 T
+1 F
+(dpy) 189 652.67 T
+2 F
+(;) 204.88 652.67 T
+(/* connection to the X serv) 234 652.67 T
+(er */) 352.68 652.67 T
+(XkbDescPtr) 126 639.67 T
+1 F
+(xkb) 189 639.67 T
+2 F
+(;) 204.27 639.67 T
+(/* k) 234 639.67 T
+(e) 250.7 639.67 T
+(yboard description into which the geometry should be loaded */) 255.42 639.67 T
+(Atom) 126 626.67 T
+1 F
+(name) 189 626.67 T
+2 F
+(;) 212.83 626.67 T
+(/* name of the geometry to be loaded */) 234 626.67 T
+1 12 Q
+(XkbGetNamedGeometry) 108 607 T
+2 F
+( can return) 225.3 607 T
+5 F
+-0.6 (BadName) 279.61 607 S
+2 F
+( if the) 325.81 607 T
+1 F
+(name) 356.81 607 T
+2 F
+( cannot be found.) 382.8 607 T
+0 F
+(13.9) 72 582 T
+(Using K) 108 582 T
+(e) 153.16 582 T
+(yboar) 159.65 582 T
+(d Geometr) 192.08 582 T
+(y) 252.22 582 T
+2 F
+-0.11 (Xkb provides a number of convenience functions to help use a keyboard geometry. These) 108 562 P
+(include functions to return the bounding box of a shape\325s top surface and to update the) 108 549 T
+(bounding box of a shape row or section.) 108 536 T
+(A shape is made up of a number of outlines. Each outline is a polygon made up of a num-) 108 515 T
+(ber of points. The bounding box of a shape is a rectangle that contains all the outlines of) 108 502 T
+(that shape.) 108 489 T
+3 F
+(Figur) 157.11 344.5 T
+(e 13.7 K) 185.56 344.5 T
+(ey Surface, Shape Outlines, and Bounding Box) 229.93 344.5 T
+2 F
+(To determine the bounding box of the top surface of a shape, use) 108 316.5 T
+1 F
+(XkbComputeShapeTop) 422.6 316.5 T
+2 F
+(.) 532.6 316.5 T
+2 11 Q
+(Bool) 108 296.17 T
+3 F
+(XkbComputeShapeT) 132.15 296.17 T
+(op) 230.76 296.17 T
+2 F
+(\050) 242.38 296.17 T
+1 F
+(shape) 246.04 296.17 T
+2 F
+(,) 271.7 296.17 T
+1 F
+( bounds_rtrn) 274.45 296.17 T
+2 F
+(\051) 331.6 296.17 T
+(XkbShapePtr) 126 283.17 T
+1 F
+(shape) 207 283.17 T
+2 F
+(;) 232.66 283.17 T
+(/* shape to be e) 270 283.17 T
+(xamined */) 338.27 283.17 T
+(XkbBoundsPtr) 126 270.17 T
+1 F
+(bounds_rtrn) 207 270.17 T
+2 F
+(/* back\336lled with the bounding box for the shape */) 270 270.17 T
+1 12 Q
+-0.36 (XkbComputeShapeTop) 108 250.5 P
+2 F
+-0.36 ( returns a) 217.99 250.5 P
+5 F
+-0.8 -0.6 (BoundsRec) 264.56 250.5 B
+2 F
+-0.36 ( that contains two x and y coordinates. These) 323.96 250.5 P
+(coordinates describe the corners of a rectangle that contains the outline that describes the) 108 237.5 T
+(top surface of the shape. The top surface is defined to be the approximating outline if the) 108 224.5 T
+1 F
+(appr) 108 211.5 T
+(ox) 130.13 211.5 T
+2 F
+( field of) 141.46 211.5 T
+1 F
+(shape) 182.45 211.5 T
+2 F
+( is not) 210.44 211.5 T
+5 F
+-0.6 (NULL) 242.78 211.5 S
+2 F
+(. If) 269.18 211.5 T
+1 F
+(appr) 286.18 211.5 T
+(ox) 308.3 211.5 T
+2 F
+( is) 319.63 211.5 T
+5 F
+-0.6 (NULL) 333.64 211.5 S
+2 F
+(, the top surface is defined as the last) 360.04 211.5 T
+(outline in the) 108 198.5 T
+1 F
+(shape) 174.34 198.5 T
+2 F
+(\325s array of outlines.) 202.33 198.5 T
+1 F
+(XkbComputeShapeTop) 298.64 198.5 T
+2 F
+( returns) 408.64 198.5 T
+5 F
+-0.6 (False) 447.96 198.5 S
+2 F
+( if) 480.96 198.5 T
+1 F
+(shape) 494.29 198.5 T
+2 F
+( is) 522.29 198.5 T
+5 F
+-0.6 (NULL) 108 185.5 S
+2 F
+( or if there are no outlines for the shape; otherwise, it returns) 134.4 185.5 T
+5 F
+-0.6 (True) 428.34 185.5 S
+2 F
+(.) 454.74 185.5 T
+-0.16 (A) 108 164.5 P
+5 F
+-0.34 -0.6 (ShapeRec) 119.51 164.5 B
+2 F
+-0.16 ( contains a) 172.31 164.5 P
+5 F
+-0.34 -0.6 (BoundsRec) 226.17 164.5 B
+2 F
+-0.16 ( that describes the bounds of the shape. If you add or) 285.57 164.5 P
+(delete an outline to or from a shape, the bounding box must be updated. To update the) 108 151.5 T
+(bounding box of a shape, use) 108 138.5 T
+1 F
+(XkbComputeShapeBounds) 250.98 138.5 T
+2 F
+(.) 378.3 138.5 T
+2 11 Q
+(Bool) 108 118.17 T
+3 F
+(XkbComputeShapeBounds) 132.15 118.17 T
+2 F
+(\050) 259.9 118.17 T
+1 F
+(shape) 263.56 118.17 T
+2 F
+(\051) 289.23 118.17 T
+(XkbShapePtr) 126 105.17 T
+1 F
+(shape) 207 105.17 T
+2 F
+(;) 232.66 105.17 T
+(/* shape to be e) 306 105.17 T
+(xamined */) 374.27 105.17 T
+1 12 Q
+(XkbComputeShapeBounds) 108 85.5 T
+2 F
+( updates the) 235.32 85.5 T
+5 F
+-0.6 (BoundsRec) 295.64 85.5 S
+2 F
+( contained in the) 355.05 85.5 T
+1 F
+(shape) 437.7 85.5 T
+2 F
+( by examining) 465.7 85.5 T
+(all the outlines of the shape and setting the) 108 72.5 T
+5 F
+-0.6 (BoundsRec) 315.65 72.5 S
+2 F
+( to the minimum x and minimum) 375.05 72.5 T
+108.38 365.5 503.62 485 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(actual k) 122.86 405.59 T
+(e) 154.14 405.59 T
+(y) 158.43 405.59 T
+(bounding) 443.25 405.42 T
+(detailed) 367.84 405.49 T
+(outline) 369.78 394.43 T
+(approximating) 193.83 404.89 T
+(outline) 210.35 393.55 T
+188.5 382 188.5 373 263.5 373 3 L
+0.5 H
+0 Z
+N
+(outline array) 275.48 373.05 T
+413.25 382 413.25 373 338.25 373 3 L
+N
+194.73 423 253.73 459.5 R
+N
+433.88 423 492.88 459.5 R
+N
+(primary) 288.12 404.5 T
+(outline) 290.06 393.15 T
+(surf) 130.09 394.52 T
+(ace) 145.54 394.52 T
+(box) 455.88 394.36 T
+112.12 430.56 M
+ 112.12 433.38 112.12 433.38 112.12 436.19 D
+ 112.12 439 112.12 439 112.5 440.12 D
+ 112.88 441.25 112.88 441.25 113.81 441.62 D
+ 114.75 442 114.75 442 116.25 442.38 D
+ 117.75 442.75 117.75 442.75 124.5 442.75 D
+ 131.25 442.75 131.25 442.75 132.75 442.94 D
+ 134.25 443.12 134.25 443.12 135 444.25 D
+ 135.75 445.37 135.75 445.37 136.12 446.87 D
+ 136.5 448.37 136.5 448.37 136.5 451.75 D
+ 136.5 455.12 136.5 455.12 137.25 456.81 D
+ 138 458.5 138 458.5 139.31 458.88 D
+ 140.63 459.25 140.63 459.25 153.19 459.25 D
+ 165.75 459.25 165.75 459.25 167.25 458.88 D
+ 168.75 458.5 168.75 458.5 169.69 457.38 D
+ 170.62 456.25 170.62 456.25 171 454.94 D
+ 171.38 453.62 171.38 453.62 171.38 440.69 D
+ 171.38 427.75 171.38 427.75 170.63 426.06 D
+ 169.88 424.38 169.88 424.38 168.56 424 D
+ 167.25 423.62 167.25 423.62 141 423.62 D
+ 114.75 423.62 114.75 423.62 113.81 424.37 D
+ 112.88 425.12 112.88 425.12 112.5 426.44 D
+ 112.12 427.75 112.12 427.75 112.12 430.56 D
+O
+N
+353 429.81 M
+ 353 432.62 353 432.62 353 435.44 D
+ 353 438.25 353 438.25 353.38 439.38 D
+ 353.75 440.5 353.75 440.5 354.69 440.88 D
+ 355.63 441.25 355.63 441.25 357.13 441.62 D
+ 358.63 442 358.63 442 365.38 442 D
+ 372.13 442 372.13 442 373.63 442.19 D
+ 375.13 442.38 375.13 442.38 375.88 443.5 D
+ 376.63 444.62 376.63 444.62 377 446.12 D
+ 377.38 447.62 377.38 447.62 377.38 451 D
+ 377.38 454.38 377.38 454.38 378.13 456.06 D
+ 378.88 457.75 378.88 457.75 380.19 458.12 D
+ 381.5 458.5 381.5 458.5 394.06 458.5 D
+ 406.63 458.5 406.63 458.5 408.13 458.12 D
+ 409.63 457.75 409.63 457.75 410.56 456.62 D
+ 411.5 455.5 411.5 455.5 411.88 454.19 D
+ 412.25 452.87 412.25 452.87 412.25 439.94 D
+ 412.25 427 412.25 427 411.5 425.31 D
+ 410.75 423.62 410.75 423.62 409.44 423.25 D
+ 408.13 422.87 408.13 422.87 381.88 422.87 D
+ 355.63 422.87 355.63 422.87 354.69 423.62 D
+ 353.75 424.38 353.75 424.38 353.38 425.69 D
+ 353 427 353 427 353 429.81 D
+O
+N
+333 423 333 458.25 298.13 458.25 298.13 442.12 273.75 442.12 273.75 423 6 Y
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "105" 117
+%%Page: "106" 118
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(106) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(y, and maximum x and maximum y values found in those outlines.) 108 712 T
+1 F
+(XkbComputeShape-) 431.33 712 T
+-0.35 (Bounds) 108 699 P
+2 F
+-0.35 ( returns) 144 699 P
+5 F
+-0.78 -0.6 (False) 182.62 699 B
+2 F
+-0.35 ( if) 215.62 699 P
+1 F
+-0.35 (shape) 228.24 699 P
+2 F
+-0.35 ( is) 256.24 699 P
+5 F
+-0.78 -0.6 (NULL) 269.54 699 B
+2 F
+-0.35 ( or if there are no outlines for the shape; otherwise,) 295.94 699 P
+(it returns) 108 686 T
+5 F
+-0.6 (True) 154 686 S
+2 F
+(.) 180.4 686 T
+( If you add or delete a key to or from a row, or if you update the shape of one of the keys) 108 665 T
+-0.37 (in that row, you may need to update the bounding box of that row. To update the bounding) 108 652 P
+(box of a row, use) 108 639 T
+1 F
+(XkbComputeRowBounds) 193.98 639 T
+2 F
+(.) 313.31 639 T
+2 11 Q
+(Bool) 108 618.67 T
+3 F
+(XkbComputeRo) 132.15 618.67 T
+(wBounds) 209.04 618.67 T
+2 F
+(\050) 252.44 618.67 T
+1 F
+(g) 256.1 618.67 T
+(eom) 261.49 618.67 T
+2 F
+(,) 279.82 618.67 T
+1 F
+( section) 282.57 618.67 T
+2 F
+(,) 316.48 618.67 T
+1 F
+( r) 319.23 618.67 T
+(ow) 325.77 618.67 T
+2 F
+(\051) 338.6 618.67 T
+(XkbGeometryPtr) 126 605.67 T
+1 F
+(g) 207 605.67 T
+(eom) 212.39 605.67 T
+2 F
+(;) 230.72 605.67 T
+(/* geometry that contains the) 270 605.67 T
+1 F
+(section) 400.46 605.67 T
+2 F
+( */) 431.62 605.67 T
+(XkbSectionPtr) 126 592.67 T
+1 F
+(section) 207 592.67 T
+2 F
+(;) 238.16 592.67 T
+(/* section that contains the ro) 270 592.67 T
+(w */) 398.96 592.67 T
+(XkbRo) 126 579.67 T
+(wPtr) 157.5 579.67 T
+1 F
+(r) 207 579.67 T
+(ow) 210.78 579.67 T
+2 F
+(;) 223.62 579.67 T
+(/* ro) 270 579.67 T
+(w to be e) 290.2 579.67 T
+(xamined and updated */) 330.05 579.67 T
+1 12 Q
+(XkbComputeRowBounds) 108 560 T
+2 F
+( checks the bounds of all keys in the) 227.33 560 T
+1 F
+(r) 404.3 560 T
+(ow) 408.43 560 T
+2 F
+(and updates the bound-) 425.44 560 T
+-0.28 (ing box of the row if necessary.) 108 547 P
+1 F
+-0.28 (XkbComputeRowBounds) 260.67 547 P
+2 F
+-0.28 ( returns) 380 547 P
+5 F
+-0.62 -0.6 (False) 418.76 547 B
+2 F
+-0.28 ( if any of the argu-) 451.76 547 P
+(ments is) 108 534 T
+5 F
+-0.6 (NULL) 150.67 534 S
+2 F
+(; otherwise, it returns) 177.07 534 T
+5 F
+-0.6 (True) 282.06 534 S
+2 F
+(.) 308.46 534 T
+-0.4 ( If you add or delete a row to or from a section, or if you change the geometry of any of the) 108 513 P
+-0.09 (rows in that section, you may need to update the bounding box for that section. To update) 108 500 P
+(the bounding box of a section, use) 108 487 T
+1 F
+(XkbComputeSectionBounds) 275.32 487 T
+2 F
+(.) 408.64 487 T
+2 11 Q
+(Bool) 108 466.67 T
+3 F
+(XkbComputeSectionBounds) 132.15 466.67 T
+2 F
+(\050) 265.39 466.67 T
+1 F
+(g) 269.05 466.67 T
+(eom) 274.44 466.67 T
+2 F
+(,) 292.77 466.67 T
+1 F
+( section) 295.52 466.67 T
+2 F
+(\051) 329.43 466.67 T
+(XkbGeometryPtr) 126 453.67 T
+1 F
+(g) 207 453.67 T
+(eom) 212.39 453.67 T
+2 F
+(;) 230.72 453.67 T
+(/* geometry that contains the) 270 453.67 T
+1 F
+(section) 400.46 453.67 T
+2 F
+( */) 431.62 453.67 T
+(XkbSectionPtr) 126 440.67 T
+1 F
+(section) 207 440.67 T
+2 F
+(;) 238.16 440.67 T
+(/* section to be e) 270 440.67 T
+(xamined and updated */) 344.38 440.67 T
+1 12 Q
+-0.44 (XkbComputeSectionBounds) 108 421 P
+2 F
+-0.44 ( examines all the rows of the) 241.32 421 P
+1 F
+-0.44 (section) 379.22 421 P
+2 F
+-0.44 ( and updates the bounding) 413.21 421 P
+-0.02 (box of that section so that it contains all rows.) 108 408 P
+1 F
+-0.02 (XkbComputeSectionBounds) 331.42 408 P
+2 F
+-0.02 ( returns) 464.74 408 P
+5 F
+-0.05 -0.6 (False) 504.02 408 B
+2 F
+(if any of the arguments is) 108 395 T
+5 F
+-0.6 (NULL) 233.32 395 S
+2 F
+(; otherwise, it returns) 259.72 395 T
+5 F
+-0.6 (True) 364.7 395 S
+2 F
+(.) 391.11 395 T
+(Keys that can generate multiple keycodes may be associated with multiple names. Such) 108 374 T
+(keys have a primary name and an alternate name. To find the alternate name by using the) 108 361 T
+(primary name for a key that is part of an overlay, use) 108 348 T
+1 F
+(XkbFindOverlayForKey) 365.6 348 T
+2 F
+(.) 482.24 348 T
+2 11 Q
+(char *) 108 327.67 T
+3 F
+(XkbFindOv) 137.93 327.67 T
+(erlayF) 194.06 327.67 T
+(orK) 224.34 327.67 T
+(ey) 243 327.67 T
+2 F
+(\050) 253.39 327.67 T
+1 F
+(g) 257.05 327.67 T
+(eom) 262.44 327.67 T
+2 F
+(,) 280.77 327.67 T
+1 F
+( section) 283.52 327.67 T
+2 F
+(,) 317.43 327.67 T
+1 F
+( under) 320.18 327.67 T
+2 F
+(\051) 348.59 327.67 T
+(XkbGeometryPtr) 126 314.67 T
+1 F
+(g) 207 314.67 T
+(eom) 212.39 314.67 T
+2 F
+(;) 230.72 314.67 T
+(/* geometry that contains the) 270 314.67 T
+1 F
+(section) 400.46 314.67 T
+2 F
+( */) 431.62 314.67 T
+(XkbSectionPtr) 126 301.67 T
+1 F
+(section) 207 301.67 T
+2 F
+(;) 238.16 301.67 T
+(/* section to be searched for matching k) 270 301.67 T
+(e) 445.55 301.67 T
+(ys */) 450.27 301.67 T
+(char *) 126 288.67 T
+1 F
+(under) 207 288.67 T
+2 F
+(.) 232.06 288.67 T
+(/* primary name of the k) 270 288.67 T
+(e) 378.95 288.67 T
+(y to be considered */) 383.67 288.67 T
+1 12 Q
+-0.04 (XkbFindOverlayForKey) 108 269 P
+2 F
+-0.04 ( uses the primary name of the key,) 224.64 269 P
+1 F
+-0.04 (under) 392.6 269 P
+2 F
+-0.04 (, to look up the alternate) 420.6 269 P
+(name, which it returns.) 108 256 T
+0 F
+(13.10) 72 231 T
+(Ad) 108 231 T
+(ding Elements to a K) 123.88 231 T
+(e) 242.39 231 T
+(yboar) 248.88 231 T
+(d Geometr) 281.32 231 T
+(y) 341.45 231 T
+2 F
+(Xkb provides functions to add a single new element to the top-level keyboard geometry.) 108 211 T
+(In each case the) 108 198 T
+1 F
+(num_) 187.3 198 T
+2 11.2 Q
+(*) 216.96 194.5 T
+2 12 Q
+( fields of the corresponding structure is incremented by 1. These) 222.56 198 T
+(functions do not change) 108 185 T
+1 F
+(sz_) 225.98 185 T
+2 11.2 Q
+(*) 241.32 181.5 T
+2 12 Q
+( unless there is no more room in the array. Some of these) 246.92 185 T
+(functions fill in the values of the element\325s structure from the arguments. For other func-) 108 172 T
+(tions, you must explicitly write code to fill the structure\325s elements.) 108 159 T
+(The top-level geometry description includes a list of) 108 138 T
+1 F
+(g) 361.97 138 T
+(eometry pr) 367.85 138 T
+(operties) 419.63 138 T
+2 F
+(. A geometry) 458.29 138 T
+(property associates an arbitrary string with an equally arbitrary name. Programs that dis-) 108 125 T
+(play images of keyboards can use geometry properties as hints, but they are not inter-) 108 112 T
+(preted by Xkb. No other geometry structures refer to geometry properties.) 108 99 T
+FMENDPAGE
+%%EndPage: "106" 118
+%%Page: "107" 119
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(107) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(To add one property to an existing keyboard geometry description, use) 108 712 T
+1 F
+(XkbAddGeomPro-) 450.61 712 T
+(perty) 108 699 T
+2 F
+(.) 132.66 699 T
+2 11 Q
+(XkbPropertyPtr) 108 678.67 T
+3 F
+(XkbAddGeomPr) 180.41 678.67 T
+(operty) 260.27 678.67 T
+2 F
+(\050) 290.82 678.67 T
+1 F
+(g) 294.48 678.67 T
+(eom) 299.87 678.67 T
+2 F
+(,) 318.2 678.67 T
+1 F
+( name) 320.95 678.67 T
+2 F
+(,) 347.52 678.67 T
+1 F
+( value) 350.27 678.67 T
+2 F
+(\051) 376.85 678.67 T
+(XkbGeometryPtr) 126 665.67 T
+1 F
+(g) 207 665.67 T
+(eom) 212.39 665.67 T
+2 F
+(;) 230.72 665.67 T
+(/* geometry to be updated */) 270 665.67 T
+(char *) 126 652.67 T
+1 F
+(name) 207 652.67 T
+2 F
+(;) 230.83 652.67 T
+(/* name of the ne) 270 652.67 T
+(w property */) 346.1 652.67 T
+(char *) 126 639.67 T
+1 F
+(value) 207 639.67 T
+2 F
+(;) 230.83 639.67 T
+(/* v) 270 639.67 T
+(alue for the ne) 286.53 639.67 T
+(w property */) 349.49 639.67 T
+1 12 Q
+(XkbAddGeomProperty) 108 620 T
+2 F
+( adds one property with the specified) 217.31 620 T
+1 F
+(name) 397.61 620 T
+2 F
+( and) 423.6 620 T
+1 F
+(value) 446.93 620 T
+2 F
+( to the key-) 472.92 620 T
+(board geometry specified by) 108 607 T
+1 F
+(geom) 247.97 607 T
+2 F
+(.) 273.96 607 T
+1 F
+(XkbAddGeomProperty) 283.56 607 T
+2 F
+( returns) 392.87 607 T
+5 F
+-0.6 (NULL) 432.19 607 S
+2 F
+( if any of the) 458.59 607 T
+(parameters is empty or if it was not able to allocate space for the property. To allocate) 108 594 T
+(space for an arbitrary number of properties, use the) 108 581 T
+1 F
+(XkbAllocGeomProps) 356.59 581 T
+2 F
+( function.) 457.91 581 T
+-0.13 (To add one key alias to an existing keyboard geometry description, use) 108 560 P
+1 F
+-0.13 (XkbAddGeomKey-) 450.7 560 P
+(Alias) 108 547 T
+2 F
+(.) 132.67 547 T
+2 11 Q
+(XkbK) 108 526.67 T
+(e) 134.61 526.67 T
+(yAliasPtr) 139.33 526.67 T
+3 F
+(XkbAddGeomK) 183.64 526.67 T
+(eyAlias) 260.37 526.67 T
+2 F
+(\050) 294.59 526.67 T
+1 F
+(g) 298.26 526.67 T
+(eom) 303.65 526.67 T
+2 F
+(,) 321.97 526.67 T
+1 F
+( alias, r) 324.72 526.67 T
+(eal) 358.24 526.67 T
+2 F
+(\051) 371.68 526.67 T
+(XkbGeometryPtr) 126 513.67 T
+1 F
+(g) 207 513.67 T
+(eom) 212.39 513.67 T
+2 F
+(;) 230.72 513.67 T
+(/* geometry to be updated */) 270 513.67 T
+(char *) 126 500.67 T
+1 F
+(alias) 207 500.67 T
+2 F
+(;) 228.4 500.67 T
+(/* alias to be added */) 270 500.67 T
+(char *) 126 487.67 T
+1 F
+(r) 207 487.67 T
+(eal) 210.87 487.67 T
+2 F
+(;) 224.31 487.67 T
+(/* real name to be bound to the ne) 270 487.67 T
+(w alias */) 419.42 487.67 T
+1 12 Q
+(XkbAddGeomKeyAlias) 108 468 T
+2 F
+( adds one key alias with the value) 217.98 468 T
+1 F
+(alias) 382.62 468 T
+2 F
+( to the geometry) 405.96 468 T
+1 F
+(geom) 487.28 468 T
+2 F
+(, and) 513.28 468 T
+(associates it with the key whose real name is) 108 455 T
+1 F
+(real) 325.63 455 T
+2 F
+(.) 344.96 455 T
+1 F
+(XkbAddGeomKeyAlias) 350.96 455 T
+2 F
+( returns) 460.94 455 T
+5 F
+-0.6 (NULL) 500.27 455 S
+2 F
+( if) 526.67 455 T
+(any of the parameters is empty or if it was not able to allocate space for the alias. To allo-) 108 442 T
+(cate space for an arbitrary number of aliases, use the) 108 429 T
+1 F
+(XkbAllocGeomKeyAliases) 362.92 429 T
+2 F
+( function.) 488.89 429 T
+(To add one color name to an existing keyboard geometry description, use) 108 408 T
+1 F
+(XkbAddGeom-) 463.61 408 T
+(Color) 108 395 T
+2 F
+(.) 136.01 395 T
+2 11 Q
+(XkbColorPtr) 108 374.67 T
+3 F
+(XkbAddGeomColor) 167.59 374.67 T
+2 F
+(\050) 262.92 374.67 T
+1 F
+(g) 266.59 374.67 T
+(eom) 271.98 374.67 T
+2 F
+(,) 290.3 374.67 T
+1 F
+( spec) 293.05 374.67 T
+2 F
+(,) 315.35 374.67 T
+1 F
+( pixel) 318.1 374.67 T
+2 F
+(\051) 342.23 374.67 T
+(XkbGeometryPtr) 126 361.67 T
+1 F
+(g) 207 361.67 T
+(eom) 212.39 361.67 T
+2 F
+(;) 230.72 361.67 T
+(/* geometry to be updated */) 270 361.67 T
+(char *) 126 348.67 T
+1 F
+(spec) 207 348.67 T
+2 F
+(;) 226.55 348.67 T
+(/* color to be added */) 270 348.67 T
+(unsigned int) 126 335.67 T
+1 F
+(pixel) 207 335.67 T
+2 F
+(;) 228.38 335.67 T
+(/* color to be added */) 270 335.67 T
+1 12 Q
+(XkbAddGeomColor) 108 316 T
+2 F
+( adds the specified color) 202.66 316 T
+1 F
+(name) 322.3 316 T
+2 F
+( and) 348.29 316 T
+1 F
+(pixel) 371.62 316 T
+2 F
+( to the specified geometry) 394.94 316 T
+1 F
+(g) 108 303 T
+(eom) 113.88 303 T
+2 F
+(. The top-level geometry description includes a list of up to) 133.87 303 T
+5 F
+-0.6 (MaxColors) 421.18 303 S
+2 F
+( \05032\051) 480.58 303 T
+1 F
+(color) 506.57 303 T
+-0.35 (names) 108 290 P
+2 F
+-0.35 (. A color) 138.66 290 P
+1 F
+-0.35 (name) 182.94 290 P
+2 F
+-0.35 ( is a string whose interpretation is not specified by Xkb and neither is) 208.93 290 P
+(the) 108 277 T
+1 F
+(pixel) 125.66 277 T
+2 F
+( value\325s interpretation. All other geometry data structures refer to colors using) 148.99 277 T
+(their indices in this global list or pointers to colors in this list.) 108 264 T
+1 F
+(XkbAddGeomColor) 406.02 264 T
+2 F
+( returns) 500.68 264 T
+5 F
+-0.22 -0.6 (NULL) 108 251 B
+2 F
+-0.1 ( if any of the parameters is empty or if it was not able to allocate space for the color.) 134.4 251 P
+-0.01 (To allocate space for an arbitrary number of colors to a geometry, use the) 108 238 P
+1 F
+-0.01 (XkbAllocGeom-) 463.36 238 P
+(Colors) 108 225 T
+2 F
+( function.) 140.68 225 T
+(To add one outline to an existing shape, use) 108 204 T
+1 F
+(XkbAddGeomOutline) 321.31 204 T
+2 F
+(.) 423.96 204 T
+2 11 Q
+(XkbOutlinePtr) 108 183.67 T
+3 F
+(XkbAddGeomOutline) 175.53 183.67 T
+2 F
+(\050) 279.43 183.67 T
+1 F
+(shape) 283.1 183.67 T
+2 F
+(,) 308.76 183.67 T
+1 F
+( sz_points) 311.51 183.67 T
+2 F
+(\051) 355.21 183.67 T
+(XkbShapePtr) 126 170.67 T
+1 F
+(shape) 207 170.67 T
+2 F
+(;) 232.66 170.67 T
+(/* shape to be updated */) 270 170.67 T
+(int) 126 157.67 T
+1 F
+(sz_points) 207 157.67 T
+2 F
+(;) 247.95 157.67 T
+(/* number of points to be reserv) 270 157.67 T
+(ed */) 410.37 157.67 T
+2 12 Q
+-0.3 (An outline consists of an arbitrary number of points.) 108 138 P
+1 F
+-0.3 (XkbAddGeomOutline) 359.91 138 P
+2 F
+-0.3 ( adds an outline) 462.55 138 P
+-0.39 (to the specified) 108 125 P
+1 F
+-0.39 (shape) 183.14 125 P
+2 F
+-0.39 ( by reserving) 211.14 125 P
+1 F
+-0.39 (sz_points) 275.61 125 P
+2 F
+-0.39 ( points for it. The new outline is allocated and) 320.29 125 P
+(zeroed.) 108 112 T
+1 F
+(XkbAddGeomOutline) 145.98 112 T
+2 F
+( returns) 248.63 112 T
+5 F
+-0.6 (NULL) 287.95 112 S
+2 F
+( if any of the parameters is empty or if it was) 314.35 112 T
+-0.25 (not able to allocate space. To allocate space for an arbitrary number of outlines to a shape,) 108 99 P
+(use) 108 86 T
+1 F
+(XkbAllocGeomOutlines) 127 86 T
+2 F
+(.) 240.31 86 T
+FMENDPAGE
+%%EndPage: "107" 119
+%%Page: "108" 120
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(108) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(To add a shape to a keyboard geometry, use) 108 712 T
+1 F
+(XkbAddGeomShape) 321.95 712 T
+2 F
+(.) 417.92 712 T
+2 11 Q
+(XkbShapePtr) 108 691.67 T
+3 F
+(XkbAddGeomShape) 169.41 691.67 T
+2 F
+(\050) 266.6 691.67 T
+1 F
+(g) 270.26 691.67 T
+(eom) 275.65 691.67 T
+2 F
+(,) 293.98 691.67 T
+1 F
+( name) 296.73 691.67 T
+2 F
+(,) 323.3 691.67 T
+1 F
+( sz_outlines) 326.05 691.67 T
+2 F
+(\051) 377.7 691.67 T
+(XkbGeometryPtr) 126 678.67 T
+1 F
+(g) 207 678.67 T
+(eom) 212.39 678.67 T
+2 F
+(;) 230.72 678.67 T
+(/* geometry to be updated */) 270 678.67 T
+(Atom) 126 665.67 T
+1 F
+(name) 207 665.67 T
+2 F
+(;) 230.83 665.67 T
+(/* name of the ne) 270 665.67 T
+(w shape */) 346.1 665.67 T
+(int) 126 652.67 T
+1 F
+(sz_outlines) 207 652.67 T
+2 F
+(;) 255.9 652.67 T
+(/* number of outlines to be reserv) 270 652.67 T
+(ed */) 418.31 652.67 T
+2 12 Q
+(A geometry contains an arbitrary number of shapes, each of which is made up of an arbi-) 108 633 T
+-0.14 (trary number of outlines.) 108 620 P
+1 F
+-0.14 (XkbAddGeomShape) 229.77 620 P
+2 F
+-0.14 ( adds a shape to a geometry) 325.74 620 P
+1 F
+-0.14 (g) 460.42 620 P
+-0.14 (eom) 466.3 620 P
+2 F
+-0.14 ( by allocat-) 486.29 620 P
+(ing space for) 108 607 T
+1 F
+(sz_outlines) 172.98 607 T
+2 F
+( outlines for it and giving it the name specified by) 226.32 607 T
+1 F
+(name) 468.64 607 T
+2 F
+(. If a) 494.63 607 T
+(shape with name) 108 594 T
+1 F
+(name) 191.65 594 T
+2 F
+( already exists in the geometry, a pointer to the existing shape is) 217.64 594 T
+(returned.) 108 581 T
+1 F
+(XkbAddGeomShape) 153.98 581 T
+2 F
+( returns) 249.96 581 T
+5 F
+-0.6 (NULL) 289.28 581 S
+2 F
+( if any of the parameters is empty or if it was) 315.68 581 T
+(not able to allocate space.) 108 568 T
+(T) 234.64 568 T
+(o allocate space for an arbitrary number of geometry shapes,) 241.01 568 T
+(use) 108 555 T
+1 F
+(XkbAllocGeomShapes) 127 555 T
+2 F
+(.) 233.64 555 T
+(To add one key at the end of an existing row of keys, use) 108 534 T
+1 F
+(XkbAddGeomKey) 384.95 534 T
+2 F
+(.) 470.26 534 T
+2 11 Q
+(XkbK) 108 513.67 T
+(e) 134.61 513.67 T
+(yPtr) 139.33 513.67 T
+3 F
+(XkbAddGeomK) 160.41 513.67 T
+(ey) 237.15 513.67 T
+2 F
+(\050) 247.54 513.67 T
+1 F
+(r) 251.2 513.67 T
+(ow) 254.98 513.67 T
+2 F
+(\051) 267.82 513.67 T
+(XkbRo) 126 500.67 T
+(wPtr) 157.5 500.67 T
+1 F
+(r) 207 500.67 T
+(ow) 210.78 500.67 T
+2 F
+(;) 223.62 500.67 T
+(/* ro) 270 500.67 T
+(w to be updated */) 290.2 500.67 T
+2 12 Q
+(Keys are grouped into rows.) 108 481 T
+1 F
+(XkbAddGeomKey) 246.64 481 T
+2 F
+( adds one key to the end of the specified) 331.94 481 T
+1 F
+-0.16 (r) 108 468 P
+-0.16 (ow) 112.13 468 P
+2 F
+-0.16 (. The key is allocated and zeroed.) 126.13 468 P
+1 F
+-0.16 (XkbAddGeomKey) 288.62 468 P
+2 F
+-0.16 ( returns) 373.93 468 P
+5 F
+-0.35 -0.6 (NULL) 412.93 468 B
+2 F
+-0.16 ( if) 439.33 468 P
+1 F
+-0.16 (r) 452.34 468 P
+-0.16 (ow) 456.47 468 P
+2 F
+-0.16 ( is empty or if) 470.47 468 P
+(it was not able to allocate space for the key. To allocate space for an arbitrary number of) 108 455 T
+(keys to a row, use) 108 442 T
+1 F
+(XkbAllocGeomKeys) 197.32 442 T
+2 F
+(.) 293.29 442 T
+(To add one section to an existing keyboard geometry, use) 108 421 T
+1 F
+(XkbAddGeomSection) 387.62 421 T
+2 F
+(.) 489.6 421 T
+2 11 Q
+(XkbSectionPtr) 108 400.67 T
+3 F
+(XkbAddGeomSection) 175.53 400.67 T
+2 F
+(\050) 278.2 400.67 T
+1 F
+(g) 281.87 400.67 T
+(eom) 287.26 400.67 T
+2 F
+(,) 305.58 400.67 T
+1 F
+( name) 308.33 400.67 T
+2 F
+(,) 334.91 400.67 T
+1 F
+( sz_r) 337.66 400.67 T
+(ows) 358.25 400.67 T
+2 F
+(,) 375.37 400.67 T
+1 F
+( sz_doodads) 378.12 400.67 T
+2 F
+(,) 432.2 400.67 T
+1 F
+( sz_o) 434.95 400.67 T
+(verlays) 457.15 400.67 T
+2 F
+(\051) 488.92 400.67 T
+(XkbGeometryPtr) 126 387.67 T
+1 F
+(g) 207 387.67 T
+(eom) 212.39 387.67 T
+2 F
+(;) 230.72 387.67 T
+(/* geometry to be updated */) 270 387.67 T
+(Atom) 126 374.67 T
+1 F
+(name) 207 374.67 T
+2 F
+(;) 230.83 374.67 T
+(/* name of the ne) 270 374.67 T
+(w section */) 346.1 374.67 T
+(int) 126 361.67 T
+1 F
+(sz_r) 207 361.67 T
+(ows) 224.84 361.67 T
+2 F
+(;) 241.96 361.67 T
+(/* number of ro) 270 361.67 T
+(ws to reserv) 338.46 361.67 T
+(e in the section */) 391.45 361.67 T
+(int) 126 348.67 T
+1 F
+(sz_doodads) 207 348.67 T
+2 F
+(;) 258.34 348.67 T
+(/* number of doodads to reserv) 270 348.67 T
+(e in the section */) 407.01 348.67 T
+(int) 126 335.67 T
+1 F
+(sz_o) 207 335.67 T
+(verlays) 226.45 335.67 T
+2 F
+(;) 258.22 335.67 T
+(/* number of o) 270 335.67 T
+(v) 334.91 335.67 T
+(erlays to reserv) 340.25 335.67 T
+(e in the section */) 407.28 335.67 T
+2 12 Q
+-0.42 (A keyboard geometry contains an arbitrary number of sections.) 108 316 P
+1 F
+-0.42 (XkbAddGeomSection) 410.86 316 P
+2 F
+-0.42 ( adds) 512.84 316 P
+(one section to an existing keyboard geometry) 108 303 T
+1 F
+(g) 328.97 303 T
+(eom) 334.85 303 T
+2 F
+(. The new section contains space for) 354.84 303 T
+(the number of rows, doodads, and overlays specified by) 108 290 T
+1 11 Q
+(sz_r) 378.95 290 T
+(ows) 396.79 290 T
+2 12 Q
+(,) 413.91 290 T
+1 11 Q
+(sz_doodads) 419.91 290 T
+2 12 Q
+(, and) 471.24 290 T
+1 11 Q
+(sz_o) 108 277 T
+(verlays) 127.45 277 T
+2 12 Q
+(. The new section is allocated and zeroed and given the name specified by) 159.22 277 T
+1 F
+-0.29 (name) 108 264 P
+2 F
+-0.29 (. If a section with name) 133.99 264 P
+1 F
+-0.29 (name) 247.9 264 P
+2 F
+-0.29 ( already exists in the geometry, a pointer to the existing) 273.89 264 P
+-0.47 (section is returned.) 108 251 P
+1 F
+-0.47 ( XkbAddGeomSection) 198.03 251 P
+2 F
+-0.47 ( returns) 302.54 251 P
+5 F
+-1.04 -0.6 (NULL) 340.91 251 B
+2 F
+-0.47 ( if any of the parameters is empty or) 367.31 251 P
+(if it was not able to allocate space for the section. To allocate space for an arbitrary num-) 108 238 T
+(ber of sections to a geometry, use) 108 225 T
+1 F
+(XkbAllocGeomSections) 271.97 225 T
+2 F
+(.) 384.61 225 T
+(To add a row to a section, use) 108 204 T
+1 F
+(XkbAddGeomRow) 254.3 204 T
+2 F
+(.) 342.29 204 T
+2 11 Q
+(XkbRo) 108 183.67 T
+(wPtr) 139.5 183.67 T
+3 F
+(XkbAddGeomRo) 163.03 183.67 T
+(w) 244.82 183.67 T
+2 F
+(\050) 252.76 183.67 T
+1 F
+(section) 256.42 183.67 T
+2 F
+(,) 287.59 183.67 T
+1 F
+( sz_k) 290.34 183.67 T
+(e) 311.92 183.67 T
+(ys) 316.47 183.67 T
+2 F
+(\051) 325.64 183.67 T
+(XkbSectionPtr) 126 170.67 T
+1 F
+(section) 207 170.67 T
+2 F
+(;) 238.16 170.67 T
+(/* section to be updated */) 270 170.67 T
+(int) 126 157.67 T
+1 F
+(sz_k) 207 157.67 T
+(e) 225.83 157.67 T
+(ys) 230.39 157.67 T
+2 F
+(;) 239.55 157.67 T
+(/* number of k) 270 157.67 T
+(e) 334.97 157.67 T
+(ys to be reserv) 339.68 157.67 T
+(ed */) 403.36 157.67 T
+2 12 Q
+(One of the components of a keyboard geometry section is one or more rows of keys.) 108 138 T
+1 F
+(XkbAddGeomRow) 108 125 T
+2 F
+( adds one row to the specified) 195.98 125 T
+1 F
+(section) 342.29 125 T
+2 F
+(. The newly created row contains) 376.28 125 T
+-0.27 (space for the number of keys specified in) 108 112 P
+1 11 Q
+-0.25 (sz_k) 306.43 112 P
+-0.25 (e) 325.26 112 P
+-0.25 (ys) 329.82 112 P
+2 12 Q
+-0.27 (. They are allocated and zeroed, but other-) 338.98 112 P
+(wise uninitialized.) 108 99 T
+1 F
+(XkbAddGeomRow) 199 99 T
+2 F
+( returns) 286.98 99 T
+5 F
+-0.6 (NULL) 326.3 99 S
+2 F
+( if any of the parameters is empty or if) 352.7 99 T
+(it was not able to allocate space for the row. To allocate space for an arbitrary number of) 108 86 T
+(rows to a section, use the) 108 73 T
+1 F
+(XkbAllocGeomRows) 231.65 73 T
+2 F
+( function.) 330.3 73 T
+FMENDPAGE
+%%EndPage: "108" 120
+%%Page: "109" 121
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(109) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(To add one doodad to a section of a keyboard geometry or to the top-level geometry, use) 108 712 T
+1 F
+(XkbAddGeomDoodad) 108 699 T
+2 F
+(.) 213.31 699 T
+2 11 Q
+(XkbDoodadPtr) 108 678.67 T
+3 F
+(XkbAddGeomDoodad) 177.35 678.67 T
+2 F
+(\050) 282.48 678.67 T
+1 F
+(g) 286.14 678.67 T
+(eom) 291.54 678.67 T
+2 F
+(,) 309.86 678.67 T
+1 F
+( section) 312.61 678.67 T
+2 F
+(,) 346.52 678.67 T
+1 F
+( name) 349.27 678.67 T
+2 F
+(\051) 375.85 678.67 T
+(XkbGeometryPtr) 126 665.67 T
+1 F
+(g) 207 665.67 T
+(eom) 212.39 665.67 T
+2 F
+(;) 230.72 665.67 T
+(/* geometry to which the doodad is added */) 270 665.67 T
+(XkbSectionPtr) 126 652.67 T
+1 F
+(section) 207 652.67 T
+2 F
+(;) 238.16 652.67 T
+(/* section, if an) 270 652.67 T
+(y) 337.66 652.67 T
+(, to which the doodad is added */) 342.45 652.67 T
+(Atom) 126 639.67 T
+1 F
+(name) 207 639.67 T
+2 F
+(;) 230.83 639.67 T
+(/* name of the ne) 270 639.67 T
+(w doodad */) 346.1 639.67 T
+2 12 Q
+(A) 108 620 T
+1 F
+(doodad) 119.66 620 T
+2 F
+( describes some visible aspect of the keyboard that is not a key and is not a sec-) 155.66 620 T
+(tion.) 108 607 T
+1 F
+(XkbAddGeomDoodad) 132.67 607 T
+2 F
+( adds a doodad with name specified by) 237.98 607 T
+1 F
+(name) 427.28 607 T
+2 F
+( to the geometry) 453.28 607 T
+1 F
+-0.01 (g) 108 594 P
+-0.01 (eom) 113.88 594 P
+2 F
+-0.01 ( if) 133.87 594 P
+1 F
+-0.01 (section) 147.18 594 P
+2 F
+-0.01 ( is) 181.17 594 P
+5 F
+-0.03 -0.6 (NULL) 195.15 594 B
+2 F
+-0.01 ( or to the section of the geometry specified by) 221.55 594 P
+1 F
+-0.01 (section) 444.72 594 P
+2 F
+-0.01 ( if) 478.72 594 P
+1 F
+-0.01 (section) 492.02 594 P
+2 F
+-0.01 ( is) 526.02 594 P
+(not) 108 581 T
+5 F
+-0.6 (NULL) 126.34 581 S
+2 F
+(.) 152.74 581 T
+1 F
+(XkbAddGeomDoodad) 158.74 581 T
+2 F
+( returns) 264.05 581 T
+5 F
+-0.6 (NULL) 303.37 581 S
+2 F
+( if any of the parameters is empty or if it) 329.77 581 T
+(was not able to allocate space for the doodad. If there is already a doodad with the name) 108 568 T
+1 F
+-0.09 (name) 108 555 P
+2 F
+-0.09 ( in the doodad array for the geometry \050if) 133.99 555 P
+1 F
+-0.09 (section) 329.45 555 P
+2 F
+-0.09 ( is) 363.44 555 P
+5 F
+-0.2 -0.6 (NULL) 377.26 555 B
+2 F
+-0.09 (\051 or the section \050if) 403.66 555 P
+1 F
+-0.09 (section) 492.18 555 P
+2 F
+-0.09 ( is) 526.18 555 P
+-0.13 (non-) 108 542 P
+5 F
+-0.29 -0.6 (NULL) 130 542 B
+2 F
+-0.13 (\051, a pointer to that doodad is returned. To allocate space for an arbitrary number) 156.4 542 P
+(of doodads to a section, use the) 108 529 T
+1 F
+(XkbAllocGeomSectionDoodads) 261.31 529 T
+2 F
+( function. To allocate) 412.62 529 T
+-0.14 (space for an arbitrary number of doodads to a keyboard geometry, use the) 108 516 P
+1 F
+-0.14 (XkbAllocGeom-) 463.36 516 P
+(Doodads) 108 503 T
+2 F
+( function.) 151.33 503 T
+(To add one overlay to a section, use) 108 482 T
+1 F
+(XkbAddGeomOverlay) 283.63 482 T
+2 F
+(.) 388.93 482 T
+2 11 Q
+(XkbOv) 108 461.67 T
+(erlayPtr) 140.22 461.67 T
+3 F
+(XkbAddGeomOv) 177.79 461.67 T
+(erlay) 260.2 461.67 T
+2 F
+(\050) 284.02 461.67 T
+1 F
+(section) 287.68 461.67 T
+2 F
+(,) 318.85 461.67 T
+1 F
+( name) 321.6 461.67 T
+2 F
+(,) 348.17 461.67 T
+1 F
+( sz_r) 350.92 461.67 T
+(ows) 371.52 461.67 T
+2 F
+(\051) 388.63 461.67 T
+(XkbSectionPtr) 126 448.67 T
+1 F
+(section) 207 448.67 T
+2 F
+(;) 238.16 448.67 T
+(/* section to which an o) 270 448.67 T
+(v) 374.63 448.67 T
+(erlay will be added */) 379.97 448.67 T
+(Atom) 126 435.67 T
+1 F
+(name) 207 435.67 T
+2 F
+(;) 230.83 435.67 T
+(/* name of the o) 270 435.67 T
+(v) 341.32 435.67 T
+(erlay */) 346.66 435.67 T
+(int) 126 422.67 T
+1 F
+(sz_r) 207 422.67 T
+(ows) 224.84 422.67 T
+2 F
+(;) 241.96 422.67 T
+(/* number of ro) 270 422.67 T
+(ws to reserv) 338.46 422.67 T
+(e in the o) 391.45 422.67 T
+(v) 431.92 422.67 T
+(erlay */) 437.26 422.67 T
+1 12 Q
+(XkbAddGeomOverlay) 108 403 T
+2 F
+( adds an overlay with the specified name to the specified) 213.3 403 T
+1 F
+(section) 488.24 403 T
+2 F
+(.) 522.24 403 T
+-0.39 (The new overlay is created with space allocated for) 108 390 P
+1 F
+-0.39 (sz_rows) 354.08 390 P
+2 F
+-0.39 ( rows. If an overlay with name) 392.76 390 P
+1 F
+(name) 108 377 T
+2 F
+( already exists in the section, a pointer to the existing overlay is returned.) 133.99 377 T
+1 F
+(XkbAddGeomOverlay) 108 364 T
+2 F
+( returns) 213.3 364 T
+5 F
+-0.6 (NULL) 252.62 364 S
+2 F
+( if any of the parameters is empty or if it was not able) 279.02 364 T
+-0.34 (to allocate space for the overlay. To allocate space for an arbitrary number of overlays to a) 108 351 P
+(section, use the) 108 338 T
+1 F
+(XkbAllocGeomOverlay) 184.66 338 T
+2 F
+( function.) 295.96 338 T
+(To add a row to an existing overlay, use) 108 317 T
+1 F
+(XkbAddGeomOverlayRow) 303.3 317 T
+2 F
+(.) 429.94 317 T
+2 11 Q
+(XkbOv) 108 296.67 T
+(erlayRo) 140.22 296.67 T
+(wPtr) 174.77 296.67 T
+3 F
+(XkbAddGeomOv) 198.3 296.67 T
+(erlayRo) 280.7 296.67 T
+(w) 317.86 296.67 T
+2 F
+(\050) 325.8 296.67 T
+1 F
+(o) 329.46 296.67 T
+(verlay) 334.85 296.67 T
+2 F
+(,) 361.63 296.67 T
+1 F
+( r) 364.38 296.67 T
+(ow_under) 370.91 296.67 T
+(, sz_k) 413.69 296.67 T
+(e) 438.02 296.67 T
+(ys) 442.58 296.67 T
+2 F
+(\051) 451.74 296.67 T
+(XkbOv) 126 283.67 T
+(erlayPtr) 158.22 283.67 T
+1 F
+(o) 207 283.67 T
+(verlay) 212.39 283.67 T
+2 F
+(;) 239.88 283.67 T
+(/* o) 270 283.67 T
+(v) 286.64 283.67 T
+(erlay to be updated */) 291.98 283.67 T
+(XkbRo) 126 270.67 T
+(wPtr) 157.5 270.67 T
+1 F
+(r) 207 270.67 T
+(ow_under) 210.78 270.67 T
+2 F
+(;) 254.78 270.67 T
+(/* ro) 270 270.67 T
+(w to be o) 290.2 270.67 T
+(v) 330.67 270.67 T
+(erlayed in the section) 336 270.67 T
+1 F
+(o) 432.54 270.67 T
+(verlay) 437.93 270.67 T
+2 F
+( o) 465.42 270.67 T
+(v) 473.5 270.67 T
+(erlays */) 478.83 270.67 T
+(int) 126 257.67 T
+1 F
+(sz_k) 207 257.67 T
+(e) 225.83 257.67 T
+(ys) 230.39 257.67 T
+2 F
+(;) 239.55 257.67 T
+(/* number of k) 270 257.67 T
+(e) 334.97 257.67 T
+(ys to reserv) 339.68 257.67 T
+(e in the ro) 390.23 257.67 T
+(w */) 434.25 257.67 T
+1 12 Q
+(XkbAddGeomOverlayRow) 108 238 T
+2 F
+( adds one row to the) 234.64 238 T
+1 F
+(o) 334.62 238 T
+(verlay) 340.5 238 T
+2 F
+(. The new row contains space for) 370.49 238 T
+1 11 Q
+(sz_k) 108 225 T
+(e) 126.83 225 T
+(ys) 131.39 225 T
+2 12 Q
+( keys. If) 140.55 225 T
+1 F
+(r) 182.54 225 T
+(ow_under) 186.66 225 T
+2 F
+( specifies a row that doesn\325t exist on the underlying section,) 234.66 225 T
+1 F
+(XkbAddGeomOverlayRow) 108 212 T
+2 F
+( returns) 234.64 212 T
+5 F
+-0.6 (NULL) 273.96 212 S
+2 F
+( and doesn\325t change the overlay.) 300.36 212 T
+1 F
+( XkbAddGeo-) 455.65 212 T
+(mOverlayRow) 108 199 T
+2 F
+( returns) 176.65 199 T
+5 F
+-0.6 (NULL) 215.98 199 S
+2 F
+( if any of the parameters is empty or if it was not able to allo-) 242.38 199 T
+(cate space for the overlay.) 108 186 T
+(To add a key to an existing overlay row, use) 108 165 T
+1 F
+(XkbAddGeomOverlayKey) 323.63 165 T
+2 F
+(.) 447.59 165 T
+2 11 Q
+(XkbOv) 108 144.67 T
+(erlayK) 140.22 144.67 T
+(e) 169.88 144.67 T
+(yPtr) 174.59 144.67 T
+3 F
+(XkbAddGeomOv) 195.68 144.67 T
+(erlayK) 278.08 144.67 T
+(ey) 310.19 144.67 T
+2 F
+(\050) 320.58 144.67 T
+1 F
+(o) 324.24 144.67 T
+(verlay) 329.63 144.67 T
+2 F
+(,) 356.4 144.67 T
+1 F
+( r) 359.15 144.67 T
+(ow) 365.69 144.67 T
+(, under) 377.71 144.67 T
+2 F
+(\051) 408.87 144.67 T
+(XkbOv) 126 131.67 T
+(erlayPtr) 158.22 131.67 T
+1 F
+(o) 207 131.67 T
+(verlay) 212.39 131.67 T
+2 F
+(;) 239.88 131.67 T
+(/* o) 270 131.67 T
+(v) 286.64 131.67 T
+(erlay to be updated */) 291.98 131.67 T
+(XkbRo) 126 118.67 T
+(wPtr) 157.5 118.67 T
+1 F
+(r) 207 118.67 T
+(ow) 210.78 118.67 T
+2 F
+(;) 223.62 118.67 T
+(/* ro) 270 118.67 T
+(w in o) 290.2 118.67 T
+(v) 317.53 118.67 T
+(erlay to be updated */) 322.87 118.67 T
+(char *) 126 105.67 T
+1 F
+(under) 207 105.67 T
+2 F
+(;) 232.66 105.67 T
+(/* primary name of the k) 270 105.67 T
+(e) 378.95 105.67 T
+(y to be considered */) 383.67 105.67 T
+1 12 Q
+-0.18 (XkbAddGeomOverlayKey) 108 86 P
+2 F
+-0.18 ( adds one key to the) 231.96 86 P
+1 F
+-0.18 (r) 329.52 86 P
+-0.18 (ow) 333.65 86 P
+2 F
+-0.18 ( in the) 347.65 86 P
+1 F
+-0.18 (o) 380.1 86 P
+-0.18 (verlay) 385.98 86 P
+2 F
+-0.18 (. If there is no key named) 415.97 86 P
+1 F
+(under) 108 73 T
+2 F
+( in the row of the underlying section,) 136 73 T
+1 F
+(XkbAddGeomOverlayKey) 316.31 73 T
+2 F
+( returns) 440.27 73 T
+5 F
+-0.6 (NULL) 479.59 73 S
+2 F
+(.) 505.99 73 T
+FMENDPAGE
+%%EndPage: "109" 121
+%%Page: "110" 122
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(110) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+0 12 Q
+(13.11) 72 712 T
+(Allocating and Freeing Geometr) 108 712 T
+(y Components) 290.16 712 T
+2 F
+(Xkb provides a number of functions to allocate and free subcomponents of a keyboard) 108 692 T
+(geometry. Use these functions to create or modify keyboard geometries. Note that these) 108 679 T
+-0.2 (functions merely allocate space for the new element\050s\051, and it is up to you to fill in the val-) 108 666 P
+(ues explicitly in your code. These allocation functions increase) 108 653 T
+1 F
+(sz_) 413.28 653 T
+2 11.2 Q
+(*) 428.62 649.5 T
+2 12 Q
+( but never touch) 434.22 653 T
+1 F
+-0.11 (num_) 108 640 P
+2 11.2 Q
+-0.1 (*) 134.66 636.5 P
+2 12 Q
+-0.11 ( \050unless there is an allocation failure, in which case they reset both) 140.26 640 P
+1 F
+-0.11 (sz_) 460.8 640 P
+2 11.2 Q
+-0.1 (*) 476.13 636.5 P
+2 12 Q
+-0.11 ( and) 481.73 640 P
+1 F
+-0.11 (num_) 504.84 640 P
+2 11.2 Q
+-0.1 (*) 531.51 636.5 P
+2 12 Q
+(to zero\051. These functions return) 108 627 T
+5 F
+-0.6 (Success) 261.96 627 S
+2 F
+( if they succeed,) 308.16 627 T
+5 F
+-0.6 (BadAlloc) 389.14 627 S
+2 F
+( if they are not able) 441.94 627 T
+(to allocate space, or) 108 614 T
+5 F
+-0.6 (BadValue) 206.3 614 S
+2 F
+( if a parameter is not as expected.) 259.11 614 T
+(To allocate space for an arbitrary number of outlines to a shape, use) 108 593 T
+1 F
+(XkbAllocGeomOut-) 436.58 593 T
+(lines) 108 580 T
+2 F
+(.) 130.67 580 T
+2 11 Q
+(Status) 108 559.67 T
+3 F
+(XkbAllocGeomOutlines) 137.65 559.67 T
+2 F
+(\050) 250.1 559.67 T
+1 F
+(shape) 253.76 559.67 T
+2 F
+(,) 279.42 559.67 T
+1 F
+( num_needed) 282.17 559.67 T
+2 F
+(\051) 340.52 559.67 T
+(XkbShapePtr) 126 546.67 T
+1 F
+(shape) 207 546.67 T
+2 F
+(;) 232.66 546.67 T
+(/* shape for which outlines should be allocated */) 270 546.67 T
+(int) 126 533.67 T
+1 F
+(num_needed) 207 533.67 T
+2 F
+(;) 262.59 533.67 T
+(/* number of ne) 270 533.67 T
+(w outlines required */) 339.68 533.67 T
+1 12 Q
+(XkbAllocGeomOutlines) 108 514 T
+2 F
+( allocates space for) 221.32 514 T
+1 F
+(num_needed) 315.95 514 T
+2 F
+( outlines in the specified) 376.6 514 T
+1 F
+(shape) 496.92 514 T
+2 F
+(.) 524.92 514 T
+(The outlines are not initialized.) 108 501 T
+(To free geometry outlines, use) 108 480 T
+1 F
+(XkbFreeGeomOutlines) 257.3 480 T
+2 F
+(.) 367.94 480 T
+2 11 Q
+(v) 108 459.67 T
+(oid) 113.28 459.67 T
+3 F
+(XkbFr) 130.09 459.67 T
+(eeGeomOutlines) 161.67 459.67 T
+2 F
+(\050) 239.27 459.67 T
+1 F
+(shape) 242.94 459.67 T
+2 F
+(,) 268.6 459.67 T
+1 F
+( \336r) 271.35 459.67 T
+(st) 283.77 459.67 T
+2 F
+(,) 291.11 459.67 T
+1 F
+( count) 293.86 459.67 T
+2 F
+(,) 321.05 459.67 T
+1 F
+( fr) 323.8 459.67 T
+(ee_all) 333.48 459.67 T
+2 F
+(\051) 360.36 459.67 T
+(XkbShapePtr) 126 446.67 T
+1 F
+(shape) 207 446.67 T
+2 F
+(;) 232.66 446.67 T
+(/* shape in which outlines should be freed */) 270 446.67 T
+(int) 126 433.67 T
+1 F
+(\336r) 207 433.67 T
+(st) 216.67 433.67 T
+2 F
+(;) 224.01 433.67 T
+(/* \336rst outline to be freed */) 270 433.67 T
+(int) 126 420.67 T
+1 F
+(count) 207 420.67 T
+2 F
+(;) 231.44 420.67 T
+(/* number of outlines to be freed */) 270 420.67 T
+(Bool) 126 407.67 T
+1 F
+(fr) 207 407.67 T
+(ee_all;) 213.93 407.67 T
+2 F
+(/*) 270 407.67 T
+5 12 Q
+-0.6 (True) 281.31 407.67 S
+2 11 Q
+( => all outlines are freed */) 307.71 407.67 T
+2 12 Q
+(If) 108 388 T
+1 F
+(free_all) 118.99 388 T
+2 F
+( is) 156.32 388 T
+5 F
+-0.6 (True) 170.33 388 S
+2 F
+(, all outlines are freed regardless of the value of) 196.73 388 T
+1 F
+(first) 428.33 388 T
+2 F
+(or) 450.67 388 T
+1 F
+(count) 463.67 388 T
+2 F
+(. Other-) 490.33 388 T
+(wise,) 108 375 T
+1 F
+(count) 136 375 T
+2 F
+( outlines are freed beginning with the one specified by) 162.66 375 T
+1 F
+(first) 426.61 375 T
+2 F
+(.) 445.96 375 T
+(To) 108 354 T
+(allocate space for) 124.33 354 T
+( an arbitrary number of keys to a row, use) 208.3 354 T
+1 F
+(XkbAllocGeomKeys) 411.91 354 T
+2 F
+(.) 507.89 354 T
+2 11 Q
+(Status) 108 333.67 T
+3 F
+(XkbAllocGeomK) 137.65 333.67 T
+(eys) 218.65 333.67 T
+2 F
+(\050) 233.31 333.67 T
+1 F
+(r) 236.98 333.67 T
+(ow) 240.76 333.67 T
+2 F
+(,) 252.88 333.67 T
+1 F
+( num_needed) 255.63 333.67 T
+2 F
+(\051) 313.98 333.67 T
+(XkbRo) 126 320.67 T
+(wPtr) 157.5 320.67 T
+1 F
+(r) 207 320.67 T
+(ow) 210.78 320.67 T
+2 F
+(;) 223.62 320.67 T
+(/* ro) 270 320.67 T
+(w to which k) 290.2 320.67 T
+(e) 347.22 320.67 T
+(ys should be allocated */) 351.94 320.67 T
+(int) 126 307.67 T
+1 F
+(num_needed) 207 307.67 T
+2 F
+(;) 262.59 307.67 T
+(/* number of ne) 270 307.67 T
+(w k) 339.68 307.67 T
+(e) 355.77 307.67 T
+(ys required */) 360.49 307.67 T
+1 12 Q
+(XkbAllocGeomKeys) 108 288 T
+2 F
+( allocates) 203.98 288 T
+1 F
+(num_needed) 251.96 288 T
+2 F
+( keys and adds them to the) 312.61 288 T
+1 F
+(row) 442.93 288 T
+2 F
+(. No initializa-) 461.6 288 T
+(tion of the keys is done.) 108 275 T
+(To free geometry keys, use) 108 254 T
+1 F
+(XkbFreeGeomKeys) 241.3 254 T
+2 F
+(.) 334.6 254 T
+2 11 Q
+(v) 108 233.67 T
+(oid) 113.28 233.67 T
+3 F
+(XkbFr) 130.09 233.67 T
+(eeGeomK) 161.67 233.67 T
+(eys) 207.82 233.67 T
+2 F
+(\050) 222.49 233.67 T
+1 F
+(r) 226.15 233.67 T
+(ow) 229.93 233.67 T
+2 F
+(,) 242.06 233.67 T
+1 F
+( \336r) 244.81 233.67 T
+(st) 257.23 233.67 T
+2 F
+(,) 264.56 233.67 T
+1 F
+( count) 267.31 233.67 T
+2 F
+(,) 294.51 233.67 T
+1 F
+( fr) 297.26 233.67 T
+(ee_all) 306.93 233.67 T
+2 F
+(\051) 333.82 233.67 T
+(XkbRo) 126 220.67 T
+(wPtr) 157.5 220.67 T
+1 F
+(r) 207 220.67 T
+(ow) 210.78 220.67 T
+2 F
+(;) 223.62 220.67 T
+(/* ro) 270 220.67 T
+(w in which k) 290.2 220.67 T
+(e) 347.22 220.67 T
+(ys should be freed */) 351.94 220.67 T
+(int) 126 207.67 T
+1 F
+(\336r) 207 207.67 T
+(st) 216.67 207.67 T
+2 F
+(;) 224.01 207.67 T
+(/* \336rst k) 270 207.67 T
+(e) 306.56 207.67 T
+(y to be freed */) 311.28 207.67 T
+(int) 126 194.67 T
+1 F
+(count) 207 194.67 T
+2 F
+(;) 231.44 194.67 T
+(/* number of k) 270 194.67 T
+(e) 334.97 194.67 T
+(ys to be freed */) 339.68 194.67 T
+(Bool) 126 181.67 T
+1 F
+(fr) 207 181.67 T
+(ee_all;) 213.93 181.67 T
+2 F
+(/*) 270 181.67 T
+5 12 Q
+-0.6 (True) 281.31 181.67 S
+2 11 Q
+( => all k) 307.71 181.67 T
+(e) 344.76 181.67 T
+(ys are freed */) 349.48 181.67 T
+2 12 Q
+(If) 108 162 T
+1 F
+(free_all) 118.99 162 T
+2 F
+( is) 156.32 162 T
+5 F
+-0.6 (True) 170.33 162 S
+2 F
+(, all keys are freed regardless of the value of) 196.73 162 T
+1 F
+(first) 412.32 162 T
+2 F
+(or) 434.66 162 T
+1 F
+(count) 447.66 162 T
+2 F
+(. Otherwise,) 474.32 162 T
+1 F
+(count) 108 149 T
+2 F
+( keys are freed beginning with the one specified by) 134.66 149 T
+1 F
+(first) 382.61 149 T
+2 F
+(.) 401.95 149 T
+(To allocate geometry properties, use) 108 128 T
+1 F
+(XkbAllocGeomProps) 285.96 128 T
+2 F
+(.) 387.28 128 T
+2 11 Q
+(Status) 108 107.67 T
+3 F
+(XkbAllocGeomPr) 137.65 107.67 T
+(ops) 221.77 107.67 T
+2 F
+(\050) 237.67 107.67 T
+1 F
+(g) 241.33 107.67 T
+(eom) 246.72 107.67 T
+2 F
+(,) 265.05 107.67 T
+1 F
+( num_needed) 267.8 107.67 T
+2 F
+(\051) 326.14 107.67 T
+(XkbGeometryPtr) 126 94.67 T
+1 F
+(g) 207 94.67 T
+(eom) 212.39 94.67 T
+2 F
+(;) 230.72 94.67 T
+(/* geometry for which properties should be allocated */) 270 94.67 T
+(int) 126 81.67 T
+1 F
+(num_needed) 207 81.67 T
+2 F
+(;) 262.59 81.67 T
+(/* number of ne) 270 81.67 T
+(w properties required */) 339.68 81.67 T
+FMENDPAGE
+%%EndPage: "110" 122
+%%Page: "111" 123
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(111) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+1 12 Q
+(XkbAllocGeomProps) 108 712 T
+2 F
+( allocates space for) 209.32 712 T
+1 F
+(num_needed) 303.95 712 T
+2 F
+( properties and adds them to the) 364.6 712 T
+-0.11 (specified geometry) 108 699 P
+1 F
+-0.11 (g) 202.42 699 P
+-0.11 (eom) 208.3 699 P
+2 F
+-0.11 (. No initialization of the properties is done. A geometry property) 228.29 699 P
+(associates an arbitrary string with an equally arbitrary name. Geometry properties can be) 108 686 T
+(used to provide hints to programs that display images of keyboards, but they are not inter-) 108 673 T
+(preted by Xkb. No other geometry structures refer to geometry properties.) 108 660 T
+(To free geometry properties, use) 108 639 T
+1 F
+(XkbFreeGeomProperties) 267.29 639 T
+2 F
+(.) 387.92 639 T
+2 11 Q
+(v) 108 618.67 T
+(oid) 113.28 618.67 T
+3 F
+(XkbFr) 130.09 618.67 T
+(eeGeomPr) 161.67 618.67 T
+(operties) 210.95 618.67 T
+2 F
+(\050) 248.22 618.67 T
+1 F
+(g) 251.88 618.67 T
+(eom) 257.27 618.67 T
+2 F
+(,) 275.6 618.67 T
+1 F
+( \336r) 278.35 618.67 T
+(st) 290.77 618.67 T
+2 F
+(,) 298.1 618.67 T
+1 F
+( count) 300.85 618.67 T
+2 F
+(,) 328.04 618.67 T
+1 F
+( fr) 330.79 618.67 T
+(ee_all) 340.47 618.67 T
+2 F
+(\051) 367.36 618.67 T
+(XkbGeometryPtr) 126 605.67 T
+1 F
+(g) 207 605.67 T
+(eom) 212.39 605.67 T
+2 F
+(;) 230.72 605.67 T
+(/* geometry in which properties should be freed */) 270 605.67 T
+(int) 126 592.67 T
+1 F
+(\336r) 207 592.67 T
+(st) 216.67 592.67 T
+2 F
+(;) 224.01 592.67 T
+(/* \336rst property to be freed */) 270 592.67 T
+(int) 126 579.67 T
+1 F
+(count) 207 579.67 T
+2 F
+(;) 231.44 579.67 T
+(/* number of properties to be freed */) 270 579.67 T
+(Bool) 126 566.67 T
+1 F
+(fr) 207 566.67 T
+(ee_all;) 213.93 566.67 T
+2 F
+(/*) 270 566.67 T
+5 12 Q
+-0.6 (True) 281.31 566.67 S
+2 11 Q
+( => all properties are freed */) 307.71 566.67 T
+2 12 Q
+(If) 108 547 T
+1 F
+(free_all) 118.99 547 T
+2 F
+( is) 156.32 547 T
+5 F
+-0.6 (True) 170.33 547 S
+2 F
+(, all properties are freed regardless of the value of) 196.73 547 T
+1 F
+(first) 438.31 547 T
+2 F
+(or) 460.66 547 T
+1 F
+(count) 473.65 547 T
+2 F
+(. Other-) 500.32 547 T
+(wise,) 108 534 T
+1 F
+(count) 136 534 T
+2 F
+( properties are freed beginning with the one specified by) 162.66 534 T
+1 F
+(first) 436.6 534 T
+2 F
+(.) 455.94 534 T
+(To allocate geometry key aliases, use) 108 513 T
+1 F
+(XkbAllocGeomKeyAliases) 290.29 513 T
+2 F
+(.) 416.27 513 T
+2 11 Q
+(Status) 108 492.67 T
+3 F
+(XkbAllocGeomK) 137.65 492.67 T
+(eyAliases) 218.65 492.67 T
+2 F
+(\050) 262.03 492.67 T
+1 F
+(g) 265.7 492.67 T
+(eom) 271.09 492.67 T
+2 F
+(,) 289.41 492.67 T
+1 F
+( num_needed) 292.16 492.67 T
+2 F
+(\051) 350.51 492.67 T
+(XkbGeometryPtr) 126 479.67 T
+1 F
+(g) 207 479.67 T
+(eom) 212.39 479.67 T
+2 F
+(;) 230.72 479.67 T
+(/* geometry for which k) 270 479.67 T
+(e) 376.2 479.67 T
+(y aliases should be allocated */) 380.92 479.67 T
+(int) 126 466.67 T
+1 F
+(num_needed) 207 466.67 T
+2 F
+(;) 262.59 466.67 T
+(/* number of ne) 270 466.67 T
+(w k) 339.68 466.67 T
+(e) 355.77 466.67 T
+(y aliases required */) 360.49 466.67 T
+1 12 Q
+(XkbAllocGeomKeyAliases) 108 447 T
+2 F
+( allocates space for) 233.98 447 T
+1 F
+(num_needed) 328.61 447 T
+2 F
+( key aliases and adds them to) 389.26 447 T
+(the specified geometry) 108 434 T
+1 F
+(g) 220.31 434 T
+(eom) 226.19 434 T
+2 F
+(. A key alias is a pair of strings that associates an alternate) 246.18 434 T
+(name for a key with the real name for that key.) 108 421 T
+(To free geometry key aliases, use) 108 400 T
+1 F
+(XkbFreeGeomKeyAliases) 271.62 400 T
+2 F
+(.) 394.92 400 T
+2 11 Q
+(v) 108 379.67 T
+(oid) 113.28 379.67 T
+3 F
+(XkbFr) 130.09 379.67 T
+(eeGeomK) 161.67 379.67 T
+(eyAliases) 207.82 379.67 T
+2 F
+(\050) 251.21 379.67 T
+1 F
+(g) 254.87 379.67 T
+(eom) 260.26 379.67 T
+2 F
+(,) 278.59 379.67 T
+1 F
+( \336r) 281.34 379.67 T
+(st) 293.76 379.67 T
+2 F
+(,) 301.09 379.67 T
+1 F
+(count) 306.59 379.67 T
+2 F
+(,) 331.04 379.67 T
+1 F
+(fr) 336.54 379.67 T
+(ee_all) 343.47 379.67 T
+2 F
+(\051) 370.35 379.67 T
+(XkbGeometryPtr) 126 366.67 T
+1 F
+(g) 207 366.67 T
+(eom) 212.39 366.67 T
+2 F
+(;) 230.72 366.67 T
+(/* geometry in which k) 270 366.67 T
+(e) 371.94 366.67 T
+(y aliases should be freed */) 376.66 366.67 T
+(int) 126 353.67 T
+1 F
+(\336r) 207 353.67 T
+(st) 216.67 353.67 T
+2 F
+(;) 224.01 353.67 T
+(/* \336rst k) 270 353.67 T
+(e) 306.56 353.67 T
+(y alias to be freed */) 311.28 353.67 T
+(int) 126 340.67 T
+1 F
+(count) 207 340.67 T
+2 F
+(;) 231.44 340.67 T
+(/* number of k) 270 340.67 T
+(e) 334.97 340.67 T
+(y aliases to be freed */) 339.68 340.67 T
+(Bool) 126 327.67 T
+1 F
+(fr) 207 327.67 T
+(ee_all;) 213.93 327.67 T
+2 F
+(/*) 270 327.67 T
+5 12 Q
+-0.6 (True) 281.31 327.67 S
+2 11 Q
+( => all k) 307.71 327.67 T
+(e) 344.76 327.67 T
+(y aliases are freed */) 349.48 327.67 T
+2 12 Q
+(If) 108 308 T
+1 F
+(free_all) 118.99 308 T
+2 F
+( is) 156.32 308 T
+5 F
+-0.6 (True) 170.33 308 S
+2 F
+(, all aliases in the top level of the specified geometry) 196.73 308 T
+1 F
+(g) 452.69 308 T
+(eom) 458.57 308 T
+2 F
+( are freed) 478.56 308 T
+(regardless of the value of) 108 295 T
+1 F
+(first) 232.3 295 T
+2 F
+(or) 254.64 295 T
+1 F
+(count) 267.64 295 T
+2 F
+(. Otherwise,) 294.3 295 T
+1 F
+(count) 355.62 295 T
+2 F
+( aliases in) 382.28 295 T
+1 F
+(g) 432.61 295 T
+(eom) 438.49 295 T
+2 F
+( are freed begin-) 458.48 295 T
+(ning with the one specified by) 108 282 T
+1 F
+(first) 255.98 282 T
+2 F
+(.) 275.33 282 T
+(To allocate geometry colors, use) 108 261 T
+1 F
+(XkbAllocGeomColors) 267.3 261 T
+2 F
+(.) 372.62 261 T
+2 11 Q
+(Status) 108 240.67 T
+3 F
+(XkbAllocGeomColors) 137.65 240.67 T
+2 F
+(\050) 241.53 240.67 T
+1 F
+(g) 245.19 240.67 T
+(eom) 250.58 240.67 T
+2 F
+(,) 268.91 240.67 T
+1 F
+( num_needed) 271.66 240.67 T
+2 F
+(\051) 330 240.67 T
+(XkbGeometryPtr) 126 227.67 T
+1 F
+(g) 207 227.67 T
+(eom) 212.39 227.67 T
+2 F
+(;) 230.72 227.67 T
+(/* geometry for which colors should be allocated */) 270 227.67 T
+(int) 126 214.67 T
+1 F
+(num_needed) 207 214.67 T
+2 F
+(;) 262.59 214.67 T
+(/* number of ne) 270 214.67 T
+(w colors required. */) 339.68 214.67 T
+1 12 Q
+(XkbAllocGeomColors) 108 195 T
+2 F
+( allocates space for) 213.32 195 T
+1 F
+(num_needed) 307.96 195 T
+2 F
+( colors and adds them to the speci-) 368.6 195 T
+-0.41 (fied geometry) 108 182 P
+1 F
+-0.41 (g) 177.17 182 P
+-0.41 (eom) 183.05 182 P
+2 F
+-0.41 (. A color name is a string whose interpretation is not specified by Xkb.) 203.05 182 P
+(All other geometry data structures refer to colors using their indices in this global list or) 108 169 T
+(pointers to colors in this list.) 108 156 T
+FMENDPAGE
+%%EndPage: "111" 123
+%%Page: "112" 124
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(112) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(T) 108 712 T
+(o free geometry colors, use) 114.37 712 T
+1 F
+(XkbFreeGeomColors) 247.67 712 T
+2 F
+(.) 350.32 712 T
+2 11 Q
+(v) 108 691.67 T
+(oid) 113.28 691.67 T
+3 F
+(XkbFr) 130.09 691.67 T
+(eeGeomColors) 161.67 691.67 T
+2 F
+(\050) 230.71 691.67 T
+1 F
+(g) 234.37 691.67 T
+(eom) 239.76 691.67 T
+2 F
+(,) 258.08 691.67 T
+1 F
+( \336r) 260.83 691.67 T
+(st) 273.25 691.67 T
+2 F
+(,) 280.59 691.67 T
+1 F
+( count) 283.34 691.67 T
+2 F
+(,) 310.53 691.67 T
+1 F
+( fr) 313.28 691.67 T
+(ee_all) 322.96 691.67 T
+2 F
+(\051) 349.85 691.67 T
+(XkbGeometryPtr) 126 678.67 T
+1 F
+(g) 207 678.67 T
+(eom) 212.39 678.67 T
+2 F
+(;) 230.72 678.67 T
+(/* geometry in which colors should be freed */) 270 678.67 T
+(int) 126 665.67 T
+1 F
+(\336r) 207 665.67 T
+(st) 216.67 665.67 T
+2 F
+(;) 224.01 665.67 T
+(/* \336rst color to be freed */) 270 665.67 T
+(int) 126 652.67 T
+1 F
+(count) 207 652.67 T
+2 F
+(;) 231.44 652.67 T
+(/* number of colors to be freed */) 270 652.67 T
+(Bool) 126 639.67 T
+1 F
+(fr) 207 639.67 T
+(ee_all;) 213.93 639.67 T
+2 F
+(/*) 270 639.67 T
+5 12 Q
+-0.6 (True) 281.31 639.67 S
+2 11 Q
+( => all colors are freed */) 307.71 639.67 T
+2 12 Q
+-0.17 (If) 108 620 P
+1 F
+-0.17 (free_all) 118.82 620 P
+2 F
+-0.17 ( is) 156.15 620 P
+5 F
+-0.38 -0.6 (True) 169.8 620 B
+2 F
+-0.17 (, all colors are freed regardless of the value of) 196.2 620 P
+1 F
+-0.17 (first) 417.38 620 P
+2 F
+-0.17 (or) 439.55 620 P
+1 F
+-0.17 (count) 452.37 620 P
+2 F
+-0.17 (. Otherwise,) 479.03 620 P
+1 F
+(count) 108 607 T
+2 F
+( colors are freed beginning with the one specified by) 134.66 607 T
+1 F
+(first) 389.94 607 T
+2 F
+(.) 409.28 607 T
+(T) 108 586 T
+(o allocate points in an outline, use) 114.37 586 T
+1 F
+(XkbAllocGeomPoints) 281.03 586 T
+2 F
+(.) 384.35 586 T
+2 11 Q
+(Status) 108 565.67 T
+3 F
+(XkbAllocGeomP) 137.65 565.67 T
+(oints) 216.87 565.67 T
+2 F
+(\050) 239.48 565.67 T
+1 F
+(outline) 243.15 565.67 T
+2 F
+(,) 273.7 565.67 T
+1 F
+( num_needed) 276.45 565.67 T
+2 F
+(\051) 334.8 565.67 T
+(XkbOutlinePtr) 126 552.67 T
+1 F
+(outline) 207 552.67 T
+2 F
+(;) 237.56 552.67 T
+(/* outline for which points should be allocated */) 270 552.67 T
+(int) 126 539.67 T
+1 F
+(num_needed) 207 539.67 T
+2 F
+(;) 262.59 539.67 T
+(/* number of ne) 270 539.67 T
+(w points required */) 339.68 539.67 T
+1 12 Q
+(XkbAllocGeomPoints) 108 520 T
+2 F
+( allocates space for) 211.32 520 T
+1 F
+(num_needed) 305.95 520 T
+2 F
+( points in the specified) 366.6 520 T
+1 F
+(outline) 478.26 520 T
+2 F
+(. The) 511.6 520 T
+(points are not initialized.) 108 507 T
+(T) 108 486 T
+(o free points in a outline, use) 114.37 486 T
+1 F
+(XkbFreeGeomPoints) 256.36 486 T
+2 F
+(.) 357 486 T
+2 11 Q
+(v) 108 465.67 T
+(oid) 113.28 465.67 T
+3 F
+(XkbFr) 130.09 465.67 T
+(eeGeomP) 161.67 465.67 T
+(oints) 206.04 465.67 T
+2 F
+(\050) 228.66 465.67 T
+1 F
+(outline) 232.32 465.67 T
+2 F
+(,) 262.88 465.67 T
+1 F
+( \336r) 265.63 465.67 T
+(st) 278.05 465.67 T
+2 F
+(,) 285.39 465.67 T
+1 F
+( count) 288.14 465.67 T
+2 F
+(,) 315.33 465.67 T
+1 F
+( fr) 318.08 465.67 T
+(ee_all) 327.76 465.67 T
+2 F
+(\051) 354.64 465.67 T
+(XkbOutlinePtr) 126 452.67 T
+1 F
+(outline) 207 452.67 T
+2 F
+(;) 237.56 452.67 T
+(/* outline in which points should be freed */) 270 452.67 T
+(int) 126 439.67 T
+1 F
+(\336r) 207 439.67 T
+(st) 216.67 439.67 T
+2 F
+(;) 224.01 439.67 T
+(/* \336rst point to be freed. */) 270 439.67 T
+(int) 126 426.67 T
+1 F
+(count) 207 426.67 T
+2 F
+(;) 231.44 426.67 T
+(/* number of points to be freed */) 270 426.67 T
+(Bool) 126 413.67 T
+1 F
+(fr) 207 413.67 T
+(ee_all;) 213.93 413.67 T
+2 F
+(/*) 270 413.67 T
+5 12 Q
+-0.6 (True) 281.31 413.67 S
+2 11 Q
+( => all points are freed */) 307.71 413.67 T
+2 12 Q
+(If) 108 394 T
+1 F
+(free_all) 118.99 394 T
+2 F
+( is) 156.32 394 T
+5 F
+-0.6 (True) 170.33 394 S
+2 F
+(, all points are freed regardless of the value of) 196.73 394 T
+1 F
+(first) 419.66 394 T
+2 F
+(and) 442.01 394 T
+1 F
+(count) 462.34 394 T
+2 F
+(. Other-) 489 394 T
+-0.33 (wise, the number of points specified by) 108 381 P
+1 F
+-0.33 (count) 297.67 381 P
+2 F
+-0.33 ( are freed, beginning with the point specified) 324.34 381 P
+(by) 108 368 T
+1 F
+(first) 123 368 T
+2 F
+( in the specified outline.) 142.34 368 T
+(T) 108 347 T
+(o allocate space for an arbitrary number of geometry shapes, use) 114.37 347 T
+1 F
+(XkbAllocGeomShapes) 426.95 347 T
+2 F
+(.) 533.59 347 T
+2 11 Q
+(Status) 108 326.67 T
+3 F
+(XkbAllocGeomShapes) 137.65 326.67 T
+2 F
+(\050) 243.38 326.67 T
+1 F
+(g) 247.04 326.67 T
+(eom) 252.43 326.67 T
+2 F
+(,) 270.76 326.67 T
+1 F
+( num_needed) 273.51 326.67 T
+2 F
+(\051) 331.85 326.67 T
+(XkbGeometryPtr) 126 313.67 T
+1 F
+(g) 207 313.67 T
+(eom) 212.39 313.67 T
+2 F
+(;) 230.72 313.67 T
+(/* geometry for which shapes should be allocated */) 270 313.67 T
+(int) 126 300.67 T
+1 F
+(num_needed) 207 300.67 T
+2 F
+(;) 262.59 300.67 T
+(/* number of ne) 270 300.67 T
+(w shapes required */) 339.68 300.67 T
+1 12 Q
+(XkbAllocGeomShapes) 108 281 T
+2 F
+( allocates space for) 214.64 281 T
+1 F
+(num_needed) 309.28 281 T
+2 F
+( shapes in the specified geometry) 369.92 281 T
+1 F
+(g) 108 268 T
+(eom) 113.88 268 T
+2 F
+(. The shapes are not initialized.) 133.87 268 T
+(T) 108 247 T
+(o free geometry shapes, use) 114.37 247 T
+1 F
+(XkbFreeGeomShapes) 250.33 247 T
+2 F
+(.) 354.3 247 T
+2 11 Q
+(v) 108 226.67 T
+(oid) 113.28 226.67 T
+3 F
+(XkbFr) 130.09 226.67 T
+(eeGeomShapes) 161.67 226.67 T
+2 F
+(\050) 232.55 226.67 T
+1 F
+(g) 236.22 226.67 T
+(eom) 241.61 226.67 T
+2 F
+(,) 259.93 226.67 T
+1 F
+( \336r) 262.68 226.67 T
+(st) 275.1 226.67 T
+2 F
+(,) 282.44 226.67 T
+1 F
+( count) 285.19 226.67 T
+2 F
+(,) 312.38 226.67 T
+1 F
+( f r) 315.13 226.67 T
+(ee_all) 327.56 226.67 T
+2 F
+(\051) 354.44 226.67 T
+(XkbGeometryPtr) 126 213.67 T
+1 F
+(g) 207 213.67 T
+(eom) 212.39 213.67 T
+2 F
+(;) 230.72 213.67 T
+(/* geometry in which shapes should be freed */) 270 213.67 T
+(int) 126 200.67 T
+1 F
+(\336r) 207 200.67 T
+(st) 216.67 200.67 T
+2 F
+(;) 224.01 200.67 T
+(/* \336rst shape to be freed */) 270 200.67 T
+(int) 126 187.67 T
+1 F
+(count) 207 187.67 T
+2 F
+(;) 231.44 187.67 T
+(/* number of shapes to be freed */) 270 187.67 T
+(Bool) 126 174.67 T
+1 F
+(fr) 207 174.67 T
+(ee_all;) 213.93 174.67 T
+2 F
+(/*) 270 174.67 T
+5 12 Q
+-0.6 (True) 281.31 174.67 S
+2 11 Q
+( => all shapes are freed */) 307.71 174.67 T
+2 12 Q
+-0.44 (If) 108 155 P
+1 F
+-0.44 (free_all) 118.55 155 P
+2 F
+-0.44 ( is) 155.88 155 P
+5 F
+-0.98 -0.6 (True) 169 155 B
+2 F
+-0.44 (, all shapes in the geometry are freed regardless of the values of) 195.4 155 P
+1 F
+-0.44 (first) 498.21 155 P
+2 F
+-0.44 ( and) 517.56 155 P
+1 F
+(count) 108 142 T
+2 F
+(. Otherwise,) 134.66 142 T
+1 F
+(count) 195.98 142 T
+2 F
+( shapes are freed, beginning with the shape specified by) 222.65 142 T
+1 F
+(first) 493.58 142 T
+2 F
+(.) 512.93 142 T
+(T) 108 121 T
+(o allocate geometry sections, use) 114.37 121 T
+1 F
+(XkbAllocGeomSections) 275.68 121 T
+2 F
+(.) 388.32 121 T
+2 11 Q
+(Status) 108 100.67 T
+3 F
+(XkbAllocGeomSections) 137.65 100.67 T
+2 F
+(\050) 248.87 100.67 T
+1 F
+(g) 252.53 100.67 T
+(eom) 257.92 100.67 T
+2 F
+(,) 276.24 100.67 T
+1 F
+( num_needed) 278.99 100.67 T
+2 F
+(\051) 337.34 100.67 T
+(XkbGeometryPtr) 126 87.67 T
+1 F
+(g) 207 87.67 T
+(eom) 212.39 87.67 T
+2 F
+(;) 230.72 87.67 T
+(/*geometry for which sections should be allocated */) 270 87.67 T
+(int) 126 74.67 T
+1 F
+(num_needed) 207 74.67 T
+2 F
+(;) 262.59 74.67 T
+(/* number of ne) 270 74.67 T
+(w sections required */) 339.68 74.67 T
+FMENDPAGE
+%%EndPage: "112" 124
+%%Page: "113" 125
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(113) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+1 12 Q
+(XkbAllocGeomSections) 108 712 T
+2 F
+( allocates) 220.64 712 T
+1 F
+(num_needed) 268.63 712 T
+2 F
+( sections and adds them to the geometry) 329.28 712 T
+1 F
+(geom) 108 699 T
+2 F
+(. No initialization of the sections is done.) 133.99 699 T
+(T) 108 678 T
+(o free geometry sections, use) 114.37 678 T
+1 F
+(XkbFreeGeomSections) 257 678 T
+2 F
+(.) 366.97 678 T
+2 11 Q
+(v) 108 657.67 T
+(oid) 113.28 657.67 T
+3 F
+(XkbFr) 130.09 657.67 T
+(eeGeomSections) 161.67 657.67 T
+2 F
+(\050) 238.04 657.67 T
+1 F
+(g) 241.71 657.67 T
+(eom) 247.1 657.67 T
+2 F
+(,) 265.42 657.67 T
+1 F
+( \336r) 268.17 657.67 T
+(st) 280.59 657.67 T
+2 F
+(,) 287.93 657.67 T
+1 F
+( count) 290.68 657.67 T
+2 F
+(,) 317.87 657.67 T
+1 F
+( fr) 320.62 657.67 T
+(ee_all) 330.3 657.67 T
+2 F
+(\051) 357.18 657.67 T
+(XkbGeometryPtr) 126 644.67 T
+1 F
+(g) 207 644.67 T
+(eom) 212.39 644.67 T
+2 F
+(;) 230.72 644.67 T
+(/* geometry in which sections should be freed */) 270 644.67 T
+(int) 126 631.67 T
+1 F
+(\336r) 207 631.67 T
+(st) 216.67 631.67 T
+2 F
+(;) 224.01 631.67 T
+(/* \336rst section to be freed. */) 270 631.67 T
+(int) 126 618.67 T
+1 F
+(count) 207 618.67 T
+2 F
+(;) 231.44 618.67 T
+(/* number of sections to be freed */) 270 618.67 T
+(Bool) 126 605.67 T
+1 F
+(fr) 207 605.67 T
+(ee_all;) 213.93 605.67 T
+2 F
+(/*) 270 605.67 T
+5 12 Q
+-0.6 (True) 281.31 605.67 S
+2 11 Q
+( => all sections are freed */) 307.71 605.67 T
+2 12 Q
+(If) 108 586 T
+1 F
+(free_all) 118.99 586 T
+2 F
+( is) 156.32 586 T
+5 F
+-0.6 (True) 170.33 586 S
+2 F
+(, all sections are freed regardless of the value of) 196.73 586 T
+1 F
+(first) 428.99 586 T
+2 F
+(and) 451.33 586 T
+1 F
+(count) 471.66 586 T
+2 F
+(. Other-) 498.32 586 T
+-0.18 (wise, the number of sections specified by) 108 573 P
+1 F
+-0.18 (count) 308.01 573 P
+2 F
+-0.18 ( are freed, beginning with the section spec-) 334.67 573 P
+(ified by) 108 560 T
+1 F
+(first) 148 560 T
+2 F
+( in the specified geometry.) 167.34 560 T
+(T) 108 539 T
+(o allocate ro) 114.37 539 T
+(ws in a section, use) 173.39 539 T
+1 F
+(XkbAllocGeomRows) 269.38 539 T
+2 F
+(.) 368.03 539 T
+2 11 Q
+(Status) 108 518.67 T
+3 F
+(XkbAllocGeomRo) 137.65 518.67 T
+(ws) 223.7 518.67 T
+2 F
+(\050) 235.92 518.67 T
+1 F
+(section) 239.58 518.67 T
+2 F
+(,) 270.74 518.67 T
+1 F
+( num_needed) 273.49 518.67 T
+2 F
+(\051) 331.84 518.67 T
+(XkbSectionPtr) 126 505.67 T
+1 F
+(section) 207 505.67 T
+2 F
+(;) 238.16 505.67 T
+(/* section for which ro) 270 505.67 T
+(ws should be allocated */) 369.32 505.67 T
+(int) 126 492.67 T
+1 F
+(num_needed) 207 492.67 T
+2 F
+(;) 262.59 492.67 T
+(/* number of ne) 270 492.67 T
+(w ro) 339.68 492.67 T
+(ws required */) 359.27 492.67 T
+1 12 Q
+(XkbAllocGeomRows) 108 473 T
+2 F
+( allocates) 206.65 473 T
+1 F
+(num_needed) 254.64 473 T
+2 F
+( rows and adds them to the) 315.29 473 T
+1 F
+(section) 446.94 473 T
+2 F
+(. No initial-) 480.94 473 T
+(ization of the rows is done.) 108 460 T
+(T) 108 439 T
+(o free ro) 114.37 439 T
+(ws in a section, use) 154.72 439 T
+1 F
+(XkbFreeGeomRows) 250.7 439 T
+2 F
+(.) 346.68 439 T
+2 11 Q
+(v) 108 418.67 T
+(oid) 113.28 418.67 T
+3 F
+(XkbFr) 130.09 418.67 T
+(eeGeomRo) 161.67 418.67 T
+(ws) 212.87 418.67 T
+2 F
+(\050) 225.1 418.67 T
+1 F
+(section) 228.76 418.67 T
+2 F
+(,) 259.92 418.67 T
+1 F
+( \336r) 262.67 418.67 T
+(st) 275.09 418.67 T
+2 F
+(,) 282.43 418.67 T
+1 F
+( count) 285.18 418.67 T
+2 F
+(,) 312.37 418.67 T
+1 F
+( fr) 315.12 418.67 T
+(ee_all) 324.8 418.67 T
+2 F
+(\051) 351.68 418.67 T
+(XkbSectionPtr) 126 405.67 T
+1 F
+(section) 207 405.67 T
+2 F
+(;) 238.16 405.67 T
+(/* section in which ro) 270 405.67 T
+(ws should be freed */) 365.05 405.67 T
+(int) 126 392.67 T
+1 F
+(\336r) 207 392.67 T
+(st) 216.67 392.67 T
+2 F
+(;) 224.01 392.67 T
+(/* \336rst ro) 270 392.67 T
+(w to be freed. */) 310.06 392.67 T
+(int) 126 379.67 T
+1 F
+(count) 207 379.67 T
+2 F
+(;) 231.44 379.67 T
+(/* number of ro) 270 379.67 T
+(ws to be freed */) 338.46 379.67 T
+(Bool) 126 366.67 T
+1 F
+(fr) 207 366.67 T
+(ee_all;) 213.93 366.67 T
+2 F
+(/*) 270 366.67 T
+5 12 Q
+-0.6 (True) 281.31 366.67 S
+2 11 Q
+( => all ro) 307.71 366.67 T
+(ws are freed */) 348.26 366.67 T
+2 12 Q
+-0.25 (If) 108 347 P
+1 F
+-0.25 (free_all) 118.74 347 P
+2 F
+-0.25 ( is) 156.07 347 P
+5 F
+-0.56 -0.6 (True) 169.57 347 B
+2 F
+-0.25 (, all rows are freed regardless of the value of) 195.97 347 P
+1 F
+-0.25 (first) 410.36 347 P
+2 F
+-0.25 (and) 432.45 347 P
+1 F
+-0.25 (count) 452.52 347 P
+2 F
+-0.25 (. Otherwise,) 479.19 347 P
+-0.14 (the number of rows specified by) 108 334 P
+1 F
+-0.14 (count) 265.12 334 P
+2 F
+-0.14 ( are freed, beginning with the row specified by) 291.79 334 P
+1 F
+-0.14 (first) 517.8 334 P
+2 F
+(in the specified section.) 108 321 T
+(T) 108 300 T
+(o allocate o) 114.37 300 T
+(v) 169.51 300 T
+(erlays in a section, use) 175.33 300 T
+1 F
+(XkbAllocGeomOverlays) 286.64 300 T
+2 F
+(.) 402.61 300 T
+2 11 Q
+(Status) 108 279.67 T
+3 F
+(XkbAllocGeomOv) 137.65 279.67 T
+(erlays) 224.31 279.67 T
+2 F
+(\050) 252.42 279.67 T
+1 F
+(section) 256.08 279.67 T
+2 F
+(,) 287.24 279.67 T
+1 F
+( num_needed) 289.99 279.67 T
+2 F
+(\051) 348.34 279.67 T
+(XkbSectionPtr) 126 266.67 T
+1 F
+(section) 207 266.67 T
+2 F
+(;) 238.16 266.67 T
+(/* section for which o) 270 266.67 T
+(v) 365.77 266.67 T
+(erlays should be allocated */) 371.1 266.67 T
+(int) 126 253.67 T
+1 F
+(num_needed) 207 253.67 T
+2 F
+(;) 262.59 253.67 T
+(/* number of ne) 270 253.67 T
+(w o) 339.68 253.67 T
+(v) 355.71 253.67 T
+(erlays required */) 361.05 253.67 T
+1 12 Q
+(XkbAllocGeomRows) 108 234 T
+2 F
+( allocates) 206.65 234 T
+1 F
+(num_needed) 254.64 234 T
+2 F
+( overlays and adds them to the) 315.29 234 T
+1 F
+(section) 464.27 234 T
+2 F
+(. No ini-) 498.26 234 T
+(tialization of the overlays is done.) 108 221 T
+(T) 108 200 T
+(o free ro) 114.37 200 T
+(ws in an section, use) 154.72 200 T
+1 F
+(XkbFreeGeomOverlays) 256.7 200 T
+2 F
+(.) 370 200 T
+2 11 Q
+(v) 108 179.67 T
+(oid) 113.28 179.67 T
+3 F
+(XkbFr) 130.09 179.67 T
+(eeGeomOv) 161.67 179.67 T
+(erlays) 213.49 179.67 T
+2 F
+(\050) 241.6 179.67 T
+1 F
+(section) 245.26 179.67 T
+2 F
+(,) 276.42 179.67 T
+1 F
+( \336r) 279.17 179.67 T
+(st) 291.59 179.67 T
+2 F
+(,) 298.93 179.67 T
+1 F
+( count) 301.68 179.67 T
+2 F
+(,) 328.87 179.67 T
+1 F
+( fr) 331.62 179.67 T
+(ee_all) 341.3 179.67 T
+2 F
+(\051) 368.18 179.67 T
+(XkbSectionPtr) 126 166.67 T
+1 F
+(section) 207 166.67 T
+2 F
+(;) 238.16 166.67 T
+(/* section in which o) 270 166.67 T
+(v) 361.5 166.67 T
+(erlays should be freed */) 366.83 166.67 T
+(int) 126 153.67 T
+1 F
+(\336r) 207 153.67 T
+(st) 216.67 153.67 T
+2 F
+(;) 224.01 153.67 T
+(/* \336rst o) 270 153.67 T
+(v) 306.51 153.67 T
+(erlay to be freed. */) 311.84 153.67 T
+(int) 126 140.67 T
+1 F
+(count) 207 140.67 T
+2 F
+(;) 231.44 140.67 T
+(/* number of o) 270 140.67 T
+(v) 334.91 140.67 T
+(erlays to be freed */) 340.25 140.67 T
+(Bool) 126 127.67 T
+1 F
+(fr) 207 127.67 T
+(ee_all;) 213.93 127.67 T
+2 F
+(/*) 270 127.67 T
+5 12 Q
+-0.6 (True) 281.31 127.67 S
+2 11 Q
+( => all o) 307.71 127.67 T
+(v) 344.7 127.67 T
+(erlays are freed */) 350.04 127.67 T
+2 12 Q
+(If) 108 108 T
+1 F
+(free_all) 118.99 108 T
+2 F
+( is) 156.32 108 T
+5 F
+-0.6 (True) 170.33 108 S
+2 F
+(, all overlays are freed regardless of the value of) 196.73 108 T
+1 F
+(first) 430.98 108 T
+2 F
+(and) 453.32 108 T
+1 F
+(count) 473.65 108 T
+2 F
+(. Other-) 500.32 108 T
+(wise, the number of overlays specified by) 108 95 T
+1 F
+(count) 311.29 95 T
+2 F
+( are freed, beginning with the overlay) 337.96 95 T
+(specified by) 108 82 T
+1 F
+(first) 169.32 82 T
+2 F
+( in the specified section.) 188.66 82 T
+FMENDPAGE
+%%EndPage: "113" 125
+%%Page: "114" 126
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(114) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+2 12 Q
+(T) 108 712 T
+(o allocate ro) 114.37 712 T
+(ws in a o) 173.39 712 T
+(v) 216.2 712 T
+(erlay) 222.02 712 T
+(, use) 245.23 712 T
+1 F
+(XkbAllocGeomOverlayRows) 270.23 712 T
+2 F
+(.) 407.53 712 T
+2 11 Q
+(Status) 108 691.67 T
+3 F
+(XkbAllocGeomOv) 137.65 691.67 T
+(erlayRo) 224.31 691.67 T
+(ws) 261.47 691.67 T
+2 F
+(\050) 273.69 691.67 T
+1 F
+(o) 277.36 691.67 T
+(verlay) 282.75 691.67 T
+2 F
+(,) 309.52 691.67 T
+1 F
+( num_needed) 312.27 691.67 T
+2 F
+(\051) 370.61 691.67 T
+(XkbSectionPtr) 126 678.67 T
+1 F
+(o) 207 678.67 T
+(verlay) 212.39 678.67 T
+2 F
+(;) 239.88 678.67 T
+(/* section for which ro) 270 678.67 T
+(ws should be allocated */) 369.32 678.67 T
+(int) 126 665.67 T
+1 F
+(num_needed) 207 665.67 T
+2 F
+(;) 262.59 665.67 T
+(/* number of ne) 270 665.67 T
+(w ro) 339.68 665.67 T
+(ws required */) 359.27 665.67 T
+1 12 Q
+-0.48 (XkbAllocGeomOverlayRows) 108 646 P
+2 F
+-0.48 ( allocates) 245.3 646 P
+1 F
+-0.48 (num_needed) 292.34 646 P
+2 F
+-0.48 ( rows and adds them to the) 352.99 646 P
+1 F
+-0.48 (overlay) 481.3 646 P
+2 F
+-0.48 (. No) 517.29 646 P
+(initialization of the rows is done.) 108 633 T
+(T) 108 612 T
+(o free ro) 114.37 612 T
+(ws in an o) 154.72 612 T
+(v) 203.53 612 T
+(erlay) 209.35 612 T
+(, use) 232.56 612 T
+1 F
+(XkbFreeGeomOverlayRows) 257.56 612 T
+2 F
+(.) 392.18 612 T
+2 11 Q
+(v) 108 591.67 T
+(oid) 113.28 591.67 T
+3 F
+(XkbFr) 130.09 591.67 T
+(eeGeomOv) 161.67 591.67 T
+(erlayRo) 213.49 591.67 T
+(ws) 250.65 591.67 T
+2 F
+(\050) 262.87 591.67 T
+1 F
+(o) 266.53 591.67 T
+(verlay) 271.92 591.67 T
+2 F
+(,) 298.7 591.67 T
+1 F
+( \336r) 301.45 591.67 T
+(st) 313.86 591.67 T
+2 F
+(,) 321.2 591.67 T
+1 F
+( count) 323.95 591.67 T
+2 F
+(,) 351.14 591.67 T
+1 F
+( fr) 353.89 591.67 T
+(ee_all) 363.57 591.67 T
+2 F
+(\051) 390.46 591.67 T
+(XkbSectionPtr) 126 578.67 T
+1 F
+(o) 207 578.67 T
+(verlay) 212.39 578.67 T
+2 F
+(;) 239.88 578.67 T
+(/* section in which ro) 270 578.67 T
+(ws should be freed */) 365.05 578.67 T
+(int) 126 565.67 T
+1 F
+(\336r) 207 565.67 T
+(st) 216.67 565.67 T
+2 F
+(;) 224.01 565.67 T
+(/* \336rst ro) 270 565.67 T
+(w to be freed. */) 310.06 565.67 T
+(int) 126 552.67 T
+1 F
+(count) 207 552.67 T
+2 F
+(;) 231.44 552.67 T
+(/* number of ro) 270 552.67 T
+(ws to be freed */) 338.46 552.67 T
+(Bool) 126 539.67 T
+1 F
+(fr) 207 539.67 T
+(ee_all;) 213.93 539.67 T
+2 F
+(/*) 270 539.67 T
+5 12 Q
+-0.6 (True) 281.31 539.67 S
+2 11 Q
+( => all ro) 307.71 539.67 T
+(ws are freed */) 348.26 539.67 T
+2 12 Q
+-0.25 (If) 108 520 P
+1 F
+-0.25 (free_all) 118.74 520 P
+2 F
+-0.25 ( is) 156.07 520 P
+5 F
+-0.56 -0.6 (True) 169.57 520 B
+2 F
+-0.25 (, all rows are freed regardless of the value of) 195.97 520 P
+1 F
+-0.25 (first) 410.36 520 P
+2 F
+-0.25 (and) 432.45 520 P
+1 F
+-0.25 (count) 452.52 520 P
+2 F
+-0.25 (. Otherwise,) 479.19 520 P
+-0.14 (the number of rows specified by) 108 507 P
+1 F
+-0.14 (count) 265.12 507 P
+2 F
+-0.14 ( are freed, beginning with the row specified by) 291.79 507 P
+1 F
+-0.14 (first) 517.8 507 P
+2 F
+(in the specified overlay.) 108 494 T
+(T) 108 473 T
+(o allocate k) 114.37 473 T
+(e) 169.57 473 T
+(ys in an o) 174.72 473 T
+(v) 220.87 473 T
+(erlay ro) 226.69 473 T
+(w) 263.38 473 T
+(, use) 271.26 473 T
+1 F
+(XkbAllocGeomOverlayKeys) 296.26 473 T
+2 F
+(.) 430.88 473 T
+2 11 Q
+(Status) 108 452.67 T
+3 F
+(XkbAllocGeomOv) 137.65 452.67 T
+(erlayK) 224.31 452.67 T
+(eys) 256.42 452.67 T
+2 F
+(\050) 271.09 452.67 T
+1 F
+(r) 274.75 452.67 T
+(ow) 278.53 452.67 T
+2 F
+(,) 290.65 452.67 T
+1 F
+( num_needed) 293.4 452.67 T
+2 F
+(\051) 351.75 452.67 T
+(XkbRo) 126 439.67 T
+(wPtr) 157.5 439.67 T
+1 F
+(r) 207 439.67 T
+(ow) 210.78 439.67 T
+2 F
+(;) 223.62 439.67 T
+(/* section for which ro) 270 439.67 T
+(ws should be allocated */) 369.32 439.67 T
+(int) 126 426.67 T
+1 F
+(num_needed) 207 426.67 T
+2 F
+(;) 262.59 426.67 T
+(/* number of ne) 270 426.67 T
+(w ro) 339.68 426.67 T
+(ws required */) 359.27 426.67 T
+1 12 Q
+-0.05 (XkbAllocGeomOverlayKeys) 108 407 P
+2 F
+-0.05 ( allocates) 242.63 407 P
+1 F
+-0.05 (num_needed) 290.51 407 P
+2 F
+-0.05 ( keys and adds them to the) 351.16 407 P
+1 F
+-0.05 (row) 481.1 407 P
+2 F
+-0.05 (. No ini-) 499.77 407 P
+(tialization of the keys is done.) 108 394 T
+(T) 108 373 T
+(o free k) 114.37 373 T
+(e) 150.9 373 T
+(ys in an o) 156.05 373 T
+(v) 202.2 373 T
+(erlay ro) 208.02 373 T
+(w) 244.7 373 T
+(, use) 252.59 373 T
+1 F
+(XkbFreeGeomOverlayKeys) 277.58 373 T
+2 F
+(.) 409.54 373 T
+2 11 Q
+(v) 108 352.67 T
+(oid) 113.28 352.67 T
+3 F
+(XkbFr) 130.09 352.67 T
+(eeGeomOv) 161.67 352.67 T
+(erlayK) 213.49 352.67 T
+(eys) 245.6 352.67 T
+2 F
+(\050) 260.26 352.67 T
+1 F
+(r) 263.92 352.67 T
+(ow) 267.71 352.67 T
+2 F
+(,) 279.83 352.67 T
+1 F
+( \336r) 282.58 352.67 T
+(st) 295 352.67 T
+2 F
+(,) 302.34 352.67 T
+1 F
+( count) 305.09 352.67 T
+2 F
+(,) 332.28 352.67 T
+1 F
+( fr) 335.03 352.67 T
+(ee_all) 344.71 352.67 T
+2 F
+(\051) 371.59 352.67 T
+(XkbRo) 126 339.67 T
+(wPtr) 157.5 339.67 T
+1 F
+(r) 207 339.67 T
+(ow) 210.78 339.67 T
+2 F
+(;) 223.62 339.67 T
+(/* ro) 270 339.67 T
+(w in which k) 290.2 339.67 T
+(e) 347.22 339.67 T
+(ys should be freed */) 351.94 339.67 T
+(int) 126 326.67 T
+1 F
+(\336r) 207 326.67 T
+(st) 216.67 326.67 T
+2 F
+(;) 224.01 326.67 T
+(/* \336rst k) 270 326.67 T
+(e) 306.56 326.67 T
+(y to be freed. */) 311.28 326.67 T
+(int) 126 313.67 T
+1 F
+(count) 207 313.67 T
+2 F
+(;) 231.44 313.67 T
+(/* number of k) 270 313.67 T
+(e) 334.97 313.67 T
+(ys to be freed */) 339.68 313.67 T
+(Bool) 126 300.67 T
+1 F
+(fr) 207 300.67 T
+(ee_all;) 213.93 300.67 T
+2 F
+(/*) 270 300.67 T
+5 12 Q
+-0.6 (True) 281.31 300.67 S
+2 11 Q
+( => all k) 307.71 300.67 T
+(e) 344.76 300.67 T
+(ys are freed */) 349.48 300.67 T
+2 12 Q
+-0.17 (If) 108 281 P
+1 F
+-0.17 (free_all) 118.82 281 P
+2 F
+-0.17 ( is) 156.15 281 P
+5 F
+-0.38 -0.6 (True) 169.8 281 B
+2 F
+-0.17 (, all keys are freed regardless of the value of) 196.2 281 P
+1 F
+-0.17 (first) 410.04 281 P
+2 F
+-0.17 (and) 432.21 281 P
+1 F
+-0.17 (count) 452.37 281 P
+2 F
+-0.17 (. Otherwise,) 479.03 281 P
+(the number of keys specified by) 108 268 T
+1 F
+(count) 264.64 268 T
+2 F
+( are freed, beginning with the key specified by) 291.3 268 T
+1 F
+(first) 517.25 268 T
+2 F
+(in the specified row.) 108 255 T
+(T) 108 234 T
+(o allocate doodads that are global to a k) 114.37 234 T
+(e) 304.88 234 T
+(yboard geometry) 310.03 234 T
+(, use) 390.9 234 T
+1 F
+(XkbAllocGeomDoodads) 415.9 234 T
+2 F
+(.) 531.88 234 T
+2 11 Q
+(Status) 108 213.67 T
+3 F
+(XkbAllocGeomDoodads) 137.65 213.67 T
+2 F
+(\050) 251.32 213.67 T
+1 F
+(g) 254.98 213.67 T
+(eom) 260.37 213.67 T
+2 F
+(,) 278.7 213.67 T
+1 F
+( num_needed) 281.45 213.67 T
+2 F
+(\051) 339.79 213.67 T
+(XkbGeometryPtr) 126 200.67 T
+1 F
+(g) 207 200.67 T
+(eom) 212.39 200.67 T
+2 F
+(;) 230.72 200.67 T
+(/* geometry for which doodads should be allocated */) 270 200.67 T
+(int) 126 187.67 T
+1 F
+(num_needed) 207 187.67 T
+2 F
+(;) 262.59 187.67 T
+(/* number of ne) 270 187.67 T
+(w doodads required */) 339.68 187.67 T
+1 12 Q
+(XkbAllocGeomDoodads) 108 168 T
+2 F
+( allocates) 223.98 168 T
+1 F
+(num_needed) 271.97 168 T
+2 F
+( doodads and adds them to the specified) 332.62 168 T
+(geometry) 108 155 T
+1 F
+(g) 156.32 155 T
+(eom) 162.2 155 T
+2 F
+(. No initialization of the doodads is done.) 182.2 155 T
+(T) 108 134 T
+(o allocate doodads that are speci\336c to a section, use) 114.37 134 T
+1 F
+(XkbAllocGeomSectionDoodads) 364.66 134 T
+2 F
+(.) 515.96 134 T
+2 11 Q
+(Status) 108 113.67 T
+3 F
+(XkbAllocGeomSectionDoodads) 137.65 113.67 T
+2 F
+(\050) 285.54 113.67 T
+1 F
+(section) 289.2 113.67 T
+2 F
+(,) 320.37 113.67 T
+1 F
+( num_needed) 323.12 113.67 T
+2 F
+(\051) 381.46 113.67 T
+(XkbSectionPtr) 126 100.67 T
+1 F
+(section) 207 100.67 T
+2 F
+(;) 238.16 100.67 T
+(/* section for which doodads should be allocated */) 270 100.67 T
+(int) 126 87.67 T
+1 F
+(num_needed) 207 87.67 T
+2 F
+(;) 262.59 87.67 T
+(/* number of ne) 270 87.67 T
+(w doodads required */) 339.68 87.67 T
+FMENDPAGE
+%%EndPage: "114" 126
+%%Page: "115" 127
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(115) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(13 K) 431.08 744.87 T
+(e) 457.99 744.87 T
+(yboard Geometry) 462.71 744.87 T
+1 12 Q
+-0.18 (XkbAllocGeomSectionDoodads) 108 712 P
+2 F
+-0.18 ( allocates) 259.31 712 P
+1 F
+-0.18 (num_needed) 306.94 712 P
+2 F
+-0.18 ( doodads and adds them to the spec-) 367.59 712 P
+(ified) 108 699 T
+1 F
+(section) 133 699 T
+2 F
+(. No initialization of the doodads is done.) 166.99 699 T
+(T) 108 678 T
+(o free geometry doodads, use) 114.37 678 T
+1 F
+(XkbFreeGeomDoodads) 258.34 678 T
+2 F
+(.) 371.64 678 T
+2 11 Q
+(v) 108 657.67 T
+(oid) 113.28 657.67 T
+3 F
+(XkbFr) 130.09 657.67 T
+(eeGeomDoodads) 161.67 657.67 T
+2 F
+(\050) 240.49 657.67 T
+1 F
+(doodads) 244.16 657.67 T
+2 F
+(,) 281.44 657.67 T
+1 F
+( count) 284.19 657.67 T
+2 F
+(,) 311.38 657.67 T
+1 F
+( fr) 314.13 657.67 T
+(ee_all) 323.81 657.67 T
+2 F
+(\051) 350.69 657.67 T
+(XkbDoodadPtr) 126 644.67 T
+1 F
+(doodads) 207 644.67 T
+2 F
+(;) 244.28 644.67 T
+(/* doodads to be freed */) 270 644.67 T
+(int) 126 631.67 T
+1 F
+(count) 207 631.67 T
+2 F
+(;) 231.44 631.67 T
+(/* number of doodads to be freed */) 270 631.67 T
+(Bool) 126 618.67 T
+1 F
+(fr) 207 618.67 T
+(ee_all;) 213.93 618.67 T
+2 F
+(/*) 270 618.67 T
+5 12 Q
+-0.6 (True) 281.31 618.67 S
+2 11 Q
+( => all doodads are freed */) 307.71 618.67 T
+2 12 Q
+(If) 108 599 T
+1 F
+(fr) 118.99 599 T
+(ee_all) 126.55 599 T
+2 F
+( is) 155.88 599 T
+5 F
+-0.6 (True) 169.88 599 S
+2 F
+(, all doodads in the array are freed, regardless of the value of) 196.29 599 T
+1 F
+(count) 490.52 599 T
+2 F
+(.) 517.19 599 T
+(Otherwise,) 108 586 T
+1 F
+(count) 163.32 586 T
+2 F
+( doodads are freed.) 189.98 586 T
+(T) 108 565 T
+(o allocate an entire geometry) 114.37 565 T
+(, use) 252.89 565 T
+1 F
+(XkbAllocGeometry) 277.88 565 T
+2 F
+(.) 368.41 565 T
+2 11 Q
+(Status) 108 544.67 T
+3 F
+(XkbAllocGeometry) 137.65 544.67 T
+2 F
+(\050) 229.3 544.67 T
+1 F
+(xkb) 232.96 544.67 T
+2 F
+(,) 248.23 544.67 T
+1 F
+( sizes) 250.98 544.67 T
+2 F
+(\051) 274.51 544.67 T
+(XkbDescPtr) 126 531.67 T
+1 F
+(xkb) 234 531.67 T
+2 F
+(;) 249.27 531.67 T
+-0.24 (/* k) 261 531.67 P
+-0.24 (e) 277.46 531.67 P
+-0.24 (yboard description for which geometry is to be allocated */) 282.18 531.67 P
+(XkbGeometrySizesPtr) 126 518.67 T
+1 F
+(sizes) 234 518.67 T
+2 F
+(;) 254.78 518.67 T
+(/* initial sizes for all geometry components */) 261 518.67 T
+1 12 Q
+-0.05 (XkbAllocGeometry) 108 499 P
+2 F
+-0.05 ( allocates a keyboard geometry and adds it to the keyboard description) 199.31 499 P
+-0.46 (specified by) 108 486 P
+1 F
+-0.46 (xkb.) 168.41 486 P
+2 F
+-0.46 (The keyboard description should be obtained via the) 190.61 486 P
+1 F
+-0.46 (XkbGetKeyboard) 441.6 486 P
+2 F
+-0.46 ( or) 524.91 486 P
+1 F
+(XkbAllockeyboard) 108 473 T
+2 F
+( functions. The) 196.64 473 T
+1 F
+(sizes) 271.97 473 T
+2 F
+( parameter specifies the number of elements to be) 294.64 473 T
+-0.26 (reserved for the subcomponents of the keyboard geometry and can be zero or more. These) 108 460 P
+(subcomponents include the) 108 447 T
+1 F
+(properties, colors, shapes, sections, and doodads) 241.66 447 T
+2 F
+(.) 477.98 447 T
+(T) 108 426 T
+(o free an entire geometry) 114.37 426 T
+(, use) 234.22 426 T
+1 F
+(XkbFreeGeometry) 259.21 426 T
+2 F
+(.) 347.06 426 T
+2 11 Q
+(v) 108 405.67 T
+(oid) 113.28 405.67 T
+3 F
+(XkbFr) 130.09 405.67 T
+(eeGeometry) 161.67 405.67 T
+2 F
+(\050) 218.47 405.67 T
+1 F
+(g) 222.14 405.67 T
+(eom) 227.53 405.67 T
+2 F
+(,) 245.85 405.67 T
+1 F
+( whic) 248.6 405.67 T
+(h) 271.97 405.67 T
+2 F
+(,) 277.47 405.67 T
+1 F
+( fr) 280.22 405.67 T
+(ee_all) 289.9 405.67 T
+2 F
+(\051) 316.78 405.67 T
+(XkbGeometryPtr) 126 392.67 T
+1 F
+(g) 207 392.67 T
+(eom) 212.39 392.67 T
+2 F
+(;) 230.72 392.67 T
+(/* geometry to be freed */) 270 392.67 T
+(unsigned int) 126 379.67 T
+1 F
+(whic) 207 379.67 T
+(h) 227.61 379.67 T
+2 F
+(;) 233.11 379.67 T
+(/* mask of geometry components to be freed */) 270 379.67 T
+(Bool) 126 366.67 T
+1 F
+(fr) 207 366.67 T
+(ee_all;) 213.93 366.67 T
+2 F
+(/*) 270 366.67 T
+5 12 Q
+-0.6 (True) 281.31 366.67 S
+2 11 Q
+( => the entire geometry is freed. */) 307.71 366.67 T
+2 12 Q
+(The values of) 108 347 T
+1 F
+(which) 176.32 347 T
+2 F
+( and) 204.98 347 T
+1 F
+(free_all) 228.31 347 T
+2 F
+(determine how much of the specified geometry is freed.) 268.64 347 T
+(The valid values for) 108 334 T
+1 F
+(which) 207.31 334 T
+2 F
+( are:) 235.98 334 T
+2 11 Q
+(#de\336ne) 126 313.67 T
+(XkbGeomPropertiesMask) 171 313.67 T
+(\0501<<0\051) 306 313.67 T
+(#de\336ne) 126 300.67 T
+(XkbGeomColorsMask) 171 300.67 T
+(\0501<<1\051) 306 300.67 T
+(#de\336ne) 126 287.67 T
+(XkbGeomShapesMask) 171 287.67 T
+(\0501<<2\051) 306 287.67 T
+(#de\336ne) 126 274.67 T
+(XkbGeomSectionsMask) 171 274.67 T
+(\0501<<3\051) 306 274.67 T
+(#de\336ne) 126 261.67 T
+(XkbGeomDoodadsMask) 171 261.67 T
+(\0501<<4\051) 306 261.67 T
+(#de\336ne) 126 248.67 T
+(XkbGeomAllMask) 171 248.67 T
+(\0500x1f\051) 306 248.67 T
+2 12 Q
+(If) 108 229 T
+1 F
+(free_all) 118.99 229 T
+2 F
+( is) 156.32 229 T
+5 F
+-0.6 (True) 170.33 229 S
+2 F
+(, the entire geometry is freed regardless of the value of) 196.73 229 T
+1 F
+(which) 461.99 229 T
+2 F
+(. Other-) 490.66 229 T
+(wise, the portions of the geometry specified by) 108 216 T
+1 F
+(which) 336.3 216 T
+2 F
+( are freed.) 364.97 216 T
+FMENDPAGE
+%%EndPage: "115" 127
+%%Page: "116" 128
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(116) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 14 Q
+(14) 72 710.67 T
+(Xkb K) 108 710.67 T
+(e) 147.47 710.67 T
+(yboar) 155.04 710.67 T
+(d Mapping) 192.88 710.67 T
+2 12 Q
+(The Xkb keyboard mapping contains all the information the server and clients need to) 108 688 T
+(interpret key events. This chapter provides an overview of the terminology used to) 108 675 T
+(describe an Xkb keyboard mapping and introduces common utilities for manipulating the) 108 662 T
+(keyboard mapping.) 108 649 T
+(The mapping consists of two components, a server map and a client map. The) 108 628 T
+1 F
+(client) 484.61 628 T
+2 F
+( map) 511.27 628 T
+-0.18 (is the collection of information a client needs to interpret key events from the keyboard. It) 108 615 P
+(contains a global list of key types and an array of key symbol maps, each of which) 108 602 T
+(describes the symbols bound to a key and the rules to be used to interpret those symbols.) 108 589 T
+(The) 108 576 T
+1 F
+(server) 129.66 576 T
+2 F
+( map contains the information the server needs to interpret key events. This) 159.65 576 T
+-0.28 (includes actions and behaviors for each key, explicit components for a key, and the virtual) 108 563 P
+(modifiers and the per-key virtual modifier mapping.) 108 550 T
+(For detailed information on particular components of the keyboard map, refer to Chapter) 108 529 T
+(15, \322Xkb Client Keyboard Mapping\323 and Chapter 16, \322Xkb Server Keyboard Mapping.\323) 108 516 T
+0 F
+(14.1) 72 491 T
+(Notation and T) 108 491 T
+(erminology) 191.28 491 T
+2 F
+-0.01 (The graphic characters or control functions that may be accessed by one key are logically) 108 471 P
+(arranged in groups and levels, where) 108 458 T
+1 F
+(gr) 287.62 458 T
+(oup) 297.74 458 T
+2 F
+( and) 315.74 458 T
+1 F
+(le) 339.07 458 T
+(vel) 347.56 458 T
+2 F
+( are defined as in the ISO9995 stan-) 361.55 458 T
+(dard:) 108 445 T
+2 11 Q
+(Group:) 126 424.67 T
+(A logical state of a k) 198 424.67 T
+(e) 289.23 424.67 T
+(yboard pro) 293.95 424.67 T
+(viding access to a collection of graphic char-) 341.75 424.67 T
+-0.07 (acters. Usually these graphic characters logically belong together and may be) 198 411.67 P
+(arranged on se) 198 398.67 T
+(v) 261.87 398.67 T
+(eral le) 267.2 398.67 T
+(v) 294.11 398.67 T
+(els within a group.) 299.44 398.67 T
+(Le) 126 372.67 T
+(v) 137.33 372.67 T
+(el:) 142.66 372.67 T
+(One of se) 198 372.67 T
+(v) 239.88 372.67 T
+(eral states \050normally 2 or 3\051 go) 245.21 372.67 T
+(v) 380.69 372.67 T
+(erning which graphic character is) 386.02 372.67 T
+(produced when a graphic k) 198 359.67 T
+(e) 317.02 359.67 T
+(y is actuated. In certain cases the le) 321.74 359.67 T
+(v) 476.64 359.67 T
+(el may also) 481.98 359.67 T
+(af) 198 346.67 T
+(fect function k) 206.27 346.67 T
+(e) 270.31 346.67 T
+(ys.) 275.03 346.67 T
+2 12 Q
+-0.44 (These definitions, taken from the ISO standard, refer to graphic keys and characters. In the) 108 327 P
+(context of Xkb, Group and Level are not constrained to graphic keys and characters; they) 108 314 T
+(may be used with any key to access any character the key is capable of generating.) 108 301 T
+(Level is often referred to as \322Shift Level\323. Levels are numbered sequentially starting at) 108 280 T
+(one.) 108 267 T
+0 F
+(Note) 126 246.67 T
+2 11 Q
+(Shift le) 162 246.67 T
+(v) 193.81 246.67 T
+(el is deri) 199.15 246.67 T
+(v) 236.76 246.67 T
+(ed from the modi\336er state, b) 242.09 246.67 T
+(ut not necessarily in the same w) 366.52 246.67 T
+(ay for) 506.95 246.67 T
+(all k) 162 234.67 T
+(e) 181.14 234.67 T
+(ys. F) 185.86 234.67 T
+(or e) 207.09 234.67 T
+(xample, the) 223.72 234.67 T
+5 12 Q
+-0.6 (Shift) 277.8 234.67 S
+2 11 Q
+( modi\336er selects shift le) 310.8 234.67 T
+(v) 415.63 234.67 T
+(el 2 on most k) 420.96 234.67 T
+(e) 483.19 234.67 T
+(ys, b) 487.91 234.67 T
+(ut for) 508.47 234.67 T
+(k) 162 222.67 T
+(e) 167.39 222.67 T
+(ypad k) 172.11 222.67 T
+(e) 201.63 222.67 T
+(ys the modi\336er bound to) 206.35 222.67 T
+4 F
+(Num_Loc) 316.66 222.67 T
+(k) 363.51 222.67 T
+2 F
+( \050that is, the) 369.01 222.67 T
+5 12 Q
+-0.6 (NumLock) 423.7 222.67 S
+2 11 Q
+( virtual modi-) 469.9 222.67 T
+(\336er\051 also selects shift le) 162 210.67 T
+(v) 265.6 210.67 T
+(el 2.) 270.93 210.67 T
+FMENDPAGE
+%%EndPage: "116" 128
+%%Page: "117" 129
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(117) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(For example, consider the following key \050the gray characters indicate symbols that are) 108 712 T
+(implied or expected but are not actually engraved on the key\051:) 108 699 T
+3 F
+(Figur) 220.57 577 T
+(e 14.1 Shift Le) 249.02 577 T
+(v) 322.17 577 T
+(els and Gr) 328.05 577 T
+(oups) 381.17 577 T
+2 F
+(This key has two groups, indicated by the columns, and each group has two shift levels.) 108 549 T
+-0.22 (For the first group \050Group1\051, the symbol shift level one is) 108 536 P
+0 F
+-0.25 (a) 384.88 536 P
+2 F
+-0.22 (, and the symbol for shift level) 391.56 536 P
+(two is) 108 523 T
+0 F
+(A) 140 523 T
+2 F
+(. For the second group, the symbol for shift level one is) 148.67 523 T
+0 11 Q
+(\276) 417.31 523 T
+2 12 Q
+(, and the symbol for) 427.09 523 T
+(shift level two is) 108 510 T
+0 11 Q
+(\256) 190.67 510 T
+2 12 Q
+(.) 201.67 510 T
+0 F
+(14.1.1) 72 485 T
+(Core Implementation) 108 485 T
+2 F
+(The standard interpretation rules for the core X keymap only allow clients to access keys) 108 465 T
+(such as the one shown in Figure 14.1. That is, clients using the standard interpretation) 108 452 T
+-0.34 (rules can only access one of four keysyms for any given) 108 439 P
+5 F
+-0.74 -0.6 (KeyPress) 376.57 439 B
+2 F
+-0.34 ( event \321 two different) 429.37 439 P
+(symbols in two different groups.) 108 426 T
+(In general, the) 108 405 T
+5 F
+-0.6 (Shift) 179.98 405 S
+2 F
+( modifier, the) 212.98 405 T
+5 F
+-0.6 (Lock) 280.97 405 S
+2 F
+( modifier, and the modifier bound to the) 307.37 405 T
+4 11 Q
+(Num_Loc) 108 392 T
+(k) 154.85 392 T
+2 12 Q
+( key are used to change between shift level 1 and shift level 2. To switch) 160.35 392 T
+(between groups, the core implementation uses the modifier bound to the) 108 379 T
+4 11 Q
+(Mode_s) 457.96 379 T
+(witch) 496.75 379 T
+2 12 Q
+-0.13 (key. When the) 108 366 P
+5 F
+-0.28 -0.6 (Mode_switch) 180.27 366 B
+2 F
+-0.13 ( modifier is set, the keyboard is logically in Group 2. When) 252.87 366 P
+(the) 108 353 T
+5 F
+-0.6 (Mode_switch) 125.66 353 S
+2 F
+( modifier is not set, the keyboard is logically in Group 1.) 198.27 353 T
+(The core implementation does not clearly specify the behavior of keys. For example, the) 108 332 T
+(locking behavior of the) 108 319 T
+4 11 Q
+(CapsLoc) 222.65 319 T
+(k) 265.83 319 T
+2 12 Q
+( and) 271.33 319 T
+4 11 Q
+(Num_Loc) 294.66 319 T
+(k) 341.51 319 T
+2 12 Q
+( keys depends on the vendor.) 347.01 319 T
+0 F
+(14.1.2) 72 294 T
+(Xkb Implementation) 108 294 T
+2 F
+(Xkb extends the core implementation by providing access to up to four keyboard groups) 108 274 T
+-0.24 (with up to 63 shift levels per key) 108 261 P
+2 9.6 Q
+-0.19 (1) 263.96 265.8 P
+2 12 Q
+-0.24 (. In addition, Xkb provides precise specifications regard-) 268.76 261 P
+(ing the behavior of keys. In Xkb, modifier state and the current group are independent) 108 248 T
+(\050with the exception of compatibility mapping, discussed in Chapter 17\051.) 108 235 T
+-0.15 (Xkb handles switching between groups via key actions, independent of any modifier state) 108 214 P
+(information. Key actions are in the server map component and are described in detail in) 108 201 T
+(section 16.1.4.) 108 188 T
+-0.07 (Xkb handles shift levels by associating a key type with each group on each key. Each key) 108 167 P
+(type defines the shift levels available for the groups on keys of its type and specifies the) 108 154 T
+(modifier combinations necessary to access each level.) 108 141 T
+72 90 540 110 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 98 204 98 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+0 0 612 792 C
+2 10 Q
+0 X
+0 0 0 1 0 0 0 K
+-0.29 (1. The core implementation restricts the number of symbols per k) 72 83.33 P
+-0.29 (e) 333.15 83.33 P
+-0.29 (y to 255. W) 337.44 83.33 P
+-0.29 (ith four groups, this allo) 383.4 83.33 P
+-0.29 (ws for up to 63) 478.39 83.33 P
+(symbols \050or shift le) 72 71.33 T
+(v) 149.25 71.33 T
+(els\051 per group. Most k) 154.1 71.33 T
+(e) 242.6 71.33 T
+(ys will only ha) 246.89 71.33 T
+(v) 305.86 71.33 T
+(e a fe) 310.71 71.33 T
+(w shift le) 332.11 71.33 T
+(v) 369.08 71.33 T
+(els.) 373.93 71.33 T
+72 63 540 720 C
+117 598 540 695 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 12 Q
+0 X
+0 0 0 1 0 0 0 K
+(A) 152.02 668.2 T
+1 0 0 0 0 1 1 K
+1 0 0 0 0 1 1 K
+(\276) 165.21 652.54 T
+(a) 153.02 652.54 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(\256) 164.54 668.2 T
+146.04 645.43 182.04 681.43 4.5 RR
+0.5 H
+0 Z
+N
+141.54 631.54 186.54 685.54 4.5 RR
+N
+0 0 0 0 1 1 1 K
+7 X
+0 0 0 0 1 1 1 K
+(@) 164.69 635.5 T
+(q) 152.69 635.5 T
+0 0 0 1 0 0 0 K
+4 10 Q
+0 X
+0 0 0 1 0 0 0 K
+(Group) 143.83 622.54 T
+6 F
+(\256) 174.4 622.54 T
+4 F
+(Shift Le) 0 -270 139.24 631.54 TF
+(v) 0 -270 139.24 665.15 TF
+(el) 0 -270 139.24 669.9 TF
+6 F
+(\256) 0 -270 139.24 677.67 TF
+4 F
+(G1L1 =) 224.45 669.58 T
+0 11 Q
+( a) 257.53 669.58 T
+4 10 Q
+(G1L2 =) 224.45 656.99 T
+0 11 Q
+(A) 260.31 656.99 T
+4 10 Q
+(G2L1 =) 224.45 644.4 T
+0 11 Q
+( \276) 257.53 644.4 T
+4 10 Q
+(G2L2 =) 224.45 631.81 T
+0 11 Q
+( \256) 257.53 631.81 T
+432.23 649 450.23 667 R
+7 X
+V
+0 X
+N
+(a) 438.18 653.99 T
+432.23 631 450.23 649 R
+7 X
+V
+0 X
+N
+(\276) 436.35 635.99 T
+450.23 649 468.23 667 R
+7 X
+V
+0 X
+N
+(A) 455.26 653.99 T
+450.23 631 468.23 649 R
+7 X
+V
+0 X
+N
+(\256) 453.74 635.99 T
+4 10 Q
+(L1) 435.67 669.3 T
+(L2) 453.67 669.3 T
+(G1) 419.45 654.65 T
+(G2) 419.45 636.65 T
+303.87 645.95 321.87 663.95 R
+7 X
+V
+0 X
+N
+0 11 Q
+(a) 309.82 650.94 T
+339.87 645.95 357.87 663.95 R
+7 X
+V
+0 X
+N
+(\276) 343.99 650.94 T
+321.87 645.95 339.87 663.95 R
+7 X
+V
+0 X
+N
+(A) 326.91 650.94 T
+357.87 645.95 375.87 663.95 R
+7 X
+V
+0 X
+N
+(\256) 361.38 650.94 T
+4 10 Q
+(L1) 307.32 666.05 T
+(L2) 325.32 666.05 T
+(G1) 315.2 636.35 T
+(G2) 351.2 636.35 T
+(L1) 343.32 666.05 T
+(L2) 361.32 666.05 T
+3 11 Q
+(Ph) 129.09 611.25 T
+(ysical K) 141.77 611.25 T
+(ey) 179.08 611.25 T
+(Symbols) 226.91 611.25 T
+(Xkb Symbols) 412.55 611.25 T
+(Cor) 307.17 611.25 T
+(e Symbols) 325.29 611.25 T
+72 63 540 720 C
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "117" 129
+%%Page: "118" 130
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(118) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+-0.44 (For example, Xkb allows key types where the) 108 712 P
+5 F
+-0.98 -0.6 (Control) 327.4 712 B
+2 F
+-0.44 ( modifier can be used to access the) 373.6 712 P
+(shift level two of a key. Key types are in the client map component and are described in) 108 699 T
+(detail in section 15.2.) 108 686 T
+(Xkb provides precise specification of the behavior of a key using key behaviors. Key) 108 665 T
+(behaviors are in the server map component and are described in detail in section 16.2.) 108 652 T
+0 F
+(14.2) 72 627 T
+(Getting Map Components fr) 108 627 T
+(om the Ser) 265.76 627 T
+(ver) 327.9 627 T
+2 F
+-0.05 (Xkb provides two functions to obtain the keyboard mapping components from the server.) 108 607 P
+(The first function,) 108 594 T
+1 F
+(XkbGetMap) 197.99 594 T
+2 F
+(, allocates an) 255.97 594 T
+5 F
+-0.6 (XkbDescRec) 321.29 594 S
+2 F
+( structure, retrieves mapping) 387.29 594 T
+(components from the server, and stores them in the) 108 581 T
+5 F
+-0.6 (XkbDescRec) 356.63 581 S
+2 F
+( structure it just allo-) 422.63 581 T
+-0.29 (cated. The second function,) 108 568 P
+1 F
+-0.29 (XkbGetUpdatedMap) 242.13 568 P
+2 F
+-0.29 (, retrieves mapping components from the) 341.45 568 P
+(server and stores them in an) 108 555 T
+5 F
+-0.6 (XkbDescRec) 245.3 555 S
+2 F
+( structure that has previously been allocated.) 311.3 555 T
+(To allocate an) 108 534 T
+5 F
+-0.6 (XkbDescRec) 178.98 534 S
+2 F
+( structure and populate it with the server\325s keyboard client) 244.98 534 T
+-0.11 (map and server map, use) 108 521 P
+1 F
+-0.11 (XkbGetMap. XkbGetMap) 229.41 521 P
+2 F
+-0.11 (is similar to) 354.15 521 P
+1 F
+-0.11 (XkbGetK) 413.49 521 P
+-0.11 (e) 457.06 521 P
+-0.11 (yboar) 462.03 521 P
+-0.11 (d) 489.58 521 P
+2 F
+-0.11 ( \050see sec-) 495.58 521 P
+(tion 6.2\051, but is used only for obtaining the address of an) 108 508 T
+5 F
+-0.6 (XkbDescRec) 382.64 508 S
+2 F
+( structure that is) 448.64 508 T
+(populated with keyboard mapping components. It allows finer control over which sub-) 108 495 T
+(structures of the keyboard mapping components are to be populated.) 108 482 T
+1 F
+(XkbGetK) 439.61 482 T
+(e) 483.18 482 T
+(yboar) 488.15 482 T
+(d) 515.7 482 T
+2 F
+(always returns fully populated components, while) 108 469 T
+1 F
+(XkbGetMap) 350.3 469 T
+2 F
+( can be instructed to return) 408.29 469 T
+(a partially populated component.) 108 456 T
+2 11 Q
+(XkbDescPtr) 108 435.67 T
+3 F
+(XkbGetMap) 164.52 435.67 T
+2 F
+(\050) 223.8 435.67 T
+1 F
+(display) 227.46 435.67 T
+(, whic) 258.63 435.67 T
+(h, de) 284.75 435.67 T
+(vice_spec) 305.97 435.67 T
+2 F
+(\051) 348.72 435.67 T
+(Display *) 126 422.67 T
+1 F
+(display) 234 422.67 T
+2 F
+(;) 265.78 422.67 T
+(/* connection to X serv) 306 422.67 T
+(er */) 408.49 422.67 T
+(unsigned int) 126 409.67 T
+1 F
+(whic) 234 409.67 T
+(h) 254.61 409.67 T
+2 F
+(;) 260.11 409.67 T
+(/* mask selecting subcomponents to populate */) 306 409.67 T
+(unsigned int) 126 396.67 T
+1 F
+(de) 234 396.67 T
+(vice_spec) 244.22 396.67 T
+2 F
+(;) 286.98 396.67 T
+(/* de) 306 396.67 T
+(vice_id, or) 327.42 396.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 377.21 396.67 S
+2 F
+( */) 455.87 396.67 T
+2 12 Q
+-0.02 (The) 108 377 P
+1 F
+-0.02 (which) 129.64 377 P
+2 F
+-0.02 ( mask is a bitwise inclusive OR of the masks defined in Table 14.1. Only those) 158.31 377 P
+(portions of the keyboard server map and the keyboard client maps that are specified in) 108 364 T
+1 F
+(whic) 108 351 T
+(h) 130.49 351 T
+2 F
+( are allocated and populated.) 136.49 351 T
+-0.4 (In addition to allocating and obtaining the server map and the client map,) 108 330 P
+1 F
+-0.4 (XkbGetMap) 457.48 330 P
+2 F
+-0.4 ( also) 515.46 330 P
+-0.26 (sets the) 108 317 P
+1 F
+-0.26 (de) 146.14 317 P
+-0.26 (vice_spec) 157.29 317 P
+2 F
+-0.26 (, the) 203.93 317 P
+1 F
+-0.26 (min_k) 227.08 317 P
+-0.26 (e) 256.29 317 P
+-0.26 (y_code) 261.25 317 P
+-0.26 (,) 295.24 317 P
+2 F
+-0.26 (and) 300.98 317 P
+1 F
+-0.26 (max_key_code) 321.04 317 P
+2 F
+-0.26 ( fields of the keyboard descrip-) 391.68 317 P
+(tion.) 108 304 T
+1 F
+(XkbGetMap) 108 283 T
+2 F
+( is synchronous; it queries the server for the desired information, waits for a) 165.98 283 T
+(reply, and then returns. If successful) 108 270 T
+1 F
+(, XkbGetMap) 282.29 270 T
+2 F
+( returns a pointer to the) 346.27 270 T
+5 F
+-0.6 (XkbDescRec) 460.92 270 S
+2 F
+(structure it allocated. If unsuccessful,) 108 257 T
+1 F
+(XkbGetMap) 290.29 257 T
+2 F
+( returns) 348.28 257 T
+5 F
+-0.6 (NULL) 387.6 257 S
+2 F
+(. When unsuccessful, one) 414 257 T
+(of the following protocol errors is also generated:) 108 244 T
+5 F
+-0.6 (BadAlloc) 348.62 244 S
+2 F
+( \050unable to allocate the) 401.42 244 T
+5 F
+-0.29 -0.6 (XkbDescRec) 108 231 B
+2 F
+-0.13 ( structure\051,) 174 231 P
+5 F
+-0.29 -0.6 (BadValue) 228.72 231 B
+2 F
+-0.13 ( \050some mask bits in) 281.52 231 P
+1 F
+-0.13 (whic) 377.2 231 P
+-0.13 (h) 399.69 231 P
+2 F
+-0.13 ( are undefined\051) 405.69 231 P
+5 F
+-0.29 -0.6 (,) 478.07 231 B
+2 F
+-0.13 ( or) 484.67 231 P
+5 F
+-0.29 -0.6 (BadIm-) 500.4 231 B
+-0.86 -0.6 (plementation) 108 218 B
+2 F
+-0.39 ( \050a compatible version of the Xkb extension is not available in the server\051.) 187.2 218 P
+(To free the returned data, use) 108 205 T
+1 F
+(XkbF) 251.62 205 T
+(r) 276.95 205 T
+(eeClientMap) 281.17 205 T
+2 F
+(.) 343.16 205 T
+(Xkb also provides convenience functions to get partial component definitions from the) 108 184 T
+-0.5 (server. These functions are specified in the \322convenience functions\323 column in Table 14.1.) 108 171 P
+(Refer to the sections listed in the table for more information on these functions.) 108 158 T
+3 F
+(T) 144.37 138 T
+(able 14.1 Xkb Mapping Component Masks and Con) 151.27 138 T
+(v) 419.83 138 T
+(enience Functions) 425.71 138 T
+1 F
+(Mask) 86.55 118 T
+(V) 245 118 T
+(alue) 251 118 T
+(Map) 279.65 118 T
+(F) 314.6 118 T
+(ields) 321.39 118 T
+(Con) 379.85 118 T
+(venience Functions) 399.38 118 T
+(Section) 524.9 118 T
+5 11 Q
+-0.33 (XkbKeyTypesMask) 86.55 102.67 S
+2 F
+(\0501<<0\051) 245 102.67 T
+(client) 279.65 102.67 T
+(types) 314.6 102.67 T
+(size_types) 314.6 91.67 T
+(num_types) 314.6 80.67 T
+(XkbGetK) 379.85 102.67 T
+(e) 422.35 102.67 T
+(yT) 427.07 102.67 T
+(ypes) 438.41 102.67 T
+(XkbResizeK) 379.85 91.67 T
+(e) 435.79 91.67 T
+(yT) 440.51 91.67 T
+(ype) 451.85 91.67 T
+(XkbCop) 379.85 80.67 T
+(yK) 417.02 80.67 T
+(e) 430.19 80.67 T
+(yT) 434.91 80.67 T
+(ype) 446.25 80.67 T
+(XkbCop) 379.85 69.67 T
+(yK) 417.02 69.67 T
+(e) 430.19 69.67 T
+(yT) 434.91 69.67 T
+(ypes) 446.25 69.67 T
+(15.2) 524.9 102.67 T
+85.55 130 562.45 130 2 L
+V
+0.5 H
+0 Z
+N
+85.55 112 562.45 112 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "118" 130
+%%Page: "119" 131
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(119) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(Xkb defines combinations of these masks for convenience:) 108 495 T
+2 11 Q
+(#de\336ne XkbResizableInfoMask) 126 469.67 T
+(\050XkbK) 306 469.67 T
+(e) 336.27 469.67 T
+(yT) 340.99 469.67 T
+(ypesMask\051) 352.33 469.67 T
+(#de\336ne) 126 456.67 T
+(XkbAllClientInfoMask) 162 456.67 T
+(\050XkbK) 306 456.67 T
+(e) 336.27 456.67 T
+(yT) 340.99 456.67 T
+(ypesMask | XkbK) 352.33 456.67 T
+(e) 431.25 456.67 T
+(ySymsMask |) 435.96 456.67 T
+(XkbModi\336erMapMask\051) 306 443.67 T
+(#de\336ne) 126 430.67 T
+(XkbAllServ) 162 430.67 T
+(erInfoMask) 215 430.67 T
+(\050XkbExplicitComponentsMask |) 306 430.67 T
+( XkbK) 306 417.67 T
+(e) 335.36 417.67 T
+(yActionsMask| XkbK) 340.08 417.67 T
+(e) 435.8 417.67 T
+(yBeha) 440.52 417.67 T
+(viorsMask |) 468.4 417.67 T
+(XkbV) 306 404.67 T
+(irtualModsMask | XkbV) 332.22 404.67 T
+(irtualModMapMask\051) 438.87 404.67 T
+(#de\336ne) 126 391.67 T
+(XkbAllMapComponentsMask) 162 391.67 T
+(\050XkbAllClientInfoMask|XkbAllServ) 306 391.67 T
+(erInfoMask\051) 467.52 391.67 T
+2 12 Q
+(Key types, symbol maps, and actions are all interrelated: changes in one require changes) 108 371 T
+(in the others. The convenience functions make it easier to edit these components and han-) 108 358 T
+(dle the interdependencies.) 108 345 T
+(T) 108 324 T
+(o update the client or serv) 114.37 324 T
+(er map information in an e) 238.5 324 T
+(xisting k) 365.96 324 T
+(e) 407.52 324 T
+(yboard description, use) 412.67 324 T
+1 F
+(XkbGetUpdatedMap) 108 311 T
+2 F
+(.) 207.31 311 T
+2 11 Q
+(Status) 108 290.67 T
+3 F
+(XkbGetUpdatedMap) 137.65 290.67 T
+2 F
+(\050) 237.26 290.67 T
+1 F
+(display) 240.92 290.67 T
+(, whic) 272.1 290.67 T
+(h, xkb) 298.21 290.67 T
+2 F
+(\051) 324.48 290.67 T
+(Display *) 126 277.67 T
+1 F
+(display) 234 277.67 T
+2 F
+(;) 265.78 277.67 T
+(/* connection to X serv) 306 277.67 T
+(er */) 408.49 277.67 T
+(unsigned int) 126 264.67 T
+1 F
+(whic) 234 264.67 T
+(h) 254.61 264.67 T
+2 F
+(;) 260.11 264.67 T
+(/* mask selecting subcomponents to populate */) 306 264.67 T
+(XkbDescPtr) 126 251.67 T
+1 F
+(xkb) 234 251.67 T
+2 F
+(;) 249.27 251.67 T
+(/* k) 306 251.67 T
+(e) 322.7 251.67 T
+(yboard description to be updated */) 327.42 251.67 T
+2 12 Q
+(The) 108 232 T
+1 F
+(which) 129.66 232 T
+2 F
+( parameter is a bitwise inclusive OR of the masks in Table 14.1. If the needed) 158.33 232 T
+(components of the) 108 219 T
+1 F
+(xkb) 199.66 219 T
+2 F
+( structure are not already allocated,) 216.31 219 T
+1 F
+(XkbGetUpdatedMap) 387.92 219 T
+2 F
+( allocates) 487.24 219 T
+(them.) 108 206 T
+1 F
+(XkbGetUpdatedMap) 138 206 T
+2 F
+( fetches the requested information for the device specified in) 237.31 206 T
+(the) 108 193 T
+5 F
+-0.6 (XkbDescRec) 125.66 193 S
+2 F
+( passed in the) 191.66 193 T
+1 F
+(xkb) 259.66 193 T
+2 F
+( parameter.) 276.31 193 T
+1 F
+(XkbGetUpdatedMap) 108 172 T
+2 F
+( is synchronous; it queries the server for the desired information,) 207.31 172 T
+-0.29 (waits for a reply, and then returns. If successful) 108 159 P
+1 F
+-0.29 (, XkbGetUpdatedMap) 333.62 159 P
+2 F
+-0.29 ( returns) 438.64 159 P
+5 F
+-0.64 -0.6 (Success) 477.39 159 B
+2 F
+-0.29 (. If) 523.59 159 P
+(unsuccessful,) 108 146 T
+1 F
+(XkbGetUpdatedMap) 175.32 146 T
+2 F
+( returns one of the following:) 274.63 146 T
+5 F
+-0.6 (BadAlloc) 417.95 146 S
+2 F
+( \050unable to) 470.75 146 T
+-0.35 (allocate a component in the) 108 133 P
+5 F
+-0.78 -0.6 (XkbDescRec) 241.21 133 B
+2 F
+-0.35 ( structure\051,) 307.21 133 P
+5 F
+-0.78 -0.6 (BadValue) 361.49 133 B
+2 F
+-0.35 ( \050some mask bits in) 414.29 133 P
+1 F
+-0.35 (whic) 508.86 133 P
+-0.35 (h) 531.35 133 P
+2 F
+(are undefined\051,) 108 120 T
+5 F
+-0.6 (BadImplementation) 183.64 120 S
+2 F
+( \050a compatible version of the Xkb extension is not) 295.84 120 T
+(available in the server or the reply from the server was invalid\051.) 108 107 T
+5 11 Q
+-0.33 (XkbKeySymsMask) 86.55 676.67 S
+2 F
+(\0501<<1\051) 245 676.67 T
+(client) 279.65 676.67 T
+(syms) 314.6 676.67 T
+(size_syms) 314.6 665.67 T
+(num_syms) 314.6 654.67 T
+(k) 314.6 643.67 T
+(e) 319.99 643.67 T
+(y_sym_map) 324.71 643.67 T
+(XkbGetK) 379.85 676.67 T
+(e) 422.35 676.67 T
+(ySyms) 427.07 676.67 T
+(XkbResizeK) 379.85 665.67 T
+(e) 435.79 665.67 T
+(ySyms) 440.51 665.67 T
+(XkbChangeT) 379.85 654.67 T
+(ypesOfK) 438.24 654.67 T
+(e) 477.68 654.67 T
+(y) 482.39 654.67 T
+(15.3) 524.9 676.67 T
+5 F
+-0.33 (XkbModifierMapMask) 86.55 628.67 S
+2 F
+(\0501<<2\051) 245 628.67 T
+(client) 279.65 628.67 T
+(modmap) 314.6 628.67 T
+(XkbGetK) 379.85 628.67 T
+(e) 422.35 628.67 T
+(yModi\336erMap) 427.07 628.67 T
+(15.4) 524.9 628.67 T
+5 F
+-0.33 (XkbExplicitComponentsMask) 86.55 613.67 S
+2 F
+(\0501<<3\051) 245 613.67 T
+(serv) 279.65 613.67 T
+(er) 297.81 613.67 T
+(e) 314.6 613.67 T
+(xplicit) 319.32 613.67 T
+(XkbGetK) 379.85 613.67 T
+(e) 422.35 613.67 T
+(yExplicitComponents) 427.07 613.67 T
+(16.3) 524.9 613.67 T
+5 F
+-0.33 (XkbKeyActionsMask) 86.55 598.67 S
+2 F
+(\0501<<4\051) 245 598.67 T
+(serv) 279.65 598.67 T
+(er) 297.81 598.67 T
+(k) 314.6 598.67 T
+(e) 319.99 598.67 T
+(y_acts) 324.71 598.67 T
+(acts) 314.6 587.67 T
+(num_acts) 314.6 576.67 T
+(size_acts) 314.6 565.67 T
+(XkbGetK) 379.85 598.67 T
+(e) 422.35 598.67 T
+(yActions) 427.07 598.67 T
+(XkbResizeK) 379.85 587.67 T
+(e) 435.79 587.67 T
+(yActions) 440.51 587.67 T
+(16.1) 524.9 598.67 T
+5 F
+-0.33 (XkbKeyBehaviorsMask) 86.55 550.67 S
+2 F
+(\0501<<5\051) 245 550.67 T
+(serv) 279.65 550.67 T
+(er) 297.81 550.67 T
+(beha) 314.6 550.67 T
+(viors) 335.15 550.67 T
+(XkbGetK) 379.85 550.67 T
+(e) 422.35 550.67 T
+(yBeha) 427.07 550.67 T
+(viors) 454.95 550.67 T
+(16.2) 524.9 550.67 T
+5 F
+-0.33 (XkbVirtualModsMask) 86.55 535.67 S
+2 F
+(\0501<<6\051) 245 535.67 T
+(serv) 279.65 535.67 T
+(er) 297.81 535.67 T
+(vmods) 314.6 535.67 T
+(XkbGetV) 379.85 535.67 T
+(irtualMods) 421.96 535.67 T
+(16.4) 524.9 535.67 T
+5 F
+-0.33 (XkbVirtualModMapMask) 86.55 520.67 S
+2 F
+(\0501<<7\051) 245 520.67 T
+(serv) 279.65 520.67 T
+(er) 297.81 520.67 T
+(vmodmap) 314.6 520.67 T
+(XkbGetV) 379.85 520.67 T
+(irtualModMap) 421.96 520.67 T
+(16.4) 524.9 520.67 T
+3 12 Q
+(T) 144.37 712 T
+(able 14.1 Xkb Mapping Component Masks and Con) 151.27 712 T
+(v) 419.83 712 T
+(enience Functions) 425.71 712 T
+1 F
+(Mask) 86.55 692 T
+(V) 245 692 T
+(alue) 251 692 T
+(Map) 279.65 692 T
+(F) 314.6 692 T
+(ields) 321.39 692 T
+(Con) 379.85 692 T
+(venience Functions) 399.38 692 T
+(Section) 524.9 692 T
+85.55 704 562.45 704 2 L
+V
+0.5 H
+0 Z
+N
+85.55 686 562.45 686 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "119" 131
+%%Page: "120" 132
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(120) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(14.3) 72 712 T
+(Changing Map Components in the Ser) 108 712 T
+(ver) 325.48 712 T
+2 F
+-0.44 (There are two ways to make changes to map components: either change a local copy of the) 108 692 P
+(keyboard map and call) 108 679 T
+1 F
+(XkbSetMap) 219.97 679 T
+2 F
+( to send the modified map to the server, or, to reduce) 275.29 679 T
+(network traffic, use an) 108 666 T
+5 F
+-0.6 (XkbMapChangesRec) 218.96 666 S
+2 F
+( structure and call) 324.57 666 T
+1 F
+(XkbChang) 413.21 666 T
+(eMap) 463.75 666 T
+2 F
+(.) 491.08 666 T
+2 11 Q
+(Bool) 108 645.67 T
+3 F
+(XkbSetMap) 132.15 645.67 T
+2 F
+(\050) 188.98 645.67 T
+1 F
+(dpy) 192.65 645.67 T
+2 F
+(,) 207.81 645.67 T
+1 F
+( whic) 210.56 645.67 T
+(h) 233.93 645.67 T
+2 F
+(,) 239.43 645.67 T
+1 F
+( xkb) 242.18 645.67 T
+2 F
+(\051) 260.2 645.67 T
+(Display *) 126 632.67 T
+1 F
+(dpy) 234 632.67 T
+2 F
+(;) 249.88 632.67 T
+(/* connection to X serv) 288 632.67 T
+(er */) 390.49 632.67 T
+(unsigned int) 126 619.67 T
+1 F
+(whic) 234 619.67 T
+(h) 254.61 619.67 T
+2 F
+(;) 260.11 619.67 T
+(/* mask selecting subcomponents to update */) 288 619.67 T
+(XkbDescPtr) 126 606.67 T
+1 F
+(xkb) 234 606.67 T
+2 F
+(;) 249.27 606.67 T
+(/* description from which ne) 288 606.67 T
+(w v) 414.82 606.67 T
+(alues are tak) 430.74 606.67 T
+(en */) 485.6 606.67 T
+2 12 Q
+-0.17 (Use) 108 587 P
+1 F
+-0.17 (XkbSetMap) 129.49 587 P
+2 F
+-0.17 ( to send a complete new set of values for entire components \050for example,) 184.81 587 P
+(all symbols, all actions, and so on\051 to the server. The) 108 574 T
+1 F
+(which) 363.97 574 T
+2 F
+( parameter specifies the com-) 392.64 574 T
+-0.07 (ponents to be sent to the server, and is a bitwise inclusive OR of the masks listed in Table) 108 561 P
+(14.1. The) 108 548 T
+1 F
+(xkb) 156.66 548 T
+2 F
+( parameter is a pointer to an) 173.32 548 T
+5 F
+-0.6 (XkbDescRec) 310.28 548 S
+2 F
+( structure and contains the infor-) 376.29 548 T
+(mation to be copied to the server. For each bit set in the) 108 535 T
+1 F
+(which) 377.96 535 T
+2 F
+( parameter,) 406.63 535 T
+1 F
+(XkbSetMap) 463.61 535 T
+2 F
+-0.01 (takes the corresponding structure values from the) 108 522 P
+1 F
+-0.01 (xkb) 347.51 522 P
+2 F
+-0.01 ( parameter and sends it to the server) 364.17 522 P
+(specified by) 108 509 T
+1 F
+(dpy) 169.32 509 T
+2 F
+(.) 186.65 509 T
+(If any components specified by) 108 488 T
+1 F
+(which) 261.64 488 T
+2 F
+( are not present in the) 290.3 488 T
+1 F
+(xkb) 396.95 488 T
+2 F
+( parameter,) 413.6 488 T
+1 F
+(XkbSetMap) 470.58 488 T
+2 F
+-0.17 (returns) 108 475 P
+5 F
+-0.36 -0.6 (False) 144.16 475 B
+2 F
+-0.17 (. Otherwise, it sends the update request to the server and returns) 177.16 475 P
+5 F
+-0.36 -0.6 (True) 485.11 475 B
+2 F
+-0.17 (.) 511.51 475 P
+1 F
+-0.17 (Xkb-) 517.34 475 P
+(SetMap) 108 462 T
+2 F
+( can generate) 144.66 462 T
+5 F
+-0.6 (BadAlloc) 210.96 462 S
+2 F
+(,) 263.76 462 T
+5 F
+-0.6 (BadLength) 269.76 462 S
+2 F
+(, and) 329.16 462 T
+5 F
+-0.6 (BadValue) 355.49 462 S
+2 F
+( protocol errors.) 408.29 462 T
+(Key types, symbol maps, and actions are all interrelated; changes in one require changes) 108 441 T
+(in the others. Xkb provides functions to make it easier to edit these components and han-) 108 428 T
+-0.23 (dle the interdependencies. Table 14.1 lists these helper functions and provides a pointer to) 108 415 P
+(where they are defined.) 108 402 T
+0 F
+(14.3.1) 72 377 T
+(The XkbMapChang) 108 377 T
+(esRec Structure) 216.13 377 T
+2 F
+(Use the) 108 357 T
+5 F
+-0.6 (XkbMapChangesRec) 147.32 357 S
+2 F
+( structure to identify and track partial modifications to the) 252.93 357 T
+(mapping components and to reduce the amount of traffic between the server and clients.) 108 344 T
+2 11 Q
+(typedef struct _XkbMapChanges {) 126 323.67 T
+(unsigned short) 144 310.67 T
+(changed;) 234 310.67 T
+(/* identi\336es v) 342 310.67 T
+(alid components in structure */) 401.62 310.67 T
+(K) 144 297.67 T
+(e) 151.67 297.67 T
+(yCode) 156.39 297.67 T
+(min_k) 234 297.67 T
+(e) 262.01 297.67 T
+(y_code;) 266.73 297.67 T
+(/* lo) 342 297.67 T
+(west numbered k) 361.59 297.67 T
+(e) 436.63 297.67 T
+(ycode for de) 441.35 297.67 T
+(vice */) 496.05 297.67 T
+(K) 144 284.67 T
+(e) 151.67 284.67 T
+(yCode) 156.39 284.67 T
+(max_k) 234 284.67 T
+(e) 263.83 284.67 T
+(y_code;) 268.55 284.67 T
+(/* highest numbered k) 342 284.67 T
+(e) 439.97 284.67 T
+(ycode for de) 444.68 284.67 T
+(vice */) 499.39 284.67 T
+(unsigned char) 144 271.67 T
+(\336rst_type;) 234 271.67 T
+(/* inde) 342 271.67 T
+(x of \336rst k) 372.08 271.67 T
+(e) 417.5 271.67 T
+(y) 422.22 271.67 T
+1 F
+(type) 430.47 271.67 T
+2 F
+( modi\336ed */) 448.8 271.67 T
+(unsigned char) 144 258.67 T
+(num_types;) 234 258.67 T
+(/* # types modi\336ed */) 342 258.67 T
+(K) 144 245.67 T
+(e) 151.67 245.67 T
+(yCode) 156.39 245.67 T
+(\336rst_k) 234 245.67 T
+(e) 262.01 245.67 T
+(y_sym;) 266.73 245.67 T
+(/* \336rst k) 342 245.67 T
+(e) 378.56 245.67 T
+(y whose) 383.28 245.67 T
+1 F
+(key_sym_map) 422.39 245.67 T
+2 F
+( changed */) 484.09 245.67 T
+(unsigned char) 144 232.67 T
+(num_k) 234 232.67 T
+(e) 264.45 232.67 T
+(y_syms;) 269.17 232.67 T
+(/* #) 342 232.67 T
+1 F
+(key_sym_map) 361.56 232.67 T
+2 F
+( entries changed */) 423.26 232.67 T
+(K) 144 219.67 T
+(e) 151.67 219.67 T
+(yCode) 156.39 219.67 T
+(\336rst_k) 234 219.67 T
+(e) 262.01 219.67 T
+(y_act;) 266.73 219.67 T
+(/* \336rst k) 342 219.67 T
+(e) 378.56 219.67 T
+(y whose) 383.28 219.67 T
+1 F
+(key_acts) 422.39 219.67 T
+2 F
+(entry changed */) 463.01 219.67 T
+(unsigned char) 144 206.67 T
+(num_k) 234 206.67 T
+(e) 264.45 206.67 T
+(y_acts;) 269.17 206.67 T
+(/* #) 342 206.67 T
+1 F
+(key_acts) 361.56 206.67 T
+2 F
+( entries changed */) 399.43 206.67 T
+(K) 144 193.67 T
+(e) 151.67 193.67 T
+(yCode) 156.39 193.67 T
+(\336rst_k) 234 193.67 T
+(e) 262.01 193.67 T
+(y_beha) 266.73 193.67 T
+(vior;) 298.27 193.67 T
+(/* \336rst k) 342 193.67 T
+(e) 378.56 193.67 T
+(y whose) 383.28 193.67 T
+1 F
+(behaviors) 422.39 193.67 T
+2 F
+( changed */) 465.77 193.67 T
+(unsigned char) 144 180.67 T
+(num_k) 234 180.67 T
+(e) 264.45 180.67 T
+(y_beha) 269.17 180.67 T
+(viors;) 300.71 180.67 T
+(/* #) 342 180.67 T
+1 F
+(behaviors) 361.56 180.67 T
+2 F
+( entries changed */) 404.94 180.67 T
+(K) 144 167.67 T
+(e) 151.67 167.67 T
+(yCode) 156.39 167.67 T
+(\336rst_k) 234 167.67 T
+(e) 262.01 167.67 T
+(y_e) 266.73 167.67 T
+(xplicit;) 282.44 167.67 T
+(/* \336rst k) 342 167.67 T
+(e) 378.56 167.67 T
+(y whose) 383.28 167.67 T
+1 F
+(explicit) 422.39 167.67 T
+2 F
+(entry changed */) 457.52 167.67 T
+(unsigned char) 144 154.67 T
+(num_k) 234 154.67 T
+(e) 264.45 154.67 T
+(y_e) 269.17 154.67 T
+(xplicit;) 284.89 154.67 T
+(/* #) 342 154.67 T
+1 F
+(explicit) 361.56 154.67 T
+2 F
+( entries changed */) 393.94 154.67 T
+(K) 144 141.67 T
+(e) 151.67 141.67 T
+(yCode) 156.39 141.67 T
+(\336rst_modmap_k) 234 141.67 T
+(e) 306.01 141.67 T
+(y;) 310.73 141.67 T
+(/* \336rst k) 342 141.67 T
+(e) 378.56 141.67 T
+(y whose) 383.28 141.67 T
+1 F
+(modmap) 422.39 141.67 T
+2 F
+( entry changed */) 460.27 141.67 T
+(unsigned char) 144 128.67 T
+(num_modmap_k) 234 128.67 T
+(e) 308.45 128.67 T
+(ys;) 313.17 128.67 T
+(/* #) 342 128.67 T
+1 F
+(modmap) 361.56 128.67 T
+2 F
+( entries changed */) 399.44 128.67 T
+(K) 144 115.67 T
+(e) 151.67 115.67 T
+(yCode) 156.39 115.67 T
+(\336rst_vmodmap_k) 234 115.67 T
+(e) 311.51 115.67 T
+(y;) 316.23 115.67 T
+(/* \336rst k) 342 115.67 T
+(e) 378.56 115.67 T
+(y whose) 383.28 115.67 T
+1 F
+(vmodmap) 422.39 115.67 T
+2 F
+( changed */) 465.16 115.67 T
+(unsigned char) 144 102.67 T
+(num_vmodmap_k) 234 102.67 T
+(e) 313.95 102.67 T
+(ys;) 318.67 102.67 T
+(/* #) 342 102.67 T
+1 F
+(vmodmap) 361.56 102.67 T
+2 F
+( entries changed */) 404.33 102.67 T
+(unsigned char) 144 89.67 T
+(pad1;) 234 89.67 T
+(/* reserv) 342 89.67 T
+(ed */) 380.02 89.67 T
+FMENDPAGE
+%%EndPage: "120" 132
+%%Page: "121" 133
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(121) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(unsigned short) 144 712.67 T
+(vmods;) 234 712.67 T
+(/* mask indicating which) 342 712.67 T
+1 F
+(vmods) 455.66 712.67 T
+2 F
+( changed */) 483.77 712.67 T
+(}) 126 699.67 T
+3 F
+(XkbMapChangesRec) 134.03 699.67 T
+2 F
+(,*XkbMapChangesPtr;) 234.25 699.67 T
+2 12 Q
+(The) 108 680 T
+1 F
+(changed) 129.66 680 T
+2 F
+( field identifies the map components that have changed in an) 170.32 680 T
+5 F
+-0.6 (XkbDescRec) 464.6 680 S
+2 F
+(structure and may contain any of the bits in Table 14.1, which are also shown in Table) 108 667 T
+-0.4 (14.2. Every 1 bit in) 108 654 P
+1 F
+-0.4 (changed) 201.68 654 P
+2 F
+-0.4 ( also identifies which other fields in the) 242.33 654 P
+5 F
+-0.88 -0.6 (XkbMapChangesRec) 431.8 654 B
+2 F
+(structure contain valid values, as indicated in Table 14.2. The) 108 641 T
+1 11 Q
+(min_key_code) 406.28 641 T
+2 F
+( and) 469.2 641 T
+1 F
+(max_key_code) 108 628 T
+2 12 Q
+( fields are for reference only; they are ignored on any requests sent to the) 172.75 628 T
+(server and are always updated by the server whenever it returns the data for an) 108 615 T
+5 F
+-0.6 (XkbMapChangesRec) 108 602 S
+2 F
+(.) 213.6 602 T
+(To update only partial components of a keyboard description, modify the appropriate) 108 242 T
+-0.02 (fields in the server and map components of a local copy of the keyboard description, then) 108 229 P
+(call) 108 216 T
+1 F
+(XkbChang) 128.33 216 T
+(eMap) 178.87 216 T
+2 F
+( with an) 206.2 216 T
+5 F
+-0.6 (XkbMapChangesRec) 247.86 216 S
+2 F
+( structure indicating which compo-) 353.46 216 T
+(nents have changed.) 108 203 T
+2 11 Q
+(Bool) 108 182.67 T
+3 F
+(XkbChangeMap) 132.15 182.67 T
+2 F
+(\050) 210.38 182.67 T
+1 F
+(dpy) 214.04 182.67 T
+2 F
+(,) 229.21 182.67 T
+1 F
+( xkb) 231.96 182.67 T
+2 F
+(,) 249.98 182.67 T
+1 F
+( c) 252.73 182.67 T
+(hang) 260.2 182.67 T
+(es) 282.09 182.67 T
+2 F
+(\051) 291.25 182.67 T
+(Display *) 126 169.67 T
+1 F
+(dpy) 234 169.67 T
+2 F
+(;) 249.88 169.67 T
+(/* connection to X serv) 288 169.67 T
+(er */) 390.49 169.67 T
+(XkbDescPtr) 126 156.67 T
+1 F
+(xkb) 234 156.67 T
+2 F
+(;) 249.27 156.67 T
+(/* description from which ne) 288 156.67 T
+(w v) 414.82 156.67 T
+(alues are tak) 430.74 156.67 T
+(en */) 485.6 156.67 T
+(XkbMapChangesPtr) 126 143.67 T
+1 F
+(c) 234 143.67 T
+(hang) 238.72 143.67 T
+(es) 260.61 143.67 T
+2 F
+(;) 269.77 143.67 T
+(/*identi\336es component parts to update */) 288 143.67 T
+1 12 Q
+(XkbChang) 108 124 T
+(eMap) 158.54 124 T
+2 F
+( copies any components specified by the) 185.87 124 T
+1 F
+(changes) 382.84 124 T
+2 F
+( structure from the key-) 422.16 124 T
+(board description,) 108 111 T
+1 F
+(xkb) 197.65 111 T
+2 F
+(, to the X server specified by) 214.31 111 T
+1 F
+(dpy) 355.61 111 T
+2 F
+(.) 372.94 111 T
+3 F
+(T) 237.92 582 T
+(able 14.2 XkbMapChangesRec Masks) 244.82 582 T
+1 F
+(Mask) 109 548 T
+(V) 271 562 T
+(alid) 277 562 T
+(XkbMapChang) 271 548 T
+(esRec) 343.54 548 T
+(F) 271 534 T
+(ields) 277.79 534 T
+(XkbDescRec F) 379 555 T
+(ield Containing) 449.43 555 T
+(Chang) 379 541 T
+(ed Data) 410.88 541 T
+5 11 Q
+-0.33 (XkbKeyTypesMask) 109 519.67 S
+2 F
+(\336rst_type,) 271 519.67 T
+(num_types) 271 508.67 T
+(map->type[\336rst_type] ..) 379 519.67 T
+(map->type[\336rst_type + num_types - 1]) 379 508.67 T
+5 F
+-0.33 (XkbKeySymsMask) 109 494.67 S
+2 F
+(\336rst_k) 271 494.67 T
+(e) 299.01 494.67 T
+(y_sym,) 303.73 494.67 T
+(num_k) 271 483.67 T
+(e) 301.45 483.67 T
+(y_syms) 306.17 483.67 T
+(map->k) 379 494.67 T
+(e) 413.2 494.67 T
+(y_sym_map[\336rst_k) 417.92 494.67 T
+(e) 503.37 494.67 T
+(y_sym] ..) 508.08 494.67 T
+(map->k) 379 483.67 T
+(e) 413.2 483.67 T
+(y_sym_map[\336rst_k) 417.92 483.67 T
+(e) 503.37 483.67 T
+(y_sym +) 508.08 483.67 T
+(num_k) 379 472.67 T
+(e) 409.45 472.67 T
+(y_syms - 1]) 414.17 472.67 T
+5 F
+-0.33 (XkbModifierMapMask) 109 458.67 S
+2 F
+(\336rst_modmap_k) 271 458.67 T
+(e) 343.01 458.67 T
+(y) 347.73 458.67 T
+(,) 352.51 458.67 T
+(num_modmap_k) 271 447.67 T
+(e) 345.45 447.67 T
+(ys) 350.17 447.67 T
+(map->modmap[\336rst_modmap_k) 379 458.67 T
+(e) 521.98 458.67 T
+(y] ..) 526.7 458.67 T
+(map->modmap[\336rst_modmap_k) 379 447.67 T
+(e) 521.98 447.67 T
+(y +) 526.7 447.67 T
+(num_modmap_k) 379 436.67 T
+(e) 453.45 436.67 T
+(ys-1]) 458.17 436.67 T
+5 F
+-0.33 (XkbExplicitComponentsMask) 109 422.67 S
+2 F
+(\336rst_k) 271 422.67 T
+(e) 299.01 422.67 T
+(y_e) 303.73 422.67 T
+(xplicit,) 319.44 422.67 T
+(num_k) 271 411.67 T
+(e) 301.45 411.67 T
+(y_e) 306.17 411.67 T
+(xplicit) 321.89 411.67 T
+(serv) 379 422.67 T
+(er) 397.16 422.67 T
+(->e) 405.49 422.67 T
+(xplicit[\336rst_k) 420.07 422.67 T
+(e) 479.86 422.67 T
+(y_e) 484.58 422.67 T
+(xplicit] ..) 500.3 422.67 T
+(serv) 379 411.67 T
+(er) 397.16 411.67 T
+(->e) 405.49 411.67 T
+(xplicit[\336rst_k) 420.07 411.67 T
+(e) 479.86 411.67 T
+(y_e) 484.58 411.67 T
+(xplicit +) 500.3 411.67 T
+(num_k) 379 400.67 T
+(e) 409.45 400.67 T
+(y_e) 414.17 400.67 T
+(xplicit - 1]) 429.89 400.67 T
+5 F
+-0.33 (XkbKeyActionsMask) 109 386.67 S
+2 F
+(\336rst_k) 271 386.67 T
+(e) 299.01 386.67 T
+(y_act,) 303.73 386.67 T
+(num_k) 271 375.67 T
+(e) 301.45 375.67 T
+(y_acts) 306.17 375.67 T
+(serv) 379 386.67 T
+(er) 397.16 386.67 T
+(->k) 405.49 386.67 T
+(e) 420.74 386.67 T
+(y_acts[\336rst_k) 425.46 386.67 T
+(e) 485.24 386.67 T
+(y_act] ..) 489.96 386.67 T
+(serv) 379 375.67 T
+(er) 397.16 375.67 T
+(->k) 405.49 375.67 T
+(e) 420.74 375.67 T
+(y_acts[\336rst_k) 425.46 375.67 T
+(e) 485.24 375.67 T
+(y_act +) 489.96 375.67 T
+(num_k) 379 364.67 T
+(e) 409.45 364.67 T
+(y_acts - 1]) 414.17 364.67 T
+5 F
+-0.33 (XkbKeyBehaviorsMask) 109 350.67 S
+2 F
+(\336rst_k) 271 350.67 T
+(e) 299.01 350.67 T
+(y_beha) 303.73 350.67 T
+(vior) 335.27 350.67 T
+(,) 352.55 350.67 T
+(num_k) 271 339.67 T
+(e) 301.45 339.67 T
+(y_beha) 306.17 339.67 T
+(viors) 337.71 339.67 T
+(serv) 379 350.67 T
+(er) 397.16 350.67 T
+(->beha) 405.49 350.67 T
+(viors[\336rst_k) 435.9 350.67 T
+(e) 489.57 350.67 T
+(y_beha) 494.29 350.67 T
+(vior] ..) 525.84 350.67 T
+(serv) 379 339.67 T
+(er) 397.16 339.67 T
+(->beha) 405.49 339.67 T
+(viors[\336rst_k) 435.9 339.67 T
+(e) 489.57 339.67 T
+(y_beha) 494.29 339.67 T
+(vior +) 525.84 339.67 T
+(num_k) 379 328.67 T
+(e) 409.45 328.67 T
+(y_beha) 414.17 328.67 T
+(viors - 1]) 445.71 328.67 T
+5 F
+-0.33 (XkbVirtualModsMask) 109 314.67 S
+2 F
+(vmods) 271 314.67 T
+(serv) 379 314.67 T
+(er) 397.16 314.67 T
+(->vmods[*]) 405.49 314.67 T
+5 F
+-0.33 (XkbVirtualModMapMask) 109 300.67 S
+2 F
+(\336rst_vmodmap_k) 271 300.67 T
+(e) 348.51 300.67 T
+(y) 353.23 300.67 T
+(,) 358.01 300.67 T
+(num_vmodmap_k) 271 289.67 T
+(e) 350.95 289.67 T
+(ys) 355.67 289.67 T
+(serv) 379 300.67 T
+(er) 397.16 300.67 T
+(->vmodmap[\336rst_vmodmap_k) 405.49 300.67 T
+(e) 540.52 300.67 T
+(y]) 545.24 300.67 T
+(..) 379 289.67 T
+(serv) 379 278.67 T
+(er) 397.16 278.67 T
+(->vmodmap[\336rst_vmodmap_k) 405.49 278.67 T
+(e) 540.52 278.67 T
+(y) 545.24 278.67 T
+(+ num_vmodmap_k) 379 267.67 T
+(e) 467.9 267.67 T
+(ys - 1]) 472.62 267.67 T
+108 574 558 574 2 L
+V
+0.5 H
+0 Z
+N
+108 529 558 529 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "121" 133
+%%Page: "122" 134
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(122) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(If any components specified by) 108 712 T
+1 F
+(changes) 261.64 712 T
+2 F
+( are not present in the) 300.96 712 T
+1 F
+(xkb) 407.6 712 T
+2 F
+( parameter,) 424.26 712 T
+1 F
+(XkbChang) 108 699 T
+(eMap) 158.54 699 T
+2 F
+( returns) 185.87 699 T
+5 F
+-0.6 (False) 225.19 699 S
+2 F
+(. Otherwise, it sends a request to the server and returns) 258.19 699 T
+5 F
+-0.6 (True) 108 686 S
+2 F
+(.) 134.4 686 T
+1 F
+(XkbChang) 108 665 T
+(eMap) 158.54 665 T
+2 F
+( can generate) 185.87 665 T
+5 F
+-0.6 (BadAlloc) 252.17 665 S
+2 F
+(,) 304.97 665 T
+5 F
+-0.6 (BadLength) 310.97 665 S
+2 F
+(, and) 370.37 665 T
+5 F
+-0.6 (BadValue) 396.7 665 S
+2 F
+( protocol errors.) 449.5 665 T
+0 F
+(14.4) 72 640 T
+(T) 108 640 T
+(rac) 114.37 640 T
+(king Chang) 132.14 640 T
+(es to Map Components) 197.6 640 T
+2 F
+(The Xkb extension reports) 108 620 T
+5 F
+-0.6 (XkbMapNotify) 238.64 620 S
+2 F
+( events to clients wanting notification when-) 317.85 620 T
+-0.26 (ever a map component of the Xkb description for a device changes. There are many differ-) 108 607 P
+(ent types of Xkb keyboard map changes. Xkb uses an event detail mask to identify each) 108 594 T
+(type of change. The event detail masks are identical to the masks listed in Table 14.1.) 108 581 T
+-0.47 (To receive) 108 560 P
+5 F
+-1.02 -0.6 (XkbMapNotify) 161.04 560 B
+2 F
+-0.47 ( events under all possible conditions, use) 240.25 560 P
+1 F
+-0.47 (XkbSelectEvents) 436.3 560 P
+2 F
+-0.47 ( \050see) 515.61 560 P
+(section 4.3\051 and pass) 108 547 T
+5 F
+-0.6 (XkbMapNotifyMask) 210.98 547 S
+2 F
+( in both) 316.59 547 T
+1 F
+(bits_to_c) 356.26 547 T
+(hang) 400.08 547 T
+(e) 423.96 547 T
+2 F
+( and) 429.29 547 T
+1 F
+(values_for_bits) 452.62 547 T
+2 F
+(.) 526.62 547 T
+(To receive) 108 526 T
+5 F
+-0.6 (XkbMapNotify) 161.98 526 S
+2 F
+( events only under certain conditions, use) 241.18 526 T
+1 F
+(XkbSelectEventDe-) 443.15 526 T
+(tails) 108 513 T
+2 F
+( using) 128.68 513 T
+5 F
+-0.6 (XkbMapNotify) 160.68 513 S
+2 F
+( as the) 239.88 513 T
+1 F
+(e) 273.54 513 T
+(vent_type) 278.69 513 T
+2 F
+( and specifying the desired map changes in) 324.67 513 T
+1 F
+(bits_to_c) 108 500 T
+(hang) 151.82 500 T
+(e) 175.7 500 T
+2 F
+( and) 181.03 500 T
+1 F
+(values_for_bits) 204.36 500 T
+2 F
+( using mask bits from Table 14.1.) 278.36 500 T
+(The structure for) 108 479 T
+5 F
+-0.6 (XkbMapNotify) 191.64 479 S
+2 F
+( events is:) 270.84 479 T
+2 11 Q
+(typedef struct {) 126 458.67 T
+(int) 144 445.67 T
+(type;) 216 445.67 T
+(/* Xkb e) 315 445.67 T
+(xtension base e) 352.72 445.67 T
+(v) 419.65 445.67 T
+(ent code */) 424.99 445.67 T
+(unsigned long) 144 432.67 T
+(serial;) 216 432.67 T
+(/* X serv) 315 432.67 T
+(er serial number for e) 355.16 432.67 T
+(v) 449.57 432.67 T
+(ent */) 454.91 432.67 T
+(Bool) 144 419.67 T
+(send_e) 216 419.67 T
+(v) 246.27 419.67 T
+(ent;) 251.61 419.67 T
+(/*) 315 419.67 T
+5 12 Q
+-0.6 (True) 326.31 419.67 S
+2 11 Q
+( => synthetically generated */) 352.71 419.67 T
+(Display *) 144 406.67 T
+(display;) 216 406.67 T
+(/* serv) 315 406.67 T
+(er connection where e) 344.47 406.67 T
+(v) 441.02 406.67 T
+(ent generated */) 446.35 406.67 T
+(T) 144 393.67 T
+(ime) 150.34 393.67 T
+(time;) 216 393.67 T
+(/* serv) 315 393.67 T
+(er time when e) 344.47 393.67 T
+(v) 409.26 393.67 T
+(ent generated */) 414.59 393.67 T
+(int) 144 380.67 T
+(xkb_type;) 216 380.67 T
+(/*) 315 380.67 T
+5 F
+-0.33 (XkbMapNotify) 326.31 380.67 S
+2 F
+( */) 401.55 380.67 T
+(int) 144 367.67 T
+(de) 216 367.67 T
+(vice;) 226.11 367.67 T
+(/* Xkb de) 315 367.67 T
+(vice ID, will not be) 358.11 367.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 446.1 367.67 S
+2 F
+( */) 527.61 367.67 T
+(unsigned int) 144 354.67 T
+(changed;) 216 354.67 T
+(/* identi\336es v) 315 354.67 T
+(alid \336elds in rest of e) 374.62 354.67 T
+(v) 466.92 354.67 T
+(ent */) 472.26 354.67 T
+(unsigned int) 144 341.67 T
+(resized;) 216 341.67 T
+(/* reserv) 315 341.67 T
+(ed */) 353.02 341.67 T
+(int) 144 328.67 T
+(\336rst_type;) 216 328.67 T
+(/* inde) 315 328.67 T
+(x of \336rst k) 345.08 328.67 T
+(e) 390.5 328.67 T
+(y) 395.22 328.67 T
+1 F
+(type) 403.47 328.67 T
+2 F
+( modi\336ed */) 421.8 328.67 T
+(int) 144 315.67 T
+(num_types) 216 315.67 T
+(/* # types modi\336ed */) 315 315.67 T
+(K) 144 302.67 T
+(e) 151.67 302.67 T
+(yCode) 156.39 302.67 T
+(min_k) 216 302.67 T
+(e) 244.01 302.67 T
+(y_code;) 248.73 302.67 T
+(/* minimum k) 315 302.67 T
+(e) 377.24 302.67 T
+(ycode for de) 381.96 302.67 T
+(vice */) 436.66 302.67 T
+(K) 144 289.67 T
+(e) 151.67 289.67 T
+(yCode) 156.39 289.67 T
+(max_k) 216 289.67 T
+(e) 245.83 289.67 T
+(y_code;) 250.55 289.67 T
+(/* maximum k) 315 289.67 T
+(e) 379.06 289.67 T
+(ycode for de) 383.78 289.67 T
+(vice */) 438.49 289.67 T
+(K) 144 276.67 T
+(e) 151.67 276.67 T
+(yCode) 156.39 276.67 T
+(\336rst_k) 216 276.67 T
+(e) 244.01 276.67 T
+(y_sym;) 248.73 276.67 T
+(/* \336rst k) 315 276.67 T
+(e) 351.56 276.67 T
+(y whose) 356.28 276.67 T
+1 F
+(key_sym_map) 395.39 276.67 T
+2 F
+( changed */) 457.09 276.67 T
+(K) 144 263.67 T
+(e) 151.67 263.67 T
+(yCode) 156.39 263.67 T
+(\336rst_k) 216 263.67 T
+(e) 244.01 263.67 T
+(y_act;) 248.73 263.67 T
+(/* \336rst k) 315 263.67 T
+(e) 351.56 263.67 T
+(y whose) 356.28 263.67 T
+1 F
+(key_acts) 395.39 263.67 T
+2 F
+(entry changed */) 436.01 263.67 T
+(K) 144 250.67 T
+(e) 151.67 250.67 T
+(yCode) 156.39 250.67 T
+(\336rst_k) 216 250.67 T
+(e) 244.01 250.67 T
+(y_beha) 248.73 250.67 T
+(vior;) 280.27 250.67 T
+(/* \336rst k) 315 250.67 T
+(e) 351.56 250.67 T
+(y whose) 356.28 250.67 T
+1 F
+(behaviors) 395.39 250.67 T
+2 F
+( changed */) 438.77 250.67 T
+(K) 144 237.67 T
+(e) 151.67 237.67 T
+(yCode) 156.39 237.67 T
+(\336rst_k) 216 237.67 T
+(e) 244.01 237.67 T
+(y_e) 248.73 237.67 T
+(xplicit;) 264.44 237.67 T
+(/* \336rst k) 315 237.67 T
+(e) 351.56 237.67 T
+(y whose) 356.28 237.67 T
+1 F
+(explicit) 395.39 237.67 T
+2 F
+(entry changed */) 430.52 237.67 T
+(K) 144 224.67 T
+(e) 151.67 224.67 T
+(yCode) 156.39 224.67 T
+(\336rst_modmap_k) 216 224.67 T
+(e) 288.01 224.67 T
+(y;) 292.73 224.67 T
+(/* \336rst k) 315 224.67 T
+(e) 351.56 224.67 T
+(y whose) 356.28 224.67 T
+1 F
+(modmap) 395.39 224.67 T
+2 F
+( entry changed */) 433.27 224.67 T
+(K) 144 211.67 T
+(e) 151.67 211.67 T
+(yCode) 156.39 211.67 T
+(\336rst_vmodmap_k) 216 211.67 T
+(e) 293.51 211.67 T
+(y;) 298.23 211.67 T
+(/* #) 315 211.67 T
+1 F
+(modmap) 334.56 211.67 T
+2 F
+( entries changed */) 372.44 211.67 T
+(int) 144 198.67 T
+(num_k) 216 198.67 T
+(e) 246.45 198.67 T
+(y_syms;) 251.17 198.67 T
+(/* #) 315 198.67 T
+1 F
+(key_sym_map) 334.56 198.67 T
+2 F
+( entries changed */) 396.26 198.67 T
+(int) 144 185.67 T
+(num_k) 216 185.67 T
+(e) 246.45 185.67 T
+(y_acts;) 251.17 185.67 T
+(/* #) 315 185.67 T
+1 F
+(key_acts) 334.56 185.67 T
+2 F
+( entries changed */) 372.43 185.67 T
+(int) 144 172.67 T
+(num_k) 216 172.67 T
+(e) 246.45 172.67 T
+(y_beha) 251.17 172.67 T
+(viors;) 282.71 172.67 T
+(/* #) 315 172.67 T
+1 F
+(behaviors) 334.56 172.67 T
+2 F
+( entries changed */) 377.94 172.67 T
+(int) 144 159.67 T
+(num_k) 216 159.67 T
+(e) 246.45 159.67 T
+(y_e) 251.17 159.67 T
+(xplicit;) 266.89 159.67 T
+(/* #) 315 159.67 T
+1 F
+(explicit) 334.56 159.67 T
+2 F
+( entries changed */) 366.94 159.67 T
+(int) 144 146.67 T
+(num_modmap_k) 216 146.67 T
+(e) 290.45 146.67 T
+(ys;) 295.17 146.67 T
+(/* #) 315 146.67 T
+1 F
+(modmap) 334.56 146.67 T
+2 F
+( entries changed */) 372.44 146.67 T
+(int) 144 133.67 T
+(num_vmodmap_k) 216 133.67 T
+(e) 295.95 133.67 T
+(ys;) 300.67 133.67 T
+(/* #) 315 133.67 T
+1 F
+(vmodmap) 334.56 133.67 T
+2 F
+( entries changed */) 377.33 133.67 T
+(unsigned in) 144 120.67 T
+(t) 195.03 120.67 T
+(vmods;) 216 120.67 T
+(/* mask indicating which) 315 120.67 T
+1 F
+(vmods) 428.66 120.67 T
+2 F
+( changed */) 456.77 120.67 T
+(}) 126 107.67 T
+3 F
+(XkbMapNotifyEv) 134.03 107.67 T
+(ent) 218.26 107.67 T
+2 F
+(;) 232.92 107.67 T
+2 12 Q
+(The) 108 88 T
+1 F
+(c) 129.66 88 T
+(hang) 134.81 88 T
+(ed) 158.69 88 T
+2 F
+( field specifies the map components that have changed and is the bitwise) 170.02 88 T
+(inclusive OR of the mask bits defined in Table 14.1. The other fields in this event are) 108 75 T
+FMENDPAGE
+%%EndPage: "122" 134
+%%Page: "123" 135
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(123) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(interpreted as the like-named fields in an) 108 712 T
+5 F
+-0.6 (XkbMapChangesRec) 306.96 712 S
+2 F
+( \050see section 14.3.1\051. The) 412.56 712 T
+5 F
+-0.6 (XkbMapNotifyEvent) 108 699 S
+2 F
+( structure also has an additional) 220.2 699 T
+1 F
+(resized) 374.85 699 T
+2 F
+( field that is reserved for) 408.84 699 T
+(future use.) 108 686 T
+0 F
+(14.5) 72 661 T
+(Allocating and Freeing Client and Ser) 108 661 T
+(ver Maps) 321.5 661 T
+2 F
+-0.2 (Calling) 108 641 P
+1 F
+-0.2 (XkbGetMap) 146.14 641 P
+2 F
+-0.2 ( \050see section 14.2\051 should be sufficient for most applications to get cli-) 204.12 641 P
+(ent and server maps. As a result, most applications do not need to directly allocate client) 108 628 T
+(and server maps.) 108 615 T
+(If you change the number of key types or construct map components without loading the) 108 594 T
+(necessary components from the X server, do not allocate any map components directly) 108 581 T
+-0.03 (using) 108 568 P
+1 F
+-0.03 (malloc) 136.98 568 P
+2 F
+-0.03 ( or) 169.64 568 P
+1 F
+-0.03 (Xmalloc) 185.59 568 P
+2 F
+-0.03 (. Instead, use the Xkb allocators,) 225.59 568 P
+1 F
+-0.03 (XkbAllocClientMap,) 385.07 568 P
+2 F
+-0.03 ( and) 483.4 568 P
+1 F
+-0.03 (XkbAl-) 506.68 568 P
+(locServerMap) 108 555 T
+2 F
+(.) 175.98 555 T
+-0.2 (Similarly, use the Xkb destructors,) 108 534 P
+1 F
+-0.2 (XkbF) 276.63 534 P
+-0.2 (r) 301.96 534 P
+-0.2 (eeClientMap,) 306.19 534 P
+2 F
+-0.2 ( and) 371.18 534 P
+1 F
+-0.2 (XkbF) 394.1 534 P
+-0.2 (r) 419.43 534 P
+-0.2 (eeServerMap) 423.65 534 P
+2 F
+-0.2 ( instead of) 487.62 534 P
+1 F
+(fr) 108 521 T
+(ee) 115.56 521 T
+2 F
+( or) 126.22 521 T
+1 F
+(Xfree) 142.21 521 T
+2 F
+(.) 168.2 521 T
+0 F
+(14.5.1) 72 496 T
+(Allocating an Empty Client Map) 108 496 T
+2 F
+-0.09 (To allocate and initialize an empty client map description record, use) 108 476 P
+1 F
+-0.09 (XkbAllocClientMap.) 441.67 476 P
+2 11 Q
+(Status) 108 455.67 T
+3 F
+(XkbAllocClientMap) 137.65 455.67 T
+2 F
+(\050) 232.98 455.67 T
+1 F
+(xkb, whic) 236.65 455.67 T
+(h, type_count) 278.03 455.67 T
+2 F
+(\051) 337.3 455.67 T
+(XkbDescPtr) 126 442.67 T
+1 F
+(xkb) 216 442.67 T
+2 F
+(;) 231.27 442.67 T
+(/* k) 279 442.67 T
+(e) 295.7 442.67 T
+(yboard description in which to allocate client map */) 300.42 442.67 T
+(unsigned int) 126 429.67 T
+1 F
+(whic) 216 429.67 T
+(h) 236.61 429.67 T
+2 F
+(;) 242.11 429.67 T
+(/* mask selecting map components to allocate */) 279 429.67 T
+(unsigned int) 126 416.67 T
+1 F
+(type_count) 216 416.67 T
+2 F
+(;) 264.27 416.67 T
+(/* v) 279 416.67 T
+(alue of) 295.53 416.67 T
+1 F
+(num_types) 328.52 416.67 T
+2 F
+( \336eld in map to be allocated */) 375.57 416.67 T
+1 12 Q
+(XkbAllocClientMap) 108 397 T
+2 F
+( allocates and initializes an empty client map in the) 203.33 397 T
+1 F
+(map) 451.97 397 T
+2 F
+( field of the) 472.63 397 T
+(keyboard description specified by) 108 384 T
+1 F
+(xkb) 273.3 384 T
+2 F
+(. The) 289.96 384 T
+1 F
+(which) 317.62 384 T
+2 F
+( parameter specifies the particular com-) 346.28 384 T
+(ponents of the client map structure to allocate and is a mask composed by a bitwise inclu-) 108 371 T
+(sive OR of one or more of the masks shown in Table 14.3.) 108 358 T
+0 F
+(Note) 126 125.67 T
+2 11 Q
+-0.37 (The) 162 125.67 P
+1 F
+-0.37 (min_key_code) 181.48 125.67 P
+2 F
+-0.37 ( and) 244.4 125.67 P
+1 F
+-0.37 (max_key_code) 265.04 125.67 P
+2 F
+-0.37 ( \336elds of the) 329.78 125.67 P
+1 F
+-0.37 (xkb) 385.73 125.67 P
+2 F
+-0.37 ( parameter must be le) 400.99 125.67 P
+-0.37 (g) 494.03 125.67 P
+-0.37 (al v) 499.48 125.67 P
+-0.37 (alues) 515.02 125.67 P
+(if the) 162 113.67 T
+5 12 Q
+-0.6 (XkbKeySymsMask) 187.66 113.67 S
+2 11 Q
+( or) 280.07 113.67 T
+5 12 Q
+-0.6 (XkbModifierMapMask) 294.73 113.67 S
+2 11 Q
+( masks are set in the) 413.53 113.67 T
+1 F
+(which) 505.18 113.67 T
+2 F
+(parameter) 162 101.67 T
+(. If the) 205.37 101.67 T
+(y are not v) 234.23 101.67 T
+(alid,) 280.69 101.67 T
+1 F
+(XkbAllocClientMap) 302.69 101.67 T
+2 F
+( returns) 390.07 101.67 T
+5 12 Q
+-0.6 (BadValue) 426.12 101.67 S
+2 11 Q
+(.) 478.92 101.67 T
+2 12 Q
+(If the client map of the keyboard description is not) 108 81 T
+5 F
+-0.6 (NULL) 353.96 81 S
+2 F
+(, and any fields are already allo-) 380.36 81 T
+(cated in the client map,) 108 68 T
+1 F
+(XkbAllocClientMap) 222.65 68 T
+2 F
+( does not overwrite the existing values; it sim-) 317.98 68 T
+3 F
+(T) 229.59 338 T
+(able 14.3 XkbAllocClientMap Masks) 236.49 338 T
+1 F
+(Mask) 109 318 T
+(Ef) 249 318 T
+(fect) 259.45 318 T
+2 11 Q
+(XkbK) 109 303.67 T
+(e) 135.61 303.67 T
+(yT) 140.33 303.67 T
+(ypesMask) 151.67 303.67 T
+2 12 Q
+(The) 249 303 T
+1 F
+(type_count) 270.66 303 T
+2 F
+(field specifies the number of entries to pre-) 326.32 303 T
+(allocate for the) 249 291 T
+1 F
+(types) 323.98 291 T
+2 F
+( field of the client map. If the) 348.64 291 T
+1 F
+-0.01 (type_count) 249 279 P
+2 F
+-0.01 (field is less than) 304.65 279 P
+5 F
+-0.01 -0.6 (XkbNumRequiredTypes) 385.29 279 B
+2 F
+-0.01 ( \050see) 510.69 279 P
+(section 15.2.1\051, returns) 249 267 T
+5 F
+-0.6 (BadValue) 362.32 267 S
+2 F
+(.) 415.12 267 T
+2 11 Q
+(XkbK) 109 252.67 T
+(e) 135.61 252.67 T
+(ySymsMask) 140.33 252.67 T
+(The) 249 252.67 T
+1 12 Q
+(min_key_code) 268.86 252.67 T
+2 F
+( and) 337.49 252.67 T
+1 F
+(max_key_code) 360.82 252.67 T
+2 F
+( fields of the) 431.45 252.67 T
+1 F
+(xkb) 494.78 252.67 T
+2 F
+(parameter are used to allocate the) 249 241.67 T
+1 F
+(syms) 412.94 241.67 T
+2 F
+( and) 436.27 241.67 T
+1 F
+(key_sym_map) 459.6 241.67 T
+2 F
+(fields of the client map. The fields are allocated to contain) 249 230.67 T
+(the maximum number of entries necessary for) 249 219.67 T
+1 F
+(max_key_code) 249 208.67 T
+2 F
+( -) 319.63 208.67 T
+1 F
+(min_key_code) 329.63 208.67 T
+2 F
+( + 1 keys) 398.27 208.67 T
+2 11 Q
+(.) 442.03 208.67 T
+(XkbModi\336erMapMask) 109 194.67 T
+(The) 249 194.67 T
+1 12 Q
+(min_key_code) 268.86 194.67 T
+2 F
+( and) 337.49 194.67 T
+1 F
+(max_key_code) 360.82 194.67 T
+2 F
+( fields of the) 431.45 194.67 T
+1 F
+(xkb) 494.78 194.67 T
+2 F
+(parameter are used to allocate the) 249 183.67 T
+1 F
+(modmap) 412.94 183.67 T
+2 F
+( field of the cli-) 454.27 183.67 T
+(ent map. The field is allocated to contain the maximum) 249 172.67 T
+(number of entries necessary for) 249 161.67 T
+1 F
+(max_key_code) 403.28 161.67 T
+2 F
+( -) 473.92 161.67 T
+1 F
+(min_key_code) 249 150.67 T
+2 F
+( + 1 keys.) 317.64 150.67 T
+108 330 536 330 2 L
+V
+0.5 H
+0 Z
+N
+108 313 536 313 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "123" 135
+%%Page: "124" 136
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(124) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(ply ignores that part of the request. The only exception is the) 108 712 T
+1 F
+(types) 402.96 712 T
+2 F
+( array. If) 427.62 712 T
+1 F
+(type_count) 472.26 712 T
+2 F
+( is) 524.92 712 T
+-0.04 (greater than the current) 108 699 P
+1 F
+-0.04 (num_types) 222.45 699 P
+2 F
+-0.04 ( field of the client map,) 273.77 699 P
+1 F
+-0.04 (XkbAllocClientMap) 388.49 699 P
+2 F
+-0.04 ( resizes the) 483.82 699 P
+1 F
+(types) 108 686 T
+2 F
+( array and resets the) 132.66 686 T
+1 F
+(num_types) 231.62 686 T
+2 F
+( field accordingly.) 282.95 686 T
+(If) 108 665 T
+1 F
+(XkbAllocClientMap) 118.99 665 T
+2 F
+( is successful, it returns) 214.32 665 T
+5 F
+-0.6 (Success) 329.64 665 S
+2 F
+(. Otherwise, it can return either) 375.84 665 T
+5 F
+-0.6 (BadMatch) 108 652 S
+2 F
+(,) 160.8 652 T
+5 F
+-0.6 (BadAlloc) 166.8 652 S
+2 F
+(, or) 219.6 652 T
+5 F
+-0.6 (BadValue) 238.6 652 S
+2 F
+( errors.) 291.4 652 T
+0 F
+(14.5.2) 72 627 T
+(Freeing a Client Map) 108 627 T
+2 F
+(To free memory used by the client map member of an) 108 607 T
+5 F
+-0.6 (XkbDescRec) 369.61 607 S
+2 F
+( structure, use) 435.61 607 T
+1 F
+(XkbF) 108 594 T
+(r) 133.33 594 T
+(eeClientMap.) 137.56 594 T
+2 11 Q
+(v) 108 573.67 T
+(oid) 113.28 573.67 T
+3 F
+(XkbFr) 130.09 573.67 T
+(eeClientMap) 161.67 573.67 T
+2 F
+(\050) 222.16 573.67 T
+1 F
+(xkb, whic) 225.82 573.67 T
+(h, fr) 267.2 573.67 T
+(ee_all) 285.13 573.67 T
+2 F
+(\051) 312.02 573.67 T
+(XkbDescPtr) 126 560.67 T
+1 F
+(xkb) 189 560.67 T
+2 F
+(;) 204.27 560.67 T
+(/* k) 252 560.67 T
+(e) 268.7 560.67 T
+(yboard description containing client map to free */) 273.42 560.67 T
+(unsigned int) 126 547.67 T
+1 F
+(whic) 189 547.67 T
+(h) 209.61 547.67 T
+2 F
+(;) 215.11 547.67 T
+(/* mask identifying components of map to free */) 252 547.67 T
+(Bool) 126 534.67 T
+1 F
+(fr) 189 534.67 T
+(ee_all) 195.93 534.67 T
+2 F
+(;) 222.81 534.67 T
+(/*) 252 534.67 T
+5 12 Q
+-0.6 (True) 263.31 534.67 S
+2 11 Q
+( => free all client components and map itself */) 289.71 534.67 T
+1 12 Q
+-0.25 (XkbF) 108 515 P
+-0.25 (r) 133.33 515 P
+-0.25 (eeClientMap) 137.56 515 P
+2 F
+-0.25 ( frees the components of client map specified by) 199.55 515 P
+1 F
+-0.25 (which) 432.89 515 P
+2 F
+-0.25 ( in the) 461.56 515 P
+5 F
+-0.56 -0.6 (XkbDes-) 493.8 515 B
+-0.6 (cRec) 108 502 S
+2 F
+( structure specified by the) 134.4 502 T
+1 F
+(xkb) 261.37 502 T
+2 F
+( parameter and sets the corresponding structure com-) 278.03 502 T
+(ponent values to) 108 489 T
+5 F
+-0.6 (NULL) 189.66 489 S
+2 F
+(. The) 216.06 489 T
+1 F
+(which) 243.72 489 T
+2 F
+( parameter specifies a combination of the client map) 272.39 489 T
+(masks shown in Table 14.3.) 108 476 T
+(If) 108 455 T
+1 F
+(free_all) 118.99 455 T
+2 F
+( is) 156.32 455 T
+5 F
+-0.6 (True) 170.33 455 S
+2 F
+(,) 196.73 455 T
+1 F
+(whic) 202.73 455 T
+(h) 225.22 455 T
+2 F
+( is ignored;) 231.22 455 T
+1 F
+(XkbF) 288.22 455 T
+(r) 313.55 455 T
+(eeClientMap) 317.77 455 T
+2 F
+( frees every non-) 379.76 455 T
+5 F
+-0.6 (NULL) 460.73 455 S
+2 F
+( structure) 487.13 455 T
+(component in the client map, frees the) 108 442 T
+5 F
+-0.6 (XkbClientMapRec) 294.64 442 S
+2 F
+( structure referenced by the) 393.64 442 T
+1 F
+(map) 108 429 T
+2 F
+( member of the) 128.66 429 T
+1 F
+(xkb) 204.65 429 T
+2 F
+( parameter, and sets the) 221.3 429 T
+1 F
+(map) 337.27 429 T
+2 F
+( member to) 357.94 429 T
+5 F
+-0.6 (NULL.) 415.6 429 S
+0 F
+(14.5.3) 72 404 T
+(Allocating an Empty Ser) 108 404 T
+(ver Map) 246.16 404 T
+2 F
+(To allocate and initialize an empty server map description record, use) 108 384 T
+1 F
+(XkbAllocServer-) 445.26 384 T
+(Map.) 108 371 T
+2 11 Q
+(Status) 108 350.67 T
+3 F
+(XkbAllocSer) 137.65 350.67 T
+(v) 198.04 350.67 T
+(erMap) 203.43 350.67 T
+2 F
+(\050) 235.19 350.67 T
+1 F
+(xkb, whic) 238.86 350.67 T
+(h, count_acts) 280.24 350.67 T
+2 F
+(\051) 338.9 350.67 T
+(XkbDescPtr) 126 337.67 T
+1 F
+(xkb) 216 337.67 T
+2 F
+(;) 231.27 337.67 T
+(/* k) 279 337.67 T
+(e) 295.7 337.67 T
+(yboard description in which to allocate serv) 300.42 337.67 T
+(er map */) 492.72 337.67 T
+(unsigned int) 126 324.67 T
+1 F
+(whic) 216 324.67 T
+(h) 236.61 324.67 T
+2 F
+(;) 242.11 324.67 T
+(/* mask selecting map components to allocate */) 279 324.67 T
+(unsigned int) 126 311.67 T
+1 F
+(count_acts) 216 311.67 T
+2 F
+(;) 263.66 311.67 T
+(/* v) 279 311.67 T
+(alue of) 295.53 311.67 T
+1 F
+(num_acts) 328.52 311.67 T
+2 F
+( \336eld in map to be allocated */) 370.68 311.67 T
+1 12 Q
+-0.38 (XkbAllocServerMap) 108 292 P
+2 F
+-0.38 ( allocates and initializes an empty server map in the) 205.31 292 P
+1 F
+-0.38 (server) 452.85 292 P
+2 F
+-0.38 ( field of the) 482.84 292 P
+(keyboard description specified by) 108 279 T
+1 F
+(xkb) 273.3 279 T
+2 F
+(. The) 289.96 279 T
+1 F
+(which) 317.62 279 T
+2 F
+( parameter specifies the particular com-) 346.28 279 T
+(ponents of the server map structure to allocate, as specified in Table 14.4.) 108 266 T
+0 F
+(Note) 126 78.67 T
+2 11 Q
+(The) 162 78.67 T
+1 F
+(min_key_code) 181.85 78.67 T
+2 F
+( and) 244.77 78.67 T
+1 F
+(max_key_code) 266.16 78.67 T
+2 F
+( \336elds of the) 330.9 78.67 T
+1 F
+(xkb) 388.35 78.67 T
+2 F
+( parameter must be le) 403.61 78.67 T
+(g) 498.15 78.67 T
+(al v) 503.59 78.67 T
+(al-) 519.51 78.67 T
+(ues. If the) 162 66.67 T
+(y are not v) 205.52 66.67 T
+(alid,) 251.98 66.67 T
+1 F
+(XkbAllocServerMap) 273.98 66.67 T
+2 F
+( returns) 363.18 66.67 T
+5 12 Q
+-0.6 (BadValue) 399.23 66.67 S
+2 11 Q
+(.) 452.03 66.67 T
+3 12 Q
+(T) 228.38 246 T
+(able 14.4 XkbAllocSer) 235.28 246 T
+(v) 352.5 246 T
+(erMap Masks) 358.38 246 T
+1 F
+(Mask) 109 226 T
+(Ef) 249 226 T
+(fect) 259.45 226 T
+2 11 Q
+(XkbExplicitComponentsMask) 109 211.67 T
+-0.46 (The) 249 211.67 P
+1 F
+-0.46 (min_key_code) 268.4 211.67 P
+2 F
+-0.46 ( and) 331.32 211.67 P
+1 F
+-0.46 (max_key_code) 351.79 211.67 P
+2 F
+-0.46 ( \336elds of the) 416.54 211.67 P
+1 F
+-0.46 (xkb) 472.16 211.67 P
+2 F
+-0.46 ( parameter) 487.43 211.67 P
+(are used to allocate the) 249 200.67 T
+1 F
+(explicit) 352.55 200.67 T
+2 F
+(\336eld of the serv) 387.69 200.67 T
+(er map.) 456.26 200.67 T
+(XkbK) 109 186.67 T
+(e) 135.61 186.67 T
+(yActionsMask) 140.33 186.67 T
+-0.46 (The) 249 186.67 P
+1 F
+-0.46 (min_key_code) 268.4 186.67 P
+2 F
+-0.46 ( and) 331.32 186.67 P
+1 F
+-0.46 (max_key_code) 351.79 186.67 P
+2 F
+-0.46 ( \336elds of the) 416.54 186.67 P
+1 F
+-0.46 (xkb) 472.16 186.67 P
+2 F
+-0.46 ( parameter) 487.43 186.67 P
+(are used to allocate the) 249 175.67 T
+1 F
+(key_acts) 352.55 175.67 T
+2 F
+(\336eld of the serv) 393.18 175.67 T
+(er map. The) 461.75 175.67 T
+1 F
+(count_acts) 249 164.67 T
+2 F
+( parameter is used to allocate the) 296.66 164.67 T
+1 F
+(acts) 443.6 164.67 T
+2 F
+( \336eld of the) 461.32 164.67 T
+(serv) 249 153.67 T
+(er map.) 267.16 153.67 T
+(XkbK) 109 139.67 T
+(e) 135.61 139.67 T
+(yBeha) 140.33 139.67 T
+(viorsMask) 168.21 139.67 T
+-0.46 (The) 249 139.67 P
+1 F
+-0.46 (min_key_code) 268.4 139.67 P
+2 F
+-0.46 ( and) 331.32 139.67 P
+1 F
+-0.46 (max_key_code) 351.79 139.67 P
+2 F
+-0.46 ( \336elds of the) 416.54 139.67 P
+1 F
+-0.46 (xkb) 472.16 139.67 P
+2 F
+-0.46 ( parameter) 487.43 139.67 P
+(are used to allocate the) 249 128.67 T
+1 F
+(behaviors) 352.55 128.67 T
+2 F
+(\336eld of the serv) 398.69 128.67 T
+(er map.) 467.26 128.67 T
+(XkbV) 109 114.67 T
+(irtualModMapMask) 135.22 114.67 T
+-0.46 (The) 249 114.67 P
+1 F
+-0.46 (min_key_code) 268.4 114.67 P
+2 F
+-0.46 ( and) 331.32 114.67 P
+1 F
+-0.46 (max_key_code) 351.79 114.67 P
+2 F
+-0.46 ( \336elds of the) 416.54 114.67 P
+1 F
+-0.46 (xkb) 472.16 114.67 P
+2 F
+-0.46 (parameter) 489.73 114.67 P
+(are used to allocate the) 249 103.67 T
+1 F
+(vmodmap) 352.55 103.67 T
+2 F
+(\336eld of the serv) 398.07 103.67 T
+(er map.) 466.64 103.67 T
+108 238 536 238 2 L
+V
+0.5 H
+0 Z
+N
+108 221 536 221 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "124" 136
+%%Page: "125" 137
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(125) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(14 Xkb K) 413.65 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(If the server map of the keyboard description is not) 108 712 T
+5 F
+-0.6 (NULL) 356.62 712 S
+2 F
+( and any fields are already allo-) 383.02 712 T
+(cated in the server map,) 108 699 T
+1 F
+(XkbAllocServerMap) 225.3 699 T
+2 F
+( does not overwrite the existing values. The) 322.61 699 T
+(only exception is with the) 108 686 T
+1 F
+(acts) 235 686 T
+2 F
+(array. If the) 257.33 686 T
+1 F
+(count_acts) 316.63 686 T
+2 F
+(parameter is greater than the cur-) 371.63 686 T
+(rent) 108 673 T
+1 F
+(num_acts) 129.66 673 T
+2 F
+(field of the server map,) 178.66 673 T
+1 F
+(XkbAllocServerMap) 293.29 673 T
+2 F
+( resizes the) 390.6 673 T
+1 F
+(acts) 446.92 673 T
+2 F
+(array and) 469.25 673 T
+(resets the) 108 660 T
+1 F
+(num_acts) 155.99 660 T
+2 F
+(field accordingly.) 204.98 660 T
+(If) 108 639 T
+1 F
+(XkbAllocServerMap) 118.99 639 T
+2 F
+( is successful, it returns) 216.3 639 T
+5 F
+-0.6 (Success) 331.62 639 S
+2 F
+(. Otherwise, it can return either) 377.82 639 T
+5 F
+-0.6 (BadMatch) 108 626 S
+2 F
+( or) 160.8 626 T
+5 F
+-0.6 (BadAlloc) 176.8 626 S
+2 F
+( errors.) 229.6 626 T
+0 F
+(14.5.4) 72 601 T
+(Freeing a Ser) 108 601 T
+(ver Map) 184.15 601 T
+2 F
+(To free memory used by the server member of an) 108 581 T
+5 F
+-0.6 (XkbDescRec) 348.6 581 S
+2 F
+( structure, use) 414.6 581 T
+1 F
+(XkbF) 108 568 T
+(r) 133.33 568 T
+(eeServerMap.) 137.56 568 T
+2 11 Q
+(v) 108 547.67 T
+(oid) 113.28 547.67 T
+3 F
+(XkbFr) 130.09 547.67 T
+(eeSer) 161.67 547.67 T
+(v) 187.21 547.67 T
+(erMap) 192.6 547.67 T
+2 F
+(\050) 224.37 547.67 T
+1 F
+(xkb, whic) 228.03 547.67 T
+(h, fr) 269.41 547.67 T
+(ee_all) 287.34 547.67 T
+2 F
+(\051) 314.23 547.67 T
+(XkbDescPtr) 126 534.67 T
+1 F
+(xkb) 189 534.67 T
+2 F
+(;) 204.27 534.67 T
+(/* k) 252 534.67 T
+(e) 268.7 534.67 T
+(yboard description containing serv) 273.42 534.67 T
+(er map to free */) 425.7 534.67 T
+(unsigned int) 126 521.67 T
+1 F
+(whic) 189 521.67 T
+(h) 209.61 521.67 T
+2 F
+(;) 215.11 521.67 T
+(/* mask identifying components of map to free */) 252 521.67 T
+(Bool) 126 508.67 T
+1 F
+(fr) 189 508.67 T
+(ee_all) 195.93 508.67 T
+2 F
+(;) 222.81 508.67 T
+(/*) 252 508.67 T
+5 12 Q
+-0.6 (True) 263.31 508.67 S
+2 11 Q
+( => free all serv) 289.71 508.67 T
+(er map components and serv) 359.37 508.67 T
+(er itself */) 485.07 508.67 T
+2 12 Q
+(The) 108 489 T
+1 F
+(XkbF) 129.66 489 T
+(r) 154.99 489 T
+(eeServerMap) 159.22 489 T
+2 F
+( function frees the specified components of server map in the) 223.19 489 T
+5 F
+-0.6 (XkbDescRec) 108 476 S
+2 F
+( structure specified by the) 174 476 T
+1 F
+(xkb) 300.97 476 T
+2 F
+( parameter and sets the corresponding struc-) 317.63 476 T
+(ture component values to) 108 463 T
+5 F
+-0.6 (NULL) 231.98 463 S
+2 F
+(. The) 258.38 463 T
+1 F
+(which) 286.04 463 T
+2 F
+( parameter specifies a combination of the) 314.71 463 T
+(server map masks and is a bitwise inclusive OR of the masks listed in Table 14.4. If) 108 450 T
+1 F
+-0.26 (free_all) 108 437 P
+2 F
+-0.26 ( is) 145.33 437 P
+5 F
+-0.57 -0.6 (True) 158.82 437 B
+2 F
+-0.26 (,) 185.22 437 P
+1 F
+-0.26 (whic) 190.96 437 P
+-0.26 (h) 213.45 437 P
+2 F
+-0.26 ( is ignored and) 219.45 437 P
+1 F
+-0.26 (XkbF) 292.41 437 P
+-0.26 (r) 317.74 437 P
+-0.26 (eeServerMap) 321.97 437 P
+2 F
+-0.26 ( frees every non-) 385.94 437 P
+5 F
+-0.57 -0.6 (NULL) 466.13 437 B
+2 F
+-0.26 ( structure) 492.53 437 P
+(component in the server map, frees the) 108 424 T
+5 F
+-0.6 (XkbServerMapRec) 297.29 424 S
+2 F
+( structure referenced by the) 396.29 424 T
+1 F
+(server) 108 411 T
+2 F
+( member of the) 137.99 411 T
+1 F
+(xkb) 213.97 411 T
+2 F
+( parameter, and sets the) 230.63 411 T
+1 F
+(server) 346.6 411 T
+2 F
+( member to) 376.58 411 T
+5 F
+-0.6 (NULL.) 434.24 411 S
+FMENDPAGE
+%%EndPage: "125" 137
+%%Page: "126" 138
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(126) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 14 Q
+(15) 72 710.67 T
+(Xkb Client K) 108 710.67 T
+(e) 190.25 710.67 T
+(yboar) 197.82 710.67 T
+(d Mapping) 235.67 710.67 T
+2 12 Q
+(The Xkb client map for a keyboard is the collection of information a client needs to inter-) 108 688 T
+-0.42 (pret key events from the keyboard. It contains a global list of key types and an array of key) 108 675 P
+-0.35 (symbol maps, each of which describes the symbols bound to a key and the rules to be used) 108 662 P
+(to interpret those symbols.) 108 649 T
+(Figure 15.1 shows the relationships between elements in the client map:) 108 628 T
+3 F
+(Figur) 240.82 93 T
+(e 15.1 Xkb Client Map) 269.27 93 T
+63.37 114 548.63 624 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+86.75 464.58 167.75 613.58 R
+0.5 H
+0 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+86.75 437.08 167.75 455.08 R
+7 X
+V
+2 10 Q
+0 X
+(XkbClientMapRec) 89.47 448.41 T
+86.75 538.08 167.75 538.08 2 L
+7 X
+V
+0 X
+N
+86.75 520.08 167.75 520.08 2 L
+7 X
+V
+0 X
+N
+86.75 502.08 167.75 502.08 2 L
+7 X
+V
+0 X
+N
+86.75 484.08 167.75 484.08 2 L
+7 X
+V
+0 X
+N
+(num_syms) 104.36 527.08 T
+(syms) 104.36 509.08 T
+(key_sym_map) 104.36 491.08 T
+(modmap) 104.36 473.08 T
+86.5 577.83 167.5 577.83 2 L
+7 X
+V
+0 X
+N
+86.75 559.83 167.75 559.83 2 L
+7 X
+V
+0 X
+N
+86.75 595.83 167.75 595.83 2 L
+7 X
+V
+0 X
+N
+(num_types) 104.36 583.83 T
+(types) 104.36 565.83 T
+261 462.58 342 589.08 R
+7 X
+V
+0 X
+N
+256 457.58 337 584.08 R
+7 X
+V
+0 X
+N
+251 451.58 332 580.58 R
+7 X
+V
+0 X
+N
+251 414.08 332 442.58 R
+7 X
+V
+0 X
+(XkbKeyTypeRec\050s\051) 251.24 435.91 T
+(\050array\051) 277.9 425.91 T
+251 523.58 332 523.58 2 L
+7 X
+V
+0 X
+N
+251 505.58 332 505.58 2 L
+7 X
+V
+0 X
+N
+251 487.58 332 487.58 2 L
+7 X
+V
+0 X
+N
+251 469.58 332 469.58 2 L
+7 X
+V
+0 X
+N
+(map) 269 514.58 T
+(preserve) 269 496.58 T
+(name) 269 478.58 T
+(level_names) 269 460.58 T
+232.47 569.58 232.47 572.55 242.84 569.58 232.47 566.6 4 Y
+N
+232.47 569.58 232.47 572.55 242.84 569.58 232.47 566.6 4 Y
+V
+168.88 569.58 232.22 569.58 2 L
+7 X
+V
+0 X
+N
+2 12 Q
+(...) 100.58 127.89 T
+2 10 Q
+(size_syms) 104.21 547.27 T
+(size_types) 104.08 601.14 T
+(map_count) 270.08 531.02 T
+396.5 384.58 477.5 402.58 R
+7 X
+V
+0 X
+N
+392.5 380.83 473.5 398.83 R
+7 X
+V
+0 X
+N
+388.25 377.33 469.25 395.33 R
+7 X
+V
+0 X
+N
+383.25 340.83 469.5 364.83 R
+7 X
+V
+0 X
+(KeySym\050s\051) 403.6 358.16 T
+(\050array\051) 412.78 348.16 T
+384.25 373.58 465.25 391.58 R
+7 X
+V
+0 X
+N
+369.72 383.25 369.72 386.22 380.1 383.25 369.72 380.27 4 Y
+N
+369.72 383.25 369.72 386.22 380.1 383.25 369.72 380.27 4 Y
+V
+168 511.5 208.5 511.5 208.5 383.25 369.47 383.25 4 L
+N
+197.98 353.77 198.12 356.74 208.35 353.29 197.84 350.8 4 Y
+N
+197.98 353.77 198.12 356.74 208.35 353.29 197.84 350.8 4 Y
+V
+168 492.75 187.5 492.75 187.5 354.25 197.73 353.78 4 L
+N
+(KeyCode) 101.11 365.33 T
+203.22 367.5 203.22 370.47 213.59 367.5 203.22 364.52 4 Y
+8 X
+N
+203.22 367.5 203.22 370.47 213.59 367.5 203.22 364.52 4 Y
+V
+151.5 367.5 202.97 367.5 2 L
+N
+222.5 157.83 303.5 175.83 R
+7 X
+V
+0 X
+N
+218.5 154.08 299.5 172.08 R
+7 X
+V
+0 X
+N
+214.25 150.58 295.25 168.58 R
+7 X
+V
+0 X
+N
+209.25 114.08 295.5 138.08 R
+7 X
+V
+0 X
+(unsigned char) 224.46 131.41 T
+(\050array\051) 238.77 121.41 T
+210.25 146.83 291.25 164.83 R
+7 X
+V
+0 X
+N
+201.72 169.5 201.72 172.47 212.09 169.5 201.72 166.52 4 Y
+8 X
+N
+201.72 169.5 201.72 172.47 212.09 169.5 201.72 166.52 4 Y
+V
+165.75 367.5 165.75 169.5 201.47 169.5 3 L
+N
+194.97 156.75 194.97 159.72 205.34 156.75 194.97 153.77 4 Y
+0 X
+N
+194.97 156.75 194.97 159.72 205.34 156.75 194.97 153.77 4 Y
+V
+168 474 180 474 180 156.75 194.72 156.75 4 L
+N
+218.75 242.58 299.75 371.33 R
+7 X
+V
+0 X
+N
+213.75 236.83 294.75 365.58 R
+7 X
+V
+0 X
+N
+208.75 231.58 289.75 359.83 R
+7 X
+V
+0 X
+N
+208.75 192.83 289.75 221.33 R
+7 X
+V
+0 X
+(XkbSymMapRec\050s\051) 209.26 214.66 T
+(\050array\051) 235.65 204.66 T
+208.75 286.33 289.75 286.33 2 L
+7 X
+V
+0 X
+N
+208.75 268.33 289.75 268.33 2 L
+7 X
+V
+0 X
+N
+208.75 250.33 289.75 250.33 2 L
+7 X
+V
+0 X
+N
+(group_info) 226.75 277.33 T
+(offset) 226.75 241.33 T
+(kt_index[3]) 227.25 291.83 T
+(width) 227 257.58 T
+208.75 340.33 289.75 340.33 2 L
+7 X
+V
+0 X
+N
+208.75 322.33 289.75 322.33 2 L
+7 X
+V
+0 X
+N
+208.75 304.33 289.75 304.33 2 L
+7 X
+V
+0 X
+N
+(kt_index[1]) 226.75 328.33 T
+(kt_index[0]) 227.25 345.83 T
+(kt_index[2]) 227 311.58 T
+250.09 587.25 250.09 590.23 260.47 587.25 250.09 584.28 4 Y
+8 X
+N
+250.09 587.25 250.09 590.23 260.47 587.25 250.09 584.28 4 Y
+V
+293.62 347.25 324.37 347.25 324.37 409.74 239.62 409.74 239.62 587.25 249.84 587.25 6 L
+N
+376.47 394.5 376.47 397.48 386.85 394.5 376.47 391.52 4 Y
+N
+376.47 394.5 376.47 397.48 386.85 394.5 376.47 391.52 4 Y
+V
+291.75 242.25 332.65 242.25 332.65 394.5 376.22 394.5 4 L
+N
+398.37 464.25 479.37 482.25 R
+7 X
+V
+0 X
+N
+394.37 460.5 475.37 478.5 R
+7 X
+V
+0 X
+N
+390.12 457 471.12 475 R
+7 X
+V
+0 X
+N
+385.12 420.5 471.37 444.5 R
+7 X
+V
+0 X
+(Atom\050s\051) 411.58 437.83 T
+(\050array\051) 414.65 427.83 T
+386.12 453.25 467.12 471.25 R
+7 X
+V
+0 X
+N
+373.09 464.25 373.09 467.23 383.47 464.25 373.09 461.27 4 Y
+N
+373.09 464.25 373.09 467.23 383.47 464.25 373.09 461.27 4 Y
+V
+333.37 464.25 372.84 464.25 2 L
+7 X
+V
+0 X
+N
+251 542.95 332 542.95 2 L
+7 X
+V
+0 X
+N
+(num_levels) 270.08 550.39 T
+251 561.95 332 561.95 2 L
+7 X
+V
+0 X
+N
+(mods) 270.08 569.39 T
+368.97 541.5 368.97 544.47 379.35 541.5 368.97 538.52 4 Y
+N
+368.97 541.5 368.97 544.47 379.35 541.5 368.97 538.52 4 Y
+V
+332.25 515.25 356.25 515.25 356.25 541.5 368.72 541.5 4 L
+N
+398.87 543 479.87 561 R
+7 X
+V
+0 X
+N
+394.87 539.25 475.87 557.25 R
+7 X
+V
+0 X
+N
+390.62 535.75 471.62 553.75 R
+7 X
+V
+0 X
+N
+382.62 499.25 480.87 523.25 R
+7 X
+V
+0 X
+(XkbKTMapEntryRec\050s\051) 383.15 516.58 T
+(\050array\051) 418.15 506.58 T
+386.62 532 467.62 550 R
+7 X
+V
+0 X
+N
+250.38 587.25 250.38 590.14 260.47 587.25 250.38 584.35 4 Y
+N
+250.38 587.25 250.38 590.14 260.47 587.25 250.38 584.35 4 Y
+V
+247.88 587.25 250.13 587.25 2 L
+N
+376.88 394.37 376.88 397.27 386.97 394.37 376.88 391.48 4 Y
+N
+376.88 394.37 376.88 397.27 386.97 394.37 376.88 391.48 4 Y
+V
+374.38 394.37 376.63 394.37 2 L
+N
+203.38 367.62 203.38 370.52 213.47 367.62 203.38 364.73 4 Y
+N
+203.38 367.62 203.38 370.52 213.47 367.62 203.38 364.73 4 Y
+V
+200.88 367.62 203.13 367.62 2 L
+N
+202 169.5 202 172.39 212.09 169.5 202 166.6 4 Y
+N
+202 169.5 202 172.39 212.09 169.5 202 166.6 4 Y
+V
+199.5 169.5 201.75 169.5 2 L
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "126" 138
+%%Page: "127" 139
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(127) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(15.1) 72 712 T
+(The XkbClientMapRec Structure) 108 712 T
+2 F
+(The) 108 692 T
+1 F
+(map) 129.66 692 T
+2 F
+(field of the complete Xkb keyboard description \050see section 6.1\051 is a pointer to) 153.32 692 T
+(the Xkb client map, which is of type) 108 679 T
+5 F
+-0.6 (XkbClientMapRec) 285.65 679 S
+2 F
+(:) 384.65 679 T
+2 11 Q
+(typedef struct {) 126 658.67 T
+(/* Client Map */) 342 658.67 T
+(unsigned char) 144 645.67 T
+(size_types;) 234 645.67 T
+(/* # occupied entries in) 342 645.67 T
+1 F
+(types) 447.4 645.67 T
+2 F
+( */) 470.01 645.67 T
+(unsigned char) 144 632.67 T
+(num_types;) 234 632.67 T
+(/* # entries in) 342 632.67 T
+1 F
+(types) 404.94 632.67 T
+2 F
+( */) 427.55 632.67 T
+(XkbK) 144 619.67 T
+(e) 170.61 619.67 T
+(yT) 175.33 619.67 T
+(ypePtr) 186.67 619.67 T
+(types;) 234 619.67 T
+-0.09 (/* v) 342 619.67 P
+-0.09 (ector of k) 358.55 619.67 P
+-0.09 (e) 400.42 619.67 P
+-0.09 (y types used by this k) 405.14 619.67 P
+-0.09 (e) 499.62 619.67 P
+-0.09 (ymap */) 504.34 619.67 P
+(unsigned short) 144 606.67 T
+(size_syms;) 234 606.67 T
+(/* length of the) 342 606.67 T
+1 F
+(syms) 411.66 606.67 T
+2 F
+( array */) 433.05 606.67 T
+(unsigned short) 144 593.67 T
+(num_syms;) 234 593.67 T
+(/* # entries in) 342 593.67 T
+1 F
+(syms) 404.94 593.67 T
+2 F
+( */) 426.33 593.67 T
+(K) 144 580.67 T
+(e) 151.67 580.67 T
+(ySym *) 156.39 580.67 T
+(syms;) 234 580.67 T
+(/* linear 2d tables of k) 342 580.67 T
+(e) 440.57 580.67 T
+(ysyms, 1 per k) 445.29 580.67 T
+(e) 509.34 580.67 T
+(y */) 514.06 580.67 T
+(XkbSymMapPtr) 144 567.67 T
+(k) 234 567.67 T
+(e) 239.39 567.67 T
+(y_sym_map;) 244.11 567.67 T
+(/* 1 per k) 342 567.67 T
+(e) 383.74 567.67 T
+(ycode, maps k) 388.46 567.67 T
+(e) 451.59 567.67 T
+(ycode to) 456.31 567.67 T
+1 F
+(syms) 496.64 567.67 T
+2 F
+( */) 518.02 567.67 T
+(unsigned char) 144 554.67 T
+( *) 205.4 554.67 T
+(modmap;) 234 554.67 T
+(/* 1 per k) 342 554.67 T
+(e) 383.74 554.67 T
+(ycode, real mods bound to k) 388.46 554.67 T
+(e) 513.01 554.67 T
+(y */) 517.72 554.67 T
+(}) 126 541.67 T
+3 F
+(XkbClientMapRec) 134.03 541.67 T
+2 F
+(, *XkbClientMapPtr;) 222.63 541.67 T
+2 12 Q
+-0.24 (The following sections describe each of the elements of the) 108 522 P
+5 F
+-0.54 -0.6 (XkbClientMapRec) 393.5 522 B
+2 F
+-0.24 ( structure) 492.5 522 P
+(in more detail.) 108 509 T
+0 F
+(15.2) 72 484 T
+(K) 108 484 T
+(e) 116.48 484 T
+(y T) 122.98 484 T
+(ypes) 139.6 484 T
+2 F
+(Key types are used to determine the shift level of a key given the current state of the key-) 108 464 T
+(board. The set of all possible key types for the Xkb keyboard description are held in the) 108 451 T
+1 F
+-0.08 (types) 108 438 P
+2 F
+-0.08 ( field of the client map, whose total size is stored in) 132.66 438 P
+1 F
+-0.08 (size_types) 382.01 438 P
+2 F
+-0.08 (, and whose total num-) 430.67 438 P
+(ber of valid entries is stored in) 108 425 T
+1 F
+(num_types) 256.98 425 T
+2 F
+(. Key types are defined using the following) 308.3 425 T
+(structures:) 108 412 T
+2 11 Q
+(typedef struct {) 126 391.67 T
+(/* K) 315 391.67 T
+(e) 333.98 391.67 T
+(y T) 338.69 391.67 T
+(ype */) 352.79 391.67 T
+(XkbModsRec) 144 378.67 T
+(mods;) 243 378.67 T
+(/* modi\336ers used to compute shift le) 315 378.67 T
+(v) 475.45 378.67 T
+(el */) 480.78 378.67 T
+(unsigned char) 144 365.67 T
+(num_le) 243 365.67 T
+(v) 275.73 365.67 T
+(els;) 281.06 365.67 T
+(/* total # shift le) 315 365.67 T
+(v) 386.84 365.67 T
+(els, do not modify directly */) 392.18 365.67 T
+(unsigned char) 144 352.67 T
+(map_count;) 243 352.67 T
+(/* # entries in) 315 352.67 T
+1 F
+(map,) 377.94 352.67 T
+(preserve) 402.38 352.67 T
+2 F
+( \050if non-) 440.26 352.67 T
+5 12 Q
+-0.6 (NULL) 476.3 352.67 S
+2 11 Q
+(\051 */) 502.7 352.67 T
+(XkbKTMapEntryPtr) 144 339.67 T
+(map;) 243 339.67 T
+(/* v) 315 339.67 T
+(ector of modi\336ers for each shift le) 331.64 339.67 T
+(v) 481.06 339.67 T
+(el */) 486.39 339.67 T
+(XkbModsPtr) 144 326.67 T
+(preserv) 243 326.67 T
+(e;) 275.21 326.67 T
+-0.11 (/* mods to preserv) 315 326.67 P
+-0.11 (e for corresponding) 396.07 326.67 P
+1 F
+-0.11 (map) 484.62 326.67 P
+2 F
+-0.11 ( entry */) 503.56 326.67 P
+(Atom) 144 313.67 T
+(name;) 243 313.67 T
+(/* name of k) 315 313.67 T
+(e) 370.19 313.67 T
+(y type */) 374.91 313.67 T
+(Atom *) 144 300.67 T
+(le) 243 300.67 T
+(v) 250.67 300.67 T
+(el_names;) 256 300.67 T
+(/* array of names of each shift le) 315 300.67 T
+(v) 459.21 300.67 T
+(el */) 464.55 300.67 T
+(}) 126 287.67 T
+3 F
+(XkbK) 134.03 287.67 T
+(eyT) 162.49 287.67 T
+(ypeRec) 179.39 287.67 T
+2 F
+(, *XkbK) 213.6 287.67 T
+(e) 251.21 287.67 T
+(yT) 255.93 287.67 T
+(ypePtr;) 267.27 287.67 T
+(typedef struct {) 126 267.67 T
+(/* Modi\336ers for a k) 288 267.67 T
+(e) 373.44 267.67 T
+(y type */) 378.16 267.67 T
+(Bool) 144 254.67 T
+(acti) 243 254.67 T
+(v) 258.61 254.67 T
+(e;) 263.94 254.67 T
+(/*) 288 254.67 T
+5 F
+-0.33 (True) 299.31 254.67 S
+2 F
+( => entry acti) 324.39 254.67 T
+(v) 383.26 254.67 T
+(e when determining shift le) 388.6 254.67 T
+(v) 508.69 254.67 T
+(el */) 514.03 254.67 T
+(unsigned char) 144 241.67 T
+(le) 243 241.67 T
+(v) 250.67 241.67 T
+(el;) 256 241.67 T
+(/* shift le) 288 241.67 T
+(v) 329.28 241.67 T
+(el if modi\336ers match) 334.62 241.67 T
+1 F
+(mods) 428.72 241.67 T
+2 F
+( */) 451.94 241.67 T
+(XkbModsRec) 144 228.67 T
+(mods;) 243 228.67 T
+(/* mods needed for this le) 288 228.67 T
+(v) 401.68 228.67 T
+(el to be selected */) 407.02 228.67 T
+(}) 126 215.67 T
+3 F
+(XkbKTMapEntryRec) 134.03 215.67 T
+2 F
+(,*XkbKTMapEntryPtr;) 237.31 215.67 T
+2 12 Q
+-0.22 (The) 108 196 P
+1 F
+-0.22 (mods) 129.43 196 P
+2 F
+-0.22 ( field of a key type is an) 154.77 196 P
+5 F
+-0.5 -0.6 (XkbModsRec) 271.61 196 B
+2 F
+-0.22 ( \050see section 7.2\051 specifying the modifiers) 337.61 196 P
+(the key type uses when calculating the shift level, and can be composed of both the core) 108 183 T
+(modifiers and virtual modifiers. To set the modifiers associated with a key type, modify) 108 170 T
+-0.07 (the) 108 157 P
+1 F
+-0.07 (real_mods) 125.6 157 P
+2 F
+-0.07 ( and) 176.26 157 P
+1 F
+-0.07 (vmods) 199.46 157 P
+2 F
+-0.07 ( fields of the) 230.12 157 P
+1 F
+-0.07 (mods) 293.17 157 P
+5 F
+-0.15 -0.6 (XkbModsRec) 321.44 157 B
+2 F
+-0.07 ( accordingly. The) 387.44 157 P
+1 F
+-0.07 (mask) 474.55 157 P
+2 F
+-0.07 ( field of) 499.21 157 P
+(the) 108 144 T
+5 F
+-0.6 (XkbModsRec) 125.66 144 S
+2 F
+( is reserved for use by Xkb and is calculated from the) 191.66 144 T
+1 F
+(real_mods) 450.94 144 T
+2 F
+( and) 501.6 144 T
+1 F
+(vmods) 108 131 T
+2 F
+( fields.) 138.66 131 T
+(The) 108 110 T
+1 F
+(num_levels) 129.66 110 T
+2 F
+( field holds the total number of shift levels for the key type. Xkb uses) 183.65 110 T
+1 F
+(num_levels) 108 97 T
+2 F
+( to ensure the array of symbols bound to a key is large enough. Do not modify) 161.99 97 T
+1 F
+-0.28 (num_levels) 108 84 P
+2 F
+-0.28 ( directly to change the number if shift levels for a key type. Instead, use) 161.99 84 P
+1 F
+-0.28 (XkbRe-) 504.68 84 P
+(sizeK) 108 71 T
+(e) 133.58 71 T
+(yT) 138.55 71 T
+(ype) 149.66 71 T
+2 F
+( \050see section 15.2.3\051.) 166.32 71 T
+FMENDPAGE
+%%EndPage: "127" 139
+%%Page: "128" 140
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(128) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+-0.35 (The) 108 712 P
+1 F
+-0.35 (map) 129.31 712 P
+2 F
+-0.35 ( field is a vector of) 149.97 712 P
+5 F
+-0.77 -0.6 (XkbKTMapEntryRec) 241.19 712 B
+2 F
+-0.35 ( structures, with) 346.79 712 P
+1 F
+-0.35 (map_count) 425.73 712 P
+2 F
+-0.35 ( entries, that) 479.06 712 P
+(specify the modifier combinations for each possible shift level. Each map entry contains) 108 699 T
+(an) 108 686 T
+1 F
+(active) 122.33 686 T
+2 F
+( field, a) 150.98 686 T
+1 F
+(mods) 190.31 686 T
+2 F
+( field, and a) 215.64 686 T
+1 F
+(level) 275.29 686 T
+2 F
+( field. The) 297.95 686 T
+1 F
+(active) 350.6 686 T
+2 F
+( field determines whether the) 379.26 686 T
+-0.49 (modifier combination listed in the) 108 673 P
+1 F
+-0.49 (mods) 271.91 673 P
+2 F
+-0.49 ( field should be considered when determining shift) 297.24 673 P
+-0.02 (level. If) 108 660 P
+1 F
+-0.02 (active) 148.28 660 P
+2 F
+-0.02 ( is) 176.94 660 P
+5 F
+-0.04 -0.6 (False) 190.91 660 B
+2 F
+-0.02 (, this) 223.91 660 P
+1 F
+-0.02 (map) 250.21 660 P
+2 F
+-0.02 ( entry is ignored. If) 270.88 660 P
+1 F
+-0.02 (active) 366.11 660 P
+2 F
+-0.02 ( is) 394.76 660 P
+5 F
+-0.04 -0.6 (True) 408.73 660 B
+2 F
+-0.02 (, the) 435.13 660 P
+1 F
+-0.02 (level) 458.76 660 P
+2 F
+-0.02 ( field of the) 481.42 660 P
+1 F
+(map) 108 647 T
+2 F
+(entry specifies the shift level to use when the current modifier combination matches) 131.66 647 T
+(the combination specified in the) 108 634 T
+1 F
+(mods) 264.98 634 T
+2 F
+( field of the) 290.32 634 T
+1 F
+(map) 348.97 634 T
+2 F
+( entry.) 369.64 634 T
+-0.43 (Any combination of modifiers not explicitly listed somewhere in the) 108 613 P
+1 F
+-0.43 (map) 435.71 613 P
+2 F
+-0.43 ( yields shift level) 456.38 613 P
+(one. In addition,) 108 600 T
+1 F
+(map) 189.66 600 T
+2 F
+( entries specifying unbound virtual modifiers are not considered.) 210.32 600 T
+(Any modifiers specified in) 108 579 T
+1 F
+(mods) 239.32 579 T
+2 F
+( are normally) 264.65 579 T
+1 F
+(consumed) 331.63 579 T
+2 F
+( by) 379.62 579 T
+1 F
+(XkbT) 397.62 579 T
+(r) 422.29 579 T
+(anslateK) 426.78 579 T
+(e) 469.03 579 T
+(yCode) 474 579 T
+2 F
+( \050see) 504.66 579 T
+(section 12.1.3\051. For those rare occasions a modifier) 108 566 T
+1 F
+(should) 356.95 566 T
+2 F
+( be considered despite having) 388.96 566 T
+(been used to look up a symbol, key types include an optional) 108 553 T
+1 F
+(pr) 403.64 553 T
+(eserve) 413.87 553 T
+2 F
+( field. If a) 444.52 553 T
+1 F
+(preserve) 494.83 553 T
+2 F
+-0.02 (member of a key type is not) 108 540 P
+5 F
+-0.04 -0.6 (NULL) 244.86 540 B
+2 F
+-0.02 (, it represents a list of modifiers where each entry corre-) 271.26 540 P
+-0.27 (sponds directly to one of the key type\325s) 108 527 P
+1 F
+-0.27 (map) 297.8 527 P
+2 F
+-0.27 (. Each entry lists the modifiers that should) 318.46 527 P
+1 F
+-0.27 (not) 521.94 527 P
+2 F
+(be consumed if the matching map entry is used to determine shift level.) 108 514 T
+(Each shift level has a name and these names are held in the) 108 493 T
+1 F
+(level_names) 394.93 493 T
+2 F
+( array, whose) 454.25 493 T
+(length is) 108 480 T
+1 F
+(num_levels) 152 480 T
+2 F
+(. The type itself also has a name, which is held in the) 205.99 480 T
+1 F
+(name) 462.96 480 T
+2 F
+( field.) 488.95 480 T
+-0.36 (For example, consider how the server handles the following possible symbolic description) 108 459 P
+(of a possible key type \050note that the format used to specify keyboard mappings in the) 108 446 T
+-0.17 (server database is not specified by the Xkb extension, although this format is one possible) 108 433 P
+(example\051:) 108 420 T
+(The) 108 113 T
+1 F
+(name) 129.66 113 T
+2 F
+( of the example key type is \322ALPHATHREE,\323 and the modifiers it pays atten-) 155.65 113 T
+(tion to are) 108 100 T
+5 F
+-0.6 (Shift) 159.66 100 S
+2 F
+(,) 192.66 100 T
+5 F
+-0.6 (Lock) 198.66 100 S
+2 F
+(, and the virtual modifier) 225.06 100 T
+5 F
+-0.6 (LevelThree) 347.71 100 S
+2 F
+(. There are three shift lev-) 413.71 100 T
+(els. The name of shift level one is \322Base,\323 the name of shift level two is \322Caps,\323 and the) 108 87 T
+(name of shift level three is \322Level3.\323) 108 74 T
+3 F
+(T) 214.35 400 T
+(able 15.1 Example K) 221.25 400 T
+(ey T) 329.96 400 T
+(ype) 351.4 400 T
+1 F
+(Symbolic Description) 109 379 T
+(K) 297 379 T
+(e) 304.58 379 T
+(y T) 309.55 379 T
+(ype Data Structur) 323.66 379 T
+(e) 409.21 379 T
+2 11 Q
+(type \322) 109 363.67 T
+(ALPHA) 134.7 363.67 T
+(THREE\323 {) 170.14 363.67 T
+(Xkb->map->types[i].name) 297 363.67 T
+(modi\336ers = Shift+Lock+Le) 127 348.67 T
+(v) 248 348.67 T
+(elThree;) 253.34 348.67 T
+(Xkb->map->types[i].mods) 297 348.67 T
+(map[None]= Le) 127 333.67 T
+(v) 197.38 333.67 T
+(el1;) 202.71 333.67 T
+(Xkb->map->types[i].map[0]) 297 333.67 T
+(map[Lock]= Le) 127 318.67 T
+(v) 196.16 318.67 T
+(el1;) 201.49 318.67 T
+(Xkb->map->types[i].map[1]) 297 318.67 T
+(map[Shift]= Le) 127 303.67 T
+(v) 194.95 303.67 T
+(el2;) 200.28 303.67 T
+(Xkb->map->types[i].map[2]) 297 303.67 T
+(map[Le) 127 288.67 T
+(v) 160.93 288.67 T
+(elThree]= Le) 166.27 288.67 T
+(v) 223.81 288.67 T
+(el3;) 229.15 288.67 T
+(Xkb->map->types[i].map[3]) 297 288.67 T
+(map[Shift+Le) 127 273.67 T
+(v) 188.53 273.67 T
+(elThree]= Le) 193.87 273.67 T
+(v) 251.41 273.67 T
+(el3;) 256.74 273.67 T
+(Xkb->map->types[i].map[4]) 297 273.67 T
+(preserv) 127 258.67 T
+(e[None]= None;) 159.21 258.67 T
+(Xkb->map->types[i].perserv) 297 258.67 T
+(e[0]) 423.18 258.67 T
+(preserv) 127 243.67 T
+(e[Lock]= Lock;) 159.21 243.67 T
+(Xkb->map->types[i].preserv) 297 243.67 T
+(e[1]) 423.18 243.67 T
+(preserv) 127 228.67 T
+(e[Shift]= None;) 159.21 228.67 T
+(Xkb->map->types[i].preserv) 297 228.67 T
+(e[2]) 423.18 228.67 T
+(preserv) 127 213.67 T
+(e[Le) 159.21 213.67 T
+(v) 179.09 213.67 T
+(elThree]= None;) 184.42 213.67 T
+(Xkb->map->types[i].preserv) 297 213.67 T
+(e[3]) 423.18 213.67 T
+(preserv) 127 198.67 T
+(e[Shift+Le) 159.21 198.67 T
+(v) 206.68 198.67 T
+(el3]= None;) 212.02 198.67 T
+(Xkb->map->types[i].preserv) 297 198.67 T
+(e[4]) 423.18 198.67 T
+(le) 127 183.67 T
+(v) 134.67 183.67 T
+(el_name[Le) 140 183.67 T
+(v) 192.26 183.67 T
+(el1]= \322Base\323;) 197.6 183.67 T
+(Xkb->map->types[i].le) 297 183.67 T
+(v) 398.64 183.67 T
+(el_names[0]) 403.98 183.67 T
+(le) 127 168.67 T
+(v) 134.67 168.67 T
+(el_name[Le) 140 168.67 T
+(v) 192.26 168.67 T
+(el2]= \322Caps\323;) 197.6 168.67 T
+(Xkb->map->types[i].le) 297 168.67 T
+(v) 398.64 168.67 T
+(el_names[1]) 403.98 168.67 T
+(le) 127 153.67 T
+(v) 134.67 153.67 T
+(el_name[Le) 140 153.67 T
+(v) 192.26 153.67 T
+(el3]= \322Le) 197.6 153.67 T
+(v) 239.87 153.67 T
+(el3\323;) 245.21 153.67 T
+(Xkb->map->types[i].le) 297 153.67 T
+(v) 398.64 153.67 T
+(el_names[2]) 403.98 153.67 T
+(};) 109 138.67 T
+108 392 462 392 2 L
+V
+0.5 H
+0 Z
+N
+108 374 462 374 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "128" 140
+%%Page: "129" 141
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(129) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(Given the combination of the) 108 712 T
+1 F
+(map) 251.65 712 T
+2 F
+( and) 272.32 712 T
+1 F
+(preserve) 295.64 712 T
+2 F
+( specifications, there are five) 336.96 712 T
+1 F
+(map) 478.25 712 T
+2 F
+( entries.) 498.91 712 T
+(The first map entry specifies that shift level one is to be used if no modifiers are set. The) 108 699 T
+-0.02 (second entry specifies the) 108 686 P
+5 F
+-0.05 -0.6 (Lock) 234.55 686 B
+2 F
+-0.02 ( modifier alone also yields shift level one. The third entry) 260.95 686 P
+(specifies the) 108 673 T
+5 F
+-0.6 (Shift) 170.65 673 S
+2 F
+( modifier alone yields shift level two. The fourth and fifth entries) 203.65 673 T
+(specify that the virtual) 108 660 T
+5 F
+-0.6 (LevelThree) 218.65 660 S
+2 F
+( modifier alone, or in combination with the) 284.65 660 T
+5 F
+-0.6 (Shift) 494.3 660 S
+2 F
+(modifier, yields shift level three.) 108 647 T
+0 F
+(Note) 126 626.67 T
+2 11 Q
+-0.17 (Shift le) 162 626.67 P
+-0.17 (v) 193.64 626.67 P
+-0.17 (el three can be reached only if the virtual modi\336er) 198.98 626.67 P
+5 12 Q
+-0.41 -0.6 (LevelThree) 420.28 626.67 B
+2 11 Q
+-0.17 ( is bound to) 486.28 626.67 P
+-0.27 (a real modi\336er \050see section 16.4\051. If) 162 614.67 P
+5 12 Q
+-0.66 -0.6 (LevelThree) 319.85 614.67 B
+2 11 Q
+-0.27 ( is not bound to a real modi\336er) 385.85 614.67 P
+-0.27 (, the) 518.85 614.67 P
+1 F
+(map) 162 602.67 T
+2 F
+( entries associated with it are ignored.) 180.94 602.67 T
+2 12 Q
+(Because the) 108 582 T
+5 F
+-0.6 (Lock) 168.65 582 S
+2 F
+( modifier is to be preserved for further event processing, the) 195.05 582 T
+1 F
+(preserve) 486.31 582 T
+2 F
+(list is not) 108 569 T
+5 F
+-0.6 (NULL) 155.02 569 S
+2 F
+( and parallels the) 181.42 569 T
+1 F
+(map) 266.06 569 T
+2 F
+( list. All) 286.73 569 T
+1 F
+(preserve) 328.74 569 T
+2 F
+( entries, except for the one corre-) 370.06 569 T
+-0.19 (sponding to the) 108 556 P
+1 F
+-0.19 (map) 184.43 556 P
+2 F
+-0.19 ( entry that specifies the) 205.09 556 P
+5 F
+-0.42 -0.6 (Lock) 318.44 556 B
+2 F
+-0.19 (modifier, do not list any modifiers. For) 351.02 556 P
+(the) 108 543 T
+1 F
+(map) 125.66 543 T
+2 F
+( entry that specifies the) 146.33 543 T
+5 F
+-0.6 (Lock) 260.64 543 S
+2 F
+( modifier, the corresponding) 287.04 543 T
+1 F
+(preserve) 426.68 543 T
+2 F
+( list entry lists) 468 543 T
+-0.45 (the) 108 530 P
+5 F
+-0.99 -0.6 (Lock) 125.21 530 B
+2 F
+-0.45 ( modifier, meaning do not consume the) 151.62 530 P
+5 F
+-0.99 -0.6 (Lock) 339.78 530 B
+2 F
+-0.45 ( modifier. In this particular case, the) 366.18 530 P
+(preserved modifier is passed to Xlib translation functions and causes them to notice that) 108 517 T
+(the) 108 504 T
+5 F
+-0.6 (Lock) 125.66 504 S
+2 F
+( modifier is set; consequently, the Xlib functions apply the appropriate capitali-) 152.07 504 T
+-0.39 (zation rules to the symbol. Because this preserve entry is set only for a modifier that yields) 108 491 P
+(shift level one, the capitalization occurs only for level-one symbols.) 108 478 T
+0 F
+(15.2.1) 72 453 T
+(The Canonical K) 108 453 T
+(e) 201.84 453 T
+(y T) 208.33 453 T
+(ypes) 224.95 453 T
+2 F
+(Xkb allows up to) 108 433 T
+5 F
+-0.6 (XkbMaxKeyTypes) 193.33 433 S
+2 F
+( \050255\051 key types to be defined, but requires at least) 285.73 433 T
+5 F
+-0.6 (XkbNumRequiredTypes) 108 420 S
+2 F
+( \0504\051 predefined types to be in a key map. These predefined key) 233.4 420 T
+-0.25 (types are referred to as the canonical key types and describe the types of keys available on) 108 407 P
+(most keyboards. The definitions for the canonical key types are held in the first) 108 394 T
+5 F
+-0.6 (XkbNum-) 491.6 394 S
+-0.3 -0.6 (RequiredTypes) 108 381 B
+2 F
+-0.14 ( entries of the) 193.8 381 P
+1 F
+-0.14 (types) 261.9 381 P
+2 F
+-0.14 ( field of the client map and are indexed using the fol-) 286.56 381 P
+(lowing constants:) 108 368 T
+5 F
+-0.6 (XkbOneLevelIndex) 139.68 347 S
+-0.6 (XkbTwoLevelIndex) 139.68 333 S
+-0.6 (XkbAlphabeticIndex) 139.68 319 S
+-0.6 (XkbKeypadIndex) 139.68 305 S
+0 11 Q
+(ONE_LEVEL) 108 281.67 T
+2 12 Q
+(The ONE_LEVEL key type describes groups that have only one symbol. The default) 108 263 T
+-0.1 (ONE_LEVEL key type has no map entries and does not pay attention to any modifiers. A) 108 250 P
+(symbolic representation of this key type could look like the following:) 108 237 T
+2 11 Q
+(type \322ONE_LEVEL\323 {) 144 216.67 T
+(modi\336ers = None;) 162 204.67 T
+(map[None]= Le) 162 192.67 T
+(v) 232.38 192.67 T
+(el1;) 237.71 192.67 T
+(le) 162 180.67 T
+(v) 169.67 180.67 T
+(el_name[Le) 175 180.67 T
+(v) 227.26 180.67 T
+(el1]= \322) 232.6 180.67 T
+(An) 262.66 180.67 T
+(y\323;) 275.94 180.67 T
+(};) 144 168.67 T
+2 12 Q
+(The description of the ONE_LEVEL key type is stored in the) 108 150 T
+1 F
+(types) 405.62 150 T
+2 F
+([) 430.28 150 T
+5 F
+-0.6 (XkbOneLevelIn-) 434.28 150 S
+-0.6 (dex) 108 137 S
+2 F
+(] entry of the client key map.) 127.8 137 T
+0 11 Q
+(TWO_LEVEL) 108 114.67 T
+2 12 Q
+(The TWO_LEVEL key type describes groups that consist of two symbols but are neither) 108 96 T
+-0.38 (alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only the) 108 83 P
+5 F
+-0.83 -0.6 (Shift) 504.38 83 B
+FMENDPAGE
+%%EndPage: "129" 141
+%%Page: "130" 142
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(130) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(modifier. It returns shift level two if) 108 712 T
+5 F
+-0.6 (Shift) 283.98 712 S
+2 F
+( is set, and level one if it is not. A symbolic) 316.98 712 T
+(representation of this key type could look like the following:) 108 699 T
+2 11 Q
+(type \322TW) 144 678.67 T
+(O_LEVEL\323 {) 187.57 678.67 T
+(modi\336ers = Shift;) 162 666.67 T
+(map[Shift]= Le) 162 654.67 T
+(v) 229.95 654.67 T
+(el2;) 235.28 654.67 T
+(le) 162 642.67 T
+(v) 169.67 642.67 T
+(el_name[Le) 175 642.67 T
+(v) 227.26 642.67 T
+(el1]= \322Base\323;) 232.6 642.67 T
+(le) 162 630.67 T
+(v) 169.67 630.67 T
+(el_name[Le) 175 630.67 T
+(v) 227.26 630.67 T
+(el2]= \322Shift\323;) 232.6 630.67 T
+(};) 144 618.67 T
+2 12 Q
+(The description of the TWO_LEVEL key type is stored in the) 108 600 T
+1 F
+(types) 408.29 600 T
+2 F
+([) 432.95 600 T
+5 F
+-0.6 (XkbTwoLevelIn-) 436.94 600 S
+-0.6 (dex) 108 587 S
+2 F
+(] entry of the client key map.) 127.8 587 T
+0 11 Q
+(ALPHABETIC) 108 564.67 T
+2 12 Q
+(The ALPHABETIC key type describes groups consisting of two symbols: the lowercase) 108 546 T
+(form of a symbol followed by the uppercase form of the same symbol. The default) 108 533 T
+(ALPHABETIC type implements locale-sensitive \322Shift cancels CapsLock\323 behavior) 108 520 T
+(using both the) 108 507 T
+5 F
+-0.6 (Shift) 179 507 S
+2 F
+( and) 212.01 507 T
+5 F
+-0.6 (Lock) 235.33 507 S
+2 F
+( modifiers as follows:) 261.73 507 T
+2 11 Q
+(\245) 126 486.67 T
+(If) 139.68 486.67 T
+5 12 Q
+-0.6 (Shift) 149.76 486.67 S
+2 11 Q
+( and) 182.76 486.67 T
+5 12 Q
+-0.6 (Lock) 204.14 486.67 S
+2 11 Q
+( are both set, the def) 230.54 486.67 T
+(ault ALPHABETIC type yields le) 319.63 486.67 T
+(v) 468.46 486.67 T
+(el one.) 473.8 486.67 T
+(\245) 126 474.67 T
+(If) 139.68 474.67 T
+5 12 Q
+-0.6 (Shift) 149.76 474.67 S
+2 11 Q
+( alone is set, it yields le) 182.76 474.67 T
+(v) 285.45 474.67 T
+(el tw) 290.79 474.67 T
+(o.) 312.37 474.67 T
+(\245) 126 462.67 T
+(If) 139.68 462.67 T
+5 12 Q
+-0.6 (Lock) 149.76 462.67 S
+2 11 Q
+( alone is set, it yields le) 176.16 462.67 T
+(v) 278.85 462.67 T
+(el one, b) 284.19 462.67 T
+(ut preserv) 321.54 462.67 T
+(es the) 365.06 462.67 T
+5 12 Q
+-0.6 (Lock) 393.16 462.67 S
+2 11 Q
+( modi\336er so Xlib) 419.57 462.67 T
+(notices and applies the appropriate capitalization rules.) 139.68 450.67 T
+2 12 Q
+(The Xlib functions are) 384.08 450.67 T
+(locale-sensitive and apply different capitalization rules for different locales.) 139.68 438.67 T
+2 11 Q
+(\245) 126 426.67 T
+(If neither) 139.68 426.67 T
+5 12 Q
+-0.6 (Shift) 183.05 426.67 S
+2 11 Q
+( nor) 216.05 426.67 T
+5 12 Q
+-0.6 (Lock) 236.22 426.67 S
+2 11 Q
+( is set, it yields le) 262.62 426.67 T
+(v) 338.74 426.67 T
+(el one.) 344.07 426.67 T
+2 12 Q
+(A symbolic representation of this key type could look like the following:) 108 408 T
+2 11 Q
+(type \322) 144 387.67 T
+(ALPHABETIC\323 {) 169.7 387.67 T
+(modi\336ers = Shift+Lock;) 162 375.67 T
+(map[Shift]= Le) 162 363.67 T
+(v) 229.95 363.67 T
+(el2;) 235.28 363.67 T
+(preserv) 162 351.67 T
+(e[Lock]= Lock;) 194.21 351.67 T
+(le) 162 339.67 T
+(v) 169.67 339.67 T
+(el_name[Le) 175 339.67 T
+(v) 227.26 339.67 T
+(el1]= \322Base\323;) 232.6 339.67 T
+(le) 162 327.67 T
+(v) 169.67 327.67 T
+(el_name[Le) 175 327.67 T
+(v) 227.26 327.67 T
+(el2]= \322Caps\323;) 232.6 327.67 T
+(};) 144 315.67 T
+2 12 Q
+(The description of the ALPHABETIC key type is stored in the) 108 297 T
+1 F
+(types) 411.64 297 T
+2 F
+([) 436.3 297 T
+5 F
+-0.6 (XkbAlphabe-) 440.29 297 S
+-0.6 (ticIndex) 108 284 S
+2 F
+(] entry of the client key map.) 160.8 284 T
+0 11 Q
+(KEYPAD) 108 261.67 T
+2 12 Q
+(The KEYPAD key type describes groups that consist of two symbols, at least one of) 108 243 T
+(which is a numeric keypad symbol. The numeric keypad symbol is assumed to reside at) 108 230 T
+-0.24 (level two. The default KEYPAD key type implements \322Shift cancels NumLock\323 behavior) 108 217 P
+(using the Shift modifier and the real modifier bound to the virtual modifier named \322Num-) 108 204 T
+(Lock,\323 known as the) 108 191 T
+5 F
+-0.6 (NumLock) 210.31 191 S
+2 F
+( modifier, as follows:) 256.51 191 T
+2 11 Q
+(\245) 126 170.67 T
+(If) 139.68 170.67 T
+5 12 Q
+-0.6 (Shift) 149.76 170.67 S
+2 11 Q
+( and) 182.76 170.67 T
+5 12 Q
+-0.6 (NumLock) 204.14 170.67 S
+2 11 Q
+( are both set, the def) 250.34 170.67 T
+(ault KEYP) 339.43 170.67 T
+(AD type yields le) 386.39 170.67 T
+(v) 463.41 170.67 T
+(el one.) 468.75 170.67 T
+(\245) 126 158.67 T
+(If) 139.68 158.67 T
+5 12 Q
+-0.6 (Shift) 149.76 158.67 S
+2 11 Q
+( alone is set, it yields le) 182.76 158.67 T
+(v) 285.45 158.67 T
+(el tw) 290.79 158.67 T
+(o.) 312.37 158.67 T
+(\245) 126 146.67 T
+(If) 139.68 146.67 T
+5 12 Q
+-0.6 (NumLock) 149.76 146.67 S
+2 11 Q
+( alone is set, it yields le) 195.96 146.67 T
+(v) 298.65 146.67 T
+(el tw) 303.99 146.67 T
+(o.) 325.57 146.67 T
+(\245) 126 134.67 T
+(If neither) 139.68 134.67 T
+5 12 Q
+-0.6 (Shift) 183.05 134.67 S
+2 11 Q
+( nor) 216.05 134.67 T
+5 12 Q
+-0.6 (NumLock) 236.22 134.67 S
+2 11 Q
+( is set, it yields le) 282.42 134.67 T
+(v) 358.54 134.67 T
+(el one.) 363.87 134.67 T
+FMENDPAGE
+%%EndPage: "130" 142
+%%Page: "131" 143
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(131) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(A symbolic representation of this key type could look like the following:) 108 712 T
+2 11 Q
+(type \322KEYP) 144 691.67 T
+(AD\323 {) 198.29 691.67 T
+(modi\336ers = Shift+NumLock;) 162 679.67 T
+(map[None]= Le) 162 667.67 T
+(v) 232.38 667.67 T
+(el1;) 237.71 667.67 T
+(map[Shift]= Le) 162 655.67 T
+(v) 229.95 655.67 T
+(el2;) 235.28 655.67 T
+(map[NumLock]= Le) 162 643.67 T
+(v) 253.16 643.67 T
+(el2;) 258.49 643.67 T
+(map[Shift+NumLock]= Le) 162 631.67 T
+(v) 280.76 631.67 T
+(el1;) 286.09 631.67 T
+(le) 162 619.67 T
+(v) 169.67 619.67 T
+(el_name[Le) 175 619.67 T
+(v) 227.26 619.67 T
+(el1]= \322Base\323;) 232.6 619.67 T
+(le) 162 607.67 T
+(v) 169.67 607.67 T
+(el_name[Le) 175 607.67 T
+(v) 227.26 607.67 T
+(el2]= \322Caps\323;) 232.6 607.67 T
+(};) 144 595.67 T
+2 12 Q
+-0.1 (The description of the KEYPAD key type is stored in the) 108 577 P
+1 F
+-0.1 (types) 384.49 577 P
+2 F
+-0.1 ([) 409.15 577 P
+5 F
+-0.23 -0.6 (XkbKeypadIndex) 413.15 577 B
+2 F
+-0.1 (] entry) 505.55 577 P
+(of the client key map.) 108 564 T
+0 11 Q
+(Initializing the Canonical Key Types in a New Client Map) 108 541.67 T
+2 12 Q
+-0.24 (To set the definitions of the canonical key types in a client map to their default values, use) 108 523 P
+1 F
+(XkbInitCanonicalKeyTypes.) 108 510 T
+2 11 Q
+(Status) 108 489.67 T
+3 F
+(XkbInitCanonicalK) 137.65 489.67 T
+(eyT) 230.89 489.67 T
+(ypes) 247.8 489.67 T
+2 F
+(\050) 268.58 489.67 T
+1 F
+(xkb, whic) 272.24 489.67 T
+(h, k) 313.62 489.67 T
+(e) 329.4 489.67 T
+(ypadVMod) 333.95 489.67 T
+2 F
+(\051) 382.22 489.67 T
+(XkbDescPtr) 126 476.67 T
+1 F
+(xkb) 198 476.67 T
+2 F
+(;) 213.27 476.67 T
+(/* k) 270 476.67 T
+(e) 286.7 476.67 T
+(yboard description containing client map to initialize */) 291.42 476.67 T
+(unsigned int) 126 463.67 T
+1 F
+(whic) 198 463.67 T
+(h) 218.61 463.67 T
+2 F
+(;) 224.11 463.67 T
+(/* mask of types to initialize */) 270 463.67 T
+(int) 126 450.67 T
+1 F
+(k) 198 450.67 T
+(e) 202.77 450.67 T
+(ypadVMod) 207.33 450.67 T
+2 F
+(;) 255.6 450.67 T
+(/* inde) 270 450.67 T
+(x of NumLock virtual modi\336er */) 300.08 450.67 T
+1 12 Q
+(XkbInitCanonicalK) 108 431 T
+(e) 200.92 431 T
+(yT) 205.88 431 T
+(ypes) 217 431 T
+2 F
+( initializes the first) 238.32 431 T
+5 F
+-0.6 (XkbNumRequiredTypes) 330.98 431 S
+2 F
+( key types of the) 456.39 431 T
+(keyboard specified by the) 108 418 T
+1 F
+(xkb) 234.64 418 T
+2 F
+( parameter to their default values. The) 251.29 418 T
+1 F
+(which) 437.24 418 T
+2 F
+( parameter) 465.91 418 T
+-0.24 (specifies what canonical key types to initialize and is a bitwise inclusive OR of the follow-) 108 405 P
+(ing masks:) 108 392 T
+5 F
+-0.6 (XkbOneLevelMask) 162.67 392 S
+2 F
+(,) 261.67 392 T
+5 F
+-0.6 (XkbTwoLevelMask) 267.67 392 S
+2 F
+(,) 366.68 392 T
+5 F
+-0.6 (XkbAlphabeticMask) 372.68 392 S
+2 F
+(, and) 484.88 392 T
+5 F
+-0.02 -0.6 (XkbKeypadMask) 108 379 B
+2 F
+-0.01 (. Only those canonical types specified by the) 193.8 379 P
+1 F
+-0.01 (which) 411.37 379 P
+2 F
+-0.01 ( mask are initialized.) 440.04 379 P
+-0.48 (If) 108 358 P
+5 F
+-1.06 -0.6 (XkbKeypadMask) 118.51 358 B
+2 F
+-0.48 ( is set in the) 204.31 358 P
+1 F
+-0.48 (which) 262.25 358 P
+2 F
+-0.48 ( parameter,) 290.92 358 P
+1 F
+-0.48 (XkbInitCanonicalK) 346.93 358 P
+-0.48 (e) 439.85 358 P
+-0.48 (yT) 444.82 358 P
+-0.48 (ypes) 455.93 358 P
+2 F
+-0.48 ( looks up the) 477.25 358 P
+5 F
+-0.6 (NumLock) 108 345 S
+2 F
+( named virtual modifier to determine which virtual modifier to use when initial-) 154.2 345 T
+(izing the KEYPAD key type. If the) 108 332 T
+5 F
+-0.6 (NumLock) 279.97 332 S
+2 F
+( virtual modifier does not exist,) 326.17 332 T
+1 F
+(XkbInitCa-) 479.83 332 T
+(nonicalK) 108 319 T
+(e) 151.58 319 T
+(yT) 156.55 319 T
+(ypes) 167.66 319 T
+2 F
+( creates it.) 188.99 319 T
+1 F
+(XkbInitCanonicalK) 108 298 T
+(e) 200.92 298 T
+(yT) 205.88 298 T
+(ypes) 217 298 T
+2 F
+( normally returns Success. It returns) 238.32 298 T
+5 F
+-0.6 (BadAccess) 414.62 298 S
+2 F
+( if the Xkb) 474.02 298 T
+(extension has not been properly initialized, and) 108 285 T
+5 F
+-0.6 (BadAccess) 337.97 285 S
+2 F
+( if the) 397.37 285 T
+1 F
+(xkb) 428.36 285 T
+2 F
+( parameter is not) 445.02 285 T
+(valid.) 108 272 T
+0 F
+(15.2.2) 72 247 T
+(Getting K) 108 247 T
+(e) 161.82 247 T
+(y T) 168.31 247 T
+(ypes fr) 184.93 247 T
+(om the Ser) 224.04 247 T
+(ver) 286.18 247 T
+2 F
+(To obtain the list of available key types in the server\325s keyboard mapping, use) 108 227 T
+1 F
+(XkbGet-) 486.28 227 T
+(KeyTypes) 108 214 T
+2 F
+(.) 154.66 214 T
+2 11 Q
+(Status) 108 193.67 T
+3 F
+(XkbGetK) 137.65 193.67 T
+(eyT) 183.21 193.67 T
+(ypes) 200.11 193.67 T
+2 F
+(\050) 220.89 193.67 T
+1 F
+(dpy) 224.56 193.67 T
+2 F
+(,) 239.73 193.67 T
+1 F
+( \336r) 242.48 193.67 T
+(st) 254.89 193.67 T
+2 F
+(,) 262.23 193.67 T
+1 F
+( num) 264.98 193.67 T
+2 F
+(,) 286.67 193.67 T
+1 F
+( xkb) 289.42 193.67 T
+2 F
+(\051) 307.44 193.67 T
+(Display *) 126 180.67 T
+1 F
+(dpy) 216 180.67 T
+2 F
+(;) 231.88 180.67 T
+(/* connection to X serv) 258 180.67 T
+(er */) 360.49 180.67 T
+(unsigned int) 126 167.67 T
+1 F
+(\336r) 216 167.67 T
+(st) 225.67 167.67 T
+2 F
+(;) 233.01 167.67 T
+(/* inde) 258 167.67 T
+(x to \336rst type to get, 0 => 1st type */) 288.08 167.67 T
+(unsigned int) 126 154.67 T
+1 F
+(num) 216 154.67 T
+2 F
+(;) 234.94 154.67 T
+(/* number of k) 258 154.67 T
+(e) 322.97 154.67 T
+(y types to be returned */) 327.68 154.67 T
+(XkbDescPtr) 126 141.67 T
+1 F
+(xkb) 216 141.67 T
+2 F
+(;) 231.27 141.67 T
+(/* k) 258 141.67 T
+(e) 274.7 141.67 T
+(yboard description containing client map to update */) 279.42 141.67 T
+0 12 Q
+(Note) 126 122.67 T
+1 11 Q
+(XkbGetK) 162 122.67 T
+(e) 201.94 122.67 T
+(yT) 206.49 122.67 T
+(ypes) 216.68 122.67 T
+2 F
+( is used to obtain descriptions of the k) 236.23 122.67 T
+(e) 402.94 122.67 T
+(y types themselv) 407.66 122.67 T
+(es, not the) 481.44 122.67 T
+(k) 162 110.67 T
+(e) 167.39 110.67 T
+(y types bound to indi) 172.11 110.67 T
+(vidual k) 264.73 110.67 T
+(e) 300.37 110.67 T
+(ys. T) 305.09 110.67 T
+(o obtain the k) 326.21 110.67 T
+(e) 386.29 110.67 T
+(y types bound to an indi) 391.01 110.67 T
+(vidual) 496.76 110.67 T
+(k) 162 98.67 T
+(e) 167.39 98.67 T
+(y) 172.11 98.67 T
+(, refer to the) 176.89 98.67 T
+1 F
+(key_sym_map) 233.4 98.67 T
+2 F
+( \336eld of the client map \050see section 15.3.1\051.) 295.1 98.67 T
+FMENDPAGE
+%%EndPage: "131" 143
+%%Page: "132" 144
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(132) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+1 12 Q
+-0.13 (XkbGetK) 108 712 P
+-0.13 (e) 151.57 712 P
+-0.13 (yT) 156.54 712 P
+-0.13 (ypes) 167.65 712 P
+2 F
+-0.13 ( queries the server for the desired types, waits for a reply, and returns the) 188.98 712 P
+(desired types in the) 108 699 T
+1 F
+(xkb->map->types) 203.99 699 T
+2 F
+(. If successful, it returns Success.) 290.16 699 T
+1 F
+(XkbGetK) 108 678 T
+(e) 151.57 678 T
+(yT) 156.54 678 T
+(ypes) 167.65 678 T
+2 F
+( returns) 188.98 678 T
+5 F
+-0.6 (BadAccess) 228.3 678 S
+2 F
+( if the Xkb extension has not been properly initial-) 287.7 678 T
+(ized and) 108 665 T
+5 F
+-0.6 (BadValue) 151.32 665 S
+2 F
+( if the combination of) 204.12 665 T
+1 F
+(\336r) 311.11 665 T
+(st) 321.66 665 T
+2 F
+( and) 329.67 665 T
+1 F
+(num) 352.99 665 T
+2 F
+( results in numbers out of valid) 373.66 665 T
+(range.) 108 652 T
+0 F
+(15.2.3) 72 627 T
+(Changing the Number of Le) 108 627 T
+(vels in a K) 265.16 627 T
+(e) 324.35 627 T
+(y T) 330.84 627 T
+(ype) 347.46 627 T
+2 F
+(To change the number of levels in a key type, use) 108 607 T
+1 F
+(XkbResizeKeyType) 349.28 607 T
+2 F
+(.) 440.59 607 T
+2 11 Q
+(Status) 108 586.67 T
+3 F
+(XkbResizeK) 137.65 586.67 T
+(eyT) 196.03 586.67 T
+(ype) 212.94 586.67 T
+2 F
+(\050) 229.44 586.67 T
+1 F
+(xkb) 233.1 586.67 T
+2 F
+(,) 248.37 586.67 T
+1 F
+( type_ndx) 251.12 586.67 T
+2 F
+(,) 293.58 586.67 T
+1 F
+( map_count) 296.33 586.67 T
+2 F
+(,) 347.96 586.67 T
+1 F
+( want_pr) 350.71 586.67 T
+(eserve) 389.73 586.67 T
+2 F
+(,) 417.83 586.67 T
+1 F
+( ne) 420.58 586.67 T
+(w_num_lvls) 433.55 586.67 T
+2 F
+(\051) 486.1 586.67 T
+(XkbDescPtr) 126 573.67 T
+1 F
+(xkb) 186.75 573.67 T
+2 F
+(;) 202.02 573.67 T
+(/* k) 261 573.67 T
+(e) 277.7 573.67 T
+(yboard description containing client map to update */) 282.42 573.67 T
+(int) 126 560.67 T
+1 F
+(type_ndx) 186.75 560.67 T
+2 F
+(;) 226.46 560.67 T
+(/* inde) 261 560.67 T
+(x in xkb->map->types of type to change */) 291.08 560.67 T
+(int) 126 547.67 T
+1 F
+(map_count) 186.75 547.67 T
+2 F
+(;) 235.63 547.67 T
+(/* total # of map entries needed for the type */) 261 547.67 T
+(Bool) 126 534.67 T
+1 F
+(want_pr) 186.75 534.67 T
+(eserve) 223.02 534.67 T
+2 F
+(;) 251.11 534.67 T
+(/*) 261 534.67 T
+5 F
+-0.33 (True) 272.31 534.67 S
+2 F
+( => list of preserv) 297.39 534.67 T
+(ed modi\336ers is necessary */) 375.62 534.67 T
+(int) 126 521.67 T
+1 F
+(ne) 186.75 521.67 T
+(w_num_lvls) 196.97 521.67 T
+2 F
+(;) 249.53 521.67 T
+(/* ne) 261 521.67 T
+(w max # of le) 282.42 521.67 T
+(v) 342.63 521.67 T
+(els for type */) 347.97 521.67 T
+1 12 Q
+(XkbResizeK) 108 502 T
+(e) 164.9 502 T
+(yT) 169.87 502 T
+(ype) 180.98 502 T
+2 F
+( changes the type specified by) 197.64 502 T
+1 F
+(xkb) 344.94 502 T
+2 F
+(->) 361.6 502 T
+1 F
+(map->types) 372.36 502 T
+2 F
+([) 429.78 502 T
+1 F
+(type_ndx) 433.78 502 T
+2 F
+(], and reallo-) 477.1 502 T
+(cates the symbols and actions bound to all keys that use the type, if necessary.) 108 489 T
+1 F
+(XkbRe-) 485.62 489 T
+-0.43 (sizeK) 108 476 P
+-0.43 (e) 133.58 476 P
+-0.43 (yT) 138.55 476 P
+-0.43 (ype) 149.66 476 P
+2 F
+-0.43 ( updates only the local copy of the types in) 166.32 476 P
+1 F
+-0.43 (xkb) 370.7 476 P
+2 F
+-0.43 (; to update the server\325s copy for) 387.36 476 P
+(the physical device, use) 108 463 T
+1 F
+(XkbSetMap) 224.98 463 T
+2 F
+( or) 280.3 463 T
+1 F
+(XkbChang) 296.29 463 T
+(eMap) 346.84 463 T
+2 F
+( after calling) 374.16 463 T
+1 F
+(XkbResizeK) 437.81 463 T
+(e) 494.71 463 T
+(yT) 499.68 463 T
+(ype) 510.79 463 T
+2 F
+(.) 527.45 463 T
+(The) 108 442 T
+1 F
+(map_count) 129.66 442 T
+2 F
+( parameter specifies the total number of map entries needed for the type,) 182.99 442 T
+-0.3 (and can be zero or greater. If) 108 429 P
+1 F
+-0.3 (map_count) 247.15 429 P
+2 F
+-0.3 ( is zero,) 300.48 429 P
+1 F
+-0.3 (XkbResizeK) 340.22 429 P
+-0.3 (e) 397.13 429 P
+-0.3 (yT) 402.1 429 P
+-0.3 (ype) 413.21 429 P
+2 F
+-0.3 ( frees the existing) 429.86 429 P
+1 F
+-0.3 (map) 516.64 429 P
+2 F
+(and) 108 416 T
+1 F
+(preserve) 128.33 416 T
+2 F
+( entries for the type if they exist and sets them to) 169.64 416 T
+5 F
+-0.6 (NULL) 406.28 416 S
+2 F
+(.) 432.68 416 T
+(The) 108 395 T
+1 F
+(want_preserve) 129.66 395 T
+2 F
+( parameter specifies whether a) 200.32 395 T
+1 F
+(preserve) 349.26 395 T
+2 F
+( list for the key should be cre-) 390.58 395 T
+(ated. If) 108 382 T
+1 F
+(want_preserve) 144.98 382 T
+2 F
+( is) 215.64 382 T
+5 F
+-0.6 (True) 229.64 382 S
+2 F
+(, the) 256.04 382 T
+1 F
+(preserve) 279.71 382 T
+2 F
+( list with) 321.02 382 T
+1 F
+(map_count) 366.04 382 T
+2 F
+( entries is allocated or) 419.36 382 T
+-0.19 (reallocated if it already exists. Otherwise, if) 108 369 P
+1 F
+-0.19 (want_preserve) 319.66 369 P
+2 F
+-0.19 ( is) 390.31 369 P
+5 F
+-0.41 -0.6 (False) 403.95 369 B
+2 F
+-0.19 (, the) 436.95 369 P
+1 F
+-0.19 (preserve) 460.24 369 P
+2 F
+-0.19 ( field is) 501.56 369 P
+(freed if necessary and set to) 108 356 T
+5 F
+-0.6 (NULL) 244.62 356 S
+2 F
+(.) 271.02 356 T
+(The) 108 335 T
+1 F
+(new_num_lvls) 129.66 335 T
+2 F
+( parameter specifies the new maximum number of shift levels for the) 198.32 335 T
+-0.03 (type and is used to calculate and resize the symbols and actions bound to all keys that use) 108 322 P
+(the type.) 108 309 T
+-0.29 (If) 108 288 P
+1 F
+-0.29 (type_ndx) 118.7 288 P
+2 F
+-0.29 ( does not specify a legal type,) 162.02 288 P
+1 F
+-0.29 (new_num_lvls) 305.29 288 P
+2 F
+-0.29 ( is less than 1, or the) 373.96 288 P
+1 F
+-0.29 (map_count) 473.25 288 P
+2 F
+-0.29 ( is) 526.58 288 P
+(less than zero,) 108 275 T
+1 F
+(XkbResizeK) 179.32 275 T
+(e) 236.22 275 T
+(yT) 241.19 275 T
+(ype) 252.3 275 T
+2 F
+( returns) 268.96 275 T
+5 F
+-0.6 (BadValue) 308.28 275 S
+2 F
+(. If) 361.08 275 T
+1 F
+(XkbResizeK) 378.07 275 T
+(e) 434.98 275 T
+(yT) 439.95 275 T
+(ype) 451.06 275 T
+2 F
+( encounters) 467.71 275 T
+(any problems with allocation, it returns) 108 262 T
+5 F
+-0.6 (BadAlloc) 299.65 262 S
+2 F
+(. Otherwise, it returns) 352.45 262 T
+5 F
+-0.6 (Success) 459.77 262 S
+2 F
+(.) 505.97 262 T
+0 F
+(15.2.4) 72 237 T
+(Cop) 108 237 T
+(ying K) 131.15 237 T
+(e) 167.64 237 T
+(y T) 174.13 237 T
+(ypes) 190.75 237 T
+2 F
+(Use) 108 217 T
+1 F
+(XkbCopyKeyType) 129.66 217 T
+2 F
+( and) 215.64 217 T
+1 F
+(XkbCopyKeyTypes) 238.97 217 T
+2 F
+( to copy one or more) 329.62 217 T
+5 F
+-0.6 (XkbKeyTypeRec) 432.26 217 S
+2 F
+(structures.) 108 204 T
+2 11 Q
+(Status) 108 183.67 T
+3 F
+(XkbCopyK) 137.65 183.67 T
+(eyT) 191.16 183.67 T
+(ype) 208.07 183.67 T
+2 F
+(\050) 224.57 183.67 T
+1 F
+(fr) 228.23 183.67 T
+(om) 235.07 183.67 T
+2 F
+(,) 248.51 183.67 T
+1 F
+( into) 251.26 183.67 T
+2 F
+(\051) 271.13 183.67 T
+(XkbK) 126 170.67 T
+(e) 152.61 170.67 T
+(yT) 157.33 170.67 T
+(ypePtr) 168.67 170.67 T
+1 F
+(fr) 234 170.67 T
+(om) 240.84 170.67 T
+2 F
+(;) 254.28 170.67 T
+(/* pointer to XkbK) 306 170.67 T
+(e) 389.14 170.67 T
+(yT) 393.86 170.67 T
+(ypeRec to be copied */) 405.2 170.67 T
+(XkbK) 126 157.67 T
+(e) 152.61 157.67 T
+(yT) 157.33 157.67 T
+(ypePtr) 168.67 157.67 T
+1 F
+(into) 234 157.67 T
+2 F
+(;) 251.12 157.67 T
+(/* pointer to XkbK) 306 157.67 T
+(e) 389.14 157.67 T
+(yT) 393.86 157.67 T
+(ypeRec to be changed */) 405.2 157.67 T
+1 12 Q
+(XkbCopyK) 108 138 T
+(e) 159.58 138 T
+(yT) 164.54 138 T
+(ype) 175.66 138 T
+2 F
+( copies the key type specified by) 192.31 138 T
+1 F
+(from) 351.95 138 T
+2 F
+( to the key type specified by) 374.62 138 T
+1 F
+(into) 512.93 138 T
+2 F
+(.) 531.6 138 T
+-0.2 (Both must point to legal) 108 125 P
+5 F
+-0.44 -0.6 (XkbKeyTypeRec) 226.01 125 B
+2 F
+-0.2 ( structures) 311.81 125 P
+-0.2 (. Xkb assumes) 361.27 125 P
+1 F
+-0.2 (from) 433.33 125 P
+2 F
+-0.2 ( and) 455.99 125 P
+1 F
+-0.2 (into) 478.92 125 P
+2 F
+-0.2 ( point to) 497.59 125 P
+(different places. As a result, overlaps can be fatal.) 108 112 T
+1 F
+(XkbCopyK) 350.59 112 T
+(e) 402.17 112 T
+(yT) 407.14 112 T
+(ype) 418.25 112 T
+2 F
+( frees any existing) 434.9 112 T
+1 F
+(map) 108 99 T
+2 F
+(,) 128.66 99 T
+1 F
+(preserve) 134.66 99 T
+2 F
+(, and) 175.98 99 T
+1 F
+(level_names) 202.31 99 T
+2 F
+( in) 261.62 99 T
+1 F
+(into) 276.96 99 T
+2 F
+( prior to copying. If any allocation errors occur) 295.63 99 T
+(while copying) 108 86 T
+1 F
+(from) 179.33 86 T
+2 F
+( to) 202 86 T
+1 F
+(into) 217.33 86 T
+2 F
+(,) 236 86 T
+1 F
+(XkbCopyK) 242 86 T
+(e) 293.58 86 T
+(yT) 298.55 86 T
+(ype) 309.66 86 T
+2 F
+( returns) 326.32 86 T
+5 F
+-0.6 (BadAlloc) 365.64 86 S
+2 F
+(. Otherwise,) 418.44 86 T
+1 F
+(XkbCopy-) 479.76 86 T
+(K) 108 73 T
+(e) 115.58 73 T
+(yT) 120.55 73 T
+(ype) 131.66 73 T
+2 F
+( copies) 148.32 73 T
+1 F
+(from) 184.98 73 T
+2 F
+( to) 207.65 73 T
+1 F
+(into) 222.98 73 T
+2 F
+( and returns) 241.66 73 T
+5 F
+-0.6 (Success) 301.31 73 S
+2 F
+(.) 347.51 73 T
+FMENDPAGE
+%%EndPage: "132" 144
+%%Page: "133" 145
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(133) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(Status) 108 712.67 T
+3 F
+(XkbCopyK) 137.65 712.67 T
+(eyT) 191.16 712.67 T
+(ypes) 208.07 712.67 T
+2 F
+(\050) 228.85 712.67 T
+1 F
+(fr) 232.51 712.67 T
+(om) 239.35 712.67 T
+2 F
+(,) 252.79 712.67 T
+1 F
+( into) 255.54 712.67 T
+2 F
+(,) 275.41 712.67 T
+1 F
+(num_types) 280.91 712.67 T
+2 F
+(\051) 327.96 712.67 T
+(XkbK) 126 699.67 T
+(e) 152.61 699.67 T
+(yT) 157.33 699.67 T
+(ypePtr) 168.67 699.67 T
+1 F
+(fr) 234 699.67 T
+(om) 240.84 699.67 T
+2 F
+(;) 254.28 699.67 T
+(/* pointer to array of XkbK) 306 699.67 T
+(e) 426.39 699.67 T
+(yT) 431.11 699.67 T
+(ypeRecs to cop) 442.45 699.67 T
+(y */) 509.55 699.67 T
+(XkbK) 126 686.67 T
+(e) 152.61 686.67 T
+(yT) 157.33 686.67 T
+(ypePtr) 168.67 686.67 T
+1 F
+(into) 234 686.67 T
+2 F
+(;) 251.12 686.67 T
+(/* pointer to array of XkbK) 306 686.67 T
+(e) 426.39 686.67 T
+(yT) 431.11 686.67 T
+(ypeRecs to change */) 442.45 686.67 T
+(int) 126 673.67 T
+1 F
+(num_types) 234 673.67 T
+2 F
+(;) 281.05 673.67 T
+(/* number of types to cop) 306 673.67 T
+(y */) 418.63 673.67 T
+1 12 Q
+-0.49 (XkbCopyK) 108 654 P
+-0.49 (e) 159.58 654 P
+-0.49 (yT) 164.54 654 P
+-0.49 (ypes) 175.66 654 P
+2 F
+-0.49 ( copies) 196.98 654 P
+1 F
+-0.49 (num_types) 232.67 654 P
+5 F
+-1.07 -0.6 (XkbKeyTypeRec) 286.5 654 B
+2 F
+-0.49 ( structures from the array specified) 372.3 654 P
+(by) 108 641 T
+1 F
+(from) 123 641 T
+2 F
+( into the array specified by) 145.67 641 T
+1 F
+(into) 276.97 641 T
+2 F
+(. It is intended for copying between, rather than) 295.64 641 T
+(within, keyboard descriptions, so it doesn\325t check for overlaps. The same rules that apply) 108 628 T
+(to the) 108 615 T
+1 F
+(from) 138 615 T
+2 F
+( and) 160.67 615 T
+1 F
+(into) 184 615 T
+2 F
+( parameters in) 202.67 615 T
+1 F
+(XkbCopyK) 273.65 615 T
+(e) 325.22 615 T
+(yT) 330.19 615 T
+(ype) 341.3 615 T
+2 F
+( apply to each entry of the) 357.96 615 T
+1 F
+(from) 486.26 615 T
+2 F
+( and) 508.93 615 T
+1 F
+-0.45 (into) 108 602 P
+2 F
+-0.45 ( arrays of) 126.67 602 P
+1 F
+-0.45 (XkbCopyK) 173.64 602 P
+-0.45 (e) 225.22 602 P
+-0.45 (yT) 230.19 602 P
+-0.45 (ypes) 241.3 602 P
+2 F
+-0.45 (. If any allocation errors occur while copying) 262.62 602 P
+1 F
+-0.45 (from) 478.66 602 P
+2 F
+-0.45 ( to) 501.33 602 P
+1 F
+-0.45 (into) 515.78 602 P
+2 F
+-0.45 (,) 534.45 602 P
+1 F
+(XkbCopyK) 108 589 T
+(e) 159.58 589 T
+(yT) 164.54 589 T
+(ypes) 175.66 589 T
+2 F
+( returns) 196.98 589 T
+5 F
+-0.6 (BadAlloc) 236.3 589 S
+2 F
+(. Otherwise,) 289.11 589 T
+1 F
+(XkbCopyK) 350.42 589 T
+(e) 402 589 T
+(yT) 406.97 589 T
+(ypes) 418.08 589 T
+2 F
+( copies) 439.4 589 T
+1 F
+(from) 476.07 589 T
+2 F
+( to) 498.73 589 T
+1 F
+(into) 514.07 589 T
+2 F
+(and returns) 108 576 T
+5 F
+-0.6 (Success) 164.65 576 S
+2 F
+(.) 210.85 576 T
+0 F
+(15.3) 72 551 T
+(K) 108 551 T
+(e) 116.48 551 T
+(y Symbol Map) 122.98 551 T
+2 F
+-0.22 (The entire list of key symbols for the keyboard mapping is held in the) 108 531 P
+1 F
+-0.22 (syms) 442.9 531 P
+2 F
+-0.22 ( field of the cli-) 466.23 531 P
+(ent map. Whereas the core keyboard mapping is a two-dimensional array of) 108 518 T
+5 F
+-0.6 (KeySyms) 474.91 518 S
+2 F
+-0.21 (whose rows are indexed by keycode, the) 108 505 P
+1 F
+-0.21 (syms) 303.8 505 P
+2 F
+-0.21 ( field of Xkb is a linear list of) 327.13 505 P
+5 F
+-0.46 -0.6 (KeySyms) 470.22 505 B
+2 F
+-0.21 ( that) 516.42 505 P
+-0.35 (needs to be indexed uniquely for each key. This section describes the key symbol map and) 108 492 P
+(the methods for determining the symbols bound to a key.) 108 479 T
+-0.38 (The reason the) 108 458 P
+1 F
+-0.38 (syms) 180.5 458 P
+2 F
+-0.38 ( field is a linear list of) 203.83 458 P
+5 F
+-0.84 -0.6 (KeySyms) 309.48 458 B
+2 F
+-0.38 ( is to reduce the memory consumption) 355.68 458 P
+(associated with a keymap; because Xkb allows individual keys to have multiple shift lev-) 108 445 T
+-0.05 (els and a different number of groups per key, a single two-dimensional array of) 108 432 P
+5 F
+-0.12 -0.6 (KeySyms) 490.85 432 B
+2 F
+(would potentially be very large and sparse. Instead, Xkb provides a small two-dimen-) 108 419 T
+(sional array of) 108 406 T
+5 F
+-0.6 (KeySyms) 180.31 406 S
+2 F
+( for each key. To store all of these individual arrays, Xkb concat-) 226.51 406 T
+(enates each array together in the) 108 393 T
+1 F
+(syms) 265.94 393 T
+2 F
+( field of the client map.) 289.27 393 T
+-0.05 (In order to determine which) 108 372 P
+5 F
+-0.11 -0.6 (KeySyms) 244.71 372 B
+2 F
+-0.05 ( in the) 290.91 372 P
+1 F
+-0.05 (syms) 323.76 372 P
+2 F
+-0.05 ( field are associated with each keycode,) 347.09 372 P
+-0.02 (the client map contains an array of key symbol mappings, held in the) 108 359 P
+1 F
+-0.02 (key_sym_map) 441.73 359 P
+2 F
+-0.02 ( field.) 509.04 359 P
+-0.5 (The) 108 346 P
+1 F
+-0.5 (key_sym_map) 129.16 346 P
+2 F
+-0.5 ( field is an array of) 196.47 346 P
+5 F
+-1.09 -0.6 (XkbSymMapRec) 287.48 346 B
+2 F
+-0.5 ( structures indexed by keycode. The) 366.68 346 P
+1 F
+(key_sym_map) 108 333 T
+2 F
+( array has) 175.31 333 T
+1 F
+(min_key_code) 224.95 333 T
+2 F
+( unused entries at the start to allow direct indexing) 293.59 333 T
+(using a keycode. All keycodes falling between the minimum and maximum legal key-) 108 320 T
+(codes, inclusive, have) 108 307 T
+1 F
+(key_sym_map) 216.31 307 T
+2 F
+( arrays, whether or not any key actually yields that) 283.62 307 T
+(code. The) 108 294 T
+5 F
+-0.6 (KeySymMapRec) 158.32 294 S
+2 F
+( structure is defined as follows:) 237.52 294 T
+2 11 Q
+(#de\336ne XkbNumKbdGroups) 126 268.67 T
+(4) 306 268.67 T
+(#de\336ne XkbMaxKbdGroup) 126 255.67 T
+(\050XkbNumKbdGroups-1\051) 306 255.67 T
+(typedef struct {) 126 235.67 T
+(/* map to k) 306 235.67 T
+(e) 355.7 235.67 T
+(ysyms for a single k) 360.42 235.67 T
+(e) 448.91 235.67 T
+(ycode */) 453.63 235.67 T
+(unsigned char) 144 222.67 T
+(kt_inde) 234 222.67 T
+(x[XkbNumKbdGroups];) 266.83 222.67 T
+(/* k) 378 222.67 T
+(e) 394.7 222.67 T
+(y type inde) 399.42 222.67 T
+(x for each group */) 448.14 222.67 T
+(unsigned char) 144 209.67 T
+(group_info;) 234 209.67 T
+(/* # of groups and out of range group handling */) 306 209.67 T
+(unsigned char) 144 196.67 T
+(width;) 234 196.67 T
+(/* max # of shift le) 306 196.67 T
+(v) 389.14 196.67 T
+(els for k) 394.47 196.67 T
+(e) 430.41 196.67 T
+(y */) 435.13 196.67 T
+(unsigned short) 144 183.67 T
+(of) 234 183.67 T
+(fset;) 242.89 183.67 T
+(/* inde) 306 183.67 T
+(x to k) 336.08 183.67 T
+(e) 361.03 183.67 T
+(ysym table in) 365.75 183.67 T
+1 F
+(syms) 427.78 183.67 T
+2 F
+( array */) 449.17 183.67 T
+(}) 126 170.67 T
+3 F
+(XkbSymMapRec) 134.03 170.67 T
+2 F
+(, *XkbSymMapPtr;) 214.69 170.67 T
+2 12 Q
+(These fields are described in detail in the following sections.) 108 151 T
+0 F
+(15.3.1) 72 126 T
+(P) 108 126 T
+(er) 115.64 126 T
+(-K) 126.74 126 T
+(e) 139.22 126 T
+(y K) 145.72 126 T
+(e) 164.21 126 T
+(y T) 170.7 126 T
+(ype Indices) 187.32 126 T
+2 F
+(The) 108 106 T
+1 F
+(kt_index) 129.66 106 T
+2 F
+( array of the) 170.32 106 T
+5 F
+-0.6 (XkbSymMapRec) 231.62 106 S
+2 F
+( structure contains the indices of the key types) 310.83 106 T
+(\050see section 15.2\051 for each possible group of symbols associated with the key. To obtain) 108 93 T
+-0.22 (the index of a key type or the pointer to a key type, Xkb provides the following macros, to) 108 80 P
+(access the key types:) 108 67 T
+FMENDPAGE
+%%EndPage: "133" 145
+%%Page: "134" 146
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(134) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(Note) 126 712.67 T
+2 11 Q
+(The array of k) 162 712.67 T
+(e) 224.5 712.67 T
+(y types is of \336x) 229.22 712.67 T
+(ed width and is lar) 296.89 712.67 T
+(ge enough to hold k) 377.96 712.67 T
+(e) 465.24 712.67 T
+(y types for the) 469.96 712.67 T
+-0.46 (maximum le) 162 700.67 P
+-0.46 (g) 216.68 700.67 P
+-0.46 (al number of groups \050) 222.13 700.67 P
+5 12 Q
+-1.11 -0.6 (XkbNumKbdGroups) 315.6 700.67 B
+2 11 Q
+-0.46 (, currently four\051; if a k) 414.6 700.67 P
+-0.46 (e) 510.54 700.67 P
+-0.46 (y has) 515.26 700.67 P
+-0.18 (fe) 162 688.67 P
+-0.18 (wer than) 170.27 688.67 P
+5 12 Q
+-0.44 -0.6 (XkbNumKbdGroups) 210.84 688.67 B
+2 11 Q
+-0.18 ( groups, the e) 309.84 688.67 P
+-0.18 (xtra k) 368.39 688.67 P
+-0.18 (e) 393.45 688.67 P
+-0.18 (y types are reported b) 398.17 688.67 P
+-0.18 (ut ignored.) 492.52 688.67 P
+(int) 108 668.67 T
+3 F
+(XkbK) 122.37 668.67 T
+(eyT) 150.82 668.67 T
+(ypeIndex) 167.73 668.67 T
+2 F
+(\050) 211.12 668.67 T
+1 F
+(xkb, k) 214.79 668.67 T
+(e) 240.33 668.67 T
+(ycode) 244.88 668.67 T
+(, gr) 270.43 668.67 T
+(oup) 285.21 668.67 T
+2 F
+(\051) 301.71 668.67 T
+(/* macro*/) 342 668.67 T
+(XkbDescPtr) 126 655.67 T
+1 F
+(xkb) 234 655.67 T
+2 F
+(;) 249.27 655.67 T
+(/* Xkb description of interest */) 342 655.67 T
+(K) 126 642.67 T
+(e) 133.67 642.67 T
+(yCode) 138.39 642.67 T
+1 F
+(k) 234 642.67 T
+(e) 238.77 642.67 T
+(ycode) 243.33 642.67 T
+2 F
+(;) 268.98 642.67 T
+(/* k) 342 642.67 T
+(e) 358.7 642.67 T
+(ycode of interest */) 363.42 642.67 T
+(int) 126 629.67 T
+1 F
+(gr) 234 629.67 T
+(oup) 243.28 629.67 T
+2 F
+(;) 259.78 629.67 T
+(/* group inde) 342 629.67 T
+(x */) 400.5 629.67 T
+1 12 Q
+(XkbK) 108 610 T
+(e) 134.24 610 T
+(yT) 139.21 610 T
+(ypeInde) 150.32 610 T
+(x) 188.06 610 T
+2 F
+( computes an index into the) 193.39 610 T
+1 F
+(types) 328.72 610 T
+2 F
+( vector of the client map in) 353.38 610 T
+1 F
+(xkb) 485.69 610 T
+2 F
+( from) 502.34 610 T
+(the given) 108 597 T
+1 F
+(k) 155.33 597 T
+(e) 160.54 597 T
+(ycode) 165.5 597 T
+2 F
+( and) 193.49 597 T
+1 F
+(gr) 216.82 597 T
+(oup) 226.94 597 T
+2 F
+( index.) 244.94 597 T
+2 11 Q
+(XkbK) 108 576.67 T
+(e) 134.61 576.67 T
+(yT) 139.33 576.67 T
+(ypePtr) 150.67 576.67 T
+3 F
+(XkbK) 182.14 576.67 T
+(eyT) 210.6 576.67 T
+(ype) 227.5 576.67 T
+2 F
+(\050) 244 576.67 T
+1 F
+(xkb, k) 247.67 576.67 T
+(e) 273.21 576.67 T
+(ycode) 277.76 576.67 T
+(, gr) 303.3 576.67 T
+(oup) 318.09 576.67 T
+2 F
+(\051) 334.59 576.67 T
+(/* macro */) 342 576.67 T
+(XkbDescPtr) 126 563.67 T
+1 F
+(xkb) 234 563.67 T
+2 F
+(;) 249.27 563.67 T
+(/* Xkb description of interest */) 342 563.67 T
+(K) 126 550.67 T
+(e) 133.67 550.67 T
+(yCode) 138.39 550.67 T
+1 F
+(k) 234 550.67 T
+(e) 238.77 550.67 T
+(ycode) 243.33 550.67 T
+2 F
+(;) 268.98 550.67 T
+(/* k) 342 550.67 T
+(e) 358.7 550.67 T
+(ycode of interest */) 363.42 550.67 T
+(int) 126 537.67 T
+1 F
+(gr) 234 537.67 T
+(oup) 243.28 537.67 T
+2 F
+(;) 259.78 537.67 T
+(/* group inde) 342 537.67 T
+(x */) 400.5 537.67 T
+1 12 Q
+(XkbK) 108 518 T
+(e) 134.24 518 T
+(yT) 139.21 518 T
+(ype) 150.32 518 T
+2 F
+( returns a pointer to the key type in the) 166.98 518 T
+1 F
+(types) 355.62 518 T
+2 F
+( vector of the client map in) 380.28 518 T
+1 F
+(xkb) 512.59 518 T
+2 F
+(corresponding to the given) 108 505 T
+1 F
+(k) 239.32 505 T
+(e) 244.52 505 T
+(ycode) 249.49 505 T
+2 F
+( and) 277.48 505 T
+1 F
+(gr) 300.8 505 T
+(oup) 310.93 505 T
+2 F
+( index.) 328.93 505 T
+0 F
+(15.3.2) 72 480 T
+(P) 108 480 T
+(er) 115.64 480 T
+(-K) 126.74 480 T
+(e) 139.22 480 T
+(y Gr) 145.72 480 T
+(oup Inf) 169.49 480 T
+(ormation) 209.24 480 T
+2 F
+-0.13 (The) 108 460 P
+1 F
+-0.13 (group_info) 129.53 460 P
+2 F
+-0.13 ( field of an) 182.87 460 P
+5 F
+-0.28 -0.6 (XkbSymMapRec) 237.67 460 B
+2 F
+-0.13 ( is an encoded value containing the number of) 316.87 460 P
+(groups of symbols bound to the key as well as the specification of the treatment of) 108 447 T
+-0.33 (out-of-range groups. It is legal for a key to have zero groups, in which case it also has zero) 108 434 P
+-0.11 (symbols and all events from that key yield) 108 421 P
+5 F
+-0.24 -0.6 (NoSymbol) 313.77 421 B
+2 F
+-0.11 (. To obtain the number of groups of) 366.57 421 P
+(symbols bound to the key, use) 108 408 T
+1 F
+(XkbKeyNumGroups) 256.33 408 T
+2 F
+(. To change the number of groups) 352.32 408 T
+(bound to a key, use) 108 395 T
+1 F
+(XkbChang) 203.99 395 T
+(eT) 254.53 395 T
+(ypesOfK) 265.64 395 T
+(e) 306.55 395 T
+(y) 311.52 395 T
+2 F
+( \050see section 15.3.6\051. To obtain a mask that) 316.85 395 T
+(determines the treatment of out-of-range groups, use) 108 382 T
+1 F
+(XkbKeyGroupInfo) 363.28 382 T
+2 F
+( and) 451.26 382 T
+1 F
+(XkbOutOf-) 474.59 382 T
+(RangeGroupInfo) 108 369 T
+2 F
+(.) 189.32 369 T
+(The keyboard controls \050see Chapter 10\051 contain a) 108 348 T
+1 F
+(groups_wrap) 347.94 348 T
+2 F
+( field specifying the han-) 411.95 348 T
+-0.29 (dling of illegal groups on a global basis. That is, when the user performs an action causing) 108 335 P
+(the effective group to go out of the legal range, the) 108 322 T
+1 F
+(groups_wrap) 354.61 322 T
+2 F
+( field specifies how to) 418.62 322 T
+(normalize the effective keyboard group to a group that is legal for the keyboard as a) 108 309 T
+-0.43 (whole, but there is no guarantee that the normalized group will be within the range of legal) 108 296 P
+(groups for any individual key. The per-key) 108 283 T
+1 F
+(group_info) 317.29 283 T
+2 F
+( field specifies how a key treats a) 370.63 283 T
+(legal effective group if the key does not have a type specified for the group of concern.) 108 270 T
+(For example, the) 108 257 T
+5 F
+-0.6 (Enter) 191.99 257 S
+2 F
+( key usually has just one group defined. If the user performs an) 224.99 257 T
+(action causing the global keyboard group to change to) 108 244 T
+5 F
+-0.6 (Group2) 370.96 244 S
+2 F
+(, the) 410.56 244 T
+1 F
+(group_info) 434.22 244 T
+2 F
+( field for) 487.56 244 T
+(the) 108 231 T
+5 F
+-0.6 (Enter) 125.66 231 S
+2 F
+( key describes how to handle this situation.) 158.66 231 T
+(Out-of-range groups for individual keys are mapped to a legal group using the same) 108 210 T
+-0.18 (options as are used for the overall keyboard group. The particular type of mapping used is) 108 197 P
+-0.43 (controlled by the bits set in the) 108 184 P
+1 F
+-0.43 (group_info) 255.99 184 P
+2 F
+-0.43 ( flag, as shown in Table 15.2. See section 10.7.1) 309.33 184 P
+(for more details on the normalization methods in this table.) 108 171 T
+3 F
+(T) 208.35 151 T
+(able 15.2 gr) 215.25 151 T
+(oup_inf) 277.7 151 T
+(o Range Normalization) 316.75 151 T
+1 F
+(Bits set in gr) 109 131 T
+(oup_info) 169.47 131 T
+(Normalization method) 307 131 T
+2 11 Q
+(XkbRedirectIntoRange) 109 116.67 T
+(XkbRedirectIntoRange) 307 116.67 T
+(XkbClampIntoRange) 109 102.67 T
+(XkbClampIntoRange) 307 102.67 T
+(none of the abo) 109 88.67 T
+(v) 176.96 88.67 T
+(e) 182.29 88.67 T
+(XkbWrapIntoRange) 307 88.67 T
+108 143 522 143 2 L
+V
+0.5 H
+0 Z
+N
+108 126 522 126 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "134" 146
+%%Page: "135" 147
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(135) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(Xkb provides the following macros to access group information:) 108 712 T
+2 11 Q
+(int) 108 691.67 T
+3 F
+(XkbK) 122.37 691.67 T
+(eyNumGr) 150.82 691.67 T
+(oups) 197.67 691.67 T
+2 F
+(\050) 219.68 691.67 T
+1 F
+(xkb, k) 223.35 691.67 T
+(e) 248.89 691.67 T
+(ycode) 253.44 691.67 T
+2 F
+(\051) 279.09 691.67 T
+(/* macro */) 342 691.67 T
+(XkbDescPtr) 126 678.67 T
+1 F
+(xkb) 234 678.67 T
+2 F
+(;) 249.27 678.67 T
+(/* Xkb description of interest */) 342 678.67 T
+(K) 126 665.67 T
+(e) 133.67 665.67 T
+(yCode) 138.39 665.67 T
+1 F
+(k) 234 665.67 T
+(e) 238.77 665.67 T
+(ycode) 243.33 665.67 T
+2 F
+(;) 268.98 665.67 T
+(/* k) 342 665.67 T
+(e) 358.7 665.67 T
+(ycode of interest */) 363.42 665.67 T
+1 12 Q
+(XkbK) 108 646 T
+(e) 134.24 646 T
+(yNumGr) 139.21 646 T
+(oups) 180 646 T
+2 F
+( returns the number of groups of symbols bound to the key corre-) 202.67 646 T
+(sponding to) 108 633 T
+1 F
+(k) 167.34 633 T
+(e) 172.55 633 T
+(ycode) 177.52 633 T
+2 F
+(.) 205.5 633 T
+2 11 Q
+(unsigned char) 108 612.67 T
+3 F
+(XkbK) 172.15 612.67 T
+(eyGr) 200.61 612.67 T
+(oupInf) 224.24 612.67 T
+(o) 255.75 612.67 T
+2 F
+(\050) 261.25 612.67 T
+1 F
+(xkb, k) 264.92 612.67 T
+(e) 290.46 612.67 T
+(ycode) 295.01 612.67 T
+2 F
+(\051) 320.66 612.67 T
+(/*macro */) 342 612.67 T
+(XkbDescPtr) 126 599.67 T
+1 F
+(xkb) 234 599.67 T
+2 F
+(;) 249.27 599.67 T
+(/* Xkb description of interest */) 342 599.67 T
+(K) 126 586.67 T
+(e) 133.67 586.67 T
+(yCode) 138.39 586.67 T
+1 F
+(k) 234 586.67 T
+(e) 238.77 586.67 T
+(ycode) 243.33 586.67 T
+2 F
+(;) 268.98 586.67 T
+(/* k) 342 586.67 T
+(e) 358.7 586.67 T
+(ycode of interest */) 363.42 586.67 T
+1 12 Q
+(XkbK) 108 567 T
+(e) 134.24 567 T
+(yGr) 139.21 567 T
+(oupInfo) 157.33 567 T
+2 F
+( returns the) 194.66 567 T
+1 F
+(group_info) 251.65 567 T
+2 F
+( field from the) 304.99 567 T
+5 F
+-0.6 (XkbSymMapRec) 376.98 567 S
+2 F
+( structure associ-) 456.18 567 T
+(ated with the key corresponding to) 108 554 T
+1 F
+(k) 277.31 554 T
+(e) 282.52 554 T
+(ycode) 287.48 554 T
+2 F
+(.) 315.47 554 T
+2 11 Q
+(unsigned char) 108 533.67 T
+3 F
+(XkbOutOfRangeGr) 172.15 533.67 T
+(oupInf) 266.07 533.67 T
+(o) 297.58 533.67 T
+2 F
+(\050) 303.08 533.67 T
+1 F
+(grp_inf) 306.75 533.67 T
+2 F
+(\051) 339.14 533.67 T
+(/* macro */) 342.81 533.67 T
+(unsigned char) 126 520.67 T
+1 F
+(grp_inf) 234 520.67 T
+2 F
+(;) 266.39 520.67 T
+(/* group_info \336eld of) 342 520.67 T
+5 F
+-0.55 (XkbSymMapRec) 439.16 520.67 S
+2 F
+( */) 511.76 520.67 T
+1 12 Q
+(XkbOutOfRang) 108 501 T
+(eGr) 181.87 501 T
+(oupInfo) 199.99 501 T
+2 F
+( returns only the out-of-range processing information from the) 237.32 501 T
+1 F
+(group_info) 108 488 T
+2 F
+( field of an) 161.34 488 T
+5 F
+-0.6 (XkbSymMapRec) 216.66 488 S
+2 F
+( structure.) 295.86 488 T
+2 11 Q
+(unsigned char) 108 467.67 T
+3 F
+(XkbOutOfRangeGr) 172.15 467.67 T
+(oupNumber) 266.07 467.67 T
+2 F
+(\050) 322.91 467.67 T
+1 F
+(grp_inf) 326.57 467.67 T
+2 F
+(\051) 358.96 467.67 T
+(/* macro */) 362.63 467.67 T
+(unsigned char) 126 454.67 T
+1 F
+(grp_inf) 234 454.67 T
+2 F
+(;) 266.39 454.67 T
+(/* group_info \336eld of) 342 454.67 T
+5 12 Q
+-0.6 (XkbSymMapRec) 439.16 454.67 S
+2 11 Q
+( */) 518.36 454.67 T
+1 12 Q
+(XkbOutOfRang) 108 435 T
+(eGr) 181.87 435 T
+(oupNumber) 199.99 435 T
+2 F
+( returns the out-of-range group number, represented as a) 256.66 435 T
+(group index, from the) 108 422 T
+1 F
+(group_info) 215.65 422 T
+2 F
+( field of an) 268.99 422 T
+5 F
+-0.6 (XkbSymMapRec) 324.31 422 S
+2 F
+( structure.) 403.51 422 T
+0 F
+(15.3.3) 72 397 T
+(K) 108 397 T
+(e) 116.48 397 T
+(y Width) 122.98 397 T
+2 F
+(The maximum number of shift levels for a type is also referred to as the width of a key) 108 377 T
+-0.07 (type. The) 108 364 P
+1 F
+-0.07 (width) 156.18 364 P
+2 F
+-0.07 ( field of the) 182.85 364 P
+1 F
+-0.07 (key_sym_map) 241.21 364 P
+2 F
+-0.07 ( entry for a key contains the width of the widest) 308.52 364 P
+(type associated with the key. The) 108 351 T
+1 F
+(width) 270.97 351 T
+2 F
+(field cannot be explicitly changed; it is updated) 300.65 351 T
+(automatically whenever the symbols or set of types bound to a key are changed.) 108 338 T
+0 F
+(15.3.4) 72 313 T
+(Offset in to the Symbol Map) 108 313 T
+2 F
+(The key width and number of groups associated with a key are used to form a small) 108 293 T
+(two-dimensional array of) 108 280 T
+5 F
+-0.6 (KeySyms) 232.31 280 S
+2 F
+( for a key. This array may be different sizes for differ-) 278.51 280 T
+-0.38 (ent keys. The array for a single key is stored as a linear list, in row-major order. The arrays) 108 267 P
+(for all of the keys are stored in the) 108 254 T
+1 F
+(syms) 275.63 254 T
+2 F
+( field of the client map. There is one row for each) 298.96 254 T
+(group associated with a key and one column for each level. The index corresponding to a) 108 241 T
+(given group and shift level is computed as:) 108 228 T
+(idx = group_index * key_width + shift_level) 126 207 T
+(The) 108 186 T
+1 F
+(offset) 129.66 186 T
+2 F
+( field of the) 155.66 186 T
+1 F
+(key_sym_map) 214.32 186 T
+2 F
+( entry for a key is used to access the beginning of the) 281.63 186 T
+(array.) 108 173 T
+-0.02 (Xkb provides the following macros for accessing the) 108 152 P
+1 F
+-0.02 (width) 364.45 152 P
+2 F
+-0.02 ( and) 391.13 152 P
+1 F
+-0.02 (offset) 414.42 152 P
+2 F
+-0.02 ( for individual keys,) 440.42 152 P
+(as well as macros for accessing the two-dimensional array of symbols bound to the key:) 108 139 T
+2 11 Q
+(int) 108 118.67 T
+3 F
+(XkbK) 122.37 118.67 T
+(eyGr) 150.82 118.67 T
+(oupsW) 174.45 118.67 T
+(idth) 207.26 118.67 T
+2 F
+(\050) 226.22 118.67 T
+1 F
+(xkb, k) 229.88 118.67 T
+(e) 255.42 118.67 T
+(ycode) 259.98 118.67 T
+2 F
+(\051) 285.63 118.67 T
+(/* macro */) 342 118.67 T
+(XkbDescPtr) 126 105.67 T
+1 F
+(xkb) 234 105.67 T
+2 F
+(;) 249.27 105.67 T
+(/* Xkb description of interest */) 342 105.67 T
+(K) 126 92.67 T
+(e) 133.67 92.67 T
+(yCode) 138.39 92.67 T
+1 F
+(k) 234 92.67 T
+(e) 238.77 92.67 T
+(ycode) 243.33 92.67 T
+2 F
+(;) 268.98 92.67 T
+(/* k) 342 92.67 T
+(e) 358.7 92.67 T
+(ycode of interest */) 363.42 92.67 T
+FMENDPAGE
+%%EndPage: "135" 147
+%%Page: "136" 148
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(136) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+1 12 Q
+(XkbK) 108 712 T
+(e) 134.24 712 T
+(yGr) 139.21 712 T
+(oupsW) 157.33 712 T
+(idth) 189.34 712 T
+2 F
+( computes the maximum width associated with the key correspond-) 208.01 712 T
+(ing to) 108 699 T
+1 F
+(k) 138.67 699 T
+(e) 143.88 699 T
+(ycode) 148.85 699 T
+2 F
+(.) 176.83 699 T
+2 11 Q
+(int) 108 678.67 T
+3 F
+(XkbK) 122.37 678.67 T
+(eyGr) 150.82 678.67 T
+(oupW) 174.45 678.67 T
+(idth) 202.99 678.67 T
+2 F
+(\050) 221.94 678.67 T
+1 F
+(xkb, k) 225.6 678.67 T
+(e) 251.14 678.67 T
+(ycode) 255.7 678.67 T
+(, grp) 281.24 678.67 T
+2 F
+(\051) 302.02 678.67 T
+(/* macro */) 342 678.67 T
+(XkbDescPtr) 126 665.67 T
+1 F
+(xkb) 234 665.67 T
+2 F
+(;) 249.27 665.67 T
+(/* Xkb description of interest */) 342 665.67 T
+(K) 126 652.67 T
+(e) 133.67 652.67 T
+(yCode) 138.39 652.67 T
+1 F
+(k) 234 652.67 T
+(e) 238.77 652.67 T
+(ycode) 243.33 652.67 T
+2 F
+(;) 268.98 652.67 T
+(/* k) 342 652.67 T
+(e) 358.7 652.67 T
+(ycode of interest */) 363.42 652.67 T
+(int) 126 639.67 T
+1 F
+(grp) 234 639.67 T
+2 F
+(;) 249.28 639.67 T
+(/* group of interest */) 342 639.67 T
+1 12 Q
+(XkbK) 108 620 T
+(e) 134.24 620 T
+(yGr) 139.21 620 T
+(oupW) 157.33 620 T
+(idth) 184.67 620 T
+2 F
+( computes the width of the type associated with the group) 203.34 620 T
+1 F
+(grp) 482.98 620 T
+2 F
+( for the) 499.64 620 T
+(key corresponding to) 108 607 T
+1 F
+(k) 212.32 607 T
+(e) 217.52 607 T
+(ycode) 222.49 607 T
+2 F
+(.) 250.48 607 T
+2 11 Q
+(int) 108 586.67 T
+3 F
+(XkbK) 122.37 586.67 T
+(eySymsOffset) 150.82 586.67 T
+2 F
+(\050) 214.98 586.67 T
+1 F
+(xkb, k) 218.64 586.67 T
+(e) 244.18 586.67 T
+(ycode) 248.73 586.67 T
+2 F
+(\051) 274.39 586.67 T
+(/* macro */) 342 586.67 T
+(XkbDescPtr) 126 573.67 T
+1 F
+(xkb) 234 573.67 T
+2 F
+(;) 249.27 573.67 T
+(/* Xkb description of interest */) 342 573.67 T
+(K) 126 560.67 T
+(e) 133.67 560.67 T
+(yCode) 138.39 560.67 T
+1 F
+(k) 234 560.67 T
+(e) 238.77 560.67 T
+(ycode) 243.33 560.67 T
+2 F
+(;) 268.98 560.67 T
+(/* k) 342 560.67 T
+(e) 358.7 560.67 T
+(ycode of interest */) 363.42 560.67 T
+1 12 Q
+(XkbK) 108 541 T
+(e) 134.24 541 T
+(ySymsOf) 139.21 541 T
+(fset) 180.98 541 T
+2 F
+( returns the offset of the two-dimensional array of keysyms for the key) 197.65 541 T
+(corresponding to) 108 528 T
+1 F
+(k) 191.99 528 T
+(e) 197.2 528 T
+(ycode) 202.16 528 T
+2 F
+(.) 230.15 528 T
+2 11 Q
+(int) 108 507.67 T
+3 F
+(XkbK) 122.37 507.67 T
+(eyNumSyms) 150.82 507.67 T
+2 F
+(\050) 209.49 507.67 T
+1 F
+(xkb, k) 213.15 507.67 T
+(e) 238.69 507.67 T
+(ycode) 243.24 507.67 T
+2 F
+(\051) 268.9 507.67 T
+(/* macro */) 342 507.67 T
+(XkbDescPtr) 126 494.67 T
+1 F
+(xkb) 234 494.67 T
+2 F
+(;) 249.27 494.67 T
+(/* Xkb description of interest */) 342 494.67 T
+(K) 126 481.67 T
+(e) 133.67 481.67 T
+(yCode) 138.39 481.67 T
+1 F
+(k) 234 481.67 T
+(e) 238.77 481.67 T
+(ycode) 243.33 481.67 T
+2 F
+(;) 268.98 481.67 T
+(/* k) 342 481.67 T
+(e) 358.7 481.67 T
+(ycode of interest */) 363.42 481.67 T
+1 12 Q
+(XkbK) 108 462 T
+(e) 134.24 462 T
+(yNumSyms) 139.21 462 T
+2 F
+( returns the total number of keysyms for the key corresponding to) 191.87 462 T
+1 F
+(k) 509.82 462 T
+(e) 515.03 462 T
+(y-) 520 462 T
+(code) 108 449 T
+2 F
+(.) 130.66 449 T
+2 11 Q
+(K) 108 428.67 T
+(e) 115.67 428.67 T
+(ySym *) 120.39 428.67 T
+3 F
+(XkbK) 157.06 428.67 T
+(eySymsPtr) 185.52 428.67 T
+2 F
+(\050) 236.23 428.67 T
+1 F
+(xkb, k) 239.89 428.67 T
+(e) 265.43 428.67 T
+(ycode) 269.99 428.67 T
+2 F
+(\051) 295.64 428.67 T
+(/* macro */) 342 428.67 T
+(XkbDescPtr) 126 415.67 T
+1 F
+(xkb) 234 415.67 T
+2 F
+(;) 249.27 415.67 T
+(/* Xkb description of interest */) 342 415.67 T
+(K) 126 402.67 T
+(e) 133.67 402.67 T
+(yCode) 138.39 402.67 T
+1 F
+(k) 234 402.67 T
+(e) 238.77 402.67 T
+(ycode) 243.33 402.67 T
+2 F
+(;) 268.98 402.67 T
+(/* k) 342 402.67 T
+(e) 358.7 402.67 T
+(ycode of interest */) 363.42 402.67 T
+1 12 Q
+(XkbK) 108 383 T
+(e) 134.24 383 T
+(ySymsPtr) 139.21 383 T
+2 F
+( returns the pointer to the two-dimensional array of keysyms for the key) 184.54 383 T
+(corresponding to) 108 370 T
+1 F
+(k) 191.99 370 T
+(e) 197.2 370 T
+(ycode) 202.16 370 T
+2 F
+(.) 230.15 370 T
+2 11 Q
+(K) 108 349.67 T
+(e) 115.67 349.67 T
+(ySym) 120.39 349.67 T
+3 F
+(XkbK) 148.81 349.67 T
+(eySymEntry) 177.27 349.67 T
+2 F
+(\050) 235.93 349.67 T
+1 F
+(xkb, k) 239.59 349.67 T
+(e) 265.14 349.67 T
+(ycode) 269.69 349.67 T
+(, shift, grp) 295.23 349.67 T
+2 F
+(\051) 340.46 349.67 T
+(/* macro */) 344.13 349.67 T
+(XkbDescPtr) 126 336.67 T
+1 F
+(xkb) 234 336.67 T
+2 F
+(;) 249.27 336.67 T
+(/* Xkb description of interest */) 342 336.67 T
+(K) 126 323.67 T
+(e) 133.67 323.67 T
+(yCode) 138.39 323.67 T
+1 F
+(k) 234 323.67 T
+(e) 238.77 323.67 T
+(ycode) 243.33 323.67 T
+2 F
+(;) 268.98 323.67 T
+(/* k) 342 323.67 T
+(e) 358.7 323.67 T
+(ycode of interest */) 363.42 323.67 T
+(int) 126 310.67 T
+1 F
+(shift) 234 310.67 T
+2 F
+(;) 252.95 310.67 T
+(/* shift le) 342 310.67 T
+(v) 383.28 310.67 T
+(el of interest */) 388.62 310.67 T
+(int) 126 297.67 T
+1 F
+(grp) 234 297.67 T
+2 F
+(;) 249.28 297.67 T
+(/* group of interest */) 342 297.67 T
+1 12 Q
+-0.5 (XkbK) 108 278 P
+-0.5 (e) 134.24 278 P
+-0.5 (ySymEntry) 139.21 278 P
+2 F
+-0.5 ( returns the) 191.2 278 P
+5 F
+-1.09 -0.6 (keysym) 246.7 278 B
+2 F
+-0.5 ( corresponding to shift level) 286.3 278 P
+1 F
+-0.5 (shift) 421.48 278 P
+2 F
+-0.5 ( and group) 442.15 278 P
+1 F
+-0.5 (grp) 494.99 278 P
+2 F
+-0.5 ( from) 511.66 278 P
+(the two-dimensional array of keysyms for the key corresponding to) 108 265 T
+1 F
+(k) 433.94 265 T
+(e) 439.15 265 T
+(ycode) 444.12 265 T
+0 F
+(15.3.5) 72 240 T
+(Getting the Symbol Map f) 108 240 T
+(or K) 252.44 240 T
+(e) 276.26 240 T
+(ys fr) 282.76 240 T
+(om the Ser) 307.86 240 T
+(ver) 370 240 T
+2 F
+(To obtain the symbols for a subset of the keys in a keyboard description, use) 108 220 T
+1 F
+(XkbGetKey-) 478.62 220 T
+(Syms) 108 207 T
+2 F
+(:) 132.66 207 T
+2 11 Q
+(Status) 108 186.67 T
+3 F
+(XkbGetK) 137.65 186.67 T
+(eySyms) 183.21 186.67 T
+2 F
+(\050) 218.65 186.67 T
+1 F
+(dpy) 222.31 186.67 T
+2 F
+(,) 237.48 186.67 T
+1 F
+( \336r) 240.23 186.67 T
+(st) 252.65 186.67 T
+2 F
+(,) 259.99 186.67 T
+1 F
+(num) 265.49 186.67 T
+2 F
+(,) 284.43 186.67 T
+1 F
+( xkb) 287.18 186.67 T
+2 F
+(\051) 305.2 186.67 T
+(Display *) 126 173.67 T
+1 F
+(dpy) 234 173.67 T
+2 F
+(;) 249.88 173.67 T
+(/* connection to X serv) 306 173.67 T
+(er */) 408.49 173.67 T
+(unsigned int) 126 160.67 T
+1 F
+(\336r) 234 160.67 T
+(st) 243.67 160.67 T
+2 F
+(;) 251.01 160.67 T
+(/* k) 306 160.67 T
+(e) 322.7 160.67 T
+(ycode of \336rst k) 327.42 160.67 T
+(e) 393.6 160.67 T
+(y to get */) 398.32 160.67 T
+(unsigned int) 126 147.67 T
+1 F
+(num) 234 147.67 T
+2 F
+(;) 252.94 147.67 T
+(/* number of k) 306 147.67 T
+(e) 370.97 147.67 T
+(ycodes for which syms desired */) 375.68 147.67 T
+(XkbDescPtr) 126 134.67 T
+1 F
+(xkb) 234 134.67 T
+2 F
+(;) 249.27 134.67 T
+(/* Xkb description to be updated */) 306 134.67 T
+1 12 Q
+(XkbGetK) 108 115 T
+(e) 151.57 115 T
+(ySyms) 156.54 115 T
+2 F
+( sends a request to the server to obtain the set of keysyms bound to) 186.53 115 T
+1 F
+(num) 510.16 115 T
+2 F
+(keys starting with the key whose keycode is) 108 102 T
+1 F
+(first) 321.97 102 T
+2 F
+(. It waits for a reply and returns the key-) 341.32 102 T
+(syms in the) 108 89 T
+1 F
+(map.syms) 165.67 89 T
+2 F
+( field of) 212.66 89 T
+1 F
+(xkb) 253.66 89 T
+2 F
+(. If successful,) 270.31 89 T
+1 F
+(XkbGetK) 342.62 89 T
+(e) 386.2 89 T
+(ySyms) 391.16 89 T
+2 F
+( returns) 421.15 89 T
+5 F
+-0.6 (Success) 460.48 89 S
+2 F
+(. The) 506.68 89 T
+1 F
+(xkb) 108 76 T
+2 F
+( parameter must be a pointer to a valid Xkb keyboard description.) 124.66 76 T
+FMENDPAGE
+%%EndPage: "136" 148
+%%Page: "137" 149
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(137) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(If the client) 108 712 T
+1 F
+(map) 166.32 712 T
+2 F
+( in the) 186.98 712 T
+1 F
+(xkb) 219.98 712 T
+2 F
+( parameter has not been allocated,) 236.64 712 T
+1 F
+(XkbGetK) 402.92 712 T
+(e) 446.5 712 T
+(ySyms) 451.46 712 T
+2 F
+( allocates) 481.45 712 T
+(and initializes it before obtaining the symbols.) 108 699 T
+(If a compatible version of Xkb is not available in the server or the Xkb extension has not) 108 678 T
+(been properly initialized,) 108 665 T
+1 F
+(XkbGetK) 231.31 665 T
+(e) 274.88 665 T
+(ySyms) 279.85 665 T
+2 F
+( returns) 309.84 665 T
+5 F
+-0.6 (BadAccess) 349.16 665 S
+2 F
+(. If) 408.57 665 T
+1 F
+(num) 425.56 665 T
+2 F
+( is less than 1 or) 446.22 665 T
+(greater than) 108 652 T
+5 F
+-0.6 (XkbMaxKeyCount) 167.98 652 S
+2 F
+(,) 260.38 652 T
+1 F
+(XkbGetK) 266.38 652 T
+(e) 309.95 652 T
+(ySyms) 314.92 652 T
+2 F
+( returns) 344.91 652 T
+5 F
+-0.6 (BadValue) 384.23 652 S
+2 F
+(. If any allocation) 437.03 652 T
+(errors occur,) 108 639 T
+1 F
+(XkbGetK) 171.64 639 T
+(e) 215.21 639 T
+(ySyms) 220.18 639 T
+2 F
+( returns) 250.16 639 T
+5 F
+-0.6 (BadAlloc) 289.49 639 S
+2 F
+(.) 342.29 639 T
+0 F
+(15.3.6) 72 614 T
+(Changing the Number of Gr) 108 614 T
+(oups and T) 265.1 614 T
+(ypes Bound to a K) 328.39 614 T
+(e) 433.56 614 T
+(y) 440.05 614 T
+2 F
+(To change the number of groups and the types bound to a key, use) 108 594 T
+1 F
+(XkbChang) 429.61 594 T
+(eT) 480.16 594 T
+(ype-) 491.27 594 T
+(sOfK) 108 581 T
+(e) 132.25 581 T
+(y) 137.22 581 T
+2 F
+(.) 142.55 581 T
+(Status) 108 560 T
+3 11 Q
+(XkbChangeT) 140.34 560 T
+(ypesOfK) 203.1 560 T
+(ey) 244.38 560 T
+2 12 Q
+(\050) 254.76 560 T
+1 11 Q
+(xkb) 258.76 560 T
+2 12 Q
+(,) 274.03 560 T
+1 11 Q
+( k) 277.03 560 T
+(e) 284.55 560 T
+(y) 289.1 560 T
+2 12 Q
+(,) 293.99 560 T
+1 11 Q
+( n_gr) 296.99 560 T
+(oups) 320.02 560 T
+2 12 Q
+(,) 340.8 560 T
+1 11 Q
+( gr) 343.8 560 T
+(oups) 355.83 560 T
+2 12 Q
+(,) 376.61 560 T
+1 11 Q
+( ne) 379.61 560 T
+(w_types_in) 392.58 560 T
+2 12 Q
+(,) 442.08 560 T
+1 11 Q
+( p_c) 445.08 560 T
+(hang) 463.55 560 T
+(es) 485.44 560 T
+2 12 Q
+(\051) 494.61 560 T
+2 11 Q
+(XkbDescPtr) 126 539.67 T
+1 F
+(xkb) 234 539.67 T
+2 F
+(;) 249.27 539.67 T
+(/* k) 306 539.67 T
+(e) 322.7 539.67 T
+(yboard description to be changed */) 327.42 539.67 T
+(int) 126 526.67 T
+1 F
+(k) 234 526.67 T
+(e) 238.77 526.67 T
+(y) 243.33 526.67 T
+2 F
+(;) 248.21 526.67 T
+(/* k) 306 526.67 T
+(e) 322.7 526.67 T
+(ycode for k) 327.42 526.67 T
+(e) 377.4 526.67 T
+(y of interest */) 382.12 526.67 T
+(int) 126 513.67 T
+1 F
+(n_gr) 234 513.67 T
+(oups) 254.28 513.67 T
+2 F
+(;) 275.06 513.67 T
+(/* ne) 306 513.67 T
+(w number of groups for k) 327.42 513.67 T
+(e) 440.04 513.67 T
+(y */) 444.75 513.67 T
+(unsigned int) 126 500.67 T
+1 F
+(gr) 234 500.67 T
+(oups) 243.28 500.67 T
+2 F
+(;) 264.06 500.67 T
+(/* mask indicating groups to change */) 306 500.67 T
+(int *) 126 487.67 T
+1 F
+(ne) 234 487.67 T
+(w_types_in) 244.22 487.67 T
+2 F
+(;) 293.72 487.67 T
+(/* indices for ne) 306 487.67 T
+(w groups speci\336ed in) 376.91 487.67 T
+1 F
+(gr) 473.45 487.67 T
+(oups) 482.74 487.67 T
+2 F
+( */) 503.52 487.67 T
+(XkbMapChangesPtr) 126 474.67 T
+1 F
+(p_c) 234 474.67 T
+(hang) 249.72 474.67 T
+(es) 271.61 474.67 T
+2 F
+(;) 280.77 474.67 T
+(/* notes changes made to) 306 474.67 T
+1 F
+(xkb) 419.34 474.67 T
+2 F
+( */) 434.61 474.67 T
+1 12 Q
+-0.46 (XkbChang) 108 455 P
+-0.46 (eT) 158.54 455 P
+-0.46 (ypesOfK) 169.66 455 P
+-0.46 (e) 210.56 455 P
+-0.46 (y) 215.53 455 P
+2 F
+-0.46 ( reallocates the symbols and actions bound to the key, if necessary,) 220.86 455 P
+(and initializes any new symbols or actions to) 108 442 T
+5 F
+-0.6 (NoSymbol) 326.65 442 S
+2 F
+( or) 379.45 442 T
+5 F
+-0.6 (NoAction) 395.45 442 S
+2 F
+(, as appropriate. If) 448.25 442 T
+(the) 108 429 T
+1 F
+(p_changes) 125.66 429 T
+2 F
+( parameter is not) 176.99 429 T
+5 F
+-0.6 (NULL) 260.3 429 S
+2 F
+(,) 286.7 429 T
+1 F
+(XkbChang) 292.7 429 T
+(eT) 343.25 429 T
+(ypesOfK) 354.36 429 T
+(e) 395.27 429 T
+(y) 400.24 429 T
+2 F
+( adds the) 405.56 429 T
+5 F
+-0.6 (XkbKeySyms-) 451.22 429 S
+-0.6 (Mask) 108 416 S
+2 F
+( to the) 134.4 416 T
+1 F
+(changes) 167.4 416 T
+2 F
+( field of) 206.73 416 T
+1 F
+(p_changes) 247.72 416 T
+2 F
+( and modifies the) 299.04 416 T
+1 F
+(first_key_sym) 385.03 416 T
+2 F
+( and) 451.02 416 T
+1 F
+-0.45 (num_key_syms) 108 403 P
+2 F
+-0.45 ( fields of) 179.98 403 P
+1 F
+-0.45 (p_changes) 224.3 403 P
+2 F
+-0.45 ( to include the) 275.62 403 P
+1 F
+-0.45 (key) 345.17 403 P
+2 F
+-0.45 ( that was changed. See section 14.3.1) 361.15 403 P
+(for more information on the) 108 390 T
+5 F
+-0.6 (XkbMapChangesPtr) 244.98 390 S
+2 F
+( structure. If successful,) 350.58 390 T
+1 F
+(XkbChang) 467.88 390 T
+(e-) 518.43 390 T
+(T) 108 377 T
+(ypesOfK) 113.78 377 T
+(e) 154.69 377 T
+(y) 159.66 377 T
+2 F
+( returns) 164.99 377 T
+5 F
+-0.6 (Success) 204.31 377 S
+2 F
+(.) 250.51 377 T
+(The) 108 356 T
+1 F
+(n_groups) 129.66 356 T
+2 F
+( parameter specifies the new number of groups for the key. The) 175 356 T
+1 F
+(groups) 482.58 356 T
+2 F
+(parameter is a mask specifying the groups for which new types are supplied and is a bit-) 108 343 T
+(wise inclusive OR of the following masks:) 108 330 T
+5 F
+-0.6 (XkbGroup1Mask) 315.66 330 S
+2 F
+(,) 401.46 330 T
+5 F
+-0.6 (XkbGroup2Mask) 407.46 330 S
+2 F
+(,) 493.26 330 T
+5 F
+-0.6 (XkbGroup3Mask) 108 317 S
+2 F
+(, and) 193.8 317 T
+5 F
+-0.6 (XkbGroup4Mask) 220.13 317 S
+2 F
+(.) 305.93 317 T
+-0.15 (The) 108 296 P
+1 F
+-0.15 (new_types_in) 129.51 296 P
+2 F
+-0.15 ( parameter is an integer array of length) 194.84 296 P
+1 F
+-0.15 (n_groups) 382.95 296 P
+2 F
+-0.15 (. Each entry represents) 428.29 296 P
+(the type to use for the associated group and is an index into) 108 283 T
+1 F
+(xkb) 395.63 283 T
+2 F
+(->) 412.28 283 T
+1 F
+(map->types) 423.05 283 T
+2 F
+(. The) 480.47 283 T
+1 F
+(ne) 108 270 T
+(w_types_in) 119.15 270 T
+2 F
+( array is indexed by group index; if) 173.15 270 T
+1 F
+(n_gr) 345.12 270 T
+(oups) 367.25 270 T
+2 F
+( is four and) 389.92 270 T
+1 F
+(gr) 447.24 270 T
+(oups) 457.37 270 T
+2 F
+( only has) 480.04 270 T
+5 F
+-0.6 (Group1Mask) 108 257 S
+2 F
+( and) 174 257 T
+5 F
+-0.6 (Group3Mask) 197.33 257 S
+2 F
+( set,) 263.33 257 T
+1 F
+(ne) 285.66 257 T
+(w_types_in) 296.81 257 T
+2 F
+( looks like this:) 350.81 257 T
+(new_types_in[0] = type for Group1) 126 236 T
+(new_types_in[1] = ignored) 126 223 T
+(new_types_in[2] = type for Group3) 126 210 T
+(new_types_in[3] = ignored) 126 197 T
+(For convenience, Xkb provides the following constants to use as indices to the groups:) 108 176 T
+3 F
+(T) 241.52 156 T
+(able 15.3 Gr) 248.42 156 T
+(oup Index Constants) 314.21 156 T
+1 F
+(Constant Name) 253 136 T
+(V) 361 136 T
+(alue) 367 136 T
+2 11 Q
+(XkbGroup1Inde) 253 121.67 T
+(x) 324.93 121.67 T
+(0) 361 121.67 T
+(XkbGroup2Inde) 253 107.67 T
+(x) 324.93 107.67 T
+(1) 361 107.67 T
+(XkbGroup3Inde) 253 93.67 T
+(x) 324.93 93.67 T
+(2) 361 93.67 T
+(XkbGroup4Inde) 253 79.67 T
+(x) 324.93 79.67 T
+(3) 361 79.67 T
+252 148 396 148 2 L
+V
+0.5 H
+0 Z
+N
+252 131 396 131 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "137" 149
+%%Page: "138" 150
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(138) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(If the Xkb extension has not been properly initialized,) 108 712 T
+1 F
+(XkbChang) 369.96 712 T
+(eT) 420.5 712 T
+(ypesOfK) 431.62 712 T
+(e) 472.52 712 T
+(y) 477.49 712 T
+2 F
+( returns) 482.82 712 T
+5 F
+-0.6 (BadAccess) 108 699 S
+2 F
+(. If the) 167.4 699 T
+1 F
+(xkb) 202.06 699 T
+2 F
+( parameter it not valid \050that is, it is) 218.71 699 T
+5 F
+-0.6 (NULL) 387.37 699 S
+2 F
+( or it does not contain a) 413.77 699 T
+(valid client map\051,) 108 686 T
+1 F
+(XkbChang) 195.32 686 T
+(eT) 245.87 686 T
+(ypesOfK) 256.98 686 T
+(e) 297.89 686 T
+(y) 302.86 686 T
+2 F
+( returns) 308.18 686 T
+5 F
+-0.6 (Bad) 347.51 686 S
+2 F
+(Match. If the) 367.31 686 T
+1 F
+(key) 432.62 686 T
+2 F
+( is not a valid key-) 448.61 686 T
+(code,) 108 673 T
+1 F
+(n_groups) 136.66 673 T
+2 F
+( is greater than) 181.99 673 T
+5 F
+-0.6 (XkbNumKbdGroups) 255.97 673 S
+2 F
+(, or the) 354.97 673 T
+1 F
+(groups) 391.63 673 T
+2 F
+( mask does not contain) 424.97 673 T
+-0.15 (any of the valid group mask bits,) 108 660 P
+1 F
+-0.15 (XkbChang) 267.6 660 P
+-0.15 (eT) 318.15 660 P
+-0.15 (ypesOfK) 329.26 660 P
+-0.15 (e) 370.17 660 P
+-0.15 (y) 375.13 660 P
+2 F
+-0.15 ( returns) 380.46 660 P
+5 F
+-0.33 -0.6 (BadValue) 419.48 660 B
+2 F
+-0.15 (. If it is neces-) 472.29 660 P
+(sary to resize the key symbols or key actions arrays and any allocation errors occur,) 108 647 T
+1 F
+(XkbChang) 108 634 T
+(eT) 158.54 634 T
+(ypesOfK) 169.66 634 T
+(e) 210.56 634 T
+(y) 215.53 634 T
+2 F
+( returns) 220.86 634 T
+5 F
+-0.6 (BadAlloc) 260.18 634 S
+2 F
+(.) 312.98 634 T
+0 F
+(15.3.7) 72 609 T
+(Changing the Number of Symbols Bound to a K) 108 609 T
+(e) 379.18 609 T
+(y) 385.67 609 T
+2 F
+(To change the number of symbols bound to a key, use) 108 589 T
+1 F
+(XkbResizeKeySyms) 370.63 589 T
+2 F
+(.) 463.27 589 T
+2 11 Q
+(K) 108 568.67 T
+(e) 115.67 568.67 T
+(ySym *) 120.39 568.67 T
+3 F
+(XkbResizeK) 154.31 568.67 T
+(eySyms) 212.7 568.67 T
+2 F
+(\050) 248.14 568.67 T
+1 F
+(xkb) 251.8 568.67 T
+2 F
+(,) 267.07 568.67 T
+1 F
+( k) 269.82 568.67 T
+(e) 277.35 568.67 T
+(y) 281.9 568.67 T
+2 F
+(,) 286.07 568.67 T
+1 F
+( needed) 288.82 568.67 T
+2 F
+(\051) 322.72 568.67 T
+(XkbDescRec *) 126 555.67 T
+1 F
+(xkb) 234 555.67 T
+2 F
+(;) 249.27 555.67 T
+(/* k) 306 555.67 T
+(e) 322.7 555.67 T
+(yboard description to be changed */) 327.42 555.67 T
+(int) 126 542.67 T
+1 F
+(k) 234 542.67 T
+(e) 238.77 542.67 T
+(y) 243.33 542.67 T
+2 F
+(;) 248.21 542.67 T
+(/* k) 306 542.67 T
+(e) 322.7 542.67 T
+(ycode for k) 327.42 542.67 T
+(e) 377.4 542.67 T
+(y to modify */) 382.12 542.67 T
+(int) 126 529.67 T
+1 F
+(needed) 234 529.67 T
+2 F
+(;) 265.15 529.67 T
+(/* ne) 306 529.67 T
+(w number of k) 327.42 529.67 T
+(e) 391.77 529.67 T
+(ysyms required for k) 396.49 529.67 T
+(e) 487.72 529.67 T
+(y */) 492.44 529.67 T
+1 12 Q
+-0.21 (XkbResizeK) 108 510 P
+-0.21 (e) 164.9 510 P
+-0.21 (ySyms) 169.87 510 P
+2 F
+-0.21 ( reserves the space needed for) 199.86 510 P
+1 F
+-0.21 (needed) 345.19 510 P
+2 F
+-0.21 ( keysyms and returns a pointer to) 379.17 510 P
+(the beginning of the new array that holds the keysyms. It adjusts the) 108 497 T
+1 F
+(offset) 437.96 497 T
+2 F
+( field of the) 463.97 497 T
+1 F
+-0.24 (key_sym_map) 108 484 P
+2 F
+-0.24 ( entry for the key if necessary and can also change the) 175.31 484 P
+1 F
+-0.24 (syms) 435.06 484 P
+2 F
+-0.24 (,) 458.39 484 P
+1 F
+-0.24 (num_syms) 464.15 484 P
+2 F
+-0.24 (, and) 514.14 484 P
+1 F
+-0.14 (size_syms) 108 471 P
+2 F
+-0.14 ( fields of) 155.33 471 P
+1 F
+-0.14 (xkb) 200.56 471 P
+2 F
+-0.14 (-) 217.21 471 P
+1 F
+-0.14 (>map) 221.21 471 P
+2 F
+-0.14 ( if it is necessary to reallocate the) 249.97 471 P
+1 F
+-0.14 (syms) 412.12 471 P
+2 F
+-0.14 ( array.) 435.44 471 P
+1 F
+-0.14 (XkbResizeK) 468.8 471 P
+-0.14 (e) 525.71 471 P
+-0.14 (y-) 530.68 471 P
+(Syms) 108 458 T
+2 F
+( does not modify either the width or number of groups associated with the key.) 132.66 458 T
+(If) 108 437 T
+1 F
+(needed) 118.99 437 T
+2 F
+( is greater than the current number of keysyms for the key,) 152.98 437 T
+1 F
+(XkbResizeK) 437.24 437 T
+(e) 494.15 437 T
+(ySyms) 499.12 437 T
+2 F
+(initializes all new keysyms in the array to) 108 424 T
+5 F
+-0.6 (NoSymbol) 310.64 424 S
+2 F
+(.) 363.45 424 T
+-0.29 (Because the number of symbols needed by a key is normally computed as width * number) 108 403 P
+(of groups, and) 108 390 T
+1 F
+(XkbResizeK) 179.99 390 T
+(e) 236.89 390 T
+(ySyms) 241.86 390 T
+2 F
+( does not modify either the width or number of groups) 271.85 390 T
+(for the key, a discrepancy exists upon return from) 108 377 T
+1 F
+(XkbResizeK) 349.94 377 T
+(e) 406.85 377 T
+(ySyms) 411.82 377 T
+2 F
+( between the space) 441.8 377 T
+(allocated for the keysyms and the number required. The unused entries in the list of sym-) 108 364 T
+-0.41 (bols returned by) 108 351 P
+1 F
+-0.41 (XkbResizeK) 187.77 351 P
+-0.41 (e) 244.67 351 P
+-0.41 (ySyms) 249.64 351 P
+2 F
+-0.41 ( are not preserved across future calls to any of the map) 279.63 351 P
+(editing functions, so you must update the key symbol mapping \050which updates the width) 108 338 T
+(and number of groups for the key\051 before calling another allocator function. A call to) 108 325 T
+1 F
+(XkbChang) 108 312 T
+(eT) 158.54 312 T
+(ypesOfK) 169.66 312 T
+(e) 210.56 312 T
+(y) 215.53 312 T
+2 F
+( will update the mapping.) 220.86 312 T
+(If any allocation errors occur while resizing the number of symbols bound to the key,) 108 291 T
+1 F
+(XkbResizeK) 108 278 T
+(e) 164.9 278 T
+(ySyms) 169.87 278 T
+2 F
+( returns) 199.86 278 T
+5 F
+-0.6 (NULL) 239.18 278 S
+2 F
+(.) 265.58 278 T
+0 F
+(Note) 126 257.67 T
+2 11 Q
+(A change to the number of symbols bound to a k) 162 257.67 T
+(e) 376.37 257.67 T
+(y should be accompanied by a) 381.09 257.67 T
+(change in the number of actions bound to a k) 162 245.67 T
+(e) 360.17 245.67 T
+(y) 364.88 245.67 T
+(. Refer to section 16.1.16 for more) 369.67 245.67 T
+(information on changing the number of actions bound to a k) 162 233.67 T
+(e) 426.47 233.67 T
+(y) 431.19 233.67 T
+(.) 435.98 233.67 T
+0 12 Q
+(15.4) 72 209 T
+(The P) 108 209 T
+(er) 140.32 209 T
+(-K) 151.42 209 T
+(e) 163.9 209 T
+(y Modi\336er Map) 170.39 209 T
+2 F
+(The) 108 189 T
+1 F
+(modmap) 129.66 189 T
+2 F
+( entry of the client map is an array, indexed by keycode, specifying the real) 170.99 189 T
+-0.2 (modifiers bound to a key. Each entry is a mask composed of a bitwise inclusive OR of the) 108 176 P
+(legal real modifiers:) 108 163 T
+5 F
+-0.6 (ShiftMask) 207.65 163 S
+2 F
+(,) 267.05 163 T
+5 F
+-0.6 (LockMask) 273.05 163 S
+2 F
+(,) 325.85 163 T
+5 F
+-0.6 (ControlMask) 331.85 163 S
+2 F
+(,) 404.45 163 T
+5 F
+-0.6 (Mod1Mask) 410.45 163 S
+2 F
+(,) 463.25 163 T
+5 F
+-0.6 (Mod2Mask) 469.25 163 S
+2 F
+(,) 522.05 163 T
+5 F
+-0.6 (Mod3Mask) 108 150 S
+2 F
+(,) 160.8 150 T
+5 F
+-0.6 (Mod4Mask) 166.8 150 S
+2 F
+(, and) 219.6 150 T
+5 F
+-0.6 (Mod5Mask) 245.93 150 S
+2 F
+(. If a bit is set in a) 298.73 150 T
+1 F
+(modmap) 387.72 150 T
+2 F
+( entry, the correspond-) 429.05 150 T
+(ing key is bound to that modifier.) 108 137 T
+-0.22 (Pressing or releasing the key bound to a modifier changes the modifier set and unset state.) 108 116 P
+(The particular manner in which the modifier set and unset state changes is determined by) 108 103 T
+(the behavior and actions assigned to the key \050see Chapter 16\051.) 108 90 T
+FMENDPAGE
+%%EndPage: "138" 150
+%%Page: "139" 151
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(139) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(15 Xkb Client K) 384.01 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(15.4.1) 72 712 T
+(Getting the P) 108 712 T
+(er) 182.32 712 T
+(-K) 193.42 712 T
+(e) 205.9 712 T
+(y Modi\336er Map fr) 212.39 712 T
+(om the Ser) 308.16 712 T
+(ver) 370.3 712 T
+2 F
+(To update the modifier map for one or more of the keys in a keyboard description, use) 108 692 T
+1 F
+(XkbGetKeyModifierMap) 108 679 T
+2 F
+(.) 226.64 679 T
+2 11 Q
+(Status) 108 658.67 T
+3 F
+(XkbGetK) 137.65 658.67 T
+(eyModi\336erMap) 183.21 658.67 T
+2 F
+(\050) 256.53 658.67 T
+1 F
+(dpy) 260.2 658.67 T
+2 F
+(,) 275.36 658.67 T
+1 F
+( \336r) 278.11 658.67 T
+(st) 290.53 658.67 T
+2 F
+(,) 297.87 658.67 T
+1 F
+( num) 300.62 658.67 T
+2 F
+(,) 322.31 658.67 T
+1 F
+( xkb) 325.06 658.67 T
+2 F
+(\051) 343.08 658.67 T
+(Display *) 126 645.67 T
+1 F
+(dpy) 234 645.67 T
+2 F
+(;) 249.88 645.67 T
+(/* connection to X serv) 306 645.67 T
+(er */) 408.49 645.67 T
+(unsigned int) 126 632.67 T
+1 F
+(\336r) 234 632.67 T
+(st) 243.67 632.67 T
+2 F
+(;) 251.01 632.67 T
+(/* k) 306 632.67 T
+(e) 322.7 632.67 T
+(ycode of \336rst k) 327.42 632.67 T
+(e) 393.6 632.67 T
+(y to get */) 398.32 632.67 T
+(unsigned int) 126 619.67 T
+1 F
+(num) 234 619.67 T
+2 F
+(;) 252.94 619.67 T
+-0.14 (/* number of k) 306 619.67 P
+-0.14 (e) 370.54 619.67 P
+-0.14 (ys for which information is desired */) 375.26 619.67 P
+(XkbDescPtr) 126 606.67 T
+1 F
+(xkb) 234 606.67 T
+2 F
+(;) 249.27 606.67 T
+(/* k) 306 606.67 T
+(e) 322.7 606.67 T
+(yboard description to update */) 327.42 606.67 T
+1 12 Q
+(XkbGetK) 108 587 T
+(e) 151.57 587 T
+(yModi\336erMap) 156.54 587 T
+2 F
+( sends a request to the server for the modifier mappings for) 225.19 587 T
+1 F
+(num) 511.8 587 T
+2 F
+-0.19 (keys starting with the key whose keycode is) 108 574 P
+1 F
+-0.19 (\336r) 320.42 574 P
+-0.19 (st) 330.97 574 P
+2 F
+-0.19 (. It waits for a reply and places the results) 338.98 574 P
+(in the) 108 561 T
+1 F
+(xkb) 138 561 T
+2 F
+(->map->modmap array. If successful,) 154.66 561 T
+1 F
+(XkbGetK) 338.81 561 T
+(e) 382.38 561 T
+(yModi\336er) 387.35 561 T
+2 F
+( returns) 434 561 T
+5 F
+-0.6 (Success) 473.33 561 S
+2 F
+(.) 519.53 561 T
+(If the map component of the) 108 540 T
+1 F
+(xkb) 247.31 540 T
+2 F
+( parameter has not been allocated,) 263.96 540 T
+1 F
+(XkbGetK) 430.25 540 T
+(e) 473.82 540 T
+(yModi\336er-) 478.79 540 T
+(Map) 108 527 T
+2 F
+( allocates and initializes it.) 130 527 T
+(If a compatible version of Xkb is not available in the server or the Xkb extension has not) 108 506 T
+(been properly initialized,) 108 493 T
+1 F
+(XkbGetK) 231.31 493 T
+(e) 274.88 493 T
+(ySyms) 279.85 493 T
+2 F
+( returns) 309.84 493 T
+5 F
+-0.6 (BadAccess) 349.16 493 S
+2 F
+(. If any allocation errors) 408.57 493 T
+(occur while obtaining the modifier map,) 108 480 T
+1 F
+(XkbGetK) 304.31 480 T
+(e) 347.88 480 T
+(yModi\336erMap) 352.85 480 T
+2 F
+( returns) 421.5 480 T
+5 F
+-0.6 (BadAlloc) 460.82 480 S
+2 F
+(.) 513.62 480 T
+FMENDPAGE
+%%EndPage: "139" 151
+%%Page: "140" 152
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(140) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 14 Q
+(16) 72 710.67 T
+(Xkb Ser) 108 710.67 T
+(ver K) 160.28 710.67 T
+(e) 195.08 710.67 T
+(yboar) 202.65 710.67 T
+(d Mapping) 240.5 710.67 T
+2 12 Q
+-0.18 (The) 108 688 P
+1 F
+-0.18 (server) 129.48 688 P
+2 F
+-0.18 ( field of the complete Xkb keyboard description \050see section 6.1\051 is a pointer to) 159.47 688 P
+(the Xkb server map.) 108 675 T
+(Figure 16.1 shows the relationships between elements in the server map:) 108 654 T
+3 F
+(Figur) 215.94 263 T
+(e 16.1 Ser) 244.39 263 T
+(v) 293.93 263 T
+(er Map Relationships) 299.81 263 T
+2 F
+-0.02 (The Xkb server map contains the information the server needs to interpret key events and) 108 235 P
+(is of type) 108 222 T
+5 F
+-0.6 (XkbServerMapRec) 155.66 222 S
+2 F
+(:) 254.67 222 T
+2 11 Q
+(#de\336ne XkbNumV) 126 196.67 T
+(irtualMods) 209.36 196.67 T
+(16) 306 196.67 T
+(typedef struct {) 126 176.67 T
+(/* Serv) 306 176.67 T
+(er Map */) 337.31 176.67 T
+(unsigned short) 144 163.67 T
+(num_acts;) 234 163.67 T
+(/* # of occupied entries in) 306 163.67 T
+1 F
+(acts) 423.32 163.67 T
+2 F
+( */) 441.04 163.67 T
+(unsigned short) 144 150.67 T
+(size_acts;) 234 150.67 T
+(/* # of entries in) 306 150.67 T
+1 F
+(acts) 380.86 150.67 T
+2 F
+( */) 398.58 150.67 T
+(XkbAction *) 144 137.67 T
+(acts;) 234 137.67 T
+(/* linear 2d tables of k) 306 137.67 T
+(e) 404.57 137.67 T
+(y actions, 1 per k) 409.29 137.67 T
+(e) 484.64 137.67 T
+(ycode */) 489.36 137.67 T
+(XkbBeha) 144 124.67 T
+(vior *) 185.33 124.67 T
+(beha) 234 124.67 T
+(viors;) 254.55 124.67 T
+(/* k) 306 124.67 T
+(e) 322.7 124.67 T
+(y beha) 327.42 124.67 T
+(viors,1 per k) 356.21 124.67 T
+(e) 411.4 124.67 T
+(ycode */) 416.12 124.67 T
+(unsigned short *) 144 111.67 T
+(k) 234 111.67 T
+(e) 239.39 111.67 T
+(y_acts;) 244.11 111.67 T
+(/* inde) 306 111.67 T
+(x into) 336.08 111.67 T
+1 F
+(acts) 364.2 111.67 T
+2 F
+(, 1 per k) 381.92 111.67 T
+(e) 417.86 111.67 T
+(ycode */) 422.58 111.67 T
+(unsigned char *) 144 98.67 T
+(e) 234 98.67 T
+(xplicit;) 238.72 98.67 T
+(/* e) 306 98.67 T
+(xplicit o) 322.03 98.67 T
+(v) 358.23 98.67 T
+(errides of core remapping, 1 per k) 363.56 98.67 T
+(e) 512.82 98.67 T
+(y */) 517.54 98.67 T
+(unsigned char) 144 85.67 T
+(vmods[XkbNumV) 234 85.67 T
+(irtualMods];) 315.22 85.67 T
+(/* real mods bound to virtual mods */) 373.5 85.67 T
+63.37 284 548.63 650 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+86.75 483.08 167.75 627.5 R
+0.5 H
+0 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+86.75 454.08 167.75 472.08 R
+7 X
+V
+2 10 Q
+0 X
+(XkbServerMapRec) 88.65 465.41 T
+86.75 555.08 167.75 555.08 2 L
+7 X
+V
+0 X
+N
+86.75 537.08 167.75 537.08 2 L
+7 X
+V
+0 X
+N
+86.75 519.08 167.75 519.08 2 L
+7 X
+V
+0 X
+N
+86.75 501.08 167.75 501.08 2 L
+7 X
+V
+0 X
+N
+(key_acts) 104.36 543.08 T
+(explicit) 104.36 526.08 T
+(vmods[16]) 104.36 508.08 T
+(vmodmap) 104.36 490.08 T
+86.5 591.83 167.5 591.83 2 L
+7 X
+V
+0 X
+N
+86.75 573.83 167.75 573.83 2 L
+7 X
+V
+0 X
+N
+86.75 609.83 167.75 609.83 2 L
+7 X
+V
+0 X
+N
+(size_acts) 104.36 597.83 T
+(acts) 104.36 579.83 T
+393.72 583.58 393.72 586.55 404.1 583.58 393.72 580.6 4 Y
+N
+393.72 583.58 393.72 586.55 404.1 583.58 393.72 580.6 4 Y
+V
+168.88 583.58 393.47 583.58 2 L
+7 X
+V
+0 X
+N
+(beha) 104.21 563.27 T
+(viors) 122.89 563.27 T
+(num_acts) 104.08 615.14 T
+254.75 403.83 335.75 421.83 R
+7 X
+V
+0 X
+N
+250.75 400.08 331.75 418.08 R
+7 X
+V
+0 X
+N
+246.5 396.58 327.5 414.58 R
+7 X
+V
+0 X
+N
+241.5 360.08 327.75 384.08 R
+7 X
+V
+0 X
+(unsigned char\050s\051) 251.44 377.41 T
+(\050array\051) 271.02 367.41 T
+242.5 392.83 323.5 410.83 R
+7 X
+V
+0 X
+N
+228.72 401.75 228.72 404.72 239.09 401.75 228.72 398.77 4 Y
+N
+228.72 401.75 228.72 404.72 239.09 401.75 228.72 398.77 4 Y
+V
+168 527.75 209.25 527.75 209.25 401.75 228.47 401.75 4 L
+N
+227.97 488.42 227.97 491.39 238.34 488.42 227.97 485.44 4 Y
+N
+227.97 488.42 227.97 491.39 238.34 488.42 227.97 485.44 4 Y
+V
+168.75 545.75 220.5 545.75 220.5 488.42 227.72 488.42 4 L
+N
+(KeyCode) 101.11 382.33 T
+235.47 413.75 235.47 416.73 245.84 413.75 235.47 410.77 4 Y
+8 X
+N
+235.47 413.75 235.47 416.73 245.84 413.75 235.47 410.77 4 Y
+V
+183.75 413.75 235.22 413.75 2 L
+N
+235.47 570.5 235.47 573.47 245.84 570.5 235.47 567.52 4 Y
+N
+235.47 570.5 235.47 573.47 245.84 570.5 235.47 567.52 4 Y
+V
+183 500 183 570.5 235.22 570.5 3 L
+N
+255.12 487.75 336.12 505.75 R
+7 X
+V
+0 X
+N
+251.12 484 332.12 502 R
+7 X
+V
+0 X
+N
+246.87 480.5 327.87 498.5 R
+7 X
+V
+0 X
+N
+241.87 444 328.12 468 R
+7 X
+V
+0 X
+(unsigned short\050s\051) 250.42 461.33 T
+(\050array\051) 271.4 451.33 T
+242.87 476.75 323.87 494.75 R
+7 X
+V
+0 X
+N
+403.47 595.25 403.47 598.22 413.85 595.25 403.47 592.27 4 Y
+8 X
+N
+403.47 595.25 403.47 598.22 413.85 595.25 403.47 592.27 4 Y
+V
+333 493.25 373.88 493.25 373.88 595.25 403.22 595.25 4 L
+N
+257.62 559.5 338.62 577.5 R
+7 X
+V
+0 X
+N
+253.62 555.75 334.62 573.75 R
+7 X
+V
+0 X
+N
+249.37 552.25 330.37 570.25 R
+7 X
+V
+0 X
+N
+241.37 515.75 339.62 539.75 R
+7 X
+V
+0 X
+(XkbBehaviors\050s\051) 256.34 533.08 T
+(\050array\051) 276.9 523.08 T
+245.37 548.5 326.37 566.5 R
+7 X
+V
+0 X
+N
+232.47 563.83 232.47 566.8 242.84 563.83 232.47 560.85 4 Y
+N
+232.47 563.83 232.47 566.8 242.84 563.83 232.47 560.85 4 Y
+V
+168.88 563.83 232.22 563.83 2 L
+7 X
+V
+0 X
+N
+256 326.08 337 344.08 R
+7 X
+V
+0 X
+N
+252 322.33 333 340.33 R
+7 X
+V
+0 X
+N
+247.75 318.83 328.75 336.83 R
+7 X
+V
+0 X
+N
+242.75 282.33 329 306.33 R
+7 X
+V
+0 X
+(unsigned short\050s\051) 251.29 299.66 T
+(\050array\051) 272.27 289.66 T
+243.75 315.08 324.75 333.08 R
+7 X
+V
+0 X
+N
+423.25 583.33 504.25 601.33 R
+7 X
+V
+0 X
+N
+419.25 579.58 500.25 597.58 R
+7 X
+V
+0 X
+N
+415 576.08 496 594.08 R
+7 X
+V
+0 X
+N
+410 539.58 496.25 563.58 R
+7 X
+V
+0 X
+(XkbActions\050s\051) 423.69 556.91 T
+(\050array\051) 439.53 546.91 T
+411 572.33 492 590.33 R
+7 X
+V
+0 X
+N
+231.47 499.5 231.47 502.48 241.84 499.5 231.47 496.52 4 Y
+8 X
+N
+231.47 499.5 231.47 502.48 241.84 499.5 231.47 496.52 4 Y
+V
+146 384.75 183 385.25 183 499.5 231.22 499.5 4 L
+N
+229.22 324.75 229.22 327.72 239.6 324.75 229.22 321.77 4 Y
+0 X
+N
+229.22 324.75 229.22 327.72 239.6 324.75 229.22 321.77 4 Y
+V
+168.5 492.75 196.5 492.75 196.5 324.75 228.97 324.75 4 L
+N
+235.22 336 235.22 338.97 245.59 336 235.22 333.02 4 Y
+8 X
+N
+235.22 336 235.22 338.97 245.59 336 235.22 333.02 4 Y
+V
+182.75 385.5 182.75 336 234.97 336 3 L
+N
+236 570.8 236.08 573.52 245.47 570.53 235.92 568.09 4 Y
+0 X
+N
+236 570.8 236.08 573.52 245.47 570.53 235.92 568.09 4 Y
+V
+233.63 570.87 235.75 570.81 2 L
+N
+232.5 499.93 232.58 502.64 241.97 499.65 232.42 497.21 4 Y
+N
+232.5 499.93 232.58 502.64 241.97 499.65 232.42 497.21 4 Y
+V
+230.13 500 232.25 499.94 2 L
+N
+404 595.43 404.08 598.15 413.47 595.15 403.92 592.71 4 Y
+N
+404 595.43 404.08 598.15 413.47 595.15 403.92 592.71 4 Y
+V
+401.63 595.5 403.75 595.44 2 L
+N
+235.59 413.62 235.59 416.6 245.97 413.62 235.59 410.65 4 Y
+N
+235.59 413.62 235.59 416.6 245.97 413.62 235.59 410.65 4 Y
+V
+232.5 413.62 235.34 413.62 2 L
+N
+235.65 336.12 235.65 339.05 245.84 336.12 235.65 333.2 4 Y
+N
+235.65 336.12 235.65 339.05 245.84 336.12 235.65 333.2 4 Y
+V
+233.13 336.12 235.4 336.12 2 L
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "140" 152
+%%Page: "141" 153
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(141) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(unsigned short *) 144 712.67 T
+(vmodmap;) 234 712.67 T
+(/* virtual mods bound to k) 306 712.67 T
+(e) 422.31 712.67 T
+(y) 427.03 712.67 T
+(, 1 per k) 431.82 712.67 T
+(e) 467.76 712.67 T
+(ycode*/) 472.47 712.67 T
+(}) 126 699.67 T
+3 F
+(XkbSer) 134.03 699.67 T
+(v) 169.98 699.67 T
+(erMapRec) 175.37 699.67 T
+2 F
+(, *XkbServ) 224.85 699.67 T
+(erMapPtr;) 274.79 699.67 T
+2 12 Q
+(The) 108 680 T
+1 F
+(num_acts) 129.66 680 T
+2 F
+(,) 175.66 680 T
+1 F
+(size_acts) 181.66 680 T
+2 F
+(,) 224.99 680 T
+1 F
+(acts) 230.99 680 T
+2 F
+(, and) 250.32 680 T
+1 F
+(key_acts) 276.65 680 T
+2 F
+( fields specify the key actions, defined in sec-) 317.96 680 T
+-0.37 (tion 16.1. The) 108 667 P
+1 F
+-0.37 (behaviors) 177.22 667 P
+2 F
+-0.37 ( field describes the behavior for each key and is defined in section) 224.55 667 P
+(16.2. The) 108 654 T
+1 F
+(explicit) 156.66 654 T
+2 F
+( field describes the explicit components for a key and is defined in sec-) 191.99 654 T
+(tion 16.3. The) 108 641 T
+1 F
+(vmods) 178.33 641 T
+2 F
+( and the) 208.99 641 T
+1 F
+(vmodmap) 249.98 641 T
+2 F
+( fields describe the virtual modifiers and the) 296.64 641 T
+(per-key virtual modifier mapping and are defined in section 16.4.) 108 628 T
+0 F
+(16.1) 72 603 T
+(K) 108 603 T
+(e) 116.48 603 T
+(y Actions) 122.98 603 T
+2 F
+(A key action defines the effect key presses and releases have on the internal state of the) 108 583 T
+(server. For example, the expected key action associated with pressing the) 108 570 T
+4 11 Q
+(Shift) 462.92 570 T
+2 12 Q
+( key is to) 484.93 570 T
+(set the) 108 557 T
+5 F
+-0.6 (Shift) 142 557 S
+2 F
+( modifier. There is zero or one key action associated with each keysym) 175 557 T
+(bound to each key.) 108 544 T
+-0.05 (Just as the entire list of key symbols for the keyboard mapping is held in the) 108 523 P
+1 F
+-0.05 (syms) 475.83 523 P
+2 F
+-0.05 ( field of) 499.16 523 P
+(the client map, the entire list of key actions for the keyboard mapping is held in the) 108 510 T
+1 F
+(acts) 509.95 510 T
+2 F
+-0.03 (array of the server map. The total size of) 108 497 P
+1 F
+-0.03 (acts) 305.65 497 P
+2 F
+-0.03 ( is specified by) 324.98 497 P
+1 F
+-0.03 (size_acts) 400.18 497 P
+2 F
+-0.03 (, and the number of) 443.51 497 P
+(entries is specified by) 108 484 T
+1 F
+(num_acts) 215.32 484 T
+2 F
+(.) 261.31 484 T
+(The) 108 463 T
+1 F
+(key_acts) 129.66 463 T
+2 F
+( array, indexed by keycode, describes the actions associated with a key. The) 170.98 463 T
+1 F
+-0.14 (key_acts) 108 450 P
+2 F
+-0.14 ( array has) 149.32 450 P
+1 F
+-0.14 (min_key_code) 198.55 450 P
+2 F
+-0.14 ( unused entries at the start to allow direct indexing using) 267.19 450 P
+(a keycode. If a) 108 437 T
+1 F
+(key_acts) 181.63 437 T
+2 F
+( entry is) 222.95 437 T
+5 F
+-0.6 (zero) 264.61 437 S
+2 F
+(, it means the key does not have any actions associ-) 291.01 437 T
+-0.05 (ated with it. If an entry is not) 108 424 P
+5 F
+-0.11 -0.6 (zero) 249.92 424 B
+2 F
+-0.05 (, the entry represents an index into the) 276.32 424 P
+1 F
+-0.05 (acts) 462.21 424 P
+2 F
+-0.05 ( field of the) 481.55 424 P
+(server map, much as the) 108 411 T
+1 F
+(offset) 227.3 411 T
+2 F
+( field of a) 253.31 411 T
+5 F
+-0.6 (KeySymMapRec) 302.63 411 S
+2 F
+( structure is an index into the) 381.83 411 T
+1 F
+(syms) 108 398 T
+2 F
+( field of the client map.) 131.33 398 T
+-0.17 (The reason the) 108 377 P
+1 F
+-0.17 (acts) 181.14 377 P
+2 F
+-0.17 ( field is a linear list of) 200.47 377 P
+5 F
+-0.37 -0.6 (XkbAction) 307.63 377 B
+2 F
+-0.17 (s is to reduce the memory consump-) 367.03 377 P
+-0.12 (tion associated with a keymap. Because Xkb allows individual keys to have multiple shift) 108 364 P
+(levels and a different number of groups per key, a single two-dimensional array of) 108 351 T
+5 F
+-0.6 (Key-) 506.24 351 S
+-0.6 (Syms) 108 338 S
+2 F
+( would potentially be very large and sparse. Instead, Xkb provides a small) 134.4 338 T
+(two-dimensional array of) 108 325 T
+5 F
+-0.6 (XkbAction) 232.31 325 S
+2 F
+(s for each key. To store all of these individual) 291.71 325 T
+(arrays, Xkb concatenates each array together in the) 108 312 T
+1 F
+(acts) 356.24 312 T
+2 F
+( field of the server map.) 375.58 312 T
+-0.19 (The key action structures consist only of fields of type char or unsigned char. This is done) 108 291 P
+(to optimize data transfer when the server sends bytes over the wire. If the fields are any-) 108 278 T
+(thing but bytes, the server has to sift through all of the actions and swap any nonbyte) 108 265 T
+(fields. Because they consist of nothing but bytes, it can just copy them out.) 108 252 T
+(Xkb provides the following macros, to simplify accessing information pertaining to key) 108 231 T
+(actions:) 108 218 T
+2 11 Q
+(Bool) 108 197.67 T
+3 F
+(XkbK) 132.15 197.67 T
+(eyHasActions) 160.6 197.67 T
+2 F
+(\050) 224.76 197.67 T
+1 F
+(xkb, k) 228.43 197.67 T
+(e) 253.97 197.67 T
+(ycode) 258.52 197.67 T
+2 F
+(\051) 284.18 197.67 T
+(/* macro */) 342 197.67 T
+(XkbDescPtr) 126 184.67 T
+1 F
+(xkb) 234 184.67 T
+2 F
+(;) 249.27 184.67 T
+(/* Xkb description of interest */) 342 184.67 T
+(K) 126 171.67 T
+(e) 133.67 171.67 T
+(yCode) 138.39 171.67 T
+1 F
+(k) 234 171.67 T
+(e) 238.77 171.67 T
+(ycode) 243.33 171.67 T
+2 F
+(;) 268.98 171.67 T
+(/* k) 342 171.67 T
+(e) 358.7 171.67 T
+(ycode of interest */) 363.42 171.67 T
+1 12 Q
+-0.25 (XkbK) 108 152 P
+-0.25 (e) 134.24 152 P
+-0.25 (yHasActions) 139.21 152 P
+2 F
+-0.25 ( returns) 199.87 152 P
+5 F
+-0.56 -0.6 (True) 238.69 152 B
+2 F
+-0.25 ( if the key corresponding to) 265.09 152 P
+1 F
+-0.25 (k) 398.88 152 P
+-0.25 (e) 404.08 152 P
+-0.25 (ycode) 409.05 152 P
+2 F
+-0.25 ( has any actions asso-) 437.04 152 P
+(ciated with it; otherwise, it returns) 108 139 T
+5 F
+-0.6 (False) 275.65 139 S
+2 F
+(.) 308.65 139 T
+2 11 Q
+(int) 108 118.67 T
+3 F
+(XkbK) 122.37 118.67 T
+(eyNumActions) 150.82 118.67 T
+2 F
+(\050) 219.87 118.67 T
+1 F
+(xkb, k) 223.53 118.67 T
+(e) 249.07 118.67 T
+(ycode) 253.63 118.67 T
+2 F
+(\051) 279.28 118.67 T
+(/* macro */) 342 118.67 T
+(XkbDescPtr) 126 105.67 T
+1 F
+(xkb) 234 105.67 T
+2 F
+(;) 249.27 105.67 T
+(/* Xkb description of interest */) 342 105.67 T
+(K) 126 92.67 T
+(e) 133.67 92.67 T
+(yCode) 138.39 92.67 T
+1 F
+(k) 234 92.67 T
+(e) 238.77 92.67 T
+(ycode) 243.33 92.67 T
+2 F
+(;) 268.98 92.67 T
+(/* k) 342 92.67 T
+(e) 358.7 92.67 T
+(ycode of interest */) 363.42 92.67 T
+FMENDPAGE
+%%EndPage: "141" 153
+%%Page: "142" 154
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(142) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+1 12 Q
+(XkbK) 108 712 T
+(e) 134.24 712 T
+(yNumActions) 139.21 712 T
+2 F
+( computes the number of actions associated with the key correspond-) 203.21 712 T
+(ing to) 108 699 T
+1 F
+(k) 138.67 699 T
+(e) 143.88 699 T
+(ycode) 148.85 699 T
+2 F
+(. This should be the same value as the result of) 176.83 699 T
+1 F
+(XkbK) 404.14 699 T
+(e) 430.38 699 T
+(yNumSyms) 435.35 699 T
+2 F
+( \050see sec-) 488 699 T
+(tion 15.3.3\051.) 108 686 T
+2 11 Q
+(XkbK) 108 665.67 T
+(e) 134.61 665.67 T
+(yActionPtr) 139.33 665.67 T
+3 F
+(XkbK) 190.36 665.67 T
+(eyActionsPtr) 218.81 665.67 T
+2 F
+(\050) 279.91 665.67 T
+1 F
+(xkb, k) 283.57 665.67 T
+(e) 309.11 665.67 T
+(ycode) 313.67 665.67 T
+2 F
+(\051) 339.32 665.67 T
+(/* macro */) 342.98 665.67 T
+(XkbDescPtr) 126 652.67 T
+1 F
+(xkb) 234 652.67 T
+2 F
+(;) 249.27 652.67 T
+(/* Xkb description of interest */) 342 652.67 T
+(K) 126 639.67 T
+(e) 133.67 639.67 T
+(yCode) 138.39 639.67 T
+1 F
+(k) 234 639.67 T
+(e) 238.77 639.67 T
+(ycode) 243.33 639.67 T
+2 F
+(;) 268.98 639.67 T
+(/* k) 342 639.67 T
+(e) 358.7 639.67 T
+(ycode of interest */) 363.42 639.67 T
+1 12 Q
+-0.37 (XkbK) 108 620 P
+-0.37 (e) 134.24 620 P
+-0.37 (yActionsPtr) 139.21 620 P
+2 F
+-0.37 ( returns a pointer to the two-dimensional array of key actions associated) 195.88 620 P
+-0.26 (with the key corresponding to) 108 607 P
+1 F
+-0.26 (k) 253.01 607 P
+-0.26 (e) 258.22 607 P
+-0.26 (ycode) 263.18 607 P
+2 F
+-0.26 (. Use) 291.17 607 P
+1 F
+-0.26 ( XkbK) 315.57 607 P
+-0.26 (e) 344.55 607 P
+-0.26 (yActionsPtr) 349.52 607 P
+2 F
+-0.26 ( only if the key actually has) 406.18 607 P
+(some actions associated with it, that is,) 108 594 T
+1 F
+(XkbK) 297.66 594 T
+(e) 323.9 594 T
+(yNumActions) 328.87 594 T
+2 F
+(\050xkb, keycode\051 returns some-) 392.87 594 T
+(thing greater than zero.) 108 581 T
+2 11 Q
+(XkbAction) 108 560.67 T
+3 F
+(XkbK) 159.63 560.67 T
+(eyAction) 188.09 560.67 T
+2 F
+(\050) 229.64 560.67 T
+1 F
+(xkb, k) 233.3 560.67 T
+(e) 258.84 560.67 T
+(ycode) 263.4 560.67 T
+(, idx) 288.94 560.67 T
+2 F
+(\051) 307.88 560.67 T
+(/* macro */) 342 560.67 T
+(XkbDescPtr) 126 547.67 T
+1 F
+(xkb) 234 547.67 T
+2 F
+(;) 249.27 547.67 T
+(/* Xkb description of interest */) 342 547.67 T
+(K) 126 534.67 T
+(e) 133.67 534.67 T
+(yCode) 138.39 534.67 T
+1 F
+(k) 234 534.67 T
+(e) 238.77 534.67 T
+(ycode) 243.33 534.67 T
+2 F
+(;) 268.98 534.67 T
+(/* k) 342 534.67 T
+(e) 358.7 534.67 T
+(ycode of interest */) 363.42 534.67 T
+(int) 126 521.67 T
+1 F
+(idx) 234 521.67 T
+2 F
+(;) 247.44 521.67 T
+(/* inde) 342 521.67 T
+(x for group and shift le) 372.08 521.67 T
+(v) 472.93 521.67 T
+(el */) 478.27 521.67 T
+1 12 Q
+(XkbK) 108 502 T
+(e) 134.24 502 T
+(yAction) 139.21 502 T
+2 F
+( returns the key action indexed by) 175.87 502 T
+1 F
+(idx) 341.51 502 T
+2 F
+( in the two-dimensional array of key) 356.17 502 T
+(actions associated with the key corresponding to) 108 489 T
+1 F
+(k) 343.63 489 T
+(e) 348.84 489 T
+(ycode) 353.81 489 T
+2 F
+(.) 381.79 489 T
+1 F
+(idx) 387.79 489 T
+2 F
+( may be computed from the) 402.46 489 T
+(group and shift level of interest as follows:) 108 476 T
+(idx = group_index * key_width + shift_level) 126 455 T
+2 11 Q
+(XkbAction) 108 434.67 T
+3 F
+(XkbK) 159.63 434.67 T
+(eyActionEntry) 188.09 434.67 T
+2 F
+(\050) 257.14 434.67 T
+1 F
+(xkb, k) 260.8 434.67 T
+(e) 286.34 434.67 T
+(ycode) 290.9 434.67 T
+(, shift, grp) 316.44 434.67 T
+2 F
+(\051) 361.67 434.67 T
+(/* macro */) 365.33 434.67 T
+(XkbDescPtr) 126 421.67 T
+1 F
+(xkb) 234 421.67 T
+2 F
+(;) 249.27 421.67 T
+(/* Xkb description of interest */) 342 421.67 T
+(K) 126 408.67 T
+(e) 133.67 408.67 T
+(yCode) 138.39 408.67 T
+1 F
+(k) 234 408.67 T
+(e) 238.77 408.67 T
+(ycode) 243.33 408.67 T
+2 F
+(;) 268.98 408.67 T
+(/* k) 342 408.67 T
+(e) 358.7 408.67 T
+(ycode of interest */) 363.42 408.67 T
+(int) 126 395.67 T
+1 F
+(shift) 234 395.67 T
+2 F
+(;) 252.95 395.67 T
+(/* shift le) 342 395.67 T
+(v) 383.28 395.67 T
+(el within group */) 388.62 395.67 T
+(int) 126 382.67 T
+1 F
+(grp) 234 382.67 T
+2 F
+(;) 249.28 382.67 T
+(/* group inde) 342 382.67 T
+(x for group of interest */) 400.5 382.67 T
+1 12 Q
+(XkbK) 108 363 T
+(e) 134.24 363 T
+(yActionEntry) 139.21 363 T
+2 F
+( returns the key action corresponding to group) 202.54 363 T
+1 F
+(grp) 427.16 363 T
+2 F
+( and shift level) 443.83 363 T
+1 F
+(lvl) 517.82 363 T
+2 F
+(from the two-dimensional table of key actions associated with the key corresponding to) 108 350 T
+1 F
+(k) 108 337 T
+(e) 113.21 337 T
+(ycode) 118.18 337 T
+2 F
+(.) 146.16 337 T
+0 F
+(16.1.1) 72 312 T
+(The XkbAction Structure) 108 312 T
+2 F
+(The description for an action is held in an) 108 292 T
+5 F
+-0.6 (XkbAction) 310.97 292 S
+2 F
+( structure, which is a union of all) 370.37 292 T
+(possible Xkb action types:) 108 279 T
+2 11 Q
+(typedef union _XkbAction {) 126 258.67 T
+(XkbAn) 144 245.67 T
+(yAction) 176.22 245.67 T
+(an) 270 245.67 T
+(y;) 280.22 245.67 T
+(XkbModAction) 144 232.67 T
+(mods;) 270 232.67 T
+(XkbGroupAction) 144 219.67 T
+(group;) 270 219.67 T
+(XkbISO) 144 206.67 T
+(Action) 180.28 206.67 T
+(iso;) 270 206.67 T
+(XkbPtrAction) 144 193.67 T
+(ptr;) 270 193.67 T
+(XkbPtrBtnAction) 144 180.67 T
+(btn;) 270 180.67 T
+(XkbPtrD\337tAction) 144 167.67 T
+(d\337t;) 270 167.67 T
+(XkbSwitchScreenAction) 144 154.67 T
+(screen;) 270 154.67 T
+(XkbCtrlsAction) 144 141.67 T
+(ctrls;) 270 141.67 T
+(XkbMessageAction) 144 128.67 T
+(msg;) 270 128.67 T
+(XkbRedirectK) 144 115.67 T
+(e) 207.88 115.67 T
+(yAction) 212.6 115.67 T
+(redirect;) 270 115.67 T
+(XkbDe) 144 102.67 T
+(viceBtnAction) 175.49 102.67 T
+(de) 270 102.67 T
+(vbtn;) 280.11 102.67 T
+(XkbDe) 144 89.67 T
+(viceV) 175.49 89.67 T
+(aluatorAction) 200.54 89.67 T
+(de) 270 89.67 T
+(vv) 280.11 89.67 T
+(al;) 290.83 89.67 T
+FMENDPAGE
+%%EndPage: "142" 154
+%%Page: "143" 155
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(143) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(unsigned char) 144 712.67 T
+(type;) 270 712.67 T
+(}) 126 699.67 T
+3 F
+(XkbAction) 134.03 699.67 T
+2 F
+(;) 185.37 699.67 T
+2 12 Q
+(The) 108 680 T
+1 F
+(type) 129.66 680 T
+2 F
+( field is provided for convenience and is the same as the type field in the individ-) 149.65 680 T
+(ual structures. The following sections describe the individual structures for each action in) 108 667 T
+(detail.) 108 654 T
+0 F
+(16.1.2) 72 629 T
+(The XkbAn) 108 629 T
+(yAction Structure) 170.44 629 T
+2 F
+(The) 108 609 T
+5 F
+-0.6 (XkbAnyAction) 129.66 609 S
+2 F
+( structure is a convenience structure that refers to any of the actions:) 208.86 609 T
+2 11 Q
+(#de\336ne) 126 583.67 T
+(XkbAn) 162 583.67 T
+(yActionDataSize) 194.22 583.67 T
+(7) 306 583.67 T
+(typedef) 126 563.67 T
+(struct _XkbAn) 179.25 563.67 T
+(yAction {) 244.16 563.67 T
+(unsigned char) 144 550.67 T
+(type;) 234 550.67 T
+-0.23 (/* type of action; determines interpretation for data */) 306 550.67 P
+(unsigned char) 144 537.67 T
+(data[XkbAn) 234 537.67 T
+(yActionDataSize];) 288.21 537.67 T
+(}) 126 524.67 T
+3 F
+(XkbAnyAction) 134.03 524.67 T
+2 F
+(;) 204.93 524.67 T
+2 12 Q
+(The) 108 505 T
+1 F
+(data) 129.66 505 T
+2 F
+( field represents a structure for an action, and its interpretation depends on the) 151 505 T
+1 F
+-0.08 (type) 108 492 P
+2 F
+-0.08 ( field. The valid values for the) 127.99 492 P
+1 F
+-0.08 (type) 275.42 492 P
+2 F
+-0.08 ( field, and the data structures associated with them) 295.41 492 P
+(are shown in Table 16.1:) 108 479 T
+0 F
+(16.1.3) 72 107 T
+(Actions f) 108 107 T
+(or Changing Modi\336er) 159.1 107 T
+(s\325 State) 279.59 107 T
+2 F
+(Actions associated with the) 108 87 T
+5 F
+-0.6 (XkbModAction) 242.65 87 S
+2 F
+( structure change the state of the modifiers) 321.85 87 T
+(when keys are pressed and released \050see Chapter 7 for a discussion of modifiers\051:) 108 74 T
+3 F
+(T) 268.37 459 T
+(able 16.1 Action T) 275.27 459 T
+(ypes) 370.72 459 T
+1 F
+(T) 106.19 432 T
+(ype) 111.97 432 T
+(Structur) 240.06 432 T
+(e for Data) 278.95 432 T
+(XkbAction) 420.06 439 T
+(Union Member) 420.06 425 T
+(Section) 494.31 432 T
+5 11 Q
+-0.33 (XkbSA_NoAction) 106.19 410.67 S
+5 12 Q
+-0.6 (Xkb) 240.06 410.67 S
+5 11 Q
+-0.33 (SA_NoAction) 259.86 410.67 S
+2 F
+( means the serv) 328.83 410.67 T
+(er) 396.79 410.67 T
+(does not perform an action for the k) 240.06 399.67 T
+(e) 397.89 399.67 T
+(y;) 402.61 399.67 T
+(this action does not ha) 240.06 388.67 T
+(v) 338.23 388.67 T
+(e an associated) 343.56 388.67 T
+(data structure.) 240.06 377.67 T
+(an) 420.06 410.67 T
+(y) 430.28 410.67 T
+5 F
+-0.33 (XkbSA_SetMods) 106.19 363.67 S
+-0.33 (XkbSA_LatchMods) 106.19 352.67 S
+-0.33 (XkbSA_LockMods) 106.19 341.67 S
+-0.33 (XkbModAction) 240.06 363.67 S
+2 F
+(mods) 420.06 363.67 T
+(16.1.3) 494.31 363.67 T
+5 F
+-0.33 (XkbSA_SetGroup) 106.19 327.67 S
+-0.33 (XkbSA_LatchGroup) 106.19 316.67 S
+-0.33 (XkbSA_LockGroup) 106.19 305.67 S
+-0.33 (XkbGroupAction) 240.06 327.67 S
+2 F
+(group) 420.06 327.67 T
+(16.1.4) 494.31 327.67 T
+5 F
+-0.33 (XkbSA_MovePtr) 106.19 291.67 S
+-0.33 (XkbPtrAction) 240.06 291.67 S
+2 F
+(ptr) 420.06 291.67 T
+(16.1.5) 494.31 291.67 T
+5 F
+-0.33 (XKbSA_PtrBtn) 106.19 277.67 S
+-0.33 (XkbSA_LockPtrBtn) 106.19 266.67 S
+-0.33 (XkbPtrBtnAction) 240.06 277.67 S
+2 F
+(btn) 420.06 277.67 T
+(16.1.6) 494.31 277.67 T
+5 F
+-0.33 (XkbSA_SetPtrDflt) 106.19 252.67 S
+-0.33 (XkbPtrDfltAction) 240.06 252.67 S
+2 F
+(d\337t) 420.06 252.67 T
+(16.1.7) 494.31 252.67 T
+5 F
+-0.33 (XkbSA_ISOLock) 106.19 238.67 S
+-0.33 (XkbISOAction) 240.06 238.67 S
+2 F
+(iso) 420.06 238.67 T
+(16.1.8) 494.31 238.67 T
+5 F
+-0.33 (XkbSA_SwitchScreen) 106.19 224.67 S
+-0.33 (XkbSwitchScreenAction) 240.06 224.67 S
+2 F
+(screen) 420.06 224.67 T
+(16.1.9) 494.31 224.67 T
+5 F
+-0.33 (XkbSA_SetControls) 106.19 210.67 S
+-0.33 (XkbSA_LockControls) 106.19 199.67 S
+-0.33 (XkbCtrlsAction) 240.06 210.67 S
+2 F
+(ctrls) 420.06 210.67 T
+(16.1.10) 494.31 210.67 T
+5 F
+-0.33 (XkbSA_ActionMessage) 106.19 185.67 S
+-0.33 (XkbMessgeAction) 240.06 185.67 S
+2 F
+(msg) 420.06 185.67 T
+(16.1.11) 494.31 185.67 T
+5 F
+-0.33 (XkbSA_RedirectKey) 106.19 171.67 S
+-0.33 (XkbRedirectKeyAction) 240.06 171.67 S
+2 F
+(redirect) 420.06 171.67 T
+(16.1.12) 494.31 171.67 T
+5 F
+-0.33 (XkbSA_DeviceBtn) 106.19 157.67 S
+-0.33 (XKbSA_LockDeviceBtn) 106.19 146.67 S
+-0.33 (XkbDeviceBtnAction) 240.06 157.67 S
+2 F
+(de) 420.06 157.67 T
+(vbtn) 430.17 157.67 T
+(16.1.13) 494.31 157.67 T
+5 F
+-0.33 (XkbSA_DeviceValuator) 106.19 132.67 S
+-0.33 (XkbDeviceValuatorAction) 240.06 132.67 S
+2 F
+(de) 420.06 132.67 T
+(vv) 430.17 132.67 T
+(al) 440.9 132.67 T
+(16.1.14) 494.31 132.67 T
+105.19 451 542.81 451 2 L
+V
+0.5 H
+0 Z
+N
+105.19 420 542.81 420 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "143" 155
+%%Page: "144" 156
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(144) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(typedef struct _XkbModAction {) 126 712.67 T
+(unsigned char) 144 699.67 T
+(type;) 225 699.67 T
+(/*) 279 699.67 T
+5 F
+-0.33 (XkbSA_{Set|Latch|Lock}Mods) 290.31 699.67 S
+2 F
+( */) 453.33 699.67 T
+(unsigned char) 144 686.67 T
+(\337ags;) 225 686.67 T
+(/* with) 279 686.67 T
+1 F
+(type) 312.62 686.67 T
+2 F
+(, controls the ef) 330.94 686.67 T
+(fect on modi\336ers */) 399.1 686.67 T
+(unsigned char) 144 673.67 T
+(mask;) 225 673.67 T
+(/*) 279 673.67 T
+2 12 Q
+(same as) 290.31 673.67 T
+1 F
+(mask) 330.96 673.67 T
+2 F
+( field of a modifier description) 355.62 673.67 T
+2 11 Q
+( */) 502.6 673.67 T
+(unsigned char) 144 660.67 T
+(real_mods;) 225 660.67 T
+(/* same as) 279 660.67 T
+1 12 Q
+(real_mods) 327.58 660.67 T
+2 11 Q
+(\336eld of a modi\336er description) 381.24 660.67 T
+2 12 Q
+( */) 512.01 660.67 T
+2 11 Q
+(unsigned char) 144 647.67 T
+(vmods1;) 225 647.67 T
+(/* deri) 279 647.67 T
+(v) 307.14 647.67 T
+(ed from) 312.47 647.67 T
+1 12 Q
+(vmods) 349.74 647.67 T
+2 F
+( field of a modifier description) 380.4 647.67 T
+2 11 Q
+( */) 527.38 647.67 T
+(unsigned char) 144 634.67 T
+(vmods2;) 225 634.67 T
+(/* deri) 279 634.67 T
+(v) 307.14 634.67 T
+(ed from) 312.47 634.67 T
+1 12 Q
+(vmods) 349.74 634.67 T
+2 F
+( field of a modifier description) 380.4 634.67 T
+2 11 Q
+( */) 527.38 634.67 T
+(}) 126 621.67 T
+3 F
+(XkbModAction) 134.03 621.67 T
+2 F
+(;) 207.37 621.67 T
+2 12 Q
+-0.09 (In the following description, the term) 108 602 P
+1 F
+-0.09 (action modi\336er) 289.78 602 P
+-0.09 (s) 362.57 602 P
+2 F
+-0.09 ( means the real modifier bits associ-) 367.23 602 P
+(ated with this action. Depending on the value of) 108 589 T
+1 F
+(flags) 341.3 589 T
+2 F
+( \050see Table 16.3\051, these are desig-) 364.64 589 T
+(nated either in the) 108 576 T
+1 F
+(mask) 197.32 576 T
+2 F
+( field of the) 221.98 576 T
+5 F
+-0.6 (XkbModAction) 280.63 576 S
+2 F
+( structure itself or the real modifiers) 359.83 576 T
+(bound to the key for which the action is being used. In the latter case, this is the client) 108 563 T
+1 F
+(map) 108 550 T
+2 F
+(->) 128.66 550 T
+1 F
+(modmap) 139.43 550 T
+2 F
+([) 180.76 550 T
+1 F
+(keycode) 184.75 550 T
+2 F
+(] field.) 223.39 550 T
+(The) 108 529 T
+1 F
+(type) 129.66 529 T
+2 F
+( field can have any of the values shown in Table 16.2.) 149.65 529 T
+3 F
+(T) 235.54 509 T
+(able 16.2 Modi\336er Action T) 242.44 509 T
+(ypes) 385.55 509 T
+1 F
+(T) 109 489 T
+(ype) 114.78 489 T
+(Ef) 217 489 T
+(fect) 227.45 489 T
+5 11 Q
+-0.33 (XkbSA_SetMods) 109 474.67 S
+2 F
+(\245) 217 470.67 T
+-0.05 (A k) 226 470.67 P
+-0.05 (e) 242.03 470.67 P
+-0.05 (y press adds an) 246.75 470.67 P
+-0.05 (y action modi\336ers to the k) 313.34 470.67 P
+-0.05 (e) 428.17 470.67 P
+-0.05 (yboard\325) 432.89 470.67 P
+-0.05 (s base modi-) 466.49 470.67 P
+(\336ers.) 226 459.67 T
+(\245) 217 448.67 T
+(A k) 226 448.67 T
+(e) 242.08 448.67 T
+(y release clears an) 246.8 448.67 T
+(y action modi\336ers in the k) 326.96 448.67 T
+(e) 442.04 448.67 T
+(yboard\325) 446.76 448.67 T
+(s base) 480.36 448.67 T
+(modi\336ers, pro) 226 437.67 T
+(vided no other k) 287.56 437.67 T
+(e) 359.24 437.67 T
+(y af) 363.96 437.67 T
+(fecting the same modi\336ers is) 380.48 437.67 T
+(logically do) 226 426.67 T
+(wn.) 277.98 426.67 T
+(\245) 217 415.67 T
+-0.1 (If no other k) 226 415.67 P
+-0.1 (e) 280.26 415.67 P
+-0.1 (ys are ph) 284.98 415.67 P
+-0.1 (ysically depressed when this k) 324.43 415.67 P
+-0.1 (e) 457.72 415.67 P
+-0.1 (y is released,) 462.44 415.67 P
+(and) 226 404.67 T
+5 F
+-0.33 (XkbSA_ClearLocks) 244.63 404.67 S
+2 F
+( is set in the) 344.95 404.67 T
+1 F
+(flags) 400.26 404.67 T
+2 F
+( \336eld, the k) 421.66 404.67 T
+(e) 471.05 404.67 T
+(y release) 475.77 404.67 T
+(unlocks an) 226 393.67 T
+(y action modi\336ers.) 273.19 393.67 T
+5 F
+-0.33 (XkbSA_LatchMods) 109 379.67 S
+2 F
+(\245) 217 375.67 T
+(K) 226 375.67 T
+(e) 233.67 375.67 T
+(y press and k) 238.39 375.67 T
+(e) 296.02 375.67 T
+(y release e) 300.73 375.67 T
+(v) 346.88 375.67 T
+(ents ha) 352.21 375.67 T
+(v) 382.85 375.67 T
+(e the same ef) 388.18 375.67 T
+(fect as for) 445.64 375.67 T
+5 F
+-0.33 (XkbSA_SetMods) 226 364.67 S
+2 F
+(; if no k) 307.51 364.67 T
+(e) 341.93 364.67 T
+(ys are ph) 346.65 364.67 T
+(ysically depressed when this) 386.3 364.67 T
+(k) 226 353.67 T
+(e) 231.39 353.67 T
+(y is released, k) 236.11 353.67 T
+(e) 301.37 353.67 T
+(y release e) 306.09 353.67 T
+(v) 352.24 353.67 T
+(ents ha) 357.57 353.67 T
+(v) 388.21 353.67 T
+(e the follo) 393.54 353.67 T
+(wing additional) 437.87 353.67 T
+(ef) 226 342.67 T
+(fects:) 234.27 342.67 T
+(\245) 217 331.67 T
+(Modi\336ers unlock) 226 331.67 T
+(ed due to) 301.36 331.67 T
+5 F
+-0.33 (XkbSA_ClearLocks) 344.44 331.67 S
+2 F
+( ha) 444.76 331.67 T
+(v) 457.67 331.67 T
+(e no further) 463.01 331.67 T
+(ef) 226 320.67 T
+(fect.) 234.27 320.67 T
+(\245) 217 309.67 T
+(If) 226 309.67 T
+5 F
+-0.33 (XkbSA_LatchToLock) 236.08 309.67 S
+2 F
+( is set in the) 342.67 309.67 T
+1 F
+(flags) 397.97 309.67 T
+2 F
+( \336eld, a k) 419.37 309.67 T
+(e) 460.2 309.67 T
+(y release) 464.92 309.67 T
+(locks and then unlatches an) 226 298.67 T
+(y remaining action modi\336ers that are) 346.81 298.67 T
+(already latched.) 226 287.67 T
+(\245) 217 276.67 T
+(A k) 226 276.67 T
+(e) 242.08 276.67 T
+(y release latches an) 246.8 276.67 T
+(y action modi\336ers not used by the) 331.85 276.67 T
+5 F
+-0.33 (XkbSA_ClearLocks) 226 265.67 S
+2 F
+( and) 326.32 265.67 T
+5 F
+-0.33 (XkbSA_LatchToLock) 347.7 265.67 S
+2 F
+( \337ags.) 454.29 265.67 T
+5 F
+-0.33 (XkbSA_LockMods) 109 251.67 S
+2 F
+(\245) 217 247.67 T
+(A k) 226 247.67 T
+(e) 242.08 247.67 T
+(y press sets the base state of an) 246.8 247.67 T
+(y action modi\336ers. If) 383.19 247.67 T
+5 F
+-0.33 (XkbSA_LockNoLock) 226 236.67 S
+2 F
+( is set in the) 326.32 236.67 T
+1 F
+(flags) 381.63 236.67 T
+2 F
+( \336eld, a k) 403.02 236.67 T
+(e) 443.86 236.67 T
+(y press also sets) 448.57 236.67 T
+(the lock) 226 225.67 T
+(ed state of an) 261.02 225.67 T
+(y action modi\336ers.) 319.2 225.67 T
+(\245) 217 214.67 T
+(A k) 226 214.67 T
+(e) 242.08 214.67 T
+(y release clears an) 246.8 214.67 T
+(y action modi\336ers in the k) 326.96 214.67 T
+(e) 442.04 214.67 T
+(yboard\325) 446.76 214.67 T
+(s base) 480.36 214.67 T
+(modi\336ers, pro) 226 203.67 T
+(vided no other k) 287.56 203.67 T
+(e) 359.24 203.67 T
+(y that af) 363.96 203.67 T
+(fects the same modi\336ers is) 399.73 203.67 T
+(do) 226 192.67 T
+(wn. If) 236.73 192.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 265.74 192.67 S
+2 F
+( is not set in the) 378.6 192.67 T
+1 F
+(flags) 450.72 192.67 T
+2 F
+( \336eld, and) 472.11 192.67 T
+(an) 226 181.67 T
+(y of the action modi\336ers were lock) 236.22 181.67 T
+(ed before the corresponding) 389.47 181.67 T
+(k) 226 170.67 T
+(e) 231.39 170.67 T
+(y press occurred, a k) 236.11 170.67 T
+(e) 326.72 170.67 T
+(y release unlocks them.) 331.43 170.67 T
+108 501 522 501 2 L
+V
+0.5 H
+0 Z
+N
+108 484 522 484 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "144" 156
+%%Page: "145" 157
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(145) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+-0.33 (The) 108 712 P
+1 F
+-0.33 (flags) 129.33 712 P
+2 F
+-0.33 ( field is composed of the bitwise inclusive OR of the masks shown in Table 16.3.) 152.67 712 P
+-0.08 (A general meaning is given in the table, but the exact meaning depends on the action) 108 699 P
+1 F
+-0.08 (type) 517.01 699 P
+2 F
+-0.08 (.) 537 699 P
+-0.38 (If) 108 486 P
+5 F
+-0.85 -0.6 (XkbSA_UseModMapMods) 118.61 486 B
+2 F
+-0.38 ( is not set in the) 244.01 486 P
+1 F
+-0.38 (flags) 320.38 486 P
+2 F
+-0.38 ( field, the) 343.72 486 P
+1 F
+-0.38 (mask) 391.23 486 P
+2 F
+-0.38 (,) 415.89 486 P
+1 F
+-0.38 (real_mods) 421.5 486 P
+2 F
+-0.38 (,) 472.16 486 P
+1 F
+-0.38 (vmods1) 477.78 486 P
+2 F
+-0.38 (, and) 514.44 486 P
+1 F
+(vmods2) 108 473 T
+2 F
+(fields are used to determine the action modifiers. Otherwise they are ignored and) 147.66 473 T
+(the modifiers bound to the key \050client) 108 460 T
+1 F
+(map) 291.65 460 T
+2 F
+(->) 312.31 460 T
+1 F
+(modmap) 323.08 460 T
+2 F
+([) 364.4 460 T
+1 F
+(k) 368.4 460 T
+(e) 373.61 460 T
+(ycode) 378.58 460 T
+2 F
+(]\051 are used instead.) 406.56 460 T
+(The) 108 439 T
+1 F
+(mask) 129.66 439 T
+2 F
+(,) 154.32 439 T
+1 F
+(real_mods) 160.32 439 T
+2 F
+(,) 210.98 439 T
+1 F
+(vmods1) 216.98 439 T
+2 F
+(, and) 253.64 439 T
+1 F
+(vmods2) 279.97 439 T
+2 F
+( fields represent the components of an Xkb) 316.63 439 T
+(modifier description \050see section 7.2\051. While the) 108 426 T
+1 F
+(mask) 342.96 426 T
+2 F
+( and) 367.62 426 T
+1 F
+(real_mods) 390.95 426 T
+2 F
+( fields correspond) 441.61 426 T
+-0.09 (directly to the) 108 413 P
+1 F
+-0.09 (mask) 177.41 413 P
+2 F
+-0.09 ( and) 202.07 413 P
+1 F
+-0.09 (real_mods) 225.22 413 P
+2 F
+-0.09 ( fields of an Xkb modifier description, the) 275.89 413 P
+1 F
+-0.09 (vmods1) 480.18 413 P
+2 F
+-0.09 ( and) 516.84 413 P
+1 F
+(vmods2) 108 400 T
+2 F
+( fields are combined to correspond to the) 144.66 400 T
+1 F
+(vmods) 343.96 400 T
+2 F
+( field of an Xkb modifier descrip-) 374.62 400 T
+(tion. Xkb provides the following macros, to convert between the two formats:) 108 387 T
+2 11 Q
+(unsigned short) 108 366.67 T
+3 F
+(XkbModActionVMods) 175.22 366.67 T
+2 F
+(\050) 282.78 366.67 T
+1 F
+(act) 286.44 366.67 T
+2 F
+(\051) 299.88 366.67 T
+(/* macro */) 333 366.67 T
+(XkbAction) 126 353.67 T
+1 F
+(act) 234 353.67 T
+2 F
+(;) 247.44 353.67 T
+(/* action from which to e) 333 353.67 T
+(xtract virtual mods */) 443.74 353.67 T
+1 12 Q
+-0.38 (XkbModActionVMods) 108 334 P
+2 F
+-0.38 ( returns the) 213.98 334 P
+1 F
+-0.38 (vmods1) 269.84 334 P
+2 F
+-0.38 ( and) 306.5 334 P
+1 F
+-0.38 (vmods2) 329.07 334 P
+2 F
+-0.38 ( fields of) 365.73 334 P
+1 F
+-0.38 (act) 410.25 334 P
+2 F
+-0.38 ( converted to the) 424.92 334 P
+1 F
+-0.38 (vmods) 506.72 334 P
+2 F
+(format of an Xkb modifier description.) 108 321 T
+2 11 Q
+(v) 108 300.67 T
+(oid) 113.28 300.67 T
+3 F
+(XkbSetModActionVMods) 130.09 300.67 T
+2 F
+(\050) 252.31 300.67 T
+1 F
+(act, vmods) 255.97 300.67 T
+2 F
+(\051) 303.02 300.67 T
+(/* macro */) 342 300.67 T
+(XkbAction) 126 287.67 T
+1 F
+(act) 234 287.67 T
+2 F
+(;) 247.44 287.67 T
+(/* action in which to set vmods */) 342 287.67 T
+(unsigned short) 126 274.67 T
+1 F
+(vmods) 234 274.67 T
+2 F
+(;) 262.11 274.67 T
+(/* virtual mods to set */) 342 274.67 T
+1 12 Q
+-0.43 (XkbSetModActionVMods) 108 255 P
+2 F
+-0.43 ( sets the) 228.65 255 P
+1 F
+-0.43 (vmods1) 269.02 255 P
+2 F
+-0.43 ( and) 305.68 255 P
+1 F
+-0.43 (vmods2) 328.14 255 P
+2 F
+-0.43 ( fields of) 364.8 255 P
+1 F
+-0.43 (act) 409.17 255 P
+2 F
+-0.43 ( using the) 423.83 255 P
+1 F
+-0.43 (vmods) 472.21 255 P
+2 F
+-0.43 ( format) 502.87 255 P
+(of an Xkb modifier description.) 108 242 T
+0 F
+(Note) 126 221.67 T
+2 11 Q
+(Despite the f) 162 221.67 T
+(act that the \336rst parameter of these tw) 218.1 221.67 T
+(o macros is of type XkbAction,) 383.87 221.67 T
+-0.13 (these macros may be used only with Actions of type) 162 209.67 P
+5 12 Q
+-0.32 -0.6 (XkbModAction) 393.48 209.67 B
+2 11 Q
+-0.13 ( and) 472.68 209.67 P
+5 12 Q
+-0.32 -0.6 (XkbISO-) 493.8 209.67 B
+-0.6 (Action) 162 197.67 S
+2 11 Q
+(.) 201.6 197.67 T
+0 12 Q
+(16.1.4) 72 173 T
+(Actions f) 108 173 T
+(or Changing Gr) 159.1 173 T
+(oup State) 246.86 173 T
+2 F
+(Actions associated with the) 108 153 T
+5 F
+-0.6 (XkbGroupAction) 242.65 153 S
+2 F
+( structure change the current group state) 335.05 153 T
+(when keys are pressed and released \050see Chapter 5 for a description of groups and key-) 108 140 T
+(board state\051:) 108 127 T
+2 11 Q
+(typedef struct _XkbGroupAction {) 126 106.67 T
+(unsigned char) 144 93.67 T
+(type;) 234 93.67 T
+(/*) 306 93.67 T
+5 F
+-0.33 (XkbSA_{Set|Latch|Lock}Group) 317.31 93.67 S
+2 F
+( */) 486.6 93.67 T
+(unsigned char) 144 80.67 T
+(\337ags;) 234 80.67 T
+(/* with) 306 80.67 T
+1 F
+(type) 339.62 80.67 T
+2 F
+(, controls the ef) 357.94 80.67 T
+(fect on groups */) 426.1 80.67 T
+3 12 Q
+(T) 236.76 679 T
+(able 16.3 Modi\336er Action Flags) 243.66 679 T
+1 F
+(Fla) 109 659 T
+(g) 125.55 659 T
+(Meaning) 253 659 T
+5 11 Q
+-0.33 (XkbSA_UseModMapMods) 109 644.67 S
+2 F
+(If set, the action modi\336ers are determined by the modi\336ers) 253 644.67 T
+(bound by the modi\336er mapping of the k) 253 633.67 T
+(e) 427.97 633.67 T
+(y) 432.68 633.67 T
+(. Otherwise, the) 437.47 633.67 T
+(action modi\336ers are set to the modi\336ers speci\336ed by the) 253 622.67 T
+1 F
+(mask) 253 611.67 T
+2 F
+(,) 275.61 611.67 T
+1 F
+(real_mods) 281.11 611.67 T
+2 F
+(,) 327.55 611.67 T
+1 F
+(vmod1) 333.05 611.67 T
+2 F
+(, and) 362.37 611.67 T
+1 F
+(vmod2) 386.51 611.67 T
+2 F
+( \336elds.) 415.83 611.67 T
+5 F
+-0.33 (XkbSA_ClearLocks) 109 597.67 S
+2 F
+(If set and no k) 253 597.67 T
+(e) 315.82 597.67 T
+(ys are ph) 320.54 597.67 T
+(ysically depressed when this k) 360.2 597.67 T
+(e) 493.9 597.67 T
+(y) 498.62 597.67 T
+(transition occurs, the serv) 253 586.67 T
+(er unlocks an) 365.87 586.67 T
+(y action modi\336ers.) 424.36 586.67 T
+5 F
+-0.33 (XkbSA_LatchToLock) 109 572.67 S
+2 F
+-0.02 (If set, and the action type is) 253 572.67 P
+5 F
+-0.05 -0.33 (XkbSA_LatchMods) 376.87 572.67 B
+2 F
+-0.02 (, the serv) 470.92 572.67 P
+-0.02 (er) 510.73 572.67 P
+(locks the action modi\336ers if the) 253 561.67 T
+(y are already latched.) 391.85 561.67 T
+5 F
+-0.33 (XkbSA_LockNoLock) 109 547.67 S
+2 F
+(If set, and the action type is) 253 547.67 T
+5 F
+-0.33 (XkbSA_LockMods) 377.04 547.67 S
+2 F
+(, the serv) 464.82 547.67 T
+(er) 504.67 547.67 T
+(only unlocks the action modi\336ers.) 253 536.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 109 522.67 S
+2 F
+(If set, and the action is) 253 522.67 T
+5 F
+-0.33 (XkbSA_LockMods) 355.34 522.67 S
+2 F
+(, the serv) 443.12 522.67 T
+(er only) 482.98 522.67 T
+(locks the action modi\336ers.) 253 511.67 T
+108 671 522 671 2 L
+V
+0.5 H
+0 Z
+N
+108 654 522 654 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "145" 157
+%%Page: "146" 158
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(146) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(char) 144 712.67 T
+(group_XXX;) 234 712.67 T
+(/* represents a group inde) 306 712.67 T
+(x or delta */) 419.48 712.67 T
+(}) 126 699.67 T
+3 F
+(XkbGr) 134.03 699.67 T
+(oupAction) 167.45 699.67 T
+2 F
+(;) 216.34 699.67 T
+2 12 Q
+(The) 108 680 T
+1 F
+(type) 129.66 680 T
+2 F
+( field can have any of the following values:) 149.65 680 T
+-0.33 (The) 108 241 P
+1 F
+-0.33 (flags) 129.33 241 P
+2 F
+-0.33 ( field is composed of the bitwise inclusive OR of the masks shown in Table 16.5.) 152.67 241 P
+-0.08 (A general meaning is given in the table, but the exact meaning depends on the action) 108 228 P
+1 F
+-0.08 (type) 517.01 228 P
+2 F
+-0.08 (.) 537 228 P
+3 F
+(T) 249.97 660 T
+(able 16.4 Gr) 256.87 660 T
+(oup Action T) 322.66 660 T
+(ypes) 389.11 660 T
+1 F
+(T) 109 640 T
+(ype) 114.78 640 T
+(Ef) 221 640 T
+(fect) 231.45 640 T
+5 11 Q
+-0.33 (XkbSA_SetGroup) 109 625.67 S
+2 F
+(\245) 221 621.67 T
+(If the) 230 621.67 T
+5 F
+-0.33 (XkbSA_GroupAbsolute) 256.27 621.67 S
+2 F
+( bit is set in the) 375.4 621.67 T
+1 F
+(flags) 445.07 621.67 T
+2 F
+( \336eld, k) 466.47 621.67 T
+(e) 499.67 621.67 T
+(y press) 504.38 621.67 T
+(e) 230 610.67 T
+(v) 234.61 610.67 T
+(ents change the base k) 239.94 610.67 T
+(e) 338.2 610.67 T
+(yboard group to the group speci\336ed by the) 342.92 610.67 T
+1 F
+(group_XXX) 230 599.67 T
+2 F
+( \336eld. Otherwise, k) 281.94 599.67 T
+(e) 365.85 599.67 T
+(y press e) 370.57 599.67 T
+(v) 408.78 599.67 T
+(ents change the base k) 414.12 599.67 T
+(e) 512.37 599.67 T
+(y-) 517.09 599.67 T
+(board group by adding the) 230 588.67 T
+1 F
+(group_XXX) 348.84 588.67 T
+2 F
+( \336eld to the base k) 400.79 588.67 T
+(e) 481.03 588.67 T
+(yboard) 485.75 588.67 T
+-0.19 (group. In either case, the resulting ef) 230 577.67 P
+-0.19 (fecti) 389.85 577.67 P
+-0.19 (v) 409.12 577.67 P
+-0.19 (e k) 414.46 577.67 P
+-0.19 (e) 427.29 577.67 P
+-0.19 (yboard group is brought) 432.01 577.67 P
+-0.41 (back into range depending on the v) 230 566.67 P
+-0.41 (alue of the) 381.85 566.67 P
+1 F
+-0.41 (groups_wrap) 429.8 566.67 P
+2 F
+-0.41 ( \336eld of the) 488.48 566.67 P
+(controls structure \050see section 10.7.1\051.) 230 555.67 T
+(\245) 221 544.67 T
+(If a k) 230 544.67 T
+(e) 253.1 544.67 T
+(y with an) 257.82 544.67 T
+5 F
+-0.33 (XkbSA_ISOLock) 301.51 544.67 S
+2 F
+( action \050see section 16.1.8\051 is) 383.02 544.67 T
+(pressed while this k) 230 533.67 T
+(e) 316.97 533.67 T
+(y is do) 321.68 533.67 T
+(wn, the k) 350.75 533.67 T
+(e) 391.27 533.67 T
+(y release of this k) 395.99 533.67 T
+(e) 473.47 533.67 T
+(y has no) 478.19 533.67 T
+(ef) 230 522.67 T
+(fect. Otherwise, the k) 238.27 522.67 T
+(e) 332.55 522.67 T
+(y release cancels the ef) 337.27 522.67 T
+(fects of the k) 438.39 522.67 T
+(e) 495.41 522.67 T
+(y press.) 500.13 522.67 T
+(\245) 221 511.67 T
+(If the) 230 511.67 T
+5 F
+-0.33 (XkbSA_ClearLocks) 256.27 511.67 S
+2 F
+( bit is set in the \337ags \336eld, and no k) 356.59 511.67 T
+(e) 512.62 511.67 T
+(ys) 517.34 511.67 T
+-0.31 (are ph) 230 500.67 P
+-0.31 (ysically depressed when this k) 256.82 500.67 P
+-0.31 (e) 389.28 500.67 P
+-0.31 (y is released, the k) 393.99 500.67 P
+-0.31 (e) 474.21 500.67 P
+-0.31 (y release also) 478.93 500.67 P
+(sets the lock) 230 489.67 T
+(ed k) 284.27 489.67 T
+(e) 302.8 489.67 T
+(yboard group to) 307.52 489.67 T
+5 F
+-0.33 (Group1) 380.54 489.67 S
+2 F
+(.) 418.15 489.67 T
+5 F
+-0.33 (XkbSA_LatchGroup) 109 475.67 S
+2 F
+(\245) 221 471.67 T
+(K) 230 471.67 T
+(e) 237.67 471.67 T
+(y press and k) 242.39 471.67 T
+(e) 300.02 471.67 T
+(y release e) 304.73 471.67 T
+(v) 350.88 471.67 T
+(ents ha) 356.21 471.67 T
+(v) 386.85 471.67 T
+(e the same ef) 392.18 471.67 T
+(fect as for) 449.64 471.67 T
+5 F
+-0.74 -0.33 (XkbSA_SetGroup) 230 460.67 B
+2 F
+-0.32 (; if no k) 317.78 460.67 P
+-0.32 (e) 351.23 460.67 P
+-0.32 (ys are ph) 355.94 460.67 P
+-0.32 (ysically depressed when this k) 394.95 460.67 P
+-0.32 (e) 527.35 460.67 P
+-0.32 (y) 532.07 460.67 P
+(is released, k) 230 449.67 T
+(e) 287.01 449.67 T
+(y release e) 291.73 449.67 T
+(v) 337.88 449.67 T
+(ents ha) 343.21 449.67 T
+(v) 373.85 449.67 T
+(e the follo) 379.18 449.67 T
+(wing additional ef) 423.51 449.67 T
+(fects.) 503.28 449.67 T
+(\245) 221 438.67 T
+(If the) 230 438.67 T
+5 F
+-0.33 (XkbSA_LatchToLock) 256.27 438.67 S
+2 F
+( bit is set in the) 362.86 438.67 T
+1 F
+(flags) 432.53 438.67 T
+2 F
+( \336eld and the) 453.93 438.67 T
+(latched k) 230 427.67 T
+(e) 269.91 427.67 T
+(yboard group inde) 274.63 427.67 T
+(x is nonzero, the k) 355.11 427.67 T
+(e) 435.96 427.67 T
+(y release adds the) 440.68 427.67 T
+(delta applied by the corresponding k) 230 416.67 T
+(e) 390.28 416.67 T
+(y press to the lock) 395 416.67 T
+(ed k) 474.94 416.67 T
+(e) 493.46 416.67 T
+(yboard) 498.18 416.67 T
+(group and subtracts it from the latched k) 230 405.67 T
+(e) 408 405.67 T
+(yboard group. The lock) 412.72 405.67 T
+(ed) 515.87 405.67 T
+-0.19 (and ef) 230 394.67 P
+-0.19 (fecti) 256.71 394.67 P
+-0.19 (v) 275.99 394.67 P
+-0.19 (e k) 281.32 394.67 P
+-0.19 (e) 294.15 394.67 P
+-0.19 (yboard group are brought back into range according to) 298.87 394.67 P
+(the v) 230 383.67 T
+(alue of the) 251.42 383.67 T
+1 F
+(groups_wrap) 300.6 383.67 T
+2 F
+( \336eld of the controls structure.) 359.27 383.67 T
+(\245) 221 372.67 T
+(Otherwise, the k) 230 372.67 T
+(e) 302.29 372.67 T
+(y press adds the k) 307.01 372.67 T
+(e) 385.11 372.67 T
+(y press delta to the latched k) 389.83 372.67 T
+(e) 514.98 372.67 T
+(y-) 519.7 372.67 T
+(board group.) 230 361.67 T
+5 F
+-0.33 (XkbSA_LockGroup) 109 347.67 S
+2 F
+(\245) 221 343.67 T
+(If the) 230 343.67 T
+5 F
+-0.33 (XkbSA_GroupAbsolute) 256.27 343.67 S
+2 F
+( is set in the) 375.4 343.67 T
+1 F
+(flags) 430.71 343.67 T
+2 F
+( \336eld, k) 452.1 343.67 T
+(e) 485.3 343.67 T
+(y press) 490.02 343.67 T
+(e) 230 332.67 T
+(v) 234.61 332.67 T
+(ents set the lock) 239.94 332.67 T
+(ed k) 310.41 332.67 T
+(e) 328.93 332.67 T
+(yboard group to the group speci\336ed by the) 333.65 332.67 T
+1 F
+(group_XXX) 230 321.67 T
+2 F
+( \336eld. Otherwise, k) 281.94 321.67 T
+(e) 365.85 321.67 T
+(y press e) 370.57 321.67 T
+(v) 408.78 321.67 T
+(ents add the group speci\336ed) 414.12 321.67 T
+(by the) 230 310.67 T
+1 F
+(group_XXX) 259.94 310.67 T
+2 F
+( \336eld to the lock) 311.88 310.67 T
+(ed k) 383.27 310.67 T
+(e) 401.8 310.67 T
+(yboard group. In either case,) 406.52 310.67 T
+(the resulting lock) 230 299.67 T
+(ed and ef) 306.27 299.67 T
+(fecti) 346.31 299.67 T
+(v) 365.59 299.67 T
+(e k) 370.92 299.67 T
+(e) 383.95 299.67 T
+(yboard groups are brought back) 388.66 299.67 T
+-0.11 (into range depending on the v) 230 288.67 P
+-0.11 (alue of the) 360.23 288.67 P
+1 F
+-0.11 (groups_wrap) 409.07 288.67 P
+2 F
+-0.11 ( \336eld of the con-) 467.74 288.67 P
+(trols structure.) 230 277.67 T
+(\245) 221 266.67 T
+(A k) 230 266.67 T
+(e) 246.08 266.67 T
+(y release has no ef) 250.8 266.67 T
+(fect.) 331.77 266.67 T
+3 12 Q
+(T) 242.2 208 T
+(able 16.5 Gr) 249.1 208 T
+(oup Action Flags) 314.88 208 T
+1 F
+(Fla) 109 188 T
+(g) 125.55 188 T
+(Meaning) 253 188 T
+5 11 Q
+-0.33 (XkbSA_ClearLocks) 109 173.67 S
+2 F
+(If set and no k) 253 173.67 T
+(e) 315.82 173.67 T
+(ys are ph) 320.54 173.67 T
+(ysically depressed when this k) 360.2 173.67 T
+(e) 493.9 173.67 T
+(y) 498.62 173.67 T
+(transition occurs, the serv) 253 162.67 T
+(er sets the lock) 365.87 162.67 T
+(ed k) 431.44 162.67 T
+(e) 449.97 162.67 T
+(yboard group) 454.68 162.67 T
+(to) 253 151.67 T
+5 F
+-0.33 (Group1) 264.31 151.67 S
+2 F
+( on a k) 301.93 151.67 T
+(e) 331.45 151.67 T
+(y release.) 336.17 151.67 T
+5 F
+-0.33 (XkbSA_LatchToLock) 109 137.67 S
+2 F
+(If set, and the action type is) 253 137.67 T
+5 F
+-0.33 (SA_LatchGroup) 377.04 137.67 S
+2 F
+(, the serv) 458.55 137.67 T
+(er) 498.4 137.67 T
+(locks the action group if it is already latched.) 253 126.67 T
+5 F
+-0.33 (XkbSA_GroupAbsolute) 109 112.67 S
+2 F
+(If set, the) 253 112.67 T
+1 F
+(group_XXX) 296.99 112.67 T
+2 F
+( \336eld represents an absolute group) 348.93 112.67 T
+-0.12 (number) 253 101.67 P
+-0.12 (. Otherwise, it represents a group delta to be added to) 286 101.67 P
+(the current group to determine the ne) 253 90.67 T
+(w group number) 415.86 90.67 T
+(.) 487.96 90.67 T
+108 652 540 652 2 L
+V
+0.5 H
+0 Z
+N
+108 635 540 635 2 L
+V
+N
+108 200 522 200 2 L
+V
+N
+108 183 522 183 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "146" 158
+%%Page: "147" 159
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(147) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+-0.3 (The) 108 712 P
+1 F
+-0.3 (group_XXX) 129.36 712 P
+2 F
+-0.3 ( field represents a signed character. Xkb provides the following macros to) 186.02 712 P
+(convert between a signed integer value and a signed character:) 108 699 T
+2 11 Q
+(int) 108 678.67 T
+3 F
+(XkbSA) 122.37 678.67 T
+(Gr) 155.99 678.67 T
+(oup) 169.24 678.67 T
+2 F
+(\050) 186.97 678.67 T
+1 F
+(act) 190.63 678.67 T
+2 F
+(\051) 204.07 678.67 T
+(/* macro */) 342 678.67 T
+(XkbAction) 126 665.67 T
+1 F
+(act) 234 665.67 T
+2 F
+(;) 247.44 665.67 T
+(/* action from which to e) 342 665.67 T
+(xtract group */) 452.74 665.67 T
+1 12 Q
+(XkbSA) 108 646 T
+(Gr) 139.57 646 T
+(oup) 152.36 646 T
+2 F
+( returns the) 170.36 646 T
+1 F
+(group_XXX) 227.35 646 T
+2 F
+( field of) 284.02 646 T
+1 F
+(act) 325.01 646 T
+2 F
+( converted to a signed int.) 339.67 646 T
+2 11 Q
+(v) 108 625.67 T
+(oid) 113.28 625.67 T
+3 F
+(XkbSASetGr) 130.09 625.67 T
+(oup) 192.23 625.67 T
+2 F
+(\050) 209.96 625.67 T
+1 F
+(act, grp) 213.62 625.67 T
+2 F
+(\051) 247.84 625.67 T
+(/* macro */) 342 625.67 T
+(XkbAction) 126 612.67 T
+1 F
+(act) 234 612.67 T
+2 F
+(;) 247.44 612.67 T
+(/* action from which to set group */) 342 612.67 T
+(int) 126 599.67 T
+1 F
+(grp) 234 599.67 T
+2 F
+(;) 249.28 599.67 T
+(/* group inde) 342 599.67 T
+(x to set in) 400.5 599.67 T
+1 12 Q
+(gr) 446.33 599.67 T
+(oup_XXX) 456.46 599.67 T
+2 11 Q
+( */) 502.46 599.67 T
+1 12 Q
+(XkbSASetGr) 108 580 T
+(oup) 167.45 580 T
+2 F
+( sets the) 185.45 580 T
+1 F
+(group_XXX) 227.11 580 T
+2 F
+( field of) 283.78 580 T
+1 F
+(act) 324.77 580 T
+2 F
+( from the group index) 339.43 580 T
+1 F
+(grp) 447.08 580 T
+2 F
+(.) 463.75 580 T
+0 F
+(Note) 126 559.67 T
+2 11 Q
+(Despite the f) 162 559.67 T
+(act that the \336rst parameter of these tw) 218.1 559.67 T
+(o macros is of type XkbAction,) 383.87 559.67 T
+-0.13 (these macros may only be used with Actions of type) 162 547.67 P
+5 12 Q
+-0.32 -0.6 (XkbGroupAction) 393.48 547.67 B
+2 11 Q
+-0.13 ( and) 485.88 547.67 P
+5 12 Q
+-0.32 -0.6 (XkbI-) 507 547.67 B
+-0.6 (SOAction) 162 535.67 S
+2 11 Q
+(.) 214.8 535.67 T
+0 12 Q
+(16.1.5) 72 511 T
+(Actions f) 108 511 T
+(or Mo) 159.1 511 T
+(ving the P) 191.52 511 T
+(ointer) 248.39 511 T
+2 F
+(Actions associated with the) 108 491 T
+5 F
+-0.6 (XkbPtrAction) 242.65 491 S
+2 F
+( structure move the pointer when keys are) 321.85 491 T
+(pressed and released:) 108 478 T
+2 11 Q
+(typedef struct _XkbPtrAction {) 126 457.67 T
+(unsigned char) 144 444.67 T
+(type;) 234 444.67 T
+(/*) 306 444.67 T
+5 F
+-0.33 (XkbSA_MovePtr) 317.31 444.67 S
+5 12 Q
+-0.6 ( */) 398.82 444.67 S
+2 11 Q
+(unsigned char) 144 431.67 T
+(\337ags;) 234 431.67 T
+(/* determines type of pointer motion */) 306 431.67 T
+(unsigned char) 144 418.67 T
+(high_XXX;) 234 418.67 T
+(/* x coordinate, high bits*/) 306 418.67 T
+(unsigned char) 144 405.67 T
+(lo) 234 405.67 T
+(w_XXX;) 242.28 405.67 T
+(/* y coordinate, lo) 306 405.67 T
+(w bits */) 385.77 405.67 T
+(unsigned char) 144 392.67 T
+(high_YYY) 234 392.67 T
+(;) 281.87 392.67 T
+(/* x coordinate, high bits */) 306 392.67 T
+(unsigned char) 144 379.67 T
+(lo) 234 379.67 T
+(w_YYY) 242.28 379.67 T
+(;) 278.54 379.67 T
+(/* y coordinate, lo) 306 379.67 T
+(w bits */) 385.77 379.67 T
+(}) 126 366.67 T
+3 F
+(XkbPtrAction) 134.03 366.67 T
+2 F
+(;) 200.63 366.67 T
+2 12 Q
+(If the) 108 347 T
+5 F
+-0.6 (MouseKeys) 136.66 347 S
+2 F
+( control is not enabled \050see section 10.5.1\051,) 196.06 347 T
+5 F
+-0.6 (KeyPress) 405.02 347 S
+2 F
+( and) 457.83 347 T
+5 F
+-0.6 (KeyRe-) 481.15 347 S
+-0.6 (lease) 108 334 S
+2 F
+( events are treated as though the action is) 141 334 T
+5 F
+-0.6 (XkbSA_NoAction) 341.29 334 S
+2 F
+(.) 433.7 334 T
+(If the) 108 313 T
+5 F
+-0.6 (MouseKeys) 136.66 313 S
+2 F
+( control is enabled, a server action of type) 196.06 313 T
+5 F
+-0.6 (XkbSA_MovePtr) 400.01 313 S
+2 F
+( instructs) 485.81 313 T
+(the server to generate core pointer) 108 300 T
+5 F
+-0.6 (MotionNotify) 274.61 300 S
+2 F
+( events rather than the usual) 353.81 300 T
+5 F
+-0.6 (Key-) 491.11 300 S
+-0.6 (Press) 108 287 S
+2 F
+( event, and the corresponding) 141 287 T
+5 F
+-0.6 (KeyRelease) 285.64 287 S
+2 F
+( event disables any mouse keys timers) 351.64 287 T
+(that were created as a result of handling the) 108 274 T
+5 F
+-0.6 (XkbSA_MovePtr) 319.61 274 S
+2 F
+( action.) 405.41 274 T
+(The) 108 253 T
+1 F
+(type) 129.66 253 T
+2 F
+( field of the) 149.65 253 T
+5 F
+-0.6 (XkbPtrAction) 208.31 253 S
+2 F
+( structure is always) 287.51 253 T
+5 F
+-0.6 (XkbSA_MovePtr) 382.83 253 S
+2 F
+(.) 468.63 253 T
+(The) 108 232 T
+1 F
+(flags) 129.66 232 T
+2 F
+( field is a bitwise inclusive OR of the masks shown in Table 16.6.) 153 232 T
+3 F
+(T) 238.99 212 T
+(able 16.6 P) 245.89 212 T
+(ointer Action T) 304.32 212 T
+(ypes) 382.09 212 T
+1 F
+(Action T) 109 192 T
+(ype) 149.12 192 T
+(Meaning) 253 192 T
+5 11 Q
+-0.33 (XkbSA_NoAcceleration) 109 177.67 S
+2 F
+-0.24 (If not set, and the) 253 177.67 P
+5 F
+-0.54 -0.33 (MouseKeysAccel) 331.24 177.67 B
+2 F
+-0.24 ( control is enabled \050see) 419.02 177.67 P
+(section 10.5.2\051, the) 253 166.67 T
+5 F
+-0.33 (KeyPress) 339.77 166.67 S
+2 F
+( initiates a mouse k) 389.93 166.67 T
+(e) 474.76 166.67 T
+(ys timer) 479.48 166.67 T
+(for this k) 253 155.67 T
+(e) 292.61 155.67 T
+(y; e) 297.33 155.67 T
+(v) 313.25 155.67 T
+(ery time the timer e) 318.58 155.67 T
+(xpires, the cursor mo) 404.57 155.67 T
+(v) 497.28 155.67 T
+(es.) 502.61 155.67 T
+5 F
+-0.33 (XkbSA_MoveAbsoluteX) 109 141.67 S
+2 F
+-0.09 (If set, the X portion of the structure speci\336es the ne) 253 141.67 P
+-0.09 (w pointer) 477.58 141.67 P
+(X coordinate. Otherwise, the X portion is added to the cur-) 253 130.67 T
+(rent pointer X coordinate to determine the ne) 253 119.67 T
+(w pointer X) 450.99 119.67 T
+(coordinate.) 253 108.67 T
+108 204 522 204 2 L
+V
+0.5 H
+0 Z
+N
+108 187 522 187 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "147" 159
+%%Page: "148" 160
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(148) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(Each of the X and Y coordinantes of the) 108 620 T
+5 F
+-0.6 (XkbPtrAction) 304.28 620 S
+2 F
+( structure is composed of two) 383.49 620 T
+(signed 16-bit values, that is, the X coordinate is composed of) 108 607 T
+1 F
+(high_XXX) 404.3 607 T
+2 F
+( and) 453.64 607 T
+1 F
+(low_XXX) 476.96 607 T
+2 F
+(,) 522.3 607 T
+(and similarly for the Y coordinate. Xkb provides the following macros, to convert) 108 594 T
+(between a signed integer and two signed 16-bit values in) 108 581 T
+5 F
+-0.6 (XkbPtrAction) 383.29 581 S
+2 F
+( structures:) 462.49 581 T
+2 11 Q
+(int) 108 560.67 T
+3 F
+(XkbPtrActionX) 122.37 560.67 T
+2 F
+(\050) 196.91 560.67 T
+1 F
+(act) 200.58 560.67 T
+2 F
+(\051) 214.02 560.67 T
+(/* macro */) 342 560.67 T
+(XkbPtrAction) 126 547.67 T
+1 F
+(act) 234 547.67 T
+2 F
+(;) 247.44 547.67 T
+(/* action from which to e) 342 547.67 T
+(xtract X */) 452.74 547.67 T
+1 12 Q
+(XkbPtrActionX) 108 528 T
+2 F
+( returns the) 180.66 528 T
+1 F
+(high_XXX) 237.65 528 T
+2 F
+( and) 286.98 528 T
+1 F
+(low_XXX) 310.31 528 T
+2 F
+( fields of) 355.64 528 T
+1 F
+(act) 401.3 528 T
+2 F
+( converted to a signed int.) 415.97 528 T
+2 11 Q
+(int) 108 507.67 T
+3 F
+(XkbPtrActionY) 122.37 507.67 T
+2 F
+(\050) 196.91 507.67 T
+1 F
+(act) 200.58 507.67 T
+2 F
+(\051) 214.02 507.67 T
+(/* macro */) 342 507.67 T
+(XkbPtrAction) 126 494.67 T
+1 F
+(act) 234 494.67 T
+2 F
+(;) 247.44 494.67 T
+(/* action from which to e) 342 494.67 T
+(xtract Y */) 452.74 494.67 T
+1 12 Q
+(XkbPtrActionY) 108 475 T
+2 F
+( returns the) 180 475 T
+1 F
+(high_YYY) 236.99 475 T
+2 F
+( and) 284.34 475 T
+1 F
+(low_YYY) 307.67 475 T
+2 F
+( fields of) 351.02 475 T
+1 F
+(act) 396.68 475 T
+2 F
+( converted to a signed int.) 411.35 475 T
+2 11 Q
+(v) 108 454.67 T
+(oid) 113.28 454.67 T
+3 F
+(XkbSetPtrActionX) 130.09 454.67 T
+2 F
+(\050) 219.3 454.67 T
+1 F
+(act) 222.96 454.67 T
+2 F
+(,) 236.4 454.67 T
+1 F
+(x) 241.9 454.67 T
+2 F
+(\051) 246.79 454.67 T
+(/* macro */) 342 454.67 T
+(XkbPtrAction) 126 441.67 T
+1 F
+(act) 234 441.67 T
+2 F
+(;) 247.44 441.67 T
+(/* action in which to set X */) 342 441.67 T
+(int) 126 428.67 T
+1 F
+(x;) 234 428.67 T
+2 F
+(/* ne) 342 428.67 T
+(w v) 363.42 428.67 T
+(alue to set */) 379.33 428.67 T
+1 12 Q
+(XkbSetPtrActionX) 108 409 T
+2 F
+( sets the) 195.32 409 T
+1 F
+(high_XXX) 236.99 409 T
+2 F
+( and) 286.32 409 T
+1 F
+(low_XXX) 309.65 409 T
+2 F
+( fields of) 354.98 409 T
+1 F
+(act) 400.64 409 T
+2 F
+( from the signed integer) 415.31 409 T
+(value) 108 396 T
+1 F
+(x) 136.99 396 T
+2 F
+(.) 142.32 396 T
+2 11 Q
+(v) 108 375.67 T
+(oid) 113.28 375.67 T
+3 F
+(XkbSetPtrActionY) 130.09 375.67 T
+2 F
+(\050) 219.3 375.67 T
+1 F
+(act, y) 222.96 375.67 T
+2 F
+(\051) 246.79 375.67 T
+(/* macro */) 342 375.67 T
+(XkbPtrAction) 126 362.67 T
+1 F
+(act) 234 362.67 T
+2 F
+(;) 247.44 362.67 T
+(/* action in which to set Y */) 342 362.67 T
+(int) 126 349.67 T
+1 F
+(y) 234 349.67 T
+2 F
+(;) 238.88 349.67 T
+(/* ne) 342 349.67 T
+(w v) 363.42 349.67 T
+(alue to set */) 379.33 349.67 T
+1 12 Q
+(XkbSetPtrActionX) 108 330 T
+2 F
+( sets the) 195.32 330 T
+1 F
+(high_YYY) 236.99 330 T
+2 F
+( and) 284.34 330 T
+1 F
+(low_YYY) 307.67 330 T
+2 F
+( fields of) 351.02 330 T
+1 11 Q
+(act) 396.68 330 T
+2 12 Q
+( from the signed integer) 410.13 330 T
+(value) 108 317 T
+1 F
+(y) 136.99 317 T
+2 F
+(.) 142.32 317 T
+0 F
+(16.1.6) 72 292 T
+(Actions f) 108 292 T
+(or Sim) 159.1 292 T
+(ulating P) 196.2 292 T
+(ointer Button Press and Release) 246.4 292 T
+2 F
+(Actions associated with the) 108 272 T
+5 F
+-0.6 (XkbPtrBtnAction) 242.65 272 S
+2 F
+( structure simulate the press and release) 341.65 272 T
+(of pointer buttons when keys are pressed and released:) 108 259 T
+2 11 Q
+(typedef struct _XkbPtrBtnAction {) 126 238.67 T
+(unsigned char) 144 225.67 T
+(type;) 225 225.67 T
+(/*) 261 225.67 T
+5 F
+-0.33 (XkbSA_PtrBtn, XkbSA_LockPtrBtn) 269.56 225.67 S
+2 F
+( */) 457.66 225.67 T
+(unsigned char) 144 212.67 T
+(\337ags;) 225 212.67 T
+(/* with) 261 212.67 T
+1 F
+(type) 294.62 212.67 T
+2 F
+(, controls the ef) 312.94 212.67 T
+(fect on pointer b) 381.1 212.67 T
+(uttons*/) 453.28 212.67 T
+(unsigned char) 144 199.67 T
+(count;) 225 199.67 T
+(/* controls number of ButtonPress and ButtonRelease e) 261 199.67 T
+(v) 504.85 199.67 T
+(ents */) 510.18 199.67 T
+(unsigned char) 144 186.67 T
+(b) 225 186.67 T
+(utton;) 230.28 186.67 T
+(/* pointer b) 261 186.67 T
+(utton to simulate */) 311.5 186.67 T
+(}) 126 173.67 T
+3 F
+(XkbPtrBtnAction) 134.03 173.67 T
+2 F
+(;) 217.75 173.67 T
+2 12 Q
+(If the) 108 154 T
+5 F
+-0.6 (MouseKeys) 136.66 154 S
+2 F
+( \050see section 10.5.1\051 control is not enabled,) 196.06 154 T
+5 F
+-0.6 (KeyPress) 405.02 154 S
+2 F
+( and) 457.83 154 T
+5 F
+-0.6 (KeyRe-) 481.15 154 S
+-0.6 (lease) 108 141 S
+2 F
+( events are treated as though the action is) 141 141 T
+5 F
+-0.6 (XkbSA_NoAction) 341.29 141 S
+2 F
+(.) 433.7 141 T
+5 11 Q
+-0.33 (XkbSA_MoveAbsoluteY) 109 677.67 S
+2 F
+(If set, the Y portion of the structure speci\336es the ne) 253 677.67 T
+(w) 478.49 677.67 T
+(pointer Y coordinate. Otherwise, the Y portion is added) 253 666.67 T
+(to the current pointer Y coordinate to determine the ne) 253 655.67 T
+(w) 492.54 655.67 T
+(pointer Y coordinate.) 253 644.67 T
+3 12 Q
+(T) 238.99 712 T
+(able 16.6 P) 245.89 712 T
+(ointer Action T) 304.32 712 T
+(ypes) 382.09 712 T
+1 F
+(Action T) 109 692 T
+(ype) 149.12 692 T
+(Meaning) 253 692 T
+108 704 522 704 2 L
+V
+0.5 H
+0 Z
+N
+108 687 522 687 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "148" 160
+%%Page: "149" 161
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(149) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(The) 108 712 T
+1 F
+(type) 129.66 712 T
+2 F
+( field can have any one of the values shown in Table 16.7.) 149.65 712 T
+-0.33 (The) 108 346 P
+1 F
+-0.33 (flags) 129.33 346 P
+2 F
+-0.33 ( field is composed of the bitwise inclusive OR of the masks shown in Table 16.8.) 152.67 346 P
+-0.28 (A general meaning is given in the table, but the exact meaning depends on the action) 108 333 P
+1 F
+-0.28 (type) 513.85 333 P
+-0.28 (.) 533.66 333 P
+2 F
+-0.28 (:) 536.66 333 P
+0 F
+(16.1.7) 72 170 T
+(Actions f) 108 170 T
+(or Changing the P) 159.1 170 T
+(ointer Button Sim) 261.96 170 T
+(ulated) 362.39 170 T
+2 F
+(Actions associated with the) 108 150 T
+5 F
+-0.6 (XkbPtrDfltAction) 242.65 150 S
+2 F
+( structure change the) 348.25 150 T
+1 F
+(mk_dflt_btn) 450.89 150 T
+2 F
+(attribute of the) 108 137 T
+5 F
+-0.6 (MouseKeys) 181.66 137 S
+2 F
+( control \050) 241.06 137 T
+2 11 Q
+(see) 285.05 137 T
+2 12 Q
+(section 10.5.1\051:) 301.85 137 T
+2 11 Q
+(typedef struct _XkbPtrD\337tAction {) 126 116.67 T
+(unsigned char) 144 103.67 T
+(type;) 234 103.67 T
+(/*) 306 103.67 T
+5 F
+-0.33 (XkbSA_SetPtrDflt) 317.31 103.67 S
+2 F
+( */) 417.63 103.67 T
+(unsigned char) 144 90.67 T
+(\337ags;) 234 90.67 T
+(/* controls the pointer b) 306 90.67 T
+(utton number */) 410.89 90.67 T
+(unsigned char) 144 77.67 T
+(af) 234 77.67 T
+(fect;) 242.27 77.67 T
+(/*) 306 77.67 T
+5 F
+-0.33 (XkbSA_AffectDfltBtn) 317.31 77.67 S
+2 F
+( */) 436.44 77.67 T
+3 12 Q
+(T) 228.82 692 T
+(able 16.7 P) 235.72 692 T
+(ointer Button Action T) 294.15 692 T
+(ypes) 410.26 692 T
+1 F
+(T) 109 672 T
+(ype) 114.78 672 T
+(Ef) 217 672 T
+(fect) 227.45 672 T
+5 11 Q
+-0.33 (XkbSA_PtrBtn) 109 657.67 S
+2 F
+(\245) 217 653.67 T
+(If) 226 653.67 T
+5 F
+-0.33 ( XkbSA_UseDfltButton) 233.33 653.67 S
+2 F
+( is set in the) 358.73 653.67 T
+1 F
+(flags) 414.03 653.67 T
+2 F
+( \336eld, the e) 435.43 653.67 T
+(v) 484.04 653.67 T
+(ent is gen-) 489.37 653.67 T
+(erated for the pointer b) 226 642.67 T
+(utton speci\336ed by the) 326.58 642.67 T
+1 F
+(mk_dflt_btn) 423.75 642.67 T
+2 F
+( attrib) 476.3 642.67 T
+(ute of) 502.06 642.67 T
+(the) 226 631.67 T
+5 12 Q
+-0.6 (MouseKeys) 242.19 631.67 S
+2 11 Q
+( control \050see) 301.59 631.67 T
+2 12 Q
+(section 10.5.1) 358.72 631.67 T
+2 11 Q
+(\051. Otherwise, the e) 425.71 631.67 T
+(v) 506.39 631.67 T
+(ent is) 511.72 631.67 T
+(generated for the b) 226 620.67 T
+(utton speci\336ed by the) 308.55 620.67 T
+1 F
+(button) 405.72 620.67 T
+2 F
+( \336eld.) 433.83 620.67 T
+(\245) 217 609.67 T
+(If the mouse b) 226 609.67 T
+(utton speci\336ed for this action is logically do) 289.02 609.67 T
+(wn, the k) 482.16 609.67 T
+(e) 522.68 609.67 T
+(y) 527.4 609.67 T
+(press and corresponding k) 226 598.67 T
+(e) 341.06 598.67 T
+(y release are ignored and ha) 345.78 598.67 T
+(v) 468.65 598.67 T
+(e no ef) 473.98 598.67 T
+(fect.) 503.64 598.67 T
+(Otherwise, a k) 226 587.67 T
+(e) 289.73 587.67 T
+(y press causes one or more core pointer b) 294.45 587.67 T
+(utton e) 476.29 587.67 T
+(v) 506.27 587.67 T
+(ents) 511.6 587.67 T
+(instead of the usual) 226 576.67 T
+5 F
+-0.33 (KeyPress) 313.99 576.67 S
+2 F
+( e) 364.15 576.67 T
+(v) 371.51 576.67 T
+(ent. If) 376.84 576.67 T
+1 F
+(count) 405.86 576.67 T
+2 F
+( is) 430.3 576.67 T
+5 F
+-0.33 (zero) 443.14 576.67 S
+2 F
+(, a k) 468.22 576.67 T
+(e) 486.74 576.67 T
+(y press) 491.46 576.67 T
+-0.02 (generates a single) 226 565.67 P
+5 F
+-0.04 -0.33 (ButtonPress) 306.9 565.67 B
+2 F
+-0.02 ( e) 375.87 565.67 P
+-0.02 (v) 383.22 565.67 P
+-0.02 (ent; if) 388.55 565.67 P
+1 F
+-0.02 (count) 417.24 565.67 P
+2 F
+-0.02 ( is greater than) 441.68 565.67 P
+5 F
+-0.04 -0.33 (zero) 509.43 565.67 B
+2 F
+-0.02 (,) 534.52 565.67 P
+(a k) 226 554.67 T
+(e) 239.02 554.67 T
+(y press generates) 243.74 554.67 T
+1 F
+(count) 321.63 554.67 T
+2 F
+( pairs of) 346.08 554.67 T
+5 F
+-0.33 (ButtonPress) 384.87 554.67 S
+2 F
+( and) 453.84 554.67 T
+5 F
+-0.33 (ButtonRe-) 475.23 554.67 S
+-0.33 (lease) 226 543.67 S
+2 F
+( e) 257.35 543.67 T
+(v) 264.71 543.67 T
+(ents.) 270.04 543.67 T
+(\245) 217 532.67 T
+(If) 226 532.67 T
+1 F
+(count) 236.08 532.67 T
+2 F
+( is) 260.52 532.67 T
+5 12 Q
+-0.6 (zero) 273.36 532.67 S
+2 11 Q
+(, a k) 299.76 532.67 T
+(e) 318.28 532.67 T
+(y release generates a core pointer) 323 532.67 T
+5 F
+-0.33 (ButtonRe-) 472.05 532.67 S
+-0.33 (lease) 226 521.67 S
+2 F
+( that matches the e) 257.35 521.67 T
+(v) 338.95 521.67 T
+(ent generated by the corresponding) 344.28 521.67 T
+5 F
+-0.33 (Key-) 501.61 521.67 S
+-0.33 (Press) 226 510.67 S
+2 F
+(; if) 257.35 510.67 T
+1 F
+(count) 272.63 510.67 T
+2 F
+( is nonzero, a k) 297.07 510.67 T
+(e) 363.86 510.67 T
+(y release does not cause a) 368.58 510.67 T
+5 F
+-0.33 (ButtonRelease) 226 499.67 S
+2 F
+( e) 307.51 499.67 T
+(v) 314.87 499.67 T
+(ent. A k) 320.2 499.67 T
+(e) 355.23 499.67 T
+(y release ne) 359.95 499.67 T
+(v) 411.59 499.67 T
+(er generates a k) 416.93 499.67 T
+(e) 485.53 499.67 T
+(y) 490.25 499.67 T
+5 F
+-0.33 (KeyRe-) 498.5 499.67 S
+-0.33 (lease) 226 488.67 S
+2 F
+( e) 257.35 488.67 T
+(v) 264.71 488.67 T
+(ent.) 270.04 488.67 T
+5 F
+-0.33 (XkbSA_LockPtrBtn) 109 474.67 S
+2 F
+(\245) 217 470.67 T
+(If the b) 226 470.67 T
+(utton speci\336ed by the) 257.55 470.67 T
+5 F
+-0.33 (MouseKeys) 354.71 470.67 S
+2 F
+( def) 411.14 470.67 T
+(ault b) 427.83 470.67 T
+(utton) 452.36 470.67 T
+(or) 477.72 470.67 T
+1 F
+(button) 489.64 470.67 T
+2 F
+( is) 517.75 470.67 T
+(not lock) 226 459.67 T
+(ed, a k) 261.64 459.67 T
+(e) 290.55 459.67 T
+(y press causes a) 295.27 459.67 T
+5 F
+-0.33 (ButtonPress) 367.97 459.67 S
+2 F
+( e) 436.94 459.67 T
+(v) 444.3 459.67 T
+(ent instead of a) 449.63 459.67 T
+5 F
+-0.33 (KeyPress) 226 448.67 S
+2 F
+( e) 276.16 448.67 T
+(v) 283.52 448.67 T
+(ent and locks the b) 288.85 448.67 T
+(utton. If the b) 371.12 448.67 T
+(utton is already lock) 430.79 448.67 T
+(ed) 520.2 448.67 T
+(or if) 226 437.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 247.38 437.67 S
+2 F
+( is set in the) 360.24 437.67 T
+1 F
+(flags) 415.55 437.67 T
+2 F
+( \336eld, a k) 436.95 437.67 T
+(e) 477.78 437.67 T
+(y press is) 482.5 437.67 T
+(ignored and has no ef) 226 426.67 T
+(fect.) 320.42 426.67 T
+(\245) 217 415.67 T
+(If the corresponding k) 226 415.67 T
+(e) 323.34 415.67 T
+(y press w) 328.06 415.67 T
+(as ignored, and if) 369.49 415.67 T
+5 F
+-0.33 (XkbSA_LockNoLock) 226 404.67 S
+2 F
+( is not set in the) 326.32 404.67 T
+1 F
+(flags) 398.44 404.67 T
+2 F
+( \336eld, a k) 419.83 404.67 T
+(e) 460.66 404.67 T
+(y release gener-) 465.38 404.67 T
+(ates a) 226 393.67 T
+5 F
+-0.33 (ButtonRelease) 253.49 393.67 S
+2 F
+( e) 335 393.67 T
+(v) 342.36 393.67 T
+(ent instead of a) 347.69 393.67 T
+5 F
+-0.33 (KeyRelease) 417.35 393.67 S
+2 F
+( e) 480.05 393.67 T
+(v) 487.4 393.67 T
+(ent and) 492.74 393.67 T
+(unlocks the speci\336ed b) 226 382.67 T
+(utton. If the corresponding k) 326.3 382.67 T
+(e) 451.75 382.67 T
+(y press lock) 456.47 382.67 T
+(ed a) 508.91 382.67 T
+(b) 226 371.67 T
+(utton, the k) 231.28 371.67 T
+(e) 280.98 371.67 T
+(y release is ignored and has no ef) 285.7 371.67 T
+(fect.) 431.74 371.67 T
+3 12 Q
+(T) 225.55 313 T
+(able 16.8 P) 232.45 313 T
+(ointer Button Action Flags) 290.87 313 T
+1 F
+(Fla) 109 293 T
+(g) 125.55 293 T
+(Meaning) 244 293 T
+5 11 Q
+-0.33 (XkbSA_UseDfltButton) 109 278.67 S
+2 F
+(If set, the action uses the pointer b) 244 278.67 T
+(utton speci\336ed by the) 394.7 278.67 T
+1 F
+(mk_dflt_btn) 244 267.67 T
+2 F
+( attrib) 296.56 267.67 T
+(ute of the) 322.31 267.67 T
+5 F
+-0.33 (MouseKeys) 366.61 267.67 S
+2 F
+( control \050see section) 423.04 267.67 T
+-0.43 (10.5.1\051. Otherwise, the action uses the pointer b) 244 256.67 P
+-0.43 (utton speci\336ed by) 451.3 256.67 P
+(the) 244 245.67 T
+1 F
+( button) 257.44 245.67 T
+2 F
+(\336eld.) 291.06 245.67 T
+5 F
+-0.33 (XkbSA_LockNoLock) 109 231.67 S
+2 F
+(If set, and the action type is) 244 231.67 T
+5 F
+-0.33 (XkbSA_LockPtrBtn) 368.04 231.67 S
+2 F
+(, the serv) 468.36 231.67 T
+(er) 508.21 231.67 T
+(only unlocks the pointer b) 244 220.67 T
+(utton.) 358.66 220.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 109 206.67 S
+2 F
+(If set, and the action type is) 244 206.67 T
+5 F
+-0.33 (XkbSA_LockPtrBtn) 368.04 206.67 S
+2 F
+(, the serv) 468.36 206.67 T
+(er) 508.21 206.67 T
+(only locks the pointer b) 244 195.67 T
+(utton.) 347.66 195.67 T
+108 684 540 684 2 L
+V
+0.5 H
+0 Z
+N
+108 667 540 667 2 L
+V
+N
+108 305 531 305 2 L
+V
+N
+108 288 531 288 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "149" 161
+%%Page: "150" 162
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(150) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(char) 144 712.67 T
+(v) 234 712.67 T
+(alueXXX;) 239.23 712.67 T
+(/* ne) 306 712.67 T
+(w def) 327.42 712.67 T
+(ault b) 352.05 712.67 T
+(utton member */) 376.58 712.67 T
+(}) 126 699.67 T
+3 F
+(XkbPtrD\337tAction) 134.03 699.67 T
+2 F
+(;) 218.36 699.67 T
+2 12 Q
+-0.06 (If the) 108 680 P
+5 F
+-0.14 -0.6 (MouseKeys) 136.53 680 B
+2 F
+-0.06 ( control is not enabled,) 195.93 680 P
+5 F
+-0.14 -0.6 (KeyPress) 308.28 680 B
+2 F
+-0.06 ( and) 361.08 680 P
+5 F
+-0.14 -0.6 (KeyRelease) 384.28 680 B
+2 F
+-0.06 ( events are treated) 450.28 680 P
+-0.36 (as though the action is) 108 667 P
+5 F
+-0.8 -0.6 (XkbSA_NoAction) 216.51 667 B
+2 F
+-0.36 (. Otherwise, this action changes the) 308.91 667 P
+1 F
+-0.36 (mk_dflt_btn) 480.03 667 P
+2 F
+(attribute of the) 108 654 T
+5 F
+-0.6 (MouseKeys) 181.66 654 S
+2 F
+( control.) 241.06 654 T
+(The) 108 633 T
+1 F
+(type) 129.66 633 T
+2 F
+( field of the) 149.65 633 T
+5 F
+-0.6 (XkbPtrDfltAction) 208.31 633 S
+2 F
+( structure should always be) 313.91 633 T
+5 F
+-0.6 (XkbSA_SetPtrDflt) 108 620 S
+2 F
+(.) 213.6 620 T
+-0.19 (The) 108 599 P
+1 F
+-0.19 (flags) 129.47 599 P
+2 F
+-0.19 ( field is composed of the bitwise inclusive OR of the values shown in Table 16.9) 152.81 599 P
+(\050currently there is only one value defined\051.) 108 586 T
+(The) 108 484 T
+1 F
+(affect) 129.66 484 T
+2 F
+( field specifies what changes as a result of this action. The only valid value for) 156.32 484 T
+(the) 108 471 T
+1 F
+(affect) 125.66 471 T
+2 F
+( field is) 152.33 471 T
+5 F
+-0.6 (XkbSA_AffectDfltBtn) 191.33 471 S
+2 F
+(.) 316.73 471 T
+(The) 108 450 T
+1 F
+(valueXXX) 129.66 450 T
+2 F
+( field is a signed character that represents the new button value for the) 177.65 450 T
+1 F
+(mk_dflt_btn) 108 437 T
+2 F
+( attribute of the) 165.34 437 T
+5 F
+-0.6 (MouseKeys) 241.99 437 S
+2 F
+( control \050see section 10.5.1\051. If) 301.39 437 T
+5 F
+-0.6 (XkbSA_DfltBtnAbsolute) 108 424 S
+2 F
+( is set in) 246.6 424 T
+1 F
+(\337a) 289.27 424 T
+(gs) 301.15 424 T
+2 F
+(,) 311.82 424 T
+1 F
+(valueXXX) 317.82 424 T
+2 F
+( specifies the button to be used; oth-) 365.81 424 T
+(erwise,) 108 411 T
+1 F
+(valueXXX) 145.32 411 T
+2 F
+( specifies the amount to be added to the current default button. In either) 193.31 411 T
+(case, illegal button choices are wrapped back around into range. Xkb provides the follow-) 108 398 T
+(ing macros, to convert between the integer and signed character values in) 108 385 T
+5 F
+-0.6 (XkbPtrDfl-) 462.91 385 S
+-0.6 (tAction) 108 372 S
+2 F
+( structures:) 154.2 372 T
+2 11 Q
+(int) 108 351.67 T
+3 F
+(XkbSAPtrD\337tV) 122.37 351.67 T
+(alue) 196.52 351.67 T
+2 F
+(\050) 216.07 351.67 T
+1 F
+(act) 219.74 351.67 T
+2 F
+(\051) 233.18 351.67 T
+(/* macro */) 342 351.67 T
+(XkbAction) 126 338.67 T
+1 F
+(act) 234 338.67 T
+2 F
+(;) 247.44 338.67 T
+(/* action from which to e) 342 338.67 T
+(xtract group */) 452.74 338.67 T
+1 12 Q
+(XkbSAPtrD\337tV) 108 319 T
+(alue) 179.33 319 T
+2 F
+( returns the) 199.99 319 T
+1 F
+(valueXXX) 256.98 319 T
+2 F
+( field of) 304.97 319 T
+1 F
+(act) 345.96 319 T
+2 F
+( converted to a signed int.) 360.62 319 T
+2 11 Q
+(v) 108 298.67 T
+(oid) 113.28 298.67 T
+3 F
+(XkbSASetPtrD\337tV) 130.09 298.67 T
+(alue) 218.9 298.67 T
+2 F
+(\050) 238.46 298.67 T
+1 F
+(act, val) 242.12 298.67 T
+2 F
+(\051) 274.51 298.67 T
+(/* macro */) 342 298.67 T
+(XkbPtrD\337tAction) 126 285.67 T
+1 F
+(act) 234 285.67 T
+2 F
+(;) 247.44 285.67 T
+(/* action in which to set) 342 285.67 T
+1 F
+(valueXXX) 450.16 285.67 T
+2 F
+( */) 494.15 285.67 T
+(int) 126 272.67 T
+1 F
+(val) 234 272.67 T
+2 F
+(;) 247.44 272.67 T
+(/* v) 342 272.67 T
+(alue to set in) 358.53 272.67 T
+1 F
+(valueXXX) 417.2 272.67 T
+2 F
+( */) 461.18 272.67 T
+1 12 Q
+(XkbSASetPtrD\337tV) 108 253 T
+(alue) 193.99 253 T
+2 F
+( sets the) 214.66 253 T
+1 F
+(valueXXX) 256.32 253 T
+2 F
+( field of) 304.31 253 T
+1 F
+(act) 345.3 253 T
+2 F
+( from) 359.96 253 T
+1 F
+(val) 389.29 253 T
+2 F
+(.) 403.96 253 T
+0 F
+(16.1.8) 72 228 T
+(Actions f) 108 228 T
+(or Loc) 159.1 228 T
+(king Modi\336er) 195.53 228 T
+(s and Gr) 270.02 228 T
+(oup) 318.47 228 T
+2 F
+(Actions associated with the) 108 208 T
+5 F
+-0.6 (XkbISOAction) 242.65 208 S
+2 F
+( structure lock modifiers and the group) 321.85 208 T
+(according to the ISO9995 specification.) 108 195 T
+(Operated by itself, the) 108 174 T
+5 F
+-0.6 (XkbISOAction) 217.64 174 S
+2 F
+( is just a caps lock. Operated simultaneously with) 296.85 174 T
+(another modifier key, it transforms the other key into a locking key. For example, press) 108 161 T
+4 11 Q
+(ISO_Loc) 108 148 T
+(k) 150.58 148 T
+2 12 Q
+(, press and release) 156.08 148 T
+4 11 Q
+(Control_L) 246.38 148 T
+2 12 Q
+(, release) 294.07 148 T
+4 11 Q
+(ISO_Loc) 336.38 148 T
+(k) 378.96 148 T
+2 12 Q
+( ends up locking the) 384.46 148 T
+5 F
+-0.6 (Control) 484.12 148 S
+2 F
+(modifier.) 108 135 T
+(The default behavior is to convert:) 108 114 T
+2 11 Q
+( {Set,Latch}Mods to: LockMods) 139.68 93.67 T
+( {Set,Latch}Group to: LockGroup) 139.68 80.67 T
+( SetPtrBtn to: LockPtrBtn) 139.68 67.67 T
+3 12 Q
+(T) 238.72 566 T
+(able 16.9 P) 245.62 566 T
+(ointer Default Flags) 304.05 566 T
+1 F
+(Fla) 109 546 T
+(g) 125.55 546 T
+(Meaning) 254 546 T
+5 11 Q
+-0.33 (XkbSA_DfltBtnAbsolute) 109 531.67 S
+2 F
+(If set, the) 254 531.67 T
+1 F
+(value) 297.99 531.67 T
+2 F
+( \336eld represents an absolute pointer b) 321.82 531.67 T
+(utton.) 485.96 531.67 T
+(Otherwise, the) 254 520.67 T
+1 F
+(value) 320.9 520.67 T
+2 F
+( \336eld represents the amount to be added) 344.73 520.67 T
+(to the current def) 254 509.67 T
+(ault b) 329.34 509.67 T
+(utton.) 353.87 509.67 T
+108 558 523 558 2 L
+V
+0.5 H
+0 Z
+N
+108 541 523 541 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "150" 162
+%%Page: "151" 163
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(151) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+( SetControls to: LockControls) 139.68 712.67 T
+2 12 Q
+(The) 108 693 T
+1 F
+(affects) 129.66 693 T
+2 F
+( field allows you to turn those effects on or off individually. Set) 160.99 693 T
+5 F
+-0.6 (XkbSA_ISONoAffectMods) 108 680 S
+2 F
+( to disable the first,) 246.6 680 T
+5 F
+-0.6 (XkbSA_ISONoAffectGroup) 341.93 680 S
+2 F
+( to disable) 487.13 680 T
+(the second, and so forth.) 108 667 T
+2 11 Q
+(typedef struct _XkbISO) 126 646.67 T
+(Action {) 230.71 646.67 T
+(unsigned char) 144 633.67 T
+(type;) 216 633.67 T
+(/*) 261 633.67 T
+5 F
+-0.33 (XkbSA_ISOLock) 272.31 633.67 S
+2 F
+( */) 353.82 633.67 T
+(unsigned char) 144 620.67 T
+(\337ags;) 216 620.67 T
+(/* controls changes to group or modi\336er state */) 261 620.67 T
+(unsigned char) 144 607.67 T
+(mask;) 216 607.67 T
+(/*) 261 607.67 T
+2 12 Q
+(same as) 272.31 607.67 T
+1 F
+(mask) 312.96 607.67 T
+2 F
+( field of a modifier description) 337.62 607.67 T
+2 11 Q
+( */) 484.6 607.67 T
+(unsigned char) 144 594.67 T
+(real_mods;) 216 594.67 T
+(/* same as) 264.88 594.67 T
+1 12 Q
+(real_mods) 313.46 594.67 T
+2 11 Q
+(\336eld of a modi\336er description) 367.12 594.67 T
+2 12 Q
+( */) 497.89 594.67 T
+2 11 Q
+(char) 144 581.67 T
+(group_XXX;) 216 581.67 T
+(/* group inde) 274.05 581.67 T
+(x or delta group */) 332.55 581.67 T
+(unsigned char) 144 568.67 T
+(af) 216 568.67 T
+(fect;) 224.27 568.67 T
+(/* speci\336es whether to af) 261 568.67 T
+(fect mods, group, ptrbtn, or controls*/) 370.7 568.67 T
+(unsigned char) 144 555.67 T
+(vmods1;) 216 555.67 T
+(/* deri) 261 555.67 T
+(v) 289.14 555.67 T
+(ed from) 294.47 555.67 T
+1 12 Q
+(vmods) 331.74 555.67 T
+2 F
+( field of a modifier description) 362.4 555.67 T
+2 11 Q
+( */) 509.38 555.67 T
+(unsigned char) 144 542.67 T
+(vmods2;) 216 542.67 T
+(/* deri) 261 542.67 T
+(v) 289.14 542.67 T
+(ed from) 294.47 542.67 T
+1 12 Q
+(vmods) 331.74 542.67 T
+2 F
+( field of a modifier description) 362.4 542.67 T
+2 11 Q
+( */) 509.38 542.67 T
+(}) 126 529.67 T
+3 F
+(XkbISO) 134.03 529.67 T
+(Action) 172.72 529.67 T
+2 F
+(;) 203.88 529.67 T
+2 12 Q
+(The) 108 510 T
+1 F
+(type) 129.66 510 T
+2 F
+( field of the) 149.65 510 T
+5 F
+-0.6 (XkbISOAction) 208.31 510 S
+2 F
+( structure should always be) 287.51 510 T
+5 F
+-0.6 (XkbSA_ISOLock) 421.15 510 S
+2 F
+(.) 506.95 510 T
+-0.16 (The interpretation of the) 108 489 P
+1 F
+-0.16 (flags) 227.32 489 P
+2 F
+-0.16 ( field depends on whether the) 250.66 489 P
+5 F
+-0.36 -0.6 (XkbSA_ISODfltIsGroup) 394.32 489 B
+2 F
+-0.16 ( is) 526.32 489 P
+(set in the) 108 476 T
+1 F
+(flags) 154.33 476 T
+2 F
+( field or not.) 177.67 476 T
+(If the) 108 455 T
+5 F
+-0.6 (XkbSA_ISODfltIsGroup) 136.66 455 S
+2 F
+( is set in the) 268.66 455 T
+1 F
+(flags) 328.99 455 T
+2 F
+( field, the action is used to change the) 352.33 455 T
+-0.27 (group state. The remaining valid bits of the) 108 442 P
+1 F
+-0.27 (flags) 316.17 442 P
+2 F
+-0.27 ( field are composed of a bitwise inclusive) 339.51 442 P
+(OR using the masks shown in Table 16.10.) 108 429 T
+3 F
+(T) 154.85 409 T
+(able 16.10 ISO Action Flags when XkbSA_ISOD\337tIsGr) 161.75 409 T
+(oup is Set) 447.56 409 T
+1 F
+(Fla) 109 389 T
+(g) 125.55 389 T
+(Meaning) 261 389 T
+5 11 Q
+-0.33 (XkbSA_ISODfltIsGroup) 109 374.67 S
+2 F
+-0.06 (If set, the action is used to change the base group state. Must) 261 374.67 P
+(be set for the remaining bits in this table to carry their inter-) 261 363.67 T
+(pretations.) 261 352.67 T
+2 12 Q
+(A key press sets the base group as specified by the) 261 337.67 T
+1 F
+-0.64 (group_XXX) 261 326.67 P
+2 F
+-0.64 ( field and the) 317.66 326.67 P
+5 11 Q
+-1.33 -0.33 (XkbSA_GroupAbsolute) 381.11 326.67 B
+2 12 Q
+-0.64 ( bit of) 500.24 326.67 P
+-0.09 (the) 261 315.67 P
+1 F
+-0.09 (flags) 278.58 315.67 P
+2 F
+-0.09 ( field \050see section Note\051. If no other actions are) 301.92 315.67 P
+(transformed by the) 261 304.67 T
+5 11 Q
+-0.33 (XkbISO_Lock) 354.65 304.67 S
+2 12 Q
+( action, a key release) 423.62 304.67 T
+(locks the group. Otherwise, a key release clears group) 261 293.67 T
+(set by the key press.) 261 282.67 T
+5 11 Q
+-0.33 (XkbSA_GroupAbsolute) 109 268.67 S
+2 F
+(If set, the) 261 268.67 T
+1 F
+(group_XXX) 304.99 268.67 T
+2 F
+( \336eld represents an absolute group) 356.93 268.67 T
+-0.12 (number) 261 257.67 P
+-0.12 (. Otherwise, it represents a group delta to be added to) 294 257.67 P
+(the current group to determine the ne) 261 246.67 T
+(w group number) 423.86 246.67 T
+(.) 495.96 246.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectMods) 109 232.67 S
+2 F
+(If not set, an) 261 232.67 T
+(y) 315.82 232.67 T
+5 F
+-0.33 (XkbSA_SetMods) 324.07 232.67 S
+2 F
+( or) 405.58 232.67 T
+5 F
+-0.33 (XkbSA_LatchMods) 420.25 232.67 S
+2 F
+-0.5 (actions that occur simultaneously with the) 261 221.67 P
+5 F
+-1.13 -0.33 (XkbSA_ISOLock) 446.23 221.67 B
+2 F
+(action are treated as) 261 210.67 T
+5 F
+-0.33 (XkbSA_LockMod) 351.41 210.67 S
+2 F
+( actions instead.) 432.92 210.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectGroup) 109 196.67 S
+2 F
+(If not set, an) 261 196.67 T
+(y) 315.82 196.67 T
+5 F
+-0.33 (XkbSA_SetGroup) 324.07 196.67 S
+2 F
+( or) 411.85 196.67 T
+5 F
+-0.33 (XkbSA_LatchGroup) 426.52 196.67 S
+2 F
+-0.5 (actions that occur simultaneously with the) 261 185.67 P
+5 F
+-1.13 -0.33 (XkbSA_ISOLock) 446.23 185.67 B
+2 F
+(action are treated as) 261 174.67 T
+5 F
+-0.33 (XkbSA_LockGroup) 351.41 174.67 S
+2 F
+( actions instead.) 445.46 174.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectPtr) 109 160.67 S
+2 F
+(If not set, an) 261 160.67 T
+(y) 315.82 160.67 T
+5 F
+-0.33 (XkbSA_PtrBtn) 324.07 160.67 S
+2 F
+( actions that occur simulta-) 399.31 160.67 T
+(neously with the) 261 149.67 T
+5 F
+-0.33 (XkbSA_ISOLock) 336.47 149.67 S
+2 F
+( action are treated as) 417.98 149.67 T
+5 F
+-0.33 (XkbSA_LockPtrBtn) 261 138.67 S
+2 F
+( actions instead.) 361.32 138.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectCtrls) 109 124.67 S
+2 F
+(If not set, an) 261 124.67 T
+(y) 315.82 124.67 T
+5 F
+-0.33 (XkbSA_SetControls) 324.07 124.67 S
+2 F
+( actions that occur) 430.66 124.67 T
+-0.23 (simultaneously with the) 261 113.67 P
+5 F
+-0.53 -0.33 (XkbSA_ISOLock) 368.17 113.67 B
+2 F
+-0.23 ( action are treated) 449.68 113.67 P
+(as) 261 102.67 T
+5 F
+-0.33 (XkbSA_LockControls) 272.91 102.67 S
+2 F
+( actions instead.) 385.77 102.67 T
+108 401 530 401 2 L
+V
+0.5 H
+0 Z
+N
+108 384 530 384 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "151" 163
+%%Page: "152" 164
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(152) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(If the) 108 712 T
+5 F
+-0.6 (XkbSA_ISODfltIsGroup) 136.66 712 S
+2 F
+( is not set in the) 268.66 712 T
+1 F
+(flags) 347.33 712 T
+2 F
+( field, the action is used to change) 370.67 712 T
+-0.13 (the modifier state and the remaining valid bits of the) 108 699 P
+1 F
+-0.13 (flags) 361.3 699 P
+2 F
+-0.13 ( field are composed of a bitwise) 384.64 699 P
+(inclusive OR using the masks shown in Table 16.11.) 108 686 T
+(The) 108 295 T
+1 F
+(group_XXX) 129.66 295 T
+2 F
+( field represents a signed character. Xkb provides macros to convert) 186.32 295 T
+(between a signed integer value and a signed character as shown in section Note.) 108 282 T
+(The) 108 261 T
+1 F
+(mask) 129.66 261 T
+2 F
+(,) 154.32 261 T
+1 F
+(real_mods) 160.32 261 T
+2 F
+(,) 210.98 261 T
+1 F
+(vmods1) 216.98 261 T
+2 F
+(, and) 253.64 261 T
+1 F
+(vmods2) 279.97 261 T
+2 F
+( fields represent the components of an Xkb) 316.63 261 T
+(modifier description \050see section 7.2\051. While the) 108 248 T
+1 F
+(mask) 342.96 248 T
+2 F
+( and) 367.62 248 T
+1 F
+(real_mods) 390.95 248 T
+2 F
+( fields correspond) 441.61 248 T
+-0.09 (directly to the) 108 235 P
+1 F
+-0.09 (mask) 177.41 235 P
+2 F
+-0.09 ( and) 202.07 235 P
+1 F
+-0.09 (real_mods) 225.22 235 P
+2 F
+-0.09 ( fields of an Xkb modifier description, the) 275.89 235 P
+1 F
+-0.09 (vmods1) 480.18 235 P
+2 F
+-0.09 ( and) 516.84 235 P
+1 F
+(vmods2) 108 222 T
+2 F
+( fields are combined to correspond to the) 144.66 222 T
+1 F
+(vmods) 343.96 222 T
+2 F
+( field of an Xkb modifier descrip-) 374.62 222 T
+-0.04 (tion. Xkb provides macros to convert between the two formats as shown in section 16.1.3.) 108 209 P
+(The) 108 188 T
+1 F
+(affect) 129.66 188 T
+2 F
+( field is composed of a bitwise inclusive OR using the masks shown in Table) 156.32 188 T
+(16.11.) 108 175 T
+3 F
+(T) 144.02 666 T
+(able 16.11 ISO Action Flags when XkbSA_ISOD\337tIsGr) 150.92 666 T
+(oup is Not Set) 436.73 666 T
+1 F
+(Fla) 109 646 T
+(g) 125.55 646 T
+(Meaning) 261 646 T
+5 11 Q
+-0.33 (XkbSA_ISODfltIsGroup) 109 631.67 S
+2 F
+(If not set, action is used to change the base modi\336er state.) 261 631.67 T
+(Must not be set for the remaining bits in this table to carry) 261 620.67 T
+(their interpretations.) 261 609.67 T
+(A k) 261 594.67 T
+(e) 277.08 594.67 T
+(y press sets the action modi\336ers in the k) 281.8 594.67 T
+(e) 457.68 594.67 T
+(yboard\325) 462.4 594.67 T
+(s base) 496 594.67 T
+(modi\336ers using) 261 583.67 T
+2 12 Q
+(the) 331.89 583.67 T
+1 F
+(mask) 349.56 583.67 T
+2 F
+(,) 374.22 583.67 T
+1 F
+(real_mods) 380.22 583.67 T
+2 F
+(,) 430.88 583.67 T
+1 F
+(vmods1) 436.88 583.67 T
+2 F
+(, and) 473.54 583.67 T
+1 F
+(vmods2) 261 572.67 T
+2 F
+(fields) 300.66 572.67 T
+2 11 Q
+( \050see section 16.1.3\051. If) 327.32 572.67 T
+2 12 Q
+(no other actions are) 431.19 572.67 T
+(transformed by the) 261 561.67 T
+5 11 Q
+-0.33 (XkbISO_Lock) 354.65 561.67 S
+2 12 Q
+( action, a key release) 423.62 561.67 T
+(locks the action modifiers. Otherwise, a key release) 261 550.67 T
+(clears the base modifiers set by the key press.) 261 539.67 T
+5 11 Q
+-0.33 (XkbSA_UseModMapMods) 109 525.67 S
+2 F
+(If set, the action modi\336ers are determined by the modi\336ers) 261 525.67 T
+(bound by the modi\336er mapping of the k) 261 514.67 T
+(e) 435.97 514.67 T
+(y) 440.68 514.67 T
+(. Otherwise, the) 445.47 514.67 T
+(action modi\336ers are set to the modi\336ers speci\336ed by the) 261 503.67 T
+1 F
+(mask) 261 492.67 T
+2 F
+(,) 283.61 492.67 T
+1 F
+(real_mods) 289.11 492.67 T
+2 F
+(,) 335.55 492.67 T
+1 F
+(vmod1) 341.05 492.67 T
+2 F
+(, and) 370.37 492.67 T
+1 F
+(vmod2) 394.51 492.67 T
+2 F
+( \336elds.) 423.83 492.67 T
+5 F
+-0.33 (XkbSA_LockNoLock) 109 478.67 S
+2 F
+(If set, the serv) 261 478.67 T
+(er only unlocks the action modi\336ers.) 323.15 478.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 109 464.67 S
+2 F
+(If set, the serv) 261 464.67 T
+(er only locks the action modi\336ers.) 323.15 464.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectMods) 109 450.67 S
+2 F
+(If not set, an) 261 450.67 T
+(y) 315.82 450.67 T
+5 F
+-0.33 (XkbSA_SetMods) 324.07 450.67 S
+2 F
+( or) 405.58 450.67 T
+5 F
+-0.33 (XkbSA_LatchMods) 420.25 450.67 S
+2 F
+-0.5 (actions that occur simultaneously with the) 261 439.67 P
+5 F
+-1.13 -0.33 (XkbSA_ISOLock) 446.23 439.67 B
+2 F
+(action are treated as) 261 428.67 T
+5 F
+-0.33 (XkbSA_LockMod) 351.41 428.67 S
+2 F
+( actions instead.) 432.92 428.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectGroup) 109 414.67 S
+2 F
+(If not set, an) 261 414.67 T
+(y) 315.82 414.67 T
+5 F
+-0.33 (XkbSA_SetGroup) 324.07 414.67 S
+2 F
+( or) 411.85 414.67 T
+5 F
+-0.33 (XkbSA_LatchGroup) 426.52 414.67 S
+2 F
+-0.5 (actions that occur simultaneously with the) 261 403.67 P
+5 F
+-1.13 -0.33 (XkbSA_ISOLock) 446.23 403.67 B
+2 F
+(action are treated as) 261 392.67 T
+5 F
+-0.33 (XkbSA_LockGroup) 351.41 392.67 S
+2 F
+( actions instead.) 445.46 392.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectPtr) 109 378.67 S
+2 F
+(If not set, an) 261 378.67 T
+(y) 315.82 378.67 T
+5 F
+-0.33 (XkbSA_PtrBtn) 324.07 378.67 S
+2 F
+( actions that occur simulta-) 399.31 378.67 T
+(neously with the) 261 367.67 T
+5 F
+-0.33 (XkbSA_ISOLock) 336.47 367.67 S
+2 F
+( action are treated as) 417.98 367.67 T
+5 F
+-0.33 (XkbSA_LockPtrBtn) 261 356.67 S
+2 F
+( actions instead.) 361.32 356.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectCtrls) 109 342.67 S
+2 F
+(If not set, an) 261 342.67 T
+(y) 315.82 342.67 T
+5 F
+-0.33 (XkbSA_SetControls) 324.07 342.67 S
+2 F
+( actions that occur) 430.66 342.67 T
+-0.23 (simultaneously with the) 261 331.67 P
+5 F
+-0.53 -0.33 (XkbSA_ISOLock) 368.17 331.67 B
+2 F
+-0.23 ( action are treated) 449.68 331.67 P
+(as) 261 320.67 T
+5 F
+-0.33 (XkbSA_LockControls) 272.91 320.67 S
+2 F
+( actions instead.) 385.77 320.67 T
+3 12 Q
+(T) 214.98 155 T
+(able 16.12 ISO Action Affect Field V) 221.88 155 T
+(alues) 410.76 155 T
+1 F
+(Af) 109 135 T
+(fect) 119.45 135 T
+(Meaning) 261 135 T
+5 11 Q
+-0.33 (XkbSA_ISODNoAffectMods) 109 120.67 S
+2 F
+-0.58 (If) 261 120.67 P
+5 F
+-1.31 -0.33 (XkbSA_ISONoAffectMods) 270.5 120.67 B
+2 F
+-0.58 ( is not set, an) 402.17 120.67 P
+-0.58 (y) 457.45 120.67 P
+5 F
+-1.31 -0.33 (SA_SetMods) 465.13 120.67 B
+2 F
+(or) 261 109.67 T
+5 F
+-0.33 (SA_LatchMods) 272.91 109.67 S
+2 F
+( actions occurring simultaneously with) 348.15 109.67 T
+(the) 261 98.67 T
+5 F
+-0.33 (XkbISOAction) 277.19 98.67 S
+2 F
+( are treated as) 352.43 98.67 T
+5 F
+-0.33 (SA_LockMods) 415.96 98.67 S
+2 F
+( instead.) 484.93 98.67 T
+108 658 530 658 2 L
+V
+0.5 H
+0 Z
+N
+108 641 530 641 2 L
+V
+N
+108 147 530 147 2 L
+V
+N
+108 130 530 130 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "152" 164
+%%Page: "153" 165
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(153) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(16.1.9) 72 537 T
+(Actions f) 108 537 T
+(or Changing the Active Screen) 159.1 537 T
+2 F
+-0.17 (Actions associated with the) 108 517 P
+5 F
+-0.38 -0.6 (XkbSwitchScreen) 241.95 517 B
+2 F
+-0.17 ( action structure change the active screen) 340.95 517 P
+(on a multiscreen display:) 108 504 T
+0 F
+(Note) 126 483.67 T
+2 11 Q
+(This action is optional. Serv) 162 483.67 T
+(ers are free to ignore the action or an) 285.58 483.67 T
+(y of its \337ags if the) 447.31 483.67 T
+(y) 526.89 483.67 T
+(do not support the requested beha) 162 471.67 T
+(vior) 309.95 471.67 T
+(. If the action is ignored, it beha) 327.07 471.67 T
+(v) 467.07 471.67 T
+(es lik) 472.41 471.67 T
+(e) 495.83 471.67 T
+5 12 Q
+-0.6 (XkbSA_NoAction) 162 459.67 S
+2 11 Q
+(. Otherwise, k) 254.4 459.67 T
+(e) 316 459.67 T
+(y press and k) 320.72 459.67 T
+(e) 378.35 459.67 T
+(y release e) 383.07 459.67 T
+(v) 429.21 459.67 T
+(ents do not generate an) 434.55 459.67 T
+(e) 162 447.67 T
+(v) 166.61 447.67 T
+(ent.) 171.94 447.67 T
+(typedef struct _XkbSwitchScreenAction {) 126 427.67 T
+(unsigned char) 144 414.67 T
+(type;) 234 414.67 T
+(/*) 306 414.67 T
+5 F
+-0.33 (XkbSA_SwitchScreen) 317.31 414.67 S
+2 F
+( */) 430.17 414.67 T
+(unsigned char) 144 401.67 T
+(\337ags;) 234 401.67 T
+(/* controls screen switching */) 306 401.67 T
+(char) 144 388.67 T
+(screenXXX;) 234 388.67 T
+(/* screen number or delta */) 306 388.67 T
+(}) 126 375.67 T
+3 F
+(XkbSwitchScr) 134.03 375.67 T
+(eenAction) 201.67 375.67 T
+2 F
+(;) 248.72 375.67 T
+2 12 Q
+(The) 108 356 T
+1 F
+(type) 129.66 356 T
+2 F
+( field of the) 149.65 356 T
+5 F
+-0.6 (XkbSwitchScreenAction) 208.31 356 S
+2 F
+( structure should always be) 346.91 356 T
+5 F
+-0.6 (XkbSA_SwitchScreen) 108 343 S
+2 F
+(.) 226.8 343 T
+(The) 108 322 T
+1 F
+(flags) 129.66 322 T
+2 F
+( field is composed of the bitwise inclusive OR of the masks shown in Table) 153 322 T
+(16.13.) 108 309 T
+(The) 108 160 T
+1 F
+(screenXXX) 129.66 160 T
+2 F
+( field is a signed character value that represents either the relative or abso-) 182.98 160 T
+-0.26 (lute screen index, depending on the state of the) 108 147 P
+5 F
+-0.57 -0.6 (XkbSA_SwitchAbsolute) 334.29 147 B
+2 F
+-0.26 ( bit in the) 466.29 147 P
+1 F
+-0.26 (flags) 513.92 147 P
+2 F
+(field. Xkb provides the following macros to convert between the integer and signed char-) 108 134 T
+(acter value for screen numbers in) 108 121 T
+5 F
+-0.6 (XkbSwitchScreenAction) 270.61 121 S
+2 F
+( structures:) 409.21 121 T
+2 11 Q
+(int) 108 100.67 T
+3 F
+(XkbSAScr) 122.37 100.67 T
+(een) 172.28 100.67 T
+2 F
+(\050) 188.17 100.67 T
+1 F
+(act) 191.83 100.67 T
+2 F
+(\051) 205.27 100.67 T
+(/* macro */) 306 100.67 T
+(XkbSwitchScreenAction) 126 87.67 T
+1 F
+(act) 252 87.67 T
+2 F
+(;) 265.44 87.67 T
+(/* action from which to e) 306 87.67 T
+(xtract screen */) 416.74 87.67 T
+1 12 Q
+(XkbSAScr) 108 68 T
+(een) 155.54 68 T
+2 F
+( returns the) 172.2 68 T
+1 F
+(screenXXX) 229.19 68 T
+2 F
+( field of) 282.5 68 T
+1 F
+(act) 323.5 68 T
+2 F
+( converted to a signed int.) 338.16 68 T
+5 11 Q
+-0.33 (XkbSA_ISONoAffectGroup) 109 677.67 S
+2 F
+(If) 261 677.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectGroup) 271.08 677.67 S
+2 F
+( is not set, an) 409.02 677.67 T
+(y) 466.6 677.67 T
+5 F
+-0.33 (SA_SetGroup) 261 666.67 S
+2 F
+( or) 329.97 666.67 T
+5 F
+-0.33 (SA_LatchGroup) 344.63 666.67 S
+2 F
+( actions occurring) 426.14 666.67 T
+(simultaneously with the) 261 655.67 T
+5 F
+-0.33 (XkbISOAction) 368.87 655.67 S
+2 F
+( are treated as) 444.11 655.67 T
+5 F
+-0.33 (SA_LockGroup) 261 644.67 S
+2 F
+( instead.) 336.24 644.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectPtr) 109 630.67 S
+2 F
+(If) 261 630.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectPtr) 271.08 630.67 S
+2 F
+( is not set, an) 396.48 630.67 T
+(y) 454.06 630.67 T
+5 F
+-0.33 (SA_PtrBtn) 462.31 630.67 S
+2 F
+(actions occurring simultaneously with the) 261 619.67 T
+5 F
+-0.33 (XkbISOAction) 447.68 619.67 S
+2 F
+(are treated as) 261 608.67 T
+5 F
+-0.33 (SA_LockPtrBtn) 321.77 608.67 S
+2 F
+( instead.) 403.29 608.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectCtrls) 109 594.67 S
+2 F
+(If) 261 594.67 T
+5 F
+-0.33 (XkbSA_ISONoAffectCtrls) 271.08 594.67 S
+2 F
+( is not set, an) 409.02 594.67 T
+(y) 466.6 594.67 T
+5 F
+-0.33 (SA_SetControls) 261 583.67 S
+2 F
+( actions occurring simultaneously with) 348.78 583.67 T
+(the) 261 572.67 T
+5 F
+-0.33 (XkbISOAction) 277.19 572.67 S
+2 F
+( are treated as) 352.43 572.67 T
+5 F
+-0.33 (SA_LockControls) 415.96 572.67 S
+2 F
+(instead.) 261 561.67 T
+3 12 Q
+(T) 218.04 289 T
+(able 16.13 Switch Scr) 224.94 289 T
+(een Action Flags) 337.05 289 T
+1 F
+(Fla) 109 269 T
+(g) 125.55 269 T
+(Meaning) 267 269 T
+5 11 Q
+-0.33 (XkbSA_SwitchAbsolute) 109 254.67 S
+2 F
+(If set, the) 267 254.67 T
+1 F
+(screenXXX) 310.99 254.67 T
+2 F
+( \336eld represents the inde) 359.86 254.67 T
+(x of the) 467.23 254.67 T
+(ne) 267 243.67 T
+(w screen. Otherwise, it represents an of) 277.11 243.67 T
+(fset from the) 450.34 243.67 T
+(current screen to the ne) 267 232.67 T
+(w screen.) 369.36 232.67 T
+5 F
+-0.33 (XkbSA_SwitchApplication) 109 218.67 S
+2 F
+(If not set, the action should switch to another screen on) 267 218.67 T
+-0.3 (the same serv) 267 207.67 P
+-0.3 (er) 326.1 207.67 P
+-0.3 (. Otherwise, it should switch to another X) 334.05 207.67 P
+(serv) 267 196.67 T
+(er or application that shares the same ph) 285.16 196.67 T
+(ysical dis-) 461.98 196.67 T
+(play) 267 185.67 T
+(.) 285.23 185.67 T
+3 12 Q
+(T) 214.98 712 T
+(able 16.12 ISO Action Affect Field V) 221.88 712 T
+(alues) 410.76 712 T
+1 F
+(Af) 109 692 T
+(fect) 119.45 692 T
+(Meaning) 261 692 T
+108 704 530 704 2 L
+V
+0.5 H
+0 Z
+N
+108 687 530 687 2 L
+V
+N
+108 281 518 281 2 L
+V
+N
+108 264 518 264 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "153" 165
+%%Page: "154" 166
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(154) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+(v) 108 712.67 T
+(oid) 113.28 712.67 T
+3 F
+(XkbSASetScr) 130.09 712.67 T
+(een) 194.67 712.67 T
+2 F
+(\050) 210.55 712.67 T
+1 F
+(act, s) 214.22 712.67 T
+2 F
+(\051) 237.44 712.67 T
+(/* macro */) 306 712.67 T
+(XkbSwitchScreenAction) 126 699.67 T
+1 F
+(act) 252 699.67 T
+2 F
+(;) 265.44 699.67 T
+(/* action in which to set) 306 699.67 T
+1 F
+(screenXXX) 414.16 699.67 T
+2 F
+( */) 463.04 699.67 T
+(int) 126 686.67 T
+1 F
+(s) 252 686.67 T
+2 F
+(;) 256.28 686.67 T
+(/* v) 306 686.67 T
+(alue to set in) 322.53 686.67 T
+1 F
+(screenXXX) 381.2 686.67 T
+2 F
+( */) 430.07 686.67 T
+1 12 Q
+(XkbSASetScr) 108 667 T
+(een) 170.21 667 T
+2 F
+( sets the) 186.86 667 T
+1 F
+(screenXXX) 228.53 667 T
+2 F
+( field of) 281.84 667 T
+1 F
+(act) 322.84 667 T
+2 F
+( from) 337.5 667 T
+1 F
+(s) 366.83 667 T
+2 F
+(.) 371.5 667 T
+0 F
+(16.1.10) 72 642 T
+(Actions f) 112.03 642 T
+(or Changing Boolean Contr) 163.13 642 T
+(ols State) 319.56 642 T
+2 F
+(Actions associated with the) 108 622 T
+5 F
+-0.6 (XkbCtrlsAction) 242.65 622 S
+2 F
+( structure change the state of the boolean) 335.05 622 T
+(controls \050see section 10.1\051:) 108 609 T
+2 11 Q
+(typedef struct _XkbCtrlsAction {) 126 588.67 T
+(unsigned char) 144 575.67 T
+(type;) 234 575.67 T
+(/*) 279 575.67 T
+5 F
+-0.33 (XkbSA_SetControls, XkbSA_LockControls) 290.31 575.67 S
+2 F
+( */) 522.3 575.67 T
+(unsigned char) 144 562.67 T
+(\337ags;) 234 562.67 T
+(/* with) 279 562.67 T
+1 F
+(type) 312.62 562.67 T
+2 F
+(, controls enabling and disabling of controls */) 330.94 562.67 T
+(unsigned char) 144 549.67 T
+(ctrls3;) 234 549.67 T
+(/*) 279 549.67 T
+1 F
+(ctrls0) 290.31 549.67 T
+2 F
+( through) 315.37 549.67 T
+1 F
+(ctrls3) 355.09 549.67 T
+2 12 Q
+(represent the boolean controls) 382.89 549.67 T
+2 11 Q
+( */) 527.2 549.67 T
+(unsigned char) 144 536.67 T
+(ctrls2;) 234 536.67 T
+(/*) 279 536.67 T
+1 F
+(ctrls0) 290.31 536.67 T
+2 F
+( through) 315.37 536.67 T
+1 F
+(ctrls3) 355.09 536.67 T
+2 12 Q
+(represent the boolean controls) 382.89 536.67 T
+2 11 Q
+( */) 527.2 536.67 T
+(unsigned char) 144 523.67 T
+(ctrls1;) 234 523.67 T
+(/*) 279 523.67 T
+1 F
+(ctrls0) 290.31 523.67 T
+2 F
+( through) 315.37 523.67 T
+1 F
+(ctrls3) 355.09 523.67 T
+2 12 Q
+(represent the boolean controls) 382.89 523.67 T
+2 11 Q
+( */) 527.2 523.67 T
+(unsigned char) 144 510.67 T
+(ctrls0;) 234 510.67 T
+(/*) 279 510.67 T
+1 F
+(ctrls0) 290.31 510.67 T
+2 F
+( through) 315.37 510.67 T
+1 F
+(ctrls3) 355.09 510.67 T
+2 12 Q
+(represent the boolean controls) 382.89 510.67 T
+2 11 Q
+( */) 527.2 510.67 T
+(}) 126 497.67 T
+3 F
+(XkbCtrlsAction) 134.03 497.67 T
+2 F
+(;) 209.19 497.67 T
+2 12 Q
+(The) 108 478 T
+1 F
+(type) 129.66 478 T
+2 F
+( field can have any one of the values shown in Table 16.14.) 149.65 478 T
+(The) 108 255 T
+1 F
+(flags) 129.66 255 T
+2 F
+( field is composed of the bitwise inclusive OR of the masks shown in Table) 153 255 T
+(16.15.) 108 242 T
+-0.01 (The) 108 126 P
+5 F
+-0.03 -0.6 (XkbSA_SetControls) 129.65 126 B
+2 F
+-0.01 ( action implements a key that enables a boolean control when) 241.85 126 P
+(pressed and disables it when released. The) 108 113 T
+5 F
+-0.6 (XkbSA_LockControls) 314.62 113 S
+2 F
+( action is used to) 433.42 113 T
+(implement a key that toggles the state of a boolean control each time it is pressed and) 108 100 T
+(released. The) 108 87 T
+5 F
+-0.6 (XkbSA_LockNoLock) 174.97 87 S
+2 F
+( and) 280.57 87 T
+5 F
+-0.6 (XkbSA_LockNoUnlock) 303.9 87 S
+2 F
+( flags allow modifying) 422.7 87 T
+(the toggling behavior to only unlock or only lock the boolean control.) 108 74 T
+3 F
+(T) 237.64 458 T
+(able 16.14 Contr) 244.54 458 T
+(ols Action T) 332.32 458 T
+(ypes) 393.44 458 T
+1 F
+(T) 109 438 T
+(ype) 114.78 438 T
+(Ef) 245 438 T
+(fect) 255.45 438 T
+5 11 Q
+-0.33 (XkbSA_SetControls) 109 423.67 S
+2 F
+(\245) 245 419.67 T
+(A k) 254 419.67 T
+(e) 270.08 419.67 T
+(y press enables an) 274.8 419.67 T
+(y boolean controls speci\336ed in the) 354.36 419.67 T
+1 F
+(ctrls) 507.74 419.67 T
+2 F
+-0.16 (\336elds that were not already enabled at the time of the k) 254 408.67 P
+-0.16 (e) 493.83 408.67 P
+-0.16 (y press.) 498.55 408.67 P
+(\245) 245 397.67 T
+(A k) 254 397.67 T
+(e) 270.08 397.67 T
+(y release disables an) 274.8 397.67 T
+(y controls enabled by the k) 364.75 397.67 T
+(e) 483.48 397.67 T
+(y press.) 488.2 397.67 T
+(\245) 245 386.67 T
+(This action can cause) 254 386.67 T
+5 F
+-0.33 (XkbControlsNotify) 351.14 386.67 S
+2 F
+( e) 457.73 386.67 T
+(v) 465.09 386.67 T
+(ents \050see sec-) 470.42 386.67 T
+(tion 10.1\051.) 254 375.67 T
+5 F
+-0.33 (XkbSA_LockControls) 109 361.67 S
+2 F
+(\245) 245 357.67 T
+(If the) 254 357.67 T
+5 F
+-0.33 (XkbSA_LockNoLock) 280.27 357.67 S
+2 F
+( bit is not set in the) 380.59 357.67 T
+1 F
+(flags) 467.07 357.67 T
+2 F
+( \336eld, a) 488.46 357.67 T
+(k) 254 346.67 T
+(e) 259.39 346.67 T
+(y press enables an) 264.11 346.67 T
+(y controls speci\336ed in the) 343.67 346.67 T
+1 F
+(ctrls) 459.47 346.67 T
+2 F
+( \336elds that) 479.03 346.67 T
+(were not already enabled at the time of the k) 254 335.67 T
+(e) 449.7 335.67 T
+(y press.) 454.42 335.67 T
+(\245) 245 324.67 T
+-0.37 (If the) 254 324.67 P
+5 F
+-0.85 -0.33 (XkbSA_LockNoUnlock) 279.53 324.67 B
+2 F
+-0.37 ( bit is not set in the) 392.39 324.67 P
+1 F
+-0.37 (flags) 476.27 324.67 P
+2 F
+-0.37 ( \336eld, a) 497.67 324.67 P
+(k) 254 313.67 T
+(e) 259.39 313.67 T
+(y release disables an) 264.11 313.67 T
+(y controls speci\336ed in the) 354.06 313.67 T
+1 F
+(ctrls) 469.85 313.67 T
+2 F
+( \336elds) 489.41 313.67 T
+(that were not already disabled at the time of the k) 254 302.67 T
+(e) 471.4 302.67 T
+(y press.) 476.12 302.67 T
+(\245) 245 291.67 T
+(This action can cause) 254 291.67 T
+5 F
+-0.33 (XkbControlsNotify) 351.14 291.67 S
+2 F
+( e) 457.73 291.67 T
+(v) 465.09 291.67 T
+(ents \050see sec-) 470.42 291.67 T
+(tion 10.1\051.) 254 280.67 T
+3 12 Q
+(T) 236.2 222 T
+(able 16.15 Contr) 243.1 222 T
+(ol Action Flags) 330.88 222 T
+1 F
+(Fla) 109 202 T
+(g) 125.55 202 T
+(Meaning) 253 202 T
+5 11 Q
+-0.33 (XkbSA_LockNoLock) 109 187.67 S
+2 F
+(If set, and the action type is) 253 187.67 T
+5 F
+-0.33 (XkbSA_LockControls) 377.04 187.67 S
+2 F
+(, the) 489.9 187.67 T
+(serv) 253 176.67 T
+(er only disables controls.) 271.16 176.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 109 162.67 S
+2 F
+(If set, and the action type is) 253 162.67 T
+5 F
+-0.33 (XkbSA_LockControls) 377.04 162.67 S
+2 F
+(, the) 489.9 162.67 T
+(serv) 253 151.67 T
+(er only enables controls.) 271.16 151.67 T
+108 450 532 450 2 L
+V
+0.5 H
+0 Z
+N
+108 433 532 433 2 L
+V
+N
+108 214 522 214 2 L
+V
+N
+108 197 522 197 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "154" 166
+%%Page: "155" 167
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(155) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(The) 108 712 T
+1 F
+(ctrls0) 129.66 712 T
+2 F
+(,) 157 712 T
+1 F
+(ctrls1) 163 712 T
+2 F
+(,) 190.33 712 T
+1 F
+(ctrls2) 196.33 712 T
+2 F
+(, and) 223.67 712 T
+1 F
+(ctrls3) 250 712 T
+2 F
+( fields represent the boolean controls in the) 277.33 712 T
+1 F
+(enabled_ctrls) 108 699 T
+2 F
+( field of the controls structure \050) 173.33 699 T
+2 11 Q
+(see section 10.1) 322.63 699 T
+2 12 Q
+(\051. Xkb provides the following) 392.59 699 T
+(macros, to convert between the two formats:) 108 686 T
+2 11 Q
+(unsigned int) 108 665.67 T
+3 F
+(XkbActionCtrls) 164.84 665.67 T
+2 F
+(\050) 240 665.67 T
+1 F
+(act) 243.66 665.67 T
+2 F
+(\051) 257.11 665.67 T
+(/* macro */) 306 665.67 T
+(XkbCtrlsAction) 126 652.67 T
+1 F
+(act) 234 652.67 T
+2 F
+(;) 247.44 652.67 T
+(/* action from which to e) 306 652.67 T
+(xtract controls */) 416.74 652.67 T
+1 12 Q
+(XkbActionCtrls) 108 633 T
+2 F
+( returns the) 182 633 T
+1 F
+(ctrls) 238.99 633 T
+2 F
+( fields of) 260.33 633 T
+1 F
+(act) 305.99 633 T
+2 F
+( converted to an unsigned int.) 320.65 633 T
+2 11 Q
+(v) 108 612.67 T
+(oid) 113.28 612.67 T
+3 F
+(XkbSAActionSetCtrls) 130.09 612.67 T
+2 F
+(\050) 233.97 612.67 T
+1 F
+(act, ctrls) 237.63 612.67 T
+2 F
+(\051) 276.14 612.67 T
+(/* macro */) 306 612.67 T
+(XkbCtrlsAction) 126 599.67 T
+1 F
+(act) 252 599.67 T
+2 F
+(;) 265.44 599.67 T
+(/* action in which to set ctrls0-ctrls3 */) 306 599.67 T
+(unsigned int) 126 586.67 T
+1 F
+(ctrls) 252 586.67 T
+2 F
+(;) 271.56 586.67 T
+(/* v) 306 586.67 T
+(alue to set in ctrls0-ctrls3 */) 322.53 586.67 T
+1 12 Q
+(XkbSAActionSetCtrls) 108 567 T
+2 F
+( sets the) 210 567 T
+1 11 Q
+(ctrls0) 251.66 567 T
+2 12 Q
+( through) 276.72 567 T
+1 F
+(ctrls3) 320.05 567 T
+2 F
+( fields of) 347.39 567 T
+1 F
+(act) 393.05 567 T
+2 F
+( from) 407.71 567 T
+1 F
+(ctrls) 437.04 567 T
+2 F
+(.) 458.38 567 T
+0 F
+(16.1.11) 72 542 T
+(Actions f) 112.03 542 T
+(or Generating Messa) 163.13 542 T
+(g) 281.71 542 T
+(es) 289.16 542 T
+2 F
+(Actions associated with the) 108 522 T
+5 F
+-0.6 (XkbMessageAction) 242.65 522 S
+2 F
+( structure generate) 348.25 522 T
+5 F
+-0.6 (XkbActionMes-) 439.89 522 S
+-0.6 (sage) 108 509 S
+2 F
+( events:) 134.4 509 T
+2 11 Q
+(#de\336ne) 126 488.67 T
+(XkbActionMessageLength) 179.25 488.67 T
+(6) 306 488.67 T
+(typedef struct _XkbMessageAction {) 126 468.67 T
+(unsigned char) 144 455.67 T
+(type;) 216 455.67 T
+(/*) 279 455.67 T
+5 F
+-0.33 (XkbSA_ActionMessage) 290.31 455.67 S
+2 F
+( */) 409.44 455.67 T
+(unsigned char) 144 442.67 T
+(\337ags;) 216 442.67 T
+(/* controls e) 279 442.67 T
+(v) 333.11 442.67 T
+(ent generation via k) 338.44 442.67 T
+(e) 425.4 442.67 T
+(y presses and releases */) 430.12 442.67 T
+(unsigned char) 144 429.67 T
+(message[XkbActionMessageLength];) 216 429.67 T
+(/* message */) 414 429.67 T
+(}) 126 416.67 T
+3 F
+(XkbMessageAction) 134.03 416.67 T
+2 F
+(;) 225.08 416.67 T
+2 12 Q
+(The) 108 397 T
+1 F
+(type) 129.66 397 T
+2 F
+( field of the) 149.65 397 T
+5 F
+-0.6 (XkbMessageAction) 208.31 397 S
+2 F
+( structure should always be) 313.91 397 T
+5 F
+-0.6 (XkbSA_ActionMessage) 108 384 S
+2 F
+(.) 233.4 384 T
+(The) 108 363 T
+1 F
+(flags) 129.66 363 T
+2 F
+( field is composed of the bitwise inclusive OR of the masks shown in Table) 153 363 T
+(16.16.) 108 350 T
+(The) 108 176 T
+1 F
+(message) 129.66 176 T
+2 F
+( field is an array of) 170.32 176 T
+5 F
+-0.6 (XkbActionMessageLength) 264.29 176 S
+2 F
+( unsigned characters and) 409.49 176 T
+(may be set to anything the keymap designer wishes.) 108 163 T
+0 11 Q
+(Detecting Key Action Messages) 108 140.67 T
+2 12 Q
+(To receive) 108 122 T
+5 F
+-0.6 (XkbActionMessage) 161.98 122 S
+2 F
+( events by calling either) 267.58 122 T
+1 F
+(XkbSelectEvents) 385.23 122 T
+2 F
+( or) 464.53 122 T
+1 F
+(XkbSelect-) 480.53 122 T
+(EventDetails) 108 109 T
+2 F
+( \050see section 4.3\051.) 169.99 109 T
+(To receive) 108 88 T
+5 F
+-0.6 (XkbActionMessage) 161.98 88 S
+2 F
+( events under all possible conditions, use) 267.58 88 T
+1 F
+(XkbSelect-) 466.9 88 T
+(Events) 108 75 T
+2 F
+( and pass) 139.99 75 T
+5 F
+-0.6 (XkbActionMessageMask) 186.98 75 S
+2 F
+( in both) 318.99 75 T
+1 F
+(bits_to_c) 358.66 75 T
+(hang) 402.48 75 T
+(e) 426.36 75 T
+2 F
+( and) 431.69 75 T
+1 F
+(values_for_bits) 455.02 75 T
+2 F
+(.) 529.02 75 T
+3 F
+(T) 235.93 330 T
+(able 16.16 Message Action Flags) 242.83 330 T
+1 F
+(Fla) 109 310 T
+(g) 125.55 310 T
+(Meaning) 274 310 T
+5 11 Q
+-0.33 (XkbSA_MessageOnPress) 109 295.67 S
+2 F
+(If set, k) 274 295.67 T
+(e) 307.19 295.67 T
+(y press e) 311.91 295.67 T
+(v) 350.12 295.67 T
+(ents generate an) 355.45 295.67 T
+5 F
+-0.33 (XkbActionMes-) 429.07 295.67 S
+-0.33 (sage) 274 284.67 S
+2 F
+( e) 299.08 284.67 T
+(v) 306.44 284.67 T
+(ent that reports the k) 311.77 284.67 T
+(e) 402.1 284.67 T
+(ycode, e) 406.81 284.67 T
+(v) 443.19 284.67 T
+(ent type, and) 448.53 284.67 T
+(contents of the) 274 273.67 T
+1 F
+(message) 341.52 273.67 T
+2 F
+( \336eld.) 378.79 273.67 T
+5 F
+-0.33 (XkbSA_MessageOnRelease) 109 259.67 S
+2 F
+(If set, k) 274 259.67 T
+(e) 307.19 259.67 T
+(y release e) 311.91 259.67 T
+(v) 358.05 259.67 T
+(ents generate an) 363.39 259.67 T
+5 F
+-0.33 (XkbActionMes-) 437 259.67 S
+-0.33 (sage) 274 248.67 S
+2 F
+( e) 299.08 248.67 T
+(v) 306.44 248.67 T
+(ent that reports the k) 311.77 248.67 T
+(e) 402.1 248.67 T
+(ycode, e) 406.81 248.67 T
+(v) 443.19 248.67 T
+(ent type, and) 448.53 248.67 T
+(contents of the) 274 237.67 T
+1 F
+(message) 341.52 237.67 T
+2 F
+( \336eld.) 378.79 237.67 T
+5 F
+-0.33 (XkbSA_MessageGenKeyEvent) 109 223.67 S
+2 F
+(If set, k) 274 223.67 T
+(e) 307.19 223.67 T
+(y press and k) 311.91 223.67 T
+(e) 369.54 223.67 T
+(y release e) 374.25 223.67 T
+(v) 420.4 223.67 T
+(ents generate) 425.73 223.67 T
+5 F
+-0.33 (Key-) 486.21 223.67 S
+-0.33 (Press) 274 212.67 S
+2 F
+( and) 305.35 212.67 T
+5 F
+-0.33 (KeyRelease) 326.73 212.67 S
+2 F
+( e) 389.43 212.67 T
+(v) 396.79 212.67 T
+(ents, re) 402.13 212.67 T
+(g) 433.73 212.67 T
+(ardless of whether) 439.18 212.67 T
+(the) 274 201.67 T
+(y generate) 287.28 201.67 T
+5 F
+-0.33 (XkbActionMessage) 335.53 201.67 S
+2 F
+( e) 435.85 201.67 T
+(v) 443.21 201.67 T
+(ents.) 448.55 201.67 T
+108 322 525 322 2 L
+V
+0.5 H
+0 Z
+N
+108 305 525 305 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "155" 167
+%%Page: "156" 168
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(156) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(The) 108 712 T
+5 F
+-0.6 (XkbActionMessage) 129.66 712 S
+2 F
+( event has no event details. However, you can call) 235.26 712 T
+1 F
+(XkbSelect-) 478.54 712 T
+(EventDetails) 108 699 T
+2 F
+( using) 169.99 699 T
+5 F
+-0.6 (XkbActionMessage) 202 699 S
+2 F
+( as the) 307.6 699 T
+1 F
+(e) 341.26 699 T
+(vent_type) 346.41 699 T
+2 F
+( and specifying) 392.39 699 T
+5 F
+-0.6 (XkbAllAc-) 468.71 699 S
+-0.6 (tionMessageMask) 108 686 S
+2 F
+( in) 207 686 T
+1 F
+(bits_to_c) 222.34 686 T
+(hang) 266.16 686 T
+(e) 290.04 686 T
+2 F
+( and) 295.37 686 T
+1 F
+(values_for_bits.) 318.7 686 T
+2 F
+( This has the same effect as a) 395.7 686 T
+(call to) 108 673 T
+1 F
+(XkbSelectEvents) 140.66 673 T
+2 F
+(.) 219.97 673 T
+(The structure for the) 108 652 T
+5 F
+-0.6 (XkbActionMessage) 209.3 652 S
+2 F
+( event is defined as follows:) 314.91 652 T
+2 11 Q
+(typedef struct _XkbActionMessage {) 126 631.67 T
+(int) 144 618.67 T
+(type;) 216 618.67 T
+(/* Xkb e) 306 618.67 T
+(xtension base e) 343.72 618.67 T
+(v) 410.65 618.67 T
+(ent code */) 415.99 618.67 T
+(unsigned long) 144 605.67 T
+(serial;) 216 605.67 T
+(/* X serv) 306 605.67 T
+(er serial number for e) 346.16 605.67 T
+(v) 440.57 605.67 T
+(ent */) 445.91 605.67 T
+(Bool) 144 592.67 T
+(send_e) 216 592.67 T
+(v) 246.27 592.67 T
+(ent;) 251.61 592.67 T
+(/*) 306 592.67 T
+5 12 Q
+-0.6 (True) 317.31 592.67 S
+2 11 Q
+( => synthetically generated */) 343.71 592.67 T
+(Display *) 144 579.67 T
+(display;) 216 579.67 T
+(/* serv) 306 579.67 T
+(er connection where e) 335.47 579.67 T
+(v) 432.02 579.67 T
+(ent generated */) 437.35 579.67 T
+(T) 144 566.67 T
+(ime) 150.34 566.67 T
+(time;) 216 566.67 T
+(/* serv) 306 566.67 T
+(er time when e) 335.47 566.67 T
+(v) 400.26 566.67 T
+(ent generated */) 405.59 566.67 T
+(int) 144 553.67 T
+(xkb_type;) 216 553.67 T
+(/*) 306 553.67 T
+5 F
+-0.33 (XkbActionMessage) 317.31 553.67 S
+2 F
+( */) 417.63 553.67 T
+(int) 144 540.67 T
+(de) 216 540.67 T
+(vice;) 226.11 540.67 T
+(/* Xkb de) 306 540.67 T
+(vice ID, will not be) 349.11 540.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 437.1 540.67 S
+2 F
+( */) 518.61 540.67 T
+(K) 144 527.67 T
+(e) 151.67 527.67 T
+(yCode) 156.39 527.67 T
+(k) 216 527.67 T
+(e) 221.39 527.67 T
+(ycode;) 226.11 527.67 T
+(/* k) 306 527.67 T
+(e) 322.7 527.67 T
+(ycode of k) 327.42 527.67 T
+(e) 373.74 527.67 T
+(y triggering e) 378.46 527.67 T
+(v) 437.45 527.67 T
+(ent */) 442.79 527.67 T
+(Bool) 144 514.67 T
+(press;) 216 514.67 T
+(/*) 306 514.67 T
+5 12 Q
+-0.6 (True) 317.31 514.67 S
+2 11 Q
+( => k) 343.71 514.67 T
+(e) 367.01 514.67 T
+(y press,) 371.73 514.67 T
+5 12 Q
+-0.6 (False) 408.08 514.67 S
+2 11 Q
+( => release */) 441.08 514.67 T
+(Bool) 144 501.67 T
+(k) 216 501.67 T
+(e) 221.39 501.67 T
+(y_e) 226.11 501.67 T
+(v) 241.72 501.67 T
+(ent_follo) 247.05 501.67 T
+(ws;) 286.5 501.67 T
+(/*) 306 501.67 T
+5 12 Q
+-0.6 (True) 317.31 501.67 S
+2 11 Q
+( => K) 343.71 501.67 T
+(e) 369.28 501.67 T
+(yPress/K) 374 501.67 T
+(e) 413.45 501.67 T
+(yRelease follo) 418.17 501.67 T
+(ws */) 481.13 501.67 T
+(char) 144 488.67 T
+(message[XkbActionMessageLength+1];) 216 488.67 T
+(/* message te) 450 488.67 T
+(xt */) 509.1 488.67 T
+(}) 126 475.67 T
+3 F
+(XkbActionMessageEv) 134.03 475.67 T
+(ent) 237.8 475.67 T
+2 F
+(;) 252.47 475.67 T
+2 12 Q
+(The) 108 456 T
+1 F
+(keycode) 129.66 456 T
+2 F
+( is the keycode of the key that was pressed or released. The) 168.3 456 T
+1 F
+(press) 455.56 456 T
+2 F
+( field speci-) 480.89 456 T
+(fies whether the event was the result of a key press or key release.) 108 443 T
+-0.04 (The) 108 422 P
+1 F
+-0.04 (key_event_follows) 129.62 422 P
+2 F
+-0.04 ( specifies whether a) 217.6 422 P
+5 F
+-0.09 -0.6 (KeyPress) 315.42 422 B
+2 F
+-0.04 ( \050if) 368.22 422 P
+1 F
+-0.04 (press) 385.47 422 P
+2 F
+-0.04 ( is) 410.8 422 P
+5 F
+-0.09 -0.6 (True) 424.72 422 B
+2 F
+-0.04 (\051 or) 451.12 422 P
+5 F
+-0.09 -0.6 (KeyRelease) 471.04 422 B
+2 F
+(\050if) 108 409 T
+1 F
+(press) 122.33 409 T
+2 F
+( is) 147.66 409 T
+5 F
+-0.6 (False) 161.66 409 S
+2 F
+(\051 event is also sent to the client. As with all other Xkb events,) 194.66 409 T
+5 F
+-0.6 (XkbAc-) 492.64 409 S
+-0.6 (tionMessageEvent) 108 396 S
+2 F
+(s are delivered to all clients requesting them, regardless of the cur-) 213.6 396 T
+(rent keyboard focus. However, the) 108 383 T
+5 F
+-0.6 (KeyPress) 276.95 383 S
+2 F
+( or) 329.75 383 T
+5 F
+-0.6 (KeyRelease) 345.74 383 S
+2 F
+( event that conditionally) 411.75 383 T
+(follows an) 108 370 T
+5 F
+-0.6 (XkbActionMessageEvent) 161.33 370 S
+2 F
+( is sent only to the client selected by the current) 299.93 370 T
+(keyboard focus.) 108 357 T
+1 F
+(key_event_follows) 187.64 357 T
+2 F
+( is) 275.63 357 T
+5 F
+-0.6 (True) 289.63 357 S
+2 F
+( only for the client that is actually sent the fol-) 316.03 357 T
+(lowing) 108 344 T
+5 F
+-0.6 (KeyPress) 144.34 344 S
+2 F
+( or) 197.14 344 T
+5 F
+-0.6 (KeyRelease) 213.13 344 S
+2 F
+( event.) 279.14 344 T
+(The) 108 323 T
+1 F
+(message) 129.66 323 T
+2 F
+( field is set to the message specified in the action and is guaranteed to be) 170.32 323 T
+5 F
+-0.6 (NULL) 108 310 S
+2 F
+(-terminated; the Xkb extension forces a) 134.4 310 T
+5 F
+-0.6 (NULL) 327.02 310 S
+2 F
+( into) 353.42 310 T
+1 F
+(message) 378.1 310 T
+2 F
+([) 418.75 310 T
+5 F
+-0.6 (XkbActionMessage-) 422.75 310 S
+-0.6 (Length) 108 297 S
+2 F
+(].) 147.6 297 T
+0 F
+(16.1.12) 72 272 T
+(Actions f) 112.03 272 T
+(or Generating a Diff) 163.13 272 T
+(erent K) 275.03 272 T
+(e) 316.19 272 T
+(ycode) 322.68 272 T
+2 F
+-0.27 (Actions associated with the) 108 252 P
+5 F
+-0.59 -0.6 (XkbRedirectKeyAction) 241.58 252 B
+2 F
+-0.27 ( structure generate) 373.58 252 P
+5 F
+-0.59 -0.6 (KeyPress) 464.41 252 B
+2 F
+-0.27 ( and) 517.21 252 P
+5 F
+-0.6 (KeyRelease) 108 239 S
+2 F
+( events containing a keycode different from the key that was pressed or) 174 239 T
+(released:) 108 226 T
+2 11 Q
+(typedef struct) 126 205.67 T
+(_XkbRedirectK) 186.18 205.67 T
+(e) 255.56 205.67 T
+(yAction {) 260.28 205.67 T
+(unsigned char) 144 192.67 T
+(type;) 216 192.67 T
+(/*) 279 192.67 T
+5 F
+-0.33 (XkbSA_RedirectKey) 290.31 192.67 S
+2 F
+( */) 396.9 192.67 T
+(unsigned char) 144 179.67 T
+(ne) 216 179.67 T
+(w_k) 226.11 179.67 T
+(e) 244.94 179.67 T
+(y;) 249.66 179.67 T
+(/* k) 279 179.67 T
+(e) 295.7 179.67 T
+(ycode to be put in e) 300.42 179.67 T
+(v) 386.6 179.67 T
+(ent */) 391.94 179.67 T
+(unsigned char) 144 166.67 T
+(mods_mask;) 216 166.67 T
+(/* mask of real mods to be reset */) 279 166.67 T
+(unsigned char) 144 153.67 T
+(mods;) 216 153.67 T
+(/* mask of real mods to tak) 279 153.67 T
+(e v) 398.66 153.67 T
+(alues from */) 411.52 153.67 T
+(unsigned char) 144 140.67 T
+(vmods_mask0;) 216 140.67 T
+(/* \336rst half of mask of virtual mods to be reset */) 282.62 140.67 T
+(unsigned char) 144 127.67 T
+(vmods_mask1;) 216 127.67 T
+(/* other half of mask of virtual mods to be reset */) 282.62 127.67 T
+(unsigned char) 144 114.67 T
+(vmods0;) 216 114.67 T
+(/* \336rst half of mask of virtual mods to tak) 279 114.67 T
+(e v) 462.52 114.67 T
+(alues from */) 475.38 114.67 T
+(unsigned char) 144 101.67 T
+(vmods1;) 216 101.67 T
+(/* other half of mask of virtual mods to tak) 279 101.67 T
+(e v) 468.01 101.67 T
+(alues from */) 480.87 101.67 T
+(}) 126 88.67 T
+3 F
+(XkbRedir) 134.03 88.67 T
+(ectK) 180.89 88.67 T
+(eyAction) 202.6 88.67 T
+2 F
+(;) 244.15 88.67 T
+FMENDPAGE
+%%EndPage: "156" 168
+%%Page: "157" 169
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(157) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(The) 108 712 T
+1 F
+(type) 129.66 712 T
+2 F
+( field for the) 149.65 712 T
+5 F
+-0.6 (XkbRedirectKeyAction) 212.3 712 S
+2 F
+( structure should always be) 344.31 712 T
+5 F
+-0.6 (XkbSA_RedirectKey) 108 699 S
+2 F
+(.) 220.2 699 T
+-0.29 (Key presses cause a) 108 678 P
+5 F
+-0.64 -0.6 (KeyPress) 205.46 678 B
+2 F
+-0.29 ( event for the key specified by the) 258.26 678 P
+1 F
+-0.29 (new_key) 421.87 678 P
+2 F
+-0.29 ( field instead of) 463.18 678 P
+(the actual key. The state reported in this event reports the current effective modifiers) 108 665 T
+(changed as follows: any real modifiers selected by the) 108 652 T
+1 F
+(mods_mask) 370.94 652 T
+2 F
+( field are set to corre-) 426.94 652 T
+(sponding values from the) 108 639 T
+1 F
+(mods) 232.66 639 T
+2 F
+( field. Any real modifiers bound to the virtual modifiers) 257.99 639 T
+(specified by the) 108 626 T
+1 F
+(vmods_mask0) 186.98 626 T
+2 F
+( and) 254.3 626 T
+1 F
+(vmods_mask1) 277.63 626 T
+2 F
+( fields are either set or cleared, depend-) 344.95 626 T
+(ing on the corresponding values in the) 108 613 T
+1 F
+(vmods0) 294.31 613 T
+2 F
+( and) 330.97 613 T
+1 F
+(vmods1) 354.3 613 T
+2 F
+( fields. If the real and virtual) 390.96 613 T
+(modifier definitions specify conflicting values for a single modifier, the real modifier def-) 108 600 T
+(inition has priority.) 108 587 T
+(Key releases cause a) 108 566 T
+5 F
+-0.6 (KeyRelease) 209.95 566 S
+2 F
+( event for the key specified by the) 275.95 566 T
+1 F
+(new_key) 441.91 566 T
+2 F
+( field) 483.23 566 T
+(instead of the actual key. The state for this event consists of the effective keyboard modi-) 108 553 T
+(fiers at the time of the release, changed as described previously.) 108 540 T
+(The) 108 519 T
+5 F
+-0.6 (XkbSA_RedirectKey) 129.66 519 S
+2 F
+( action normally redirects to another key on the same device) 241.86 519 T
+(as the key that caused the event, unless that device does not belong to the input extension) 108 506 T
+5 F
+-0.6 (KeyClass) 108 493 S
+2 F
+(, in which case this action causes an event on the core keyboard device. \050The) 160.8 493 T
+(input extension categorizes devices by breaking them into classes. Keyboards, and other) 108 480 T
+(input devices with keys, are classified as) 108 467 T
+5 F
+(KeyClass) 305.96 467 T
+2 F
+( devices by the input extension.\051) 363.56 467 T
+(The) 108 446 T
+1 F
+(vmods_mask0) 129.66 446 T
+2 F
+( and) 196.98 446 T
+1 F
+(vmods_mask1) 220.31 446 T
+2 F
+( fields actually represent one) 287.63 446 T
+1 F
+(vmods_mask) 428.59 446 T
+2 F
+( value, as) 489.91 446 T
+(described in Chapter 7. Xkb provides the following macros, to convert between the two) 108 433 T
+(formats:) 108 420 T
+2 11 Q
+(unsigned int) 108 399.67 T
+3 F
+(XkbSARedir) 164.84 399.67 T
+(ectVModsMask) 225.76 399.67 T
+2 F
+(\050) 299.69 399.67 T
+1 F
+(act) 303.35 399.67 T
+2 F
+(\051) 316.79 399.67 T
+(/* macro */) 342 399.67 T
+(XkbRedirectK) 126 386.67 T
+(e) 189.88 386.67 T
+(yAction) 194.6 386.67 T
+1 F
+(act) 252 386.67 T
+2 F
+(;) 265.44 386.67 T
+(/* action from which to e) 342 386.67 T
+(xtract vmods */) 452.74 386.67 T
+1 12 Q
+(XkbSARedir) 108 367 T
+(ectVModsMask) 166.21 367 T
+2 F
+( returns the) 240.19 367 T
+1 F
+(vmods_mask0) 297.18 367 T
+2 F
+( and) 364.5 367 T
+1 F
+(vmods_mask1) 387.83 367 T
+2 F
+( fields of) 455.15 367 T
+1 F
+(act) 500.81 367 T
+2 F
+( con-) 515.47 367 T
+(verted to an unsigned int.) 108 354 T
+2 11 Q
+(v) 108 333.67 T
+(oid) 113.28 333.67 T
+3 F
+(XkbSARedir) 130.09 333.67 T
+(ectSetVModsMask) 191.01 333.67 T
+2 F
+(\050) 279.6 333.67 T
+1 F
+(act, vm) 283.26 333.67 T
+2 F
+(\051) 315.03 333.67 T
+(/* macro */) 342 333.67 T
+(XkbRedirectK) 126 320.67 T
+(e) 189.88 320.67 T
+(yAction) 194.6 320.67 T
+1 F
+(act) 252 320.67 T
+2 F
+(;) 265.44 320.67 T
+(/* action in which to set vmods */) 342 320.67 T
+(unsigned int) 126 307.67 T
+1 F
+(vm) 252 307.67 T
+2 F
+(;) 264.83 307.67 T
+(/* ne) 342 307.67 T
+(w v) 363.42 307.67 T
+(alue for virtual modi\336er mask */) 379.33 307.67 T
+1 12 Q
+-0.41 (XkbSARedir) 108 288 P
+-0.41 (ectSetVModsMask) 166.21 288 P
+2 F
+-0.41 ( sets the) 254.86 288 P
+1 F
+-0.41 (vmods_mask0) 295.28 288 P
+2 F
+-0.41 ( and) 362.6 288 P
+1 F
+-0.41 (vmods_mask1) 385.1 288 P
+2 F
+-0.41 ( fields of) 452.42 288 P
+1 F
+-0.41 (act) 496.84 288 P
+2 F
+-0.41 ( from) 511.5 288 P
+1 F
+(vm) 108 275 T
+2 F
+(.) 121.99 275 T
+-0.12 (Similarly, the) 108 254 P
+1 F
+-0.12 (vmods0) 176.1 254 P
+2 F
+-0.12 ( and) 212.76 254 P
+1 F
+-0.12 (vmods1) 235.84 254 P
+2 F
+-0.12 ( fields actually represent one) 272.5 254 P
+1 F
+-0.12 (vmods) 412.86 254 P
+2 F
+-0.12 (value, as described) 446.39 254 P
+(in Chapter 7. To convert between the two formats, Xkb provides the following conve-) 108 241 T
+(nience macros:) 108 228 T
+2 11 Q
+(unsigned int) 108 207.67 T
+3 F
+(XkbSARedir) 164.84 207.67 T
+(ectVMods) 225.76 207.67 T
+2 F
+(\050) 273.41 207.67 T
+1 F
+(act) 277.07 207.67 T
+2 F
+(\051) 290.51 207.67 T
+(/* macro */) 342 207.67 T
+(XkbRedirectK) 126 194.67 T
+(e) 189.88 194.67 T
+(yAction) 194.6 194.67 T
+1 F
+(act) 252 194.67 T
+2 F
+(;) 265.44 194.67 T
+(/* action from which to e) 342 194.67 T
+(xtract vmods */) 452.74 194.67 T
+1 12 Q
+(XkbSARedir) 126 175 T
+(ectVModsMask) 184.21 175 T
+2 F
+( returns the) 258.19 175 T
+1 F
+(vmods0) 315.18 175 T
+2 F
+( and) 351.84 175 T
+1 F
+(vmods1) 375.17 175 T
+2 F
+( fields of) 411.83 175 T
+1 F
+(act) 457.49 175 T
+2 F
+( converted to) 472.15 175 T
+(an unsigned int.) 126 162 T
+2 11 Q
+(v) 108 141.67 T
+(oid) 113.28 141.67 T
+3 F
+(XkbSARedir) 130.09 141.67 T
+(ectSetVMods) 191.01 141.67 T
+2 F
+(\050) 253.32 141.67 T
+1 F
+(act, vm) 256.98 141.67 T
+2 F
+(\051) 288.75 141.67 T
+(/* macro */) 342 141.67 T
+(XkbRedirectK) 126 128.67 T
+(e) 189.88 128.67 T
+(yAction) 194.6 128.67 T
+1 F
+(act) 252 128.67 T
+2 F
+(;) 265.44 128.67 T
+(/* action in which to set vmods */) 342 128.67 T
+(unsigned int) 126 115.67 T
+1 F
+(v) 252 115.67 T
+2 F
+(;) 256.88 115.67 T
+(/* ne) 342 115.67 T
+(w v) 363.42 115.67 T
+(alue for virtual modi\336ers */) 379.33 115.67 T
+1 12 Q
+(XkbSARedir) 126 96 T
+(ectSetVModsMask) 184.21 96 T
+2 F
+( sets the) 272.86 96 T
+1 F
+(vmods0) 314.52 96 T
+2 F
+( and) 351.18 96 T
+1 F
+(vmods1) 374.51 96 T
+2 F
+( of) 411.17 96 T
+1 F
+(act) 427.16 96 T
+2 F
+( from) 441.83 96 T
+1 F
+(v) 471.16 96 T
+2 F
+(.) 476.48 96 T
+FMENDPAGE
+%%EndPage: "157" 169
+%%Page: "158" 170
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(158) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(16.1.13) 72 712 T
+(Actions f) 112.03 712 T
+(or Generating De) 163.13 712 T
+(viceButtonPress and De) 260.3 712 T
+(viceButtonRelease) 398.16 712 T
+2 F
+(Actions associated with) 108 692 T
+5 F
+-0.6 (XkbDeviceBtnAction) 224.99 692 S
+2 F
+( structures generate) 343.79 692 T
+5 F
+-0.6 (DeviceButton-) 440.09 692 S
+-0.6 (Press) 108 679 S
+2 F
+( and) 141 679 T
+5 F
+-0.6 (DeviceButtonRelease) 164.33 679 S
+2 F
+( events instead of normal) 289.73 679 T
+5 F
+-0.6 (KeyPress) 413.38 679 S
+2 F
+( and) 466.18 679 T
+5 F
+-0.6 (KeyRe-) 489.51 679 S
+-0.6 (lease) 108 666 S
+2 F
+( events:) 141 666 T
+2 11 Q
+(typedef struct _XkbDe) 126 645.67 T
+(viceBtnAction {) 225.92 645.67 T
+(unsigned char) 144 632.67 T
+(type;) 216 632.67 T
+(/*) 261 632.67 T
+5 F
+-0.33 (XkbSA_DeviceBtn, XkbSA_LockDeviceBtn) 272.31 632.67 S
+2 F
+( */) 498.03 632.67 T
+(unsigned char) 144 619.67 T
+(\337ags;) 216 619.67 T
+(/* with) 261 619.67 T
+1 F
+(type) 294.62 619.67 T
+2 F
+(, speci\336es locking or unlocking */) 312.94 619.67 T
+(unsigned char) 144 606.67 T
+(count;) 216 606.67 T
+-0.02 (/* controls number of De) 261 606.67 P
+-0.02 (viceButtonPress and Release e) 371.25 606.67 P
+-0.02 (v) 505.65 606.67 P
+-0.02 (ents */) 510.99 606.67 P
+(unsigned char) 144 593.67 T
+(b) 216 593.67 T
+(utton;) 221.28 593.67 T
+(/* inde) 261 593.67 T
+(x of b) 291.08 593.67 T
+(utton on) 316.53 593.67 T
+1 F
+(device) 355.64 593.67 T
+2 F
+( */) 383.74 593.67 T
+(unsigned char) 144 580.67 T
+(de) 216 580.67 T
+(vice;) 226.11 580.67 T
+(/* de) 261 580.67 T
+(vice ID of an X input e) 282.42 580.67 T
+(xtension de) 383.67 580.67 T
+(vice */) 433.81 580.67 T
+(}) 126 567.67 T
+3 F
+(XkbDe) 134.03 567.67 T
+(viceBtnAction) 166.87 567.67 T
+2 F
+(;) 233.47 567.67 T
+2 12 Q
+(The) 108 548 T
+1 F
+(type) 129.66 548 T
+2 F
+( field can have any one of the values shown in Table 16.17.) 149.65 548 T
+(The) 108 149 T
+1 F
+(flags) 129.66 149 T
+2 F
+( field is composed of the bitwise inclusive OR of the masks shown in Table) 153 149 T
+(16.18.) 108 136 T
+3 F
+(T) 227.3 528 T
+(able 16.17 De) 234.2 528 T
+(vice Button Action T) 305.34 528 T
+(ypes) 410.79 528 T
+1 F
+(T) 109 508 T
+(ype) 114.78 508 T
+(Ef) 252 508 T
+(fect) 262.45 508 T
+5 11 Q
+-0.33 (XkbSA_DeviceBtn) 109 493.67 S
+2 F
+(\245) 252 489.67 T
+(If the b) 261 489.67 T
+(utton speci\336ed by this action is logically do) 292.55 489.67 T
+(wn, the k) 483.86 489.67 T
+(e) 524.38 489.67 T
+(y) 529.1 489.67 T
+-0.33 (press and corresponding release are ignored and ha) 261 478.67 P
+-0.33 (v) 483 478.67 P
+-0.33 (e no ef) 488.34 478.67 P
+-0.33 (fect.) 517.34 478.67 P
+(If the de) 261 467.67 T
+(vice or b) 297.38 467.67 T
+(utton speci\336ed by this action are ille) 335.65 467.67 T
+(g) 494.97 467.67 T
+(al, this) 500.42 467.67 T
+(action beha) 261 456.67 T
+(v) 311.18 456.67 T
+(es lik) 316.52 456.67 T
+(e) 339.94 456.67 T
+5 F
+-0.33 (XkbSA_NoAction) 347.57 456.67 S
+2 F
+(.) 435.35 456.67 T
+(\245) 252 445.67 T
+(Otherwise, k) 261 445.67 T
+(e) 317.1 445.67 T
+(y presses cause one or more input e) 321.82 445.67 T
+(xtension) 477.76 445.67 T
+(de) 261 434.67 T
+(vice e) 271.11 434.67 T
+(v) 296.79 434.67 T
+(ents instead of the usual k) 302.13 434.67 T
+(e) 415.98 434.67 T
+(y press e) 420.7 434.67 T
+(v) 458.91 434.67 T
+(ent. If the) 464.25 434.67 T
+1 F
+(count) 509.46 434.67 T
+2 F
+(\336eld is zero, a k) 261 423.67 T
+(e) 330.85 423.67 T
+(y press generates a single) 335.57 423.67 T
+5 F
+-0.33 (DeviceButton-) 450.12 423.67 S
+-0.33 (Press) 261 412.67 S
+2 F
+( e) 292.35 412.67 T
+(v) 299.71 412.67 T
+(ent. If count is greater than zero, a k) 305.04 412.67 T
+(e) 463.77 412.67 T
+(y press e) 468.49 412.67 T
+(v) 506.71 412.67 T
+(ent) 512.04 412.67 T
+-0.23 (generates) 261 401.67 P
+1 F
+-0.23 (count) 305.05 401.67 P
+2 F
+-0.23 ( pairs of) 329.5 401.67 P
+5 F
+-0.53 -0.33 (DeviceButtonPress) 367.6 401.67 B
+2 F
+-0.23 ( and) 474.19 401.67 P
+5 F
+-0.53 -0.33 (Device-) 495.11 401.67 B
+-0.33 (ButtonRelease) 261 390.67 S
+2 F
+( e) 342.51 390.67 T
+(v) 349.87 390.67 T
+(ents.) 355.2 390.67 T
+(\245) 252 379.67 T
+(If) 261 379.67 T
+1 F
+(count) 271.08 379.67 T
+2 F
+( is zero, a k) 295.52 379.67 T
+(e) 345.81 379.67 T
+(y release generates an input e) 350.53 379.67 T
+(xtension) 479.57 379.67 T
+5 F
+-0.33 (DeviceButtonRelease) 261 368.67 S
+2 F
+( e) 380.13 368.67 T
+(v) 387.49 368.67 T
+(ent that matches the e) 392.82 368.67 T
+(v) 487.86 368.67 T
+(ent gener-) 493.2 368.67 T
+(ated by the corresponding k) 261 357.67 T
+(e) 383.09 357.67 T
+(y press. If) 387.81 357.67 T
+1 F
+(count) 434.24 357.67 T
+2 F
+( is nonzero, a k) 458.68 357.67 T
+(e) 525.47 357.67 T
+(y) 530.19 357.67 T
+-0.15 (release does not cause a) 261 346.67 P
+5 F
+-0.35 -0.33 (DeviceButtonRelease) 368.06 346.67 B
+2 F
+-0.15 ( e) 487.19 346.67 P
+-0.15 (v) 494.39 346.67 P
+-0.15 (ent. K) 499.73 346.67 P
+-0.15 (e) 526.18 346.67 P
+-0.15 (y) 530.9 346.67 P
+(releases ne) 261 335.67 T
+(v) 308.67 335.67 T
+(er cause) 314.01 335.67 T
+5 F
+-0.33 (KeyRelease) 352.49 335.67 S
+2 F
+( e) 415.19 335.67 T
+(v) 422.55 335.67 T
+(ents.) 427.88 335.67 T
+5 F
+-0.33 (XkbSA_LockDeviceBtn) 109 321.67 S
+2 F
+(\245) 252 317.67 T
+(If the de) 261 317.67 T
+(vice or b) 297.38 317.67 T
+(utton speci\336ed by this action are ille) 335.65 317.67 T
+(g) 494.97 317.67 T
+(al, this) 500.42 317.67 T
+(action beha) 261 306.67 T
+(v) 311.18 306.67 T
+(es lik) 316.52 306.67 T
+(e) 339.94 306.67 T
+5 F
+-0.33 (XkbSA_NoAction) 347.57 306.67 S
+2 F
+(.) 435.35 306.67 T
+(\245) 252 295.67 T
+(Otherwise, if the speci\336ed b) 261 295.67 T
+(utton is not lock) 384.51 295.67 T
+(ed and the) 455.6 295.67 T
+5 F
+-0.33 (XkbSA_LockNoLock) 261 284.67 S
+2 F
+( bit is not set in the) 361.32 284.67 T
+1 F
+(flags) 447.8 284.67 T
+2 F
+( \336eld, a k) 469.2 284.67 T
+(e) 510.03 284.67 T
+(y) 514.75 284.67 T
+(press generates an input e) 261 273.67 T
+(xtension) 373.86 273.67 T
+5 F
+-0.33 (DeviceButtonPress) 413.89 273.67 S
+2 F
+-0.09 (e) 261 262.67 P
+-0.09 (v) 265.61 262.67 P
+-0.09 (ent instead of a) 270.94 262.67 P
+5 F
+-0.21 -0.33 (KeyPress) 340.23 262.67 B
+2 F
+-0.09 ( e) 390.39 262.67 P
+-0.09 (v) 397.65 262.67 P
+-0.09 (ent and locks the b) 402.99 262.67 P
+-0.09 (utton. If the) 484.89 262.67 P
+-0.46 (b) 261 251.67 P
+-0.46 (utton is already lock) 266.28 251.67 P
+-0.46 (ed or if) 354.32 251.67 P
+5 F
+-1.04 -0.33 (XkbSA_LockNoLock) 387.47 251.67 B
+2 F
+-0.46 ( bit is set in) 487.79 251.67 P
+(the) 261 240.67 T
+1 F
+(flags) 277.19 240.67 T
+2 F
+( \336eld, the k) 298.59 240.67 T
+(e) 347.98 240.67 T
+(y press is ignored and has no ef) 352.7 240.67 T
+(fect.) 490.81 240.67 T
+(\245) 252 229.67 T
+(If the corresponding k) 261 229.67 T
+(e) 358.34 229.67 T
+(y press w) 363.06 229.67 T
+(as ignored, and if the) 404.49 229.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 261 218.67 S
+2 F
+( bit is not set in the) 373.86 218.67 T
+1 F
+(flags) 460.34 218.67 T
+2 F
+( \336eld, a k) 481.74 218.67 T
+(e) 522.57 218.67 T
+(y) 527.29 218.67 T
+(release generates an input e) 261 207.67 T
+(xtension) 381.79 207.67 T
+5 F
+-0.33 (DeviceButtonRe-) 421.82 207.67 S
+-0.33 (lease) 261 196.67 S
+2 F
+( e) 292.35 196.67 T
+(v) 299.71 196.67 T
+(ent instead of a) 305.04 196.67 T
+5 F
+-0.33 (KeyRelease) 374.7 196.67 S
+2 F
+( e) 437.4 196.67 T
+(v) 444.76 196.67 T
+(ent and unlocks the) 450.09 196.67 T
+(b) 261 185.67 T
+(utton. If the corresponding k) 266.28 185.67 T
+(e) 391.73 185.67 T
+(y press lock) 396.45 185.67 T
+(ed a b) 448.89 185.67 T
+(utton, the k) 474.94 185.67 T
+(e) 524.64 185.67 T
+(y) 529.36 185.67 T
+(release is ignored and has no ef) 261 174.67 T
+(fect.) 398.8 174.67 T
+3 12 Q
+(T) 220.02 116 T
+(able 16.18 De) 226.92 116 T
+(vice Button Action Flags) 298.07 116 T
+1 F
+(Fla) 109 96 T
+(g) 125.55 96 T
+(Meaning) 253 96 T
+5 11 Q
+-0.33 (XkbSA_LockNoLock) 109 81.67 S
+2 F
+(If set, and the action type is) 253 81.67 T
+5 F
+-0.33 (XkbSA_LockDeviceBtn) 377.04 81.67 S
+2 F
+(, the) 496.17 81.67 T
+(serv) 253 70.67 T
+(er only unlocks the b) 271.16 70.67 T
+(utton.) 363.21 70.67 T
+108 520 539 520 2 L
+V
+0.5 H
+0 Z
+N
+108 503 539 503 2 L
+V
+N
+108 108 522 108 2 L
+V
+N
+108 91 522 91 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "158" 170
+%%Page: "159" 171
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(159) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(16.1.14) 72 642 T
+(Actions f) 112.03 642 T
+(or Sim) 163.13 642 T
+(ulating Events fr) 200.23 642 T
+(om De) 294.01 642 T
+(vice V) 330.5 642 T
+(aluator) 364.48 642 T
+(s) 404.3 642 T
+2 F
+(A) 108 622 T
+1 F
+(valuator) 119.66 622 T
+2 F
+( manipulates a range of values for some entity, like a mouse axis, a slider or a) 160.33 622 T
+(dial. Actions associated with) 108 609 T
+5 F
+-0.6 (XkbDeviceValuatorAction) 248.99 609 S
+2 F
+( structures are used to simu-) 400.79 609 T
+(late events from one or two input extension device valuators.) 108 596 T
+2 11 Q
+(typedef struct _XkbDe) 126 575.67 T
+(viceV) 225.92 575.67 T
+(aluatorAction {) 250.97 575.67 T
+(unsigned char) 144 562.67 T
+(type;) 225 562.67 T
+(/*) 279 562.67 T
+5 F
+-0.33 (XkbSA_DeviceValuator) 287.56 562.67 S
+2 F
+( */) 412.96 562.67 T
+(unsigned char) 144 549.67 T
+(de) 225 549.67 T
+(vice;) 235.11 549.67 T
+(/* de) 279 549.67 T
+(vice ID */) 300.42 549.67 T
+(unsigned char) 144 536.67 T
+(v1_what;) 225 536.67 T
+(/* determines ho) 279 536.67 T
+(w v) 352.05 536.67 T
+(aluator is to beha) 367.97 536.67 T
+(v) 443.21 536.67 T
+(e for v) 448.54 536.67 T
+(aluator 1 */) 476.98 536.67 T
+(unsigned char) 144 523.67 T
+(v1_ndx;) 225 523.67 T
+(/* speci\336es a real v) 279 523.67 T
+(aluator */) 363.04 523.67 T
+(unsigned char) 144 510.67 T
+(v1_v) 225 510.67 T
+(alue;) 246.73 510.67 T
+(/* the v) 279 510.67 T
+(alue for v) 311.73 510.67 T
+(aluator 1 */) 353.6 510.67 T
+(unsigned char) 144 497.67 T
+(v2_what;) 225 497.67 T
+(/* determines ho) 279 497.67 T
+(w v) 352.05 497.67 T
+(aluator is to beha) 367.97 497.67 T
+(v) 443.21 497.67 T
+(e for v) 448.54 497.67 T
+(aluator 2 */) 476.98 497.67 T
+(unsigned char) 144 484.67 T
+(v2_ndx;) 225 484.67 T
+(/* speci\336es a real v) 279 484.67 T
+(aluator */) 363.04 484.67 T
+(unsigned char) 144 471.67 T
+(v2_v) 225 471.67 T
+(alue;) 246.73 471.67 T
+(/* the v) 279 471.67 T
+(alue for v) 311.73 471.67 T
+(aluator 1 */) 353.6 471.67 T
+(}) 126 458.67 T
+3 F
+(XkbDe) 134.03 458.67 T
+(viceV) 166.87 458.67 T
+(aluatorAction) 192.12 458.67 T
+2 F
+(;) 257.51 458.67 T
+2 12 Q
+(If) 108 439 T
+1 F
+(device) 118.99 439 T
+2 F
+( is illegal or if neither) 149.64 439 T
+1 F
+(v1_ndx) 256.3 439 T
+2 F
+( nor) 290.95 439 T
+1 F
+(v2_ndx) 312.95 439 T
+2 F
+( specifies a legal valuator, this action) 347.6 439 T
+(behaves like) 108 426 T
+5 F
+-0.6 (XkbSA_NoAction) 170.65 426 S
+2 F
+(.) 263.05 426 T
+2 11 Q
+(The lo) 108 405 T
+(w four bits of) 136.14 405 T
+1 F
+(v1_what) 198.46 405 T
+2 F
+( and) 235.74 405 T
+1 F
+(v2_what) 257.13 405 T
+2 F
+( specify the corresponding scale v) 294.41 405 T
+(alue \050denoted) 443.51 405 T
+5 12 Q
+-0.6 (val<n>Scale) 108 392 S
+2 11 Q
+( in) 180.6 392 T
+2 12 Q
+(Table 16.17) 194.66 392 T
+2 11 Q
+(\051, if needed. The high four bits of) 251.98 392 T
+1 F
+(v1_what) 401.07 392 T
+2 F
+( and) 438.35 392 T
+1 F
+(v2_what) 459.73 392 T
+2 F
+( specify) 497.01 392 T
+(the operation to perform to set the v) 108 379 T
+(alues.) 265.67 379 T
+2 12 Q
+( The high four bits of) 291.03 379 T
+1 F
+(v1_what) 396.35 379 T
+2 F
+( and) 437.02 379 T
+1 F
+(v2_what) 460.35 379 T
+2 F
+( can) 501.02 379 T
+(have the values shown in Table 16.17; the use of) 108 366 T
+5 F
+-0.6 (val<n>Scale) 344.96 366 S
+2 F
+( is shown in that table) 417.57 366 T
+(also.) 108 353 T
+2 11 Q
+-0.25 (Ille) 108 203.67 P
+-0.25 (g) 122.5 203.67 P
+-0.25 (al v) 127.94 203.67 P
+-0.25 (alues for) 143.61 203.67 P
+5 12 Q
+-0.61 -0.6 (XkbSA_SetValRelative) 184.03 203.67 B
+2 11 Q
+-0.25 ( or) 316.04 203.67 P
+5 12 Q
+-0.61 -0.6 (XkbSA_SetValAbsolute) 330.19 203.67 B
+2 11 Q
+-0.25 ( are clamped into) 462.2 203.67 P
+(range. Note that all of these possibilities are le) 108 191.67 T
+(g) 311.61 191.67 T
+(al for absolute v) 317.05 191.67 T
+(aluators. F) 387.96 191.67 T
+(or relati) 434.24 191.67 T
+(v) 468.48 191.67 T
+(e v) 473.82 191.67 T
+(aluators,) 486.67 191.67 T
+-0.28 (only) 108 179.67 P
+5 12 Q
+-0.68 -0.6 (XkbSA_SetValRelative) 130.02 179.67 B
+2 11 Q
+-0.28 ( is permitted. P) 262.03 179.67 P
+-0.28 (art of the input e) 327.62 179.67 P
+-0.28 (xtension description of a de) 399.03 179.67 P
+-0.28 (vice) 519.21 179.67 P
+(is the range of le) 108 167.67 T
+(g) 181.15 167.67 T
+(al v) 186.6 167.67 T
+(alues for all absolute v) 202.51 167.67 T
+(aluators, whence the maximum and minimum le) 301.83 167.67 T
+(g) 514.01 167.67 T
+(al) 519.46 167.67 T
+(v) 108 155.67 T
+(alues sho) 113.22 155.67 T
+(wn in) 153.58 155.67 T
+2 12 Q
+(Table 16.17) 181.08 155.67 T
+2 11 Q
+(.) 238.41 155.67 T
+2 12 Q
+(The following two masks are provided as a convenience to select either portion of) 108 135 T
+1 F
+(v1_what) 108 122 T
+2 F
+( or) 148.67 122 T
+1 F
+(v2_what) 164.66 122 T
+2 F
+(:) 205.33 122 T
+2 11 Q
+(#de\336ne XkbSA_V) 126 96.67 T
+(alOpMask) 206.35 96.67 T
+(\0500x70\051) 306 96.67 T
+(#de\336ne XkbSA_V) 126 83.67 T
+(alScaleMask) 206.35 83.67 T
+(\0500x07\051) 306 83.67 T
+5 F
+-0.33 (XkbSA_LockNoUnlock) 109 677.67 S
+2 F
+(If set, and the action type is) 253 677.67 T
+5 F
+-0.33 (XkbSA_LockDeviceBtn) 377.04 677.67 S
+2 F
+(, the) 496.17 677.67 T
+(serv) 253 666.67 T
+(er only locks the b) 271.16 666.67 T
+(utton.) 352.21 666.67 T
+3 12 Q
+(T) 183.11 333 T
+(able 16.19 De) 190.01 333 T
+(vice V) 261.16 333 T
+(aluator v<n>_what High Bits V) 291.71 333 T
+(alues) 451.64 333 T
+1 F
+(V) 109 313 T
+(alue of high bits) 115 313 T
+(Ef) 252 313 T
+(fect) 262.45 313 T
+5 11 Q
+-0.33 (XkbSA_IgnoreVal) 109 298.67 S
+2 F
+(No action) 252 298.67 T
+5 F
+-0.33 (XkbSA_SetValMin) 109 284.67 S
+1 F
+(v<n>_value) 252 284.67 T
+2 F
+( is set to its minimum le) 306.56 284.67 T
+(g) 412.14 284.67 T
+(al v) 417.58 284.67 T
+(alue.) 433.5 284.67 T
+5 F
+-0.33 (XkbSA_SetValCenter) 109 270.67 S
+1 F
+(v<n>_value) 252 270.67 T
+2 F
+( is centered \050to \050max-min\051/2\051.) 306.56 270.67 T
+5 F
+-0.33 (XkbSA_SetValMax) 109 256.67 S
+1 F
+(v<n>_value) 252 256.67 T
+2 F
+( is set to its maximum le) 306.56 256.67 T
+(g) 413.96 256.67 T
+(al v) 419.41 256.67 T
+(alue.) 435.33 256.67 T
+5 F
+-0.33 (XkbSA_SetValRelative) 109 242.67 S
+1 F
+(v<n>_value) 252 242.67 T
+2 F
+( * \0502) 306.56 242.67 T
+2 9.6 Q
+(v) 326.72 247.47 T
+(al<n>Scale) 331.28 247.47 T
+2 11 Q
+(\051 is added to) 374.64 242.67 T
+1 F
+(v<n>_value) 431.46 242.67 T
+2 F
+(.) 486.02 242.67 T
+5 F
+-0.33 (XkbSA_SetValAbsolute) 109 228.67 S
+1 F
+(v<n>_value) 252 228.67 T
+2 F
+( is set to \0502) 306.56 228.67 T
+2 9.6 Q
+(v) 354.84 233.47 T
+(al<n>Scale) 359.4 233.47 T
+2 11 Q
+(\051.) 402.75 228.67 T
+3 12 Q
+(T) 220.02 712 T
+(able 16.18 De) 226.92 712 T
+(vice Button Action Flags) 298.07 712 T
+1 F
+(Fla) 109 692 T
+(g) 125.55 692 T
+(Meaning) 253 692 T
+108 704 522 704 2 L
+V
+0.5 H
+0 Z
+N
+108 687 522 687 2 L
+V
+N
+108 325 539 325 2 L
+V
+N
+108 308 539 308 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "159" 171
+%%Page: "160" 172
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(160) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+1 12 Q
+(v1_ndx) 108 712 T
+2 F
+( and) 142.66 712 T
+1 F
+(v2_ndx) 165.98 712 T
+2 F
+( specify valuators that actually exists. For example, most mice have) 200.64 712 T
+(two valuators \050x and y axes\051 so the only legal values for a mouse would be 0 and 1. For a) 108 699 T
+(dial box with eight dials, any value in the range 0..7 would be correct.) 108 686 T
+0 F
+(16.1.15) 72 661 T
+(Obtaining K) 112.03 661 T
+(e) 179.86 661 T
+(y Actions f) 186.35 661 T
+(or K) 247.45 661 T
+(e) 271.27 661 T
+(ys fr) 277.76 661 T
+(om the Ser) 302.87 661 T
+(ver) 365 661 T
+2 F
+(T) 108 641 T
+(o update the actions \050the) 114.37 641 T
+1 F
+(key_acts) 234.68 641 T
+2 F
+( array\051 for a subset of the k) 276 641 T
+(e) 405.5 641 T
+(ys in a k) 410.65 641 T
+(e) 450.86 641 T
+(yboard descrip-) 456.01 641 T
+(tion, use) 108 628 T
+1 F
+(XkbGetK) 151.67 628 T
+(e) 195.24 628 T
+(yActions) 200.21 628 T
+2 F
+(.) 241.54 628 T
+2 11 Q
+(Status) 108 607.67 T
+3 F
+(XkbGetK) 137.65 607.67 T
+(eyActions) 183.21 607.67 T
+2 F
+(\050) 229.03 607.67 T
+1 F
+(dpy) 232.7 607.67 T
+2 F
+(,) 247.87 607.67 T
+1 F
+( \336r) 250.62 607.67 T
+(st) 263.03 607.67 T
+2 F
+(,) 270.37 607.67 T
+1 F
+(num) 275.87 607.67 T
+2 F
+(,) 294.81 607.67 T
+1 F
+( xkb) 297.56 607.67 T
+2 F
+(\051) 315.58 607.67 T
+(Display *) 126 594.67 T
+1 F
+(dpy) 234 594.67 T
+2 F
+(;) 249.88 594.67 T
+(/* connection to X serv) 279 594.67 T
+(er */) 381.49 594.67 T
+(unsigned int) 126 581.67 T
+1 F
+(\336r) 234 581.67 T
+(st) 243.67 581.67 T
+2 F
+(;) 251.01 581.67 T
+(/* k) 279 581.67 T
+(e) 295.7 581.67 T
+(ycode of \336rst k) 300.42 581.67 T
+(e) 366.6 581.67 T
+(y of interest */) 371.32 581.67 T
+(unsigned int) 126 568.67 T
+1 F
+(num) 234 568.67 T
+2 F
+(;) 252.94 568.67 T
+(/* number of k) 279 568.67 T
+(e) 343.97 568.67 T
+(ys desired */) 348.68 568.67 T
+(XkbDescPtr) 126 555.67 T
+1 F
+(xkb) 234 555.67 T
+2 F
+(;) 249.27 555.67 T
+(/* pointer to k) 279 555.67 T
+(e) 340.92 555.67 T
+(yboard description where result is stored */) 345.64 555.67 T
+1 12 Q
+(XkbGetK) 108 536 T
+(e) 151.57 536 T
+(yActions) 156.54 536 T
+2 F
+( sends a request to the server to obtain the actions for) 197.87 536 T
+1 F
+(num) 455.82 536 T
+2 F
+( keys on the) 476.48 536 T
+(keyboard starting with key) 108 523 T
+1 F
+(first) 239.32 523 T
+2 F
+(. It waits for a reply and returns the actions in the) 258.66 523 T
+1 F
+-0.25 (server) 108 510 P
+2 F
+-0.25 (->) 137.99 510 P
+1 F
+-0.25 (key_acts) 148.75 510 P
+2 F
+-0.25 ( field of) 190.07 510 P
+1 F
+-0.25 (xkb) 230.31 510 P
+2 F
+-0.25 (. If successful,) 246.97 510 P
+1 F
+-0.25 (XkbGetK) 318.54 510 P
+-0.25 (e) 362.11 510 P
+-0.25 (yActions) 367.08 510 P
+2 F
+-0.25 ( returns) 408.4 510 P
+5 F
+-0.55 -0.6 (Success) 447.23 510 B
+2 F
+-0.25 (. The) 493.43 510 P
+1 F
+-0.25 (xkb) 520.59 510 P
+2 F
+(parameter must be a pointer to a valid Xkb keyboard description.) 108 497 T
+-0.29 (If the) 108 476 P
+1 F
+-0.29 (server) 136.07 476 P
+2 F
+-0.29 ( map in the) 166.06 476 P
+1 F
+-0.29 (xkb) 221.55 476 P
+2 F
+-0.29 ( parameter has not been allocated,) 238.21 476 P
+1 F
+-0.29 (XkbGetK) 402.73 476 P
+-0.29 (e) 446.3 476 P
+-0.29 (yActions) 451.27 476 P
+2 F
+-0.29 ( allocates) 492.6 476 P
+(and initializes it before obtaining the actions.) 108 463 T
+-0.38 (If the server does not have a compatible version of Xkb, or the Xkb extension has not been) 108 442 P
+(properly initialized,) 108 429 T
+1 F
+(XkbGetK) 205.66 429 T
+(e) 249.23 429 T
+(yActions) 254.2 429 T
+2 F
+( returns) 295.52 429 T
+5 F
+-0.6 (BadAccess) 334.85 429 S
+2 F
+(. If) 394.25 429 T
+1 F
+(num) 411.24 429 T
+2 F
+( is less than 1 or) 431.9 429 T
+(greater than) 108 416 T
+5 F
+-0.6 (XkbMaxKeyCount) 167.98 416 S
+2 F
+(,) 260.38 416 T
+1 F
+(XkbGetK) 266.38 416 T
+(e) 309.95 416 T
+(yActions) 314.92 416 T
+2 F
+( returns) 356.25 416 T
+5 F
+-0.6 (BadValue) 395.57 416 S
+2 F
+(. If any allocation) 448.37 416 T
+(errors occur,) 108 403 T
+1 F
+(XkbGetK) 171.64 403 T
+(e) 215.21 403 T
+(yActions) 220.18 403 T
+2 F
+( returns) 261.5 403 T
+5 F
+-0.6 (BadAlloc) 300.83 403 S
+2 F
+(.) 353.63 403 T
+0 F
+(16.1.16) 72 378 T
+(Changing the Number of Actions Bound to a K) 112.03 378 T
+(e) 377.2 378 T
+(y) 383.69 378 T
+2 F
+(T) 108 358 T
+(o change the number of actions bound to a k) 114.37 358 T
+(e) 327.22 358 T
+(y) 332.36 358 T
+(, use) 337.58 358 T
+1 F
+(XkbResizeK) 362.58 358 T
+(e) 419.48 358 T
+(yAction) 424.45 358 T
+2 F
+(.) 461.11 358 T
+2 11 Q
+(XkbAction *) 108 337.67 T
+3 F
+(XkbResizeK) 165.13 337.67 T
+(eyActions) 223.52 337.67 T
+2 F
+(\050) 269.35 337.67 T
+1 F
+(xkb) 273.01 337.67 T
+2 F
+(,) 288.28 337.67 T
+1 F
+( k) 291.03 337.67 T
+(e) 298.55 337.67 T
+(y) 303.11 337.67 T
+2 F
+(,) 307.28 337.67 T
+1 F
+( needed) 310.03 337.67 T
+2 F
+(\051) 343.93 337.67 T
+(XkbDescRec *) 126 324.67 T
+1 F
+(xkb) 234 324.67 T
+2 F
+(;) 249.27 324.67 T
+(/* k) 306 324.67 T
+(e) 322.7 324.67 T
+(yboard description to change */) 327.42 324.67 T
+(int) 126 311.67 T
+1 F
+(k) 234 311.67 T
+(e) 238.77 311.67 T
+(y) 243.33 311.67 T
+2 F
+(;) 248.21 311.67 T
+(/* k) 306 311.67 T
+(e) 322.7 311.67 T
+(ycode of k) 327.42 311.67 T
+(e) 373.74 311.67 T
+(y to change */) 378.46 311.67 T
+(int) 126 298.67 T
+1 F
+(needed) 234 298.67 T
+2 F
+(;) 265.15 298.67 T
+(/* ne) 306 298.67 T
+(w number of actions required */) 327.42 298.67 T
+2 12 Q
+-0.23 (The) 108 279 P
+1 F
+-0.23 (xkb) 129.43 279 P
+2 F
+-0.23 ( parameter points to the keyboard description containing the) 146.09 279 P
+1 F
+-0.23 (key) 435.62 279 P
+2 F
+-0.23 ( whose number of) 451.61 279 P
+(actions is to be changed. The) 108 266 T
+1 F
+(key) 250.31 266 T
+2 F
+( parameter is the keycode of the key to change, and) 266.29 266 T
+1 F
+(needed) 108 253 T
+2 F
+( specifies the new number of actions required for the key.) 141.98 253 T
+1 F
+-0.32 (XkbResizeK) 108 232 P
+-0.32 (e) 164.9 232 P
+-0.32 (yActions) 169.87 232 P
+2 F
+-0.32 ( reserves the space needed for the actions and returns a pointer to the) 211.2 232 P
+(beginning of the new array that holds the actions. It can change the) 108 219 T
+1 F
+(acts) 432.6 219 T
+2 F
+(,) 451.93 219 T
+1 F
+(num_acts) 457.93 219 T
+2 F
+(, and) 503.93 219 T
+1 F
+(size_acts) 108 206 T
+2 F
+( fields of) 151.33 206 T
+1 F
+(xkb) 196.99 206 T
+2 F
+(->) 213.65 206 T
+1 F
+(server) 224.41 206 T
+2 F
+( if it is necessary to reallocate the) 254.4 206 T
+1 F
+(acts) 417.7 206 T
+2 F
+(array.) 440.03 206 T
+-0.25 (If) 108 185 P
+1 F
+-0.25 (needed) 118.75 185 P
+2 F
+-0.25 ( is greater than the current number of keysyms for the key,) 152.73 185 P
+1 F
+-0.25 (XkbResizeK) 434.05 185 P
+-0.25 (e) 490.95 185 P
+-0.25 (yActions) 495.92 185 P
+2 F
+(initializes all new actions in the array to) 108 172 T
+5 F
+-0.6 (NoAction) 302.64 172 S
+2 F
+(.) 355.44 172 T
+(Because the number of actions needed by a key is normally computed as width * number) 108 151 T
+-0.49 (of groups, and) 108 138 P
+1 F
+-0.49 (XkbResizeK) 178.52 138 P
+-0.49 (e) 235.43 138 P
+-0.49 (yActions) 240.4 138 P
+2 F
+-0.49 ( does not modify either the width or number of groups) 281.73 138 P
+(for the key, a discrepancy exists on return from) 108 125 T
+1 F
+(XkbResizeK) 337.94 125 T
+(e) 394.85 125 T
+(yActions) 399.82 125 T
+2 F
+( between the space) 441.14 125 T
+-0.06 (allocated for the actions and the number required. The unused entries in the list of actions) 108 112 P
+(returned by) 108 99 T
+1 F
+(XkbResizeK) 165.98 99 T
+(e) 222.89 99 T
+(yActions) 227.86 99 T
+2 F
+( are not preserved across future calls to any of the map) 269.18 99 T
+(editing functions, so you must update the key actions \050which updates the width and num-) 108 86 T
+FMENDPAGE
+%%EndPage: "160" 172
+%%Page: "161" 173
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(161) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(ber of groups for the key\051 before calling another allocator function. A call to) 108 712 T
+1 F
+(XkbChang) 477.58 712 T
+(e-) 528.12 712 T
+(T) 108 699 T
+(ypesOfK) 113.78 699 T
+(e) 154.69 699 T
+(y) 159.66 699 T
+2 F
+( updates these.) 164.99 699 T
+(If any allocation errors occur while resizing the number of actions bound to the key,) 108 678 T
+1 F
+(XkbResizeK) 108 665 T
+(e) 164.9 665 T
+(yActions) 169.87 665 T
+2 F
+( returns) 211.2 665 T
+5 F
+-0.6 (NULL) 250.52 665 S
+2 F
+(.) 276.92 665 T
+0 F
+(Note) 126 644.67 T
+2 11 Q
+-0.3 (A change to the number of actions bound to a k) 162 644.67 P
+-0.3 (e) 367.85 644.67 P
+-0.3 (y should be accompanied by a change) 372.57 644.67 P
+-0.32 (in the number of symbols bound to a k) 162 632.67 P
+-0.32 (e) 329.25 632.67 P
+-0.32 (y) 333.97 632.67 P
+-0.32 (. Refer to section 15.3.7 for more information) 338.75 632.67 P
+(on changing the number of symbols bound to a k) 162 620.67 T
+(e) 377.29 620.67 T
+(y) 382.01 620.67 T
+(.) 386.8 620.67 T
+0 12 Q
+(16.2) 72 596 T
+(K) 108 596 T
+(e) 116.48 596 T
+(y Beha) 122.98 596 T
+(vior) 162.14 596 T
+2 F
+(Key behavior refers to the demeanor of a key. For example, the expected behavior of the) 108 576 T
+4 11 Q
+(CapsLoc) 108 563 T
+(k) 151.19 563 T
+2 12 Q
+( key is that it logically locks when pressed, and then logically unlocks when) 156.69 563 T
+(pressed again.) 108 550 T
+0 F
+(16.2.1) 72 525 T
+(Radio Gr) 108 525 T
+(oups) 158.44 525 T
+2 F
+(Keys that belong to the same radio group have the) 108 505 T
+5 F
+-0.6 (XkbKB_RadioGroup) 351.96 505 S
+2 F
+( type in the) 457.56 505 T
+1 F
+(type) 514.23 505 T
+2 F
+(field and the radio group index specified in the) 108 492 T
+1 F
+(data) 335.63 492 T
+2 F
+( field in the) 356.96 492 T
+5 F
+-0.6 (XkbBehavior) 414.96 492 S
+2 F
+( structure.) 487.56 492 T
+(If the radio group has a name in the) 108 479 T
+5 F
+-0.6 (XkbNamesRec) 281.63 479 S
+2 F
+( structure, the radio group index is the) 354.23 479 T
+-0.11 (index into the) 108 466 P
+1 F
+-0.11 (radio_group) 176.67 466 P
+2 F
+-0.11 ( array in the) 237.34 466 P
+5 F
+-0.24 -0.6 (XkbNamesRec) 297.55 466 B
+2 F
+-0.11 ( structure. A radio group key when) 370.15 466 P
+-0.23 (pressed stays logically down until another key in the radio group is pressed, when the first) 108 453 P
+(key becomes logically up and the new key becomes logically down. Setting the) 108 440 T
+5 F
+-0.75 -0.6 (XkbKB_RGAllowNone) 108 427 B
+2 F
+-0.34 ( bit in the behavior for all of the keys of the radio group means that) 220.2 427 P
+(pressing the logically down member of the radio group causes it to logically release, in) 108 414 T
+(which case none of the keys of the radio group would be logically down. If) 108 401 T
+5 F
+-0.61 -0.6 (XkbKB_RGAllowNone) 108 388 B
+2 F
+-0.28 ( is not set, there is no way to release the logically down member of) 220.2 388 P
+(the group.) 108 375 T
+(The low five bits of the) 108 354 T
+1 F
+(data) 223.32 354 T
+2 F
+( field of the) 244.66 354 T
+5 F
+-0.6 (XkbBehavior) 303.31 354 S
+2 F
+( structure are the group number,) 375.91 354 T
+(the high three bits are flags. The only flag currently defined is:) 108 341 T
+2 11 Q
+(#de\336ne) 108 315.67 T
+(XkbRG_Allo) 162 315.67 T
+(wNone) 221 315.67 T
+(0x80) 306 315.67 T
+0 12 Q
+(16.2.2) 72 290 T
+(The XkbBeha) 108 290 T
+(vior Structure) 183.84 290 T
+2 F
+-0.12 (The) 108 270 P
+1 F
+-0.12 (behaviors) 129.54 270 P
+2 F
+-0.12 ( field of the server map is an array of) 176.87 270 P
+5 F
+-0.27 -0.6 (XkbBehavior) 356.24 270 B
+2 F
+-0.12 ( structures, indexed by) 428.85 270 P
+(keycode, and contains the behavior for each key. The) 108 257 T
+5 F
+-0.6 (XkbBehavior) 366.92 257 S
+2 F
+( structure is defined) 439.52 257 T
+(as follows:) 108 244 T
+2 11 Q
+(typedef struct _XkbBeha) 126 223.67 T
+(vior {) 235.76 223.67 T
+(unsigned char type;) 144 210.67 T
+(/* beha) 270 210.67 T
+(vior type + optional) 301.86 210.67 T
+5 F
+-0.33 (XkbKB_Permanent) 391.78 210.67 S
+2 F
+( bit */) 485.83 210.67 T
+(unsigned char data;) 144 197.67 T
+(}) 126 184.67 T
+3 F
+(XkbBeha) 134.03 184.67 T
+(vior) 177.77 184.67 T
+2 F
+(;) 196.71 184.67 T
+2 12 Q
+(The) 108 165 T
+1 F
+(type) 129.66 165 T
+2 F
+( field specifies the Xkb behavior, and the value of the) 149.65 165 T
+1 F
+(data) 409.6 165 T
+2 F
+( field depends on the) 430.93 165 T
+1 F
+(type) 108 152 T
+2 F
+(. Xkb supports the key behaviors shown in Table 16.20.) 127.99 152 T
+3 F
+(T) 261.56 132 T
+(able 16.20 K) 268.46 132 T
+(ey Beha) 334.83 132 T
+(viors) 374.86 132 T
+1 F
+(T) 109 112 T
+(ype) 114.78 112 T
+(Ef) 217 112 T
+(fect) 227.45 112 T
+5 11 Q
+-0.33 (XkbKB_Default) 109 97.67 S
+2 F
+-0.05 (Press and release e) 217 97.67 P
+-0.05 (v) 299.34 97.67 P
+-0.05 (ents are processed normally) 304.67 97.67 P
+-0.05 (. The) 426.3 97.67 P
+1 F
+-0.05 (data) 451.54 97.67 P
+2 F
+-0.05 ( \336eld is unused.) 471.1 97.67 P
+108 124 540 124 2 L
+V
+0.5 H
+0 Z
+N
+108 107 540 107 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "161" 173
+%%Page: "162" 174
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(162) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(Xkb also provides the mask,) 108 405 T
+5 F
+-0.6 (XkbKB_Permanent) 247.32 405 S
+2 F
+( to specify whether the key behavior) 346.32 405 T
+(type should be simulated by Xkb or whether the key behavior describes an unalterable) 108 392 T
+(physical, electrical, or software aspect of the keyboard. If the) 108 379 T
+5 F
+-0.6 (XkbKB_Permanent) 404.24 379 S
+2 F
+( bit is) 503.25 379 T
+(not set in the) 108 366 T
+1 F
+(type) 172.67 366 T
+2 F
+( field, Xkb simulates the behavior in software. Otherwise, Xkb relies) 192.66 366 T
+(upon the keyboard to implement the behavior.) 108 353 T
+0 F
+(16.2.3) 72 328 T
+(Obtaining K) 108 328 T
+(e) 175.82 328 T
+(y Beha) 182.32 328 T
+(vior) 221.48 328 T
+(s f) 243.31 328 T
+(or K) 257.08 328 T
+(e) 280.9 328 T
+(ys fr) 287.39 328 T
+(om the Ser) 312.49 328 T
+(ver) 374.63 328 T
+2 F
+(T) 108 308 T
+(o obtain the beha) 114.37 308 T
+(viors \050the) 196.45 308 T
+1 F
+(behaviors) 245.11 308 T
+2 F
+( array\051 for a subset of the k) 292.44 308 T
+(e) 421.94 308 T
+(ys in a k) 427.09 308 T
+(e) 467.3 308 T
+(yboard) 472.45 308 T
+(description from the serv) 108 295 T
+(er) 228.13 295 T
+(, use) 236.98 295 T
+1 F
+(XkbGetK) 261.97 295 T
+(e) 305.54 295 T
+(yBehavior) 310.51 295 T
+(s) 359.71 295 T
+2 F
+(:) 364.38 295 T
+2 11 Q
+(Status) 108 274.67 T
+3 F
+(XkbGetK) 137.65 274.67 T
+(eyBeha) 183.21 274.67 T
+(viors) 217.15 274.67 T
+2 F
+(\050) 240.37 274.67 T
+1 F
+(dpy) 244.04 274.67 T
+2 F
+(,) 259.21 274.67 T
+1 F
+( \336r) 261.96 274.67 T
+(st) 274.38 274.67 T
+2 F
+(,) 281.71 274.67 T
+1 F
+( num) 284.46 274.67 T
+2 F
+(,) 306.15 274.67 T
+1 F
+( xkb) 308.9 274.67 T
+2 F
+(\051) 326.92 274.67 T
+(Display *) 126 261.67 T
+1 F
+(dpy) 234 261.67 T
+2 F
+(;) 249.88 261.67 T
+(/* connection to serv) 306 261.67 T
+(er */) 397.8 261.67 T
+(unsigned int) 126 248.67 T
+1 F
+(\336r) 234 248.67 T
+(st) 243.67 248.67 T
+2 F
+(;) 251.01 248.67 T
+(/* k) 306 248.67 T
+(e) 322.7 248.67 T
+(ycode of \336rst k) 327.42 248.67 T
+(e) 393.6 248.67 T
+(y to get */) 398.32 248.67 T
+(unsigned int) 126 235.67 T
+1 F
+(num) 234 235.67 T
+2 F
+(;) 252.94 235.67 T
+(/* number of k) 306 235.67 T
+(e) 370.97 235.67 T
+(ys for which beha) 375.68 235.67 T
+(viors are desired */) 453.97 235.67 T
+(XkbDescPtr) 126 222.67 T
+1 F
+(xkb) 234 222.67 T
+2 F
+(;) 249.27 222.67 T
+(/* Xkb description to contain the result */) 306 222.67 T
+1 12 Q
+-0.31 (XkbGetK) 108 203 P
+-0.31 (e) 151.57 203 P
+-0.31 (yBehavior) 156.54 203 P
+-0.31 (s) 205.74 203 P
+2 F
+-0.31 (sends a request to the server to obtain the behaviors for) 213.1 203 P
+1 F
+-0.31 (num) 477.28 203 P
+2 F
+-0.31 ( keys on) 497.94 203 P
+(the keyboard starting with the key whose keycode is) 108 190 T
+1 F
+(\336r) 362.29 190 T
+(st) 372.84 190 T
+2 F
+(. It waits for a reply and returns) 380.84 190 T
+(the behaviors in the) 108 177 T
+1 F
+(server) 205.32 177 T
+2 F
+(->) 235.31 177 T
+1 F
+(behaviors) 246.07 177 T
+2 F
+( field of) 293.4 177 T
+1 F
+(xkb) 334.39 177 T
+2 F
+(. If successful,) 351.05 177 T
+1 F
+(XkbGetK) 423.36 177 T
+(e) 466.93 177 T
+(yBehavior) 471.9 177 T
+(s) 521.1 177 T
+2 F
+(returns) 108 164 T
+5 F
+-0.6 (Success) 144.32 164 S
+2 F
+(.) 190.52 164 T
+(If the) 108 143 T
+1 F
+(server) 136.66 143 T
+2 F
+( map in the) 166.64 143 T
+1 F
+(xkb) 223.31 143 T
+2 F
+( parameter has not been allocated,) 239.96 143 T
+1 F
+(XkbGetK) 406.25 143 T
+(e) 449.82 143 T
+(yBehavior) 454.79 143 T
+(s) 503.99 143 T
+2 F
+( allo-) 508.66 143 T
+(cates and initializes it before obtaining the actions.) 108 130 T
+-0.38 (If the server does not have a compatible version of Xkb, or the Xkb extension has not been) 108 109 P
+(properly initialized,) 108 96 T
+1 F
+(XkbGetK) 205.66 96 T
+(e) 249.23 96 T
+(yBehavior) 254.2 96 T
+(s) 303.4 96 T
+2 F
+( returns) 308.06 96 T
+5 F
+-0.6 (BadAccess) 347.39 96 S
+2 F
+(. If) 406.79 96 T
+1 F
+(num) 423.78 96 T
+2 F
+( is less than 1 or) 444.45 96 T
+(greater than) 108 83 T
+5 F
+-0.6 (XkbMaxKeyCount) 167.98 83 S
+2 F
+(,) 260.38 83 T
+1 F
+(XkbGetK) 266.38 83 T
+(e) 309.95 83 T
+(yBehavior) 314.92 83 T
+(s) 364.12 83 T
+2 F
+( returns) 368.79 83 T
+5 F
+-0.6 (BadValue) 408.11 83 S
+2 F
+(. If any alloca-) 460.91 83 T
+(tion errors occur,) 108 70 T
+1 F
+(XkbGetK) 193.31 70 T
+(e) 236.88 70 T
+(yBehavior) 241.85 70 T
+(s) 291.05 70 T
+2 F
+( returns) 295.72 70 T
+5 F
+-0.6 (BadAlloc) 335.04 70 S
+2 F
+(.) 387.84 70 T
+5 11 Q
+-0.33 (XkbKB_Lock) 109 677.67 S
+2 F
+(If a k) 217 677.67 T
+(e) 240.1 677.67 T
+(y is logically up \050that is, the corresponding bit of the core k) 244.82 677.67 T
+(e) 505.32 677.67 T
+(y map) 510.04 677.67 T
+-0.19 (is cleared\051 when it is pressed, the k) 217 666.67 P
+-0.19 (e) 369.51 666.67 P
+-0.19 (y press is processed normally and the) 374.23 666.67 P
+(corresponding release is ignored. If the k) 217 655.67 T
+(e) 396.82 655.67 T
+(y is logically do) 401.54 655.67 T
+(wn when) 471.85 655.67 T
+(pressed, the k) 217 644.67 T
+(e) 277.07 644.67 T
+(y press is ignored b) 281.79 644.67 T
+(ut the corresponding release is pro-) 367.12 644.67 T
+(cessed normally) 217 633.67 T
+(. The) 287.47 633.67 T
+1 F
+(data) 312.82 633.67 T
+2 F
+( \336eld is unused.) 332.38 633.67 T
+5 F
+-0.33 (XkbKB_RadioGroup) 109 619.67 S
+2 F
+(If another member of the radio group is logically do) 217 619.67 T
+(wn \050all members of) 445.55 619.67 T
+(the radio group ha) 217 608.67 T
+(v) 297.12 608.67 T
+(e the same inde) 302.46 608.67 T
+(x, speci\336ed in) 370.42 608.67 T
+1 F
+(data) 434.58 608.67 T
+2 F
+(\051 when a k) 454.14 608.67 T
+(e) 500.15 608.67 T
+(y is) 504.87 608.67 T
+(pressed, the serv) 217 597.67 T
+(er synthesizes a k) 289.84 597.67 T
+(e) 367.02 597.67 T
+(y release for the member that is logi-) 371.74 597.67 T
+(cally do) 217 586.67 T
+(wn and then processes the ne) 251.86 586.67 T
+(w k) 379.58 586.67 T
+(e) 395.66 586.67 T
+(y press e) 400.38 586.67 T
+(v) 438.6 586.67 T
+(ent normally) 443.93 586.67 T
+(.) 499.13 586.67 T
+(If the k) 217 571.67 T
+(e) 248.66 571.67 T
+(y itself is logically do) 253.38 571.67 T
+(wn when pressed, the k) 348.44 571.67 T
+(e) 451.28 571.67 T
+(y press e) 456 571.67 T
+(v) 494.21 571.67 T
+(ent is) 499.55 571.67 T
+(ignored, b) 217 560.67 T
+(ut the processing of the corresponding k) 261.39 560.67 T
+(e) 437.86 560.67 T
+(y release depends on) 442.58 560.67 T
+(the v) 217 549.67 T
+(alue of the) 238.42 549.67 T
+5 F
+-0.33 (Xkb_RGAllowNone) 287.6 549.67 S
+2 F
+( bit in) 381.65 549.67 T
+1 F
+(flags) 410.07 549.67 T
+2 F
+(. If it is set, the k) 431.47 549.67 T
+(e) 505.3 549.67 T
+(y) 510.02 549.67 T
+(release is processed normally; otherwise, the k) 217 538.67 T
+(e) 421.88 538.67 T
+(y release is also ignored.) 426.59 538.67 T
+(All other k) 217 523.67 T
+(e) 264.55 523.67 T
+(y release e) 269.27 523.67 T
+(v) 315.42 523.67 T
+(ents are ignored.) 320.75 523.67 T
+5 F
+-0.33 (XkbKB_Overlay1) 109 509.67 S
+2 F
+-0.23 (If the) 217 509.67 P
+5 F
+-0.52 -0.33 (Overlay1) 242.81 509.67 B
+2 F
+-0.23 ( control is enabled \050see section 10.4\051,) 292.97 509.67 P
+1 F
+-0.23 (data) 457.88 509.67 P
+2 F
+-0.23 ( is interpreted) 477.44 509.67 P
+(as a k) 217 498.67 T
+(e) 241.94 498.67 T
+(ycode, and e) 246.66 498.67 T
+(v) 301.67 498.67 T
+(ents from this k) 307 498.67 T
+(e) 375.64 498.67 T
+(y are reported as if the) 380.36 498.67 T
+(y came from) 478.86 498.67 T
+1 F
+(data) 217 487.67 T
+2 F
+(\325) 236.56 487.67 T
+(s k) 239.62 487.67 T
+(e) 252.04 487.67 T
+(ycode. Otherwise, press and release e) 256.75 487.67 T
+(v) 421.12 487.67 T
+(ents are processed nor-) 426.45 487.67 T
+(mally) 217 476.67 T
+(.) 241.34 476.67 T
+5 F
+-0.33 (XkbKB_Overlay2) 109 462.67 S
+2 F
+-0.23 (If the) 217 462.67 P
+5 F
+-0.52 -0.33 (Overlay2) 242.81 462.67 B
+2 F
+-0.23 ( control is enabled \050see section 10.4\051,) 292.97 462.67 P
+1 F
+-0.23 (data) 457.88 462.67 P
+2 F
+-0.23 ( is interpreted) 477.44 462.67 P
+(as a k) 217 451.67 T
+(e) 241.94 451.67 T
+(ycode, and e) 246.66 451.67 T
+(v) 301.67 451.67 T
+(ents from this k) 307 451.67 T
+(e) 375.64 451.67 T
+(y are reported as if the) 380.36 451.67 T
+(y came from) 478.86 451.67 T
+1 F
+(data) 217 440.67 T
+2 F
+(\325) 236.56 440.67 T
+(s k) 239.62 440.67 T
+(e) 252.04 440.67 T
+(ycode. Otherwise, press and release e) 256.75 440.67 T
+(v) 421.12 440.67 T
+(ents are processed nor-) 426.45 440.67 T
+(mally) 217 429.67 T
+(.) 241.34 429.67 T
+3 12 Q
+(T) 261.56 712 T
+(able 16.20 K) 268.46 712 T
+(ey Beha) 334.83 712 T
+(viors) 374.86 712 T
+1 F
+(T) 109 692 T
+(ype) 114.78 692 T
+(Ef) 217 692 T
+(fect) 227.45 692 T
+108 704 540 704 2 L
+V
+0.5 H
+0 Z
+N
+108 687 540 687 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "162" 174
+%%Page: "163" 175
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(163) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+0 12 Q
+(16.3) 72 712 T
+(Explicit Components\321A) 108 712 T
+(v) 247.54 712 T
+(oiding A) 253.85 712 T
+(utomatic Remapping b) 301.49 712 T
+(y the Ser) 430.6 712 T
+(ver) 481.4 712 T
+2 F
+(Whenever a client remaps the keyboard using core protocol requests, Xkb examines the) 108 692 T
+(map to determine likely default values for the components that cannot be specified using) 108 679 T
+-0.42 (the core protocol \050see section 17.1.2 for more information on how Xkb chooses the default) 108 666 P
+(values\051.) 108 653 T
+-0.54 (This automatic remapping might replace definitions explicitly requested by an application,) 108 632 P
+(so the Xkb keyboard description defines an explicit components mask for each key. Any) 108 619 T
+(aspects of the automatic remapping listed in the explicit components mask for a key are) 108 606 T
+(not changed by the automatic keyboard mapping.) 108 593 T
+-0.27 (The explicit components masks are held in the) 108 572 P
+1 F
+-0.27 (explicit) 331.81 572 P
+2 F
+-0.27 ( field of the server map, which is an) 367.14 572 P
+-0.24 (array indexed by keycode. Each entry in this array is a mask that is a bitwise inclusive OR) 108 559 P
+(of the values shown in Table 16.21.) 108 546 T
+0 F
+(16.3.1) 72 258 T
+(Obtaining Explicit Components f) 108 258 T
+(or K) 293.78 258 T
+(e) 317.6 258 T
+(ys fr) 324.1 258 T
+(om the Ser) 349.2 258 T
+(ver) 411.34 258 T
+2 F
+-0.42 (T) 108 238 P
+-0.42 (o obtain the e) 114.37 238 P
+-0.42 (xplicit components \050the) 177.92 238 P
+1 F
+-0.42 (explicit) 292.98 238 P
+2 F
+-0.42 ( array\051 for a subset of the k) 328.31 238 P
+-0.42 (e) 454.86 238 P
+-0.42 (ys in a k) 460 238 P
+-0.42 (e) 498.95 238 P
+-0.42 (yboard) 504.1 238 P
+(description, use) 108 225 T
+1 F
+(XkbGetK) 186.32 225 T
+(e) 229.9 225 T
+(yExplicitComponents) 234.86 225 T
+2 F
+(.) 337.52 225 T
+2 11 Q
+(Status) 108 204.67 T
+3 F
+(XkbGetK) 137.65 204.67 T
+(eyExplicitComponents) 183.21 204.67 T
+2 F
+(\050) 289.54 204.67 T
+1 F
+(dpy) 293.21 204.67 T
+2 F
+(,) 308.38 204.67 T
+1 F
+( \336r) 311.13 204.67 T
+(st) 323.55 204.67 T
+2 F
+(,) 330.88 204.67 T
+1 F
+( num) 333.63 204.67 T
+2 F
+(,) 355.32 204.67 T
+1 F
+( xkb) 358.07 204.67 T
+2 F
+(\051) 376.09 204.67 T
+(Display *) 126 191.67 T
+1 F
+(dpy) 234 191.67 T
+2 F
+(;) 249.88 191.67 T
+(/* connection to serv) 306 191.67 T
+(er */) 397.8 191.67 T
+(unsigned int) 126 178.67 T
+1 F
+(\336r) 234 178.67 T
+(st) 243.67 178.67 T
+2 F
+(;) 251.01 178.67 T
+(/* k) 306 178.67 T
+(e) 322.7 178.67 T
+(ycode of \336rst k) 327.42 178.67 T
+(e) 393.6 178.67 T
+(y to fetch */) 398.32 178.67 T
+(unsigned int) 126 165.67 T
+1 F
+(num) 234 165.67 T
+2 F
+(;) 252.94 165.67 T
+(/* number of k) 306 165.67 T
+(e) 370.97 165.67 T
+(ys for which to get e) 375.68 165.67 T
+(xplicit info */) 465.64 165.67 T
+(XkbDescPtr) 126 152.67 T
+1 F
+(xkb) 234 152.67 T
+2 F
+(;) 249.27 152.67 T
+(/* Xkb description in which to put results */) 306 152.67 T
+1 12 Q
+(XkbGetK) 108 133 T
+(e) 151.57 133 T
+(yExplicitComponents) 156.54 133 T
+2 F
+( sends a request to the server to obtain the explicit compo-) 259.2 133 T
+(nents for) 108 120 T
+1 F
+(num) 153.32 120 T
+2 F
+( keys on the keyboard starting with key) 173.99 120 T
+1 F
+(first) 365.96 120 T
+2 F
+(. It waits for a reply and returns) 385.31 120 T
+(the explicit components in the) 108 107 T
+1 F
+(server) 255.66 107 T
+2 F
+(->) 285.65 107 T
+1 F
+(explicit) 296.41 107 T
+2 F
+( array of) 331.74 107 T
+1 F
+(xkb) 375.38 107 T
+2 F
+(. If successful,) 392.04 107 T
+1 F
+(XkbGetK) 464.35 107 T
+(e) 507.92 107 T
+(yEx-) 512.89 107 T
+(plicitComponents) 108 94 T
+2 F
+( returns) 192.67 94 T
+5 F
+-0.6 (Success) 232 94 S
+2 F
+(. The) 278.2 94 T
+1 F
+(xkb) 305.86 94 T
+2 F
+( parameter must be a pointer to a valid Xkb) 322.51 94 T
+(keyboard description.) 108 81 T
+3 F
+(T) 224.59 526 T
+(able 16.21 Explicit Component Masks) 231.49 526 T
+1 F
+(Bit in Explicit Mask) 109 506 T
+(V) 226 506 T
+(alue) 232 506 T
+(Pr) 271 506 T
+(otects Against) 282.46 506 T
+5 11 Q
+-0.33 (ExplicitKeyType1) 109 491.67 S
+-0.33 (\0501<<0\051) 226 491.67 S
+2 F
+(Automatic determination of the k) 271 491.67 T
+(e) 417.54 491.67 T
+(y type associated with) 422.26 491.67 T
+5 F
+-0.33 (Group1.) 271 480.67 S
+-0.33 (ExplicitKeyType2) 109 466.67 S
+-0.33 (\0501<<1\051) 226 466.67 S
+2 F
+(Automatic determination of the k) 271 466.67 T
+(e) 417.54 466.67 T
+(y type associated with) 422.26 466.67 T
+5 F
+-0.33 (Group2.) 271 455.67 S
+-0.33 (ExplicitKeyType3) 109 441.67 S
+-0.33 (\0501<<2\051) 226 441.67 S
+2 F
+(Automatic determination of the k) 271 441.67 T
+(e) 417.54 441.67 T
+(y type associated with) 422.26 441.67 T
+5 F
+-0.33 (Group3.) 271 430.67 S
+-0.33 (ExplicitKeyType4) 109 416.67 S
+-0.33 (\0501<<3\051) 226 416.67 S
+2 F
+(Automatic determination of the k) 271 416.67 T
+(e) 417.54 416.67 T
+(y type associated with) 422.26 416.67 T
+5 F
+-0.33 (Group4.) 271 405.67 S
+-0.33 (ExplicitInterpret) 109 391.67 S
+-0.33 (\0501<<4\051) 226 391.67 S
+2 F
+(Application of an) 271 391.67 T
+(y of the \336elds of a symbol interpretation) 347.82 391.67 T
+(to the k) 271 380.67 T
+(e) 303.89 380.67 T
+(y in question.) 308.61 380.67 T
+5 F
+-0.33 (ExplicitAutoRepeat) 109 366.67 S
+-0.33 (\0501<<5\051) 226 366.67 S
+2 F
+(Automatic determination of auto-repeat status for the k) 271 366.67 T
+(e) 513.15 366.67 T
+(y) 517.87 366.67 T
+(,) 522.66 366.67 T
+(as speci\336ed in a symbol interpretation.) 271 355.67 T
+5 F
+-0.33 (ExplicitBehavior) 109 341.67 S
+-0.33 (\0501<<6\051) 226 341.67 S
+2 F
+-0.44 (Automatic assignment of the) 271 341.67 P
+5 F
+-1 -0.33 (XkbKB_Lock) 398.79 341.67 B
+2 F
+-0.44 ( beha) 461.49 341.67 P
+-0.44 (vior to the) 484.35 341.67 P
+(k) 271 330.67 T
+(e) 276.39 330.67 T
+(y) 281.11 330.67 T
+(, if the) 285.89 330.67 T
+5 F
+-0.33 (XkbSI_LockingKey) 317.06 330.67 S
+2 F
+( \337ag is set in a symbol) 417.38 330.67 T
+(interpretation.) 271 319.67 T
+5 F
+-0.33 (ExplicitVModMap) 109 305.67 S
+-0.33 (\0501<<7\051) 226 305.67 S
+2 F
+(Automatic determination of the virtual modi\336er map for) 271 305.67 T
+(the k) 271 294.67 T
+(e) 292.58 294.67 T
+(y based on the actions assigned to the k) 297.3 294.67 T
+(e) 470.73 294.67 T
+(y and the) 475.45 294.67 T
+(symbol interpretations that match the k) 271 283.67 T
+(e) 442.91 283.67 T
+(y) 447.63 283.67 T
+(.) 452.41 283.67 T
+108 518 531 518 2 L
+V
+0.5 H
+0 Z
+N
+108 501 531 501 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "163" 175
+%%Page: "164" 176
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(164) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(If the) 108 712 T
+1 F
+(server) 136.66 712 T
+2 F
+( map in the) 166.64 712 T
+1 F
+(xkb) 223.31 712 T
+2 F
+( parameter has not been allocated,) 239.96 712 T
+1 F
+(XkbGetK) 406.25 712 T
+(e) 449.82 712 T
+(yExplicitCompo-) 454.79 712 T
+(nents) 108 699 T
+2 F
+( allocates and initializes it before obtaining the actions.) 133.33 699 T
+-0.38 (If the server does not have a compatible version of Xkb, or the Xkb extension has not been) 108 678 P
+-0.53 (properly initialized,) 108 665 P
+1 F
+-0.53 (XkbGetK) 204.6 665 P
+-0.53 (e) 248.17 665 P
+-0.53 (yExplicitComponents) 253.13 665 P
+2 F
+-0.53 ( returns) 355.8 665 P
+5 F
+-1.17 -0.6 (BadMatch) 394.06 665 B
+2 F
+-0.53 (. If) 446.86 665 P
+1 F
+-0.53 (num) 462.79 665 P
+2 F
+-0.53 ( is less than) 483.45 665 P
+(1 or greater than) 108 652 T
+5 F
+-0.6 (XkbMaxKeyCount) 189.97 652 S
+2 F
+(,) 282.37 652 T
+1 F
+(XkbGetK) 288.37 652 T
+(e) 331.95 652 T
+(yExplicitComponents) 336.91 652 T
+2 F
+( returns) 439.57 652 T
+5 F
+-0.6 (BadValue) 478.9 652 S
+2 F
+(.) 531.7 652 T
+(If any allocation errors occur,) 108 639 T
+1 F
+(XkbGetK) 253.28 639 T
+(e) 296.86 639 T
+(yExplicitComponents) 301.82 639 T
+2 F
+( returns) 404.48 639 T
+5 F
+-0.6 (BadAlloc) 443.81 639 S
+2 F
+(.) 496.61 639 T
+0 F
+(16.4) 72 614 T
+(Vir) 108 614 T
+(tual Modi\336er Mapping) 124.25 614 T
+2 F
+(The) 108 594 T
+1 F
+(vmods) 129.66 594 T
+2 F
+( member of the server map is a fixed-length array containing) 160.32 594 T
+5 F
+-0.6 (XkbNumVir-) 454.58 594 S
+-0.6 (tualMods) 108 581 S
+2 F
+( entries. Each entry corresponds to a virtual modifier and provides the binding) 160.8 581 T
+(of the virtual modifier to the real modifier bits. Each entry in the) 108 568 T
+1 F
+(vmods) 420.62 568 T
+2 F
+( array is a bitwise) 451.28 568 T
+(inclusive OR of the legal modifier masks:) 108 555 T
+5 F
+-0.6 (ShiftMask) 139.68 534 S
+-0.6 (LockMask) 139.68 520 S
+-0.6 (ControlMask) 139.68 506 S
+-0.6 (Mod1Mask) 139.68 492 S
+-0.6 (Mod2Mask) 139.68 478 S
+-0.6 (Mod3Mask) 139.68 464 S
+-0.6 (Mod4Mask) 139.68 450 S
+-0.6 (Mod5Mask) 139.68 436 S
+2 F
+-0.09 (The) 108 416 P
+1 F
+-0.09 (vmodmap) 129.57 416 P
+2 F
+-0.09 ( member of the server map is similar to the) 176.22 416 P
+1 F
+-0.09 (modmap) 384.6 416 P
+2 F
+-0.09 ( array of the client map) 425.92 416 P
+-0.43 (\050see section 15.4\051, but is used to define the virtual modifier mapping for each key. Like the) 108 403 P
+1 F
+(modmap) 108 390 T
+2 F
+( member, it is indexed by keycode, and each entry is a mask representing the vir-) 149.33 390 T
+(tual modifiers bound to the corresponding key:) 108 377 T
+2 11 Q
+(\245) 126 356.67 T
+(Each of the bits in a) 139.68 356.67 T
+1 F
+(vmodmap) 230.11 356.67 T
+2 F
+( entry represents an inde) 272.88 356.67 T
+(x into the) 380.24 356.67 T
+1 F
+(vmods) 424.55 356.67 T
+2 F
+( member) 452.65 356.67 T
+(. That) 490.84 356.67 T
+-0.19 (is, bit 0 of a) 139.68 344.67 P
+1 F
+-0.19 (vmodmap) 193.73 344.67 P
+2 F
+-0.19 ( entry refers to inde) 236.5 344.67 P
+-0.19 (x 0 of the) 321.71 344.67 P
+1 F
+-0.19 (vmods) 365.55 344.67 P
+2 F
+-0.19 ( array) 393.66 344.67 P
+-0.19 (, bit 1 refers to inde) 418.1 344.67 P
+-0.19 (x 1,) 503.13 344.67 P
+(and so on.) 139.68 332.67 T
+(\245) 126 320.67 T
+-0.2 (If a bit is set in the) 139.68 320.67 P
+1 F
+-0.2 (vmodmap) 222.91 320.67 P
+2 F
+-0.2 ( entry for a k) 265.68 320.67 P
+-0.2 (e) 321.59 320.67 P
+-0.2 (y) 326.3 320.67 P
+-0.2 (, that k) 331.09 320.67 P
+-0.2 (e) 360.83 320.67 P
+-0.2 (y is bound to the corresponding vir-) 365.55 320.67 P
+(tual modi\336er in the) 139.68 308.67 T
+1 F
+(vmods) 226.46 308.67 T
+2 F
+( array) 254.56 308.67 T
+(.) 279.19 308.67 T
+2 12 Q
+(The) 108 290 T
+1 F
+(vmodmap) 129.66 290 T
+2 F
+( and) 176.32 290 T
+1 F
+(vmods) 199.64 290 T
+2 F
+( members of the server map are the \322master\323 virtual modifier) 230.3 290 T
+(definitions. Xkb automatically propagates any changes to these fields to all other fields) 108 277 T
+(that use virtual modifier mappings.) 108 264 T
+FMENDPAGE
+%%EndPage: "164" 176
+%%Page: "165" 177
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(165) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+(The overall relationship of fields dealing with virtual modifiers in an Xkb keyboard) 108 712 T
+(description are shown in Figure 16.2.) 108 699 T
+3 F
+(Figur) 204.04 320.75 T
+(e 16.2 V) 232.49 320.75 T
+(irtual Modi\336er Relationships) 273.04 320.75 T
+0 F
+(16.4.1) 72 292.75 T
+(Obtaining Vir) 108 292.75 T
+(tual Modi\336er Bindings fr) 183.59 292.75 T
+(om the Ser) 321.36 292.75 T
+(ver) 383.5 292.75 T
+2 F
+-0.29 (T) 108 272.75 P
+-0.29 (o obtain a subset of the virtual modi\336er bindings \050the) 114.37 272.75 P
+1 F
+-0.29 (vmods) 369.47 272.75 P
+2 F
+-0.29 ( array\051 in a k) 400.13 272.75 P
+-0.29 (e) 460.16 272.75 P
+-0.29 (yboard descrip-) 465.31 272.75 P
+(tion, use) 108 259.75 T
+1 F
+(XkbGetV) 151.67 259.75 T
+(irtualMods) 194.1 259.75 T
+2 F
+(:) 247.44 259.75 T
+2 11 Q
+(Status) 108 239.42 T
+3 F
+(XkbGetV) 137.65 239.42 T
+(irtualMods) 182.46 239.42 T
+2 F
+(\050) 235.02 239.42 T
+1 F
+(dpy) 238.68 239.42 T
+2 F
+(,) 253.85 239.42 T
+1 F
+( whic) 256.6 239.42 T
+(h) 279.96 239.42 T
+2 F
+(,) 285.46 239.42 T
+1 F
+( xkb) 288.21 239.42 T
+2 F
+(\051) 306.23 239.42 T
+(Display *) 126 226.42 T
+1 F
+(dpy) 234 226.42 T
+2 F
+(;) 249.88 226.42 T
+(/* connection to serv) 306 226.42 T
+(er */) 397.8 226.42 T
+(unsigned int) 126 213.42 T
+1 F
+(whic) 234 213.42 T
+(h) 254.61 213.42 T
+2 F
+(;) 260.11 213.42 T
+(/* mask indicating virtual modi\336er bindings to get */) 306 213.42 T
+(XkbDescPtr) 126 200.42 T
+1 F
+(xkb) 234 200.42 T
+2 F
+(;) 249.27 200.42 T
+(/* Xkb description where results will be placed */) 306 200.42 T
+1 12 Q
+-0.36 (XkbGetV) 108 180.75 P
+-0.36 (irtualMods) 150.43 180.75 P
+2 F
+-0.36 ( sends a request to the server to obtain the) 203.77 180.75 P
+1 F
+-0.36 (vmods) 404.15 180.75 P
+2 F
+-0.36 ( entries for the virtual) 434.81 180.75 P
+-0.2 (modifiers specified in the mask,) 108 167.75 P
+1 F
+-0.2 (which) 263.63 167.75 P
+2 F
+-0.2 (, and waits for a reply. See section 7.1 for a descrip-) 292.3 167.75 P
+(tion of how to determine the virtual modifier mask. For each bit set in) 108 154.75 T
+1 F
+(which) 446.3 154.75 T
+2 F
+(,) 474.97 154.75 T
+1 F
+(XkbGetV) 480.97 154.75 T
+(ir-) 523.4 154.75 T
+(tualMods) 108 141.75 T
+2 F
+( updates the corresponding virtual modifier definition in the) 153.34 141.75 T
+1 F
+(server->vmods) 443.64 141.75 T
+2 F
+(array of) 108 128.75 T
+1 F
+(xkb) 148.64 128.75 T
+2 F
+(. The) 165.3 128.75 T
+1 F
+(xkb) 192.96 128.75 T
+2 F
+( parameter must be a pointer to a valid Xkb keyboard description. If) 209.62 128.75 T
+(successful,) 108 115.75 T
+1 F
+(XkbGetV) 163.32 115.75 T
+(irtualMods) 205.75 115.75 T
+2 F
+( returns) 259.09 115.75 T
+5 F
+-0.6 (Success) 298.42 115.75 S
+2 F
+(.) 344.62 115.75 T
+(If the) 108 94.75 T
+1 F
+(server) 136.66 94.75 T
+2 F
+( map has not been allocated in the) 166.64 94.75 T
+1 F
+(xkb) 332.62 94.75 T
+2 F
+( parameter,) 349.27 94.75 T
+1 F
+(XkbGetV) 406.25 94.75 T
+(irtualMods) 448.68 94.75 T
+2 F
+( allo-) 502.02 94.75 T
+(cates and initializes it before obtaining the virtual modifier bindings.) 108 81.75 T
+85.5 341.75 526.5 695 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+221.62 522.04 302.62 650.71 R
+0.5 H
+0 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+221.88 496.54 302.88 514.54 R
+7 X
+V
+2 10 Q
+0 X
+(XkbServerMapRec) 223.78 507.87 T
+221.62 578.29 302.62 578.29 2 L
+7 X
+V
+0 X
+N
+221.62 560.29 302.62 560.29 2 L
+7 X
+V
+0 X
+N
+221.62 542.29 302.62 542.29 2 L
+7 X
+V
+0 X
+N
+(...) 239.24 566.29 T
+(vmods[15]) 239.24 549.29 T
+(vmodmap) 239.24 531.29 T
+221.38 615.04 302.38 615.04 2 L
+7 X
+V
+0 X
+N
+221.62 597.04 302.62 597.04 2 L
+7 X
+V
+0 X
+N
+221.62 633.04 302.62 633.04 2 L
+7 X
+V
+0 X
+N
+(vmods[0]) 239.24 621.04 T
+(vmods[1]) 239.24 603.04 T
+(vmods[2]) 239.08 586.48 T
+(...) 238.96 638.35 T
+207.84 636.96 207.84 639.93 218.22 636.96 207.84 633.98 4 Y
+N
+207.84 636.96 207.84 639.93 218.22 636.96 207.84 633.98 4 Y
+V
+170.38 520.38 194.25 520.38 194.25 636.96 207.59 636.96 4 L
+N
+(KeyCode) 296.99 677.54 T
+319.12 603.96 319.12 606.85 329.22 603.96 319.12 601.07 4 Y
+N
+319.12 603.96 319.12 606.85 329.22 603.96 319.12 601.07 4 Y
+V
+303.13 532.71 316.62 532.71 316.62 603.96 318.88 603.96 4 L
+N
+346.12 604.79 427.12 622.79 R
+7 X
+V
+0 X
+N
+342.12 601.04 423.12 619.04 R
+7 X
+V
+0 X
+N
+337.88 597.54 418.88 615.54 R
+7 X
+V
+0 X
+N
+328.38 539.29 432.62 585.04 R
+7 X
+V
+0 X
+(unsigned short) 351.2 578.37 T
+(\050one per key\051) 353.85 568.37 T
+-0.22 (Defines virtual modifiers) 330.23 558.37 P
+(for each key.) 354.54 548.37 T
+333.88 593.79 414.88 611.79 R
+7 X
+V
+0 X
+N
+327.59 616.21 327.59 619.18 337.97 616.21 327.59 613.23 4 Y
+8 X
+N
+327.59 616.21 327.59 619.18 337.97 616.21 327.59 613.23 4 Y
+V
+314.88 668.71 314.88 616.21 327.34 616.21 3 L
+N
+87.88 454.54 168.88 546.46 R
+0 X
+N
+87.12 430.79 168.12 448.79 R
+7 X
+V
+0 X
+(XkbDescRec) 101.25 442.12 T
+87.88 474.04 168.88 474.04 2 L
+7 X
+V
+0 X
+N
+(...) 105.49 462.04 T
+87.62 510.79 168.62 510.79 2 L
+7 X
+V
+0 X
+N
+87.87 492.79 168.87 492.79 2 L
+7 X
+V
+0 X
+N
+87.87 528.79 168.87 528.79 2 L
+7 X
+V
+0 X
+N
+(serv) 105.49 516.79 T
+(er) 122 516.79 T
+(...) 105.49 498.79 T
+(names) 105.33 482.23 T
+(...) 105.21 534.1 T
+442.63 363.29 523.63 491.96 R
+N
+442.88 337.79 523.88 355.79 R
+7 X
+V
+0 X
+(XkbNamesRec) 453.11 349.12 T
+442.63 419.54 523.63 419.54 2 L
+7 X
+V
+0 X
+N
+442.63 401.54 523.63 401.54 2 L
+7 X
+V
+0 X
+N
+442.63 383.54 523.63 383.54 2 L
+7 X
+V
+0 X
+N
+(...) 460.24 407.54 T
+(vmods[15]) 460.24 390.54 T
+(...) 460.24 372.54 T
+442.38 456.29 523.38 456.29 2 L
+7 X
+V
+0 X
+N
+442.63 438.29 523.63 438.29 2 L
+7 X
+V
+0 X
+N
+442.63 474.29 523.63 474.29 2 L
+7 X
+V
+0 X
+N
+(vmods[0]) 460.24 462.29 T
+(vmods[1]) 460.24 444.29 T
+(vmods[2]) 460.08 427.73 T
+(...) 459.96 479.6 T
+431.75 447.46 431.75 449.82 439.97 447.46 431.75 445.1 4 Y
+8 X
+N
+431.75 447.46 431.75 449.82 439.97 447.46 431.75 445.1 4 Y
+V
+418.38 610.96 429.62 610.96 429.62 447.46 431.5 447.46 4 L
+N
+208.94 604.46 208.94 607.43 219.32 604.46 208.94 601.48 4 Y
+N
+208.94 604.46 208.94 607.43 219.32 604.46 208.94 601.48 4 Y
+V
+428.25 489.71 204.75 489.71 204.75 604.46 208.69 604.46 4 L
+N
+102.37 567.66 172.87 611.91 R
+7 X
+V
+0 X
+(Define real) 115.27 605.25 T
+-0.08 (modifiers bound) 104.71 595.25 P
+(to virtual) 119.43 585.25 T
+(modifier) 120.4 575.25 T
+209.5 604.25 209.5 607.14 219.59 604.25 209.5 601.36 4 Y
+N
+209.5 604.25 209.5 607.14 219.59 604.25 209.5 601.36 4 Y
+V
+207 604.25 209.25 604.25 2 L
+N
+327.98 616.12 327.98 618.99 337.97 616.12 327.98 613.26 4 Y
+N
+327.98 616.12 327.98 618.99 337.97 616.12 327.98 613.26 4 Y
+V
+325.5 616.12 327.73 616.12 2 L
+N
+431.5 448.18 431.58 450.89 440.97 447.9 431.42 445.46 4 Y
+N
+431.5 448.18 431.58 450.89 440.97 447.9 431.42 445.46 4 Y
+V
+429.13 448.25 431.25 448.19 2 L
+N
+189 634.5 M
+ 168 633.79 187.5 599.03 177 588.39 D
+N
+189 542.75 M
+ 168 543.46 187.5 578.22 177 588.86 D
+N
+426.84 482.79 426.84 485.76 437.22 482.79 426.84 479.81 4 Y
+N
+426.84 482.79 426.84 485.76 437.22 482.79 426.84 479.81 4 Y
+V
+169.5 482.79 426.59 482.79 2 L
+7 X
+V
+0 X
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "165" 177
+%%Page: "166" 178
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(166) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(16 Xkb Serv) 382.36 744.87 T
+(er K) 443.3 744.87 T
+(e) 462.26 744.87 T
+(yboard Mapping) 466.98 744.87 T
+2 12 Q
+-0.38 (If the server does not have a compatible version of Xkb, or the Xkb extension has not been) 108 712 P
+(properly initialized,) 108 699 T
+1 F
+(XkbGetV) 205.66 699 T
+(irtualMods) 248.09 699 T
+2 F
+( returns) 301.43 699 T
+5 F
+-0.6 (BadMatch) 340.75 699 S
+2 F
+(. Any errors in allocation) 393.55 699 T
+(cause) 108 686 T
+1 F
+(XkbGetV) 137.65 686 T
+(irtualMods) 180.08 686 T
+2 F
+(to return) 236.42 686 T
+5 F
+-0.6 (BadAlloc) 280.42 686 S
+2 F
+(.) 333.22 686 T
+0 F
+(16.4.2) 72 661 T
+(Obtaining P) 108 661 T
+(er) 174.98 661 T
+(-K) 186.08 661 T
+(e) 198.56 661 T
+(y Vir) 205.06 661 T
+(tual Modi\336er Mappings fr) 231.31 661 T
+(om the Ser) 373.75 661 T
+(ver) 435.89 661 T
+2 F
+(T) 108 641 T
+(o obtain the virtual modi\336er map \050the) 114.37 641 T
+1 F
+(vmodmap) 297.36 641 T
+2 F
+( array\051 for a subset of the k) 344.02 641 T
+(e) 473.52 641 T
+(ys in a k) 478.67 641 T
+(e) 518.88 641 T
+(y-) 524.03 641 T
+(board description, use) 108 628 T
+1 F
+(XkbGetK) 216.65 628 T
+(e) 260.22 628 T
+(yV) 265.19 628 T
+(irtualModMap) 276.96 628 T
+2 F
+(:) 347.63 628 T
+2 11 Q
+(Status) 108 607.67 T
+3 F
+(XkbGetK) 137.65 607.67 T
+(eyV) 183.21 607.67 T
+(irtualModMap) 201.13 607.67 T
+2 F
+(\050) 271.4 607.67 T
+1 F
+(dpy) 275.07 607.67 T
+2 F
+(,) 290.24 607.67 T
+1 F
+( \336r) 292.99 607.67 T
+(st) 305.41 607.67 T
+2 F
+(,) 312.74 607.67 T
+1 F
+( num) 315.49 607.67 T
+2 F
+(,) 337.18 607.67 T
+1 F
+( xkb) 339.93 607.67 T
+2 F
+(\051) 357.95 607.67 T
+(Display *) 126 594.67 T
+1 F
+(dpy) 234 594.67 T
+2 F
+(;) 249.88 594.67 T
+(/* connection to serv) 306 594.67 T
+(er */) 397.8 594.67 T
+(unsigned int) 126 581.67 T
+1 F
+(\336r) 234 581.67 T
+(st) 243.67 581.67 T
+2 F
+(;) 251.01 581.67 T
+(/* k) 306 581.67 T
+(e) 322.7 581.67 T
+(ycode of \336rst k) 327.42 581.67 T
+(e) 393.6 581.67 T
+(y to fetch */) 398.32 581.67 T
+(unsigned int) 126 568.67 T
+1 F
+(num) 234 568.67 T
+2 F
+(;) 252.94 568.67 T
+(/* # k) 306 568.67 T
+(e) 330.95 568.67 T
+(ys for which virtual mod maps are desired */) 335.67 568.67 T
+(XkbDescPtr) 126 555.67 T
+1 F
+(xkb) 234 555.67 T
+2 F
+(;) 249.27 555.67 T
+(/* Xkb description where results will be placed */) 306 555.67 T
+1 12 Q
+(XkbGetK) 108 536 T
+(e) 151.57 536 T
+(yV) 156.54 536 T
+(irutalModmap) 168.31 536 T
+2 F
+(sends a request to the server to obtain the virtual modifier) 240.65 536 T
+(mappings for) 108 523 T
+1 F
+(num) 174.66 523 T
+2 F
+( keys on the keyboard starting with key) 195.32 523 T
+1 F
+(first) 387.3 523 T
+2 F
+(. It waits for a reply and) 406.64 523 T
+-0.03 (returns the virtual modifier mappings in the) 108 510 P
+1 F
+-0.03 (server) 320.14 510 P
+2 F
+-0.03 (->) 350.12 510 P
+1 F
+-0.03 (vmodmap) 360.89 510 P
+2 F
+-0.03 ( array of) 407.54 510 P
+1 F
+-0.03 (xkb) 451.11 510 P
+2 F
+-0.03 (. If successful,) 467.77 510 P
+1 F
+(XkbGetK) 108 497 T
+(e) 151.57 497 T
+(yV) 156.54 497 T
+(irtualModMap) 168.31 497 T
+2 F
+( returns) 238.98 497 T
+5 F
+-0.6 (Success) 278.3 497 S
+2 F
+(. The) 324.51 497 T
+1 F
+(xkb) 352.17 497 T
+2 F
+( parameter must be a pointer to a) 368.82 497 T
+(valid Xkb keyboard description) 108 484 T
+-0.02 (If the) 108 463 P
+1 F
+-0.02 (server) 136.62 463 P
+2 F
+-0.02 ( map in the) 166.61 463 P
+1 F
+-0.02 (xkb) 223.2 463 P
+2 F
+-0.02 ( parameter has not been allocated,) 239.86 463 P
+1 F
+-0.02 (XkbGetK) 406.04 463 P
+-0.02 (e) 449.61 463 P
+-0.02 (yV) 454.58 463 P
+-0.02 (irtualModMap) 466.35 463 P
+2 F
+(allocates and initializes it before obtaining the virtual modifier mappings.) 108 450 T
+-0.38 (If the server does not have a compatible version of Xkb, or the Xkb extension has not been) 108 429 P
+(properly initialized,) 108 416 T
+1 F
+(XkbGetK) 205.66 416 T
+(e) 249.23 416 T
+(yV) 254.2 416 T
+(irtualModMap) 265.97 416 T
+2 F
+( returns) 336.64 416 T
+5 F
+-0.6 (BadMatch) 375.96 416 S
+2 F
+(. If) 428.76 416 T
+1 F
+(num) 445.75 416 T
+2 F
+( is less than 1) 466.42 416 T
+(or greater than) 108 403 T
+5 F
+-0.6 (XkbMaxKeyCount) 180.97 403 S
+2 F
+(,) 273.37 403 T
+1 F
+(XkbGetK) 279.37 403 T
+(e) 322.95 403 T
+(yV) 327.91 403 T
+(irtualModMap) 339.69 403 T
+2 F
+( returns) 410.35 403 T
+5 F
+-0.6 (BadValue) 449.68 403 S
+2 F
+(. If any) 502.48 403 T
+(allocation errors occur,) 108 390 T
+1 F
+(XkbGetK) 221.96 390 T
+(e) 265.54 390 T
+(yV) 270.5 390 T
+(irtualModMap) 282.28 390 T
+2 F
+( returns) 352.94 390 T
+5 F
+-0.6 (BadAlloc) 392.27 390 S
+2 F
+(.) 445.07 390 T
+FMENDPAGE
+%%EndPage: "166" 178
+%%Page: "167" 179
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(167) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+0 14 Q
+(17) 72 710.67 T
+(The Xkb Compatibility Map) 108 710.67 T
+2 12 Q
+-0.19 (As shown in Figure 17.1, the X server is normally dealing with more than one client, each) 108 688 P
+(of which may be receiving events from the keyboard, and each of which may issue) 108 675 T
+-0.33 (requests to modify the keyboard in some manner. Each client may be either Xkb-unaware,) 108 662 P
+(Xkb-capable, or Xkb-aware. The server itself may be either Xkb-aware or Xkb-unaware.) 108 649 T
+(If the server is Xkb-unaware, Xkb state and keyboard mappings are not involved in any) 108 636 T
+(manner, and Xkb-aware clients may not issue Xkb requests to the server. If the server is) 108 623 T
+-0.21 (Xkb-aware, the server must be able to deliver events and accept requests in which the key-) 108 610 P
+(board state and mapping are compatible with the mode in which the client is operating.) 108 597 T
+(Consequently, for some situations, conversions must be made between Xkb state / key-) 108 584 T
+(board mappings and core protocol state / keyboard mappings, and vice versa.) 108 571 T
+3 F
+(Figur) 180.23 258 T
+(e 17.1 Ser) 208.68 258 T
+(v) 258.22 258 T
+(er Interaction with T) 264.1 258 T
+(ypes of Clients) 370.86 258 T
+2 F
+-0.06 (In addition to these situations involving a single server, there are cases where a client that) 108 230 P
+(deals with multiple servers may need to configure keyboards on different servers to be) 108 217 T
+(similar and the different servers may not all be Xkb-aware. Finally, a client may be deal-) 108 204 T
+(ing with descriptions of keyboards \050files, and so on\051 that are based on core protocol and) 108 191 T
+(therefore may need to be able to map these descriptions to Xkb descriptions.) 108 178 T
+-0.42 (An Xkb-aware server maintains keyboard state and mapping as an Xkb keyboard state and) 108 157 P
+(an Xkb keyboard mapping plus a compatibility map used to convert from Xkb compo-) 108 144 T
+-0.1 (nents to core components and vice versa. In addition, the server also maintains a core key-) 108 131 P
+(board mapping that approximates the Xkb keyboard mapping. The core keyboard) 108 118 T
+(mapping may be updated piecemeal, on a per-key basis. When the server receives a core) 108 105 T
+(protocol) 108 92 T
+5 F
+-0.6 (ChangeKeyboardMapping) 151 92 S
+2 F
+( or) 289.6 92 T
+5 F
+-0.6 (SetModifierMapping) 305.6 92 S
+2 F
+( request, it updates its) 424.4 92 T
+-0.05 (core keyboard mapping, then uses the compatibility map to update its Xkb keyboard map-) 108 79 P
+70.31 279 541.69 567 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+453.81 495 520.31 504 R
+7 X
+0 0 0 1 0 0 0 K
+V
+2 10 Q
+0 X
+(Core protocol) 459.43 497.33 T
+227.79 496.4 397.31 541.71 R
+7 X
+V
+0 X
+(Xkb-aware) 290.34 535.04 T
+(Server) 299.5 525.04 T
+(Maintains Xkb State and Mapping,) 242.41 515.04 T
+(core kb mapping, but not core kb state) 235.89 505.04 T
+89.37 288 197.37 343 R
+7 X
+V
+0.5 H
+0 Z
+0 X
+N
+92.42 292.3 194.31 338.7 R
+7 X
+V
+0 X
+(Xkb-unaware) 116.16 332.04 T
+(Client) 131.14 322.04 T
+(Core kb Xlib) 117.26 312.04 T
+(Xkb-unaware App) 106.3 302.04 T
+272.33 479.02 270.23 481.12 279.67 486.36 274.44 476.92 4 Y
+N
+272.33 479.02 270.23 481.12 279.67 486.36 274.44 476.92 4 Y
+V
+136.31 343 272.16 478.84 2 L
+N
+153.29 350.98 155.4 348.88 145.95 343.64 151.19 353.08 4 Y
+N
+153.29 350.98 155.4 348.88 145.95 343.64 151.19 353.08 4 Y
+V
+289.31 487 153.47 351.16 2 L
+N
+470.33 350.98 472.44 353.08 477.67 343.64 468.23 348.88 4 Y
+N
+470.33 350.98 472.44 353.08 477.67 343.64 468.23 348.88 4 Y
+V
+334.31 487 470.16 351.16 2 L
+N
+351.29 479.02 349.19 476.92 343.95 486.36 353.4 481.12 4 Y
+N
+351.29 479.02 349.19 476.92 343.95 486.36 353.4 481.12 4 Y
+V
+487.31 343 351.47 478.84 2 L
+N
+101.83 506.99 159.58 522.99 R
+7 X
+V
+0 X
+N
+209.97 516 209.97 518.98 220.34 516 209.97 513.02 4 Y
+N
+209.97 516 209.97 518.98 220.34 516 209.97 513.02 4 Y
+V
+161.31 516 209.72 516 2 L
+N
+307.31 354.28 310.29 354.28 307.31 343.9 304.34 354.28 4 Y
+N
+307.31 354.28 310.29 354.28 307.31 343.9 304.34 354.28 4 Y
+V
+307.31 487 307.31 354.53 2 L
+N
+316.31 475.72 313.34 475.72 316.31 486.1 319.29 475.72 4 Y
+N
+316.31 475.72 313.34 475.72 316.31 486.1 319.29 475.72 4 Y
+V
+316.31 343 316.31 475.47 2 L
+N
+222.8 489.68 402.3 548.43 R
+N
+258.31 288 366.31 342 R
+7 X
+V
+0 X
+N
+261.37 292.22 363.26 337.78 R
+7 X
+V
+0 X
+(Xkb-capable) 286.77 331.11 T
+(Client) 300.09 321.11 T
+(Xkb-aware Xlib) 279.96 311.11 T
+(Xkb-unaware App) 275.24 301.11 T
+429.31 288 537.31 342 R
+7 X
+V
+0 X
+N
+432.37 292.22 534.26 337.78 R
+7 X
+V
+0 X
+(Xkb-aware) 461.1 331.11 T
+(Client) 471.09 321.11 T
+(Xkb-aware Xlib) 450.96 311.11 T
+(Xkb-aware App) 451.24 301.11 T
+184.5 406.75 197.25 419.5 6.38 RR
+V
+N
+212.45 434.59 210.37 436.71 219.85 441.86 214.54 432.46 4 Y
+N
+212.45 434.59 210.37 436.71 219.85 441.86 214.54 432.46 4 Y
+V
+190.75 413.25 212.28 434.41 2 L
+N
+409.96 452.88 407.85 450.78 402.64 460.23 412.07 454.97 4 Y
+N
+409.96 452.88 407.85 450.78 402.64 460.23 412.07 454.97 4 Y
+V
+428 434.75 410.14 452.7 2 L
+N
+(config) 174 427.25 T
+480.5 357.5 493.25 370.25 6.38 RR
+V
+N
+468.48 382.27 466.38 380.17 461.14 389.61 470.58 384.37 4 Y
+N
+468.48 382.27 466.38 380.17 461.14 389.61 470.58 384.37 4 Y
+V
+486.75 364 468.66 382.09 2 L
+N
+(config) 476.75 378.75 T
+202.25 381.5 215 394.25 6.38 RR
+V
+N
+187.68 367.53 189.76 365.41 180.27 360.26 185.59 369.65 4 Y
+N
+187.68 367.53 189.76 365.41 180.27 360.26 185.59 369.65 4 Y
+V
+208.5 388 187.85 367.71 2 L
+N
+(state) 199.25 368.25 T
+441.06 495 453.81 507.75 6.38 RR
+V
+N
+320 357.25 332.75 370 6.38 RR
+V
+N
+326.25 388.46 323.27 388.46 326.25 398.84 329.23 388.46 4 Y
+N
+326.25 388.46 323.27 388.46 326.25 398.84 329.23 388.46 4 Y
+V
+326.25 363.75 326.25 388.21 2 L
+N
+(config) 332 375.5 T
+(config) 422.25 448.25 T
+404.11 367.86 423.61 386.24 R
+N
+(Xkb) 405.25 373.87 T
+439.31 352.89 441.39 355.02 446.73 345.63 437.23 350.76 4 Y
+N
+439.31 352.89 441.39 355.02 446.73 345.63 437.23 350.76 4 Y
+V
+424.13 367.75 439.13 353.07 2 L
+N
+(state) 405.5 354 T
+291.56 363.04 294.54 363.04 291.56 352.66 288.59 363.04 4 Y
+N
+291.56 363.04 294.54 363.04 291.56 352.66 288.59 363.04 4 Y
+V
+291.56 378.75 291.56 363.29 2 L
+N
+(state) 267.56 366.93 T
+453.81 473.25 520.31 482.25 R
+7 X
+V
+0 X
+(Xkb protocol) 460.54 475.58 T
+331.24 462.75 343.99 475.5 6.38 RR
+V
+N
+352.96 453.54 355.08 455.63 360.24 446.14 350.84 451.45 4 Y
+N
+352.96 453.54 355.08 455.63 360.24 446.14 350.84 451.45 4 Y
+V
+337.49 469.25 352.78 453.72 2 L
+N
+(kb) 330.99 450 T
+287.24 442.75 299.99 455.5 6.38 RR
+V
+N
+293.49 429.03 296.47 429.03 293.49 418.65 290.52 429.03 4 Y
+N
+293.49 429.03 296.47 429.03 293.49 418.65 290.52 429.03 4 Y
+V
+293.49 449.25 293.49 429.28 2 L
+N
+(mapping) 318.24 441.47 T
+259.24 443.25 271.99 456 6.38 RR
+V
+N
+244.64 428.44 246.77 426.36 237.38 421.02 242.52 430.52 4 Y
+N
+244.64 428.44 246.77 426.36 237.38 421.02 242.52 430.52 4 Y
+V
+265.49 449.75 244.82 428.62 2 L
+N
+(kb) 262.74 430.5 T
+(mapping) 249.99 421.97 T
+(kb) 365.62 407.12 T
+(mapping) 352.87 398.6 T
+393.76 404.46 395.89 406.54 400.99 397.02 391.62 402.39 4 Y
+N
+393.76 404.46 395.89 406.54 400.99 397.02 391.62 402.39 4 Y
+V
+378.88 419.75 393.58 404.64 2 L
+N
+359.62 419.06 379.12 437.44 R
+N
+(Xkb) 360.77 425.08 T
+434.63 468.56 454.13 486.94 R
+N
+(Xkb) 435.77 474.58 T
+427.88 416.06 447.38 434.44 R
+N
+(Xkb) 429.02 422.08 T
+281.62 378.69 301.12 397.06 R
+N
+(Xkb) 282.77 384.7 T
+(Keyboard) 111 510.5 T
+(Keycode) 168.95 523.5 T
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "167" 179
+%%Page: "168" 180
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(168) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+(ping. When the server receives an) 108 712 T
+5 F
+-0.6 (XkbSetMap) 273.61 712 S
+2 F
+( request, it updates those portions of its) 333.01 712 T
+-0.26 (Xkb keyboard mapping specified by the request, then uses its compatibility map to update) 108 699 P
+(the corresponding parts of its core keyboard map. Consequently, the server\325s Xkb key-) 108 686 T
+-0.02 (board map and also its core keyboard map may contain components that were set directly) 108 673 P
+(and others that were computed. Figure 17.2 illustrates these relationships.) 108 660 T
+0 F
+(Note) 126 639.67 T
+2 11 Q
+(The core k) 162 639.67 T
+(e) 208.93 639.67 T
+(yboard map is contained only in the serv) 213.65 639.67 T
+(er) 392.21 639.67 T
+(, not in an) 400.32 639.67 T
+(y client-side data) 444.15 639.67 T
+(structures.) 162 627.67 T
+3 12 Q
+(Figur) 119.05 360.75 T
+(e 17.2 Ser) 147.5 360.75 T
+(v) 197.03 360.75 T
+(er Deri) 202.91 360.75 T
+(v) 239.11 360.75 T
+(ation of State and K) 244.99 360.75 T
+(eyboard Mapping Components) 347.36 360.75 T
+2 F
+(There are three kinds of compatibility transformations made by the server:) 108 332.75 T
+3 F
+(1.) 108 311.75 T
+(Xkb State to Core State) 126 311.75 T
+2 F
+-0.19 (Keyboard state information reported to a client in the state field of various core events) 126 290.75 P
+(may be translated from the Xkb keyboard state maintained by the server, which) 126 277.75 T
+(includes a group number, to core protocol state, which does not.) 126 264.75 T
+(In addition, whenever the Xkb state is retrieved, the) 126 243.75 T
+1 F
+(compat_state) 377.62 243.75 T
+2 F
+(,) 441.61 243.75 T
+1 F
+(compat_grab_mods) 126 230.75 T
+2 F
+(, and) 221.33 230.75 T
+1 F
+(compat_lookup_mods) 247.66 230.75 T
+2 F
+( fields of the) 352.98 230.75 T
+5 F
+-0.6 (XkbStateRec) 416.3 230.75 S
+2 F
+( returned) 488.9 230.75 T
+(indicate the result of applying the compatibility map to the current Xkb state in the) 126 217.75 T
+(server.) 126 204.75 T
+3 F
+(2.) 108 183.75 T
+(Core Keyboard Mapping to Xkb Keyboard Mapping) 126 183.75 T
+2 F
+(After core protocol requests received by the server to change the keyboard mapping) 126 162.75 T
+(\050) 126 149.75 T
+5 F
+-0.6 (ChangeKeyboardMapping) 130 149.75 S
+2 F
+( and) 268.6 149.75 T
+5 F
+-0.6 (SetModifierMapping) 291.93 149.75 S
+2 F
+(\051 have been applied to the) 410.73 149.75 T
+(server\325s core keyboard map, the results must be transformed to achieve an equivalent) 126 136.75 T
+(change of the Xkb keyboard mapping maintained by the server.) 126 123.75 T
+3 F
+(3.) 108 102.75 T
+(Xkb Keyboard Mapping to Core Keyboard Mapping) 126 102.75 T
+2 F
+(After Xkb protocol requests received by the server to change the keyboard mapping) 126 81.75 T
+(\050) 126 68.75 T
+5 F
+-0.6 (XkbSetMap) 130 68.75 S
+2 F
+(\051 have been applied to the server\325s Xkb keyboard map, the results are) 189.4 68.75 T
+69.05 381.75 542.95 624 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+78.05 507 204.05 589.53 R
+7 X
+0 0 0 1 0 0 0 K
+V
+2 10 Q
+0 X
+(Base Modifiers and Group) 87.86 582.86 T
+(Locked Modifiers and Group) 82.59 572.86 T
+(Latched Modifiers and Group) 81.48 562.86 T
+(Core Pointer Button State) 89.52 552.86 T
+(ServerInternalModifiers) 92.73 532.86 T
+(IgnoreLocksModifiers) 96.06 522.86 T
+(IgnoreGroupLock) 104.95 512.86 T
+78.05 471 537.05 615 R
+0.5 H
+0 Z
+N
+78.05 435 257.55 462 R
+N
+154.01 394 258.05 421 R
+N
+349.37 394.95 438.87 421.95 R
+N
+240.05 557.95 294.05 588 R
+7 X
+V
+0 X
+(Effective) 248.72 581.33 T
+(Modifiers) 247.33 571.33 T
+(and Group) 245.8 561.33 T
+415.8 550.88 533.55 580.93 R
+7 X
+V
+0 X
+(Compatibility State) 435.64 574.26 T
+(Compatibility Lookup State) 418.83 564.26 T
+(Compatibility Grab State) 424.39 554.26 T
+204.75 586.25 213 586.25 213 566 204.75 566 4 L
+N
+227.97 575.75 227.97 578.72 238.34 575.75 227.97 572.77 4 Y
+N
+227.97 575.75 227.97 578.72 238.34 575.75 227.97 572.77 4 Y
+V
+204.75 575.75 227.72 575.75 2 L
+N
+204.5 535.5 212.75 535.5 212.75 515.25 204.5 515.25 4 L
+N
+205.25 525.75 303.75 525.75 2 L
+N
+294.75 575.75 303.75 575.75 303.75 525.5 3 L
+N
+313.47 550.25 313.47 553.22 323.85 550.25 313.47 547.27 4 Y
+N
+313.47 550.25 313.47 553.22 323.85 550.25 313.47 547.27 4 Y
+V
+300 550.25 313.22 550.25 2 L
+N
+204.75 538.25 300 538.25 300 574.25 294.38 574.25 4 L
+N
+404.22 577.62 404.22 580.6 414.6 577.62 404.22 574.65 4 Y
+N
+404.22 577.62 404.22 580.6 414.6 577.62 404.22 574.65 4 Y
+V
+294.75 577.62 403.97 577.62 2 L
+N
+403.84 567.5 403.84 570.47 414.22 567.5 403.84 564.52 4 Y
+N
+403.84 567.5 403.84 570.47 414.22 567.5 403.84 564.52 4 Y
+V
+393 549.12 393 567.5 403.59 567.5 3 L
+N
+403.84 556.25 403.84 559.22 414.22 556.25 403.84 553.27 4 Y
+N
+403.84 556.25 403.84 559.22 414.22 556.25 403.84 553.27 4 Y
+V
+390.38 540.12 397.5 540.12 397.5 556.25 403.59 556.25 4 L
+N
+313.84 537.12 313.84 540.1 324.22 537.12 313.84 534.15 4 Y
+N
+313.84 537.12 313.84 540.1 324.22 537.12 313.84 534.15 4 Y
+V
+303.75 537.12 313.59 537.12 2 L
+N
+336.72 411.12 336.72 414.1 347.1 411.12 336.72 408.15 4 Y
+N
+336.72 411.12 336.72 414.1 347.1 411.12 336.72 408.15 4 Y
+V
+258.38 411.12 336.47 411.12 2 L
+N
+269.29 406.25 269.29 403.27 258.91 406.25 269.29 409.22 4 Y
+N
+269.29 406.25 269.29 403.27 258.91 406.25 269.29 409.22 4 Y
+V
+348 406.25 269.54 406.25 2 L
+N
+(Xkb State) 286.45 600 T
+3 12 Q
+(.) 211.55 524.66 T
+(.) 385.92 576.53 T
+(.) 391.8 548.41 T
+(.) 389.17 539.28 T
+(.) 289.05 405.28 T
+(.) 310.3 409.9 T
+(.) 302.55 536.16 T
+(.) 299.05 549.28 T
+(.) 212.05 574.79 T
+2 10 Q
+(LookupState) 327.75 547 T
+(Grab State) 330.75 533.87 T
+383.25 549.62 393 549.62 2 L
+N
+393 549.62 393 454.62 2 L
+N
+393 454.5 258 454.5 2 L
+N
+383.63 540.25 390.75 540.25 2 L
+N
+390.38 540.25 390.38 457.62 2 L
+N
+390.38 457.5 258.38 457.5 2 L
+N
+258.75 460.12 387.38 460.12 2 L
+N
+387 460.25 387 577.75 2 L
+N
+(Compatibility Map) 129.62 451.77 T
+(Explicit Override Controls) 114.5 438.49 T
+(Core Keyboard Map) 353.05 404 T
+(Xkb Keyboard Map) 166.06 403.05 T
+258.75 448.75 290.63 448.75 2 L
+N
+311.5 451.62 311.5 411.12 2 L
+N
+258.75 451.75 312 451.75 2 L
+N
+290.38 448.62 290.38 406.25 2 L
+N
+3 12 Q
+(.) 289.17 439.53 T
+258.75 440.37 290.25 440.37 2 L
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "168" 180
+%%Page: "169" 181
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(169) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+-0.14 (transformed to achieve an approximately equivalent change to the core keyboard map-) 126 712 P
+(ping maintained by the server.) 126 699 T
+-0.05 (This chapter discusses how a client may modify the compatibility map so that subsequent) 108 678 P
+(transformations have a particular result.) 108 665 T
+0 F
+(17.1) 72 640 T
+(The XkbCompatMap Structure) 108 640 T
+2 F
+(All configurable aspects of mapping Xkb state and configuration to and from core proto-) 108 620 T
+(col state and configuration are defined by a compatibility map, contained in an) 108 607 T
+5 F
+-0.6 (XkbCom-) 488.6 607 S
+-0.6 (patMap) 108 594 S
+2 F
+( structure; plus a set of explicit override controls used to prevent particular) 147.6 594 T
+(components of type 2 \050core-to-Xkb keyboard mapping\051 transformations from automati-) 108 581 T
+-0.5 (cally occurring. These explicit override controls are maintained in a separate data structure) 108 568 P
+(discussed in section 16.3.) 108 555 T
+(The) 108 534 T
+1 F
+(compat) 129.66 534 T
+2 F
+( member of an Xkb keyboard description \050) 164.99 534 T
+5 F
+-0.6 (XkbDescRec) 369.28 534 S
+2 F
+(\051 points to the) 435.28 534 T
+5 F
+-0.6 (XkbCompatMap) 108 521 S
+2 F
+( structure:) 187.2 521 T
+2 11 Q
+(typedef struct _XkbCompatMapRec {) 126 500.67 T
+(XkbSymInterpretPtr) 144 487.67 T
+(sym_interpret;) 252.75 487.67 T
+(/* symbol based k) 342 487.67 T
+(e) 421.64 487.67 T
+(y semantics*/) 426.36 487.67 T
+(XkbModsRec) 144 474.67 T
+(groups[XkbNumKbdGroups];) 252.75 474.67 T
+(/* group => modi\336er map */) 414 474.67 T
+(unsigned short) 144 461.67 T
+(num_si;) 252.75 461.67 T
+(/* # structures used in) 342 461.67 T
+1 F
+(sym_interpret) 441.3 461.67 T
+2 F
+( */) 502.4 461.67 T
+(unsigned short) 144 448.67 T
+(size_si;) 252.75 448.67 T
+(/* # structures allocated in) 342 448.67 T
+1 F
+(sym_interpret) 460.84 448.67 T
+2 F
+( */) 521.95 448.67 T
+(}) 126 435.67 T
+3 F
+(XkbCompatMapRec) 134.03 435.67 T
+2 F
+(, *XkbCompatMapPtr;) 231.8 435.67 T
+3 12 Q
+(Figur) 192.1 191 T
+(e 17.3 Xkb Compatibility Data Structur) 220.55 191 T
+(es) 423.66 191 T
+2 F
+(The subsections that follow discuss how the compatibility map and explicit override con-) 108 163 T
+(trols are used in each of the three cases where compatibility transformations are made.) 108 150 T
+0 F
+(17.1.1) 72 125 T
+(Xkb State to Core Pr) 108 125 T
+(otocol State T) 223.79 125 T
+(ransf) 302.17 125 T
+(ormation) 331.27 125 T
+2 F
+(As shown in Figure 17.3, there are four) 108 105 T
+1 F
+(gr) 299.96 105 T
+(oup compatibility maps) 310.09 105 T
+2 F
+( \050contained in) 422.76 105 T
+1 F
+(groups) 491.75 105 T
+2 F
+-0.19 ([0..3]\051 in the) 108 92 P
+5 F
+-0.42 -0.6 (XkbCompatMapRec) 170.42 92 B
+2 F
+-0.19 ( structure, one per possible Xkb group. Each group com-) 269.42 92 P
+(patibility map is a modifier definition \050see section 7.2 for a description of modifier defini-) 108 79 T
+87.38 212 524.62 412 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+222.88 262.75 303.88 280.75 R
+7 X
+0 0 0 1 0 0 0 K
+V
+2 10 Q
+0 X
+(num_si) 248.65 274.08 T
+222.38 266.75 303.38 266.75 2 L
+0.5 H
+0 Z
+N
+222.38 244.75 303.38 262.75 R
+7 X
+V
+0 X
+(size_si) 249.26 256.08 T
+303.38 301.75 375.38 346.75 R
+7 X
+V
+0 X
+(Group) 326.6 340.08 T
+(compatibility) 312.7 330.08 T
+(maps) 328.82 320.08 T
+222.88 334.75 303.88 352.75 R
+7 X
+V
+0 X
+(groups[0]) 243.93 346.08 T
+222.38 338.75 303.38 338.75 2 L
+N
+222.88 316.75 303.88 334.75 R
+7 X
+V
+0 X
+(groups[1]) 243.93 328.08 T
+222.38 320.75 303.38 320.75 2 L
+N
+222.88 298.75 303.88 316.75 R
+7 X
+V
+0 X
+(groups[2]) 243.93 310.08 T
+222.38 302.75 303.38 302.75 2 L
+N
+222.88 280.75 303.88 298.75 R
+7 X
+V
+0 X
+(groups[3]) 243.93 292.08 T
+222.38 284.75 303.38 284.75 2 L
+N
+114.38 377.75 195.38 395.75 R
+7 X
+V
+0 X
+(compat) 140.15 389.08 T
+114.38 320.75 195.38 410.75 R
+N
+114.38 381.75 195.38 381.75 2 L
+N
+114.38 399.75 195.38 399.75 2 L
+N
+114.38 293.75 195.38 311.75 R
+7 X
+V
+0 X
+(XkbDescRec) 128.49 305.08 T
+221.88 352.75 302.88 370.75 R
+7 X
+V
+0 X
+(sym_interpret) 234.6 364.08 T
+221.88 247.75 302.88 374.75 R
+N
+221.88 356.75 302.88 356.75 2 L
+N
+221.88 374.75 302.88 374.75 2 L
+N
+208.38 226.75 316.38 244.75 R
+7 X
+V
+0 X
+(XkbCompatMapRec) 220.99 238.08 T
+393.38 238.75 474.38 346.75 R
+N
+375.38 213.75 492.38 231.75 R
+7 X
+V
+0 X
+(XkbSymInterpretRec\050s\051) 385.83 225.08 T
+258.38 386.04 261.35 386.04 258.38 375.66 255.4 386.04 4 Y
+N
+258.38 386.04 261.35 386.04 258.38 375.66 255.4 386.04 4 Y
+V
+195.38 392.75 258.38 392.75 258.38 386.29 3 L
+N
+429.38 358.04 432.35 358.04 429.38 347.66 426.4 358.04 4 Y
+N
+429.38 358.04 432.35 358.04 429.38 347.66 426.4 358.04 4 Y
+V
+303.38 364.75 429.38 364.75 429.38 358.29 3 L
+N
+393.38 328.75 474.38 328.75 2 L
+N
+393.38 310.75 474.38 310.75 2 L
+N
+393.38 292.75 474.38 292.75 2 L
+N
+393.38 274.75 474.38 274.75 2 L
+N
+393.38 256.75 474.38 256.75 2 L
+N
+(0) 384.38 328.75 T
+(num_si - 1) 344.38 274.75 T
+(size_si - 1) 346.38 240.75 T
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "169" 181
+%%Page: "170" 182
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(170) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+-0.02 (tions\051. The) 108 712 P
+1 F
+-0.02 (mask) 162.96 712 P
+2 F
+-0.02 ( component of the definition specifies which real modifiers should be set) 187.62 712 P
+(in the core protocol state field when the corresponding group is active. Because only one) 108 699 T
+(group is active at any one time, only one of the four possible transformations is ever) 108 686 T
+-0.23 (applied at any one point in time. If the device described by the) 108 673 P
+5 F
+-0.5 -0.6 (XkbDescRec) 407.68 673 B
+2 F
+-0.23 ( does not sup-) 473.68 673 P
+(port four groups, the extra groups fields are present, but undefined.) 108 660 T
+-0.35 (Normally, the Xkb-aware server reports keyboard state in the) 108 639 P
+1 F
+-0.35 (state) 402.11 639 P
+2 F
+-0.35 ( member of events such) 424.77 639 P
+(as a) 108 626 T
+5 F
+-0.6 (KeyPress) 129.32 626 S
+2 F
+( event and) 182.12 626 T
+5 F
+-0.6 (ButtonPress) 234.45 626 S
+2 F
+( event, encoded as follows:) 307.05 626 T
+(bits) 126 605 T
+(meaning) 216 605 T
+(15) 126 592 T
+(0) 216 592 T
+(13-14) 126 579 T
+(Group index) 216 579 T
+(8-12) 126 566 T
+(Pointer Buttons) 216 566 T
+(0-7) 126 553 T
+(Modifiers) 216 553 T
+(For Xkb-unaware clients, only core protocol keyboard information may be reported.) 108 534 T
+-0.22 (Because core protocol does not define the group index, the group index is mapped to mod-) 108 521 P
+(ifier bits as specified by the) 108 508 T
+1 F
+(groups) 243.31 508 T
+2 F
+([group index] field of the compatibility map \050the bits) 276.65 508 T
+(set in the compatibility map are ORed into bits 0-7 of the state\051, and bits 13-14 are) 108 495 T
+(reported in the event as zero.) 108 482 T
+0 F
+(17.1.2) 72 457 T
+(Core K) 108 457 T
+(e) 147.16 457 T
+(yboar) 153.65 457 T
+(d Mapping to Xkb K) 186.08 457 T
+(e) 297.91 457 T
+(yboar) 304.4 457 T
+(d Mapping T) 336.84 457 T
+(ransf) 406.55 457 T
+(ormation) 435.65 457 T
+2 F
+(When a core protocol keyboard mapping request is received by the server, the server\325s) 108 437 T
+-0.2 (core keyboard map is updated, and then the Xkb map maintained by the server is updated.) 108 424 P
+-0.46 (Because a client may have explicitly configured some of the Xkb keyboard mapping in the) 108 411 P
+(server, this automatic regeneration of the Xkb keyboard mapping from the core protocol) 108 398 T
+-0.07 (keyboard mapping should not modify any components of the Xkb keyboard mapping that) 108 385 P
+-0.27 (were explicitly set by a client. The client must set explicit override controls to prevent this) 108 372 P
+(from happening \050see section 16.3\051. The core-to-Xkb mapping is done as follows:) 108 359 T
+(1.) 108 338 T
+(Map the symbols from the keys in the core keyboard map to groups and symbols on) 125.25 338 T
+-0.04 (keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so each) 126 325 P
+(key in the core mapping has the same number of symbols associated with it. The Xkb) 126 312 T
+(mapping allows a different number of symbols to be associated with each key; those) 126 299 T
+-0.35 (symbols may be divided into a different number of groups \0501-4\051 for each key. For each) 126 286 P
+-0.2 (key, this process therefore involves partitioning the fixed number of symbols from the) 126 273 P
+(core mapping into a set of variable-length groups with a variable number of symbols) 126 260 T
+(in each group. For example, if the core protocol map is of width five, the partition for) 126 247 T
+(one key might result in one group with two symbols and another with three symbols.) 126 234 T
+(A different key might result in two groups with two symbols plus a third group with) 126 221 T
+(one symbol. The core protocol map requires at least two symbols in each of the first) 126 208 T
+(two groups.) 126 195 T
+(1a.) 126 174 T
+-0.49 (For each changed key, determine the number of groups represented in the new core) 144 174 P
+-0.15 (keyboard map. This results in a tentative group count for each key in the Xkb map.) 144 161 P
+(1b.) 126 140 T
+(For each changed key, determine the number of symbols in each of the groups) 144 140 T
+-0.04 (found in step 1a. There is one explicit override control associated with each of the) 144 127 P
+(four possible groups for each Xkb key,) 144 114 T
+5 F
+-0.6 (ExplicitKeyType1) 333.96 114 S
+2 F
+( through) 439.56 114 T
+5 F
+-0.77 -0.6 (ExplicitKeyType4) 144 101 B
+2 F
+-0.35 (. If no explicit override control is set for a group, the number) 249.6 101 P
+(of symbols used for that group from the core map is two. If the explicit override) 144 88 T
+(control is set for a group on the key, the number of symbols used for that Xkb) 144 75 T
+FMENDPAGE
+%%EndPage: "170" 182
+%%Page: "171" 183
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(171) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+(group from the core map is the width of the Xkb group with one exception:) 144 712 T
+-0.46 (because of the core protocol requirement for at least two symbols in each of groups) 144 699 P
+-0.1 (one and two, the number of symbols used for groups one and two is the maximum) 144 686 P
+(of 2 or the width of the Xkb group.) 144 673 T
+(1c.) 126 652 T
+-0.31 (For each changed key, assign the symbols in the core map to the appropriate group) 144 652 P
+-0.35 (on the key. If the total number of symbols required by the Xkb map for a particular) 144 639 P
+(key needs more symbols than the core protocol map contains, the additional sym-) 144 626 T
+-0.16 (bols are taken to be) 144 613 P
+5 F
+-0.35 -0.6 (NoSymbol) 239.51 613 B
+2 F
+-0.16 ( keysyms appended to the end of the core set. If the) 292.31 613 P
+(core map contains more symbols than are needed by the Xkb map, trailing sym-) 144 600 T
+-0.18 (bols in the core map are discarded. In the absence of an explicit override for group) 144 587 P
+(one or two, symbols are assigned in order by group; the first symbols in the core) 144 574 T
+(map are assigned to group one, in order, followed by group two, and so on. For) 144 561 T
+(example, if the core map contained eight symbols per key, and a particular Xkb) 144 548 T
+(map contained 2 symbols for G1 and G2 and three for G3, the symbols would be) 144 535 T
+(assigned as \050G is group, L is shift level\051:) 144 522 T
+(G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3) 226.01 501 T
+(If an explicit override control is set for group one or two, the symbols are taken) 144 480 T
+(from the core set in a somewhat different order. The first four symbols from the) 144 467 T
+(core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group one) 144 454 T
+(requires more symbols, they are taken next, and then any additional symbols) 144 441 T
+(needed by group two. Group three and four symbols are taken in complete) 144 428 T
+(sequence after group two. For example, a key with four groups and three symbols) 144 415 T
+(in each group would take symbols from the core set in the following order:) 144 402 T
+(G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3) 148.52 381 T
+(As previously noted, the core protocol map requires at lease two symbols in) 144 360 T
+-0.16 (groups one and two. Because of this, if an explicit override control for an Xkb key) 144 347 P
+(is set and group one and / or group two is of width one, it is not possible to gener-) 144 334 T
+(ate the symbols taken from the core protocol set and assigned to position G1L2) 144 321 T
+(and / or G2L2.) 144 308 T
+(1d.) 126 287 T
+-0.44 (For each group on each changed key, assign a key type appropriate for the symbols) 144 287 P
+(in the group.) 144 274 T
+(1e.) 126 253 T
+(For each changed key, remove any empty or redundant groups.) 144 253 T
+-0.02 (At this point, the groups and their associated symbols have been assigned to the corre-) 126 232 P
+(sponding key definitions in the Xkb map.) 126 219 T
+(2.) 108 198 T
+(Apply symbol interpretations to modify key operation. This phase is completely) 126 198 T
+-0.44 (skipped if the) 126 185 P
+5 F
+-0.97 -0.6 (ExplicitInterpret) 195.56 185 B
+2 F
+-0.44 ( override control bit is set in the explicit controls) 307.76 185 P
+(mask for the Xkb key \050see section 16.3\051.) 126 172 T
+(2a.) 126 151 T
+-0.16 (For each symbol on each changed key, attempt to match the symbol and modifiers) 144 151 P
+(from the Xkb map to a symbol interpretation describing how to generate the sym-) 144 138 T
+(bol.) 144 125 T
+(2b.) 126 104 T
+(When a match is found in step 2a, apply the symbol interpretation to change the) 144 104 T
+(semantics associated with the symbol in the Xkb key map. If no match is found,) 144 91 T
+(apply a default interpretation.) 144 78 T
+FMENDPAGE
+%%EndPage: "171" 183
+%%Page: "172" 184
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(172) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+(The symbol interpretations used in step 2 are configurable and may be specified using) 108 712 T
+5 F
+-0.6 (XkbSymInterpretRec) 108 699 S
+2 F
+( structures referenced by the) 226.8 699 T
+1 F
+(sym_interpret) 365.75 699 T
+2 F
+( field of an) 432.41 699 T
+5 F
+-0.6 (XkbCom-) 487.73 699 S
+-0.6 (patMapRec) 108 686 S
+2 F
+( \050see Figure 17.3\051.) 167.4 686 T
+0 11 Q
+(Symbol Interpretations \321 the XkbSymInterpretRec Structure) 108 663.67 T
+2 12 Q
+-0.33 (Symbol interpretations are used to guide the X server when it modifies the Xkb keymap in) 108 645 P
+(step 2. An initial set of symbol interpretations is loaded by the server when it starts. A cli-) 108 632 T
+(ent may add new ones using) 108 619 T
+1 F
+(XkbSetCompatMap) 246.65 619 T
+2 F
+( \050see section 17.4\051.) 339.97 619 T
+(Symbol interpretations result in key semantics being set. When a symbol interpretation is) 108 598 T
+-0.4 (applied, the following components of server key event processing may be modified for the) 108 585 P
+(particular key involved:) 108 572 T
+(Virtual modifier map) 216 551 T
+(Auto repeat) 216 538 T
+(Key behavior \050may be set to) 216 525 T
+5 F
+-0.6 (XkbKB_Lock) 354.64 525 S
+2 F
+(\051) 420.64 525 T
+(Key action \050see section 16.1\051) 216 512 T
+(The) 108 493 T
+5 F
+-0.6 (XkbSymInterpretRec) 129.66 493 S
+2 F
+( structure specifies a symbol interpretation:) 248.46 493 T
+2 11 Q
+(typedef struct {) 126 472.67 T
+(K) 144 459.67 T
+(e) 151.67 459.67 T
+(ySym) 156.39 459.67 T
+(sym;) 234 459.67 T
+(/* k) 297 459.67 T
+(e) 313.7 459.67 T
+(ysym of interest or) 318.42 459.67 T
+5 12 Q
+-0.6 (NULL) 403.96 459.67 S
+2 11 Q
+( */) 430.36 459.67 T
+(unsigned char) 144 446.67 T
+(\337ags;) 234 446.67 T
+(/*) 297 446.67 T
+5 F
+-0.33 (XkbSI_AutoRepeat, XkbSI_LockingKey) 308.31 446.67 S
+0 1 1 0 1 0 0 K
+0 0 0 1 0 0 0 K
+2 F
+(*/) 524.24 446.67 T
+(unsigned char) 144 433.67 T
+(match;) 234 433.67 T
+(/* speci\336es ho) 297 433.67 T
+(w mods is interpreted */) 359.67 433.67 T
+(unsigned char) 144 420.67 T
+(mods;) 234 420.67 T
+(/* modi\336er bits, correspond to eight real modi\336ers */) 297 420.67 T
+(unsigned char) 144 407.67 T
+(virtual_mod;) 234 407.67 T
+(/* 1 modi\336er to add to k) 297 407.67 T
+(e) 403.23 407.67 T
+(y virtual mod map */) 407.95 407.67 T
+(XkbAn) 144 394.67 T
+(yAction) 176.22 394.67 T
+(act;) 234 394.67 T
+(/* action to bind to symbol position on k) 297 394.67 T
+(e) 475.35 394.67 T
+(y */) 480.07 394.67 T
+(}) 126 381.67 T
+3 F
+(XkbSymInter) 134.03 381.67 T
+(pr) 198.7 381.67 T
+(etRec) 209.5 381.67 T
+2 F
+(,*XkbSymInterpretPtr;) 235.76 381.67 T
+2 12 Q
+-0.13 (If) 108 362 P
+1 F
+-0.13 (sym) 118.86 362 P
+2 F
+-0.13 ( is not) 137.52 362 P
+5 F
+-0.28 -0.6 (NULL) 169.48 362 B
+2 F
+-0.13 (, it limits the symbol interpretation to keys on which that particular key-) 195.88 362 P
+(sym is selected by the modifiers matching the criteria specified by) 108 349 T
+1 11 Q
+(mods) 428.95 349 T
+2 12 Q
+( and) 452.17 349 T
+1 11 Q
+(match) 475.5 349 T
+2 12 Q
+(. If) 502.39 349 T
+1 11 Q
+(sym) 519.38 349 T
+2 12 Q
+-0.08 (is) 108 336 P
+5 F
+-0.19 -0.6 (NULL) 118.92 336 B
+2 F
+-0.08 (, the interpretation may be applied to any symbol selected on a key when the mod-) 145.32 336 P
+(ifiers match the criteria specified by) 108 323 T
+1 11 Q
+(mods) 283.96 323 T
+2 12 Q
+( and) 307.18 323 T
+1 11 Q
+(match) 330.51 323 T
+2 12 Q
+(.) 357.39 323 T
+1 11 Q
+-0.04 (match) 108 302 P
+2 12 Q
+-0.05 ( must be one of the values shown in Table 17.1 and specifies how the real modifiers) 134.88 302 P
+(specified in) 108 289 T
+1 11 Q
+(mods) 166.66 289 T
+2 12 Q
+( are to be interpreted.) 189.88 289 T
+-0.39 (In addition to the above bits,) 108 98 P
+1 F
+-0.39 (match) 245.99 98 P
+2 F
+-0.39 ( may contain the) 275.32 98 P
+5 F
+-0.86 -0.6 (XkbSI_LevelOneOnly) 356.42 98 B
+2 F
+-0.39 ( bit, in which) 475.22 98 P
+-0.13 (case the modifier match criteria specified by) 108 85 P
+1 11 Q
+-0.12 (mods) 323.39 85 P
+2 12 Q
+-0.13 ( and) 346.61 85 P
+1 11 Q
+-0.12 (match) 369.69 85 P
+2 12 Q
+-0.13 ( applies only if) 396.57 85 P
+1 11 Q
+-0.12 (sym) 470.73 85 P
+2 12 Q
+-0.13 ( is in level) 487.84 85 P
+3 F
+(T) 204.86 269 T
+(able 17.1 Symbol Inter) 211.76 269 T
+(pr) 330.64 269 T
+(etation Match Criteria) 342.43 269 T
+1 F
+(Matc) 109 249 T
+(h Criteria) 133.48 249 T
+(V) 235 249 T
+(alue) 241 249 T
+(Ef) 277.75 249 T
+(fect) 288.2 249 T
+5 11 Q
+-0.33 (XkbSI_NoneOf) 109 234.67 S
+2 F
+(\0500\051) 235 234.67 T
+2 12 Q
+(None of the bits that are on in) 277.75 234.67 T
+1 11 Q
+(mods) 423.73 234.67 T
+2 12 Q
+( can be set, b) 446.95 234.67 T
+(ut) 509.03 234.67 T
+(other bits can be.) 277.75 223.67 T
+5 11 Q
+-0.33 (XkbSI_AnyOfOrNone) 109 209.67 S
+2 F
+(\0501\051) 235 209.67 T
+2 12 Q
+(Zero or more of the bits that are on in) 277.75 209.67 T
+1 11 Q
+(mods) 461.05 209.67 T
+2 12 Q
+( can be set,) 484.27 209.67 T
+(as well as others) 277.75 198.67 T
+2 11 Q
+(.) 356.73 198.67 T
+5 F
+-0.33 (XkbSI_AnyOf) 109 184.67 S
+2 F
+(\0502\051) 235 184.67 T
+(One or more of the bits that are on in) 277.75 184.67 T
+1 F
+(mods) 443.33 184.67 T
+2 F
+( can be set, as) 466.55 184.67 T
+(well as an) 277.75 173.67 T
+(y others.) 321.57 173.67 T
+5 F
+-0.33 (XkbSI_AllOf) 109 159.67 S
+2 F
+(\0503\051) 235 159.67 T
+2 12 Q
+(All of the bits that are on in) 277.75 159.67 T
+1 11 Q
+(mods) 413.07 159.67 T
+2 12 Q
+( must be set, but oth-) 436.29 159.67 T
+(ers may be set as well) 277.75 148.67 T
+2 11 Q
+(.) 382.73 148.67 T
+5 F
+-0.33 (XkbSI_Exactly) 109 134.67 S
+2 F
+(\0504\051) 235 134.67 T
+2 12 Q
+(All of the bits that are on in) 277.75 134.67 T
+1 11 Q
+(mods) 413.07 134.67 T
+2 12 Q
+( must be set, and no) 436.29 134.67 T
+(other bits may be set) 277.75 123.67 T
+2 11 Q
+(.) 377.07 123.67 T
+108 261 541.5 261 2 L
+V
+0.5 H
+0 Z
+N
+108 244 541.5 244 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "172" 184
+%%Page: "173" 185
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(173) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+(one of its group; otherwise,) 108 712 T
+1 11 Q
+(mods) 242.65 712 T
+2 12 Q
+( and) 265.87 712 T
+1 11 Q
+(match) 289.2 712 T
+2 12 Q
+( are ignored and the symbol matches a condi-) 316.08 712 T
+(tion where no modifiers are set.) 108 699 T
+2 11 Q
+(#de\336ne XkbSI_Le) 126 678.67 T
+(v) 206.68 678.67 T
+(elOneOnly) 212.02 678.67 T
+(\0500x80\051) 270 678.67 T
+(/* use mods + match only if sym is le) 306 678.67 T
+(v) 470.52 678.67 T
+(el 1 */) 475.85 678.67 T
+2 12 Q
+(If no matching symbol interpretation is found, the server uses a default interpretation) 108 659 T
+(where:) 108 646 T
+1 F
+(sym) 126 625 T
+2 F
+( =) 144.66 625 T
+(0) 216 625 T
+1 F
+(\337a) 126 612 T
+(gs) 137.88 612 T
+2 F
+( =) 148.55 612 T
+5 F
+-0.6 (XkbSI_AutoRepeat) 216 612 S
+1 F
+(matc) 126 599 T
+(h) 149.15 599 T
+2 F
+( =) 155.15 599 T
+5 F
+-0.6 (XkbSI_AnyOfOrNone) 216 599 S
+1 F
+(mods) 126 586 T
+2 F
+( =) 151.33 586 T
+(0) 216 586 T
+1 F
+(virtual_mod) 126 573 T
+2 F
+( =) 184.67 573 T
+5 F
+-0.6 (XkbNoModifier) 216 573 S
+1 F
+(act) 126 560 T
+2 F
+( =) 140.66 560 T
+5 F
+-0.6 (SA_NoAction) 216 560 S
+2 F
+-0.17 (When a matching symbol interpretation is found in step 2a, the interpretation is applied to) 108 541 P
+(modify the Xkb map as follows.) 108 528 T
+(The) 108 507 T
+1 11 Q
+(act) 129.66 507 T
+2 12 Q
+( field specifies a single action to be bound to the symbol position; any key event) 143.1 507 T
+(that selects the symbol causes the action to be taken. Valid actions are defined in section) 108 494 T
+(16.1.) 108 481 T
+-0.37 (If the Xkb keyboard map for the key does not have its) 108 460 P
+5 F
+-0.82 -0.6 (ExplicitVModMap) 365.49 460 B
+2 F
+-0.37 ( control set, the) 464.49 460 P
+5 F
+-0.6 (XkbSI_LevelOneOnly) 108 447 S
+2 F
+( bit and symbol position are examined. If the) 226.8 447 T
+5 F
+-0.6 (XkbSI_LevelOneOnly) 108 434 S
+2 F
+( bit is not set in) 226.8 434 T
+1 11 Q
+(match) 303.48 434 T
+2 12 Q
+( or the symbol is in position G1L1, the) 330.37 434 T
+1 11 Q
+-0.34 (virtual_mod) 108 421 P
+2 12 Q
+-0.37 ( field is examined. If) 161.78 421 P
+1 11 Q
+-0.34 (virtual_mod) 262.56 421 P
+2 12 Q
+-0.37 ( is not) 316.33 421 P
+5 F
+-0.82 -0.6 (XkbNoModifier) 347.55 421 B
+2 F
+-0.37 (,) 433.36 421 P
+1 11 Q
+-0.34 (virtual_mod) 438.98 421 P
+2 12 Q
+-0.37 ( specifies) 492.76 421 P
+-0.17 (a single virtual modifier to be added to the virtual modifier map for the key.) 108 408 P
+1 11 Q
+-0.15 ( virtual_mod) 469.95 408 P
+2 12 Q
+-0.17 ( is) 526.33 408 P
+(specified as an index in the range [0..15].) 108 395 T
+(If the matching symbol is in position G1L1 of the key, two bits in the flags field poten-) 108 374 T
+(tially specify additional behavior modifications:) 108 361 T
+2 11 Q
+(#de\336ne) 126 340.67 T
+(XkbSI_AutoRepeat) 171 340.67 T
+(\0501<<0\051) 270 340.67 T
+(/* k) 306 340.67 T
+(e) 322.7 340.67 T
+(y repeats if sym is in position G1L1 */) 327.42 340.67 T
+(#de\336ne) 126 327.67 T
+(XkbSI_LockingK) 171 327.67 T
+(e) 249.55 327.67 T
+(y) 254.27 327.67 T
+(\0501<<1\051) 270 327.67 T
+(/* set) 306 327.67 T
+5 F
+-0.33 (KB_Lock) 332.28 327.67 S
+2 F
+( beha) 376.17 327.67 T
+(vior if sym is in psn G1L1 */) 399.47 327.67 T
+2 12 Q
+(If the Xkb keyboard map for the key does not have its) 108 308 T
+5 F
+-0.6 (ExplicitAutoRepeat) 369.95 308 S
+2 F
+( control) 488.75 308 T
+(set, its auto repeat behavior is set based on the value of the) 108 295 T
+5 F
+-0.6 (XkbSI_AutoRepeat) 392.62 295 S
+2 F
+( bit. If) 498.22 295 T
+-0.18 (the) 108 282 P
+5 F
+-0.4 -0.6 (XkbSI_AutoRepeat) 125.48 282 B
+2 F
+-0.18 ( bit is set, the auto-repeat behavior of the key is turned on; other-) 231.08 282 P
+(wise, it is turned off.) 108 269 T
+(If the Xkb keyboard map for the key does not have its) 108 248 T
+5 F
+-0.6 (ExplicitBehavior) 369.95 248 S
+2 F
+( control set,) 475.55 248 T
+(its locking behavior is set based on the value of the) 108 235 T
+5 F
+-0.6 (XkbSI_LockingKey) 356.3 235 S
+2 F
+( bit. If) 461.91 235 T
+5 F
+-0.9 -0.6 (XkbSI_LockingKey) 108 222 B
+2 F
+-0.41 ( is set, the key behavior is set to) 213.6 222 P
+5 F
+-0.9 -0.6 (KB_Lock) 365.92 222 B
+2 F
+-0.41 (; otherwise, it is turned off) 412.12 222 P
+(\050see section 16.3\051.) 108 209 T
+0 F
+(17.1.3) 72 184 T
+(Xkb K) 108 184 T
+(e) 141.83 184 T
+(yboar) 148.32 184 T
+(d Mapping to Core K) 180.76 184 T
+(e) 297.91 184 T
+(yboar) 304.4 184 T
+(d Mapping T) 336.84 184 T
+(ransf) 406.55 184 T
+(ormations) 435.65 184 T
+2 F
+(Whenever the server processes Xkb requests to change the keyboard mapping, it discards) 108 164 T
+-0.37 (the affected portion of its core keyboard mapping and regenerates it based on the new Xkb) 108 151 P
+(mapping.) 108 138 T
+(When the Xkb mapping for a key is transformed to a core protocol mapping, the symbols) 108 117 T
+(for the core map are taken in the following order from the Xkb map:) 108 104 T
+(G1L1 G1L2 G2L1 G2L2 G1L3-n G2L3-n G3L1-n G4L1-n) 108 83 T
+FMENDPAGE
+%%EndPage: "173" 185
+%%Page: "174" 186
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(174) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+-0.02 (If group one is of width one in the Xkb map, G1L2 is taken to be NoSymbol; similarly, if) 108 712 P
+(group two is of width one in the Xkb map, G2L2 is taken to be NoSymbol.) 108 699 T
+-0.07 (If the Xkb key map for a particular key has fewer groups than the core keyboard, the sym-) 108 678 P
+(bols for group one are repeated to fill in the missing core components. For example, an) 108 665 T
+(Xkb key with a single width-three group would be mapped to a core mapping counting) 108 652 T
+(three groups as:) 108 639 T
+(G1L1 G1L2 G1L1 G1L2 G1L3 G1L3 G1L1 G1L2 G1L3) 108 618 T
+(When a core keyboard map entry is generated from an Xkb keyboard map entry, a modi-) 108 597 T
+(fier mapping is generated as well. The modifier mapping contains all of the modifiers) 108 584 T
+(affected by any of the actions associated with the key combined with all of the real modi-) 108 571 T
+(fiers associated with any of the virtual modifiers bound to the key. In addition, if any of) 108 558 T
+-0.14 (the actions associated with the key affect any component of the keyboard group, all of the) 108 545 P
+(modifiers in the) 108 532 T
+1 F
+(mask) 187 532 T
+2 F
+( field of all of the group compatibility maps are added to the modi-) 211.66 532 T
+(fier mapping as well. While an) 108 519 T
+5 F
+-0.6 (XkbSA_ISOLock) 258.97 519 S
+2 F
+( action can theoretically affect any mod-) 344.77 519 T
+(ifier, if the Xkb mapping for a key specifies an) 108 506 T
+5 F
+-0.6 (XkbSA_ISOLock) 335.62 506 S
+2 F
+( action, only the) 421.42 506 T
+(modifiers or group that are set by default are added to the modifier mapping.) 108 493 T
+0 F
+(17.2) 72 468 T
+(Getting Compatibility Map Components Fr) 108 468 T
+(om the Ser) 348.44 468 T
+(ver) 410.58 468 T
+2 F
+(Use) 108 448 T
+1 F
+(XkbGetCompatMap) 129.66 448 T
+2 F
+( to fetch any combination of the current compatibility map com-) 225.65 448 T
+(ponents from the server. When another client modifies the compatibility map, you are) 108 435 T
+(notified if you have selected for) 108 422 T
+5 F
+-0.6 (XkbCompatMapNotify) 263.96 422 S
+2 F
+( events \050see section 17.5\051.) 382.77 422 T
+1 F
+(Xkb-) 509.74 422 T
+(GetCompatMap) 108 409 T
+2 F
+( is particularly useful when you receive an event of this type, as it allows) 185.33 409 T
+-0.09 (you to update your program\325s version of the compatibility map to match the modified ver-) 108 396 P
+(sion now in the server. If your program is dealing with multiple servers and needs to con-) 108 383 T
+(figure them all in a similar manner, the updated compatibility map may be used to) 108 370 T
+(reconfigure other servers.) 108 357 T
+0 F
+(Note) 126 336.67 T
+2 11 Q
+-0.4 (T) 162 336.67 P
+-0.4 (o mak) 167.84 336.67 P
+-0.4 (e a complete matching con\336guration you must also update the e) 194.53 336.67 P
+-0.4 (xplicit o) 470.86 336.67 P
+-0.4 (v) 506.66 336.67 P
+-0.4 (erride) 511.99 336.67 P
+(components of the serv) 162 324.67 T
+(er state.) 264.18 324.67 T
+(Status) 108 304.67 T
+3 F
+(XkbGetCompatMap) 137.65 304.67 T
+2 F
+(\050) 234.81 304.67 T
+1 F
+(display) 238.47 304.67 T
+(, whic) 269.64 304.67 T
+(h, xkb) 295.76 304.67 T
+2 F
+(\051) 322.03 304.67 T
+(Display *) 126 291.67 T
+1 F
+(display) 234 291.67 T
+2 F
+(;) 265.78 291.67 T
+(/* connection to serv) 306 291.67 T
+(er */) 397.8 291.67 T
+(unsigned int) 126 278.67 T
+1 F
+(whic) 234 278.67 T
+(h) 254.61 278.67 T
+2 F
+(;) 260.11 278.67 T
+(/* mask of compatibility map components to fetch */) 306 278.67 T
+(XkbDescRec *) 126 265.67 T
+1 F
+(xkb) 234 265.67 T
+2 F
+(;) 249.27 265.67 T
+(/* k) 306 265.67 T
+(e) 322.7 265.67 T
+(yboard description where results placed */) 327.42 265.67 T
+1 F
+(XkbGetCompatMap) 108 246 T
+2 12 Q
+( fetches the components of the compatibility map specified in) 195.99 246 T
+1 F
+(whic) 494.62 246 T
+(h) 517.11 246 T
+2 F
+(from the server specified by) 108 233 T
+1 F
+(display) 245.63 233 T
+2 F
+( and places them in the) 280.3 233 T
+1 F
+(compat) 393.61 233 T
+2 F
+( structure of the key-) 428.94 233 T
+(board description) 108 220 T
+1 F
+(xkb) 194.65 220 T
+2 F
+(. Valid values for) 211.31 220 T
+1 F
+(whic) 297.62 220 T
+(h) 320.11 220 T
+2 F
+( are an inclusive OR of the values shown in) 326.11 220 T
+(Table 17.2.) 108 207 T
+(If no compatibility map structure is allocated in) 108 99 T
+1 F
+(xkb) 339.31 99 T
+2 F
+( upon entry,) 355.97 99 T
+1 11 Q
+(XkbGetCompatMap) 416.63 99 T
+2 12 Q
+( allo-) 504.62 99 T
+(cates one. If one already exists, its contents are overwritten with the returned results.) 108 86 T
+3 F
+(T) 175.92 187 T
+(able 17.2 Compatibility Map Component Masks) 182.82 187 T
+1 F
+(Mask) 109 167 T
+(V) 244 167 T
+(alue) 250 167 T
+(Af) 307 167 T
+(fecting) 317.45 167 T
+5 11 Q
+-0.33 (XkbSymInterpMask) 109 152.67 S
+2 F
+(\0501<<0\051) 244 152.67 T
+(Symbol interpretations) 307 152.67 T
+5 F
+-0.33 (XkbGroupCompatMask) 109 138.67 S
+2 F
+(\0501<<1\051) 244 138.67 T
+(Group maps) 307 138.67 T
+5 F
+-0.33 (XkbAllCompatMask) 109 124.67 S
+2 F
+(\0500x3\051) 244 124.67 T
+(All compatibility map components) 307 124.67 T
+108 179 486 179 2 L
+V
+0.5 H
+0 Z
+N
+108 162 486 162 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "174" 186
+%%Page: "175" 187
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(175) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+1 12 Q
+-0.21 (XkbGetCompatMap) 108 712 P
+2 F
+-0.21 ( fetches compatibility map information for the device specified by the) 203.99 712 P
+1 F
+(device_spec) 108 699 T
+2 F
+( field of) 165.97 699 T
+1 F
+(xkb) 206.96 699 T
+2 F
+(. Unless you have specifically modified this field, it is the default) 223.62 699 T
+(keyboard device.) 108 686 T
+1 F
+(XkbGetCompatMap) 192.97 686 T
+2 F
+( returns) 288.96 686 T
+5 F
+-0.6 (Success) 328.28 686 S
+2 F
+( if successful,) 374.48 686 T
+5 F
+-0.6 (BadAlloc) 443.14 686 S
+2 F
+( if it is) 495.94 686 T
+-0.36 (unable to obtain necessary storage for either the return values or work space,) 108 673 P
+5 F
+-0.79 -0.6 (BadMatch) 474.58 673 B
+2 F
+-0.36 ( if) 527.38 673 P
+(the) 108 660 T
+1 F
+(dpy) 125.66 660 T
+2 F
+( field of the) 142.99 660 T
+1 F
+(xkb) 201.65 660 T
+2 F
+( argument is non-) 218.3 660 T
+5 F
+-0.6 (NULL) 302.63 660 S
+2 F
+( and does not match the) 329.03 660 T
+1 F
+(display) 445.68 660 T
+2 F
+( argument,) 480.35 660 T
+(and) 108 647 T
+5 F
+-0.6 (BadLength) 128.33 647 S
+2 F
+( under certain conditions caused by server or Xkb implementation errors.) 187.73 647 T
+0 F
+(17.3) 72 622 T
+(Using the Compatibility Map) 108 622 T
+2 F
+(Xkb provides several functions that make it easier to apply the compatibility map to con-) 108 602 T
+-0.25 (figure a client-side Xkb keyboard mapping, given a core protocol representation of part or) 108 589 P
+(all of a keyboard mapping. Obtain a core protocol representation of a keyboard mapping) 108 576 T
+-0.22 (from an actual server \050by using) 108 563 P
+1 F
+-0.22 (XGetK) 259.34 563 P
+-0.22 (e) 291.58 563 P
+-0.22 (yboar) 296.55 563 P
+-0.22 (dMapping) 324.1 563 P
+2 F
+-0.22 (, for example\051, a data file, or some) 373.43 563 P
+(other source.) 108 550 T
+(To update a local Xkb keyboard map to reflect the mapping expressed by a core format) 108 529 T
+(mapping by calling the function) 108 516 T
+1 F
+(XkbUpdateMapF) 264.32 516 T
+(r) 346.98 516 T
+(omCor) 351.11 516 T
+(e) 384 516 T
+2 F
+(.) 389.33 516 T
+2 11 Q
+(Bool) 108 495.67 T
+3 F
+(XkbUpdateMapFr) 132.15 495.67 T
+(omCor) 219.95 495.67 T
+(e) 252.74 495.67 T
+2 F
+(\050) 257.62 495.67 T
+1 F
+(xkb) 261.29 495.67 T
+2 F
+(,) 276.55 495.67 T
+1 F
+( \336r) 279.3 495.67 T
+(st_k) 291.72 495.67 T
+(e) 309.33 495.67 T
+(y) 313.89 495.67 T
+2 F
+(,) 318.06 495.67 T
+1 F
+( num_k) 320.81 495.67 T
+(e) 352.77 495.67 T
+(ys) 357.33 495.67 T
+2 F
+(,) 366.49 495.67 T
+1 F
+( map_width) 369.24 495.67 T
+2 F
+(,) 420.88 495.67 T
+1 F
+( cor) 423.63 495.67 T
+(e_k) 440.64 495.67 T
+(e) 455.8 495.67 T
+(ysyms) 460.35 495.67 T
+2 F
+(,) 486.62 495.67 T
+1 F
+( c) 489.37 495.67 T
+(hang) 496.84 495.67 T
+(es) 518.73 495.67 T
+2 F
+(\051) 527.89 495.67 T
+(XkbDescPtr) 126 482.67 T
+1 F
+(xkb) 234 482.67 T
+2 F
+(;) 249.27 482.67 T
+(/* k) 306 482.67 T
+(e) 322.7 482.67 T
+(yboard description to update */) 327.42 482.67 T
+(K) 126 469.67 T
+(e) 133.67 469.67 T
+(yCode) 138.39 469.67 T
+1 F
+(\336r) 234 469.67 T
+(st_k) 243.67 469.67 T
+(e) 261.28 469.67 T
+(y) 265.83 469.67 T
+2 F
+(;) 270.72 469.67 T
+(/* k) 306 469.67 T
+(e) 322.7 469.67 T
+(ycode of \336rst k) 327.42 469.67 T
+(e) 393.6 469.67 T
+(y description to update */) 398.32 469.67 T
+(int) 126 456.67 T
+1 F
+(num_k) 234 456.67 T
+(e) 263.22 456.67 T
+(ys) 267.77 456.67 T
+2 F
+(;) 276.93 456.67 T
+(/* number of k) 306 456.67 T
+(e) 370.97 456.67 T
+(y descriptions to update */) 375.68 456.67 T
+(int) 126 443.67 T
+1 F
+(map_width) 234 443.67 T
+2 F
+(;) 282.89 443.67 T
+(/* width of core protocol k) 306 443.67 T
+(e) 423.51 443.67 T
+(ymap */) 428.23 443.67 T
+(K) 126 430.67 T
+(e) 133.67 430.67 T
+(ySym *) 138.39 430.67 T
+1 F
+(cor) 234 430.67 T
+(e_k) 248.26 430.67 T
+(e) 263.41 430.67 T
+(ysyms) 267.97 430.67 T
+2 F
+(;) 294.24 430.67 T
+(/* symbols in core protocol k) 306 430.67 T
+(e) 434.52 430.67 T
+(ymap */) 439.24 430.67 T
+(XkbChangesPtr) 126 417.67 T
+1 F
+(c) 234 417.67 T
+(hang) 238.72 417.67 T
+(es) 260.61 417.67 T
+2 F
+(;) 269.77 417.67 T
+(/* back\336lled with changes made to Xkb */) 306 417.67 T
+1 12 Q
+(XkbUpdateMapF) 108 398 T
+(r) 190.66 398 T
+(omCor) 194.78 398 T
+(e) 227.68 398 T
+2 F
+( interprets input argument information representing a keyboard) 233 398 T
+(map in core format to update the Xkb keyboard description passed in) 108 385 T
+1 F
+(xkb) 442.61 385 T
+2 F
+(. Only a portion) 459.26 385 T
+(of the Xkb map is updated \321 the portion corresponding to keys with keycodes in the) 108 372 T
+-0.28 (range) 108 359 P
+1 F
+-0.28 (\336r) 137.38 359 P
+-0.28 (st_k) 147.92 359 P
+-0.28 (e) 167.13 359 P
+-0.28 (y) 172.1 359 P
+2 F
+-0.28 ( through) 177.43 359 P
+1 F
+-0.28 (\336r) 220.21 359 P
+-0.28 (st_k) 230.76 359 P
+-0.28 (e) 249.97 359 P
+-0.28 (y) 254.94 359 P
+2 F
+-0.28 ( +) 260.27 359 P
+1 F
+-0.28 (num_k) 272.48 359 P
+-0.28 (e) 304.35 359 P
+-0.28 (ys) 309.32 359 P
+2 F
+-0.28 ( - 1. If) 319.32 359 P
+1 11 Q
+-0.25 (XkbUpdateMapF) 351.2 359 P
+-0.25 (r) 426.96 359 P
+-0.25 (omCor) 430.75 359 P
+-0.25 (e) 460.9 359 P
+2 12 Q
+-0.28 ( is being called) 465.78 359 P
+(in response to a) 108 346 T
+5 F
+-0.6 (MappingNotify) 185.74 346 S
+2 F
+(event) 274.29 346 T
+1 F
+(, \336r) 300.28 346 T
+(st_k) 316.83 346 T
+(e) 336.04 346 T
+(y) 341.01 346 T
+2 F
+( and) 346.34 346 T
+1 F
+(num_k) 369.67 346 T
+(e) 401.54 346 T
+(ys) 406.51 346 T
+2 F
+( are reported in the) 416.5 346 T
+5 F
+-0.6 (Map-) 510.14 346 S
+-0.6 (pingNotify) 108 333 S
+2 F
+( event.) 174 333 T
+1 F
+(cor) 208.99 333 T
+(e_k) 224.54 333 T
+(e) 241.08 333 T
+(ysyms) 246.05 333 T
+2 F
+( contains the keysyms corresponding to the keycode) 274.7 333 T
+-0.12 (range being updated, in core keyboard description order.) 108 320 P
+1 F
+-0.12 (map_width) 381.62 320 P
+2 F
+-0.12 ( is the number of key-) 434.96 320 P
+(syms per key in) 108 307 T
+1 F
+(cor) 186.66 307 T
+(e_k) 202.21 307 T
+(e) 218.75 307 T
+(ysyms) 223.72 307 T
+2 F
+(. Thus, the first) 252.37 307 T
+1 F
+(map_width) 328.37 307 T
+2 F
+( entries in) 381.71 307 T
+1 F
+(cor) 432.04 307 T
+(e_k) 447.59 307 T
+(e) 464.12 307 T
+(ysyms) 469.09 307 T
+2 F
+( are for) 497.75 307 T
+-0.34 (the key with keycode) 108 294 P
+1 F
+-0.34 (\336r) 211.94 294 P
+-0.34 (st_k) 222.49 294 P
+-0.34 (e) 241.7 294 P
+-0.34 (y) 246.67 294 P
+2 F
+-0.34 (, the next) 252 294 P
+1 F
+-0.34 (map_width) 298.3 294 P
+2 F
+-0.34 ( entries are for key) 351.64 294 P
+1 F
+-0.34 (\336r) 442.89 294 P
+-0.34 (st_k) 453.44 294 P
+-0.34 (e) 472.65 294 P
+-0.34 (y) 477.62 294 P
+2 F
+-0.34 ( + 1, and so) 482.95 294 P
+(on.) 108 281 T
+(In addition to modifying the Xkb keyboard mapping in) 108 260 T
+1 F
+(xkb) 374.99 260 T
+2 F
+(,) 391.64 260 T
+1 F
+(XkbUpdateMapF) 397.64 260 T
+(r) 480.3 260 T
+(omCor) 484.43 260 T
+(e) 517.32 260 T
+2 F
+(backfills the changes structure whose address is passed in) 108 247 T
+1 F
+(c) 387.61 247 T
+(hang) 392.76 247 T
+(es) 416.64 247 T
+2 F
+( to indicate the modifi-) 426.64 247 T
+(cations that were made. You may then use) 108 234 T
+1 F
+(c) 314.29 234 T
+(hang) 319.44 234 T
+(es) 343.32 234 T
+2 F
+( in subsequent calls such as) 353.32 234 T
+1 F
+(XkbSet-) 487.97 234 T
+(Map) 108 221 T
+2 F
+(, to propagate the local modifications to a server.) 130 221 T
+FMENDPAGE
+%%EndPage: "175" 187
+%%Page: "176" 188
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(176) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+2 12 Q
+(When dealing with core keyboard mappings or descriptions, it is sometimes necessary to) 108 712 T
+(determine the Xkb key types appropriate for the symbols bound to a key in a core key-) 108 699 T
+(board mapping. Use) 108 686 T
+1 F
+(XkbKeyTypesForCoreSymbols) 207.98 686 T
+2 F
+( for this purpose:) 355.3 686 T
+2 11 Q
+(int) 108 665.67 T
+3 F
+(XkbK) 122.37 665.67 T
+(eyT) 150.82 665.67 T
+(ypesF) 167.73 665.67 T
+(orCor) 194.96 665.67 T
+(eSymbols) 223.47 665.67 T
+2 F
+(\050) 268.08 665.67 T
+1 F
+(map_width) 271.75 665.67 T
+2 F
+(,) 320.64 665.67 T
+1 F
+( cor) 323.39 665.67 T
+(e_syms) 340.4 665.67 T
+2 F
+(,) 372.17 665.67 T
+1 F
+( pr) 374.92 665.67 T
+(otected, types_inout,) 386.95 665.67 T
+(xkb_syms_rtrn) 252 652.67 T
+2 F
+(\051) 316.77 652.67 T
+(XkbDescPtr) 126 639.67 T
+1 F
+(xkb) 189 639.67 T
+2 F
+(;) 204.27 639.67 T
+(/* k) 261.75 639.67 T
+(e) 278.45 639.67 T
+(yboard description in which to place symbols*/) 283.17 639.67 T
+(int) 126 626.67 T
+1 F
+(map_width) 189 626.67 T
+2 F
+(;) 237.9 626.67 T
+(/* width of core protocol k) 261.75 626.67 T
+(e) 379.26 626.67 T
+(ymap in) 383.98 626.67 T
+1 F
+(xkb_syms_rtrn) 422.48 626.67 T
+2 F
+( */) 487.25 626.67 T
+(K) 126 613.67 T
+(e) 133.67 613.67 T
+(ySym *) 138.39 613.67 T
+1 F
+(cor) 189 613.67 T
+(e_syms) 203.26 613.67 T
+2 F
+(;) 235.02 613.67 T
+(/* core protocol format array of K) 261.75 613.67 T
+(e) 411.15 613.67 T
+(ySyms */) 415.87 613.67 T
+(unsigned int) 126 600.67 T
+1 F
+(pr) 189 600.67 T
+(otected) 198.28 600.67 T
+2 F
+(;) 230.05 600.67 T
+(/* e) 261.75 600.67 T
+(xplicit k) 277.78 600.67 T
+(e) 314.03 600.67 T
+(y types */) 318.75 600.67 T
+(int *) 126 587.67 T
+1 F
+(types_inout;) 189 587.67 T
+2 F
+-0.01 (/* back\336lled with the canonical types bound to groups one and) 261.75 587.67 P
+(tw) 270.75 574.67 T
+(o for the k) 281.64 574.67 T
+(e) 327.05 574.67 T
+(y */) 331.77 574.67 T
+(K) 126 561.67 T
+(e) 133.67 561.67 T
+(ySym *) 138.39 561.67 T
+1 F
+(xkb_syms_rtrn) 189 561.67 T
+2 F
+(;) 253.77 561.67 T
+(/* back\336lled with symbols bound to the k) 261.75 561.67 T
+(e) 444.06 561.67 T
+(y in the Xkb) 448.78 561.67 T
+(mapping */) 273 548.67 T
+1 12 Q
+-0.28 (XkbK) 108 529 P
+-0.28 (e) 134.24 529 P
+-0.28 (yT) 139.21 529 P
+-0.28 (ypesF) 150.32 529 P
+-0.28 (orCor) 177.72 529 P
+-0.28 (eSymbols) 206.62 529 P
+2 F
+-0.28 ( expands the symbols in) 251.94 529 P
+1 F
+-0.28 (cor) 368.87 529 P
+-0.28 (e_syms) 384.42 529 P
+2 F
+-0.28 ( and types in) 419.08 529 P
+1 F
+-0.28 (types_inout) 481.95 529 P
+2 F
+(according to the rules specified in section 12 of the core protocol, then chooses canonical) 108 516 T
+(key types \050canonical key types are defined in section 15.2.1\051 for groups 1 and 2 using the) 108 503 T
+(rules specified by the Xkb protocol and places them in) 108 490 T
+1 F
+(xkb_syms_rtrn) 372.62 490 T
+2 F
+(, which will be) 443.28 490 T
+(non-) 108 477 T
+5 F
+-0.6 (NULL) 130 477 S
+2 F
+(.) 156.4 477 T
+(A core keymap is a two-dimensional array of keysyms. It has) 108 456 T
+1 F
+(map_width) 405.28 456 T
+2 F
+( columns and) 458.62 456 T
+1 F
+(max_k) 108 443 T
+(e) 139.2 443 T
+(y_code) 144.17 443 T
+2 F
+( rows.) 178.15 443 T
+1 F
+(XkbK) 210.48 443 T
+(e) 236.72 443 T
+(yT) 241.69 443 T
+(ypesF) 252.8 443 T
+(orCor) 280.2 443 T
+(eSymbols) 309.1 443 T
+2 F
+( takes a single row from a core key-) 354.42 443 T
+(map, determines the number of groups associated with it, the type of each group, and the) 108 430 T
+(symbols bound to each group. The return value is the number of groups,) 108 417 T
+1 F
+(types_inout) 457.62 417 T
+2 F
+( has) 512.95 417 T
+-0.16 (the types for each group, and) 108 404 P
+1 F
+-0.16 (xkb_syms_rtrn) 249.32 404 P
+2 F
+-0.16 ( has the symbols in Xkb order \050that is, groups) 319.98 404 P
+(are contiguous, regardless of size\051.) 108 391 T
+1 F
+(pr) 108 370 T
+(otected) 118.13 370 T
+2 F
+( contains the explicitly protected key types. There is one explicit override con-) 152.78 370 T
+(trol associated with each of the four possible groups for each Xkb key,) 108 357 T
+5 F
+-0.6 (ExplicitKeyType1) 108 344 S
+2 F
+( through) 213.6 344 T
+5 F
+-0.6 (ExplicitKeyType4) 256.93 344 S
+1 F
+(; pr) 362.54 344 T
+(otected) 379.66 344 T
+2 F
+(is an inclusive OR of) 417.32 344 T
+(these controls.) 108 331 T
+1 F
+(map_width) 180.32 331 T
+2 F
+( is the width of the core keymap and is not dependent on any) 233.66 331 T
+(Xkb definitions.) 108 318 T
+1 F
+(types_inout) 189 318 T
+2 F
+( is an array of four type indices. On input,) 244.33 318 T
+1 F
+(types_inout) 448.3 318 T
+2 F
+( con-) 503.63 318 T
+(tains the indices of any types already assigned to the key, in case they are explicitly pro-) 108 305 T
+(tected from change.) 108 292 T
+(Upon return,) 108 271 T
+1 F
+(types_inout) 172.32 271 T
+2 F
+( contains any automatically selected \050that is, canonical\051 types) 227.65 271 T
+(plus any protected types. Canonical types are assigned to all four groups if there are) 108 258 T
+-0.35 (enough symbols to do so. The four entries in) 108 245 P
+1 F
+-0.35 (types_inout) 322.16 245 P
+2 F
+-0.35 ( correspond to the four groups for) 377.49 245 P
+(the key in question.) 108 232 T
+(If the groups mapping does not change, but the symbols assigned to an Xkb keyboard) 108 211 T
+-0.41 (compatibility map do change, the semantics of the key may be modified. To apply the new) 108 198 P
+(compatibility mapping to an individual key to get its semantics updated, use) 108 185 T
+1 F
+(XkbApply-) 476.33 185 T
+(CompatMapT) 108 172 T
+(oK) 173.57 172 T
+(e) 187.15 172 T
+(y) 192.12 172 T
+2 F
+(.) 197.45 172 T
+2 11 Q
+(Bool) 108 151.67 T
+3 F
+(XkbA) 132.15 151.67 T
+(pplyCompatMapT) 159.99 151.67 T
+(oK) 246.99 151.67 T
+(ey) 260.77 151.67 T
+2 F
+(\050) 271.15 151.67 T
+1 F
+(xkb) 274.82 151.67 T
+2 F
+(,) 290.08 151.67 T
+1 F
+( k) 292.83 151.67 T
+(e) 300.36 151.67 T
+(y) 304.91 151.67 T
+2 F
+(,) 309.08 151.67 T
+1 F
+( c) 311.83 151.67 T
+(hang) 319.3 151.67 T
+(es) 341.19 151.67 T
+2 F
+(\051) 350.35 151.67 T
+( XkbDescPtr) 126 138.67 T
+1 F
+(xkb;) 234 138.67 T
+2 F
+(/* k) 306 138.67 T
+(e) 322.7 138.67 T
+(yboard description to be updated */) 327.42 138.67 T
+( K) 126 125.67 T
+(e) 139.17 125.67 T
+(yCode) 143.89 125.67 T
+1 F
+(k) 234 125.67 T
+(e) 238.77 125.67 T
+(y) 243.33 125.67 T
+2 F
+(;) 248.21 125.67 T
+(/* k) 306 125.67 T
+(e) 322.7 125.67 T
+(y to be updated */) 327.42 125.67 T
+( XkbChangesPtr) 126 112.67 T
+1 F
+(c) 234 112.67 T
+(hang) 238.72 112.67 T
+(es) 260.61 112.67 T
+2 F
+(;) 269.77 112.67 T
+(/* notes changes to the Xkb k) 306 112.67 T
+(e) 436.04 112.67 T
+(yboard description */) 440.76 112.67 T
+1 12 Q
+-0.49 (XkbApplyCompatMapT) 108 93 P
+-0.49 (oK) 220.22 93 P
+-0.49 (e) 233.81 93 P
+-0.49 (y) 238.78 93 P
+2 F
+-0.49 ( essentially performs the operation described in section 17.1.2) 244.1 93 P
+(to a specific key. This updates the behavior, actions, repeat status, and virtual modifier) 108 80 T
+(bindings of the key.) 108 67 T
+FMENDPAGE
+%%EndPage: "176" 188
+%%Page: "177" 189
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(177) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+0 12 Q
+(17.4) 72 712 T
+(Changing the Ser) 108 712 T
+(ver\325) 207.47 712 T
+(s Compatibility Map) 228.1 712 T
+2 F
+(To modify the server\325s compatibility map, first modify a local copy of the Xkb compati-) 108 692 T
+(bility map, then call) 108 679 T
+1 F
+(XkbSetCompatMap) 207 679 T
+2 F
+(. You may allocate a new compatibility map for) 300.32 679 T
+(this purpose using) 108 666 T
+1 F
+(XkbAllocCompatMap) 198.34 666 T
+2 F
+( \050see section 17.6\051. You may also use a compati-) 302.33 666 T
+(bility map from another server, although you need to adjust the) 108 653 T
+1 F
+(device_spec) 413.96 653 T
+2 F
+( field in the) 471.94 653 T
+5 F
+-0.6 (XkbDescRec) 108 640 S
+2 F
+( accordingly. Note that symbol interpretations in a compatibility map) 174 640 T
+(\050) 108 627 T
+1 F
+(sym_interpret) 112 627 T
+2 F
+(, the vector of) 178.66 627 T
+5 F
+-0.6 (XkbSymInterpretRec) 248.3 627 S
+2 F
+( structures\051 are also allocated using) 367.11 627 T
+(this same function.) 108 614 T
+2 11 Q
+(Bool) 108 593.67 T
+3 F
+(XkbSetCompatMap) 132.15 593.67 T
+2 F
+(\050) 226.87 593.67 T
+1 F
+(display) 230.53 593.67 T
+(, whic) 261.7 593.67 T
+(h, xkb, update_actions) 287.82 593.67 T
+2 F
+(\051) 386.81 593.67 T
+(Display *) 126 580.67 T
+1 F
+(display) 234 580.67 T
+2 F
+(;) 265.78 580.67 T
+(/* connection to serv) 306 580.67 T
+(er */) 397.8 580.67 T
+(unsigned int) 126 567.67 T
+1 F
+(whic) 234 567.67 T
+(h) 254.61 567.67 T
+2 F
+(;) 260.11 567.67 T
+(/* mask of compat map components to set */) 306 567.67 T
+(XkbDescPtr) 126 554.67 T
+1 F
+(xkb) 234 554.67 T
+2 F
+(;) 249.27 554.67 T
+(/* source for compat map components */) 306 554.67 T
+(Bool) 126 541.67 T
+1 F
+(update_actions) 234 541.67 T
+2 F
+(;) 301.22 541.67 T
+(/*) 306 541.67 T
+5 12 Q
+-0.6 (True) 317.31 541.67 S
+2 11 Q
+( => apply to serv) 343.71 541.67 T
+(er\325) 418.28 541.67 T
+(s k) 429.88 541.67 T
+(e) 442.3 541.67 T
+(yboard map */) 447.02 541.67 T
+1 12 Q
+(XkbSetCompatMap) 108 522 T
+2 F
+( copies compatibility map information from the keyboard description) 201.32 522 T
+-0.37 (in) 108 509 P
+1 F
+-0.37 (xkb) 119.96 509 P
+2 F
+-0.37 ( to the server specified in) 136.62 509 P
+1 F
+-0.37 (display) 258.37 509 P
+2 F
+-0.37 (\325s compatibility map for the device specified by the) 293.04 509 P
+1 F
+(device_spec) 108 496 T
+2 F
+( field of) 165.97 496 T
+1 F
+(xkb) 206.96 496 T
+2 F
+(. Unless you have specifically modified this field, it is the default) 223.62 496 T
+(keyboard device.) 108 483 T
+1 F
+( whic) 189.97 483 T
+(h) 215.46 483 T
+2 F
+( specifies the compatibility map components to be set, and is an) 221.46 483 T
+(inclusive OR of the bits shown in Table 17.2.) 108 470 T
+(After updating its compatibility map for the specified device, if) 108 449 T
+1 F
+(update_actions) 414.96 449 T
+2 F
+( is) 488.29 449 T
+5 F
+-0.6 (True,) 502.3 449 S
+2 F
+-0.19 (the server applies the new compatibility map to its entire keyboard for the device to gener-) 108 436 P
+(ate a new set of key semantics, compatibility state, and a new core keyboard map. If) 108 423 T
+1 F
+-0.23 (update_actions) 108 410 P
+2 F
+-0.23 ( is) 181.33 410 P
+5 F
+-0.5 -0.6 (False) 194.88 410 B
+2 F
+-0.23 (, the new compatibility map is not used to generate any modifica-) 227.88 410 P
+(tions to the current device semantics, state, or core keyboard map. One reason for not) 108 397 T
+-0.07 (applying the compatibility map immediately would be if one server was being configured) 108 384 P
+(to match another on a piecemeal basis; the map should not be applied until everything is) 108 371 T
+(updated. To force an update at a later time, use) 108 358 T
+1 F
+(XkbSetCompatMap) 335.94 358 T
+2 F
+( specifying) 429.26 358 T
+1 F
+(whic) 485.26 358 T
+(h) 507.74 358 T
+2 F
+( as) 513.74 358 T
+(zero and) 108 345 T
+1 F
+(update_actions) 151.98 345 T
+2 F
+( as) 225.31 345 T
+5 F
+-0.6 (True) 241.31 345 S
+2 F
+(.) 267.71 345 T
+1 F
+-0.36 (XkbSetCompatMap) 108 324 P
+2 F
+-0.36 ( returns) 201.32 324 P
+5 F
+-0.79 -0.6 (True) 239.93 324 B
+2 F
+-0.36 ( if successful and) 266.33 324 P
+5 F
+-0.79 -0.6 (False) 350.87 324 B
+2 F
+-0.36 ( if unsuccessful. The server may) 383.87 324 P
+(report problems it encounters when processing the request subsequently via protocol) 108 311 T
+(errors.) 108 298 T
+-0.16 (To add a symbol interpretation to the list of symbol interpretations in an) 108 277 P
+5 F
+-0.34 -0.6 (XkbCompatRec) 454.95 277 B
+2 F
+-0.16 (,) 534.16 277 P
+(use) 108 264 T
+1 F
+(XkbAddSymInterpret) 127 264 T
+2 F
+(.) 227.64 264 T
+(XkbSymInterpretPtr) 108 243.67 T
+3 11 Q
+(XkbAddSymInter) 208.74 243.67 T
+(pr) 293.58 243.67 T
+(et) 304.39 243.67 T
+2 F
+(\050) 312.93 243.67 T
+1 F
+(xkb, si, updateMap, c) 316.6 243.67 T
+(hang) 410.53 243.67 T
+(es) 432.42 243.67 T
+2 F
+(\051) 441.58 243.67 T
+2 12 Q
+(XkbDescPtr) 126 230.67 T
+1 11 Q
+(xkb) 234 230.67 T
+2 F
+(;) 249.27 230.67 T
+(/* k) 306 230.67 T
+(e) 322.7 230.67 T
+(yboard description to be updated */) 327.42 230.67 T
+2 12 Q
+(XkbSymInterpretPtr) 126 217.67 T
+1 11 Q
+(si) 234 217.67 T
+2 F
+(;) 241.34 217.67 T
+(/* symbol interpretation to be added */) 306 217.67 T
+(Bool) 126 204.67 T
+1 F
+(updateMap) 234 204.67 T
+2 F
+(;) 284.11 204.67 T
+(/*) 306 204.67 T
+5 12 Q
+-0.6 (True) 317.31 204.67 S
+2 11 Q
+(=>apply compatibility map to k) 343.71 204.67 T
+(e) 483.12 204.67 T
+(ys */) 487.84 204.67 T
+2 12 Q
+(XkbChangesPtr) 126 191.67 T
+1 11 Q
+(c) 234 191.67 T
+(hang) 238.72 191.67 T
+(es) 260.61 191.67 T
+2 F
+(;) 269.77 191.67 T
+(/* changes are put here */) 306 191.67 T
+1 12 Q
+(XkbAddSymInterpret) 108 172 T
+2 F
+( adds) 208.64 172 T
+1 F
+(si) 236.64 172 T
+2 F
+( to the list of symbol interpretations in) 244.64 172 T
+1 F
+(xkb) 431.32 172 T
+2 F
+(. If) 447.97 172 T
+1 F
+(updateMap) 464.96 172 T
+2 F
+( is) 519.62 172 T
+5 F
+-0.4 -0.6 (True) 108 159 B
+2 F
+-0.18 (, it \050re\051applies the compatibility map to all of the keys on the keyboard. If) 134.4 159 P
+1 F
+-0.18 (c) 487.33 159 P
+-0.18 (hang) 492.48 159 P
+-0.18 (es) 516.36 159 P
+2 F
+-0.18 ( is) 526.35 159 P
+(non-) 108 146 T
+5 F
+-0.6 (NULL) 130 146 S
+2 F
+(, it reports the parts of the keyboard that were affected \050unless) 156.4 146 T
+1 F
+(updateMap) 456.65 146 T
+2 F
+( is) 511.31 146 T
+5 F
+-0.9 -0.6 (True) 108 133 B
+2 F
+-0.41 (, not much changes\051.) 134.4 133 P
+1 F
+-0.41 (XkbAddSymInterpret) 235.41 133 P
+2 F
+-0.41 ( returns a pointer to the actual new symbol) 336.05 133 P
+(interpretation in the list or) 108 120 T
+5 F
+-0.6 (NULL) 236.33 120 S
+2 F
+( if it failed.) 262.73 120 T
+FMENDPAGE
+%%EndPage: "177" 189
+%%Page: "178" 190
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(178) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+0 12 Q
+(17.5) 72 712 T
+(T) 108 712 T
+(rac) 114.37 712 T
+(king Chang) 132.14 712 T
+(es to the Compatibility Map) 197.6 712 T
+2 F
+-0.04 (The server automatically generates) 108 692 P
+5 F
+-0.09 -0.6 (MappingNotify) 278.46 692 B
+2 F
+-0.04 ( events when the keyboard mapping) 364.26 692 P
+-0.12 (changes. If you wish to be notified of changes to the compatibility map, you should select) 108 679 P
+(for) 108 666 T
+5 F
+-0.6 (XkbCompatMapNotify) 124.99 666 S
+2 F
+( events. If you select for) 243.79 666 T
+5 F
+-0.6 (XkbMapNotify) 362.76 666 S
+2 F
+( events, you no) 441.96 666 T
+(longer receive the automatically generated) 108 653 T
+5 F
+-0.6 (MappingNotify) 314.94 653 S
+2 F
+( events. If you subsequently) 400.74 653 T
+(deselect) 108 640 T
+5 F
+-0.6 (XkbMapNotifyEvent) 149.65 640 S
+2 F
+( delivery, you again receive) 261.85 640 T
+5 F
+-0.6 (MappingNotify) 397.81 640 S
+2 F
+( events.) 483.62 640 T
+(To receive) 108 619 T
+5 F
+-0.6 (XkbCompatMapNotify) 161.98 619 S
+2 F
+( events under all possible conditions, use) 280.78 619 T
+1 F
+(XkbSelect-) 480.1 619 T
+(Events) 108 606 T
+2 F
+( \050see section 4.3\051 and pass) 139.99 606 T
+5 F
+-0.6 (XkbCompatMapNotifyMask) 268.3 606 S
+2 F
+( in both) 413.5 606 T
+1 F
+(bits_to_c) 453.17 606 T
+(hang) 496.99 606 T
+(e) 520.88 606 T
+2 F
+(and) 108 593 T
+1 F
+(values_for_bits) 128.33 593 T
+2 F
+(.) 202.33 593 T
+(To receive) 108 572 T
+5 F
+-0.6 (XkbCompatMapNotify) 161.98 572 S
+2 F
+( events only under certain conditions, use) 280.78 572 T
+1 F
+(XkbSelect-) 482.75 572 T
+(EventDetails) 108 559 T
+2 F
+( using) 169.99 559 T
+5 F
+-0.6 (XkbCompatMapNotify) 202 559 S
+2 F
+( as the) 320.8 559 T
+1 F
+(e) 354.46 559 T
+(vent_type) 359.61 559 T
+2 F
+( and specifying the desired) 405.59 559 T
+(map changes in) 108 546 T
+1 F
+(bits_to_c) 185.65 546 T
+(hang) 229.48 546 T
+(e) 253.36 546 T
+2 F
+( and) 258.68 546 T
+1 F
+(values_for_bits) 282.01 546 T
+2 F
+( using mask bits from Table 17.2.) 356.02 546 T
+-0.43 (Note that you are notified of changes you make yourself, as well as changes made by other) 108 525 P
+(clients.) 108 512 T
+(The structure for the) 108 491 T
+5 F
+-0.6 (XkbCompatMapNotifyEvent) 209.3 491 S
+2 F
+( is:) 361.11 491 T
+2 11 Q
+(typedef struct {) 126 470.67 T
+(int) 144 457.67 T
+(type;) 234 457.67 T
+(/* Xkb e) 306 457.67 T
+(xtension base e) 343.72 457.67 T
+(v) 410.65 457.67 T
+(ent code */) 415.99 457.67 T
+(unsigned long) 144 444.67 T
+(serial;) 234 444.67 T
+(/* X serv) 306 444.67 T
+(er serial number for e) 346.16 444.67 T
+(v) 440.57 444.67 T
+(ent */) 445.91 444.67 T
+(Bool) 144 431.67 T
+(send_e) 234 431.67 T
+(v) 264.27 431.67 T
+(ent;) 269.61 431.67 T
+(/*) 306 431.67 T
+5 12 Q
+-0.6 (True) 317.31 431.67 S
+2 11 Q
+( => synthetically generated */) 343.71 431.67 T
+(Display *) 144 418.67 T
+(display;) 234 418.67 T
+(/* serv) 306 418.67 T
+(er connection where e) 335.47 418.67 T
+(v) 432.02 418.67 T
+(ent generated */) 437.35 418.67 T
+(T) 144 405.67 T
+(ime) 150.34 405.67 T
+(time;) 234 405.67 T
+(/* serv) 306 405.67 T
+(er time when e) 335.47 405.67 T
+(v) 400.26 405.67 T
+(ent generated */) 405.59 405.67 T
+(int) 144 392.67 T
+(xkb_type;) 234 392.67 T
+(/*) 306 392.67 T
+5 F
+-0.33 (XkbCompatMapNotify) 317.31 392.67 S
+2 F
+( */) 430.17 392.67 T
+(int) 144 379.67 T
+(de) 234 379.67 T
+(vice;) 244.11 379.67 T
+(/* Xkb de) 306 379.67 T
+(vice ID, will not be) 349.11 379.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 437.1 379.67 S
+2 F
+( */) 518.61 379.67 T
+(unsigned int) 144 366.67 T
+(changed_groups;) 234 366.67 T
+(/* number of group maps changed */) 309.15 366.67 T
+(int) 144 353.67 T
+(\336rst_si;) 234 353.67 T
+(/* inde) 306 353.67 T
+(x to 1st changed symbol interpretation */) 336.08 353.67 T
+(int) 144 340.67 T
+(num_si;) 234 340.67 T
+(/* number of changed symbol interpretations */) 306 340.67 T
+(int) 144 327.67 T
+(num_total_si;) 234 327.67 T
+(/* total number of v) 306 327.67 T
+(alid symbol interpretations */) 393.11 327.67 T
+(}) 126 314.67 T
+3 F
+(XkbCompatMapNotifyEv) 134.03 314.67 T
+(ent) 256.14 314.67 T
+2 F
+(;) 270.8 314.67 T
+1 12 Q
+-0.07 (changed_groups) 108 295 P
+2 F
+-0.07 ( is the number of group compatibility maps that have changed. If you are) 187.99 295 P
+(maintaining a corresponding copy of the compatibility map, or get a fresh copy from the) 108 282 T
+(server using) 108 269 T
+1 F
+(XkbGetCompatMap) 169.32 269 T
+2 F
+(,) 265.31 269 T
+1 F
+(c) 271.31 269 T
+(hang) 276.46 269 T
+(ed_gr) 300.34 269 T
+(oups) 327.79 269 T
+2 F
+( references) 350.46 269 T
+1 F
+(groups) 108 256 T
+2 F
+([0..) 141.34 256 T
+1 F
+(changed_groups) 157.33 256 T
+2 F
+(-1] in the) 237.32 256 T
+5 F
+-0.6 (XkbCompatMapRec) 284.32 256 S
+2 F
+( structure.) 383.32 256 T
+1 F
+(first_si) 108 235 T
+2 F
+( is the index of the first changed symbol interpretation,) 141.35 235 T
+1 F
+(num_si) 407.65 235 T
+2 F
+( is the number of) 442.32 235 T
+(changed symbol interpretations, and) 108 222 T
+1 F
+(num_total_si) 284.98 222 T
+2 F
+( is the total number of valid symbol) 347.65 222 T
+(interpretations. If you are maintaining a corresponding copy of the compatibility map, or) 108 209 T
+(get a fresh copy from the server using) 108 196 T
+1 F
+(XkbGetCompatMap) 292.62 196 T
+2 F
+(,) 388.61 196 T
+1 F
+(first_si) 394.61 196 T
+2 F
+(,) 427.96 196 T
+1 F
+(num_si) 433.96 196 T
+2 F
+(, and) 468.62 196 T
+1 F
+(num_total_si) 108 183 T
+2 F
+( are appropriate for use with the) 170.68 183 T
+1 F
+(compat.sym_interpret) 326.96 183 T
+2 F
+( vector in this struc-) 431.95 183 T
+(ture.) 108 170 T
+FMENDPAGE
+%%EndPage: "178" 190
+%%Page: "179" 191
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(179) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(17 The Xkb Compatibility Map) 395.16 744.87 T
+0 12 Q
+(17.6) 72 712 T
+(Allocating and Freeing the Compatibility Map) 108 712 T
+2 F
+-0.22 (If you are modifying the compatibility map, you need to allocate a new compatibility map) 108 692 P
+(if you do not already have one available. To do so, use) 108 679 T
+1 F
+(XkbAllocCompatMap) 373.28 679 T
+2 F
+(.) 477.28 679 T
+2 11 Q
+(Status) 108 658.67 T
+3 F
+(XkbAllocCompatMap) 137.65 658.67 T
+2 F
+(\050) 242.15 658.67 T
+1 F
+(xkb, whic) 245.81 658.67 T
+(h, num_si) 287.19 658.67 T
+2 F
+(\051) 329.97 658.67 T
+(XkbDescPtr) 126 645.67 T
+1 F
+(xkb) 189 645.67 T
+2 F
+(;) 204.27 645.67 T
+(/* k) 252 645.67 T
+(e) 268.7 645.67 T
+(yboard description in which to allocate compat map */) 273.42 645.67 T
+(unsigned int) 126 632.67 T
+1 F
+(whic) 189 632.67 T
+(h) 209.61 632.67 T
+2 F
+(;) 215.11 632.67 T
+(/* mask of compatibility map components to allocate */) 252 632.67 T
+(unsigned int) 126 619.67 T
+1 F
+(num_si) 189 619.67 T
+2 F
+(;) 220.78 619.67 T
+(/* number of symbol interpretations to allocate */) 252 619.67 T
+1 12 Q
+(xkb) 108 600 T
+2 F
+( specifies the keyboard description for which compatibility maps are to be allocated.) 124.66 600 T
+(The compatibility map is the) 108 587 T
+1 F
+(compat) 249 587 T
+2 F
+( field in this structure.) 284.33 587 T
+1 F
+(whic) 108 566 T
+(h) 130.49 566 T
+2 F
+( specifies the compatibility map components to be allocated \050see) 136.49 566 T
+1 F
+(XkbGetCompat-) 449.11 566 T
+(Map) 108 553 T
+2 F
+(, in section 17.2\051.) 130 553 T
+1 F
+(whic) 216.32 553 T
+(h) 238.81 553 T
+2 F
+( is an inclusive OR of the bits shown in Table 17.2.) 244.81 553 T
+1 F
+-0.14 (num_si) 108 532 P
+2 F
+-0.14 ( specifies the total number of entries to allocate in the symbol interpretation vector) 142.67 532 P
+(\050) 108 519 T
+1 F
+(xkb) 112 519 T
+(.compat.sym_interpr) 128.17 519 T
+(et) 227.05 519 T
+2 F
+(\051.) 235.72 519 T
+-0.09 (Note that symbol interpretations in a compatibility map \050the) 108 498 P
+1 F
+-0.09 (sym_interpret) 398.21 498 P
+2 F
+-0.09 ( vector of) 464.87 498 P
+5 F
+-0.19 -0.6 (Xkb-) 513.6 498 B
+-0.85 -0.6 (SymInterpretRec) 108 485 B
+2 F
+-0.38 ( structures\051 are also allocated using this same function. To ensure that) 207 485 P
+(there is sufficient space in the symbol interpretation vector for entries to be added, use) 108 472 T
+1 F
+(XkbAllocCompatMap) 108 459 T
+2 F
+( specifying) 211.99 459 T
+1 F
+(whic) 267.98 459 T
+(h) 290.47 459 T
+2 F
+( as) 296.47 459 T
+5 F
+-0.6 (XkbSymInterpretMask) 312.47 459 S
+2 F
+( and the number of) 437.87 459 T
+(free symbol interpretations needed in) 108 446 T
+1 F
+(num_si) 289.63 446 T
+2 F
+(.) 324.3 446 T
+1 F
+(XkbAllocCompatMap) 108 425 T
+2 F
+( returns) 211.99 425 T
+5 F
+-0.6 (Success) 251.32 425 S
+2 F
+( if successful,) 297.52 425 T
+5 F
+-0.6 (BadMatch) 366.17 425 S
+2 F
+( if) 418.97 425 T
+1 F
+(xkb) 432.3 425 T
+2 F
+( is) 448.96 425 T
+5 F
+-0.6 (NULL) 462.96 425 S
+2 F
+(, or) 489.36 425 T
+5 F
+-0.6 (Bad-) 508.36 425 S
+-0.6 (Alloc) 108 412 S
+2 F
+( if errors are encountered when attempting to allocate storage.) 141 412 T
+(To free an entire compatibility map or selected portions of one, use) 108 391 T
+1 F
+(XkbF) 433.61 391 T
+(r) 458.94 391 T
+(eeCompatMap) 463.16 391 T
+2 F
+(.) 533.82 391 T
+2 11 Q
+(v) 108 370.67 T
+(oid) 113.28 370.67 T
+3 F
+(XkbFr) 130.09 370.67 T
+(eeCompatMap) 161.67 370.67 T
+2 F
+(\050) 231.32 370.67 T
+1 F
+(xkb, whic) 234.98 370.67 T
+(h, fr) 276.37 370.67 T
+(ee_map) 294.3 370.67 T
+2 F
+(\051) 328.51 370.67 T
+(XkbDescPtr) 126 357.67 T
+1 F
+(xkb) 189 357.67 T
+2 F
+(;) 204.27 357.67 T
+(/* Xkb description in which to free compatibility map */) 252 357.67 T
+(unsigned int) 126 344.67 T
+1 F
+(whic) 189 344.67 T
+(h) 209.61 344.67 T
+2 F
+(;) 215.11 344.67 T
+(/* mask of compatibility map components to free */) 252 344.67 T
+(Bool) 126 331.67 T
+1 F
+(fr) 189 331.67 T
+(ee_map) 195.93 331.67 T
+2 F
+(;) 230.14 331.67 T
+(/*) 252 331.67 T
+5 12 Q
+-0.6 (True) 263.31 331.67 S
+2 11 Q
+( => free) 289.71 331.67 T
+5 F
+-0.33 (XkbCompatMap) 327.46 331.67 S
+2 F
+( structure itself */) 402.7 331.67 T
+1 12 Q
+-0.4 (whic) 108 312 P
+-0.4 (h) 130.49 312 P
+2 F
+-0.4 ( specifies the compatibility map components to be freed \050see) 136.49 312 P
+1 F
+-0.4 (XkbGetCompatMap) 426.47 312 P
+2 F
+-0.4 (, in) 522.46 312 P
+(section 17.2\051.) 108 299 T
+1 F
+(whic) 175.99 299 T
+(h) 198.48 299 T
+2 F
+( is an inclusive OR of the bits shown in Table 17.2) 204.48 299 T
+1 F
+(fr) 108 278 T
+(ee_map) 115.56 278 T
+2 F
+( indicates whether the) 152.88 278 T
+5 F
+-0.6 (XkbCompatMap) 260.86 278 S
+2 F
+( structure itself should be freed. If) 340.06 278 T
+1 F
+(fr) 108 265 T
+(ee_map) 115.56 265 T
+2 F
+( is) 152.88 265 T
+5 F
+-0.6 (True) 166.88 265 S
+2 F
+(,) 193.29 265 T
+1 F
+(whic) 199.29 265 T
+(h) 221.77 265 T
+2 F
+( is ignored, all non-) 227.77 265 T
+5 F
+-0.6 (NULL) 321.43 265 S
+2 F
+( compatibility map components are) 347.83 265 T
+(freed, and the) 108 252 T
+1 F
+(compat) 176.64 252 T
+2 F
+( field in the) 211.97 252 T
+5 F
+-0.6 (XkbDescRec) 269.96 252 S
+2 F
+( referenced by) 335.96 252 T
+1 F
+(xkb) 407.59 252 T
+2 F
+( is set to) 424.25 252 T
+5 F
+-0.6 (NULL) 466.92 252 S
+2 F
+(.) 493.32 252 T
+FMENDPAGE
+%%EndPage: "179" 191
+%%Page: "180" 192
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(180) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(18 Symbolic Names) 445.28 744.87 T
+0 14 Q
+(18) 72 710.67 T
+(Symbolic Names) 108 710.67 T
+2 12 Q
+-0.28 (The core protocol does not provide any information to clients other than that actually used) 108 688 P
+(to interpret events. This makes it difficult to write an application that presents the key-) 108 675 T
+(board to a user in an easy-to-understand way. Such applications have to examine the ven-) 108 662 T
+(dor string and keycodes to determine the type of keyboard connected to the server and) 108 649 T
+(then examine keysyms and modifier mappings to determine the effects of most modifiers) 108 636 T
+-0.04 (\050the) 108 623 P
+5 F
+-0.08 -0.6 (Shift) 129.62 623 B
+2 F
+-0.04 (,) 162.62 623 P
+5 F
+-0.08 -0.6 (Lock) 168.59 623 B
+2 F
+-0.04 ( and) 194.99 623 P
+5 F
+-0.08 -0.6 (Control) 218.24 623 B
+2 F
+-0.04 ( modifiers are defined by the core protocol but no seman-) 264.44 623 P
+(tics are implied for any other modifiers\051.) 108 610 T
+(To make it easier for applications to present a keyboard to the user, Xkb supports sym-) 108 589 T
+(bolic names for most components of the keyboard extension. Most of these symbolic) 108 576 T
+(names are grouped into the) 108 563 T
+1 F
+(names) 240.97 563 T
+2 F
+( component of the keyboard description.) 271.63 563 T
+0 F
+(18.1) 72 538 T
+(The XkbNamesRec Structure) 108 538 T
+2 F
+(The names component of the keyboard description is defined as follows:) 108 518 T
+2 11 Q
+(#de\336ne) 108 492.67 T
+(XkbK) 162 492.67 T
+(e) 188.61 492.67 T
+(yNameLength) 193.33 492.67 T
+(4) 306 492.67 T
+(#de\336ne) 108 479.67 T
+(XkbK) 162 479.67 T
+(e) 188.61 479.67 T
+(yNumV) 193.33 479.67 T
+(irtualMods) 228.11 479.67 T
+(16) 306 479.67 T
+(#de\336ne) 108 466.67 T
+(XkbK) 162 466.67 T
+(e) 188.61 466.67 T
+(yNumIndicators) 193.33 466.67 T
+(32) 306 466.67 T
+(#de\336ne) 108 453.67 T
+(XkbK) 162 453.67 T
+(e) 188.61 453.67 T
+(yNumKbdGroups) 193.33 453.67 T
+(4) 306 453.67 T
+(#de\336ne) 108 440.67 T
+(XkbMaxRadioGroups) 162 440.67 T
+(32) 306 440.67 T
+(typedef struct {) 108 420.67 T
+(char) 126 407.67 T
+(name[XkbK) 207 407.67 T
+(e) 261.1 407.67 T
+(yNameLength];) 265.82 407.67 T
+(/* symbolic k) 342 407.67 T
+(e) 401.79 407.67 T
+(y names */) 406.5 407.67 T
+(}) 108 394.67 T
+3 F
+(XkbK) 116.03 394.67 T
+(eyNameRec) 144.49 394.67 T
+2 F
+(,*XkbK) 200.07 394.67 T
+(e) 234.93 394.67 T
+(yNamePtr;) 239.65 394.67 T
+(typedef struct {) 108 374.67 T
+(char) 126 361.67 T
+(real[XkbK) 207 361.67 T
+(e) 253.76 361.67 T
+(yNameLength];) 258.48 361.67 T
+(/* this k) 342 361.67 T
+(e) 377.34 361.67 T
+(y name must be in the k) 382.06 361.67 T
+(e) 487.06 361.67 T
+(ys array */) 491.78 361.67 T
+(char) 126 348.67 T
+(alias[XkbK) 207 348.67 T
+(e) 257.43 348.67 T
+(yNameLength];) 262.15 348.67 T
+(/* symbolic k) 342 348.67 T
+(e) 401.79 348.67 T
+(y name as alias for the k) 406.5 348.67 T
+(e) 513.31 348.67 T
+(y */) 518.03 348.67 T
+(}) 108 335.67 T
+3 F
+(XkbK) 116.03 335.67 T
+(eyAliasRec) 144.49 335.67 T
+2 F
+(,*XkbK) 196.42 335.67 T
+(e) 231.28 335.67 T
+(yAliasPtr;) 236 335.67 T
+(typedef struct _XkbNamesRec {) 108 315.67 T
+(Atom) 126 302.67 T
+(k) 207 302.67 T
+(e) 212.39 302.67 T
+(ycodes;) 217.11 302.67 T
+(/* identi\336es range and meaning of k) 279 302.67 T
+(e) 437.15 302.67 T
+(ycodes */) 441.87 302.67 T
+(Atom) 126 289.67 T
+(geometry;) 207 289.67 T
+(/* identi\336es ph) 279 289.67 T
+(ysical location, size, and shape of k) 344.34 289.67 T
+(e) 500.03 289.67 T
+(ys */) 504.75 289.67 T
+(Atom) 126 276.67 T
+(symbols;) 207 276.67 T
+(/*) 279 276.67 T
+2 12 Q
+(identifies the symbols logically bound to the keys) 290.31 276.67 T
+2 11 Q
+( */) 528.64 276.67 T
+(Atom) 126 263.67 T
+(types;) 207 263.67 T
+(/*) 279 263.67 T
+2 12 Q
+(identifies the set of key types */) 290.31 263.67 T
+2 11 Q
+(Atom) 126 250.67 T
+(compat;) 207 250.67 T
+(/*) 279 250.67 T
+2 12 Q
+(identifies actions for keys using core protocol */) 290.31 250.67 T
+2 11 Q
+(Atom) 126 237.67 T
+(vmods[XkbNumV) 207 237.67 T
+(irtualMods];) 288.22 237.67 T
+(/*) 345.97 237.67 T
+2 12 Q
+(symbolic names) 357.28 237.67 T
+2 11 Q
+( for virtual modi\336ers */) 434.95 237.67 T
+(Atom) 126 224.67 T
+(indicators[XkbNumIndicators];) 207 224.67 T
+(/*) 348.45 224.67 T
+2 12 Q
+(symbolic names) 359.76 224.67 T
+2 11 Q
+( for indicators */) 437.42 224.67 T
+(Atom) 126 211.67 T
+(groups[XkbNumKbdGroups];) 207 211.67 T
+-0.61 (/*) 342.34 211.67 P
+2 12 Q
+-0.67 (symbolic names for keyboard groups */) 353.04 211.67 P
+2 11 Q
+(XkbK) 126 198.67 T
+(e) 152.61 198.67 T
+(yNamePtr) 157.33 198.67 T
+(k) 207 198.67 T
+(e) 212.39 198.67 T
+(ys;) 217.11 198.67 T
+(/*) 279 198.67 T
+2 12 Q
+(symbolic key name) 290.31 198.67 T
+(array) 386.38 198.67 T
+2 11 Q
+(*/) 414.03 198.67 T
+(XkbK) 126 185.67 T
+(e) 152.61 185.67 T
+(yAliasPtr) 157.33 185.67 T
+(k) 207 185.67 T
+(e) 212.39 185.67 T
+(y_aliases;) 217.11 185.67 T
+(/* real/alias symbolic name pairs array */) 279 185.67 T
+(Atom *) 126 172.67 T
+(radio_groups;) 207 172.67 T
+(/* radio group name array */) 279 172.67 T
+(Atom) 126 159.67 T
+(ph) 207 159.67 T
+(ys_symbols;) 217.95 159.67 T
+(/*) 279 159.67 T
+2 12 Q
+(identifies the symbols engraved on the keyboard) 290.31 159.67 T
+2 11 Q
+( */) 522.94 159.67 T
+(unsigned char) 126 146.67 T
+(num_k) 207 146.67 T
+(e) 237.45 146.67 T
+(ys;) 242.17 146.67 T
+(/* number of k) 279 146.67 T
+(e) 343.97 146.67 T
+(ys in the) 348.68 146.67 T
+1 12 Q
+(k) 388.71 146.67 T
+(e) 393.92 146.67 T
+(ys) 398.89 146.67 T
+2 11 Q
+( array */) 408.89 146.67 T
+(unsigned char) 126 133.67 T
+(num_k) 207 133.67 T
+(e) 237.45 133.67 T
+(y_aliases;) 242.17 133.67 T
+(/* number of k) 285.55 133.67 T
+(e) 350.52 133.67 T
+(ys in the) 355.24 133.67 T
+1 12 Q
+(k) 395.27 133.67 T
+(e) 400.47 133.67 T
+(y_aliases) 405.44 133.67 T
+2 11 Q
+( array */) 450.11 133.67 T
+(unsigned short) 126 120.67 T
+(num_r) 207 120.67 T
+(g;) 235.52 120.67 T
+(/* number of radio groups */) 279 120.67 T
+(}) 108 107.67 T
+3 F
+(XkbNamesRec) 116.03 107.67 T
+2 F
+(,*XkbNamesPtr;) 185.68 107.67 T
+(/*) 259.32 107.67 T
+2 12 Q
+(The) 108 88 T
+1 F
+(keycodes) 129.66 88 T
+2 F
+( name identifies the range and meaning of the keycodes returned by the key-) 172.97 88 T
+-0.09 (board in question. The) 108 75 P
+1 F
+-0.09 (geometry) 218.62 75 P
+2 F
+-0.09 ( name, on the other hand, identifies the physical location,) 263.28 75 P
+FMENDPAGE
+%%EndPage: "180" 192
+%%Page: "181" 193
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(181) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(18 Symbolic Names) 445.28 744.87 T
+2 12 Q
+-0.18 (size and shape of the various keys on the keyboard. As an example to distinguish between) 108 712 P
+(these two names, consider function keys on PC-compatible keyboards. Function keys are) 108 699 T
+(sometimes above the main keyboard and sometimes to the left of the main keyboard, but) 108 686 T
+(the same keycode is used for the key that is logically F1 regardless of physical position.) 108 673 T
+-0.15 (Thus, all PC-compatible keyboards share a similar keycodes name but may have different) 108 660 P
+(geometry names.) 108 647 T
+0 F
+(Note) 126 626.67 T
+2 11 Q
+(The k) 162 626.67 T
+(e) 187.24 626.67 T
+(ycodes name is intended to be a v) 191.96 626.67 T
+(ery general description of the k) 339.97 626.67 T
+(e) 477.02 626.67 T
+(ycodes) 481.74 626.67 T
+-0.16 (returned by a k) 162 614.67 P
+-0.16 (e) 227.68 614.67 P
+-0.16 (yboard; a single k) 232.4 614.67 P
+-0.16 (e) 310.32 614.67 P
+-0.16 (ycodes name might co) 315.04 614.67 P
+-0.16 (v) 413.07 614.67 P
+-0.16 (er k) 418.4 614.67 P
+-0.16 (e) 434.92 614.67 P
+-0.16 (yboards with dif) 439.64 614.67 P
+-0.16 (fering) 511.14 614.67 P
+(numbers of k) 162 602.67 T
+(e) 219.94 602.67 T
+(ys pro) 224.66 602.67 T
+(vided all k) 251.68 602.67 T
+(e) 298.02 602.67 T
+(ys ha) 302.73 602.67 T
+(v) 325.43 602.67 T
+(e the same semantics when present. F) 330.76 602.67 T
+(or e) 495.87 602.67 T
+(xam-) 512.5 602.67 T
+(ple, 101 and 102 k) 162 590.67 T
+(e) 243.47 590.67 T
+(y PC k) 248.18 590.67 T
+(e) 278.03 590.67 T
+(yboards might use the same name. In these cases, applica-) 282.75 590.67 T
+(tions can use the k) 162 578.67 T
+(e) 243.16 578.67 T
+(yboard) 247.88 578.67 T
+1 F
+(geometry) 281.17 578.67 T
+2 F
+( name to determine which subset of the named) 322.11 578.67 T
+(k) 162 566.67 T
+(e) 167.39 566.67 T
+(ycodes is in use.) 172.11 566.67 T
+2 12 Q
+(The) 108 546 T
+1 F
+(symbols) 129.66 546 T
+2 F
+( name identifies the symbols logically bound to the keys. The symbols name) 168.32 546 T
+(is a human or application-readable description of the intended locale or usage of the key-) 108 533 T
+(board with these symbols. The) 108 520 T
+1 F
+(phys_symbols) 257.99 520 T
+2 F
+( name, on the other hand, identifies the sym-) 324.65 520 T
+(bols actually engraved on the keyboard. Given this, the) 108 507 T
+1 F
+(symbols) 375.62 507 T
+2 F
+( name and) 414.29 507 T
+1 F
+(phys_symbols) 466.61 507 T
+2 F
+-0.37 (names might be different. For example, the description for a keyboard that has English US) 108 494 P
+(engravings, but that is using Swiss German symbols might have a) 108 481 T
+1 F
+(phys_symbols) 426.66 481 T
+2 F
+( name of) 493.32 481 T
+(\322en_US\323 and a) 108 468 T
+1 F
+(symbols) 182.98 468 T
+2 F
+( name of \322de_CH.\323) 221.64 468 T
+(The) 108 447 T
+1 F
+(types) 129.66 447 T
+2 F
+( name provides some information about the set of key types \050see section 15.2\051) 154.32 447 T
+-0.07 (that can be associated with the keyboard. In addition, each key type can have a name, and) 108 434 P
+(each shift level of a type can have a name. Although these names are stored in the map) 108 421 T
+(description with each of the types, they are accessed using the same methods as the other) 108 408 T
+(symbolic names.) 108 395 T
+(The) 108 374 T
+1 F
+(compat) 129.66 374 T
+2 F
+( name provides some information about the rules used to bind actions to keys) 164.99 374 T
+(that are changed using core protocol requests.) 108 361 T
+-0.06 (Xkb provides symbolic names for each of the 4 keyboard groups, 16 virtual modifiers, 32) 108 340 P
+(keyboard indicators, and 4 keyboard groups. These names are held in the) 108 327 T
+1 F
+(vmods) 461.26 327 T
+2 F
+(,) 491.92 327 T
+1 F
+(indica-) 497.92 327 T
+(tors) 108 314 T
+2 F
+(, and) 126.67 314 T
+1 F
+(groups) 153 314 T
+2 F
+( fixed-length arrays.) 186.34 314 T
+(Each key has a four-byte symbolic name. All of the symbolic key names are held in the) 108 293 T
+1 F
+-0.21 (keys) 108 280 P
+2 F
+-0.21 ( array, and) 128.65 280 P
+1 F
+-0.21 (num_keys) 182.01 280 P
+2 F
+-0.21 ( reports the number of entries that are in the keys array. For each) 229.32 280 P
+(key, the key name links keys with similar functions or in similar positions on keyboards) 108 267 T
+(that report different keycodes. For example, the) 108 254 T
+4 11 Q
+(F1) 339.61 254 T
+2 12 Q
+( key may emit keycode 23 on one key-) 352.45 254 T
+(board and keycode 86 on another. By naming this key \322FK01\323 on both keyboards, the) 108 241 T
+-0.17 (keyboard layout designer can reuse parts of keyboard descriptions for different keyboards.) 108 228 P
+(Key aliases allow the keyboard layout designer to assign multiple key names to a single) 108 207 T
+-0.39 (key. This allows the keyboard layout designer to refer to keys using either their position or) 108 194 P
+(their \322function.\323 For example, a keyboard layout designer may wish to refer to the left) 108 181 T
+-0.29 (arrow key on a PC keyboard using the ISO9995-5 positional specification of A31 or using) 108 168 P
+(the functional specification of LEFT. The) 108 155 T
+1 F
+(key_aliases) 310.97 155 T
+2 F
+( field holds a variable-length array) 366.29 155 T
+-0.16 (of real and alias key name pairs, and the total number of entries in the) 108 142 P
+1 F
+-0.16 (key_aliases) 443.51 142 P
+2 F
+-0.16 ( array is) 498.83 142 P
+-0.13 (held in) 108 129 P
+1 F
+-0.13 (num_key_aliases) 143.74 129 P
+2 F
+-0.13 (. For each real and alias key name pair, the) 225.72 129 P
+1 F
+-0.13 (real) 433.02 129 P
+2 F
+-0.13 ( field refers to the) 452.35 129 P
+(a name in the keys array, and the) 108 116 T
+1 F
+(alias) 268.96 116 T
+2 F
+( field refers to the alias for that key. Using the pre-) 292.3 116 T
+(vious example, the keyboard designer may use the name A31 in the keys array, but also) 108 103 T
+(define the name LEFT as an alias for A31 in the) 108 90 T
+1 F
+(key_aliases) 342.29 90 T
+2 F
+( array.) 397.61 90 T
+FMENDPAGE
+%%EndPage: "181" 193
+%%Page: "182" 194
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(182) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(18 Symbolic Names) 445.28 744.87 T
+0 12 Q
+(Note) 126 712.67 T
+2 11 Q
+(K) 162 712.67 T
+(e) 169.67 712.67 T
+(y aliases de\336ned in the geometry component of a k) 174.39 712.67 T
+(e) 398.21 712.67 T
+(yboard mapping \050see Chapter) 402.93 712.67 T
+(13\051 o) 162 700.67 T
+(v) 184.75 700.67 T
+(erride those de\336ned in the k) 190.08 700.67 T
+(e) 312.48 700.67 T
+(ycodes component of the serv) 317.2 700.67 T
+(er database, which) 448.4 700.67 T
+(are stored in the) 162 688.67 T
+5 12 Q
+-0.6 (XkbNamesRec) 235.32 688.67 S
+2 11 Q
+( \050) 307.92 688.67 T
+1 12 Q
+(xkb->names) 314.33 688.67 T
+2 11 Q
+(\051. Therefore, consider the k) 373.74 688.67 T
+(e) 493.37 688.67 T
+(y aliases) 498.08 688.67 T
+(de\336ned by the geometry before considering k) 162 676.67 T
+(e) 361.68 676.67 T
+(y aliases supplied by the) 366.4 676.67 T
+5 12 Q
+-0.6 (XkbNames-) 476.7 676.67 S
+-0.6 (Rec) 162 664.67 S
+2 11 Q
+(.) 181.8 664.67 T
+2 12 Q
+-0.14 (A radio group is a set of keys whose behavior simulates a set of radio buttons. Once a key) 108 644 P
+(in a radio group is pressed, it stays logically depressed until another key in the group is) 108 631 T
+(pressed, at which point the previously depressed key is logically released. Consequently,) 108 618 T
+(at most one key in a radio group can be logically depressed at one time.) 108 605 T
+(Each radio group in the keyboard description can have a name. These names are held in) 108 584 T
+(the variable-length array) 108 571 T
+1 F
+(radio_groups) 228.96 571 T
+2 F
+(, and) 294.3 571 T
+1 F
+(num_rg) 320.63 571 T
+2 F
+( tells how many elements are in the) 357.96 571 T
+1 F
+(radio_groups) 108 558 T
+2 F
+( array.) 173.34 558 T
+0 F
+(18.2) 72 533 T
+(Symbolic Names Masks) 108 533 T
+2 F
+(Xkb provides several functions that work with symbolic names. Each of these functions) 108 513 T
+(uses a mask to specify individual fields of the structures described above. These masks) 108 500 T
+(and their relationships to the fields in a keyboard description are shown in Table 18.1.) 108 487 T
+3 F
+(T) 241.47 467 T
+(able 18.1 Symbolic Names Masks) 248.37 467 T
+1 F
+(Mask Bit) 109 440 T
+(V) 268.75 440 T
+(alue) 274.75 440 T
+(K) 321.25 447 T
+(e) 328.83 447 T
+(yboar) 333.8 447 T
+(d) 361.35 447 T
+(Component) 321.25 433 T
+(F) 392.5 440 T
+(ield) 399.29 440 T
+2 11 Q
+(XkbK) 109 418.67 T
+(e) 135.61 418.67 T
+(ycodesNameMask) 140.33 418.67 T
+(\0501<<0\051) 268.75 418.67 T
+(Xkb->names) 321.25 418.67 T
+(k) 392.5 418.67 T
+(e) 397.89 418.67 T
+(ycodes) 402.61 418.67 T
+(XkbGeometryNameMask) 109 404.67 T
+(\0501<<1\051) 268.75 404.67 T
+(Xkb->names) 321.25 404.67 T
+(geometry) 392.5 404.67 T
+(XkbSymbolsNameMask) 109 390.67 T
+(\0501<<2\051) 268.75 390.67 T
+(Xkb->names) 321.25 390.67 T
+(symbols) 392.5 390.67 T
+(XkbPh) 109 376.67 T
+(ysSymbolsNameMask) 139.5 376.67 T
+(\0501<<3\051) 268.75 376.67 T
+(Xkb->names) 321.25 376.67 T
+(ph) 392.5 376.67 T
+(ys_symbols) 403.45 376.67 T
+(XkbT) 109 362.67 T
+(ypesNameMask) 133.78 362.67 T
+(\0501<<4\051) 268.75 362.67 T
+(Xkb->names) 321.25 362.67 T
+(type) 392.5 362.67 T
+(XkbCompatNameMask) 109 348.67 T
+(\0501<<5\051) 268.75 348.67 T
+(Xkb->names) 321.25 348.67 T
+(compat) 392.5 348.67 T
+(XkbK) 109 334.67 T
+(e) 135.61 334.67 T
+(yT) 140.33 334.67 T
+(ypeNamesMask) 151.67 334.67 T
+(\0501<<6\051) 268.75 334.67 T
+(Xkb->map) 321.25 334.67 T
+(type[*].name) 392.5 334.67 T
+(XkbKTLe) 109 320.67 T
+(v) 153.93 320.67 T
+(elNamesMask) 159.27 320.67 T
+(\0501<<7\051) 268.75 320.67 T
+(Xkb->map) 321.25 320.67 T
+(type[*].lvl_names[*]) 392.5 320.67 T
+(XkbIndicatorNamesMask) 109 306.67 T
+(\0501<<8\051) 268.75 306.67 T
+(Xkb->names) 321.25 306.67 T
+(indicators[*]) 392.5 306.67 T
+(XkbK) 109 292.67 T
+(e) 135.61 292.67 T
+(yNamesMask) 140.33 292.67 T
+(\0501<<9\051) 268.75 292.67 T
+(Xkb->names) 321.25 292.67 T
+(k) 392.5 292.67 T
+(e) 397.89 292.67 T
+(ys[*], num_k) 402.61 292.67 T
+(e) 461.16 292.67 T
+(ys) 465.88 292.67 T
+(XkbK) 109 278.67 T
+(e) 135.61 278.67 T
+(yAliasesMask) 140.33 278.67 T
+(\0501<<10\051) 268.75 278.67 T
+(Xkb->names) 321.25 278.67 T
+(k) 392.5 278.67 T
+(e) 397.89 278.67 T
+(y_aliases[*], num_k) 402.61 278.67 T
+(e) 491.71 278.67 T
+(y_aliases) 496.43 278.67 T
+(XkbV) 109 264.67 T
+(irtualModNamesMask) 135.22 264.67 T
+(\0501<<11\051) 268.75 264.67 T
+(Xkb->names) 321.25 264.67 T
+(vmods[*]) 392.5 264.67 T
+(XkbGroupNamesMask) 109 250.67 T
+(\0501<<12\051) 268.75 250.67 T
+(Xkb->names) 321.25 250.67 T
+(groups[*]) 392.5 250.67 T
+(XkbRGNamesMask) 109 236.67 T
+(\0501<<13\051) 268.75 236.67 T
+(Xkb->names) 321.25 236.67 T
+(radio_groups[*], num_r) 392.5 236.67 T
+(g) 497.4 236.67 T
+(XkbComponentNamesMask) 109 222.67 T
+(\0500x3f\051) 268.75 222.67 T
+(Xkb->names) 321.25 222.67 T
+2 12 Q
+(keycodes,) 392.5 222 T
+(geometry,) 392.5 210 T
+(symbols,) 392.5 198 T
+(physical symbols,) 392.5 186 T
+(types, and) 392.5 174 T
+(compatibility map) 392.5 162 T
+5 F
+-0.6 (XkbAllNamesMask) 109 147 S
+2 11 Q
+(\0500x3f) 268.75 147.67 T
+(f) 292.3 147.67 T
+(f\051) 295.69 147.67 T
+(Xkb->names) 321.25 147.67 T
+(all name components) 392.5 147.67 T
+108 459 540.75 459 2 L
+V
+0.5 H
+0 Z
+N
+108 428 540.75 428 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "182" 194
+%%Page: "183" 195
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(183) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(18 Symbolic Names) 445.28 744.87 T
+0 12 Q
+(18.3) 72 712 T
+(Getting Symbolic Names Fr) 108 712 T
+(om the Ser) 264.47 712 T
+(ver) 326.6 712 T
+2 F
+(To obtain symbolic names from the server, use) 108 692 T
+1 F
+(XkbGetNames) 336.3 692 T
+2 F
+(.) 404.95 692 T
+2 11 Q
+(Status) 108 671.67 T
+3 F
+(XkbGetNames) 137.65 671.67 T
+2 F
+(\050) 206.69 671.67 T
+1 F
+(dpy) 210.35 671.67 T
+(, whic) 225.63 671.67 T
+(h, Xkb) 251.75 671.67 T
+2 F
+(\051) 279.85 671.67 T
+(Display *) 126 658.67 T
+1 F
+(dpy) 189 658.67 T
+2 F
+(;) 204.88 658.67 T
+(/* connection to the X serv) 234 658.67 T
+(er */) 352.68 658.67 T
+(unsigned int) 126 645.67 T
+1 F
+(whic) 189 645.67 T
+(h) 209.61 645.67 T
+2 F
+(;) 215.11 645.67 T
+(/* mask of names or map components to be updated */) 234 645.67 T
+(XkbDescPtr) 126 632.67 T
+1 F
+(xkb) 189 632.67 T
+2 F
+(/* k) 234 632.67 T
+(e) 250.7 632.67 T
+(yboard description to be updated */) 255.42 632.67 T
+1 12 Q
+(XkbGetNames) 108 613 T
+2 F
+( retrieves symbolic names for the components of the keyboard extension) 176.65 613 T
+(from the X server. The) 108 600 T
+1 F
+(whic) 220.63 600 T
+(h) 243.12 600 T
+2 F
+( parameter specifies the name components to be updated in) 249.12 600 T
+-0.19 (the) 108 587 P
+1 F
+-0.19 (xkb) 125.47 587 P
+2 F
+-0.19 ( parameter, and is the bitwise inclusive OR of the valid names mask bits defined in) 142.13 587 P
+(Table 18.1.) 108 574 T
+(If the) 108 553 T
+1 F
+(names) 136.66 553 T
+2 F
+( field of the keyboard description) 167.32 553 T
+1 F
+(xkb) 329.95 553 T
+2 F
+( is) 346.61 553 T
+5 F
+-0.6 (NULL) 360.61 553 S
+2 F
+(,) 387.01 553 T
+1 F
+(XkbGetNames) 393.01 553 T
+2 F
+( allocates and) 461.66 553 T
+(initializes the) 108 540 T
+1 F
+(names) 175.33 540 T
+2 F
+( component of the keyboard description before obtaining the values) 205.99 540 T
+-0.38 (specified by) 108 527 P
+1 F
+-0.38 (whic) 168.55 527 P
+-0.38 (h) 191.04 527 P
+2 F
+-0.38 (. If the) 197.04 527 P
+1 F
+-0.38 (names) 230.54 527 P
+2 F
+-0.38 ( field of) 261.2 527 P
+1 F
+-0.38 (xkb) 301.04 527 P
+2 F
+-0.38 ( is not) 317.69 527 P
+5 F
+-0.85 -0.6 (NULL) 348.88 527 B
+2 F
+-0.38 (,) 375.28 527 P
+1 F
+-0.38 (XkbGetNames) 380.89 527 P
+2 F
+-0.38 ( obtains the values) 449.55 527 P
+(specified by) 108 514 T
+1 F
+(which) 169.32 514 T
+2 F
+( and copies them into the keyboard description) 197.99 514 T
+1 F
+(Xkb) 425.29 514 T
+2 F
+(.) 443.95 514 T
+(If the) 108 493 T
+1 F
+(map) 136.66 493 T
+2 F
+( component of the) 157.32 493 T
+1 F
+(xkb) 247.31 493 T
+2 F
+( parameter is) 263.96 493 T
+5 F
+-0.6 (NULL) 328.94 493 S
+2 F
+(,) 355.34 493 T
+1 F
+(XkbGetNames) 361.34 493 T
+2 F
+( does not retrieve type) 430 493 T
+(or shift level names, even if) 108 480 T
+5 F
+-0.6 (XkbKeyTypeNamesMask) 244.31 480 S
+2 F
+( or) 369.71 480 T
+5 F
+-0.6 (XkbKTLevelNamesMask) 385.71 480 S
+2 F
+( are) 511.11 480 T
+(set in) 108 467 T
+1 F
+(whic) 136.67 467 T
+(h) 159.16 467 T
+2 F
+(.) 165.16 467 T
+1 F
+(XkbGetNames) 108 446 T
+2 F
+( can return) 176.65 446 T
+5 F
+-0.6 (Success) 230.96 446 S
+2 F
+(, or) 277.17 446 T
+5 F
+-0.6 (BadAlloc) 296.16 446 S
+2 F
+(,) 348.96 446 T
+5 F
+-0.6 (BadLength) 354.96 446 S
+2 F
+(,) 414.36 446 T
+5 F
+-0.6 (BadMatch) 420.36 446 S
+2 F
+(, and) 473.16 446 T
+5 F
+-0.6 (BadIm-) 499.49 446 S
+-0.6 (plementation) 108 433 S
+2 F
+( errors.) 187.2 433 T
+(To free symbolic names, use) 108 412 T
+1 F
+(XkbF) 248.64 412 T
+(r) 273.97 412 T
+(eeNames) 278.2 412 T
+2 F
+( \050see section 18.6\051) 321.52 412 T
+0 F
+(18.4) 72 387 T
+(Changing Symbolic Names on the Ser) 108 387 T
+(ver) 324.84 387 T
+2 F
+(To change the symbolic names in the server, first modify a local copy of the keyboard) 108 367 T
+(description and then use either) 108 354 T
+1 F
+(XkbSetNames,) 257.64 354 T
+2 F
+( or, to save network traffic, use a) 326.63 354 T
+5 F
+-0.6 (XkbNa-) 487.25 354 S
+-0.6 (meChangesRec) 108 341 S
+2 F
+(structure and call) 187.2 341 T
+1 F
+(XkbChang) 272.85 341 T
+(eNames) 323.39 341 T
+2 F
+( to download the changes to the) 361.38 341 T
+(server.) 108 328 T
+1 F
+(XkbSetNames) 143.32 328 T
+2 F
+( and) 209.3 328 T
+1 F
+(XkbChang) 232.63 328 T
+(eNames) 283.18 328 T
+2 F
+( can generate) 321.17 328 T
+5 F
+-0.6 (BadAlloc) 387.47 328 S
+2 F
+(,) 440.27 328 T
+5 F
+-0.6 (BadAtom) 446.27 328 S
+2 F
+(,) 492.47 328 T
+5 F
+-0.6 (BadLength) 108 315 S
+2 F
+(,) 167.4 315 T
+5 F
+-0.6 (BadMatch,) 173.4 315 S
+2 F
+( and) 232.8 315 T
+5 F
+-0.6 (BadImplementation) 256.13 315 S
+2 F
+( errors.) 368.33 315 T
+2 11 Q
+(Bool) 108 294.67 T
+3 F
+(XkbSetNames) 132.15 294.67 T
+2 F
+(\050) 198.75 294.67 T
+1 F
+(dpy) 202.41 294.67 T
+(, whic) 217.69 294.67 T
+(h, \336r) 243.81 294.67 T
+(st_type) 264.48 294.67 T
+(, num_types, xkb) 295.53 294.67 T
+2 F
+(\051) 368.84 294.67 T
+(Display *) 126 281.67 T
+1 F
+(dpy) 189 281.67 T
+2 F
+(;) 204.88 281.67 T
+(/* connection to the X serv) 252 281.67 T
+(er */) 370.68 281.67 T
+(unsigned int) 126 268.67 T
+1 F
+(whic) 189 268.67 T
+(h) 209.61 268.67 T
+2 F
+(;) 215.11 268.67 T
+(/* mask of names or map components to be changed */) 252 268.67 T
+(unsigned int) 126 255.67 T
+1 F
+(\336r) 189 255.67 T
+(st_type) 198.67 255.67 T
+2 F
+(;) 234 255.67 T
+(/* \336rst type whose name is to be changed */) 252 255.67 T
+(unsigned int) 126 242.67 T
+1 F
+(num_types) 189 242.67 T
+2 F
+(;) 236.05 242.67 T
+(/* number of types for which names are to be changed */) 252 242.67 T
+(XkbDescPtr) 126 229.67 T
+1 F
+(xkb) 189 229.67 T
+2 F
+(;) 204.27 229.67 T
+(/* k) 252 229.67 T
+(e) 268.7 229.67 T
+(yboard description from which names are to be tak) 273.42 229.67 T
+(en */) 496.93 229.67 T
+2 12 Q
+-0.11 (Use) 108 210 P
+1 F
+-0.11 ( XkbSetNames) 126.66 210 P
+2 F
+-0.11 ( to change many names at the same time. For each bit set in) 195.54 210 P
+1 F
+-0.11 (whic) 482.96 210 P
+-0.11 (h) 505.45 210 P
+2 F
+-0.11 (,) 511.45 210 P
+1 F
+-0.11 (Xkb-) 517.34 210 P
+(SetNames) 108 197 T
+2 F
+( takes the corresponding value \050or values in the case of arrays\051 from the key-) 155.33 197 T
+(board description) 108 184 T
+1 F
+(xkb) 194.65 184 T
+2 F
+( and sends it to the server.) 211.31 184 T
+(The) 108 163 T
+1 F
+(\336r) 129.66 163 T
+(st_type) 140.21 163 T
+2 F
+( and) 174.2 163 T
+1 F
+(num_types) 197.53 163 T
+2 F
+( arguments are used only if) 248.86 163 T
+5 F
+-0.6 (XkbKeyTypeNamesMask) 382.16 163 S
+2 F
+( or) 507.57 163 T
+5 F
+-0.6 (XkbKTLevelNamesMask) 108 150 S
+2 F
+( is set in) 233.4 150 T
+1 F
+(whic) 276.08 150 T
+(h) 298.56 150 T
+2 F
+( and specify a subset of the types for which the) 304.56 150 T
+-0.09 (corresponding names are to be changed. If either or both of these mask bits are set but the) 108 137 P
+(specified types are illegal,) 108 124 T
+1 F
+(XkbSetNames) 236.3 124 T
+2 F
+( returns) 302.29 124 T
+5 F
+-0.6 (False) 341.62 124 S
+2 F
+( and does not update any of the) 374.62 124 T
+(names specified in) 108 111 T
+1 F
+(whic) 200.32 111 T
+(h) 222.8 111 T
+2 F
+(. The specified types are illegal if) 228.8 111 T
+1 F
+(xkb) 392.1 111 T
+2 F
+( does not include a map) 408.76 111 T
+(component or if) 108 98 T
+1 F
+(\336r) 187.66 98 T
+(st_type) 198.2 98 T
+2 F
+( and) 232.2 98 T
+1 F
+(num_types) 255.53 98 T
+2 F
+( specify types that are not defined in the key-) 306.85 98 T
+(board description.) 108 85 T
+FMENDPAGE
+%%EndPage: "183" 195
+%%Page: "184" 196
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(184) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(18 Symbolic Names) 445.28 744.87 T
+0 F
+(The XkbNameChangesRec Structure) 108 712.67 T
+2 12 Q
+(The) 108 694 T
+5 F
+-0.6 (XkbNameChangesRec) 129.66 694 S
+2 F
+( allows applications to identify small modifications to the) 241.86 694 T
+(symbolic names and effectively reduces the amount of traffic sent to the server:) 108 681 T
+2 11 Q
+(typedef struct _XkbNameChanges {) 108 660.67 T
+(unsigned int) 126 647.67 T
+(changed;) 192 647.67 T
+(/*) 268.5 647.67 T
+2 12 Q
+(name components that have changed) 279.81 647.67 T
+2 11 Q
+( */) 456.44 647.67 T
+(unsigned char) 126 634.67 T
+(\336rst_type;) 192 634.67 T
+(/* \336rst k) 268.5 634.67 T
+(e) 305.06 634.67 T
+(y type with a ne) 309.78 634.67 T
+(w name */) 379.78 634.67 T
+(unsigned char) 126 621.67 T
+(num_types;) 192 621.67 T
+(/* number of types with ne) 268.5 621.67 T
+(w names */) 386.46 621.67 T
+(unsigned char) 126 608.67 T
+(\336rst_lvl;) 192 608.67 T
+(/* \336rst k) 268.5 608.67 T
+(e) 305.06 608.67 T
+(y type with ne) 309.78 608.67 T
+(w le) 372.14 608.67 T
+(v) 390.5 608.67 T
+(el names */) 395.84 608.67 T
+(unsigned char) 126 595.67 T
+(num_lvls;) 192 595.67 T
+(/* number of k) 268.5 595.67 T
+(e) 333.47 595.67 T
+(y types with ne) 338.18 595.67 T
+(w le) 404.82 595.67 T
+(v) 423.18 595.67 T
+(el names */) 428.52 595.67 T
+(unsigned char) 126 582.67 T
+(num_aliases;) 192 582.67 T
+(/* if k) 268.5 582.67 T
+(e) 294.67 582.67 T
+(y aliases changed, total number of k) 299.39 582.67 T
+(e) 457.83 582.67 T
+(y aliases */) 462.55 582.67 T
+(unsigned char) 126 569.67 T
+(num_r) 192 569.67 T
+(g;) 220.52 569.67 T
+(/* if radio groups changed, total number of radio groups */) 268.5 569.67 T
+(unsigned char) 126 556.67 T
+(\336rst_k) 192 556.67 T
+(e) 220.01 556.67 T
+(y;) 224.73 556.67 T
+(/* \336rst k) 268.5 556.67 T
+(e) 305.06 556.67 T
+(y with a ne) 309.78 556.67 T
+(w name */) 358.08 556.67 T
+(unsigned char) 126 543.67 T
+(num_k) 192 543.67 T
+(e) 222.45 543.67 T
+(ys;) 227.17 543.67 T
+(/* number of k) 268.5 543.67 T
+(e) 333.47 543.67 T
+(ys with ne) 338.18 543.67 T
+(w names */) 383.13 543.67 T
+(unsigned short) 126 530.67 T
+(changed_vmods;) 192 530.67 T
+-0.06 (/* mask of virtual modi\336ers for which names ha) 268.5 530.67 P
+-0.06 (v) 479.2 530.67 P
+-0.06 (e changed */) 484.53 530.67 P
+(unsigned long) 126 517.67 T
+(changed_indicators;) 192 517.67 T
+(/* mask of indicators for which names were changed */) 280.59 517.67 T
+(unsigned char) 126 504.67 T
+(changed_groups;) 192 504.67 T
+(/* mask of groups for which names were changed */) 268.5 504.67 T
+(}) 108 491.67 T
+3 F
+(XkbNameChangesRec) 116.03 491.67 T
+2 F
+(, *XkbNameChangesPtr) 221.74 491.67 T
+2 12 Q
+(The) 108 472 T
+1 F
+(changed) 129.66 472 T
+2 F
+( field specifies the name components that have changed and is the bitwise) 170.32 472 T
+(inclusive OR of the valid names mask bits defined in Table 18.1. The rest of the fields in) 108 459 T
+(the structure specify the ranges that have changed for the various kinds of symbolic) 108 446 T
+(names, as shown in Table 18.2.) 108 433 T
+1 F
+(XkbChangeNames) 108 186 T
+2 F
+( provides a more flexible method for changing symbolic names than) 196.66 186 T
+1 F
+(XkbSetNames) 108 173 T
+2 F
+( and requires the use of an) 173.99 173 T
+5 F
+-0.6 (XkbNameChangesRec) 302.95 173 S
+2 F
+( structure.) 415.15 173 T
+2 11 Q
+(Bool) 108 152.67 T
+3 F
+(XkbChangeNames) 132.15 152.67 T
+2 F
+(\050) 220.15 152.67 T
+1 F
+(dpy) 223.81 152.67 T
+(, xkb, c) 239.09 152.67 T
+(hang) 270.07 152.67 T
+(es) 291.96 152.67 T
+2 F
+(\051) 301.13 152.67 T
+(Display *) 126 139.67 T
+1 F
+(dpy) 228.75 139.67 T
+2 F
+(;) 244.63 139.67 T
+(/* connection to the X serv) 275.25 139.67 T
+(er */) 393.93 139.67 T
+(XkbDescPtr) 126 126.67 T
+1 F
+(xkb) 228.75 126.67 T
+2 F
+(;) 244.02 126.67 T
+-0.19 (/* k) 275.25 126.67 P
+-0.19 (e) 291.76 126.67 P
+-0.19 (yboard description from which names are to be tak) 296.48 126.67 P
+-0.19 (en */) 518.49 126.67 P
+(XkbNameChangesPtr) 126 113.67 T
+1 F
+(c) 228.75 113.67 T
+(hang) 233.47 113.67 T
+(es) 255.36 113.67 T
+2 F
+(;) 264.52 113.67 T
+(/* names map components to be updated on the serv) 275.25 113.67 T
+(er */) 505.14 113.67 T
+1 12 Q
+-0.14 (XkbChang) 108 94 P
+-0.14 (eNames) 158.54 94 P
+2 F
+-0.14 ( copies any names specified by) 196.54 94 P
+1 F
+-0.14 (c) 347.69 94 P
+-0.14 (hang) 352.83 94 P
+-0.14 (es) 376.71 94 P
+2 F
+-0.14 ( from the keyboard description,) 386.71 94 P
+1 F
+(xkb) 108 81 T
+2 F
+(, to the X server specified by) 124.66 81 T
+1 F
+(dpy) 265.96 81 T
+2 F
+(.) 283.28 81 T
+1 F
+( XkbChang) 286.28 81 T
+(eNames) 339.83 81 T
+2 F
+( aborts and returns) 377.82 81 T
+5 F
+-0.6 (False) 469.8 81 S
+2 F
+( if any) 502.8 81 T
+(illegal type names or type shift level names are specified by) 108 68 T
+1 F
+(c) 398.28 68 T
+(hang) 403.43 68 T
+(es) 427.31 68 T
+2 F
+(.) 437.3 68 T
+3 F
+(T) 226.42 413 T
+(able 18.2 XkbNameChanges Fields) 233.32 413 T
+1 F
+(Mask) 111 392 T
+(F) 244.5 392 T
+(ields) 251.29 392 T
+(Component) 339.75 392 T
+(F) 418.5 392 T
+(ield) 425.29 392 T
+2 11 Q
+(XkbK) 111 373.67 T
+(e) 137.61 373.67 T
+(yT) 142.33 373.67 T
+(ypeNamesMask) 153.67 373.67 T
+(\336rst_type,) 244.5 373.67 T
+(num_types) 244.5 362.67 T
+(Xkb->map) 339.75 373.67 T
+(type[*].name) 418.5 373.67 T
+(XkbKTLe) 111 344.67 T
+(v) 155.93 344.67 T
+(elNamesMask) 161.27 344.67 T
+(\336rst_lvl,) 244.5 344.67 T
+(num_lvls) 244.5 333.67 T
+(Xkb->map) 339.75 344.67 T
+(type[*].lvl_names[*]) 418.5 344.67 T
+(XkbK) 111 315.67 T
+(e) 137.61 315.67 T
+(yAliasesMask) 142.33 315.67 T
+(num_aliases) 244.5 315.67 T
+(Xkb->names) 339.75 315.67 T
+(k) 418.5 315.67 T
+(e) 423.89 315.67 T
+(y_aliases[*]) 428.61 315.67 T
+(XkbRGNamesMask) 111 297.67 T
+(num_r) 244.5 297.67 T
+(g) 273.02 297.67 T
+(Xkb->names) 339.75 297.67 T
+(radio_groups[*]) 418.5 297.67 T
+(XkbK) 111 279.67 T
+(e) 137.61 279.67 T
+(yNamesMask) 142.33 279.67 T
+(\336rst_k) 244.5 279.67 T
+(e) 272.51 279.67 T
+(y) 277.23 279.67 T
+(,) 282.01 279.67 T
+(num_k) 244.5 268.67 T
+(e) 274.95 268.67 T
+(ys) 279.67 268.67 T
+(Xkb->names) 339.75 279.67 T
+(k) 418.5 279.67 T
+(e) 423.89 279.67 T
+(ys[*]) 428.61 279.67 T
+(XkbV) 111 250.67 T
+(irtualModNamesMask) 137.22 250.67 T
+(changed_vmods) 244.5 250.67 T
+(Xkb->names) 339.75 250.67 T
+(vmods[*]) 418.5 250.67 T
+(XkbIndicatorNamesMask) 111 232.67 T
+(changed_indicators) 244.5 232.67 T
+(Xkb->names) 339.75 232.67 T
+(indicators[*]) 418.5 232.67 T
+(XkbGroupNamesMask) 111 214.67 T
+(changed_groups) 244.5 214.67 T
+(Xkb->names) 339.75 214.67 T
+(groups[*]) 418.5 214.67 T
+108 405 519 405 2 L
+V
+0.5 H
+0 Z
+N
+108 384 519 384 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "184" 196
+%%Page: "185" 197
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(185) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(18 Symbolic Names) 445.28 744.87 T
+0 12 Q
+(18.5) 72 712 T
+(T) 108 712 T
+(rac) 114.37 712 T
+(king Name Chang) 132.14 712 T
+(es) 233.62 712 T
+2 F
+-0.3 (Whenever a symbolic name changes in the server\325s keyboard description, the server sends) 108 692 P
+(a) 108 679 T
+5 F
+-0.6 (XkbNamesNotify) 116.33 679 S
+2 F
+( event to all interested clients. To receive name notify events, use) 208.73 679 T
+1 F
+(XkbSelectEvents) 108 666 T
+2 F
+( \050see section 4.3\051 with) 187.31 666 T
+5 F
+-0.6 (XkbNamesNotifyMask) 295.96 666 S
+2 F
+( in both the) 414.76 666 T
+1 F
+(bits_to_c) 108 653 T
+(hang) 151.82 653 T
+(e) 175.7 653 T
+2 F
+( and) 181.03 653 T
+1 F
+(values_for_bits) 204.36 653 T
+2 F
+( parameters.) 278.36 653 T
+(To receive events for only specific names, use) 108 632 T
+1 F
+(XkbSelectEventDetails) 332.94 632 T
+2 F
+(. Set the) 442.25 632 T
+1 F
+(e) 484.25 632 T
+(vent_type) 489.4 632 T
+2 F
+(parameter to) 108 619 T
+5 F
+-0.6 (XkbNamesNotify) 171.31 619 S
+2 F
+(, and set both the) 263.71 619 T
+1 F
+(bits_to_c) 348.37 619 T
+(hang) 392.2 619 T
+(e) 416.08 619 T
+2 F
+(and) 424.41 619 T
+1 F
+( values_for_bits) 441.73 619 T
+2 F
+(detail parameter to a mask composed of a bitwise OR of masks in Table 18.1.) 108 606 T
+(The structure for the) 108 585 T
+5 F
+-0.6 (XkbNamesNotify) 209.3 585 S
+2 F
+( event is defined as follows:) 301.71 585 T
+2 11 Q
+(typedef struct {) 108 564.67 T
+(int) 126 551.67 T
+(type;) 189.75 551.67 T
+(/* Xkb e) 269.25 551.67 T
+(xtension base e) 306.97 551.67 T
+(v) 373.9 551.67 T
+(ent code */) 379.24 551.67 T
+(unsigned long) 126 538.67 T
+(serial;) 189.75 538.67 T
+(/* X serv) 269.25 538.67 T
+(er serial number for e) 309.41 538.67 T
+(v) 403.82 538.67 T
+(ent */) 409.16 538.67 T
+(Bool) 126 525.67 T
+(send_e) 189.75 525.67 T
+(v) 220.02 525.67 T
+(ent;) 225.36 525.67 T
+(/*) 269.25 525.67 T
+5 12 Q
+-0.6 (True) 280.56 525.67 S
+2 11 Q
+( => synthetically generated */) 306.96 525.67 T
+(Display *) 126 512.67 T
+(display;) 189.75 512.67 T
+(/* serv) 269.25 512.67 T
+(er connection where e) 298.72 512.67 T
+(v) 395.27 512.67 T
+(ent generated */) 400.6 512.67 T
+(T) 126 499.67 T
+(ime) 132.34 499.67 T
+(time;) 189.75 499.67 T
+(/* serv) 269.25 499.67 T
+(er time when e) 298.72 499.67 T
+(v) 363.51 499.67 T
+(ent generated */) 368.84 499.67 T
+(int) 126 486.67 T
+(xkb_type;) 189.75 486.67 T
+(/*) 269.25 486.67 T
+5 F
+-0.33 (XkbNamesNotify) 280.56 486.67 S
+2 F
+( */) 368.34 486.67 T
+(int) 126 473.67 T
+(de) 189.75 473.67 T
+(vice;) 199.86 473.67 T
+(/* Xkb de) 269.25 473.67 T
+(vice ID, will not be) 312.36 473.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 400.35 473.67 S
+2 F
+( */) 481.86 473.67 T
+(unsigned int) 126 460.67 T
+(changed;) 189.75 460.67 T
+(/* mask of) 269.25 460.67 T
+2 12 Q
+(name components that have changed) 318.44 460.67 T
+2 11 Q
+( */) 495.07 460.67 T
+(int) 126 447.67 T
+(\336rst_type;) 189.75 447.67 T
+(/* \336rst k) 269.25 447.67 T
+(e) 305.81 447.67 T
+(y type with a ne) 310.53 447.67 T
+(w name */) 380.53 447.67 T
+(int) 126 434.67 T
+(num_types;) 189.75 434.67 T
+(/* number of types with ne) 269.25 434.67 T
+(w names */) 387.21 434.67 T
+(int) 126 421.67 T
+(\336rst_lvl;) 189.75 421.67 T
+(/* \336rst k) 269.25 421.67 T
+(e) 305.81 421.67 T
+(y type with ne) 310.53 421.67 T
+(w le) 372.89 421.67 T
+(v) 391.25 421.67 T
+(el names */) 396.59 421.67 T
+(int) 126 408.67 T
+(num_lvls;) 189.75 408.67 T
+(/* number of k) 269.25 408.67 T
+(e) 334.22 408.67 T
+(y types with ne) 338.93 408.67 T
+(w le) 405.57 408.67 T
+(v) 423.93 408.67 T
+(el names */) 429.27 408.67 T
+(int) 126 395.67 T
+(num_aliases;) 189.75 395.67 T
+(/* if k) 269.25 395.67 T
+(e) 295.42 395.67 T
+(y aliases changed, total number of k) 300.14 395.67 T
+(e) 458.58 395.67 T
+(y aliases */) 463.3 395.67 T
+(int) 126 382.67 T
+(num_radio_groups;) 189.75 382.67 T
+(/* if radio groups changed, total number of radio groups */) 275.91 382.67 T
+(unsigned int) 126 369.67 T
+(changed_vmods;) 189.75 369.67 T
+-0.14 (/* mask of virtual modi\336ers for which names ha) 269.25 369.67 P
+-0.14 (v) 479.35 369.67 P
+-0.14 (e changed */) 484.68 369.67 P
+(unsigned int) 126 356.67 T
+(changed_groups;) 189.75 356.67 T
+(/* mask of groups for which names were changed */) 269.25 356.67 T
+(unsigned int) 126 343.67 T
+(changed_indicators;) 189.75 343.67 T
+(/* mask of indicators for which names were changed */) 278.34 343.67 T
+(int) 126 330.67 T
+(\336rst_k) 189.75 330.67 T
+(e) 217.76 330.67 T
+(y;) 222.48 330.67 T
+(/* \336rst k) 269.25 330.67 T
+(e) 305.81 330.67 T
+(y with a ne) 310.53 330.67 T
+(w name */) 358.83 330.67 T
+(int) 126 317.67 T
+(num_k) 189.75 317.67 T
+(e) 220.2 317.67 T
+(ys;) 224.92 317.67 T
+(/* number of k) 269.25 317.67 T
+(e) 334.22 317.67 T
+(ys with ne) 338.93 317.67 T
+(w names */) 383.88 317.67 T
+(}) 108 304.67 T
+3 F
+(XkbNamesNotifyEv) 116.03 304.67 T
+(ent) 210.02 304.67 T
+2 F
+(;) 224.69 304.67 T
+2 12 Q
+(The) 108 285 T
+1 F
+(c) 129.66 285 T
+(hang) 134.81 285 T
+(ed) 158.69 285 T
+2 F
+( field specifies the name components that have changed and is the bitwise) 170.02 285 T
+(inclusive OR of the valid names mask bits defined in Table 18.1. The other fields in this) 108 272 T
+(event are interpreted as the like-named fields in an) 108 259 T
+5 F
+-0.6 (XkbNameChangesRec) 353.6 259 S
+2 F
+(, as previously) 465.81 259 T
+(defined.) 108 246 T
+(When your application receives a X) 108 225 T
+5 F
+-0.6 (kbNamesNotify) 280.28 225 S
+2 F
+( event, you can note the changed) 366.09 225 T
+(names in a changes structure using) 108 212 T
+1 F
+(XkbNoteNameChanges) 277.97 212 T
+2 F
+(.) 389.29 212 T
+2 11 Q
+(v) 108 191.67 T
+(oid) 113.28 191.67 T
+3 F
+(XkbNoteNameChanges) 130.09 191.67 T
+2 F
+(\050) 240.08 191.67 T
+1 F
+(old) 243.74 191.67 T
+2 F
+(,) 257.8 191.67 T
+1 F
+( ne) 260.55 191.67 T
+(w) 273.52 191.67 T
+2 F
+(,) 280.14 191.67 T
+1 F
+( wanted) 282.89 191.67 T
+2 F
+(\051) 317.42 191.67 T
+(XkbNameChangesPtr) 126 178.67 T
+1 F
+(old) 234 178.67 T
+2 F
+(;) 248.06 178.67 T
+(/*) 279 178.67 T
+5 F
+-0.33 (XkbNameChanges) 290.31 178.67 S
+2 F
+( structure to be updated */) 378.09 178.67 T
+(XkbNamesNotifyEv) 126 165.67 T
+(ent *) 216.27 165.67 T
+1 F
+(ne) 237.96 165.67 T
+(w) 248.18 165.67 T
+2 F
+(;) 255.51 165.67 T
+(/* e) 279 165.67 T
+(v) 294.92 165.67 T
+(ent from which changes are to be copied */) 300.25 165.67 T
+(unsigned int) 126 152.67 T
+1 F
+(wanted) 234 152.67 T
+2 F
+(;) 265.78 152.67 T
+(/* types of names for which changes are to be noted */) 279 152.67 T
+2 12 Q
+(The) 108 133 T
+1 F
+(wanted) 129.66 133 T
+2 F
+( parameter is the bitwise inclusive OR of the valid names mask bits shown in) 164.33 133 T
+-0.02 (Table 18.1.) 108 120 P
+1 F
+-0.02 (XkbNoteNameChang) 165.28 120 P
+-0.02 (es) 266.49 120 P
+2 F
+-0.02 ( copies any changes that are reported in) 276.48 120 P
+1 F
+-0.02 (ne) 468.91 120 P
+-0.02 (w) 480.06 120 P
+2 F
+-0.02 ( and speci-) 488.06 120 P
+(fied in) 108 107 T
+1 F
+(wanted) 142 107 T
+2 F
+( into the changes record specified by) 176.66 107 T
+1 F
+(old) 355.62 107 T
+2 F
+(.) 370.96 107 T
+FMENDPAGE
+%%EndPage: "185" 197
+%%Page: "186" 198
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(186) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(18 Symbolic Names) 445.28 744.87 T
+2 12 Q
+(To update the local copy of the keyboard description with the actual values, pass to) 108 712 T
+1 F
+(Xkb-) 510.6 712 T
+(GetNameChanges) 108 699 T
+2 F
+( the results of one or more calls to) 195.32 699 T
+1 F
+(XkbNoteNameChanges) 361.63 699 T
+2 F
+(.) 472.96 699 T
+2 11 Q
+(Status) 108 678.67 T
+3 F
+(XkbGetNameChanges) 137.65 678.67 T
+2 F
+(\050) 242.75 678.67 T
+1 F
+(dpy) 246.41 678.67 T
+2 F
+(,) 261.58 678.67 T
+1 F
+( xkb) 264.33 678.67 T
+2 F
+(,) 282.35 678.67 T
+1 F
+( c) 285.1 678.67 T
+(hang) 292.57 678.67 T
+(es) 314.46 678.67 T
+2 F
+(\051) 323.62 678.67 T
+(Display *) 126 665.67 T
+1 F
+(dpy) 234 665.67 T
+2 F
+(;) 249.88 665.67 T
+(/* connection to the X serv) 279 665.67 T
+(er */) 397.68 665.67 T
+(XkbDescPtr) 126 652.67 T
+1 F
+(xkb) 234 652.67 T
+2 F
+(;) 249.27 652.67 T
+(/* k) 279 652.67 T
+(e) 295.7 652.67 T
+(yboard description to which names are copied */) 300.42 652.67 T
+(XkbNameChangesPtr) 126 639.67 T
+1 F
+(c) 234 639.67 T
+(hang) 238.72 639.67 T
+(es) 260.61 639.67 T
+2 F
+(;) 269.77 639.67 T
+(/* names components to be obtained from the serv) 279 639.67 T
+(er */) 500.64 639.67 T
+1 12 Q
+(XkbGetNameChang) 108 620 T
+(es) 203.87 620 T
+2 F
+( examines the) 213.86 620 T
+1 F
+(c) 282.85 620 T
+(hang) 288 620 T
+(es) 311.88 620 T
+2 F
+( parameter, retrieves the necessary informa-) 321.88 620 T
+(tion from the server, and places the results into the) 108 607 T
+1 F
+(xkb) 353.63 607 T
+2 F
+( keyboard description.) 370.28 607 T
+1 F
+-0.22 (XkbGetNamesChang) 108 586 P
+-0.22 (es) 208.54 586 P
+2 F
+-0.22 ( can generate) 218.53 586 P
+5 F
+-0.49 -0.6 (BadAlloc) 284.16 586 B
+2 F
+-0.22 (,) 336.96 586 P
+5 F
+-0.49 -0.6 (BadImplementation,) 342.74 586 B
+2 F
+-0.22 ( and) 461.54 586 P
+5 F
+-0.49 -0.6 (BadMatch) 484.42 586 B
+2 F
+(errors.) 108 573 T
+0 F
+(18.6) 72 548 T
+(Allocating and Freeing Symbolic Names) 108 548 T
+2 F
+(Most applications do not need to directly allocate symbolic names structures. Do not allo-) 108 528 T
+(cate a names structure directly using) 108 515 T
+1 F
+(malloc) 285.96 515 T
+2 F
+( or) 318.62 515 T
+1 F
+(Xmalloc) 334.62 515 T
+2 F
+( if your application changes the) 374.62 515 T
+(number of key aliases or radio groups or constructs a symbolic names structure without) 108 502 T
+(loading the necessary components from the X server. Instead use) 108 489 T
+1 F
+(XkbAllocNames) 422.93 489 T
+2 F
+(.) 499.58 489 T
+2 11 Q
+(Status) 108 468.67 T
+3 F
+(XkbAllocNames) 137.65 468.67 T
+2 F
+(\050) 214.03 468.67 T
+1 F
+(xkb, whic) 217.69 468.67 T
+(h, num_r) 259.07 468.67 T
+(g) 298.39 468.67 T
+(, num_k) 303.78 468.67 T
+(e) 338.49 468.67 T
+(y_aliases\051) 343.05 468.67 T
+2 F
+(XkbDescPtr) 126 455.67 T
+1 F
+(xkb;) 189 455.67 T
+2 F
+(/* k) 234 455.67 T
+(e) 250.7 455.67 T
+(yboard description for which names are to be allocated */) 255.42 455.67 T
+(unsigned int) 126 442.67 T
+1 F
+(whic) 189 442.67 T
+(h;) 209.61 442.67 T
+2 F
+(/* mask of names to be allocated */) 234 442.67 T
+(int) 126 429.67 T
+1 F
+(num_r) 189 429.67 T
+(g;) 217.31 429.67 T
+2 F
+(/* total number of radio group names needed */) 234 429.67 T
+(int) 126 416.67 T
+1 F
+(num_k) 189 416.67 T
+(e) 218.22 416.67 T
+(y_aliases;) 222.77 416.67 T
+2 F
+(/* total number of k) 267.38 416.67 T
+(e) 354.65 416.67 T
+(y aliases needed */) 359.37 416.67 T
+1 12 Q
+(XkbAllocNames) 108 397 T
+2 F
+( can return) 184.66 397 T
+5 F
+-0.6 (BadAlloc) 238.97 397 S
+2 F
+(,) 291.77 397 T
+5 F
+-0.6 (BadMatch,) 297.77 397 S
+2 F
+( and) 357.17 397 T
+5 F
+-0.6 (BadValue) 380.5 397 S
+2 F
+( errors.) 433.3 397 T
+(The) 470.28 397 T
+1 F
+(whic) 491.94 397 T
+(h) 514.43 397 T
+2 F
+(parameter is the bitwise inclusive OR of the valid names mask bits defined in Table 18.1.) 108 384 T
+(Do not free symbolic names structures directly using) 108 363 T
+1 F
+(fr) 364.63 363 T
+(ee) 372.19 363 T
+2 F
+( or) 382.85 363 T
+1 F
+(XF) 398.84 363 T
+(r) 412.85 363 T
+(ee) 417.07 363 T
+2 F
+(. Use) 427.73 363 T
+1 F
+(XkbF) 455.39 363 T
+(r) 480.72 363 T
+(eeNames) 484.94 363 T
+2 F
+(instead.) 108 350 T
+2 11 Q
+(v) 108 329.67 T
+(oid) 113.28 329.67 T
+3 F
+(XkbFr) 130.09 329.67 T
+(eeNames) 161.67 329.67 T
+2 F
+(\050) 203.21 329.67 T
+1 F
+(xkb, whic) 206.87 329.67 T
+(h, fr) 248.25 329.67 T
+(ee_map\051) 266.18 329.67 T
+2 F
+(XkbDescPtr) 126 316.67 T
+1 F
+(xkb) 189 316.67 T
+2 F
+(;) 204.27 316.67 T
+(/* k) 243 316.67 T
+(e) 259.7 316.67 T
+(yboard description for which names are to be freed */) 264.42 316.67 T
+(unsigned int) 126 303.67 T
+1 F
+(whic) 189 303.67 T
+(h) 209.61 303.67 T
+2 F
+(;) 215.11 303.67 T
+(/* mask of names components to be freed */) 243 303.67 T
+(Bool) 126 290.67 T
+1 F
+(fr) 189 290.67 T
+(ee_map) 195.93 290.67 T
+2 F
+(;) 230.14 290.67 T
+(/*) 243 290.67 T
+5 12 Q
+-0.6 (True) 254.31 290.67 S
+2 11 Q
+( => XkbNamesRec structure itself should be freed */) 280.71 290.67 T
+2 12 Q
+(The) 108 271 T
+1 F
+(whic) 129.66 271 T
+(h) 152.15 271 T
+2 F
+( parameter is the bitwise inclusive OR of the valid names mask bits defined in) 158.15 271 T
+(Table 18.1.) 108 258 T
+FMENDPAGE
+%%EndPage: "186" 198
+%%Page: "187" 199
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(187) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(19 Replacing a K) 363.25 744.87 T
+(e) 445.16 744.87 T
+(yboard \322On the Fly\323) 449.88 744.87 T
+0 14 Q
+(19) 72 710.67 T
+(Replacing a K) 108 710.67 T
+(e) 200.37 710.67 T
+(yboar) 207.95 710.67 T
+(d \322On the Fl) 245.79 710.67 T
+(y\323) 325.7 710.67 T
+2 12 Q
+(Some operating system and X server implementations allow \322hot plugging\323 of input) 108 688 T
+(devices. When using these implementations, input devices can be unplugged and new) 108 675 T
+(ones plugged in without restarting the software that is using those devices. There is no) 108 662 T
+(provision in the standard X server for notification of client programs if input devices are) 108 649 T
+(unplugged and/or new ones plugged in. In the case of the X keyboard, this could result in) 108 636 T
+(the X server having a keymap that does not match the new keyboard.) 108 623 T
+(If the X server implementation supports the X input device extension, a client program) 108 602 T
+(may also change the X keyboard programmatically. The) 108 589 T
+1 F
+(XChangeKeyboardDevice) 380.94 589 T
+2 F
+(input) 509.24 589 T
+-0.19 (extension request allows a client to designate an input extension keyboard device as the X) 108 576 P
+(keyboard, in which case the old X keyboard device becomes inaccessible except via the) 108 563 T
+-0.09 (input device extension. In this case, core protocol) 108 550 P
+5 F
+-0.19 -0.6 (XMappingNotify) 347.94 550 B
+2 F
+-0.09 ( and input extension) 440.34 550 P
+5 F
+-0.6 (XChangeDeviceNotify) 108 537 S
+2 F
+( events are generated to notify all clients that a new keyboard) 233.4 537 T
+(with a new keymap has been designated.) 108 524 T
+(When a client opens a connection to the X server, the server reports the minimum and) 108 503 T
+-0.1 (maximum keycodes. The server keeps track of the minimum and maximum keycodes last) 108 490 P
+(reported to each client. When delivering events to a particular client, the server filters out) 108 477 T
+(any events that fall outside of the valid range for the client.) 108 464 T
+(Xkb provides an) 108 443 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 190.32 443 S
+2 F
+( event that reports a change in keyboard) 322.32 443 T
+(geometry and/or the range of supported keycodes. The server can generate an) 108 430 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 108 417 S
+2 F
+( event when it detects a new keyboard or in response to an) 240 417 T
+1 F
+(XkbGetK) 108 404 T
+(e) 151.57 404 T
+(yboar) 156.54 404 T
+(dByName) 184.09 404 T
+2 F
+( request that loads a new keyboard description. Selecting for) 230.75 404 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 108 391 S
+2 F
+( events allows Xkb-aware clients to be notified whenever a) 240 391 T
+(keyboard change occurs that may affect the keymap.) 108 378 T
+(When a client requests) 108 357 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 219.97 357 S
+2 F
+( events, the server compares the range) 351.98 357 T
+-0.07 (of keycodes for the current keyboard to the range of keycodes that are valid for the client.) 108 344 P
+-0.27 (If they are not the same, the server immediately sends the client an) 108 331 P
+5 F
+-0.59 -0.6 (XkbNewKeyboardNo-) 427.8 331 B
+-0.6 (tify) 108 318 S
+2 F
+( event. Even if the \322new\323 keyboard is not new to the server, it is new to this particu-) 134.4 318 T
+(lar client.) 108 305 T
+(When the server sends an) 108 284 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 233.63 284 S
+2 F
+( event to a client to inform it of a) 365.63 284 T
+(new keycode range, it resets the stored range of legal keycodes for the client to the key-) 108 271 T
+-0.36 (code range reported in the event; it does not reset this range for the client if it does not sent) 108 258 P
+(an) 108 245 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 122.33 245 S
+2 F
+( event to a client. Because Xkb-unaware clients and) 254.33 245 T
+(Xkb-aware clients that do not request) 108 232 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 290.63 232 S
+2 F
+( events are never sent) 422.63 232 T
+(these events, the server\325s notion of the legal keycode range never changes, and these cli-) 108 219 T
+(ents never receive events from keys that fall outside of their notion of the legal keycode) 108 206 T
+(range.) 108 193 T
+(Clients that have not selected to receive) 108 172 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 301.63 172 S
+2 F
+( events do, however,) 433.64 172 T
+-0.42 (receive the) 108 159 P
+5 F
+-0.92 -0.6 (XkbNewKeyboardNotify) 162.47 159 B
+2 F
+-0.42 ( event when a keyboard change occurs. Clients that) 294.48 159 P
+(have not selected to receive this event also receive numerous other events detailing the) 108 146 T
+(individual changes that occur when a keyboard change occurs.) 108 133 T
+-0.33 (Clients wishing to track changes in) 108 112 P
+1 F
+-0.33 (min_key_code) 277.36 112 P
+2 F
+-0.33 ( and) 346 112 P
+1 F
+-0.33 (max_key_code) 368.68 112 P
+2 F
+-0.33 ( must watch for both) 439.31 112 P
+5 F
+-0.6 (XkbNewKeyboardNotify) 108 99 S
+2 F
+( and) 240 99 T
+5 F
+-0.6 (XkbMapNotify) 263.33 99 S
+2 F
+( events, because a simple mapping) 342.53 99 T
+-0.15 (change causes an) 108 86 P
+5 F
+-0.33 -0.6 (XkbMapNotify) 193.18 86 B
+2 F
+-0.15 ( event and may change the range of valid keycodes, but) 272.38 86 P
+(does not cause an) 108 73 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 195.31 73 S
+2 F
+( event. If a client does not select for) 327.32 73 T
+FMENDPAGE
+%%EndPage: "187" 199
+%%Page: "188" 200
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(188) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(19 Replacing a K) 363.25 744.87 T
+(e) 445.16 744.87 T
+(yboard \322On the Fly\323) 449.88 744.87 T
+5 12 Q
+-0.6 (XkbNewKeyboardNotify) 108 712 S
+2 F
+( events, the server restricts the range of keycodes reported to) 240 712 T
+(the client.) 108 699 T
+(In addition to filtering out-of-range key events, Xkb:) 108 678 T
+2 11 Q
+(\245) 126 657.67 T
+(Adjusts core protocol) 139.68 657.67 T
+5 12 Q
+-0.6 (MappingNotify) 237.14 657.67 S
+2 11 Q
+( e) 322.94 657.67 T
+(v) 330.3 657.67 T
+(ents to refer only to k) 335.64 657.67 T
+(e) 429.93 657.67 T
+(ys that match the) 434.65 657.67 T
+(stored le) 139.68 645.67 T
+(g) 177.09 645.67 T
+(al range.) 182.54 645.67 T
+(\245) 126 633.67 T
+(Reports k) 139.68 633.67 T
+(e) 182.04 633.67 T
+(yboard mappings for k) 186.76 633.67 T
+(e) 286.55 633.67 T
+(ys that match the stored le) 291.27 633.67 T
+(g) 406.29 633.67 T
+(al range to clients that) 411.73 633.67 T
+(issue a core protocol) 139.68 621.67 T
+5 12 Q
+-0.6 (GetKeyboardMapping) 233.16 621.67 S
+2 11 Q
+( request.) 351.96 621.67 T
+(\245) 126 609.67 T
+(Reports modi\336er mappings only for k) 139.68 609.67 T
+(e) 305.48 609.67 T
+(ys that match the stored le) 310.2 609.67 T
+(g) 425.22 609.67 T
+(al range to clients) 430.66 609.67 T
+(that issue a core protocol) 139.68 597.67 T
+5 12 Q
+-0.6 (GetModifierMapping) 252.41 597.67 S
+2 11 Q
+( request.) 371.21 597.67 T
+(\245) 126 585.67 T
+(Restricts the core protocol) 139.68 585.67 T
+5 12 Q
+-0.6 (ChangeKeyboardMapping) 258.22 585.67 S
+2 11 Q
+( and) 396.82 585.67 T
+5 12 Q
+-0.6 (SetModifierMap-) 418.2 585.67 S
+-0.6 (ping) 139.68 573.67 S
+2 11 Q
+( requests to k) 166.08 573.67 T
+(e) 224.33 573.67 T
+(ys that f) 229.04 573.67 T
+(all inside the stored le) 264.38 573.67 T
+(g) 360.76 573.67 T
+(al range.) 366.2 573.67 T
+2 12 Q
+(In short, Xkb does everything possible to hide from Xkb-unaware clients the fact that the) 108 555 T
+-0.3 (range of legal keycodes has changed, because such clients cannot be expected to deal with) 108 542 P
+(them. Xkb events and requests are not modified in this manner; all Xkb events report the) 108 529 T
+-0.15 (full range of legal keycodes. No requested Xkb events are discarded, and no Xkb requests) 108 516 P
+(have their keycode range clamped.) 108 503 T
+(The structure for the) 108 482 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 209.3 482 S
+2 F
+( event is defined as follows:) 341.31 482 T
+2 11 Q
+(typedef struct _XkbNe) 126 461.67 T
+(wK) 225.92 461.67 T
+(e) 241.53 461.67 T
+(yboardNotify {) 246.25 461.67 T
+(int) 144 448.67 T
+(type;) 234 448.67 T
+(/* Xkb e) 333 448.67 T
+(xtension base e) 370.72 448.67 T
+(v) 437.65 448.67 T
+(ent code */) 442.99 448.67 T
+(unsigned long) 144 435.67 T
+(serial;) 234 435.67 T
+(/* X serv) 333 435.67 T
+(er serial number for e) 373.16 435.67 T
+(v) 467.57 435.67 T
+(ent*/) 472.91 435.67 T
+(Bool) 144 422.67 T
+(send_e) 234 422.67 T
+(v) 264.27 422.67 T
+(ent;) 269.61 422.67 T
+(/*) 333 422.67 T
+5 12 Q
+-0.6 (True) 344.31 422.67 S
+2 11 Q
+( => synthetically generated */) 370.71 422.67 T
+(Display *) 144 409.67 T
+(display;) 234 409.67 T
+(/* serv) 333 409.67 T
+(er connection where e) 362.47 409.67 T
+(v) 459.02 409.67 T
+(ent generated */) 464.35 409.67 T
+(T) 144 396.67 T
+(ime) 150.34 396.67 T
+(time;) 234 396.67 T
+(/* serv) 333 396.67 T
+(er time when e) 362.47 396.67 T
+(v) 427.26 396.67 T
+(ent generated */) 432.59 396.67 T
+(int) 144 383.67 T
+(xkb_type;) 234 383.67 T
+(/*) 333 383.67 T
+5 F
+-0.33 (XkbNewKeyboardNotify) 344.31 383.67 S
+2 F
+( */) 469.71 383.67 T
+(int) 144 370.67 T
+(de) 234 370.67 T
+(vice;) 244.11 370.67 T
+(/* de) 333 370.67 T
+(vice ID of ne) 354.42 370.67 T
+(w k) 411.87 370.67 T
+(e) 427.95 370.67 T
+(yboard */) 432.67 370.67 T
+(int) 144 357.67 T
+(old_de) 234 357.67 T
+(vice;) 263.67 357.67 T
+(/* de) 333 357.67 T
+(vice ID of old k) 354.42 357.67 T
+(e) 423.96 357.67 T
+(yboard */) 428.68 357.67 T
+(int) 144 344.67 T
+(min_k) 234 344.67 T
+(e) 262.01 344.67 T
+(y_code;) 266.73 344.67 T
+(/* min k) 333 344.67 T
+(e) 369.56 344.67 T
+(ycode of ne) 374.28 344.67 T
+(w k) 425.32 344.67 T
+(e) 441.4 344.67 T
+(yboard */) 446.12 344.67 T
+(int) 144 331.67 T
+(max_k) 234 331.67 T
+(e) 263.83 331.67 T
+(y_code;) 268.55 331.67 T
+(/* max k) 333 331.67 T
+(e) 371.39 331.67 T
+(ycode of ne) 376.11 331.67 T
+(w k) 427.15 331.67 T
+(e) 443.23 331.67 T
+(yboard */) 447.95 331.67 T
+(int) 144 318.67 T
+(old_min_k) 234 318.67 T
+(e) 281.56 318.67 T
+(y_code;) 286.28 318.67 T
+(/* min k) 333 318.67 T
+(e) 369.56 318.67 T
+(ycode of old k) 374.28 318.67 T
+(e) 437.41 318.67 T
+(yboard */) 442.13 318.67 T
+(int) 144 305.67 T
+(old_max_k) 234 305.67 T
+(e) 283.39 305.67 T
+(y_code;) 288.11 305.67 T
+(/* max k) 333 305.67 T
+(e) 371.39 305.67 T
+(ycode of old k) 376.11 305.67 T
+(e) 439.24 305.67 T
+(yboard */) 443.96 305.67 T
+(unsigned int) 144 292.67 T
+(changed;) 234 292.67 T
+(/* changed aspects - see masks belo) 333 292.67 T
+(w */) 490.36 292.67 T
+(char) 144 279.67 T
+(req_major;) 234 279.67 T
+(/* major request that caused change */) 333 279.67 T
+(char) 144 266.67 T
+(req_minor;) 234 266.67 T
+(/* minor request that caused change */) 333 266.67 T
+(}) 126 253.67 T
+3 F
+(XkbNewK) 134.03 253.67 T
+(eyboardNotifyEv) 183.26 253.67 T
+(ent) 263.81 253.67 T
+2 F
+(;) 278.47 253.67 T
+2 12 Q
+(To receive name notify events, use) 108 234 T
+1 F
+(XkbSelectEvents) 278.29 234 T
+2 F
+( \050see section 4.3\051 with) 357.6 234 T
+5 F
+-0.6 (XkbNewKey-) 466.25 234 S
+-0.6 (boardNotifyMask) 108 221 S
+2 F
+( in both the) 207 221 T
+1 F
+(bits_to_c) 264.34 221 T
+(hang) 308.16 221 T
+(e) 332.04 221 T
+2 F
+( and) 337.37 221 T
+1 F
+(values_for_bits) 360.7 221 T
+2 F
+( parameters. To) 434.7 221 T
+(receive events for only specific names, use) 108 208 T
+1 F
+(XkbSelectEventDetails) 316.61 208 T
+2 F
+(. Set the) 425.92 208 T
+1 F
+(e) 467.92 208 T
+(vent_type) 473.06 208 T
+2 F
+(parameter to) 108 195 T
+5 F
+-0.6 (XkbNewKeyboardNotify) 171.31 195 S
+2 F
+(, and set both the) 303.32 195 T
+1 F
+(bits_to_c) 387.98 195 T
+(hang) 431.8 195 T
+(e) 455.68 195 T
+2 F
+(and) 464.01 195 T
+1 F
+(values_for_bits) 108 182 T
+2 F
+( detail parameter to a mask composed of a bitwise OR of masks in Table) 182 182 T
+(19.1.) 108 169 T
+3 F
+(T) 203.81 149 T
+(able 19.1 XkbNewK) 210.71 149 T
+(eyboardNotifyEv) 315.74 149 T
+(ent Details) 403.62 149 T
+1 F
+(XkbNe) 109 129 T
+(wK) 140.81 129 T
+(e) 156.4 129 T
+(yboar) 161.37 129 T
+(dNotify) 188.92 129 T
+(Event Details) 109 115 T
+(V) 253 122 T
+(alue) 259 122 T
+(Cir) 307 122 T
+(cumstances) 322.56 122 T
+5 11 Q
+-0.33 (XkbNKN_KeycodesMask) 109 100.67 S
+-0.33 (\0501L<<0\051) 253 100.67 S
+2 F
+(Noti\336cation of k) 307 100.67 T
+(e) 379.61 100.67 T
+(ycode range changes w) 384.33 100.67 T
+(anted) 486.54 100.67 T
+5 F
+-0.33 (XkbNKN_GeometryMask) 109 86.67 S
+-0.33 (\0501L<<1\051) 253 86.67 S
+2 F
+(Noti\336cation of geometry changes w) 307 86.67 T
+(anted) 464.53 86.67 T
+5 F
+-0.33 (XkbNKN_DeviceIDMask) 109 72.67 S
+-0.33 (\0501L<<2\051) 253 72.67 S
+2 F
+(Noti\336cation of de) 307 72.67 T
+(vice ID changes w) 384.33 72.67 T
+(anted) 465.77 72.67 T
+108 141 540 141 2 L
+V
+0.5 H
+0 Z
+N
+108 110 540 110 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "188" 200
+%%Page: "189" 201
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(189) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(19 Replacing a K) 363.25 744.87 T
+(e) 445.16 744.87 T
+(yboard \322On the Fly\323) 449.88 744.87 T
+2 12 Q
+-0.2 (The) 108 639 P
+1 F
+-0.2 (req_major) 129.46 639 P
+2 F
+-0.2 ( and) 180.13 639 P
+1 F
+-0.2 (req_minor) 203.06 639 P
+2 F
+-0.2 ( fields indicate what type of keyboard change has occurred.) 253.72 639 P
+(If) 108 618 T
+1 F
+(req_major) 118.99 618 T
+2 F
+( and) 169.66 618 T
+1 F
+(req_minor) 192.98 618 T
+2 F
+( are zero, the device change was not caused by a software) 243.65 618 T
+(request to the server \321 a spontaneous change has occurred, such as hot-plugging a new) 108 605 T
+-0.2 (device. In this case,) 108 592 P
+1 F
+-0.2 (device) 204.51 592 P
+2 F
+-0.2 ( is the device identifier for the new, current X keyboard device,) 235.15 592 P
+(but no implementation-independent guarantee can be made about) 108 579 T
+1 F
+(old_device) 424.61 579 T
+2 F
+(.) 476.59 579 T
+1 F
+(old_device) 482.59 579 T
+2 F
+-0.33 (may be identical to) 108 566 P
+1 F
+-0.33 (device) 201.35 566 P
+2 F
+-0.33 ( \050an implementor is permitted to reuse the device specifier when) 231.99 566 P
+-0.35 (the device changes\051; or it may be different. Note that) 108 553 P
+1 F
+-0.35 (req_major) 360.78 553 P
+2 F
+-0.35 ( and) 411.44 553 P
+1 F
+-0.35 (req_minor) 434.07 553 P
+2 F
+-0.35 ( being zero) 484.73 553 P
+(do not necessarily mean that the physical keyboard device has changed; rather, they only) 108 540 T
+(imply a spontaneous change outside of software control \050some systems have keyboards) 108 527 T
+(that can change personality at the press of a key\051.) 108 514 T
+(If the keyboard change is the result of an X Input Extension) 108 493 T
+5 F
+-0.6 (ChangeKeyboardDevice) 397.94 493 S
+2 F
+-0.5 (request,) 108 480 P
+1 F
+-0.5 (req_major) 148.16 480 P
+2 F
+-0.5 ( contains the input extension major opcode, and) 198.82 480 P
+1 F
+-0.5 (req_minor) 427.16 480 P
+2 F
+-0.5 ( contains the) 477.83 480 P
+-0.38 (input extension request number for) 108 467 P
+5 F
+-0.83 -0.6 (X_ChangeKeyboardDevice) 277.09 467 B
+2 F
+-0.38 (. In this case,) 422.3 467 P
+1 F
+-0.38 (device) 486.78 467 P
+2 F
+-0.38 ( and) 517.42 467 P
+1 F
+(old_device) 108 454 T
+2 F
+( are different, with) 159.98 454 T
+1 F
+(device) 252.29 454 T
+2 F
+( being the identifier for the new, current X keyboard) 282.94 454 T
+(device, and) 108 441 T
+1 F
+(old_device) 165.65 441 T
+2 F
+( being the identifier for the former device.) 217.63 441 T
+(If the keyboard change is the result of an) 108 420 T
+1 F
+(XkbGetK) 306.95 420 T
+(e) 350.52 420 T
+(yboar) 355.49 420 T
+(dByName) 383.04 420 T
+2 F
+( function call, which) 429.7 420 T
+(generates an) 108 407 T
+5 F
+-0.6 (X_kbGetKbdByName) 170.64 407 S
+2 F
+( request,) 276.24 407 T
+1 F
+(req_major) 319.9 407 T
+2 F
+( contains the) 370.56 407 T
+2 11 Q
+(Xkb e) 434.22 407 T
+(xtension base) 460.63 407 T
+(e) 108 394 T
+(v) 112.61 394 T
+(ent code) 117.94 394 T
+2 12 Q
+( \050see section 2.4\051, and) 154.9 394 T
+1 F
+(req_minor) 262.54 394 T
+2 F
+( contains the event code for the Xkb extension) 313.21 394 T
+-0.51 (request) 108 381 P
+5 F
+-1.13 -0.6 (X_kbGetKbdByName) 145.14 381 B
+2 F
+-0.51 (.) 250.74 381 P
+1 F
+-0.51 (device) 256.23 381 P
+2 F
+-0.51 ( contains the device identifier for the new device, but) 286.88 381 P
+(nothing definitive can be said for) 108 368 T
+1 F
+(old_device) 269.98 368 T
+2 F
+(; it may be identical to) 321.96 368 T
+1 F
+(device) 432.62 368 T
+2 F
+(, or it may be) 463.27 368 T
+(different, depending on the implementation.) 108 355 T
+5 11 Q
+-0.33 (XkbNKN_AllChangesMask) 109 663.67 S
+-0.33 (\0500x7\051) 253 663.67 S
+2 F
+(Includes all of the abo) 307 663.67 T
+(v) 404.59 663.67 T
+(e masks) 409.93 663.67 T
+3 12 Q
+(T) 203.81 712 T
+(able 19.1 XkbNewK) 210.71 712 T
+(eyboardNotifyEv) 315.74 712 T
+(ent Details) 403.62 712 T
+1 F
+(XkbNe) 109 692 T
+(wK) 140.81 692 T
+(e) 156.4 692 T
+(yboar) 161.37 692 T
+(dNotify) 188.92 692 T
+(Event Details) 109 678 T
+(V) 253 685 T
+(alue) 259 685 T
+(Cir) 307 685 T
+(cumstances) 322.56 685 T
+108 704 540 704 2 L
+V
+0.5 H
+0 Z
+N
+108 673 540 673 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "189" 201
+%%Page: "190" 202
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(190) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+0 14 Q
+(20) 72 710.67 T
+(Ser) 108 710.67 T
+(ver Database of K) 130.71 710.67 T
+(e) 248.76 710.67 T
+(yboar) 256.33 710.67 T
+(d Components) 294.17 710.67 T
+2 12 Q
+(The X server maintains a database of keyboard components, identified by component) 108 688 T
+(type. The database contains all the information necessary to build a complete keyboard) 108 675 T
+(description for a particular device, as well as to assemble partial descriptions. Table 20.1) 108 662 T
+(identifies the component types and the type of information they contain.) 108 649 T
+(While a keymap is a database entry for a complete keyboard description, and therefore) 108 320 T
+(logically different from the individual component database entries, the rules for process-) 108 307 T
+(ing keymap entries are identical to those for the individual components. In the discussion) 108 294 T
+-0.13 (that follows, the term component is used to refer to either individual components or a key-) 108 281 P
+(map.) 108 268 T
+(There may be multiple entries for each of the component types. An entry may be either) 108 247 T
+1 F
+(complete) 108 234 T
+2 F
+( or) 151.32 234 T
+1 F
+(partial) 167.32 234 T
+2 F
+(. Partial entries describe only a piece of the corresponding keyboard) 199.99 234 T
+-0.05 (component and are designed to be combined with other entries of the same type to form a) 108 221 P
+(complete entry.) 108 208 T
+(For example, a partial symbols map might describe the differences between a common) 108 187 T
+(ASCII keyboard and some national layout. Such a partial map is not useful on its own) 108 174 T
+(because it does not include those symbols that are the same on both the ASCII and) 108 161 T
+-0.33 (national layouts \050such as function keys\051. On the other hand, this partial map can be used to) 108 148 P
+(configure) 108 135 T
+1 F
+(any) 156.98 135 T
+2 F
+( ASCII keyboard to use a national layout.) 174.31 135 T
+-0.04 (When a keyboard description is built, the components are processed in the order in which) 108 114 P
+(they appear in Table 20.1; later definitions override earlier ones.) 108 101 T
+3 F
+(T) 198.87 629 T
+(able 20.1 Ser) 205.77 629 T
+(v) 274.31 629 T
+(er Database K) 280.19 629 T
+(eyboard Components) 353.21 629 T
+1 F
+(Component) 105.4 609 T
+(T) 105.4 595 T
+(ype) 111.18 595 T
+(Component Primary Contents) 177.4 602 T
+(May also contain) 364.6 602 T
+2 11 Q
+(K) 105.4 580.67 T
+(e) 113.07 580.67 T
+(ymap) 117.79 580.67 T
+(Complete k) 177.4 580.67 T
+(e) 228.32 580.67 T
+(yboard description) 233.04 580.67 T
+(Normally assembled using a complete) 177.4 569.67 T
+(component from each of the other types) 177.4 558.67 T
+(K) 105.4 544.67 T
+(e) 113.07 544.67 T
+(ycodes) 117.79 544.67 T
+(Symbolic name for each k) 177.4 544.67 T
+(e) 292.77 544.67 T
+(y) 297.49 544.67 T
+(Minimum and maximum le) 177.4 533.67 T
+(g) 297.94 533.67 T
+(al k) 303.38 533.67 T
+(e) 319.46 533.67 T
+(ycodes) 324.18 533.67 T
+(Aliases for some k) 364.6 544.67 T
+(e) 446.67 544.67 T
+(ys) 451.39 544.67 T
+(Symbolic names for indicators) 364.6 533.67 T
+(Description of indicators ph) 364.6 522.67 T
+(ysically) 487.67 522.67 T
+(present) 364.6 511.67 T
+(T) 105.4 497.67 T
+(ypes) 111.24 497.67 T
+(K) 177.4 497.67 T
+(e) 185.07 497.67 T
+(y types) 189.79 497.67 T
+(Real modi\336er bindings and symbolic) 364.6 497.67 T
+(names for some virtual modi\336ers) 364.6 486.67 T
+(Compatibility) 105.4 472.67 T
+(Rules used to assign actions to k) 177.4 472.67 T
+(e) 320.29 472.67 T
+(ysyms) 325.01 472.67 T
+(Maps for some indicators) 364.6 472.67 T
+(Real modi\336er bindings and symbolic) 364.6 461.67 T
+(names for some virtual modi\336ers) 364.6 450.67 T
+(Symbols) 105.4 436.67 T
+(Symbol mapping for k) 177.4 436.67 T
+(e) 276.6 436.67 T
+(yboard k) 281.32 436.67 T
+(e) 320 436.67 T
+(ys) 324.72 436.67 T
+(Modi\336er mapping) 177.4 425.67 T
+(Symbolic names for groups) 177.4 414.67 T
+(Explicit actions and beha) 364.6 436.67 T
+(viors for some) 475.28 436.67 T
+(k) 364.6 425.67 T
+(e) 369.99 425.67 T
+(ys) 374.71 425.67 T
+(Real modi\336er bindings and symbolic) 364.6 414.67 T
+(names for some virtual modi\336ers) 364.6 403.67 T
+(Geometry) 105.4 389.67 T
+(Layout of the k) 177.4 389.67 T
+(e) 244.81 389.67 T
+(yboard) 249.53 389.67 T
+(Aliases for some k) 364.6 389.67 T
+(e) 446.67 389.67 T
+(ys; o) 451.39 389.67 T
+(v) 472.31 389.67 T
+(errides k) 477.65 389.67 T
+(e) 515.72 389.67 T
+(y-) 520.44 389.67 T
+(codes component aliases) 364.6 378.67 T
+(Symbolic names for some indicators) 364.6 367.67 T
+(Description of indicators ph) 364.6 356.67 T
+(ysically) 487.67 356.67 T
+(present) 364.6 345.67 T
+104.4 621 543.6 621 2 L
+V
+0.5 H
+0 Z
+N
+104.4 590 543.6 590 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "190" 202
+%%Page: "191" 203
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(191) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+0 12 Q
+(20.1) 72 712 T
+(Component Names) 108 712 T
+2 F
+(Component names have the form \322) 108 692 T
+1 F
+(class\050member\051) 275.64 692 T
+2 F
+(\323 where) 346.28 692 T
+1 F
+(class) 386.93 692 T
+2 F
+( describes a subset of the) 410.93 692 T
+(available components for a particular type and the optional) 108 679 T
+1 F
+(member) 393.61 679 T
+2 F
+( identifies a specific) 432.26 679 T
+(component from that subset. For example, the name \322atlantis\050acme\051\323 for a symbols com-) 108 666 T
+(ponent might specify the symbols used for the atlantis national keyboard layout by the) 108 653 T
+(vendor \322acme.\323 Each class has an optional) 108 640 T
+1 F
+(default) 315.28 640 T
+2 F
+( member \321 references that specify a) 348.61 640 T
+(class but not a member refer to the default member of the class, if one exists. Xkb places) 108 627 T
+(no constraints on the interpretation of the class and member names used in component) 108 614 T
+(names.) 108 601 T
+(The) 108 580 T
+1 F
+(class) 129.66 580 T
+2 F
+( and) 153.66 580 T
+1 F
+(member) 176.99 580 T
+2 F
+( names are both specified using characters from the Latin-1 charac-) 215.64 580 T
+(ter set. Xkb implementations must accept all alphanumeric characters, minus \050\324-\325\051 and) 108 567 T
+-0.35 (underscore \050\324_\325\051 in class or member names, and must not accept parentheses, plus, vertical) 108 554 P
+(bar, percent sign, asterisk, question mark, or white space. The use of other characters is) 108 541 T
+(implementation-dependent.) 108 528 T
+0 F
+(20.2) 72 503 T
+(Listing the Kno) 108 503 T
+(wn K) 195.16 503 T
+(e) 223.64 503 T
+(yboar) 230.14 503 T
+(d Components) 262.57 503 T
+2 F
+(You may ask the server for a list of components for one or more component types. The) 108 483 T
+(request takes the form of a set of patterns, one pattern for each of the component types,) 108 470 T
+(including a pattern for the complete keyboard description. To obtain this list, use) 108 457 T
+1 F
+(XkbList-) 498.96 457 T
+(Components) 108 444 T
+2 F
+(.) 168 444 T
+2 11 Q
+(XkbComponentListPtr) 108 423.67 T
+3 F
+( XkbListComponents) 208.23 423.67 T
+2 F
+(\050) 308.77 423.67 T
+1 F
+(dpy) 312.43 423.67 T
+2 F
+(,) 327.6 423.67 T
+1 F
+(de) 333.1 423.67 T
+(vice_spec) 343.32 423.67 T
+2 F
+(,) 386.08 423.67 T
+1 F
+(ptrns) 391.58 423.67 T
+2 F
+(,) 414.2 423.67 T
+1 F
+(max_inout) 419.7 423.67 T
+2 F
+(\051) 466.14 423.67 T
+(Display *) 126 410.67 T
+1 F
+(dpy) 252 410.67 T
+2 F
+(;) 267.88 410.67 T
+(/* connection to X serv) 342 410.67 T
+(er */) 444.49 410.67 T
+(unsigned int) 126 397.67 T
+1 F
+(de) 252 397.67 T
+(vice_spec) 262.22 397.67 T
+2 F
+(;) 304.98 397.67 T
+(/* de) 342 397.67 T
+(vice ID, or) 363.42 397.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 413.51 397.67 S
+2 F
+( */) 492.16 397.67 T
+(XkbComponentNamesPtr) 126 384.67 T
+1 F
+(ptrns) 252 384.67 T
+2 F
+(;) 274.62 384.67 T
+(/* namelist for components of interest */) 342 384.67 T
+(int *) 126 371.67 T
+1 F
+(max_inout) 252 371.67 T
+2 F
+(;) 298.44 371.67 T
+(/* max # returned names, # left o) 342 371.67 T
+(v) 487.26 371.67 T
+(er */) 492.59 371.67 T
+1 12 Q
+(XkbListComponents) 108 352 T
+2 F
+( queries the server for a list of component names matching the pat-) 204.67 352 T
+(terns specified in) 108 339 T
+1 F
+(ptrns) 192.98 339 T
+2 F
+(. It waits for a reply and returns the matching component names in) 217.66 339 T
+-0.5 (an) 108 326 P
+5 F
+-1.1 -0.6 (XkbComponentListRec) 121.83 326 B
+2 F
+-0.5 ( structure. When you are done using the structure, you should) 247.23 326 P
+(free it using) 108 313 T
+1 F
+(XkbF) 168.32 313 T
+(r) 193.66 313 T
+(eeComponentList) 197.88 313 T
+2 F
+(.) 281.88 313 T
+1 F
+(de) 287.88 313 T
+(vice_spec) 299.03 313 T
+2 F
+( indicates a particular device in which) 345.67 313 T
+(the caller is interested. A server is allowed \050but not required\051 to restrict its reply to por-) 108 300 T
+(tions of the database that are relevant for that particular device.) 108 287 T
+1 F
+-0.05 (ptrns) 108 266 P
+2 F
+-0.05 ( is a pointer to an) 132.67 266 P
+5 F
+-0.1 -0.6 (XkbComponentNamesRec) 218.4 266 B
+2 F
+-0.05 (, described below. Each of the fields in) 350.4 266 P
+1 F
+(ptrns) 108 253 T
+2 F
+( contains a pattern naming the components of interest. Each of the patterns is com-) 132.67 253 T
+-0.2 (posed of characters from the ISO) 108 240 P
+5 F
+-0.45 -0.6 (Latin1) 268.73 240 B
+2 F
+-0.2 ( encoding, but can contain only parentheses, the) 308.33 240 P
+-0.19 (wildcard characters \324) 108 227 P
+5 F
+-0.43 -0.6 (?) 208.23 227 B
+2 F
+-0.19 (\325 and \324) 214.83 227 P
+5 F
+-0.43 -0.6 (*) 245.76 227 B
+2 F
+-0.19 (\325, and characters permitted in a component class or member) 252.36 227 P
+(name \050see section 20.1\051. A pattern may be) 108 214 T
+5 F
+-0.6 (NULL) 313.28 214 S
+2 F
+(, in which case no components for that) 339.68 214 T
+(type is returned. Pattern matches with component names are case sensitive. The \324) 108 201 T
+5 F
+-0.6 (?) 497.26 201 S
+2 F
+(\325 wild-) 503.86 201 T
+(card matches any single character, except a left or right parenthesis; the \324) 108 188 T
+5 F
+-0.6 (*) 458.23 188 S
+2 F
+(\325 wildcard) 464.83 188 T
+-0.14 (matches any number of characters, except a left or right parenthesis. If an implementation) 108 175 P
+(allows additional characters in a component class or member name other than those) 108 162 T
+(required by the Xkb extension \050see section 20.1\051, the result of comparing one of the addi-) 108 149 T
+(tional characters to either of the wildcard characters is implementation-dependent.) 108 136 T
+(If a pattern contains illegal characters, the illegal characters are ignored. The matching) 108 115 T
+(process is carried out as if the illegal characters were omitted from the pattern.) 108 102 T
+1 F
+-0.29 (max_inout) 108 81 P
+2 F
+-0.29 ( is used to throttle the amount of data passed to and from the server. On input, it) 158.66 81 P
+(specifies the maximum number of names to be returned \050the total number of names in all) 108 68 T
+FMENDPAGE
+%%EndPage: "191" 203
+%%Page: "192" 204
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(192) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+2 12 Q
+(component categories\051. Upon return from) 108 712 T
+1 F
+(XkbListComponents) 310.62 712 T
+2 F
+(,) 407.29 712 T
+1 F
+(max_inout) 413.29 712 T
+2 F
+( contains the) 463.96 712 T
+(number of names that matched the request but were not returned because of the limit.) 108 699 T
+(The component name patterns used to describe the request are passed to) 108 678 T
+1 F
+(XkbListCompo-) 456.59 678 T
+(nents) 108 665 T
+2 F
+( using an) 133.33 665 T
+5 F
+-0.6 (XkbComponentNamesRec) 179.66 665 S
+2 F
+( structure. This structure has no special alloca-) 311.67 665 T
+(tion constraints or interrelationships with other structures; allocate and free this structure) 108 652 T
+(using standard) 108 639 T
+1 F
+(malloc) 180.66 639 T
+2 F
+( and) 213.32 639 T
+1 F
+(fr) 236.65 639 T
+(ee) 244.21 639 T
+2 F
+( calls or their equivalent:) 254.87 639 T
+2 11 Q
+(typedef struct _XkbComponentNames {) 126 618.67 T
+(char *) 144 605.67 T
+(k) 270 605.67 T
+(e) 275.39 605.67 T
+(ymap;) 280.11 605.67 T
+(/* k) 342 605.67 T
+(e) 358.7 605.67 T
+(ymap names */) 363.42 605.67 T
+(char *) 144 592.67 T
+(k) 270 592.67 T
+(e) 275.39 592.67 T
+(ycodes;) 280.11 592.67 T
+(/* k) 342 592.67 T
+(e) 358.7 592.67 T
+(ycode names */) 363.42 592.67 T
+(char *) 144 579.67 T
+(types;) 270 579.67 T
+(/* type names */) 342 579.67 T
+(char *) 144 566.67 T
+(compat;) 270 566.67 T
+(/* compatibility map names */) 342 566.67 T
+(char *) 144 553.67 T
+(symbols;) 270 553.67 T
+(/* symbol names */) 342 553.67 T
+(char *) 144 540.67 T
+(geometry;) 270 540.67 T
+(/* geometry names */) 342 540.67 T
+(}) 126 527.67 T
+3 F
+(XkbComponentNamesRec) 134.03 527.67 T
+2 F
+(, *XkbComponentNamesPtr;) 258.68 527.67 T
+1 12 Q
+(XkbListComponents) 108 508 T
+2 F
+( returns a pointer to an) 204.67 508 T
+5 F
+-0.6 (XkbComponentListRec) 315.98 508 S
+2 F
+(:) 441.39 508 T
+2 11 Q
+(typedef struct _XkbComponentList {) 126 487.67 T
+(int) 144 474.67 T
+(num_k) 270 474.67 T
+(e) 300.45 474.67 T
+(ymaps;) 305.17 474.67 T
+(/* number of entries in k) 342 474.67 T
+(e) 450.35 474.67 T
+(ymap */) 455.07 474.67 T
+(int) 144 461.67 T
+(num_k) 270 461.67 T
+(e) 300.45 461.67 T
+(ycodes;) 305.17 461.67 T
+(/* number of entries in k) 342 461.67 T
+(e) 450.35 461.67 T
+(ycodes */) 455.07 461.67 T
+(int) 144 448.67 T
+(num_types;) 270 448.67 T
+(/* number of entries in types */) 342 448.67 T
+(int) 144 435.67 T
+(num_compat;) 270 435.67 T
+(/* number of entries in compat */) 342 435.67 T
+(int) 144 422.67 T
+(num_symbols;) 270 422.67 T
+(/* number of entries in symbols */) 342 422.67 T
+(int) 144 409.67 T
+(num_geometry;) 270 409.67 T
+(/* number of entries in geometry;) 342 409.67 T
+(XkbComponentNamePtr) 144 396.67 T
+(k) 270 396.67 T
+(e) 275.39 396.67 T
+(ymap;) 280.11 396.67 T
+(/* k) 342 396.67 T
+(e) 358.7 396.67 T
+(ymap names */) 363.42 396.67 T
+(XkbComponentNamePtr) 144 383.67 T
+(k) 270 383.67 T
+(e) 275.39 383.67 T
+(ycodes;) 280.11 383.67 T
+(/* k) 342 383.67 T
+(e) 358.7 383.67 T
+(ycode names */) 363.42 383.67 T
+(XkbComponentNamePtr) 144 370.67 T
+(types;) 270 370.67 T
+(/* type names */) 342 370.67 T
+(XkbComponentNamePtr) 144 357.67 T
+(compat;) 270 357.67 T
+(/* compatibility map names */) 342 357.67 T
+(XkbComponentNamePtr) 144 344.67 T
+(symbols;) 270 344.67 T
+(/* symbol names */) 342 344.67 T
+(XkbComponentNamePtr) 144 331.67 T
+(geometry;) 270 331.67 T
+(/* geometry names */) 342 331.67 T
+(}) 126 318.67 T
+3 F
+(XkbComponentListRec) 134.03 318.67 T
+2 F
+(, *XkbComponentListPtr;) 245.25 318.67 T
+(typedef struct _XkbComponentName {) 126 298.67 T
+(unsigned short) 144 285.67 T
+(\337ags;) 270 285.67 T
+(/* hints re) 342 285.67 T
+(g) 385.83 285.67 T
+(arding component name */) 391.28 285.67 T
+(char *) 144 272.67 T
+(name;) 270 272.67 T
+(/* name of component */) 342 272.67 T
+(}) 126 259.67 T
+3 F
+(XkbComponentNameRec) 134.03 259.67 T
+2 F
+(, *XkbComponentNamePtr;) 254.4 259.67 T
+2 12 Q
+(Note that the structure used to specify patterns on input is an) 108 240 T
+5 F
+-0.6 (XkbComponentNamesRec) 401.96 240 S
+2 F
+(,) 533.97 240 T
+-0.01 (and that used to hold the individual component names upon return is an) 108 227 P
+5 F
+-0.02 -0.6 (XkbComponent-) 454.2 227 B
+-0.6 (NameRec) 108 214 S
+2 F
+( \050no trailing \324s\325 in Name\051.) 154.2 214 T
+(When you are done using the structure returned by) 108 193 T
+1 F
+(XkbListComponents) 354.28 193 T
+2 F
+(, free it using) 450.95 193 T
+1 F
+(XkbF) 108 180 T
+(r) 133.33 180 T
+(eeComponentList) 137.56 180 T
+2 F
+(.) 221.56 180 T
+2 11 Q
+(v) 108 159.67 T
+(oid) 113.28 159.67 T
+3 F
+(XkbFr) 130.09 159.67 T
+(eeComponentList) 161.67 159.67 T
+2 F
+(\050list\051) 244.77 159.67 T
+(XkbComponentListPtr) 126 146.67 T
+( list;) 252 146.67 T
+(/* pointer to) 306 146.67 T
+5 F
+-0.33 (XkbComponentListRec) 362.53 146.67 S
+2 F
+( to free */) 481.66 146.67 T
+0 12 Q
+(20.3) 72 121 T
+(Component Hints) 108 121 T
+2 F
+(A set of flags is associated with each component; these flags provide additional hints) 108 101 T
+(about the component\325s use. These hints are designated by bit masks in the flags field of) 108 88 T
+(the) 108 75 T
+5 F
+-0.6 (XkbComponentNameRec) 125.66 75 S
+2 F
+( structures contained in the) 251.07 75 T
+5 F
+-0.6 (XkbComponentListRec) 383.38 75 S
+FMENDPAGE
+%%EndPage: "192" 204
+%%Page: "193" 205
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(193) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+2 12 Q
+(returned from) 108 712 T
+5 F
+-0.6 (XkbListComponents) 177.31 712 S
+2 F
+(. The least significant byte of the flags field has the) 289.51 712 T
+(same meaning for all types of keyboard components; the interpretation of the most signif-) 108 699 T
+-0.27 (icant byte is dependent on the type of component. The flags bits are defined in Table 20.2.) 108 686 P
+(The symbols hints in Table 20.2 apply only to partial symbols components \050those with) 108 673 T
+5 F
+-0.6 (XkbLC_Partial) 108 660 S
+2 F
+( also set\051; full symbols components are assumed to specify all of the) 193.8 660 T
+(pieces.) 108 647 T
+(The alphanumeric, modifier, keypad or function keys symbols hints should describe the) 108 626 T
+(primary intent of the component designer and should not be simply an exhaustive list of) 108 613 T
+(the kinds of keys that are affected. For example, national keyboard layouts affect prima-) 108 600 T
+(rily alphanumeric keys, but many affect a few modifier keys as well; such mappings) 108 587 T
+(should set only the) 108 574 T
+5 F
+-0.6 (XkbLC_AlphanumericKeys) 201.34 574 S
+2 F
+( hint. In general, symbols components) 346.54 574 T
+(should set only one of the four flags \050) 108 561 T
+5 F
+-0.6 (XkbLC_AlternateGroup) 287.98 561 S
+2 F
+( may be combined with) 419.98 561 T
+(any of the other flags\051.) 108 548 T
+0 F
+(20.4) 72 264 T
+(Building a K) 108 264 T
+(e) 177.83 264 T
+(yboar) 184.32 264 T
+(d Description Using the Ser) 216.76 264 T
+(ver Database) 374.24 264 T
+2 F
+(A client may request that the server fetch one or more components from its database and) 108 244 T
+(use those components to build a new server keyboard description. The new keyboard) 108 231 T
+-0.31 (description may be built from scratch, or it may be built starting with the current keyboard) 108 218 P
+(description for a particular device. Once the keyboard description is built, all or part of it) 108 205 T
+(may be returned to the client. The parts returned to the client need not include all of the) 108 192 T
+(parts used to build the description. At the time it requests the server to build a new key-) 108 179 T
+(board description, a client may also request that the server use the new description inter-) 108 166 T
+(nally to replace the current keyboard description for a specific device, in which case the) 108 153 T
+(behavior of the device changes accordingly.) 108 140 T
+3 F
+(T) 213.85 528 T
+(able 20.2 XkbComponentNameRec Flags Bits) 220.76 528 T
+1 F
+(Component) 109 508 T
+(T) 109 494 T
+(ype) 114.78 494 T
+(Component Hints) 183.85 508 T
+(\050\337a) 183.85 494 T
+(gs\051) 199.73 494 T
+(Meaning) 328.3 501 T
+(V) 504.55 501 T
+(alue) 510.55 501 T
+2 11 Q
+(All Components) 109 479.67 T
+5 F
+-0.33 (XkbLC_Hidden) 183.85 479.67 S
+2 F
+(Do not present to user) 328.3 479.67 T
+(\0501L<<0\051) 504.55 479.67 T
+5 F
+-0.33 (XkbLC_Default) 183.85 465.67 S
+2 F
+(Def) 328.3 465.67 T
+(ault member of class) 344.68 465.67 T
+(\0501L<<1\051) 504.55 465.67 T
+5 F
+-0.33 (XkbLC_Partial) 183.85 451.67 S
+2 F
+(P) 328.3 451.67 T
+(artial component) 334.25 451.67 T
+(\0501L<<2\051) 504.55 451.67 T
+(K) 109 437.67 T
+(e) 116.67 437.67 T
+(ymap) 121.39 437.67 T
+(none) 183.85 437.67 T
+(K) 109 423.67 T
+(e) 116.67 423.67 T
+(ycodes) 121.39 423.67 T
+(none) 183.85 423.67 T
+(T) 109 409.67 T
+(ypes) 114.84 409.67 T
+(none) 183.85 409.67 T
+(Compatibility) 109 395.67 T
+(none) 183.85 395.67 T
+(Symbols) 109 381.67 T
+5 F
+-0.33 (XkbLC_AlphanumericKeys) 183.85 381.67 S
+2 F
+(Bindings primarily for alphanumeric) 328.3 381.67 T
+(k) 328.3 370.67 T
+(e) 333.69 370.67 T
+(yboard section) 338.41 370.67 T
+(\0501L<<8\051) 504.55 381.67 T
+5 F
+-0.33 (XkbLC_ModifierKeys) 183.85 356.67 S
+2 F
+(Bindings primarily for modi\336er k) 328.3 356.67 T
+(e) 475.47 356.67 T
+(ys) 480.19 356.67 T
+(\0501L<<9\051) 504.55 356.67 T
+5 F
+-0.33 (XkbLC_KeypadKeys) 183.85 342.67 S
+2 F
+(Bindings primarily for numeric k) 328.3 342.67 T
+(e) 474.24 342.67 T
+(ypad) 478.96 342.67 T
+(k) 328.3 331.67 T
+(e) 333.69 331.67 T
+(ys) 338.41 331.67 T
+(\0501L<<10\051) 504.55 342.67 T
+5 F
+-0.33 (XkbLC_FunctionKeys) 183.85 317.67 S
+2 F
+(Bindings primarily for function k) 328.3 317.67 T
+(e) 474.85 317.67 T
+(ys) 479.57 317.67 T
+(\0501L<<11\051) 504.55 317.67 T
+5 F
+-0.33 (XkbLC_AlternateGroup) 183.85 303.67 S
+2 F
+(Bindings for an alternate group) 328.3 303.67 T
+(\0501L<<12\051) 504.55 303.67 T
+(Geometry) 109 289.67 T
+(none) 183.85 289.67 T
+108 520 548.85 520 2 L
+V
+0.25 H
+0 Z
+N
+108 489 548.85 489 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "193" 205
+%%Page: "194" 206
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(194) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+2 12 Q
+(To build a new keyboard description from a set of named components, and to optionally) 108 712 T
+(have the server use the resulting description to replace an active one, use) 108 699 T
+1 F
+(XkbGetK) 459.91 699 T
+(e) 503.48 699 T
+(y-) 508.45 699 T
+(boar) 108 686 T
+(dByName) 130.22 686 T
+2 F
+(.) 176.88 686 T
+2 11 Q
+(XkbDescPtr) 108 665.67 T
+3 F
+(XkbGetK) 164.52 665.67 T
+(eyboardByName) 210.08 665.67 T
+2 F
+(\050) 288.91 665.67 T
+1 F
+(dpy) 292.57 665.67 T
+2 F
+(,) 307.74 665.67 T
+1 F
+(de) 313.24 665.67 T
+(vice_spec) 323.46 665.67 T
+2 F
+(,) 366.21 665.67 T
+1 F
+(names) 371.71 665.67 T
+2 F
+(,) 399.82 665.67 T
+1 F
+(want) 405.32 665.67 T
+2 F
+(,) 426.71 665.67 T
+1 F
+(need) 432.21 665.67 T
+2 F
+(,) 452.98 665.67 T
+1 F
+(load) 458.48 665.67 T
+2 F
+(\051) 478.04 665.67 T
+(Display *) 126 652.67 T
+1 F
+(dpy) 252 652.67 T
+2 F
+(;) 267.88 652.67 T
+(/* connection to X serv) 342 652.67 T
+(er */) 444.49 652.67 T
+(unsigned int) 126 639.67 T
+1 F
+(de) 252 639.67 T
+(vice_spec) 262.22 639.67 T
+2 F
+(;) 304.98 639.67 T
+(/* de) 342 639.67 T
+(vice ID, or) 363.42 639.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 413.51 639.67 S
+2 F
+( */) 492.16 639.67 T
+(XkbComponentNamesPtr) 126 626.67 T
+1 F
+(names) 252 626.67 T
+2 F
+(;) 280.11 626.67 T
+(/* names of components to fetch */) 342 626.67 T
+(unsigned int) 126 613.67 T
+1 F
+(want) 252 613.67 T
+2 F
+(;) 273.39 613.67 T
+(/* desired structures in returned record */) 342 613.67 T
+(unsigned int) 126 600.67 T
+1 F
+(need) 252 600.67 T
+2 F
+(;) 272.77 600.67 T
+(/* mandatory structures in returned record */) 342 600.67 T
+(Bool) 126 587.67 T
+1 F
+(load) 252 587.67 T
+2 F
+(;) 271.56 587.67 T
+(/*) 342 587.67 T
+5 12 Q
+-0.6 (True) 353.31 587.67 S
+2 11 Q
+( => load into) 379.71 587.67 T
+1 F
+(de) 439.17 587.67 T
+(vice_spec) 449.39 587.67 T
+2 F
+( */) 492.15 587.67 T
+1 12 Q
+-0.43 (names) 108 568 P
+2 F
+-0.43 ( contains a set of expressions describing the keyboard components the server should) 138.66 568 P
+-0.43 (use to build the new keyboard description.) 108 555 P
+1 F
+-0.43 (want) 311.61 555 P
+2 F
+-0.43 ( and) 334.95 555 P
+1 F
+-0.43 (need) 357.41 555 P
+2 F
+-0.43 ( are bit fields describing the parts) 380.06 555 P
+-0.05 (of the resulting keyboard description that should be present in the returned) 108 542 P
+5 F
+-0.1 -0.6 (XkbDescRec) 468.05 542 B
+2 F
+-0.05 (.) 534.05 542 P
+(The individual fields in) 108 521 T
+1 F
+(names) 223.33 521 T
+2 F
+( are) 253.99 521 T
+1 F
+(component e) 274.64 521 T
+(xpr) 335.39 521 T
+(essions) 350.94 521 T
+2 F
+( composed of keyboard compo-) 385.61 521 T
+(nent names \050no wildcarding as may be used in) 108 508 T
+1 F
+(XkbListComponents) 332.96 508 T
+2 F
+(\051, the special compo-) 429.64 508 T
+(nent name symbol \324%\325, and the special operator characters \324) 108 495 T
+5 F
+-0.6 (+) 395.92 495 S
+2 F
+(\325 and \324) 402.52 495 T
+5 F
+-0.6 (|) 433.84 495 S
+2 F
+(\325. A component) 440.44 495 T
+(expression is parsed left to right, as follows:) 108 482 T
+2 11 Q
+(\245) 126 461.67 T
+(The special component name \322) 139.68 461.67 T
+5 12 Q
+-0.6 (computed) 275.93 461.67 S
+2 11 Q
+(\323 may be used in) 328.73 461.67 T
+5 12 Q
+-0.6 (keycodes) 405.41 461.67 S
+2 11 Q
+( component) 458.21 461.67 T
+(e) 139.68 449.67 T
+(xpressions and refers to a component consisting of a set of k) 144.4 449.67 T
+(e) 409.77 449.67 T
+(ycodes computed auto-) 414.49 449.67 T
+(matically by the serv) 139.68 437.67 T
+(er as needed.) 231.48 437.67 T
+(\245) 126 425.67 T
+(The special component name \322) 139.68 425.67 T
+5 12 Q
+-0.6 (canonical) 275.93 425.67 S
+2 11 Q
+(\323 may be used in) 335.33 425.67 T
+5 12 Q
+-0.6 (types) 412.01 425.67 S
+2 11 Q
+( component) 445.01 425.67 T
+(e) 139.68 413.67 T
+(xpressions and refers to a partial component de\336ning the four standard k) 144.4 413.67 T
+(e) 462.93 413.67 T
+(y types:) 467.64 413.67 T
+5 12 Q
+-0.6 (ALPHABETIC) 139.68 401.67 S
+2 11 Q
+(,) 205.68 401.67 T
+5 12 Q
+-0.6 (ONE_LEVEL) 211.18 401.67 S
+2 11 Q
+(,) 270.58 401.67 T
+5 12 Q
+-0.6 (TWO_LEVEL) 276.08 401.67 S
+2 11 Q
+(, and) 335.48 401.67 T
+5 12 Q
+-0.6 (KEYPAD) 359.62 401.67 S
+2 11 Q
+(.) 399.22 401.67 T
+(\245) 126 389.67 T
+-0.17 (The special component name \324) 139.68 389.67 P
+5 12 Q
+-0.41 -0.6 (%) 274.03 389.67 B
+2 11 Q
+-0.17 (\325 refers to the k) 280.63 389.67 P
+-0.17 (e) 347.04 389.67 P
+-0.17 (yboard description for the de) 351.76 389.67 P
+-0.17 (vice spec-) 477.88 389.67 P
+(i\336ed in) 139.68 377.67 T
+1 12 Q
+(de) 173.3 377.67 T
+(vice_spec) 184.44 377.67 T
+2 11 Q
+( or the k) 231.09 377.67 T
+(e) 267.33 377.67 T
+(ymap names component. If a k) 272.05 377.67 T
+(e) 407.58 377.67 T
+(ymap names component) 412.3 377.67 T
+(is speci\336ed that does not be) 139.68 365.67 T
+(gin with \324+\325 or \324|\325 and does not contain \324) 260.81 365.67 T
+5 12 Q
+-0.6 (%) 437.55 365.67 S
+2 11 Q
+(\325, then \324) 444.15 365.67 T
+5 12 Q
+-0.6 (%) 478.67 365.67 S
+2 11 Q
+(\325 refers) 485.27 365.67 T
+(to the description generated by the k) 139.68 353.67 T
+(e) 299.65 353.67 T
+(ymap names component. Otherwise, it refers to) 304.37 353.67 T
+(the k) 139.68 341.67 T
+(e) 161.26 341.67 T
+(yboard description for) 165.98 341.67 T
+1 12 Q
+(de) 266.49 341.67 T
+(vice_spec) 277.64 341.67 T
+2 11 Q
+(.) 324.28 341.67 T
+(\245) 126 329.67 T
+-0.05 (The \324) 139.68 329.67 P
+5 12 Q
+-0.12 -0.6 (+) 163.15 329.67 B
+2 11 Q
+-0.05 (\325 operator speci\336es that the follo) 169.75 329.67 P
+-0.05 (wing component should) 311.89 329.67 P
+1 12 Q
+-0.05 (o) 420.21 329.67 P
+-0.05 (verride) 426.09 329.67 P
+2 11 Q
+-0.05 ( the currently) 460.75 329.67 P
+(assembled description; an) 139.68 317.67 T
+(y de\336nitions that are present in both components are tak) 253.17 317.67 T
+(en) 499.61 317.67 T
+(from the second.) 139.68 305.67 T
+(\245) 126 293.67 T
+(The \324) 139.68 293.67 T
+5 12 Q
+-0.6 (|) 163.2 293.67 S
+2 11 Q
+(\325 operator speci\336es that the ne) 169.8 293.67 T
+(xt speci\336ed component should) 301.91 293.67 T
+1 12 Q
+(augment) 438.79 293.67 T
+2 11 Q
+( the cur-) 480.12 293.67 T
+(rently assembled description; an) 139.68 281.67 T
+(y de\336nitions that are present in both components are) 281.58 281.67 T
+(tak) 139.68 269.67 T
+(en from the \336rst.) 153.01 269.67 T
+(\245) 126 257.67 T
+(If the component e) 139.68 257.67 T
+(xpression be) 222.3 257.67 T
+(gins with an operator) 277.43 257.67 T
+(, a leading \324) 370.17 257.67 T
+5 12 Q
+-0.6 (%) 422.11 257.67 S
+2 11 Q
+(\325 is implied.) 428.7 257.67 T
+(\245) 126 245.67 T
+(If an) 139.68 245.67 T
+(y unkno) 159.98 245.67 T
+(wn or ille) 195.45 245.67 T
+(g) 237.45 245.67 T
+(al characters appear an) 242.89 245.67 T
+(ywhere in the e) 343.2 245.67 T
+(xpression, the entire) 410.54 245.67 T
+(e) 139.68 233.67 T
+(xpression is in) 144.4 233.67 T
+(v) 207.52 233.67 T
+(alid and is ignored.) 212.74 233.67 T
+2 12 Q
+(For example, if) 108 215 T
+1 F
+(names->symbols) 184.66 215 T
+2 F
+( contained the expression \322+de\323, it specifies that the) 266.08 215 T
+(default member of the \322de\323 class of symbols should be applied to the current keyboard) 108 202 T
+(mapping, overriding any existing definitions \050it could also be written \322+de\050default\051\323\051.) 108 189 T
+(Here is a slightly more involved example: the expression) 108 168 T
+(\322acme\050ascii\051+de\050basic\051|iso9995-3\323 constructs a German \050de\051 mapping for the ASCII key-) 108 155 T
+-0.09 (board supplied by the \322acme\323 vendor. The new definition begins with the symbols for the) 108 142 P
+(ASCII keyboard for Acme \050) 108 129 T
+1 F
+(acme\050ascii\051) 242.63 129 T
+2 F
+(\051, overrides them with definitions for the basic) 298.61 129 T
+-0.02 (German keyboard \050) 108 116 P
+1 F
+-0.02 (de\050basic\051) 201.26 116 P
+2 F
+-0.02 (\051, and then applies the definitions from the default iso9995-3) 245.91 116 P
+(keyboard \050) 108 103 T
+1 F
+(iso9995-3) 159.65 103 T
+2 F
+(\051 to any undefined keys or groups of keys \050part three of the iso9995) 207.65 103 T
+(standard defines a common set of bindings for the secondary group, but allows national) 108 90 T
+(layouts to override those definitions where necessary\051.) 108 77 T
+FMENDPAGE
+%%EndPage: "194" 206
+%%Page: "195" 207
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(195) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+0 12 Q
+(Note) 126 712.67 T
+2 11 Q
+(The interpretation of the abo) 162 712.67 T
+(v) 287.7 712.67 T
+(e e) 293.03 712.67 T
+(xpression components \050acme, ascii, de, basic,) 305.39 712.67 T
+(iso9995-3\051 is not de\336ned by Xkb; only the operations and their ordering are.) 162 700.67 T
+2 12 Q
+(Note that the presence of a keymap) 108 680 T
+1 F
+(names) 280.28 680 T
+2 F
+( component that does not contain \324) 310.94 680 T
+5 F
+-0.6 (%) 476.93 680 S
+2 F
+(\325 \050either) 483.53 680 T
+(explicit or implied by virtue of an expression starting with an operator\051 indicates a) 108 667 T
+(description that is independent of the keyboard description for the device specified in) 108 654 T
+1 F
+-0.43 (de) 108 641 P
+-0.43 (vice_spec) 119.15 641 P
+2 F
+-0.43 (. The same is true of requests in which the keymap names component is empty) 165.79 641 P
+(and all five other names components contain expressions void of references to \324) 108 628 T
+5 F
+-0.6 (%) 490.58 628 S
+2 F
+(\325.) 497.18 628 T
+(Requests of this form allow you to deal with keyboard definitions independent of any) 108 615 T
+(actual device.) 108 602 T
+-0.18 (The server parses all non-) 108 581 P
+5 F
+-0.39 -0.6 (NULL) 231.25 581 B
+2 F
+-0.18 ( fields in) 257.65 581 P
+1 F
+-0.18 (names) 302.12 581 P
+2 F
+-0.18 ( and uses them to build a keyboard descrip-) 332.78 581 P
+(tion. However, before parsing the expressions in) 108 568 T
+1 F
+(names) 343.62 568 T
+2 F
+(, the server ORs the bits in) 374.28 568 T
+1 F
+(want) 504.94 568 T
+2 F
+(and) 108 555 T
+1 F
+(need) 128.33 555 T
+2 F
+( together and examines the result in relationship to the expressions in) 150.98 555 T
+1 F
+(names) 485.62 555 T
+2 F
+(.) 516.28 555 T
+-0.27 (Table 20.3 identifies the components that are required for each of the possible bits in) 108 542 P
+1 F
+-0.27 (want) 513.93 542 P
+2 F
+(or) 108 529 T
+1 F
+(need) 121 529 T
+2 F
+(. If a required component has not been specified in the) 143.65 529 T
+1 F
+(names) 407.59 529 T
+2 F
+( structure \050the corre-) 438.25 529 T
+(sponding field is) 108 516 T
+5 F
+-0.6 (NULL) 191 516 S
+2 F
+(\051, the server substitutes the expression \322) 217.4 516 T
+5 F
+-0.6 (%) 408.37 516 S
+2 F
+(\323, resulting in the compo-) 414.97 516 T
+-0.37 (nent values being taken from) 108 503 P
+1 F
+-0.37 (de) 248.48 503 P
+-0.37 (vice_spec) 259.63 503 P
+2 F
+-0.37 (. In addition, if) 306.27 503 P
+1 F
+-0.37 (load) 379.47 503 P
+2 F
+-0.37 ( is) 400.81 503 P
+5 F
+-0.8 -0.6 (True) 414.08 503 B
+2 F
+-0.37 (, the server modifies) 440.48 503 P
+1 F
+(names) 108 490 T
+2 F
+( if necessary \050again using a \322) 138.66 490 T
+5 F
+-0.6 (%) 277.28 490 S
+2 F
+(\323 entry\051 to ensure all of the following fields are) 283.88 490 T
+(non-) 108 477 T
+5 F
+-0.6 (NULL) 130 477 S
+2 F
+(:) 156.4 477 T
+1 F
+(types) 162.73 477 T
+2 F
+(,) 187.39 477 T
+1 F
+(keycodes) 193.39 477 T
+2 F
+(,) 236.7 477 T
+1 F
+(symbols) 242.7 477 T
+2 F
+(, and) 281.36 477 T
+1 F
+(compat) 307.69 477 T
+2 F
+(.) 343.02 477 T
+1 F
+(need) 108 258 T
+2 F
+( specifies a set of keyboard components that the server must be able to resolve in) 130.66 258 T
+-0.18 (order for) 108 245 P
+1 F
+-0.18 (XkbGetK) 152.95 245 P
+-0.18 (e) 196.52 245 P
+-0.18 (yboar) 201.49 245 P
+-0.18 (dByName) 229.04 245 P
+2 F
+-0.18 ( to succeed; if any of the components specified in) 275.7 245 P
+1 F
+-0.18 (need) 514.52 245 P
+2 F
+(cannot be successfully resolved,) 108 232 T
+1 F
+(XkbGetK) 265.63 232 T
+(e) 309.2 232 T
+(yboar) 314.17 232 T
+(dByName) 341.72 232 T
+2 F
+( fails.) 388.38 232 T
+1 F
+-0.13 (want) 108 211 P
+2 F
+-0.13 ( specifies a set of keyboard components that the server should attempt to resolve, but) 131.34 211 P
+-0.28 (that are not mandatory. If the server is unable to resolve any of these components,) 108 198 P
+1 F
+-0.28 (XkbGet-) 500.02 198 P
+-0.41 (K) 108 185 P
+-0.41 (e) 115.58 185 P
+-0.41 (yboar) 120.55 185 P
+-0.41 (dByName) 148.1 185 P
+2 F
+-0.41 ( still succeeds. Bits specified in) 194.76 185 P
+1 F
+-0.41 (want) 345.97 185 P
+2 F
+-0.41 ( that are also specified in) 369.31 185 P
+1 F
+-0.41 (need) 489.5 185 P
+2 F
+-0.41 ( have) 512.16 185 P
+(no effect in the context of) 108 172 T
+1 F
+(want) 234.64 172 T
+2 F
+(.) 257.98 172 T
+(If) 108 151 T
+1 F
+(load) 118.99 151 T
+2 F
+( is) 140.33 151 T
+5 F
+-0.6 (True) 154.33 151 S
+2 F
+(, the server updates its keyboard description for) 180.73 151 T
+1 F
+(de) 411.68 151 T
+(vice_spec) 422.83 151 T
+2 F
+( to match the) 469.48 151 T
+(result of the keyboard description just built. If load is) 108 138 T
+5 F
+-0.6 (False) 366.31 138 S
+2 F
+(, the server\325s description for) 399.31 138 T
+(device) 108 125 T
+1 F
+(de) 142.32 125 T
+(vice_spec) 153.47 125 T
+2 F
+( is not updated. In all cases, the parts specified by) 200.11 125 T
+1 F
+(want) 441.07 125 T
+2 F
+( and) 464.41 125 T
+1 F
+(need) 487.74 125 T
+2 F
+( from) 510.4 125 T
+(the just-built keyboard description are returned.) 108 112 T
+(The) 108 91 T
+1 F
+(names) 129.66 91 T
+2 F
+( structure in an) 160.32 91 T
+5 F
+-0.6 (XkbDescRec) 234.97 91 S
+2 F
+( keyboard description record \050see Chapter 18\051) 300.97 91 T
+(contains one field for each of the five component types used to build a keyboard descrip-) 108 78 T
+3 F
+(T) 127.58 457 T
+(able 20.3 W) 134.48 457 T
+(ant and Need Mask Bits and Requir) 197.04 457 T
+(ed Names Components) 380.84 457 T
+1 F
+(want or need mask bit) 123.4 437 T
+(Requir) 285.4 437 T
+(ed names Components) 317.62 437 T
+(value) 447.4 437 T
+2 11 Q
+(XkbGBN_T) 123.4 422.67 T
+(ypesMask) 176.9 422.67 T
+(T) 285.4 422.67 T
+(ypes) 291.24 422.67 T
+(\0501L<<0\051) 447.4 422.67 T
+(XkbGBN_CompatMapMask) 123.4 408.67 T
+(Compat) 285.4 408.67 T
+(\0501L<<1\051) 447.4 408.67 T
+(XkbGBN_ClientSymbolsMask) 123.4 394.67 T
+(T) 285.4 394.67 T
+(ypes + Symbols + K) 291.24 394.67 T
+(e) 380.99 394.67 T
+(ycodes) 385.71 394.67 T
+(\0501L<<2\051) 447.4 394.67 T
+(XkbGBN_Serv) 123.4 380.67 T
+(erSymbolsMask) 191.06 380.67 T
+(T) 285.4 380.67 T
+(ypes + Symbols + K) 291.24 380.67 T
+(e) 380.99 380.67 T
+(ycodes) 385.71 380.67 T
+(\0501L<<3\051) 447.4 380.67 T
+(XkbGBN_SymbolsMask) 123.4 366.67 T
+(Symbols) 285.4 366.67 T
+(\0501L<<1\051) 447.4 366.67 T
+(XkbGBN_IndicatorMapMask) 123.4 352.67 T
+(Compat) 285.4 352.67 T
+(\0501L<<4\051) 447.4 352.67 T
+(XkbGBN_K) 123.4 338.67 T
+(e) 178.73 338.67 T
+(yNamesMask) 183.45 338.67 T
+(K) 285.4 338.67 T
+(e) 293.07 338.67 T
+(ycodes) 297.79 338.67 T
+(\0501L<<5\051) 447.4 338.67 T
+(XkbGBN_GeometryMask) 123.4 324.67 T
+(Geometry) 285.4 324.67 T
+(\0501L<<6\051) 447.4 324.67 T
+(XkbGBN_OtherNamesMask) 123.4 310.67 T
+(T) 285.4 310.67 T
+(ypes + Symbols + K) 291.24 310.67 T
+(e) 380.99 310.67 T
+(ycodes +) 385.71 310.67 T
+(Compat + Geometry) 286.15 297.67 T
+(\0501L<<7\051) 447.4 310.67 T
+(XkbGBN_AllComponentsMask) 123.4 283.67 T
+(\0500xf) 447.4 283.67 T
+(f\051) 465.45 283.67 T
+122.4 449 489.6 449 2 L
+V
+0.5 H
+0 Z
+N
+122.4 432 489.6 432 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "195" 207
+%%Page: "196" 208
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(196) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+2 12 Q
+(tion. When a keyboard description is built from a set of database components, the corre-) 108 712 T
+(sponding fields in this) 108 699 T
+1 F
+(names) 217.34 699 T
+2 F
+( structure are set to match the expressions used to build the) 248 699 T
+(component.) 108 686 T
+(The entire process of building a new keyboard description from the server database of) 108 665 T
+(components and returning all or part of it is diagrammed in Figure 20.1:) 108 652 T
+3 F
+(Figur) 117.88 149 T
+(e 20.1 Building a New K) 146.33 149 T
+(eyboard Description fr) 269.38 149 T
+(om the Ser) 385.81 149 T
+(v) 441.01 149 T
+(er Database) 446.89 149 T
+2 F
+(The information returned to the client in the) 108 121 T
+5 F
+-0.6 (XkbDescRec) 321.97 121 S
+2 F
+( is essentially the result of a) 387.97 121 T
+(series of calls to extract information from a fictitious device whose description matches) 108 108 T
+83.06 170 528.94 648 C
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+255.81 180.96 353.31 238.71 R
+0.5 H
+0 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+252.81 257.18 356.31 307.43 R
+N
+260.31 374.61 348.81 424.86 R
+N
+253.94 569 355.19 627.5 R
+N
+259.19 572 349.94 624.5 R
+7 X
+V
+2 10 Q
+0 X
+(Augment names to) 266.79 617.83 T
+(supply component) 267.76 607.83 T
+(names required by) 267.63 597.83 T
+-0.26 (want and need but not) 260.4 587.83 P
+(supplied in request) 266.79 577.83 T
+264.44 378.73 344.69 420.73 R
+7 X
+V
+0 X
+(Build keyboard) 273.59 414.06 T
+(description from) 271.37 404.06 T
+(expressions in) 276.09 394.06 T
+(names) 291.79 384.06 T
+259.19 183.89 349.94 235.79 R
+7 X
+V
+0 X
+(Build keyboard) 273.59 229.13 T
+(description for client) 262.9 219.13 T
+(by extracting struc-) 265.68 209.13 T
+-0.56 (tures specified in want) 259.43 199.13 P
+(and need) 286.65 189.13 T
+256.94 261.3 352.19 303.3 R
+7 X
+V
+0 X
+(Replace device_spec) 262.77 296.64 T
+(active keyboard) 272.77 286.64 T
+-0.23 (description with newly) 258.73 276.64 P
+(built description) 271.92 266.64 T
+(Keyboard Description) 416.36 290.85 T
+(for device_spec) 416.36 279.79 T
+(Keyboard) 435.31 479.47 T
+(Component) 435.31 468.41 T
+(Database) 435.31 457.34 T
+(New Keyboard) 428.99 409.21 T
+(Description) 428.99 398.14 T
+(Keyboard) 438.27 219.87 T
+(Description) 438.27 208.81 T
+(returned to) 438.27 197.74 T
+(Initial Request:) 113.7 498.31 T
+(device_spec) 113.7 487.51 T
+(names) 113.7 476.71 T
+(want) 113.7 465.91 T
+(need) 113.7 455.11 T
+(load) 113.7 444.3 T
+253.94 443.32 355.19 501.82 R
+N
+259.19 446.32 349.94 498.82 R
+7 X
+V
+0 X
+(Augment names to) 266.79 492.15 T
+(supply required com-) 261.79 482.15 T
+(ponent names not sup-) 259.43 472.15 T
+(plied in request) 273.73 462.15 T
+(load) 295.49 532.03 T
+278.63 536.04 305.34 551.79 332.06 536.04 305.34 520.29 4 Y
+N
+241.14 587.93 238.68 589.61 246.99 596.5 243.59 586.25 4 Y
+N
+241.14 587.93 238.68 589.61 246.99 596.5 243.59 586.25 4 Y
+V
+174.18 489.94 176.64 488.26 168.33 481.37 171.72 491.62 4 Y
+N
+174.18 489.94 176.64 488.26 168.33 481.37 171.72 491.62 4 Y
+V
+240.99 587.73 174.32 490.14 2 L
+N
+180.98 478.75 180.98 475.77 170.6 478.75 180.98 481.72 4 Y
+N
+180.98 478.75 180.98 475.77 170.6 478.75 180.98 481.72 4 Y
+V
+236.22 478.75 236.22 481.72 246.6 478.75 236.22 475.77 4 Y
+N
+236.22 478.75 236.22 481.72 246.6 478.75 236.22 475.77 4 Y
+V
+181.23 478.75 235.97 478.75 2 L
+N
+238.55 423.74 240.36 426.1 246.78 417.42 236.74 421.38 4 Y
+N
+238.55 423.74 240.36 426.1 246.78 417.42 236.74 421.38 4 Y
+V
+166.88 478.75 238.35 423.89 2 L
+N
+408.72 402.25 408.72 405.23 419.1 402.25 408.72 399.27 4 Y
+N
+408.72 402.25 408.72 405.23 419.1 402.25 408.72 399.27 4 Y
+V
+359.25 402.25 408.47 402.25 2 L
+N
+366.88 417.45 368.32 414.84 357.8 412.44 365.45 420.05 4 Y
+N
+366.88 417.45 368.32 414.84 357.8 412.44 365.45 420.05 4 Y
+V
+418.88 446.12 367.1 417.57 2 L
+N
+372.67 307.3 375.17 305.69 367.06 298.57 370.17 308.91 4 Y
+N
+372.67 307.3 375.17 305.69 367.06 298.57 370.17 308.91 4 Y
+V
+417.19 376.56 372.8 307.51 2 L
+N
+391.65 288.25 391.65 291.23 402.03 288.25 391.65 285.27 4 Y
+N
+391.65 288.25 391.65 291.23 402.03 288.25 391.65 285.27 4 Y
+V
+366.94 288.25 391.4 288.25 2 L
+N
+366.8 239.52 369.48 238.22 362.28 230.18 364.13 240.82 4 Y
+N
+366.8 239.52 369.48 238.22 362.28 230.18 364.13 240.82 4 Y
+V
+430.13 370.13 366.91 239.74 2 L
+N
+416.59 221.31 416.59 224.29 426.97 221.31 416.59 218.34 4 Y
+N
+416.59 221.31 416.59 224.29 426.97 221.31 416.59 218.34 4 Y
+V
+364.88 221.31 416.34 221.31 2 L
+N
+109.69 439.9 179.07 509.46 R
+N
+430.5 451.62 486.75 491.94 R
+N
+425.16 381.27 493.6 421.58 R
+N
+411.88 274.16 509.38 303.22 R
+N
+434.69 181.24 490.19 231.87 R
+N
+305.01 562.22 307.98 562.22 305.01 551.84 302.03 562.22 4 Y
+N
+305.01 562.22 307.98 562.22 305.01 551.84 302.03 562.22 4 Y
+V
+305.01 568.75 305.01 562.47 2 L
+N
+305.51 512.97 308.48 512.97 305.51 502.59 302.53 512.97 4 Y
+N
+305.51 512.97 308.48 512.97 305.51 502.59 302.53 512.97 4 Y
+V
+305.51 519.5 305.51 513.22 2 L
+N
+305.81 367.83 308.79 367.83 305.81 357.45 302.84 367.83 4 Y
+N
+305.81 367.83 308.79 367.83 305.81 357.45 302.84 367.83 4 Y
+V
+305.81 374.36 305.81 368.08 2 L
+N
+305.06 318.58 308.04 318.58 305.06 308.2 302.09 318.58 4 Y
+N
+305.06 318.58 308.04 318.58 305.06 308.2 302.09 318.58 4 Y
+V
+305.06 325.11 305.06 318.83 2 L
+N
+303.31 249.15 306.29 249.15 303.31 238.77 300.34 249.15 4 Y
+N
+303.31 249.15 306.29 249.15 303.31 238.77 300.34 249.15 4 Y
+V
+303.31 255.68 303.31 249.4 2 L
+N
+304.44 436.04 307.42 436.04 304.44 425.66 301.46 436.04 4 Y
+N
+304.44 436.04 307.42 436.04 304.44 425.66 301.46 436.04 4 Y
+V
+304.44 442.57 304.44 436.29 2 L
+N
+315.04 433.12 315.04 430.14 304.66 433.12 315.04 436.1 4 Y
+N
+315.04 433.12 315.04 430.14 304.66 433.12 315.04 436.1 4 Y
+V
+333.76 536.25 382.51 536.25 382.51 433.12 315.29 433.12 4 L
+N
+292.66 250.62 292.66 253.59 303.04 250.62 292.66 247.64 4 Y
+N
+292.66 250.62 292.66 253.59 303.04 250.62 292.66 247.64 4 Y
+V
+277.69 341.99 225.63 341.99 225.63 250.62 292.41 250.62 4 L
+N
+(True) 310.32 510.93 T
+(True) 310.82 315.74 T
+(False) 337.57 543.06 T
+(False) 250.88 350.37 T
+(load) 295.05 337.47 T
+278.19 341.47 304.91 357.22 331.63 341.47 304.91 325.72 4 Y
+N
+(\050Temporary\051) 428.99 387.08 T
+(Client) 438.56 186.68 T
+109.5 473.38 179.25 473.38 2 L
+N
+109.87 484.19 179.05 484.19 2 L
+N
+109.95 462.56 179.14 462.56 2 L
+N
+110.12 451.75 179.31 451.75 2 L
+N
+110.04 495 179.23 495 2 L
+N
+243.94 231.63 246.76 232.57 247.22 221.79 241.11 230.69 4 Y
+N
+243.94 231.63 246.76 232.57 247.22 221.79 241.11 230.69 4 Y
+V
+165 468.43 243.86 231.87 2 L
+N
+246.04 213.56 248.79 214.69 249.97 203.95 243.29 212.43 4 Y
+N
+246.04 213.56 248.79 214.69 249.97 203.95 243.29 212.43 4 Y
+V
+146.25 457.18 245.95 213.79 2 L
+N
+0 0 612 792 C
+FMENDPAGE
+%%EndPage: "196" 208
+%%Page: "197" 209
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(197) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(20 Serv) 333.18 744.87 T
+(er Database of K) 372.43 744.87 T
+(e) 446.37 744.87 T
+(yboard Components) 451.09 744.87 T
+2 12 Q
+(the one just built. The calls corresponding to each of the mask bits are summarized in) 108 712 T
+(Table 20.4, together with the) 108 699 T
+5 F
+-0.6 (XkbDescRec) 249.65 699 S
+2 F
+( components that are filled in.) 315.65 699 T
+(There is no way to determine which components specified in) 108 398 T
+1 F
+(want) 403.28 398 T
+2 F
+( \050but not in) 426.62 398 T
+1 F
+(need) 482.63 398 T
+2 F
+(\051 were) 505.28 398 T
+(actually fetched, other than breaking the call into successive calls to) 108 385 T
+1 F
+(XkbGetK) 437.27 385 T
+(e) 480.84 385 T
+(yboar) 485.81 385 T
+(d-) 513.36 385 T
+(ByName) 108 372 T
+2 F
+( and specifying individual components.) 148.66 372 T
+1 F
+(XkbGetK) 108 351 T
+(e) 151.57 351 T
+(yboar) 156.54 351 T
+(dByName) 184.09 351 T
+2 F
+( always sets) 230.75 351 T
+1 F
+(min_key_code) 291.07 351 T
+2 F
+( and) 359.71 351 T
+1 F
+(max_key_code) 383.04 351 T
+2 F
+( in the returned) 453.67 351 T
+5 F
+-0.6 (XkbDescRec) 108 338 S
+2 F
+( structure.) 174 338 T
+1 F
+0 (XkbGetK) 108 317 P
+0 (e) 151.57 317 P
+0 (yboar) 156.54 317 P
+0 (dByName) 184.09 317 P
+2 F
+0 ( is synchronous; it sends the request to the server to build a new) 230.75 317 P
+(keyboard description and waits for the reply. If successful, the return value is non-) 108 304 T
+5 F
+-0.6 (NULL) 503.58 304 S
+2 F
+(.) 529.98 304 T
+1 F
+(XkbGetK) 108 291 T
+(e) 151.57 291 T
+(yboar) 156.54 291 T
+(dByName) 184.09 291 T
+2 F
+( generates a) 230.75 291 T
+5 F
+-0.6 (BadMatch) 290.39 291 S
+2 F
+( protocol error if errors are encountered) 343.19 291 T
+(when building the keyboard description.) 108 278 T
+(If you simply want to obtain information about the current keyboard device, rather than) 108 257 T
+(generating a new keyboard description from elements in the server database, use) 108 244 T
+1 F
+(XkbGet-) 497.57 244 T
+(K) 108 231 T
+(e) 115.58 231 T
+(yboar) 120.55 231 T
+(d) 148.1 231 T
+2 F
+( \050see section 6.2\051.) 154.1 231 T
+2 11 Q
+(XkbDescPtr) 108 210.67 T
+3 F
+(XkbGetK) 164.52 210.67 T
+(eyboard) 210.08 210.67 T
+2 F
+(\050) 248.58 210.67 T
+1 F
+(dpy) 252.24 210.67 T
+2 F
+(,) 267.41 210.67 T
+1 F
+(whic) 272.91 210.67 T
+(h) 293.53 210.67 T
+2 F
+(,) 299.03 210.67 T
+1 F
+(de) 304.53 210.67 T
+(vice_spec) 314.74 210.67 T
+2 F
+(\051) 357.5 210.67 T
+(Display *) 126 197.67 T
+1 F
+(dpy) 200.25 197.67 T
+2 F
+(;) 216.13 197.67 T
+(/* connection to X serv) 306 197.67 T
+(er */) 408.49 197.67 T
+(unsigned int) 126 184.67 T
+1 F
+(whic) 200.25 184.67 T
+(h) 220.86 184.67 T
+2 F
+(;) 226.36 184.67 T
+-0.23 (/* mask of components of) 306 184.67 P
+5 F
+-0.51 -0.55 (XkbDescRec) 421.85 184.67 B
+2 F
+-0.23 ( of interest */) 482.35 184.67 P
+(unsigned int) 126 171.67 T
+1 F
+(de) 200.25 171.67 T
+(vice_spec) 210.47 171.67 T
+2 F
+(;) 253.23 171.67 T
+(/* de) 306 171.67 T
+(vice ID */) 327.42 171.67 T
+1 12 Q
+(XkbGetK) 108 152 T
+(e) 151.57 152 T
+(yboar) 156.54 152 T
+(d) 184.09 152 T
+2 F
+( is used to read the current description for one or more components of a) 190.09 152 T
+(keyboard device. It calls) 108 139 T
+1 F
+(XkbGetK) 228.3 139 T
+(e) 271.87 139 T
+(yboar) 276.84 139 T
+(dByName) 304.39 139 T
+2 F
+( as follows:) 351.05 139 T
+1 F
+(XkbGetK) 108 118 T
+(e) 151.57 118 T
+(yboar) 156.54 118 T
+(dByName) 184.09 118 T
+2 F
+(\050) 230.75 118 T
+1 11 Q
+(dpy) 234.74 118 T
+2 12 Q
+(,) 250.63 118 T
+1 11 Q
+(de) 256.63 118 T
+(vice_spec) 266.85 118 T
+2 12 Q
+(,) 309.6 118 T
+5 F
+-0.6 (NULL) 315.6 118 S
+2 F
+(,) 342 118 T
+1 11 Q
+(whic) 348 118 T
+(h) 368.62 118 T
+2 12 Q
+(,) 374.12 118 T
+1 11 Q
+(whic) 380.12 118 T
+(h) 400.73 118 T
+2 12 Q
+(,) 406.23 118 T
+5 F
+-0.6 (False) 412.23 118 S
+2 F
+(\051.) 445.23 118 T
+3 F
+(T) 127.96 679 T
+(able 20.4 XkbDescRec Components Retur) 134.86 679 T
+(ned f) 351.99 679 T
+(or V) 377.36 679 T
+(alues of W) 399.25 679 T
+(ant & Needs) 452.47 679 T
+1 F
+(Request \050want+need\051) 53.2 659 T
+(F) 200.8 659 T
+(ills in Xkb components) 207.59 659 T
+(Equivalent Function Call) 326.8 659 T
+2 11 Q
+(XkbGBN_T) 53.2 644.67 T
+(ypesMask) 106.7 644.67 T
+(map.types) 200.8 644.67 T
+(XkbGetUpdatedMap\050dp) 326.8 644.67 T
+(y) 433.61 644.67 T
+(, XkbT) 438.39 644.67 T
+(ypesMask, Xkb\051) 468.68 644.67 T
+(XkbGBN_Serv) 53.2 630.67 T
+(erSymbolsMask) 120.86 630.67 T
+(serv) 200.8 630.67 T
+(er) 218.96 630.67 T
+(XkbGetUpdatedMap\050dp) 326.8 630.67 T
+(y) 433.61 630.67 T
+(, XkbAllClientInfoMask, Xkb\051) 438.39 630.67 T
+(XkbGBN_ClientSymbolsMask) 53.2 616.67 T
+(map, including map.types) 200.8 616.67 T
+(XkbGetUpdatedMap\050dp) 326.8 616.67 T
+(y) 433.61 616.67 T
+(, XkbAllServ) 438.39 616.67 T
+(erInfoMask, Xkb\051) 496.89 616.67 T
+(XkbGBN_IndicatorMaps) 53.2 602.67 T
+(indicators) 200.8 602.67 T
+(XkbGetIndicatorMap\050dp) 326.8 602.67 T
+(y) 436.05 602.67 T
+(, XkbAllIndicators, Xkb\051) 440.84 602.67 T
+(XkbGBN_CompatMapMask) 53.2 588.67 T
+(compat) 200.8 588.67 T
+(XkbGetCompatMap\050dp) 326.8 588.67 T
+(y) 431.18 588.67 T
+(, XkbAllCompatMask, Xkb\051) 435.96 588.67 T
+(XkbGBN_GeometryMask) 53.2 574.67 T
+(geom) 200.8 574.67 T
+(XkbGetGeometry\050dp) 326.8 574.67 T
+(y) 420.17 574.67 T
+(, Xkb\051) 424.95 574.67 T
+(XkbGBN_K) 53.2 560.67 T
+(e) 108.53 560.67 T
+(yNamesMask) 113.25 560.67 T
+(names.k) 200.8 560.67 T
+(e) 237.04 560.67 T
+(ys) 241.76 560.67 T
+(names.k) 200.8 549.67 T
+(e) 237.04 549.67 T
+(y_aliases) 241.76 549.67 T
+(XkbGetNames\050dp) 326.8 560.67 T
+(y) 406.73 560.67 T
+(,) 411.51 560.67 T
+2 12 Q
+(XkbKeyNamesMask |) 417.01 560.67 T
+(XkbKeyAliasesMask) 335.8 547.67 T
+2 11 Q
+(, Xkb\051) 438.45 547.67 T
+(XkbGBN_OtherNamesMask) 53.2 533.67 T
+(names.k) 200.8 533.67 T
+(e) 237.04 533.67 T
+(ycodes) 241.76 533.67 T
+(names.geometry) 200.8 522.67 T
+(names.symbols) 200.8 511.67 T
+(names.types) 200.8 500.67 T
+(map.types[*].lvl_names[*]) 200.8 489.67 T
+(names.compat) 200.8 478.67 T
+(names.vmods) 200.8 467.67 T
+(names.indicators) 200.8 456.67 T
+(names.groups) 200.8 445.67 T
+(names.radio_groups) 200.8 434.67 T
+(names.ph) 200.8 423.67 T
+(ys_symbols) 242.6 423.67 T
+(XkbGetNames\050dp) 326.8 533.67 T
+(y) 406.73 533.67 T
+(, XkbAllNamesMask &) 411.51 533.67 T
+(~\050) 335.8 520.67 T
+2 12 Q
+(XkbKeyNamesMask | XkbKeyAliasesMask) 345.41 520.67 T
+2 11 Q
+(\051,) 557.11 520.67 T
+(Xkb\051) 335.8 507.67 T
+52.2 671 577.8 671 2 L
+V
+0.5 H
+0 Z
+N
+52.2 654 577.8 654 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "197" 209
+%%Page: "198" 210
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(198) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+0 14 Q
+(21) 72 710.67 T
+(Attac) 108 710.67 T
+(hing Xkb Actions to X Input Extension De) 142.86 710.67 T
+(vices) 418.03 710.67 T
+2 12 Q
+(The X input extension allows an X server to support multiple keyboards, as well as other) 108 688 T
+(input devices, in addition to the core X keyboard and pointer. The input extension catego-) 108 675 T
+-0.07 (rizes devices by grouping them into classes. Keyboards and other input devices with keys) 108 662 P
+(are classified as) 108 649 T
+5 F
+(KeyClass) 186.97 649 T
+2 F
+( devices by the input extension. Other types of devices sup-) 244.57 649 T
+(ported by the input extension include, but are not limited to: mice, tablets, touchscreens,) 108 636 T
+-0.27 (barcode readers, button boxes, trackballs, identifier devices, data gloves, and eye trackers.) 108 623 P
+-0.23 (Xkb provides additional control over all X input extension devices, whether they are) 108 610 P
+5 F
+-0.51 -0.6 (Key-) 513.6 610 B
+-0.6 (Class) 108 597 S
+2 F
+( devices or not, as well as the core keyboard and pointer.) 141 597 T
+(If an X server implements support for both the input extension and Xkb, the server imple-) 108 576 T
+(mentor determines whether interaction between Xkb and the input extension is allowed.) 108 563 T
+(Implementors are free to restrict the effects of Xkb to only the core X keyboard device or) 108 550 T
+(allow interaction between Xkb and the input extension.) 108 537 T
+(Several types of interaction between Xkb and the input extension are defined by Xkb.) 108 516 T
+(Some or all may be allowed by the X server implementation.) 108 503 T
+-0.1 (Regardless of whether the server allows interaction between Xkb and the input extension,) 108 482 P
+(the following access is provided:) 108 469 T
+2 11 Q
+(\245) 126 448.67 T
+(Xkb functionality for the core X k) 139.68 448.67 T
+(e) 289.87 448.67 T
+(yboard de) 294.59 448.67 T
+(vice and its mapping is accessed via the) 338 448.67 T
+(functions described in the other chapters of this speci\336cation.) 139.68 436.67 T
+(\245) 126 424.67 T
+(Xkb functionality for the core X pointer de) 139.68 424.67 T
+(vice is accessed via the) 328.51 424.67 T
+1 F
+(XkbGetDe) 433.28 424.67 T
+(viceInfo) 478.93 424.67 T
+2 F
+(and) 139.68 412.67 T
+1 F
+(XkbSetDe) 158.31 412.67 T
+(viceInfo) 201.52 412.67 T
+2 F
+( functions described in this chapter) 236.95 412.67 T
+(.) 390.02 412.67 T
+2 12 Q
+(If all types of interaction are allowed between Xkb and the input extension, the following) 108 394 T
+(additional access is provided:) 108 381 T
+2 11 Q
+(\245) 126 360.67 T
+-0.05 (If allo) 139.68 360.67 P
+-0.05 (wed, Xkb functionality for additional) 165.93 360.67 P
+5 F
+-0.12 -0.33 (KeyClass) 332.49 360.67 B
+2 F
+-0.05 ( de) 382.65 360.67 P
+-0.05 (vices supported by the input) 395.46 360.67 P
+(e) 139.68 348.67 T
+(xtension is accessed via those same functions.) 144.4 348.67 T
+(\245) 126 336.67 T
+-0.12 (If allo) 139.68 336.67 P
+-0.12 (wed, Xkb functionality for non-) 165.86 336.67 P
+5 F
+-0.28 -0.33 (KeyClass) 305.6 336.67 B
+2 F
+-0.12 ( de) 355.76 336.67 P
+-0.12 (vices supported by the input e) 368.49 336.67 P
+-0.12 (xten-) 499.39 336.67 P
+(sion is also accessed via the) 139.68 324.67 T
+1 F
+(XkbGetDe) 264.94 324.67 T
+(viceInfo) 310.59 324.67 T
+2 F
+(and) 348.77 324.67 T
+(X) 367.4 324.67 T
+1 F
+(kbSetDe) 375.34 324.67 T
+(viceInfo) 411.83 324.67 T
+2 F
+(functions) 450.01 324.67 T
+(described in this chapter) 139.68 312.67 T
+(.) 246.3 312.67 T
+2 12 Q
+-0.22 (Each device has an X Input Extension device ID. Each device may have several classes of) 108 294 P
+-0.04 (feedback. For example, there are two types of feedbacks that can generate bells: bell feed-) 108 281 P
+(back and keyboard feedback \050) 108 268 T
+5 F
+-0.6 (BellFeedbackClass) 251.94 268 S
+2 F
+( and) 364.14 268 T
+5 F
+-0.6 (KbdFeedbackClass) 387.47 268 S
+2 F
+(\051. A) 493.07 268 T
+(device can have more than one feedback of each type; the feedback ID identifies the par-) 108 255 T
+(ticular feedback within its class.) 108 242 T
+(A keyboard feedback has:) 108 221 T
+2 11 Q
+(\245) 126 200.67 T
+(Auto-repeat status \050global and per k) 139.68 200.67 T
+(e) 297.51 200.67 T
+(y\051) 302.23 200.67 T
+(\245) 126 188.67 T
+(32 LEDs) 139.68 188.67 T
+(\245) 126 176.67 T
+(A bell) 139.68 176.67 T
+2 12 Q
+(An indicator feedback has:) 108 158 T
+2 11 Q
+(\245) 126 137.67 T
+(Up to 32 LEDs) 139.68 137.67 T
+2 12 Q
+(If the input extension is present and the server allows interaction between the input exten-) 108 119 T
+-0.35 (sion and Xkb, then the core keyboard, the core keyboard indicators, and the core keyboard) 108 106 P
+-0.17 (bells may each be addressed using an appropriate device spec, class, and ID. The constant) 108 93 P
+5 F
+-0.6 (XkbXIDfltID) 108 80 S
+2 F
+( may be used as the device ID to specify the core keyboard indicators for) 180.6 80 T
+(the core indicator feedback. The particular device ID corresponding to the core keyboard) 108 67 T
+FMENDPAGE
+%%EndPage: "198" 210
+%%Page: "199" 211
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(199) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+(feedback and the core indicator feedback may be obtained by calling) 108 712 T
+1 F
+(XkbGetDe) 440.9 712 T
+(viceInfo) 490.7 712 T
+2 F
+(and specifying) 108 699 T
+5 F
+-0.6 (XkbUseCoreKbd) 181.32 699 S
+2 F
+( as the) 267.12 699 T
+1 F
+(de) 300.78 699 T
+(vice_spec) 311.93 699 T
+2 F
+(; the values will be returned in) 358.57 699 T
+1 F
+(dflt_kbd_id) 108 686 T
+2 F
+( and) 162.67 686 T
+1 F
+(dflt_led_id) 186 686 T
+2 F
+(.) 238.01 686 T
+-0.14 (If the server does not allow Xkb access to input extension) 108 665 P
+5 F
+-0.31 -0.6 (KeyClass) 386.76 665 B
+2 F
+-0.14 ( devices, attempts to) 439.56 665 P
+(use Xkb requests with those devices fail with a) 108 652 T
+5 F
+(Bad) 336.3 652 T
+-0.6 (Keyboard) 357.9 652 S
+2 F
+( error. Attempts to access) 410.7 652 T
+(non-) 108 639 T
+5 F
+-0.6 (KeyClass) 130 639 S
+2 F
+( input extension devices via) 182.8 639 T
+1 F
+(XkbGetDeviceInfo) 319.12 639 T
+2 F
+( and) 407.75 639 T
+1 F
+(XkbSetDeviceInfo) 431.08 639 T
+2 F
+( fail) 517.04 639 T
+(silently if Xkb access to those devices is not supported by the X server.) 108 626 T
+0 F
+(21.1) 72 601 T
+(XkbDe) 108 601 T
+(viceInf) 145.16 601 T
+(oRec) 182.94 601 T
+2 F
+(Information about X Input Extension devices is transferred between a client program and) 108 581 T
+(the Xkb extension in an) 108 568 T
+5 F
+-0.6 (XkbDeviceInfoRec) 224.99 568 S
+2 F
+( structure:) 330.59 568 T
+2 11 Q
+(typedef struct {) 126 547.67 T
+(char *) 144 534.67 T
+(name;) 234 534.67 T
+(/* name for de) 297 534.67 T
+(vice */) 360.57 534.67 T
+(Atom) 144 521.67 T
+(type;) 234 521.67 T
+(/* name for class of de) 297 521.67 T
+(vices */) 396.62 521.67 T
+(unsigned short) 144 508.67 T
+(de) 234 508.67 T
+(vice_spec;) 244.11 508.67 T
+(/* de) 297 508.67 T
+(vice of interest */) 318.42 508.67 T
+(Bool) 144 495.67 T
+(has_o) 234 495.67 T
+(wn_state;) 259.39 495.67 T
+(/*) 301.55 495.67 T
+5 12 Q
+-0.6 (True) 312.86 495.67 S
+2 11 Q
+(=>this de) 339.26 495.67 T
+(vice has its o) 380.42 495.67 T
+(wn state */) 437.28 495.67 T
+(unsigned short) 144 482.67 T
+(supported;) 234 482.67 T
+(/* bits indicating supported capabilities */) 297 482.67 T
+(unsigned short) 144 469.67 T
+(unsupported;) 234 469.67 T
+(/* bits indicating unsupported capabilities */) 297 469.67 T
+(unsigned short) 144 456.67 T
+(num_btns;) 234 456.67 T
+(/* number of entries in) 297 456.67 T
+1 F
+(btn_acts) 399.96 456.67 T
+2 F
+( */) 437.24 456.67 T
+(XkbAction *) 144 443.67 T
+(btn_acts;) 234 443.67 T
+(/* b) 297 443.67 T
+(utton actions */) 313.59 443.67 T
+(unsigned short) 144 430.67 T
+(sz_leds;) 234 430.67 T
+(/* total number of entries in LEDs v) 297 430.67 T
+(ector */) 456.02 430.67 T
+(unsigned short) 144 417.67 T
+(num_leds;) 234 417.67 T
+(/* number of v) 297 417.67 T
+(alid entries in LEDs v) 361.8 417.67 T
+(ector */) 458.18 417.67 T
+(unsigned short) 144 404.67 T
+(d\337t_kbd_fb;) 234 404.67 T
+(/* input e) 297 404.67 T
+(xtension ID of def) 338.39 404.67 T
+(ault \050core kbd\051 indicator */) 418.63 404.67 T
+(unsigned short) 144 391.67 T
+(d\337t_led_fb;) 234 391.67 T
+(/* input e) 297 391.67 T
+(xtension ID of def) 338.39 391.67 T
+(ault indicator feedback */) 418.63 391.67 T
+(XkbDe) 144 378.67 T
+(viceLedInfoPtr) 175.49 378.67 T
+(leds;) 244.84 378.67 T
+(/* LED descriptions */) 297 378.67 T
+(}) 126 365.67 T
+3 F
+(XkbDe) 134.03 365.67 T
+(viceInf) 166.87 365.67 T
+(oRec) 198.97 365.67 T
+2 F
+(, *XkbDe) 222.18 365.67 T
+(viceInfoPtr;) 264.68 365.67 T
+(typedef struct {) 126 345.67 T
+(unsigned short) 144 332.67 T
+(led_class;) 243 332.67 T
+(/* class for this LED de) 324 332.67 T
+(vice*/) 427.91 332.67 T
+(unsigned short) 144 319.67 T
+(led_id;) 243 319.67 T
+(/* ID for this LED de) 324 319.67 T
+(vice */) 418.13 319.67 T
+(unsigned int) 144 306.67 T
+(ph) 243 306.67 T
+(ys_indicators;) 253.95 306.67 T
+(/* bits for which LEDs ph) 324 306.67 T
+(ysically present */) 438.52 306.67 T
+(unsigned int) 144 293.67 T
+(maps_present;) 243 293.67 T
+(/* bits for which LEDs ha) 324 293.67 T
+(v) 437.74 293.67 T
+(e maps in) 443.08 293.67 T
+1 F
+(maps) 487.99 293.67 T
+2 F
+( */) 511.21 293.67 T
+(unsigned int) 144 280.67 T
+(names_present;) 243 280.67 T
+(/* bits for which LEDs are in) 324 280.67 T
+1 F
+(names) 455.07 280.67 T
+2 F
+( */) 483.17 280.67 T
+(unsigned int) 144 267.67 T
+(state;) 243 267.67 T
+(/* 1 bit => corresponding LED is on */) 324 267.67 T
+(Atom) 144 254.67 T
+(names[XkbNumIndicators]) 243 254.67 T
+(;) 363.36 254.67 T
+(/* names for LEDs */) 387 254.67 T
+(XkbIndicatorMapRec) 144 241.67 T
+(maps;) 243 241.67 T
+(/* indicator maps for each LED */) 324 241.67 T
+(}) 126 228.67 T
+3 F
+(XkbDe) 134.03 228.67 T
+(viceLedInf) 166.87 228.67 T
+(oRec) 217.31 228.67 T
+2 F
+(, *XkbDe) 240.52 228.67 T
+(viceLedInfoPtr;) 283.01 228.67 T
+(The) 108 209 T
+1 F
+(type) 127.86 209 T
+2 F
+( \336eld is a re) 146.18 209 T
+(gistered symbolic name for a class of de) 197.34 209 T
+(vices \050for e) 373.95 209 T
+(xample, \322T) 423.26 209 T
+(ABLET\323\051. If a) 471.73 209 T
+(de) 108 196 T
+(vice is a k) 118.11 196 T
+(e) 162.3 196 T
+(yboard \050that is, is a member of) 167.01 196 T
+5 12 Q
+-0.6 (KeyClass) 304.49 196 S
+2 11 Q
+(\051, it has its o) 357.29 196 T
+(wn state, and) 411.11 196 T
+1 F
+(has_own_state) 471.6 196 T
+2 F
+(is) 108 183 T
+5 12 Q
+-0.6 (True) 118.09 183 S
+2 11 Q
+(. If) 144.49 183 T
+1 F
+(has_own_state) 160.06 183 T
+2 F
+( is) 225.46 183 T
+5 12 Q
+-0.6 (False) 238.3 183 S
+2 11 Q
+(, the state of the core k) 271.3 183 T
+(e) 371.08 183 T
+(yboard is used.) 375.8 183 T
+2 12 Q
+( The) 442.09 183 T
+1 11 Q
+(supported) 466.75 183 T
+2 12 Q
+( and) 510.75 183 T
+1 11 Q
+(unsupported) 108 170 T
+2 12 Q
+( fields are masks where each bit indicates a capability. The meaning of the) 163 170 T
+(mask bits is listed in Table 21.1, together with the fields in the) 108 157 T
+5 F
+-0.6 (XkbDeviceInfoRec) 410.33 157 S
+2 F
+-0.04 (structure that are associated with the capability represented by each bit. The same bits are) 108 144 P
+-0.12 (used to indicate the specific information desired in many of the functions described subse-) 108 131 P
+(quently in this section.) 108 118 T
+FMENDPAGE
+%%EndPage: "199" 211
+%%Page: "200" 212
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(200) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+-0.37 (The) 108 316 P
+1 11 Q
+-0.34 (name) 129.29 316 P
+2 12 Q
+-0.37 (,) 153.12 316 P
+1 11 Q
+-0.34 (type) 158.75 316 P
+2 12 Q
+-0.37 (,) 177.07 316 P
+1 11 Q
+-0.34 (has_own_state) 182.71 316 P
+2 12 Q
+-0.37 (,) 248.1 316 P
+1 11 Q
+-0.34 (supported) 253.73 316 P
+2 12 Q
+-0.37 (, and) 297.73 316 P
+1 11 Q
+-0.34 (unsupported) 323.32 316 P
+2 12 Q
+-0.37 ( fields are always filled in when a) 378.32 316 P
+-0.32 (valid reply is returned from the server involving an) 108 303 P
+5 F
+-0.71 -0.6 (XkbDeviceInfoRec) 353.37 303 B
+2 F
+-0.32 (. All of the other) 458.97 303 P
+(fields are modified only if the particular function asks for them.) 108 290 T
+0 F
+(21.2) 72 265 T
+(Quer) 108 265 T
+(ying Xkb Features f) 136.13 265 T
+(or Non-K) 246.59 265 T
+(e) 297.73 265 T
+(yClass Input Extension De) 304.22 265 T
+(vices) 454.75 265 T
+2 F
+(To determine whether the X server allows Xkb access to particular capabilities of input) 108 245 T
+(devices other than the core X keyboard, or to determine the status of indicator maps, indi-) 108 232 T
+(cator names or button actions on a non-) 108 219 T
+5 F
+-0.6 (KeyClass) 297.64 219 S
+2 F
+( extension device, use) 350.44 219 T
+1 F
+(XkbGetDevice-) 458.75 219 T
+(Info) 108 206 T
+2 F
+(.) 127.33 206 T
+2 11 Q
+(XkbDe) 108 185.67 T
+(viceInfoPtr) 139.49 185.67 T
+3 F
+(XkbGetDe) 191.73 185.67 T
+(viceInf) 241.67 185.67 T
+(o) 273.78 185.67 T
+2 F
+(\050) 279.28 185.67 T
+1 F
+(dpy) 282.94 185.67 T
+2 F
+(,) 298.11 185.67 T
+1 F
+(whic) 303.61 185.67 T
+(h, de) 324.23 185.67 T
+(vice_spec, ind_class, ind_id) 345.45 185.67 T
+2 F
+(\051) 468.88 185.67 T
+(Display *) 126 172.67 T
+1 F
+(dpy) 234 172.67 T
+2 F
+(;) 249.88 172.67 T
+(/* connection to X serv) 306 172.67 T
+(er */) 408.49 172.67 T
+(unsigned int) 126 159.67 T
+1 F
+(whic) 234 159.67 T
+(h) 254.61 159.67 T
+2 F
+(;) 260.11 159.67 T
+(/* mask indicating information to return */) 306 159.67 T
+(unsigned int) 126 146.67 T
+1 F
+(de) 234 146.67 T
+(vice_spec) 244.22 146.67 T
+2 F
+(;) 286.98 146.67 T
+(/* de) 306 146.67 T
+(vice ID, or) 327.42 146.67 T
+5 F
+-0.55 (XkbUseCoreKbd) 377.51 146.67 S
+2 F
+( */) 456.16 146.67 T
+(unsigned int) 126 133.67 T
+1 F
+(ind_class) 234 133.67 T
+2 F
+(;) 275.56 133.67 T
+(/* feedback class for indicator requests */) 306 133.67 T
+(unsigned int) 126 120.67 T
+1 F
+(ind_id;) 234 120.67 T
+2 F
+(/* feedback ID for indicator requests */) 306 120.67 T
+1 12 Q
+(XkbGetDe) 108 101 T
+(viceInfo) 157.8 101 T
+2 F
+( returns information about the input device specified by) 196.45 101 T
+1 F
+(device_spec) 466.08 101 T
+2 F
+(.) 524.05 101 T
+-0.23 (Unlike the) 108 88 P
+1 F
+-0.23 (de) 160.87 88 P
+-0.23 (vice_spec) 172.02 88 P
+2 F
+-0.23 ( parameter of most Xkb functions,) 218.66 88 P
+1 F
+-0.23 (de) 384.93 88 P
+-0.23 (vice_spec) 396.08 88 P
+2 F
+-0.23 ( does not need to be) 442.72 88 P
+3 F
+(T) 245.84 692 T
+(able 21.1 XkbDe) 252.74 692 T
+(viceInf) 339.89 692 T
+(oRec Mask Bits) 374.92 692 T
+1 F
+(Name) 109 665 T
+-0.11 (XkbDe) 271 672 P
+-0.11 (viceInfoRec) 303.47 672 P
+(F) 271 658 T
+(ields Ef) 277.79 658 T
+(fected) 313.91 658 T
+(V) 364 665 T
+(alue) 370 665 T
+(Capability If Set) 418 665 T
+2 11 Q
+(XkbXI_K) 109 643.67 T
+(e) 152.71 643.67 T
+(yboardsMask) 157.43 643.67 T
+(\0501L << 0\051) 364 643.67 T
+-0.17 (Clients can use all Xkb requests and) 418 643.67 P
+(e) 418 632.67 T
+(v) 422.61 632.67 T
+(ents with) 427.94 632.67 T
+5 F
+-0.33 (KeyClass) 470.72 632.67 S
+2 F
+( de) 520.88 632.67 T
+(vices sup-) 533.74 632.67 T
+(ported by the input de) 418 621.67 T
+(vice e) 514.27 621.67 T
+(xten-) 540.07 621.67 T
+(sion.) 418 610.67 T
+(XkbXI_ButtonActionsMask) 109 596.67 T
+(num_btns) 271 596.67 T
+(btn_acts) 271 585.67 T
+(\0501L <<1\051) 364 596.67 T
+(Clients can assign k) 418 596.67 T
+(e) 505.58 596.67 T
+(y actions to) 510.3 596.67 T
+(b) 418 585.67 T
+(uttons on non-) 423.28 585.67 T
+5 F
+-0.33 (KeyClass) 486.84 585.67 S
+2 F
+( input) 537 585.67 T
+(e) 418 574.67 T
+(xtension de) 422.72 574.67 T
+(vices.) 472.86 574.67 T
+(XkbXI_IndicatorNamesMask) 109 560.67 T
+(leds->names) 271 560.67 T
+(\0501L <<2\051) 364 560.67 T
+(Clients can assign names to indica-) 418 560.67 T
+(tors on non-) 418 549.67 T
+5 F
+-0.33 (KeyClass) 471.16 549.67 S
+2 F
+( input e) 521.32 549.67 T
+(xten-) 554.16 549.67 T
+(sion de) 418 538.67 T
+(vices.) 449.2 538.67 T
+(XkbXI_IndicatorMapsMask) 109 524.67 T
+(leds->maps) 271 524.67 T
+(\0501L <<3\051) 364 524.67 T
+-0.05 (Clients can assign indicator maps to) 418 524.67 P
+(indicators on non-) 418 513.67 T
+5 F
+-0.33 (KeyClass) 498.05 513.67 S
+2 F
+( input) 548.21 513.67 T
+(e) 418 502.67 T
+(xtension de) 422.72 502.67 T
+(vices.) 472.86 502.67 T
+(XkbXI_IndicatorStateMask) 109 488.67 T
+(leds->state) 271 488.67 T
+(\0501L <<4\051) 364 488.67 T
+(Clients can request the status of) 418 488.67 T
+(indicators on non-) 418 477.67 T
+5 F
+-0.33 (KeyClass) 498.05 477.67 S
+2 F
+( input) 548.21 477.67 T
+(e) 418 466.67 T
+(xtension de) 422.72 466.67 T
+(vices.) 472.86 466.67 T
+(XkbXI_IndicatorsMask) 109 452.67 T
+(sz_leds) 271 452.67 T
+(num_leds) 271 441.67 T
+(leds->*) 271 430.67 T
+(\0500x1c\051) 364 452.67 T
+(XkbXI_IndicatorNamesMask |) 418 452.67 T
+(XkbXI_IndicatorMapsMask |) 418 441.67 T
+(XkbXI_IndicatorStateMask) 418 430.67 T
+(XkbXI_UnsupportedFeaturesMask) 109 416.67 T
+(unsupported) 271 416.67 T
+(\0501L <<15\051) 364 416.67 T
+(XkbXI_AllDe) 109 402.67 T
+(viceFeaturesMask) 171.66 402.67 T
+(Those selected by) 271 402.67 T
+(V) 271 391.67 T
+(alue column masks) 277.72 391.67 T
+(\0500x1e\051) 364 402.67 T
+(XkbXI_IndicatorsMask |) 418 402.67 T
+(XkbSI_ButtonActionsMask) 418 391.67 T
+(XkbXI_AllFeaturesMask) 109 377.67 T
+(Those selected by) 271 377.67 T
+(V) 271 366.67 T
+(alue column masks) 277.72 366.67 T
+(\0500x1f\051) 364 377.67 T
+(XkbSI_AllDe) 418 377.67 T
+(viceFeaturesMask |) 478.83 377.67 T
+(XkbSI_K) 418 366.67 T
+(e) 459.89 366.67 T
+(yboardsMask) 464.61 366.67 T
+(XkbXI_AllDetailsMask) 109 352.67 T
+(Those selected by) 271 352.67 T
+(V) 271 341.67 T
+(alue column masks) 277.72 341.67 T
+(\0500x801f\051) 364 352.67 T
+(XkbXI_AllFeaturesMask |) 418 352.67 T
+(XkbXI_UnsupportedFeaturesMask) 418 341.67 T
+108 684 579 684 2 L
+V
+0.5 H
+0 Z
+N
+108 653 579 653 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "200" 212
+%%Page: "201" 213
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(201) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+(a keyboard device. It must, however, indicate either the core keyboard or a valid X Input) 108 712 T
+(Extension device.) 108 699 T
+(The) 108 678 T
+1 F
+(which) 129.66 678 T
+2 F
+(parameter) 161.33 678 T
+(is a mask specifying optional information to be returned. It is an) 212.3 678 T
+(inclusive OR of one or more of the values from Table 21.1 and causes the returned) 108 665 T
+5 F
+-0.6 (XkbDeviceInfoRec) 108 652 S
+2 F
+( to contain values for the corresponding fields specified in the table.) 213.6 652 T
+(The) 108 631 T
+5 F
+-0.6 (XkbDeviceInfoRec) 129.66 631 S
+2 F
+( returned by) 235.26 631 T
+1 F
+(XkbGetDe) 296.25 631 T
+(viceInfo) 346.05 631 T
+2 F
+( always has values for) 384.7 631 T
+1 F
+(name) 493.67 631 T
+2 F
+(\050may be a null string, \322\323\051,) 108 618 T
+1 F
+(type) 233.98 618 T
+2 F
+(,) 253.97 618 T
+1 F
+(supported) 259.97 618 T
+2 F
+(,) 307.97 618 T
+1 F
+(unsupported) 313.97 618 T
+2 F
+(,) 373.97 618 T
+1 F
+(has_own_state) 379.97 618 T
+2 F
+(,) 451.31 618 T
+1 F
+(dflt_kbd_fd) 457.31 618 T
+2 F
+(, and) 511.98 618 T
+1 F
+(dflt_kbd_fb) 108 605 T
+2 F
+(. Other fields are filled in as specified by) 162.67 605 T
+1 F
+(whic) 361.3 605 T
+(h) 383.78 605 T
+2 F
+(.) 389.78 605 T
+(Upon return, the) 108 584 T
+1 F
+(supported) 189.98 584 T
+2 F
+( field will be set to the inclusive OR of zero or more bits from) 237.98 584 T
+(Table 21.1; each bit set indicates an optional Xkb extension device feature supported by) 108 571 T
+(the server implementation, and a client may modify the associated behavior.) 108 558 T
+(If the) 108 537 T
+5 F
+-0.6 (XkbButtonActionsMask) 136.66 537 S
+2 F
+( bit is set in) 268.66 537 T
+1 F
+(whic) 327 537 T
+(h) 349.49 537 T
+2 F
+(, the) 355.49 537 T
+5 F
+-0.6 (XkbDeviceInfoRec) 379.15 537 S
+2 F
+( returned) 484.76 537 T
+(will have the button actions \050) 108 524 T
+1 F
+(btn_acts) 247.66 524 T
+2 F
+( field\051 filled in for all buttons.) 288.32 524 T
+(If) 108 503 T
+1 F
+(whic) 118.99 503 T
+(h) 141.48 503 T
+2 F
+( includes one of the bits in) 147.48 503 T
+5 F
+(XkbXI_IndicatorsMask) 277.14 503 T
+2 F
+(, the feedback class of) 421.14 503 T
+(the indicators must be specified in) 108 490 T
+1 F
+(ind_class) 275.32 490 T
+2 F
+(, and the feedback ID of the indicators must) 320.65 490 T
+(be specified in) 108 477 T
+1 F
+(ind_id) 180.98 477 T
+2 F
+(. If the request does not include any of the bits in) 211.66 477 T
+5 F
+-0.47 (XkbXI_IndicatorsMask) 108 464 P
+2 F
+-0.19 (, the) 252 464 P
+1 F
+-0.19 (ind_class) 275.27 464 P
+2 F
+-0.19 ( and) 320.61 464 P
+1 F
+-0.19 (ind_id) 343.55 464 P
+2 F
+-0.19 ( parameters are ignored. The class) 374.22 464 P
+(and ID can be obtained via the input device extension) 108 451 T
+1 F
+(XListInputDevices) 368.62 451 T
+2 F
+( request.) 457.27 451 T
+(If any of the) 108 430 T
+5 F
+-0.6 (XkbXI_IndicatorsMask) 169.98 430 S
+2 F
+( bits are set in) 301.98 430 T
+1 F
+(whic) 371.64 430 T
+(h) 394.13 430 T
+2 F
+(, the) 400.13 430 T
+5 F
+-0.6 (XkbDeviceInfoRec) 423.8 430 S
+2 F
+-0.28 (returned will have filled in the portions of the) 108 417 P
+1 F
+-0.28 (leds) 327.08 417 P
+2 F
+-0.28 ( structure corresponding to the indicator) 346.41 417 P
+(feedback identified by) 108 404 T
+1 F
+(ind_class) 218.3 404 T
+2 F
+( and) 263.64 404 T
+1 F
+(ind_id) 286.97 404 T
+2 F
+(. The) 317.64 404 T
+1 F
+(leds) 345.3 404 T
+2 F
+( vector of the) 364.63 404 T
+5 F
+-0.6 (XkbDeviceInfoRec) 431.28 404 S
+2 F
+(is allocated if necessary and) 108 391 T
+1 F
+(sz_leds) 245.63 391 T
+2 F
+( and) 280.3 391 T
+1 F
+(num_leds) 303.62 391 T
+2 F
+( filled in. The) 349.62 391 T
+1 F
+(led_class) 417.95 391 T
+2 F
+(,) 462.61 391 T
+1 F
+(led_id) 468.61 391 T
+2 F
+( and) 498.61 391 T
+1 F
+(phys_indicators) 108 378 T
+2 F
+( fields of the) 184.67 378 T
+1 F
+(leds) 247.99 378 T
+2 F
+( entry corresponding to) 267.32 378 T
+1 F
+(ind_class) 381.97 378 T
+2 F
+( and) 427.31 378 T
+1 F
+(ind_id) 450.64 378 T
+2 F
+( are always) 481.31 378 T
+(filled in. If) 108 365 T
+1 F
+(whic) 162.66 365 T
+(h) 185.15 365 T
+2 F
+( contains) 191.15 365 T
+5 F
+-0.6 (XkbXI_IndicatorNamesMask) 237.14 365 S
+2 F
+(, the) 395.55 365 T
+1 F
+(names_present) 419.21 365 T
+2 F
+( and) 491.2 365 T
+1 F
+(names) 108 352 T
+2 F
+( fields of the) 138.66 352 T
+1 F
+(leds) 201.98 352 T
+2 F
+( structure corresponding to) 221.32 352 T
+1 F
+(ind_class) 353.29 352 T
+2 F
+( and) 398.63 352 T
+1 F
+(ind_id) 421.96 352 T
+2 F
+( are returned.) 452.63 352 T
+(If) 522.86 352 T
+1 F
+-0.21 (whic) 108 339 P
+-0.21 (h) 130.49 339 P
+2 F
+-0.21 ( contains) 136.49 339 P
+5 F
+-0.46 -0.6 (XkbXI_IndicatorStateMask) 182.07 339 B
+1 F
+-0.21 (,) 340.47 339 P
+2 F
+-0.21 ( the corresponding) 343.47 339 P
+1 F
+-0.21 (state) 435.17 339 P
+2 F
+-0.21 ( field is updated.) 457.84 339 P
+(If) 108 326 T
+1 F
+(whic) 118.99 326 T
+(h) 141.48 326 T
+2 F
+( contains) 147.48 326 T
+5 F
+-0.6 (XkbXI_IndicatorMapsMask) 193.48 326 S
+2 F
+(, the) 345.28 326 T
+1 F
+(maps_present) 368.94 326 T
+2 F
+( and) 435.6 326 T
+1 F
+(maps) 458.93 326 T
+2 F
+( fields are) 484.26 326 T
+(updated.) 108 313 T
+(Xkb provides convenience functions to request subsets of the information available via) 108 292 T
+1 F
+(XkbGetDe) 108 279 T
+(viceInfo) 157.8 279 T
+2 F
+(. These convenience functions mirror some of the mask bits. The func-) 196.45 279 T
+(tions all take an) 108 266 T
+5 F
+-0.6 (XkbDeviceInfoPtr) 186.66 266 S
+2 F
+( as an input argument and operate on the X Input) 292.26 266 T
+(Extension device specified by the) 108 253 T
+1 F
+(device_spec) 272.3 253 T
+2 F
+( field of the structure. Only the parts of the) 330.28 253 T
+(structure indicated in the function description are updated. The) 108 240 T
+5 F
+-0.6 (XkbDeviceInfo) 412.61 240 S
+2 F
+(Rec) 498.41 240 T
+(structure used in the function call can be obtained by calling) 108 227 T
+1 F
+(XkbGetDeviceInfo) 400.28 227 T
+2 F
+( or can be) 488.92 227 T
+(allocated by calling) 108 214 T
+1 F
+(XkbAllocDeviceInfo) 204.98 214 T
+2 F
+( \050see section 21.3\051.) 301.62 214 T
+(These convenience functions are described as follows.) 108 193 T
+(To query the button actions associated with an X Input Extension device, use) 108 172 T
+1 F
+(XkbGetDe-) 481.28 172 T
+(viceButtonActions.) 108 159 T
+2 11 Q
+(Status) 108 138.67 T
+3 F
+(XkbGetDe) 137.65 138.67 T
+(viceButtonActions) 187.59 138.67 T
+2 F
+(\050) 273.75 138.67 T
+1 F
+(dpy) 277.41 138.67 T
+(, de) 292.69 138.67 T
+(vice_info, all_b) 308.41 138.67 T
+(uttons, \336r) 376.63 138.67 T
+(st_b) 418.7 138.67 T
+(utton, num_b) 436.81 138.67 T
+(uttons) 494.65 138.67 T
+2 F
+(\051) 521.54 138.67 T
+(Display *) 126 125.67 T
+1 F
+(dpy) 234 125.67 T
+2 F
+(;) 249.88 125.67 T
+(/* connection to X serv) 306 125.67 T
+(er */) 408.49 125.67 T
+(XkbDe) 126 112.67 T
+(viceInfoPtr) 157.49 112.67 T
+1 F
+(de) 234 112.67 T
+(vice_info) 244.22 112.67 T
+2 F
+(;) 284.55 112.67 T
+(/* structure to update with results */) 306 112.67 T
+(Bool) 126 99.67 T
+1 F
+(all_b) 234 99.67 T
+(uttons) 256.4 99.67 T
+2 F
+(;) 283.29 99.67 T
+(/*) 306 99.67 T
+5 12 Q
+-0.6 (True) 317.31 99.67 S
+2 11 Q
+( => get information for all b) 343.71 99.67 T
+(uttons */) 467.11 99.67 T
+(unsigned int) 126 86.67 T
+1 F
+(\336r) 234 86.67 T
+(st_b) 243.67 86.67 T
+(utton) 261.79 86.67 T
+2 F
+(;) 284.4 86.67 T
+(/* number of \336rst b) 306 86.67 T
+(utton for which info is desired */) 390.72 86.67 T
+(unsigned int) 126 73.67 T
+1 F
+(num_b) 234 73.67 T
+(uttons) 263.72 73.67 T
+2 F
+(;) 290.62 73.67 T
+(/* number of b) 306 73.67 T
+(uttons for which info is desired */) 370.86 73.67 T
+FMENDPAGE
+%%EndPage: "201" 213
+%%Page: "202" 214
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(202) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+1 12 Q
+(XkbGetDe) 108 712 T
+(viceButtonActions) 157.8 712 T
+2 F
+( queries the server for the desired button information for the) 245.12 712 T
+(device indicated by the) 108 699 T
+1 F
+(device_spec) 221.98 699 T
+2 F
+( field of) 279.95 699 T
+1 F
+(de) 320.94 699 T
+(vice_info) 332.09 699 T
+2 F
+( and waits for a reply. If success-) 376.08 699 T
+(ful,) 108 686 T
+1 F
+(XkbGetDe) 127.08 686 T
+(viceButtonActions) 176.88 686 T
+2 F
+( backfills the button actions \050) 264.21 686 T
+1 F
+(btn_acts) 403.86 686 T
+2 F
+( field of) 444.53 686 T
+1 F
+-0.15 (de) 108 673 P
+-0.15 (vice_info) 119.15 673 P
+2 F
+-0.15 (\051 for only the requested buttons, updates the) 163.14 673 P
+1 F
+-0.15 (name) 375.61 673 P
+2 F
+-0.15 (,) 401.6 673 P
+1 F
+-0.15 (type) 407.45 673 P
+2 F
+-0.15 (,) 427.45 673 P
+1 F
+-0.15 (supported) 433.3 673 P
+2 F
+-0.15 (, and) 481.3 673 P
+1 F
+-0.15 (unsup-) 507.34 673 P
+(ported) 108 660 T
+2 F
+( fields, and returns) 139.33 660 T
+5 F
+-0.6 (Success) 231.65 660 S
+2 F
+(.) 277.85 660 T
+1 F
+(all_buttons) 108 639 T
+2 F
+(,) 162.01 639 T
+1 F
+(first_button) 168.01 639 T
+2 F
+( and) 224.03 639 T
+1 F
+(num_buttons) 247.36 639 T
+2 F
+( specify the device buttons for which actions) 309.36 639 T
+(should be returned. Setting) 108 626 T
+1 F
+(all_buttons) 240.32 626 T
+2 F
+( to) 294.34 626 T
+5 F
+-0.6 (True) 309.67 626 S
+2 F
+( requests actions for all device buttons; if) 336.07 626 T
+1 F
+(all_buttons) 108 613 T
+2 F
+( is) 162.01 613 T
+5 F
+-0.6 (False) 176.02 613 S
+2 F
+(,) 209.02 613 T
+1 F
+(first_button) 215.02 613 T
+2 F
+( and) 271.03 613 T
+1 F
+(num_buttons) 294.36 613 T
+2 F
+( specify a range of buttons for which) 356.36 613 T
+(actions are requested.) 108 600 T
+(If a compatible version of Xkb is not available in the server or the Xkb extension has not) 108 579 T
+(been properly initialized,) 108 566 T
+1 F
+(XkbGetDeviceButtonActions) 231.31 566 T
+2 F
+( returns) 368.62 566 T
+5 F
+-0.6 (BadAccess) 407.94 566 S
+2 F
+(. If allocation) 467.34 566 T
+(errors occur, a) 108 553 T
+5 F
+-0.6 (BadAlloc) 179.96 553 S
+2 F
+( status is returned. If the specified device) 232.76 553 T
+(\050) 108 540 T
+1 F
+(de) 112 540 T
+(vice_info) 123.14 540 T
+2 F
+(->) 167.14 540 T
+1 F
+(device_spec) 177.9 540 T
+2 F
+(\051 is invalid, a) 235.87 540 T
+5 F
+(BadKeyboard) 301.54 540 T
+2 F
+( status is returned. If the device) 380.74 540 T
+(has no buttons, a) 108 527 T
+5 F
+(Bad) 191.66 527 T
+-0.6 (Match) 213.26 527 S
+2 F
+( status is returned. If) 246.26 527 T
+1 F
+(first_button) 347.58 527 T
+2 F
+( and) 403.6 527 T
+1 F
+(num_buttons) 426.92 527 T
+2 F
+( specify) 488.93 527 T
+(illegal buttons, a) 108 514 T
+5 F
+(Bad) 190.67 514 T
+-0.6 (Value) 212.27 514 S
+2 F
+( status is returned.) 245.27 514 T
+(To query the indicator names, maps, and state associated with an LED feedback of an) 108 493 T
+(input extension device, use) 108 480 T
+1 F
+(XkbGetDeviceLedInfo.) 240.98 480 T
+2 11 Q
+(Status) 108 459.67 T
+3 F
+(XkbGetDe) 137.65 459.67 T
+(viceLedInf) 187.59 459.67 T
+(o) 238.03 459.67 T
+2 F
+(\050) 243.53 459.67 T
+1 F
+(dpy) 247.19 459.67 T
+(, de) 262.47 459.67 T
+(vice_info, led_class, led_id, whic) 278.19 459.67 T
+(h) 424.07 459.67 T
+2 F
+(\051) 429.57 459.67 T
+(Display *) 126 446.67 T
+1 F
+(dpy) 234 446.67 T
+2 F
+(;) 249.88 446.67 T
+(/* connection to X serv) 306 446.67 T
+(er */) 408.49 446.67 T
+(XkbDe) 126 433.67 T
+(viceInfoPtr) 157.49 433.67 T
+1 F
+(de) 234 433.67 T
+(vice_info) 244.22 433.67 T
+2 F
+(;) 284.55 433.67 T
+(/* structure to update with results */) 306 433.67 T
+(unsigned int) 126 420.67 T
+1 F
+(led_class) 234 420.67 T
+2 F
+(;) 274.94 420.67 T
+-0.14 (/* LED feedback class assigned by input e) 306 420.67 P
+-0.14 (xtension */) 491.55 420.67 P
+(unsigned int) 126 407.67 T
+1 F
+(led_id) 234 407.67 T
+2 F
+(;) 261.5 407.67 T
+(/* LED feedback ID assigned by input e) 306 407.67 T
+(xtension */) 482.71 407.67 T
+(unsigned int) 126 394.67 T
+1 F
+(whic) 234 394.67 T
+(h) 254.61 394.67 T
+2 F
+(;) 260.11 394.67 T
+(/* mask indicating desired information */) 306 394.67 T
+1 12 Q
+-0.36 (XkbGetDe) 108 375 P
+-0.36 (viceLedInfo) 157.8 375 P
+2 F
+-0.36 ( queries the server for the desired LED information for the feedback) 214.45 375 P
+(specified by) 108 362 T
+1 F
+(led_class) 169.32 362 T
+2 F
+( and) 213.98 362 T
+1 F
+(led_id) 237.31 362 T
+2 F
+( for the X input extension device indicated by) 267.31 362 T
+1 F
+-0.22 (device_spec) 108 349 P
+2 F
+-0.22 (->) 165.97 349 P
+1 F
+-0.22 (de) 176.74 349 P
+-0.22 (vice_info) 187.88 349 P
+2 F
+-0.22 ( and waits for a reply. If successful,) 231.88 349 P
+1 F
+-0.22 (XkbGetDe) 404.11 349 P
+-0.22 (viceLedInfo) 453.91 349 P
+2 F
+-0.22 ( back-) 510.56 349 P
+(fills the relevant fields of) 108 336 T
+1 F
+(de) 231.65 336 T
+(vice_info) 242.8 336 T
+2 F
+( as determined by) 286.79 336 T
+1 F
+(whic) 374.77 336 T
+(h) 397.26 336 T
+2 F
+( with the results and returns) 403.26 336 T
+5 F
+-0.6 (Success) 108 323 S
+2 F
+(. Valid values for) 154.2 323 T
+1 F
+(whic) 240.52 323 T
+(h) 263.01 323 T
+2 F
+( are the inclusive OR of any of) 269.01 323 T
+5 F
+-0.6 (XkbXI_IndicatorNamesMask) 108 310 S
+2 F
+(,) 266.4 310 T
+5 F
+-0.6 (XkbXI_IndicatorMapsMask) 272.4 310 S
+2 F
+(, and) 424.21 310 T
+5 F
+-0.6 (XkbXI_IndicatorStateMask) 108 297 S
+2 F
+(.) 266.4 297 T
+(The fields of) 108 276 T
+1 F
+(de) 172.32 276 T
+(vice_info) 183.47 276 T
+2 F
+( that are filled in when this request succeeds are) 227.46 276 T
+1 F
+(name, type, sup-) 460.07 276 T
+-0.33 (ported) 108 263 P
+2 F
+-0.33 (, and) 139.33 263 P
+1 F
+-0.33 (unsupported) 165 263 P
+2 F
+-0.33 (, and portions of the) 225 263 P
+1 F
+-0.33 (leds) 322.68 263 P
+2 F
+-0.33 ( structure corresponding to) 342.01 263 P
+1 F
+-0.33 (led_class) 472.67 263 P
+2 F
+-0.33 ( and) 517.33 263 P
+1 F
+(led_id) 108 250 T
+2 F
+( as indicated by the bits set in) 138 250 T
+1 F
+(whic) 282.66 250 T
+(h) 305.15 250 T
+2 F
+(. The) 311.15 250 T
+1 F
+(device_info->leds) 338.81 250 T
+2 F
+( vector is allocated if) 425.56 250 T
+(necessary and) 108 237 T
+1 F
+(sz_leds) 177.97 237 T
+2 F
+( and) 212.64 237 T
+1 F
+(num_leds) 235.97 237 T
+2 F
+( filled in. The) 281.96 237 T
+1 F
+(led_class) 350.29 237 T
+2 F
+(,) 394.96 237 T
+1 F
+(led_id) 400.96 237 T
+2 F
+( and) 430.96 237 T
+1 F
+(phys_indicators) 454.28 237 T
+2 F
+(fields of the) 108 224 T
+1 F
+(de) 168.32 224 T
+(vice_info) 179.47 224 T
+2 F
+(->) 223.46 224 T
+1 F
+(leds) 234.23 224 T
+2 F
+( entry corresponding to) 253.56 224 T
+1 F
+(led_class) 368.21 224 T
+2 F
+( and) 412.87 224 T
+1 F
+(led_id) 436.2 224 T
+2 F
+( are always) 466.2 224 T
+(filled in.) 108 211 T
+(If) 108 190 T
+1 F
+(whic) 118.99 190 T
+(h) 141.48 190 T
+2 F
+( contains) 147.48 190 T
+5 F
+-0.6 (XkbXI_IndicatorNamesMask) 193.48 190 S
+2 F
+(, the) 351.88 190 T
+1 F
+(names_present) 375.54 190 T
+2 F
+( and) 447.53 190 T
+1 F
+(names) 470.86 190 T
+2 F
+( fields) 501.52 190 T
+(of the) 108 177 T
+1 F
+(de) 138.66 177 T
+(vice_info) 149.81 177 T
+2 F
+(->) 193.8 177 T
+1 F
+(leds) 204.56 177 T
+2 F
+( structure corresponding to) 223.9 177 T
+1 F
+(led_class) 355.87 177 T
+2 F
+( and) 400.54 177 T
+1 F
+(led_id) 423.86 177 T
+2 F
+( are updated, if) 453.86 177 T
+1 F
+-0.21 (whic) 108 164 P
+-0.21 (h) 130.49 164 P
+2 F
+-0.21 ( contains) 136.49 164 P
+5 F
+-0.46 -0.6 (XkbXI_IndicatorStateMask) 182.07 164 B
+1 F
+-0.21 (,) 340.47 164 P
+2 F
+-0.21 ( the corresponding) 343.47 164 P
+1 F
+-0.21 (state) 435.17 164 P
+2 F
+-0.21 ( field is updated,) 457.84 164 P
+(and if) 108 151 T
+1 F
+(whic) 138.66 151 T
+(h) 161.15 151 T
+2 F
+( contains) 167.15 151 T
+5 F
+-0.6 (XkbXI_IndicatorMapsMask) 213.14 151 S
+2 F
+(, the) 364.95 151 T
+1 F
+(maps_present) 388.61 151 T
+2 F
+( and) 455.27 151 T
+1 F
+(maps) 478.6 151 T
+2 F
+( fields) 503.93 151 T
+(are updated.) 108 138 T
+(If a compatible version of Xkb is not available in the server or the Xkb extension has not) 108 117 T
+(been properly initialized,) 108 104 T
+1 F
+(XkbGetDe) 231.31 104 T
+(viceLedInfo) 281.11 104 T
+2 F
+( returns) 337.76 104 T
+5 F
+-0.6 (BadAccess) 377.09 104 S
+2 F
+(. If allocation errors) 436.49 104 T
+-0.12 (occur, a BadAlloc status is returned. If the device has no indicators, a) 108 91 P
+5 F
+-0.28 (BadMatch) 442.43 91 P
+2 F
+-0.12 ( error is) 500.03 91 P
+(returned. If) 108 78 T
+1 F
+(ledClass) 164.98 78 T
+2 F
+( or) 206.32 78 T
+1 F
+(ledID) 222.31 78 T
+2 F
+( have illegal values, a) 249.64 78 T
+5 F
+(Bad) 356.28 78 T
+-0.6 (Value) 377.88 78 S
+2 F
+( error is returned. If they) 410.88 78 T
+FMENDPAGE
+%%EndPage: "202" 214
+%%Page: "203" 215
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(203) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+-0.04 (have legal values but do not specify a feedback that contains LEDs and is associated with) 108 712 P
+(the specified device, a) 108 699 T
+5 F
+(Bad) 217.63 699 T
+-0.6 (Match) 239.23 699 S
+2 F
+( error is returned.) 272.23 699 T
+0 F
+(21.3) 72 674 T
+(Allocating, Initializing, and Freeing the XkbDe) 108 674 T
+(viceInf) 367.88 674 T
+(oRec Structure) 405.66 674 T
+2 F
+(To obtain an) 108 654 T
+5 F
+-0.6 (XkbDeviceInfoRec) 171.66 654 S
+2 F
+( structure, use) 277.26 654 T
+1 F
+(XkbGetDeviceInfo) 347.25 654 T
+2 F
+( or) 435.88 654 T
+1 F
+(XkbAllocDevice-) 451.87 654 T
+(Info) 108 641 T
+2 F
+(.) 127.33 641 T
+2 11 Q
+(XkbDe) 108 620.67 T
+(viceInfoPtr) 139.49 620.67 T
+3 F
+(XkbAllocDe) 191.73 620.67 T
+(viceInf) 249.01 620.67 T
+(o) 281.12 620.67 T
+2 F
+(\050) 286.62 620.67 T
+1 F
+(de) 290.28 620.67 T
+(vice_spec, n_b) 300.5 620.67 T
+(uttons, sz_leds) 365.04 620.67 T
+2 F
+(\051) 429.21 620.67 T
+(unsigned int) 126 607.67 T
+1 F
+(de) 234 607.67 T
+(vice_spec) 244.22 607.67 T
+2 F
+(;) 286.98 607.67 T
+(/* de) 306 607.67 T
+(vice ID with which structure will be used */) 327.42 607.67 T
+(unsigned int) 126 594.67 T
+1 F
+(n_b) 234 594.67 T
+(uttons) 250.28 594.67 T
+2 F
+(;) 277.17 594.67 T
+(/* number of b) 306 594.67 T
+(utton actions to allocate space for*/) 370.86 594.67 T
+(unsigned int) 126 581.67 T
+1 F
+(sz_leds) 234 581.67 T
+2 F
+(;) 265.78 581.67 T
+(/* number of LED feedbacks to allocate space for */) 306 581.67 T
+1 12 Q
+(XkbAllocDe) 108 562 T
+(viceInfo) 165.8 562 T
+2 F
+( allocates space for an) 204.46 562 T
+5 F
+-0.6 (XkbDeviceInfoRec) 313.42 562 S
+2 F
+( structure and initializes) 419.02 562 T
+(that structure\325s) 108 549 T
+1 F
+(device_spec) 182.65 549 T
+2 F
+( field with the device ID specified by) 240.62 549 T
+1 F
+(device_spec) 421.92 549 T
+2 F
+(. If) 479.89 549 T
+1 F
+(n_b) 108 536 T
+(uttons) 125.76 536 T
+2 F
+( is nonzero,) 155.1 536 T
+1 F
+(n_b) 213.76 536 T
+(uttons) 231.52 536 T
+5 F
+-0.6 (XkbActions) 263.86 536 S
+2 F
+( are linked into the) 329.86 536 T
+5 F
+-0.6 (XkbDeviceInfoRec) 422.85 536 S
+2 F
+(structure and initialized to zero. If) 108 523 T
+1 F
+(sz_leds) 274.3 523 T
+2 F
+( is nonzero,) 308.96 523 T
+1 F
+(sz_leds) 367.62 523 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 405.29 523 S
+2 F
+(structures are also allocated and linked into the) 108 510 T
+5 F
+-0.6 (XkbDeviceInfoRec) 336.62 510 S
+2 F
+( structure. If you) 442.23 510 T
+(request) 108 497 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 145.66 497 S
+2 F
+( structures be allocated using this request, you must ini-) 271.06 497 T
+(tialize them explicitly.) 108 484 T
+(To obtain an) 108 463 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 171.66 463 S
+2 F
+( structure, use) 297.06 463 T
+1 F
+(XkbAllocDeviceLedInfo) 367.05 463 T
+2 F
+(.) 481.68 463 T
+2 11 Q
+(Status) 108 442.67 T
+3 F
+(XkbAllocDe) 137.65 442.67 T
+(viceLedInf) 194.92 442.67 T
+(o) 245.37 442.67 T
+2 F
+(\050) 250.87 442.67 T
+1 F
+(de) 254.53 442.67 T
+(vi, num_needed) 264.75 442.67 T
+2 F
+(\051) 333.79 442.67 T
+(XkbDe) 126 429.67 T
+(viceInfoPtr) 157.49 429.67 T
+1 F
+(de) 234 429.67 T
+(vice_info) 244.22 429.67 T
+2 F
+(;) 284.55 429.67 T
+(/* structure in which to allocate LED space */) 306 429.67 T
+(int) 126 416.67 T
+1 12 Q
+(num_needed) 234 416.67 T
+2 11 Q
+(;) 294.65 416.67 T
+(/* number of indicators to allocate space for */) 306 416.67 T
+1 12 Q
+(XkbAllocDe) 108 397 T
+(viceLedInfo) 165.8 397 T
+2 F
+( allocates space for an) 222.46 397 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 331.42 397 S
+2 F
+( and places it in) 456.82 397 T
+1 F
+(de) 108 384 T
+(vice_info) 119.15 384 T
+2 F
+(. If) 163.14 384 T
+1 F
+(num_needed) 180.13 384 T
+2 F
+( is nonzero,) 240.78 384 T
+1 F
+(num_needed) 299.44 384 T
+5 F
+-0.6 (XkbIndicatorMapRec) 363.08 384 S
+2 F
+( structures) 481.89 384 T
+(are also allocated and linked into the) 108 371 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 286.97 371 S
+2 F
+( structure. If you request) 412.37 371 T
+5 F
+-0.6 (XkbIndicatorMapRec) 108 358 S
+2 F
+( structures be allocated using this request, you must initialize) 226.8 358 T
+(them explicitly. All other fields are initialized to zero.) 108 345 T
+(To initialize an) 108 324 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 183.66 324 S
+2 F
+( structure, use) 309.06 324 T
+1 F
+(XkbAddDeviceLedInfo) 379.05 324 T
+2 F
+(.) 487.68 324 T
+2 11 Q
+(XkbDe) 108 303.67 T
+(viceLedInfoPtr) 139.49 303.67 T
+3 F
+(XkbAddDe) 208.84 303.67 T
+(viceLedInf) 261.85 303.67 T
+(o) 312.29 303.67 T
+2 F
+(\050) 317.79 303.67 T
+1 F
+(de) 321.45 303.67 T
+(vice_info, led_class, led_id) 331.67 303.67 T
+2 F
+(\051) 451.44 303.67 T
+(XkbDe) 126 290.67 T
+(viceInfoPtr) 157.49 290.67 T
+1 F
+(de) 234 290.67 T
+(vice_info) 244.22 290.67 T
+2 F
+(;) 284.55 290.67 T
+(/* structure in which to add LED info */) 306 290.67 T
+(unsigned int) 126 277.67 T
+1 12 Q
+(led_class) 234 277.67 T
+2 11 Q
+(;) 278.66 277.67 T
+(/* input e) 306 277.67 T
+(xtension class for LED de) 347.39 277.67 T
+(vice of interest */) 461.38 277.67 T
+(unsigned int) 126 264.67 T
+1 12 Q
+(led_id) 234 264.67 T
+2 11 Q
+(;) 264 264.67 T
+(/* input e) 306 264.67 T
+(xtension ID for LED de) 347.39 264.67 T
+(vice of interest */) 451.6 264.67 T
+1 12 Q
+-0.03 (XkbAddDe) 108 245 P
+-0.03 (viceLedInfo) 159.8 245 P
+2 F
+-0.03 ( first checks to see whether an entry matching) 216.46 245 P
+1 F
+-0.03 (led_class) 439.11 245 P
+2 F
+-0.03 ( and) 483.77 245 P
+1 F
+-0.03 (led_id) 507.03 245 P
+2 F
+(already exists in the) 108 232 T
+1 F
+(de) 206.65 232 T
+(vice_info->leds) 217.8 232 T
+2 F
+( array. If it finds a matching entry, it returns a) 293.22 232 T
+(pointer to that entry. Otherwise, it checks to be sure there is at least one empty entry in) 108 219 T
+1 F
+(de) 108 206 T
+(vice_info) 119.15 206 T
+2 F
+(->) 163.14 206 T
+1 F
+(leds) 173.9 206 T
+2 F
+( and extends it if there is not enough room. It then increments) 193.24 206 T
+1 F
+(de) 108 193 T
+(vice_info) 119.15 193 T
+2 F
+(->) 163.14 193 T
+1 F
+(num_leds) 173.9 193 T
+2 F
+( and fills in the next available entry in) 219.9 193 T
+1 F
+(de) 404.88 193 T
+(vice_info) 416.03 193 T
+2 F
+(->) 460.02 193 T
+1 F
+(leds) 470.78 193 T
+2 F
+( with) 490.12 193 T
+1 F
+(led_class) 108 180 T
+2 F
+( and) 152.66 180 T
+1 F
+(led_id) 175.99 180 T
+2 F
+(.) 205.99 180 T
+(If successful,) 108 159 T
+1 F
+(XkbAddDe) 174.31 159 T
+(viceLedInfo) 226.12 159 T
+2 F
+( returns a pointer to the) 282.77 159 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 397.42 159 S
+2 F
+(structure that was initialized. If unable to allocate sufficient storage, or if) 108 146 T
+1 F
+(de) 460.6 146 T
+(vice_info) 471.74 146 T
+2 F
+(points to an invalid) 108 133 T
+5 F
+-0.6 (XkbDeviceInfoRec) 203.34 133 S
+2 F
+( structure, or if) 308.94 133 T
+1 F
+(led_class) 383.26 133 T
+2 F
+( or) 427.92 133 T
+1 F
+(led_id) 443.92 133 T
+2 F
+( are inappro-) 473.92 133 T
+(priate,) 108 120 T
+1 F
+(XkbAddDe) 141.32 120 T
+(viceLedInfo) 193.13 120 T
+2 F
+( returns) 249.78 120 T
+5 F
+-0.6 (NULL) 289.1 120 S
+2 F
+(.) 315.5 120 T
+FMENDPAGE
+%%EndPage: "203" 215
+%%Page: "204" 216
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(204) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+(To allocate additional space for button actions in an) 108 712 T
+5 F
+-0.6 (XkbDeviceInfoRec) 359.63 712 S
+2 F
+( structure, use) 465.23 712 T
+1 F
+(XkbResizeDeviceButtonActions) 108 699 T
+2 F
+(.) 258.64 699 T
+2 11 Q
+(Status) 108 678.67 T
+3 F
+(XkbResizeDe) 137.65 678.67 T
+(viceButtonActions) 200.41 678.67 T
+2 F
+(\050) 286.57 678.67 T
+1 F
+(de) 290.24 678.67 T
+(vice_info, ne) 300.46 678.67 T
+(w_total) 356.5 678.67 T
+2 F
+(\051) 389.51 678.67 T
+(XkbDe) 126 665.67 T
+(viceInfoPtr) 157.49 665.67 T
+1 F
+(de) 234 665.67 T
+(vice_info) 244.22 665.67 T
+2 F
+(;) 284.55 665.67 T
+(/* structure in which to allocate b) 306 665.67 T
+(utton actions */) 453.04 665.67 T
+(unsigned int) 126 652.67 T
+1 12 Q
+(ne) 234 652.67 T
+(w_total) 245.15 652.67 T
+2 11 Q
+(;) 281.16 652.67 T
+(/* ne) 306 652.67 T
+(w total number of b) 327.42 652.67 T
+(utton actions needed */) 413.96 652.67 T
+1 12 Q
+(XkbResizeDe) 108 633 T
+(viceButton) 171.13 633 T
+2 F
+( reallocates space, if necessary, to make sure there is room for a) 222.46 633 T
+(total of) 108 620 T
+1 F
+(ne) 145.33 620 T
+(w_total) 156.48 620 T
+2 F
+( button actions in the) 192.49 620 T
+1 F
+(de) 296.16 620 T
+(vice_info) 307.31 620 T
+2 F
+( structure. Any new entries allocated) 351.3 620 T
+(are zeroed. If successful,) 108 607 T
+1 F
+(XkbResizeDe) 229.94 607 T
+(viceButton) 293.08 607 T
+2 F
+( returns) 344.4 607 T
+5 F
+(Success) 383.72 607 T
+2 F
+(. If) 434.12 607 T
+1 F
+(new_total) 451.12 607 T
+2 F
+( is zero,) 498.46 607 T
+(all button actions are deleted,) 108 594 T
+1 F
+(de) 251.98 594 T
+(vice_info) 263.12 594 T
+2 F
+(->) 307.12 594 T
+1 F
+(num_btns) 317.88 594 T
+2 F
+( is set to zero, and) 364.55 594 T
+1 F
+-0.04 (de) 108 581 P
+-0.04 (vice_info) 119.15 581 P
+2 F
+-0.04 (->) 163.14 581 P
+1 F
+-0.04 (btn_acts) 173.9 581 P
+2 F
+-0.04 ( is set to) 214.57 581 P
+5 F
+-0.1 -0.6 (NULL) 257.07 581 B
+2 F
+-0.04 (. If) 283.47 581 P
+1 F
+-0.04 (device_info) 300.37 581 P
+2 F
+-0.04 ( is invalid or) 355.69 581 P
+1 F
+-0.04 (new_total) 418.86 581 P
+2 F
+-0.04 ( is greater than) 466.2 581 P
+(255,) 108 568 T
+5 F
+(BadValue) 132 568 T
+2 F
+( is returned. If a memory allocation failure occurs, a) 189.6 568 T
+5 F
+-0.6 (BadAlloc) 442.2 568 S
+2 F
+( is) 495 568 T
+(returned.) 108 555 T
+(To free an) 108 534 T
+5 F
+-0.6 (XkbDeviceInfoRec) 160.31 534 S
+2 F
+( structure, use) 265.91 534 T
+1 F
+(XkbFreeDeviceInfo) 335.89 534 T
+2 F
+(.) 429.85 534 T
+2 11 Q
+(v) 108 513.67 T
+(oid) 113.28 513.67 T
+3 F
+(XkbFr) 130.09 513.67 T
+(eeDe) 161.67 513.67 T
+(viceInf) 184.1 513.67 T
+(o) 216.21 513.67 T
+2 F
+(\050) 221.71 513.67 T
+1 F
+(de) 225.37 513.67 T
+(vice_info, whic) 235.59 513.67 T
+(h, fr) 302.03 513.67 T
+(ee_all) 319.96 513.67 T
+2 F
+(\051) 346.84 513.67 T
+(XkbDe) 126 500.67 T
+(viceInfoPtr) 157.49 500.67 T
+1 F
+(de) 213 500.67 T
+(vice_info) 223.22 500.67 T
+2 F
+(;) 263.55 500.67 T
+-0.06 (/* pointer to) 273.75 500.67 P
+5 F
+-0.15 -0.33 (XkbDeviceInfoRec) 330.08 500.67 B
+2 F
+-0.06 ( in which to free items */) 430.4 500.67 P
+(unsigned int) 126 487.67 T
+1 F
+(whic) 213 487.67 T
+(h) 233.61 487.67 T
+2 F
+(;) 239.11 487.67 T
+(/* mask of components of) 273.75 487.67 T
+1 F
+(de) 390.77 487.67 T
+(vice_info) 400.99 487.67 T
+2 F
+( to free */) 441.31 487.67 T
+(Bool) 126 474.67 T
+1 F
+(fr) 213 474.67 T
+(ee_all) 219.93 474.67 T
+2 F
+(;) 246.81 474.67 T
+(/*) 273.75 474.67 T
+5 12 Q
+-0.6 (True) 285.06 474.67 S
+2 11 Q
+( => free e) 311.46 474.67 T
+(v) 353.82 474.67 T
+(erything, including de) 359.15 474.67 T
+(vice_info */) 455.73 474.67 T
+2 12 Q
+(If) 108 455 T
+1 F
+(free_all) 118.99 455 T
+2 F
+( is) 156.32 455 T
+5 F
+-0.6 (True) 170.33 455 S
+2 F
+(, the) 196.73 455 T
+1 F
+(XkbF) 220.39 455 T
+(r) 245.72 455 T
+(eeDe) 249.95 455 T
+(viceInfo) 274.42 455 T
+2 F
+( frees all components of) 313.07 455 T
+1 F
+(de) 431.38 455 T
+(vice_info) 442.52 455 T
+2 F
+( and the) 486.52 455 T
+5 F
+-0.6 (XkbDeviceInfoRec) 108 442 S
+2 F
+( structure pointed to by) 213.6 442 T
+1 F
+(de) 327.93 442 T
+(vice_info) 339.07 442 T
+2 F
+( itself. If) 383.07 442 T
+1 F
+(free_all) 427.06 442 T
+2 F
+( is) 464.39 442 T
+5 F
+-0.6 (False) 478.39 442 S
+2 F
+(, the) 511.39 442 T
+(value of) 108 429 T
+1 F
+(which) 149.99 429 T
+2 F
+( determines which subcomponents are freed.) 178.66 429 T
+1 F
+(which) 395.6 429 T
+2 F
+(is an inclusive OR of) 427.27 429 T
+(one or more of the values from Table 21.1. If) 108 416 T
+1 F
+(which) 327.95 416 T
+2 F
+( contains) 356.62 416 T
+5 F
+(XkbXI_ButtonActionsMask) 108 403 T
+2 F
+(, all button actions associated with) 273.6 403 T
+1 F
+(de) 441.92 403 T
+(vice_info) 453.07 403 T
+2 F
+( are) 497.06 403 T
+(freed,) 108 390 T
+1 F
+(de) 138.65 390 T
+(vice_info) 149.8 390 T
+2 F
+(->) 193.79 390 T
+1 F
+(btn_acts) 204.55 390 T
+2 F
+( is set to) 245.22 390 T
+5 F
+-0.6 (NULL) 287.89 390 S
+2 F
+(, and) 314.29 390 T
+1 F
+(de) 340.62 390 T
+(vice_info) 351.77 390 T
+2 F
+(->) 395.76 390 T
+1 F
+(num_btns) 406.52 390 T
+2 F
+( is set to zero. If) 453.19 390 T
+1 F
+(which) 108 377 T
+2 F
+( contains all bits in) 136.67 377 T
+5 F
+(XkbXI_IndicatorsMask) 230.34 377 T
+1 F
+(,) 374.34 377 T
+2 F
+(all) 380.34 377 T
+5 F
+-0.6 (XkbDeviceLedInfoRec) 395.34 377 S
+2 F
+(structures associated with) 108 364 T
+1 F
+(de) 234.31 364 T
+(vice_info) 245.46 364 T
+2 F
+( are freed,) 289.45 364 T
+1 F
+(de) 340.75 364 T
+(vice_info) 351.9 364 T
+2 F
+(->) 395.89 364 T
+1 F
+(leds) 406.66 364 T
+2 F
+( is set to) 425.99 364 T
+5 F
+-0.6 (NULL) 468.66 364 S
+2 F
+(, and) 495.06 364 T
+1 F
+(de) 108 351 T
+(vice_info) 119.15 351 T
+2 F
+(->) 163.14 351 T
+1 F
+(sz_leds) 173.9 351 T
+2 F
+( and) 208.57 351 T
+1 F
+(de) 231.9 351 T
+(vice_info) 243.05 351 T
+2 F
+(->) 287.04 351 T
+1 F
+(num_leds) 297.8 351 T
+2 F
+( are set to zero. If) 343.8 351 T
+1 F
+(which) 430.76 351 T
+2 F
+( contains) 459.43 351 T
+5 F
+(XkbXI_IndicatorMapsMask) 108 338 T
+1 F
+(,) 273.6 338 T
+2 F
+(all indicator maps associated with) 279.6 338 T
+1 F
+(de) 445.25 338 T
+(vice_info) 456.4 338 T
+2 F
+( are) 500.39 338 T
+(cleared, but the number of LEDs and the leds structures themselves are preserved. If) 108 325 T
+1 F
+(which) 108 312 T
+2 F
+( contains) 136.67 312 T
+5 F
+(XkbXI_IndicatorNamesMask) 182.66 312 T
+1 F
+(,) 355.46 312 T
+2 F
+(all indicator names associated with) 361.46 312 T
+(device_info are cleared, but the number of LEDs and the leds structures themselves are) 108 299 T
+(preserved. If) 108 286 T
+1 F
+(which) 171.64 286 T
+2 F
+( contains) 200.3 286 T
+5 F
+(XkbXI_IndicatorStateMask) 246.3 286 T
+1 F
+(,) 419.1 286 T
+2 F
+(the indicator state asso-) 425.1 286 T
+-0.24 (ciated with the) 108 273 P
+1 F
+-0.24 (de) 180.94 273 P
+-0.24 (vice_info) 192.09 273 P
+2 F
+-0.24 ( leds are set to zeros but the number of LEDs and the leds struc-) 236.08 273 P
+(tures themselves are preserved.) 108 260 T
+0 F
+(21.4) 72 235 T
+(Setting Xkb Features f) 108 235 T
+(or Non-K) 234.46 235 T
+(e) 285.6 235 T
+(yClass Input Extension De) 292.09 235 T
+(vices) 442.62 235 T
+2 F
+(The Xkb extension allows clients to assign any key action to either core pointer or input) 108 215 T
+(extension device buttons. This makes it possible to control the keyboard or generate key-) 108 202 T
+(board key events from extension devices or from the core pointer.) 108 189 T
+(Key actions assigned to core X pointer buttons or input extension device buttons cause) 108 168 T
+(key events to be generated as if they had originated from the core X keyboard.) 108 155 T
+(Xkb implementations are required to support key actions for the buttons of the core) 108 134 T
+(pointer device, but support for actions on extension devices is optional. Implementations) 108 121 T
+(that do not support button actions for extension devices must not set the) 108 108 T
+5 F
+-0.6 (XkbXI_ButtonActionsMask) 108 95 S
+2 F
+( bit in the) 259.8 95 T
+1 F
+(supported) 308.48 95 T
+2 F
+( field of an) 356.48 95 T
+5 F
+-0.6 (XkbDeviceInfoRec) 411.8 95 S
+2 F
+(structure.) 108 82 T
+FMENDPAGE
+%%EndPage: "204" 216
+%%Page: "205" 217
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(205) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+(If a client attempts to modify valid characteristics of a device using an implementation) 108 712 T
+(that does not support modification of those characteristics, no protocol error is generated.) 108 699 T
+-0.11 (Instead, the server reports a failure for the request; it also sends an) 108 686 P
+5 F
+-0.25 -0.6 (XkbExtensionDevi-) 427.8 686 B
+-0.6 (ceNotify) 108 673 S
+2 F
+( event to the client that issued the request if the client has selected to receive) 160.8 673 T
+(these events.) 108 660 T
+-0.35 (To change characteristics of an X Input Extension device in the server, first modify a local) 108 639 P
+(copy of the device structure and then use either) 108 626 T
+1 F
+(XkbSetDe) 337.61 626 T
+(viceInfo,) 384.74 626 T
+2 F
+( or, to save network) 426.4 626 T
+(traffic, use an) 108 613 T
+5 F
+-0.6 (XkbDeviceChangesRec) 176.64 613 S
+2 F
+( structure \050see section 21.6\051 and call) 302.04 613 T
+1 F
+(XkbChang) 108 600 T
+(eDe) 158.54 600 T
+(viceInfo) 177.68 600 T
+2 F
+( to download the changes to the server.) 216.34 600 T
+(To modify some or all of the characteristics of an X Input Extension device, use) 108 579 T
+1 F
+(XkbSet-) 495.26 579 T
+(DeviceInfo) 108 566 T
+2 F
+(.) 160.64 566 T
+2 11 Q
+(Bool) 108 545.67 T
+3 F
+(XkbSetDe) 132.15 545.67 T
+(viceInf) 179.64 545.67 T
+(o) 211.75 545.67 T
+2 F
+(\050) 217.25 545.67 T
+1 F
+(dpy) 220.91 545.67 T
+2 F
+(,) 236.08 545.67 T
+1 F
+(whic) 241.58 545.67 T
+(h, de) 262.2 545.67 T
+(vice_info) 283.42 545.67 T
+2 F
+(\051) 323.74 545.67 T
+(Display *) 126 532.67 T
+1 F
+(dpy) 234 532.67 T
+2 F
+(;) 249.88 532.67 T
+(/* connection to X serv) 306 532.67 T
+(er */) 408.49 532.67 T
+(unsigned int) 126 519.67 T
+1 F
+(whic) 234 519.67 T
+(h) 254.61 519.67 T
+2 F
+(;) 260.11 519.67 T
+(/* mask indicating characteristics to modify */) 306 519.67 T
+(XkbDe) 126 506.67 T
+(viceInfoPtr) 157.49 506.67 T
+1 F
+(de) 234 506.67 T
+(vice_info) 244.22 506.67 T
+2 F
+(;) 284.55 506.67 T
+(/* structure de\336ning the de) 306 506.67 T
+(vice and modi\336cations */) 423.66 506.67 T
+1 12 Q
+(XkbSetDe) 108 487 T
+(viceInfo) 155.14 487 T
+2 F
+( sends a request to the server to modify the characteristics of the device) 193.79 487 T
+-0.52 (specified in the) 108 474 P
+1 F
+-0.52 (de) 182.76 474 P
+-0.52 (vice_info) 193.91 474 P
+2 F
+-0.52 ( structure. The particular characteristics modified are identified) 237.9 474 P
+(by the bits set in) 108 461 T
+1 F
+(whic) 189.67 461 T
+(h) 212.16 461 T
+2 F
+( and take their values from the relevant fields in) 218.16 461 T
+1 F
+(de) 450.78 461 T
+(vice_info) 461.93 461 T
+2 F
+( \050see) 505.92 461 T
+(Table 21.1\051.) 108 448 T
+1 F
+(XkbSetDe) 169.32 448 T
+(viceInfo) 216.46 448 T
+2 F
+( returns) 255.11 448 T
+5 F
+-0.6 (True) 294.43 448 S
+2 F
+( if the request was successfully sent to the) 320.83 448 T
+(server. If the X server implementation does not allow interaction between the X input) 108 435 T
+(extension and the Xkb Extension, the function does nothing and returns) 108 422 T
+5 F
+-0.6 (False) 454.63 422 S
+2 F
+(.) 487.63 422 T
+-0.06 (The) 108 401 P
+1 F
+-0.06 (which) 129.6 401 P
+2 F
+-0.06 ( parameter specifies which aspects of the device should be changed and is a bit-) 158.27 401 P
+(mask composed of an inclusive OR or one or more of the following bits:) 108 388 T
+5 F
+-0.6 (XkbXI_ButtonActionsMask) 108 375 S
+2 F
+(,) 259.8 375 T
+5 F
+-0.6 (XkbXI_IndicatorNamesMask) 265.8 375 S
+2 F
+(,) 424.21 375 T
+5 F
+-0.6 (XkbXI_IndicatorMapsMask) 108 362 S
+2 F
+(. If the features requested to be manipulated in) 259.8 362 T
+1 F
+(whic) 485.75 362 T
+(h) 508.24 362 T
+2 F
+( are) 514.24 362 T
+(valid for the device, but the server does not support assignment of one or more of them,) 108 349 T
+(that particular portion of the request is ignored.) 108 336 T
+-0.22 (If the device specified in) 108 315 P
+1 F
+-0.22 (de) 228.55 315 P
+-0.22 (vice_info) 239.7 315 P
+2 F
+-0.22 (->) 283.69 315 P
+1 F
+-0.22 (device_spec) 294.45 315 P
+2 F
+-0.22 ( does not contain buttons and a request) 352.42 315 P
+-0.26 (affecting buttons is made, or the device does not contain indicators and a request affecting) 108 302 P
+(indicators is made, a) 108 289 T
+5 F
+-0.6 (BadMatch) 209.65 289 S
+2 F
+( protocol error results.) 262.45 289 T
+-0.15 (If the) 108 268 P
+5 F
+-0.32 -0.6 (XkbXI_ButtonActionsMask) 136.36 268 B
+2 F
+-0.15 ( bit is set in the) 288.17 268 P
+1 F
+-0.15 (supported) 363.29 268 P
+2 F
+-0.15 (mask returned by) 414.14 268 P
+1 F
+-0.15 (XkbGet-) 500.02 268 P
+(DeviceInfo) 108 255 T
+2 F
+(, the Xkb extension allows applications to assign key actions to buttons on) 160.64 255 T
+(input extension devices other than the core keyboard device. If the) 108 242 T
+5 F
+-0.6 (XkbXI_ButtonActionsMask) 108 229 S
+2 F
+( is set in) 259.8 229 T
+1 F
+(which) 302.48 229 T
+2 F
+(, the actions for all buttons specified in) 331.14 229 T
+1 F
+(device_info) 108 216 T
+2 F
+( are set to the) 163.32 216 T
+5 F
+-0.6 (XkbAction) 230.3 216 S
+2 F
+(s specified in) 289.7 216 T
+1 F
+(de) 356.03 216 T
+(vice_info) 367.18 216 T
+2 F
+(->) 411.17 216 T
+1 F
+(btn_acts) 421.93 216 T
+2 F
+(. If the number) 462.6 216 T
+(of buttons requested to be updated is not valid for the device,) 108 203 T
+1 F
+(XkbSetDe) 404.29 203 T
+(viceInfo) 451.43 203 T
+2 F
+( returns) 490.08 203 T
+5 F
+-0.6 (False) 108 190 S
+2 F
+( and a) 141 190 T
+5 F
+-0.6 (BadValue) 172.66 190 S
+2 F
+( protocol error results.) 225.46 190 T
+(If the) 108 169 T
+5 F
+-0.6 (XkbXI_IndicatorMaps) 136.66 169 S
+2 F
+( and / or) 262.06 169 T
+5 F
+-0.6 (XkbXI_IndicatorNamesMask) 304.72 169 S
+2 F
+( bit is set in the) 463.12 169 T
+1 F
+(supported) 108 156 T
+2 F
+(mask returned by) 159 156 T
+1 F
+(XkbGetDeviceInfo) 245.32 156 T
+2 F
+(, the Xkb extension allows applications to) 333.95 156 T
+(assign maps and / or names to the indicators of nonkeyboard extension devices. If sup-) 108 143 T
+(ported, maps and / or names can be assigned to all extension device indicators, whether) 108 130 T
+(they are part of a keyboard feedback or part of an indicator feedback.) 108 117 T
+-0.15 (If the) 108 96 P
+5 F
+-0.33 -0.6 (XkbXI_IndicatorMapsMask) 136.35 96 B
+2 F
+-0.15 ( and / or) 288.15 96 P
+5 F
+-0.33 -0.6 (XkbXI_IndicatorNamesMask) 330.21 96 B
+2 F
+-0.15 ( flag is set) 488.61 96 P
+(in) 108 83 T
+1 F
+(which) 120.34 83 T
+2 F
+(, the indicator maps and / or names for all) 149 83 T
+1 F
+(de) 351.97 83 T
+(vice_info) 363.12 83 T
+2 F
+(->) 407.11 83 T
+1 F
+(num_leds) 417.88 83 T
+2 F
+( indicator) 463.87 83 T
+(devices specified in) 108 70 T
+1 F
+(de) 205.64 70 T
+(vice_info) 216.79 70 T
+2 F
+(->) 260.78 70 T
+1 F
+(leds) 271.55 70 T
+2 F
+( are set to the maps and / or names specified in) 290.88 70 T
+FMENDPAGE
+%%EndPage: "205" 217
+%%Page: "206" 218
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(206) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+1 12 Q
+(de) 108 712 T
+(vice_info) 119.15 712 T
+2 F
+(->) 163.14 712 T
+1 F
+(leds) 173.9 712 T
+2 F
+(.) 193.24 712 T
+1 F
+(de) 199.24 712 T
+(vice_info) 210.38 712 T
+2 F
+(->) 254.38 712 T
+1 F
+(leds) 265.14 712 T
+2 F
+(->) 284.47 712 T
+1 F
+(led_class) 295.24 712 T
+2 F
+( and) 339.9 712 T
+1 F
+(led_id) 363.23 712 T
+2 F
+( specify the input extension) 393.23 712 T
+(class and device ID for each indicator device to modify; if they have invalid values, a) 108 699 T
+5 F
+-0.6 (BadValue) 108 686 S
+2 F
+( protocol error results and) 160.8 686 T
+1 F
+(XkbSetDe) 287.77 686 T
+(viceInfo) 334.91 686 T
+2 F
+( returns) 373.56 686 T
+5 F
+-0.6 (False) 412.89 686 S
+2 F
+(. If they have legal) 445.89 686 T
+-0.39 (values but do not specify a keyboard or indicator class feedback for the device in question,) 108 673 P
+-0.42 (a) 108 660 P
+5 F
+-0.92 -0.6 (BadMatch) 115.91 660 B
+2 F
+-0.42 ( error results. If any of the values in) 168.71 660 P
+1 F
+-0.42 (device_info) 339.59 660 P
+2 F
+-0.42 (->) 394.91 660 P
+1 F
+-0.42 (leds) 405.68 660 P
+-0.42 (->) 425.01 660 P
+-0.42 (names) 437.1 660 P
+2 F
+-0.42 ( are not a valid) 467.76 660 P
+(Atom or) 108 647 T
+5 F
+-0.6 (None) 151.33 647 S
+2 F
+(, a) 177.73 647 T
+5 F
+-0.6 (BadAtom) 192.06 647 S
+2 F
+( protocol error results.) 238.26 647 T
+(Xkb provides convenience functions to modify subsets of the information accessible via) 108 626 T
+1 F
+-0.03 (XkbSetDe) 108 613 P
+-0.03 (viceInfo) 155.14 613 P
+2 F
+-0.03 (. Only the parts of the structure indicated in the function description are) 193.79 613 P
+(modified. These convenience functions are described as follows.) 108 600 T
+(To change only the button actions for an input extension device, use) 108 579 T
+1 F
+(XkbSetDeviceBut-) 438.29 579 T
+(tonActions) 108 566 T
+2 F
+(.) 159.34 566 T
+2 11 Q
+(Bool) 108 545.67 T
+3 F
+(XkbSetDe) 132.15 545.67 T
+(viceButtonActions) 179.64 545.67 T
+2 F
+(\050) 265.81 545.67 T
+1 F
+(dpy) 269.47 545.67 T
+2 F
+(,) 284.64 545.67 T
+1 F
+(de) 290.14 545.67 T
+(vice) 300.36 545.67 T
+(, \336r) 317.96 545.67 T
+(st_b) 333.13 545.67 T
+(utton, num_b) 351.24 545.67 T
+(uttons, actions) 409.08 545.67 T
+2 F
+(\051) 473.26 545.67 T
+(Display *) 126 532.67 T
+1 F
+(dpy) 234 532.67 T
+2 F
+(;) 249.88 532.67 T
+(/* connection to X serv) 306 532.67 T
+(er */) 408.49 532.67 T
+(XkbDe) 126 519.67 T
+(viceInfoPtr) 157.49 519.67 T
+1 F
+(de) 234 519.67 T
+(vice_info) 244.22 519.67 T
+2 F
+(;) 284.55 519.67 T
+(/* structure de\336ning the de) 306 519.67 T
+(vice and modi\336cations */) 423.66 519.67 T
+(unsigned int) 126 506.67 T
+1 F
+(\336r) 234 506.67 T
+(st_b) 243.67 506.67 T
+(utton) 261.79 506.67 T
+2 F
+(;) 284.4 506.67 T
+(/* number of \336rst b) 306 506.67 T
+(utton to update, 0 relati) 390.72 506.67 T
+(v) 492.8 506.67 T
+(e */) 498.14 506.67 T
+(unsigned int) 126 493.67 T
+1 F
+(num_b) 234 493.67 T
+(uttons) 263.72 493.67 T
+2 F
+(;) 290.62 493.67 T
+(/* number of b) 306 493.67 T
+(uttons to update */) 370.86 493.67 T
+1 12 Q
+(XkbSetDe) 108 474 T
+(viceButtonActions) 155.14 474 T
+2 F
+( assigns actions to the buttons of the device specified in) 242.46 474 T
+1 F
+(device_info) 108 461 T
+2 F
+(->) 163.32 461 T
+1 F
+(device_spec.) 174.08 461 T
+2 F
+(Actions are assigned to) 238.06 461 T
+1 F
+(num_b) 352.7 461 T
+(uttons) 385.13 461 T
+2 F
+( buttons beginning with) 414.47 461 T
+1 F
+(\336r) 108 448 T
+(st_b) 118.55 448 T
+(utton) 138.31 448 T
+2 F
+( and are taken from the actions specified in) 162.98 448 T
+1 F
+(de) 372.6 448 T
+(vice_info) 383.75 448 T
+2 F
+(->) 427.74 448 T
+1 F
+(btn_acts) 438.5 448 T
+2 F
+(.) 479.17 448 T
+-0.12 (If the server does not support assignment of Xkb actions to extension device buttons,) 108 427 P
+1 F
+-0.12 (Xkb-) 517.34 427 P
+-0.36 (SetDe) 108 414 P
+-0.36 (viceButtonActions) 136.48 414 P
+2 F
+-0.36 ( has no effect and returns) 223.8 414 P
+5 F
+-0.79 -0.6 (False) 345.6 414 B
+2 F
+-0.36 (. If the device has no buttons or if) 378.6 414 P
+1 F
+(first_button) 108 401 T
+2 F
+( or) 164.02 401 T
+1 F
+(num_buttons) 180.01 401 T
+2 F
+( specify buttons outside of the valid range as determined by) 242.02 401 T
+1 F
+(de) 108 388 T
+(vice_info) 119.15 388 T
+2 F
+(->) 163.14 388 T
+1 F
+(num_btns) 173.9 388 T
+2 F
+(, the function has no effect and returns) 220.57 388 T
+5 F
+-0.6 (False) 408.19 388 S
+2 F
+(. Otherwise,) 441.19 388 T
+1 F
+(XkbSet-) 502.51 388 T
+(De) 108 375 T
+(viceButtonActions) 121.81 375 T
+2 F
+( sends a request to the server to change the actions for the specified) 209.14 375 T
+(buttons and returns) 108 362 T
+5 F
+-0.6 (True) 202.99 362 S
+2 F
+(.) 229.39 362 T
+-0.22 (If the actual request sent to the server involved illegal button numbers, a) 108 341 P
+5 F
+-0.48 -0.6 (BadValue) 455.09 341 B
+2 F
+-0.22 ( proto-) 507.89 341 P
+(col error is generated. If an invalid device identifier is specified in) 108 328 T
+1 F
+(device_info) 108 315 T
+2 F
+(->) 163.32 315 T
+1 F
+(device_spec) 174.08 315 T
+2 F
+(, a) 232.06 315 T
+5 F
+(BadKeyboard) 246.38 315 T
+2 F
+( protocol error results. If the actual device) 325.58 315 T
+(specified in) 108 302 T
+1 F
+(de) 166.66 302 T
+(vice_info) 177.8 302 T
+2 F
+(->) 221.8 302 T
+1 F
+(device_spec) 232.56 302 T
+2 F
+( does not contain buttons and a request affecting) 290.53 302 T
+(buttons is made, a) 108 289 T
+5 F
+-0.6 (BadMatch) 197.66 289 S
+2 F
+( protocol error is generated.) 250.46 289 T
+0 F
+(21.5) 72 264 T
+(XkbExtensionDe) 108 264 T
+(viceNotify Event) 202.51 264 T
+2 F
+(The Xkb extension generates) 108 244 T
+5 F
+-0.6 (XkbExtensionDeviceNotify) 250.63 244 S
+2 F
+( events when the status of) 409.04 244 T
+-0.44 (an input extension device changes or when an attempt is made to use an Xkb feature that is) 108 231 P
+(not supported by a particular device.) 108 218 T
+0 F
+(Note) 126 197.67 T
+2 11 Q
+(Ev) 162 197.67 T
+(ents indicating an attempt to use an unsupported feature are deli) 174.06 197.67 T
+(v) 454.84 197.67 T
+(ered only to the) 460.18 197.67 T
+(client requesting the e) 162 185.67 T
+(v) 258.57 185.67 T
+(ent.) 263.9 185.67 T
+2 12 Q
+(To track changes to the status of input extension devices or attempts to use unsupported) 108 165 T
+(features of a device, select to receive) 108 152 T
+5 F
+-0.6 (XkbExtensionDeviceNotify) 287.93 152 S
+2 F
+( events by calling) 446.33 152 T
+(either) 108 139 T
+1 F
+(XkbSelectEvents) 138.32 139 T
+2 F
+( or) 217.63 139 T
+1 F
+(XkbSelectEventDetails) 233.63 139 T
+2 F
+( \050see section 4.3\051.) 342.94 139 T
+(To receive) 108 118 T
+5 F
+-0.6 (XkbExtensionDeviceNotify) 161.98 118 S
+2 F
+( events under all possible conditions, call) 320.38 118 T
+1 F
+(XkbSelectEvents) 108 105 T
+2 F
+( and pass) 187.31 105 T
+5 F
+-0.6 (XkbExtensionDeviceNotifyMask) 234.3 105 S
+2 F
+( in both) 419.1 105 T
+1 F
+(bits_to_c) 458.78 105 T
+(hang) 502.6 105 T
+(e) 526.48 105 T
+2 F
+(and) 108 92 T
+1 F
+(values_for_bits) 128.33 92 T
+2 F
+(.) 202.33 92 T
+FMENDPAGE
+%%EndPage: "206" 218
+%%Page: "207" 219
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(207) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+(The) 108 712 T
+5 F
+-0.6 (XkbExtensionDeviceNotify) 129.66 712 S
+2 F
+( event has no event details. However, you can call) 288.06 712 T
+1 F
+-0.17 (XkbSelectEventDetails) 108 699 P
+2 F
+-0.17 ( using) 217.31 699 P
+5 F
+-0.36 -0.6 (XkbExtensionDeviceNotify) 248.98 699 B
+2 F
+-0.17 ( as the) 407.39 699 P
+1 F
+-0.17 (e) 440.55 699 P
+-0.17 (vent_type) 445.7 699 P
+2 F
+-0.17 ( and spec-) 491.68 699 P
+(ifying) 108 686 T
+5 F
+-0.6 (XkbAllExtensionDeviceMask) 139.67 686 S
+2 F
+( in) 304.67 686 T
+1 F
+(bits_to_c) 320.01 686 T
+(hang) 363.83 686 T
+(e) 387.71 686 T
+2 F
+( and) 393.04 686 T
+1 F
+(values_for_bits.) 416.37 686 T
+2 F
+( This has) 493.37 686 T
+(the same effect as a call to) 108 673 T
+1 F
+(XkbSelectEvents) 237.62 673 T
+2 F
+(.) 316.93 673 T
+(The structure for) 108 652 T
+5 F
+-0.6 (XkbExtensionDeviceNotify) 191.64 652 S
+2 F
+( e) 350.04 652 T
+(v) 358.07 652 T
+(ents is:) 363.89 652 T
+2 11 Q
+(typedef struct {) 108 631.67 T
+(int) 126 618.67 T
+(type;) 225 618.67 T
+(/* Xkb e) 306 618.67 T
+(xtension base e) 343.72 618.67 T
+(v) 410.65 618.67 T
+(ent code */) 415.99 618.67 T
+(unsigned long) 126 605.67 T
+(serial;) 225 605.67 T
+(/* X serv) 306 605.67 T
+(er serial number for e) 346.16 605.67 T
+(v) 440.57 605.67 T
+(ent */) 445.91 605.67 T
+(Bool) 126 592.67 T
+(send_e) 225 592.67 T
+(v) 255.27 592.67 T
+(ent;) 260.61 592.67 T
+(/*) 306 592.67 T
+5 12 Q
+-0.6 (True) 317.31 592.67 S
+2 11 Q
+( => synthetically generated*/) 343.71 592.67 T
+(Display *) 126 579.67 T
+(display;) 225 579.67 T
+(/* serv) 306 579.67 T
+(er connection where e) 335.47 579.67 T
+(v) 432.02 579.67 T
+(ent generated */) 437.35 579.67 T
+(T) 126 566.67 T
+(ime) 132.34 566.67 T
+(time;) 225 566.67 T
+(/* serv) 306 566.67 T
+(er time when e) 335.47 566.67 T
+(v) 400.26 566.67 T
+(ent generated */) 405.59 566.67 T
+(int) 126 553.67 T
+(xkb_type;) 225 553.67 T
+(/*) 306 553.67 T
+5 F
+-0.33 (XkbExtensionDeviceNotifyEvent) 317.31 553.67 S
+2 F
+( */) 499.14 553.67 T
+(int) 126 540.67 T
+(de) 225 540.67 T
+(vice;) 235.11 540.67 T
+(/* Xkb de) 306 540.67 T
+(vice ID, will not be) 349.11 540.67 T
+5 F
+-0.33 (XkbUseCoreKbd) 437.1 540.67 S
+2 F
+( */) 518.61 540.67 T
+(unsigned int) 126 527.67 T
+(reason;) 225 527.67 T
+(/* reason for the e) 306 527.67 T
+(v) 385.14 527.67 T
+(ent */) 390.48 527.67 T
+(unsigned int) 126 514.67 T
+(supported;) 225 514.67 T
+(/* mask of supported features */) 306 514.67 T
+(unsigned int) 126 501.67 T
+(unsupported;) 225 501.67 T
+-0.16 (/* unsupported features this client attempted to use */) 306 501.67 P
+(int) 126 488.67 T
+(\336rst_btn;) 225 488.67 T
+(/* \336rst b) 306 488.67 T
+(utton that changed */) 342.45 488.67 T
+(int) 126 475.67 T
+(num_btns;) 225 475.67 T
+(/* number of b) 306 475.67 T
+(uttons that changed */) 370.86 475.67 T
+(unsigned int) 126 462.67 T
+(leds_de\336ned;) 225 462.67 T
+(/* indicators with names or maps */) 306 462.67 T
+(unsigned int) 126 449.67 T
+(led_state;) 225 449.67 T
+(/* current state of the indicators */) 306 449.67 T
+(int) 126 436.67 T
+(led_class;) 225 436.67 T
+(/* feedback class for LED changes */) 306 436.67 T
+(int) 126 423.67 T
+(led_id;) 225 423.67 T
+(/* feedback ID for LED changes */) 306 423.67 T
+(}) 108 410.67 T
+3 F
+(XkbExtensionDe) 116.03 410.67 T
+(viceNotifyEv) 195.32 410.67 T
+(ent) 255.7 410.67 T
+2 F
+(;) 270.36 410.67 T
+2 12 Q
+(The) 108 391 T
+5 F
+-0.6 (XkbExtensionDeviceNotify) 129.66 391 S
+2 F
+( event has fields enabling it to report changes in the) 288.06 391 T
+(state \050on/off\051 of all of the buttons for a device, but only for one LED feedback associated) 108 378 T
+(with a device. You will get multiple events when more than one LED feedback changes) 108 365 T
+(state or configuration.) 108 352 T
+0 F
+(21.6) 72 327 T
+(T) 108 327 T
+(rac) 114.37 327 T
+(king Chang) 132.14 327 T
+(es to Extension De) 197.6 327 T
+(vices) 304.79 327 T
+2 F
+(Changes to an Xkb extension device may be tracked by listening to) 108 307 T
+5 F
+-0.6 (XkbDeviceExten-) 433.96 307 S
+-0.09 -0.6 (sionNotify) 108 294 B
+2 F
+-0.04 ( events and accumulating the changes in an) 174 294 P
+5 F
+-0.09 -0.6 (XkbDeviceChangesRec) 384.31 294 B
+2 F
+-0.04 ( struc-) 509.71 294 P
+(ture. The changes noted in the structure may then be used in subsequent operations to) 108 281 T
+(update either a server configuration or a local copy of an Xkb extension device configura-) 108 268 T
+(tion. The changes structure is defined as follows:) 108 255 T
+2 11 Q
+(typedef struct _XkbDe) 108 234.67 T
+(viceChanges {) 207.92 234.67 T
+(unsigned int) 126 221.67 T
+(changed;) 225 221.67 T
+(/* bits indicating what has changed */) 306 221.67 T
+(unsigned short) 126 208.67 T
+(\336rst_btn;) 225 208.67 T
+(/* number of \336rst b) 306 208.67 T
+(utton which changed, if an) 390.72 208.67 T
+(y */) 507.56 208.67 T
+(unsigned short) 126 195.67 T
+(num_btns;) 225 195.67 T
+(/* number of b) 306 195.67 T
+(uttons that ha) 370.86 195.67 T
+(v) 429.92 195.67 T
+(e changed */) 435.25 195.67 T
+(XkbDe) 126 182.67 T
+(viceLedChangesRec leds;) 157.49 182.67 T
+(}) 108 169.67 T
+3 F
+(XkbDe) 116.03 169.67 T
+(viceChangesRec) 148.87 169.67 T
+2 F
+(,*XkbDe) 225.24 169.67 T
+(viceChangesPtr;) 264.98 169.67 T
+(typedef struct _XkbDe) 108 149.67 T
+(viceLedChanges {) 207.92 149.67 T
+(unsigned short) 126 136.67 T
+(led_class;) 225 136.67 T
+(/* class of this indicator feedback b) 306 136.67 T
+(undle */) 461.58 136.67 T
+(unsigned short) 126 123.67 T
+(led_id;) 225 123.67 T
+(/* ID of this indicator feedback b) 306 123.67 T
+(undle */) 451.8 123.67 T
+(unsigned int) 126 110.67 T
+(names;) 225 110.67 T
+(/* bits indicating which names ha) 306 110.67 T
+(v) 453.36 110.67 T
+(e changed */) 458.69 110.67 T
+(unsigned int) 126 97.67 T
+(maps;) 225 97.67 T
+(/* bits indicating which maps ha) 306 97.67 T
+(v) 448.47 97.67 T
+(e changed */) 453.81 97.67 T
+(struct _XkbDe) 126 84.67 T
+(viceLedChanges *ne) 190.18 84.67 T
+(xt;) 281.97 84.67 T
+(/* link to indicator change record for ne) 306 84.67 T
+(xt set */) 480.88 84.67 T
+(}) 108 71.67 T
+3 F
+(XkbDe) 116.03 71.67 T
+(viceLedChangesRec) 148.87 71.67 T
+2 F
+(,*XkbDe) 243.57 71.67 T
+(viceLedChangesPtr;) 283.32 71.67 T
+FMENDPAGE
+%%EndPage: "207" 219
+%%Page: "208" 220
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(208) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+2 12 Q
+-0.17 (A local description of the configuration and state of a device may be kept in an) 108 712 P
+5 F
+-0.38 -0.6 (XkbDevi-) 487.2 712 B
+-0.67 -0.6 (ceInfoRec) 108 699 B
+2 F
+-0.31 ( structure. The actual state or configuration of the device may change because) 167.4 699 P
+-0.26 (of) 108 686 P
+1 F
+-0.26 (XkbSetDeviceInfo) 120.73 686 P
+2 F
+-0.26 ( and) 206.7 686 P
+1 F
+-0.26 (XkbSetButtonActions) 229.5 686 P
+2 F
+-0.26 ( requests made by clients or by user interac-) 330.83 686 P
+(tion with the device. The X server sends an) 108 673 T
+5 F
+(XkbExtensionDeviceNotify) 318.62 673 T
+2 F
+( event to) 491.42 673 T
+-0.16 (all interested clients when the state of any buttons or indicators or the configuration of the) 108 660 P
+(buttons or indicators on the core keyboard or any input extension device changes. The) 108 647 T
+(event reports the state of indicators for a single indicator feedback, and the state of up to) 108 634 T
+(128 buttons. If more than 128 buttons or more than one indicator feedback are changed,) 108 621 T
+-0.13 (the additional buttons and indicator feedbacks are reported in subsequent events. Xkb pro-) 108 608 P
+-0.29 (vides functions with which you can track changes to input extension devices by noting the) 108 595 P
+(changes that were made and then requesting the changed information from the server.) 108 582 T
+(To note device changes reported in an) 108 561 T
+5 F
+-0.6 (XkbExtensionDeviceNotify) 293.62 561 S
+2 F
+( event, use) 452.02 561 T
+1 F
+(XkbNoteDeviceChanges) 108 548 T
+2 F
+(.) 224.64 548 T
+2 11 Q
+(v) 108 527.67 T
+(oid) 113.28 527.67 T
+3 F
+(XkbNoteDe) 130.09 527.67 T
+(viceChanges) 184.91 527.67 T
+2 F
+( \050) 243.57 527.67 T
+1 F
+(old, ne) 249.99 527.67 T
+(w) 279.77 527.67 T
+(, wanted) 286.29 527.67 T
+2 F
+(\051) 323.57 527.67 T
+(XkbDe) 126 514.67 T
+(viceChangesPtr) 157.49 514.67 T
+1 F
+(old) 306 514.67 T
+2 F
+(;) 320.06 514.67 T
+(/* structure tracking state changes */) 378 514.67 T
+(XkbExtensionDe) 126 501.67 T
+(viceNotifyEv) 201.49 501.67 T
+(ent) 260.6 501.67 T
+( *) 274.04 501.67 T
+1 F
+(ne) 306 501.67 T
+(w) 316.22 501.67 T
+2 F
+(;) 323.56 501.67 T
+(/* e) 378 501.67 T
+(v) 393.92 501.67 T
+(ent indicating state changes */) 399.25 501.67 T
+(unsigned int) 126 488.67 T
+1 F
+(wanted) 306 488.67 T
+2 F
+(;) 337.78 488.67 T
+(/* mask indicating changes to note) 378 488.67 T
+(*/) 234 475.67 T
+2 12 Q
+-0.23 (The) 108 456 P
+1 F
+-0.23 (wanted) 129.43 456 P
+2 F
+-0.23 ( field specifies the changes that should be noted in) 164.1 456 P
+1 F
+-0.23 (old) 406.4 456 P
+2 F
+-0.23 (, and is composed of the) 421.74 456 P
+-0.33 (bitwise inclusive OR of one or more of the masks from Table 21.1) 108 443 P
+1 F
+-0.33 (.) 423 443 P
+2 F
+-0.33 ( The) 426 443 P
+1 F
+-0.33 (reason) 450 443 P
+2 F
+-0.33 ( field of the) 482.66 443 P
+-0.37 (event in) 108 430 P
+1 F
+-0.37 (ne) 148.59 430 P
+-0.37 (w) 159.74 430 P
+2 F
+-0.37 ( indicates the types of changes the event is reporting.) 167.74 430 P
+1 F
+-0.37 (XkbNoteDe) 421.03 430 P
+-0.37 (viceChang) 476.17 430 P
+-0.37 (es) 527.37 430 P
+2 F
+(updates the) 108 417 T
+5 F
+-0.6 (XkbDeviceChangesRec) 165.32 417 S
+2 F
+( specified by) 290.73 417 T
+1 F
+(old) 355.05 417 T
+2 F
+( with the changes that are both) 370.38 417 T
+(specified in) 108 404 T
+1 F
+(wanted) 166.66 404 T
+2 F
+( and contained in) 201.32 404 T
+1 F
+(ne) 286.64 404 T
+(w) 297.79 404 T
+2 F
+(->) 305.8 404 T
+1 F
+(reason) 316.56 404 T
+2 F
+(.) 349.22 404 T
+(To update a local copy of the state and configuration of an X input extension device with) 108 383 T
+(the changes previously noted in an) 108 370 T
+5 F
+-0.6 (XkbDeviceChangesRec) 277.31 370 S
+2 F
+( structure, use) 402.71 370 T
+1 F
+(XkbGetDevi-) 472.7 370 T
+(ceInfoChanges) 108 357 T
+2 F
+(.) 179.99 357 T
+-0.11 (To query the changes that have occurred in the button actions or indicator names and indi-) 108 336 P
+(cator maps associated with an input extension device, use) 108 323 T
+1 F
+(XkbGetDeviceInfoChanges.) 387.29 323 T
+2 11 Q
+(Status) 108 302.67 T
+3 F
+(XkbGetDe) 137.65 302.67 T
+(viceInf) 187.59 302.67 T
+(oChanges) 219.69 302.67 T
+2 F
+(\050) 265.53 302.67 T
+1 F
+(dpy) 269.19 302.67 T
+2 F
+(,) 284.36 302.67 T
+1 F
+(de) 289.86 302.67 T
+(vice_info, c) 300.08 302.67 T
+(hang) 350.63 302.67 T
+(es) 372.52 302.67 T
+2 F
+(\051) 381.68 302.67 T
+(Display *) 126 289.67 T
+1 F
+(dpy) 234 289.67 T
+2 F
+(;) 249.88 289.67 T
+(/* connection to X serv) 306 289.67 T
+(er */) 408.49 289.67 T
+(XkbDe) 126 276.67 T
+(viceInfoPtr) 157.49 276.67 T
+1 F
+(de) 234 276.67 T
+(vice_info) 244.22 276.67 T
+2 F
+(;) 284.55 276.67 T
+(/* structure to update with results */) 306 276.67 T
+(XkbDe) 126 263.67 T
+(viceChangesPtr) 157.49 263.67 T
+1 F
+(c) 234 263.67 T
+(hang) 238.72 263.67 T
+(es) 260.61 263.67 T
+2 F
+(;) 269.77 263.67 T
+(/* contains notes of changes that ha) 306 263.67 T
+(v) 462.2 263.67 T
+(e occurred */) 467.54 263.67 T
+2 12 Q
+(The) 108 244 T
+1 F
+(changes->changed) 129.66 244 T
+2 F
+(field indicates which attributes of the device specified in) 224.74 244 T
+1 F
+(c) 108 231 T
+(hang) 113.15 231 T
+(es) 137.03 231 T
+2 F
+(->) 147.02 231 T
+1 F
+(device) 157.79 231 T
+2 F
+( have changed. The parameters describing the changes are contained in) 188.44 231 T
+(the other fields of) 108 218 T
+1 F
+(c) 195.98 218 T
+(hang) 201.13 218 T
+(es) 225.01 218 T
+2 F
+(.) 235.01 218 T
+1 F
+(XkbGetDe) 241.01 218 T
+(viceInfoChang) 290.81 218 T
+(es) 361.34 218 T
+2 F
+( uses that information to call) 371.34 218 T
+1 F
+(Xkb-) 511.33 218 T
+(GetDeviceInfo) 108 205 T
+2 F
+( to obtain the current status of those attributes that have changed. It then) 177.97 205 T
+(updates the local description of the device in) 108 192 T
+1 F
+(de) 325.3 192 T
+(vice_info) 336.44 192 T
+2 F
+( with the new information.) 380.44 192 T
+-0.14 (To update the server\325s description of a device with the changes noted in an) 108 171 P
+5 F
+-0.33 (XkbDevice-) 468 171 P
+(ChangesRec) 108 158 T
+2 F
+(, use) 180 158 T
+1 F
+(XkbChangeDeviceInfo) 205 158 T
+2 F
+(.) 313.63 158 T
+2 11 Q
+(Bool) 108 137.67 T
+3 F
+(XkbChangeDe) 132.15 137.67 T
+(viceInf) 201.04 137.67 T
+(o) 233.15 137.67 T
+2 F
+( \050) 238.65 137.67 T
+1 F
+(dpy) 245.06 137.67 T
+(, de) 260.34 137.67 T
+(vice_info, c) 276.06 137.67 T
+(hang) 326.6 137.67 T
+(es) 348.49 137.67 T
+2 F
+(\051) 357.66 137.67 T
+(Display *) 126 124.67 T
+1 F
+(dpy) 234 124.67 T
+2 F
+(;) 249.88 124.67 T
+(/* connection to X serv) 306 124.67 T
+(er */) 408.49 124.67 T
+(XkbDe) 126 111.67 T
+(viceInfoPtr) 157.49 111.67 T
+1 F
+(de) 234 111.67 T
+(vice_info) 244.22 111.67 T
+2 F
+(;) 284.55 111.67 T
+(/* local cop) 306 111.67 T
+(y of de) 357.22 111.67 T
+(vice state and con\336guration */) 387.49 111.67 T
+(XkbDe) 126 98.67 T
+(viceChangesPtr) 157.49 98.67 T
+1 F
+(c) 234 98.67 T
+(hang) 238.72 98.67 T
+(es) 260.61 98.67 T
+2 F
+(;) 269.77 98.67 T
+(/* note specifying changes in) 306 98.67 T
+1 F
+(de) 437.07 98.67 T
+(vice_info) 447.28 98.67 T
+2 F
+( */) 487.61 98.67 T
+FMENDPAGE
+%%EndPage: "208" 220
+%%Page: "209" 221
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(209) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+-0.28 (21 Attaching Xkb Actions to X Input Extension) 323.98 744.87 P
+1 12 Q
+(XkbChang) 108 712 T
+(eDe) 158.54 712 T
+(viceInfo) 177.68 712 T
+2 F
+( updates the server\325s description of the device specified in) 216.34 712 T
+1 F
+(de) 108 699 T
+(vice_info) 119.15 699 T
+2 F
+(->) 163.14 699 T
+1 F
+(device_spec) 173.9 699 T
+2 F
+( with the changes specified in) 231.88 699 T
+1 F
+(c) 377.18 699 T
+(hang) 382.33 699 T
+(es) 406.21 699 T
+2 F
+( and contained in) 416.21 699 T
+1 F
+(de) 108 686 T
+(vice_info) 119.15 686 T
+2 F
+(. The update is made by an) 163.14 686 T
+1 F
+(XkbSetDeviceInfo) 295.12 686 T
+2 F
+( request.) 381.08 686 T
+FMENDPAGE
+%%EndPage: "209" 221
+%%Page: "210" 222
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(210) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(22 Deb) 448.56 744.87 T
+(ugging Aids) 485.91 744.87 T
+0 14 Q
+(22) 72 710.67 T
+(Deb) 108 710.67 T
+(ug) 134.17 710.67 T
+(ging Aids) 151.13 710.67 T
+2 12 Q
+(The debugging aids are intended for use primarily by Xkb implementors and are optional) 108 688 T
+(in any implementation.) 108 675 T
+(There are two bitmasks that may be used to control debugging. One bitmask controls the) 108 654 T
+(output of debugging information, and the other controls behavior. Both bitmasks are ini-) 108 641 T
+(tially all zeros.) 108 628 T
+(To change the values of any of the debug controls, use) 108 607 T
+1 F
+(XkbSetDebuggingFlags) 372.61 607 T
+2 F
+(.) 486.6 607 T
+2 11 Q
+(Bool) 108 586.67 T
+3 F
+(XkbSetDeb) 132.15 586.67 T
+(uggingFlags) 185.7 586.67 T
+2 F
+(\050) 242.55 586.67 T
+1 F
+(display) 246.21 586.67 T
+(, mask, \337a) 277.39 586.67 T
+(gs, msg) 321.88 586.67 T
+(, ctrls_mask, ctrls, r) 354.77 586.67 T
+(et_\337a) 442.37 586.67 T
+(gs, r) 466.7 586.67 T
+(et_ctrls) 485.85 586.67 T
+2 F
+(\051) 518.85 586.67 T
+(Display *) 126 573.67 T
+1 F
+(display) 234 573.67 T
+2 F
+(;) 265.78 573.67 T
+(/* connection to X serv) 306 573.67 T
+(er */) 408.49 573.67 T
+(unsigned int) 126 560.67 T
+1 F
+(mask) 234 560.67 T
+2 F
+(;) 256.61 560.67 T
+(/* mask selecting deb) 306 560.67 T
+(ug output \337ags to change */) 400.8 560.67 T
+(unsigned int) 126 547.67 T
+1 F
+(\337a) 234 547.67 T
+(gs) 244.89 547.67 T
+2 F
+(;) 254.67 547.67 T
+(/* v) 306 547.67 T
+(alues for deb) 322.53 547.67 T
+(ug output \337ags selected by) 379.13 547.67 T
+1 F
+(mask) 499.2 547.67 T
+2 F
+( */) 521.81 547.67 T
+(char *) 126 534.67 T
+1 F
+(msg) 234 534.67 T
+2 F
+(;) 251.72 534.67 T
+(/* message to print right no) 306 534.67 T
+(w */) 426.42 534.67 T
+(unsigned int) 126 521.67 T
+1 F
+(ctrls_mask) 234 521.67 T
+2 F
+(;) 281.66 521.67 T
+(/* mask selecting deb) 306 521.67 T
+(ug controls to change */) 400.8 521.67 T
+(unsigned int) 126 508.67 T
+1 F
+(ctrls) 234 508.67 T
+2 F
+(;) 253.56 508.67 T
+-0.25 (/* v) 306 508.67 P
+-0.25 (alues for deb) 322.29 508.67 P
+-0.25 (ug controls selected by) 378.39 508.67 P
+1 F
+-0.25 (ctrls_mask) 481.27 508.67 P
+2 F
+-0.25 ( */) 528.94 508.67 P
+(unsigned int *) 126 495.67 T
+1 F
+(r) 234 495.67 T
+(et_\337a) 237.87 495.67 T
+(gs) 262.2 495.67 T
+2 F
+(;) 271.98 495.67 T
+(/* resulting state of all deb) 306 495.67 T
+(ug output \337ags */) 422.8 495.67 T
+(unsigned int *) 126 482.67 T
+1 F
+(r) 234 482.67 T
+(et_ctrls) 237.87 482.67 T
+2 F
+(;) 270.87 482.67 T
+(/* resulting state of all deb) 306 482.67 T
+(ug controls */) 422.8 482.67 T
+1 12 Q
+(XkbSetDeb) 108 463 T
+(ug) 161.08 463 T
+(gingFla) 172.96 463 T
+(gs) 210.84 463 T
+2 F
+( modifies the debug output flags as specified by) 221.51 463 T
+1 F
+(mask) 453.82 463 T
+2 F
+( and) 478.48 463 T
+1 F
+(\337a) 501.8 463 T
+(gs) 513.68 463 T
+2 F
+(,) 524.35 463 T
+(modifies the debug controls flags as specified by) 108 450 T
+1 F
+(ctrls_mask) 345.3 450 T
+2 F
+( and) 397.3 450 T
+1 F
+(ctrls) 420.62 450 T
+2 F
+(, prints the message) 441.96 450 T
+1 F
+(msg) 108 437 T
+2 F
+(, and backfills) 127.33 437 T
+1 F
+(r) 197.99 437 T
+(et_\337a) 202.21 437 T
+(gs) 228.76 437 T
+2 F
+( and) 239.42 437 T
+1 F
+(r) 262.75 437 T
+(et_ctrls) 266.98 437 T
+2 F
+( with the resulting debug output and debug con-) 302.98 437 T
+(trols flags.) 108 424 T
+(When bits are set in the debug output masks,) 108 403 T
+1 F
+(mask) 325.98 403 T
+2 F
+( and) 350.64 403 T
+1 F
+(\337a) 373.97 403 T
+(gs) 385.85 403 T
+2 F
+(, Xkb prints debug informa-) 396.52 403 T
+(tion corresponding to each bit at appropriate points during its processing. The device to) 108 390 T
+-0.05 (which the output is written is implementation-dependent, but is normally the same device) 108 377 P
+(to which X server error messages are directed; thus the bits that can be set in) 108 364 T
+1 F
+(mask) 478.58 364 T
+2 F
+( and) 503.24 364 T
+1 F
+(\337a) 108 351 T
+(gs) 119.88 351 T
+2 F
+( is implementation-specific. To turn on a debug output selection, set the bit for the) 130.55 351 T
+-0.01 (output in the) 108 338 P
+1 F
+-0.01 (mask) 171.65 338 P
+2 F
+-0.01 ( parameter and set the corresponding bit in the) 196.3 338 P
+1 F
+-0.01 (\337a) 421.85 338 P
+-0.01 (gs) 433.73 338 P
+2 F
+-0.01 ( parameter. To turn) 444.4 338 P
+-0.17 (off event selection for an event, set the bit for the output in the) 108 325 P
+1 F
+-0.17 (mask) 408.56 325 P
+2 F
+-0.17 ( parameter and do not) 433.22 325 P
+(set the corresponding bit in the) 108 312 T
+1 F
+(\337a) 259.32 312 T
+(gs) 271.2 312 T
+2 F
+( parameter.) 281.87 312 T
+(When bits are set in the debug controls masks,) 108 291 T
+1 F
+(ctrls_mask) 333.97 291 T
+2 F
+( and) 385.97 291 T
+1 F
+(ctrls) 409.3 291 T
+2 F
+(, Xkb modifies its) 430.63 291 T
+(behavior according to each controls bit.) 108 278 T
+1 F
+(ctrls_mask) 300.96 278 T
+2 F
+( and) 352.96 278 T
+1 F
+(ctrls) 376.28 278 T
+2 F
+( are related in the same way) 397.62 278 T
+(that) 108 265 T
+1 F
+(mask) 129 265 T
+2 F
+( and) 153.66 265 T
+1 F
+(\337a) 176.99 265 T
+(gs) 188.87 265 T
+2 F
+( are. The valid controls bits are defined in Table 22.1.) 199.54 265 T
+1 F
+(XkbSetDeb) 108 185 T
+(ug) 161.08 185 T
+(gingFla) 172.96 185 T
+(gs) 210.84 185 T
+2 F
+( returns) 221.51 185 T
+5 F
+-0.6 (True) 260.83 185 S
+2 F
+( if successful and) 287.23 185 T
+5 F
+-0.6 (False) 373.21 185 S
+2 F
+( otherwise. The only proto-) 406.21 185 T
+(col error it may generate is) 108 172 T
+5 F
+-0.6 (BadAlloc) 239.96 172 S
+2 F
+(, if for some reason it is unable to allocate storage.) 292.77 172 T
+1 F
+-0.5 (XkbSetDeb) 108 151 P
+-0.5 (ug) 161.08 151 P
+-0.5 (gingFla) 172.96 151 P
+-0.5 (gs) 210.84 151 P
+2 F
+-0.5 ( is intended for developer use and may be disabled in production X) 221.51 151 P
+(servers. If it is disabled,) 108 138 T
+1 F
+(XkbSetDeb) 225.65 138 T
+(ug) 278.72 138 T
+(gingFla) 290.6 138 T
+(gs) 328.49 138 T
+2 F
+( has no effect and does not generate any) 339.16 138 T
+(protocol errors.) 108 125 T
+-0.22 (The message in) 108 104 P
+1 F
+-0.22 (msg) 184.99 104 P
+2 F
+-0.22 ( is written immediately. The device to which it is written is implemen-) 204.32 104 P
+(tation dependent but is normally the same device where X server error messages are) 108 91 T
+(directed.) 108 78 T
+3 F
+(T) 245.65 245 T
+(able 22.1 Deb) 252.55 245 T
+(ug Contr) 324.31 245 T
+(ol Masks) 370.43 245 T
+1 F
+(Deb) 138.81 225 T
+(ug Contr) 158.56 225 T
+(ol Mask) 201.03 225 T
+(V) 278.31 225 T
+(alue) 284.31 225 T
+(Meaning) 341.31 225 T
+2 11 Q
+(Xkb) 138.81 210.67 T
+2 12 Q
+(DF_DisableLocks) 157.75 210.67 T
+2 11 Q
+(\0501 << 0\051) 278.31 210.67 T
+(Disable actions that lock modi\336ers) 341.31 210.67 T
+137.81 237 510.19 237 2 L
+V
+0.5 H
+0 Z
+N
+137.81 220 510.19 220 2 L
+V
+N
+FMENDPAGE
+%%EndPage: "210" 222
+%%Page: "211" 223
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(211) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+0 14 Q
+(Glossar) 72 710.67 T
+(y) 124.28 710.67 T
+3 12 Q
+(Allocator) 72 688 T
+2 F
+(Xkb provides functions, known as allocators, to create and initialize Xkb data structures.) 108 673 T
+3 F
+(Audible Bell) 72 652 T
+2 F
+-0.25 (An audible bell is the sound generated by whatever bell is associated with the keyboard or) 108 637 P
+(input extension device, as opposed to any other audible sound generated elsewhere in the) 108 624 T
+(system.) 108 611 T
+3 F
+(Autoreset Controls) 72 590 T
+2 F
+(The autoreset controls configure the boolean controls to automatically be enabled or) 108 575 T
+(disabled at the time a program exits.) 108 562 T
+3 F
+(Base Group) 72 541 T
+2 F
+-0.26 (The group in effect as a result of all actions other than a previous lock or latch request; the) 108 526 P
+(base group is transient. For example, the user pressing and holding a group shift key that) 108 513 T
+(shifts to Group2 would result in the base group being group 2 at that point in time.) 108 500 T
+(Initially, base group is always Group1.) 108 487 T
+3 F
+(Base Modifiers) 72 466 T
+2 F
+(Modifiers that are turned on as a result of some actions other than previous lock or latch) 108 451 T
+(requests; base modifiers are transient. For example, the user pressing and holding a key) 108 438 T
+(bound to the Shift modifier would result in Shift being a base modifier at that point in) 108 425 T
+(time.) 108 412 T
+3 F
+(Base Event Code) 72 391 T
+2 F
+-0.18 (A number assigned by the X server at run time that is assigned to the extension to identify) 108 376 P
+(events from that extension.) 108 363 T
+3 F
+(Base State) 72 342 T
+2 F
+(The base group and base modifiers represent keys that are physically or logically down;) 108 327 T
+(these constitute the base state.) 108 314 T
+3 F
+(Boolean Controls) 72 293 T
+2 F
+(Global keyboard controls that may be selectively enabled and disabled under program) 108 278 T
+(control and that may be automatically set to an on or off condition upon client program) 108 265 T
+(exit.) 108 252 T
+3 F
+(Canonical Key Types) 72 231 T
+2 F
+-0.15 (The canonical key types are predefined key types that describe the types of keys available) 108 212 P
+(on most keyboards. The definitions for the canonical key types are held in the first) 108 199 T
+5 F
+-1.05 -0.6 (XkbNumRequiredTypes) 108 186 B
+2 F
+-0.48 ( entries of the) 233.4 186 P
+1 F
+-0.48 (types) 300.15 186 P
+2 F
+-0.48 ( field of the client map and are indexed using) 324.81 186 P
+(the following constants:) 108 173 T
+5 F
+-0.6 (XkbOneLevelIndex) 139.68 152 S
+-0.6 (XkbTwoLevelIndex) 139.68 138 S
+-0.6 (XkbAlphabeticIndex) 139.68 124 S
+-0.6 (XkbKeypadIndex) 139.68 110 S
+3 F
+(Client Map) 72 88 T
+2 F
+(The key mapping information needed to convert arbitrary keycodes to symbols.) 108 73 T
+FMENDPAGE
+%%EndPage: "211" 223
+%%Page: "212" 224
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(212) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+3 12 Q
+(Compat Name) 72 712 T
+2 F
+(The) 108 697 T
+1 F
+(compat) 129.66 697 T
+2 F
+( name is a string that provides some information about the rules used to bind) 164.99 697 T
+(actions to keys that are changed using core protocol requests.) 108 684 T
+3 F
+(Compatibility State) 72 663 T
+2 F
+(When an Xkb-extended X server connects to an Xkb-unaware client, the compatibility) 108 648 T
+(state remaps the keyboard group into a core modifier whenever possible.) 108 635 T
+3 F
+(Compatibility Grab State) 72 614 T
+2 F
+(The grab state that results from applying the compatibility map to the Xkb grab state.) 108 599 T
+3 F
+(Compatibility Map) 72 578 T
+2 F
+(The definition of how to map core protocol keyboard state to Xkb keyboard state.) 108 563 T
+3 F
+(Component Expression) 72 542 T
+2 F
+(An expression used to describe server keyboard database components to be loaded. It) 108 527 T
+(describes the order in which the components should be loaded and the rules by which) 108 514 T
+(duplicate attributes should be resolved.) 108 501 T
+3 F
+(Compose Processing) 72 480 T
+2 F
+(The process of mapping a series of keysyms to a string is known as compose processing.) 108 465 T
+3 F
+(Consumed Modifier) 72 444 T
+2 F
+(Xkb normally consumes modifiers in determining the appropriate symbol for an event,) 108 429 T
+-0.12 (that is, the modifiers are not considered during any of the later stages of event processing.) 108 416 P
+(For those rare occasions when a modifier) 108 403 T
+340.96 401.8 308.95 401.8 2 L
+V
+0.6 H
+0 Z
+N
+(should) 308.95 403 T
+( be considered despite having been used) 340.96 403 T
+(to look up a symbol, key types include an optional) 108 390 T
+1 F
+(pr) 352.99 390 T
+(eserve) 363.22 390 T
+2 F
+( field.) 393.86 390 T
+3 F
+(Core Event) 72 369 T
+2 F
+(An event created from the core X server.) 108 354 T
+3 F
+(Detectable Auto-Repeat) 72 333 T
+2 F
+(Detectable auto-repeat allows a client to detect an auto-repeating key. If a client requests) 108 318 T
+(and the server supports detectable auto-repeat, Xkb generates) 108 305 T
+5 F
+-0.6 (KeyRelease) 405.58 305 S
+2 F
+( events only) 471.58 305 T
+(when the key is physically released. Thus the client receives a number of) 108 292 T
+5 F
+-0.6 (KeyPress) 461.26 292 S
+2 F
+(events for that key without intervening) 108 279 T
+5 F
+-0.6 (KeyRelease) 297.31 279 S
+2 F
+( events until the key is finally) 363.31 279 T
+(released, when a) 108 266 T
+5 F
+-0.6 (KeyRelease) 190.63 266 S
+2 F
+( event is received.) 256.63 266 T
+3 F
+(Effective Group) 72 245 T
+2 F
+(The effective group is the arithmetic sum of the locked, latched, and base groups. The) 108 230 T
+-0.1 (effective keyboard group is always brought back into range depending on the value of the) 108 217 P
+5 F
+-0.6 (GroupsWrap) 108 204 S
+2 F
+( control for the keyboard. If an event occurs with an effective group that is) 174 204 T
+(legal for the keyboard as a whole, but not for the key in question, the group) 108 191 T
+539.59 189.8 472.61 189.8 2 L
+V
+N
+(for that event) 472.61 191 T
+129.34 176.8 108 176.8 2 L
+V
+N
+(only) 108 178 T
+( is normalized using the algorithm specified by the) 129.34 178 T
+1 F
+(gr) 375.65 178 T
+(oup_info) 385.78 178 T
+2 F
+( member of the key) 428.45 178 T
+(symbol map \050) 108 165 T
+5 F
+-0.6 (XkbSymMapRec) 174 165 S
+2 F
+(\051.) 253.2 165 T
+3 F
+(Effective Mask) 72 144 T
+2 F
+(An Xkb modifier definition consists of a set of bit masks corresponding to the eight real) 108 129 T
+(modifiers; a similar set of bitmasks corresponding to the 16 named virtual modifiers; and) 108 116 T
+(an effective mask. The effective mask represents the set of all real modifiers that can) 108 103 T
+(logically be set either by setting any of the real modifiers or by setting any of the virtual) 108 90 T
+(modifiers in the definition.) 108 77 T
+FMENDPAGE
+%%EndPage: "212" 224
+%%Page: "213" 225
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(213) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+3 12 Q
+(Effective Modifier) 72 712 T
+2 F
+(The effective modifiers are the bitwise union of the base, latched and locked modifiers.) 108 697 T
+3 F
+(Extension Device) 72 676 T
+2 F
+(Any keyboard or other input device recognized by the X input extension.) 108 661 T
+3 F
+(Global Keyboard Controls) 72 640 T
+2 F
+(Controls that affect the way Xkb generates key events. The controls affect all keys, as) 108 625 T
+(opposed to per-key controls that are for a single key. Global controls include) 108 612 T
+2 11 Q
+(\245) 126 597.67 T
+(RepeatK) 139.68 597.67 T
+(e) 177.89 597.67 T
+(ys Control) 182.61 597.67 T
+(\245) 126 585.67 T
+(DetectableAuto-repeat) 139.68 585.67 T
+(\245) 126 573.67 T
+(Slo) 139.68 573.67 T
+(wK) 154.08 573.67 T
+(e) 169.69 573.67 T
+(ys) 174.41 573.67 T
+(\245) 126 561.67 T
+(BounceK) 139.68 561.67 T
+(e) 180.95 561.67 T
+(ys) 185.67 561.67 T
+(\245) 126 549.67 T
+(Stick) 139.68 549.67 T
+(yK) 162.13 549.67 T
+(e) 175.3 549.67 T
+(ys) 180.02 549.67 T
+(\245) 126 537.67 T
+(MouseK) 139.68 537.67 T
+(e) 177.29 537.67 T
+(ys) 182.01 537.67 T
+(\245) 126 525.67 T
+(MouseK) 139.68 525.67 T
+(e) 177.29 525.67 T
+(ysAccel) 182.01 525.67 T
+(\245) 126 513.67 T
+(AccessXK) 139.68 513.67 T
+(e) 186.44 513.67 T
+(ys) 191.16 513.67 T
+(\245) 126 501.67 T
+(AccessXT) 139.68 501.67 T
+(imeout) 185.11 501.67 T
+(\245) 126 489.67 T
+(AccessXFeedback) 139.68 489.67 T
+(\245) 126 477.67 T
+(Ov) 139.68 477.67 T
+(erlay1) 152.96 477.67 T
+(\245) 126 465.67 T
+(Ov) 139.68 465.67 T
+(erlay2) 152.96 465.67 T
+(\245) 126 453.67 T
+(EnabledControls) 139.68 453.67 T
+3 12 Q
+(Grab State) 72 433 T
+2 F
+(The grab state is the state used when matching events to passive grabs. It consists of the) 108 418 T
+(grab group and the grab modifiers.) 108 405 T
+3 F
+(Group) 72 384 T
+2 F
+(See Keysym Group) 108 369 T
+3 F
+(Group Index) 72 348 T
+2 F
+(A number used as the internal representation for a group number. Group1 through Group) 108 333 T
+(4 have indices of 0 through 3.) 108 320 T
+3 F
+(Groups Wrap Control) 72 299 T
+2 F
+(If a group index exceeds the maximum number of groups permitted for the specified) 108 284 T
+(keyboard, it is wrapped or truncated back into range as specified by the global) 108 271 T
+5 F
+-0.6 (GroupsWrap) 108 258 S
+2 F
+(control.) 177 258 T
+5 F
+-0.6 (GroupsWrap) 217 258 S
+2 F
+( can have the following values:) 283 258 T
+5 11 Q
+(WrapIntoRange) 126 243.67 T
+(ClampIntoRange) 126 230.67 T
+(RedirectIntoRange) 126 217.67 T
+3 12 Q
+(Key Type) 72 196 T
+2 F
+(An attribute of a key that identifies which modifiers affect the shift level of a key and the) 108 181 T
+(number of groups on the key.) 108 168 T
+3 F
+(Key Width) 72 147 T
+2 F
+(The maximum number of shift levels in any group for the key type associated with a key.) 108 132 T
+FMENDPAGE
+%%EndPage: "213" 225
+%%Page: "214" 226
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(214) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+3 12 Q
+(Keysym Group) 72 712 T
+2 F
+(A keysym group is a logical state of the keyboard providing access to a collection of) 108 697 T
+(characters. A group usually contains a set of characters that logically belong together and) 108 684 T
+-0.24 (that may be arranged on several shift levels within that group. For example, Group1 could) 108 671 P
+(be the English alphabet, and Group2 could be Greek. Xkb supports up to four different) 108 658 T
+(groups for an input device or keyboard. Groups are in the range 1-4 \050Group1 - Group4\051,) 108 645 T
+(and are often referred to as G1 - G4 and indexed as 0 - 3.) 108 632 T
+3 F
+(Indicator) 72 611 T
+2 F
+(An indicator is a feedback mechanism such as an LED on an input device. Using Xkb, a) 108 596 T
+-0.51 (client application can determine the names of the various indicators, determine and control) 108 583 P
+(the way that the individual indicators should be updated to reflect keyboard changes, and) 108 570 T
+(determine which of the 32 keyboard indicators reported by the protocol are actually) 108 557 T
+(present on the keyboard.) 108 544 T
+3 F
+(Indicator Feedback) 72 523 T
+2 F
+-0.1 (An indicator feedback describes the state of a bank of up to 32 lights. It has a mask where) 108 508 P
+-0.33 (each bit corresponds to a light and an associated value mask that specifies which lights are) 108 495 P
+(on or off.) 108 482 T
+3 F
+(Indicator Map) 72 461 T
+2 F
+(An indicator has its own set of attributes that specify whether clients can explicitly set its) 108 446 T
+-0.02 (state and whether it tracks the keyboard state. The indicator map is the collection of these) 108 433 P
+(attributes for each indicator and is held in the) 108 420 T
+1 F
+(maps) 328.3 420 T
+2 F
+( array, which is an array of) 353.63 420 T
+5 F
+-0.6 (XkbIndicatorRec) 108 407 S
+2 F
+( structures.) 207 407 T
+3 F
+(Input Extension) 72 386 T
+2 F
+-0.39 (An extension to the core X protocol that allows an X server to support multiple keyboards,) 108 371 P
+-0.09 (as well as other input devices, in addition to the core X keyboard and pointer. Other types) 108 358 P
+(of devices supported by the input extension include, but are not limited to: mice, tablets,) 108 345 T
+(touchscreens, barcode readers, button boxes, trackballs, identifier devices, data gloves,) 108 332 T
+(and eye trackers.) 108 319 T
+3 F
+(Key Action) 72 298 T
+2 F
+(A key action consists of an operator and some optional data. Once the server has applied) 108 283 T
+-0.22 (the global controls and per-key behavior and has decided to process a key event, it applies) 108 270 P
+(key actions to determine the effects of the key on the internal state of the server. Xkb) 108 257 T
+(supports actions that do the following:) 108 244 T
+2 11 Q
+(\245) 126 229.67 T
+(Change base, latched, or lock) 139.68 229.67 T
+(ed modi\336ers or group) 269.1 229.67 T
+(\245) 126 217.67 T
+(Mo) 139.68 217.67 T
+(v) 154.79 217.67 T
+(e the core pointer or simulate core pointer b) 160.13 217.67 T
+(utton e) 352.36 217.67 T
+(v) 382.34 217.67 T
+(ents) 387.67 217.67 T
+(\245) 126 205.67 T
+(Change most aspects of k) 139.68 205.67 T
+(e) 252 205.67 T
+(yboard beha) 256.72 205.67 T
+(vior) 310.57 205.67 T
+(\245) 126 193.67 T
+(T) 139.68 193.67 T
+(erminate or suspend the serv) 145.63 193.67 T
+(er) 271.33 193.67 T
+(\245) 126 181.67 T
+(Send a message to interested clients) 139.68 181.67 T
+(\245) 126 169.67 T
+(Simulate e) 139.68 169.67 T
+(v) 186.15 169.67 T
+(ents on other k) 191.49 169.67 T
+(e) 256.46 169.67 T
+(ys) 261.17 169.67 T
+3 12 Q
+(Key Alias) 72 149 T
+2 F
+-0.31 (A key alias is a symbolic name for a specific physical key. Key aliases allow the keyboard) 108 134 P
+(layout designer to assign multiple key names to a single key. This allows the keyboard) 108 121 T
+(layout designer to refer to keys using either their position or their \322function.\323 Key aliases) 108 108 T
+(can be specified both in the symbolic names component and in the keyboard geometry.) 108 95 T
+FMENDPAGE
+%%EndPage: "214" 226
+%%Page: "215" 227
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(215) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+2 12 Q
+(Both sets of aliases are always valid, but key alias definitions in the keyboard geometry) 108 712 T
+(have priority; if both symbolic names and geometry include aliases, you should consider) 108 699 T
+(the definitions from the geometry before considering the definitions from the symbolic) 108 686 T
+(names section.) 108 673 T
+3 F
+(Key Behavior) 72 652 T
+2 F
+(The) 108 637 T
+1 F
+(behaviors) 129.66 637 T
+2 F
+( field of the server map is an array of) 176.99 637 T
+5 F
+-0.6 (XkbBehavior) 357.6 637 S
+2 F
+(, indexed by keycode,) 430.2 637 T
+(and contains the behavior for each key. The X server uses key behavior to determine) 108 624 T
+(whether to process or filter out any given key event; key behavior is independent of) 108 611 T
+(keyboard modifier or group state. Each key has exactly one behavior.) 108 598 T
+(Key behaviors include:) 108 583 T
+2 11 Q
+(\245) 126 568.67 T
+(XkbKB_Def) 139.68 568.67 T
+(ault) 195.78 568.67 T
+(\245) 126 556.67 T
+(XkbKB_Lock) 139.68 556.67 T
+(\245) 126 544.67 T
+(XkbKB_RadioGroup) 139.68 544.67 T
+(\245) 126 532.67 T
+(XkbKB_Ov) 139.68 532.67 T
+(erlay1) 192.68 532.67 T
+(\245) 126 520.67 T
+(XkbKB_Ov) 139.68 520.67 T
+(erlay2) 192.68 520.67 T
+3 12 Q
+(Key Symbol Map) 72 500 T
+2 F
+(A key symbol map describes the symbols bound to a key and the rules to be used to) 108 485 T
+(interpret those symbols. It is an array of) 108 472 T
+5 F
+-0.6 (XkbSymMapRec) 302.3 472 S
+2 F
+( structures indexed by keycode.) 381.51 472 T
+3 F
+(Key Type) 72 451 T
+2 F
+(Key types are used to determine the shift level of a key given the current state of the) 108 436 T
+-0.07 (keyboard. There is one key type for each group for a key. Key types are defined using the) 108 423 P
+5 F
+-0.6 (XkbKeyTypeRec) 108 410 S
+2 F
+( and) 193.8 410 T
+5 F
+-0.6 (XkbKTMapEntryRec) 217.13 410 S
+2 F
+( structures. Xkb allows up to) 322.73 410 T
+5 F
+-0.6 (XkbMaxKeyTypes) 108 397 S
+2 F
+( \050255\051 key types to be defined, but requires at least) 200.4 397 T
+5 F
+-0.6 (XkbNumRequiredTypes) 108 384 S
+2 F
+( \0504\051 predefined types to be in a key map.) 233.4 384 T
+3 F
+(Keyboard Bells) 72 363 T
+2 F
+(The sound the default bell makes when rung is the system bell or the default keyboard) 108 348 T
+(bell. Some input devices may have more than one bell, identified by) 108 335 T
+1 F
+(bell_class) 437.96 335 T
+2 F
+( and) 485.96 335 T
+1 F
+(bell_id) 108 322 T
+2 F
+(.) 141.34 322 T
+3 F
+(Keyboard Components) 72 301 T
+2 F
+(There are five types of components stored in the X server database of keyboard) 108 286 T
+(components. They correspond to the) 108 273 T
+1 F
+(symbols, g) 285.97 273 T
+(eometry) 336.52 273 T
+(, k) 374.51 273 T
+(e) 385.72 273 T
+(ycodes, compat,) 390.68 273 T
+2 F
+(and) 470.66 273 T
+1 F
+( types) 487.99 273 T
+2 F
+(symbolic names associated with a keyboard.) 108 260 T
+3 F
+(Keyboard Feedback) 72 239 T
+2 F
+(A keyboard feedback includes the following:) 108 224 T
+(Keyclick volume) 144 209 T
+(Bell volume) 144 194 T
+(Bell pitch) 144 179 T
+(Bell duration) 144 164 T
+(Global auto-repeat) 144 149 T
+(Per key auto-repeat) 144 134 T
+(32 LEDs) 144 119 T
+3 F
+(Key Width, Key Type Width) 72 98 T
+2 F
+(The maximum number of shift levels for a type is referred to as the width of a key type.) 108 83 T
+FMENDPAGE
+%%EndPage: "215" 227
+%%Page: "216" 228
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(216) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+3 12 Q
+(Keyboard Geometry) 72 712 T
+2 F
+(Keyboard geometry describes the physical appearance of the keyboard, including the) 108 697 T
+-0.28 (shape, location, and color of all keyboard keys or other visible keyboard components such) 108 684 P
+-0.18 (as indicators and is stored in a) 108 671 P
+5 F
+-0.4 -0.6 (XkbGeometryRec) 254.38 671 B
+2 F
+-0.18 ( structure. The information contained in) 346.78 671 P
+(a keyboard geometry is sufficient to allow a client program to draw an accurate) 108 658 T
+(two-dimensional image of the keyboard.) 108 645 T
+3 F
+(Keyboard Geometry Name) 72 624 T
+2 F
+(The keyboard geometry name describes the physical location, size, and shape of the) 108 609 T
+(various keys on the keyboard and is part of the) 108 596 T
+5 F
+-0.6 (XkbNamesRec) 335.29 596 S
+2 F
+( structure.) 407.89 596 T
+3 F
+(Keyboard State) 72 575 T
+2 F
+-0.02 (Keyboard state encompasses all of the transitory information necessary to map a physical) 108 560 P
+(key press or release to an appropriate event.) 108 547 T
+3 F
+(Keycode) 72 526 T
+2 F
+-0.27 (A numeric value returned to the X server when a key on a keyboard is pressed or released,) 108 511 P
+-0.32 (indicating which key is being modulated. Keycode numbers are in the range 1 <= keycode) 108 498 P
+(<= max, where max is the number of physical keys on the device.) 108 485 T
+3 F
+(Keycode Name) 72 464 T
+2 F
+(The keycode name describes the range and meaning of the keycodes returned by the) 108 449 T
+(keyboard and is part of the) 108 436 T
+5 F
+-0.6 (XkbNamesRec) 239.3 436 S
+2 F
+( structure.) 311.9 436 T
+3 F
+(Latched Group) 72 415 T
+2 F
+-0.11 (A latched group is a group index that is combined with the base and locked group to form) 108 400 P
+-0.35 (the effective group. It applies only to the next key event that does not change the keyboard) 108 387 P
+-0.22 (state. The latched group can be changed by keyboard activity or via Xkb extension library) 108 374 P
+(functions.) 108 361 T
+3 F
+(Latched Modifier) 72 340 T
+2 F
+(Latched modifiers are the set of modifiers that are combined with the base modifiers and) 108 325 T
+(the locked modifiers to form the effective modifiers. It applies only to the next key event) 108 312 T
+(that does not change the keyboard state.) 108 299 T
+3 F
+(LED) 72 278 T
+2 F
+(A light emitting diode. However, for the purposes of the X keyboard extension) 108 263 T
+(specification, a LED is any form of visual two-state indicator that is either on or off.) 108 250 T
+3 F
+(Locked Group) 72 229 T
+2 F
+-0.11 (A locked group is a group index that is combined with the base and latched group to form) 108 214 P
+-0.02 (the effective group. When a group is locked, it supersedes any previous locked group and) 108 201 P
+-0.37 (remains the locked group for all future key events, until a new group is locked. The locked) 108 188 P
+(group can be changed by keyboard activity or via Xkb extension library functions.) 108 175 T
+3 F
+(Locked Modifiers) 72 154 T
+2 F
+(Locked modifiers are the set of modifiers that are combined with the base modifiers and) 108 139 T
+(the latched modifiers to form the effective modifiers. A locked modifier applies to all) 108 126 T
+(future key events until it is explicitly unlocked.) 108 113 T
+FMENDPAGE
+%%EndPage: "216" 228
+%%Page: "217" 229
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(217) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+3 12 Q
+(Lookup State) 72 712 T
+2 F
+(The lookup state is composed of the lookup group and the lookup modifiers, and it is the) 108 697 T
+(state an Xkb-capable or Xkb-aware client should use to map a keycode to a keysym.) 108 684 T
+3 F
+(Modifier) 72 663 T
+2 F
+-0.12 (A modifier is a logical condition that is either set or unset. The modifiers control the Shift) 108 648 P
+(Level selected when a key event occurs. Xkb supports the core protocol eight modifiers) 108 635 T
+-0.28 (\050) 108 622 P
+5 F
+-0.61 -0.6 (Shift) 112 622 B
+2 F
+-0.28 (,) 145 622 P
+5 F
+-0.61 -0.6 (Lock) 150.72 622 B
+2 F
+-0.28 (,) 177.12 622 P
+5 F
+-0.61 -0.6 (Control) 182.85 622 B
+2 F
+-0.28 (, and) 229.05 622 P
+5 F
+-0.61 -0.6 (Mod1) 254.82 622 B
+2 F
+-0.28 ( through) 281.22 622 P
+5 F
+-0.61 -0.6 (Mod5) 324 622 B
+2 F
+-0.28 (\051, called the) 350.4 622 P
+1 F
+-0.28 (r) 408.89 622 P
+-0.28 (eal) 413.11 622 P
+2 F
+-0.28 ( modifiers. In addition,) 427.78 622 P
+(Xkb extends modifier flexibility by providing a set of sixteen named virtual modifiers,) 108 609 T
+(each of which can be bound to any set of the eight real modifiers.) 108 596 T
+3 F
+(Modifier Key) 72 575 T
+2 F
+-0.33 (A modifier key is a key whose operation has no immediate effect, but that, for as long as it) 108 560 P
+(is held down, modifies the effect of other keys. A modifier key may be, for example, a) 108 547 T
+(shift key or a control key.) 108 534 T
+3 F
+(Modifier Definition) 72 513 T
+2 F
+-0.1 (An Xkb modifier definition, held in an) 108 498 P
+5 F
+-0.22 -0.6 (XkbModsRec) 295.94 498 B
+2 F
+-0.1 (, consists of a set of real modifiers, a) 361.94 498 P
+-0.25 (set of virtual modifiers, and an effective mask. The mask is the union of the real modifiers) 108 485 P
+(and the set of real modifiers to which the virtual modifiers map; the mask cannot be) 108 472 T
+(explicitly changed.) 108 459 T
+3 F
+(Nonkeyboard Extension Device) 72 438 T
+2 F
+(An input extension device that is not a keyboard. Other types of devices supported by the) 108 423 T
+(input extension include, but are not limited to: mice, tablets, touchscreens, barcode) 108 410 T
+(readers, button boxes, trackballs, identifier devices, data gloves, and eye trackers.) 108 397 T
+3 F
+(Outlines) 72 376 T
+2 F
+-0.42 (An outline is a list of one or more points that describes a single closed polygon, used in the) 108 361 P
+(geometry specification for a keyboard.) 108 348 T
+3 F
+(Physical Indicator Mask) 72 327 T
+2 F
+(The physical indicator mask is a field in the) 108 312 T
+5 F
+-0.6 (XkbIndicatorRec) 320.98 312 S
+2 F
+( that indicates which) 419.98 312 T
+(indicators are bound to physical LEDs on the keyboard; if a bit is set in) 108 299 T
+1 F
+(phys_indicator) 452.96 299 T
+(s) 524.84 299 T
+2 F
+(,) 529.51 299 T
+-0.22 (then the associated indicator has a physical LED associated with it. This field is necessary) 108 286 P
+(because some indicators may not have corresponding physical LEDs on the keyboard.) 108 273 T
+3 F
+(Physical Symbol Keyboard Name) 72 252 T
+2 F
+(The) 108 237 T
+1 F
+(symbols) 129.66 237 T
+2 F
+( keyboard name identifies the symbols logically bound to the keys. The) 168.32 237 T
+(symbols name is a human or application-readable description of the intended locale or) 108 224 T
+-0.42 (usage of the keyboard with these symbols. The) 108 211 P
+1 F
+-0.42 (phys_symbols) 332.91 211 P
+2 F
+-0.42 ( keyboard name, on the other) 399.57 211 P
+(hand, identifies the symbols actually engraved on the keyboard.) 108 198 T
+3 F
+(Preserved Modifier) 72 177 T
+2 F
+(Xkb normally consumes modifiers in determining the appropriate symbol for an event,) 108 162 T
+-0.12 (that is, the modifiers are not considered during any of the later stages of event processing.) 108 149 P
+(For those rare occasions when a modifier) 108 136 T
+340.96 134.8 308.95 134.8 2 L
+V
+0.6 H
+0 Z
+N
+(should) 308.95 136 T
+( be considered despite having been used) 340.96 136 T
+(to look up a symbol, key types include an optional) 108 123 T
+1 F
+(pr) 352.99 123 T
+(eserve) 363.22 123 T
+2 F
+( field. If a modifier is present) 393.86 123 T
+(in the) 108 110 T
+1 F
+(pr) 138 110 T
+(eserve) 148.22 110 T
+2 F
+( list, it is a preserved modifier.) 178.87 110 T
+FMENDPAGE
+%%EndPage: "217" 229
+%%Page: "218" 230
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(218) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+3 12 Q
+(Radio Group) 72 712 T
+2 F
+-0.14 (A radio group is a set of keys whose behavior simulates a set of radio buttons. Once a key) 108 693 P
+(in a radio group is pressed, it stays logically depressed until another key in the group is) 108 680 T
+(pressed, at which point the previously depressed key is logically released. Consequently,) 108 667 T
+(at most one key in a radio group can be logically depressed at one time.) 108 654 T
+3 F
+(Real Modifier) 72 633 T
+2 F
+(Xkb supports the eight core protocol modifiers \050) 108 618 T
+5 F
+-0.6 (Shift) 339.64 618 S
+2 F
+(,) 372.64 618 T
+5 F
+-0.6 (Lock) 378.64 618 S
+2 F
+(,) 405.04 618 T
+5 F
+-0.6 (Control) 411.04 618 S
+2 F
+(, and) 457.24 618 T
+5 F
+-0.6 (Mod1) 483.57 618 S
+2 F
+-0.06 (through) 108 605 P
+5 F
+-0.12 -0.6 (Mod5) 148.28 605 B
+2 F
+-0.06 (\051; these are called the) 174.68 605 P
+1 F
+-0.06 (r) 279.36 605 P
+-0.06 (eal) 283.59 605 P
+2 F
+-0.06 ( modifiers, as opposed to the set of sixteen named) 298.25 605 P
+(virtual modifiers that can be bound to any set of the eight real modifiers.) 108 592 T
+3 F
+(Server Internal Modifiers) 72 571 T
+2 F
+(Modifiers that the server uses to determine the appropriate symbol for an event; internal) 108 556 T
+(modifiers are normally consumed by the server.) 108 543 T
+3 F
+(Shift Level) 72 522 T
+2 11 Q
+-0.1 (One of se) 108 507 P
+-0.1 (v) 149.68 507 P
+-0.1 (eral states \050normally 2 or 3\051 go) 155.02 507 P
+-0.1 (v) 289.92 507 P
+-0.1 (erning which graphic character is produced when a k) 295.25 507 P
+-0.1 (e) 527.13 507 P
+-0.1 (y) 531.85 507 P
+(is actuated.) 108 494 T
+3 12 Q
+(Symbol Keyboard Name) 72 473 T
+2 F
+(The) 108 458 T
+1 F
+(symbols) 129.66 458 T
+2 F
+( keyboard name identifies the symbols logically bound to the keys. The) 168.32 458 T
+(symbols name is a human or application-readable description of the intended locale or) 108 445 T
+-0.42 (usage of the keyboard with these symbols. The) 108 432 P
+1 F
+-0.42 (phys_symbols) 332.91 432 P
+2 F
+-0.42 ( keyboard name, on the other) 399.57 432 P
+(hand, identifies the symbols actually engraved on the keyboard.) 108 419 T
+3 F
+(Symbolic Name) 72 398 T
+2 F
+(Xkb supports symbolic names for most components of the keyboard extension. Most of) 108 383 T
+-0.02 (these symbolic names are grouped into the) 108 370 P
+1 F
+-0.02 (names) 315.48 370 P
+2 F
+-0.02 ( component of the keyboard description.) 346.14 370 P
+3 F
+(State Field) 72 349 T
+2 F
+-0.02 (The portion of a client-side core protocol event that holds the modifier, group, and button) 108 334 P
+(state information pertaining to the event.) 108 321 T
+3 F
+(Types Name) 72 300 T
+2 F
+(The) 108 285 T
+1 F
+(types) 129.66 285 T
+2 F
+( name provides some information about the set of key types that can be) 154.32 285 T
+(associated with the keyboard. In addition, each key type can have a name, and each shift) 108 272 T
+(level of a type can have a name.) 108 259 T
+3 F
+(Valuator) 72 238 T
+2 F
+(A valuator reports a range of values for some entity, like a mouse axis, a slider, or a dial.) 108 223 T
+3 F
+(Virtual Modifier) 72 202 T
+2 F
+(Xkb provides a set of sixteen named virtual modifiers that can be bound to any set of the) 108 187 T
+(eight real modifiers. Each virtual modifier can be bound to any set of the real modifiers) 108 174 T
+(\050) 108 161 T
+5 F
+-0.6 (Shift) 112 161 S
+2 F
+(,) 145 161 T
+5 F
+-0.6 (Lock) 151 161 S
+2 F
+(,) 177.4 161 T
+5 F
+-0.6 (Control,) 183.4 161 S
+2 F
+( and) 236.2 161 T
+5 F
+-0.6 (Mod1) 259.53 161 S
+2 F
+(-) 285.93 161 T
+5 F
+-0.6 (Mod5) 289.92 161 S
+2 F
+(\051.) 316.32 161 T
+3 F
+(Virtual Modifier Mapping) 72 140 T
+2 F
+(Xkb maintains a virtual modifier mapping, which lists the virtual modifiers associated) 108 125 T
+(with each key.) 108 112 T
+FMENDPAGE
+%%EndPage: "218" 230
+%%Page: "219" 231
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(219) 523.5 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+( Glossary) 492.64 744.87 T
+3 12 Q
+(Xkb-aware Client) 72 712 T
+2 F
+(A client application that initializes Xkb extension and is consequently bound to an Xlib) 108 697 T
+(that includes the Xkb extension.) 108 684 T
+3 F
+(Xkb-capable Client) 72 663 T
+2 F
+(A client application that makes no Xkb extension Xlib calls but is bound to an Xlib that) 108 648 T
+(includes the Xkb extension.) 108 635 T
+3 F
+(Xkb-unaware Client) 72 614 T
+2 F
+(A client application that makes no Xkb extension Xlib calls and is bound to an Xlib that) 108 599 T
+(does not include the Xkb extension.) 108 586 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "219" 231
+%%Page: "220" 232
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-220) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+3 9 Q
+(A) 72 714 T
+2 F
+(AccessX enable/disable bits, table) 72 703 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(75) 197.98 703 T
+(AccessXFeedback) 72 693 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 141.47 693 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 150.47 693 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(63) 156.47 693 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 165.47 693 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 171.47 693 T
+(AccessXK) 72 683 T
+(e) 110.26 683 T
+(ys) 114.12 683 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 125.12 683 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 134.12 683 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 140.12 683 T
+(AccessXNotify) 72 673 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 130.49 673 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 139.49 673 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(66) 145.49 673 T
+(AccessXT) 72 663 T
+(imeout) 109.17 663 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 137.17 663 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 146.17 663 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(62) 152.17 663 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 161.17 663 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 167.17 663 T
+(Action modi\336ers) 72 653 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(144) 135.75 653 T
+(Actions) 72 643 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(141) 103 643 T
+(changing number of actions bound to k) 81 633 T
+(e) 221.9 633 T
+(y) 225.76 633 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(160) 233.26 633 T
+(controls action types, table) 81 623 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(154) 180.49 623 T
+(detecting k) 81 613 T
+(e) 120.65 613 T
+(y action messages) 124.51 613 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 192.5 613 T
+(de) 81 603 T
+(vice b) 89.27 603 T
+(utton action types) 110.83 603 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(158) 177.83 603 T
+(for changing acti) 81 593 T
+(v) 141.76 593 T
+(e screen) 146.12 593 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(153) 178.36 593 T
+(for changing b) 81 583 T
+(utton number simulated by mouse k) 133.31 583 T
+(e) 262.47 583 T
+(ys) 266.33 583 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 277.33 583 T
+(for changing current group state) 81 573 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 199.47 573 T
+(for changing state of boolean controls) 81 563 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(154) 220.22 563 T
+(for changing the state of modi\336ers) 81 553 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 207.73 553 T
+(for generating a dif) 81 543 T
+(ferent k) 150 543 T
+(e) 177.65 543 T
+(ycode for k) 181.51 543 T
+(e) 222.41 543 T
+(y) 226.27 543 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(156) 233.77 543 T
+-0.75 (for generating De) 81 533 P
+-0.75 (viceButtonPress and De) 142.75 533 P
+-0.75 (viceButtonRelease) 227.51 533 P
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(158) 99 523 T
+(for generating messages) 81 513 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 170.98 513 T
+(for locking modi\336ers and group) 81 503 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(150) 198.49 503 T
+(for mo) 81 493 T
+(ving the pointer) 105.11 493 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 165.11 493 T
+(for simulating e) 81 483 T
+(v) 137.77 483 T
+(ents from de) 142.14 483 T
+(vice v) 186.9 483 T
+(aluators) 208.42 483 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 239.92 483 T
+(for simulating pointer b) 81 473 T
+(utton press and release) 166.07 473 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 250.8 473 T
+(group action \337ags, table) 81 463 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(146) 170.49 463 T
+(group action types, table) 81 453 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(146) 172.49 453 T
+(ISO action \337ags, table) 81 443 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(151) 163.99 443 T
+(message action \337ags, table) 81 433 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 179.99 433 T
+(modi\336er action \337ags, table) 81 423 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 179.99 423 T
+(modi\336er action types, table) 81 413 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(144) 181.99 413 T
+(obtaining actions for k) 81 403 T
+(e) 162.15 403 T
+(ys from serv) 166.01 403 T
+(er) 210.87 403 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(160) 220.86 403 T
+(pointer action types, table) 81 393 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 176.99 393 T
+(ponter b) 81 383 T
+(utton action \337ags, table) 110.57 383 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 197.56 383 T
+(ponter b) 81 373 T
+(utton action types, table) 110.57 373 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 199.56 373 T
+(switch screen action \337ags, table) 81 363 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(153) 198.23 363 T
+(Allocator) 72 353 T
+(, glossary entry) 105.63 353 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 163.88 353 T
+(Al) 72 343 T
+(w) 80.91 343 T
+(aysConsumeShiftAndLock) 87.32 343 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 187.82 343 T
+(Audible Bell, glossary entry) 72 333 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 176.49 333 T
+(AudibleBell) 72 323 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 119 323 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 128 323 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(53) 134 323 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 143 323 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(56) 149 323 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 158 323 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 164 323 T
+(AutoReset) 72 313 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 113 313 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 122 313 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(55) 128 313 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 137 313 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 143 313 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 152 313 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(81) 158 313 T
+(Autoreset Controls, glossary entry) 72 303 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 198.49 303 T
+(AX_BounceK) 72 293 T
+(e) 123.26 293 T
+(yReject) 127.12 293 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 157.62 293 T
+(AX_FeatureChange) 72 283 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 146.98 283 T
+(AX_FeatureOf) 72 273 T
+(f) 125.76 273 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 131.75 273 T
+(AX_FeatureOn) 72 263 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 130.49 263 T
+(AX_IndicatorChange) 72 253 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 152.48 253 T
+(AX_IndicatorOf) 72 243 T
+(f) 131.26 243 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 137.25 243 T
+(AX_IndicatorOn) 72 233 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 135.98 233 T
+(ax_options) 72 223 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(75) 114.5 223 T
+(ax_options v) 72 213 T
+(alues) 118.03 213 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(63) 139.52 213 T
+(AX_Slo) 72 203 T
+(wK) 101.28 203 T
+(e) 114.05 203 T
+(yAccept) 117.91 203 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 150.9 203 T
+(AX_Slo) 72 193 T
+(wK) 101.28 193 T
+(e) 114.05 193 T
+(yPress) 117.91 193 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 144.41 193 T
+(AX_Slo) 72 183 T
+(wK) 101.28 183 T
+(e) 114.05 183 T
+(yReject) 117.91 183 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 148.4 183 T
+(AX_Slo) 72 173 T
+(wK) 101.28 173 T
+(e) 114.05 173 T
+(yRelease) 117.91 173 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 153.4 173 T
+(AX_Slo) 72 163 T
+(wK) 101.28 163 T
+(e) 114.05 163 T
+(ysW) 117.91 163 T
+(arning) 133.69 163 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 159.68 163 T
+(AX_Stick) 72 153 T
+(yLatch) 107.86 153 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 135.86 153 T
+(AX_Stick) 72 143 T
+(yLock) 107.86 143 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 133.86 143 T
+(AX_Stick) 72 133 T
+(yUnlock) 107.86 133 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 141.86 133 T
+3 F
+(B) 72 113 T
+2 F
+(BadAccess) 72 102 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 114.99 102 T
+(BadAlloc) 72 92 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 109.5 92 T
+(BadAtom) 72 82 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 110 82 T
+(BadClass) 72 72 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 109 72 T
+(BadDe) 315 714 T
+(vice) 339.77 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 357.76 714 T
+(BadId) 315 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 340 704 T
+(BadImplementation) 315 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 389.5 694 T
+(BadK) 315 684 T
+(e) 335.77 684 T
+(yboard) 339.63 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(4) 367.63 684 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 372.13 684 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(9) 378.13 684 T
+(BadMatch) 315 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 355.49 674 T
+(BadV) 315 664 T
+(alue) 335 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 352.99 664 T
+(Base error code) 315 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(7) 374.48 654 T
+(Base e) 315 644 T
+(v) 338.52 644 T
+(ent code) 342.88 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(7) 376.12 644 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 380.62 644 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(14) 386.62 644 T
+(Base Ev) 315 634 T
+(ent Code, glossary entry) 344.61 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 435.1 634 T
+(Base group) 315 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 358.74 624 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 367.74 624 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(211) 373.74 624 T
+(Base Group, glossary entry) 315 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 415.98 614 T
+(Base modi\336ers) 315 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 371.75 604 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 380.75 604 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(211) 386.75 604 T
+(Base Modi\336ers, glossary entry) 315 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 427.99 594 T
+(Base State, glossary entry) 315 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 410.99 584 T
+(BeepOnComposeF) 315 574 T
+(ail) 383.36 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 395.36 574 T
+(Beha) 315 564 T
+(vior) 333.32 564 T
+(k) 324 554 T
+(e) 328.41 554 T
+(y beha) 332.27 554 T
+(viors, table) 355.83 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(161) 398.83 554 T
+(k) 324 544 T
+(e) 328.41 544 T
+(ys) 332.27 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(161) 343.27 544 T
+(obtaining k) 324 534 T
+(e) 364.66 534 T
+(y beha) 368.52 534 T
+(viors from the serv) 392.08 534 T
+(er) 460.19 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 470.18 534 T
+(BellFeedbackClass) 315 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 386.99 524 T
+(Bells) 315 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(47) 336.5 514 T
+(audible) 324 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 353.5 504 T
+(BeepOnComposeF) 324 494 T
+(ail) 392.36 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 404.36 494 T
+(bell_class and bell_id) 324 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 404.99 484 T
+(detecting) 324 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(51) 359.99 474 T
+(\336x) 324 464 T
+(ed pitch bell only) 333.37 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 399.12 464 T
+(forcing a serv) 324 454 T
+(er) 373.35 454 T
+(-generated bell) 380.16 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(51) 436.89 454 T
+(generating bell e) 324 444 T
+(v) 383.76 444 T
+(ents) 388.12 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(49) 405.62 444 T
+(generating named bell e) 324 434 T
+(v) 410 434 T
+(ents) 414.37 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(50) 431.87 434 T
+(high and lo) 324 424 T
+(w pitched beeps, rising and f) 364.27 424 T
+(alling tones) 467.67 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(63) 512.42 424 T
+(names) 324 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(47) 349.99 414 T
+(prede\336ned) 324 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 364.99 404 T
+(sounding) 324 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(49) 360 394 T
+(Boolean controls) 315 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 379.24 384 T
+(actions for changing the state of) 324 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(154) 442.23 374 T
+(Boolean Controls, glossary entry) 315 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 436.49 364 T
+(BounceK) 315 354 T
+(e) 348.77 354 T
+(ys) 352.63 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 363.63 354 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 372.63 354 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(66) 378.63 354 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 387.63 354 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 393.63 354 T
+(debounce_delay) 324 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(75) 385.48 344 T
+(delay) 324 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(66) 346.49 334 T
+(Bounds) 315 324 T
+(computing bounding box of a ro) 324 314 T
+(w) 440.02 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 449.52 314 T
+(computing bounding box of a section) 324 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 461.24 304 T
+(computing bounding box of a shape) 324 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(105) 456.24 294 T
+(k) 324 284 T
+(e) 328.41 284 T
+(yboard geometry) 332.27 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 396.51 284 T
+(sections) 324 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 356 274 T
+(shapes) 324 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(94) 350.99 264 T
+(Buttons, pointer) 315 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 376.01 254 T
+3 F
+(C) 315 234 T
+2 F
+(Canonical k) 315 223 T
+(e) 358.15 223 T
+(y types) 362.02 223 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 390.77 223 T
+(initializing) 324 213 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(131) 366.01 213 T
+(used in compatiblity map) 324 203 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(176) 418.25 203 T
+(Canonical K) 315 193 T
+(e) 360.02 193 T
+(y T) 363.88 193 T
+(ypes, glossary entry) 375.41 193 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 450.15 193 T
+(Changes data structures) 315 183 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(12) 403.48 183 T
+(ClampIntoRange) 315 173 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 379.5 173 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 388.5 173 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 394.5 173 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 403.5 173 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(134) 409.5 173 T
+(Client map) 315 163 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(2) 357.75 163 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 362.25 163 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(116) 368.25 163 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 381.75 163 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(126) 387.75 163 T
+(allocating and freeing) 324 153 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(123) 405.48 153 T
+(k) 324 143 T
+(e) 328.41 143 T
+(y symbol map) 332.27 143 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(133) 386.27 143 T
+(Client Map, glossary entry) 315 133 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(211) 413.99 133 T
+(Client types) 315 123 T
+(Xkb-a) 324 113 T
+(w) 346.36 113 T
+(are) 352.76 113 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 366.75 113 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 371.25 113 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(21) 377.25 113 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 386.25 113 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(167) 392.25 113 T
+(Xkb-capable) 324 103 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 372.98 103 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 377.48 103 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(21) 383.48 103 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 392.48 103 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(167) 398.48 103 T
+(Xkb-una) 324 93 T
+(w) 355.36 93 T
+(are) 361.76 93 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 375.75 93 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 380.25 93 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(21) 386.25 93 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 395.25 93 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(167) 401.25 93 T
+(Colors) 315 83 T
+(k) 324 73 T
+(e) 328.41 73 T
+(yboard, k) 332.27 73 T
+(e) 366.17 73 T
+(y label) 370.04 73 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 397.28 73 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "220" 232
+%%Page: "221" 233
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-221) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(listed in geometry description) 81 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 191.24 714 T
+(Compat Name, glossary entry) 72 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 182.49 704 T
+(Compatibility) 72 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 125.01 694 T
+(allocating and freeing maps) 81 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(179) 183.73 684 T
+(changing the serv) 81 674 T
+(er\325) 144.35 674 T
+(s map) 153.85 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(177) 178.1 674 T
+(core k) 81 664 T
+(e) 103.15 664 T
+(yboard mapping to Xkb k) 107.01 664 T
+(e) 199.41 664 T
+(yboard mapping transfor-) 203.27 664 T
+(mation) 99 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(170) 127 654 T
+(data structure) 81 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(169) 132.74 644 T
+(data structures, diagram) 81 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(169) 170.23 634 T
+(determining library) 81 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 153.74 624 T
+(diagram) 81 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(168) 113.49 614 T
+(getting map components from serv) 81 604 T
+(er) 206.35 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(174) 216.35 604 T
+(group maps) 81 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(169) 126.25 594 T
+(map) 81 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(167) 99.5 584 T
+(setting e) 81 574 T
+(xplicit component controls) 111.11 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(170) 210.61 574 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 224.11 574 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(171) 230.11 574 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 243.61 574 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(176) 249.61 574 T
+(states) 81 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(22) 104 564 T
+(symbol interpretation match criteria, table) 81 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 235.23 554 T
+(symbol interpretations) 81 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 164.75 544 T
+(tracking changes to the map) 81 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(178) 184.98 534 T
+(types of transformations) 81 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(168) 171.49 524 T
+(using the compatibility map) 81 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(175) 184.76 514 T
+(with the core protocol) 81 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(4) 163.24 504 T
+(Xkb k) 81 494 T
+(e) 103.16 494 T
+(yboard mapping to core k) 107.02 494 T
+(e) 199.41 494 T
+(yboard mapping transfor-) 203.27 494 T
+(mations) 99 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(173) 130.5 484 T
+(Xkb state to core protocol state transformation) 81 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(169) 251.47 474 T
+(Compatibility Grab State, glossary entry) 72 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 220.75 464 T
+(Compatibility Map, glossary entry) 72 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 199 454 T
+(Compatibility State, glossary entry) 72 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 200.51 444 T
+(Component Expression, glossary entry) 72 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 214.49 434 T
+(Components, e) 72 424 T
+(xplicit) 125.86 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 151.87 424 T
+(Compose processing controls) 72 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 180.99 414 T
+(Compose Processing, glossary entry) 72 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 205.49 404 T
+(ComposeLED) 72 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 126.5 394 T
+(Composing) 72 384 T
+(BeepOnComposeF) 81 374 T
+(ail) 149.36 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 161.36 374 T
+(ComposeLED) 81 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 135.5 364 T
+(ConsumeK) 81 354 T
+(e) 121.28 354 T
+(ysOnComposeF) 125.14 354 T
+(ail) 183.01 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 195.01 354 T
+(Consumed Modi\336er) 72 344 T
+(, glossary entry) 143.89 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 202.13 344 T
+(ConsumeK) 72 334 T
+(e) 112.28 334 T
+(ysOnComposeF) 116.14 334 T
+(ail) 174.01 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 186.01 334 T
+(ConsumeLookupMods) 72 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 157.5 324 T
+(Controls) 72 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(2) 106 314 T
+(AccessXFeedback) 81 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(63) 150.47 304 T
+(AccessXT) 81 294 T
+(imeout) 118.17 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(62) 146.17 294 T
+(actions for changing the state of) 81 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(154) 199.23 284 T
+(af) 81 274 T
+(fecting compose processing) 87.77 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 190.75 274 T
+(af) 81 264 T
+(fecting k) 87.77 264 T
+(e) 119.42 264 T
+(ycode to string translation) 123.28 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 220.03 264 T
+(allocating and freeing data structure) 81 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(80) 213.46 254 T
+(Al) 81 244 T
+(w) 89.91 244 T
+(aysConsumeShiftAndLock) 96.32 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 196.82 244 T
+(AudibleBell) 81 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(56) 128 234 T
+(AutoReset) 81 224 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(55) 122 224 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 131 224 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(81) 137 224 T
+(BeepOnComposeF) 81 214 T
+(ail) 149.36 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 161.36 214 T
+(bell beha) 81 204 T
+(vior) 113.56 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(56) 131.06 204 T
+(boolean) 81 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 112.49 194 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 121.49 194 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(82) 127.49 194 T
+(BounceK) 81 184 T
+(e) 114.77 184 T
+(ys) 118.63 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(66) 129.63 184 T
+(changing) 81 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(77) 116.99 174 T
+(changing the state of library controls) 81 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 216.23 164 T
+(cleaning up on e) 81 154 T
+(xit) 140.1 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(55) 152.61 154 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 161.61 154 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(81) 167.61 154 T
+(ComposeLED) 81 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 135.5 144 T
+(ConsumeK) 81 134 T
+(e) 121.28 134 T
+(ysOnComposeF) 125.14 134 T
+(ail) 183.01 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 195.01 134 T
+(ConsumeLookupMods) 81 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 166.5 124 T
+(controls action types, table) 81 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(154) 180.49 114 T
+(data structure) 81 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(71) 132.74 104 T
+(DetectableAutorepeat) 81 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(57) 162.47 94 T
+(determining the state of libarary controls) 81 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 230.73 84 T
+(determining which library controls are implemented) 81 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 271.72 74 T
+(ef) 324 714 T
+(fecting e) 330.77 714 T
+(v) 361.78 714 T
+(ent deli) 366.15 714 T
+(v) 392.67 714 T
+(ery) 397.04 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 411.53 714 T
+(EnabledControls) 324 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(54) 387.5 704 T
+(enabling and diabling other controls) 324 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(54) 456.99 694 T
+(for general k) 324 684 T
+(e) 369.89 684 T
+(yboard mapping) 373.75 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(68) 435.49 684 T
+(F) 324 674 T
+(orceLatin1Lookup) 328.87 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 398.86 674 T
+(GroupsWrap) 324 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 373.48 664 T
+(IgnoreGroupLock) 324 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(70) 391.98 654 T
+(IgnoreLockMods) 324 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 389.49 644 T
+(IgnoreNe) 324 634 T
+(wK) 357.76 634 T
+(e) 370.53 634 T
+(yboards) 374.39 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 405.89 634 T
+(InternalMods) 324 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(70) 375.49 624 T
+(k) 324 614 T
+(e) 328.41 614 T
+(yboard) 332.27 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 360.26 614 T
+(k) 324 604 T
+(e) 328.41 604 T
+(yboard use for ph) 332.27 604 T
+(ysically-impaired persons) 395.46 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(61) 491.2 604 T
+(library controls masks) 324 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 406.99 594 T
+(MouseK) 324 584 T
+(e) 354.77 584 T
+(ys) 358.63 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(59) 369.63 584 T
+(MouseK) 324 574 T
+(e) 354.77 574 T
+(ysAccel) 358.63 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(59) 390.62 574 T
+(o) 324 564 T
+(v) 328.36 564 T
+(erlays) 332.73 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(58) 357.22 564 T
+(PerK) 324 554 T
+(e) 342.27 554 T
+(yRepeat) 346.13 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(56) 378.62 554 T
+(querying) 324 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(77) 358.99 544 T
+(repeat k) 324 534 T
+(e) 352.65 534 T
+(y beha) 356.51 534 T
+(vior) 380.07 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(56) 397.57 534 T
+(RepeatK) 324 524 T
+(e) 355.27 524 T
+(ys) 359.13 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(56) 370.13 524 T
+(Slo) 324 514 T
+(wK) 335.78 514 T
+(e) 348.55 514 T
+(ys) 352.41 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 363.41 514 T
+(Stick) 324 504 T
+(yK) 342.37 504 T
+(e) 353.14 504 T
+(ys) 357 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(67) 368 504 T
+(table listing all) 324 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(72) 380.51 494 T
+(tracking changes to k) 324 484 T
+(e) 400.64 484 T
+(yboard controls) 404.51 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(79) 463.75 484 T
+(using the mouse from the k) 324 474 T
+(e) 422.15 474 T
+(yboard) 426.02 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(59) 454.01 474 T
+(X library) 324 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 359.74 464 T
+(Core Ev) 315 454 T
+(ent, glossary entry) 344.61 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 413.85 454 T
+3 F
+(D) 315 434 T
+2 F
+(Data structures) 315 423 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(11) 372.23 423 T
+(editing) 324 413 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(11) 352 413 T
+(enlar) 324 403 T
+(ging) 341.83 403 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(11) 360.83 403 T
+(freeing) 324 393 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(13) 352.49 393 T
+(debounce_delay) 315 383 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(75) 376.48 383 T
+(Deb) 315 373 T
+(ugging) 329.81 373 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(210) 357.82 373 T
+(Detectable Auto-repeat, glossary entry) 315 363 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 456.96 363 T
+(DetectableAutorepeat) 315 353 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 396.47 353 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 405.47 353 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(57) 411.47 353 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 420.47 353 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 426.47 353 T
+(De) 315 343 T
+(vice feedback, types) 325.27 343 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 401.49 343 T
+(De) 315 333 T
+(vice identi\336er) 325.27 333 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(10) 378.01 333 T
+(De) 315 323 T
+(vice speci\336cations, matching with display speci\336cations) 325.27 323 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 530.26 323 T
+(De) 315 313 T
+(vices) 325.27 313 T
+(actions for generating De) 324 303 T
+(viceButtonPress and De) 415 303 T
+(viceBut-) 501.26 303 T
+(tonRelease) 342 293 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(158) 384.49 293 T
+(actions simulating e) 324 283 T
+(v) 395.77 283 T
+(ents from de) 400.14 283 T
+(vice v) 444.91 283 T
+(aluators) 466.42 283 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 497.92 283 T
+(allocating, initializing and freeing data structures) 324 273 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(203) 503.47 273 T
+(attaching Xkb actions to) 324 263 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 414.74 263 T
+(querying features for non-K) 324 253 T
+(e) 424.49 253 T
+(yClass de) 428.36 253 T
+(vices) 462.88 253 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(200) 484.37 253 T
+(querying for b) 324 243 T
+(utton actions) 375.31 243 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(201) 424.56 243 T
+(querying indicator information) 324 233 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(202) 437.99 233 T
+(setting features for non-K) 324 223 T
+(e) 416.5 223 T
+(yClass de) 420.36 223 T
+(vices) 454.89 223 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(204) 476.38 223 T
+(tracking changes to) 324 213 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(207) 396.98 213 T
+(Display) 315 203 T
+(, actions for changing acti) 342.41 203 T
+(v) 435.42 203 T
+(e screen) 439.79 203 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(153) 472.02 203 T
+(Doodads) 315 193 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 349.99 193 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 358.99 193 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(96) 364.99 193 T
+(in sections) 324 183 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 365.25 183 T
+(indicator) 324 173 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 358.99 173 T
+(logo) 324 163 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 343 163 T
+(outline) 324 153 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 352 153 T
+(priority) 324 143 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 354 143 T
+(solid) 324 133 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 344.51 133 T
+(te) 324 123 T
+(xt) 330.36 123 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 340.36 123 T
+(types) 324 113 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 346 113 T
+(Dra) 315 103 T
+(wing a k) 328.36 103 T
+(e) 359.26 103 T
+(yboard representation) 363.12 103 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(97) 444.35 103 T
+(DumbBells) 315 93 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 359 93 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "221" 233
+%%Page: "222" 234
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-222) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+3 9 Q
+(E) 72 714 T
+2 F
+(Ef) 72 703 T
+(fecti) 80.27 703 T
+(v) 96.04 703 T
+(e group) 100.4 703 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 130.65 703 T
+(Ef) 72 693 T
+(fecti) 80.27 693 T
+(v) 96.04 693 T
+(e Group, glossary entry) 100.4 693 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 187.89 693 T
+(Ef) 72 683 T
+(fecti) 80.27 683 T
+(v) 96.04 683 T
+(e mask) 100.4 683 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(31) 128.65 683 T
+(Ef) 72 673 T
+(fecti) 80.27 673 T
+(v) 96.04 673 T
+(e Mask, glossary entry) 100.4 673 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(212) 184.89 673 T
+(Ef) 72 663 T
+(fecti) 80.27 663 T
+(v) 96.04 663 T
+(e modi\336er mask) 100.4 663 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(31) 161.4 663 T
+(Ef) 72 653 T
+(fecti) 80.27 653 T
+(v) 96.04 653 T
+(e Modi\336er) 100.4 653 T
+(, glossary entry) 137.79 653 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 196.03 653 T
+(Ef) 72 643 T
+(fecti) 80.27 643 T
+(v) 96.04 643 T
+(e modi\336ers) 100.4 643 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 143.65 643 T
+(enabled_ctrls) 72 633 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(74) 122.99 633 T
+(EnabledControls) 72 623 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 135.5 623 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 144.5 623 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(54) 150.5 623 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 159.5 623 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 165.5 623 T
+(Errors, protocol) 72 613 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 131.99 613 T
+(Ev) 72 603 T
+(ents) 81.86 603 T
+(AccessXNotify) 81 593 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 139.49 593 T
+(base e) 81 583 T
+(v) 103.01 583 T
+(ent code) 107.38 583 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 140.62 583 T
+(data structures) 81 573 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 136.24 573 T
+(interpreting k) 81 563 T
+(e) 129.65 563 T
+(y e) 133.51 563 T
+(v) 144.04 563 T
+(ents) 148.4 563 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(87) 165.9 563 T
+(MouseK) 81 553 T
+(e) 111.77 553 T
+(ys) 115.63 553 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 126.63 553 T
+(o) 81 543 T
+(v) 85.36 543 T
+(ervie) 89.73 543 T
+(w) 107.5 543 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 116.99 543 T
+(RepeatK) 81 533 T
+(e) 112.27 533 T
+(ys) 116.13 533 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 127.13 533 T
+(selecting for) 81 523 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 128.74 523 T
+(Stick) 81 513 T
+(yK) 99.37 513 T
+(e) 110.14 513 T
+(ys) 114 513 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 125 513 T
+(types) 81 503 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 103 503 T
+(types, table) 81 493 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 125 493 T
+(Explicit component masks, table) 72 483 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 192.49 483 T
+(Explicit components) 72 473 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 149.25 473 T
+(ExplicitAutoRepeat) 72 463 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 146.5 463 T
+(ExplicitBeha) 72 453 T
+(vior) 118.82 453 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 136.32 453 T
+(ExplicitInterpret) 72 443 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 134.49 443 T
+(ExplicitK) 72 433 T
+(e) 106.78 433 T
+(yT) 110.64 433 T
+(ype1) 119.92 433 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 140.41 433 T
+(ExplicitK) 72 423 T
+(e) 106.78 423 T
+(yT) 110.64 423 T
+(ype2) 119.92 423 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 140.41 423 T
+(ExplicitK) 72 413 T
+(e) 106.78 413 T
+(yT) 110.64 413 T
+(ype3) 119.92 413 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 140.41 413 T
+(ExplicitK) 72 403 T
+(e) 106.78 403 T
+(yT) 110.64 403 T
+(ype4) 119.92 403 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 140.41 403 T
+(ExplicitVModMap) 72 393 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 143.5 393 T
+(Extension De) 72 383 T
+(vice, glossary entry) 120.52 383 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 193.76 383 T
+3 F
+(F) 72 363 T
+2 F
+(Feedback, types) 72 352 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 132.99 352 T
+(F) 72 342 T
+(onts, k) 76.87 342 T
+(e) 100.78 342 T
+(y label) 104.64 342 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 131.89 342 T
+(F) 72 332 T
+(orceLatin1Lookup) 76.87 332 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 146.86 332 T
+3 F
+(G) 72 312 T
+2 F
+(Geometry) 72 301 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 110.99 301 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 115.49 301 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(92) 121.49 301 T
+(adding elements to) 81 291 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 151.99 291 T
+(allocating and freeing components) 81 281 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(110) 208.23 281 T
+(bounds, k) 81 271 T
+(e) 115.91 271 T
+(yboard) 119.77 271 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 147.76 271 T
+(bounds, sections) 81 261 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 143.5 261 T
+(bounds, shapes) 81 251 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(94) 138.49 251 T
+(computing the bounding box of a ro) 81 241 T
+(w) 210.27 241 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 219.76 241 T
+(computing the bounding box of a section) 81 231 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 231.49 231 T
+(computing the bounding box of a shape) 81 221 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(105) 226.49 221 T
+(data structures) 81 211 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(98) 136.24 211 T
+(data structures, diagram) 81 201 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(98) 170.23 201 T
+(doodad types) 81 191 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 131.74 191 T
+(doodads) 81 181 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 114 181 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 123 181 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(96) 129 181 T
+(doodads in sections) 81 171 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 154.5 171 T
+(dra) 81 161 T
+(wing a k) 92.36 161 T
+(e) 123.26 161 T
+(yboard representation) 127.12 161 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(97) 208.35 161 T
+(\336nding the o) 81 151 T
+(v) 126.37 151 T
+(erlay for a k) 130.73 151 T
+(e) 174.38 151 T
+(y) 178.24 151 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 185.74 151 T
+(functions for using) 81 141 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(105) 151.99 141 T
+(getting from serv) 81 131 T
+(er) 142.86 131 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(104) 152.85 131 T
+(k) 81 121 T
+(e) 85.41 121 T
+(y aliases) 89.27 121 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 123.01 121 T
+(k) 81 111 T
+(e) 85.41 111 T
+(y dra) 89.27 111 T
+(wing order) 107.38 111 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 149.62 111 T
+(k) 81 101 T
+(e) 85.41 101 T
+(y label color) 89.27 101 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 137.26 101 T
+(k) 81 91 T
+(e) 85.41 91 T
+(y label font) 89.27 91 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 133.27 91 T
+(k) 81 81 T
+(e) 85.41 81 T
+(yboard color) 89.27 81 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 138.01 81 T
+(k) 81 71 T
+(e) 85.41 71 T
+(yboard with four sections, diagram) 89.27 71 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(94) 218 71 T
+(k) 324 714 T
+(e) 328.41 714 T
+(ys) 332.27 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 343.27 714 T
+(list of colors) 324 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 372 704 T
+(outlines) 324 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(94) 355.5 694 T
+(outlines, diagram) 324 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(105) 389.5 684 T
+(o) 324 674 T
+(v) 328.36 674 T
+(erlay k) 332.73 674 T
+(e) 357.38 674 T
+(ys) 361.24 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 372.24 674 T
+(o) 324 664 T
+(v) 328.36 664 T
+(erlay ro) 332.73 664 T
+(ws) 360.24 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 373.24 664 T
+(o) 324 654 T
+(v) 328.36 654 T
+(erlays) 332.73 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 357.22 654 T
+(priority) 324 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(92) 354 644 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 363 644 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(95) 369 644 T
+(priority) 324 634 T
+(, doodads) 350.42 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 387.91 634 T
+(properties) 324 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 362.99 624 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 371.99 624 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(106) 377.99 624 T
+(rotated k) 324 614 T
+(e) 355.65 614 T
+(yboard sections) 359.51 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(92) 418.76 614 T
+(rotated k) 324 604 T
+(e) 355.65 604 T
+(yboard sections, diagram) 359.51 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(92) 452.75 604 T
+(ro) 324 594 T
+(ws) 331.27 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 344.27 594 T
+(ro) 324 584 T
+(ws in a section, diagram) 331.27 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 421.51 584 T
+(sections) 324 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 356 574 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 365 574 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(95) 371 574 T
+(shapes) 324 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 350.99 564 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 359.99 564 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(94) 365.99 564 T
+(top-le) 324 554 T
+(v) 344.77 554 T
+(el geometry description) 349.14 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(92) 437.12 554 T
+(Global K) 315 544 T
+(e) 348.02 544 T
+(yboard Controls, glossary entry) 351.88 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 468.37 544 T
+(Grab group) 315 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 359.24 534 T
+(Grab modi\336ers) 315 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 372.24 524 T
+(Grab state) 315 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 354.74 514 T
+(Grab State, glossary entry) 315 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 411.48 504 T
+(Grabs) 315 494 T
+(passi) 324 484 T
+(v) 341.77 484 T
+(e, ignoring group locks) 346.14 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(70) 432.63 484 T
+(Group Inde) 315 474 T
+(x, glossary entry) 356.1 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 418.85 474 T
+(Group, glossary entry) 315 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 396.24 464 T
+(Groups) 315 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 344.5 454 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 353.5 454 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(116) 359.5 454 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 373 454 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(117) 379 454 T
+(bindings for alternate group hints) 324 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 446.99 444 T
+(changing) 324 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(23) 359.99 434 T
+(changing current state via k) 324 424 T
+(e) 423.39 424 T
+(y actions) 427.25 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 462.49 424 T
+(compatibility maps) 324 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(169) 396.26 414 T
+(group action \337ags, table) 324 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(146) 413.49 404 T
+(group action types, table) 324 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(146) 415.49 394 T
+(group inde) 324 384 T
+(x constants) 362.61 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(137) 405.86 384 T
+(handling ille) 324 374 T
+(g) 369.12 374 T
+(al groups) 373.57 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 409.82 374 T
+(locking via actions) 324 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(150) 394.99 364 T
+(normalizing groups into range) 324 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 435.74 354 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 444.74 354 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(134) 450.74 354 T
+(per) 324 344 T
+(-k) 335.31 344 T
+(e) 342.72 344 T
+(y group information) 346.58 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(134) 422.08 344 T
+(symbolic group names) 324 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(23) 408.49 334 T
+(treatment of out-of-range groups) 324 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(134) 444.72 324 T
+(Groups Wrap Control, glossary entry) 315 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 451.73 314 T
+(GroupsWrap) 315 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 364.48 304 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 373.48 304 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(68) 379.48 304 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 388.48 304 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(69) 394.48 304 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 403.48 304 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 409.48 304 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 418.48 304 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 424.48 304 T
+3 F
+(H) 315 284 T
+2 F
+(Header \336les) 315 273 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 361.24 273 T
+3 F
+(I) 315 253 T
+2 F
+(IgnoreGroupLock) 315 242 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(54) 382.98 242 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 391.98 242 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(68) 397.98 242 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 406.98 242 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(70) 412.98 242 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 421.98 242 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 427.98 242 T
+(IgnoreLockMods) 315 232 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(54) 380.49 232 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 389.49 232 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(68) 395.49 232 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 404.49 232 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(69) 410.49 232 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 419.49 232 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 425.49 232 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 434.49 232 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 440.49 232 T
+(IgnoreNe) 315 222 T
+(wK) 348.76 222 T
+(e) 361.53 222 T
+(yboards) 365.39 222 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 396.89 222 T
+(Implicit support) 315 212 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(87) 375.75 212 T
+(Indicator feedback) 315 202 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 385.22 202 T
+(Indicator Feedback, glossary entry) 315 192 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(214) 442.47 192 T
+(Indicator map) 315 182 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 368.24 182 T
+(Indicator Map, glossary entry) 315 172 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(214) 424.48 172 T
+(Indicator) 315 162 T
+(, glossary entry) 347.13 162 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(214) 405.37 162 T
+(Indicators) 315 152 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 353.99 152 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 358.49 152 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(34) 364.49 152 T
+(allocating and freeing maps) 324 142 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(45) 426.73 142 T
+(changing maps) 324 132 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(42) 381.24 132 T
+(changing maps and state) 324 122 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(41) 415.24 122 T
+(ComposeLED) 324 112 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 378.5 112 T
+(data structures) 324 102 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(34) 379.24 102 T
+(ef) 324 92 T
+(fects of e) 330.77 92 T
+(xplicit changes on) 363.62 92 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(41) 432.11 92 T
+(geometry) 324 82 T
+(, colors when lit and dark) 357.41 82 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 451.89 82 T
+(getting information about from serv) 324 72 T
+(er) 452.85 72 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(39) 462.85 72 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "222" 234
+%%Page: "223" 235
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-223) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(getting information by inde) 81 714 T
+(x) 179.61 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(40) 187.11 714 T
+(getting information by name) 81 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(40) 186.74 704 T
+(getting the state of) 81 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(40) 150.74 694 T
+(ho) 81 684 T
+(w controls af) 89.78 684 T
+(fect) 136.54 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(39) 153.03 684 T
+(ho) 81 674 T
+(w groups af) 89.78 674 T
+(fect) 132.04 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(36) 148.53 674 T
+(ho) 81 664 T
+(w modi\336ers af) 89.78 664 T
+(fect) 141.54 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(37) 158.03 664 T
+(indicator dri) 81 654 T
+(v) 125.02 654 T
+(es k) 129.38 654 T
+(e) 143.54 654 T
+(yboard) 147.4 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 175.4 654 T
+(k) 81 644 T
+(e) 85.41 644 T
+(yboard dri) 89.27 644 T
+(v) 126.29 644 T
+(es indicator) 130.65 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 175.4 644 T
+(maps) 81 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 103 634 T
+(names) 81 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(34) 107 624 T
+(querying names, maps and state) 81 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(202) 198.73 614 T
+(tracking changes to state or map) 81 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(44) 200.23 604 T
+(Initializing Xkb) 72 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(7) 132.25 594 T
+(Input e) 72 584 T
+(xtension) 97.11 584 T
+(attaching Xkb actions to de) 81 574 T
+(vices) 179.26 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 200.76 574 T
+(Input Extension, glossary entry) 72 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(214) 187.49 564 T
+(InternalMods) 72 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(54) 123.49 554 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 132.49 554 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(68) 138.49 554 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 147.49 554 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(70) 153.49 554 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 162.49 554 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 168.49 554 T
+(ISO9995 standard) 72 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 140.24 544 T
+3 F
+(K) 72 524 T
+2 F
+(KbdFeedbackClass) 72 513 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(48) 144.49 513 T
+(K) 72 503 T
+(e) 78.27 503 T
+(y Action, glossary entry) 82.13 503 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(214) 171.62 503 T
+(K) 72 493 T
+(e) 78.27 493 T
+(y actions) 82.13 493 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(141) 117.38 493 T
+(independence of modi\336er state) 81 483 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(117) 194.73 483 T
+(K) 72 473 T
+(e) 78.27 473 T
+(y Alias, glossary entry) 82.13 473 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(214) 166.12 473 T
+(K) 72 463 T
+(e) 78.27 463 T
+(y aliases) 82.13 463 T
+(geometry) 81 453 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 117.99 453 T
+(names array) 81 443 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(181) 127.73 443 T
+(K) 72 433 T
+(e) 78.27 433 T
+(y Beha) 82.13 433 T
+(vior) 107.2 433 T
+(, glossary entry) 121.34 433 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(215) 179.58 433 T
+(K) 72 423 T
+(e) 78.27 423 T
+(y e) 82.13 423 T
+(v) 92.65 423 T
+(ents) 97.02 423 T
+(interpreting) 81 413 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(87) 125.99 413 T
+(Xkb \336ltering out-of-range k) 81 403 T
+(e) 181.14 403 T
+(ycodes) 185 403 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(188) 213 403 T
+(K) 72 393 T
+(e) 78.27 393 T
+(y symbol map) 82.13 393 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(133) 136.14 393 T
+(K) 72 383 T
+(e) 78.27 383 T
+(y Symbol Map, glossary entry) 82.13 383 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(215) 193.88 383 T
+(K) 72 373 T
+(e) 78.27 373 T
+(y T) 82.13 373 T
+(ype, glossary entry) 93.66 373 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 164.9 373 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 178.4 373 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(215) 184.4 373 T
+(K) 72 363 T
+(e) 78.27 363 T
+(y types) 82.13 363 T
+(ALPHABETIC) 81 353 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(130) 140 353 T
+(and shift le) 81 343 T
+(v) 120.77 343 T
+(els) 125.14 343 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(117) 138.13 343 T
+(canonical) 81 333 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 118.49 333 T
+(canonical k) 81 323 T
+(e) 122.15 323 T
+(y types, initializing) 126.01 323 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(131) 198.26 323 T
+(canonical, used in compatibility map) 81 313 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(176) 216.74 313 T
+(changing the number of le) 81 303 T
+(v) 175.26 303 T
+(els in) 179.62 303 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(132) 201.87 303 T
+(cop) 81 293 T
+(ying k) 93.91 293 T
+(e) 116.57 293 T
+(y type data structures) 120.43 293 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(132) 200.16 293 T
+(getting from the serv) 81 283 T
+(er) 156.1 283 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(131) 166.1 283 T
+(KEYP) 81 273 T
+(AD) 103.67 273 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(130) 119.67 273 T
+(names) 81 263 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 107 263 T
+(of) 81 253 T
+(fset in symbol map) 88.27 253 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 160.02 253 T
+(ONE_LEVEL) 81 243 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 135.49 243 T
+(per) 81 233 T
+(-k) 92.31 233 T
+(e) 99.72 233 T
+(y k) 103.58 233 T
+(e) 114.74 233 T
+(y types indices) 118.6 233 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(133) 175.1 233 T
+(TW) 81 223 T
+(O_LEVEL) 94.9 223 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 137.4 223 T
+(width \050number of shift le) 81 213 T
+(v) 170.77 213 T
+(els\051) 175.13 213 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 191.13 213 T
+(K) 72 203 T
+(e) 78.27 203 T
+(y types, e) 82.13 203 T
+(xample) 116.24 203 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 145.74 203 T
+(K) 72 193 T
+(e) 78.27 193 T
+(y W) 82.13 193 T
+(idth, glossary entry) 97.02 193 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(213) 169.27 193 T
+(K) 72 183 T
+(e) 78.27 183 T
+(y W) 82.13 183 T
+(idth, K) 97.02 183 T
+(e) 121.8 183 T
+(y T) 125.66 183 T
+(ype W) 137.19 183 T
+(idth, glossary entry) 160.57 183 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(215) 232.82 183 T
+(K) 72 173 T
+(e) 78.27 173 T
+(yboard) 82.13 173 T
+(components, serv) 81 163 T
+(er database) 143.86 163 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(190) 187.09 163 T
+(feedback) 81 153 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 116.48 153 T
+(geometry) 81 143 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(92) 117.99 143 T
+(geometry sections) 81 133 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 149.24 133 T
+(IgnoreNe) 81 123 T
+(wK) 114.76 123 T
+(e) 127.53 123 T
+(yboards) 131.39 123 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 162.88 123 T
+(names) 81 113 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(180) 107 113 T
+(replacing on the \337y) 81 103 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(187) 153.74 103 T
+(symbolic name) 81 93 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 138.75 93 T
+(unresponsi) 81 83 T
+(v) 119.77 83 T
+(eness because of Slo) 124.14 83 T
+(wK) 198.14 83 T
+(e) 210.91 83 T
+(ys) 214.78 83 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(62) 225.78 83 T
+(K) 72 73 T
+(e) 78.27 73 T
+(yboard Bells, glossary entry) 82.13 73 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(215) 186.12 73 T
+(K) 315 714 T
+(e) 321.27 714 T
+(yboard Components, glossary entry) 325.13 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(215) 456.12 714 T
+(K) 315 704 T
+(e) 321.27 704 T
+(yboard controls) 325.13 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 384.38 704 T
+(for ph) 324 694 T
+(ysically-impaired persons) 345.7 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(61) 441.43 694 T
+(tracking changes) 324 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(79) 387.73 684 T
+(K) 315 674 T
+(e) 321.27 674 T
+(yboard description) 325.13 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(2) 395.37 674 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 399.87 674 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(27) 405.87 674 T
+(allocating and freeing) 324 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(28) 405.48 664 T
+(b) 324 654 T
+(uilding from serv) 328.32 654 T
+(er database) 390.68 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 433.91 654 T
+(changing) 324 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(12) 359.99 644 T
+(getting from serv) 324 634 T
+(er) 385.86 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(28) 395.85 634 T
+(updating library description) 324 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(90) 426.99 624 T
+(K) 315 614 T
+(e) 321.27 614 T
+(yboard Feedback, glossary entry) 325.13 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(215) 445.11 614 T
+(K) 315 604 T
+(e) 321.27 604 T
+(yboard Geometry Name, glossary entry) 325.13 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 470.35 604 T
+(K) 315 594 T
+(e) 321.27 594 T
+(yboard Geometry) 325.13 594 T
+(, glossary entry) 387.78 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 446.02 594 T
+(K) 315 584 T
+(e) 321.27 584 T
+(yboard mapping) 325.13 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 386.88 584 T
+(client map) 324 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 364.75 574 T
+(serv) 324 564 T
+(er map) 338.86 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 366.6 564 T
+(shift le) 324 554 T
+(v) 348.52 554 T
+(els and groups, diagram) 352.89 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(117) 441.88 554 T
+(K) 315 544 T
+(e) 321.27 544 T
+(yboard state) 325.13 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(19) 371.87 544 T
+(base group) 324 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 366.24 534 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 375.24 534 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(211) 381.24 534 T
+(base modi\336ers) 324 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 379.24 524 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 388.24 524 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(211) 394.24 524 T
+(compatibility states) 324 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(22) 397.25 514 T
+(description) 324 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(19) 367 504 T
+(determining) 324 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(23) 370.5 494 T
+(ef) 324 484 T
+(fecti) 330.77 484 T
+(v) 346.54 484 T
+(e group) 350.9 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 381.14 484 T
+(ef) 324 474 T
+(fecti) 330.77 474 T
+(v) 346.54 474 T
+(e modi\336ers) 350.9 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 394.15 474 T
+(grab state) 324 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 361.74 464 T
+(k) 324 454 T
+(e) 328.41 454 T
+(ysym groups) 332.27 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 381.52 454 T
+(lookup state) 324 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 370.75 444 T
+(modi\336ers) 324 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 361 434 T
+(tracking) 324 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(24) 356.49 424 T
+(K) 315 414 T
+(e) 321.27 414 T
+(yboard State, glossary entry) 325.13 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 428.62 414 T
+(K) 315 404 T
+(e) 321.27 404 T
+(yClass) 325.13 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(10) 352.14 404 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 361.14 404 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(157) 367.14 404 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 380.64 404 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(198) 386.64 404 T
+(K) 315 394 T
+(e) 321.27 394 T
+(ycode Name, glossary entry) 325.13 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 428.61 394 T
+(K) 315 384 T
+(e) 321.27 384 T
+(ycode to string translation) 325.13 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 421.88 384 T
+(K) 315 374 T
+(e) 321.27 374 T
+(ycode, glossary entry) 325.13 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 404.87 374 T
+(K) 315 364 T
+(e) 321.27 364 T
+(ycodes) 325.13 364 T
+(actions for generating a dif) 324 354 T
+(ferent k) 420.75 354 T
+(e) 448.4 354 T
+(ycode for k) 452.26 354 T
+(e) 493.15 354 T
+(y) 497.02 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(156) 504.52 354 T
+(\336nding k) 324 344 T
+(e) 356.17 344 T
+(ysym bound to) 360.03 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 416.53 344 T
+(k) 324 334 T
+(e) 328.41 334 T
+(ys which report more than one k) 332.27 334 T
+(e) 448.66 334 T
+(ycode) 452.52 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(58) 477.01 334 T
+(translating k) 324 324 T
+(e) 368.66 324 T
+(ycode to symbol and modi\336ers) 372.52 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(91) 486.52 324 T
+(Xkb \336ltering out-of-range k) 324 314 T
+(e) 424.14 314 T
+(y e) 428 314 T
+(v) 438.52 314 T
+(ents) 442.89 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(188) 460.39 314 T
+(K) 315 304 T
+(e) 321.27 304 T
+(ymap) 325.13 304 T
+(allocating and freeing) 324 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(123) 405.48 294 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 418.98 294 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(124) 424.98 294 T
+(changing map components) 324 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(120) 423.49 284 T
+(client map) 324 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(126) 364.75 274 T
+(functions) 324 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 360.5 264 T
+(getting map components from the serv) 324 254 T
+(er) 462.6 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(118) 472.59 254 T
+(getting partial map components from the serv) 324 244 T
+(er) 487.85 244 T
+(, table) 494.48 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(118) 519.47 244 T
+(tracking changes to) 324 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(122) 396.98 234 T
+(K) 315 224 T
+(e) 321.27 224 T
+(ys) 325.13 224 T
+(actions) 324 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(141) 352.5 214 T
+(aliases) 324 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 350.99 204 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 359.99 204 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(181) 365.99 204 T
+(beha) 324 194 T
+(vior) 340.81 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(118) 358.31 194 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 371.81 194 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(161) 377.81 194 T
+(beha) 324 184 T
+(viors, table) 340.81 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(161) 383.81 184 T
+(bindings hints) 324 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 377.76 174 T
+(changing number of actions bound to k) 324 164 T
+(e) 464.89 164 T
+(y) 468.76 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(160) 476.26 164 T
+(changing number of groups and types for) 324 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(137) 475.47 154 T
+(changing the number of symbols bound to) 324 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(138) 478.99 144 T
+(\336nding k) 324 134 T
+(e) 356.17 134 T
+(ysym bound to) 360.03 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 416.53 134 T
+(\336nding symbol for k) 324 124 T
+(e) 397.67 124 T
+(y with a particular state) 401.53 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 489.01 124 T
+(for generating a dif) 324 114 T
+(ferent k) 393 114 T
+(e) 420.65 114 T
+(ycode for k) 424.51 114 T
+(e) 465.41 114 T
+(y) 469.27 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(156) 476.77 114 T
+(geometry) 324 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 360.99 104 T
+(geometry) 324 94 T
+(, dra) 357.41 94 T
+(wing order) 373.27 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 415.51 94 T
+(getting per) 324 84 T
+(-k) 362.57 84 T
+(e) 369.97 84 T
+(y modi\336er map from serv) 373.83 84 T
+(er) 465.69 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(139) 475.68 84 T
+(getting the symbol map from the serv) 324 74 T
+(er) 458.86 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(136) 468.85 74 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "223" 235
+%%Page: "224" 236
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-224) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(label font and color) 81 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 154.24 714 T
+(obtaining k) 81 704 T
+(e) 121.66 704 T
+(y actions for k) 125.52 704 T
+(e) 177.17 704 T
+(ys from serv) 181.04 704 T
+(er) 225.89 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(160) 235.88 704 T
+(obtaining k) 81 694 T
+(e) 121.66 694 T
+(y beha) 125.52 694 T
+(viors from the serv) 149.09 694 T
+(er) 217.19 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 227.18 694 T
+(of) 81 684 T
+(fset in symbol map) 88.27 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 160.02 684 T
+(o) 81 674 T
+(v) 85.36 674 T
+(erlay geometry) 89.73 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 146.96 674 T
+(per) 81 664 T
+(-k) 92.31 664 T
+(e) 99.72 664 T
+(y group information) 103.58 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(134) 179.08 664 T
+(per) 81 654 T
+(-k) 92.31 654 T
+(e) 99.72 654 T
+(y modi\336er map) 103.58 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(138) 161.58 654 T
+(symbolic names) 81 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(181) 142.25 644 T
+(types) 81 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(127) 103 634 T
+(width \050number of shift le) 81 624 T
+(v) 170.77 624 T
+(els\051) 175.13 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 191.13 624 T
+(K) 72 614 T
+(e) 78.27 614 T
+(ysym group) 82.13 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 127.88 614 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 136.88 614 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(116) 142.88 614 T
+(K) 72 604 T
+(e) 78.27 604 T
+(ysym Group, glossary entry) 82.13 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(214) 185.12 604 T
+(K) 72 594 T
+(e) 78.27 594 T
+(ysyms) 82.13 594 T
+(\336nding modi\336er set bound to k) 81 584 T
+(e) 192.17 584 T
+(ysym) 196.03 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 218.53 584 T
+(\336nding symbol for k) 81 574 T
+(e) 154.66 574 T
+(y with a particular state) 158.53 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 246.01 574 T
+(to string translation control) 81 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 181.75 564 T
+(translating k) 81 554 T
+(e) 125.66 554 T
+(ycode to symbol and modi\336ers) 129.52 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(91) 243.52 554 T
+3 F
+(L) 72 534 T
+2 F
+(Latched Group, glossary entry) 72 523 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 184.48 523 T
+(Latched Modi\336er) 72 513 T
+(, glossary entry) 134.38 513 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 192.62 513 T
+(LatchT) 72 503 T
+(oLock) 97.27 503 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(68) 123.27 503 T
+(Latin1 character set lookup) 72 493 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 173.23 493 T
+(LED, glossary entry) 72 483 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 147.74 483 T
+(Le) 72 473 T
+(v) 81.27 473 T
+(els) 85.64 473 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 98.63 473 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 112.13 473 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(117) 118.13 473 T
+(and k) 81 463 T
+(e) 100.66 463 T
+(y types) 104.52 463 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(117) 133.27 463 T
+(changing the number in a k) 81 453 T
+(e) 179.15 453 T
+(y type) 183.01 453 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(132) 208.25 453 T
+(k) 81 443 T
+(e) 85.41 443 T
+(y types) 89.27 443 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(127) 118.02 443 T
+(names) 81 433 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 107 433 T
+(Linking with the Xkb e) 72 423 T
+(xtension) 155.86 423 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 189.36 423 T
+(Lock) 72 413 T
+(ed Group, glossary entry) 90.4 413 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 182.39 413 T
+(Lock) 72 403 T
+(ed Modi\336ers, glossary entry) 90.4 403 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(216) 194.39 403 T
+(Lookup group) 72 393 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 126.25 393 T
+(Lookup modi\336ers) 72 383 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 139.25 383 T
+(Lookup state) 72 373 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(21) 121.75 373 T
+(Lookup State, glossary entry) 72 363 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 178.49 363 T
+3 F
+(M) 72 343 T
+2 F
+(Major opcode) 72 332 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(7) 125.24 332 T
+(map) 72 322 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 90.5 322 T
+(MappingNotify) 72 312 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 131 312 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 140 312 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(87) 146 312 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 155 312 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(88) 161 312 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 170 312 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(175) 176 312 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 189.5 312 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(178) 195.5 312 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 209 312 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(188) 215 312 T
+(Messages) 72 302 T
+(actions for generating) 81 292 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 162.48 292 T
+(detecting k) 81 282 T
+(e) 120.65 282 T
+(y action messages) 124.51 282 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 192.5 282 T
+(Modi\336er De\336nition, glossary entry) 72 272 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 200.5 272 T
+(Modi\336er K) 72 262 T
+(e) 112.02 262 T
+(y) 115.88 262 T
+(, glossary entry) 119.8 262 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 178.04 262 T
+(Modi\336er) 72 252 T
+(, glossary entry) 103.14 252 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 161.38 252 T
+(Modi\336ers) 72 242 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 110 242 T
+(action \337ags) 81 232 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 125.25 232 T
+(action types, table) 81 222 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(144) 149.24 222 T
+(actions for changing the state of) 81 212 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 199.23 212 T
+(bindings for modi\336er k) 81 202 T
+(e) 164.16 202 T
+(ys hints) 168.02 202 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 198.78 202 T
+(changing the state via k) 81 192 T
+(e) 165.9 192 T
+(y actions) 169.76 192 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(144) 205.01 192 T
+(consume lookup modi\336ers control) 81 182 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 207.25 182 T
+(ef) 81 172 T
+(fecti) 87.77 172 T
+(v) 103.54 172 T
+(e mask) 107.9 172 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(31) 136.15 172 T
+(\336nding modi\336er set bound to k) 81 162 T
+(e) 192.17 162 T
+(ysym) 196.03 162 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 218.53 162 T
+(forcing shift and lock to be consumed) 81 152 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(83) 219.98 152 T
+(getting per) 81 142 T
+(-k) 119.57 142 T
+(e) 126.97 142 T
+(y map from serv) 130.83 142 T
+(er) 189.94 142 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(139) 199.93 142 T
+(in actions to generate dif) 81 132 T
+(ferent k) 169.76 132 T
+(e) 197.41 132 T
+(ycode for k) 201.27 132 T
+(e) 242.16 132 T
+(y) 246.02 132 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(157) 253.52 132 T
+(inacti) 81 122 T
+(v) 100.77 122 T
+(e virtual modi\336ers) 105.14 122 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(32) 174.13 122 T
+(k) 81 112 T
+(e) 85.41 112 T
+(y action independent of) 89.27 112 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(117) 177.01 112 T
+(k) 81 102 T
+(e) 85.41 102 T
+(y types containing) 89.27 102 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(127) 158.27 102 T
+(locking via actions) 81 92 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(150) 151.99 92 T
+(masks) 81 82 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(22) 106.5 82 T
+(modi\336er de\336nition) 81 72 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 151.26 72 T
+(names and masks) 324 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 389.99 714 T
+(per) 324 704 T
+(-k) 335.31 704 T
+(e) 342.72 704 T
+(y modi\336er map) 346.58 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(138) 404.58 704 T
+(preserv) 324 694 T
+(e \336eld) 350.35 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 375.6 694 T
+(pre) 324 684 T
+(v) 335.27 684 T
+(enting from being consumed) 339.63 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 445.87 684 T
+(real) 324 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 340.49 674 T
+(specifying which should be consumed by serv) 324 664 T
+(er) 489.84 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(70) 499.84 664 T
+(translating k) 324 654 T
+(e) 368.66 654 T
+(ycode to symbol and modi\336ers) 372.52 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(91) 486.52 654 T
+(virtual) 324 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 350.5 644 T
+(virtual modi\336er serv) 324 634 T
+(er mapping) 397.36 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(164) 441.1 634 T
+(MotionNotify) 315 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 368 624 T
+(Mouse) 315 614 T
+(using from the k) 324 604 T
+(e) 383.16 604 T
+(yboard) 387.02 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(59) 415.01 604 T
+(MouseK) 315 594 T
+(e) 345.77 594 T
+(ys) 349.63 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 360.63 594 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 369.63 594 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(59) 375.63 594 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 384.63 594 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(72) 390.63 594 T
+(acceleration, diagram) 324 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(61) 404.47 584 T
+(changing b) 324 574 T
+(utton number simulated by mouse k) 363.56 574 T
+(e) 492.72 574 T
+(ys) 496.58 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 507.58 574 T
+(MouseK) 315 564 T
+(e) 345.77 564 T
+(ysAccel) 349.63 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 381.62 564 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 390.62 564 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(59) 396.62 564 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 405.62 564 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(73) 411.62 564 T
+(absolute pointer motion) 324 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(60) 412.5 554 T
+(\336elds, table) 324 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(59) 368.5 544 T
+(relati) 324 534 T
+(v) 342.27 534 T
+(e pointer motion) 346.64 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(60) 409.13 534 T
+3 F
+(N) 315 514 T
+2 F
+(Names) 315 503 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 342.99 503 T
+(allocating and freeing symbolic names) 324 493 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(186) 465.98 493 T
+(changing symbolic names on serv) 324 483 T
+(er) 445.85 483 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(183) 455.84 483 T
+(getting k) 324 473 T
+(e) 355.66 473 T
+(yboard description by component e) 359.52 473 T
+(xpression) 486.37 473 T
+(names) 342 463 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(194) 367.99 463 T
+(getting symbolic names from serv) 324 453 T
+(er) 446.36 453 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(183) 456.35 453 T
+(shift le) 324 443 T
+(v) 348.52 443 T
+(el) 352.89 443 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 362.39 443 T
+(symbolic) 324 433 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(180) 360 433 T
+(symbolic k) 324 423 T
+(e) 363.66 423 T
+(yboard) 367.52 423 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 395.52 423 T
+(symbolic names masks, table) 324 413 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(182) 431.99 413 T
+(tracking changes) 324 403 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(185) 387.73 403 T
+(types) 324 393 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 346 393 T
+(Ne) 315 383 T
+(wK) 325.27 383 T
+(e) 338.04 383 T
+(yboardNotify) 341.9 383 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(84) 393.39 383 T
+(Non-k) 315 373 T
+(e) 337.9 373 T
+(yboard Extension De) 341.77 373 T
+(vice, glossary entry) 417.53 373 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 490.76 373 T
+(Normalizing groups) 315 363 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 390.24 363 T
+3 F
+(O) 315 343 T
+2 F
+(Outlines) 315 332 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(94) 348.5 332 T
+(approximation) 324 322 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(94) 379.5 322 T
+(primary) 324 312 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(94) 355.49 312 T
+(Outlines, glossary entry) 315 302 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 403.74 302 T
+(Ov) 315 292 T
+(erlays) 325.86 292 T
+(controls) 324 282 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(58) 356 282 T
+(geometry k) 324 272 T
+(e) 364.65 272 T
+(ys) 368.51 272 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 379.52 272 T
+(geometry ro) 324 262 T
+(ws) 367.52 262 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 380.51 262 T
+(geometry) 324 252 T
+(, \336nding the o) 357.41 252 T
+(v) 407.28 252 T
+(erlay for a k) 411.64 252 T
+(e) 455.28 252 T
+(y) 459.14 252 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 466.64 252 T
+(in geometry sections) 324 242 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 401.49 242 T
+(Ov) 324 232 T
+(erlay1 and Ov) 334.86 232 T
+(erlay2 controls) 385.71 232 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 442.45 232 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 451.45 232 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(73) 457.45 232 T
+3 F
+(P) 315 212 T
+2 F
+(PerK) 315 201 T
+(e) 333.27 201 T
+(yRepeat) 337.13 201 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 369.62 201 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 378.62 201 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(56) 384.62 201 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 393.62 201 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(73) 399.62 201 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 408.62 201 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(76) 414.62 201 T
+(Ph) 315 191 T
+(ysical Indicator Mask, glossary entry) 324.46 191 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 460.69 191 T
+(Ph) 315 181 T
+(ysical Symbol K) 324.46 181 T
+(e) 384.24 181 T
+(yboard Name, glossary entry) 388.1 181 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 495.08 181 T
+(Pointer) 315 171 T
+(b) 324 161 T
+(uttons) 328.32 161 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(20) 353.33 161 T
+(changing b) 324 151 T
+(utton number simulated by mouse k) 363.56 151 T
+(e) 492.72 151 T
+(ys) 496.58 151 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 507.58 151 T
+(motion, absolute) 324 141 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(60) 387 141 T
+(motion, relati) 324 131 T
+(v) 372.28 131 T
+(e) 376.64 131 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(60) 383.64 131 T
+(mo) 324 121 T
+(ving via actions) 335.37 121 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 395.36 121 T
+(pointer action types, table) 324 111 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 419.99 111 T
+(pointer b) 324 101 T
+(utton action \337ags, table) 356.07 101 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 443.06 101 T
+(pointer b) 324 91 T
+(utton action types, table) 356.07 91 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 445.06 91 T
+(simulating pointer b) 324 81 T
+(uttons via k) 396.32 81 T
+(e) 438.24 81 T
+(y actions) 442.1 81 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 477.35 81 T
+(Preserv) 315 71 T
+(ed Modi\336er) 341.86 71 T
+(, glossary entry) 383.74 71 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(217) 441.98 71 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "224" 236
+%%Page: "225" 237
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-225) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(Preserving modi\336ers from being consumed) 72 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 230.48 714 T
+(Priority) 72 704 T
+(doodads) 81 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 114 694 T
+(geometry) 81 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(92) 117.99 684 T
+(sections) 81 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 113 674 T
+(Properties) 72 664 T
+(geometry) 81 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 117.99 654 T
+(Protocol errors) 72 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(9) 128.74 644 T
+(added by Xkb) 81 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(4) 134.49 634 T
+3 F
+(R) 72 614 T
+2 F
+(Radio Group, glossary entry) 72 603 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 176.99 603 T
+(Radio groups) 72 593 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 123.25 593 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 127.75 593 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(161) 133.75 593 T
+(names) 81 583 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(182) 107 583 T
+(Real Modi\336er) 72 573 T
+(, glossary entry) 121.89 573 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 180.13 573 T
+(Real modi\336ers) 72 563 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 127.75 563 T
+(RedirectIntoRange) 72 553 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 142.99 553 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 151.99 553 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 157.99 553 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 166.99 553 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(134) 172.99 553 T
+(Remapping) 72 543 T
+(a) 81 533 T
+(v) 84.82 533 T
+(oiding automatic by serv) 89.14 533 T
+(er) 178.24 533 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 188.24 533 T
+(repeat_delay) 72 523 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(75) 120.98 523 T
+(repeat_interv) 72 513 T
+(al) 119.26 513 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(75) 128.76 513 T
+(Repeating k) 72 503 T
+(e) 115.15 503 T
+(ys) 119.02 503 T
+(controls) 81 493 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(56) 113 493 T
+(detecting) 81 483 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(57) 116.99 483 T
+(RepeatK) 72 473 T
+(e) 103.27 473 T
+(ys) 107.13 473 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 118.13 473 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 127.13 473 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(56) 133.13 473 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 142.13 473 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(73) 148.13 473 T
+(Ro) 72 463 T
+(ws) 82.28 463 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 95.28 463 T
+(geometry) 81 453 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 117.99 453 T
+(o) 81 443 T
+(v) 85.36 443 T
+(erlay) 89.73 443 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(96) 110.72 443 T
+3 F
+(S) 72 423 T
+2 F
+(Sections) 72 412 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 105.5 412 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 114.5 412 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(95) 120.5 412 T
+(doodads in) 81 402 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 123.25 402 T
+(o) 81 392 T
+(v) 85.36 392 T
+(erlays) 89.73 392 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 114.22 392 T
+(priority) 81 382 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(95) 111 382 T
+(Serv) 72 372 T
+(er) 88.36 372 T
+(a) 81 362 T
+(v) 84.82 362 T
+(oiding automatic remapping by) 89.14 362 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 204.88 362 T
+(Serv) 72 352 T
+(er database) 88.36 352 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(190) 131.59 352 T
+(changing map components) 81 342 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(120) 180.49 342 T
+(class\050member\051 form) 81 332 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(191) 156.73 332 T
+(complete and partial entries) 81 322 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(190) 183.73 322 T
+(component hints) 81 312 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(192) 143.75 312 T
+(component names) 81 302 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(191) 149.24 302 T
+(getting k) 81 292 T
+(e) 112.66 292 T
+(y types) 116.52 292 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(131) 145.27 292 T
+(getting map components from) 81 282 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(118) 192.24 282 T
+(getting partial map components from, table) 81 272 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(118) 239.48 272 T
+(listing k) 81 262 T
+(e) 110.17 262 T
+(yboard components) 114.03 262 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(191) 187.77 262 T
+(obtaining virtual modi\336er bindings from) 81 252 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(165) 229.5 252 T
+(virtual modi\336er de\336nitions) 81 242 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(164) 180.51 242 T
+(Serv) 72 232 T
+(er interaction with clients, diagram) 88.36 232 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(167) 217.09 232 T
+(Serv) 72 222 T
+(er Internal Modi\336ers, glossary entry) 88.36 222 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 221.09 222 T
+(Serv) 72 212 T
+(er map) 88.36 212 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(2) 116.1 212 T
+(allocating and freeing) 81 202 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(124) 162.48 202 T
+(k) 81 192 T
+(e) 85.41 192 T
+(yboard mapping) 89.27 192 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 151.01 192 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 164.51 192 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(140) 170.51 192 T
+(Shapes) 72 182 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(93) 100.5 182 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 109.5 182 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(94) 115.5 182 T
+(Shift Le) 72 172 T
+(v) 101.03 172 T
+(el, glossary entry) 105.39 172 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 170.13 172 T
+(Shift le) 72 162 T
+(v) 98.03 162 T
+(els) 102.39 162 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 115.39 162 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 128.89 162 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(117) 134.89 162 T
+(and k) 81 152 T
+(e) 100.66 152 T
+(y types) 104.52 152 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(117) 133.27 152 T
+(changing the number of in a k) 81 142 T
+(e) 188.89 142 T
+(y type) 192.75 142 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(132) 218 142 T
+(k) 81 132 T
+(e) 85.41 132 T
+(y types) 89.27 132 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(127) 118.02 132 T
+(names) 81 122 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(128) 107 122 T
+(Slo) 72 112 T
+(wK) 83.78 112 T
+(e) 96.55 112 T
+(ys) 100.41 112 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 111.41 112 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 120.41 112 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(65) 126.41 112 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 135.41 112 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(73) 141.41 112 T
+(acceptance delay) 81 102 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 145.22 102 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 154.22 102 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(75) 160.22 102 T
+(Standard, ISO9995) 72 92 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 143.99 92 T
+(State Field, glossary entry) 72 82 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 169 82 T
+(Stick) 72 72 T
+(yK) 90.37 72 T
+(e) 101.14 72 T
+(ys) 105 72 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(53) 116 72 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 125 72 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(67) 131 72 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 140 72 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(73) 146 72 T
+(automatically turning of) 324 714 T
+(f) 410.77 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(68) 416.77 714 T
+(locking a modi\336er) 324 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(68) 393 704 T
+(Symbol K) 315 694 T
+(e) 351.53 694 T
+(yboard Name, glossary entry) 355.39 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 462.37 694 T
+(Symbolic Name, glossary entry) 315 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 431.49 684 T
+(Symbolic names) 315 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(180) 377.75 674 T
+3 F
+(T) 315 654 T
+2 F
+(T) 315 643 T
+(ranslating) 320.18 643 T
+(series of k) 324 633 T
+(e) 360.9 633 T
+(ysyms to string) 364.76 633 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 422.77 633 T
+(single k) 324 623 T
+(e) 352.16 623 T
+(ycode to string) 356.02 623 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 412.52 623 T
+(T) 315 613 T
+(w) 319.78 613 T
+(oK) 326.19 613 T
+(e) 336.96 613 T
+(ys) 340.82 613 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(68) 351.82 613 T
+3 F
+(V) 315 593 T
+2 F
+(V) 315 582 T
+(aluator) 320.5 582 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 348.49 582 T
+(V) 315 572 T
+(aluator action) 320.5 572 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 372.74 572 T
+(V) 315 562 T
+(aluator) 320.5 562 T
+(, glossary entry) 345.13 562 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 403.37 562 T
+(V) 315 552 T
+(ersion, determining) 320.5 552 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 393.49 552 T
+(V) 315 542 T
+(irtual Modi\336er Mapping, glossary entry) 320.96 542 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 466.7 542 T
+(V) 315 532 T
+(irtual Modi\336er) 320.96 532 T
+(, glossary entry) 373.35 532 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(218) 431.59 532 T
+(V) 315 522 T
+(irtual modi\336ers) 320.96 522 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 379.21 522 T
+(con) 324 512 T
+(v) 336.64 512 T
+(entions for names) 341 512 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(32) 407.99 512 T
+(data structure relationships, diagram) 324 502 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(165) 457.98 502 T
+(ef) 324 492 T
+(fecti) 330.77 492 T
+(v) 346.54 492 T
+(e mask) 350.9 492 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(31) 379.15 492 T
+(e) 324 482 T
+(xample) 327.86 482 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(32) 357.36 482 T
+(inacti) 324 472 T
+(v) 343.77 472 T
+(e) 348.14 472 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(32) 355.13 472 T
+(k) 324 462 T
+(e) 328.41 462 T
+(y mapping) 332.27 462 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(31) 373.52 462 T
+(master modi\336er de\336nitions) 324 452 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(31) 424 452 T
+(modi\336er de\336nition) 324 442 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 394.26 442 T
+(names and masks) 324 432 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(30) 389.99 432 T
+(obtaining bindings from serv) 324 422 T
+(er) 428.11 422 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(165) 438.11 422 T
+(serv) 324 412 T
+(er mapping) 338.86 412 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(164) 382.6 412 T
+(V) 315 402 T
+(isual bells, generating) 320.96 402 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(47) 402.7 402 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 411.7 402 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(52) 417.7 402 T
+3 F
+(W) 315 382 T
+2 F
+(W) 315 371 T
+(ant and need components, table) 322.78 371 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(195) 439.01 371 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 452.51 371 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(197) 458.51 371 T
+(WrapIntoRange) 315 361 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 375.48 361 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 384.48 361 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 390.48 361 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 399.48 361 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(134) 405.48 361 T
+3 F
+(X) 315 341 T
+2 F
+(X library controls) 315 330 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 381.99 330 T
+(X library functions af) 315 320 T
+(fected by Xkb) 392.51 320 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(88) 446.49 320 T
+(X serv) 315 310 T
+(er v) 338.61 310 T
+(ersion required) 352.21 310 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(1) 409.45 310 T
+(XChangeDe) 315 300 T
+(viceNotify) 359.26 300 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(187) 400.76 300 T
+(XEv) 315 290 T
+(ent) 331.36 290 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 345.36 290 T
+(Xkb) 315 280 T
+(attaching actions to input e) 324 270 T
+(xtension de) 420.86 270 T
+(vices) 461.88 270 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 483.38 270 T
+(changes data structures) 324 260 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(12) 410.48 260 T
+(compatibility map) 324 250 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(167) 392.75 250 T
+(e) 324 240 T
+(xtension components) 327.86 240 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(1) 407.11 240 T
+(e) 324 230 T
+(xtension library functions) 327.86 230 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(4) 423.35 230 T
+(groups and shift le) 324 220 T
+(v) 390.52 220 T
+(els) 394.88 220 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(117) 407.88 220 T
+(implicit support) 324 210 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(87) 384.26 210 T
+(k) 324 200 T
+(e) 328.41 200 T
+(yboard e) 332.27 200 T
+(xtension support for k) 363.38 200 T
+(e) 442.53 200 T
+(yboards) 446.39 200 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(1) 477.89 200 T
+(k) 324 190 T
+(e) 328.41 190 T
+(yboard mapping) 332.27 190 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(116) 394.01 190 T
+(o) 324 180 T
+(v) 328.36 180 T
+(erall structure, diagram) 332.73 180 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(2) 419.46 180 T
+(o) 324 170 T
+(v) 328.36 170 T
+(ervie) 332.73 170 T
+(w) 350.5 170 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(1) 359.99 170 T
+(state, diagram) 324 160 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(19) 377.49 160 T
+(X library functions af) 324 150 T
+(fected) 401.51 150 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(88) 426.49 150 T
+(Xkb client map, diagram) 315 140 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(126) 407.49 140 T
+(Xkb e) 315 130 T
+(v) 336.52 130 T
+(ents) 340.88 130 T
+(base e) 324 120 T
+(v) 346.01 120 T
+(ent code) 350.38 120 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 383.62 120 T
+(data structures) 324 110 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 379.24 110 T
+(o) 324 100 T
+(v) 328.36 100 T
+(ervie) 332.73 100 T
+(w) 350.5 100 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 359.99 100 T
+(selecting for) 324 90 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 371.74 90 T
+(types) 324 80 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 346 80 T
+(types, table) 324 70 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 367.99 70 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "225" 237
+%%Page: "226" 238
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-226) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(Xkb e) 72 714 T
+(xtension) 93.61 714 T
+(disabling) 81 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(8) 117 704 T
+(name) 81 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 103.49 694 T
+(Xkb serv) 72 684 T
+(er map, diagram) 104.61 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(140) 166.34 684 T
+(XKB.h) 72 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 100.75 674 T
+(Xkb_RGAllo) 72 664 T
+(wNone) 120.28 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 149.27 664 T
+(XkbAccessXNotify) 72 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 145.98 654 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 154.98 654 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(64) 160.98 654 T
+(XkbAccessXNotifyEv) 72 644 T
+(ent) 152.85 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 166.85 644 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 175.85 644 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(64) 181.85 644 T
+(XkbAction data structure) 72 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 165.98 634 T
+(XkbActionCtrls macro) 72 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 157.24 624 T
+(XkbActionMessage) 72 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 146.49 614 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 155.49 614 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(155) 161.49 614 T
+(XkbActionMessageEv) 72 604 T
+(ent) 153.35 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 167.35 604 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 176.35 604 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(156) 182.35 604 T
+(XkbAddDe) 72 594 T
+(viceLedInfo\050 \051) 113.26 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(203) 168.49 594 T
+(XkbAddGeomColor\050 \051) 72 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(107) 156.74 584 T
+(XkbAddGeomDoodad\050 \051) 72 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(109) 164.73 574 T
+(XkbAddGeomK) 72 564 T
+(e) 131.26 564 T
+(y\050 \051) 135.13 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(108) 150.87 564 T
+(XkbAddGeomK) 72 554 T
+(e) 131.26 554 T
+(yAlias\050 \051) 135.13 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(107) 169.87 554 T
+(XkbAddGeomOutline\050 \051) 72 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(107) 163.24 544 T
+(XkbAddGeomOv) 72 534 T
+(erlay\050 \051) 135.85 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(109) 165.09 534 T
+(XkbAddGeomOv) 72 524 T
+(erlayK) 135.85 524 T
+(e) 160.12 524 T
+(y\050 \051) 163.98 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(109) 179.72 524 T
+(XkbAddGeomOv) 72 514 T
+(erlayRo) 135.85 514 T
+(w\050 \051) 164.12 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(109) 181.87 514 T
+(XkbAddGeomProperty\050 \051) 72 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(107) 167.23 504 T
+(XkbAddGeomRo) 72 494 T
+(w\050 \051) 135.27 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(108) 153.01 494 T
+(XkbAddGeomSection\050 \051) 72 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(108) 163.24 484 T
+(XkbAddGeomShape\050 \051) 72 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(108) 158.23 474 T
+(XkbAddSymInterpret\050 \051) 72 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(177) 161.73 464 T
+(XkbAllocClientMap\050 \051) 72 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(123) 157.24 454 T
+(XkbAllocCompatMap\050 \051) 72 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(179) 163.74 444 T
+(XkbAllocControls\050 \051) 72 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(80) 149.74 434 T
+(XkbAllocDe) 72 424 T
+(viceInfo\050 \051) 117.76 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(203) 159 424 T
+(XkbAllocDe) 72 414 T
+(viceLedInfo\050 \051) 117.76 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(203) 172.99 414 T
+(XkbAllocGeomColors\050 \051) 72 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(111) 164.74 404 T
+(XkbAllocGeomDoodads\050 \051) 72 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(114) 172.73 394 T
+(XkbAllocGeometry\050 \051) 72 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(115) 154.73 384 T
+(XkbAllocGeomK) 72 374 T
+(e) 135.76 374 T
+(yAliases\050 \051) 139.63 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(111) 181.87 374 T
+(XkbAllocGeomK) 72 364 T
+(e) 135.76 364 T
+(ys\050 \051) 139.63 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(110) 158.87 364 T
+(XkbAllocGeomOutlines\050 \051) 72 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(110) 171.24 354 T
+(XkbAllocGeomOv) 72 344 T
+(erlayK) 140.35 344 T
+(e) 164.62 344 T
+(ys\050 \051) 168.48 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(114) 187.73 344 T
+(XkbAllocGeomOv) 72 334 T
+(erlayRo) 140.35 334 T
+(ws\050 \051) 168.62 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(114) 189.87 334 T
+(XkbAllocGeomOv) 72 324 T
+(erlays\050 \051) 140.35 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(113) 173.09 324 T
+(XkbAllocGeomPoints\050 \051) 72 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(112) 163.24 314 T
+(XkbAllocGeomProps\050 \051) 72 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(110) 161.24 304 T
+(XkbAllocGeomRo) 72 294 T
+(ws\050 \051) 139.77 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(113) 161.01 294 T
+(XkbAllocGeomSectionDoodads\050 \051) 72 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(114) 199.73 284 T
+(XkbAllocGeomSections\050 \051) 72 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(112) 171.24 274 T
+(XkbAllocGeomShapes\050 \051) 72 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(112) 166.23 264 T
+(XkbAllocIndicatorMaps\050 \051) 72 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(45) 171.23 254 T
+(XkbAllocK) 72 244 T
+(e) 113.77 244 T
+(yboard\050 \051) 117.63 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(28) 153.87 244 T
+(XkbAllocNames\050 \051) 72 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(186) 143.73 234 T
+(XkbAllocServ) 72 224 T
+(erMap\050 \051) 123.86 224 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(124) 158.59 224 T
+(XkbAlphabeticInde) 72 214 T
+(x canonical k) 142.85 214 T
+(e) 190.75 214 T
+(y type) 194.61 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 219.85 214 T
+(XkbAn) 72 204 T
+(yAction data structure) 98.36 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 181.34 204 T
+(XkbAn) 72 194 T
+(yEv) 98.36 194 T
+(ent) 112.72 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 126.72 194 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 135.72 194 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(18) 141.72 194 T
+(XkbApplyCompatMapT) 72 184 T
+(oK) 159.78 184 T
+(e) 170.55 184 T
+(y\050 \051) 174.41 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(176) 190.15 184 T
+(Xkb-a) 72 174 T
+(w) 94.36 174 T
+(are client) 100.76 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 137 174 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 141.5 174 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(21) 147.5 174 T
+(Xkb-a) 72 164 T
+(w) 94.36 164 T
+(are Client, glossary entry) 100.76 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(219) 194.25 164 T
+(XkbAX_An) 72 154 T
+(yFeedback macro) 115.86 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(76) 182.59 154 T
+(XkbAX_DumbBellFBMask) 72 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 176.5 144 T
+(XkbAX_NeedFeedback macro) 72 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(76) 186.21 134 T
+(XkbAX_NeedOption macro) 72 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(76) 176.73 124 T
+(XkbAXN_AXKW) 72 114 T
+(arning) 138.76 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 164.76 114 T
+(XkbAXN_BKAccept) 72 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 152.48 104 T
+(XkbAXN_BKReject) 72 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(65) 149.99 94 T
+(XkbAXN_SKAccept) 72 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 151.48 84 T
+(XkbAXN_SKPress) 72 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 144.99 74 T
+(XkbAXN_SKReject) 315 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 391.99 714 T
+(XkbAXN_SKRelease) 315 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(64) 396.98 704 T
+(XkbBeha) 315 694 T
+(vior data structure) 348.81 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(161) 417.3 694 T
+(XkbBell\050 \051) 315 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(49) 356.74 684 T
+(XkbBellEv) 315 674 T
+(ent\050 \051) 355.36 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(50) 377.61 674 T
+(XkbBellNotify) 315 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 372 664 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 381 664 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(47) 387 664 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 396 664 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(64) 402 664 T
+(XkbBellNotifyEv) 315 654 T
+(ent) 378.86 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 392.86 654 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 401.86 654 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(52) 407.86 654 T
+(XkbBoundsRec) 315 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 375 644 T
+(Xkb-capable client) 315 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(3) 386.23 634 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 390.73 634 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(21) 396.73 634 T
+(Xkb-capable Client, glossary entry) 315 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(219) 443.48 624 T
+(XkbChangeControls\050 \051) 315 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(78) 400.24 614 T
+(XkbChangeDe) 315 604 T
+(viceInfo\050 \051) 368.26 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(208) 409.49 604 T
+(XkbChangeEnabledControls\050 \051) 315 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(54) 429.73 594 T
+(XkbChangeIndicators\050 \051) 315 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(44) 405.23 584 T
+(XkbChangeMap\050 \051) 315 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(121) 385.73 574 T
+(XkbChangeNames\050 \051) 315 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(184) 394.23 564 T
+(XkbChangeT) 315 554 T
+(ypesOfK) 362.77 554 T
+(e) 395.04 554 T
+(y\050 \051) 398.9 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(137) 414.64 554 T
+(XkbClampIntoRange) 315 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 394.99 544 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 403.99 544 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 409.99 544 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 418.99 544 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(134) 424.99 544 T
+(XkbClientMapRec) 315 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(127) 385.99 534 T
+(XkbColorRec) 315 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 367.99 524 T
+(XkbCompatMapNotify) 315 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 402 514 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 411 514 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(174) 417 514 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 430.5 514 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(178) 436.5 514 T
+(XkbCompatMapNotifyEv) 315 504 T
+(ent) 408.86 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 422.86 504 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 431.86 504 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(178) 437.86 504 T
+(XkbCompatMapRec) 315 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(169) 392.49 494 T
+(XkbComponentListRec) 315 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(192) 403.5 484 T
+(XkbComponentNameRec) 315 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(192) 410.99 474 T
+(XkbComponentNamesRec) 315 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(192) 414.49 464 T
+(XkbComputeRo) 315 454 T
+(wBounds\050 \051) 373.78 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 419.02 454 T
+(XkbComputeSectionBounds\050 \051) 315 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 429.25 444 T
+(XkbComputeShapeBounds\050 \051) 315 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(105) 424.24 434 T
+(XkbComputeShapeT) 315 424 T
+(op\050 \051) 390.28 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(105) 410.52 424 T
+(XkbControlsChangesRec) 315 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(78) 409.49 414 T
+(XkbControlsNotify) 315 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 388 404 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 397 404 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(62) 403 404 T
+(XkbControlsNotifyEv) 315 394 T
+(ent) 394.87 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 408.86 394 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 417.86 394 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(79) 423.86 394 T
+(XkbControlsRec) 315 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(72) 378.5 384 T
+(allocating and freeing) 324 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(80) 405.48 374 T
+(XkbCop) 315 364 T
+(yK) 345.41 364 T
+(e) 356.18 364 T
+(yT) 360.05 364 T
+(ype\050 \051) 369.32 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(132) 393.56 364 T
+(XkbCop) 315 354 T
+(yK) 345.41 354 T
+(e) 356.18 354 T
+(yT) 360.05 354 T
+(ypes\050 \051) 369.32 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(133) 397.07 354 T
+(XkbCtrlsAction data structure) 315 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(154) 426.49 344 T
+(XkbDescRec) 315 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(27) 365.48 334 T
+(component references) 324 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(27) 406.22 324 T
+(XkbDe) 315 314 T
+(viceBell\050 \051) 340.77 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(49) 382.01 314 T
+(XkbDe) 315 304 T
+(viceBellEv) 340.77 304 T
+(ent\050 \051) 380.63 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(50) 402.87 304 T
+(XkbDe) 315 294 T
+(viceBtnAction data structure) 340.77 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(158) 447.25 294 T
+(XkbDe) 315 284 T
+(viceChangesRec) 340.77 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(207) 403.75 284 T
+(XkbDe) 315 274 T
+(viceInfoRec) 340.77 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(199) 387.75 274 T
+(XkbDe) 315 264 T
+(viceLedChangesRec) 340.77 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(207) 417.75 264 T
+(XkbDe) 315 254 T
+(viceLedInfoRec) 340.77 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(199) 401.74 254 T
+(XkbDe) 315 244 T
+(viceV) 340.77 244 T
+(aluatorAction data structure) 361.26 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 464.74 244 T
+(XkbDoodadRec) 315 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(103) 375.99 234 T
+(XkbEv) 315 224 T
+(ent uni\336ed e) 340.36 224 T
+(v) 384.63 224 T
+(ent type) 389 224 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 420.74 224 T
+(XkbExtensionDe) 315 214 T
+(viceNotify) 376.77 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(15) 418.26 214 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 427.26 214 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(205) 433.26 214 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 446.76 214 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(206) 452.76 214 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 466.26 214 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(208) 472.26 214 T
+(XkbExtensionDe) 315 204 T
+(viceNotifyEv) 376.77 204 T
+(ent) 425.12 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 439.12 204 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 448.12 204 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(207) 454.12 204 T
+(XkbFindOv) 315 194 T
+(erlayF) 357.87 194 T
+(orK) 380.73 194 T
+(e) 394.5 194 T
+(y\050 \051) 398.36 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(106) 414.1 194 T
+(XkbF) 315 184 T
+(orceBell\050 \051) 335.37 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(51) 377.1 184 T
+(XkbF) 315 174 T
+(orceDe) 335.37 174 T
+(viceBell\050 \051) 361.12 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(51) 402.37 174 T
+(XkbFreeClientMap\050 \051) 315 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(124) 396.24 164 T
+(XkbFreeCompatMap\050 \051) 315 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(179) 402.73 154 T
+(XkbFreeComponentList\050 \051) 315 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(192) 413.74 144 T
+(XkbFreeControls\050 \051) 315 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(81) 388.74 134 T
+(XkbFreeDe) 315 124 T
+(viceInfo\050 \051) 356.76 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(204) 397.99 124 T
+(XkbFreeGeomColors\050 \051) 315 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(112) 403.73 114 T
+(XkbFreeGeomDoodads\050 \051) 315 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(115) 411.73 104 T
+(XkbFreeGeometry\050 \051) 315 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(115) 393.73 94 T
+(XkbFreeGeomK) 315 84 T
+(e) 374.76 84 T
+(yAliases\050 \051) 378.62 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(111) 420.86 84 T
+(XkbFreeGeomK) 315 74 T
+(e) 374.76 74 T
+(ys\050 \051) 378.62 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(110) 397.87 74 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "226" 238
+%%Page: "227" 239
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-227) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(XkbFreeGeomOutlines\050 \051) 72 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(110) 167.23 714 T
+(XkbFreeGeomOv) 72 704 T
+(erlayK) 136.35 704 T
+(e) 160.61 704 T
+(ys\050 \051) 164.48 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(114) 183.72 704 T
+(XkbFreeGeomOv) 72 694 T
+(erlayRo) 136.35 694 T
+(ws\050 \051) 164.62 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(114) 185.86 694 T
+(XkbFreeGeomOv) 72 684 T
+(erlays\050 \051) 136.35 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(113) 169.09 684 T
+(XkbFreeGeomPoints\050 \051) 72 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(112) 159.24 674 T
+(XkbFreeGeomProperties\050 \051) 72 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(111) 173.23 664 T
+(XkbFreeGeomRo) 72 654 T
+(ws\050 \051) 135.76 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(113) 157.01 654 T
+(XkbFreeGeomSections\050 \051) 72 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(113) 167.23 644 T
+(XkbFreeGeomShapes\050 \051) 72 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(112) 162.23 634 T
+(XkbFreeIndicatorMaps\050 \051) 72 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(46) 167.22 624 T
+(XkbFreeK) 72 614 T
+(e) 109.76 614 T
+(yboard\050 \051) 113.62 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(29) 149.86 614 T
+(XkbFreeNames\050 \051) 72 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(186) 139.73 604 T
+(XkbFreeServ) 72 594 T
+(erMap\050 \051) 119.85 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(125) 154.59 594 T
+(XKBgeom.h) 72 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 120.75 584 T
+(XkbGeometryRec) 72 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 140.48 574 T
+(XkbGetAccessXT) 72 564 T
+(imeout\050 \051) 137.66 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(62) 173.91 564 T
+(XkbGetAutoRepeatRate\050 \051) 72 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(57) 171.23 554 T
+(XkbGetAutoResetControls\050 \051) 72 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(55) 180.74 544 T
+(XkbGetBounceK) 72 534 T
+(e) 134.26 534 T
+(ysDelay\050 \051) 138.12 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(66) 178.86 534 T
+(XkbGetCompatMap\050 \051) 72 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(174) 156.74 524 T
+(XkbGetControls\050 \051) 72 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(77) 142.74 514 T
+(XkbGetControlsChanges\050 \051) 72 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(80) 173.74 504 T
+(XkbGetDetectableAutorepeat\050 \051) 72 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(58) 190.21 494 T
+(XkbGetDe) 72 484 T
+(viceButtonActions\050 \051) 110.76 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(201) 189.51 484 T
+(XkbGetDe) 72 474 T
+(viceInfo\050 \051) 110.76 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(200) 151.99 474 T
+(XkbGetDe) 72 464 T
+(viceInfoChanges\050 \051) 110.76 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(208) 182.99 464 T
+(XkbGetDe) 72 454 T
+(viceLedInfo\050 \051) 110.76 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(202) 165.99 454 T
+(XkbGetGeometry\050 \051) 72 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(104) 147.73 444 T
+(XkbGetIndicatorChanges\050 \051) 72 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(45) 175.22 434 T
+(XkbGetIndicatorMap\050 \051) 72 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(40) 160.73 424 T
+(XkbGetIndicatorState\050 \051) 72 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(40) 162.23 414 T
+(XkbGetK) 72 404 T
+(e) 106.77 404 T
+(yActions\050 \051) 110.63 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(160) 154.37 404 T
+(XkbGetK) 72 394 T
+(e) 106.77 394 T
+(yBeha) 110.63 394 T
+(viors\050 \051) 133.44 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 162.69 394 T
+(XkbGetK) 72 384 T
+(e) 106.77 384 T
+(yboard\050 \051) 110.63 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(28) 146.87 384 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 155.87 384 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(197) 161.87 384 T
+(XkbGetK) 72 374 T
+(e) 106.77 374 T
+(yboardByName\050 \051) 110.63 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(194) 178.86 374 T
+(XkbGetK) 72 364 T
+(e) 106.77 364 T
+(yExplicitComponents\050 \051) 110.63 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(163) 200.38 364 T
+(XkbGetK) 72 354 T
+(e) 106.77 354 T
+(yModi\336erMap\050 \051) 110.63 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(139) 174.37 354 T
+(XkbGetK) 72 344 T
+(e) 106.77 344 T
+(ySyms\050 \051) 110.63 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(136) 146.38 344 T
+(XkbGetK) 72 334 T
+(e) 106.77 334 T
+(yT) 110.63 334 T
+(ypes\050 \051) 119.91 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(131) 147.65 334 T
+(XkbGetK) 72 324 T
+(e) 106.77 324 T
+(yV) 110.63 324 T
+(irtualModMap\050 \051) 121.09 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(166) 184.83 324 T
+(XkbGetMap\050 \051) 72 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(118) 128.24 314 T
+(XkbGetNameChanges\050 \051) 72 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(186) 164.23 304 T
+(XkbGetNamedGeometry\050 \051) 72 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(105) 173.72 294 T
+(XkbGetNamedIndicator\050 \051) 72 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(41) 170.22 284 T
+(XkbGetNames\050 \051) 72 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(183) 136.73 274 T
+(XkbGetPerClientControls\050 \051) 72 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(81) 176.74 264 T
+(XkbGetSlo) 72 254 T
+(wK) 112.28 254 T
+(e) 125.05 254 T
+(ysDelay\050 \051) 128.91 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(66) 169.64 254 T
+(XkbGetState\050 \051) 72 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(24) 129.74 244 T
+(XkbGetStick) 72 234 T
+(yK) 118.86 234 T
+(e) 129.64 234 T
+(ysOptions\050 \051) 133.5 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(68) 181.24 234 T
+(XkbGetUpdatedMap\050 \051) 72 224 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(119) 158.73 224 T
+(XkbGetV) 72 214 T
+(irtualMods\050 \051) 106.45 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(165) 157.2 214 T
+(XkbGetXlibControls\050 \051) 72 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 158.74 204 T
+(XkbGroupAction data structure) 72 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(146) 188.98 194 T
+(XkbIgnoreExtension\050 \051) 72 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(8) 158.23 184 T
+(XkbIM_LEDDri) 72 174 T
+(v) 132.26 174 T
+(esKB) 136.63 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 159.63 174 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 168.63 174 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(41) 174.63 174 T
+(XkbIM_NoAutomatic) 72 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 154.99 164 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 163.99 164 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(42) 169.99 164 T
+(XkbIM_NoExplicit) 72 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 145.5 154 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 154.5 154 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(41) 160.5 154 T
+(XkbIM_UseBase) 72 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(37) 137.49 144 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 146.49 144 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(38) 152.49 144 T
+(XkbIM_UseCompat) 72 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(38) 148.49 134 T
+(XkbIM_UseEf) 72 124 T
+(fecti) 125.26 124 T
+(v) 141.03 124 T
+(e) 145.4 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(37) 152.39 124 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 161.39 124 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(38) 167.39 124 T
+(XkbIM_UseLatched) 72 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(37) 148.98 114 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 157.98 114 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(38) 163.98 114 T
+(XkbIM_UseLock) 72 104 T
+(ed) 135.4 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(37) 146.89 104 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 155.89 104 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(38) 161.89 104 T
+(XkbIM_UseNone) 72 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(37) 139.49 94 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 148.49 94 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(38) 154.49 94 T
+(XkbIndicatorChangesRec) 72 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(43) 167.98 84 T
+(XkbIndicatorDoodadRec) 72 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(104) 165.48 74 T
+(XkbIndicatorMapNotify) 315 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 405.98 714 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 414.98 714 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(44) 420.98 714 T
+(XkbIndicatorMapRec) 315 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(35) 396.48 704 T
+(XkbIndicatorNotifyEv) 315 694 T
+(ent) 396.35 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 410.35 694 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 419.35 694 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(44) 425.35 694 T
+(XkbIndicatorRec) 315 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(34) 379.98 684 T
+(XkbIndicatorStateNotify) 315 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 407.49 674 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 416.49 674 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(44) 422.49 674 T
+(XkbInitCanonicalK) 315 664 T
+(e) 385.77 664 T
+(yT) 389.63 664 T
+(ypes\050 \051) 398.91 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(131) 426.65 664 T
+(XkbISO) 315 654 T
+(Action data structure) 344.68 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(151) 423.17 654 T
+(XkbKB_Def) 315 644 T
+(ault) 360.9 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(161) 377.4 644 T
+(XkbKB_Lock) 315 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 368.99 634 T
+(XkbKB_Ov) 315 624 T
+(erlay1) 358.36 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 383.85 624 T
+(XkbKB_Ov) 315 614 T
+(erlay2) 358.36 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 383.85 614 T
+(XkbKB_Permanent) 315 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 388.99 604 T
+(XkbKB_RadioGroup) 315 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(162) 394.99 594 T
+(XkbK) 315 584 T
+(e) 336.77 584 T
+(yAction macro) 340.63 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(142) 397.37 584 T
+(XkbK) 315 574 T
+(e) 336.77 574 T
+(yActionEntry macro) 340.63 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(142) 417.37 574 T
+(XkbK) 315 564 T
+(e) 336.77 564 T
+(yActionsPtr macro) 340.63 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(142) 411.38 564 T
+(XkbK) 315 554 T
+(e) 336.77 554 T
+(yAliasRec) 340.63 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 381.13 554 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 394.63 554 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(180) 400.63 554 T
+(XkbK) 315 544 T
+(e) 336.77 544 T
+(ycodeT) 340.63 544 T
+(oK) 366.9 544 T
+(e) 377.68 544 T
+(ysym\050 \051) 381.54 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 412.28 544 T
+(XkbK) 315 534 T
+(e) 336.77 534 T
+(yGroupInfo macro) 340.63 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 410.86 534 T
+(XkbK) 315 524 T
+(e) 336.77 524 T
+(yGroupsW) 340.63 524 T
+(idth macro) 379.76 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 421.51 524 T
+(XkbK) 315 514 T
+(e) 336.77 514 T
+(yGroupW) 340.63 514 T
+(idth macro) 376.26 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(136) 418.01 514 T
+(XkbK) 315 504 T
+(e) 336.77 504 T
+(yHasActions macro) 340.63 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(141) 414.87 504 T
+(XkbK) 315 494 T
+(e) 336.77 494 T
+(yNameRec) 340.63 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(180) 383.62 494 T
+(XkbK) 315 484 T
+(e) 336.77 484 T
+(yNumActions macro) 340.63 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(141) 418.87 484 T
+(XkbK) 315 474 T
+(e) 336.77 474 T
+(yNumGroups macro) 340.63 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 417.37 474 T
+(XkbK) 315 464 T
+(e) 336.77 464 T
+(yNumSyms macro) 340.63 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(136) 410.88 464 T
+(XkbK) 315 454 T
+(e) 336.77 454 T
+(ypadInde) 340.63 454 T
+(x canonical k) 373.99 454 T
+(e) 421.88 454 T
+(y type) 425.74 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 450.99 454 T
+(XkbK) 315 444 T
+(e) 336.77 444 T
+(yRec) 340.63 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(102) 362.13 444 T
+(XkbK) 315 434 T
+(e) 336.77 434 T
+(ySymEntry macro) 340.63 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(136) 409.38 434 T
+(XkbK) 315 424 T
+(e) 336.77 424 T
+(ySymsOf) 340.63 424 T
+(fset macro) 374.41 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(136) 415.15 424 T
+(XkbK) 315 414 T
+(e) 336.77 414 T
+(ySymsPtr macro) 340.63 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(136) 403.38 414 T
+(XkbK) 315 404 T
+(e) 336.77 404 T
+(ysymT) 340.63 404 T
+(oModi\336ers\050 \051) 364.91 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 415.66 404 T
+(XkbK) 315 394 T
+(e) 336.77 394 T
+(yT) 340.63 394 T
+(ype macro) 349.91 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(134) 390.65 394 T
+(XkbK) 315 384 T
+(e) 336.77 384 T
+(yT) 340.63 384 T
+(ypeInde) 349.91 384 T
+(x macro) 378.77 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(134) 411.01 384 T
+(XkbK) 315 374 T
+(e) 336.77 374 T
+(yT) 340.63 374 T
+(ypeRec) 349.91 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(127) 379.9 374 T
+(XkbK) 315 364 T
+(e) 336.77 364 T
+(yT) 340.63 364 T
+(ypesF) 349.91 364 T
+(orCoreSymbols\050 \051) 371.28 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(176) 439.02 364 T
+(XkbKTMapEntryRec) 315 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(127) 395.98 354 T
+(XkbLatchGroup\050 \051) 315 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(23) 385.23 344 T
+(XkbLatchModi\336ers\050 \051) 315 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(22) 397.24 334 T
+(XkbLC_AllControls) 315 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 392.01 324 T
+(XkbLC_AlphanumericK) 315 314 T
+(e) 404.26 314 T
+(ys) 408.12 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 419.12 314 T
+(XkbLC_AlternateGroup) 315 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 405.98 304 T
+(XkbLC_Al) 315 294 T
+(w) 355.41 294 T
+(aysConsumeShiftAndLock) 361.82 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 462.32 294 T
+(XkbLC_BeepOnComposeF) 315 284 T
+(ail) 414.86 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 426.86 284 T
+(XkbLC_ComposeLED) 315 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 401 274 T
+(XkbLC_ConsumeK) 315 264 T
+(e) 386.77 264 T
+(ysOnComposeF) 390.64 264 T
+(ail) 448.51 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 460.51 264 T
+(XkbLC_ConsumeLookupMods) 315 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 432 254 T
+(XkbLC_Def) 315 244 T
+(ault) 359.9 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 376.4 244 T
+(XkbLC_F) 315 234 T
+(orceLatin1Lookup) 351.37 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 421.36 234 T
+(XkbLC_FunctionK) 315 224 T
+(e) 384.78 224 T
+(ys) 388.64 224 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 399.64 224 T
+(XkbLC_Hidden) 315 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 376 214 T
+(XkbLC_IgnoreNe) 315 204 T
+(wK) 380.26 204 T
+(e) 393.03 204 T
+(yboards) 396.89 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 428.39 204 T
+(XkbLC_K) 315 194 T
+(e) 352.77 194 T
+(ypadK) 356.63 194 T
+(e) 380.4 194 T
+(ys) 384.26 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 395.27 194 T
+(XkbLC_Modi\336erK) 315 184 T
+(e) 384.27 184 T
+(ys) 388.13 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 399.14 184 T
+(XkbLC_P) 315 174 T
+(artial) 351.37 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(193) 372.86 174 T
+(XKBlib) 315 164 T
+(.h) 343.14 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 352.89 164 T
+(XkbLibraryV) 315 154 T
+(ersion\050 \051) 362.99 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 396.23 154 T
+(XkbListComponents\050 \051) 315 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(191) 401.25 144 T
+(XkbLockGroup\050 \051) 315 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(23) 383.23 134 T
+(XkbLockModi\336ers\050 \051) 315 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(22) 395.24 124 T
+(XkbLogoDoodadRec) 315 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(104) 394.99 114 T
+(XkbLookupK) 315 104 T
+(e) 364.77 104 T
+(yBinding\050 \051) 368.63 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(90) 413.38 104 T
+(XkbLookupK) 315 94 T
+(e) 364.77 94 T
+(ySym\050 \051) 368.63 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 400.88 94 T
+(XkbMapChangesRec) 315 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(121) 394.99 84 T
+(XkbMapNotify) 315 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 373.49 74 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 382.49 74 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(87) 388.49 74 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 397.49 74 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(88) 403.49 74 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 412.49 74 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(122) 418.49 74 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 431.99 74 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(178) 437.99 74 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "227" 239
+%%Page: "228" 240
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-228) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(XkbMapNotifyEv) 72 714 T
+(ent) 137.36 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 151.36 714 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 160.36 714 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(122) 166.36 714 T
+(XkbMessageAction data structure) 72 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 197.47 704 T
+(XkbModAction data structure) 72 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(144) 182.98 694 T
+(XkbModActionVMods macro) 72 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 183.74 684 T
+(XkbNameChangesRec) 72 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(184) 156.98 674 T
+(XkbNamesNotify) 72 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 138.99 664 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 147.99 664 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(185) 153.99 664 T
+(XkbNamesNotifyEv) 72 654 T
+(ent) 145.85 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 159.85 654 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 168.85 654 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(185) 174.85 654 T
+(XkbNamesRec) 72 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(180) 129.49 644 T
+(XkbNe) 72 634 T
+(wK) 97.77 634 T
+(e) 110.54 634 T
+(yboardNotify) 114.4 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 165.89 634 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 174.89 634 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(87) 180.89 634 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 189.89 634 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(187) 195.89 634 T
+(XkbNe) 72 624 T
+(wK) 97.77 624 T
+(e) 110.54 624 T
+(yboardNotifyEv) 114.4 624 T
+(ent) 172.76 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 186.75 624 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 195.75 624 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(188) 201.75 624 T
+(XkbNoteControlsChanges\050 \051) 72 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(80) 178.24 614 T
+(XkbNoteDe) 72 604 T
+(viceChanges\050 \051) 115.26 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(208) 172.5 604 T
+(XkbNoteIndicatorChanges\050 \051) 72 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(45) 179.72 594 T
+(XkbNoteNameChanges\050 \051) 72 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(185) 168.73 584 T
+(XkbOneLe) 72 574 T
+(v) 111.76 574 T
+(elInde) 116.13 574 T
+(x canonical k) 138.48 574 T
+(e) 186.38 574 T
+(y type) 190.24 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 215.49 574 T
+(XkbOpenDisplay\050 \051) 72 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(8) 146.24 564 T
+(XkbOutlineRec) 72 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 131.49 554 T
+(XkbOutOfRangeGroupInfo macro) 72 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 199.22 544 T
+(XkbOutOfRangeGroupNumber macro) 72 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(135) 213.72 534 T
+(XkbOv) 72 524 T
+(erlayK) 98.36 524 T
+(e) 122.62 524 T
+(yRec) 126.49 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(102) 147.98 524 T
+(XkbOv) 72 514 T
+(erlayRec) 98.36 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(102) 133.35 514 T
+(XkbOv) 72 504 T
+(erlayRo) 98.36 504 T
+(wRec) 126.63 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(102) 150.12 504 T
+(XkbPointRec) 72 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 123.5 494 T
+(XkbPropertyRec) 72 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 135.49 484 T
+(XkbPtrAction data structure) 72 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 176.48 474 T
+(XkbPtrActionX macro) 72 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 156.74 464 T
+(XkbPtrActionY macro) 72 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 156.74 454 T
+(XkbPtrBtnAction data structure) 72 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 189.49 444 T
+(XkbPtrD\337tAction data structure) 72 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(150) 190.49 434 T
+(XkbQueryExtension\050 \051) 72 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(7) 157.23 424 T
+(XkbRedirectIntoRange) 72 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 158.48 414 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 167.48 414 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 173.48 414 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 182.48 414 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(134) 188.48 414 T
+(XkbRedirectK) 72 404 T
+(e) 124.26 404 T
+(yAction data structure) 128.12 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(156) 211.11 404 T
+(XkbRefreshK) 72 394 T
+(e) 121.76 394 T
+(yboardMapping\050 \051) 125.62 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(90) 194.36 394 T
+(XkbResizeDe) 72 384 T
+(viceButtonActions\050 \051) 121.76 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(204) 200.51 384 T
+(XkbResizeK) 72 374 T
+(e) 117.76 374 T
+(yActions\050 \051) 121.63 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(160) 165.37 374 T
+(XkbResizeK) 72 364 T
+(e) 117.76 364 T
+(ySyms\050 \051) 121.63 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(138) 157.38 364 T
+(XkbResizeK) 72 354 T
+(e) 117.76 354 T
+(yT) 121.63 354 T
+(ype\050 \051) 130.9 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(132) 155.15 354 T
+(XkbRo) 72 344 T
+(wRec) 97.78 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(102) 121.27 344 T
+(XkbSA_ActionMessage) 72 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 162.49 334 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 175.99 334 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(155) 181.99 334 T
+(XkbSA_Af) 72 324 T
+(fectD\337tBtn) 112.77 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 156.27 324 T
+(XkbSA_ClearLocks) 72 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 147.99 314 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 161.49 314 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(146) 167.49 314 T
+(XkbSA_De) 72 304 T
+(viceBtn) 113.77 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 144.77 304 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 158.27 304 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(158) 164.27 304 T
+(XkbSA_De) 72 294 T
+(viceV) 113.77 294 T
+(aluator) 134.26 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 162.26 294 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 175.76 294 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(159) 181.76 294 T
+(XkbSA_D\337tBtnAbsolute) 72 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(150) 166.01 284 T
+(XkbSA_GroupAbsolute) 72 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(146) 161.99 274 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 175.49 274 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(151) 181.49 274 T
+(XkbSA_IgnoreV) 72 264 T
+(al) 132.49 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 141.99 264 T
+(XkbSA_ISOD\337tIsGroup) 72 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(151) 164.5 254 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 178 254 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 184 254 T
+(XkbSA_ISODNoAf) 72 244 T
+(fectMods) 144.76 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(152) 181.76 244 T
+(XkbSA_ISOLock) 72 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 139.49 234 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 152.99 234 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(151) 158.99 234 T
+(XkbSA_ISONoAf) 72 224 T
+(fectCtrls) 138.27 224 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(151) 172.26 224 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 185.76 224 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 191.76 224 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 205.26 224 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(153) 211.26 224 T
+(XkbSA_ISONoAf) 72 214 T
+(fectGroup) 138.27 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(151) 177.75 214 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 191.25 214 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 197.25 214 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 210.75 214 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(153) 216.75 214 T
+(XkbSA_ISONoAf) 72 204 T
+(fectMods) 138.27 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(151) 175.26 204 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 188.76 204 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 194.76 204 T
+(XkbSA_ISONoAf) 72 194 T
+(fectPtr) 138.27 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(151) 165.26 194 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 178.76 194 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 184.76 194 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 198.26 194 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(153) 204.26 194 T
+(XkbSA_LatchGroup) 72 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 149.99 184 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 163.49 184 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(146) 169.49 184 T
+(XkbSA_LatchMods) 72 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 147.49 174 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 160.99 174 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(144) 166.99 174 T
+(XkbSA_LatchT) 72 164 T
+(oLock) 128.77 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 154.77 164 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 168.27 164 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(146) 174.27 164 T
+(XkbSA_LockControls) 72 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 156 154 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 169.5 154 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(154) 175.5 154 T
+(XKbSA_LockDe) 72 144 T
+(viceBtn) 134.26 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 165.26 144 T
+(XkbSA_LockDe) 72 134 T
+(viceBtn) 132.26 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(158) 163.26 134 T
+(XkbSA_LockGroup) 72 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 147.99 124 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 161.49 124 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(146) 167.49 124 T
+(XkbSA_LockMods) 72 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 145.5 114 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 159 114 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(144) 165 114 T
+(XkbSA_LockNoLock) 72 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 154.49 104 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 167.99 104 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(149) 173.99 104 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 187.49 104 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 193.49 104 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 206.99 104 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(154) 212.99 104 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 226.49 104 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(158) 232.49 104 T
+(XkbSA_LockNoUnlock) 72 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 162.49 94 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 175.99 94 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(149) 181.99 94 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 195.49 94 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 201.49 94 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 214.99 94 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(154) 220.99 94 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 234.49 94 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(159) 240.49 94 T
+(XkbSA_LockPtrBtn) 72 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 148.5 84 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 162 84 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(149) 168 84 T
+(XkbSA_MessageGenK) 72 74 T
+(e) 156.26 74 T
+(yEv) 160.12 74 T
+(ent) 174.48 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 188.48 74 T
+(XkbSA_MessageOnPress) 315 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 410.99 714 T
+(XkbSA_MessageOnRelease) 315 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 419.98 704 T
+(XkbSA_Mo) 315 694 T
+(v) 358.87 694 T
+(eAbsoluteX) 363.23 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 409.22 694 T
+(XkbSA_Mo) 315 684 T
+(v) 358.87 684 T
+(eAbsoluteY) 363.23 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 409.22 684 T
+(XkbSA_Mo) 315 674 T
+(v) 358.87 674 T
+(ePtr) 363.23 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 380.73 674 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 394.23 674 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(147) 400.23 674 T
+(XkbSA_NoAcceleration) 315 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 406.48 664 T
+(XkbSA_NoAction) 315 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 385 654 T
+(XKbSA_PtrBtn) 315 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 375.01 644 T
+(XkbSA_PtrBtn) 315 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 373.01 634 T
+(XkbSA_RedirectK) 315 624 T
+(e) 383.27 624 T
+(y) 387.13 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 394.63 624 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 408.13 624 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(156) 414.13 624 T
+(XkbSA_SetControls) 315 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 392.01 614 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 405.51 614 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(154) 411.51 614 T
+(XkbSA_SetGroup) 315 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 384 604 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 397.5 604 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(146) 403.5 604 T
+(XkbSA_SetMods) 315 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 381.5 594 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 395 594 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(144) 401 594 T
+(XkbSA_SetPtrD\337t) 315 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 385.51 584 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 399.01 584 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(149) 405.01 584 T
+(XkbSA_SetV) 315 574 T
+(alAbsolute) 363.5 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 405.5 574 T
+(XkbSA_SetV) 315 564 T
+(alCenter) 363.5 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 396.99 564 T
+(XkbSA_SetV) 315 554 T
+(alMax) 363.5 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 389.5 554 T
+(XkbSA_SetV) 315 544 T
+(alMin) 363.5 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 388 544 T
+(XkbSA_SetV) 315 534 T
+(alRelati) 363.5 534 T
+(v) 391.27 534 T
+(e) 395.64 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(159) 402.64 534 T
+(XkbSA_SwitchAbsolute) 315 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(153) 407 524 T
+(XkbSA_SwitchApplication) 315 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(153) 417 514 T
+(XkbSA_SwitchScreen) 315 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(143) 398.99 504 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 412.49 504 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(153) 418.49 504 T
+(XkbSA_UseD\337tButton) 315 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(149) 402.01 494 T
+(XkbSA_UseModMapMods) 315 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 417.49 484 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 430.99 484 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(152) 436.99 484 T
+(XkbSAActionSetCtrls macro) 315 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(155) 423.25 474 T
+(XkbSA) 315 464 T
+(Group macro) 341.64 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 392.38 464 T
+(XkbSAPtrD\337tV) 315 454 T
+(alue macro) 372.01 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(150) 414.74 454 T
+(XkbSARedirectSetVMods macro) 315 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(157) 438.73 444 T
+(XkbSARedirectSetVModsMask macro) 315 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(157) 458.73 434 T
+(XkbSARedirectVMods macro) 315 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(157) 427.23 424 T
+(XkbSARedirectVModsMask macro) 315 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(157) 447.23 414 T
+(XkbSAScreen macro) 315 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(153) 394.23 404 T
+(XkbSASetGroup macro) 315 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(147) 404.24 394 T
+(XkbSASetPtrD\337tV) 315 384 T
+(alue macro) 383.51 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(150) 426.24 384 T
+(XkbSASetScreen macro) 315 374 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(154) 405.73 374 T
+(XkbSectionRec) 315 364 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(103) 374.49 364 T
+(XkbSelectEv) 315 354 T
+(entDetails\050 \051) 362.36 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(17) 410.1 354 T
+(XkbSelectEv) 315 344 T
+(ents mask constants) 362.36 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(17) 436.85 344 T
+(XkbSelectEv) 315 334 T
+(ents\050 \051) 362.36 334 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(16) 388.1 334 T
+(XkbServ) 315 324 T
+(erMapRec) 346.86 324 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(141) 387.35 324 T
+(XkbSetAccessXT) 315 314 T
+(imeout\050 \051) 379.17 314 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(63) 415.42 314 T
+(XkbSetAutoRepeatRate\050 \051) 315 304 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(57) 412.73 304 T
+(XkbSetAutoResetControls\050 \051) 315 294 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(55) 422.25 294 T
+(XkbSetBounceK) 315 284 T
+(e) 375.77 284 T
+(ysDelay\050 \051) 379.63 284 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(67) 420.37 284 T
+(XkbSetCompatMap\050 \051) 315 274 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(177) 398.24 274 T
+(XkbSetControls\050 \051) 315 264 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(77) 384.25 264 T
+(XkbSetDeb) 315 254 T
+(uggingFlags\050 \051) 356.81 254 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(210) 412.56 254 T
+(XkbSetDetectableAutorepeat\050 \051) 315 244 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(58) 431.71 244 T
+(XkbSetDe) 315 234 T
+(viceButtonActions\050 \051) 352.27 234 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(206) 431.01 234 T
+(XkbSetDe) 315 224 T
+(viceInfo\050 \051) 352.27 224 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(205) 393.5 224 T
+(XkbSetIgnoreLockMods\050 \051) 315 214 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(70) 415.73 214 T
+(XkbSetIndicatorMap\050 \051) 315 204 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(42) 402.23 204 T
+(XkbSetMap\050 \051) 315 194 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(120) 369.74 194 T
+(XkbSetModActionVMods macro) 315 184 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(145) 438.24 184 T
+(XkbSetNamedIndicator\050 \051) 315 174 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(43) 411.73 174 T
+(XkbSetNames\050 \051) 315 164 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(183) 378.24 164 T
+(XkbSetPerClientControls\050 \051) 315 154 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(81) 418.25 154 T
+(XkbSetPtrActionX macro) 315 144 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 411.24 144 T
+(XkbSetPtrActionY macro) 315 134 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(148) 411.24 134 T
+(XkbSetServ) 315 124 T
+(erInternalMods\050 \051) 358.36 124 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(71) 425.09 124 T
+(XkbSetSlo) 315 114 T
+(wK) 353.78 114 T
+(e) 366.55 114 T
+(ysDelay\050 \051) 370.41 114 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(66) 411.15 114 T
+(XkbSetStick) 315 104 T
+(yK) 360.37 104 T
+(e) 371.14 104 T
+(ysOptions\050 \051) 375 104 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(68) 422.75 104 T
+(XkbSetXlibControls\050 \051) 315 94 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 400.25 94 T
+(XkbShapeDoodadRec) 315 84 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(103) 397.98 84 T
+(XkbShapeRec) 315 74 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(101) 369.49 74 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "228" 240
+%%Page: "229" 241
+612 792 0 FMBEGINPAGE
+[0 0 0 1 0 0 0]
+[ 0 1 1 0 1 0 0]
+[ 1 0 1 0 0 1 0]
+[ 1 1 0 0 0 0 1]
+[ 1 0 0 0 0 1 1]
+[ 0 1 0 0 1 0 1]
+[ 0 0 1 0 1 1 0]
+ 7 FrameSetSepColors
+FrameNoSep
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+72 54 540 54 2 L
+0.25 H
+2 Z
+0 X
+0 0 0 1 0 0 0 K
+N
+2 11 Q
+(No) 72 40.62 T
+(v) 85.28 40.62 T
+(ember 10, 1997) 90.61 40.62 T
+(Library V) 209.59 40.62 T
+(ersion 1.0/Document Re) 252.05 40.62 T
+(vision 1.1) 359.01 40.62 T
+(Inde) 494.95 40.62 T
+(x-229) 514.34 40.62 T
+72 738 540 738 2 L
+1 H
+N
+(The X K) 72 744.87 T
+(e) 110.21 744.87 T
+(yboard Extension) 114.93 744.87 T
+(Inde) 515.12 744.87 T
+(x) 534.5 744.87 T
+2 9 Q
+(XkbSI_AllOf) 72 714 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 124 714 T
+(XkbSI_An) 72 704 T
+(yOf) 110.86 704 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 127.86 704 T
+(XkbSI_An) 72 694 T
+(yOfOrNone) 110.86 694 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 156.85 694 T
+(XkbSI_Exactly) 72 684 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 130.49 684 T
+(XkbSI_NoneOf) 72 674 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 131.99 674 T
+(XkbStateNotify) 72 664 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(14) 132 664 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 141 664 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(24) 147 664 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 156 664 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(65) 162 664 T
+(XkbStateNotify e) 72 654 T
+(v) 135.02 654 T
+(ent detail masks) 139.38 654 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(24) 200.38 654 T
+(XkbStateNotifyEv) 72 644 T
+(ent) 138.86 644 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(18) 152.86 644 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 161.86 644 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(25) 167.86 644 T
+(XkbStateRec) 72 634 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(24) 122.49 634 T
+(Xkbstr) 72 624 T
+(.h) 96 624 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(6) 105.75 624 T
+(XkbSwitchScreenAction data structure) 72 614 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(153) 215.47 614 T
+(XkbSymInterpretRec) 72 604 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(172) 151.99 604 T
+(XkbSymMapRec) 72 594 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(133) 137.5 594 T
+(XkbT) 72 584 T
+(e) 92.37 584 T
+(xtDoodadRec) 96.23 584 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(104) 148.72 584 T
+(XkbT) 72 574 T
+(ranslateK) 92.68 574 T
+(e) 126.94 574 T
+(yCode\050 \051) 130.81 574 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(91) 165.55 574 T
+(XkbT) 72 564 T
+(ranslateK) 92.68 564 T
+(e) 126.94 564 T
+(ySym\050 \051) 130.81 564 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(90) 163.06 564 T
+(XkbT) 72 554 T
+(w) 92.28 554 T
+(oLe) 98.68 554 T
+(v) 112.46 554 T
+(elInde) 116.82 554 T
+(x canonical k) 139.18 554 T
+(e) 187.07 554 T
+(y type) 190.93 554 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(129) 216.18 554 T
+(Xkb-una) 72 544 T
+(w) 103.36 544 T
+(are client) 109.76 544 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(4) 146 544 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 150.5 544 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(21) 156.5 544 T
+(Xkb-una) 72 534 T
+(w) 103.36 534 T
+(are Client, glossary entry) 109.76 534 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(219) 203.25 534 T
+(XkbUpdateMapFromCore\050 \051) 72 524 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(175) 178.23 524 T
+(XkbUseCoreKbd) 72 514 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(10) 137.49 514 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 146.49 514 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(15) 152.49 514 T
+(XkbV) 72 504 T
+(irtualModsT) 93.46 504 T
+(oReal\050 \051) 137.74 504 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(32) 169.98 504 T
+(XkbWrapIntoRange) 72 494 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(69) 147.98 494 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 156.98 494 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(74) 162.98 494 T
+0 0 0 1 0 0 0 K
+2 12 Q
+(,) 171.98 494 T
+0 0 0 1 0 0 0 K
+2 9 Q
+(134) 177.98 494 T
+(XkbXID\337tID) 72 484 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(198) 123.49 484 T
+(XkbXlibControlsImplemented\050 \051) 72 474 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(85) 193.24 474 T
+(XK) 72 464 T
+(e) 84.77 464 T
+(ycodeT) 88.63 464 T
+(oK) 114.9 464 T
+(e) 125.68 464 T
+(ysym\050 \051, Xkb modi\336cations) 129.54 464 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(88) 231.54 464 T
+(XK) 72 454 T
+(e) 84.77 454 T
+(ysymT) 88.63 454 T
+(oK) 112.91 454 T
+(e) 123.69 454 T
+(ycode\050 \051, Xkb modi\336cations) 127.55 454 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(88) 231.54 454 T
+(Xlib v) 72 444 T
+(ersion required) 94.62 444 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(1) 151.85 444 T
+(XLookupK) 72 434 T
+(e) 112.77 434 T
+(ysym\050 \051, Xkb modi\336cations) 116.63 434 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(88) 218.63 434 T
+(XLookupString\050 \051) 72 424 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(82) 139.75 424 T
+(function which is equi) 81 414 T
+(v) 161.02 414 T
+(alent, XkbLookupK) 165.29 414 T
+(e) 237.06 414 T
+(yBinding\050 \051) 240.92 414 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(90) 285.67 414 T
+(Xkb modi\336cations) 81 404 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(88) 150.75 404 T
+(XMappingNotify) 72 394 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(187) 137.5 394 T
+(XRebindK) 72 384 T
+(e) 110.77 384 T
+(ysym\050 \051, Xkb modi\336cations) 114.63 384 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(89) 216.63 384 T
+(XRefreshK) 72 374 T
+(e) 112.76 374 T
+(yboardMapping\050 \051) 116.62 374 T
+(function which is equi) 81 364 T
+(v) 161.02 364 T
+(alent, XkbRefreshK) 165.29 364 T
+(e) 237.05 364 T
+(yboardMap-) 240.91 364 T
+(ping\050 \051) 99 354 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(90) 126.25 354 T
+(Xkb modi\336cations) 81 344 T
+0 0 0 1 0 0 0 K
+0 0 0 1 0 0 0 K
+(88) 150.75 344 T
+0 0 0 1 0 0 0 K
+FMENDPAGE
+%%EndPage: "229" 241
+%%Trailer
+%%BoundingBox: 0 0 612 792
+%%PageOrder: Ascend
+%%Pages: 241
+%%DocumentFonts: Helvetica-Bold
+%%+ Times-Italic
+%%+ Times-Roman
+%%+ Times-Bold
+%%+ Helvetica
+%%+ Courier
+%%+ Symbol
+%%+ Times-BoldItalic
+%%EOF
diff --git a/specs/XKB/XKBlib/allchaps.toc b/specs/XKB/XKBlib/allchaps.toc
new file mode 100644
index 0000000..e3c197c
--- /dev/null
+++ b/specs/XKB/XKBlib/allchaps.toc
Binary files differ
diff --git a/specs/XKB/XKBlib/fonts.fm5 b/specs/XKB/XKBlib/fonts.fm5
new file mode 100644
index 0000000..6223af9
--- /dev/null
+++ b/specs/XKB/XKBlib/fonts.fm5
Binary files differ
diff --git a/specs/XKB/XKBlib/title.fm5 b/specs/XKB/XKBlib/title.fm5
new file mode 100644
index 0000000..7ee5108
--- /dev/null
+++ b/specs/XKB/XKBlib/title.fm5
Binary files differ
diff --git a/specs/XLFD/xlfd.tbl.ms b/specs/XLFD/xlfd.tbl.ms
new file mode 100644
index 0000000..d761be4
--- /dev/null
+++ b/specs/XLFD/xlfd.tbl.ms
@@ -0,0 +1,2826 @@
+.\" Use tbl and -ms and macros.t -*- Nroff -*-
+.\" $Xorg: xlfd.tbl.ms,v 1.3 2000/08/17 19:42:22 cpqbld Exp $
+.nr sM 4 \" section on Matrix Transformations
+.nr sS 5 \" section on Scalable fonts
+.nr sP 6 \" section on Polymorphic font support
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+.if n .nr LL 72m
+\&
+.sp 8
+.ce 100
+\s+2\fBX Logical Font Description Conventions\fP\s-2
+
+\fBVersion 1.5\fP
+
+\fBX Consortium Standard\fP
+
+\fBX Version 11, Release 6.4\fP
+.sp 6
+\s+1Jim Flowers\s-1
+.sp 6p
+\s+1Digital Equipment Corporation\s-1
+.sp 6
+\s+1Version 1.5 edited by Stephen Gildea\s0
+.sp 6p
+\s+1X Consortium, Inc.\s0
+.ce 0
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.LP
+Helvetica and Times are registered trademarks of Linotype Company.
+.LP
+ITC Avant Garde Gothic is a registered trademark of International
+Typeface Corporation.
+.LP
+Times Roman is a registered trademark of Monotype Corporation.
+.LP
+Bitstream Amerigo is a registered trademark of Bitstream Inc.
+.LP
+Stone is a registered trademark of Adobe Systems Inc.
+.LP
+Copyright \(co 1988, 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+\*QSoftware\*U), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED \*QAS IS\*U, WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+.LP
+Copyright \(co 1988, 1989
+Digital Equipment Corporation, Maynard MA. All rights reserved.
+.LP
+Permission to use, copy, modify, and distribute this documentation
+for any purpose and without fee is hereby granted, provided
+that the above copyright notice and this permission
+notice appear in all copies.
+Digital Equipment Corporation makes no representations
+about the
+suitability for any purpose of the information in this document.
+This documentation is provided as is without express or implied warranty.
+.ps 11
+.nr PS 11
+.bp 1
+.EH '\fBX Logical Font Description Conventions\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Logical Font Description Conventions\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB\\\\n(PN\fP''
+.OF ''\fB\\\\n(PN\fP''
+.NH 1
+Introduction
+.XS
+\*(SN Introduction
+.XE
+.LP
+It is a requirement that X client applications must be portable across server
+implementations, with very different file systems, naming conventions, and
+font libraries.
+However, font access requests,
+as defined by the \fIX Window System Protocol\fP,
+neither specify server-independent conventions for font names
+nor provide adequate font properties for logically describing typographic fonts.
+.LP
+X clients must be able to dynamically determine the fonts available
+on any given server so that understandable information can be presented
+to the user or so that intelligent font fallbacks can be chosen.
+It is desirable for the most common queries to be accomplished
+without the overhead of opening each font and inspecting font properties,
+by means of simple
+.PN ListFonts
+requests.
+For example, if a user selected a Helvetica typeface family,
+a client application should be able to query the server
+for all Helvetica fonts and present only those setwidths, weights, slants,
+point sizes, and character sets available for that family.
+.LP
+This document gives a standard logical font description
+(hereafter referred to as XLFD) and the conventions to be used
+in the core protocol so that clients can query and access screen type libraries
+in a consistent manner across all X servers.
+In addition to completely specifying a given font by means of its
+.PN FontName ,
+the XLFD also provides for a standard set of key
+.PN FontProperties
+that describe the font in more detail.
+.LP
+The XLFD provides an adequate set of typographic font properties,
+such as \s-1CAP_HEIGHT\s+1, \s-1X_HEIGHT\s+1,
+and \s-1RELATIVE_SETWIDTH\s+1,
+for publishing and other applications to do intelligent font matching
+or substitution when handling documents created on some foreign server
+that use potentially unknown fonts.
+In addition,
+this information is required by certain clients
+to position subscripts automatically and determine small capital heights,
+recommended leading, word-space values, and so on.
+.NH 1
+Requirements and Goals
+.XS
+\*(SN Requirements and Goals
+.XE
+.LP
+The XLFD meets the short-term and long-term goals to have a
+standard logical font description that:
+.IP \(bu 5
+Provides unique, descriptive font names that support simple pattern
+matching
+.IP \(bu 5
+Supports multiple font vendors, arbitrary character sets, and encodings
+.IP \(bu 5
+Supports naming and instancing of scalable and polymorphic fonts
+.IP \(bu 5
+Supports transformations and subsetting of fonts
+.IP \(bu 5
+Is independent of X server and operating or file system implementations
+.IP \(bu 5
+Supports arbitrarily complex font matching or substitution
+.IP \(bu 5
+Is extensible
+.NH 2
+Provide Unique and Descriptive Font Names
+.XS
+\*(SN Provide Unique and Descriptive Font Names
+.XE
+.LP
+It should be possible to have font names that are long enough and
+descriptive enough to have a reasonable probability of being unique
+without inventing a new registration organization.
+Resolution and size-dependent font masters, multivendor font libraries,
+and so on must be anticipated and handled by the font name alone.
+.LP
+The name itself should be structured to be amenable to simple pattern
+matching and parsing, thus allowing X clients to restrict font queries to
+some subset of all possible fonts in the server.
+.NH 2
+Support Multiple Font Vendors and Character Sets
+.XS
+\*(SN Support Multiple Font Vendors and Character Sets
+.XE
+.LP
+The font name and properties should distinguish between fonts
+that were supplied by different font vendors
+but that possibly share the same name.
+We anticipate a highly competitive font market where users will be able to
+buy fonts from many sources according to their particular requirements.
+.LP
+A number of font vendors deliver each font with all glyphs designed for that
+font, where charset mappings are defined by encoding vectors.
+Some server implementations may force these mappings to proprietary
+or standard charsets statically in the font data.
+Others may desire to perform the mapping dynamically in the server.
+Provisions must be made in the font name
+that allows a font request to specify or identify specific charset mappings
+in server environments where multiple charsets are supported.
+.NH 2
+Support Scalable and Polymorphic Fonts
+.XS
+\*(SN Support Scalable and Polymorphic Fonts
+.XE
+.LP
+If a font source can be scaled to an arbitrary size or varied in other
+ways, it should be possible for an application to determine
+that fact from the font name, and the
+application should be able to construct a font name for any specific
+instance.
+.NH 2
+Support Transformations and Subsetting of Fonts
+.XS
+\*(SN Support Transformations and Subsetting of Fonts
+.XE
+.LP
+Arbitrary two-dimensional linear transformations of fonts should be
+able to be requested by applications. Since such transformed fonts
+may be used for special effects requiring a few characters from each
+of many differently transformed fonts, it should be possible to
+request only a few characters from a font for efficiency.
+.NH 2
+Be Independent of X Server and Operating or File System Implementations
+.XS
+\*(SN Be Independent of X Server and Operating or File System Implementations
+.XE
+.LP
+X client applications that require a particular font should be able to use
+the descriptive name without knowledge of the file system or other
+repository in use by the server.
+However,
+it should be possible for servers to translate a given font name
+into a file name syntax that it knows how to deal with,
+without compromising the uniqueness of the font name.
+This algorithm should be reversible (exactly how this translation is done is
+implementation dependent).
+.NH 2
+Support Arbitrarily Complex Font Matching and Substitution
+.XS
+\*(SN Support Arbitrarily Complex Font Matching and Substitution
+.XE
+.LP
+In addition to the font name,
+the XLFD should define a standard list of descriptive font properties,
+with agreed-upon fallbacks for all fonts.
+This allows client applications to derive font-specific formatting
+or display data and to perform font matching or substitution
+when asked to handle potentially unknown fonts, as required.
+.NH 2
+Be Extensible
+.XS
+\*(SN Be Extensible
+.XE
+.LP
+The XLFD must be extensible so that new and/or private descriptive font
+properties can be added to conforming fonts without making existing
+X client or server implementations obsolete.
+.NH 1
+X Logical Font Description
+.XS
+\*(SN X Logical Font Description
+.XE
+.LP
+XLFD is divided into two basic components:
+the
+.PN FontName ,
+which gives all font information needed to uniquely identify a font
+in X protocol requests (for example,
+.PN OpenFont ,
+.PN ListFonts ,
+and so on) and a variable list of optional
+.PN FontProperties ,
+which describe a font in more detail.
+.LP
+The
+.PN FontName
+is used in font queries and is returned as data in certain X protocol requests.
+It is also specified as the data value for the
+.PN FONT
+item in the X Consortium Character Bitmap Distribution Format Standard
+(BDF V2.1).
+.LP
+The
+.PN FontProperties
+are supplied on a font-by-font basis and are returned
+as data in certain X protocol requests as part of the
+.PN XFontStruct
+data structure.
+The names and associated data values for each of the
+.PN FontProperties
+may also appear as items of the
+\s-1\fBSTARTPROPERTIES\fP\s+1...\s-1\fBENDPROPERTIES\fP\s+1 list
+in the BDF V2.1 specification.
+.NH 2
+FontName
+.XS
+\*(SN FontName
+.XE
+.LP
+Each
+.PN FontName
+is logically composed of two strings: a
+.PN FontNameRegistry
+prefix that is followed by a
+.PN FontNameSuffix .
+The
+.PN FontName
+uses the ISO 8859-1 encoding.
+The
+.PN FontNameRegistry
+is an
+.IN x-registered-name
+x-registered-name (a name that has been registered with the X Consortium)
+that identifies the registration authority that owns the specified
+.PN FontNameSuffix
+syntax and semantics.
+.LP
+All font names that conform to this specification are to use a
+.PN FontNameRegistry
+prefix, which is defined to be the string \*Q\-\*U
+(HYPHEN).
+All
+.PN FontNameRegistry
+prefixes of the form: +\fIversion\fP\-,
+where the specified version indicates some future XLFD specification,
+are reserved by the X Consortium for future extensions to XLFD font names.
+If required, extensions to the current XLFD font name shall be constructed
+by appending new fields to the current structure,
+each delimited by the existing field delimiter.
+The availability of other
+.PN FontNameRegistry
+prefixes or fonts that support other registries
+is server implementation dependent.
+.LP
+In the X protocol specification,
+the
+.PN FontName
+is required to be a string;
+hence, numeric field values are represented in the name as string equivalents.
+All
+.PN FontNameSuffix
+fields are also defined as
+.PN FontProperties ;
+numeric property values are represented as signed or unsigned integers,
+as appropriate.
+.NH 3
+FontName Syntax
+.XS
+\*(SN FontName Syntax
+.XE
+.LP
+The
+.PN FontName
+is a structured, parsable string (of type STRING8)
+whose Backus-Naur Form syntax description is as follows:
+.IN "FontName Syntax"
+.SM
+.TS
+rw(1.5i) lw(3.75i).
+.sp 6p
+T{
+FontName ::=
+T} T{
+XFontNameRegistry XFontNameSuffix |
+PrivFontNameRegistry PrivFontNameSuffix
+T}
+T{
+XFontNameRegistry ::=
+T} T{
+XFNDelim | XFNExtPrefix Version XFNDelim
+T}
+T{
+XFontNameSuffix ::=
+T} T{
+FOUNDRY XFNDelim FAMILY_NAME XFNDelim WEIGHT_NAME
+XFNDelim SLANT XFNDelim SETWIDTH_NAME XFNDelim ADD_
+STYLE_NAME XFNDelim PIXEL_SIZE XFNDelim POINT_SIZE
+XFNDelim RESOLUTION_X XFNDelim RESOLUTION_Y XFNDelim
+SPACING XFNDelim AVERAGE_WIDTH XFNDelim CHARSET_REGISTRY
+XFNDelim CHARSET_ENCODING
+T}
+T{
+Version ::=
+T} T{
+STRING8 \- the XLFD version that defines an extension
+to the font name syntax (for example, \*Q1.4\*U)
+T}
+XFNExtPrefix ::= OCTET \- \*Q+\*U (PLUS)
+XFNDelim ::= OCTET \- \*Q\-\*U (HYPHEN)
+T{
+PrivFontNameRegistry ::=
+T} T{
+STRING8 \- other than those strings reserved by XLFD
+T}
+PrivFontNameSuffix ::= STRING8
+.TE
+.NL
+.LP
+Field values are constructed as strings of ISO 8859-1 graphic characters,
+excluding the following:
+.IP \(bu 5
+\*Q\-\*U (HYPHEN), the XLFD font name delimiter character
+.IP \(bu 5
+\*Q?\*U (QUESTION MARK) and \*Q*\*U (ASTERISK), the X protocol
+font name wildcard characters
+.IP \(bu 5
+\*Q\^,\^\*U (COMMA), used by Xlib to separate XLFD font names in a font set.
+.IP \(bu 5
+\*Q\fC"\fP\*U (QUOTATION MARK), used by some commercial products to quote a
+font name.
+.LP
+Alphabetic case distinctions are allowed but are for human readability
+concerns only.
+Conforming X servers will perform matching on font name query or open requests
+independent of case.
+The entire font name string must have no more than 255 characters.
+It is recommended that clients construct font name query patterns
+by explicitly including all field delimiters to avoid unexpected results.
+Note that SPACE is a valid character of a
+.PN FontName
+field; for example, the string \*QITC Avant Garde Gothic\*U might be a
+FAMILY_NAME.
+.NH 3
+FontName Field Definitions
+.XS
+\*(SN FontName Field Definitions
+.XE
+.LP
+This section discusses the
+.PN FontName :
+.IP \(bu 5
+FOUNDRY field
+.IP \(bu 5
+FAMILY_NAME field
+.IP \(bu 5
+WEIGHT_NAME field
+.IP \(bu 5
+SLANT field
+.IP \(bu 5
+SETWIDTH_NAME field
+.IP \(bu 5
+ADD_STYLE_NAME field
+.IP \(bu 5
+PIXEL_SIZE field
+.IP \(bu 5
+POINT_SIZE field
+.IP \(bu 5
+RESOLUTION_X and RESOLUTION_Y fields
+.IP \(bu 5
+SPACING field
+.IP \(bu 5
+AVERAGE_WIDTH field
+.IP \(bu 5
+CHARSET_REGISTRY and CHARSET_ENCODING fields
+.NH 4
+FOUNDRY Field
+.XS
+\*(SN FOUNDRY Field
+.XE
+.LP
+FOUNDRY is an x-registered-name,
+the name or identifier of the digital type foundry
+that digitized and supplied the font data,
+or if different, the identifier of the organization that last modified
+the font shape or metric information.
+.LP
+The reason this distinction is necessary is
+that a given font design may be licensed from one source (for example, ITC)
+but digitized and sold by any number of different type suppliers.
+Each digital version of the original design, in general, will be somewhat
+different in metrics and shape from the idealized original font data,
+because each font foundry, for better or for worse, has its own standards
+and practices for tweaking a typeface for a particular generation
+of output technologies or has its own perception of market needs.
+.LP
+It is up to the type supplier to register with the X Consortium a
+suitable name for this
+.PN FontName
+field according to the registration procedures defined by the Consortium.
+.LP
+The X Consortium shall define procedures for registering foundry
+and other names and shall maintain and publish,
+as part of its public distribution,
+a registry of such registered names for use in XLFD font names and properties.
+.LP
+.NH 4
+FAMILY_NAME Field
+.XS
+\*(SN FAMILY_NAME Field
+.XE
+.LP
+FAMILY_NAME is a string that identifies the range or family of
+typeface designs that are all variations of one basic typographic style.
+This must be spelled out in full,
+with words separated by spaces, as required.
+This name must be human-understandable and suitable for presentation to a
+font user to identify the typeface family.
+.LP
+It is up to the type supplier to supply and maintain a suitable string for
+this field and font property, to secure the proper legal title to a given
+name, and to guard against the infringement of other's copyrights or
+trademarks.
+By convention, FAMILY_NAME is not translated.
+FAMILY_NAME may include an indication of design ownership
+if considered a valid part of the
+typeface family name.
+.LP
+The following are examples of FAMILY_NAME:
+.IP \(bu 5
+Helvetica
+.IP \(bu 5
+ITC Avant Garde Gothic
+.IP \(bu 5
+Times
+.IP \(bu 5
+Times Roman
+.IP \(bu 5
+Bitstream Amerigo
+.IP \(bu 5
+Stone
+.NH 4
+WEIGHT_NAME Field
+.XS
+\*(SN WEIGHT_NAME Field
+.XE
+.LP
+WEIGHT_NAME is a string that identifies the font's typographic weight,
+that is, the nominal blackness of the font,
+according to the FOUNDRY's judgment.
+This name must be human-understandable and suitable for presentation to a
+font user.
+The value \*Q0\*U is used to indicate a polymorphic font (see section \n(sP).
+.LP
+The interpretation of this field is somewhat problematic
+because the typographic judgment of weight has traditionally
+depended on the overall design of the typeface family in question;
+that is, it is possible that the DemiBold weight of one font could be
+almost equivalent in typographic feel to a Bold font from another family.
+.LP
+WEIGHT_NAME is captured as an arbitrary string
+because it is an important part of a font's complete human-understandable name.
+However, it should not be used for font matching or substitution.
+For this purpose,
+X client applications should use the weight-related font properties
+(RELATIVE_WEIGHT and WEIGHT) that give the coded relative weight
+and the calculated weight, respectively.
+.NH 4
+SLANT Field
+.XS
+\*(SN SLANT Field
+.XE
+.LP
+SLANT is a code-string that indicates the overall posture of the
+typeface design used in the font.
+The encoding is as follows:
+.TS H
+lw(.5i) lw(1.25i) lw(3.5i).
+_
+.sp 6p
+.B
+Code English Translation Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+\*QR\*U Roman Upright design
+\*QI\*U Italic T{
+Italic design, slanted clockwise from the vertical
+T}
+\*QO\*U Oblique T{
+Obliqued upright design, slanted clockwise from the vertical
+T}
+\*QRI\*U Reverse Italic T{
+Italic design, slanted counterclockwise from the vertical
+T}
+\*QRO\*U Reverse Oblique T{
+Obliqued upright design, slanted counterclockwise from the vertical
+T}
+\*QOT\*U Other Other
+numeric Polymorphic See section \n(sP on polymorphic font support.
+.sp 6p
+_
+.TE
+.LP
+The SLANT codes are for programming convenience only and usually are
+converted into their equivalent human-understandable form before being
+presented to a user.
+.NH 4
+SETWIDTH_NAME Field
+.XS
+\*(SN SETWIDTH_NAME Field
+.XE
+.LP
+SETWIDTH_NAME is a string that gives the font's typographic
+proportionate width, that is, the nominal width per horizontal unit of the
+font, according to the FOUNDRY's judgment.
+The value \*Q0\*U is used to indicate a polymorphic font (see section \n(sP).
+.LP
+As with WEIGHT_NAME, the interpretation of this field or font property is
+somewhat problematic, because the designer's judgment of setwidth has
+traditionally depended on the overall design of the typeface family in
+question.
+For purposes of font matching or substitution,
+X client applications should either use the RELATIVE_SETWIDTH font property
+that gives the relative coded proportionate width or calculate
+the proportionate width.
+.LP
+The following are examples of SETWIDTH_NAME:
+.IP \(bu 5
+Normal
+.IP \(bu 5
+Condensed
+.IP \(bu 5
+Narrow
+.IP \(bu 5
+Double Wide
+.NH 4
+ADD_STYLE_NAME Field
+.XS
+\*(SN ADD_STYLE_NAME Field
+.XE
+.LP
+ADD_STYLE_NAME is a string that identifies additional typographic
+style information that is not captured by other fields but is needed
+to identify the particular font.
+The character \*Q[\*U anywhere in the field is used to indicate a
+polymorphic font (see section \n(sP).
+.LP
+ADD_STYLE_NAME is not a typeface classification field
+and is only used for uniqueness.
+Its use, as such, is not limited to typographic style distinctions.
+.LP
+The following are examples of ADD_STYLE_NAME:
+.IP \(bu 5
+Serif
+.IP \(bu 5
+Sans Serif
+.IP \(bu 5
+Informal
+.IP \(bu 5
+Decorated
+.NH 4
+PIXEL_SIZE Field
+.XS
+\*(SN PIXEL_SIZE Field
+.XE
+.LP
+PIXEL_SIZE
+gives the body size of the font at a particular
+POINT_SIZE and RESOLUTION_Y.
+PIXEL_SIZE is either an integer-string or a string beginning
+with \*Q[\*U. A string beginning with \*Q[\*U represents a matrix
+(see section \n(sM).
+PIXEL_SIZE usually incorporates additional vertical spacing
+that is considered part of the font design.
+(Note, however, that this value is not necessarily equivalent to the height
+of the font bounding box.)
+Zero is used to indicate a scalable font (see section \n(sS).
+.LP
+PIXEL_SIZE usually is used by X client applications that need to
+query fonts according to device-dependent size,
+regardless of the point size or vertical resolution
+for which the font was designed.
+.NH 4
+POINT_SIZE Field
+.XS
+\*(SN POINT_SIZE Field
+.XE
+.LP
+POINT_SIZE gives the body size
+for which the font was designed.
+POINT_SIZE is either an integer-string or a string beginning
+with \*Q[\*U. A string beginning with \*Q[\*U represents a matrix
+(see section \n(sM).
+This field usually incorporates additional vertical spacing
+that is considered part of the font design.
+(Note, however, that POINT_SIZE is not necessarily equivalent to the height
+of the font bounding box.)
+POINT_SIZE is expressed in decipoints (where points are as defined
+in the X protocol or 72.27 points equal 1 inch).
+Zero is used to indicate a scalable font (see section \n(sS).
+.LP
+POINT_SIZE and RESOLUTION_Y are used by X clients to query fonts
+according to device-independent size to maintain constant text
+size on the display regardless of the PIXEL_SIZE used for the font.
+.NH 4
+RESOLUTION_X and RESOLUTION_Y Fields
+.XS
+\*(SN RESOLUTION_X and RESOLUTION_Y Fields
+.XE
+.LP
+RESOLUTION_X and RESOLUTION_Y are unsigned integer-strings that give
+the horizontal and vertical resolution,
+measured in pixels or dots per inch (dpi),
+for which the font was designed.
+Zero is used to indicate a scalable font (see section \n(sS).
+Horizontal and vertical values are required
+because a separate bitmap font must be designed
+for displays with very different aspect ratios
+(for example, 1:1, 4:3, 2:1, and so on).
+.LP
+The separation of pixel or point size and resolution is necessary
+because X allows for servers with very different video characteristics
+(for example, horizontal and vertical resolution, screen and pixel size,
+pixel shape, and so on) to potentially access the same font library.
+The font name, for example, must differentiate between a 14-point font designed
+for 75 dpi (body size of about 14 pixels) or a 14-point font designed
+for 150 dpi (body size of about 28 pixels).
+Further, in servers that implement some or all fonts as continuously scaled
+and scan-converted outlines,
+POINT_SIZE and RESOLUTION_Y will help the server to differentiate
+between potentially separate font masters for text, title,
+and display sizes or for other typographic considerations.
+.NH 4
+SPACING Field
+.XS
+\*(SN SPACING Field
+.XE
+.LP
+SPACING is a code-string that indicates the escapement class of the font,
+that is, monospace (fixed pitch), proportional (variable pitch),
+or charcell (a special monospaced font that conforms to the traditional
+data-processing character cell font model).
+The encoding is as follows:
+.ne 5
+.SM
+.TS H
+lw(.5i) lw(1.25i) lw(3.5i).
+_
+.sp 6p
+.B
+Code English Translation Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+\*QP\*U Proportional T{
+A font whose logical character widths vary for each glyph.
+Note that no other restrictions are placed on the metrics
+of a proportional font.
+T}
+\*QM\*U Monospaced T{
+A font whose logical character widths are constant
+(that is, every glyph in the font has the same logical width).
+No other restrictions are placed on the metrics of a monospaced font.
+T}
+\*QC\*U CharCell T{
+A monospaced font that follows the standard typewriter character cell model
+(that is, the glyphs of the font can be modeled by X clients as \*Qboxes\*U
+of the same width and height that are imaged side-by-side
+to form text strings or top-to-bottom to form text lines).
+By definition,
+all glyphs have the same logical character width,
+and no glyphs have \*Qink\*U outside of the character cell.
+There is no kerning (that is, on a per-character basis with positive metrics:
+0 <= left-bearing <= right-bearing <= width;
+with negative metrics: width <= left-bearing <= right-bearing <= zero).
+Also, the vertical extents of the font do not exceed the vertical spacing
+(that is, on a per-character basis:
+ascent <= font-ascent and descent <= font-descent).
+The cell height = font-descent + font-ascent, and the width = AVERAGE_WIDTH.
+T}
+.sp 6p
+_
+.TE
+.NL
+.NH 4
+AVERAGE_WIDTH Field
+.XS
+\*(SN AVERAGE_WIDTH Field
+.XE
+.LP
+AVERAGE_WIDTH is an integer-string typographic metric value
+that gives the unweighted arithmetic mean of the absolute value of the
+width of each glyph in the font
+(measured in tenths of pixels), multiplied by \-1 if the dominant
+writing direction for the font is right-to-left.
+A leading \*Q\^~\^\*U (TILDE) indicates a negative value.
+For monospaced and character cell fonts,
+this is the width of all glyphs in the font.
+Zero is used to indicate a scalable font (see section \n(sS).
+.NH 4
+CHARSET_REGISTRY and CHARSET_ENCODING Fields
+.XS
+\*(SN CHARSET_REGISTRY and CHARSET_ENCODING Fields
+.XE
+.LP
+The character set used to encode the glyphs of the font (and implicitly
+the font's glyph repertoire), as maintained by the X Consortium character
+set registry.
+CHARSET_REGISTRY is an x-registered-name that identifies
+the registration authority that owns the specified encoding.
+CHARSET_ENCODING is a registered name that identifies the coded character set
+as defined by that registration authority
+and, optionally, a subsetting hint.
+.LP
+Although the X protocol does not explicitly have any knowledge about
+character set encodings,
+it is expected that server implementors will prefer to embed knowledge
+of certain proprietary or standard charsets into their font library
+for reasons of performance and convenience.
+The CHARSET_REGISTRY and CHARSET_ENCODING fields or properties allow
+an X client font request to specify a specific charset mapping
+in server environments where multiple charsets are supported.
+The availability of any particular
+character set is font and server implementation dependent.
+.LP
+To prevent collisions when defining character set names,
+it is recommended that CHARSET_REGISTRY and CHARSET_ENCODING name pairs
+be constructed according to the following conventions:
+.IN "CHARSET Syntax"
+.SM
+.TS
+rw(1.5i) lw(3.75i).
+.sp 6p
+CharsetRegistry ::= T{
+StdCharsetRegistryName | PrivCharsetRegistryName
+T}
+CharsetEncoding ::= T{
+StdCharsetEncodingName | PrivCharsetEncodingName
+T}
+StdCharsetRegistryName ::= T{
+StdOrganizationId StdNumber | StdOrganizationId StdNumber Dot Year
+T}
+PrivCharsetRegistryName ::= OrganizationId STRING8
+StdCharsetEncodingName ::= T{
+STRING8\-numeric part number of referenced standard
+T}
+PrivCharsetEncodingName ::= STRING8
+StdOrganizationId ::= T{
+STRING8\-the registered name or acronym of the referenced standard organization
+T}
+StdNumber ::= STRING8\-referenced standard number
+OrganizationId ::= T{
+STRING8\-the registered name or acronym of the organization
+T}
+Dot ::= OCTET\-\*Q\^.\^\*U (FULL STOP)
+Year ::= STRING8\-numeric year (for example, 1989)
+.TE
+.NL
+.LP
+The X Consortium shall maintain and publish a registry
+of such character set names for use in X protocol font names and properties
+as specified in XLFD.
+.LP
+The ISO Latin-1 character set shall be registered by the X Consortium as the
+CHARSET_REGISTRY-CHARSET_ENCODING value pair: \*QISO8859-1\*U.
+.LP
+If the CHARSET_ENCODING contains a \*Q[\*U (LEFT SQUARE BRACKET),
+the \*Q[\*U and the characters after it up to a \*Q]\*U (RIGHT SQUARE
+BRACKET) are a
+subsetting hint telling the font source that the client is interested
+only in a subset of the characters of the font.
+The font source can, optionally, return a font that
+contains only those characters or any superset of those characters. The
+client can expect to obtain valid glyphs and metrics only for those
+characters, and not for any other characters in the font.
+The font properties may optionally be calculated by considering only
+the characters in the subset.
+.LP
+The BNF for the subsetting hint is
+.SM
+.TS
+rw(1.5i) l.
+Subset ::= LeftBracket RangeList RightBracket
+RangeList ::= Range | Range Space RangeList
+Range ::= Number | Number Underscore Number
+Number ::= \*Q0x\*U HexNumber | DecNumber
+HexNumber ::= HexDigit | HexDigit HexNumber
+DecNumber ::= DecDigit | DecDigit DecNumber
+DecDigit ::= \*Q0\*U | \*Q1\*U | \*Q2\*U | \*Q3\*U | \*Q4\*U | \*Q5\*U | \*Q6\*U | \*Q7\*U | \*Q8\*U | \*Q9\*U
+HexDigit ::= DecDigit | \*Qa\*U | \*Qb\*U | \*Qc\*U | \*Qd\*U | \*Qe\*U | \*Qf\*U
+LeftBracket ::= \*Q[\*U (LEFT SQUARE BRACKET)
+RightBracket ::= \*Q]\*U (RIGHT SQUARE BRACKET)
+Space ::= \*Q\0\*U (SPACE)
+Underscore ::= \*Q_\*U (LOW LINE)
+.TE
+.NL
+.LP
+Each Range specifies characters that are to be part of the subset
+included in the font.
+A Range containing two Numbers specifies the first and last character,
+inclusively, of a range of characters.
+A Range that is a single Number specifies a single character to be
+included in the font.
+A HexNumber is interpreted as a hexadecimal number.
+A DecNumber is interpreted as a decimal number.
+The font consists of the union of all the Ranges in the
+RangeList.
+.LP
+For example,
+.br
+.ft C
+.SM
+ -misc-fixed-medium-r-normal--0-0-0-0-c-0-iso8859-1[65 70 80_90]
+.NL
+.ft P
+.br
+tells the font source that the client is interested only in characters
+65, 70, and 80\-90.
+.NH 3
+Examples
+.XS
+\*(SN Examples
+.XE
+.LP
+The following examples of font names are derived from the screen fonts
+shipped with the X Consortium distribution.
+.\" why is this table so long? I took out some fonts in v1.5
+.\" to make the page breaks better.
+.SM
+.TS H
+lw(1.45i) lw(4.45i).
+_
+.sp 6p
+.B
+Font X FontName
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+\fB75-dpi Fonts\fP
+.sp 3p
+T{
+Charter 12 pt
+T} T{
+-Bitstream-Charter-Medium-R-Normal--12-120-75-75-P-68-ISO8859-1
+T}
+T{
+Charter Bold 12 pt
+T} T{
+-Bitstream-Charter-Bold-R-Normal--12-120-75-75-P-76-ISO8859-1
+T}
+T{
+Charter Bold Italic 12 pt
+T} T{
+-Bitstream-Charter-Bold-I-Normal--12-120-75-75-P-75-ISO8859-1
+T}
+T{
+Charter Italic 12 pt
+T} T{
+-Bitstream-Charter-Medium-I-Normal--12-120-75-75-P-66-ISO8859-1
+T}
+Courier 8 pt -Adobe-Courier-Medium-R-Normal--8-80-75-75-M-50-ISO8859-1
+Courier 10 pt -Adobe-Courier-Medium-R-Normal--10-100-75-75-M-60-ISO8859-1
+Courier 12 pt -Adobe-Courier-Medium-R-Normal--12-120-75-75-M-70-ISO8859-1
+Courier 24 pt -Adobe-Courier-Medium-R-Normal--24-240-75-75-M-150-ISO8859-1
+T{
+Courier Bold 10 pt
+T} T{
+-Adobe-Courier-Bold-R-Normal--10-100-75-75-M-60-ISO8859-1
+T}
+T{
+Courier Bold Oblique 10 pt
+T} T{
+-Adobe-Courier-Bold-O-Normal--10-100-75-75-M-60-ISO8859-1
+T}
+T{
+Courier Oblique 10 pt
+T} T{
+-Adobe-Courier-Medium-O-Normal--10-100-75-75-M-60-ISO8859-1
+T}
+.sp 3p
+.ne 2
+\fB100-dpi Fonts\fP
+.sp 3p
+T{
+Symbol 10 pt
+T} T{
+-Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FONTSPECIFIC
+T}
+T{
+Symbol 14 pt
+T} T{
+-Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FONTSPECIFIC
+T}
+T{
+Symbol 18 pt
+T} T{
+-Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FONTSPECIFIC
+T}
+T{
+Symbol 24 pt
+T} T{
+-Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FONTSPECIFIC
+T}
+T{
+Times Bold 10 pt
+T} T{
+-Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO8859-1
+T}
+T{
+Times Bold Italic 10 pt
+T} T{
+-Adobe-Times-Bold-I-Normal--14-100-100-100-P-77-ISO8859-1
+T}
+T{
+Times Italic 10 pt
+T} T{
+-Adobe-Times-Medium-I-Normal--14-100-100-100-P-73-ISO8859-1
+T}
+T{
+Times Roman 10 pt
+T} T{
+-Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO8859-1
+T}
+_
+.TE
+.NL
+.NH 2
+Font Properties
+.XS
+\*(SN Font Properties
+.XE
+.LP
+All font properties are optional but will generally include the
+font name fields and, on a font-by-font basis, any other useful font
+descriptive and use information that may be required to use the font
+intelligently.
+The XLFD specifies an extensive set of standard X font properties,
+their interpretation, and fallback rules when the property is not defined
+for a given font.
+The goal is to provide client applications with enough font information
+to be able to make automatic formatting and display decisions
+with good typographic results.
+.LP
+Font property names use the ISO 8859-1 encoding.
+.LP
+Additional standard X font property definitions may be defined in the
+future and private properties may exist in X fonts at any time.
+Private font properties should be defined to conform to the general mechanism
+defined in the X protocol to prevent overlap of name space and ambiguous
+property names, that is, private font property names are of the form:
+\*Q_\*U (LOW LINE),
+followed by the organizational identifier, followed by \*Q_\*U (LOW LINE),
+and terminated with the property name.
+.LP
+The Backus-Naur Form syntax description of X font properties is as follows:
+.IN "Font Properties" "BNF Syntax"
+.SM
+.TS
+rw(1.5i) lw(3.75i).
+.sp 6p
+Properties ::= OptFontPropList
+OptFontPropList ::= NULL | OptFontProp OptFontPropList
+OptFontProp ::= PrivateFontProp | XFontProp
+PrivateFontProp ::= T{
+STRING8 | Underscore OrganizationId Underscore STRING8
+T}
+XFontProp ::= T{
+FOUNDRY | FAMILY_NAME | WEIGHT_NAME | SLANT | SETWIDTH_NAME | ADD_STYLE_NAME
+| PIXEL_SIZE | POINT_SIZE | RESOLUTION_X | RESOLUTION_Y | SPACING |
+AVERAGE_WIDTH | CHARSET_REGISTRY | CHARSET_ENCODING | QUAD_WIDTH |
+RESOLUTION | MIN_SPACE | NORM_SPACE | MAX_SPACE | END_SPACE | SUPERSCRIPT_X |
+SUPERSCRIPT_Y | SUBSCRIPT_X | SUBSCRIPT_Y | UNDERLINE_POSITION |
+UNDERLINE_THICKNESS | STRIKEOUT_ASCENT | STRIKEOUT_DESCENT | ITALIC_ANGLE
+| X_HEIGHT | WEIGHT | FACE_NAME |
+FULL_NAME | FONT |
+COPYRIGHT | AVG_CAPITAL_WIDTH |
+AVG_LOWERCASE_WIDTH | RELATIVE_SETWIDTH | RELATIVE_WEIGHT | CAP_HEIGHT |
+SUPERSCRIPT_ SIZE | FIGURE_WIDTH | SUBSCRIPT_SIZE | SMALL_CAP_SIZE |
+NOTICE | DESTINATION
+| FONT_TYPE | FONT_VERSION | RASTERIZER_NAME | RASTERIZER_VERSION |
+RAW_ASCENT | RAW_DESCENT | RAW_* | AXIS_NAMES | AXIS_LIMITS |
+AXIS_TYPES
+T}
+Underscore ::= OCTET\-\*Q_\*U (LOW LINE)
+OrganizationId ::= T{
+STRING8\-the registered name of the organization
+T}
+.TE
+.NL
+.NH 3
+FOUNDRY
+.XS
+\*(SN FOUNDRY
+.XE
+.LP
+FOUNDRY is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+FOUNDRY cannot be calculated or defaulted if not supplied as a font property.
+.NH 3
+FAMILY_NAME
+.XS
+\*(SN FAMILY_NAME
+.XE
+.LP
+FAMILY_NAME is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+FAMILY_NAME cannot be calculated or defaulted if not supplied as a font
+property.
+.NH 3
+WEIGHT_NAME
+.XS
+\*(SN WEIGHT_NAME
+.XE
+.LP
+WEIGHT_NAME is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+WEIGHT_NAME can be defaulted if not supplied as a font property, as follows:
+.LP
+.DS
+if (WEIGHT_NAME undefined) then
+ WEIGHT_NAME = ATOM(\*QMedium\*U)
+.DE
+.NH 3
+SLANT
+.XS
+\*(SN SLANT
+.XE
+.LP
+SLANT is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+SLANT can be defaulted if not supplied as a font property, as follows:
+.LP
+.DS
+if (SLANT undefined) then
+ SLANT = ATOM(\*QR\*U)
+.DE
+.NH 3
+SETWIDTH_NAME
+.XS
+\*(SN SETWIDTH_NAME
+.XE
+.LP
+SETWIDTH_NAME is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+SETWIDTH_NAME can be defaulted if not supplied as a font property, as follows:
+.LP
+.DS
+if (SETWIDTH_NAME undefined) then
+ SETWIDTH_NAME = ATOM(\*QNormal\*U)
+.DE
+.NH 3
+ADD_STYLE_NAME
+.XS
+\*(SN ADD_STYLE_NAME
+.XE
+.LP
+ADD_STYLE_NAME is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+ADD_STYLE_NAME can be defaulted if not supplied as a font property, as follows:
+.LP
+.DS
+if (ADD_STYLE_NAME undefined) then
+ ADD_STYLE_NAME = ATOM(\*Q\*U)
+.DE
+.NH 3
+PIXEL_SIZE
+.XS
+\*(SN PIXEL_SIZE
+.XE
+.LP
+PIXEL_SIZE is as defined in the
+.PN FontName
+except that the property type is INT32.
+.LP
+X clients requiring pixel values for the various typographic fixed
+spaces (em space, en space, and thin space) can use the following
+algorithm for computing these values from other properties specified
+for a font:
+.LP
+.DS
+DeciPointsPerInch = 722.7
+EMspace = ROUND ((RESOLUTION_X * POINT_SIZE) / DeciPointsPerInch)
+ENspace = ROUND (EMspace / 2)
+THINspace = ROUND (EMspace / 3)\fP
+.DE
+.LP
+where a slash (\^/\^) denotes real division,
+an asterisk (\^*\^) denotes real multiplication,
+and ROUND denotes a function that rounds its real argument
+\fIa\fP up or down
+to the next integer.
+This rounding is done according to X = FLOOR (\fIa\fP + 0.5),
+where FLOOR is a function that rounds its real argument down to the
+nearest integer.
+.LP
+PIXEL_SIZE can be approximated if not supplied as a font property,
+according to the following algorithm:
+.LP
+.DS
+DeciPointsPerInch = 722.7
+if (PIXEL_SIZE undefined) then
+ PIXEL_SIZE = ROUND ((RESOLUTION_Y * POINT_SIZE) / DeciPointsPerInch)
+.DE
+.NH 3
+POINT_SIZE
+.XS
+\*(SN POINT_SIZE
+.XE
+.LP
+POINT_SIZE is as defined in the
+.PN FontName
+except that the property type is INT32.
+.LP
+X clients requiring device-independent values for em space,
+en space, and thin space can use the following algorithm:
+.LP
+.DS I
+EMspace = ROUND (POINT_SIZE / 10)
+ENspace = ROUND (POINT_SIZE / 20)
+THINspace = ROUND (POINT_SIZE / 30)
+.DE
+.LP
+Design POINT_SIZE cannot be calculated or approximated.
+.NH 3
+RESOLUTION_X
+.XS
+\*(SN RESOLUTION_X
+.XE
+.LP
+RESOLUTION_X is as defined in the
+.PN FontName
+except that the property type is CARD32.
+.LP
+RESOLUTION_X cannot be calculated or approximated.
+.NH 3
+RESOLUTION_Y
+.XS
+\*(SN RESOLUTION_Y
+.XE
+.LP
+RESOLUTION_Y is as defined in the
+.PN FontName
+except that the property type is CARD32.
+.LP
+RESOLUTION_X cannot be calculated or approximated.
+.NH 3
+SPACING
+.XS
+\*(SN SPACING
+.XE
+.LP
+SPACING is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+SPACING can be calculated if not supplied as a font property,
+according to the definitions given above for the
+.PN FontName .
+.NH 3
+AVERAGE_WIDTH
+.XS
+\*(SN AVERAGE_WIDTH
+.XE
+.LP
+AVERAGE_WIDTH is as defined in the
+.PN FontName
+except that the property type is INT32.
+.LP
+AVERAGE_WIDTH can be calculated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (AVERAGE_WIDTH undefined) then
+ AVERAGE_WIDTH = ROUND (MEAN (ABS (width of each glyph in font)) * 10)
+ * (if (dominant writing direction L-to-R) then 1 else \-1)
+.DE
+.LP
+where MEAN is a function that returns the arithmetic mean of its arguments.
+.LP
+X clients that require values for the number of characters per inch (pitch)
+of a monospaced font can use the following algorithm using the
+AVERAGE_WIDTH and RESOLUTION_X font properties:
+.LP
+.DS
+if (SPACING not proportional) then
+ CharPitch = (RESOLUTION_X * 10) / AVERAGE_WIDTH
+.DE
+.NH 3
+CHARSET_REGISTRY
+.XS
+\*(SN CHARSET_REGISTRY
+.XE
+.LP
+CHARSET_REGISTRY is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+CHARSET_REGISTRY cannot be defaulted if not supplied as a font property.
+.NH 3
+CHARSET_ENCODING
+.XS
+\*(SN CHARSET_ENCODING
+.XE
+.LP
+CHARSET_ENCODING is as defined in the
+.PN FontName
+except that the property type is ATOM.
+.LP
+CHARSET_ENCODING cannot be defaulted if not supplied as a font property.
+.NH 3
+MIN_SPACE
+.XS
+\*(SN MIN_SPACE
+.XE
+.LP
+MIN_SPACE is an integer value (of type INT32)
+that gives the recommended minimum word-space value to be used with this font.
+.LP
+MIN_SPACE can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS I
+if (MIN_SPACE undefined) then
+ MIN_SPACE = ROUND(0.75 * NORM_SPACE)
+.DE
+.NH 3
+NORM_SPACE
+.XS
+\*(SN NORM_SPACE
+.XE
+.LP
+NORM_SPACE is an integer value (of type INT32)
+that gives the recommended normal word-space value to be used with this font.
+.LP
+NORM_SPACE can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS 0
+DeciPointsPerInch = 722.7
+if (NORM_SPACE undefined) then
+ if (SPACE glyph exists) then
+ NORM_SPACE = width of SPACE
+ else NORM_SPACE = ROUND((0.33 * RESOLUTION_X * POINT_SIZE)/ DeciPointsPerInch)
+.DE
+.NH 3
+MAX_SPACE
+.XS
+\*(SN MAX_SPACE
+.XE
+.LP
+MAX_SPACE is an integer value (of type INT32)
+that gives the recommended maximum word-space value to be used with this font.
+.LP
+MAX_SPACE can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (MAX_SPACE undefined) then
+ MAX_SPACE = ROUND(1.5 * NORM_SPACE)
+.DE
+.NH 3
+END_SPACE
+.XS
+\*(SN END_SPACE
+.XE
+.LP
+END_SPACE is an integer value (of type INT32)
+that gives the recommended spacing at the end of sentences.
+.LP
+END_SPACE can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (END_SPACE undefined) then
+ END_SPACE = NORM_SPACE
+.DE
+.NH 3
+AVG_CAPITAL_WIDTH
+.XS
+\*(SN AVG_CAPITAL_WIDTH
+.XE
+.LP
+AVG_CAPITAL_WIDTH is an integer value (of type INT32)
+that gives the unweighted arithmetic mean of the absolute value of the
+width of each capital glyph in the font, in tenths of pixels,
+multiplied by \-1 if the dominant
+writing direction for the font is right-to-left.
+This property applies to both Latin and non-Latin fonts.
+For Latin fonts,
+capitals are the glyphs A through Z.
+This property is usually used for font matching or substitution.
+.LP
+AVG_CAPITAL_WIDTH can be calculated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS I
+if (AVG_CAPITAL_WIDTH undefined) then
+ if (capitals exist) then
+ AVG_CAPITAL_WIDTH = ROUND (MEAN
+ (ABS (width of each capital glyph)) * 10)
+ * (if (dominant writing direction L-to-R) then 1 else \-1)
+ else AVG_CAPITAL_WIDTH undefined
+.DE
+.NH 3
+AVG_LOWERCASE_WIDTH
+.XS
+\*(SN AVG_LOWERCASE_WIDTH
+.XE
+.LP
+AVG_LOWERCASE_WIDTH is an integer value (of type INT32)
+that gives the unweighted arithmetic mean width of the absolute value
+of the width of each lowercase glyph in the font in tenths of pixels,
+multiplied by \-1 if the dominant
+writing direction for the font is right-to-left.
+For Latin fonts,
+lowercase are the glyphs a through z.
+This property is usually used for font matching or substitution.
+.LP
+Where appropriate,
+AVG_LOWERCASE_WIDTH can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (AVG_LOWERCASE_WIDTH undefined) then
+ if (lowercase exists) then
+ AVG_LOWERCASE_WIDTH = ROUND (MEAN
+ (ABS (width of each lowercase glyph)) * 10)
+ * (if (dominant writing direction L-to-R) then 1 else \-1)
+ else AVG_LOWERCASE_WIDTH undefined
+.DE
+.NH 3
+QUAD_WIDTH
+.XS
+\*(SN QUAD_WIDTH
+.XE
+.LP
+QUAD_WIDTH is an integer typographic metric (of type INT32)
+that gives the width of a quad (em) space.
+.NT Note
+Because all typographic fixed spaces (em, en, and thin) are constant
+for a given font size (that is, they do not vary according to setwidth),
+the use of this font property has been deprecated.
+X clients that require typographic fixed space values are encouraged
+to discontinue use of QUAD_WIDTH and compute these values
+from other font properties (for example, PIXEL_SIZE).
+X clients that require a font-dependent width value should use either
+the FIGURE_WIDTH or one of the average character width font properties
+(AVERAGE_WIDTH, AVG_CAPITAL_WIDTH or AVG_LOWERCASE_WIDTH).
+.NE
+.NH 3
+FIGURE_WIDTH
+.XS
+\*(SN FIGURE_WIDTH
+.XE
+.LP
+FIGURE_WIDTH is an integer typographic metric (of type INT32)
+that gives the width of the tabular figures and the dollar sign,
+if suitable for tabular setting (all widths equal).
+For Latin fonts, these tabular figures are the Arabic numerals 0 through 9.
+.LP
+FIGURE_WIDTH can be approximated if not supplied as a font property,
+according to the following algorithm:
+.LP
+.DS I
+if (numerals and DOLLAR sign are defined & widths are equal) then
+ FIGURE_WIDTH = width of DOLLAR
+else FIGURE_WIDTH property undefined
+.DE
+.NH 3
+SUPERSCRIPT_X
+.XS
+\*(SN SUPERSCRIPT_X
+.XE
+.LP
+SUPERSCRIPT_X is an integer value (of type INT32)
+that gives the recommended horizontal offset in pixels
+from the position point to the X origin of synthetic superscript text.
+If the current position point is at [X,Y],
+then superscripts should begin at [X + SUPERSCRIPT_X, Y \- SUPERSCRIPT_Y].
+.LP
+SUPERSCRIPT_X can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (SUPERSCRIPT_X undefined) then
+ if (TANGENT(ITALIC_ANGLE) defined) then
+ SUPERSCRIPT_X = ROUND((0.40 * CAP_HEIGHT) / TANGENT(ITALIC_ANGLE))
+ else SUPERSCRIPT_X = ROUND(0.40 * CAP_HEIGHT)
+.DE
+.LP
+where TANGENT is a trigonometric function that returns the tangent of
+its argument, which is in 1/64 degrees.
+.NH 3
+SUPERSCRIPT_Y
+.XS
+\*(SN SUPERSCRIPT_Y
+.XE
+.LP
+SUPERSCRIPT_Y is an integer value (of type INT32)
+that gives the recommended vertical offset in pixels
+from the position point to the Y origin of synthetic superscript text.
+If the current position point is at [X,Y],
+then superscripts should begin at [X + SUPERSCRIPT_X, Y \- SUPERSCRIPT_Y].
+.LP
+SUPERSCRIPT_Y can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (SUPERSCRIPT_Y undefined) then
+ SUPERSCRIPT_Y = ROUND(0.40 * CAP_HEIGHT)
+.DE
+.NH 3
+SUBSCRIPT_X
+.XS
+\*(SN SUBSCRIPT_X
+.XE
+.LP
+SUBSCRIPT_X is an integer value (of type INT32)
+that gives the recommended horizontal offset in pixels
+from the position point to the X origin of synthetic subscript text.
+If the current position point is at [X,Y],
+then subscripts should begin at [X + SUBSCRIPT_X, Y + SUBSCRIPT_Y].
+.LP
+SUBSCRIPT_X can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (SUBSCRIPT_X undefined) then
+ if (TANGENT(ITALIC_ANGLE) defined) then
+ SUBSCRIPT_X = ROUND((0.40 * CAP_HEIGHT) / TANGENT(ITALIC_ANGLE))
+ else SUBSCRIPT_X = ROUND(0.40 * CAP_HEIGHT)
+.DE
+.NH 3
+SUBSCRIPT_Y
+.XS
+\*(SN SUBSCRIPT_Y
+.XE
+.LP
+SUBSCRIPT_Y is an integer value (of type INT32)
+that gives the recommended vertical offset in pixels
+from the position point to the Y origin of synthetic subscript text.
+If the current position point is at [X,Y],
+then subscripts should begin at [X + SUBSCRIPT_X, Y + SUBSCRIPT_Y].
+.LP
+SUBSCRIPT_Y can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (SUBSCRIPT_Y undefined) then
+ SUBSCRIPT_Y = ROUND(0.40 * CAP_HEIGHT)
+.DE
+.NH 3
+SUPERSCRIPT_SIZE
+.XS
+\*(SN SUPERSCRIPT_SIZE
+.XE
+.LP
+SUPERSCRIPT_SIZE is an integer value (of type INT32)
+that gives the recommended body size of synthetic superscripts
+to be used with this font, in pixels.
+This will generally be smaller than the size of the current font;
+that is, superscripts are imaged from a smaller font
+offset according to SUPERSCRIPT_X and SUPERSCRIPT_Y.
+.LP
+SUPERSCRIPT_SIZE can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (SUPERSCRIPT_SIZE undefined) then
+ SUPERSCRIPT_SIZE = ROUND(0.60 * PIXEL_SIZE)
+.DE
+.NH 3
+SUBSCRIPT_SIZE
+.XS
+\*(SN SUBSCRIPT_SIZE
+.XE
+.LP
+SUBSCRIPT_SIZE is an integer value (of type INT32)
+that gives the recommended body size of synthetic subscripts
+to be used with this font, in pixels.
+As with SUPERSCRIPT_SIZE,
+this will generally be smaller than the size of the current font;
+that is, subscripts are imaged from a smaller
+font offset according to SUBSCRIPT_X and SUBSCRIPT_Y.
+.LP
+SUBSCRIPT_SIZE can be approximated if not provided as a font property,
+according to the algorithm:
+.LP
+.DS
+if (SUBSCRIPT_SIZE undefined) then
+ SUBSCRIPT_SIZE = ROUND(0.60 * PIXEL_SIZE)
+.DE
+.NH 3
+SMALL_CAP_SIZE
+.XS
+\*(SN SMALL_CAP_SIZE
+.XE
+.LP
+SMALL_CAP_SIZE is an integer value (of type INT32)
+that gives the recommended body size of synthetic small capitals
+to be used with this font, in pixels.
+Small capitals are generally imaged from a smaller font
+of slightly more weight.
+No offset [X,Y] is necessary.
+.LP
+SMALL_CAP_SIZE can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (SMALL_CAP_SIZE undefined) then
+ SMALL_CAP_SIZE = ROUND(PIXEL_SIZE * ((X_HEIGHT
+ + ((CAP_HEIGHT \- X_HEIGHT) / 3)) / CAP_HEIGHT))
+.DE
+.NH 3
+UNDERLINE_POSITION
+.XS
+\*(SN UNDERLINE_POSITION
+.XE
+.LP
+UNDERLINE_POSITION is an integer value (of type INT32)
+that gives the recommended vertical offset in pixels
+from the baseline to the top of the underline.
+If the current position point is at [X,Y],
+the top of the baseline is given by [X, Y + UNDERLINE_POSITION].
+.LP
+UNDERLINE_POSITION can be approximated if not provided as a font
+property, according to the following algorithm:
+.LP
+.DS
+if (UNDERLINE_POSITION undefined) then
+ UNDERLINE_POSITION = ROUND((maximum descent) / 2)
+.DE
+where \fImaximum descent\fP is the maximum descent (below the baseline)
+in pixels of any glyph in the font.
+.NH 3
+UNDERLINE_THICKNESS
+.XS
+\*(SN UNDERLINE_THICKNESS
+.XE
+.LP
+UNDERLINE_THICKNESS is an integer value (of type INT32)
+that gives the recommended underline thickness, in pixels.
+.LP
+UNDERLINE_THICKNESS can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+CapStemWidth = average width of the stems of capitals
+if (UNDERLINE_THICKNESS undefined) then
+ UNDERLINE_THICKNESS = CapStemWidth
+.DE
+.NH 3
+STRIKEOUT_ASCENT
+.XS
+\*(SN STRIKEOUT_ASCENT
+.XE
+.LP
+STRIKEOUT_ASCENT is an integer value (of type INT32)
+that gives the vertical ascent for boxing or voiding glyphs in this font.
+If the current position is at [X,Y] and the string extent is EXTENT,
+the upper-left corner of the strikeout box is at [X, Y \- STRIKEOUT_ASCENT]
+and the lower-right corner of the box is at [X + EXTENT, Y + STRIKEOUT_DESCENT].
+.LP
+STRIKEOUT_ASCENT can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (STRIKEOUT_ASCENT undefined)
+ STRIKEOUT_ASCENT = maximum ascent
+.DE
+where \fImaximum ascent\fP is the maximum ascent (above the baseline)
+in pixels of any glyph in the font.
+.NH 3
+STRIKEOUT_DESCENT
+.XS
+\*(SN STRIKEOUT_DESCENT
+.XE
+.LP
+STRIKEOUT_DESCENT is an integer value (of type INT32)
+that gives the vertical descent for boxing or voiding glyphs in this font.
+If the current position is at [X,Y] and the string extent is EXTENT,
+the upper-left corner of the strikeout box is at [X, Y \- STRIKEOUT_ASCENT]
+and the lower-right corner of the box is at [X + EXTENT, Y + STRIKEOUT_DESCENT].
+.LP
+STRIKEOUT_DESCENT can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (STRIKEOUT_DESCENT undefined)
+ STRIKEOUT_DESCENT = maximum descent
+.DE
+where \fImaximum descent\fP is the maximum descent (below the baseline)
+in pixels of any glyph in the font.
+.NH 3
+ITALIC_ANGLE
+.XS
+\*(SN ITALIC_ANGLE
+.XE
+.LP
+ITALIC_ANGLE is an integer value (of type INT32)
+that gives the nominal posture angle of the typeface design, in 1/64 degrees,
+measured from the glyph origin counterclockwise from the three o'clock position.
+.LP
+ITALIC_ANGLE can be defaulted if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (ITALIC_ANGLE undefined) then
+ ITALIC_ANGLE = (90 * 64)
+.DE
+.NH 3
+CAP_HEIGHT
+.XS
+\*(SN CAP_HEIGHT
+.XE
+.LP
+CAP_HEIGHT is an integer value (of type INT32)
+that gives the nominal height of the capital letters contained in the font,
+as specified by the FOUNDRY or typeface designer.
+.LP
+Certain clients require CAP_HEIGHT to compute scale factors and
+positioning offsets for synthesized glyphs where this
+information or designed glyphs are not explicitly provided by the font
+(for example, small capitals, superiors, inferiors, and so on).
+CAP_HEIGHT is also a critical factor in font matching and substitution.
+.LP
+CAP_HEIGHT can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (CAP_HEIGHT undefined) then
+ if (Latin font) then
+ CAP_HEIGHT = XCharStruct.ascent[glyph X]
+ else if (capitals exist) then
+ CAP_HEIGHT = XCharStruct.ascent[some unaccented capital glyph]
+ else CAP_HEIGHT undefined
+.DE
+.NH 3
+X_HEIGHT
+.XS
+\*(SN X_HEIGHT
+.XE
+.LP
+X_HEIGHT is an integer value (of type INT32)
+that gives the nominal height above the baseline of the lowercase glyphs
+contained in the font,
+as specified by the FOUNDRY or typeface designer.
+.LP
+As with CAP_HEIGHT,
+X_HEIGHT is required by certain clients to compute scale factors
+for synthesized small capitals where this information is not explicitly
+provided by the font resource.
+X_HEIGHT is a critical factor in font matching and substitution.
+.LP
+X_HEIGHT can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS I
+if (X_HEIGHT undefined) then
+ if (Latin font) then
+ X_HEIGHT = XCharStruct.ascent[glyph x]
+ else if (lowercase exists) then
+ X_HEIGHT = XCharStruct.ascent[some unaccented lc glyph without an ascender]
+ else X_HEIGHT undefined
+.DE
+.NH 3
+RELATIVE_SETWIDTH
+.XS
+\*(SN RELATIVE_SETWIDTH
+.XE
+.LP
+RELATIVE_SETWIDTH is an unsigned integer value (of type CARD32)
+that gives the coded proportionate width of the font,
+relative to all known fonts of the same typeface family,
+according to the type designer's or FOUNDRY's judgment.
+.LP
+RELATIVE_SETWIDTH ranges from 10 to 90 or is 0 if undefined or unknown.
+The following reference values are defined:
+.TS H
+lw(.5i) lw(1i) lw(2.75i).
+_
+.sp 6p
+.B
+Code English Translation Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+0 Undefined Undefined or unknown
+10 UltraCondensed The lowest ratio of average width to height
+20 ExtraCondensed
+30 Condensed Condensed, Narrow, Compressed, ...
+40 SemiCondensed
+50 Medium Medium, Normal, Regular, ...
+60 SemiExpanded SemiExpanded, DemiExpanded, ...
+70 Expanded
+80 ExtraExpanded ExtraExpanded, Wide, ...
+90 UltraExpanded The highest ratio of average width to height
+.sp 6p
+_
+.TE
+.LP
+RELATIVE_SETWIDTH can be defaulted if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (RELATIVE_SETWIDTH undefined) then
+ RELATIVE_SETWIDTH = 50
+.DE
+.LP
+For polymorphic fonts, RELATIVE_SETWIDTH is not necessarily a
+linear function of the font's setwidth axis.
+.LP
+X clients that want to obtain a calculated proportionate width of the
+font (that is, a font-independent way of identifying the proportionate
+width across all fonts and all font vendors) can use the following algorithm:
+.LP
+.DS
+SETWIDTH = AVG_CAPITAL_WIDTH / (CAP_HEIGHT * 10)
+.DE
+.LP
+where SETWIDTH is a real number with zero being the narrowest
+calculated setwidth.
+.NH 3
+RELATIVE_WEIGHT
+.XS
+\*(SN RELATIVE_WEIGHT
+.XE
+.LP
+RELATIVE_WEIGHT is an unsigned integer value (of type CARD32)
+that gives the coded weight of the font,
+relative to all known fonts of the same typeface family,
+according to the type designer's or FOUNDRY's judgment.
+.LP
+RELATIVE_WEIGHT ranges from 10 to 90 or is 0 if undefined or unknown.
+The following reference values are defined:
+.TS H
+lw(.5i) lw(1i) lw(3.75i).
+_
+.sp 6p
+.B
+Code English Translation Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+0 Undefined Undefined or unknown
+10 UltraLight The lowest ratio of stem width to height
+20 ExtraLight
+30 Light
+40 SemiLight SemiLight, Book, ...
+50 Medium Medium, Normal, Regular,...
+60 SemiBold SemiBold, DemiBold, ...
+70 Bold
+80 ExtraBold ExtraBold, Heavy, ...
+90 UltraBold T{
+UltraBold, Black, ..., the highest ratio of stem width to height
+T}
+.sp 6p
+_
+.TE
+.LP
+RELATIVE_WEIGHT can be defaulted if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (RELATIVE_WEIGHT undefined) then
+ RELATIVE_WEIGHT = 50
+.DE
+.LP
+For polymorphic fonts, RELATIVE_WEIGHT is not necessarily a
+linear function of the font's weight axis.
+.NH 3
+WEIGHT
+.XS
+\*(SN WEIGHT
+.XE
+.LP
+Calculated WEIGHT is an unsigned integer value (of type CARD32)
+that gives the calculated weight of the font,
+computed as the ratio of capital stem width to CAP_HEIGHT,
+in the range 0 to 1000, where 0 is the lightest weight.
+.LP
+WEIGHT can be calculated if not supplied as a font property,
+according to the following algorithm:
+.LP
+.DS
+CapStemWidth = average width of the stems of capitals
+if (WEIGHT undefined) then
+ WEIGHT = ROUND ((CapStemWidth * 1000) / CAP_HEIGHT)
+.DE
+.LP
+A calculated value for weight is necessary when matching fonts from
+different families because both the RELATIVE_WEIGHT and the WEIGHT_NAME are
+assigned by the typeface supplier, according to its tradition and practice,
+and therefore, are somewhat subjective.
+Calculated WEIGHT provides a font-independent way of identifying
+the weight across all fonts and all font vendors.
+.NH 3
+RESOLUTION
+.XS
+\*(SN RESOLUTION
+.XE
+.LP
+RESOLUTION is an integer value (of type INT32)
+that gives the resolution for which this font was created,
+measured in 1/100 pixels per point.
+.NT Note
+As independent horizontal and vertical design resolution components
+are required to accommodate displays with nonsquare aspect ratios,
+the use of this font property has been deprecated,
+and independent RESOLUTION_X and RESOLUTION_Y font name fields/properties
+have been defined (see sections 3.1.2.9 and 3.1.2.10).
+X clients are encouraged to discontinue use of the RESOLUTION property
+and are encouraged to use the appropriate X,Y resolution properties,
+as required.
+.NE \" Note End
+.NH 3
+FONT
+.XS
+\*(SN FONT
+.XE
+.LP
+FONT is a string (of type ATOM) that gives the full XLFD name of the
+font\*-that is, the value can be used to open another
+instance of the same font.
+.LP
+If not provided, the FONT property cannot be calculated.
+.NH 3
+FACE_NAME
+.XS
+\*(SN FACE_NAME
+.XE
+.LP
+FACE_NAME is a human-understandable string (of type ATOM)
+that gives the full device-independent typeface name,
+including the owner, weight, slant, set, and so on
+but not the resolution, size, and so on.
+This property may be used as feedback during font selection.
+.LP
+FACE_NAME cannot be calculated or approximated if not provided as a font
+property.
+.NH 3
+FULL_NAME
+.XS
+\*(SN FULL_NAME
+.XE
+.LP
+FULL_NAME is the same as FACE_NAME.
+Its use is deprecated, but it is found on some old fonts.
+.NH 3
+COPYRIGHT
+.XS
+\*(SN COPYRIGHT
+.XE
+.LP
+COPYRIGHT is a human-understandable string (of type ATOM)
+that gives the copyright information of the legal owner
+of the digital font data.
+.LP
+This information is a required component of a font
+but is independent of the particular format used to represent it
+(that is, it cannot be captured as a comment that could later
+be thrown away for efficiency reasons).
+.LP
+COPYRIGHT cannot be calculated or approximated if not provided as a font
+property.
+.NH 3
+NOTICE
+.XS
+\*(SN NOTICE
+.XE
+.LP
+NOTICE is a human-understandable string (of type ATOM)
+that gives the copyright information of the legal owner of the font design
+or, if not applicable, the trademark information for the typeface FAMILY_NAME.
+.LP
+Typeface design and trademark protection laws vary from country to country,
+the USA having no design copyright protection currently
+while various countries in Europe offer both design and typeface family name
+trademark protection.
+As with COPYRIGHT,
+this information is a required component of a font
+but is independent of the particular format used to represent it.
+.LP
+NOTICE cannot be calculated or approximated if not provided as a font property.
+.NH 3
+DESTINATION
+.XS
+\*(SN DESTINATION
+.XE
+.LP
+DESTINATION is an unsigned integer code (of type CARD32)
+that gives the font design destination,
+that is, whether it was designed as a screen proofing font to match
+printer font glyph widths (WYSIWYG), as an optimal video font (possibly with
+corresponding printer font) for extended screen viewing (video text), and so on.
+.LP
+The font design considerations are very different,
+and at current display resolutions,
+the readability and legibility of these two kinds of screen fonts
+are very different.
+DESTINATION allows publishing clients that use X to model the printed page
+and video text clients, such as on-line documentation browsers,
+to query for X screen fonts that suit their particular requirements.
+.LP
+The encoding is as follows:
+.TS H
+lw(.5i) lw(1i) lw(3.75i).
+_
+.sp 6p
+.B
+Code English Translation Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+0 WYSIWYG T{
+The font is optimized to match the typographic design and metrics of an
+equivalent printer font.
+T}
+1 Video text T{
+The font is optimized for screen legibility and readability.
+T}
+.sp 6p
+_
+.TE
+
+.NH 3
+FONT_TYPE
+.XS
+\*(SN FONT_TYPE
+.XE
+.LP
+FONT_TYPE is a human-understandable string (of type ATOM) that
+describes the format of
+the font data as they are read from permanent storage by the current font source.
+It is a static attribute of the source data. It can be used
+by clients to select a type of bitmap or outline font
+without regard to the rasterizer used to render the font.
+.LP
+Predefined values are as follows:
+.TS H
+l lw(5i).
+_
+.sp 6p
+.B
+Value When applicable
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+\*QBitmap\*U T{
+Hand-tuned bitmap fonts. Some
+attempt has been made to optimize
+the visual appearance of the font
+for the requested size and
+resolution.
+T}
+\*QPrebuilt\*U T{
+All bitmap format fonts that
+cannot be described as \*QBitmap\*U,
+that is, hand-tuned. For example,
+a bitmap format font that was
+generated mechanically using a
+scalable font rasterizer
+would be considered \*QPrebuilt\*U, not \*QBitmap\*U.
+T}
+\*QType 1\*U Any Type 1 font.
+\*QTrueType\*U Any TrueType font.
+\*QSpeedo\*U Any Speedo font.
+\*QF3\*U Any F3 font.
+.sp 6p
+_
+.TE
+.LP
+Other values may be registered with the X Consortium.
+.NH 3
+FONT_VERSION
+.XS
+\*(SN FONT_VERSION
+.XE
+.LP
+FONT_VERSION is a human-understandable string (of type ATOM)
+that describes the formal or informal version of the font.
+\fBNone\fP is a valid value.
+.NH 3
+RASTERIZER_NAME
+.XS
+\*(SN RASTERIZER_NAME
+.XE
+.LP
+RASTERIZER_NAME is a human-understandable string (of type ATOM)
+that is the specific name of the
+rasterizer that has performed some rasterization operation
+(such as scaling from outlines) on this font.
+.LP
+To define a RASTERIZER_NAME, the following format is
+recommended:
+.SM
+.TS
+rw(1.5i) lw(3.75i).
+RasterizerName ::= OrganizationId Space Rasterizer
+OrganizationId ::= T{
+STRING8\*-the X Registry ORGANIZATION name
+of the rasterizer implementor or maintainer.
+T}
+Rasterizer ::= T{
+the case-sensitive, human-understandable product name
+of the rasterizer. Words within this
+name should be separated by a single SPACE.
+T}
+Space ::= OCTET\-\*Q\0\*U (SPACE)
+.TE
+.NL
+.LP
+Examples:
+.nf
+ X Consortium Bit Scaler
+ X Consortium Type 1 Rasterizer
+ X Consortium Speedo Rasterizer
+ Adobe Type Manager
+ Sun TypeScaler
+.fi
+.LP
+If RASTERIZER_NAME is not defined, or is \fBNone\fP, no
+rasterization operation has been applied to the FONT_TYPE.
+.NH 3
+RASTERIZER_VERSION
+.XS
+\*(SN RASTERIZER_VERSION
+.XE
+.LP
+RASTERIZER_VERSION is a human-understandable string (of type
+ATOM) that represents the formal or informal version of a
+font rasterizer.
+The RASTERIZER_VERSION should match the corresponding
+product version number known to users, when applicable.
+.NH 3
+RAW_ASCENT
+.XS
+\*(SN RAW_ASCENT
+.XE
+.LP
+For a font with a transformation matrix, RAW_ASCENT is the font ascent
+in 1000 pixel metrics
+(see section \n(sM.1).
+.NH 3
+RAW_DESCENT
+.XS
+\*(SN RAW_DESCENT
+.XE
+.LP
+For a font with a transformation matrix, RAW_DESCENT is the font
+descent in 1000 pixel metrics
+(see section \n(sM.1).
+.NH 3
+RAW_*
+.XS
+\*(SN RAW_*
+.XE
+.LP
+For a font with a transformation matrix,
+all font properties that represent horizontal or vertical sizes or
+displacements will be accompanied by a new property, named as the
+original except prefixed with \*QRAW_\*U, that is computed as
+described in section \n(sM.1.
+.NH 3
+AXIS_NAMES
+.XS
+\*(SN AXIS_NAMES
+.XE
+.LP
+AXIS_NAMES is a list of all the
+names of the axes for a polymorphic font, separated by a null (0) byte.
+These names are suitable for presentation in a user interface
+(see section \n(sP).
+.NH 3
+AXIS_LIMITS
+.XS
+\*(SN AXIS_LIMITS
+.XE
+.LP
+AXIS_LIMITS is a list of integers, two for each axis,
+giving the minimum and maximum allowable values for that axis of a
+polymorphic font
+(see section \n(sP).
+.NH 3
+AXIS_TYPES
+.XS
+\*(SN AXIS_TYPES
+.XE
+.LP
+AXIS_TYPES is like AXIS_NAMES,
+but can be registered as having specific semantics
+(see section \n(sP).
+.NH 2
+Built-in Font Property Atoms
+.XS
+\*(SN Built-in Font Property Atoms
+.XE
+.LP
+The following font property atom definitions were predefined in the initial
+version of the core protocol:
+.TS H
+l l.
+_
+.sp 6p
+.B
+Font Property/Atom Name Property Type
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+MIN_SPACE INT32
+NORM_SPACE INT32
+MAX_SPACE INT32
+END_SPACE INT32
+SUPERSCRIPT_X INT32
+SUPERSCRIPT_Y INT32
+SUBSCRIPT_X INT32
+SUBSCRIPT_Y INT32
+UNDERLINE_POSITION INT32
+UNDERLINE_THICKNESS INT32
+STRIKEOUT_ASCENT INT32
+STRIKEOUT_DESCENT INT32
+FONT_ASCENT INT32
+FONT_DESCENT INT32
+ITALIC_ANGLE INT32
+X_HEIGHT INT32
+QUAD_WIDTH INT32 \- deprecated
+WEIGHT CARD32
+POINT_SIZE INT32
+RESOLUTION CARD32 \- deprecated
+COPYRIGHT ATOM
+FULL_NAME ATOM \- deprecated
+FAMILY_NAME ATOM
+DEFAULT_CHAR CARD32
+.sp 6p
+_
+.TE
+.br
+.\" section \n(sM
+.NH 1
+Matrix Transformations
+.XS
+\*(SN Matrix Transformations
+.XE
+.LP
+An XLFD name presented to the server can have the POINT_SIZE or PIXEL_SIZE
+field begin with the character \*Q[\*U. If the first character of the field
+is \*Q[\*U, the character must be followed with ASCII representations of
+four floating point numbers and a trailing \*Q]\*U, with white space
+separating the numbers and optional white space separating the numbers
+from the \*Q[\*U and \*Q]\*U characters. Numbers use standard floating point
+syntax but use the character \*Q\^~\^\*U to represent a minus sign in the mantissa
+or exponent.
+.LP
+The BNF for a matrix transformation string is as follows:
+.SM
+.TS
+rw(1.5i) l.
+MatrixString ::= T{
+LeftBracket OptionalSpace Float Space Float Space
+Float Space Float OptionalSpace RightBracket
+T}
+OptionalSpace ::= \*Q\*U | Space
+Space ::= SpaceChar | SpaceChar Space
+Float ::= Mantissa | Mantissa Exponent
+Mantissa ::= Sign Number | Number
+Sign ::= Plus | Tilde
+Number ::= Integer | Integer Dot Integer | Dot Integer
+Integer ::= Digit | Digit Integer
+Digit ::= \*Q0\*U | \*Q1\*U | \*Q2\*U | \*Q3\*U | \*Q4\*U | \*Q5\*U | \*Q6\*U | \*Q7\*U | \*Q8\*U | \*Q9\*U
+Exponent ::= \*Qe\*U SignedInteger | \*QE\*U SignedInteger
+SignedInteger ::= Sign Integer | Integer
+LeftBracket ::= OCTET \- \*Q[\*U (LEFT SQUARE BRACKET)
+RightBracket ::= OCTET \- \*Q]\*U (RIGHT SQUARE BRACKET)
+SpaceChar ::= OCTET \- \*Q\0\*U (SPACE)
+Tilde ::= OCTET \- \*Q\^~\^\*U (TILDE)
+Plus ::= OCTET \- \*Q+\*U (PLUS)
+Dot ::= OCTET \- \*Q\^.\^\*U (FULL STOP)
+.TE
+.NL
+.LP
+The string \*Q[a b c d]\*U represents a graphical transformation of the glyphs
+in the font by the matrix
+.TS
+c c c c c.
+[ a b 0 ]
+[ c d 0 ]
+[ 0 0 1 ]
+.TE
+.LP
+All transformations occur around the origin of the glyph. The
+relationship between the current scalar values and the matrix
+transformation values is that the scalar value \*QN\*U in the POINT_SIZE field
+produces the same glyphs as the matrix \*Q[N/10 0 0 N/10]\*U in that field,
+and the scalar value \*QN\*U in the PIXEL_SIZE field produces the same glyphs
+as the matrix \*Q[N*RESOLUTION_X/RESOLUTION_Y 0 0 N]\*U in that field.
+.LP
+If matrices are specified for both the POINT_SIZE and PIXEL_SIZE, they
+must bear the following relationship to each other within an
+implementation-specific tolerance:
+.br
+ PIXEL_SIZE_MATRIX = [Sx 0 0 Sy] * POINT_SIZE_MATRIX
+.br
+where
+.br
+ Sx = RESOLUTION_X / 72.27
+.br
+ Sy = RESOLUTION_Y / 72.27
+.LP
+If either the POINT_SIZE or PIXEL_SIZE field is unspecified (either \*Q0\*U or
+wildcarded), the preceding formulas can be used to compute one from the
+other.
+.\"
+.NH 2
+Metrics and Font Properties
+.XS
+\*(SN Metrics and Font Properties
+.XE
+.LP
+In this section, the phrase \*Q1000 pixel metrics\*U means the
+metrics that would be obtained if the rasterizer took the base untransformed
+design used to generate the transformed font and scaled it linearly to a
+height of 1000 pixels, with no rotation component. Note that there may be no
+way for the application to actually request this font since the rasterizer
+may use different outlines or rasterization techniques at that size from the
+ones used to generate the transformed font.
+.LP
+Notes on properties and metrics:
+.LP
+The per-char ink metrics (lbearing, rbearing, ascent, and descent)
+represent the ink extent of the transformed glyph around its origin.
+.LP
+The per-char width is the x component of the transformed character width.
+.LP
+The font ascent and descent are the y component of the transformed font
+ascent or descent.
+.LP
+The FONT property returns a name reflecting the matrix being
+used\*-that is, the name returned can be used to open another
+instance of the same font. The returned name is not necessarily an
+exact copy of the requested name. If, for example, the user
+requests
+.br
+.ft C
+.SM
+ \-misc\-fixed\-medium\-r\-normal\-\-0\-[2e1 0 0.0 +10.0]\-72\-72\-c\-0\-iso8859\-1
+.NL
+.ft P
+.br
+the resulting FONT property might be
+.br
+.ft C
+.SM
+ \-misc\-fixed\-medium\-r\-normal\-\-[19.9 0 0 10]\-[20 0 0 10]\-72\-72\-c\-0\-iso8859\-1
+.NL
+.ft P
+.br
+The FONT property will always include matrices in both the PIXEL_SIZE
+and the POINT_SIZE fields.
+.LP
+To allow accurate client positioning of transformed characters, the
+attributes field of the XCharInfo contains the width of the character in
+1000 pixel metrics. This attributes field should be interpreted as a signed
+integer.
+.LP
+There will always be 2 new font properties defined, RAW_ASCENT and
+RAW_DESCENT, that hold the ascent and descent in 1000 pixel metrics.
+.LP
+All font properties that represent horizontal widths or displacements
+have as their value the x component of the transformed width or
+displacement. All font properties that represent vertical heights or
+displacements have as their value the y component of the transformed
+height or displacement. Each such property will be accompanied by a new
+property, named as the original except prefixed with \*QRAW_\*U, that gives
+the value of the width, height, or displacement in 1000 pixel metrics.
+.NH 1
+Scalable Fonts
+.XS
+\*(SN Scalable Fonts
+.XE
+.LP
+The XLFD is designed to support scalable fonts. A scalable font is a
+font source from which instances of arbitrary size can be derived.
+A scalable font source might be one or more outlines
+together with zero or more hand-tuned bitmap fonts at specific sizes and
+resolutions, or it might be a programmatic description together with
+zero or more bitmap fonts, or some other format
+(perhaps even just a single bitmap font).
+.LP
+The following definitions are useful for discussing scalable fonts:
+.LP
+\fBWell-formed XLFD pattern\fP
+.IP
+A pattern string containing 14 hyphens, one of which is
+the first character of the pattern. Wildcard characters are permitted
+in the fields of a well-formed XLFD pattern.
+.LP
+\fBScalable font name\fP
+.IP
+A well-formed XLFD pattern containing no wildcards and containing the
+digit \*Q0\*U in the PIXEL_SIZE, POINT_SIZE, and AVERAGE_WIDTH fields.
+.LP
+\fBScalable fields\fP
+.IP
+The XLFD fields PIXEL_SIZE, POINT_SIZE, RESOLUTION_X,
+RESOLUTION_Y, and AVERAGE_WIDTH.
+.LP
+\fBDerived instance\fP
+.IP
+The result of replacing the scalable fields of a font name
+with values to yield a font name that could actually be
+produced from the font source. A scaling engine is
+permitted, but not required, to interpret the scalable
+fields in font names to support anamorphic scaling.
+.LP
+\fBGlobal list\fP
+.IP
+The list of names that would be returned by an X server for a
+.PN ListFonts
+protocol request on the pattern \*Q*\*U if there were no protocol
+restrictions on the total number of names returned.
+.sp
+.LP
+The global list consists of font names derived from font sources.
+If a single font source can support multiple character sets (specified
+in the CHARSET_REGISTRY and CHARSET_ENCODING fields), each such character
+set should be used to form a separate font name in the list.
+For a nonscalable font source, the simple font name
+for each character set is included in the global list.
+For a scalable font source, a scalable font name for each character set
+is included in the list. In addition to the scalable font name,
+specific derived instance names may also be included in the list.
+The relative order of derived instances with respect to the scalable
+font name is not constrained. Finally, font name aliases may also be included
+in the list. The relative order of aliases
+with respect to the real font name is not constrained.
+.LP
+The values of the RESOLUTION_X and RESOLUTION_Y fields of a scalable font name
+are implementation dependent,
+but to maximize backward compatibility, they
+should be reasonable nonzero values, for example, a resolution close to that
+provided by the screen (in a single-screen server).
+Because some existing
+applications rely on seeing a collection of point and pixel sizes,
+server vendors are strongly encouraged in the near term to
+provide a mechanism for including, for each scalable font name,
+a set of specific derived instance names. For font sources that contain
+a collection of hand-tuned bitmap fonts, including names of these instances
+in the global list is recommended and sufficient.
+.LP
+The X protocol request
+.PN OpenFont
+on a scalable font name returns a font corresponding to an
+implementation-dependent derived instance of that font name.
+.LP
+The X protocol request
+.PN ListFonts
+on a well-formed XLFD pattern returns the following.
+Starting with the global list, if the actual pattern argument
+has values containing no wildcards in scalable fields,
+then substitute each such field into the corresponding
+field in each scalable font name in the list. For each resulting font name,
+if the remaining scalable fields cannot be replaced with values to produce a
+derived instance, remove the font name from the list. Now take the modified
+list, and perform a simple pattern match against the pattern argument.
+.PN ListFonts
+returns the resulting list.
+.LP
+For example, given the global list:
+.DS
+-Linotype-Times-Bold-I-Normal--0-0-100-100-P-0-ISO8859-1
+-Linotype-Times-Bold-R-Normal--0-0-100-100-P-0-ISO8859-1
+-Linotype-Times-Medium-I-Normal--0-0-100-100-P-0-ISO8859-1
+-Linotype-Times-Medium-R-Normal--0-0-100-100-P-0-ISO8859-1
+.DE
+.LP
+a
+.PN ListFonts
+request with the pattern:
+.LP
+.DS
+-*-Times-*-R-Normal--*-120-100-100-P-*-ISO8859-1
+.DE
+.LP
+would return:
+.DS
+-Linotype-Times-Bold-R-Normal--0-120-100-100-P-0-ISO8859-1
+-Linotype-Times-Medium-R-Normal--0-120-100-100-P-0-ISO8859-1
+.DE
+.LP
+.PN ListFonts
+on a pattern containing wildcards that is not a well-formed XLFD
+pattern is only required to return the list obtained by performing
+a simple pattern match against the global list.
+X servers are permitted, but not required,
+to use a more sophisticated matching algorithm.
+.br
+.\" section \n(sP
+.NH 1
+Polymorphic Fonts
+.XS
+\*(SN Polymorphic Fonts
+.XE
+.LP
+Fonts that can be varied in ways other than size or resolution are called
+\fIpolymorphic fonts.\fP Multiple Master Type 1 font programs are one type of
+a polymorphic font. Current examples of axes along which the fonts can be
+varied are width, weight, and optical size; others might include formality
+or x-height.
+.LP
+To support polymorphic fonts, special values indicating variability are
+defined for the following XLFD fields:
+.nf
+ WEIGHT_NAME
+ SLANT
+ SETWIDTH_NAME
+ ADD_STYLE_NAME
+.fi
+.LP
+The string \*Q0\*U is the special polymorphic value. In the
+WEIGHT_NAME, SLANT, or SETWIDTH_NAME field, \*Q0\*U must be the
+entire field.
+There may be multiple polymorphic values
+in the ADD_STYLE_NAME field.
+They are surrounded by \*Q[\*U and \*Q]\*U and separated by a Space,
+as \*Q[0\00]\*U. The polymorphic values may coexist with
+other data in the field.
+It is recommended that the polymorphic values
+be at the end of the ADD_STYLE_NAME field.
+.LP
+The font-matching algorithms for a font with polymorphic fields are
+identical to the matching algorithms for a font with scalable fields.
+.LP
+There are three new font properties to describe the axes of variation,
+AXIS_NAMES, AXIS_LIMITS, and AXIS_TYPES. AXIS_NAMES is a list of all the
+names of the axes for the font, separated by a null (0) byte.
+These names are suitable for presentation in
+a user interface. AXIS_LIMITS is a list of integers, two for each axis,
+giving the minimum and maximum allowable values for that axis.
+AXIS_TYPES is like AXIS_NAMES,
+but can be registered as having specific semantics.
+.LP
+The axes are listed in the properties in the same order as they
+appear in the font name. They are matched with font name fields by
+looking for the special polymorphic values in the font name.
+.LP
+Examples:
+.LP
+The Adobe Myriad MM font program has width and weight axes. Weight can
+vary from 215 to 830, and width from 300 to 700.
+.\" indented display
+.ID
+.SM
+Name:
+.ft C
+ -Adobe-Myriad MM-0-R-0--0-0-0-0-P-0-ISO8859-1
+.ft P
+AXIS_NAMES:
+ Weight, Width
+AXIS_LIMITS:
+ 215, 830, 300, 700
+AXIS_TYPES:
+ Adobe-Weight, Adobe-Width
+Sample derived instance:
+.ft C
+ -Adobe-Myriad MM-412-R-575--*-120-100-100-P-*-ISO8859-1
+.ft P
+.NL
+.DE \" display end
+.LP
+The Adobe Minion MM Italic font program has width, weight, and optical
+size axes.
+.ID
+.SM
+Name:
+.ft C
+ -Adobe-Minion MM-0-I-0-[0]-0-0-0-0-P-0-ISO8859-1
+.ft P
+AXIS_NAMES:
+ Weight, Width, Optical size
+AXIS_LIMITS:
+ 345, 620, 450, 600, 6, 72
+AXIS_TYPES:
+ Adobe-Weight, Adobe-Width, Adobe-OpticalSize
+Sample derived instance:
+.ft C
+ -Adobe-Minion MM-550-I-480-[18]-*-180-100-100-P-*-ISO8859-1
+.ft P
+.NL
+.DE
+.LP
+The Adobe Minion MM Swash Italic font program has the same axes and
+values. This shows how
+\*Q[0]\*U in the ADD_STYLE_NAME field can
+coexist with other words.
+.ID
+.SM
+Name:
+.ft C
+ -Adobe-Minion MM-0-I-0-Swash[0]-0-0-0-0-P-0-ISO8859-1
+.ft P
+AXIS_NAMES:
+ Weight, Width, Optical size
+AXIS_LIMITS:
+ 345, 620, 450, 600, 6, 72
+AXIS_TYPES:
+ Adobe-Weight, Adobe-Width, Adobe-OpticalSize
+Sample derived instance:
+.ft C
+ -Adobe-Minion MM-550-I-480-Swash[18]-*-180-100-100-P-*-ISO8859-1
+.ft P
+.NL
+.DE
+.LP
+The XYZ Abc font, a hypothetical font, has optical size and x-height axes.
+This shows how there can be more than one polymorphic value in the
+ADD_STYLE_NAME field.
+.ID
+.SM
+Name:
+.ft C
+ -XYZ-Abc-Medium-R-Normal-[0 0]-0-0-0-0-P-0-ISO8859-1
+.ft P
+AXIS_NAMES:
+ Optical size, X-height
+AXIS_LIMITS:
+ 6, 72, 400, 600
+AXIS_TYPES:
+ XYZ-OpticalSize, XYZ-Xheight
+Sample derived instance:
+.ft C
+ -XYZ-Abc-Medium-R-Normal-[14 510]-*-140-100-100-P-*-ISO8859-1
+.ft P
+.NL
+.DE
+.LP
+If an axis allows negative values, a client requests a negative value by
+using \*Q\^~\^\*U (TILDE) as a minus sign.
+.LP
+Axis types can be registered with the X Consortium, along with their
+semantics.
+.LP
+If a font name that contains the polymorphic value or a wildcard in a
+polymorphic field is presented to a font source, the font source is free
+to substitute any value that is convenient. However, font sources should
+try to use a value that would be considered \fInormal\fP or \fImedium\fP for the
+particular font. For example, if an optical size variable is unresolved,
+the font source should provide a value appropriate to the size of the
+font.
+.LP
+The result of specifying an out-of-range value for a polymorphic field is
+undefined. The font source may treat this as a \fBBadName\fP error, treat the
+value as if it were the closest legal value, or extrapolate to try to
+accommodate the value.
+.NH 1
+Affected Elements of Xlib and the X Protocol
+.XS
+\*(SN Affected Elements of Xlib and the X Protocol
+.XE
+.LP
+The following X protocol requests must support the XLFD conventions:
+.IP \(bu 5
+.PN OpenFont
+\- for the name argument
+.IP \(bu 5
+.PN ListFonts
+\- for the pattern argument
+.IP \(bu 5
+.PN ListFontsWithInfo
+\- for the pattern argument
+.LP
+In addition,
+the following Xlib functions must support the XLFD conventions:
+.IP \(bu 5
+.PN XLoadFont
+\- for the name argument
+.IP \(bu 5
+.PN XListFontsWithInfo
+\- for the pattern argument
+.IP \(bu 5
+.PN XLoadQueryFont
+\- for the name argument
+.IP \(bu 5
+.PN XListFonts
+\- for the pattern argument
+.NH 1
+BDF Conformance
+.XS
+\*(SN BDF Conformance
+.XE
+.LP
+The bitmap font distribution and interchange format adopted by the
+X Consortium (BDF V2.1) provides a general mechanism for identifying the
+font name of an X font and a variable list of font properties,
+but it does not mandate the syntax or semantics of the font name
+or the semantics of the font properties that might be provided in a BDF font.
+This section identifies the requirements for BDF fonts that conform to XLFD.
+.NH 2
+XLFD Conformance Requirements
+.XS
+\*(SN XLFD Conformance Requirements
+.XE
+.LP
+A BDF font conforms to the XLFD specification if and only if the
+following conditions are satisfied:
+.IP \(bu 5
+The value for the BDF item \fBFONT\fP conforms to the syntax
+and semantic definition of a XLFD
+.PN FontName
+string.
+.IP \(bu 5
+The
+.PN FontName
+begins with the X
+.PN FontNameRegistry
+prefix: \*Q\-\*U.
+.IP \(bu 5
+All XLFD
+.PN FontName
+fields are defined.
+.IP \(bu 5
+Any FontProperties provided conform in name and semantics to the XLFD
+.PN FontProperty
+definitions.
+.LP
+A simple method of testing for conformance would entail verifying that the
+.PN FontNameRegistry
+prefix is the string \*Q\-\*U,
+that the number of field delimiters in the string and coded field values
+are valid,
+and that each font property name either matches a standard XLFD property name
+or follows the definition of a private property.
+.NH 2
+FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR
+.XS
+\*(SN FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR
+.XE
+.LP
+FONT_ASCENT, FONT_DESCENT, and DEFAULT_CHAR are provided in the BDF
+specification as properties that are moved to the
+.PN XFontStruct
+by the BDF font compiler in generating the X server-specific
+binary font encoding.
+If present,
+these properties shall comply with the following semantic definitions.
+.NH 3
+FONT_ASCENT
+.XS
+\*(SN FONT_ASCENT
+.XE
+.LP
+FONT_ASCENT is an integer value (of type INT32)
+that gives the recommended typographic ascent above the baseline
+for determining interline spacing.
+Specific glyphs of the font may extend beyond this.
+If the current position point for line \fIn\fP is at [X,Y],
+then the origin of the next line \fIm = n + 1\fP
+(allowing for a possible font change) is
+[X, Y + FONT_DESCENTn + FONT_ASCENTm].
+.LP
+FONT_ASCENT can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (FONT_ASCENT undefined) then
+ FONT_ASCENT = maximum ascent
+.DE
+where maximum ascent is the maximum ascent (above the baseline)
+in pixels of any glyph in the font.
+.NH 3
+FONT_DESCENT
+.XS
+\*(SN FONT_DESCENT
+.XE
+.LP
+FONT_DESCENT is an integer value (of type INT32)
+that gives the recommended typographic descent below the baseline
+for determining interline spacing.
+Specific glyphs of the font may extend beyond this.
+If the current position point for line \fIn\fP is at [X,Y],
+then the origin of the next line \fIm = n+1\fP
+(allowing for a possible font change) is
+[X, Y + FONT_DESCENTn + FONT_ASCENTm].
+.LP
+The logical extent of the font is inclusive between the Y-coordinate values:
+Y \- FONT_ASCENT and Y + FONT_DESCENT + 1.
+.LP
+FONT_DESCENT can be approximated if not provided as a font property,
+according to the following algorithm:
+.LP
+.DS
+if (FONT_DESCENT undefined) then
+ FONT_DESCENT = maximum descent
+.DE
+where maximum descent is the maximum descent (below the baseline)
+in pixels of any glyph in the font.
+.NH 3
+DEFAULT_CHAR
+.XS
+\*(SN DEFAULT_CHAR
+.XE
+.LP
+The DEFAULT_CHAR is an unsigned integer value (of type CARD32)
+that specifies the index
+of the default character to be used by the X server when an attempt
+is made to display an undefined or nonexistent character in the font.
+(For a font using a 2-byte matrix format,
+the index bytes are encoded in the integer as byte1 * 65536 + byte2.)
+If the DEFAULT_CHAR itself specifies an undefined or nonexistent character
+in the font,
+then no display is performed.
+.LP
+DEFAULT_CHAR cannot be approximated if not provided as a font property.
+.\"
+.\" print Table of Contents
+.if o .bp \" blank page to make count even
+.bp 1
+.af PN i
+.PX
diff --git a/specs/XPRINT/xp_library.book b/specs/XPRINT/xp_library.book
new file mode 100644
index 0000000..2186489
--- /dev/null
+++ b/specs/XPRINT/xp_library.book
Binary files differ
diff --git a/specs/XPRINT/xp_library.mif b/specs/XPRINT/xp_library.mif
new file mode 100644
index 0000000..0fb1f95
--- /dev/null
+++ b/specs/XPRINT/xp_library.mif
@@ -0,0 +1,34917 @@
+<MIFFile 5.00> # Generated by FrameMaker xm5.0P3f
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+#
+<Units Uin>
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `PANTONE 485 CV'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 99.998474>
+ <ColorYellow 90.979004>
+ <ColorBlack 0.000000>
+ <ColorPantoneValue `485'>
+ > # end of Color
+ <Color
+ <ColorTag `Dark Blue Shading'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 16.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 30.000000>
+ > # end of Color
+ <Color
+ <ColorTag `Base Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 14.000000>
+ <ColorYellow 1.000000>
+ <ColorBlack 29.000000>
+ > # end of Color
+ <Color
+ <ColorTag `25% Grey'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 25.000000>
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+ <Condition
+ <CTag `Open Issue'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 4>
+ <CColor `Blue'>
+ > # end of Condition
+ <Condition
+ <CTag `Unimplemented'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 6>
+ <CColor `Magenta'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `#define'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `#define'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement PageTop>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 27.0 pt>
+ <PgfSpAfter 19.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Step'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Step'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `S:<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `2Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 21.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `2Sect'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Para'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 99>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `Dark Blue Shading'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat ` '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `3Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 18.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `4Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 17.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Author'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `1Heading'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 3.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BodyClose'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bullet'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `B:\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bullet2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `B:\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BulletCont'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.94">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.19">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted_i'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted_i_2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CBullet'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBodyCntr'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Bottom>
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeadingCntr'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Bottom>
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `centeredcell'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Code Example'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `ComposeCellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CStep'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Definition'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `DefinitionBelowTerm'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-arrow'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.375">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-form'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-literal'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-literal'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.875">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-type'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Equation'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `E:(EQ <n+\>)'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd Yes>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Extract'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.25">
+ <PgfLIndent 1.25">
+ <PgfRIndent 0.75">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Figure'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `Table Rule'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 16.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `F:FIGURE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Decl'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Intro'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Function Decl'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.65">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 16.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `header right'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Right>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `LibraryArg'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `LibraryDescription'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `LibraryDescriptionLong'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 2.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `LibraryRequest'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Note'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered-decrement'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n-\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered0'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=0\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Programlisting'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 6>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Programlisting_i'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 6>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 42.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-arrow'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `ZapfDingbats'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `ZapfDingbats'>
+ <FEncoding `ZapfDingbats'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-errors'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-item'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.9">
+ <PgfRIndent 1.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefNameDiv'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `RefName'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `PANTONE 485 CV'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefSect1Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `RefSect1Para'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `PANTONE 485 CV'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefSynopsisDiv'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Synopsis'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `PANTONE 485 CV'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `right footer'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Step'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `S:<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Structure Decl'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `SubTitle'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Author'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `tab1'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.2">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.8">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `tab2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.2">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.8">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `tab3'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.2">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `tab3a'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.2">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `tab4'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.16667">
+ <PgfLIndent 0.16667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.191">
+ <PgfLIndent 0.191">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `T:TABLE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Term'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Varlistentry'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Term_i'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Varlistentry_i'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.85">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Term_i_1st'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Varlistentry_i'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.85">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Author'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 5.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner1'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.75">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry_i'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term_i'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.85">
+ <PgfLIndent 1.85">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.85">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry_i_'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term_i'>
+ <PgfAlignment Left>
+ <PgfFIndent 2.75">
+ <PgfLIndent 2.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `WritersNote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 14.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `XPTabLine3'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `XPTabLine3NoSpace'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+> # end of PgfCatalog
+<FontCatalog
+ <Font
+ <FTag `ArgInList'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Argument'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `BitLabel'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Bullet Symbol'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Callout'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Definition term'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Emphasis'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `EnvironVar'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar Yes>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Field Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Figure Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Function'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `FunctionInProg'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Table'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Text'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `LibraryItalic'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Literal'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Message'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `New Term'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Node Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Path'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Program'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Protocol'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Run-In Heading'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Subscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Superscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Tree Cap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Type Name'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `URL'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Variable Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `WritersNote'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPArgument'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPEvent'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPFunction'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPMessage'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPRequest'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPValue'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPValueInText'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Compose Table'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Float>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Medium'>
+ <TblBRuling `Medium'>
+ <TblRRuling `Medium'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 5>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Sequence Examples'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.39641">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 2.10255">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.79896">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 0.95443">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.108">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Thin'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 2>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 0.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 3>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.10756">
+ <TblRIndent 0.0">
+ <TblAlignment Left>
+ <TblPlacement Anywhere>
+ <TblSpBefore 4.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 3>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `table3cols'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.5">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Float>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 5>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.58333">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 0.90278">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.76389">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Double'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 4>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$dayname\>, <$monthname\> <$daynum01\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[1Heading]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[2Heading]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `protocol'>
+ <VariableDef `<Protocol\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `header1'>
+ <VariableDef `<header1\>'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table & Page'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section & Page'>
+ <XRefDef `Section\x11 <$paranum\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure & Page'>
+ <XRefDef `Figure\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section'>
+ <XRefDef `section\x11 <$paranum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure'>
+ <XRefDef `Figure\x11 <$paranumonly\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Number'>
+ <XRefDef `<$paranum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Heading'>
+ <XRefDef `\xd2 <$paratext\>\xd3 '>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 53 29 876 644 >
+ <DWindowRect 29 3 920 747 >
+ <DViewScale 140.0%>
+ <DNextUnique 715800>
+ <DPageSize 8.5" 11.0">
+ <DMenuBar `'>
+ <DVoMenuBar `'>
+ <DStartPage 1>
+ <DPageNumStyle Arabic>
+ <DPagePointStyle Arabic>
+ <DTwoSides Yes>
+ <DParity FirstRight>
+ <DFrozenPages No>
+ <DPageRounding MakePageCountEven>
+ <DFNoteMaxH 4.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage>
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic>
+ <DFNoteAnchorPos FNSuperscript>
+ <DFNoteNumberPos FNBaseline>
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `. '>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha>
+ <DTblFNoteAnchorPos FNSuperscript>
+ <DTblFNoteNumberPos FNBaseline>
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `. '>
+ <DLinebreakChars `- \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.0">
+ <DChBarWidth 0.0 pt>
+ <DChBarPosition NearestEdge>
+ <DChBarColor `Black'>
+ <DAutoChBars No>
+ <DShowAllConditions No>
+ <DDisplayOverrides Yes>
+ <DPageScrolling Variable>
+ <DViewOnly No>
+ <DViewOnlyXRef GotoBehavior>
+ <DViewOnlySelect Yes>
+ <DViewOnlyWinBorders Yes>
+ <DViewOnlyWinMenubar Yes>
+ <DViewOnlyWinPopup Yes>
+ <DViewOnlyWinPalette No>
+ <DGridOn No>
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.0>
+ <DRulersOn Yes>
+ <DFullRulers Yes>
+ <DGraphicsOff No>
+ <DCurrentView 1>
+ <DBordersOn Yes>
+ <DSymbolsOn Yes>
+ <DLinkBoundariesOn No>
+ <DSmartQuotesOn Yes>
+ <DSmartSpacesOn Yes>
+ <DUpdateTextInsetsOnOpen Yes>
+ <DUpdateXRefsOnOpen Yes>
+ <DLanguage USEnglish>
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No>
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DPrintSkipBlankPages Yes>
+ <DPrintSeparations No>
+ <DGenerateAcrobatInfo No>
+ <DAcrobatParagraphBookmarks Yes>
+ <DAcrobatBookmarksIncludeTagNames No>
+> # end of Document
+<BookComponent
+ <FileName `<c\>xp_library.mifIOM.doc'>
+ <Unique 4>
+ <FileNameSuffix `IOM'>
+ <DeriveLinks No>
+ <DeriveType IOM>
+ <DeriveTag `Index'>
+> # end of BookComponent
+<BookComponent
+ <FileName `<c\>xp_library.mifIX.doc'>
+ <Unique 6>
+ <FileNameSuffix `IX'>
+ <DeriveLinks Yes>
+ <DeriveType IDX>
+ <DeriveTag `Index'>
+> # end of BookComponent
+<BookComponent
+ <FileName `<c\>xp_library.mifTC.doc'>
+ <Unique 8>
+ <FileNameSuffix `TC'>
+ <DeriveLinks No>
+ <DeriveType TOC>
+ <DeriveTag `1Heading'>
+ <DeriveTag `2Heading'>
+ <DeriveTag `3Heading'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+<OKWord `*)'>
+<OKWord `????'>
+<OKWord `AllocColor'>
+<OKWord `BadMatch'>
+<OKWord `BadValue'>
+<OKWord `Bool'>
+<OKWord `Gilg'>
+<OKWord `InternAtom'>
+<OKWord `InvalidateTag'>
+<OKWord `MotionNotify'>
+<OKWord `Pixmap'>
+<OKWord `PrintGetPdmStartParams'>
+<OKWord `PrintSetContext'>
+<OKWord `QueryTag'>
+<OKWord `Reencoding'>
+<OKWord `XGetWindowAttributes'>
+<OKWord `XPBadContext'>
+<OKWord `XPBadSequence'>
+<OKWord `XPGetData'>
+<OKWord `XPSpool'>
+<OKWord `X_ChangeProperty'>
+<OKWord `X_FillPoly'>
+<OKWord `X_LbxChangeProperty'>
+<OKWord `X_LbxGetProperty'>
+<OKWord `X_LbxIncrementPixel'>
+<OKWord `X_LbxModifySequence'>
+<OKWord `X_LookupColor'>
+<OKWord `X_PolyArc'>
+<OKWord `X_PolyFillArc'>
+<OKWord `X_PolyFillRectangle'>
+<OKWord `X_PolyLine'>
+<OKWord `X_PolyPoint'>
+<OKWord `X_PolyRectangle'>
+<OKWord `X_PolySegment'>
+<OKWord `Xauthority'>
+<OKWord `Xlib'>
+<OKWord `XpEndJob'>
+<OKWord `XpGetDocumentData'>
+<OKWord `XpNotify'>
+<OKWord `XpStartJob'>
+<OKWord `Xp_DataAvailable'>
+<OKWord `Xp_StartJobEvent'>
+<OKWord `attribute_name'>
+<OKWord `bitwise'>
+<OKWord `contextID'>
+<OKWord `locale%;HP'>
+<OKWord `locale%;IBM'>
+<OKWord `metrics'>
+<OKWord `printerName'>
+<OKWord `reencode'>
+<OKWord `reencoded'>
+<OKWord `saveData'>
+<OKWord `save_data'>
+<OKWord `setlocale(LC_CTYPE'>
+<OKWord `spooler'>
+<OKWord `unset'>
+<OKWord `unsets'>
+<OKWord `\xd2 _\xd3 '>
+<OKWord `\xd3 .'>
+<OKWord `\xd4 ;\xd5 .'>
+> # end of Dictionary
+<AFrames
+ <Frame
+ <ID 1>
+ <Unique 2026>
+ <Pen 0>
+ <Fill 15>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.57031" 2.05555" 5.35937" 5.05556">
+ <BRect 1.57031" 2.05555" 5.35937" 5.05556">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset -4.05556">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <Ellipse
+ <Unique 2027>
+ <GroupID 2>
+ <Fill 7>
+ <PenWidth 2.0 pt>
+ <Overprint No>
+ <ShapeRect 1.05833" 0.25" 1.25" 0.625">
+ <BRect 1.05833" 0.25" 1.25" 0.625">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2028>
+ <GroupID 2>
+ <Overprint No>
+ <TLOrigin 1.68333" 0.60986">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `X Application'>
+ > # end of TextLine
+ <Rectangle
+ <Unique 2029>
+ <GroupID 3>
+ <Fill 15>
+ <Overprint No>
+ <ShapeRect 1.18333" 1.5" 1.5" 1.0">
+ <BRect 1.18333" 1.5" 1.5" 1.0">
+ > # end of Rectangle
+ <Rectangle
+ <Unique 2030>
+ <GroupID 4>
+ <Overprint No>
+ <ShapeRect 2.68333" 1.5" 1.5" 2.0">
+ <BRect 2.68333" 1.5" 1.5" 2.0">
+ > # end of Rectangle
+ <Rectangle
+ <Unique 2031>
+ <GroupID 5>
+ <Overprint No>
+ <ShapeRect 1.18333" 2.5" 1.5" 1.0">
+ <BRect 1.18333" 2.5" 1.5" 1.0">
+ > # end of Rectangle
+ <TextLine
+ <Unique 2032>
+ <GroupID 6>
+ <Overprint No>
+ <TLOrigin 1.93333" 1.96285">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `DIX + OS +'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2033>
+ <GroupID 5>
+ <Overprint No>
+ <TLOrigin 1.93333" 3.04736">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Print DDX'>
+ > # end of TextLine
+ <Group
+ <ID 5>
+ <Unique 2034>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <TextLine
+ <Unique 2035>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 3.43333" 1.96972">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Print Extension'>
+ > # end of TextLine
+ <RoundRect
+ <Unique 2036>
+ <GroupID 8>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 2.24583" 2.1875" 1.0" 0.5">
+ <BRect 2.24583" 2.1875" 1.0" 0.5">
+ <Radius 0.25">
+ > # end of RoundRect
+ <RoundRect
+ <Unique 2037>
+ <GroupID 9>
+ <Overprint No>
+ <ShapeRect 2.12083" 2.3125" 1.0" 0.5">
+ <BRect 2.12083" 2.3125" 1.0" 0.5">
+ <Radius 0.25">
+ > # end of RoundRect
+ <TextLine
+ <Unique 2038>
+ <GroupID 10>
+ <Overprint No>
+ <TLOrigin 2.62083" 2.49816">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Print Contexts'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2039>
+ <GroupID 6>
+ <Overprint No>
+ <TLOrigin 1.93333" 2.10174">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Fonts + Other'>
+ > # end of TextLine
+ <Group
+ <ID 6>
+ <Unique 2040>
+ <GroupID 3>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 3>
+ <Unique 2041>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 4>
+ <Unique 2042>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 2>
+ <Unique 2043>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <Ellipse
+ <Unique 2044>
+ <GroupID 11>
+ <PenWidth 2.0 pt>
+ <Overprint No>
+ <ShapeRect 1.30833" 4.125" 1.25" 0.625">
+ <BRect 1.30833" 4.125" 1.25" 0.625">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2045>
+ <GroupID 11>
+ <Overprint No>
+ <TLOrigin 1.93333" 4.48486">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Print Spooler'>
+ > # end of TextLine
+ <Group
+ <ID 11>
+ <Unique 2046>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <Ellipse
+ <Unique 2047>
+ <GroupID 12>
+ <Overprint No>
+ <ShapeRect 3.05833" 0.25" 1.25" 0.625">
+ <BRect 3.05833" 0.25" 1.25" 0.625">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2048>
+ <GroupID 12>
+ <Overprint No>
+ <TLOrigin 3.68333" 0.60986">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Print Dialog Manager'>
+ > # end of TextLine
+ <Group
+ <ID 12>
+ <Unique 2049>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <PolyLine
+ <Unique 51>
+ <GroupID 7>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <HeadCap ArrowHead>
+ <TailCap Square>
+ <TailCap ArrowHead>
+ <ArrowStyle
+ <TipAngle 16>
+ <BaseAngle 90>
+ <Length 12.0 pt>
+ <HeadType Filled>
+ <ScaleHead Yes>
+ <ScaleFactor 0.25 pt>
+ > # end of ArrowStyle
+ <Overprint No>
+ <NumPoints 2>
+ <Point 2.80833" 2.25">
+ <Point 3.68333" 0.875">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 53>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.68333" 0.875">
+ <Point 2.55833" 2.25">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2052>
+ <GroupID 13>
+ <Overprint No>
+ <TLOrigin 0.68333" 0.96112">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2053>
+ <GroupID 13>
+ <Overprint No>
+ <TLOrigin 0.68333" 1.05835">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XpCreateContext'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2054>
+ <GroupID 13>
+ <Overprint No>
+ <TLOrigin 0.68333" 1.15557">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XpStartJob'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2055>
+ <GroupID 13>
+ <Overprint No>
+ <TLOrigin 0.68333" 1.25279">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `...x rendering...'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2056>
+ <GroupID 13>
+ <Overprint No>
+ <TLOrigin 0.68333" 1.35001">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XpEndJob'>
+ > # end of TextLine
+ <Group
+ <ID 13>
+ <Unique 2057>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <TextLine
+ <Unique 2058>
+ <GroupID 14>
+ <Overprint No>
+ <TLOrigin 3.75" 0.96112">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XpSetContext'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2059>
+ <GroupID 14>
+ <Overprint No>
+ <TLOrigin 3.75" 1.05835">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XpGetAttributes'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2060>
+ <GroupID 14>
+ <Overprint No>
+ <TLOrigin 3.75" 1.15557">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XpSetAttributes'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2061>
+ <GroupID 14>
+ <Overprint No>
+ <TLOrigin 3.75" 1.25279">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 7.0 pt>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2062>
+ <GroupID 14>
+ <Overprint No>
+ <TLOrigin 3.75" 1.35001">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <Group
+ <ID 14>
+ <Unique 2063>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <PolyLine
+ <Unique 67>
+ <GroupID 15>
+ <Fill 15>
+ <Overprint No>
+ <Smoothed Yes>
+ <NumPoints 4>
+ <Point 2.18333" 0.875">
+ <Point 2.68333" 1.54167">
+ <Point 2.68333" 1.54167">
+ <Point 3.18333" 0.875">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2065>
+ <GroupID 15>
+ <Overprint No>
+ <TLOrigin 2.68333" 0.94053">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpNotifyPdm'>
+ > # end of TextLine
+ <Group
+ <ID 15>
+ <Unique 2066>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <PolyLine
+ <Unique 71>
+ <GroupID 7>
+ <HeadCap Square>
+ <TailCap Square>
+ <TailCap ArrowHead>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.93333" 4.125">
+ <Point 1.93333" 3.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 73>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 3.43333" 3.5">
+ <Point 3.43333" 4.0">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2069>
+ <GroupID 16>
+ <Overprint No>
+ <TLOrigin 2.93333" 4.21972">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Pr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `inter'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s c'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `onfig file '>
+ <Font
+ <FTag `'>
+ <FSize 8.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `(config needed)'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2070>
+ <GroupID 16>
+ <Overprint No>
+ <TLOrigin 2.93333" 4.35861">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Printer model files '>
+ <Font
+ <FTag `'>
+ <FSize 8.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `(provided by printer vendors)'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2071>
+ <GroupID 16>
+ <Overprint No>
+ <TLOrigin 2.93333" 4.4975">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Printer attribute files '>
+ <Font
+ <FTag `'>
+ <FSize 8.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `(some config needed)'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2072>
+ <GroupID 16>
+ <Overprint No>
+ <TLOrigin 2.93333" 4.63639">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX config files '>
+ <Font
+ <FTag `'>
+ <FSize 8.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `(provided by DDX vendors)'>
+ > # end of TextLine
+ <Group
+ <ID 16>
+ <Unique 2073>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <PolyLine
+ <Unique 80>
+ <GroupID 7>
+ <HeadCap Square>
+ <HeadCap ArrowHead>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 3.43333" 4.0">
+ <Point 3.05833" 2.75">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2075>
+ <GroupID 10>
+ <Overprint No>
+ <TLOrigin 2.62083" 2.63705">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FSize 5.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `Job, Document & Page attributes'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2076>
+ <GroupID 10>
+ <Overprint No>
+ <TLOrigin 2.62083" 2.70649">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Server & Printer attributes'>
+ > # end of TextLine
+ <Group
+ <ID 10>
+ <Unique 2077>
+ <GroupID 9>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 9>
+ <Unique 2078>
+ <GroupID 8>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 8>
+ <Unique 2079>
+ <GroupID 7>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 7>
+ <Unique 2080>
+ <Overprint No>
+ > # end of Group
+ > # end of Frame
+ <Frame
+ <ID 17>
+ <Unique 2110>
+ <Pen 0>
+ <Fill 15>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.21875" 1.26389" 6.0625" 4.47222">
+ <BRect 1.21875" 1.26389" 6.0625" 4.47222">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset -3.47222">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <PolyLine
+ <Unique 89>
+ <GroupID 18>
+ <PenWidth 1.0 pt>
+ <HeadCap Square>
+ <HeadCap ArrowHead>
+ <TailCap Square>
+ <ArrowStyle
+ <TipAngle 16>
+ <BaseAngle 90>
+ <Length 12.0 pt>
+ <HeadType Filled>
+ <ScaleHead Yes>
+ <ScaleFactor 0.25 pt>
+ > # end of ArrowStyle
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.375" 3.5">
+ <Point 1.555" 2.625">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 91>
+ <GroupID 19>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 2.125" 3.625">
+ <Point 4.125" 2.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 93>
+ <GroupID 19>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 3.125" 0.875">
+ <Point 4.125" 1.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 95>
+ <GroupID 19>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 3.0" 0.875">
+ <Point 1.555" 2.125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 97>
+ <GroupID 19>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 2.875" 0.875">
+ <Point 1.0" 1.5">
+ > # end of PolyLine
+ <Rectangle
+ <Unique 2116>
+ <GroupID 20>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <ShapeRect 0.5" 1.375" 1.875" 1.625">
+ <BRect 0.5" 1.375" 1.875" 1.625">
+ > # end of Rectangle
+ <Rectangle
+ <Unique 2117>
+ <GroupID 20>
+ <PenWidth 3.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <ShapeRect 0.375" 1.25" 2.125" 1.875">
+ <BRect 0.375" 1.25" 2.125" 1.875">
+ > # end of Rectangle
+ <Rectangle
+ <Unique 2118>
+ <GroupID 21>
+ <PenWidth 0.015 pt>
+ <Overprint No>
+ <ShapeRect 0.625" 1.49995" 0.75" 0.75">
+ <BRect 0.625" 1.49995" 0.75" 0.75">
+ > # end of Rectangle
+ <TextLine
+ <Unique 2119>
+ <GroupID 18>
+ <Overprint No>
+ <TLOrigin 1.4375" 1.09467">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `X Video Server'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2120>
+ <GroupID 22>
+ <Overprint No>
+ <TLOrigin 4.5625" 1.09472">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `X Print Server'>
+ > # end of TextLine
+ <Ellipse
+ <Unique 2121>
+ <GroupID 23>
+ <Fill 7>
+ <PenWidth 2.0 pt>
+ <Overprint No>
+ <ShapeRect 2.25" 0.25" 1.5" 0.625">
+ <BRect 2.25" 0.25" 1.5" 0.625">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2122>
+ <GroupID 23>
+ <Overprint No>
+ <TLOrigin 2.99999" 0.60984">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `X Application'>
+ > # end of TextLine
+ <Rectangle
+ <Unique 2123>
+ <GroupID 24>
+ <PenWidth 0.015 pt>
+ <Overprint No>
+ <ShapeRect 1.235" 2.125" 0.625" 0.5">
+ <BRect 1.235" 2.125" 0.625" 0.5">
+ > # end of Rectangle
+ <Rectangle
+ <Unique 2124>
+ <GroupID 25>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <ShapeRect 3.625" 1.38378" 1.875" 1.61509">
+ <BRect 3.625" 1.38378" 1.875" 1.61509">
+ > # end of Rectangle
+ <Rectangle
+ <Unique 2125>
+ <GroupID 25>
+ <PenWidth 3.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <ShapeRect 3.5" 1.24986" 2.125" 1.875">
+ <BRect 3.5" 1.24986" 2.125" 1.875">
+ > # end of Rectangle
+ <Rectangle
+ <Unique 2126>
+ <GroupID 26>
+ <PenWidth 0.015 pt>
+ <Overprint No>
+ <ShapeRect 3.75" 1.48768" 0.75" 0.75559">
+ <BRect 3.75" 1.48768" 0.75" 0.75559">
+ > # end of Rectangle
+ <Ellipse
+ <Unique 2127>
+ <GroupID 19>
+ <Fill 7>
+ <PenWidth 2.0 pt>
+ <Overprint No>
+ <ShapeRect 0.625" 3.5" 1.625" 0.625">
+ <BRect 0.625" 3.5" 1.625" 0.625">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2128>
+ <GroupID 19>
+ <Overprint No>
+ <TLOrigin 1.4375" 3.85983">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `Dt Print Dialog Manager'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2129>
+ <GroupID 21>
+ <Overprint No>
+ <TLOrigin 0.67115" 1.84891">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FSize 7.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `Application'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2130>
+ <GroupID 21>
+ <Overprint No>
+ <TLOrigin 0.67115" 1.94613">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Display Window'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2131>
+ <GroupID 27>
+ <Overprint No>
+ <TLOrigin 3.85327" 1.83908">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Application'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2132>
+ <GroupID 27>
+ <Overprint No>
+ <TLOrigin 3.85327" 1.93702">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Print Window'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2133>
+ <GroupID 24>
+ <Overprint No>
+ <TLOrigin 1.25092" 2.30034">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Coordinated'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2134>
+ <GroupID 24>
+ <Overprint No>
+ <TLOrigin 1.25092" 2.39757">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Print Setup'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2135>
+ <GroupID 24>
+ <Overprint No>
+ <TLOrigin 1.25092" 2.49479">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `GUIs '>
+ > # end of TextLine
+ <Ellipse
+ <Unique 2136>
+ <GroupID 19>
+ <Overprint No>
+ <ShapeRect 3.75" 3.5" 1.625" 0.625">
+ <BRect 3.75" 3.5" 1.625" 0.625">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2137>
+ <GroupID 19>
+ <Overprint No>
+ <TLOrigin 4.5625" 3.85983">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Printer Spooler Subsystem'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 121>
+ <GroupID 19>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 4.5625" 3.125">
+ <Point 4.5625" 3.5">
+ > # end of PolyLine
+ <Group
+ <ID 21>
+ <Unique 2139>
+ <GroupID 18>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 24>
+ <Unique 2140>
+ <GroupID 28>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 20>
+ <Unique 2141>
+ <GroupID 18>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 27>
+ <Unique 2142>
+ <GroupID 26>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 26>
+ <Unique 2143>
+ <GroupID 22>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 25>
+ <Unique 2144>
+ <GroupID 22>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 22>
+ <Unique 2145>
+ <GroupID 19>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 23>
+ <Unique 2146>
+ <GroupID 19>
+ <Overprint No>
+ > # end of Group
+ <PolyLine
+ <Unique 131>
+ <GroupID 28>
+ <Fill 15>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 3>
+ <Point 1.25" 2.11">
+ <Point 1.875" 2.11">
+ <Point 1.875" 2.595">
+ > # end of PolyLine
+ <Ellipse
+ <Unique 2148>
+ <GroupID 29>
+ <Fill 7>
+ <Overprint No>
+ <ShapeRect 2.25" 0.985" 0.125" 0.125">
+ <BRect 2.25" 0.985" 0.125" 0.125">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2149>
+ <GroupID 29>
+ <Overprint No>
+ <TLOrigin 2.3125" 1.08539">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FSize 8.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `A'>
+ > # end of TextLine
+ <Ellipse
+ <Unique 2150>
+ <GroupID 30>
+ <Overprint No>
+ <ShapeRect 3.36111" 0.985" 0.13889" 0.125">
+ <BRect 3.36111" 0.985" 0.13889" 0.125">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2151>
+ <GroupID 30>
+ <Overprint No>
+ <TLOrigin 3.43056" 1.08539">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `B'>
+ > # end of TextLine
+ <Group
+ <ID 29>
+ <Unique 2152>
+ <GroupID 18>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 30>
+ <Unique 2153>
+ <GroupID 19>
+ <Overprint No>
+ > # end of Group
+ <Ellipse
+ <Unique 2154>
+ <GroupID 31>
+ <Overprint No>
+ <ShapeRect 2.5" 3.25" 0.13889" 0.125">
+ <BRect 2.5" 3.25" 0.13889" 0.125">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2155>
+ <GroupID 31>
+ <Overprint No>
+ <TLOrigin 2.56944" 3.35039">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `E'>
+ > # end of TextLine
+ <Group
+ <ID 31>
+ <Unique 2156>
+ <GroupID 18>
+ <Overprint No>
+ > # end of Group
+ <Ellipse
+ <Unique 2157>
+ <GroupID 32>
+ <Overprint No>
+ <ShapeRect 2.61111" 1.125" 0.13889" 0.125">
+ <BRect 2.61111" 1.125" 0.13889" 0.125">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2158>
+ <GroupID 32>
+ <Overprint No>
+ <TLOrigin 2.68056" 1.22539">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `C'>
+ > # end of TextLine
+ <Group
+ <ID 32>
+ <Unique 2159>
+ <GroupID 18>
+ <Overprint No>
+ > # end of Group
+ <Ellipse
+ <Unique 2160>
+ <GroupID 33>
+ <Overprint No>
+ <ShapeRect 1.375" 3.25" 0.13889" 0.125">
+ <BRect 1.375" 3.25" 0.13889" 0.125">
+ > # end of Ellipse
+ <TextLine
+ <Unique 2161>
+ <GroupID 33>
+ <Overprint No>
+ <TLOrigin 1.44444" 3.35039">
+ <TLAlignment Center>
+ <TLLanguage USEnglish>
+ <String `D'>
+ > # end of TextLine
+ <Group
+ <ID 33>
+ <Unique 2162>
+ <GroupID 18>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 28>
+ <Unique 2163>
+ <GroupID 18>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 18>
+ <Unique 2164>
+ <GroupID 19>
+ <Overprint No>
+ > # end of Group
+ <Group
+ <ID 19>
+ <Unique 2165>
+ <Overprint No>
+ > # end of Group
+ > # end of Frame
+ <Frame
+ <ID 34>
+ <Unique 1595>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.77592" 0.25" 0.26111">
+ <BRect 1.0" 1.77592" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 152>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 154>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 156>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 158>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 35>
+ <Unique 1605>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.375" 0.25" 0.25">
+ <BRect 1.0" 2.375" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 161>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 163>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 36>
+ <Unique 1637>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.74814" 0.25" 0.26111">
+ <BRect 1.0" 9.74814" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 166>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 168>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 170>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 172>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 37>
+ <Unique 1666>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.33334" 0.25" 0.25">
+ <BRect 1.0" 1.33334" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 175>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 177>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 38>
+ <Unique 1738>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.09536" 0.25" 0.26111">
+ <BRect 1.0" 7.09536" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 180>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 182>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 184>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 186>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 39>
+ <Unique 1748>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.36111" 0.25" 0.25">
+ <BRect 1.0" 7.36111" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 189>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 191>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 40>
+ <Unique 1756>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.9287" 0.25" 0.26111">
+ <BRect 1.0" 8.9287" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 194>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 196>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 198>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 200>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 41>
+ <Unique 1772>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.52777" 0.25" 0.25">
+ <BRect 1.0" 9.52777" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 203>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 205>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 42>
+ <Unique 1808>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.16481" 0.25" 0.26111">
+ <BRect 1.0" 3.16481" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 208>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 210>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 212>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 214>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 43>
+ <Unique 1819>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.76389" 0.25" 0.25">
+ <BRect 1.0" 3.76389" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 217>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 219>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 44>
+ <Unique 1862>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.09537" 0.25" 0.26111">
+ <BRect 1.0" 6.09537" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 222>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 224>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 226>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 228>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 45>
+ <Unique 2146>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.69444" 0.25" 0.25">
+ <BRect 1.0" 7.69444" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 231>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 233>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 46>
+ <Unique 2197>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.77592" 0.25" 0.26111">
+ <BRect 1.0" 1.77592" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 236>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 238>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 240>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 242>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 47>
+ <Unique 2217>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.375" 0.25" 0.25">
+ <BRect 1.0" 2.375" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 245>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 247>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 48>
+ <Unique 1841>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.27592" 0.25" 0.26111">
+ <BRect 1.0" 8.27592" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 250>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 252>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 254>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 256>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 49>
+ <Unique 1850>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.54166" 0.25" 0.25">
+ <BRect 1.0" 8.54166" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 259>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 261>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 50>
+ <Unique 1862>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.26203" 0.25" 0.26111">
+ <BRect 1.0" 3.26203" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 264>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 266>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 268>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 270>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 51>
+ <Unique 1707>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.86111" 0.25" 0.25">
+ <BRect 1.0" 3.86111" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 1708>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 1709>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 52>
+ <Unique 2309>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.99814" 0.25" 0.26111">
+ <BRect 1.0" 7.99814" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 278>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 280>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 282>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 284>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 53>
+ <Unique 2319>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.59722" 0.25" 0.25">
+ <BRect 1.0" 8.59722" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 287>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 289>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 54>
+ <Unique 2005>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.98425" 0.25" 0.26111">
+ <BRect 1.0" 5.98425" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 292>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 294>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 296>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 298>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 55>
+ <Unique 2014>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.25" 0.25" 0.25">
+ <BRect 1.0" 6.25" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 301>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 303>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 56>
+ <Unique 1981>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.09536" 0.25" 0.26111">
+ <BRect 1.0" 9.09536" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 306>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 308>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 310>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 312>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 57>
+ <Unique 1741>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.69444" 0.25" 0.25">
+ <BRect 1.0" 9.69444" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 1742>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 1743>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 58>
+ <Unique 2389>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.97037" 0.25" 0.26111">
+ <BRect 1.0" 4.97037" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 320>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 322>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 324>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 326>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 59>
+ <Unique 2459>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.06944" 0.25" 0.25">
+ <BRect 1.0" 7.06944" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 329>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 331>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 60>
+ <Unique 2475>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.81759" 0.25" 0.26111">
+ <BRect 1.0" 4.81759" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 334>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 336>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 338>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 340>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 61>
+ <Unique 2543>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.58333" 0.25" 0.25">
+ <BRect 1.0" 6.58333" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 343>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 345>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 62>
+ <Unique 2562>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.35926" 0.25" 0.26111">
+ <BRect 1.0" 2.35926" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 348>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 350>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 352>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 354>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 63>
+ <Unique 2572>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.95833" 0.25" 0.25">
+ <BRect 1.0" 2.95833" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 357>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 359>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 64>
+ <Unique 2215>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.19258" 0.25" 0.26111">
+ <BRect 1.0" 8.19258" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 362>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 364>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 366>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 368>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 65>
+ <Unique 2224>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.45833" 0.25" 0.25">
+ <BRect 1.0" 8.45833" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 371>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 373>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 66>
+ <Unique 2236>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.73426" 0.25" 0.26111">
+ <BRect 1.0" 1.73426" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 376>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 378>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 380>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 382>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 67>
+ <Unique 2247>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.33333" 0.25" 0.25">
+ <BRect 1.0" 2.33333" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 385>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 387>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 68>
+ <Unique 2288>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.35925" 0.25" 0.26111">
+ <BRect 1.0" 7.35925" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 390>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 392>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 394>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 396>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 69>
+ <Unique 2300>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.29166" 0.25" 0.25">
+ <BRect 1.0" 8.29166" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 399>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 401>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 70>
+ <Unique 2365>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.56759" 0.25" 0.26111">
+ <BRect 1.0" 1.56759" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 404>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 406>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 408>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 410>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 71>
+ <Unique 2419>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.16667" 0.25" 0.25">
+ <BRect 1.0" 2.16667" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 413>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 415>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 72>
+ <Unique 1701>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.16481" 0.25" 0.26111">
+ <BRect 1.0" 6.16481" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 418>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 420>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 422>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 424>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 73>
+ <Unique 1711>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.09722" 0.25" 0.25">
+ <BRect 1.0" 7.09722" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 427>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 429>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 74>
+ <Unique 1764>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.23426" 0.25" 0.26111">
+ <BRect 1.0" 2.23426" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 432>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 434>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 436>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 438>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 75>
+ <Unique 1776>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.16667" 0.25" 0.25">
+ <BRect 1.0" 3.16667" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 441>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 443>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 76>
+ <Unique 1804>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.0537" 0.25" 0.26111">
+ <BRect 1.0" 6.0537" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 446>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 448>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 450>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 452>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 77>
+ <Unique 1816>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.98611" 0.25" 0.25">
+ <BRect 1.0" 6.98611" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 455>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 457>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 78>
+ <Unique 1861>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.45648" 0.25" 0.26111">
+ <BRect 1.0" 3.45648" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 460>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 462>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 464>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 466>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 79>
+ <Unique 1890>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.72222" 0.25" 0.25">
+ <BRect 1.0" 4.72222" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 469>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 471>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 80>
+ <Unique 1916>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.78981" 0.25" 0.26111">
+ <BRect 1.0" 7.78981" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 474>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 476>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 478>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 480>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 81>
+ <Unique 1930>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.38888" 0.25" 0.25">
+ <BRect 1.0" 9.38888" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 483>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 485>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 82>
+ <Unique 1982>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.77592" 0.25" 0.26111">
+ <BRect 1.0" 1.77592" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 488>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 490>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 492>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 494>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 83>
+ <Unique 2056>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.875" 0.25" 0.25">
+ <BRect 1.0" 2.875" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 497>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 499>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 84>
+ <Unique 2091>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.3037" 0.25" 0.26111">
+ <BRect 1.0" 8.3037" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 502>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 504>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 506>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 508>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 85>
+ <Unique 2157>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.85925" 0.25" 0.26111">
+ <BRect 1.0" 9.85925" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 511>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 513>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 515>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 517>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 86>
+ <Unique 2197>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.16667" 0.25" 0.25">
+ <BRect 1.0" 1.16667" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 520>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 522>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 87>
+ <Unique 2214>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.33148" 0.25" 0.26111">
+ <BRect 1.0" 4.33148" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 525>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 527>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 529>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 531>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 88>
+ <Unique 2226>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.26389" 0.25" 0.25">
+ <BRect 1.0" 5.26389" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 534>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 536>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 89>
+ <Unique 2443>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.99814" 0.25" 0.26111">
+ <BRect 1.0" 4.99814" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 539>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 541>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 543>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 545>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 90>
+ <Unique 2733>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.66667" 0.25" 0.25">
+ <BRect 1.0" 1.66667" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 548>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 550>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 91>
+ <Unique 1896>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.62315" 0.25" 0.26111">
+ <BRect 1.0" 1.62315" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 553>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 555>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 557>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 559>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 92>
+ <Unique 1905>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.88889" 0.25" 0.25">
+ <BRect 1.0" 1.88889" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 562>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 564>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 93>
+ <Unique 3092>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.77592" 0.25" 0.26111">
+ <BRect 1.0" 7.77592" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 567>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 569>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 571>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 573>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 94>
+ <Unique 3178>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.37499" 0.25" 0.25">
+ <BRect 1.0" 8.37499" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 576>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 578>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 95>
+ <Unique 1978>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.40093" 0.25" 0.26111">
+ <BRect 1.0" 1.40093" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 581>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 583>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 585>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 587>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 96>
+ <Unique 2049>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.66667" 0.25" 0.25">
+ <BRect 1.0" 2.66667" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 590>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 592>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 97>
+ <Unique 1759>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.56944" 0.25" 0.25">
+ <BRect 1.0" 8.56944" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 595>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 597>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 98>
+ <Unique 2070>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.48425" 0.25" 0.26111">
+ <BRect 1.0" 7.48425" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 600>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 602>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 604>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 606>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 99>
+ <Unique 2104>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.08333" 0.25" 0.25">
+ <BRect 1.0" 8.08333" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 609>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 611>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+> # end of AFrames
+<Page
+ <Unique 713331>
+ <PageType LeftMasterPage>
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 100>
+ <Unique 713332>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.0" 0.1569">
+ <BRect 1.0" 10.334" 6.0" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 101>
+ <Unique 713333>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 617>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.0" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 102>
+ <Unique 713335>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.0" 0.211">
+ <BRect 1.0" 0.5" 6.0" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 103>
+ <Unique 713336>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 104>
+ <Unique 713337>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.125">
+ <BRect 1.0" 1.0" 6.5" 9.125">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 625>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+> # end of Page
+<Page
+ <Unique 713364>
+ <PageType RightMasterPage>
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 105>
+ <Unique 713369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 629>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 106>
+ <Unique 713371>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 633>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 107>
+ <Unique 713506>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 479>
+ <PageType OtherMasterPage>
+ <PageTag `First'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 108>
+ <Unique 480>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 640>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 109>
+ <Unique 482>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 644>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 110>
+ <Unique 484>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 513>
+ <PageType OtherMasterPage>
+ <PageTag `cover'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 111>
+ <Unique 514>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 651>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 112>
+ <Unique 516>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 655>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 113>
+ <Unique 518>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713401>
+ <PageType ReferencePage>
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 713402>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <TLOrigin 1.0" 0.625">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713403>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.69444" 2.52778" 0.27778">
+ <BRect 1.0" 0.69444" 2.52778" 0.27778">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 662>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.16667">
+ <Point 1.83333" 0.16667">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 713405>
+ <Overprint No>
+ <TLOrigin 1.02845" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713406>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.76745" 2.52778" 0.09722">
+ <BRect 1.0" 1.76745" 2.52778" 0.09722">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ <PolyLine
+ <Unique 666>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.08333" 0.0534">
+ <Point 1.83333" 0.0534">
+ > # end of PolyLine
+ > # end of Frame
+> # end of Page
+<Page
+ <Unique 713409>
+ <PageType ReferencePage>
+ <PageTag `TOC'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 114>
+ <Unique 713410>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713411>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Table of Contents Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713416>
+ <PageType ReferencePage>
+ <PageTag `IX'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 115>
+ <Unique 713417>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 5.5" 1.625">
+ <BRect 1.5" 4.0" 5.5" 1.625">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713418>
+ <Overprint No>
+ <TLOrigin 1.5" 3.88623">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Index Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713427>
+ <PageType ReferencePage>
+ <PageTag `LOF'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 116>
+ <Unique 713428>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713429>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `List of Figures Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713432>
+ <PageType ReferencePage>
+ <PageTag `LOT'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 117>
+ <Unique 713433>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713434>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `List of Tables Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 10368>
+ <PageType BodyPage>
+ <PageNum `1'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 118>
+ <Unique 10369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 119>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713316>
+ <PageType BodyPage>
+ <PageNum `2'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 119>
+ <Unique 713317>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 120>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713319>
+ <PageType BodyPage>
+ <PageNum `3'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 120>
+ <Unique 713320>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 121>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713322>
+ <PageType BodyPage>
+ <PageNum `4'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 121>
+ <Unique 713323>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 122>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713325>
+ <PageType BodyPage>
+ <PageNum `5'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 122>
+ <Unique 713326>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 123>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713328>
+ <PageType BodyPage>
+ <PageNum `6'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 123>
+ <Unique 713329>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 124>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713436>
+ <PageType BodyPage>
+ <PageNum `7'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 124>
+ <Unique 713437>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 125>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713439>
+ <PageType BodyPage>
+ <PageNum `8'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 125>
+ <Unique 713440>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 126>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713654>
+ <PageType BodyPage>
+ <PageNum `9'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 126>
+ <Unique 713655>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 127>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 491>
+ <PageType BodyPage>
+ <PageNum `10'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 127>
+ <Unique 492>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 128>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 574>
+ <PageType BodyPage>
+ <PageNum `11'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 128>
+ <Unique 575>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 129>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1719>
+ <PageType BodyPage>
+ <PageNum `12'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 129>
+ <Unique 1720>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 130>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1722>
+ <PageType BodyPage>
+ <PageNum `13'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 130>
+ <Unique 1723>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 131>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1725>
+ <PageType BodyPage>
+ <PageNum `14'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 131>
+ <Unique 1726>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 132>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1728>
+ <PageType BodyPage>
+ <PageNum `15'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 132>
+ <Unique 1729>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 133>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1731>
+ <PageType BodyPage>
+ <PageNum `16'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 133>
+ <Unique 1732>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 134>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1734>
+ <PageType BodyPage>
+ <PageNum `17'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 134>
+ <Unique 1735>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 135>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1737>
+ <PageType BodyPage>
+ <PageNum `18'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 135>
+ <Unique 1738>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 136>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1740>
+ <PageType BodyPage>
+ <PageNum `19'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 136>
+ <Unique 1741>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 137>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1743>
+ <PageType BodyPage>
+ <PageNum `20'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 137>
+ <Unique 1744>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 138>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1746>
+ <PageType BodyPage>
+ <PageNum `21'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 138>
+ <Unique 1747>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 139>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1749>
+ <PageType BodyPage>
+ <PageNum `22'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 139>
+ <Unique 1750>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 140>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1752>
+ <PageType BodyPage>
+ <PageNum `23'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 140>
+ <Unique 1753>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 141>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1755>
+ <PageType BodyPage>
+ <PageNum `24'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 141>
+ <Unique 1756>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 142>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1758>
+ <PageType BodyPage>
+ <PageNum `25'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 142>
+ <Unique 1759>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 143>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1761>
+ <PageType BodyPage>
+ <PageNum `26'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 143>
+ <Unique 1762>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 144>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2022>
+ <PageType BodyPage>
+ <PageNum `27'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 144>
+ <Unique 2023>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 145>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1929>
+ <PageType BodyPage>
+ <PageNum `28'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 145>
+ <Unique 1930>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713349>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.0">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 100>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 713341>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Current Date (Long)'>
+ <Unique 713344>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 713347>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713350>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 101>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713351>
+ <PgfTag `header right'>
+ <Pgf
+ <PgfAlignment Left>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 102>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FLocked No>
+ > # end of Font
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 444>
+ > # end of Variable
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FLocked No>
+ > # end of Font
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 501>
+ > # end of Variable
+ <Variable
+ <VariableName `protocol'>
+ <Unique 447>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713477>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 103>
+ <String `Release 6.4'>
+ <Char Tab>
+ <Char Tab>
+ <String `X Version 11'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713362>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 104>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713374>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 105>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713381>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 106>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713510>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 107>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 713559>
+ > # end of Variable
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 504>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 715799>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 485>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 108>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 489>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 109>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 496>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 110>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 491>
+ > # end of Variable
+ <Char Tab>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 519>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 111>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 523>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 112>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 527>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 113>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 525>
+ > # end of Variable
+ <Char Tab>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `TOC'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713412>
+ <Pgf
+ <PgfTag `1HeadingTOC'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.5">
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 114>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713413>
+ <Pgf
+ <PgfTag `2HeadingTOC'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713414>
+ <Pgf
+ <PgfTag `3HeadingTOC'>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.5">
+ <PgfSpBefore 0.0 pt>
+ <PgfBlockSize 1>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `IX'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713419>
+ <Pgf
+ <PgfTag `Level2IX'>
+ <PgfFIndent 0.125">
+ <PgfLIndent 0.375">
+ <PgfLeading 1.0 pt>
+ <PgfNumTabs 0>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 115>
+ <String `Level2IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713420>
+ <Pgf
+ <PgfTag `Level1IX'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String `Level1IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713421>
+ <Pgf
+ <PgfTag `SpecIX'>
+ <PgfLIndent 0.0">
+ <PgfLeading 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String ` 1, 2'>
+ <Char EnDash>
+ <String `3'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713422>
+ <Pgf
+ <PgfTag `SortSpecIX'>
+ > # end of Pgf
+ <ParaLine
+ <String `<$symbols\><$numerics\><$alphabetics\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713423>
+ <Pgf
+ <PgfTag `GroupTitlesIX'>
+ <PgfSpBefore 11.0 pt>
+ <PgfWithNext Yes>
+ > # end of Pgf
+ <ParaLine
+ <String `Symbols[\\ ];Numerics[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713424>
+ <Pgf
+ <PgfTag `IndexIX'>
+ <PgfSpBefore 0.0 pt>
+ <PgfWithNext No>
+ > # end of Pgf
+ <ParaLine
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713425>
+ <Pgf
+ <PgfTag `Paragraph'>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOF'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713430>
+ <Pgf
+ <PgfTag `FigureLOF'>
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfBlockSize 2>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 116>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOT'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713435>
+ <Pgf
+ <PgfTag `TableTitleLOT'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 117>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 675>
+ <PgfTag `1Heading'>
+ <PgfNumString `1\t'>
+ <ParaLine
+ <TextRectID 118>
+ <String `X Print Service Overview'>
+ <Marker
+ <MType 2>
+ <MText `overview'>
+ <MCurrPage `1'>
+ <Unique 1626>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1976>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Service allows X imaging to non-display devices, such as printers. It is called the X '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 Print\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `Service because the technology will primarily be applied to printing. The technology can, however, be '>
+ >
+ <ParaLine
+ <String `applied to a range of non-display devices. To date, print rendering technologies have evolved separately '>
+ >
+ <ParaLine
+ <String `from display rendering technologies. The thrust of the X Print Service is to converge the evolution of these '>
+ >
+ <ParaLine
+ <String `print and display technologies by extending the use of the X imaging model.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1977>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For example, today\xd5 s X environment provides a number of APIs and technologies for rendering to a display, '>
+ >
+ <ParaLine
+ <String `including:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1978>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Xlib'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1979>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `PEXlib'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1980>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `X Imaging Extension'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1981>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `OSF/Motif Toolkit'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1982>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Scalable Fonts'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1983>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `By retaining and supplementing these (and many more) standard APIs with one small print-specific API, '>
+ >
+ <ParaLine
+ <String `libXp, the X Print Service will allow an existing X application to render against a printer in addition to tradi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tional display devices with small changes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1986>
+ <PgfTag `2Heading'>
+ <PgfNumString `1.1\t'>
+ <ParaLine
+ <String `X Print Service Core Components'>
+ <Marker
+ <MType 2>
+ <MText `core components'>
+ <MCurrPage `1'>
+ <Unique 1627>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1987>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Service is made up of the following core components:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1988>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `X Print Extension - A new X-Server Extension and corresponding X Print Extension Protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `libXp - The X Print Extension Library which provides an API for applications to the X Print Exten'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `sion Protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1990>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `X Print \xd2 DDX\xd3 Drivers - DDX-level drivers for the X Server that generate page description lan'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `guages (PDL) such as PCL and Postscript.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1991>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Configuration Files and Defaults - Configuration files that describe the capabilities of several '>
+ >
+ <ParaLine
+ <String `printer models, and other X Print Server configuration files.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1992>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Service is enhanced by the addition of the following components that are not included in this '>
+ >
+ <ParaLine
+ <String `standard:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1993>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `libDtPrint - A library of print-specific GUIs tuned to several reference page-description-languages '>
+ >
+ <ParaLine
+ <String `and printer models. See the Common Desktop Environment Specification, Version 2.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1994>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `dtpdm - Also known as the Dt Print Dialog Manager, a daemon-like process that provides second'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ary printer-specific GUIs that handle specific printer and spooler setup tasks. See the Common '>
+ >
+ <ParaLine
+ <String `Desktop Environment Specification, Version 2.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2000>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Several keywords and concepts used in this specification were borrowed from the abstract standard '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `ISO '>
+ >
+ <ParaLine
+ <String `10175'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the subsetted standard and implementation represented by '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `POSIX 1387.4'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and the yet further subset'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ted implementation represented by OSF '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `Palladium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The X Print Service does not attempt to duplicate the '>
+ >
+ <ParaLine
+ <String `functionality or APIs provided by any of these print subsystems, or by any other print subsystems such as '>
+ >
+ <ParaLine
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `System V lp'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `BSD lp'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. It does, however, attempt to allow implementations to work with these print sub'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `system, and its architecture is open enough to allow tighter binding to a specific print subsystem in the '>
+ >
+ <ParaLine
+ <String `future.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2023>
+ <PgfTag `2Heading'>
+ <PgfNumString `1.2\t'>
+ <ParaLine
+ <TextRectID 119>
+ <String `X Print Service Key Concepts'>
+ <Marker
+ <MType 2>
+ <MText `key concepts'>
+ <MCurrPage `2'>
+ <Unique 1628>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2024>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The center of the X Print Service is the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. To an '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X application'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, it should look and behave like a '>
+ >
+ <ParaLine
+ <String `regular '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` with the following enhancements.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2081>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-1.\t'>
+ <ParaLine
+ <String `X Print Service Key Concepts Diagram'>
+ <AFrame 1>
+ >
+ > # end of Para
+ <Para
+ <Unique 2082>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` starts, it '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `may '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `read'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` a'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` configuration file for instructions concerning which '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `print DDX '>
+ >
+ <ParaLine
+ <String `drivers'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to load and which printer names to support. It may also read some DDX dependent configuration '>
+ >
+ <ParaLine
+ <String `files.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2083>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `At this point, the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` knows which printers to support, and has access to printer model configura'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion files that describe the capabilities of the printer models. Parallel to the printer model configuration files '>
+ >
+ <ParaLine
+ <String `are some printer attribute configuration files which can be modified if per-printer customization is desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2084>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When an application wishes to print, it can make a display connection to the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and ask to see '>
+ >
+ <ParaLine
+ <String `the list of available printers by way of the '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request. Once the application has selected a '>
+ >
+ <ParaLine
+ <String `printer, it can create and set a '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` using '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1587>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` represents the embodiment of the printer selected. It is initialized by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` a'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `t '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` time to contain a printer\xd5 s default capabilities as well as the description of its overall capa'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `bilities, and to maintain the state of settings on the printer, the state of rendering against the printer, and the '>
+ >
+ <ParaLine
+ <String `rendered output. The Print Context affects how the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX driver'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` generates its page description language '>
+ >
+ <ParaLine
+ <String `(PDL), and how the PDL is submitted to a spooler. The Print Context may also affect fonts and other ele'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <TextRectID 120>
+ <String `ments in the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `dix layer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` of the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The most outwardly visible aspects of a Print Context '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `are t'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `he '>
+ >
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `attribute pools'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` contained within it. These attributes express and control server, printer, job, document and '>
+ >
+ <ParaLine
+ <String `page options. Attribute pools can be accessed and modified using '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2085>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Because Print Contexts can be shared among processes, applications can enlist the help of a '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `secondary pro'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `cess'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to manipulate print options in the Print Context rather than taking on the task directly. The convenience '>
+ >
+ <ParaLine
+ <String `routine '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` i'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `s provided to enlist the help of the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Dialog Manager'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. By externalizing '>
+ >
+ <ParaLine
+ <String `this task, new configuration dialogs and capabilities can be added without having to modify individual appli'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `cations.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2086>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In most cases, the dialogs displayed by a '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Dialog Manager'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be tuned to the capabilities of the corre'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `sponding '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX driver'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. It is possible to have multiple '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Dialog Managers'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, each one responsible for han'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `dling setup tasks for a different PDL.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2087>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Once the application has, with or without a '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Dialog Manager\xd5 s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` help, set options within the Print Con'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `text, the application can make calls such as '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to delineate jobs, documents and pages within a '>
+ >
+ <ParaLine
+ <String `sequence of normal X calls. Conceptually, a '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `job'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a collection of '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `documents'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, where each document is in turn '>
+ >
+ <ParaLine
+ <String `a collection of '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `pages'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. When '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, the resulting PDL is either sent to a print spooler or can be '>
+ >
+ <ParaLine
+ <String `retrieved by the application.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2105>
+ <PgfTag `2Heading'>
+ <PgfNumString `1.3\t'>
+ <ParaLine
+ <String `The Developer\xd5 s/Integrator\xd5 s View'>
+ <Marker
+ <MType 2>
+ <MText `developer\xd5 s view;integrator\xd5 s view'>
+ <MCurrPage `3'>
+ <Unique 1629>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2106>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The developer or integrator is the person who will modify an '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X application'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to use the X Print Service.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2107>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `From the application\xd5 s perspective, it can attach to one of two nearly identical X Servers (see figure points '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `A'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `and '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `B'>
+ <Font
+ <FTag `Emphasis'>
+ <FLocked No>
+ > # end of Font
+ <String ` in the '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `following diagram). The primary difference is that when connected to the'>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String ` X Print Serve'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `r addi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tional calls can be made to delineate print \xd2 jobs\xd3 , \xd2 documents\xd3 and \xd2 pages\xd3 , and to create and modify a Print '>
+ >
+ <ParaLine
+ <String `Context. The functions of the two servers may be combined into a single process, but applications will usu'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ally find it convenient to open separate connections for video and print rendering.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2108>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Conceptually, a \xd2 job\xd3 is a collection of \xd2 documents\xd3 , where each document is in turn a collection of '>
+ >
+ <ParaLine
+ <String `\xd2 pages\xd3 . Depending on the print facilities underlying the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (for example, a print management '>
+ >
+ <ParaLine
+ <String `system conforming to '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `POSIX 1387.4'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), these delineations may be translated into tangible functionality.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2166>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-2.\t'>
+ <ParaLine
+ <TextRectID 121>
+ <String ` Developer\xd5 s/Integrator\xd5 s View'>
+ <AFrame 17>
+ >
+ > # end of Para
+ <Para
+ <Unique 2167>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A simple X application supplemented with some of the libXp routines might look like this:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2168>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `/*'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * Connect to the X Print Server'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `pdpy = '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XOpenDisplay'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( printServerName );'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2169>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `/*'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2170>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` * See if the printer \xd2 myLaser\xd3 is available'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2171>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2172>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `plist = '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, \xd2 myLaser\xd3 , &plistCnt );'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2173>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2174>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `/*'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2175>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` * Initialize a print context representing \xd2 mylaser\xd3 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2176>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `pcontext = '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, plist[0].'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `n'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ame );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpFreePrinterList'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `( plist );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `/*'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * Possibly modify attributes in the print context'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `attrPool = '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pcontext, poolType );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `/* twiddle attributes */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pcontext, poolType, attrPool, XPAttrMerge ); '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2177>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2178>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <TextRectID 122>
+ <String `/*'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Set a print context, then start a print job against it'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2179>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pcontext );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, XPSpool )'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` /'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * Generate the first page'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` pscreen = '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetScreenOfContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pcontext );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` pwin = '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XCreateWindow'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pscreen, ..... );'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2180>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2181>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pwin'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, True )'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` usual_rendering_stuff( pdpy, pscreen, pwin );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` /*'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * Generate more pages, and so on...'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pwin'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, True'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` more_rendering_stuff( pdpy, pscreen, pwin );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy );'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `/*'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * End the print job - the final results are sent by the'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * X Print Server to the spooler subsystem'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` *'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `/'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy );'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2182>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDestroyContext'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `( pdpy, pcontext );'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2183>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2196>
+ <PgfTag `2Heading'>
+ <PgfNumString `1.4\t'>
+ <ParaLine
+ <String `The Printer Vendor\xd5 s View'>
+ <Marker
+ <MType 2>
+ <MText `printer vendor\xd5 s view'>
+ <MCurrPage `5'>
+ <Unique 1632>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2197>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The printer vendor is the person or company that wishes to enhance the X Print Service to support a new '>
+ >
+ <ParaLine
+ <String `printer model or a new page description language. Enhancements may range from simple ones such as pro'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `viding new printer model configuration files, to more complex ones such as providing a new '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX driver'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <String `corresponding '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Dialog Manager'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2198>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The major elements within the X Print Service that can be enhanced are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2199>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX driver'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` layer in the X '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. New DDX drivers can be added to support new page '>
+ >
+ <ParaLine
+ <String `description languages, provide more capabilities, or provide tighter integration with a given printer '>
+ >
+ <ParaLine
+ <String `model.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2200>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print Dialog Manager'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, either as a new executable or an enhancement to an existing Print Dia'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `log Manager. It can be used to provide dialogs that expose highly printer-specific options to the user '>
+ >
+ <ParaLine
+ <String `and that communicate '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `w'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ith the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX driver'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` by way of the Print Context attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2201>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `The printer model files. These files describe the capabilities and defaults of printers based on the '>
+ >
+ <ParaLine
+ <String `model.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2202>
+ <PgfTag `2Heading'>
+ <PgfNumString `1.5\t'>
+ <ParaLine
+ <String `The System Administrator\xd5 s View'>
+ <Marker
+ <MType 2>
+ <MText `system administrator\xd5 s view'>
+ <MCurrPage `5'>
+ <Unique 1633>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2203>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The system administrator is the person who configures and maintains the system processes and files associ'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ated with the X Print Service. An X Print Service implementation will typically have built-in fallback '>
+ >
+ <ParaLine
+ <String `defaults for nearly everything, but in custom environments it will be configured considerably.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2204>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 123>
+ <String `The X Print Service architecture has been designed so that support for specific page description languages '>
+ >
+ <ParaLine
+ <String `and spooler subsystems is isolated to the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server\xd5 s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX layer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and a corresponding layer in the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Print '>
+ >
+ <ParaLine
+ <String `Dialog Manager'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Using this architecture support for new page description languages and spooler subsystems '>
+ >
+ <ParaLine
+ <String `can be added centrally, without reconfiguring applications.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2205>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Support information for specific types of printers and descriptions of the printer topology is typically stored '>
+ >
+ <ParaLine
+ <String `in centralized configuration files, which are maintained by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Using libXp, the configuration '>
+ >
+ <ParaLine
+ <String `information can be retrieved both by applications and by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Dt Print Dialog Manager'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2206>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The key areas of configuration and system administration are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2207>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `X Print Service Startup - Deciding whether a \xd2 per-user \xd3 or \xd2 global service\xd3 model of operation is '>
+ >
+ <ParaLine
+ <String `desired. In the per-user model, a separate X Print Server process with its own Print Dialog Manager '>
+ >
+ <ParaLine
+ <String `exists for each desktop. In the global service model, a centralized X Print server process services '>
+ >
+ <ParaLine
+ <String `multiple users in a workgroup. Typically, there may be one such centralized process per shared '>
+ >
+ <ParaLine
+ <String `printer.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2208>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` Startup - '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Co'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `nfiguration files '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `to c'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ontrol which '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `p'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `rinters '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `are available.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2209>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Attribute files - A collection of files that define the full range of capabilities of the printers accessed '>
+ >
+ <ParaLine
+ <String `by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Servers'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (e.g. 150, 300 and 600dpi supported), and default values (e.g. use 300dpi).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2210>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Printer Model files - A collection of files typically supplied by a printer vendor to describe the capa'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `bilities of specific printer models (e.g. Laserjet 4si). These files will generally not require reconfig'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `uration, but may be useful to reference when configuring files that describe the actual physical '>
+ >
+ <ParaLine
+ <String `printers available (e.g. eliminate the duplex printing option because the printer\xd5 s duplexer isn\xd5 t '>
+ >
+ <ParaLine
+ <String `working)'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2280>
+ <PgfTag `1Heading'>
+ <PgfNumString `2\t'>
+ <ParaLine
+ <TextRectID 124>
+ <String `X Print Service Extension Library'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2284>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `These functions provide access to the X Print Protocol Extension to X. In addition, some convenience func'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tions over the X Print Extension Protocol and core X Protocol are provided which make it easier for an '>
+ >
+ <ParaLine
+ <String `application programmer to use the X Print Service.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2286>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Service Extension Library concentrates on print job, document and page management. It '>
+ >
+ <ParaLine
+ <String `includes the following calls:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2287>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpCreateContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2288>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpSetContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2289>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2290>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpDestroyContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2291>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetScreenOfContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2292>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPageDimensions'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2293>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpStartJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2294>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpEndJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2295>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpCancelJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2296>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpStartDoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2297>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpEndDoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2298>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpCancelDoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2299>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpPutDocumentData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2300>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetDocumentData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2301>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpStartPage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2302>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpEndPage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2303>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpCancelPage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2304>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpSelectInput'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2305>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpInputSelected'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2306>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2307>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpSetAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2308>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetOneAttribute'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2309>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetPrinterList'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2310>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpFreePrinterList - convenience routine'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2311>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpRehashPrinterLis'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `t'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2312>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2313>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpQueryExtension - convenience routine'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2314>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `XpQueryScreens'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2315>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetPdmStartParams - convenience routin'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `e'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1762>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpSetLocaleHinter'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1763>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XpGetLocaleHinter'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2321>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.1\t'>
+ <ParaLine
+ <String `Dependencies'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3671>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Service is an extension to the core X protocol, and cannot be used outside of the X environment.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3672>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.2\t'>
+ <ParaLine
+ <String `Library Calls'>
+ <Marker
+ <MType 2>
+ <MText `<$startrange\>library calls;<$startrange\>calls, library'>
+ <MCurrPage `7'>
+ <Unique 1635>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1702>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The header file '>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FLocked No>
+ > # end of Font
+ <String `X11/extensions/Print.h'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` contains prototypes for the following routines.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3673>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.1 \t'>
+ <ParaLine
+ <TextRectID 125>
+ <String `Creating and Managing Print Contexts'>
+ <Marker
+ <MType 2>
+ <MText `creating print contexts;managing print contexts'>
+ <MCurrPage `8'>
+ <Unique 1636>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1549>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to create and initialize a new print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1552>
+ <PgfTag `LibraryRequest'>
+ <Pgf
+ <PgfLIndent 0.65">
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <AFrame 34>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `XPContext'>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpCreateContext'>
+ <MCurrPage `8'>
+ <Unique 1637>
+ > # end of Marker
+ <String `XpCreateContext ('>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `display, printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2332>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1583>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `char '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1584>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1588>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 35>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `The name of a printer on display. String encoded as COMPOUND_TEXT.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2341>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` creates a new print context'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` that is i'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `nitialize'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `d w'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ith the default printer attributes and other '>
+ >
+ <ParaLine
+ <String `information available for printer_name on display.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` A'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` print context maintains the printer name, print '>
+ >
+ <ParaLine
+ <String `attributes, font capabilities, print (rendering) state and results, and is the object upon which the Xp calls act.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2342>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `If the library fails to generate a new print context-id, a value of '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `None'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is returned, otherwise a print context-id '>
+ >
+ <ParaLine
+ <String `is always returned. If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is invalid, a '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadMatch'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is generated later by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2343>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `A call to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will return a valid list of values for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. All printer name values in the X '>
+ >
+ <ParaLine
+ <String `Print Service are encoded as '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `COMPOUND_TEXT'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (of which the ISO-8859-1 code-set is a proper subset).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2344>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `As soon as a print context is created, the print attributes in it can be '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `accessed and '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `modified by calling '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and the event selections in it can be modified by calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpInputSelected'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` Other Xp calls that explicitly take a print context-id as a parameter will operate directly on '>
+ >
+ <ParaLine
+ <String `that print context.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` All Xp and X calls without a print context'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `-id'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` parameter (for example, all rendering ori'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ented calls like '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XDrawLine'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) require that a print context be set '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `on the display connection '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `(see '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `). Failure to set a print context prior to '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `calling a print-c'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ontext-dependent call'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` w'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ill result in the '>
+ >
+ <ParaLine
+ <String `generation of an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2345>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XPContext returned by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is an XID, and can be used to set the print context on display '>
+ >
+ <ParaLine
+ <String `connections by calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The XPContext id can be shared between processes and display con'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `nections. It is the responsibility of the clients sharing a print context to coordinate their usage of the context; '>
+ >
+ <ParaLine
+ <String `for example they must ensure that in-use print contexts are not prematurely destroyed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2346>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `context_id'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` remains valid for all clients until 1) the client creating the print context closes its '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` con'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `nection, or 2) any client calls '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `context_id'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can be kept valid after the creating client\xd5 s '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` connection closes if '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XSetCloseDownMode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called on '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` with '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `RetainPermanent'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `RetainTempo'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `rary'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2347>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `After creating a print context, and possibly modifying the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `document-format'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` using a value '>
+ >
+ <ParaLine
+ <String `from the list of available formats shown in the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrinterAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the applica'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion must query the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` via '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetScreenOfContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` for the screen that has been associated with the '>
+ >
+ <ParaLine
+ <String `print context, and then create all server resources that will be used in the print job on that screen. Failure to '>
+ >
+ <ParaLine
+ <String `do so will result in undefined behavior.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2348>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `client\xd5 s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` locale (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) is included in the request as a '>
+ >
+ <ParaLine
+ <String `\xd2 hint\xd3 to the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `supported by the implementation,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will use the hint to ini'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tialize the attribute pools with any localized attribute values (for example, the human readable '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrinterAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `attribute \xd2 descriptor\xd3 may be available in several different languages, and the hint will be used to select one). '>
+ >
+ <ParaLine
+ <String `If the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cannot understand the hint, the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` chooses a default value'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2353>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `This function can generate a '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadMatch'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error if the specified printer_name does not exist on display, or if the '>
+ >
+ <ParaLine
+ <String `print server could not interpret the code set specified in printer_name.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2179>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2159>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to set or unset a print context with the specified display connection to the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2358>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 36>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpSetContext'>
+ <MCurrPage `8'>
+ <Unique 1638>
+ > # end of Marker
+ <String `void XpSetContext ('>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2366>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1647>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <TextRectID 126>
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2368>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2370>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 37>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `A pre-existing print context on the same X Server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2375>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sets the print context for a '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` connection. All subsequent print operations that do not '>
+ >
+ <ParaLine
+ <String `explicitly take a print context-id (for example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) on '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will use and act upon the print context '>
+ >
+ <ParaLine
+ <String `set by this call, until the print context is unset or '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called. The print context can be set and '>
+ >
+ <ParaLine
+ <String `used on multiple jobs, if not destroyed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2376>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context is '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `None'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `will u'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `nset '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `(disassociate) t'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `he print context previously associated with '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `If there was no previously associated print context, no action is taken. T'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `he content of the formerly '>
+ >
+ <ParaLine
+ <String `associated print context is not affected by this call, and other display connections may continue to use the '>
+ >
+ <ParaLine
+ <String `print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2377>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Since font capabilities can vary from printer to printer, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` may modify the list of available fonts '>
+ >
+ <ParaLine
+ <String `(see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) on '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and the actual set of usable fonts (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XLoadFont'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `). A unique combination of'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `fonts '>
+ >
+ <ParaLine
+ <String `may be available from within a given print context; a client should not assume that all the fonts available '>
+ >
+ <ParaLine
+ <String `when no print context is set will be available when a print context is set.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1711>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When a print context is set on a display connection, the default behavior of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ >
+ <ParaLine
+ <String `to list all of the fonts normally associated with the X print server (i.e. fonts containing glyphs) as well as any '>
+ >
+ <ParaLine
+ <String `internal printer fonts defined for the printer. The '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is provided so that applications '>
+ >
+ <ParaLine
+ <String `can control the behavior of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `and is'>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `typically used to show just internal printer '>
+ >
+ <ParaLine
+ <String `fonts. Using only internal printer fonts is useful for performance reasons; the glyphs associated with the font '>
+ >
+ <ParaLine
+ <String `are contained within the printer and do not have to be downloaded.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1712>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If the value of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` includes '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-glyph-fonts'>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will include all of '>
+ >
+ <ParaLine
+ <String `the fonts available to the server that have glyphs associated with them. If the value of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `includes '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-internal-printer-fonts'>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will include all of the fonts defined as '>
+ >
+ <ParaLine
+ <String `internal printer fonts.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2379>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When the print context is unset or '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, the available fonts on '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` revert back to '>
+ >
+ <ParaLine
+ <String `what they were previously'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2382>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2387>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1687>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to get the current print context-id for a display connection.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1686>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 38>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `XPContext '>
+ <Marker
+ <MType 2>
+ <MText `XpGetContext'>
+ <MCurrPage `9'>
+ <Unique 1639>
+ > # end of Marker
+ <String `XpGetContext ('>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2395>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1696>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 39>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifi'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `es a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1732>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns the '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `id'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` of the current print context associated with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If a print context has not been '>
+ >
+ <ParaLine
+ <String `set, a value of '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `None'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is returned.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2154>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1733>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to unset and destroy a print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2412>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 40>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpDestroyContext'>
+ <MCurrPage `9'>
+ <Unique 1640>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `XpDestroyContext'>
+ <MCurrPage `9'>
+ <Unique 1647>
+ > # end of Marker
+ <String `void XpDestroyContext ('>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1767>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1768>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1769>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1775>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 41>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Specifies the print context to destroy.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2424>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 127>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` closes any outstanding associations between the print context and any display connection'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <String `and then destroys the print context. All display connections using the print context will no longer be able to '>
+ >
+ <ParaLine
+ <String `access the print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2425>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Destroying a print context will cause any in-progress pages, documents and jobs to be canceled within the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X '>
+ >
+ <ParaLine
+ <String `Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2427>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2432>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.2 \t'>
+ <ParaLine
+ <String `Obtaining the Screen for a Print Context'>
+ <Marker
+ <MType 2>
+ <MText `obtaining screen for context;print context, obtaining screen for;screen for print context'>
+ <MCurrPage `10'>
+ <Unique 1641>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1805>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetScreenOfContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to obtain a pointer to the screen associated with the specified print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1813>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 42>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Screen '>
+ <Marker
+ <MType 2>
+ <MText `XpGetScreenOfContext'>
+ <MCurrPage `10'>
+ <Unique 1642>
+ > # end of Marker
+ <String `*XpGetScreenOfContext ('>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1814>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1815>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1816>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1822>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 43>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `A pre-existing print context. This argument is currently ignored, but must be specified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1838>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetScreenOfContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns the screen that is associated with the current print context of display. This call '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `must be m'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ade after '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to determine which specific screen other X resources '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `must be c'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `reated on.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1720>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Each printer supported by a print server is associated with exactly one of the screens returned in the connec'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion setup reply. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1856>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetScreenOfContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will generate an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error if print_context is invalid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2457>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.3 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Obtaining Page Dimensions'>
+ <Marker
+ <MType 2>
+ <MText `obtaining page dimensions;page dimensions, obtaining'>
+ <MCurrPage `10'>
+ <Unique 1643>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1859>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPageDimensions'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` to get the page dimensions for the current printer settings.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1867>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 44>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Status '>
+ <Marker
+ <MType 2>
+ <MText `XpGetPageDimensions'>
+ <MCurrPage `10'>
+ <Unique 1644>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `'>
+ <MCurrPage `10'>
+ <Unique 1645>
+ > # end of Marker
+ <String `XpGetPageDimensions ('>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context, width, height, reproducible_area'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1868>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1869>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1885>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `unsigned short *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `width'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1893>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `unsigned short *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `height'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1899>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XRectangle*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `reproducible_area'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2107>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2111>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `A pre-existing print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2112>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `width'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the pixel width of the page currently selected in the print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2113>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `height'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the pixel height of the page currently selected in the print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2114>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 45>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `reproducible_area'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the net reproducible area of the page currently selected in the print context, '>
+ >
+ <ParaLine
+ <String `expressed in pixel offsets and dimensions.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2480>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPageDimensions'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` considers the medium currently selected in the print context (derived in part from '>
+ >
+ <ParaLine
+ <String `default-medium, default-input-tray, input-trays-medium, content-orientation, default-resolution), and returns '>
+ >
+ <ParaLine
+ <String `the total width and height of the page in pixels, and the net reproducible area within the total width and '>
+ >
+ <ParaLine
+ <String `height. The net reproducible area is the portion of the page on which the printer is physically capable of '>
+ >
+ <ParaLine
+ <String `placing ink.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2124>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPageDimensions'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` returns a '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `Status'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` of '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `0'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` on failure, or '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `1'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` on success.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2482>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPageDimensions'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1976>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2003>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 128>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetImageResolution '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `to set the resolution for subsequent '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` requests.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1985>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 95>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Bool '>
+ <Marker
+ <MType 2>
+ <MText `XpGetPageDimensions'>
+ <MCurrPage `11'>
+ <Unique 1983>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `'>
+ <MCurrPage `11'>
+ <Unique 1984>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `XpSetImageResolution'>
+ <MCurrPage `11'>
+ <Unique 2147>
+ > # end of Marker
+ <String `XpSetImageResolution ('>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context, image_res, prev_res_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1986>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1987>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1988>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `image_res'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `prev_res_return'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1991>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1992>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the print context on which to set the resolution.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1993>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `image_res'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the image resolution in pixels per inch.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1994>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 96>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `prev_res_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the previous image resolution in pixels per inch.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2116>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetImageResolution'>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `True'>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String ` if the printer server allowed the resolution to be set, otherwise '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `False'>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ >
+ <ParaLine
+ <String `returned.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2000>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetImageResolution'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` sets the resolution for subsequent '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` requests to the screen of the specified print '>
+ >
+ <ParaLine
+ <String `context. If the return value is '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `False'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, then the print server does not support image scaling for the particular res'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `olution given the current configuration of the printer, and the application is responsible for any desired scal'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ing. If the return value is '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `True'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, then the contents of any subsequent '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` request to a Pixmap or to a '>
+ >
+ <ParaLine
+ <String `Window on the screen of the specified print context will automatically be scaled as part of the '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `request. The scale factor is:'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2061>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `default_printer_resolution / image_res'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2062>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Where default_printer_resolution is the current value of that page attribute. Only the image itself is scaled '>
+ >
+ <ParaLine
+ <String `(meaning the effective width and height of the image change), the dst-x and dst-y parameters to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are '>
+ >
+ <ParaLine
+ <String `not altered.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2063>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `As a special case, a value of zero for image_res resets the resolution to automatically track the printer reso'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `lution; in this case (which is also the default setting for a newly created print context), subsequent images '>
+ >
+ <ParaLine
+ <String `will not be scaled.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2064>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If the return value is '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `True'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and prev_res_return is a non-'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` pointer, then the previous image resolution that '>
+ >
+ <ParaLine
+ <String `was set for the print context is stored in prev_res_return.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2065>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetImageResolution'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `False'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` immediately if image_res is negative or greater than 65535.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1642>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetImageResolution'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2067>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2068>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetImageResolution '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `to get the current image resolution for a print context.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2077>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 98>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `int '>
+ <Marker
+ <MType 2>
+ <MText `XpGetPageDimensions'>
+ <MCurrPage `11'>
+ <Unique 2075>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `'>
+ <MCurrPage `11'>
+ <Unique 2076>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `XpGetImageResolution'>
+ <MCurrPage `11'>
+ <Unique 2148>
+ > # end of Marker
+ <String `XpGetImageResolution ('>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2078>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2079>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2083>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2084>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 99>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the print context on which to get the resolution.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1649>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetImageResolution'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` returns the current image resolution for the specified print context. A value of zero '>
+ >
+ <ParaLine
+ <String `means the resolution automatically tracks the printer resolution. If the request fails in some way, a negative '>
+ >
+ <ParaLine
+ <String `value is returned.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1643>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetImageResolution'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2488>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.4 \t'>
+ <ParaLine
+ <TextRectID 129>
+ <String `Starting, Ending, and Canceling Jobs'>
+ <Marker
+ <MType 2>
+ <MText `jobs, starting, ending, and canceling;starting jobs;ending jobs;canceling jobs'>
+ <MCurrPage `12'>
+ <Unique 1646>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2143>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to indicate the beginning of a single print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2189>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 46>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpStartJob'>
+ <MCurrPage `12'>
+ <Unique 1659>
+ > # end of Marker
+ <String `void XpStartJob '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, output_mode)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2192>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2205>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPSaveData '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2207>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2210>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 47>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies how the printer output data is to be handled.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2513>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` signals the beginning of a new print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2514>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If output_mode is '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will automatically spool the printer output. If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` buffers the document output for retrieval by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. In this '>
+ >
+ <ParaLine
+ <String `case, the print server suspends processing further requests on this print context until some other client sends '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Subsequent operations that use the print context may be suspended at any time pending '>
+ >
+ <ParaLine
+ <String `the processing of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` replies to read any buffered output.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2515>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSaveData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` values for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `are defined in <'>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `X11/extensions/Print.h'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\>.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1727>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `#define '>
+ <Char Tab>
+ <String `XPSpool'>
+ <Char Tab>
+ <String `1'>
+ <Char Tab>
+ <String `/* Job data sent to spooler */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1730>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPGetData'>
+ <Char Tab>
+ <String `2'>
+ <Char Tab>
+ <String `/* Job data via XpGetDocumentData */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2517>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sets the job-owner job attribute (included in the XPJobAttr pool) immediately prior to issuing the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request. On POSIX systems, the j'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `ob-owner'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is set using '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `getpwuid_r'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` on the result of '>
+ >
+ <ParaLine
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `getuid'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. This attribute may be used by the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to identify the user to the spooler.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1900>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `All changes to the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute pool (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `must be m'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ade prior to calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, after '>
+ >
+ <ParaLine
+ <String `which an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated if changes are attempted, until '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1648>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` has completed the '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1935>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Conceptually, a \xd2 Job\xd3 is a collection of \xd2 Documents\xd3 , where each Document is in turn a collection of '>
+ >
+ <ParaLine
+ <String `\xd2 Pages\xd3 . Depending on the print facilities underlying the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, these delineations may be mapped '>
+ >
+ <ParaLine
+ <String `by a DDX driver into real functionality (e.g. see the server attribute '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `multiple-documents-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1941>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1942>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1943>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1944>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1945>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (for example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1946>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1947>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1839>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1894>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to indicate the ending of a single print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1847>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 48>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpEndJob'>
+ <MCurrPage `12'>
+ <Unique 1846>
+ > # end of Marker
+ <String `void XpEndJob '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1848>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1853>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 49>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1692>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` signals the end of a print job. Any accumulated print data that remains is either sent to the printer '>
+ >
+ <ParaLine
+ <String `or made available to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1907>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndJobNotify '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `when the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` has completed the request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1927>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <TextRectID 130>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` indicates that the document data has been sent to the spooler ('>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `='>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) or '>
+ >
+ <ParaLine
+ <String `been completely sent to the client via '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` ('>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `='>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) - it does not mean that '>
+ >
+ <ParaLine
+ <String `the document data has been completely received and processed by the client or spooler.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1951>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1952>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1953>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1954>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1955>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (for example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1860>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1897>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to cancel a single print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1868>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 50>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpCancelJob'>
+ <MCurrPage `13'>
+ <Unique 1867>
+ > # end of Marker
+ <String `void XpCancelJob '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, discard)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1869>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1870>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Bool '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1871>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1710>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 51>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `When '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, specifies that all '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` events should be discarded.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1711>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cancels an in-progress job. If the job was started with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then the data '>
+ >
+ <ParaLine
+ <String `stream to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is terminated. For many page description languages such arbitrary termination '>
+ >
+ <ParaLine
+ <String `may invalidate the output.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1717>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the job was started with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then depending on the driver and spooler configuration the '>
+ >
+ <ParaLine
+ <String `entire job may be canceled or a partial job may be generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1720>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, all '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` events with a detail field of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndDocNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, or '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEnd'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `JobNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` are discarded before '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelJob'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` returns.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2521>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2526>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2527>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2528>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2529>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2530>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (for example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2306>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.5 \t'>
+ <ParaLine
+ <String `Starting, Ending, and Canceling Documents'>
+ <Marker
+ <MType 2>
+ <MText `documents, starting, ending, and canceling;starting documents;ending documents;canceling documents'>
+ <MCurrPage `13'>
+ <Unique 1662>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2307>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to indicate the beginning of a print document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2314>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 52>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpStartDoc'>
+ <MCurrPage `13'>
+ <Unique 1663>
+ > # end of Marker
+ <String `void XpStartDoc '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, type)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2315>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2316>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPDocumentType '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2317>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2322>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 53>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the type of document. It can be either '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2561>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` signals the beginning of a new print document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2562>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the client will provide all the data for the resulting document using '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocument'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `; the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will not write any data into the resulting document. Calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` document will generate an XPBadSequence error. For more information, see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2563>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <TextRectID 131>
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will generate document data, and depending on the DDX'>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `driver, can incorporate additional data from '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` into the output. For more information, see '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2564>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocumentType'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` values are defined in <'>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `X11/extensions/Print.h\>'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1905>
+ <PgfTag `tab1'>
+ <Pgf
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.8">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPDocNormal'>
+ <Char Tab>
+ <String `1'>
+ <Char Tab>
+ <String `/* Doc data handled by Xserver*/'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPDocRaw'>
+ <Char Tab>
+ <String `2'>
+ <Char Tab>
+ <String `/* Doc data passed through Xserver*/'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2033>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `All changes to the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute pool (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `must be m'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ade prior to calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <String `after which an XPBadSequence will be generated if changes are attempted, until '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1729>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The application is not required to call '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in the process of printing. The \xd2 document\xd3 '>
+ >
+ <ParaLine
+ <String `delineation may not be useful from the application\xd5 s or spooler\xd5 s perspective, hence is optional. If '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called immediately after '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then a synthetic '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` with '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be '>
+ >
+ <ParaLine
+ <String `assumed by the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (i.e. the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartDocNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartPageNotify '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `events'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `will '>
+ >
+ <ParaLine
+ <String `have the same sequence number). Likewise, if '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called immediately after '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then a syn'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `thetic '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be assumed by the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (i.e., '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `the XPEndDocNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` events will have the same sequence number).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1699>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartDocNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2048>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2049>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2050>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2051>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1706>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1707>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ >
+ > # end of Para
+ <Para
+ <Unique 1714>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1708>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2021>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to indicate the ending of a print document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2011>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 54>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpEndDoc'>
+ <MCurrPage `14'>
+ <Unique 2010>
+ > # end of Marker
+ <String `void XpEndDoc '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2012>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2017>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 55>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2566>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` signals the end of a print document. All resulting document data is assembled and combined with '>
+ >
+ <ParaLine
+ <String `data previously sent by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1767>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndDocNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2059>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2060>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2061>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2062>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2063>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1979>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2022>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to cancel a print document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1987>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 56>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpCancelDoc'>
+ <MCurrPage `14'>
+ <Unique 1986>
+ > # end of Marker
+ <String `void XpCancelDoc '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, discard)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1988>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Bool '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1990>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1744>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 57>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `When '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, specifies that all '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` events with a detail of '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndDocNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should be discarded.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1745>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 132>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cancels an in-progress document. If the job was started with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then the '>
+ >
+ <ParaLine
+ <String `data stream to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is interrupted; no further data for the current document will be generated '>
+ >
+ <ParaLine
+ <String `but data for subsequent documents can be generated. For many page description languages such arbitrary '>
+ >
+ <ParaLine
+ <String `termination may invalidate the output.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1695>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the job was started with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then depending on the driver and spooler implementation '>
+ >
+ <ParaLine
+ <String `the entire document may be canceled or a partial document may be generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1696>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `True '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `all'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` events with a detail field of '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndDocNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` are dis'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `carded before '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelDoc'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` returns.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2570>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndDocNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2575>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2576>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2577>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2578>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2579>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2386>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.6 \t'>
+ <ParaLine
+ <String `Getting and Putting Data into Documents'>
+ <Marker
+ <MType 2>
+ <MText `getting data for documents;putting data in documents'>
+ <MCurrPage `15'>
+ <Unique 1666>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2387>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to send and incorporate data into the output.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2394>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 58>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpPutDocumentData'>
+ <MCurrPage `15'>
+ <Unique 1667>
+ > # end of Marker
+ <String `void XpPutDocumentData '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, drawable, data, data_len, doc_fmt, options)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2395>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2396>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Drawable '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `drawable'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2433>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `unsigned char '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2434>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `data_len'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2435>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `char '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2436>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `char '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*options'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2397>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2598>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `drawable'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Specifies the destination drawable for rendering.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2600>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `S'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `pecifies the device-specific data sent.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2602>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `data_len'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `S'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `pecifies the number of bytes in '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2604>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `S'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `pecifies the type of data sent. See below for valid values. String limited to XPCS '>
+ >
+ <ParaLine
+ <String `characters.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2606>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 59>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `options'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `S'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `pecifies'>
+ <Font
+ <FTag `Application'>
+ <FLocked No>
+ > # end of Font
+ <String ` DDX driver'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` dependent options. String limited to XPCS characters.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2611>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Depending on '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` for '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` has two modes of operation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2612>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `In '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` mode, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sends '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directly to the output, and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `drawable'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` must be '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `None'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, else a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `BadDrawable'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error will be generated. The '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` does not emit document or page control codes into '>
+ >
+ <ParaLine
+ <String `the output, and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is passed through unmodified. This is useful for sending previously constructed and '>
+ >
+ <ParaLine
+ <String `complete documents using the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd5 s job control and submission capabilities. The printer attribute '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-raw-formats-supported'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` d'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `efines the valid values for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in this mode, with unsupported values for '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` causing a '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `BadMatch'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error to be generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2613>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `In '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` mode, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sends data to the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and depending on the DDX '>
+ >
+ <ParaLine
+ <String `driver implementation, integrates '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` into the output. The parameters '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `options'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` describe the for'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `mat of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` which guides the DDX driver in interpreting '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The printer attribute '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-embedded-formats-sup'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` defines the valid values for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in this mode, with unsupported values for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` causing a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `BadMatch'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error to be generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1725>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If doc_fmt is not in either '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-raw-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-embedded-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` a '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is gen'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `erated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2614>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <TextRectID 133>
+ <String `Depending on the DDX driver implementation in use, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` might be used, for example, to '>
+ >
+ <ParaLine
+ <String `send a simple text file to a Postscript DDX driver that is capable of wrapping the appropriate document and '>
+ >
+ <ParaLine
+ <String `page control constructs around the text so that it can be printed on a Postscript printer. Likewise, Encapsu'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `lated Postscript Files might be handled. Another use could be to send a TIFF file to a PCL DDX'>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `driver that '>
+ >
+ <ParaLine
+ <String `can convert the image from TIFF into PCL and then integrate it into the current PCL output.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2615>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `There is no limit to the value of data_len. '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` automatically decomposes the call into multi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ple protocol requests to make sure that the maximum request size of the server is not exceeded.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2617>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2618>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2619>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2620>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2621>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (for example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2622>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2623>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not supported.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1648>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <String `BadMatch'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1649>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for doc_fmt is not valid for the current document type or the '>
+ >
+ <ParaLine
+ <String `value specified for drawable is not valid for the print context and print screen.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2624>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadDrawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2625>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `drawable'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2629>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2632>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to setup callbacks to retrieve document data from a print context'>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2480>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 60>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpGetDocumentData'>
+ <MCurrPage `16'>
+ <Unique 1668>
+ > # end of Marker
+ <String `Status XpGetDocumentData '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(data_display, context, save_proc, finish_proc, client_data)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2481>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `data_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2482>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `X'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `PContext'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String ` context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2483>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPSaveProc '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2484>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPFinishProc '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2485>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPointer '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `client_data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2487>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `data_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2532>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The print context from which document data is to be retrieved.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2488>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `A procedure to be registered and called repeatedly to save blocks of document data.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2489>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `A'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `procedure'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `to be registered and called once when the print job has completed and all '>
+ >
+ <ParaLine
+ <String `document data has been sent to'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2490>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 61>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `client_data'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies client data to be passed to '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String ` when called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2652>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `The return value is'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` encounter'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` an'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` e'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `rror'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, no'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `n-'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` otherwise.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2654>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` registers callbacks that allow a \xd2 consumer\xd3 to continuously retrieve document data gen'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `erated in the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` by a separate \xd2 producer\xd3 , where both are referencing the same print context'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` by '>
+ >
+ <ParaLine
+ <String `way of '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `different'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` display connections'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` Though '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` retrieves document data, its effect is '>
+ >
+ <ParaLine
+ <String `bounded by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` always returns immediately; if an error occurs and '>
+ >
+ <ParaLine
+ <String `the callbacks cannot be registered, the return status is 0, else the return status is non-zero'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `and the callbacks '>
+ >
+ <ParaLine
+ <String `will be called sometime after the return from '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. This producer/consumer exchange is set '>
+ >
+ <ParaLine
+ <String `up when '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called by the producer with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `equal '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and is subsequently initi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ated when '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called by the consumer.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` Though '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` will return immediately, further '>
+ >
+ <ParaLine
+ <String `attempts to use the producer\xd5 s display connection may be blocked by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` until '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocu'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `mentData'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is called on the consumer\xd5 s display connection.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2655>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Once '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called on '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cannot be used for any additional X '>
+ >
+ <ParaLine
+ <String `requests until '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called and returns. Further, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cannot be closed from within '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `or '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `To avoid deadlock, the producer and consumer must run in separate processes, or in separate '>
+ >
+ <ParaLine
+ <String `threads of a single process.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2163>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The save_proc is defined in <X11/extensions/Print.h\> as:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2164>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <TextRectID 134>
+ >
+ > # end of Para
+ <Para
+ <Unique 2165>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `typedef void (*XPSaveProc)( Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `data_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2166>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` XPContext '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2167>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` unsigned char '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2168>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` unsigned int '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `data_len'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2169>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` XPointer '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `client_data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1781>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `The save_proc '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is repeatedly called on each chunk of document data sent by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` until either '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called. data_len specifies the number of bytes in data. The memory for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` itself '>
+ >
+ <ParaLine
+ <String `is owned by the library, so '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should copy '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to another location before returning. After the last '>
+ >
+ <ParaLine
+ <String `block of data has been delivered to '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called with final status.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2170>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The finish_proc is defined in <X11/extensions/Print.h\> as:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2171>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2172>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `typedef void (*XPFinishProc)( Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `data_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2173>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` XPContext '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2174>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` XPGetDocStatus '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `status'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2175>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` XPointer '>
+ <Font
+ <FTag `FunctionInProg'>
+ <FLocked No>
+ > # end of Font
+ <String `client_data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2656>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `After '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` succes'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `sf'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ul'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `l'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `y registers the callbacks, any generated X errors (for example, '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) '>
+ >
+ <ParaLine
+ <String `or Xp errors (for example, '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) that are the result of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will '>
+ >
+ <ParaLine
+ <String `cause the Xlib error handler to be invoked, and then will cause '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to be called with a status of '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetDocError'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Any other activities (for example, a separate process destroying the print context) that prove '>
+ >
+ <ParaLine
+ <String `fatal to the progress of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will also cause '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to be called with a status of '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGet'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `DocError'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2657>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is generated and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `is called with '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetDocError'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called after '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `was specified '>
+ >
+ <ParaLine
+ <String `as '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is generated and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called with '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetDocError'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the '>
+ >
+ <ParaLine
+ <String `producer starts generating data and the consumer cannot consume data quickly enough, then the producer\xd5 s '>
+ >
+ <ParaLine
+ <String `display connection will be blocked by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2670>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Until '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, it is possible that various '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` events will be generated (for '>
+ >
+ <ParaLine
+ <String `example, a page has been canceled). The data passed to save_proc is not necessarily organized according to '>
+ >
+ <ParaLine
+ <String `the consumer\xd5 s requests or any generated events, and its consistency is guaranteed only if the entire job com'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `pletes successfully (i.e. without being canceled or generating an error). Consumers '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `may w'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ant to select for '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` events and terminate '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `save processing '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `upon receipt of cancellation events.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2671>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, sometime after '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called and returns, status gives the com'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `pletion status of the job and is defined in '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `<X11/extensions/Print.h\>'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` as:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2672>
+ <PgfTag `tab3a'>
+ <ParaLine
+ <String `#define '>
+ <Char Tab>
+ <String `XPGetDocFinished'>
+ <Char Tab>
+ <String `0'>
+ <Char Tab>
+ <String `/* normal termination */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2333>
+ <PgfTag `tab3'>
+ <ParaLine
+ <String `#define '>
+ <Char Tab>
+ <String `XPGetDocSecondConsumer'>
+ <Char Tab>
+ <String `1'>
+ <Char Tab>
+ <String `/* setup error */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2334>
+ <PgfTag `tab3'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPGetDocError'>
+ <Char Tab>
+ <String `2'>
+ <Char Tab>
+ <String `/* progress error */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2673>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetDocFinshed'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` indicates that all intended document data has been delivered by way of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. All can'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `cellation events are guaranteed to have arrived by the time '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finished_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, and they should be taken '>
+ >
+ <ParaLine
+ <String `into consideration for evaluating the validity of the document data returned.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2674>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetDocSecondConsumer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` indicates that a consumer had already been established for the print context. The '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` only supports one consumer per print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2675>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetDocError'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` indicates that an error has been generated (for example, '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) and '>
+ >
+ <ParaLine
+ <String `that no further document data will be delivered by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2676>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `After '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `save_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `finish_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are unregistered and will no longer be called.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2555>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2678>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2679>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The specified print context-id is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2680>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <TextRectID 135>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2681>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls (for example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2559>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.7 \t'>
+ <ParaLine
+ <String `Starting, Ending, and Canceling Pages'>
+ <Marker
+ <MType 2>
+ <MText `pages, starting, ending, and canceling;starting pages;ending pages;canceling pages'>
+ <MCurrPage `18'>
+ <Unique 1670>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2560>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to indicate the beginning of a print page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2567>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 62>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpStartPage'>
+ <MCurrPage `18'>
+ <Unique 1671>
+ > # end of Marker
+ <String `void XpStartPage '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, window)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2568>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2569>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Window '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2570>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2575>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 63>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the window ID.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2709>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` signals the beginning of a new print page, with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` serving as the drawable representing the '>
+ >
+ <ParaLine
+ <String `page. '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is required to be a descendant of the root window of the current print context window, else a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadWindow'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is generated. No generation of document data will occur for rendering operations against '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `or its inferiors prior to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2710>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` causes'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` t'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `o be '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `mapped. See '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPageDimensions'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XResizeWindow'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` for details on resiz'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ing '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` to the size of the media selected prior to calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `. Wi'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `thin the '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sequence'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attempts to resize, move or unmap '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will yield undefined results. To resize or '>
+ >
+ <ParaLine
+ <String `move inferiors of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` the standard semantics of ConfigureWindow apply, except that the contents of any '>
+ >
+ <ParaLine
+ <String `configured window may be discarded. An '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `Expose'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event will be generated if a window\xd5 s contents are dis'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `carded.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2259>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `All changes to the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPageAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute pool (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `must be m'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ade prior to calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <String `after which an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error will be generated if changes are attempted, until '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2260>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartPageNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` has completed '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `Expose'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is also '>
+ >
+ <ParaLine
+ <String `selected for (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the exposure events will be generated prior to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2261>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The client need not wait for '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartPageNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to calling any other X rendering routines.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1654>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1783>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1784>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A valid print context-id has not been set prior to making this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1657>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1658>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The function was not called in the proper order with respect to the other X Print '>
+ >
+ <ParaLine
+ <String `Service Extension calls; for example, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartPage'>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String ` was called before '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ >
+ <ParaLine
+ <String `was called for a type '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String ` document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1674>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <String `BadWindow'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1655>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2212>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2213>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to indicate the end of a print page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2221>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 64>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpEndPage'>
+ <MCurrPage `18'>
+ <Unique 2220>
+ > # end of Marker
+ <String `void XpEndPage '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2222>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2227>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 65>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2711>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` signals the end of a print page'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, and causes '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` to be unmapped'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. All resulting page data is '>
+ >
+ <ParaLine
+ <String `assembled and combined with data previously sent by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. No generation of document data '>
+ >
+ <ParaLine
+ <String `will occur for rendering operations to the corresponding windows after '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2266>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` has completed '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1655>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2234>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 136>
+ >
+ > # end of Para
+ <Para
+ <Unique 1807>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to cancel a print page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2242>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 66>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpCancelPage'>
+ <MCurrPage `19'>
+ <Unique 2241>
+ > # end of Marker
+ <String `void XpCancelPage '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, discard)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2243>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2244>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Bool '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2245>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2250>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 67>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `When '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, specifies that '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` events with a detail of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should be '>
+ >
+ <ParaLine
+ <String `discarded.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2712>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cancels an in-progress page. If the job was started with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then the data '>
+ >
+ <ParaLine
+ <String `stream to '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is interrupted; no further data for the current page will be generated but data '>
+ >
+ <ParaLine
+ <String `for subsequent pages can be generated. For many page description languages, such arbitrary interruptions '>
+ >
+ <ParaLine
+ <String `may invalidate the output.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1712>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the job was started with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `output_mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then depending on the driver and spooler implementation '>
+ >
+ <ParaLine
+ <String `the entire page may be canceled or a partial page may be generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1713>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `discard'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `True'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` all '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` events with a detail field of '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` are discarded before '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCan'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `celPage'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` returns.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2714>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For clients selecting '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated with its detail '>
+ >
+ <ParaLine
+ <String `field set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` has completed '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2719>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCancelPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2733>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.8 \t'>
+ <ParaLine
+ <String `Selecting Input'>
+ <Marker
+ <MType 2>
+ <MText `selecting input;input, selecting'>
+ <MCurrPage `19'>
+ <Unique 1674>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1744>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to select which X Print events from the specified print context the client is interested in.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1706>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 72>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpSelectInput'>
+ <MCurrPage `19'>
+ <Unique 1675>
+ > # end of Marker
+ <String `void XpSelectInput '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, context, event_mask)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1707>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1708>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1727>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `unsigned long '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `event_mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1709>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1735>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The print context from which to select events.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1714>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 73>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `event_mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the event mask. This mask is the bitwise OR one or more of the valid events '>
+ >
+ <ParaLine
+ <String `mask bits (see below).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2753>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` selects which X Print events from the specified print context the client is interest in. The X '>
+ >
+ <ParaLine
+ <String `Print Events are generated from a current print context, and '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `not'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` from a window as is the case with '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XSelectIn'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `put'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2754>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The bits for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `event_mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are defined in <'>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `X11/extensions/Print.h'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\>:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2755>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPNoEventMask'>
+ <Char Tab>
+ <Char Tab>
+ <String `0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2285>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define '>
+ <Char Tab>
+ <String `XPPrintMask'>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <String `(1L<<0)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2286>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define '>
+ <Char Tab>
+ <String `XPAttributeMask'>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <String `(1L<<1)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2756>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The resulting events are defined in <'>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `X11/extensions/Print.h'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\>:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2757>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPPrintNotify'>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <String `0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2284>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPAttributeNotify'>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <String `1'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2759>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2760>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2761>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The specified print context is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2762>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <TextRectID 137>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2763>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `event_mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1753>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1801>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpInputSelected'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to query which X Print events the client has selected to receive from the specific print '>
+ >
+ <ParaLine
+ <String `context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1769>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 74>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `unsigned long '>
+ <Marker
+ <MType 2>
+ <MText `XpInputSelected'>
+ <MCurrPage `20'>
+ <Unique 1676>
+ > # end of Marker
+ <String `XpInputSelected '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, context, all_event_mask_return)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1770>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1771>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1772>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `unsigned long *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `all_event_mask_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1773>
+ <PgfTag `LibraryDescription'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1774>
+ <PgfTag `LibraryDescription'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the print context to which the query is being made.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1779>
+ <PgfTag `LibraryDescription'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <AFrame 75>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `all'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `_'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `event_mask_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the set of events any client has selected.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2784>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns a bit mask describing which event classes the client has selected to receive. The value '>
+ >
+ <ParaLine
+ <String `returned to all_event_mask_return is the union of every client\xd5 s event mask.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2786>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpInputSelected'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` queries which X Print events from the specified print context the client has selected to '>
+ >
+ <ParaLine
+ <String `receive. The X Print Events are generated from a print context, and '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `not'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` from a window as is the case with '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. As events arrive, the '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` field in the event can be used to determine which print context gen'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `erated the event.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2787>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `See '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` for the '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `event_mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `all_event_mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` values.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2789>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpInputSelected'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate an '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2794>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.9 \t'>
+ <ParaLine
+ <String `Getting and Setting Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes, getting and setting;getting attributes;setting attributes'>
+ <MCurrPage `20'>
+ <Unique 1677>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1826>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to get an attribute pool from the specified print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1809>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 76>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `char *'>
+ <Marker
+ <MType 2>
+ <MText `XpGetAttributes'>
+ <MCurrPage `20'>
+ <Unique 1678>
+ > # end of Marker
+ <String `XpGetAttributes '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, context, type)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1810>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1811>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1812>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPAttributes '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1813>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1814>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The print context from which the attribute pool is to be retrieved.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1819>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 77>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the attribute pool.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2814>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, a COMPOUND_TEXT resource string representing the attribute pool specified '>
+ >
+ <ParaLine
+ <String `by '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The caller is expected to free '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when it is no longer needed using '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `XFree'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2295>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The values for the typedef '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `<X11/extensions/Print.h\>'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2296>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPJobAttr'>
+ <Char Tab>
+ <String `1'>
+ <Char Tab>
+ <String `/* get/set */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2299>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPDocAttr'>
+ <Char Tab>
+ <String `2'>
+ <Char Tab>
+ <String `/* get/set */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2303>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPPageAttr'>
+ <Char Tab>
+ <String `3'>
+ <Char Tab>
+ <String `/* get/set - subset of XPDocAttr */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2308>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPPrinterAttr'>
+ <Char Tab>
+ <String `4'>
+ <Char Tab>
+ <String `/* get only (library) */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2309>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPServerAttr'>
+ <Char Tab>
+ <String `5'>
+ <Char Tab>
+ <String `/* get only (library), no context needed */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2310>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The attribute pool (hence the resource string) consists of many name-value pairs (for example, '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd4 copy-count: '>
+ >
+ <ParaLine
+ <String `3\xd5 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `). The syntax of an attribute pool is the same as an X resource file (see \xd2 Resource File Syntax\xd3 in the Xlib '>
+ >
+ <ParaLine
+ <String `specification).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2818>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Valid characters for each name (left hand side) are derived from the Posix Portable Filename Character Set '>
+ >
+ <ParaLine
+ <String `(PPFCS), which is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 a\xd3 -\xd3 z\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 A\xd3 -\xd3 Z\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 0\xd3 -\xd3 9\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 _\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 -\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Valid characters for each value (right hand '>
+ >
+ <ParaLine
+ <String `side) are all characters except '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and unescaped '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NEWLINE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, though all predefined values in the X Print Ser'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <TextRectID 138>
+ <String `vice are confined to X Portable Character Set (XPCS) characters. Non XPCS values are typically limited to '>
+ >
+ <ParaLine
+ <String `localized \xd2 description\xd3 strings. See '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` regarding the locale hint for more information on local'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ized values.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2820>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate of one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2821>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2822>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The specified print context-id is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2823>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2824>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2825>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2826>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `Insufficient memory.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2832>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If any errors occur, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2332>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1856>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetOneAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to get a single print attribute from the specified print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1866>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 78>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `char *'>
+ <Marker
+ <MType 2>
+ <MText `XpGetOneAttribute'>
+ <MCurrPage `21'>
+ <Unique 1679>
+ > # end of Marker
+ <String `XpGetOneAttribute '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, context, type, attribute_name)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1867>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1868>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1869>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPAttributes '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1881>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `char '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*attribute_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1870>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1871>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The print context from which the attribute pool is to be retrieved.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1876>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the attribute pool.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1893>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 79>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `attribute_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The name of the attribute to be returned.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1902>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns a COMPOUND_TEXT string '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attribute_value'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, else '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if any errors occurred.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2852>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetOneAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a variation of '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to get a single attribute value from an attribute pool. Unlike '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, where the reply contains an entire attribute pool, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetOneAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns just one '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attribute_value'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2853>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `a'>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `ttribute_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should not include a colon. The caller is expected to free the '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attribute value'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returned using '>
+ >
+ <ParaLine
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `XFree'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2856>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetOneAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate of one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2857>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2858>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The specified print context-id is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2859>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2860>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2861>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2862>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `Insufficient memory.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1913>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1914>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to set '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `or update '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `an attribute pool in the specified print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1921>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 80>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpSetAttributes'>
+ <MCurrPage `21'>
+ <Unique 1680>
+ > # end of Marker
+ <String `void XpSetAttributes '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, context, type, pool, replacement_rule)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1922>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1923>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1924>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPAttributes '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1925>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `char '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1949>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPAttrReplacement '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `replacement_rule'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1926>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1927>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The print context whose attribute pool is to be modified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1928>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the attribute pool to be modified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1951>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `An attribute pool represented as a resource string. Encoded in COMPOUND_TEXT.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1933>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 81>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `replacement_rule'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Either XPAttrReplace orXPAttrMerge.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2889>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 139>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` accepts '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, a COMPOUND_TEXT resource string representing new name-value pairs for '>
+ >
+ <ParaLine
+ <String `the attribute pool specified by '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The attribute pool is modified by the new name-value pairs according to '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `replacement_rule'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. For '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttrReplace'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the existing attribute pool is discarded and replaced with '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. For '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttrMerge'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is merged into the existing attribute pool; pre-existing name-value pairs are replaced, and '>
+ >
+ <ParaLine
+ <String `non-existing name-value pairs are added. The contents of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not affected by this call, and can be freed '>
+ >
+ <ParaLine
+ <String `by the caller afterwards.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2890>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The values for the typedef '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `<X11/extensions/Print.h\>'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2891>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPJobAttr'>
+ <Char Tab>
+ <String `1'>
+ <Char Tab>
+ <String `/* get/set */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1692>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPDocAttr'>
+ <Char Tab>
+ <String `2'>
+ <Char Tab>
+ <String `/* get/set */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1693>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPPageAttr'>
+ <Char Tab>
+ <String `3'>
+ <Char Tab>
+ <String `/* get/set - subset of XPDocAttr */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1694>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPPrinterAttr'>
+ <Char Tab>
+ <String `4'>
+ <Char Tab>
+ <String `/* get only (library) */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1695>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPServerAttr'>
+ <Char Tab>
+ <String `5'>
+ <Char Tab>
+ <String `/* get only (library), no context needed */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2892>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The values for the typedef '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttrReplacement'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `<X11/extensions/Print.h\>'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2893>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPAttrReplace'>
+ <Char Tab>
+ <String `1'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1700>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `#define'>
+ <Char Tab>
+ <String `XPAttrMerge'>
+ <Char Tab>
+ <String `2'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2895>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `W'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `hen '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `setting '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `supported attribute'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` names,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` the '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server and associated driver will v'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `alidate the new values '>
+ >
+ <ParaLine
+ <String `and '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `ignore those that are invalid; previous values remain unchanged.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `When setting unsupported (i.e., '>
+ >
+ <ParaLine
+ <String `unknown) attribute names, no validation is done, and the name-value pairs will be set, even though they will '>
+ >
+ <ParaLine
+ <String `not be used. When deleting (i.e. failing to reset with XPAttrReplace) a supported attribute name, the X Print '>
+ >
+ <ParaLine
+ <String `Server explicitly or implicitly resets the attribute to a default value.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2896>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `When setting certain supported attributes, the X Print Server may modify other associated attributes. F'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `or '>
+ >
+ <ParaLine
+ <String `example, considering the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrinterAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, setting the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `document-format'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` may cause a number of other attributes to change.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2897>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `For attribute pools that are read-only (see \xd2 get only\xd3 in '>
+ <Font
+ <FTag `StructName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` definition), attempting to use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAt'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` generates a '>
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadMatch'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. For attribute pools that are writable, lists of the supported attributes can be '>
+ >
+ <ParaLine
+ <String `found in the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrinterAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` pool.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2898>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The lifetime of all attribute pools are bounded by the lifetime of the print con'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `t'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ext they are contained in. '>
+ >
+ <ParaLine
+ <String `When set, all attribute values will be retained across all Xp operations, until changed by the user directly, the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directly, or changed because of a side effect when either the user or '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` changed '>
+ >
+ <ParaLine
+ <String `another attribute value.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2899>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Refer to a complete description of all print attributes, the precedence between print attributes, and the side '>
+ >
+ <ParaLine
+ <String `effects of setting certain print attributes on other print attributes, etc. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2903>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `To monitor changes to the attribute pools, see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSelectInput'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttributeNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Since a print con'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `text can be shared among clients, changes made by one client will be seen by all others, and if selected for, '>
+ >
+ <ParaLine
+ <String `the event '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttributeNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be sent to all clients referencing the print context when changes do occur. It is '>
+ >
+ <ParaLine
+ <String `the responsibility of the clients sharing a print context to coordinate their operations.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2905>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate of one of the following errors:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2906>
+ <PgfTag `Term_i_1st'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2907>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The specified print context-id is not valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2908>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2909>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `A request to set an attribute pool occurred at a time when the attribute pool could '>
+ >
+ <ParaLine
+ <String `not be modified (for example, modifying '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` immediately after calling '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2910>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadValue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2911>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value specified for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is invalid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2912>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadMatch'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2913>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The attribute pool specified by '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cannot be set.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2914>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2915>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `Insufficient memory.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2919>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.10 \t'>
+ <ParaLine
+ <TextRectID 140>
+ <Marker
+ <MType 9>
+ <MText `38271: 1Sect: 3.13 DtPrintGetPrinterList'>
+ <MCurrPage `23'>
+ <Unique 2918>
+ > # end of Marker
+ <String `Getting Printer Lists'>
+ <Marker
+ <MType 2>
+ <MText `printer lists, getting;getting printer lists'>
+ <MCurrPage `23'>
+ <Unique 1681>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1980>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to retrieve a list of all printers supported on an '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1987>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 82>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrinterList '>
+ <Marker
+ <MType 2>
+ <MText `XpGetPrinterList'>
+ <MCurrPage `23'>
+ <Unique 1682>
+ > # end of Marker
+ <String `XpGetPrinterList '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, printer_name, list_count_return)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1988>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `char *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1990>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*list_count_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1993>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1994>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the name of the printer for which information is desired. If '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then '>
+ >
+ <ParaLine
+ <String `information is returned for all printers associated with the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1995>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 83>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `list_count_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the number of printers in the list.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2939>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns a list of printer records where each record describes a printer supported by the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X '>
+ >
+ <ParaLine
+ <String `Print Server, '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `or '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if any errors occur.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2940>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then a list of all printers supported is returned. If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is non-'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, only '>
+ >
+ <ParaLine
+ <String `print records matching '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are returned, and if no records match '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ >
+ <ParaLine
+ <String `returned.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2941>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a COMPOUND_TEXT string, and the '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` fields in the returned list will be in '>
+ >
+ <ParaLine
+ <String `COMPOUND_TEXT (note, ISO 8859-1 (Latin-1) is a proper subset of COMPOUND_TEXT, so can be '>
+ >
+ <ParaLine
+ <String `used directly). If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is in a code-set that the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cannot convert (into its operating code-'>
+ >
+ <ParaLine
+ <String `set), then the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` may fail to locate the requested printer'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then all printer '>
+ >
+ <ParaLine
+ <String `names, regardless of their code-set, can be returned, leaving the task of specific printer recognition up to the '>
+ >
+ <ParaLine
+ <String `caller'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2942>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, the caller\xd5 s locale (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) is included in the request as a '>
+ >
+ <ParaLine
+ <String `\xd2 hint\xd3 to the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `supported by the implementation,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will use the hint to locate '>
+ >
+ <ParaLine
+ <String `a localized description for each printer in the list. If the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` cannot understand the hint, the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X '>
+ >
+ <ParaLine
+ <String `Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will choose a default'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2943>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The returned printer list can be freed by calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpFreePrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1768>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XPPrinterList structure defined in '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `<X11/extensions/Print.h\>'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` contains:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2946>
+ <PgfTag `tab1'>
+ <ParaLine
+ <String `typedef struct {'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1749>
+ <PgfTag `tab4'>
+ <ParaLine
+ <String `char *name;'>
+ <Char Tab>
+ <String `/* name */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1750>
+ <PgfTag `tab4'>
+ <ParaLine
+ <String `char *desc;'>
+ <Char Tab>
+ <String `/* localized description */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1751>
+ <PgfTag `tab2'>
+ <ParaLine
+ <String `} XPPrinterRec, *XPPrinterList;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2077>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` can generate a '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2089>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Narrow'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Narrow'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1866>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpFreePrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should be used to free a printer list.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2096>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 84>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpFreePrinterList'>
+ <MCurrPage `23'>
+ <Unique 1683>
+ > # end of Marker
+ <String `void XpFreePrinterList '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(printer_list)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2097>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPPrinterList '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_list'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2101>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 97>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `printer_list'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `A list of printer records returned by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2969>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2150>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpFreePrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` frees the list of printer records returned by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2154>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2155>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpRehashPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to recompute the list of available printers.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2162>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 85>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpRehashPrinterList'>
+ <MCurrPage `23'>
+ <Unique 1684>
+ > # end of Marker
+ <String `void XpRehashPrinterList '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2163>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <TextRectID 141>
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2166>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 86>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1711>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpRehashPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` causes the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to recompute (update) its list of available printers'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, and update '>
+ >
+ <ParaLine
+ <String `the attributes for the printers.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` The intended usage of this routine is in a special tool that a system administra'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tor can run after changing the printer topology. General applications are encouraged to use this call sparingly '>
+ >
+ <ParaLine
+ <String `if at all, and let the system administrator control printer topology updates.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2991>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Depending on the print facilities underlying the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` may be able to detect '>
+ >
+ <ParaLine
+ <String `changes in the printer topology and dynamically update to reflect the changes, or may not be able to detect '>
+ >
+ <ParaLine
+ <String `the changes and will have to be notified via '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpRehashPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2992>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Existing print contexts will not be affected by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpRehashPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` as long as their printer destination remains '>
+ >
+ <ParaLine
+ <String `valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2997>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.11 \t'>
+ <ParaLine
+ <String `Querying Version, Extension, and Screen'>
+ <Marker
+ <MType 2>
+ <MText `version, querying;extension, querying;screen, querying;querying version, extension, screen'>
+ <MCurrPage `24'>
+ <Unique 1685>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2212>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpQueryVersion'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to query an X Server to determine if it supports the X Print Service Extension, and if it '>
+ >
+ <ParaLine
+ <String `does, which version of the X Print Service Extension.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2219>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 87>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Status '>
+ <Marker
+ <MType 2>
+ <MText `XpQueryVersion'>
+ <MCurrPage `24'>
+ <Unique 1686>
+ > # end of Marker
+ <String `XpQueryVersion '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, major_version_return, minor_version_return)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2220>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2221>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `short *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `major_version_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2222>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `short '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*minor_version_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2223>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2224>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `major_version_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the major version if the X Print Service Extension exists, else zero.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2229>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <AFrame 88>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `minor_version_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the minor version if the X Print Service Extension exists, else zero.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3017>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpQueryVersion'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` determines if the X Print Service Extension is present. A non-zero '>
+ <Font
+ <FTag `ReturnValue'>
+ <FLocked No>
+ > # end of Font
+ <String `Status'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is returned if the '>
+ >
+ <ParaLine
+ <String `extension is supported, otherwise a zero '>
+ <Font
+ <FTag `ReturnValue'>
+ <FLocked No>
+ > # end of Font
+ <String `Status'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is returned. If the extension is supported, the major and '>
+ >
+ <ParaLine
+ <String `minor version numbers are returned to indicate the level of X Print Service Extension support.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3018>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The X Print Service Extension is initialized on the first call to any X Print Service function; there is no need '>
+ >
+ <ParaLine
+ <String `to explicitly initialize the X Print Service Extension.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3023>
+ <PgfTag `RefSect1Para'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2286>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpQueryExtension'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to query an X Server to determine if it supports the X Print Service Extension, and if it '>
+ >
+ <ParaLine
+ <String `does, what the offsets are for associated events and errors.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2293>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 68>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Bool '>
+ <Marker
+ <MType 2>
+ <MText `XpQueryExtension'>
+ <MCurrPage `24'>
+ <Unique 1687>
+ > # end of Marker
+ <String `XpQueryExtension '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, event_base_return, error_base_return)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2294>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2295>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `event_base_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2296>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*error_base_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2297>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2298>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `event_base_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The base value for X Print Service Extension events.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2303>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <AFrame 69>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `error_base_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The base value for X Print Service Extension errors.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3044>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpQueryExtension '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `determines if the X Print Service Extension is present. It returns '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `True'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if the extension is '>
+ >
+ <ParaLine
+ <String `supported, otherwise '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `False'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the extension is present, the base values for events and errors are returned, and '>
+ >
+ <ParaLine
+ <String `can be used to decode incoming event and error values.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3045>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The X Print Service Extension is initialized on the first call to any X Print Service function; there is no need '>
+ >
+ <ParaLine
+ <String `to explicitly initialize the X Print Service Extension.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3050>
+ <PgfTag `RefSect1Para'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2363>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <TextRectID 142>
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpQueryScreens'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to query an X Server '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `to determine which of all the screens on the server support the X '>
+ >
+ <ParaLine
+ <String `Print Service Extension'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2370>
+ <PgfTag `LibraryRequest'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 70>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Screen '>
+ <Marker
+ <MType 2>
+ <MText `XpQueryScreens'>
+ <MCurrPage `25'>
+ <Unique 1688>
+ > # end of Marker
+ <String `**XpQueryScreens '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(display, list_count_return)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2371>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2372>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `list_count_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2374>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the Display structure; returned from XOpenDisplay.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2375>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 71>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `list_count_return'>
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Returns the number of screens in the list.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2434>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `This request returns a non-'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` pointer to a list of screen pointers if one or more screens support the X Print '>
+ >
+ <ParaLine
+ <String `Service Extension; otherwise it returns '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3069>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpQueryScreens'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` determines if the X Print Service Extension is present, and if so, which of all the screens on '>
+ >
+ <ParaLine
+ <String `the X Server support the X Print Service Extension. Unlike many other extensions, the X Print Service '>
+ >
+ <ParaLine
+ <String `Extension may be restricted to a subset of all available screens - for example, a single X Server may be sup'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `porting video displays on some screens and printers on others.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3070>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `The list of screen pointers can be freed by calling '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XFree'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3074>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.12 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Getting PDM Parameters'>
+ <Marker
+ <MType 2>
+ <MText `setting PDM parameters;PDM parameters, setting'>
+ <MCurrPage `25'>
+ <Unique 1689>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2441>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` as a standard convenience function to build up parameters in accordance with the '>
+ >
+ <ParaLine
+ <String `PDM Selection Protocol'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2448>
+ <PgfTag `LibraryRequest'>
+ <Pgf
+ <PgfLIndent 1.85">
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 89>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Status '>
+ <Marker
+ <MType 2>
+ <MText `XpGetPdmStartParams'>
+ <MCurrPage `25'>
+ <Unique 1690>
+ > # end of Marker
+ <String `XpGetPdmStartParams '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(print_display, print_window, print_context, video_display, video_window, '>
+ >
+ <ParaLine
+ <String `selection_display_return, selection_return, type_return, format_return, '>
+ >
+ <ParaLine
+ <String `data_return, nelements_return)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2449>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2450>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Window '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2451>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPContext '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2489>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*video_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2493>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Window '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `video_window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2497>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Display '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `**selection_display_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2501>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Atom '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*selection_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2505>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `Atom '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*type_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2509>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*format_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2513>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `unsigned char '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `**data_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2552>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `int '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*nelements_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2452>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the print Display structure; returned from XOpenDisplay '>
+ >
+ <ParaLine
+ <String `on the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Print Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2582>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a client window on any screen of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `print_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` long-lived enough for '>
+ >
+ <ParaLine
+ <String `ICCCM communications of the final PDM status (\xd2 OK\xd3 or \xd2 CANCEL\xd3 '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `ClientMessage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) sent to '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `print_window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2612>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `print_context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `An existing print context that the PDM should reference'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3255>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `video_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies a pointer to the video '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `Display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` structure; returned from '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XOpenDisplay'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `on the '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `Video X-Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2635>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `video_window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Specifies the window on '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `video_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` near which the transient dialogs from '>
+ >
+ <ParaLine
+ <String `the PDM should be posted.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2636>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `selection_display_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the display connection on which the PDM selection should be made.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `May be equal to '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `print_display'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `video_display'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, or may be a new display '>
+ >
+ <ParaLine
+ <String `connection that the caller should close when done.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2620>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `selection_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the selection atom for which a PDM selection should be made.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2625>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `type_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the type for the PDM Selection Protocol property the caller is expected '>
+ >
+ <ParaLine
+ <String `to create.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2630>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <TextRectID 143>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `format_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the format for the PDM Selection Protocol property the caller is '>
+ >
+ <ParaLine
+ <String `expected to create.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2699>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `data_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the data set for the PDM Selection Protocol property the caller is '>
+ >
+ <ParaLine
+ <String `expected to create. The caller is expected to XFree the data when finished.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2704>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <AFrame 90>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `nelements_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns the number of elements for the PDM Selection Protocol property the '>
+ >
+ <ParaLine
+ <String `caller is expected to create.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3108>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns a zero status if an error occurred, non-zero otherwise.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3110>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a convenience routine used to construct the necessary property information and '>
+ >
+ <ParaLine
+ <String `selection display connection information needed to initiate a PDM Selection per the \xd2 PDM Selection Proto'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `col\xd3 . Once the information is constructed, the caller is responsible for the creation of a property, the genera'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion of a '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `SelectionRequest'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the receipt of a '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `SelectionNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event, and the recept of a '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `ClientMessage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event, as '>
+ >
+ <ParaLine
+ <String `described in the PDM Selection Protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3111>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When finished, the caller is expected to free '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` using '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `XFree'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3112>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` returns zero if an error occurred, else non-zero. If an error occurs all other _return val'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ues are undefined.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3114>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Setting the environment variable '>
+ <Font
+ <FTag `EnvironVar'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDMSELECTION'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` c'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `auses '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to use an alternate selec'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion name. If not set, the selection name '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `PDM_MANAGER'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3115>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Setting the environment variable '>
+ <Font
+ <FTag `EnvironVar'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDMDISPLAY'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` causes '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to locate the selection on an '>
+ >
+ <ParaLine
+ <String `alternate '>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Server'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If not set, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `selection_display_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is set equal to '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `print_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If XPDMDISPLAY is set '>
+ >
+ <ParaLine
+ <String `to one of the keywords '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 print\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd2 video\xd3 '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `selection_display_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is set to '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `print_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `video_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <String `respectively. If XPDMDISPLAY is set to a valid '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `DISPLAY'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `-style string, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `selection_display_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` may be set, '>
+ >
+ <ParaLine
+ <String `as appropriate, to one of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `print_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `video_display'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, or to a '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `new'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` display connection opened from within '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Only in the single case where a '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `new'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` display connection is made should the caller '>
+ >
+ <ParaLine
+ <String `close '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `selection_display_return '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `using '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `XCloseDisplay'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1874>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called, the caller\xd5 s locale (see '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) is included in the informa'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion as a \xd2 hint\xd3 to the Print Dialog Manager (PDM). If '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `supported by the implementation,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` the PDM will use '>
+ >
+ <ParaLine
+ <String `the hint to display dialogs more appropriately labeled for the locale of the client. If the Print Dialog'>
+ <Font
+ <FTag `Application'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Manager '>
+ >
+ <ParaLine
+ <String `cannot understand the hint, the PDM will choose a default. Note that the locale of the print attributes that the '>
+ >
+ <ParaLine
+ <String `PDM will subsequently access, will already have been determined when the client called '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1875>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The environment variables '>
+ <Font
+ <FTag `EnvironVar'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDMDISPLAY'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` a'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `nd '>
+ <Font
+ <FTag `EnvironVar'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDMSELECTION'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `are re-read each time '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStart'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Params'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3210>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.13 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `Setting and Getting Locale Hinters'>
+ <Marker
+ <MType 2>
+ <MText `locale hinters, setting and getting;hinters, locale;setting locale hinters;getting locale hinters'>
+ <MCurrPage `26'>
+ <Unique 1692>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3090>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to set a \xd2 locale hinter\xd3 function and description of it.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3097>
+ <PgfTag `LibraryRequest'>
+ <Pgf
+ <PgfLIndent 1.5">
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 93>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XpSetLocaleHinter'>
+ <MCurrPage `26'>
+ <Unique 1693>
+ > # end of Marker
+ <String `void XpSetLocaleHinter '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(hinter_proc, hinter_desc)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3098>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPHinterProc '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3099>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `char '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `*hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3102>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `A pointer to a \xd2 hinter proc\xd3 .'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3103>
+ <PgfTag `LibraryDescription'>
+ <ParaLine
+ <AFrame 94>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `A pointer to contextual information about the locale hinter proc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3230>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Since (to date) there is no single industry standard for locale value'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` locale information about the current cli'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ent required by '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` and'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetPdmStartParams'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `i'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `s at best considered a \xd2 hint\xd3 '>
+ >
+ <ParaLine
+ <String `when transmitted to the X Print Server and PDM. In single vendor environments, the locale hint should be '>
+ >
+ <ParaLine
+ <String `consistent and understood. In multi-vendor environments however, the locale hint may or may'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `not be under'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `stood. The '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `caller locale w'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ill be used as the fallback default.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3231>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <TextRectID 144>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `access h'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ooks that '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `are u'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `sed to register more advanced hint generators. '>
+ >
+ <ParaLine
+ <String `By default, Xp uses'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` a hinter proc that calls '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `setlocale'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` on the '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `CTYPE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` category on POSIX systems'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, a'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `nd '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3232>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sets the '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` which will be subsequently used by the Xp calls '>
+ >
+ <ParaLine
+ <String `requiring a locale hint (see above). '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is the function that will generate the locale hint (for example, '>
+ >
+ <ParaLine
+ <String `\xd2 C\xd3 ), and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a string, with or without the embeddable keyword '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `%locale%'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, that provides a higher '>
+ >
+ <ParaLine
+ <String `level context for the results of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3233>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is set to '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `the d'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `efault Xp hinter proc is installed. '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` makes its own pri'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `vate copy of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to returning.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3234>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `An example set call might look as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3235>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `XpSetLocaleHinter( '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `my_hinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, \xd2 %locale%;CDElocale\xd3 );'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3236>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3237>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Where '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `my_hinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` might look as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3238>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `char *my_hinter()'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3239>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `{'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` /*'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` * Use setlocale() to retrieve the current locale.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` */'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3240>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` return( '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `my_x_s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `trdup( setlocale(LC_CTYPE, (char *) NULL) ) );'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3241>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3242>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3243>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The signature for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is defined in '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `<X11/extensions/Print.h\>'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3244>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `typedef char * (*XPHinterProc)();'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3245>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3246>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is expected to return a string that can be freed using '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `XFree '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `by the Xp calls themselves.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1924>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `When the client\xd5 s locale is needed, if both '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and the results of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are non-'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and the '>
+ >
+ <ParaLine
+ <String `keyword '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `%locale%'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is found in '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the keyword will be replaced with the result of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ <ParaLine
+ <String `The resulting string will be used as the locale hint by the Xp calls.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1925>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If both '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and the results of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are non-'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, but the keyword '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `%locale%'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not found in '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, as is, becomes the string used as the locale hint by the Xp calls.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1926>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If one of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or the results of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the other non-'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` value becomes the string '>
+ >
+ <ParaLine
+ <String `used as the locale hint by the Xp calls.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1927>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and the results of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then a '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` (i.e. '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `(char *) NULL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) locale hint is sent by '>
+ >
+ <ParaLine
+ <String `the Xp calls.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1928>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The syntax for '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a variation of the unadopted X/Open standard for a \xd2 String Network Locale-'>
+ >
+ <ParaLine
+ <String `Specification Syntax\xd3 (X/Open, Distributed Internationalization Services, Version 2, 1994 Snapshot). The '>
+ >
+ <ParaLine
+ <String `Xp '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` syntax is:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1929>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `name_spec[;registry_spec[;ver_spec[;encoding_spec]]]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1930>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1931>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Some examples include ('>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_desc'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` to left, '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `expanded '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `results t'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `o the right):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1932>
+ <PgfTag `Programlisting_i'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `CFRENCH'>
+ <Char Tab>
+ <String `CFRENCH'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `%'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `locale%'>
+ <Char Tab>
+ <String `C'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `%locale'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `%'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;CDElocale'>
+ <Char Tab>
+ <String `C;CDElocale'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `%locale%;HP'>
+ <Char Tab>
+ <String `C;HP'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `%locale%;IBM'>
+ <Char Tab>
+ <String `C;IBM'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `%locale%;XOPEN;01_11;XFN-001001'>
+ <Char Tab>
+ <String `de_DE;XOPEN;01_11;XFN-001001'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1934>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In Xp, the first item is the locale name, followed by progressively more detailed information about the locale '>
+ >
+ <ParaLine
+ <String `name, with each piece of information separated by a \xd4 ;\xd5 .'>
+ <Marker
+ <MType 2>
+ <MText `<$endrange\>calls, library;<$endrange\>library calls'>
+ <MCurrPage `27'>
+ <Unique 1935>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1894>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <TextRectID 145>
+ >
+ > # end of Para
+ <Para
+ <Unique 1928>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Use '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetLocaleHinter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to get a pointer to and description of the current \xd2 locale hinter\xd3 function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1902>
+ <PgfTag `LibraryRequest'>
+ <Pgf
+ <PgfLIndent 1.5">
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FLocked No>
+ > # end of Font
+ <AFrame 91>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `char *'>
+ <Marker
+ <MType 2>
+ <MText `XpGetLocaleHinter'>
+ <MCurrPage `28'>
+ <Unique 1901>
+ > # end of Marker
+ <String `XpGetLocaleHinter '>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `(hinter_proc_return)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1903>
+ <PgfTag `LibraryArg'>
+ <ParaLine
+ <String `XPHinterProc *'>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1908>
+ <PgfTag `LibraryDescriptionLong'>
+ <ParaLine
+ <AFrame 92>
+ <Font
+ <FTag `LibraryItalic'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter_proc_return'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Returns a pointer to the current hinter proc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3247>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetLocaleHinter '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `returns the currently installed '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter proc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter description'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The function value is the '>
+ >
+ <ParaLine
+ <String `pointer to the description. The caller is expected to '>
+ <Font
+ <FTag `URL'>
+ <FLocked No>
+ > # end of Font
+ <String `XFree '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `the returned '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `hinter description string'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/XPRINT/xp_libraryIX.doc b/specs/XPRINT/xp_libraryIX.doc
new file mode 100644
index 0000000..b03946a
--- /dev/null
+++ b/specs/XPRINT/xp_libraryIX.doc
Binary files differ
diff --git a/specs/XPRINT/xp_libraryTOC.doc b/specs/XPRINT/xp_libraryTOC.doc
new file mode 100644
index 0000000..9d7e3dd
--- /dev/null
+++ b/specs/XPRINT/xp_libraryTOC.doc
Binary files differ
diff --git a/specs/XPRINT/xp_library_cov.mif b/specs/XPRINT/xp_library_cov.mif
new file mode 100644
index 0000000..3067fff
--- /dev/null
+++ b/specs/XPRINT/xp_library_cov.mif
@@ -0,0 +1,3473 @@
+<MIFFile 5.00> # Generated by FrameMaker xm5.0P3f
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+#
+<Units Uin>
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `T:Table <n+\>: '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 112.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 6.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 16.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title3'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+> # end of PgfCatalog
+<FontCatalog
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FLocked No>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FAngle `Oblique'>
+ <FLocked No>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `Thin'>
+ <TblRRuling `'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement InHeader>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Left>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement InHeader>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[Title]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[Heading1]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table & Page'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 77 31 736 865 >
+ <DWindowRect 53 5 780 968 >
+ <DViewScale 140.0%>
+ <DNextUnique 713207>
+ <DPageSize 8.5" 11.0">
+ <DMenuBar `'>
+ <DVoMenuBar `'>
+ <DStartPage 1>
+ <DPageNumStyle LCRoman>
+ <DPagePointStyle Arabic>
+ <DTwoSides Yes>
+ <DParity FirstRight>
+ <DFrozenPages No>
+ <DPageRounding MakePageCountEven>
+ <DFNoteMaxH 2.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage>
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic>
+ <DFNoteAnchorPos FNSuperscript>
+ <DFNoteNumberPos FNBaseline>
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `.\\t'>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha>
+ <DTblFNoteAnchorPos FNSuperscript>
+ <DTblFNoteNumberPos FNBaseline>
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `.\\t'>
+ <DLinebreakChars `/ - \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.25">
+ <DChBarWidth 2.0 pt>
+ <DChBarPosition LeftOfCol>
+ <DChBarColor `Black'>
+ <DAutoChBars No>
+ <DShowAllConditions No>
+ <DDisplayOverrides Yes>
+ <DPageScrolling Variable>
+ <DViewOnly No>
+ <DViewOnlyXRef GotoBehavior>
+ <DViewOnlySelect Yes>
+ <DViewOnlyWinBorders Yes>
+ <DViewOnlyWinMenubar Yes>
+ <DViewOnlyWinPopup Yes>
+ <DViewOnlyWinPalette No>
+ <DGridOn No>
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.25>
+ <DRulersOn Yes>
+ <DFullRulers Yes>
+ <DGraphicsOff No>
+ <DCurrentView 1>
+ <DBordersOn Yes>
+ <DSymbolsOn Yes>
+ <DLinkBoundariesOn No>
+ <DSmartQuotesOn No>
+ <DSmartSpacesOn No>
+ <DUpdateTextInsetsOnOpen Yes>
+ <DUpdateXRefsOnOpen Yes>
+ <DLanguage USEnglish>
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No>
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DPrintSkipBlankPages Yes>
+ <DPrintSeparations No>
+ <DGenerateAcrobatInfo No>
+ <DAcrobatParagraphBookmarks Yes>
+ <DAcrobatBookmarksIncludeTagNames No>
+> # end of Document
+<BookComponent
+ <FileName `<c\>anncovTOC.doc'>
+ <Unique 20>
+ <FileNameSuffix `TOC'>
+ <DeriveLinks No>
+ <DeriveType TOC>
+ <DeriveTag `Heading'>
+ <DeriveTag `Heading2'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+> # end of Dictionary
+<AFrames
+> # end of AFrames
+<Page
+ <Unique 86>
+ <PageType LeftMasterPage>
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 1>
+ <Unique 78>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 2>
+ <Unique 79>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 3>
+ <Unique 80>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 4>
+ <Unique 89>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 5>
+ <Unique 92>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 6>
+ <Unique 95>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 96>
+ <PageType RightMasterPage>
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 7>
+ <Unique 10352>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 8>
+ <Unique 10353>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 9>
+ <Unique 10354>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 10>
+ <Unique 99>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 11>
+ <Unique 102>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 12>
+ <Unique 105>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106>
+ <PageType ReferencePage>
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 10356>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 10357>
+ <Overprint No>
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 10358>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 46>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 10360>
+ <Overprint No>
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 10361>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored>
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 50>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 52>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 10364>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored>
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 55>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 10366>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 10367>
+ <Overprint No>
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 108>
+ <Overprint No>
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 110>
+ <Overprint No>
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 112>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 62>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 116>
+ <Overprint No>
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 118>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored>
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 66>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 68>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 124>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored>
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 71>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 128>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 130>
+ <Overprint No>
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 10368>
+ <PageType BodyPage>
+ <PageNum `i'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 13>
+ <Unique 10369>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 137>
+ <PageType BodyPage>
+ <PageNum `ii'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 14>
+ <Unique 140>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 81>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 1>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 82>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 2>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 83>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 3>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 142>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 4>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 144>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 5>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 146>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 6>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10342>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 7>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10343>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 8>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10344>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 9>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 148>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 10>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 150>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 11>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 152>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 12>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713194>
+ <PgfTag `Title'>
+ <ParaLine
+ <TextRectID 13>
+ >
+ > # end of Para
+ <Para
+ <Unique 713206>
+ <PgfTag `Title'>
+ <ParaLine
+ <String `X Print Service Extension Library'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713195>
+ <PgfTag `Title2'>
+ <Pgf
+ <PgfSpBefore 13.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Protocol Version 1.0'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `X Consortium Standard'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713196>
+ <PgfTag `Title3'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String ` X Version 11 Release 6.4'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713198>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 56>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 57>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 58>
+ <PgfTag `Title3'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A. Deininger'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `T. Gilg'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `J. Miller'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `H. Phinney'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `C. Prince'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Hewlett-Packard Co.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `K. Samborn'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `R. Swick'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `X Consortium, Inc. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713199>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 713200>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 713201>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 174>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop>
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 14>
+ >
+ > # end of Para
+ <Para
+ <Unique 176>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 178>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 180>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 182>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Copyright (c) 1996 Hewlett-Packard Company'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 International Business Machines, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Sun Microsystems, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Novell, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Digital Equipment Corp.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Fujitsu Limited'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Hitachi, Ltd.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 X Consortium, Inc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 184>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated '>
+ >
+ <ParaLine
+ <String `documentation files (the "Software"), to deal in the Software without restriction, including without limitation the '>
+ >
+ <ParaLine
+ <String `rights to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the Software, and to permit '>
+ >
+ <ParaLine
+ <String `persons to whom the Software is furnished to do so, subject to the following conditions:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 186>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `The above copyright notice and this permission notice shall be included in all copies or substantial portions of the '>
+ >
+ <ParaLine
+ <String `Software.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 188>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, '>
+ >
+ <ParaLine
+ <String `INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A '>
+ >
+ <ParaLine
+ <String `PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE '>
+ >
+ <ParaLine
+ <String `LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF '>
+ >
+ <ParaLine
+ <String `CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE '>
+ >
+ <ParaLine
+ <String `SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 190>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to '>
+ >
+ <ParaLine
+ <String `promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 115>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Window System'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a trademark of X Consortium, Inc.'>
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/XPRINT/xp_proto.book b/specs/XPRINT/xp_proto.book
new file mode 100644
index 0000000..c9b76e4
--- /dev/null
+++ b/specs/XPRINT/xp_proto.book
Binary files differ
diff --git a/specs/XPRINT/xp_proto.mif b/specs/XPRINT/xp_proto.mif
new file mode 100644
index 0000000..5396150
--- /dev/null
+++ b/specs/XPRINT/xp_proto.mif
@@ -0,0 +1,73304 @@
+<MIFFile 5.00> # Generated by FrameMaker xm5.0P3f
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+#
+<Units Uin>
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `PANTONE 485 CV'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 99.998474>
+ <ColorYellow 90.979004>
+ <ColorBlack 0.000000>
+ <ColorPantoneValue `485'>
+ > # end of Color
+ <Color
+ <ColorTag `Dark Blue Shading'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 16.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 30.000000>
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+ <Condition
+ <CTag `Open Issue'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 4>
+ <CColor `Blue'>
+ > # end of Condition
+ <Condition
+ <CTag `Unimplemented'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 6>
+ <CColor `Magenta'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `#define'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `#define'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement PageTop>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 27.0 pt>
+ <PgfSpAfter 19.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Step'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Step'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `S:<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `2Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 21.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `3Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 18.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `4Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 17.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Author'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `1Heading'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 3.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BodyClose'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bullet'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `B:\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bullet2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `B:\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BulletCont'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.94">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.19">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CBullet'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBodyCntr'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Bottom>
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeadingCntr'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Bottom>
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `centeredcell'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Code Example'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `ComposeCellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CStep'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Definition'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `DefinitionBelowTerm'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-arrow'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.375">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-form'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-literal'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-literal'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.875">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-type'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Equation'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `E:(EQ <n+\>)'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd Yes>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Extract'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.25">
+ <PgfLIndent 1.25">
+ <PgfRIndent 0.75">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Figure'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `Table Rule'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 16.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `F:FIGURE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Decl'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Intro'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Function Decl'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.65">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 16.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `header right'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Right>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Note'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered-decrement'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n-\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered0'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=0\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `ProgramExample'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 6>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Programlisting'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 6>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 42.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-arrow'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.4">
+ <PgfLIndent 0.4">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FEncoding `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-errors'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-item'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.9">
+ <PgfRIndent 1.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-item-indent'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 1.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-item-indent-2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 1.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefSect1Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `RefSect1Para'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 11.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `right footer'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Step'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `S:<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Structure Decl'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `SubTitle'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Author'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.16667">
+ <PgfLIndent 0.16667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.191">
+ <PgfLIndent 0.191">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `T:TABLE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Term'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Varlistentry'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Term_i'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Varlistentry_i'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 1.75">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Author'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 5.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner1'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.75">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry_i'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term_i'>
+ <PgfAlignment Left>
+ <PgfFIndent 2.75">
+ <PgfLIndent 2.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry_i_'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term_i'>
+ <PgfAlignment Left>
+ <PgfFIndent 2.75">
+ <PgfLIndent 2.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `WritersNote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 14.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `XPTabLine3'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `XPTabLine3NoSpace'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+> # end of PgfCatalog
+<FontCatalog
+ <Font
+ <FTag `ArgInList'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Argument'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `BitLabel'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Bullet Symbol'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Callout'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Definition term'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Emphasis'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Field Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Figure Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Function'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Table'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Text'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Literal'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Message'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `New Term'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Node Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Path'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Program'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Protocol'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Run-In Heading'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Subscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Superscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Tree Cap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Type Name'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Variable Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `WritersNote'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPArgument'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPEvent'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPFunction'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPMessage'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPRequest'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPValue'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPValueInText'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Compose Table'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Float>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Medium'>
+ <TblBRuling `Medium'>
+ <TblRRuling `Medium'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 5>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Sequence Examples'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.39641">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 2.10255">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.79896">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 0.95443">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.108">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Thin'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 2>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 0.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 3>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.10756">
+ <TblRIndent 0.0">
+ <TblAlignment Left>
+ <TblPlacement Anywhere>
+ <TblSpBefore 4.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 3>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `table3cols'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.5">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Float>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 5>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 2.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.5">
+ <TblRIndent 0.0">
+ <TblAlignment Left>
+ <TblPlacement Anywhere>
+ <TblSpBefore 0.0 pt>
+ <TblSpAfter 0.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 8.0 pt>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat ` Encoding: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 9>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$dayname\>, <$monthname\> <$daynum01\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[1Heading]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[2Heading]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `protocol'>
+ <VariableDef `<Protocol\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `header1'>
+ <VariableDef `<header1\>'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table & Page'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section & Page'>
+ <XRefDef `Section\x11 <$paranum\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure & Page'>
+ <XRefDef `Figure\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section'>
+ <XRefDef `section\x11 <$paranum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure'>
+ <XRefDef `Figure\x11 <$paranumonly\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Number'>
+ <XRefDef `<$paranum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Heading'>
+ <XRefDef `\xd2 <$paratext\>\xd3 '>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 48 27 876 644 >
+ <DWindowRect 24 1 920 747 >
+ <DViewScale 140.0%>
+ <DNextUnique 717706>
+ <DPageSize 8.5" 11.0">
+ <DMenuBar `'>
+ <DVoMenuBar `'>
+ <DStartPage 1>
+ <DPageNumStyle Arabic>
+ <DPagePointStyle Arabic>
+ <DTwoSides Yes>
+ <DParity FirstRight>
+ <DFrozenPages No>
+ <DPageRounding MakePageCountEven>
+ <DFNoteMaxH 4.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage>
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic>
+ <DFNoteAnchorPos FNSuperscript>
+ <DFNoteNumberPos FNBaseline>
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `. '>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha>
+ <DTblFNoteAnchorPos FNSuperscript>
+ <DTblFNoteNumberPos FNBaseline>
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `. '>
+ <DLinebreakChars `- \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.0">
+ <DChBarWidth 0.0 pt>
+ <DChBarPosition NearestEdge>
+ <DChBarColor `Black'>
+ <DAutoChBars No>
+ <DShowAllConditions No>
+ <DDisplayOverrides Yes>
+ <DPageScrolling Variable>
+ <DViewOnly No>
+ <DViewOnlyXRef GotoBehavior>
+ <DViewOnlySelect Yes>
+ <DViewOnlyWinBorders Yes>
+ <DViewOnlyWinMenubar Yes>
+ <DViewOnlyWinPopup Yes>
+ <DViewOnlyWinPalette No>
+ <DGridOn No>
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.0>
+ <DRulersOn Yes>
+ <DFullRulers Yes>
+ <DGraphicsOff No>
+ <DCurrentView 1>
+ <DBordersOn Yes>
+ <DSymbolsOn Yes>
+ <DLinkBoundariesOn No>
+ <DSmartQuotesOn Yes>
+ <DSmartSpacesOn Yes>
+ <DUpdateTextInsetsOnOpen Yes>
+ <DUpdateXRefsOnOpen Yes>
+ <DLanguage USEnglish>
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No>
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DPrintSkipBlankPages Yes>
+ <DPrintSeparations No>
+ <DGenerateAcrobatInfo No>
+ <DAcrobatParagraphBookmarks Yes>
+ <DAcrobatBookmarksIncludeTagNames No>
+> # end of Document
+<BookComponent
+ <FileName `<c\>xp_proto.mifIOM.doc'>
+ <Unique 34>
+ <FileNameSuffix `IOM'>
+ <DeriveLinks No>
+ <DeriveType IOM>
+ <DeriveTag `Index'>
+> # end of BookComponent
+<BookComponent
+ <FileName `<c\>xp_proto.mifIX.doc'>
+ <Unique 36>
+ <FileNameSuffix `IX'>
+ <DeriveLinks Yes>
+ <DeriveType IDX>
+ <DeriveTag `Index'>
+> # end of BookComponent
+<BookComponent
+ <FileName `<c\>xp_proto.mifTC.doc'>
+ <Unique 38>
+ <FileNameSuffix `TC'>
+ <DeriveLinks No>
+ <DeriveType TOC>
+ <DeriveTag `1Heading'>
+ <DeriveTag `2Heading'>
+ <DeriveTag `3Heading'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+<OKWord `????'>
+<OKWord `?????'>
+<OKWord `AllocColor'>
+<OKWord `BadMatch'>
+<OKWord `BadValue'>
+<OKWord `Bool'>
+<OKWord `ConfigureWindow'>
+<OKWord `Gilg'>
+<OKWord `InternAtom'>
+<OKWord `InvalidateTag'>
+<OKWord `MotionNotify'>
+<OKWord `Pixmap'>
+<OKWord `PrintGetPdmStartParams'>
+<OKWord `PrintSetContext'>
+<OKWord `QueryTag'>
+<OKWord `Reencoding'>
+<OKWord `XGetWindowAttributes'>
+<OKWord `XPBadContext'>
+<OKWord `XPBadSequence'>
+<OKWord `XPEndJobNotify'>
+<OKWord `XPGetData'>
+<OKWord `XPPrintNotify'>
+<OKWord `XPPrinterAttr'>
+<OKWord `XPSpool'>
+<OKWord `XPStartDocNotify'>
+<OKWord `X_ChangeProperty'>
+<OKWord `X_FillPoly'>
+<OKWord `X_LbxChangeProperty'>
+<OKWord `X_LbxGetProperty'>
+<OKWord `X_LbxIncrementPixel'>
+<OKWord `X_LbxModifySequence'>
+<OKWord `X_LookupColor'>
+<OKWord `X_PolyArc'>
+<OKWord `X_PolyFillArc'>
+<OKWord `X_PolyFillRectangle'>
+<OKWord `X_PolyLine'>
+<OKWord `X_PolyPoint'>
+<OKWord `X_PolyRectangle'>
+<OKWord `X_PolySegment'>
+<OKWord `Xauthority'>
+<OKWord `Xlib'>
+<OKWord `XpEndJob'>
+<OKWord `XpGetDocumentData'>
+<OKWord `XpNotify'>
+<OKWord `XpStartJob'>
+<OKWord `Xp_DataAvailable'>
+<OKWord `Xp_StartJobEvent'>
+<OKWord `_,'>
+<OKWord `contextID'>
+<OKWord `doc_fmt'>
+<OKWord `metrics'>
+<OKWord `printerName'>
+<OKWord `reencode'>
+<OKWord `reencoded'>
+<OKWord `saveData'>
+<OKWord `save_data'>
+<OKWord `spooler'>
+<OKWord `unset'>
+<OKWord `unsets'>
+<OKWord `{}'>
+<OKWord `\xd2 {}\xd3 '>
+<OKWord `\xd3 .'>
+<OKWord `\xd4 \xd5 '>
+> # end of Dictionary
+<AFrames
+ <Frame
+ <ID 1>
+ <Unique 912>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.22222" 0.25" 0.25">
+ <BRect 1.0" 4.22222" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 10>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 12>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 2>
+ <Unique 945>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.39166" 0.25" 0.26111">
+ <BRect 1.0" 5.39166" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 15>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 17>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 19>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 21>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 3>
+ <Unique 1284>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.26666" 0.25" 0.26111">
+ <BRect 1.0" 6.26666" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 24>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 26>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 28>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 30>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 4>
+ <Unique 1294>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 0.25" 0.26111">
+ <BRect 1.0" 1.125" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 33>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 35>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 37>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 39>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 5>
+ <Unique 1312>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.13889" 0.25" 0.25">
+ <BRect 1.0" 7.13889" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 42>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 44>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 6>
+ <Unique 1065>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.625" 0.25" 0.25">
+ <BRect 1.0" 1.625" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 47>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 49>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 7>
+ <Unique 962>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.79444" 0.25" 0.26111">
+ <BRect 1.0" 3.79444" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 52>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 54>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 56>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 58>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 8>
+ <Unique 975>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.33611" 0.25" 0.26111">
+ <BRect 1.0" 3.33611" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 61>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 63>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 65>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 67>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 9>
+ <Unique 1022>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.50278" 0.25" 0.26111">
+ <BRect 1.0" 2.50278" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 70>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 72>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 74>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 76>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 10>
+ <Unique 1011>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.76666" 0.25" 0.26111">
+ <BRect 1.0" 5.76666" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 79>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 81>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 83>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 85>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 11>
+ <Unique 1024>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.47499" 0.25" 0.26111">
+ <BRect 1.0" 9.47499" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 88>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 90>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 92>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 94>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 12>
+ <Unique 1034>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.65555" 0.25" 0.26111">
+ <BRect 1.0" 8.65555" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 97>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 99>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 101>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 103>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 13>
+ <Unique 1044>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.7111" 0.25" 0.26111">
+ <BRect 1.0" 9.7111" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 106>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 108>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 110>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 112>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 14>
+ <Unique 1044>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.65555" 0.25" 0.26111">
+ <BRect 1.0" 8.65555" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 115>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 117>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 119>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 121>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 15>
+ <Unique 1055>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.52777" 0.25" 0.25">
+ <BRect 1.0" 9.52777" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 124>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 126>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 16>
+ <Unique 1110>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.16944" 0.25" 0.26111">
+ <BRect 1.0" 4.16944" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 129>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 131>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 133>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 135>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 17>
+ <Unique 1074>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.50278" 0.25" 0.26111">
+ <BRect 1.0" 3.50278" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 138>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 140>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 142>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 144>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 18>
+ <Unique 1084>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.21111" 0.25" 0.26111">
+ <BRect 1.0" 7.21111" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 147>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 149>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 151>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 153>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 19>
+ <Unique 1094>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.82222" 0.25" 0.26111">
+ <BRect 1.0" 5.82222" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 156>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 158>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 160>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 162>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 20>
+ <Unique 1104>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.44722" 0.25" 0.26111">
+ <BRect 1.0" 8.44722" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 165>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 167>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 169>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 171>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 21>
+ <Unique 1114>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.66944" 0.25" 0.26111">
+ <BRect 1.0" 2.66944" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 174>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 176>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 178>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 180>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 22>
+ <Unique 1124>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.98889" 0.25" 0.26111">
+ <BRect 1.0" 5.98889" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 183>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 185>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 187>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 189>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 23>
+ <Unique 1134>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.80833" 0.25" 0.26111">
+ <BRect 1.0" 8.80833" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 192>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 194>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 196>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 198>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 24>
+ <Unique 1140>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.43333" 0.25" 0.26111">
+ <BRect 1.0" 7.43333" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 201>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 203>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 205>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 207>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 25>
+ <Unique 1100>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.88889" 0.25" 0.25">
+ <BRect 1.0" 7.88889" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 210>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 212>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 26>
+ <Unique 1173>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.90555" 0.25" 0.26111">
+ <BRect 1.0" 8.90555" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 215>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 217>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 219>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 221>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 27>
+ <Unique 1174>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.86389" 0.25" 0.26111">
+ <BRect 1.0" 5.86389" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 224>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 226>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 228>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 230>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 28>
+ <Unique 1194>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.46111" 0.25" 0.26111">
+ <BRect 1.0" 7.46111" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 233>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 235>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 237>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 239>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 29>
+ <Unique 1184>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.61111" 0.25" 0.25">
+ <BRect 1.0" 9.61111" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 242>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 244>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 30>
+ <Unique 1190>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.16944" 0.25" 0.26111">
+ <BRect 1.0" 2.16944" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 247>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 249>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 251>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 253>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 31>
+ <Unique 1328>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.09722" 0.25" 0.25">
+ <BRect 1.0" 4.09722" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 256>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 258>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 32>
+ <Unique 1038>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.31944" 0.25" 0.25">
+ <BRect 1.0" 4.31944" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 261>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 263>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 33>
+ <Unique 1344>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.30555" 0.25" 0.25">
+ <BRect 1.0" 6.30555" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 266>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 268>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 34>
+ <Unique 1352>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 0.25" 0.25">
+ <BRect 1.0" 1.125" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 271>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 273>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 35>
+ <Unique 1360>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.70833" 0.25" 0.25">
+ <BRect 1.0" 5.70833" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 276>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 278>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 36>
+ <Unique 1368>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 0.25" 0.25">
+ <BRect 1.0" 1.125" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 281>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 283>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 37>
+ <Unique 1124>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.65278" 0.25" 0.25">
+ <BRect 1.0" 5.65278" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 286>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 288>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 38>
+ <Unique 1392>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.04167" 0.25" 0.25">
+ <BRect 1.0" 4.04167" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 291>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 293>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 39>
+ <Unique 1400>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.75" 0.25" 0.25">
+ <BRect 1.0" 7.75" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 296>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 298>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 40>
+ <Unique 1408>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.52778" 0.25" 0.25">
+ <BRect 1.0" 6.52778" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 301>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 303>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 41>
+ <Unique 1416>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.43055" 0.25" 0.25">
+ <BRect 1.0" 9.43055" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 306>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 308>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 42>
+ <Unique 1424>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 3.81944" 0.25" 0.25">
+ <BRect 1.0" 3.81944" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 311>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 313>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 43>
+ <Unique 1432>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 7.30555" 0.25" 0.25">
+ <BRect 1.0" 7.30555" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 316>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 318>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 44>
+ <Unique 1440>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.84722" 0.25" 0.25">
+ <BRect 1.0" 9.84722" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 321>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 323>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 45>
+ <Unique 1200>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.70833" 0.25" 0.25">
+ <BRect 1.0" 2.70833" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 326>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 328>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 46>
+ <Unique 1456>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.29166" 0.25" 0.25">
+ <BRect 1.0" 6.29166" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 331>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 333>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 47>
+ <Unique 1320>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.93056" 0.25" 0.25">
+ <BRect 1.0" 5.93056" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 336>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 338>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 48>
+ <Unique 3893>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.16944" 0.25" 0.26111">
+ <BRect 1.0" 5.16944" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 341>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 343>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 345>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 347>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 49>
+ <Unique 5243>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.00277" 0.25" 0.26111">
+ <BRect 1.0" 4.00277" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 350>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 352>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 354>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 356>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 50>
+ <Unique 5254>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 4.19444" 0.25" 0.25">
+ <BRect 1.0" 4.19444" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 359>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 361>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 51>
+ <Unique 3506>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 9.05833" 0.25" 0.26111">
+ <BRect 1.0" 9.05833" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 364>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 366>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 368>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 370>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 52>
+ <Unique 3551>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.5" 0.25" 0.25">
+ <BRect 1.0" 1.5" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 373>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 375>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 53>
+ <Unique 3587>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 6.90278" 0.25" 0.25">
+ <BRect 1.0" 6.90278" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 378>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 380>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 54>
+ <Unique 3608>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 5.91944" 0.25" 0.26111">
+ <BRect 1.0" 5.91944" 0.25" 0.26111">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.11111">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 383>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 385>
+ <PenWidth 0.5 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 387>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 389>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.25" 0.0">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <ID 55>
+ <Unique 3863>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 8.94444" 0.25" 0.25">
+ <BRect 1.0" 8.94444" 0.25" 0.25">
+ <FrameType Left>
+ <AnchorBeside TextFrame>
+ <NSOffset -0.25">
+ <BLOffset -0.03241">
+ <AnchorAlign Center>
+ <Cropped No>
+ <PolyLine
+ <Unique 392>
+ <Pen 0>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.0">
+ <Point 0.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 394>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.25">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ > # end of Frame
+> # end of AFrames
+<Tbls
+ <Tbl
+ <TblID 56>
+ <TblTag `Compose Table'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblLIndent 0.5">
+ <TblAlignment Left>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblInitNumColumns 2>
+ <TblInitNumBodyRows 4>
+ > # end of TblFormat
+ <TblNumColumns 2>
+ <Unique 1903>
+ <TblColumnWidth 1.0">
+ <TblColumnWidth 4.0">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellLRuling `None'>
+ <CellBRuling `Thin'>
+ <CellRRuling `None'>
+ <CellTRuling `None'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1905>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `ATOM'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellBRuling `Thin'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1907>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DATA RECEIVED'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1909>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_START'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1911>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Request that a dialog be managed for a particular print context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 57>
+ <TblTag `Compose Table'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblLIndent 0.5">
+ <TblAlignment Left>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblInitNumColumns 2>
+ <TblInitNumBodyRows 4>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 1920>
+ <TblColumnWidth 1.0">
+ <TblColumnWidth 1.5">
+ <TblColumnWidth 2.5">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellBRuling `Thin'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1922>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PARAMETER'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellBRuling `Thin'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1924>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `FORMAT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellBRuling `Thin'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1926>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1928>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `video-display'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1930>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `\xd2 host:port[.screen]\xd3 '>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1932>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `X display of video server'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1934>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `video-window'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1936>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `\xd2 0x12345678\xd3 '>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1938>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Window to act as parent of PDM dialog'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1940>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `print-display'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1942>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `\xd2 host:port[.screen]\xd3 '>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1944>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `X display of print server'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.38889">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1946>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `print-window'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1948>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `\xd2 0x12345678\xd3 '>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1950>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Window on print server for subsequent '>
+ >
+ <ParaLine
+ <String `communication'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1952>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `print-context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1954>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `\xd2 0x12345678\xd3 '>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1956>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Context of print job'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1958>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `locale'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1960>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `\xd2 C\xd3 '>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1962>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Hint to PDM regarding the locale'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 58>
+ <TblTag `Compose Table'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblLIndent 0.5">
+ <TblAlignment Left>
+ <TblBlockSize 1>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblInitNumColumns 2>
+ <TblInitNumBodyRows 4>
+ > # end of TblFormat
+ <TblNumColumns 2>
+ <Unique 1967>
+ <TblColumnWidth 2.0">
+ <TblColumnWidth 4.0">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellLRuling `None'>
+ <CellBRuling `Thin'>
+ <CellRRuling `None'>
+ <CellTRuling `None'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1969>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `ATOM'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellBRuling `Thin'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1971>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1973>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_START_OK'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1975>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The PDM was started successfully'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1977>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_START_VXAUTH'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1979>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The PDM was not authorized to connect to video-display'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1981>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_START_PXAUTH'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1983>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The PDM was not authorized to connect to print-display'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1985>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_START_ERROR'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1987>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The PDM encountered an error'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 59>
+ <TblTag `Compose Table'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfAlignment Center>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblLIndent 0.5">
+ <TblAlignment Left>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblInitNumColumns 2>
+ <TblInitNumBodyRows 4>
+ > # end of TblFormat
+ <TblNumColumns 2>
+ <Unique 1991>
+ <TblColumnWidth 2.0">
+ <TblColumnWidth 4.0">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellLRuling `None'>
+ <CellBRuling `Thin'>
+ <CellRRuling `None'>
+ <CellTRuling `None'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1993>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `ATOM'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellBRuling `Thin'>
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1995>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.38889">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1997>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_EXIT_OK'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1999>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The user selected \xd2 OK\xd3 . The PDM may or may not have changed '>
+ >
+ <ParaLine
+ <String `any attributes.'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.38889">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2001>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_EXIT_CANCEL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2003>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The user selected \xd2 Cancel\xd3 . Attributes have been left in the state they '>
+ >
+ <ParaLine
+ <String `were in before communication began.'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2005>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_EXIT_VXAUTH'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2007>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The PDM was not authorized to connect to video-display'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2009>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_EXIT_PXAUTH'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2011>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The PDM was not authorized to connect to print-display'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2013>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `PDM_EXIT_ERROR'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2015>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `The PDM encountered an error'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 60>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2016>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2030>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2032>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2034>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major im'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2036>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2038>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2040>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2042>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2044>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2046>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 61>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2049>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2063>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2065>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2067>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2069>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2071>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2073>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2075>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2077>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2079>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2081>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2083>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2085>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2087>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2089>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2091>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major-version'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2093>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2095>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2097>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor-version'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2099>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2101>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2103>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 62>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2110>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2124>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2126>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2128>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2130>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2132>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2134>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2136>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2138>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3+(nl+np + ll+lp)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2140>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2142>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2144>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2146>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `printerNameLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2148>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2150>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2152>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `localeLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2154>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `nl'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2156>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2158>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `printer-name'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2160>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `np'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2162>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2164>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p=pad(nl)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2166>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `ll'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2168>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2170>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `locale'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2172>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `lp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2174>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2176>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `lp=pad(ll)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 63>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumBodyRows 7>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2179>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2193>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2195>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2197>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2199>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2201>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2203>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2205>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2207>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2209>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequenceNumber'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.33333">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2211>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2213>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String ` (8 + nl+nlp + dl+dlp)/4 computed '>
+ >
+ <ParaLine
+ <String `listCount times'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2215>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2217>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2219>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2221>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `listCount'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2223>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2225>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2227>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.94444">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2229>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String ` (8 + '>
+ >
+ <ParaLine
+ <String `nl+nlp + '>
+ >
+ <ParaLine
+ <String `dl+dlp) '>
+ >
+ <ParaLine
+ <String `computed '>
+ >
+ <ParaLine
+ <String `listCount '>
+ >
+ <ParaLine
+ <String `times'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2231>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `LISTofPRINTER'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2233>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `printers'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2235>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2237>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2239>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2241>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PRINTER'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2243>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2245>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2247>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2249>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2251>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `nameLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2253>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `nl'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2255>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2257>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `name'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2259>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `nlp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2261>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2263>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `nlp=pad(nl)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2265>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2267>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2269>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `descLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2271>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `dl'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2273>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2275>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `description'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2277>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `dlp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2279>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2281>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `dlp=pad(dl)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 64>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2288>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2302>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2304>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2306>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2308>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2310>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2312>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2314>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2316>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2318>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 65>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2325>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2339>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2341>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2343>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2345>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2347>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2349>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2351>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2353>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 + (nl+np + ll+lp)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2355>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2357>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2359>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2361>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context-id'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2363>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2365>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2367>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `printerNameLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2369>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2371>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2373>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `localeLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2375>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `nl'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2377>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2379>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `printer-name'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2381>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `np'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2383>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2385>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `np=pad(nl)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2387>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `ll'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2389>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2391>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `locale'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2393>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `lp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2395>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2397>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `lp=pad(ll)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 66>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2404>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2418>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2420>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2422>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2424>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2426>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2428>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2430>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2432>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2434>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2436>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2438>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2440>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 67>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2447>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2461>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2463>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2465>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2467>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2469>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2471>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2473>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2475>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2477>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 68>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2479>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2493>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2495>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2497>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2499>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2501>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2503>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2505>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2507>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2509>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2511>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2513>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2515>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2517>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2519>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2521>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2523>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2525>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2527>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 69>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2534>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2548>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2550>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2552>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2554>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2556>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `5'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2558>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2560>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2562>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2564>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2566>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2568>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2570>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 70>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2577>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2591>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2593>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2595>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2597>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2599>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `6'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2601>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2603>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2605>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2607>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 71>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 4178>
+ <TblColumnWidth 1.23973">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4192>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4194>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4196>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4198>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4200>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4202>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4204>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4206>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4208>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4210>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4212>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4214>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4216>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4218>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `WINDOW'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4220>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `root'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4222>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4224>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4226>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 72>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2665>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2679>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2681>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2683>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2685>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2687>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `7'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2689>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2691>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2693>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2695>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2697>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2699>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2701>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `output-mode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2703>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2705>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2707>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 73>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2714>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2728>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2730>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2732>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2734>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2736>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2738>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2740>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2742>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2744>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2746>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2748>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2750>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `cancel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2752>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2754>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2756>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 74>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2763>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2777>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2779>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2781>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2783>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2785>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `9'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2787>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2789>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2791>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2793>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2795>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2797>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2799>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `driver-mode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2801>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2803>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2805>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 75>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2812>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2826>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2828>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2830>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2832>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2834>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `10'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2836>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2838>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2840>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2842>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2844>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2846>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2848>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `cancel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2850>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2852>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2854>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 76>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2861>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2875>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2877>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2879>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2881>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2883>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `11'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2885>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2887>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2889>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 + (d+dp + f+fp + o+op)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2891>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2893>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2895>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `DRAWABLE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2897>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `drawable'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2899>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2901>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2903>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `len_data'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2905>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2907>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2909>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `len_fmt'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2911>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2913>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2915>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `len_options'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2917>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `d'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2919>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `LISTofBYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2921>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `data'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2923>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `dp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2925>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2927>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `dp=pad(d)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2929>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2931>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2933>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `doc-format'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2935>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `fp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2937>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE '>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2939>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `fp=pad(f)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2941>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `o'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2943>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2945>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `options'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2947>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `op'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2949>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2951>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `op=pad(o)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 77>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2958>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2972>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2974>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2976>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2978>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2980>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `12'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2982>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2984>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2986>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2988>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2990>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2992>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2994>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2996>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2998>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3000>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `max-bytes'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 78>
+ <TblTag `Format A'>
+ <TblNumColumns 3>
+ <Unique 4397>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4405>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4407>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4409>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4411>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4413>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4415>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4417>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4419>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4421>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4423>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4425>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `(n + p)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4427>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.33333">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4429>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4431>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0 XPGetDocFinished'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `1 XPGetDocSecondConsumer'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4433>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `status-code'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4435>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4437>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4439>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `finished-flag'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4441>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4443>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4445>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `dataLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4447>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `12'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4449>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4451>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4453>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4455>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `LISTofBYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4457>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `data'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4459>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4461>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4463>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p=pad(n)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 79>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3080>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3094>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3096>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3098>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3100>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3102>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `13'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3104>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3106>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3108>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3110>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3112>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3114>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `WINDOW'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3116>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `window'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 80>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3123>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3137>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3139>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3141>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3143>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3145>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `14'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3147>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3149>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3151>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3153>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3155>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3157>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3159>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `cancel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3161>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3163>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3165>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 81>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3172>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3186>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3188>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3190>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3192>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3194>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `15'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3196>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3198>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3200>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3202>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3204>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3206>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3208>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3210>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3212>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BITMASK'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3214>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `event-mask'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4475>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4477>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `#x00000000'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4479>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `XPNoEventMask'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4469>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4471>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `#x00000001'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4473>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `XPPrintMask'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4463>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4465>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `#x00000002'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4467>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `XPAttributeMask'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 82>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3220>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3234>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3236>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3238>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3240>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3242>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3244>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3246>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3248>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3250>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3252>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3254>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3256>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 83>
+ <TblTag `Format A'>
+ <TblNumColumns 3>
+ <Unique 4479>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4487>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4489>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4491>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4493>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4495>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4497>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4499>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4501>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4503>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4505>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4507>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4509>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4511>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4513>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BITMASK'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4515>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `event-mask'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4517>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4519>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BITMASK'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4521>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `all-events-mask'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4523>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4525>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4527>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 84>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3318>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3332>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3334>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3336>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3338>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3340>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `17'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3342>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3344>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3346>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3348>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3350>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3352>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3354>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3356>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3358>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3360>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `pool'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3362>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3364>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3366>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 85>
+ <TblTag `Format A'>
+ <TblNumColumns 3>
+ <Unique 4538>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4546>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4548>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4550>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4552>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4554>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4556>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4558>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4560>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4562>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4564>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4566>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `(n+p)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4568>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4570>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4572>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4574>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `stringLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4576>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4578>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4580>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4582>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4584>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4586>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `attributes'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4588>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4590>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4592>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p=pad(n)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 86>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 4286>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4300>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4302>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4304>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4306>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4308>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `19'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4310>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4312>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4314>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 + (n+p)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4316>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4318>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4320>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4322>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4324>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4326>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4328>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `nameLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4330>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4332>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4334>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `pool'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4336>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4338>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4340>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4342>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4344>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4346>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `name'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4348>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4350>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4352>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p=pad(n)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 87>
+ <TblTag `Format A'>
+ <TblNumColumns 3>
+ <Unique 4603>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4611>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4613>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4615>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4617>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4619>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4621>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4623>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4625>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4627>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4629>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4631>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `(n+p)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4633>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4635>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4637>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4639>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `valueLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4641>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4643>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4645>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4647>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4649>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4651>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `value'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4653>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4655>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4657>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p=pad(n)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 88>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3567>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3581>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3583>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3585>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3587>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3589>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `18'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3591>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3593>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3595>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 + (n+p)/4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3597>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3599>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3601>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3603>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3605>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3607>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD32'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3609>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `stringLen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3611>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3613>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3615>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `pool'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3617>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3619>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3621>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `rule'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3623>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3625>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3627>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3629>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3631>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `STRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3633>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `attributes'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3635>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3637>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BYTE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3639>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p=pad(n)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 89>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 4659>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4673>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4675>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4677>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4679>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4681>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `21'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4683>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4685>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4687>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4689>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4691>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4693>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4695>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 90>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 4697>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4711>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4713>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4715>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4717>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4719>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4721>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4723>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4725>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4727>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4729>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4731>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4733>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4735>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4737>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `16'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4739>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `width'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4741>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4743>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `16'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4745>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `height'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4747>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4749>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `16'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4751>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `offset-x'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4753>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4755>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `16'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4757>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `offset-y'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4759>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4761>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `16'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4763>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `reproducible-width'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4765>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4767>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `16'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4769>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `reproducible-height'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4771>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `12'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4773>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4775>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 91>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3770>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3784>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3786>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3788>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3790>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3792>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `22'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3794>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3796>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3798>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `2'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3800>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 92>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3802>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3816>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3818>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3820>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3822>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3824>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3826>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3828>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3830>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3832>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3834>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3836>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `listCount'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3838>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3840>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `4'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3842>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CAR'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `D32'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3844>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `listCount'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3846>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `20'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3848>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3850>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.33333">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3852>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `4 * list'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Count'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3854>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `LISTofWINDOW'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3856>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `roots'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3858>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3860>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3862>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.33333">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3864>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `ROOT'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `WINDOW'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3866>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3868>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3870>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `4'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3872>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `WINDOW'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3874>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `rootWindow'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 93>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat ` Encoding: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3881>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3895>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3897>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0 + base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3899>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `code'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 1.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3901>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3903>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0 XPStartJobNotify'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3904>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1 XPEndJobNotify'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3905>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2 XPStartDocNotify'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3906>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3 XPEndDocNotify'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3907>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 XPStartPageNotify'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3908>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `5 XPEndPageNotify'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3910>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `detail'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3912>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3914>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3916>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3918>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3920>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3922>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3924>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3926>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3928>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `cancel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3930>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `23'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3932>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3934>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 94>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat ` Encoding: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3938>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 2.21693">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3952>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3954>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1 + base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3956>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `code'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 1.43056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3958>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3960>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1 XPJobAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3961>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2 XPDocAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3962>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3 XPPageAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3963>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 XPPrinterAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3964>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `5 XPServerAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3965>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `6 XPMediumAttr (future use)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3966>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `7 XPSpoolerAttr (future use)'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3968>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `detail'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3970>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3972>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3974>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3976>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3978>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3980>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3982>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3984>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3986>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 95>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3993>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4007>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4009>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4011>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Error'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4013>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4015>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `0 +'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4017>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `code'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4019>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4021>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4023>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 96>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 4027>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4041>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4043>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4045>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Error'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4047>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4049>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `1 +'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4051>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `code'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4053>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4055>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4057>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 97>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3620>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3622>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3624>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3626>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3628>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3630>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `23'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3632>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3634>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3636>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3638>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3640>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3642>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3644>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3646>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3648>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3650>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `image-resolution'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3652>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3654>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3656>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 98>
+ <TblTag `Format A'>
+ <TblNumColumns 3>
+ <Unique 3659>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3661>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3663>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3665>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3667>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3669>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3671>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `status'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3673>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3675>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3677>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3679>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3681>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3683>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3685>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3687>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3689>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `previous-resolution'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3691>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `22'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3693>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3695>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 99>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.23973">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 3946>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3948>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3950>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `base'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3952>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `major opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3954>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3956>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3958>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `minor opcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3960>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3962>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3964>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `request length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3966>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3968>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3970>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `context'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 100>
+ <TblTag `Format A'>
+ <TblNumColumns 3>
+ <Unique 3985>
+ <TblColumnWidth 0.75">
+ <TblColumnWidth 1.92446">
+ <TblColumnWidth 1.874">
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3987>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3989>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3991>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Reply'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3993>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3995>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3997>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3999>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4001>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4003>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `sequence number'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4005>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4007>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4009>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `reply length'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4011>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4013>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CARD16'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4015>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `image-resolution'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.18056">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4017>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `22'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4019>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 4021>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `unused'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+> # end of Tbls
+<Page
+ <Unique 713331>
+ <PageType LeftMasterPage>
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 101>
+ <Unique 713332>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.0" 0.1569">
+ <BRect 1.0" 10.334" 6.0" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 102>
+ <Unique 713333>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2865>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.0" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 103>
+ <Unique 713335>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.0" 0.211">
+ <BRect 1.0" 0.5" 6.0" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 104>
+ <Unique 713336>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 105>
+ <Unique 713337>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.125">
+ <BRect 1.0" 1.0" 6.5" 9.125">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2873>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+> # end of Page
+<Page
+ <Unique 713364>
+ <PageType RightMasterPage>
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 106>
+ <Unique 713369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2877>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 107>
+ <Unique 713371>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2881>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 108>
+ <Unique 713506>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 479>
+ <PageType OtherMasterPage>
+ <PageTag `First'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 109>
+ <Unique 480>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2888>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 110>
+ <Unique 482>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2892>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 111>
+ <Unique 484>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 513>
+ <PageType OtherMasterPage>
+ <PageTag `cover'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 112>
+ <Unique 514>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2899>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 113>
+ <Unique 516>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 2903>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 114>
+ <Unique 518>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713401>
+ <PageType ReferencePage>
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 713402>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <TLOrigin 1.0" 0.625">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713403>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.69444" 2.52778" 0.27778">
+ <BRect 1.0" 0.69444" 2.52778" 0.27778">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 2910>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.16667">
+ <Point 1.83333" 0.16667">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 713405>
+ <Overprint No>
+ <TLOrigin 1.02845" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713406>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.76745" 2.52778" 0.09722">
+ <BRect 1.0" 1.76745" 2.52778" 0.09722">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ <PolyLine
+ <Unique 2914>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.08333" 0.0534">
+ <Point 1.83333" 0.0534">
+ > # end of PolyLine
+ > # end of Frame
+> # end of Page
+<Page
+ <Unique 713409>
+ <PageType ReferencePage>
+ <PageTag `TOC'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 115>
+ <Unique 713410>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713411>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Table of Contents Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713416>
+ <PageType ReferencePage>
+ <PageTag `IX'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 116>
+ <Unique 713417>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 5.5" 1.625">
+ <BRect 1.5" 4.0" 5.5" 1.625">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713418>
+ <Overprint No>
+ <TLOrigin 1.5" 3.88623">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Index Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713427>
+ <PageType ReferencePage>
+ <PageTag `LOF'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 117>
+ <Unique 713428>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713429>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `List of Figures Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713432>
+ <PageType ReferencePage>
+ <PageTag `LOT'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 118>
+ <Unique 713433>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713434>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `List of Tables Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 10368>
+ <PageType BodyPage>
+ <PageNum `1'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 119>
+ <Unique 10369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 120>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713316>
+ <PageType BodyPage>
+ <PageNum `2'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 120>
+ <Unique 713317>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 121>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713319>
+ <PageType BodyPage>
+ <PageNum `3'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 121>
+ <Unique 713320>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 122>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713322>
+ <PageType BodyPage>
+ <PageNum `4'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 122>
+ <Unique 713323>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 123>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713325>
+ <PageType BodyPage>
+ <PageNum `5'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 123>
+ <Unique 713326>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 124>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713328>
+ <PageType BodyPage>
+ <PageNum `6'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 124>
+ <Unique 713329>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 125>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713436>
+ <PageType BodyPage>
+ <PageNum `7'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 125>
+ <Unique 713437>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 126>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713439>
+ <PageType BodyPage>
+ <PageNum `8'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 126>
+ <Unique 713440>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 127>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713654>
+ <PageType BodyPage>
+ <PageNum `9'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 127>
+ <Unique 713655>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 128>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 491>
+ <PageType BodyPage>
+ <PageNum `10'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 128>
+ <Unique 492>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 129>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 574>
+ <PageType BodyPage>
+ <PageNum `11'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 129>
+ <Unique 575>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 130>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1719>
+ <PageType BodyPage>
+ <PageNum `12'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 130>
+ <Unique 1720>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 131>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1722>
+ <PageType BodyPage>
+ <PageNum `13'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 131>
+ <Unique 1723>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 132>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1725>
+ <PageType BodyPage>
+ <PageNum `14'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 132>
+ <Unique 1726>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 133>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1728>
+ <PageType BodyPage>
+ <PageNum `15'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 133>
+ <Unique 1729>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 134>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1731>
+ <PageType BodyPage>
+ <PageNum `16'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 134>
+ <Unique 1732>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 135>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1734>
+ <PageType BodyPage>
+ <PageNum `17'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 135>
+ <Unique 1735>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 136>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1737>
+ <PageType BodyPage>
+ <PageNum `18'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 136>
+ <Unique 1738>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 137>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1740>
+ <PageType BodyPage>
+ <PageNum `19'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 137>
+ <Unique 1741>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 138>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1743>
+ <PageType BodyPage>
+ <PageNum `20'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 138>
+ <Unique 1744>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 139>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1746>
+ <PageType BodyPage>
+ <PageNum `21'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 139>
+ <Unique 1747>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 140>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1749>
+ <PageType BodyPage>
+ <PageNum `22'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 140>
+ <Unique 1750>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 141>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1752>
+ <PageType BodyPage>
+ <PageNum `23'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 141>
+ <Unique 1753>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 142>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1755>
+ <PageType BodyPage>
+ <PageNum `24'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 142>
+ <Unique 1756>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 143>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1758>
+ <PageType BodyPage>
+ <PageNum `25'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 143>
+ <Unique 1759>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 144>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1761>
+ <PageType BodyPage>
+ <PageNum `26'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 144>
+ <Unique 1762>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 145>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2022>
+ <PageType BodyPage>
+ <PageNum `27'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 145>
+ <Unique 2023>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 146>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2025>
+ <PageType BodyPage>
+ <PageNum `28'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 146>
+ <Unique 2026>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 147>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2002>
+ <PageType BodyPage>
+ <PageNum `29'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 147>
+ <Unique 2003>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 148>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 4098>
+ <PageType BodyPage>
+ <PageNum `30'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 148>
+ <Unique 4099>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 149>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 4101>
+ <PageType BodyPage>
+ <PageNum `31'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 149>
+ <Unique 4102>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 150>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 3564>
+ <PageType BodyPage>
+ <PageNum `32'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 150>
+ <Unique 3565>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713349>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.0">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 101>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 713341>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Current Date (Long)'>
+ <Unique 713344>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 713347>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713350>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 102>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713351>
+ <PgfTag `header right'>
+ <Pgf
+ <PgfAlignment Left>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 103>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FLocked No>
+ > # end of Font
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 444>
+ > # end of Variable
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FLocked No>
+ > # end of Font
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 501>
+ > # end of Variable
+ <Variable
+ <VariableName `protocol'>
+ <Unique 447>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713477>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 104>
+ <String `Release 6.4'>
+ <Char Tab>
+ <Char Tab>
+ <String `X Version 11'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713362>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 105>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713374>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 106>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713381>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 107>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713510>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 108>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 713559>
+ > # end of Variable
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 504>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 715799>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 485>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 109>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 489>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 110>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 496>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 111>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 491>
+ > # end of Variable
+ <Char Tab>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 519>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 112>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 523>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 113>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 527>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 114>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 525>
+ > # end of Variable
+ <Char Tab>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `TOC'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713412>
+ <Pgf
+ <PgfTag `1HeadingTOC'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.5">
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 115>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713413>
+ <Pgf
+ <PgfTag `2HeadingTOC'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713414>
+ <Pgf
+ <PgfTag `3HeadingTOC'>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.5">
+ <PgfSpBefore 0.0 pt>
+ <PgfBlockSize 1>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `IX'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713419>
+ <Pgf
+ <PgfTag `Level2IX'>
+ <PgfFIndent 0.125">
+ <PgfLIndent 0.375">
+ <PgfLeading 1.0 pt>
+ <PgfNumTabs 0>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 116>
+ <String `Level2IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713420>
+ <Pgf
+ <PgfTag `Level1IX'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String `Level1IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713421>
+ <Pgf
+ <PgfTag `SpecIX'>
+ <PgfLIndent 0.0">
+ <PgfLeading 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String ` 1, 2'>
+ <Char EnDash>
+ <String `3'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713422>
+ <Pgf
+ <PgfTag `SortSpecIX'>
+ > # end of Pgf
+ <ParaLine
+ <String `<$symbols\><$numerics\><$alphabetics\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713423>
+ <Pgf
+ <PgfTag `GroupTitlesIX'>
+ <PgfSpBefore 11.0 pt>
+ <PgfWithNext Yes>
+ > # end of Pgf
+ <ParaLine
+ <String `Symbols[\\ ];Numerics[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713424>
+ <Pgf
+ <PgfTag `IndexIX'>
+ <PgfSpBefore 0.0 pt>
+ <PgfWithNext No>
+ > # end of Pgf
+ <ParaLine
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713425>
+ <Pgf
+ <PgfTag `Paragraph'>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOF'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713430>
+ <Pgf
+ <PgfTag `FigureLOF'>
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfBlockSize 2>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 117>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOT'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713435>
+ <Pgf
+ <PgfTag `TableTitleLOT'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 118>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3808>
+ <PgfTag `1Heading'>
+ <PgfNumString `1\t'>
+ <ParaLine
+ <TextRectID 119>
+ <String `Overview'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3809>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `X Print Service is an X extension that allows X imaging to non-display devices such as printers and fax '>
+ >
+ <ParaLine
+ <String `machines. The core of the X Print Service is the X Print Server. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 435>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Applications that require printing operations can make a connection to X Print Server and list the available '>
+ >
+ <ParaLine
+ <String `printers using the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request. After selecting a printer, an application must create and set '>
+ >
+ <ParaLine
+ <String `a print context using the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintCreateContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` requests. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 715581>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The \xd2 print context\xd3 is a fundamental X Print Service concept. A print context:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 493>
+ <PgfTag `Bullet'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar Yes>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `Contains a printer\xd5 s default capabilities'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 496>
+ <PgfTag `Bullet2'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar Yes>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `Contains a printer\xd5 s range of capabilities'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 497>
+ <PgfTag `Bullet2'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar Yes>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `Maintains the state of the settings on a printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 498>
+ <PgfTag `Bullet2'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar Yes>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `Maintains the state of rendering against a printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 499>
+ <PgfTag `Bullet2'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar Yes>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `Maintains rendered output'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 500>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A print context also affects how the DDX driver generates its page description language (PDL), and how the '>
+ >
+ <ParaLine
+ <String `PDL is submitted to a spooler. It may affect fonts and other elements in the DDX layer of the X Print Server. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 494>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Printer capabilities are defined by attribute pools within the print context. They contain information related '>
+ >
+ <ParaLine
+ <String `to a context\xd5 s server, printer, job, document, and page options. '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `are used to access and modify attribute pools. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 505>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are used to delineate print jobs. A \xd2 job\xd3 is a collection of documents '>
+ >
+ <ParaLine
+ <String `delineated by '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Each document is, in turn, a collection of \xd2 pages\xd3 . Upon '>
+ >
+ <ParaLine
+ <String `completion the server sends any resulting PDL to a print spooler, or makes it available for retrieval by an '>
+ >
+ <ParaLine
+ <String `application.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715291>
+ <PgfTag `1Heading'>
+ <PgfNumString `2\t'>
+ <ParaLine
+ <TextRectID 120>
+ <String `Protocols'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715292>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.1\t'>
+ <ParaLine
+ <String `Formats, Syntactic Conventions, and Common Types'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713194>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The type '>
+ <Marker
+ <MType 2>
+ <MText `PCONTEXT, type'>
+ <MCurrPage `2'>
+ <Unique 3879>
+ > # end of Marker
+ <String `PCONTEXT is a 32-bit value. Its top three bits are guaranteed to be zero.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5028>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Refer to the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Window System'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` Protocol specification for a description of other formats, syntactic conven'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tions and common types established in that publication and used in the current document as well.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717705>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.2\t'>
+ <ParaLine
+ <String `Errors'>
+ <Marker
+ <MType 2>
+ <MText `errors'>
+ <MCurrPage `2'>
+ <Unique 3876>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 709>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `X Print Service can return the following messages, in addition to X core request errors.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 710>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XPBadContext, error description'>
+ <MCurrPage `2'>
+ <Unique 3877>
+ > # end of Marker
+ <String `XPBadContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `An incorrect print context ID was specified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 712>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `XPBadSequence, error description'>
+ <MCurrPage `2'>
+ <Unique 3878>
+ > # end of Marker
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Requests were not specified in the proper order with respect to other '>
+ >
+ <ParaLine
+ <String `requests. For example, a request was specified before a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 697>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Other errors that are context specific for a particular request are documented in the description of the request '>
+ >
+ <ParaLine
+ <String `itself. If the above errors have a specific meaning for a particular request, they are documented in the request '>
+ >
+ <ParaLine
+ <String `itself as well.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 525>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.3\t'>
+ <ParaLine
+ <String `X Print Service Requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 530>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 3>
+ <String `PrintCreateContext'>
+ <Marker
+ <MType 2>
+ <MText `PrintCreateContext:request'>
+ <MCurrPage `2'>
+ <Unique 438>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 713600>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `context-id'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713610>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1423>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `locale'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717435>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 5>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `Match, IDChoice'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717252>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request creates a new print context and assigns context-id to it. The attributes associated with the new '>
+ >
+ <ParaLine
+ <String `context are those determined by the printer-name. Printer-name is encoded in COMPOUND_TEXT. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 5064>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The client must select the context-id by ORing some combination of bits in the connection resource-id-mask '>
+ >
+ <ParaLine
+ <String `with the resource-id-base.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1638>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The locale argument is used as a \xd2 hint\xd3 to the print server, and is used to initialize attribute pools with any '>
+ >
+ <ParaLine
+ <String `localized attribute values.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1640>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A '>
+ <Font
+ <FTag `Message'>
+ <FLocked No>
+ > # end of Font
+ <String `Match'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is generated when the printer-name does not exist. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 638>
+ <PgfTag `Protocol'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2050>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <TextRectID 121>
+ <AFrame 4>
+ <String `PrintSetContext'>
+ <Marker
+ <MType 2>
+ <MText `PrintSetContext:request'>
+ <MCurrPage `3'>
+ <Unique 439>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1447>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT or '>
+ <Font
+ <FTag `XPValue'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 491>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <AFrame 6>
+ <Font
+ <FTag `Literal'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `Errors:'>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String ` XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1451>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request associates the context specified with all subsequent print operations for this client. If context is '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `None'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the print context previously associated with this client is unset. If no print context was previously set, '>
+ >
+ <ParaLine
+ <String `then no action is taken when '>
+ <Font
+ <FTag `Argument'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `None'>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is specified. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 603>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The execution of the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintSetContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request may affect the interpretation of the font path. The font path '>
+ >
+ <ParaLine
+ <String `contains font path elements for all printers associated with a print server. Only those associated with the cur'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `rent print context are returned and used for print rendering.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1458>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 7>
+ <String `PrintGetContext'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetContext:request'>
+ <MCurrPage `3'>
+ <Unique 440>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1459>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 605>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <AFrame 1>
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT or None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 607>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the current print context for the connection.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 950>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 2>
+ <String `PrintDestroyContext'>
+ <Marker
+ <MType 2>
+ <MText `PrintDestroyContext:request'>
+ <MCurrPage `3'>
+ <Unique 949>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 951>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 956>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 47>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1483>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request unsets and destroys a print context. If a print context is destroyed before print operations associ'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ated with it have been completed, the print server cancels all those operations as if a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `CancelJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request had '>
+ >
+ <ParaLine
+ <String `been issued.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1146>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 24>
+ <String `PrintGetPrinterList'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetPrinterList:request'>
+ <MCurrPage `3'>
+ <Unique 1145>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1148>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-name: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 992>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `locale'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1944>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1151>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `printers'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: LISTofPRINTER'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5065>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfSpBefore 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1153>
+ <PgfTag `Protocol-item-indent'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfSpBefore 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `PRINTER:'>
+ <Char Tab>
+ <String `name: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5066>
+ <PgfTag `Protocol-item-indent-2'>
+ <Pgf
+ <PgfFIndent 1.5">
+ <PgfLIndent 1.5">
+ > # end of Pgf
+ <ParaLine
+ <String `description: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3860>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <AFrame 55>
+ >
+ > # end of Para
+ <Para
+ <Unique 1162>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request retrieves a list of all printers supported on a print server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1163>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 122>
+ <String `If '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is an empty string, then a list of all printers is returned. Otherwise '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `the print record that '>
+ >
+ <ParaLine
+ <String `matches the printer-name specified is returned. If no records match printer-name, then an empty list is '>
+ >
+ <ParaLine
+ <String `returned. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1164>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `COMPOUND_TEXT'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` string. The '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `description'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` fields returned are '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `COMPOUND_TEXT'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is provided in a code-set that the print server cannot convert, then it '>
+ >
+ <ParaLine
+ <String `may not be possible to locate the requested printer. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1165>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The locale argument is used as a \xd2 hint\xd3 to locate a localized description for each printer in the list. If the '>
+ >
+ <ParaLine
+ <String `print server cannot interpret the hint, then it describes the printers in the server\xd5 s current locale.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1490>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 8>
+ <String `PrintGetScreenOfContext'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetScreenOfContext:request'>
+ <MCurrPage `4'>
+ <Unique 442>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1948>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 653>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `root'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 664>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 31>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1496>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the root window associated with the current print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2062>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Each printer supported by a print server is associated with exactly one of the screens returned in the connec'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion setup reply. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 429>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 10>
+ <String `PrintStartJob'>
+ <Marker
+ <MType 2>
+ <MText `PrintStartJob:request'>
+ <MCurrPage `4'>
+ <Unique 444>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1520>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `output-mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `{'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool, XPGetData'>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1523>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 33>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence, Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1524>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request signals the beginning of a new print job. It results in the generation of an '>
+ <Font
+ <FTag `Message'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event, '>
+ >
+ <ParaLine
+ <String `with the detail field set to '>
+ <Font
+ <FTag `Message'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 722>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If output-mode is set to '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the document data is typically sent to a spooler. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1026>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If output-mode is set to '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the document data is made available to '>
+ <Font
+ <FTag `Message'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `and the resulting job is not spooled. In this case, the print server suspends processing further requests on this '>
+ >
+ <ParaLine
+ <String `print context until some other client sends '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocumentData. '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Subsequent operations that use the '>
+ >
+ <ParaLine
+ <String `print context may be suspended at any time pending the processing of '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` replies to '>
+ >
+ <ParaLine
+ <String `read any buffered output.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1048>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Any changes to the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` pool must be made before '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob. '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Further modifications can only be '>
+ >
+ <ParaLine
+ <String `made to the attribute pool after a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request is executed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 662>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 11>
+ <String `PrintEndJob'>
+ <Marker
+ <MType 2>
+ <MText `PrintEndJob:request'>
+ <MCurrPage `4'>
+ <Unique 445>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1533>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1536>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <TextRectID 123>
+ <AFrame 34>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1537>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request causes the print job associated with the current print context to end. If '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `FALSE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, any '>
+ >
+ <ParaLine
+ <String `accumulated print data that remains is either sent to the printer or made available to '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocument'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1021>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The request generates an '>
+ <Font
+ <FTag `XPEvent'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event with its detail field set to '>
+ <Font
+ <FTag `XPEvent'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 415>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When cancel'>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the job currently being processed is canceled. The server may discard any pending '>
+ >
+ <ParaLine
+ <String `output or may produce partial output. If the job was started in '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` mode, then the entire data output '>
+ >
+ <ParaLine
+ <String `stream is implementation-defined.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1057>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called immediately after '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then a synthetic '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is generated by '>
+ >
+ <ParaLine
+ <String `print server before '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The pool of '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes that was frozen when the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStart'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Job'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request was executed is released when '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1116>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 16>
+ <String `PrintGetDocumentData'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetDocumentData:request'>
+ <MCurrPage `5'>
+ <Unique 1115>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1117>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1118>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `max-bytes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1119>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ <Font
+ <FTag `'>
+ <FSize 9.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String `+'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1120>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `status-code: {'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetDocFinished, XPGetDocSecondConsumer, XPGetDocError'>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1121>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `finished-flag'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `CARD32'>
+ <Font
+ <FTag `WritersNote'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1122>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `LISTofBYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1127>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 37>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, XPBadSequence, Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1129>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns data generated on a context by other clients. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1009>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should be sent only after a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request with save_data set to '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGet'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` has been executed. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1016>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` generates multiple replies. Each reply is no larger than the value specified in max-'>
+ >
+ <ParaLine
+ <String `bytes. The final reply is generated by '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and has finished-flag set to '>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1132>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the value for max-bytes is zero, a '>
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <String `Value'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is generated. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2087>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An '>
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is generated if '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is executed before '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or if '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is executed after '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` with save_data set to '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPSpool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1050>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 12>
+ <AFrame 14>
+ <String `PrintPutDocumentData'>
+ <Marker
+ <MType 2>
+ <MText `PrintPutDocumentData:request'>
+ <MCurrPage `5'>
+ <Unique 1049>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1051>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `drawable'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `DRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1052>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `LISTofBYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1053>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `doc-format, options'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1058>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 15>
+ <String `Errors: '>
+ <Char Tab>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, XPBadSequence, Match, Value, Drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1061>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 124>
+ <String `This request allows an application to send and incorporate data into the print output. It functions in two '>
+ >
+ <ParaLine
+ <String `modes, depending on whether the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` driver-mode is set to '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1062>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sends data to the print server and integrates data '>
+ >
+ <ParaLine
+ <String `into the output. The root of the drawable must be the root of the current print '>
+ >
+ <ParaLine
+ <String `context. The doc-format and options parameters describe the format of data, '>
+ >
+ <ParaLine
+ <String `which in turn guides the way the server interprets it. The '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-embedded-for'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `mats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute in the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrinterAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` pool defines valid values '>
+ >
+ <ParaLine
+ <String `for doc-format in this mode, else a '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `Match'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is issued. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1063>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintPutDocumentData'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` sends data directly to the print server output. The '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `print server'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` does not emit document or page control codes into the output, '>
+ >
+ <ParaLine
+ <String `and data is passed through unmodified. Drawable must be None, else a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `Drawable'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is issued. The '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-raw-formats-supported'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute in the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrinterAttr'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` pool defines valid values for doc-format in this mode, else a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `Match'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is issued.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3891>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If doc-format is not in '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-embedded-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-raw-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` a '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `Value'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is '>
+ >
+ <ParaLine
+ <String `issued. The options field is implementation-dependent and the permitted values may depend on the current '>
+ >
+ <ParaLine
+ <String `settings of other attributes and the value of doc-format. If an unknown options value is specified a '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `Value'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `error is issued, else if options is not valid in the current state a '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `Match'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is issued.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3899>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 48>
+ <String `PrintStartDoc'>
+ <Marker
+ <MType 2>
+ <MText `PrintStartDoc:request'>
+ <MCurrPage `6'>
+ <Unique 3898>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1561>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `driver-mode'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: {'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal, XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1562>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 35>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `Value, XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1563>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request indicates the beginning of an individual document within a print job. The server performs the '>
+ >
+ <ParaLine
+ <String `actions necessary to define a new document, and generates an '>
+ <Font
+ <FTag `XPEvent'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event with its detail field set to '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPEvent'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartDocNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 762>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The value of driver-mode'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `can be:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 756>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Print server generates document data. Depending on the DDX driver, it can '>
+ >
+ <ParaLine
+ <String `incorporate data from '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` into the document. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1048>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `The client provides all data for the document using '>
+ <Font
+ <FTag `Message'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintPutDocument'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Data'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `. The print server does not generate any data of its own into the docu'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ment.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1049>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is sent immediately after '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then a synthetic '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` with driver-'>
+ >
+ <ParaLine
+ <String `mode '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be generated internally by print server before '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1050>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Any changes to the '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute pool must be made before '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartDoc '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is executed. Further '>
+ >
+ <ParaLine
+ <String `modifications can only be made to the attribute pool after a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request is executed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 765>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 13>
+ <String `PrintEndDoc'>
+ <Marker
+ <MType 2>
+ <MText `PrintEndDoc:request'>
+ <MCurrPage `6'>
+ <Unique 447>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1572>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <TextRectID 125>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1575>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 36>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1576>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request signals the end of a print document. The resulting document data is assembled and combined '>
+ >
+ <ParaLine
+ <String `with data that was sent by '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 402>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When cancel is '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the document currently being processed is canceled. The server may discard any '>
+ >
+ <ParaLine
+ <String `pending output or may produce partial output. If the job was started with '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` mode, then the entire '>
+ >
+ <ParaLine
+ <String `data output stream is implementation-defined for this document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1080>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDocAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` pool that was frozen when the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request was executed is released when '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `Print'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `EndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 471>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 17>
+ <String `PrintStartPage'>
+ <Marker
+ <MType 2>
+ <MText `PrintStartPage:request'>
+ <MCurrPage `7'>
+ <Unique 450>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 501>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 513>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 38>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence, Window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 550>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request indicates the beginning of a single print page within a document. W'>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `indow'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is the drawable that '>
+ >
+ <ParaLine
+ <String `represents the page. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 551>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` causes '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to be mapped. Within a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `/'>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sequence, any '>
+ >
+ <ParaLine
+ <String `attempts to resize, move, or unmap '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be ignored. To resize or move inferiors of '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the stan'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `dard semantics used for '>
+ <Font
+ <FTag `XPEvent'>
+ <FLocked No>
+ > # end of Font
+ <String `ConfigureWindow'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` apply, except that the contents of the configured window may be '>
+ >
+ <ParaLine
+ <String `lost. If the contents of a window are lost, an '>
+ <Font
+ <FTag `XPEvent'>
+ <FLocked No>
+ > # end of Font
+ <String `Expose'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event is generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 547>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A '>
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <String `Window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is issued if '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is not a descendent of the root window of the current print context. '>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String `An '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSequence'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` error is issued if '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called in an '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `Function'>
+ <FLocked No>
+ > # end of Font
+ <String ` document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5186>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Any changes to the '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPageAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute pool must be made before '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is executed. Further '>
+ >
+ <ParaLine
+ <String `modifications can only be made to the attribute pool after a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request is executed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 475>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 18>
+ <String `PrintEndPage'>
+ <Marker
+ <MType 2>
+ <MText `PrintEndPage:request'>
+ <MCurrPage `7'>
+ <Unique 451>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 372>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 373>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 39>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, XPBadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 374>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request indicates the end of a print page, and causes '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to be unmapped. If '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the '>
+ >
+ <ParaLine
+ <String `current print page is canceled. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1076>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When cancel'>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `is '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the job currently being processed is canceled. The server may discard any pending '>
+ >
+ <ParaLine
+ <String `output or may produce partial output. If the job was started with '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` mode, then the entire data out'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `put stream is implementation-defined for this page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1071>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The pool of job attributes that was frozen when the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request was executed is freed when '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5264>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 126>
+ >
+ > # end of Para
+ <Para
+ <Unique 5265>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 5266>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 5267>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1028>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 9>
+ <String `PrintGetPageDimensions'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetPageDimensions:request'>
+ <MCurrPage `8'>
+ <Unique 1027>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1029>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1952>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1031>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `width: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1032>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `height: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1033>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `offset-x: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1034>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `offset-y: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1035>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `reproducible-width: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1036>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `ArgInList'>
+ <FLocked No>
+ > # end of Font
+ <String `reproducible-height'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1041>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 32>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1042>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the total width and height of a page in pixels, together with the net reproducible area '>
+ >
+ <ParaLine
+ <String `within the page. The net reproducible area is the portion of the page on which the printer is physically capa'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ble of placing ink.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 483>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 19>
+ <String `PrintSelectInput'>
+ <Marker
+ <MType 2>
+ <MText `PrintSelectInput:request'>
+ <MCurrPage `8'>
+ <Unique 452>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 412>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 424>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `event-mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `BITMASK'>
+ >
+ > # end of Para
+ <Para
+ <Unique 395>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 40>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 396>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpAfter 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `This request specifies the print events, from those in the specified print context, the client is interested in. '>
+ >
+ <ParaLine
+ <String `Possible values for the event-mask BITMASK are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 4637>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XPNoEventMask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 4641>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XPPrintMask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 4645>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `XPAttributeMask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 625>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 20>
+ <String `PrintInputSelected'>
+ <Marker
+ <MType 2>
+ <MText `PrintInputSelected:request'>
+ <MCurrPage `8'>
+ <Unique 453>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 448>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1956>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 461>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `event-mask, all-events-mask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `BITMASK'>
+ >
+ > # end of Para
+ <Para
+ <Unique 450>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 41>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 446>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 127>
+ <String `This request queries which X Print Server events the client has selected to receive from the specified print '>
+ >
+ <ParaLine
+ <String `context. all-events-mask returns the set of all events selected by all clients.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5268>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 5269>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 904>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 21>
+ <String `PrintGetAttributes'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetAttributes:request'>
+ <MCurrPage `9'>
+ <Unique 454>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 466>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 476>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: {'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr, XPDocAttr, XPPageAttr, XPPrinterAttr, XPServerAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1960>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 486>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 471>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 42>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 472>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns an attribute'>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String ` pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` from the specified print context. attributes is the attribute pool specified '>
+ >
+ <ParaLine
+ <String `by pool, and is encoded in '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `COMPOUND_TEXT'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1079>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The format used for attributes is the same as the format used for an X resource file. For a description see '>
+ >
+ <ParaLine
+ <String `Section 15.1, \xd2 Resource File Syntax\xd3 , in the Xlib specification.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 816>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `See '>
+ <XRef
+ <XRefName `Section'>
+ <XRefSrcText `15258: 1Heading: 3 X Print Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830728 493774>
+ <Unique 928>
+ > # end of XRef
+ <String `section'>
+ <Char HardSpace>
+ <String `3'>
+ <XRefEnd >
+ <String ` for a detailed description of attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 499>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 22>
+ <String `PrintGetOneAttribute'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetOneAttribute:request'>
+ <MCurrPage `9'>
+ <Unique 455>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 493>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 494>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: {'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr, XPDocAttr, XPPageAttr, XPPrinterAttr, XPServerAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1095>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1964>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 500>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `value'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 501>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 43>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 502>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request retrieves a single attribute from the specified print context. It is similar to '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintGetAttributes, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Tree Cap'>
+ <FLocked No>
+ > # end of Font
+ <String `but returns only one '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `attribute value'>
+ <Font
+ <FTag `Tree Cap'>
+ <FLocked No>
+ > # end of Font
+ <String ` instead of an entire pool of attributes. The specific attribute is specified '>
+ >
+ <ParaLine
+ <String `by name. value is encoded in COMPOUND_TEXT.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 655>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 23>
+ <String `PrintSetAttributes'>
+ <Marker
+ <MType 2>
+ <MText `PrintSetAttributes:request'>
+ <MCurrPage `9'>
+ <Unique 456>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 497>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 515>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `pool: {'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr, XPDocAttr, XPPageAttr, XPPrinterAttr, XPServerAttr'>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 446>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `rule'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `{'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttrMerge, XPAttrReplace'>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 525>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 546>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 44>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext, XPBadSequence, Value, Match'>
+ >
+ > # end of Para
+ <Para
+ <Unique 547>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 128>
+ <String `This request sets the names and values for one or more attributes within the specified attribute pool. '>
+ >
+ <ParaLine
+ <String `attributes is encoded in '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `COMPOUND_TEXT'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` that represents new name/value pairs according to the value '>
+ >
+ <ParaLine
+ <String `specified in '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `rule'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. For '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttrReplace'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the existing attribute pool is discarded and replaced with '>
+ <Font
+ <FTag `XPFunction'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ <ParaLine
+ <String `For '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttrMerge'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, attributes is merged into the existing attribute pool; existing name/value pairs are '>
+ >
+ <ParaLine
+ <String `replaced and new ones are added.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1997>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The format used for attributes is the same as the format used for an X resource file. For a description see '>
+ >
+ <ParaLine
+ <String `Section 15.1, \xd2 Resource File Syntax\xd3 , in the Xlib specification.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2001>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `See '>
+ <XRef
+ <XRefName `Section'>
+ <XRefSrcText `15258: 1Heading: 3 X Print Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830728 494306>
+ <Unique 1999>
+ > # end of XRef
+ <String `section'>
+ <Char HardSpace>
+ <String `3'>
+ <XRefEnd >
+ <String ` for a detailed description of attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 573>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A '>
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <String `Match'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` message is returned if read-only attribute pools attempt to use '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. An '>
+ <Font
+ <FTag `XPMessage'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadSe'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `quence'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` message is issued when a request is sent to an attribute pool at a time when the attribute pool cannot '>
+ >
+ <ParaLine
+ <String `be modified. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 731>
+ <PgfTag `Protocol'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <AFrame 49>
+ <String `PrintRehashPrinterList'>
+ <Marker
+ <MType 2>
+ <MText `PrintRehashPrinterList:request'>
+ <MCurrPage `10'>
+ <Unique 459>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 442>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <AFrame 50>
+ >
+ > # end of Para
+ <Para
+ <Unique 5251>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request causes the print server to update its list of available printers together with their attributes. The '>
+ >
+ <ParaLine
+ <String `print facilities underlying X Server may provide it with the ability to detect changes in printer topology and '>
+ >
+ <ParaLine
+ <String `dynamically update the list to reflect the changes. If X Server does not have this capability, the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintRe'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `hashPrinterList'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` must be used to notify it of changes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 670>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 27>
+ <String `PrintQueryVersion'>
+ <Marker
+ <MType 2>
+ <MText `PrintQueryVersion:request'>
+ <MCurrPage `10'>
+ <Unique 460>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1968>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 737>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <AFrame 46>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `major-version, minor-version'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 541>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the major and minor version numbers of the X Print Service.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 776>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 28>
+ <String `PrintQueryScreens'>
+ <Marker
+ <MType 2>
+ <MText `PrintQueryScreens:request'>
+ <MCurrPage `10'>
+ <Unique 462>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1972>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 766>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <AFrame 25>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `roots'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: LISTofWINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 783>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns a list of the X Server screens that support the X Print Service Extension.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3512>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintSetImageResolution:request'>
+ <MCurrPage `10'>
+ <Unique 3922>
+ > # end of Marker
+ <AFrame 51>
+ <String `PrintSetImageResolution'>
+ <Marker
+ <MType 2>
+ <MText `PrintSetAttributes:request'>
+ <MCurrPage `10'>
+ <Unique 3511>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 3513>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3549>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `image-resolution'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3560>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3558>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <TextRectID 129>
+ <String `status: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3563>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `previous-resolution: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3554>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 52>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3555>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request sets the resolution for subsequent '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` requests on the screen of context, in pixels per '>
+ >
+ <ParaLine
+ <String `inch.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3543>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When status is '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the contents of any subsequent '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request to a Pixmap or to a Window '>
+ >
+ <ParaLine
+ <String `on the screen of the specified print context will automatically be scaled as part of the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request. The '>
+ >
+ <ParaLine
+ <String `scale factor is:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3544>
+ <PgfTag `ProgramExample'>
+ <ParaLine
+ <String `default-printer-resolution / image-resolution'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3527>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `where default-printer-resolution is the current value of that page attribute. Only the image itself is scaled '>
+ >
+ <ParaLine
+ <String `(meaning the effective width and height of the image change), the dst-x and dst-y parameters to '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `are not altered. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3569>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `As a special case, a value of zero for image_res resets the resolution to automatically track the printer reso'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `lution. In this case (which is also the default setting for a newly created print context), subsequent images '>
+ >
+ <ParaLine
+ <String `will not be scaled.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3570>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `previous-resolution is the previous image resolution that was set for context in pixels per inch. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3571>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If status is '>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `FALSE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the print server does not support image scaling foor the particular resolution given '>
+ >
+ <ParaLine
+ <String `the current configuration of the printer, and the application is responsible for any desired scaling.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3580>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 54>
+ <String `PrintGetImageResolution'>
+ <Marker
+ <MType 2>
+ <MText `PrintGetImageResolution:request'>
+ <MCurrPage `11'>
+ <Unique 3579>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 3581>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: '>
+ <Font
+ <FTag `XPValue'>
+ <FLocked No>
+ > # end of Font
+ <String `PCONTEXT '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3583>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3585>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `image-resolution: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3590>
+ <PgfTag `Protocol-errors'>
+ <ParaLine
+ <AFrame 53>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ <FLocked No>
+ > # end of Font
+ <String `XPBadContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3592>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the current image-resolution for context in pixels per inch. A value of zero means the '>
+ >
+ <ParaLine
+ <String `resolution automatically tracks the printer resolution. If the request fails in some way, a negative value is '>
+ >
+ <ParaLine
+ <String `returned.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1171>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.4\t'>
+ <ParaLine
+ <String `Events'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1179>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 26>
+ <String `XPPrintNotify'>
+ <Marker
+ <MType 2>
+ <MText `XPPrintNotify:event'>
+ <MCurrPage `11'>
+ <Unique 1178>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1181>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `detail'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: {'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPStartJobNotify, XPEndJobNotify, XPStartDocNotify, XPEndDocNotify, '>
+ >
+ <ParaLine
+ <String `XPStartPageNotify, XPEndPageNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1182>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: PCONTEXT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1187>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <AFrame 29>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1188>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 130>
+ <String `This event is generated when requests to '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintStartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintEndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` have been processed and completed. It is reported to clients selecting '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPPrintMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1196>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <AFrame 30>
+ <String `XPAttributeNotify'>
+ <Marker
+ <MType 2>
+ <MText `XPAttributeNotify:event'>
+ <MCurrPage `12'>
+ <Unique 1195>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1198>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `detail'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: {'>
+ <Font
+ <FTag `XPValueInText'>
+ <FLocked No>
+ > # end of Font
+ <String `XPJobAttr, XPDocAttr, XPPageAttr, XPPrinterAttr, XPServerAttr, XPMe'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `diumAttr, XPSpoolerAttr'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1203>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <AFrame 45>
+ <Font
+ <FTag `XPArgument'>
+ <FLocked No>
+ > # end of Font
+ <String `context'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `: PCONTEXT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1204>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This event is generated when any of the print attribute pools maintained by the print server have been modi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `fied. The modifications may have been initiated by the print server itself or by a '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request. '>
+ >
+ <ParaLine
+ <String `It is reported to clients selecting '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `XPAttributeMask'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 464>
+ <PgfTag `1Heading'>
+ <PgfNumString `3\t'>
+ <ParaLine
+ <TextRectID 131>
+ <Marker
+ <MType 9>
+ <MText `15258: 1Heading: 3 X Print Attributes'>
+ <MCurrPage `13'>
+ <Unique 5228>
+ > # end of Marker
+ <String `X Print Attributes'>
+ <Marker
+ <MType 2>
+ <MText `<$startrange\>attributes'>
+ <MCurrPage `13'>
+ <Unique 3798>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 936>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Printing-specific attributes play a key role in the X Print Service. They provide a general-purpose mecha'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `nism for storing information associated with printing. This information includes user print setup options, '>
+ >
+ <ParaLine
+ <String `printer capabilities, and spooler subsystem options.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 940>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Service selects attributes in a way that is consistent with the X Windows System, ISO/IEC '>
+ >
+ <ParaLine
+ <String `10175 (ISO DPA), and POSIX 1387.4 print standards. The ISO DPA defines a number of abstract objects '>
+ >
+ <ParaLine
+ <String `that are managed and manipulated during the printing process. These are known as DPA-Objects. Each '>
+ >
+ <ParaLine
+ <String `DPA-Object is represented by a set of attributes which characterize that object. Each attribute in turn is com'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `posed of an attribute-type (attribute name) and zero or more attribute-values.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 950>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <String `The X Print Service utilizes selected DPA-Objects, and for each of these, a subset of the associated '>
+ >
+ <ParaLine
+ <String `attributes. The DPA-Objects used are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1857>
+ <PgfTag `Term'>
+ <ParaLine
+ <String `Server Object'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1858>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies attributes defined for the X print server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1859>
+ <PgfTag `Term'>
+ <ParaLine
+ <String `Job Object'>
+ >
+ > # end of Para
+ <Para
+ <Unique 954>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies attributes for a single print request as sent to the spooler.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 955>
+ <PgfTag `Term'>
+ <ParaLine
+ <String `Document Object'>
+ >
+ > # end of Para
+ <Para
+ <Unique 956>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies attributes used to define a single document within a job. If supported by '>
+ >
+ <ParaLine
+ <String `the implementation, multiple documents may be submitted within a given job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 957>
+ <PgfTag `Term'>
+ <ParaLine
+ <String `Printer Object'>
+ >
+ > # end of Para
+ <Para
+ <Unique 958>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies attributes that identify printer capabilities.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 959>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfSpBefore 0.0 pt>
+ <PgfNumTabs 0>
+ > # end of Pgf
+ <ParaLine
+ <String `The X Print Service also provides for changing certain attributes on a page-by-page basis. This is a '>
+ >
+ <ParaLine
+ <String `capability for which the ISO DPA does not define a separate DPA-Object. This set of attributes is known '>
+ >
+ <ParaLine
+ <String `within the X Print Service as Page Attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 960>
+ <ParaLine
+ <String `The X Print Service requires some additional attributes that are not defined by the ISO DPA. The attribute '>
+ >
+ <ParaLine
+ <String `names for these attributes are prefixed with \xd2 '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd3 .'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2000>
+ <ParaLine
+ <String `A server implementation can define additional attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 961>
+ <ParaLine
+ <String `This section defines the following sets of attributes for the X Print Service:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 962>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Server Attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 963>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Printer Attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 964>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Job Attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 965>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Document Attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 966>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Page Attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 967>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.1\t'>
+ <ParaLine
+ <String `Attribute Value Defaults And Validation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 968>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This section provides an overview of the handling of default attribute values and the procedure for the vali'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `dation of attribute values within the X Print Service. Details for individual attributes can be found in the rest '>
+ >
+ <ParaLine
+ <String `of this chapter.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 969>
+ <PgfTag `3Heading'>
+ <PgfNumString `3.1.1 \t'>
+ <ParaLine
+ <String `Assigning Attribute Value Defaults'>
+ <Marker
+ <MType 2>
+ <MText `attributes:defaults;defaults, attributes'>
+ <MCurrPage `13'>
+ <Unique 3799>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 970>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An attribute specification with an empty value indicates that the attribute has no value. Within X Print Ser'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `vice configuration files and attribute pools, an attribute specification that omits the value is effectively '>
+ >
+ <ParaLine
+ <String `treated as if there were no attribute specification. An empty valued attribute specification that has precedence '>
+ >
+ <ParaLine
+ <String `over a non-empty attribute specification (for instance, an empty printer qualified attribute over a non-empty '>
+ >
+ <ParaLine
+ <TextRectID 132>
+ <String `model qualified attribute) will effectively \xd2 unset\xd3 the lower precedence attribute specification. When a print '>
+ >
+ <ParaLine
+ <String `job commences, the X Print Service may infer a default value for an attribute that has no value. In some '>
+ >
+ <ParaLine
+ <String `cases the X Print Service may explicitly assign a default value to an attribute before presenting it in an '>
+ >
+ <ParaLine
+ <String `attribute pool.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 973>
+ <PgfTag `3Heading'>
+ <PgfNumString `3.1.2 \t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `25826: 2Sect: 7.2.2 Validation of Attribute Values'>
+ <MCurrPage `14'>
+ <Unique 972>
+ > # end of Marker
+ <String `Validating Attribute Values'>
+ <Marker
+ <MType 2>
+ <MText `attributes:validating;validating attributes'>
+ <MCurrPage `14'>
+ <Unique 3800>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 974>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Server ensures that attribute pools presented to the client are always comprised of valid attribute '>
+ >
+ <ParaLine
+ <String `specifications for attributes defined by the X Print Service. Validation is first performed when a print context '>
+ >
+ <ParaLine
+ <String `is created. Validation is also performed whenever a client requests an update to an attribute pool.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 975>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Validation involves checking the attribute value against its set of valid values. The process may also take into '>
+ >
+ <ParaLine
+ <String `account the current values of other attributes and the capabilities of the DDX driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 976>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Attributes may be single-valued or multi-valued. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 5013>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When a print context is created, if the server determines that an attribute value is invalid, the server will '>
+ >
+ <ParaLine
+ <String `ignore the invalid attribute specification and may set an explicit default for the attribute in the pool. For '>
+ >
+ <ParaLine
+ <String `multi-valued attributes, the server will ignore each value component that is invalid. If all of the specified '>
+ >
+ <ParaLine
+ <String `components are invalid the server will reject the attribute specification, and for certain attributes will set an '>
+ >
+ <ParaLine
+ <String `explicit default for the attribute in the pool.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 977>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the client requests an update to an attribute pool (e.g. when issuing '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), if the server '>
+ >
+ <ParaLine
+ <String `determines that a single-valued attribute is invalid, that attribute will not be updated. If all components of a '>
+ >
+ <ParaLine
+ <String `multi-valued attribute are invalid the attribute will not be updated, otherwise any invalid components are '>
+ >
+ <ParaLine
+ <String `ignored. Unrecognized attributes will be stored in the corresponding attribute pool and returned in '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `Print'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `GetAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, but are otherwise ignored.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 979>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `As part of the validation for a given attribute, the print server may alter other attributes in response to the '>
+ >
+ <ParaLine
+ <String `change. For example, changing the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-format'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute might cause the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-'>
+ >
+ <ParaLine
+ <String `embedded-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute to change as. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 5011>
+ <PgfTag `3Heading'>
+ <PgfNumString `3.1.3 \t'>
+ <ParaLine
+ <String `Structured Values'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5012>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 980>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.2\t'>
+ <ParaLine
+ <String `Server Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:server;server attributes'>
+ <MCurrPage `14'>
+ <Unique 3801>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 982>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server attribute pool is identified by XPServerAttr and describes the capabilities of the X Print Server. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1033>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `locale'>
+ <Marker
+ <MType 2>
+ <MText `locale, attribute'>
+ <MCurrPage `14'>
+ <Unique 3803>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1034>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value of this attribute is the locale in which the X Print Server is running.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1035>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `multiple-documents-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1036>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `multiple-documents-supported'>
+ <MCurrPage `14'>
+ <Unique 3802>
+ > # end of Marker
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `This attribute indicates whether the server supports jobs containing multiple '>
+ >
+ <ParaLine
+ <String `documents. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1038>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.3\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `23135: 1Sect: 9.3 Printer Attribute Definitions'>
+ <MCurrPage `14'>
+ <Unique 1037>
+ > # end of Marker
+ <String `Printer Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:printer;printer attributes'>
+ <MCurrPage `14'>
+ <Unique 3804>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1040>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The printer attribute pool is identified by XPPrinterAttr and describes printer capabilities. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1237>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 133>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientations-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1238>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `content-orientations-supported'>
+ <MCurrPage `15'>
+ <Unique 3805>
+ > # end of Marker
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of orientations supported in the print context. The list is a group of strings '>
+ >
+ <ParaLine
+ <String `separated by white space. Valid values are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <String `and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1239>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `25826: 2Sect: 7.2.2 Validation of Attribute Values'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830728 495163>
+ <Unique 1241>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Validating '>
+ >
+ <ParaLine
+ <String `Attribute Values'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1243>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientations-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by '>
+ >
+ <ParaLine
+ <String `the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1869>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `descriptor'>
+ <MCurrPage `15'>
+ <Unique 3806>
+ > # end of Marker
+ <String `descriptor'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1870>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `descriptor'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a human readable description of the printer encoded as '>
+ >
+ <ParaLine
+ <String `COMPOUND_TEXT. This description may contain more than one line. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1248>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `document-attributes-supported'>
+ <MCurrPage `15'>
+ <Unique 3807>
+ > # end of Marker
+ <String `document-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1249>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of document attributes supported in the print context. This list is returned as a '>
+ >
+ <ParaLine
+ <String `set of whitespace-delimited attribute names.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1251>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `document-formats-supported'>
+ <MCurrPage `15'>
+ <Unique 3808>
+ > # end of Marker
+ <String `document-formats-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1252>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of document formats, including format variants and format versions that are '>
+ >
+ <ParaLine
+ <String `supported in the print context. Each entry in the list is a structure comprised of the '>
+ >
+ <ParaLine
+ <String `document-format, document-format-variant, and a document-format-version. '>
+ >
+ <ParaLine
+ <String `Variant and version may be omitted in some cases. The triple value is enclosed by '>
+ >
+ <ParaLine
+ <String `curly braces \xd2 {}\xd3 and delimited by whitespace. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1266>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `input-trays-medium'>
+ <MCurrPage `15'>
+ <Unique 2017>
+ > # end of Marker
+ <String `i'>
+ <Marker
+ <MType 2>
+ <MText `input-trays-medium'>
+ <MCurrPage `15'>
+ <Unique 3809>
+ > # end of Marker
+ <String `nput-trays-medium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1267>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute identifies what medium is loaded in each printer tray. The value is '>
+ >
+ <ParaLine
+ <String `specified as a list of structures, each of which contains a tray identifier and a '>
+ >
+ <ParaLine
+ <String `medium identifier. Valid tray identifiers are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `top'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `middle'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `bottom'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `envelope'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `manual'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `large-capacity'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `main'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `side'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The X Print Service defines valid medium '>
+ >
+ <ParaLine
+ <String `identifiers to be the standard values of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-size'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute as specified in '>
+ >
+ <ParaLine
+ <String `ISO/IEC 10175-1.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1269>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `For each tray / medium (size) combination, the tray must be present in the value of '>
+ >
+ <ParaLine
+ <String `the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute, and the medium size must be listed '>
+ >
+ <ParaLine
+ <String `for that tray.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1274>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `job-attributes-supported'>
+ <MCurrPage `15'>
+ <Unique 3810>
+ > # end of Marker
+ <String `job-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1275>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of the job attributes supported for the printer. This list is returned as a set of '>
+ >
+ <ParaLine
+ <String `whitespace-delimited attribute names.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1277>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `medium-source-sizes-supported'>
+ <MCurrPage `15'>
+ <Unique 3811>
+ > # end of Marker
+ <String `medium-source-sizes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1278>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `This attribute identifies or specifies the sizes of media that are supported by the '>
+ >
+ <ParaLine
+ <String `printer. For each input tray a set of supported media sizes is indicated. For each '>
+ >
+ <ParaLine
+ <String `medium, the page size, an indicator as to the medium feed direction, and the assured '>
+ >
+ <ParaLine
+ <String `reproduction area the printer supports are specified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1279>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Valid input tray values are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `top'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `middle'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `bottom'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `envelope'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `manual'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `large-capacity'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `main'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `side'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the printer has only one input tray, specification '>
+ >
+ <ParaLine
+ <String `of this value is optional.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1280>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The page size is a descriptive-name indicating the size of the page. Examples are '>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `iso-a4'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `na-letter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `na-legal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The complete list of valid values is the set of '>
+ >
+ <ParaLine
+ <String `descriptive-names defined for the standard values of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-size'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute as '>
+ >
+ <ParaLine
+ <String `specified in ISO/IEC 10175-1.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1281>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <TextRectID 134>
+ <String `The medium feed direction is represented as a boolean value indicating whether the '>
+ >
+ <ParaLine
+ <String `long edge ('>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `TRUE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) or the short edge ('>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `FALSE'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) feeds into the printer so that '>
+ >
+ <ParaLine
+ <String `orientation is specified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1282>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The assured reproduction area is the area within the current medium tp which the '>
+ >
+ <ParaLine
+ <String `printer can render. This area is specified in millimeters according to the RCS '>
+ >
+ <ParaLine
+ <String `coordinate system defined by the ISO DPA. The area value is defined by a structure '>
+ >
+ <ParaLine
+ <String `containing the minimum-x, maximum-x, minimum-y, and maximum-y. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1283>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value for a medium size is specified in a structure comprised of the page size, '>
+ >
+ <ParaLine
+ <String `the feed direction indicator, and the assured reproduction area. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1284>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is a list of structures, '>
+ >
+ <ParaLine
+ <String `each comprised of the input tray value and a set of medium size values. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1290>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `plexes-supported'>
+ <MCurrPage `16'>
+ <Unique 3812>
+ > # end of Marker
+ <String `plexes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1291>
+ <PgfTag `Varlistentry'>
+ <PgfEndCond Yes>
+ <PgfCondFullPgf Yes>
+ <ParaLine
+ <String `A list of plex options that the printer supports. The list is a group of strings '>
+ >
+ <ParaLine
+ <String `separated by white space. Valid values are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `simplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `duplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `tumble'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1297>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer-model'>
+ <MCurrPage `16'>
+ <Unique 3813>
+ > # end of Marker
+ <String `printer-model'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1298>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Human-readable text that identifies the make and model of the printer. This value is '>
+ >
+ <ParaLine
+ <String `encoded as COMPOUND_TEXT.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1302>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer-name'>
+ <MCurrPage `16'>
+ <Unique 3814>
+ > # end of Marker
+ <String `printer-name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1303>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute uniquely identifies a printer on a given X Print Server. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1304>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer-resolutions-supported'>
+ <MCurrPage `16'>
+ <Unique 3815>
+ > # end of Marker
+ <String `printer-resolutions-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1305>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of the resolutions in dots per inch that the printer supports. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1326>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-embedded-formats-supported'>
+ <MCurrPage `16'>
+ <Unique 3816>
+ > # end of Marker
+ <String `xp-embedded-formats-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1327>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `This attribute identifies the set of data formats recognized as valid values for the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` parameter of '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, when this request is issued within a '>
+ >
+ <ParaLine
+ <String `print document of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1337>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value is a list of data formats. Each entry in the list is a structure comprised of '>
+ >
+ <ParaLine
+ <String `the data format, a format variant, and a format version. The variant and the version '>
+ >
+ <ParaLine
+ <String `may be omitted in some cases. Structure values are enclosed by curly braces \xd2 {}\xd3 '>
+ >
+ <ParaLine
+ <String `and delimited by whitespace. Valid values are defined by the printer DDX driver. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1343>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-listfonts-modes-supported'>
+ <MCurrPage `16'>
+ <Unique 3817>
+ > # end of Marker
+ <String `xp-listfonts-modes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1344>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Defines the set of values that may be used to comprise the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-'>
+ >
+ <ParaLine
+ <String `modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` document / page attribute. The value is a whitespace delimited list of '>
+ >
+ <ParaLine
+ <String `listfonts mode values, which are defined below.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1361>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-page-attributes-supported'>
+ <MCurrPage `16'>
+ <Unique 3818>
+ > # end of Marker
+ <String `xp-page-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1362>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of page attributes supported for the printer. This list is comprised of a set of '>
+ >
+ <ParaLine
+ <String `whitespace-delimited attribute names.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1364>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-raw-formats-supported'>
+ <MCurrPage `16'>
+ <Unique 3819>
+ > # end of Marker
+ <String `xp-raw-formats-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1365>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `This attribute identifies the set of data formats recognized as valid values for the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `doc_fmt'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` parameter of '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `PrintPutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, when this function is called within '>
+ >
+ <ParaLine
+ <String `a print document of '>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1375>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value is a list of data formats. Each entry in the list is a structure comprised of '>
+ >
+ <ParaLine
+ <String `the data format, an optional format variant, and an optional format version. Structure '>
+ >
+ <ParaLine
+ <String `values are enclosed by curly braces \xd2 {}\xd3 and delimited by whitespace. Valid values '>
+ >
+ <ParaLine
+ <String `are defined based on the physical printer\xd5 s capabilities.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1378>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 135>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-setup-proviso'>
+ <MCurrPage `17'>
+ <Unique 3820>
+ > # end of Marker
+ <String `xp-setup-proviso'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1379>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute indicates whether or not a required attribute or set of attributes must be '>
+ >
+ <ParaLine
+ <String `set prior to commencing the print job. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1380>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Valid values for this attribute are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-mandatory'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-optional'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If '>
+ >
+ <ParaLine
+ <String `this attribute is not specified, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-optional'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is assumed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1381>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-proviso'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the printer '>
+ >
+ <ParaLine
+ <String `vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1400>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.4\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `37951: 1Sect: 4.9 Job Object Attribute Definitions'>
+ <MCurrPage `17'>
+ <Unique 1399>
+ > # end of Marker
+ <String `Job Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:job;job attributes'>
+ <MCurrPage `17'>
+ <Unique 3821>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1402>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The job attribute pool is identified by XPJobAttr and provides information on how to process a print job. '>
+ >
+ <ParaLine
+ <String `Typically, job attributes are set by the Print Dialog Manager based on user input from the setup dialog.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1455>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `job-name'>
+ <MCurrPage `17'>
+ <Unique 3822>
+ > # end of Marker
+ <String `job-name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1456>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This is the name of the job to be used in subsequent processing and in printing '>
+ >
+ <ParaLine
+ <String `banner pages. The value is free form text.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1458>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `job-owner'>
+ <MCurrPage `17'>
+ <Unique 3823>
+ > # end of Marker
+ <String `job-owner'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1459>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute identifies the human owner of the print job. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1460>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `notification-profile'>
+ <MCurrPage `17'>
+ <Unique 3824>
+ > # end of Marker
+ <String `notification-profile'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1461>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute is a specification of events about which the user is to be notified. The '>
+ >
+ <ParaLine
+ <String `X Print service uses this attribute to determine whether or not to notify the user of '>
+ >
+ <ParaLine
+ <String `print job completion via electronic mail, or in ISO DPA parlance, the X Print '>
+ >
+ <ParaLine
+ <String `Service recognizes the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `event-report-job-completed'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event with a '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `delivery-method'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `electronic-mail'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1462>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The values may be '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{{event-report-job-completed} electronic-mail}'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to send an '>
+ >
+ <ParaLine
+ <String `email message, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{}'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no message is to be sent. Servers may implement additional '>
+ >
+ <ParaLine
+ <String `values.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1464>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-setup-state'>
+ <MCurrPage `17'>
+ <Unique 3825>
+ > # end of Marker
+ <String `xp-setup-state'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1465>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `If the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-proviso'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute is '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-mandatory'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-state'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is used to indicate the current setup state as determined byX Print '>
+ >
+ <ParaLine
+ <String `Server. If the value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-proviso'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-optional'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, the value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-'>
+ >
+ <ParaLine
+ <String `state'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is ignored.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1466>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Valid values for '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-state'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-ok'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-incomplete'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-'>
+ >
+ <ParaLine
+ <String `setup-ok'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` indicates that all attributes the print server requires the user to set are valid, '>
+ >
+ <ParaLine
+ <String `indicating a client may commence printing if desired. '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-incomplete'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `indicates that one or more attributes the driver requires are unspecified or invalid; '>
+ >
+ <ParaLine
+ <String `printing should not be attempted.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1468>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-spooler-command-options'>
+ <MCurrPage `17'>
+ <Unique 3826>
+ > # end of Marker
+ <String `xp-spooler-command-options'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1469>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A free form text string that will be included verbatim on the command line used to '>
+ >
+ <ParaLine
+ <String `invoke the spooler. Valid values are spooler-dependent.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1471>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-spooler-command-results'>
+ <MCurrPage `17'>
+ <Unique 3827>
+ > # end of Marker
+ <String `xp-spooler-command-results'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1472>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A free form text string that will contain the spooler command output that would '>
+ >
+ <ParaLine
+ <String `otherwise appear on a terminal (e.g. stderr and stdout). This text may be useful to '>
+ >
+ <ParaLine
+ <String `present to the user to allow tracking of the resulting spooler job. Applications should '>
+ >
+ <ParaLine
+ <String `retrieve this value following receipt of the '>
+ <Font
+ <FTag `Type'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1894>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.5\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `27436: 1Sect: 4.8 Document Object Attribute Definitions'>
+ <MCurrPage `17'>
+ <Unique 1476>
+ > # end of Marker
+ <String `Document Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:document;document attributes'>
+ <MCurrPage `17'>
+ <Unique 3828>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1479>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The document attribute pool is identified by XPDocAttr and indicates how to process the current document. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1894>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 136>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `content-orientation'>
+ <MCurrPage `18'>
+ <Unique 3829>
+ > # end of Marker
+ <String `content-orientation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1557>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the orientation to be used for this document. Valid values are:'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1562>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `copy-count'>
+ <MCurrPage `18'>
+ <Unique 3830>
+ > # end of Marker
+ <String `copy-count'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1563>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char Tab>
+ <String `Specifies the number of copies of this document to print.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1564>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly taken to be '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `1'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` by the X Print Server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1568>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-printer-resolution'>
+ <MCurrPage `18'>
+ <Unique 3831>
+ > # end of Marker
+ <String `default-printer-resolution'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1569>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `Specifies the resolution in dots per inch to be used for this document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1574>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-input-tray'>
+ <MCurrPage `18'>
+ <Unique 3832>
+ > # end of Marker
+ <String `default-input-tray'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1575>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The name of the input tray from which media will be drawn for printing the '>
+ >
+ <ParaLine
+ <String `document. Valid values are: '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `top'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `middle'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `bottom'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `envelope'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `manual'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `large-'>
+ >
+ <ParaLine
+ <String `capacity'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `main'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `side'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is specified, it will take '>
+ >
+ <ParaLine
+ <String `precedence over '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1580>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-medium'>
+ <MCurrPage `18'>
+ <Unique 3833>
+ > # end of Marker
+ <String `default-medium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1581>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the medium on which the document is to be printed. The X Print Service '>
+ >
+ <ParaLine
+ <String `defines valid '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` values to be the standard values of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-size'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `attribute as specified in ISO/IEC 10175-1.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1586>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `document-format'>
+ <MCurrPage `18'>
+ <Unique 3834>
+ > # end of Marker
+ <String `document-format'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1587>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the format of the document. The value is a structure comprised of the '>
+ >
+ <ParaLine
+ <String `document-format, an optional document-format-variant, and an optional document-'>
+ >
+ <ParaLine
+ <String `format-version. Specific printer DDX drivers may require specification of the '>
+ >
+ <ParaLine
+ <String `optional values. The structure values are enclosed by curly braces \xd2 {}\xd3 and '>
+ >
+ <ParaLine
+ <String `delimited by whitespace. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1592>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `plex'>
+ <MCurrPage `18'>
+ <Unique 3835>
+ > # end of Marker
+ <String `plex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1593>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to be used for this document. Valid values are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `simplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `duplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <String `and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `tumble'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1598>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-listfonts-modes'>
+ <MCurrPage `18'>
+ <Unique 3836>
+ > # end of Marker
+ <String `xp-listfonts-modes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1599>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value of this attribute controls the behavior of '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when a print context has been set. The value is a whitespace '>
+ >
+ <ParaLine
+ <String `delimited list of one or more listfonts mode values. Valid listfonts mode values '>
+ >
+ <ParaLine
+ <String `include '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-internal-printer-fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-glyph-fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1601>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `When a print context is set on a display connection, the default behavior of '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is to list all of the fonts normally associated with '>
+ >
+ <ParaLine
+ <String `the X print server (i.e. fonts containing glyphs) as well as any internal printer fonts '>
+ >
+ <ParaLine
+ <String `defined for the printer. The '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is provided so that '>
+ >
+ <ParaLine
+ <String `applications can control the behavior of '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `and is'>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `typically to show just internal printer fonts. Using only internal printer fonts is '>
+ >
+ <ParaLine
+ <String `useful for performance reasons; the glyphs associated with the font are contained '>
+ >
+ <ParaLine
+ <String `within the printer and do not have to be downloaded to it.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1605>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `If the value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` includes '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-glyph-fonts,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will include all of the fonts available to the server which have '>
+ >
+ <ParaLine
+ <String `glyphs associated with them. If the value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` includes '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-'>
+ >
+ <ParaLine
+ <String `internal-printer-fonts,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will include all of '>
+ >
+ <ParaLine
+ <String `the fonts defined as internal printer fonts.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1612>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.6\t'>
+ <ParaLine
+ <String `Page Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:page;page attributes'>
+ <MCurrPage `18'>
+ <Unique 3837>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1614>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The page attribute pool is identified by XPPageAttr. These are document attributes that can be overridden on '>
+ >
+ <ParaLine
+ <String `a page by page basis within the X Print Service.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1615>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The default for each page attribute is the current value of the corresponding document attribute. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1676>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 137>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `content-orientation'>
+ <MCurrPage `19'>
+ <Unique 3838>
+ > # end of Marker
+ <String `content-orientation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1677>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the orientation to be used for this page. Valid values are:'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1678>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-printer-resolution'>
+ <MCurrPage `19'>
+ <Unique 3839>
+ > # end of Marker
+ <String `default-printer-resolution'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1679>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Specifies the resolution in dots per inch to be used for this page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5217>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-input-tray'>
+ <MCurrPage `19'>
+ <Unique 3840>
+ > # end of Marker
+ <String `default-input-tray'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5218>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The name of the input tray from which media will be drawn for printing the '>
+ >
+ <ParaLine
+ <String `document. Valid values are: '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `top'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `middle'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `bottom'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `envelope'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `manual'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `large-'>
+ >
+ <ParaLine
+ <String `capacity'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `main'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `side'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is specified, it will take '>
+ >
+ <ParaLine
+ <String `precedence over '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5219>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-medium'>
+ <MCurrPage `19'>
+ <Unique 3841>
+ > # end of Marker
+ <String `default-medium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5220>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the medium on which the document is to be printed. The X Print Service '>
+ >
+ <ParaLine
+ <String `defines valid '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` values to be the standard values of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-size'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `attribute as specified in ISO/IEC 10175-1.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5223>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `plex'>
+ <MCurrPage `19'>
+ <Unique 3842>
+ > # end of Marker
+ <String `plex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5224>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to be used for this document. Valid values are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `simplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `duplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <String `and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `tumble'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5225>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-listfonts-modes'>
+ <MCurrPage `19'>
+ <Unique 3843>
+ > # end of Marker
+ <String `xp-listfonts-modes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5226>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value of this attribute controls the behavior of '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when a print context has been set. The value is a whitespace '>
+ >
+ <ParaLine
+ <String `delimited list of one or more listfonts mode values. Valid listfonts mode values '>
+ >
+ <ParaLine
+ <String `include '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-internal-printer-fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-glyph-fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5227>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `When a print context is set on a display connection, the default behavior of '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is to list all of the fonts normally associated with '>
+ >
+ <ParaLine
+ <String `the X print server (i.e. fonts containing glyphs) as well as any internal printer fonts '>
+ >
+ <ParaLine
+ <String `defined for the printer. The '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is provided so that '>
+ >
+ <ParaLine
+ <String `applications can control the behavior of '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `and is'>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `typically to show just internal printer fonts. Using only internal printer fonts is '>
+ >
+ <ParaLine
+ <String `useful for performance reasons; the glyphs associated with the font are contained '>
+ >
+ <ParaLine
+ <String `within the printer and do not have to be downloaded to it.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 5228>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `If the value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` includes '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-glyph-fonts,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will include all of the fonts available to the server which have '>
+ >
+ <ParaLine
+ <String `glyphs associated with them. If the value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` includes '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-'>
+ >
+ <ParaLine
+ <String `internal-printer-fonts,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` then '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ListFontsWithInfo'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will include all of '>
+ >
+ <ParaLine
+ <String `the fonts defined as internal printer fonts.'>
+ <Marker
+ <MType 2>
+ <MText `<$endrange\>attributes'>
+ <MCurrPage `19'>
+ <Unique 3875>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1899>
+ <PgfTag `1Heading'>
+ <PgfNumString `4\t'>
+ <ParaLine
+ <TextRectID 138>
+ <String `Communication with the Print Dialog Manager'>
+ <Marker
+ <MType 2>
+ <MText `Print Dialog Manager, communicating with'>
+ <MCurrPage `20'>
+ <Unique 3844>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1900>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Print Dialog Managers (PDMs) provide users with a graphical interface to specify printer-specific and '>
+ >
+ <ParaLine
+ <String `spooler-specific information. This section describes the interaction between X Print Service and PDMs.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1901>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For each server wanting to use print dialog services, a Print Dialog Manager acquires ownership of a selec'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion named PDM_MANAGER on the default root window (a different name can be used, as long as it is '>
+ >
+ <ParaLine
+ <String `known to both the client and the PDM). Print Dialog Managers should comply with the conventions for '>
+ >
+ <ParaLine
+ <String `\xd2 Manager Selections\xd3 described in section 2.8 of the'>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String ` Inter-Client Communication Conventions Manual'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `(ICCCM). A printing client establishes a print context, and then requests services of the Print Dialog Man'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ager by issuing conversion requests on this selection.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1902>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Print Dialog Managers should support conversion of the following targets on their manager selection:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1916>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 56>
+ >
+ > # end of Para
+ <Para
+ <Unique 1918>
+ <Pgf
+ <PgfTag `2HeadingApp'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 21.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithNext Yes>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat ` '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ > # end of Pgf
+ <PgfNumString ` '>
+ <ParaLine
+ <String `The PDM_START Selection Target'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1919>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The PDM_START target is parametized (ICCCM section 2.2), and the property named in the '>
+ <Font
+ <FTag `XPRequest'>
+ <FLocked No>
+ > # end of Font
+ <String `ConvertSelec'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request contains the following list of information:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1963>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 57>
+ >
+ > # end of Para
+ <Para
+ <Unique 1964>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The PDM_START target has a side effect (ICCCM, section 2.6.3). The PDM interprets the parameters listed '>
+ >
+ <ParaLine
+ <String `above and provides a user interface dialog on behalf of the client in which the user can modify attributes on '>
+ >
+ <ParaLine
+ <String `the print-context on the print-display provided.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1965>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The PDM will use the video-display, video-window, and locale parameters to configure and manage its user '>
+ >
+ <ParaLine
+ <String `interface.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1966>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The selection reply is placed in the property provided, where type is ATOM, format is 32, and the data con'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `sists of a single ATOM element:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1988>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 58>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 139>
+ <String `If the PDM starts successfully, once the user completes the PDM dialog, the PDM finishes communication '>
+ >
+ <ParaLine
+ <String `with the client by sending a ClientMessage to print-window on the print-display. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1990>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The type of this ClientMessage is \xd2 PDM_REPLY\xd3 , its format is 32, and the data consists of a single ATOM '>
+ >
+ <ParaLine
+ <String `element:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2016>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 59>
+ >
+ > # end of Para
+ <Para
+ <Unique 2018>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2019>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2001>
+ <PgfTag `1Heading'>
+ <PgfNumString `5\t'>
+ <ParaLine
+ <TextRectID 140>
+ <String `Protocol Encoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2007>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The following sections describe protocol encoding for X Print Extension Protocol requests, events, and '>
+ >
+ <ParaLine
+ <String `errors. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4445>
+ <PgfTag `2Heading'>
+ <PgfNumString `5.1\t'>
+ <ParaLine
+ <String `Request Protocol Encoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 4151>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintQueryVersion:encoding'>
+ <MCurrPage `22'>
+ <Unique 3845>
+ > # end of Marker
+ <String `PrintQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2047>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 60>
+ >
+ > # end of Para
+ <Para
+ <Unique 4236>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <ATbl 61>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4448>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintGetPrinterList:encoding'>
+ <MCurrPage `22'>
+ <Unique 3846>
+ > # end of Marker
+ <String `PrintGetPrinterList'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2177>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 62>
+ >
+ > # end of Para
+ <Para
+ <Unique 4240>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2282>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 63>
+ >
+ > # end of Para
+ <Para
+ <Unique 2284>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <TextRectID 141>
+ <Marker
+ <MType 2>
+ <MText `PrintRehashPrinterList:encoding'>
+ <MCurrPage `23'>
+ <Unique 3847>
+ > # end of Marker
+ <String `PrintRehashPrinterList'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2319>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 64>
+ >
+ > # end of Para
+ <Para
+ <Unique 2321>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintCreateContext:encoding'>
+ <MCurrPage `23'>
+ <Unique 3848>
+ > # end of Marker
+ <String `PrintCreateContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2398>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 65>
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2399>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2400>
+ <PgfTag `Protocol'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3559>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <TextRectID 142>
+ <Marker
+ <MType 2>
+ <MText `PrintSetContext:encoding'>
+ <MCurrPage `24'>
+ <Unique 3849>
+ > # end of Marker
+ <String `PrintSetContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2441>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 66>
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2443>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintGetContext:encoding'>
+ <MCurrPage `24'>
+ <Unique 3850>
+ > # end of Marker
+ <String `PrintGetContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2478>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 67>
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4256>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2528>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 68>
+ >
+ > # end of Para
+ <Para
+ <Unique 2530>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintDestroyContext:encoding'>
+ <MCurrPage `24'>
+ <Unique 3851>
+ > # end of Marker
+ <String `PrintDestroyContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2571>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 69>
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2573>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintGetScreenOfContext:encoding'>
+ <MCurrPage `24'>
+ <Unique 3852>
+ > # end of Marker
+ <String `PrintGetScreenofContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2608>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 70>
+ >
+ > # end of Para
+ <Para
+ <Unique 4260>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4227>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 143>
+ <ATbl 71>
+ >
+ > # end of Para
+ <Para
+ <Unique 4235>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintStartJob:encoding'>
+ <MCurrPage `25'>
+ <Unique 3853>
+ > # end of Marker
+ <String `PrintStartJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2708>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 72>
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2710>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintEndJob:encoding'>
+ <MCurrPage `25'>
+ <Unique 3854>
+ > # end of Marker
+ <String `PrintEndJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2757>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 73>
+ >
+ > # end of Para
+ <Para
+ <Unique 2759>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintStartDoc:encoding'>
+ <MCurrPage `25'>
+ <Unique 3855>
+ > # end of Marker
+ <String `PrintStartDoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2806>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 74>
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2808>
+ <PgfTag `Protocol'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3586>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <TextRectID 144>
+ <Marker
+ <MType 2>
+ <MText `PrintEndDoc:encoding'>
+ <MCurrPage `26'>
+ <Unique 3856>
+ > # end of Marker
+ <String `PrintEndDoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2855>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 75>
+ >
+ > # end of Para
+ <Para
+ <Unique 2857>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintPutDocumentData:encoding'>
+ <MCurrPage `26'>
+ <Unique 3857>
+ > # end of Marker
+ <String `PrintPutDocumentData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2952>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 76>
+ >
+ > # end of Para
+ <Para
+ <Unique 2954>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintGetDocumentData:encoding'>
+ <MCurrPage `26'>
+ <Unique 3858>
+ > # end of Marker
+ <String `PrintGetDocumentData'>
+ <Font
+ <FTag `Type'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4275>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 77>
+ >
+ > # end of Para
+ <Para
+ <Unique 4363>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae +'>
+ <ATbl 78>
+ >
+ > # end of Para
+ <Para
+ <Unique 4394>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 145>
+ >
+ > # end of Para
+ <Para
+ <Unique 3076>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintStartPage:encoding'>
+ <MCurrPage `27'>
+ <Unique 3859>
+ > # end of Marker
+ <String `PrintStartPage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3117>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 79>
+ >
+ > # end of Para
+ <Para
+ <Unique 3119>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintEndPage:encoding'>
+ <MCurrPage `27'>
+ <Unique 3860>
+ > # end of Marker
+ <String `PrintEndPage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3166>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 80>
+ >
+ > # end of Para
+ <Para
+ <Unique 3168>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintSelectInput:encoding'>
+ <MCurrPage `27'>
+ <Unique 3861>
+ > # end of Marker
+ <String `PrintSelectInput '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3215>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 81>
+ >
+ > # end of Para
+ <Para
+ <Unique 3217>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintInputSelected:encoding'>
+ <MCurrPage `27'>
+ <Unique 3862>
+ > # end of Marker
+ <String `PrintInputSelected'>
+ <Font
+ <FTag `Type'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3312>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 82>
+ >
+ > # end of Para
+ <Para
+ <Unique 4474>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <TextRectID 146>
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4471>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 83>
+ >
+ > # end of Para
+ <Para
+ <Unique 4466>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3314>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintGetAttributes:encoding'>
+ <MCurrPage `28'>
+ <Unique 3863>
+ > # end of Marker
+ <String `PrintGetAttributes'>
+ <Font
+ <FTag `Type'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3428>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 84>
+ >
+ > # end of Para
+ <Para
+ <Unique 4535>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3381>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <ATbl 85>
+ >
+ > # end of Para
+ <Para
+ <Unique 4532>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3430>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintGetOneAttribute:encoding'>
+ <MCurrPage `28'>
+ <Unique 3864>
+ > # end of Marker
+ <String `PrintGetOneAttribute'>
+ <Font
+ <FTag `Type'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4414>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 86>
+ >
+ > # end of Para
+ <Para
+ <Unique 4361>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 147>
+ >
+ > # end of Para
+ <Para
+ <Unique 4598>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4594>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 87>
+ >
+ > # end of Para
+ <Para
+ <Unique 4593>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 4415>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintSetAttributes:encoding'>
+ <MCurrPage `29'>
+ <Unique 3865>
+ > # end of Marker
+ <String `PrintSetAttributes'>
+ <Font
+ <FTag `Type'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3640>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 88>
+ >
+ > # end of Para
+ <Para
+ <Unique 3642>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `PrintGetPageDimensions:encoding'>
+ <MCurrPage `29'>
+ <Unique 3866>
+ > # end of Marker
+ <String `PrintGetPageDimensions'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 4696>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <ATbl 89>
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 4785>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4776>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <ATbl 90>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 4777>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <TextRectID 148>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `PrintQueryScreens:encoding'>
+ <MCurrPage `30'>
+ <Unique 3867>
+ > # end of Marker
+ <String `PrintQueryScreens'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3801>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <ATbl 91>
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 4789>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3875>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <ATbl 92>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 3619>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintSetImageResolution:encoding'>
+ <MCurrPage `30'>
+ <Unique 3868>
+ > # end of Marker
+ <String `PrintSetImageResolution'>
+ <Font
+ <FTag `Type'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3657>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 97>
+ >
+ > # end of Para
+ <Para
+ <Unique 3658>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3708>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <ATbl 98>
+ >
+ > # end of Para
+ <Para
+ <Unique 3709>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 149>
+ >
+ > # end of Para
+ <Para
+ <Unique 3945>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintGetImageResolution:encoding'>
+ <MCurrPage `31'>
+ <Unique 3869>
+ > # end of Marker
+ <String `PrintGetImageResolution'>
+ <Font
+ <FTag `Type'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3983>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 99>
+ >
+ > # end of Para
+ <Para
+ <Unique 3984>
+ <PgfTag `Protocol-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 4022>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <ATbl 100>
+ >
+ > # end of Para
+ <Para
+ <Unique 3879>
+ <PgfTag `2Heading'>
+ <PgfNumString `5.2\t'>
+ <ParaLine
+ <String `Event Protocol Encoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3880>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PrintNotify, encoding'>
+ <MCurrPage `31'>
+ <Unique 3870>
+ > # end of Marker
+ <String `PrintNotify'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3935>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 93>
+ >
+ > # end of Para
+ <Para
+ <Unique 3937>
+ <PgfTag `Protocol'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3766>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <TextRectID 150>
+ <Marker
+ <MType 2>
+ <MText `AttributeNotify, encoding'>
+ <MCurrPage `32'>
+ <Unique 3871>
+ > # end of Marker
+ <String `AttributeNotify'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3987>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 94>
+ >
+ > # end of Para
+ <Para
+ <Unique 3988>
+ <Pgf
+ <PgfTag `Para'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfLineSpacing Fixed>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3989>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3990>
+ <PgfTag `2Heading'>
+ <PgfNumString `5.3\t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `E'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `rror Protocol Encoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3991>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `BadContext, encoding'>
+ <MCurrPage `32'>
+ <Unique 3872>
+ > # end of Marker
+ <String `B'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `adContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 4024>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Type'>
+ <FLocked No>
+ > # end of Font
+ <ATbl 95>
+ >
+ > # end of Para
+ <Para
+ <Unique 4025>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `BadSequence, encoding'>
+ <MCurrPage `32'>
+ <Unique 3873>
+ > # end of Marker
+ <String `BadSequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 4058>
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Type'>
+ <FLocked No>
+ > # end of Font
+ <ATbl 96>
+ >
+ > # end of Para
+ <Para
+ <Unique 4092>
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/XPRINT/xp_protoIX.doc b/specs/XPRINT/xp_protoIX.doc
new file mode 100644
index 0000000..af3efa1
--- /dev/null
+++ b/specs/XPRINT/xp_protoIX.doc
Binary files differ
diff --git a/specs/XPRINT/xp_protoTOC.doc b/specs/XPRINT/xp_protoTOC.doc
new file mode 100644
index 0000000..7154da3
--- /dev/null
+++ b/specs/XPRINT/xp_protoTOC.doc
Binary files differ
diff --git a/specs/XPRINT/xp_proto_cov.mif b/specs/XPRINT/xp_proto_cov.mif
new file mode 100644
index 0000000..cdc1310
--- /dev/null
+++ b/specs/XPRINT/xp_proto_cov.mif
@@ -0,0 +1,3467 @@
+<MIFFile 5.00> # Generated by FrameMaker xm5.0P3f
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+#
+<Units Uin>
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `T:Table <n+\>: '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 112.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 6.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 16.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title3'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+> # end of PgfCatalog
+<FontCatalog
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FLocked No>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FAngle `Oblique'>
+ <FLocked No>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `Thin'>
+ <TblRRuling `'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement InHeader>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Left>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement InHeader>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[Title]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[Heading1]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table & Page'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 98 29 746 847 >
+ <DWindowRect 74 3 790 950 >
+ <DViewScale 140.0%>
+ <DNextUnique 713202>
+ <DPageSize 8.5" 11.0">
+ <DMenuBar `'>
+ <DVoMenuBar `'>
+ <DStartPage 1>
+ <DPageNumStyle LCRoman>
+ <DPagePointStyle Arabic>
+ <DTwoSides Yes>
+ <DParity FirstRight>
+ <DFrozenPages No>
+ <DPageRounding MakePageCountEven>
+ <DFNoteMaxH 2.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage>
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic>
+ <DFNoteAnchorPos FNSuperscript>
+ <DFNoteNumberPos FNBaseline>
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `.\\t'>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha>
+ <DTblFNoteAnchorPos FNSuperscript>
+ <DTblFNoteNumberPos FNBaseline>
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `.\\t'>
+ <DLinebreakChars `/ - \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.25">
+ <DChBarWidth 2.0 pt>
+ <DChBarPosition LeftOfCol>
+ <DChBarColor `Black'>
+ <DAutoChBars No>
+ <DShowAllConditions No>
+ <DDisplayOverrides Yes>
+ <DPageScrolling Variable>
+ <DViewOnly No>
+ <DViewOnlyXRef GotoBehavior>
+ <DViewOnlySelect Yes>
+ <DViewOnlyWinBorders Yes>
+ <DViewOnlyWinMenubar Yes>
+ <DViewOnlyWinPopup Yes>
+ <DViewOnlyWinPalette No>
+ <DGridOn No>
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.25>
+ <DRulersOn Yes>
+ <DFullRulers Yes>
+ <DGraphicsOff No>
+ <DCurrentView 1>
+ <DBordersOn Yes>
+ <DSymbolsOn Yes>
+ <DLinkBoundariesOn No>
+ <DSmartQuotesOn No>
+ <DSmartSpacesOn No>
+ <DUpdateTextInsetsOnOpen Yes>
+ <DUpdateXRefsOnOpen Yes>
+ <DLanguage USEnglish>
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No>
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DPrintSkipBlankPages Yes>
+ <DPrintSeparations No>
+ <DGenerateAcrobatInfo No>
+ <DAcrobatParagraphBookmarks Yes>
+ <DAcrobatBookmarksIncludeTagNames No>
+> # end of Document
+<BookComponent
+ <FileName `<c\>anncovTOC.doc'>
+ <Unique 15>
+ <FileNameSuffix `TOC'>
+ <DeriveLinks No>
+ <DeriveType TOC>
+ <DeriveTag `Heading'>
+ <DeriveTag `Heading2'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+> # end of Dictionary
+<AFrames
+> # end of AFrames
+<Page
+ <Unique 59>
+ <PageType LeftMasterPage>
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 1>
+ <Unique 77>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 2>
+ <Unique 78>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 3>
+ <Unique 79>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 4>
+ <Unique 62>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 5>
+ <Unique 65>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 6>
+ <Unique 68>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 69>
+ <PageType RightMasterPage>
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 7>
+ <Unique 10352>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 8>
+ <Unique 10353>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 9>
+ <Unique 10354>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 10>
+ <Unique 72>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 11>
+ <Unique 75>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 12>
+ <Unique 78>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 79>
+ <PageType ReferencePage>
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 10356>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 10357>
+ <Overprint No>
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 10358>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 55>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 10360>
+ <Overprint No>
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 10361>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored>
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 59>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 61>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 10364>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored>
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 64>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 10366>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 10367>
+ <Overprint No>
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 81>
+ <Overprint No>
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 83>
+ <Overprint No>
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 85>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 71>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 89>
+ <Overprint No>
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 91>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored>
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 75>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 77>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 97>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored>
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 80>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 101>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 103>
+ <Overprint No>
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 10368>
+ <PageType BodyPage>
+ <PageNum `i'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 13>
+ <Unique 10369>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 110>
+ <PageType BodyPage>
+ <PageNum `ii'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 14>
+ <Unique 113>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 80>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 1>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 81>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 2>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 82>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 3>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 115>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 4>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 117>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 5>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 119>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 6>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10342>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 7>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10343>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 8>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10344>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 9>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 121>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 10>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 123>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 11>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 125>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 12>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 66>
+ <PgfTag `Title'>
+ <ParaLine
+ <TextRectID 13>
+ >
+ > # end of Para
+ <Para
+ <Unique 67>
+ <PgfTag `Title'>
+ <ParaLine
+ <String `X Print Service'>
+ >
+ > # end of Para
+ <Para
+ <Unique 68>
+ <PgfTag `Title2'>
+ <Pgf
+ <PgfSpBefore 13.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Protocol Version 1.0'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 69>
+ <PgfTag `Title3'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `X Consortium Standard'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `X Version 11, Release 6.4'>
+ >
+ > # end of Para
+ <Para
+ <Unique 70>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 71>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 72>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 73>
+ <PgfTag `Title3'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A. Deininger'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `T. Gilg'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String ` J. Miller'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `H. Phinney'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `C. Prince'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Hewlett-Packard Co.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `K. Samborn'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `R. Swick'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `X Consortium, Inc. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 74>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 713201>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 147>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop>
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 14>
+ >
+ > # end of Para
+ <Para
+ <Unique 149>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 151>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 153>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 155>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Copyright (c) 1996 Hewlett-Packard Company'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 International Business Machines, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Sun Microsystems, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Novell, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Digital Equipment Corp.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Fujitsu Limited'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Hitachi, Ltd.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 X Consortium, Inc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 157>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated '>
+ >
+ <ParaLine
+ <String `documentation files (the "Software"), to deal in the Software without restriction, including without limitation the '>
+ >
+ <ParaLine
+ <String `rights to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the Software, and to permit '>
+ >
+ <ParaLine
+ <String `persons to whom the Software is furnished to do so, subject to the following conditions:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 159>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `The above copyright notice and this permission notice shall be included in all copies or substantial portions of the '>
+ >
+ <ParaLine
+ <String `Software.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 161>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, '>
+ >
+ <ParaLine
+ <String `INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A '>
+ >
+ <ParaLine
+ <String `PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE '>
+ >
+ <ParaLine
+ <String `LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF '>
+ >
+ <ParaLine
+ <String `CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE '>
+ >
+ <ParaLine
+ <String `SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 163>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to '>
+ >
+ <ParaLine
+ <String `promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 123>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Window System'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a trademark of X Consortium, Inc.'>
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/XProtocol/X11.encoding b/specs/XProtocol/X11.encoding
new file mode 100644
index 0000000..ec45ead
--- /dev/null
+++ b/specs/XProtocol/X11.encoding
@@ -0,0 +1,4431 @@
+.\" $Xorg: X11.encoding,v 1.3 2000/08/17 19:42:23 cpqbld Exp $
+\&
+.sp 1
+.ps 11
+.nr PS 11
+.XS
+Appendix B \- Protocol Encoding
+.XE
+.ce 3
+\s+1\fBAppendix B\fP\s-1
+
+\s+1\fBProtocol Encoding\fP\s-1
+.sp 2
+.LP
+.\"The sections in this appendix correspond to their number counterparts
+.\"in the protocol document.
+.SH
+Syntactic Conventions
+.LP
+All numbers are in decimal,
+unless prefixed with #x, in which case they are in hexadecimal (base 16).
+.LP
+The general syntax used to describe requests, replies, errors, events, and
+compound types is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.R
+.PN NameofThing
+ encode-form
+ ...
+ encode-form
+.De
+.ps 11
+.nr PS 11
+.LP
+Each encode-form describes a single component.
+.LP
+For components described in the protocol as:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.R
+name: TYPE
+.De
+.ps 11
+.nr PS 11
+.LP
+the encode-form is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+.R
+N TYPE name
+.De
+.ps 11
+.nr PS 11
+.LP
+N is the number of bytes occupied in the data stream,
+and TYPE is the interpretation of those bytes.
+For example,
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i
+.ta 1i 1.5i
+.R
+depth: CARD8
+.De
+.ps 11
+.nr PS 11
+.LP
+becomes:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.R
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+1 CARD8 depth
+.De
+.ps 11
+.nr PS 11
+.LP
+For components with a static numeric value the encode-form is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+.R
+N value name
+.De
+.ps 11
+.nr PS 11
+.LP
+The value is always interpreted as an N-byte unsigned integer.
+For example,
+the first two bytes of a
+.PN Window
+error are always zero (indicating an
+error in general) and three (indicating the
+.PN Window
+error in particular):
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+.R
+1 0 Error
+1 3 code
+.De
+.ps 11
+.nr PS 11
+.LP
+For components described in the protocol as:
+.RS
+.ps 9
+.nr PS 9
+.LP
+name:
+.Pn { Name1 ,...,
+.PN NameI }
+.RE
+.ps 11
+.nr PS 11
+.LP
+the encode-form is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+.R
+N name
+ value1 Name1
+ ...
+ valueI NameI
+.De
+.ps 11
+.nr PS 11
+.LP
+The value is always interpreted as an N-byte unsigned integer.
+Note that the size of N is sometimes larger than that strictly required
+to encode the values.
+For example:
+.RS
+.ps 9
+.nr PS 9
+.LP
+class:
+.Pn { InputOutput ,
+.PN InputOnly ,
+.PN CopyFromParent }
+.RE
+.ps 11
+.nr PS 11
+.LP
+becomes:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2.5i 3i
+.ta 1i 1.5i 2.5i 3i
+.R
+2 class
+ 0 CopyFromParent
+ 1 InputOutput
+ 2 InputOnly
+.De
+.ps 11
+.nr PS 11
+.LP
+For components described in the protocol as:
+.RS
+.ps 9
+.nr PS 9
+.LP
+NAME: TYPE or
+.PN Alternative1 ...or
+.PN AlternativeI
+.RE
+.ps 11
+.nr PS 11
+.LP
+the encode-form is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2i 2.5i 3i
+.ta 1i 1.5i 2i 2.5i 3i
+.R
+N TYPE NAME
+ value1 Alternative1
+ ...
+ valueI AlternativeI
+.De
+.ps 11
+.nr PS 11
+.LP
+The alternative values are guaranteed not to conflict with the encoding
+of TYPE.
+For example:
+.RS
+.ps 9
+.nr PS 9
+.LP
+destination: WINDOW or
+.PN PointerWindow
+or
+.PN InputFocus
+.RE
+.ps 11
+.nr PS 11
+.LP
+becomes:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+.R
+4 WINDOW destination
+ 0 PointerWindow
+ 1 InputFocus
+.De
+.ps 11
+.nr PS 11
+.LP
+For components described in the protocol as:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i
+.ta 1i 1.5i
+.R
+value-mask: BITMASK
+.De
+.ps 11
+.nr PS 11
+.LP
+the encode-form is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+.R
+N BITMASK value-mask
+ mask1 mask-name1
+ ...
+ maskI mask-nameI
+.De
+.ps 11
+.nr PS 11
+.LP
+The individual bits in the mask are specified and named,
+and N is 2 or 4.
+The most-significant bit in a BITMASK is reserved for use in defining
+chained (multiword) bitmasks, as extensions augment existing core requests.
+The precise interpretation of this bit is not yet defined here,
+although a probable mechanism is that a 1-bit indicates that another N bytes
+of bitmask follows, with bits within the overall mask still interpreted
+from least-significant to most-significant with an N-byte unit, with N-byte units
+interpreted in stream order, and with the overall mask being byte-swapped
+in individual N-byte units.
+.LP
+For LISTofVALUE encodings, the request is followed by a section of the form:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i
+.ta 1i 1.5i
+.R
+VALUEs
+ encode-form
+ ...
+ encode-form
+.De
+.ps 11
+.nr PS 11
+.LP
+listing an encode-form for each VALUE.
+The NAME in each encode-form keys to the corresponding BITMASK bit.
+The encoding of a VALUE always occupies four bytes,
+but the number of bytes specified in the encoding-form indicates how
+many of the least-significant bytes are actually used;
+the remaining bytes are unused and their values do not matter.
+.LP
+In various cases, the number of bytes occupied by a component will be specified
+by a lowercase single-letter variable name instead of a specific numeric
+value, and often some other component will have its value specified as a
+simple numeric expression involving these variables.
+Components specified with such expressions are always interpreted
+as unsigned integers.
+The scope of such variables is always just the enclosing request, reply,
+error, event, or compound type structure.
+For example:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+.R
+2 3+n request length
+4n LISTofPOINT points
+.De
+.ps 11
+.nr PS 11
+.LP
+For unused bytes (the values of the bytes are undefined and do no matter),
+the encode-form is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.R
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+N unused
+.De
+.ps 11
+.nr PS 11
+.LP
+If the number of unused bytes is variable, the encode-form typically is:
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+.R
+p unused, p=pad(E)
+.De
+.ps 11
+.nr PS 11
+.LP
+where E is some expression,
+and pad(E) is the number of bytes needed to round E up to a multiple of four.
+.LP
+.ps 9
+.nr PS 9
+.Ds
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+.R
+pad(E) = (4 - (E mod 4)) mod 4
+.De
+.ps 11
+.nr PS 11
+.SH
+Common Types
+.ps 9
+.nr PS 9
+.LP
+LISTofFOO
+.ps 11
+.nr PS 11
+.IP
+In this document the LISTof notation strictly means some number of repetitions
+of the FOO encoding;
+the actual length of the list is encoded elsewhere.
+.ps 9
+.nr PS 9
+.LP
+SETofFOO
+.ps 11
+.nr PS 11
+.IP
+A set is always represented by a bitmask, with a 1-bit indicating presence in
+the set.
+.ps 9
+.nr PS 9
+.LP
+BITMASK: CARD32
+.LP
+WINDOW: CARD32
+.LP
+PIXMAP: CARD32
+.LP
+CURSOR: CARD32
+.LP
+FONT: CARD32
+.LP
+GCONTEXT: CARD32
+.LP
+COLORMAP: CARD32
+.LP
+DRAWABLE: CARD32
+.LP
+FONTABLE: CARD32
+.LP
+ATOM: CARD32
+.LP
+VISUALID: CARD32
+.LP
+BYTE: 8-bit value
+.LP
+INT8: 8-bit signed integer
+.LP
+INT16: 16-bit signed integer
+.LP
+INT32: 32-bit signed integer
+.LP
+CARD8: 8-bit unsigned integer
+.LP
+CARD16: 16-bit unsigned integer
+.LP
+CARD32: 32-bit unsigned integer
+.LP
+TIMESTAMP: CARD32
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+BITGRAVITY
+ 0 Forget
+ 1 NorthWest
+ 2 North
+ 3 NorthEast
+ 4 West
+ 5 Center
+ 6 East
+ 7 SouthWest
+ 8 South
+ 9 SouthEast
+ 10 Static
+.De
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+WINGRAVITY
+ 0 Unmap
+ 1 NorthWest
+ 2 North
+ 3 NorthEast
+ 4 West
+ 5 Center
+ 6 East
+ 7 SouthWest
+ 8 South
+ 9 SouthEast
+ 10 Static
+.De
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+BOOL
+ 0 False
+ 1 True
+.De
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+SETofEVENT
+ #x00000001 KeyPress
+ #x00000002 KeyRelease
+ #x00000004 ButtonPress
+ #x00000008 ButtonRelease
+ #x00000010 EnterWindow
+ #x00000020 LeaveWindow
+ #x00000040 PointerMotion
+ #x00000080 PointerMotionHint
+ #x00000100 Button1Motion
+ #x00000200 Button2Motion
+ #x00000400 Button3Motion
+ #x00000800 Button4Motion
+ #x00001000 Button5Motion
+ #x00002000 ButtonMotion
+ #x00004000 KeymapState
+ #x00008000 Exposure
+ #x00010000 VisibilityChange
+ #x00020000 StructureNotify
+ #x00040000 ResizeRedirect
+ #x00080000 SubstructureNotify
+ #x00100000 SubstructureRedirect
+ #x00200000 FocusChange
+ #x00400000 PropertyChange
+ #x00800000 ColormapChange
+ #x01000000 OwnerGrabButton
+ #xFE000000 unused but must be zero
+.De
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+SETofPOINTEREVENT
+ encodings are the same as for SETofEVENT, except with
+ #xFFFF8003 unused but must be zero
+.De
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+SETofDEVICEEVENT
+ encodings are the same as for SETofEVENT, except with
+ #xFFFFC0B0 unused but must be zero
+.De
+KEYSYM: CARD32
+.LP
+KEYCODE: CARD8
+.LP
+BUTTON: CARD8
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+SETofKEYBUTMASK
+ #x0001 Shift
+ #x0002 Lock
+ #x0004 Control
+ #x0008 Mod1
+ #x0010 Mod2
+ #x0020 Mod3
+ #x0040 Mod4
+ #x0080 Mod5
+ #x0100 Button1
+ #x0200 Button2
+ #x0400 Button3
+ #x0800 Button4
+ #x1000 Button5
+ #xE000 unused but must be zero
+.De
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+SETofKEYMASK
+ encodings are the same as for SETofKEYBUTMASK, except with
+ #xFF00 unused but must be zero
+.De
+.LP
+STRING8: LISTofCARD8
+.LP
+STRING16: LISTofCHAR2B
+.LP
+.Ds 0
+.TA .2i .5i 1.5i
+.ta .2i .5i 1.5i
+.R
+CHAR2B
+ 1 CARD8 byte1
+ 1 CARD8 byte2
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i
+.ta .2i .5i 1.5i
+.R
+POINT
+ 2 INT16 x
+ 2 INT16 y
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i
+.ta .2i .5i 1.5i
+.R
+RECTANGLE
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i
+.ta .2i .5i 1.5i
+.R
+ARC
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 INT16 angle1
+ 2 INT16 angle2
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+HOST
+ 1 family
+ 0 Internet
+ 1 DECnet
+ 2 Chaos
+ 1 unused
+ 2 n length of address
+ n LISTofBYTE address
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+STR
+ 1 n length of name in bytes
+ n STRING8 name
+.De
+.ps 11
+.nr PS 11
+.SH
+Errors
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Request
+ 1 0 Error
+ 1 1 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Value
+ 1 0 Error
+ 1 2 code
+ 2 CARD16 sequence number
+ 4 <32-bits> bad value
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Window
+ 1 0 Error
+ 1 3 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Pixmap
+ 1 0 Error
+ 1 4 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Atom
+ 1 0 Error
+ 1 5 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad atom id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Cursor
+ 1 0 Error
+ 1 6 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Font
+ 1 0 Error
+ 1 7 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Match
+ 1 0 Error
+ 1 8 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Drawable
+ 1 0 Error
+ 1 9 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Access
+ 1 0 Error
+ 1 10 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Alloc
+ 1 0 Error
+ 1 11 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Colormap
+ 1 0 Error
+ 1 12 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GContext
+ 1 0 Error
+ 1 13 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN IDChoice
+ 1 0 Error
+ 1 14 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Name
+ 1 0 Error
+ 1 15 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Length
+ 1 0 Error
+ 1 16 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Implementation
+ 1 0 Error
+ 1 17 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.De
+.ps 11
+.nr PS 11
+.SH
+Keyboards
+.LP
+KEYCODE values are always greater than 7 (and less than 256).
+.LP
+KEYSYM values with the bit #x10000000 set are reserved as vendor-specific.
+.LP
+The names and encodings of the standard KEYSYM values are contained in
+Appendix A, Keysym Encoding.
+.SH
+Pointers
+.LP
+BUTTON values are numbered starting with one.
+.SH
+Predefined Atoms
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA 1.75i 3i 4.75i
+.ta 1.75i 3i 4.75i
+PRIMARY 1 WM_NORMAL_HINTS 40
+SECONDARY 2 WM_SIZE_HINTS 41
+ARC 3 WM_ZOOM_HINTS 42
+ATOM 4 MIN_SPACE 43
+BITMAP 5 NORM_SPACE 44
+CARDINAL 6 MAX_SPACE 45
+COLORMAP 7 END_SPACE 46
+CURSOR 8 SUPERSCRIPT_X 47
+CUT_BUFFER0 9 SUPERSCRIPT_Y 48
+CUT_BUFFER1 10 SUBSCRIPT_X 49
+CUT_BUFFER2 11 SUBSCRIPT_Y 50
+CUT_BUFFER3 12 UNDERLINE_POSITION 51
+CUT_BUFFER4 13 UNDERLINE_THICKNESS 52
+CUT_BUFFER5 14 STRIKEOUT_ASCENT 53
+CUT_BUFFER6 15 STRIKEOUT_DESCENT 54
+CUT_BUFFER7 16 ITALIC_ANGLE 55
+DRAWABLE 17 X_HEIGHT 56
+FONT 18 QUAD_WIDTH 57
+INTEGER 19 WEIGHT 58
+PIXMAP 20 POINT_SIZE 59
+POINT 21 RESOLUTION 60
+RECTANGLE 22 COPYRIGHT 61
+RESOURCE_MANAGER 23 NOTICE 62
+RGB_COLOR_MAP 24 FONT_NAME 63
+RGB_BEST_MAP 25 FAMILY_NAME 64
+RGB_BLUE_MAP 26 FULL_NAME 65
+RGB_DEFAULT_MAP 27 CAP_HEIGHT 66
+RGB_GRAY_MAP 28 WM_CLASS 67
+RGB_GREEN_MAP 29 WM_TRANSIENT_FOR 68
+RGB_RED_MAP 30
+STRING 31
+VISUALID 32
+WINDOW 33
+WM_COMMAND 34
+WM_HINTS 35
+WM_CLIENT_MACHINE 36
+WM_ICON_NAME 37
+WM_ICON_SIZE 38
+WM_NAME 39
+.De
+.ps 11
+.nr PS 11
+.SH
+Connection Setup
+.LP
+For TCP connections,
+displays on a given host are numbered starting from 0,
+and the server for display N listens and accepts connections on port 6000 + N.
+For DECnet connections,
+displays on a given host are numbered starting from 0,
+and the server for display N listens and accepts connections on the object
+name obtained by concatenating ``X$X'' with the decimal representation of N,
+for example, X$X0 and X$X1.
+.LP
+Information sent by the client at connection setup:
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ 1 byte-order
+ #x42 MSB first
+ #x6C LSB first
+ 1 unused
+ 2 CARD16 protocol-major-version
+ 2 CARD16 protocol-minor-version
+ 2 n length of authorization-protocol-name
+ 2 d length of authorization-protocol-data
+ 2 unused
+ n STRING8 authorization-protocol-name
+ p unused, p=pad(n)
+ d STRING8 authorization-protocol-data
+ q unused, q=pad(d)
+.De
+.ps 11
+.nr PS 11
+.LP
+Except where explicitly noted in the protocol,
+all 16-bit and 32-bit quantities sent by the client must be transmitted
+with the specified byte order,
+and all 16-bit and 32-bit quantities returned by the server will be transmitted
+with this byte order.
+.LP
+Information received by the client if the connection is refused:
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ 1 0 Failed
+ 1 n length of reason in bytes
+ 2 CARD16 protocol-major-version
+ 2 CARD16 protocol-minor-version
+ 2 (n+p)/4 length in 4-byte units of ``additional data''
+ n STRING8 reason
+ p unused, p=pad(n)
+.De
+.ps 11
+.nr PS 11
+.LP
+Information received by the client if further authentication is required:
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ 1 2 Authenticate
+ 5 unused
+ 2 (n+p)/4 length in 4-byte units of ``additional data''
+ n STRING8 reason
+ p unused, p=pad(n)
+.De
+.ps 11
+.nr PS 11
+.LP
+Information received by the client if the connection is accepted:
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ 1 1 Success
+ 1 unused
+ 2 CARD16 protocol-major-version
+ 2 CARD16 protocol-minor-version
+ 2 8+2n+(v+p+m)/4 length in 4-byte units of ``additional data''
+ 4 CARD32 release-number
+ 4 CARD32 resource-id-base
+ 4 CARD32 resource-id-mask
+ 4 CARD32 motion-buffer-size
+ 2 v length of vendor
+ 2 CARD16 maximum-request-length
+ 1 CARD8 number of SCREENs in roots
+ 1 n number for FORMATs in pixmap-formats
+ 1 image-byte-order
+ 0 LSBFirst
+ 1 MSBFirst
+ 1 bitmap-format-bit-order
+ 0 LeastSignificant
+ 1 MostSignificant
+ 1 CARD8 bitmap-format-scanline-unit
+ 1 CARD8 bitmap-format-scanline-pad
+ 1 KEYCODE min-keycode
+ 1 KEYCODE max-keycode
+ 4 unused
+ v STRING8 vendor
+ p unused, p=pad(v)
+ 8n LISTofFORMAT pixmap-formats
+ m LISTofSCREEN roots (m is always a multiple of 4)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+FORMAT
+ 1 CARD8 depth
+ 1 CARD8 bits-per-pixel
+ 1 CARD8 scanline-pad
+ 5 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+SCREEN
+ 4 WINDOW root
+ 4 COLORMAP default-colormap
+ 4 CARD32 white-pixel
+ 4 CARD32 black-pixel
+ 4 SETofEVENT current-input-masks
+ 2 CARD16 width-in-pixels
+ 2 CARD16 height-in-pixels
+ 2 CARD16 width-in-millimeters
+ 2 CARD16 height-in-millimeters
+ 2 CARD16 min-installed-maps
+ 2 CARD16 max-installed-maps
+ 4 VISUALID root-visual
+ 1 backing-stores
+ 0 Never
+ 1 WhenMapped
+ 2 Always
+ 1 BOOL save-unders
+ 1 CARD8 root-depth
+ 1 CARD8 number of DEPTHs in allowed-depths
+ n LISTofDEPTH allowed-depths (n is always a multiple of 4)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+DEPTH
+ 1 CARD8 depth
+ 1 unused
+ 2 n number of VISUALTYPES in visuals
+ 4 unused
+ 24n LISTofVISUALTYPE visuals
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+VISUALTYPE
+ 4 VISUALID visual-id
+ 1 class
+ 0 StaticGray
+ 1 GrayScale
+ 2 StaticColor
+ 3 PseudoColor
+ 4 TrueColor
+ 5 DirectColor
+ 1 CARD8 bits-per-rgb-value
+ 2 CARD16 colormap-entries
+ 4 CARD32 red-mask
+ 4 CARD32 green-mask
+ 4 CARD32 blue-mask
+ 4 unused
+.De
+.ps 11
+.nr PS 11
+.SH
+Requests
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CreateWindow
+ 1 1 opcode
+ 1 CARD8 depth
+ 2 8+n request length
+ 4 WINDOW wid
+ 4 WINDOW parent
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 border-width
+ 2 class
+ 0 CopyFromParent
+ 1 InputOutput
+ 2 InputOnly
+ 4 VISUALID visual
+ 0 CopyFromParent
+ 4 BITMASK value-mask (has n bits set to 1)
+ #x00000001 background-pixmap
+ #x00000002 background-pixel
+ #x00000004 border-pixmap
+ #x00000008 border-pixel
+ #x00000010 bit-gravity
+ #x00000020 win-gravity
+ #x00000040 backing-store
+ #x00000080 backing-planes
+ #x00000100 backing-pixel
+ #x00000200 override-redirect
+ #x00000400 save-under
+ #x00000800 event-mask
+ #x00001000 do-not-propagate-mask
+ #x00002000 colormap
+ #x00004000 cursor
+ 4n LISTofVALUE value-list
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ VALUEs
+ 4 PIXMAP background-pixmap
+ 0 None
+ 1 ParentRelative
+ 4 CARD32 background-pixel
+ 4 PIXMAP border-pixmap
+ 0 CopyFromParent
+ 4 CARD32 border-pixel
+ 1 BITGRAVITY bit-gravity
+ 1 WINGRAVITY win-gravity
+ 1 backing-store
+ 0 NotUseful
+ 1 WhenMapped
+ 2 Always
+ 4 CARD32 backing-planes
+ 4 CARD32 backing-pixel
+ 1 BOOL override-redirect
+ 1 BOOL save-under
+ 4 SETofEVENT event-mask
+ 4 SETofDEVICEEVENT do-not-propagate-mask
+ 4 COLORMAP colormap
+ 0 CopyFromParent
+ 4 CURSOR cursor
+ 0 None
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeWindowAttributes
+ 1 2 opcode
+ 1 unused
+ 2 3+n request length
+ 4 WINDOW window
+ 4 BITMASK value-mask (has n bits set to 1)
+ encodings are the same as for CreateWindow
+ 4n LISTofVALUE value-list
+ encodings are the same as for CreateWindow
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetWindowAttributes
+ 1 3 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 backing-store
+ 0 NotUseful
+ 1 WhenMapped
+ 2 Always
+ 2 CARD16 sequence number
+ 4 3 reply length
+ 4 VISUALID visual
+ 2 class
+ 1 InputOutput
+ 2 InputOnly
+ 1 BITGRAVITY bit-gravity
+ 1 WINGRAVITY win-gravity
+ 4 CARD32 backing-planes
+ 4 CARD32 backing-pixel
+ 1 BOOL save-under
+ 1 BOOL map-is-installed
+ 1 map-state
+ 0 Unmapped
+ 1 Unviewable
+ 2 Viewable
+ 1 BOOL override-redirect
+ 4 COLORMAP colormap
+ 0 None
+ 4 SETofEVENT all-event-masks
+ 4 SETofEVENT your-event-mask
+ 2 SETofDEVICEEVENT do-not-propagate-mask
+ 2 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN DestroyWindow
+ 1 4 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN DestroySubwindows
+ 1 5 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeSaveSet
+ 1 6 opcode
+ 1 mode
+ 0 Insert
+ 1 Delete
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ReparentWindow
+ 1 7 opcode
+ 1 unused
+ 2 4 request length
+ 4 WINDOW window
+ 4 WINDOW parent
+ 2 INT16 x
+ 2 INT16 y
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN MapWindow
+ 1 8 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN MapSubwindows
+ 1 9 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UnmapWindow
+ 1 10 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UnmapSubwindows
+ 1 11 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ConfigureWindow
+ 1 12 opcode
+ 1 unused
+ 2 3+n request length
+ 4 WINDOW window
+ 2 BITMASK value-mask (has n bits set to 1)
+ #x0001 x
+ #x0002 y
+ #x0004 width
+ #x0008 height
+ #x0010 border-width
+ #x0020 sibling
+ #x0040 stack-mode
+ 2 unused
+ 4n LISTofVALUE value-list
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ VALUEs
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 border-width
+ 4 WINDOW sibling
+ 1 stack-mode
+ 0 Above
+ 1 Below
+ 2 TopIf
+ 3 BottomIf
+ 4 Opposite
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CirculateWindow
+ 1 13 opcode
+ 1 direction
+ 0 RaiseLowest
+ 1 LowerHighest
+ 2 2 request length
+ 4 WINDOW window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetGeometry
+ 1 14 opcode
+ 1 unused
+ 2 2 request length
+ 4 DRAWABLE drawable
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 CARD8 depth
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 WINDOW root
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 border-width
+ 10 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryTree
+ 1 15 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n reply length
+ 4 WINDOW root
+ 4 WINDOW parent
+ 0 None
+ 2 n number of WINDOWs in children
+ 14 unused
+ 4n LISTofWINDOW children
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN InternAtom
+ 1 16 opcode
+ 1 BOOL only-if-exists
+ 2 2+(n+p)/4 request length
+ 2 n length of name
+ 2 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 ATOM atom
+ 0 None
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetAtomName
+ 1 17 opcode
+ 1 unused
+ 2 2 request length
+ 4 ATOM atom
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 2 n length of name
+ 22 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeProperty
+ 1 18 opcode
+ 1 mode
+ 0 Replace
+ 1 Prepend
+ 2 Append
+ 2 6+(n+p)/4 request length
+ 4 WINDOW window
+ 4 ATOM property
+ 4 ATOM type
+ 1 CARD8 format
+ 3 unused
+ 4 CARD32 length of data in format units
+ (= n for format = 8)
+ (= n/2 for format = 16)
+ (= n/4 for format = 32)
+ n LISTofBYTE data
+ (n is a multiple of 2 for format = 16)
+ (n is a multiple of 4 for format = 32)
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN DeleteProperty
+ 1 19 opcode
+ 1 unused
+ 2 3 request length
+ 4 WINDOW window
+ 4 ATOM property
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetProperty
+ 1 20 opcode
+ 1 BOOL delete
+ 2 6 request length
+ 4 WINDOW window
+ 4 ATOM property
+ 4 ATOM type
+ 0 AnyPropertyType
+ 4 CARD32 long-offset
+ 4 CARD32 long-length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 CARD8 format
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 4 ATOM type
+ 0 None
+ 4 CARD32 bytes-after
+ 4 CARD32 length of value in format units
+ (= 0 for format = 0)
+ (= n for format = 8)
+ (= n/2 for format = 16)
+ (= n/4 for format = 32)
+ 12 unused
+ n LISTofBYTE value
+ (n is zero for format = 0)
+ (n is a multiple of 2 for format = 16)
+ (n is a multiple of 4 for format = 32)
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ListProperties
+ 1 21 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n reply length
+ 2 n number of ATOMs in atoms
+ 22 unused
+ 4n LISTofATOM atoms
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetSelectionOwner
+ 1 22 opcode
+ 1 unused
+ 2 4 request length
+ 4 WINDOW owner
+ 0 None
+ 4 ATOM selection
+ 4 TIMESTAMP time
+ 0 CurrentTime
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetSelectionOwner
+ 1 23 opcode
+ 1 unused
+ 2 2 request length
+ 4 ATOM selection
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 WINDOW owner
+ 0 None
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ConvertSelection
+ 1 24 opcode
+ 1 unused
+ 2 6 request length
+ 4 WINDOW requestor
+ 4 ATOM selection
+ 4 ATOM target
+ 4 ATOM property
+ 0 None
+ 4 TIMESTAMP time
+ 0 CurrentTime
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SendEvent
+ 1 25 opcode
+ 1 BOOL propagate
+ 2 11 request length
+ 4 WINDOW destination
+ 0 PointerWindow
+ 1 InputFocus
+ 4 SETofEVENT event-mask
+ 32 event
+ standard event format (see the Events section)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GrabPointer
+ 1 26 opcode
+ 1 BOOL owner-events
+ 2 6 request length
+ 4 WINDOW grab-window
+ 2 SETofPOINTEREVENT event-mask
+ 1 pointer-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 keyboard-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 4 WINDOW confine-to
+ 0 None
+ 4 CURSOR cursor
+ 0 None
+ 4 TIMESTAMP time
+ 0 CurrentTime
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 2 InvalidTime
+ 3 NotViewable
+ 4 Frozen
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UngrabPointer
+ 1 27 opcode
+ 1 unused
+ 2 2 request length
+ 4 TIMESTAMP time
+ 0 CurrentTime
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GrabButton
+ 1 28 opcode
+ 1 BOOL owner-events
+ 2 6 request length
+ 4 WINDOW grab-window
+ 2 SETofPOINTEREVENT event-mask
+ 1 pointer-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 keyboard-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 4 WINDOW confine-to
+ 0 None
+ 4 CURSOR cursor
+ 0 None
+ 1 BUTTON button
+ 0 AnyButton
+ 1 unused
+ 2 SETofKEYMASK modifiers
+ #x8000 AnyModifier
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UngrabButton
+ 1 29 opcode
+ 1 BUTTON button
+ 0 AnyButton
+ 2 3 request length
+ 4 WINDOW grab-window
+ 2 SETofKEYMASK modifiers
+ #x8000 AnyModifier
+ 2 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeActivePointerGrab
+ 1 30 opcode
+ 1 unused
+ 2 4 request length
+ 4 CURSOR cursor
+ 0 None
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 2 SETofPOINTEREVENT event-mask
+ 2 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GrabKeyboard
+ 1 31 opcode
+ 1 BOOL owner-events
+ 2 4 request length
+ 4 WINDOW grab-window
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 1 pointer-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 keyboard-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 2 unused
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 2 InvalidTime
+ 3 NotViewable
+ 4 Frozen
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UngrabKeyboard
+ 1 32 opcode
+ 1 unused
+ 2 2 request length
+ 4 TIMESTAMP time
+ 0 CurrentTime
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.PN GrabKey
+ 1 33 opcode
+ 1 BOOL owner-events
+ 2 4 request length
+ 4 WINDOW grab-window
+ 2 SETofKEYMASK modifiers
+ #x8000 AnyModifier
+ 1 KEYCODE key
+ 0 AnyKey
+ 1 pointer-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 keyboard-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 3 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UngrabKey
+ 1 34 opcode
+ 1 KEYCODE key
+ 0 AnyKey
+ 2 3 request length
+ 4 WINDOW grab-window
+ 2 SETofKEYMASK modifiers
+ #x8000 AnyModifier
+ 2 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN AllowEvents
+ 1 35 opcode
+ 1 mode
+ 0 AsyncPointer
+ 1 SyncPointer
+ 2 ReplayPointer
+ 3 AsyncKeyboard
+ 4 SyncKeyboard
+ 5 ReplayKeyboard
+ 6 AsyncBoth
+ 7 SyncBoth
+ 2 2 request length
+ 4 TIMESTAMP time
+ 0 CurrentTime
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GrabServer
+ 1 36 opcode
+ 1 unused
+ 2 1 request length
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UngrabServer
+ 1 37 opcode
+ 1 unused
+ 2 1 request length
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryPointer
+ 1 38 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 BOOL same-screen
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 WINDOW root
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 win-x
+ 2 INT16 win-y
+ 2 SETofKEYBUTMASK mask
+ 6 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetMotionEvents
+ 1 39 opcode
+ 1 unused
+ 2 4 request length
+ 4 WINDOW window
+ 4 TIMESTAMP start
+ 0 CurrentTime
+ 4 TIMESTAMP stop
+ 0 CurrentTime
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 2n reply length
+ 4 n number of TIMECOORDs in events
+ 20 unused
+ 8n LISTofTIMECOORD events
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ TIMECOORD
+ 4 TIMESTAMP time
+ 2 INT16 x
+ 2 INT16 y
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN TranslateCoordinates
+ 1 40 opcode
+ 1 unused
+ 2 4 request length
+ 4 WINDOW src-window
+ 4 WINDOW dst-window
+ 2 INT16 src-x
+ 2 INT16 src-y
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 BOOL same-screen
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 WINDOW child
+ 0 None
+ 2 INT16 dst-x
+ 2 INT16 dst-y
+ 16 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN WarpPointer
+ 1 41 opcode
+ 1 unused
+ 2 6 request length
+ 4 WINDOW src-window
+ 0 None
+ 4 WINDOW dst-window
+ 0 None
+ 2 INT16 src-x
+ 2 INT16 src-y
+ 2 CARD16 src-width
+ 2 CARD16 src-height
+ 2 INT16 dst-x
+ 2 INT16 dst-y
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetInputFocus
+ 1 42 opcode
+ 1 revert-to
+ 0 None
+ 1 PointerRoot
+ 2 Parent
+ 2 3 request length
+ 4 WINDOW focus
+ 0 None
+ 1 PointerRoot
+ 4 TIMESTAMP time
+ 0 CurrentTime
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetInputFocus
+ 1 43 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 revert-to
+ 0 None
+ 1 PointerRoot
+ 2 Parent
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 WINDOW focus
+ 0 None
+ 1 PointerRoot
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryKeymap
+ 1 44 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 2 reply length
+ 32 LISTofCARD8 keys
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN OpenFont
+ 1 45 opcode
+ 1 unused
+ 2 3+(n+p)/4 request length
+ 4 FONT fid
+ 2 n length of name
+ 2 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CloseFont
+ 1 46 opcode
+ 1 unused
+ 2 2 request length
+ 4 FONT font
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryFont
+ 1 47 opcode
+ 1 unused
+ 2 2 request length
+ 4 FONTABLE font
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 7+2n+3m reply length
+ 12 CHARINFO min-bounds
+ 4 unused
+ 12 CHARINFO max-bounds
+ 4 unused
+ 2 CARD16 min-char-or-byte2
+ 2 CARD16 max-char-or-byte2
+ 2 CARD16 default-char
+ 2 n number of FONTPROPs in properties
+ 1 draw-direction
+ 0 LeftToRight
+ 1 RightToLeft
+ 1 CARD8 min-byte1
+ 1 CARD8 max-byte1
+ 1 BOOL all-chars-exist
+ 2 INT16 font-ascent
+ 2 INT16 font-descent
+ 4 m number of CHARINFOs in char-infos
+ 8n LISTofFONTPROP properties
+ 12m LISTofCHARINFO char-infos
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ FONTPROP
+ 4 ATOM name
+ 4 <32-bits> value
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ CHARINFO
+ 2 INT16 left-side-bearing
+ 2 INT16 right-side-bearing
+ 2 INT16 character-width
+ 2 INT16 ascent
+ 2 INT16 descent
+ 2 CARD16 attributes
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryTextExtents
+ 1 48 opcode
+ 1 BOOL odd length, True if p = 2
+ 2 2+(2n+p)/4 request length
+ 4 FONTABLE font
+ 2n STRING16 string
+ p unused, p=pad(2n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 draw-direction
+ 0 LeftToRight
+ 1 RightToLeft
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 INT16 font-ascent
+ 2 INT16 font-descent
+ 2 INT16 overall-ascent
+ 2 INT16 overall-descent
+ 4 INT32 overall-width
+ 4 INT32 overall-left
+ 4 INT32 overall-right
+ 4 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ListFonts
+ 1 49 opcode
+ 1 unused
+ 2 2+(n+p)/4 request length
+ 2 CARD16 max-names
+ 2 n length of pattern
+ n STRING8 pattern
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 2 CARD16 number of STRs in names
+ 22 unused
+ n LISTofSTR names
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ListFontsWithInfo
+ 1 50 opcode
+ 1 unused
+ 2 2+(n+p)/4 request length
+ 2 CARD16 max-names
+ 2 n length of pattern
+ n STRING8 pattern
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(-> (except for last in series)
+ 1 1 Reply
+ 1 n length of name in bytes
+ 2 CARD16 sequence number
+ 4 7+2m+(n+p)/4 reply length
+ 12 CHARINFO min-bounds
+ 4 unused
+ 12 CHARINFO max-bounds
+ 4 unused
+ 2 CARD16 min-char-or-byte2
+ 2 CARD16 max-char-or-byte2
+ 2 CARD16 default-char
+ 2 m number of FONTPROPs in properties
+ 1 draw-direction
+ 0 LeftToRight
+ 1 RightToLeft
+ 1 CARD8 min-byte1
+ 1 CARD8 max-byte1
+ 1 BOOL all-chars-exist
+ 2 INT16 font-ascent
+ 2 INT16 font-descent
+ 4 CARD32 replies-hint
+ 8m LISTofFONTPROP properties
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ FONTPROP
+ encodings are the same as for QueryFont
+
+ CHARINFO
+ encodings are the same as for QueryFont
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(-> (last in series)
+ 1 1 Reply
+ 1 0 last-reply indicator
+ 2 CARD16 sequence number
+ 4 7 reply length
+ 52 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetFontPath
+ 1 51 opcode
+ 1 unused
+ 2 2+(n+p)/4 request length
+ 2 CARD16 number of STRs in path
+ 2 unused
+ n LISTofSTR path
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetFontPath
+ 1 52 opcode
+ 1 unused
+ 2 1 request list
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 2 CARD16 number of STRs in path
+ 22 unused
+ n LISTofSTR path
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CreatePixmap
+ 1 53 opcode
+ 1 CARD8 depth
+ 2 4 request length
+ 4 PIXMAP pid
+ 4 DRAWABLE drawable
+ 2 CARD16 width
+ 2 CARD16 height
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FreePixmap
+ 1 54 opcode
+ 1 unused
+ 2 2 request length
+ 4 PIXMAP pixmap
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CreateGC
+ 1 55 opcode
+ 1 unused
+ 2 4+n request length
+ 4 GCONTEXT cid
+ 4 DRAWABLE drawable
+ 4 BITMASK value-mask (has n bits set to 1)
+ #x00000001 function
+ #x00000002 plane-mask
+ #x00000004 foreground
+ #x00000008 background
+ #x00000010 line-width
+ #x00000020 line-style
+ #x00000040 cap-style
+ #x00000080 join-style
+ #x00000100 fill-style
+ #x00000200 fill-rule
+ #x00000400 tile
+ #x00000800 stipple
+ #x00001000 tile-stipple-x-origin
+ #x00002000 tile-stipple-y-origin
+ #x00004000 font
+ #x00008000 subwindow-mode
+ #x00010000 graphics-exposures
+ #x00020000 clip-x-origin
+ #x00040000 clip-y-origin
+ #x00080000 clip-mask
+ #x00100000 dash-offset
+ #x00200000 dashes
+ #x00400000 arc-mode
+ 4n LISTofVALUE value-list
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ VALUEs
+ 1 function
+ 0 Clear
+ 1 And
+ 2 AndReverse
+ 3 Copy
+ 4 AndInverted
+ 5 NoOp
+ 6 Xor
+ 7 Or
+ 8 Nor
+ 9 Equiv
+ 10 Invert
+ 11 OrReverse
+ 12 CopyInverted
+ 13 OrInverted
+ 14 Nand
+ 15 Set
+ 4 CARD32 plane-mask
+ 4 CARD32 foreground
+ 4 CARD32 background
+ 2 CARD16 line-width
+ 1 line-style
+ 0 Solid
+ 1 OnOffDash
+ 2 DoubleDash
+ 1 cap-style
+ 0 NotLast
+ 1 Butt
+ 2 Round
+ 3 Projecting
+ 1 join-style
+ 0 Miter
+ 1 Round
+ 2 Bevel
+ 1 fill-style
+ 0 Solid
+ 1 Tiled
+ 2 Stippled
+ 3 OpaqueStippled
+ 1 fill-rule
+ 0 EvenOdd
+ 1 Winding
+ 4 PIXMAP tile
+ 4 PIXMAP stipple
+ 2 INT16 tile-stipple-x-origin
+ 2 INT16 tile-stipple-y-origin
+ 4 FONT font
+ 1 subwindow-mode
+ 0 ClipByChildren
+ 1 IncludeInferiors
+ 1 BOOL graphics-exposures
+ 2 INT16 clip-x-origin
+ 2 INT16 clip-y-origin
+ 4 PIXMAP clip-mask
+ 0 None
+ 2 CARD16 dash-offset
+ 1 CARD8 dashes
+ 1 arc-mode
+ 0 Chord
+ 1 PieSlice
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeGC
+ 1 56 opcode
+ 1 unused
+ 2 3+n request length
+ 4 GCONTEXT gc
+ 4 BITMASK value-mask (has n bits set to 1)
+ encodings are the same as for CreateGC
+ 4n LISTofVALUE value-list
+ encodings are the same as for CreateGC
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CopyGC
+ 1 57 opcode
+ 1 unused
+ 2 4 request length
+ 4 GCONTEXT src-gc
+ 4 GCONTEXT dst-gc
+ 4 BITMASK value-mask
+ encodings are the same as for CreateGC
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetDashes
+ 1 58 opcode
+ 1 unused
+ 2 3+(n+p)/4 request length
+ 4 GCONTEXT gc
+ 2 CARD16 dash-offset
+ 2 n length of dashes
+ n LISTofCARD8 dashes
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetClipRectangles
+ 1 59 opcode
+ 1 ordering
+ 0 UnSorted
+ 1 YSorted
+ 2 YXSorted
+ 3 YXBanded
+ 2 3+2n request length
+ 4 GCONTEXT gc
+ 2 INT16 clip-x-origin
+ 2 INT16 clip-y-origin
+ 8n LISTofRECTANGLE rectangles
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FreeGC
+ 1 60 opcode
+ 1 unused
+ 2 2 request length
+ 4 GCONTEXT gc
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ClearArea
+ 1 61 opcode
+ 1 BOOL exposures
+ 2 4 request length
+ 4 WINDOW window
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CopyArea
+ 1 62 opcode
+ 1 unused
+ 2 7 request length
+ 4 DRAWABLE src-drawable
+ 4 DRAWABLE dst-drawable
+ 4 GCONTEXT gc
+ 2 INT16 src-x
+ 2 INT16 src-y
+ 2 INT16 dst-x
+ 2 INT16 dst-y
+ 2 CARD16 width
+ 2 CARD16 height
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CopyPlane
+ 1 63 opcode
+ 1 unused
+ 2 8 request length
+ 4 DRAWABLE src-drawable
+ 4 DRAWABLE dst-drawable
+ 4 GCONTEXT gc
+ 2 INT16 src-x
+ 2 INT16 src-y
+ 2 INT16 dst-x
+ 2 INT16 dst-y
+ 2 CARD16 width
+ 2 CARD16 height
+ 4 CARD32 bit-plane
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyPoint
+ 1 64 opcode
+ 1 coordinate-mode
+ 0 Origin
+ 1 Previous
+ 2 3+n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 4n LISTofPOINT points
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyLine
+ 1 65 opcode
+ 1 coordinate-mode
+ 0 Origin
+ 1 Previous
+ 2 3+n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 4n LISTofPOINT points
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolySegment
+ 1 66 opcode
+ 1 unused
+ 2 3+2n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 8n LISTofSEGMENT segments
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ SEGMENT
+ 2 INT16 x1
+ 2 INT16 y1
+ 2 INT16 x2
+ 2 INT16 y2
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyRectangle
+ 1 67 opcode
+ 1 unused
+ 2 3+2n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 8n LISTofRECTANGLE rectangles
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyArc
+ 1 68 opcode
+ 1 unused
+ 2 3+3n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 12n LISTofARC arcs
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FillPoly
+ 1 69 opcode
+ 1 unused
+ 2 4+n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 1 shape
+ 0 Complex
+ 1 Nonconvex
+ 2 Convex
+ 1 coordinate-mode
+ 0 Origin
+ 1 Previous
+ 2 unused
+ 4n LISTofPOINT points
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyFillRectangle
+ 1 70 opcode
+ 1 unused
+ 2 3+2n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 8n LISTofRECTANGLE rectangles
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyFillArc
+ 1 71 opcode
+ 1 unused
+ 2 3+3n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 12n LISTofARC arcs
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PutImage
+ 1 72 opcode
+ 1 format
+ 0 Bitmap
+ 1 XYPixmap
+ 2 ZPixmap
+ 2 6+(n+p)/4 request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 INT16 dst-x
+ 2 INT16 dst-y
+ 1 CARD8 left-pad
+ 1 CARD8 depth
+ 2 unused
+ n LISTofBYTE data
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetImage
+ 1 73 opcode
+ 1 format
+ 1 XYPixmap
+ 2 ZPixmap
+ 2 5 request length
+ 4 DRAWABLE drawable
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 4 CARD32 plane-mask
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 CARD8 depth
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 4 VISUALID visual
+ 0 None
+ 20 unused
+ n LISTofBYTE data
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyText8
+ 1 74 opcode
+ 1 unused
+ 2 4+(n+p)/4 request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 2 INT16 x
+ 2 INT16 y
+ n LISTofTEXTITEM8 items
+ p unused, p=pad(n) (p is always 0 or 1)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ TEXTITEM8
+ 1 m length of string (cannot be 255)
+ 1 INT8 delta
+ m STRING8 string
+ or
+ 1 255 font-shift indicator
+ 1 font byte 3 (most-significant)
+ 1 font byte 2
+ 1 font byte 1
+ 1 font byte 0 (least-significant)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyText16
+ 1 75 opcode
+ 1 unused
+ 2 4+(n+p)/4 request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 2 INT16 x
+ 2 INT16 y
+ n LISTofTEXTITEM16 items
+ p unused, p=pad(n) (p must be 0 or 1)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ TEXTITEM16
+ 1 m number of CHAR2Bs in string (cannot be 255)
+ 1 INT8 delta
+ 2m STRING16 string
+ or
+ 1 255 font-shift indicator
+ 1 font byte 3 (most-significant)
+ 1 font byte 2
+ 1 font byte 1
+ 1 font byte 0 (least-significant)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ImageText8
+ 1 76 opcode
+ 1 n length of string
+ 2 4+(n+p)/4 request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 2 INT16 x
+ 2 INT16 y
+ n STRING8 string
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ImageText16
+ 1 77 opcode
+ 1 n number of CHAR2Bs in string
+ 2 4+(2n+p)/4 request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 2 INT16 x
+ 2 INT16 y
+ 2n STRING16 string
+ p unused, p=pad(2n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CreateColormap
+ 1 78 opcode
+ 1 alloc
+ 0 None
+ 1 All
+ 2 4 request length
+ 4 COLORMAP mid
+ 4 WINDOW window
+ 4 VISUALID visual
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FreeColormap
+ 1 79 opcode
+ 1 unused
+ 2 2 request length
+ 4 COLORMAP cmap
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CopyColormapAndFree
+ 1 80 opcode
+ 1 unused
+ 2 3 request length
+ 4 COLORMAP mid
+ 4 COLORMAP src-cmap
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN InstallColormap
+ 1 81 opcode
+ 1 unused
+ 2 2 request length
+ 4 COLORMAP cmap
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UninstallColormap
+ 1 82 opcode
+ 1 unused
+ 2 2 request length
+ 4 COLORMAP cmap
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ListInstalledColormaps
+ 1 83 opcode
+ 1 unused
+ 2 2 request length
+ 4 WINDOW window
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n reply length
+ 2 n number of COLORMAPs in cmaps
+ 22 unused
+ 4n LISTofCOLORMAP cmaps
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN AllocColor
+ 1 84 opcode
+ 1 unused
+ 2 4 request length
+ 4 COLORMAP cmap
+ 2 CARD16 red
+ 2 CARD16 green
+ 2 CARD16 blue
+ 2 unused
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 red
+ 2 CARD16 green
+ 2 CARD16 blue
+ 2 unused
+ 4 CARD32 pixel
+ 12 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN AllocNamedColor
+ 1 85 opcode
+ 1 unused
+ 2 3+(n+p)/4 request length
+ 4 COLORMAP cmap
+ 2 n length of name
+ 2 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 pixel
+ 2 CARD16 exact-red
+ 2 CARD16 exact-green
+ 2 CARD16 exact-blue
+ 2 CARD16 visual-red
+ 2 CARD16 visual-green
+ 2 CARD16 visual-blue
+ 8 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN AllocColorCells
+ 1 86 opcode
+ 1 BOOL contiguous
+ 2 3 request length
+ 4 COLORMAP cmap
+ 2 CARD16 colors
+ 2 CARD16 planes
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n+m reply length
+ 2 n number of CARD32s in pixels
+ 2 m number of CARD32s in masks
+ 20 unused
+ 4n LISTofCARD32 pixels
+ 4m LISTofCARD32 masks
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN AllocColorPlanes
+ 1 87 opcode
+ 1 BOOL contiguous
+ 2 4 request length
+ 4 COLORMAP cmap
+ 2 CARD16 colors
+ 2 CARD16 reds
+ 2 CARD16 greens
+ 2 CARD16 blues
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n reply length
+ 2 n number of CARD32s in pixels
+ 2 unused
+ 4 CARD32 red-mask
+ 4 CARD32 green-mask
+ 4 CARD32 blue-mask
+ 8 unused
+ 4n LISTofCARD32 pixels
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FreeColors
+ 1 88 opcode
+ 1 unused
+ 2 3+n request length
+ 4 COLORMAP cmap
+ 4 CARD32 plane-mask
+ 4n LISTofCARD32 pixels
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN StoreColors
+ 1 89 opcode
+ 1 unused
+ 2 2+3n request length
+ 4 COLORMAP cmap
+ 12n LISTofCOLORITEM items
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ COLORITEM
+ 4 CARD32 pixel
+ 2 CARD16 red
+ 2 CARD16 green
+ 2 CARD16 blue
+ 1 do-red, do-green, do-blue
+ #x01 do-red (1 is True, 0 is False)
+ #x02 do-green (1 is True, 0 is False)
+ #x04 do-blue (1 is True, 0 is False)
+ #xF8 unused
+ 1 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN StoreNamedColor
+ 1 90 opcode
+ 1 do-red, do-green, do-blue
+ #x01 do-red (1 is True, 0 is False)
+ #x02 do-green (1 is True, 0 is False)
+ #x04 do-blue (1 is True, 0 is False)
+ #xF8 unused
+ 2 4+(n+p)/4 request length
+ 4 COLORMAP cmap
+ 4 CARD32 pixel
+ 2 n length of name
+ 2 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryColors
+ 1 91 opcode
+ 1 unused
+ 2 2+n request length
+ 4 COLORMAP cmap
+ 4n LISTofCARD32 pixels
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 2n reply length
+ 2 n number of RGBs in colors
+ 22 unused
+ 8n LISTofRGB colors
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ RGB
+ 2 CARD16 red
+ 2 CARD16 green
+ 2 CARD16 blue
+ 2 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN LookupColor
+ 1 92 opcode
+ 1 unused
+ 2 3+(n+p)/4 request length
+ 4 COLORMAP cmap
+ 2 n length of name
+ 2 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 exact-red
+ 2 CARD16 exact-green
+ 2 CARD16 exact-blue
+ 2 CARD16 visual-red
+ 2 CARD16 visual-green
+ 2 CARD16 visual-blue
+ 12 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CreateCursor
+ 1 93 opcode
+ 1 unused
+ 2 8 request length
+ 4 CURSOR cid
+ 4 PIXMAP source
+ 4 PIXMAP mask
+ 0 None
+ 2 CARD16 fore-red
+ 2 CARD16 fore-green
+ 2 CARD16 fore-blue
+ 2 CARD16 back-red
+ 2 CARD16 back-green
+ 2 CARD16 back-blue
+ 2 CARD16 x
+ 2 CARD16 y
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CreateGlyphCursor
+ 1 94 opcode
+ 1 unused
+ 2 8 request length
+ 4 CURSOR cid
+ 4 FONT source-font
+ 4 FONT mask-font
+ 0 None
+ 2 CARD16 source-char
+ 2 CARD16 mask-char
+ 2 CARD16 fore-red
+ 2 CARD16 fore-green
+ 2 CARD16 fore-blue
+ 2 CARD16 back-red
+ 2 CARD16 back-green
+ 2 CARD16 back-blue
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FreeCursor
+ 1 95 opcode
+ 1 unused
+ 2 2 request length
+ 4 CURSOR cursor
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN RecolorCursor
+ 1 96 opcode
+ 1 unused
+ 2 5 request length
+ 4 CURSOR cursor
+ 2 CARD16 fore-red
+ 2 CARD16 fore-green
+ 2 CARD16 fore-blue
+ 2 CARD16 back-red
+ 2 CARD16 back-green
+ 2 CARD16 back-blue
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryBestSize
+ 1 97 opcode
+ 1 class
+ 0 Cursor
+ 1 Tile
+ 2 Stipple
+ 2 3 request length
+ 4 DRAWABLE drawable
+ 2 CARD16 width
+ 2 CARD16 height
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 width
+ 2 CARD16 height
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryExtension
+ 1 98 opcode
+ 1 unused
+ 2 2+(n+p)/4 request length
+ 2 n length of name
+ 2 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 BOOL present
+ 1 CARD8 major-opcode
+ 1 CARD8 first-event
+ 1 CARD8 first-error
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ListExtensions
+ 1 99 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 CARD8 number of STRs in names
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 24 unused
+ n LISTofSTR names
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeKeyboardMapping
+ 1 100 opcode
+ 1 n keycode-count
+ 2 2+nm request length
+ 1 KEYCODE first-keycode
+ 1 m keysyms-per-keycode
+ 2 unused
+ 4nm LISTofKEYSYM keysyms
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetKeyboardMapping
+ 1 101 opcode
+ 1 unused
+ 2 2 request length
+ 1 KEYCODE first-keycode
+ 1 m count
+ 2 unused
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 n keysyms-per-keycode
+ 2 CARD16 sequence number
+ 4 nm reply length (m = count field from the request)
+ 24 unused
+ 4nm LISTofKEYSYM keysyms
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeKeyboardControl
+ 1 102 opcode
+ 1 unused
+ 2 2+n request length
+ 4 BITMASK value-mask (has n bits set to 1)
+ #x0001 key-click-percent
+ #x0002 bell-percent
+ #x0004 bell-pitch
+ #x0008 bell-duration
+ #x0010 led
+ #x0020 led-mode
+ #x0040 key
+ #x0080 auto-repeat-mode
+ 4n LISTofVALUE value-list
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ VALUEs
+ 1 INT8 key-click-percent
+ 1 INT8 bell-percent
+ 2 INT16 bell-pitch
+ 2 INT16 bell-duration
+ 1 CARD8 led
+ 1 led-mode
+ 0 Off
+ 1 On
+ 1 KEYCODE key
+ 1 auto-repeat-mode
+ 0 Off
+ 1 On
+ 2 Default
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetKeyboardControl
+ 1 103 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 global-auto-repeat
+ 0 Off
+ 1 On
+ 2 CARD16 sequence number
+ 4 5 reply length
+ 4 CARD32 led-mask
+ 1 CARD8 key-click-percent
+ 1 CARD8 bell-percent
+ 2 CARD16 bell-pitch
+ 2 CARD16 bell-duration
+ 2 unused
+ 32 LISTofCARD8 auto-repeats
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Bell
+ 1 104 opcode
+ 1 INT8 percent
+ 2 1 request length
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangePointerControl
+ 1 105 opcode
+ 1 unused
+ 2 3 request length
+ 2 INT16 acceleration-numerator
+ 2 INT16 acceleration-denominator
+ 2 INT16 threshold
+ 1 BOOL do-acceleration
+ 1 BOOL do-threshold
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetPointerControl
+ 1 106 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 acceleration-numerator
+ 2 CARD16 acceleration-denominator
+ 2 CARD16 threshold
+ 18 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetScreenSaver
+ 1 107 opcode
+ 1 unused
+ 2 3 request length
+ 2 INT16 timeout
+ 2 INT16 interval
+ 1 prefer-blanking
+ 0 No
+ 1 Yes
+ 2 Default
+ 1 allow-exposures
+ 0 No
+ 1 Yes
+ 2 Default
+ 2 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetScreenSaver
+ 1 108 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 timeout
+ 2 CARD16 interval
+ 1 prefer-blanking
+ 0 No
+ 1 Yes
+ 1 allow-exposures
+ 0 No
+ 1 Yes
+ 18 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ChangeHosts
+ 1 109 opcode
+ 1 mode
+ 0 Insert
+ 1 Delete
+ 2 2+(n+p)/4 request length
+ 1 family
+ 0 Internet
+ 1 DECnet
+ 2 Chaos
+ 1 unused
+ 2 n length of address
+ n LISTofCARD8 address
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ListHosts
+ 1 110 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 mode
+ 0 Disabled
+ 1 Enabled
+ 2 CARD16 sequence number
+ 4 n/4 reply length
+ 2 CARD16 number of HOSTs in hosts
+ 22 unused
+ n LISTofHOST hosts (n always a multiple of 4)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetAccessControl
+ 1 111 opcode
+ 1 mode
+ 0 Disable
+ 1 Enable
+ 2 1 request length
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetCloseDownMode
+ 1 112 opcode
+ 1 mode
+ 0 Destroy
+ 1 RetainPermanent
+ 2 RetainTemporary
+ 2 1 request length
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN KillClient
+ 1 113 opcode
+ 1 unused
+ 2 2 request length
+ 4 CARD32 resource
+ 0 AllTemporary
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN RotateProperties
+ 1 114 opcode
+ 1 unused
+ 2 3+n request length
+ 4 WINDOW window
+ 2 n number of properties
+ 2 INT16 delta
+ 4n LISTofATOM properties
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ForceScreenSaver
+ 1 115 opcode
+ 1 mode
+ 0 Reset
+ 1 Activate
+ 2 1 request length
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetPointerMapping
+ 1 116 opcode
+ 1 n length of map
+ 2 1+(n+p)/4 request length
+ n LISTofCARD8 map
+ p unused, p=pad(n)
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 status
+ 0 Success
+ 1 Busy
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetPointerMapping
+ 1 117 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 n length of map
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 24 unused
+ n LISTofCARD8 map
+ p unused, p=pad(n)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SetModifierMapping
+ 1 118 opcode
+ 1 n keycodes-per-modifier
+ 2 1+2n request length
+ 8n LISTofKEYCODE keycodes
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 status
+ 0 Success
+ 1 Busy
+ 2 Failed
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetModifierMapping
+ 1 119 opcode
+ 1 unused
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ \(->
+ 1 1 Reply
+ 1 n keycodes-per-modifier
+ 2 CARD16 sequence number
+ 4 2n reply length
+ 24 unused
+ 8n LISTofKEYCODE keycodes
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN NoOperation
+ 1 127 opcode
+ 1 unused
+ 2 1+n request length
+ 4n unused
+.De
+.ps 11
+.nr PS 11
+.SH
+Events
+.LP
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN KeyPress
+ 1 2 code
+ 1 KEYCODE detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN KeyRelease
+ 1 3 code
+ 1 KEYCODE detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ButtonPress
+ 1 4 code
+ 1 BUTTON detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ButtonRelease
+ 1 5 code
+ 1 BUTTON detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN MotionNotify
+ 1 6 code
+ 1 detail
+ 0 Normal
+ 1 Hint
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN EnterNotify
+ 1 7 code
+ 1 detail
+ 0 Ancestor
+ 1 Virtual
+ 2 Inferior
+ 3 Nonlinear
+ 4 NonlinearVirtual
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 mode
+ 0 Normal
+ 1 Grab
+ 2 Ungrab
+ 1 same-screen, focus
+ #x01 focus (1 is True, 0 is False)
+ #x02 same-screen (1 is True, 0 is False)
+ #xFC unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN LeaveNotify
+ 1 8 code
+ 1 detail
+ 0 Ancestor
+ 1 Virtual
+ 2 Inferior
+ 3 Nonlinear
+ 4 NonlinearVirtual
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 mode
+ 0 Normal
+ 1 Grab
+ 2 Ungrab
+ 1 same-screen, focus
+ #x01 focus (1 is True, 0 is False)
+ #x02 same-screen (1 is True, 0 is False)
+ #xFC unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FocusIn
+ 1 9 code
+ 1 detail
+ 0 Ancestor
+ 1 Virtual
+ 2 Inferior
+ 3 Nonlinear
+ 4 NonlinearVirtual
+ 5 Pointer
+ 6 PointerRoot
+ 7 None
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 1 mode
+ 0 Normal
+ 1 Grab
+ 2 Ungrab
+ 3 WhileGrabbed
+ 23 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN FocusOut
+ 1 10 code
+ 1 detail
+ 0 Ancestor
+ 1 Virtual
+ 2 Inferior
+ 3 Nonlinear
+ 4 NonlinearVirtual
+ 5 Pointer
+ 6 PointerRoot
+ 7 None
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 1 mode
+ 0 Normal
+ 1 Grab
+ 2 Ungrab
+ 3 WhileGrabbed
+ 23 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN KeymapNotify
+ 1 11 code
+ 31 LISTofCARD8 keys (byte for keycodes 0\-7 is omitted)
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN Expose
+ 1 12 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW window
+ 2 CARD16 x
+ 2 CARD16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 count
+ 14 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GraphicsExposure
+ 1 13 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 DRAWABLE drawable
+ 2 CARD16 x
+ 2 CARD16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 minor-opcode
+ 2 CARD16 count
+ 1 CARD8 major-opcode
+ 11 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN NoExposure
+ 1 14 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 DRAWABLE drawable
+ 2 CARD16 minor-opcode
+ 1 CARD8 major-opcode
+ 21 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN VisibilityNotify
+ 1 15 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW window
+ 1 state
+ 0 Unobscured
+ 1 PartiallyObscured
+ 2 FullyObscured
+ 23 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CreateNotify
+ 1 16 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW parent
+ 4 WINDOW window
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 border-width
+ 1 BOOL override-redirect
+ 9 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN DestroyNotify
+ 1 17 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 4 WINDOW window
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN UnmapNotify
+ 1 18 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 4 WINDOW window
+ 1 BOOL from-configure
+ 19 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN MapNotify
+ 1 19 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 4 WINDOW window
+ 1 BOOL override-redirect
+ 19 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN MapRequest
+ 1 20 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW parent
+ 4 WINDOW window
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ReparentNotify
+ 1 21 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 4 WINDOW window
+ 4 WINDOW parent
+ 2 INT16 x
+ 2 INT16 y
+ 1 BOOL override-redirect
+ 11 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ConfigureNotify
+ 1 22 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 4 WINDOW window
+ 4 WINDOW above-sibling
+ 0 None
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 border-width
+ 1 BOOL override-redirect
+ 5 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ConfigureRequest
+ 1 23 code
+ 1 stack-mode
+ 0 Above
+ 1 Below
+ 2 TopIf
+ 3 BottomIf
+ 4 Opposite
+ 2 CARD16 sequence number
+ 4 WINDOW parent
+ 4 WINDOW window
+ 4 WINDOW sibling
+ 0 None
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 border-width
+ 2 BITMASK value-mask
+ #x0001 x
+ #x0002 y
+ #x0004 width
+ #x0008 height
+ #x0010 border-width
+ #x0020 sibling
+ #x0040 stack-mode
+ 4 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GravityNotify
+ 1 24 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 4 WINDOW window
+ 2 INT16 x
+ 2 INT16 y
+ 16 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ResizeRequest
+ 1 25 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW window
+ 2 CARD16 width
+ 2 CARD16 height
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CirculateNotify
+ 1 26 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW event
+ 4 WINDOW window
+ 4 WINDOW unused
+ 1 place
+ 0 Top
+ 1 Bottom
+ 15 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN CirculateRequest
+ 1 27 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW parent
+ 4 WINDOW window
+ 4 unused
+ 1 place
+ 0 Top
+ 1 Bottom
+ 15 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PropertyNotify
+ 1 28 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW window
+ 4 ATOM atom
+ 4 TIMESTAMP time
+ 1 state
+ 0 NewValue
+ 1 Deleted
+ 15 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SelectionClear
+ 1 29 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW owner
+ 4 ATOM selection
+ 16 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SelectionRequest
+ 1 30 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 4 WINDOW owner
+ 4 WINDOW requestor
+ 4 ATOM selection
+ 4 ATOM target
+ 4 ATOM property
+ 0 None
+ 4 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN SelectionNotify
+ 1 31 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 4 WINDOW requestor
+ 4 ATOM selection
+ 4 ATOM target
+ 4 ATOM property
+ 0 None
+ 8 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ColormapNotify
+ 1 32 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 WINDOW window
+ 4 COLORMAP colormap
+ 0 None
+ 1 BOOL new
+ 1 state
+ 0 Uninstalled
+ 1 Installed
+ 18 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ClientMessage
+ 1 33 code
+ 1 CARD8 format
+ 2 CARD16 sequence number
+ 4 WINDOW window
+ 4 ATOM type
+ 20 data
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN MappingNotify
+ 1 34 code
+ 1 unused
+ 2 CARD16 sequence number
+ 1 request
+ 0 Modifier
+ 1 Keyboard
+ 2 Pointer
+ 1 KEYCODE first-keycode
+ 1 CARD8 count
+ 25 unused
+.De
+.ps 11
+.nr PS 11
+.bp
diff --git a/specs/XProtocol/X11.keysyms b/specs/XProtocol/X11.keysyms
new file mode 100644
index 0000000..b93514f
--- /dev/null
+++ b/specs/XProtocol/X11.keysyms
@@ -0,0 +1,1411 @@
+.\" $Xorg: X11.keysyms,v 1.3 2000/08/17 19:42:23 cpqbld Exp $
+\&
+.sp 1
+.ps 11
+.nr PS 11
+.XS
+Appendix A \- KEYSYM Encoding
+.XE
+.ce 3
+\s+1\fBAppendix A\fP\s-1
+
+\s+1\fBKEYSYM Encoding\fP\s-1
+.sp 2
+.LP
+For convenience, KEYSYM values are viewed as split into four bytes:
+.IP \(bu 5
+Byte 1 (for the purposes of this encoding) is the most-significant 5 bits
+(because of the 29-bit effective values)
+.IP \(bu 5
+Byte 2 is the next most-significant 8 bits
+.IP \(bu 5
+Byte 3 is the next most-significant 8 bits
+.IP \(bu 5
+Byte 4 is the least-significant 8 bits
+.LP
+There are two special KEYSYM values:
+.PN NoSymbol
+and
+.PN VoidSymbol .
+They are used to indicate the absence of symbols (see section 5).
+.TS
+l l l l lw(1i)
+n n n n lw(1i).
+_
+.sp 6p
+.B
+Byte 1 Byte 2 Byte 3 Byte 4 Name
+.sp 6p
+_
+.sp 6p
+.R
+0 0 0 0 T{
+.PN NoSymbol
+T}
+0 255 255 255 T{
+.PN VoidSymbol
+T}
+.sp 6p
+_
+.TE
+All other standard KEYSYM values have zero values for bytes 1 and 2.
+Byte 3 indicates a character code set,
+and byte 4 indicates a particular character within that set.
+.TS
+l l
+n l.
+_
+.sp 6p
+.B
+Byte 3 Byte 4
+.sp 6p
+_
+.sp 6p
+.R
+0 Latin-1
+1 Latin-2
+2 Latin-3
+3 Latin-4
+4 Kana
+5 Arabic
+6 Cyrillic
+7 Greek
+8 Technical
+9 Special
+10 Publishing
+11 APL
+12 Hebrew
+13 Thai
+14 Korean
+15 Latin-5
+16 Latin-6
+17 Latin-7
+18 Latin-8
+19 Latin-9
+32 Currency
+253 3270
+254 Keyboard (XKB) Extension
+255 Keyboard
+.sp 6p
+_
+.TE
+Each character set contains gaps where codes have been removed that were
+duplicates with codes in previous character sets
+(that is, character sets with lesser byte 3 value).
+.LP
+The 94 and 96 character code sets have been moved to occupy the right-hand
+quadrant (decimal 129 through 256), so the ASCII subset has a unique encoding across
+byte 4, which corresponds to the ASCII character code.
+However, this cannot be guaranteed with future registrations
+and does not apply to all of the Keyboard set.
+.LP
+To the best of our knowledge,
+the Latin, Kana, Arabic, Cyrillic, Greek, APL,
+and Hebrew sets are from the appropriate ISO and/or ECMA international
+standards.
+There are no Technical, Special, or Publishing international standards,
+so these sets are based on Digital Equipment Corporation standards.
+.LP
+The ordering between the sets (byte 3) is essentially arbitrary.
+National and international standards bodies were commencing
+deliberations regarding international 2-byte and 4-byte character sets
+at the time these keysyms were developed, but
+we did not know of any proposed layouts.
+.LP
+The order may be arbitrary,
+but it is important in dealing with duplicate coding.
+As far as possible,
+keysym values (byte 4) follow the character set encoding standards,
+except for the Greek and Cyrillic keysyms which are based on early
+draft standards.
+In the Latin-1 to Latin-4 sets,
+all duplicate glyphs occupy the same code position.
+However, duplicates between Greek and Technical do not occupy the same code
+position.
+Applications that wish to use the Latin-2, Latin-3, Latin-4, Greek, Cyrillic,
+or Technical sets may find it convenient to use arrays to transform the keysyms.
+.LP
+There is a difference between European and US usage of the names Pilcrow,
+Paragraph, and Section, as follows:
+.TS
+l l l.
+_
+.sp 6p
+.B
+US name European name code position in Latin-1
+.sp 6p
+_
+.R
+.sp 6p
+Section sign Paragraph sign 10/07
+Paragraph sign Pilcrow sign 11/06
+.sp 6p
+_
+.TE
+.LP
+We have adopted the US names (by accident rather than by design).
+.LP
+The Keyboard set is a miscellaneous collection of commonly occurring keys on
+keyboards.
+Within this set,
+the keypad symbols are generally duplicates of symbols found on keys
+on the main part of the keyboard, but they are distinguished here
+because they often have a distinguishable semantics associated with them.
+.LP
+Keyboards tend to be comparatively standard with respect to the alphanumeric
+keys, but they differ radically on the miscellaneous function keys.
+Many function keys are left over from early timesharing days
+or are designed for a specific application.
+Keyboard layouts from large manufacturers tend to have
+lots of keys for every conceivable purpose,
+whereas small workstation manufacturers often add keys that are solely
+for support of some of their unique functionality.
+There are two ways of thinking about how to define keysyms for such a world:
+.IP \(bu 5
+The Engraving approach
+.IP \(bu 5
+The Common approach
+.LP
+The Engraving approach is to create a keysym for every unique key engraving.
+This is effectively taking the union of all key engravings on all keyboards.
+For example, some keyboards label function keys across the top as F1 through
+Fn, and others label them as PF1 through PFn.
+These would be different keys under the Engraving approach.
+Likewise, Lock would differ from Shift Lock,
+which is different from the up-arrow symbol that has the effect of changing
+lowercase to uppercase.
+There are lots of other aliases such as Del, DEL, Delete, Remove, and so forth.
+The Engraving approach makes it easy to decide if a new entry should be added
+to the keysym set: if it does not exactly match an existing one,
+then a new one is created.
+One estimate is that there would be on the order of 300\-500 Keyboard keysyms
+using this approach, without counting foreign translations and variations.
+.LP
+The Common approach tries to capture all of the keys present on an interesting
+number of keyboards, folding likely aliases into the same keysym.
+For example,
+Del, DEL, and Delete are all merged into a single keysym.
+Vendors would be expected to augment the keysym set
+(using the vendor-specific encoding space) to include all of their unique keys
+that were not included in the standard set.
+Each vendor decides which of its keys map into the standard keysyms,
+which presumably can be overridden by a user.
+It is more difficult to implement this approach,
+because judgment is required about when a sufficient set
+of keyboards implements an engraving to justify making it a keysym in the
+standard set and about which engravings should be merged into a single keysym.
+Under this scheme there are an estimated 100\-150 keysyms.
+.LP
+Although neither scheme is perfect or elegant,
+the Common approach has been selected because it makes it easier to write
+a portable application.
+Having the Delete functionality merged into a single keysym allows
+an application to implement a deletion function and expect reasonable bindings
+on a wide set of workstations.
+Under the Common approach,
+application writers are still free to look for and interpret vendor-specific
+keysyms, but because they are in the extended set,
+the application developer is more conscious that they are writing
+the application in a nonportable fashion.
+.LP
+In the listings below,
+Code Pos is a representation of byte 4 of the KEYSYM value,
+expressed as most-significant/least-significant 4-bit values.
+The Code Pos numbers are for reference only
+and do not affect the KEYSYM value.
+In all cases, the KEYSYM value is:
+.LP
+.DS
+byte3 * 256 + byte4
+.DE
+.ps 9
+.nr PS 9
+.vs 10
+.nr VS 10
+.TS H
+lw(.25i) lw(.25i) lw(.5i) lw(3.75i) lw(.6i).
+_
+.sp 6p
+.B
+Byte Byte Code Name Set
+ 3 4 Pos
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+000 032 02/00 SPACE Latin-1
+000 033 02/01 EXCLAMATION POINT Latin-1
+000 034 02/02 QUOTATION MARK Latin-1
+000 035 02/03 NUMBER SIGN Latin-1
+000 036 02/04 DOLLAR SIGN Latin-1
+000 037 02/05 PERCENT SIGN Latin-1
+000 038 02/06 AMPERSAND Latin-1
+000 039 02/07 APOSTROPHE Latin-1
+000 040 02/08 LEFT PARENTHESIS Latin-1
+000 041 02/09 RIGHT PARENTHESIS Latin-1
+000 042 02/10 ASTERISK Latin-1
+000 043 02/11 PLUS SIGN Latin-1
+000 044 02/12 COMMA Latin-1
+000 045 02/13 MINUS SIGN Latin-1
+000 046 02/14 FULL STOP Latin-1
+000 047 02/15 SOLIDUS Latin-1
+000 048 03/00 DIGIT ZERO Latin-1
+000 049 03/01 DIGIT ONE Latin-1
+000 050 03/02 DIGIT TWO Latin-1
+000 051 03/03 DIGIT THREE Latin-1
+000 052 03/04 DIGIT FOUR Latin-1
+000 053 03/05 DIGIT FIVE Latin-1
+000 054 03/06 DIGIT SIX Latin-1
+000 055 03/07 DIGIT SEVEN Latin-1
+000 056 03/08 DIGIT EIGHT Latin-1
+000 057 03/09 DIGIT NINE Latin-1
+000 058 03/10 COLON Latin-1
+000 059 03/11 SEMICOLON Latin-1
+000 060 03/12 LESS THAN SIGN Latin-1
+000 061 03/13 EQUALS SIGN Latin-1
+000 062 03/14 GREATER THAN SIGN Latin-1
+000 063 03/15 QUESTION MARK Latin-1
+000 064 04/00 COMMERCIAL AT Latin-1
+000 065 04/01 LATIN CAPITAL LETTER A Latin-1
+000 066 04/02 LATIN CAPITAL LETTER B Latin-1
+000 067 04/03 LATIN CAPITAL LETTER C Latin-1
+000 068 04/04 LATIN CAPITAL LETTER D Latin-1
+000 069 04/05 LATIN CAPITAL LETTER E Latin-1
+000 070 04/06 LATIN CAPITAL LETTER F Latin-1
+000 071 04/07 LATIN CAPITAL LETTER G Latin-1
+000 072 04/08 LATIN CAPITAL LETTER H Latin-1
+000 073 04/09 LATIN CAPITAL LETTER I Latin-1
+000 074 04/10 LATIN CAPITAL LETTER J Latin-1
+000 075 04/11 LATIN CAPITAL LETTER K Latin-1
+000 076 04/12 LATIN CAPITAL LETTER L Latin-1
+000 077 04/13 LATIN CAPITAL LETTER M Latin-1
+000 078 04/14 LATIN CAPITAL LETTER N Latin-1
+000 079 04/15 LATIN CAPITAL LETTER O Latin-1
+000 080 05/00 LATIN CAPITAL LETTER P Latin-1
+000 081 05/01 LATIN CAPITAL LETTER Q Latin-1
+000 082 05/02 LATIN CAPITAL LETTER R Latin-1
+000 083 05/03 LATIN CAPITAL LETTER S Latin-1
+000 084 05/04 LATIN CAPITAL LETTER T Latin-1
+000 085 05/05 LATIN CAPITAL LETTER U Latin-1
+000 086 05/06 LATIN CAPITAL LETTER V Latin-1
+000 087 05/07 LATIN CAPITAL LETTER W Latin-1
+000 088 05/08 LATIN CAPITAL LETTER X Latin-1
+000 089 05/09 LATIN CAPITAL LETTER Y Latin-1
+000 090 05/10 LATIN CAPITAL LETTER Z Latin-1
+000 091 05/11 LEFT SQUARE BRACKET Latin-1
+000 092 05/12 REVERSE SOLIDUS Latin-1
+000 093 05/13 RIGHT SQUARE BRACKET Latin-1
+000 094 05/14 CIRCUMFLEX ACCENT Latin-1
+000 095 05/15 LOW LINE Latin-1
+000 096 06/00 GRAVE ACCENT Latin-1
+000 097 06/01 LATIN SMALL LETTER a Latin-1
+000 098 06/02 LATIN SMALL LETTER b Latin-1
+000 099 06/03 LATIN SMALL LETTER c Latin-1
+000 100 06/04 LATIN SMALL LETTER d Latin-1
+000 101 06/05 LATIN SMALL LETTER e Latin-1
+000 102 06/06 LATIN SMALL LETTER f Latin-1
+000 103 06/07 LATIN SMALL LETTER g Latin-1
+000 104 06/08 LATIN SMALL LETTER h Latin-1
+000 105 06/09 LATIN SMALL LETTER i Latin-1
+000 106 06/10 LATIN SMALL LETTER j Latin-1
+000 107 06/11 LATIN SMALL LETTER k Latin-1
+000 108 06/12 LATIN SMALL LETTER l Latin-1
+000 109 06/13 LATIN SMALL LETTER m Latin-1
+000 110 06/14 LATIN SMALL LETTER n Latin-1
+000 111 06/15 LATIN SMALL LETTER o Latin-1
+000 112 07/00 LATIN SMALL LETTER p Latin-1
+000 113 07/01 LATIN SMALL LETTER q Latin-1
+000 114 07/02 LATIN SMALL LETTER r Latin-1
+000 115 07/03 LATIN SMALL LETTER s Latin-1
+000 116 07/04 LATIN SMALL LETTER t Latin-1
+000 117 07/05 LATIN SMALL LETTER u Latin-1
+000 118 07/06 LATIN SMALL LETTER v Latin-1
+000 119 07/07 LATIN SMALL LETTER w Latin-1
+000 120 07/08 LATIN SMALL LETTER x Latin-1
+000 121 07/09 LATIN SMALL LETTER y Latin-1
+000 122 07/10 LATIN SMALL LETTER z Latin-1
+000 123 07/11 LEFT CURLY BRACKET Latin-1
+000 124 07/12 VERTICAL LINE Latin-1
+000 125 07/13 RIGHT CURLY BRACKET Latin-1
+000 126 07/14 TILDE Latin-1
+000 160 10/00 NO-BREAK SPACE Latin-1
+000 161 10/01 INVERTED EXCLAMATION MARK Latin-1
+000 162 10/02 CENT SIGN Latin-1
+000 163 10/03 POUND SIGN Latin-1
+000 164 10/04 CURRENCY SIGN Latin-1
+000 165 10/05 YEN SIGN Latin-1
+000 166 10/06 BROKEN VERTICAL BAR Latin-1
+000 167 10/07 SECTION SIGN Latin-1
+000 168 10/08 DIAERESIS Latin-1
+000 169 10/09 COPYRIGHT SIGN Latin-1
+000 170 10/10 FEMININE ORDINAL INDICATOR Latin-1
+000 171 10/11 LEFT ANGLE QUOTATION MARK Latin-1
+000 172 10/12 NOT SIGN Latin-1
+000 173 10/13 HYPHEN Latin-1
+000 174 10/14 REGISTERED TRADEMARK SIGN Latin-1
+000 175 10/15 MACRON Latin-1
+000 176 11/00 DEGREE SIGN, RING ABOVE Latin-1
+000 177 11/01 PLUS-MINUS SIGN Latin-1
+000 178 11/02 SUPERSCRIPT TWO Latin-1
+000 179 11/03 SUPERSCRIPT THREE Latin-1
+000 180 11/04 ACUTE ACCENT Latin-1
+000 181 11/05 MICRO SIGN Latin-1
+000 182 11/06 PARAGRAPH SIGN Latin-1
+000 183 11/07 MIDDLE DOT Latin-1
+000 184 11/08 CEDILLA Latin-1
+000 185 11/09 SUPERSCRIPT ONE Latin-1
+000 186 11/10 MASCULINE ORDINAL INDICATOR Latin-1
+000 187 11/11 RIGHT ANGLE QUOTATION MARK Latin-1
+000 188 11/12 VULGAR FRACTION ONE QUARTER Latin-1
+000 189 11/13 VULGAR FRACTION ONE HALF Latin-1
+000 190 11/14 VULGAR FRACTION THREE QUARTERS Latin-1
+000 191 11/15 INVERTED QUESTION MARK Latin-1
+000 192 12/00 LATIN CAPITAL LETTER A WITH GRAVE ACCENT Latin-1
+000 193 12/01 LATIN CAPITAL LETTER A WITH ACUTE ACCENT Latin-1
+000 194 12/02 LATIN CAPITAL LETTER A WITH CIRCUMFLEX ACCENT Latin-1
+000 195 12/03 LATIN CAPITAL LETTER A WITH TILDE Latin-1
+000 196 12/04 LATIN CAPITAL LETTER A WITH DIAERESIS Latin-1
+000 197 12/05 LATIN CAPITAL LETTER A WITH RING ABOVE Latin-1
+000 198 12/06 LATIN CAPITAL DIPHTHONG AE Latin-1
+000 199 12/07 LATIN CAPITAL LETTER C WITH CEDILLA Latin-1
+000 200 12/08 LATIN CAPITAL LETTER E WITH GRAVE ACCENT Latin-1
+000 201 12/09 LATIN CAPITAL LETTER E WITH ACUTE ACCENT Latin-1
+000 202 12/10 LATIN CAPITAL LETTER E WITH CIRCUMFLEX ACCENT Latin-1
+000 203 12/11 LATIN CAPITAL LETTER E WITH DIAERESIS Latin-1
+000 204 12/12 LATIN CAPITAL LETTER I WITH GRAVE ACCENT Latin-1
+000 205 12/13 LATIN CAPITAL LETTER I WITH ACUTE ACCENT Latin-1
+000 206 12/14 LATIN CAPITAL LETTER I WITH CIRCUMFLEX ACCENT Latin-1
+000 207 12/15 LATIN CAPITAL LETTER I WITH DIAERESIS Latin-1
+000 208 13/00 ICELANDIC CAPITAL LETTER ETH Latin-1
+000 209 13/01 LATIN CAPITAL LETTER N WITH TILDE Latin-1
+000 210 13/02 LATIN CAPITAL LETTER O WITH GRAVE ACCENT Latin-1
+000 211 13/03 LATIN CAPITAL LETTER O WITH ACUTE ACCENT Latin-1
+000 212 13/04 LATIN CAPITAL LETTER O WITH CIRCUMFLEX ACCENT Latin-1
+000 213 13/05 LATIN CAPITAL LETTER O WITH TILDE Latin-1
+000 214 13/06 LATIN CAPITAL LETTER O WITH DIAERESIS Latin-1
+000 215 13/07 MULTIPLICATION SIGN Latin-1
+000 216 13/08 LATIN CAPITAL LETTER O WITH OBLIQUE STROKE Latin-1
+000 217 13/09 LATIN CAPITAL LETTER U WITH GRAVE ACCENT Latin-1
+000 218 13/10 LATIN CAPITAL LETTER U WITH ACUTE ACCENT Latin-1
+000 219 13/11 LATIN CAPITAL LETTER U WITH CIRCUMFLEX ACCENT Latin-1
+000 220 13/12 LATIN CAPITAL LETTER U WITH DIAERESIS Latin-1
+000 221 13/13 LATIN CAPITAL LETTER Y WITH ACUTE ACCENT Latin-1
+000 222 13/14 ICELANDIC CAPITAL LETTER THORN Latin-1
+000 223 13/15 GERMAN SMALL LETTER SHARP s Latin-1
+000 224 14/00 LATIN SMALL LETTER a WITH GRAVE ACCENT Latin-1
+000 225 14/01 LATIN SMALL LETTER a WITH ACUTE ACCENT Latin-1
+000 226 14/02 LATIN SMALL LETTER a WITH CIRCUMFLEX ACCENT Latin-1
+000 227 14/03 LATIN SMALL LETTER a WITH TILDE Latin-1
+000 228 14/04 LATIN SMALL LETTER a WITH DIAERESIS Latin-1
+000 229 14/05 LATIN SMALL LETTER a WITH RING ABOVE Latin-1
+000 230 14/06 LATIN SMALL DIPHTHONG ae Latin-1
+000 231 14/07 LATIN SMALL LETTER c WITH CEDILLA Latin-1
+000 232 14/08 LATIN SMALL LETTER e WITH GRAVE ACCENT Latin-1
+000 233 14/09 LATIN SMALL LETTER e WITH ACUTE ACCENT Latin-1
+000 234 14/10 LATIN SMALL LETTER e WITH CIRCUMFLEX ACCENT Latin-1
+000 235 14/11 LATIN SMALL LETTER e WITH DIAERESIS Latin-1
+000 236 14/12 LATIN SMALL LETTER i WITH GRAVE ACCENT Latin-1
+000 237 14/13 LATIN SMALL LETTER i WITH ACUTE ACCENT Latin-1
+000 238 14/14 LATIN SMALL LETTER i WITH CIRCUMFLEX ACCENT Latin-1
+000 239 14/15 LATIN SMALL LETTER i WITH DIAERESIS Latin-1
+000 240 15/00 ICELANDIC SMALL LETTER ETH Latin-1
+000 241 15/01 LATIN SMALL LETTER n WITH TILDE Latin-1
+000 242 15/02 LATIN SMALL LETTER o WITH GRAVE ACCENT Latin-1
+000 243 15/03 LATIN SMALL LETTER o WITH ACUTE ACCENT Latin-1
+000 244 15/04 LATIN SMALL LETTER o WITH CIRCUMFLEX ACCENT Latin-1
+000 245 15/05 LATIN SMALL LETTER o WITH TILDE Latin-1
+000 246 15/06 LATIN SMALL LETTER o WITH DIAERESIS Latin-1
+000 247 15/07 DIVISION SIGN Latin-1
+000 248 15/08 LATIN SMALL LETTER o WITH OBLIQUE STROKE Latin-1
+000 249 15/09 LATIN SMALL LETTER u WITH GRAVE ACCENT Latin-1
+000 250 15/10 LATIN SMALL LETTER u WITH ACUTE ACCENT Latin-1
+000 251 15/11 LATIN SMALL LETTER u WITH CIRCUMFLEX ACCENT Latin-1
+000 252 15/12 LATIN SMALL LETTER u WITH DIAERESIS Latin-1
+000 253 15/13 LATIN SMALL LETTER y WITH ACUTE ACCENT Latin-1
+000 254 15/14 ICELANDIC SMALL LETTER THORN Latin-1
+000 255 15/15 LATIN SMALL LETTER y WITH DIAERESIS Latin-1
+.sp 2
+001 161 10/01 LATIN CAPITAL LETTER A WITH OGONEK Latin-2
+001 162 10/02 BREVE Latin-2
+001 163 10/03 LATIN CAPITAL LETTER L WITH STROKE Latin-2
+001 165 10/05 LATIN CAPITAL LETTER L WITH CARON Latin-2
+001 166 10/06 LATIN CAPITAL LETTER S WITH ACUTE ACCENT Latin-2
+001 169 10/09 LATIN CAPITAL LETTER S WITH CARON Latin-2
+001 170 10/10 LATIN CAPITAL LETTER S WITH CEDILLA Latin-2
+001 171 10/11 LATIN CAPITAL LETTER T WITH CARON Latin-2
+001 172 10/12 LATIN CAPITAL LETTER Z WITH ACUTE ACCENT Latin-2
+001 174 10/14 LATIN CAPITAL LETTER Z WITH CARON Latin-2
+001 175 10/15 LATIN CAPITAL LETTER Z WITH DOT ABOVE Latin-2
+001 177 11/01 LATIN SMALL LETTER a WITH OGONEK Latin-2
+001 178 11/02 OGONEK Latin-2
+001 179 11/03 LATIN SMALL LETTER l WITH STROKE Latin-2
+001 181 11/05 LATIN SMALL LETTER l WITH CARON Latin-2
+001 182 11/06 LATIN SMALL LETTER s WITH ACUTE ACCENT Latin-2
+001 183 11/07 CARON Latin-2
+001 185 11/09 LATIN SMALL LETTER s WITH CARON Latin-2
+001 186 11/10 LATIN SMALL LETTER s WITH CEDILLA Latin-2
+001 187 11/11 LATIN SMALL LETTER t WITH CARON Latin-2
+001 188 11/12 LATIN SMALL LETTER z WITH ACUTE ACCENT Latin-2
+001 189 11/13 DOUBLE ACUTE ACCENT Latin-2
+001 190 11/14 LATIN SMALL LETTER z WITH CARON Latin-2
+001 191 11/15 LATIN SMALL LETTER z WITH DOT ABOVE Latin-2
+001 192 12/00 LATIN CAPITAL LETTER R WITH ACUTE ACCENT Latin-2
+001 195 12/03 LATIN CAPITAL LETTER A WITH BREVE Latin-2
+001 197 12/05 LATIN CAPITAL LETTER L WITH ACUTE ACCENT Latin-2
+001 198 12/06 LATIN CAPITAL LETTER C WITH ACUTE ACCENT Latin-2
+001 200 12/08 LATIN CAPITAL LETTER C WITH CARON Latin-2
+001 202 12/10 LATIN CAPITAL LETTER E WITH OGONEK Latin-2
+001 204 12/12 LATIN CAPITAL LETTER E WITH CARON Latin-2
+001 207 12/15 LATIN CAPITAL LETTER D WITH CARON Latin-2
+001 208 13/00 LATIN CAPITAL LETTER D WITH STROKE Latin-2
+001 209 13/01 LATIN CAPITAL LETTER N WITH ACUTE ACCENT Latin-2
+001 210 13/02 LATIN CAPITAL LETTER N WITH CARON Latin-2
+001 213 13/05 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE ACCENT Latin-2
+001 216 13/08 LATIN CAPITAL LETTER R WITH CARON Latin-2
+001 217 13/09 LATIN CAPITAL LETTER U WITH RING ABOVE Latin-2
+001 219 13/11 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE ACCENT Latin-2
+001 222 13/14 LATIN CAPITAL LETTER T WITH CEDILLA Latin-2
+001 224 14/00 LATIN SMALL LETTER r WITH ACUTE ACCENT Latin-2
+001 227 14/03 LATIN SMALL LETTER a WITH BREVE Latin-2
+001 229 14/05 LATIN SMALL LETTER l WITH ACUTE ACCENT Latin-2
+001 230 14/06 LATIN SMALL LETTER c WITH ACUTE ACCENT Latin-2
+001 232 14/08 LATIN SMALL LETTER c WITH CARON Latin-2
+001 234 14/10 LATIN SMALL LETTER e WITH OGONEK Latin-2
+001 236 14/12 LATIN SMALL LETTER e WITH CARON Latin-2
+001 239 14/15 LATIN SMALL LETTER d WITH CARON Latin-2
+001 240 15/00 LATIN SMALL LETTER d WITH STROKE Latin-2
+001 241 15/01 LATIN SMALL LETTER n WITH ACUTE ACCENT Latin-2
+001 242 15/02 LATIN SMALL LETTER n WITH CARON Latin-2
+001 245 15/05 LATIN SMALL LETTER o WITH DOUBLE ACUTE ACCENT Latin-2
+001 248 15/08 LATIN SMALL LETTER r WITH CARON Latin-2
+001 249 15/09 LATIN SMALL LETTER u WITH RING ABOVE Latin-2
+001 251 15/11 LATIN SMALL LETTER u WITH DOUBLE ACUTE ACCENT Latin-2
+001 254 15/14 LATIN SMALL LETTER t WITH CEDILLA Latin-2
+001 255 15/15 DOT ABOVE Latin-2
+.sp 2
+002 161 10/01 LATIN CAPITAL LETTER H WITH STROKE Latin-3
+002 166 10/06 LATIN CAPITAL LETTER H WITH CIRCUMFLEX ACCENT Latin-3
+002 169 10/09 LATIN CAPITAL LETTER I WITH DOT ABOVE Latin-3
+002 171 10/11 LATIN CAPITAL LETTER G WITH BREVE Latin-3
+002 172 10/12 LATIN CAPITAL LETTER J WITH CIRCUMFLEX ACCENT Latin-3
+002 177 11/01 LATIN SMALL LETTER h WITH STROKE Latin-3
+002 182 11/06 LATIN SMALL LETTER h WITH CIRCUMFLEX ACCENT Latin-3
+002 185 11/09 SMALL DOTLESS LETTER i Latin-3
+002 187 11/11 LATIN SMALL LETTER g WITH BREVE Latin-3
+002 188 11/12 LATIN SMALL LETTER j WITH CIRCUMFLEX ACCENT Latin-3
+002 197 12/05 LATIN CAPITAL LETTER C WITH DOT ABOVE Latin-3
+002 198 12/06 LATIN CAPITAL LETTER C WITH CIRCUMFLEX ACCENT Latin-3
+002 213 13/05 LATIN CAPITAL LETTER G WITH DOT ABOVE Latin-3
+002 216 13/08 LATIN CAPITAL LETTER G WITH CIRCUMFLEX ACCENT Latin-3
+002 221 13/13 LATIN CAPITAL LETTER U WITH BREVE Latin-3
+002 222 13/14 LATIN CAPITAL LETTER S WITH CIRCUMFLEX ACCENT Latin-3
+002 229 14/05 LATIN SMALL LETTER c WITH DOT ABOVE Latin-3
+002 230 14/06 LATIN SMALL LETTER c WITH CIRCUMFLEX ACCENT Latin-3
+002 245 15/05 LATIN SMALL LETTER g WITH DOT ABOVE Latin-3
+002 248 15/08 LATIN SMALL LETTER g WITH CIRCUMFLEX ACCENT Latin-3
+002 253 15/13 LATIN SMALL LETTER u WITH BREVE Latin-3
+002 254 15/14 LATIN SMALL LETTER s WITH CIRCUMFLEX ACCENT Latin-3
+.sp 2
+003 162 10/02 SMALL GREENLANDIC LETTER KRA Latin-4
+003 163 10/03 LATIN CAPITAL LETTER R WITH CEDILLA Latin-4
+003 165 10/05 LATIN CAPITAL LETTER I WITH TILDE Latin-4
+003 166 10/06 LATIN CAPITAL LETTER L WITH CEDILLA Latin-4
+003 170 10/10 LATIN CAPITAL LETTER E WITH MACRON Latin-4
+003 171 10/11 LATIN CAPITAL LETTER G WITH CEDILLA Latin-4
+003 172 10/12 LATIN CAPITAL LETTER T WITH OBLIQUE STROKE Latin-4
+003 179 11/03 LATIN SMALL LETTER r WITH CEDILLA Latin-4
+003 181 11/05 LATIN SMALL LETTER i WITH TILDE Latin-4
+003 182 11/06 LATIN SMALL LETTER l WITH CEDILLA Latin-4
+003 186 11/10 LATIN SMALL LETTER e WITH MACRON Latin-4
+003 187 11/11 LATIN SMALL LETTER g WITH CEDILLA ABOVE Latin-4
+003 188 11/12 LATIN SMALL LETTER t WITH OBLIQUE STROKE Latin-4
+003 189 11/13 LAPPISH CAPITAL LETTER ENG Latin-4
+003 191 11/15 LAPPISH SMALL LETTER ENG Latin-4
+003 192 12/00 LATIN CAPITAL LETTER A WITH MACRON Latin-4
+003 199 12/07 LATIN CAPITAL LETTER I WITH OGONEK Latin-4
+003 204 12/12 LATIN CAPITAL LETTER E WITH DOT ABOVE Latin-4
+003 207 12/15 LATIN CAPITAL LETTER I WITH MACRON Latin-4
+003 209 13/01 LATIN CAPITAL LETTER N WITH CEDILLA Latin-4
+003 210 13/02 LATIN CAPITAL LETTER O WITH MACRON Latin-4
+003 211 13/03 LATIN CAPITAL LETTER K WITH CEDILLA Latin-4
+003 217 13/09 LATIN CAPITAL LETTER U WITH OGONEK Latin-4
+003 221 13/13 LATIN CAPITAL LETTER U WITH TILDE Latin-4
+003 222 13/14 LATIN CAPITAL LETTER U WITH MACRON Latin-4
+003 224 14/00 LATIN SMALL LETTER a WITH MACRON Latin-4
+003 231 14/07 LATIN SMALL LETTER i WITH OGONEK Latin-4
+003 236 14/12 LATIN SMALL LETTER e WITH DOT ABOVE Latin-4
+003 239 14/15 LATIN SMALL LETTER i WITH MACRON Latin-4
+003 241 15/01 LATIN SMALL LETTER n WITH CEDILLA Latin-4
+003 242 15/02 LATIN SMALL LETTER o WITH MACRON Latin-4
+003 243 15/03 LATIN SMALL LETTER k WITH CEDILLA Latin-4
+003 249 15/09 LATIN SMALL LETTER u WITH OGONEK Latin-4
+003 253 15/13 LATIN SMALL LETTER u WITH TILDE Latin-4
+003 254 15/14 LATIN SMALL LETTER u WITH MACRON Latin-4
+.sp 2
+004 126 07/14 OVERLINE Kana
+004 161 10/01 KANA FULL STOP Kana
+004 162 10/02 KANA OPENING BRACKET Kana
+004 163 10/03 KANA CLOSING BRACKET Kana
+004 164 10/04 KANA COMMA Kana
+004 165 10/05 KANA CONJUNCTIVE Kana
+004 166 10/06 KANA LETTER WO Kana
+004 167 10/07 KANA LETTER SMALL A Kana
+004 168 10/08 KANA LETTER SMALL I Kana
+004 169 10/09 KANA LETTER SMALL U Kana
+004 170 10/10 KANA LETTER SMALL E Kana
+004 171 10/11 KANA LETTER SMALL O Kana
+004 172 10/12 KANA LETTER SMALL YA Kana
+004 173 10/13 KANA LETTER SMALL YU Kana
+004 174 10/14 KANA LETTER SMALL YO Kana
+004 175 10/15 KANA LETTER SMALL TSU Kana
+004 176 11/00 PROLONGED SOUND SYMBOL Kana
+004 177 11/01 KANA LETTER A Kana
+004 178 11/02 KANA LETTER I Kana
+004 179 11/03 KANA LETTER U Kana
+004 180 11/04 KANA LETTER E Kana
+004 181 11/05 KANA LETTER O Kana
+004 182 11/06 KANA LETTER KA Kana
+004 183 11/07 KANA LETTER KI Kana
+004 184 11/08 KANA LETTER KU Kana
+004 185 11/09 KANA LETTER KE Kana
+004 186 11/10 KANA LETTER KO Kana
+004 187 11/11 KANA LETTER SA Kana
+004 188 11/12 KANA LETTER SHI Kana
+004 189 11/13 KANA LETTER SU Kana
+004 190 11/14 KANA LETTER SE Kana
+004 191 11/15 KANA LETTER SO Kana
+004 192 12/00 KANA LETTER TA Kana
+004 193 12/01 KANA LETTER CHI Kana
+004 194 12/02 KANA LETTER TSU Kana
+004 195 12/03 KANA LETTER TE Kana
+004 196 12/04 KANA LETTER TO Kana
+004 197 12/05 KANA LETTER NA Kana
+004 198 12/06 KANA LETTER NI Kana
+004 199 12/07 KANA LETTER NU Kana
+004 200 12/08 KANA LETTER NE Kana
+004 201 12/09 KANA LETTER NO Kana
+004 202 12/10 KANA LETTER HA Kana
+004 203 12/11 KANA LETTER HI Kana
+004 204 12/12 KANA LETTER FU Kana
+004 205 12/13 KANA LETTER HE Kana
+004 206 12/14 KANA LETTER HO Kana
+004 207 12/15 KANA LETTER MA Kana
+004 208 13/00 KANA LETTER MI Kana
+004 209 13/01 KANA LETTER MU Kana
+004 210 13/02 KANA LETTER ME Kana
+004 211 13/03 KANA LETTER MO Kana
+004 212 13/04 KANA LETTER YA Kana
+004 213 13/05 KANA LETTER YU Kana
+004 214 13/06 KANA LETTER YO Kana
+004 215 13/07 KANA LETTER RA Kana
+004 216 13/08 KANA LETTER RI Kana
+004 217 13/09 KANA LETTER RU Kana
+004 218 13/10 KANA LETTER RE Kana
+004 219 13/11 KANA LETTER RO Kana
+004 220 13/12 KANA LETTER WA Kana
+004 221 13/13 KANA LETTER N Kana
+004 222 13/14 VOICED SOUND SYMBOL Kana
+004 223 13/15 SEMIVOICED SOUND SYMBOL Kana
+.sp 2
+005 172 10/12 ARABIC COMMA Arabic
+005 187 11/11 ARABIC SEMICOLON Arabic
+005 191 11/15 ARABIC QUESTION MARK Arabic
+005 193 12/01 ARABIC LETTER HAMZA Arabic
+005 194 12/02 ARABIC LETTER MADDA ON ALEF Arabic
+005 195 12/03 ARABIC LETTER HAMZA ON ALEF Arabic
+005 196 12/04 ARABIC LETTER HAMZA ON WAW Arabic
+005 197 12/05 ARABIC LETTER HAMZA UNDER ALEF Arabic
+005 198 12/06 ARABIC LETTER HAMZA ON YEH Arabic
+005 199 12/07 ARABIC LETTER ALEF Arabic
+005 200 12/08 ARABIC LETTER BEH Arabic
+005 201 12/09 ARABIC LETTER TEH MARBUTA Arabic
+005 202 12/10 ARABIC LETTER TEH Arabic
+005 203 12/11 ARABIC LETTER THEH Arabic
+005 204 12/12 ARABIC LETTER JEEM Arabic
+005 205 12/13 ARABIC LETTER HAH Arabic
+005 206 12/14 ARABIC LETTER KHAH Arabic
+005 207 12/15 ARABIC LETTER DAL Arabic
+005 208 13/00 ARABIC LETTER THAL Arabic
+005 209 13/01 ARABIC LETTER RA Arabic
+005 210 13/02 ARABIC LETTER ZAIN Arabic
+005 211 13/03 ARABIC LETTER SEEN Arabic
+005 212 13/04 ARABIC LETTER SHEEN Arabic
+005 213 13/05 ARABIC LETTER SAD Arabic
+005 214 13/06 ARABIC LETTER DAD Arabic
+005 215 13/07 ARABIC LETTER TAH Arabic
+005 216 13/08 ARABIC LETTER ZAH Arabic
+005 217 13/09 ARABIC LETTER AIN Arabic
+005 218 13/10 ARABIC LETTER GHAIN Arabic
+005 224 14/00 ARABIC LETTER TATWEEL Arabic
+005 225 14/01 ARABIC LETTER FEH Arabic
+005 226 14/02 ARABIC LETTER QAF Arabic
+005 227 14/03 ARABIC LETTER KAF Arabic
+005 228 14/04 ARABIC LETTER LAM Arabic
+005 229 14/05 ARABIC LETTER MEEM Arabic
+005 230 14/06 ARABIC LETTER NOON Arabic
+005 231 14/07 ARABIC LETTER HA Arabic
+005 232 14/08 ARABIC LETTER WAW Arabic
+005 233 14/09 ARABIC LETTER ALEF MAKSURA Arabic
+005 234 14/10 ARABIC LETTER YEH Arabic
+005 235 14/11 ARABIC LETTER FATHATAN Arabic
+005 236 14/12 ARABIC LETTER DAMMATAN Arabic
+005 237 14/13 ARABIC LETTER KASRATAN Arabic
+005 238 14/14 ARABIC LETTER FATHA Arabic
+005 239 14/15 ARABIC LETTER DAMMA Arabic
+005 240 15/00 ARABIC LETTER KASRA Arabic
+005 241 15/01 ARABIC LETTER SHADDA Arabic
+005 242 15/02 ARABIC LETTER SUKUN Arabic
+.sp 2
+006 161 10/01 SERBOCROATION CYRILLIC SMALL LETTER DJE Cyrillic
+006 162 10/02 MACEDONIAN CYRILLIC SMALL LETTER GJE Cyrillic
+006 163 10/03 CYRILLIC SMALL LETTER IO Cyrillic
+006 164 10/04 UKRAINIAN CYRILLIC SMALL LETTER IE Cyrillic
+006 165 10/05 MACEDONIAN SMALL LETTER DSE Cyrillic
+006 166 10/06 BYELORUSSIAN/UKRAINIAN CYRILLIC SMALL LETTER I Cyrillic
+006 167 10/07 UKRAINIAN SMALL LETTER YI Cyrillic
+006 168 10/08 CYRILLIC SMALL LETTER JE Cyrillic
+006 169 10/09 CYRILLIC SMALL LETTER LJE Cyrillic
+006 170 10/10 CYRILLIC SMALL LETTER NJE Cyrillic
+006 171 10/11 SERBIAN SMALL LETTER TSHE Cyrillic
+006 172 10/12 MACEDONIAN CYRILLIC SMALL LETTER KJE Cyrillic
+006 174 10/14 BYELORUSSIAN SMALL LETTER SHORT U Cyrillic
+006 175 10/15 CYRILLIC SMALL LETTER DZHE Cyrillic
+006 176 11/00 NUMERO SIGN Cyrillic
+006 177 11/01 SERBOCROATIAN CYRILLIC CAPITAL LETTER DJE Cyrillic
+006 178 11/02 MACEDONIAN CYRILLIC CAPITAL LETTER GJE Cyrillic
+006 179 11/03 CYRILLIC CAPITAL LETTER IO Cyrillic
+006 180 11/04 UKRAINIAN CYRILLIC CAPITAL LETTER IE Cyrillic
+006 181 11/05 MACEDONIAN CAPITAL LETTER DSE Cyrillic
+006 182 11/06 BYELORUSSIAN/UKRAINIAN CYRILLIC CAPITAL LETTER I Cyrillic
+006 183 11/07 UKRAINIAN CAPITAL LETTER YI Cyrillic
+006 184 11/08 CYRILLIC CAPITAL LETTER JE Cyrillic
+006 185 11/09 CYRILLIC CAPITAL LETTER LJE Cyrillic
+006 186 11/10 CYRILLIC CAPITAL LETTER NJE Cyrillic
+006 187 11/11 SERBIAN CAPITAL LETTER TSHE Cyrillic
+006 188 11/12 MACEDONIAN CYRILLIC CAPITAL LETTER KJE Cyrillic
+006 190 11/14 BYELORUSSIAN CAPITAL LETTER SHORT U Cyrillic
+006 191 11/15 CYRILLIC CAPITAL LETTER DZHE Cyrillic
+006 192 12/00 CYRILLIC SMALL LETTER YU Cyrillic
+006 193 12/01 CYRILLIC SMALL LETTER A Cyrillic
+006 194 12/02 CYRILLIC SMALL LETTER BE Cyrillic
+006 195 12/03 CYRILLIC SMALL LETTER TSE Cyrillic
+006 196 12/04 CYRILLIC SMALL LETTER DE Cyrillic
+006 197 12/05 CYRILLIC SMALL LETTER IE Cyrillic
+006 198 12/06 CYRILLIC SMALL LETTER EF Cyrillic
+006 199 12/07 CYRILLIC SMALL LETTER GHE Cyrillic
+006 200 12/08 CYRILLIC SMALL LETTER HA Cyrillic
+006 201 12/09 CYRILLIC SMALL LETTER I Cyrillic
+006 202 12/10 CYRILLIC SMALL LETTER SHORT I Cyrillic
+006 203 12/11 CYRILLIC SMALL LETTER KA Cyrillic
+006 204 12/12 CYRILLIC SMALL LETTER EL Cyrillic
+006 205 12/13 CYRILLIC SMALL LETTER EM Cyrillic
+006 206 12/14 CYRILLIC SMALL LETTER EN Cyrillic
+006 207 12/15 CYRILLIC SMALL LETTER O Cyrillic
+006 208 13/00 CYRILLIC SMALL LETTER PE Cyrillic
+006 209 13/01 CYRILLIC SMALL LETTER YA Cyrillic
+006 210 13/02 CYRILLIC SMALL LETTER ER Cyrillic
+006 211 13/03 CYRILLIC SMALL LETTER ES Cyrillic
+006 212 13/04 CYRILLIC SMALL LETTER TE Cyrillic
+006 213 13/05 CYRILLIC SMALL LETTER U Cyrillic
+006 214 13/06 CYRILLIC SMALL LETTER ZHE Cyrillic
+006 215 13/07 CYRILLIC SMALL LETTER VE Cyrillic
+006 216 13/08 CYRILLIC SMALL SOFT SIGN Cyrillic
+006 217 13/09 CYRILLIC SMALL LETTER YERU Cyrillic
+006 218 13/10 CYRILLIC SMALL LETTER ZE Cyrillic
+006 219 13/11 CYRILLIC SMALL LETTER SHA Cyrillic
+006 220 13/12 CYRILLIC SMALL LETTER E Cyrillic
+006 221 13/13 CYRILLIC SMALL LETTER SHCHA Cyrillic
+006 222 13/14 CYRILLIC SMALL LETTER CHE Cyrillic
+006 223 13/15 CYRILLIC SMALL HARD SIGN Cyrillic
+006 224 14/00 CYRILLIC CAPITAL LETTER YU Cyrillic
+006 225 14/01 CYRILLIC CAPITAL LETTER A Cyrillic
+006 226 14/02 CYRILLIC CAPITAL LETTER BE Cyrillic
+006 227 14/03 CYRILLIC CAPITAL LETTER TSE Cyrillic
+006 228 14/04 CYRILLIC CAPITAL LETTER DE Cyrillic
+006 229 14/05 CYRILLIC CAPITAL LETTER IE Cyrillic
+006 230 14/06 CYRILLIC CAPITAL LETTER EF Cyrillic
+006 231 14/07 CYRILLIC CAPITAL LETTER GHE Cyrillic
+006 232 14/08 CYRILLIC CAPITAL LETTER HA Cyrillic
+006 233 14/09 CYRILLIC CAPITAL LETTER I Cyrillic
+006 234 14/10 CYRILLIC CAPITAL LETTER SHORT I Cyrillic
+006 235 14/11 CYRILLIC CAPITAL LETTER KA Cyrillic
+006 236 14/12 CYRILLIC CAPITAL LETTER EL Cyrillic
+006 237 14/13 CYRILLIC CAPITAL LETTER EM Cyrillic
+006 238 14/14 CYRILLIC CAPITAL LETTER EN Cyrillic
+006 239 14/15 CYRILLIC CAPITAL LETTER O Cyrillic
+006 240 15/00 CYRILLIC CAPITAL LETTER PE Cyrillic
+006 241 15/01 CYRILLIC CAPITAL LETTER YA Cyrillic
+006 242 15/02 CYRILLIC CAPITAL LETTER ER Cyrillic
+006 243 15/03 CYRILLIC CAPITAL LETTER ES Cyrillic
+006 244 15/04 CYRILLIC CAPITAL LETTER TE Cyrillic
+006 245 15/05 CYRILLIC CAPITAL LETTER U Cyrillic
+006 246 15/06 CYRILLIC CAPITAL LETTER ZHE Cyrillic
+006 247 15/07 CYRILLIC CAPITAL LETTER VE Cyrillic
+006 248 15/08 CYRILLIC CAPITAL SOFT SIGN Cyrillic
+006 249 15/09 CYRILLIC CAPITAL LETTER YERU Cyrillic
+006 250 15/10 CYRILLIC CAPITAL LETTER ZE Cyrillic
+006 251 15/11 CYRILLIC CAPITAL LETTER SHA Cyrillic
+006 252 15/12 CYRILLIC CAPITAL LETTER E Cyrillic
+006 253 15/13 CYRILLIC CAPITAL LETTER SHCHA Cyrillic
+006 254 15/14 CYRILLIC CAPITAL LETTER CHE Cyrillic
+006 255 15/15 CYRILLIC CAPITAL HARD SIGN Cyrillic
+.sp 2
+007 161 10/01 GREEK CAPITAL LETTER ALPHA WITH ACCENT Greek
+007 162 10/02 GREEK CAPITAL LETTER EPSILON WITH ACCENT Greek
+007 163 10/03 GREEK CAPITAL LETTER ETA WITH ACCENT Greek
+007 164 10/04 GREEK CAPITAL LETTER IOTA WITH ACCENT Greek
+007 165 10/05 GREEK CAPITAL LETTER IOTA WITH DIAERESIS Greek
+007 167 10/07 GREEK CAPITAL LETTER OMICRON WITH ACCENT Greek
+007 168 10/08 GREEK CAPITAL LETTER UPSILON WITH ACCENT Greek
+007 169 10/09 GREEK CAPITAL LETTER UPSILON WITH DIAERESIS Greek
+007 171 10/11 GREEK CAPITAL LETTER OMEGA WITH ACCENT Greek
+007 174 10/14 DIAERESIS AND ACCENT Greek
+007 175 10/15 HORIZONTAL BAR Greek
+007 177 11/01 GREEK SMALL LETTER ALPHA WITH ACCENT Greek
+007 178 11/02 GREEK SMALL LETTER EPSILON WITH ACCENT Greek
+007 179 11/03 GREEK SMALL LETTER ETA WITH ACCENT Greek
+007 180 11/04 GREEK SMALL LETTER IOTA WITH ACCENT Greek
+007 181 11/05 GREEK SMALL LETTER IOTA WITH DIAERESIS Greek
+007 182 11/06 GREEK SMALL LETTER IOTA WITH ACCENT+DIAERESIS Greek
+007 183 11/07 GREEK SMALL LETTER OMICRON WITH ACCENT Greek
+007 184 11/08 GREEK SMALL LETTER UPSILON WITH ACCENT Greek
+007 185 11/09 GREEK SMALL LETTER UPSILON WITH DIAERESIS Greek
+007 186 11/10 GREEK SMALL LETTER UPSILON WITH ACCENT+DIAERESIS Greek
+007 187 11/11 GREEK SMALL LETTER OMEGA WITH ACCENT Greek
+007 193 12/01 GREEK CAPITAL LETTER ALPHA Greek
+007 194 12/02 GREEK CAPITAL LETTER BETA Greek
+007 195 12/03 GREEK CAPITAL LETTER GAMMA Greek
+007 196 12/04 GREEK CAPITAL LETTER DELTA Greek
+007 197 12/05 GREEK CAPITAL LETTER EPSILON Greek
+007 198 12/06 GREEK CAPITAL LETTER ZETA Greek
+007 199 12/07 GREEK CAPITAL LETTER ETA Greek
+007 200 12/08 GREEK CAPITAL LETTER THETA Greek
+007 201 12/09 GREEK CAPITAL LETTER IOTA Greek
+007 202 12/10 GREEK CAPITAL LETTER KAPPA Greek
+007 203 12/11 GREEK CAPITAL LETTER LAMDA Greek
+007 204 12/12 GREEK CAPITAL LETTER MU Greek
+007 205 12/13 GREEK CAPITAL LETTER NU Greek
+007 206 12/14 GREEK CAPITAL LETTER XI Greek
+007 207 12/15 GREEK CAPITAL LETTER OMICRON Greek
+007 208 13/00 GREEK CAPITAL LETTER PI Greek
+007 209 13/01 GREEK CAPITAL LETTER RHO Greek
+007 210 13/02 GREEK CAPITAL LETTER SIGMA Greek
+007 212 13/04 GREEK CAPITAL LETTER TAU Greek
+007 213 13/05 GREEK CAPITAL LETTER UPSILON Greek
+007 214 13/06 GREEK CAPITAL LETTER PHI Greek
+007 215 13/07 GREEK CAPITAL LETTER CHI Greek
+007 216 13/08 GREEK CAPITAL LETTER PSI Greek
+007 217 13/09 GREEK CAPITAL LETTER OMEGA Greek
+007 225 14/01 GREEK SMALL LETTER ALPHA Greek
+007 226 14/02 GREEK SMALL LETTER BETA Greek
+007 227 14/03 GREEK SMALL LETTER GAMMA Greek
+007 228 14/04 GREEK SMALL LETTER DELTA Greek
+007 229 14/05 GREEK SMALL LETTER EPSILON Greek
+007 230 14/06 GREEK SMALL LETTER ZETA Greek
+007 231 14/07 GREEK SMALL LETTER ETA Greek
+007 232 14/08 GREEK SMALL LETTER THETA Greek
+007 233 14/09 GREEK SMALL LETTER IOTA Greek
+007 234 14/10 GREEK SMALL LETTER KAPPA Greek
+007 235 14/11 GREEK SMALL LETTER LAMDA Greek
+007 236 14/12 GREEK SMALL LETTER MU Greek
+007 237 14/13 GREEK SMALL LETTER NU Greek
+007 238 14/14 GREEK SMALL LETTER XI Greek
+007 239 14/15 GREEK SMALL LETTER OMICRON Greek
+007 240 15/00 GREEK SMALL LETTER PI Greek
+007 241 15/01 GREEK SMALL LETTER RHO Greek
+007 242 15/02 GREEK SMALL LETTER SIGMA Greek
+007 243 15/03 GREEK SMALL LETTER FINAL SMALL SIGMA Greek
+007 244 15/04 GREEK SMALL LETTER TAU Greek
+007 245 15/05 GREEK SMALL LETTER UPSILON Greek
+007 246 15/06 GREEK SMALL LETTER PHI Greek
+007 247 15/07 GREEK SMALL LETTER CHI Greek
+007 248 15/08 GREEK SMALL LETTER PSI Greek
+007 249 15/09 GREEK SMALL LETTER OMEGA Greek
+.sp 2
+008 161 10/01 LEFT RADICAL Technical
+008 162 10/02 TOP LEFT RADICAL Technical
+008 163 10/03 HORIZONTAL CONNECTOR Technical
+008 164 10/04 TOP INTEGRAL Technical
+008 165 10/05 BOTTOM INTEGRAL Technical
+008 166 10/06 VERTICAL CONNECTOR Technical
+008 167 10/07 TOP LEFT SQUARE BRACKET Technical
+008 168 10/08 BOTTOM LEFT SQUARE BRACKET Technical
+008 169 10/09 TOP RIGHT SQUARE BRACKET Technical
+008 170 10/10 BOTTOM RIGHT SQUARE BRACKET Technical
+008 171 10/11 TOP LEFT PARENTHESIS Technical
+008 172 10/12 BOTTOM LEFT PARENTHESIS Technical
+008 173 10/13 TOP RIGHT PARENTHESIS Technical
+008 174 10/14 BOTTOM RIGHT PARENTHESIS Technical
+008 175 10/15 LEFT MIDDLE CURLY BRACE Technical
+008 176 11/00 RIGHT MIDDLE CURLY BRACE Technical
+008 177 11/01 TOP LEFT SUMMATION Technical
+008 178 11/02 BOTTOM LEFT SUMMATION Technical
+008 179 11/03 TOP VERTICAL SUMMATION CONNECTOR Technical
+008 180 11/04 BOTTOM VERTICAL SUMMATION CONNECTOR Technical
+008 181 11/05 TOP RIGHT SUMMATION Technical
+008 182 11/06 BOTTOM RIGHT SUMMATION Technical
+008 183 11/07 RIGHT MIDDLE SUMMATION Technical
+008 188 11/12 LESS THAN OR EQUAL SIGN Technical
+008 189 11/13 NOT EQUAL SIGN Technical
+008 190 11/14 GREATER THAN OR EQUAL SIGN Technical
+008 191 11/15 INTEGRAL Technical
+008 192 12/00 THEREFORE Technical
+008 193 12/01 VARIATION, PROPORTIONAL TO Technical
+008 194 12/02 INFINITY Technical
+008 197 12/05 NABLA, DEL Technical
+008 200 12/08 IS APPROXIMATE TO Technical
+008 201 12/09 SIMILAR OR EQUAL TO Technical
+008 205 12/13 IF AND ONLY IF Technical
+008 206 12/14 IMPLIES Technical
+008 207 12/15 IDENTICAL TO Technical
+008 214 13/06 RADICAL Technical
+008 218 13/10 IS INCLUDED IN Technical
+008 219 13/11 INCLUDES Technical
+008 220 13/12 INTERSECTION Technical
+008 221 13/13 UNION Technical
+008 222 13/14 LOGICAL AND Technical
+008 223 13/15 LOGICAL OR Technical
+008 239 14/15 PARTIAL DERIVATIVE Technical
+008 246 15/06 FUNCTION Technical
+008 251 15/11 LEFT ARROW Technical
+008 252 15/12 UPWARD ARROW Technical
+008 253 15/13 RIGHT ARROW Technical
+008 254 15/14 DOWNWARD ARROW Technical
+.sp 2
+009 223 13/15 BLANK Special
+009 224 14/00 SOLID DIAMOND Special
+009 225 14/01 CHECKERBOARD Special
+009 226 14/02 ``HT'' Special
+009 227 14/03 ``FF'' Special
+009 228 14/04 ``CR'' Special
+009 229 14/05 ``LF'' Special
+009 232 14/08 ``NL'' Special
+009 233 14/09 ``VT'' Special
+009 234 14/10 LOWER-RIGHT CORNER Special
+009 235 14/11 UPPER-RIGHT CORNER Special
+009 236 14/12 UPPER-LEFT CORNER Special
+009 237 14/13 LOWER-LEFT CORNER Special
+009 238 14/14 CROSSING-LINES Special
+009 239 14/15 HORIZONTAL LINE, SCAN 1 Special
+009 240 15/00 HORIZONTAL LINE, SCAN 3 Special
+009 241 15/01 HORIZONTAL LINE, SCAN 5 Special
+009 242 15/02 HORIZONTAL LINE, SCAN 7 Special
+009 243 15/03 HORIZONTAL LINE, SCAN 9 Special
+009 244 15/04 LEFT ``T'' Special
+009 245 15/05 RIGHT ``T'' Special
+009 246 15/06 BOTTOM ``T'' Special
+009 247 15/07 TOP ``T'' Special
+009 248 15/08 VERTICAL BAR Special
+.sp 2
+010 161 10/01 EM SPACE Publish
+010 162 10/02 EN SPACE Publish
+010 163 10/03 3/EM SPACE Publish
+010 164 10/04 4/EM SPACE Publish
+010 165 10/05 DIGIT SPACE Publish
+010 166 10/06 PUNCTUATION SPACE Publish
+010 167 10/07 THIN SPACE Publish
+010 168 10/08 HAIR SPACE Publish
+010 169 10/09 EM DASH Publish
+010 170 10/10 EN DASH Publish
+010 172 10/12 SIGNIFICANT BLANK SYMBOL Publish
+010 174 10/14 ELLIPSIS Publish
+010 175 10/15 DOUBLE BASELINE DOT Publish
+010 176 11/00 VULGAR FRACTION ONE THIRD Publish
+010 177 11/01 VULGAR FRACTION TWO THIRDS Publish
+010 178 11/02 VULGAR FRACTION ONE FIFTH Publish
+010 179 11/03 VULGAR FRACTION TWO FIFTHS Publish
+010 180 11/04 VULGAR FRACTION THREE FIFTHS Publish
+010 181 11/05 VULGAR FRACTION FOUR FIFTHS Publish
+010 182 11/06 VULGAR FRACTION ONE SIXTH Publish
+010 183 11/07 VULGAR FRACTION FIVE SIXTHS Publish
+010 184 11/08 CARE OF Publish
+010 187 11/11 FIGURE DASH Publish
+010 188 11/12 LEFT ANGLE BRACKET Publish
+010 189 11/13 DECIMAL POINT Publish
+010 190 11/14 RIGHT ANGLE BRACKET Publish
+010 191 11/15 MARKER Publish
+010 195 12/03 VULGAR FRACTION ONE EIGHTH Publish
+010 196 12/04 VULGAR FRACTION THREE EIGHTHS Publish
+010 197 12/05 VULGAR FRACTION FIVE EIGHTHS Publish
+010 198 12/06 VULGAR FRACTION SEVEN EIGHTHS Publish
+010 201 12/09 TRADEMARK SIGN Publish
+010 202 12/10 SIGNATURE MARK Publish
+010 203 12/11 TRADEMARK SIGN IN CIRCLE Publish
+010 204 12/12 LEFT OPEN TRIANGLE Publish
+010 205 12/13 RIGHT OPEN TRIANGLE Publish
+010 206 12/14 EM OPEN CIRCLE Publish
+010 207 12/15 EM OPEN RECTANGLE Publish
+010 208 13/00 LEFT SINGLE QUOTATION MARK Publish
+010 209 13/01 RIGHT SINGLE QUOTATION MARK Publish
+010 210 13/02 LEFT DOUBLE QUOTATION MARK Publish
+010 211 13/03 RIGHT DOUBLE QUOTATION MARK Publish
+010 212 13/04 PRESCRIPTION, TAKE, RECIPE Publish
+010 214 13/06 MINUTES Publish
+010 215 13/07 SECONDS Publish
+010 217 13/09 LATIN CROSS Publish
+010 218 13/10 HEXAGRAM Publish
+010 219 13/11 FILLED RECTANGLE BULLET Publish
+010 220 13/12 FILLED LEFT TRIANGLE BULLET Publish
+010 221 13/13 FILLED RIGHT TRIANGLE BULLET Publish
+010 222 13/14 EM FILLED CIRCLE Publish
+010 223 13/15 EM FILLED RECTANGLE Publish
+010 224 14/00 EN OPEN CIRCLE BULLET Publish
+010 225 14/01 EN OPEN SQUARE BULLET Publish
+010 226 14/02 OPEN RECTANGULAR BULLET Publish
+010 227 14/03 OPEN TRIANGULAR BULLET UP Publish
+010 228 14/04 OPEN TRIANGULAR BULLET DOWN Publish
+010 229 14/05 OPEN STAR Publish
+010 230 14/06 EN FILLED CIRCLE BULLET Publish
+010 231 14/07 EN FILLED SQUARE BULLET Publish
+010 232 14/08 FILLED TRIANGULAR BULLET UP Publish
+010 233 14/09 FILLED TRIANGULAR BULLET DOWN Publish
+010 234 14/10 LEFT POINTER Publish
+010 235 14/11 RIGHT POINTER Publish
+010 236 14/12 CLUB Publish
+010 237 14/13 DIAMOND Publish
+010 238 14/14 HEART Publish
+010 240 15/00 MALTESE CROSS Publish
+010 241 15/01 DAGGER Publish
+010 242 15/02 DOUBLE DAGGER Publish
+010 243 15/03 CHECK MARK, TICK Publish
+010 244 15/04 BALLOT CROSS Publish
+010 245 15/05 MUSICAL SHARP Publish
+010 246 15/06 MUSICAL FLAT Publish
+010 247 15/07 MALE SYMBOL Publish
+010 248 15/08 FEMALE SYMBOL Publish
+010 249 15/09 TELEPHONE SYMBOL Publish
+010 250 15/10 TELEPHONE RECORDER SYMBOL Publish
+010 251 15/11 PHONOGRAPH COPYRIGHT SIGN Publish
+010 252 15/12 CARET Publish
+010 253 15/13 SINGLE LOW QUOTATION MARK Publish
+010 254 15/14 DOUBLE LOW QUOTATION MARK Publish
+010 255 15/15 CURSOR Publish
+.sp 2
+011 163 10/03 LEFT CARET APL
+011 166 10/06 RIGHT CARET APL
+011 168 10/08 DOWN CARET APL
+011 169 10/09 UP CARET APL
+011 192 12/00 OVERBAR APL
+011 194 12/02 DOWN TACK APL
+011 195 12/03 UP SHOE (CAP) APL
+011 196 12/04 DOWN STILE APL
+011 198 12/06 UNDERBAR APL
+011 202 12/10 JOT APL
+011 204 12/12 QUAD APL
+011 206 12/14 UP TACK APL
+011 207 12/15 CIRCLE APL
+011 211 13/03 UP STILE APL
+011 214 13/06 DOWN SHOE (CUP) APL
+011 216 13/08 RIGHT SHOE APL
+011 218 13/10 LEFT SHOE APL
+011 220 13/12 LEFT TACK APL
+011 252 15/12 RIGHT TACK APL
+.sp 2
+012 223 13/15 DOUBLE LOW LINE Hebrew
+012 224 14/00 HEBREW LETTER ALEPH Hebrew
+012 225 14/01 HEBREW LETTER BET Hebrew
+012 226 14/02 HEBREW LETTER GIMEL Hebrew
+012 227 14/03 HEBREW LETTER DALET Hebrew
+012 228 14/04 HEBREW LETTER HE Hebrew
+012 229 14/05 HEBREW LETTER WAW Hebrew
+012 230 14/06 HEBREW LETTER ZAIN Hebrew
+012 231 14/07 HEBREW LETTER CHET Hebrew
+012 232 14/08 HEBREW LETTER TET Hebrew
+012 233 14/09 HEBREW LETTER YOD Hebrew
+012 234 14/10 HEBREW LETTER FINAL KAPH Hebrew
+012 235 14/11 HEBREW LETTER KAPH Hebrew
+012 236 14/12 HEBREW LETTER LAMED Hebrew
+012 237 14/13 HEBREW LETTER FINAL MEM Hebrew
+012 238 14/14 HEBREW LETTER MEM Hebrew
+012 239 14/15 HEBREW LETTER FINAL NUN Hebrew
+012 240 15/00 HEBREW LETTER NUN Hebrew
+012 241 15/01 HEBREW LETTER SAMECH Hebrew
+012 242 15/02 HEBREW LETTER A'YIN Hebrew
+012 243 15/03 HEBREW LETTER FINAL PE Hebrew
+012 244 15/04 HEBREW LETTER PE Hebrew
+012 245 15/05 HEBREW LETTER FINAL ZADE Hebrew
+012 246 15/06 HEBREW LETTER ZADE Hebrew
+012 247 15/07 HEBREW QOPH Hebrew
+012 248 15/08 HEBREW RESH Hebrew
+012 249 15/09 HEBREW SHIN Hebrew
+012 250 15/10 HEBREW TAW Hebrew
+.sp 2
+013 161 10/01 THAI KOKAI Thai
+013 162 10/02 THAI KHOKHAI Thai
+013 163 10/03 THAI KHOKHUAT Thai
+013 164 10/04 THAI KHOKHWAI Thai
+013 165 10/05 THAI KHOKHON Thai
+013 166 10/06 THAI KHORAKHANG Thai
+013 167 10/07 THAI NGONGU Thai
+013 168 10/08 THAI CHOCHAN Thai
+013 169 10/09 THAI CHOCHING Thai
+013 170 10/10 THAI CHOCHANG Thai
+013 171 10/11 THAI SOSO Thai
+013 172 10/12 THAI CHOCHOE Thai
+013 173 10/13 THAI YOYING Thai
+013 174 10/14 THAI DOCHADA Thai
+013 175 10/15 THAI TOPATAK Thai
+013 176 11/00 THAI THOTHAN Thai
+013 177 11/01 THAI THONANGMONTHO Thai
+013 178 11/02 THAI THOPHUTHAO Thai
+013 179 11/03 THAI NONEN Thai
+013 180 11/04 THAI DODEK Thai
+013 181 11/05 THAI TOTAO Thai
+013 182 11/06 THAI THOTHUNG Thai
+013 183 11/07 THAI THOTHAHAN Thai
+013 184 11/08 THAI THOTHONG Thai
+013 185 11/09 THAI NONU Thai
+013 186 11/10 THAI BOBAIMAI Thai
+013 187 11/11 THAI POPLA Thai
+013 188 11/12 THAI PHOPHUNG Thai
+013 189 11/13 THAI FOFA Thai
+013 190 11/14 THAI PHOPHAN Thai
+013 191 11/15 THAI FOFAN Thai
+013 192 12/00 THAI PHOSAMPHAO Thai
+013 193 12/01 THAI MOMA Thai
+013 194 12/02 THAI YOYAK Thai
+013 195 12/03 THAI RORUA Thai
+013 196 12/04 THAI RU Thai
+013 197 12/05 THAI LOLING Thai
+013 198 12/06 THAI LU Thai
+013 199 12/07 THAI WOWAEN Thai
+013 200 12/08 THAI SOSALA Thai
+013 201 12/09 THAI SORUSI Thai
+013 202 12/10 THAI SOSUA Thai
+013 203 12/11 THAI HOHIP Thai
+013 204 12/12 THAI LOCHULA Thai
+013 205 12/13 THAI OANG Thai
+013 206 12/14 THAI HONOKHUK Thai
+013 207 12/15 THAI PAIYANNOI Thai
+013 208 13/00 THAI SARAA Thai
+013 209 13/01 THAI MAIHANAKAT Thai
+013 210 13/02 THAI SARAAA Thai
+013 211 13/03 THAI SARAAM Thai
+013 212 13/04 THAI SARAI Thai
+013 213 13/05 THAI SARAII Thai
+013 214 13/06 THAI SARAUE Thai
+013 215 13/07 THAI SARAUEE Thai
+013 216 13/08 THAI SARAU Thai
+013 217 13/09 THAI SARAUU Thai
+013 218 13/10 THAI PHINTHU Thai
+013 222 13/14 THAI MAIHANAKAT Thai
+013 223 13/15 THAI BAHT Thai
+013 224 14/00 THAI SARAE Thai
+013 225 14/01 THAI SARAAE Thai
+013 226 14/02 THAI SARAO Thai
+013 227 14/03 THAI SARAAIMAIMUAN Thai
+013 228 14/04 THAI SARAAIMAIMALAI Thai
+013 229 14/05 THAI LAKKHANGYAO Thai
+013 230 14/06 THAI MAIYAMOK Thai
+013 231 14/07 THAI MAITAIKHU Thai
+013 232 14/08 THAI MAIEK Thai
+013 233 14/09 THAI MAITHO Thai
+013 234 14/10 THAI MAITRI Thai
+013 235 14/11 THAI MAICHATTAWA Thai
+013 236 14/12 THAI THANTHAKHAT Thai
+013 237 14/13 THAI NIKHAHIT Thai
+013 240 15/00 THAI LEKSUN Thai
+013 241 15/01 THAI LEKNUNG Thai
+013 242 15/02 THAI LEKSONG Thai
+013 243 15/03 THAI LEKSAM Thai
+013 244 15/04 THAI LEKSI Thai
+013 245 15/05 THAI LEKHA Thai
+013 246 15/06 THAI LEKHOK Thai
+013 247 15/07 THAI LEKCHET Thai
+013 248 15/08 THAI LEKPAET Thai
+013 249 15/09 THAI LEKKAO Thai
+.sp 2
+014 161 10/01 HANGUL KIYEOG Korean
+014 162 10/02 HANGUL SSANG KIYEOG Korean
+014 163 10/03 HANGUL KIYEOG SIOS Korean
+014 164 10/04 HANGUL NIEUN Korean
+014 165 10/05 HANGUL NIEUN JIEUJ Korean
+014 166 10/06 HANGUL NIEUN HIEUH Korean
+014 167 10/07 HANGUL DIKEUD Korean
+014 168 10/08 HANGUL SSANG DIKEUD Korean
+014 169 10/09 HANGUL RIEUL Korean
+014 170 10/10 HANGUL RIEUL KIYEOG Korean
+014 171 10/11 HANGUL RIEUL MIEUM Korean
+014 172 10/12 HANGUL RIEUL PIEUB Korean
+014 173 10/13 HANGUL RIEUL SIOS Korean
+014 174 10/14 HANGUL RIEUL TIEUT Korean
+014 175 10/15 HANGUL RIEUL PHIEUF Korean
+014 176 11/00 HANGUL RIEUL HIEUH Korean
+014 177 11/01 HANGUL MIEUM Korean
+014 178 11/02 HANGUL PIEUB Korean
+014 179 11/03 HANGUL SSANG PIEUB Korean
+014 180 11/04 HANGUL PIEUB SIOS Korean
+014 181 11/05 HANGUL SIOS Korean
+014 182 11/06 HANGUL SSANG SIOS Korean
+014 183 11/07 HANGUL IEUNG Korean
+014 184 11/08 HANGUL JIEUJ Korean
+014 185 11/09 HANGUL SSANG JIEUJ Korean
+014 186 11/10 HANGUL CIEUC Korean
+014 187 11/11 HANGUL KHIEUQ Korean
+014 188 11/12 HANGUL TIEUT Korean
+014 189 11/13 HANGUL PHIEUF Korean
+014 190 11/14 HANGUL HIEUH Korean
+014 191 11/15 HANGUL A Korean
+014 192 12/00 HANGUL AE Korean
+014 193 12/01 HANGUL YA Korean
+014 194 12/02 HANGUL YAE Korean
+014 195 12/03 HANGUL EO Korean
+014 196 12/04 HANGUL E Korean
+014 197 12/05 HANGUL YEO Korean
+014 198 12/06 HANGUL YE Korean
+014 199 12/07 HANGUL O Korean
+014 200 12/08 HANGUL WA Korean
+014 201 12/09 HANGUL WAE Korean
+014 202 12/10 HANGUL OE Korean
+014 203 12/11 HANGUL YO Korean
+014 204 12/12 HANGUL U Korean
+014 205 12/13 HANGUL WEO Korean
+014 206 12/14 HANGUL WE Korean
+014 207 12/15 HANGUL WI Korean
+014 208 13/00 HANGUL YU Korean
+014 209 13/01 HANGUL EU Korean
+014 210 13/02 HANGUL YI Korean
+014 211 13/03 HANGUL I Korean
+014 212 13/04 HANGUL JONG SEONG KIYEOG Korean
+014 213 13/05 HANGUL JONG SEONG SSANG KIYEOG Korean
+014 214 13/06 HANGUL JONG SEONG KIYEOG SIOS Korean
+014 215 13/07 HANGUL JONG SEONG NIEUN Korean
+014 216 13/08 HANGUL JONG SEONG NIEUN JIEUJ Korean
+014 217 13/09 HANGUL JONG SEONG NIEUN HIEUH Korean
+014 218 13/10 HANGUL JONG SEONG DIKEUD Korean
+014 219 13/11 HANGUL JONG SEONG RIEUL Korean
+014 220 13/12 HANGUL JONG SEONG RIEUL KIYEOG Korean
+014 221 13/13 HANGUL JONG SEONG RIEUL MIEUM Korean
+014 222 13/14 HANGUL JONG SEONG RIEUL PIEUB Korean
+014 223 13/15 HANGUL JONG SEONG RIEUL SIOS Korean
+014 224 14/00 HANGUL JONG SEONG RIEUL TIEUT Korean
+014 225 14/01 HANGUL JONG SEONG RIEUL PHIEUF Korean
+014 226 14/02 HANGUL JONG SEONG RIEUL HIEUH Korean
+014 227 14/03 HANGUL JONG SEONG MIEUM Korean
+014 228 14/04 HANGUL JONG SEONG PIEUB Korean
+014 229 14/05 HANGUL JONG SEONG PIEUB SIOS Korean
+014 230 14/06 HANGUL JONG SEONG SIOS Korean
+014 231 14/07 HANGUL JONG SEONG SSANG SIOS Korean
+014 232 14/08 HANGUL JONG SEONG IEUNG Korean
+014 233 14/09 HANGUL JONG SEONG JIEUJ Korean
+014 234 14/10 HANGUL JONG SEONG CIEUC Korean
+014 235 14/11 HANGUL JONG SEONG KHIEUQ Korean
+014 236 14/12 HANGUL JONG SEONG TIEUT Korean
+014 237 14/13 HANGUL JONG SEONG PHIEUF Korean
+014 238 14/14 HANGUL JONG SEONG HIEUH Korean
+014 239 14/15 HANGUL RIEUL YEORIN HIEUH Korean
+014 240 15/00 HANGUL SUNKYEONGEUM MIEUM Korean
+014 241 15/01 HANGUL SUNKYEONGEUM PIEUB Korean
+014 242 15/02 HANGUL PAN SIOS Korean
+014 243 15/03 HANGUL KKOGJI DALRIN IEUNG Korean
+014 244 15/04 HANGUL SUNKYEONGEUM PHIEUF Korean
+014 245 15/05 HANGUL YEORIN HIEUH Korean
+014 246 15/06 HANGUL ARAE A Korean
+014 247 15/07 HANGUL ARAE AE Korean
+014 248 15/08 HANGUL JONG SEONG PAN SIOS Korean
+014 249 15/09 HANGUL JONG SEONG KKOGJI DALRIN IEUNG Korean
+014 250 15/10 HANGUL JONG SEONG YEORIN HIEUH Korean
+014 255 15/15 KOREAN WON Korean
+.sp 2
+019 188 11/12 LATIN CAPITAL DIPHTHONG OE Latin-9
+019 189 11/13 LATIN SMALL DIPHTHONG oe Latin-9
+019 190 11/14 LATIN CAPITAL LETTER Y WITH DIAERESIS Latin-9
+.sp 2
+032 160 10/00 CURRENCY ECU SIGN Currency
+032 161 10/01 CURRENCY COLON SIGN Currency
+032 162 10/02 CURRENCY CRUZEIRO SIGN Currency
+032 163 10/03 CURRENCY FRENCH FRANC SIGN Currency
+032 164 10/04 CURRENCY LIRA SIGN Currency
+032 165 10/05 CURRENCY MILL SIGN Currency
+032 166 10/06 CURRENCY NAIRA SIGN Currency
+032 167 10/07 CURRENCY PESETA SIGN Currency
+032 168 10/08 CURRENCY RUPEE SIGN Currency
+032 169 10/09 CURRENCY WON SIGN Currency
+032 170 10/10 CURRENCY NEW SHEQEL SIGN Currency
+032 171 10/11 CURRENCY DONG SIGN Currency
+032 172 10/12 CURRENCY EURO SIGN Currency
+.sp 2
+253 001 00/01 3270 DUPLICATE 3270
+253 002 00/02 3270 FIELDMARK 3270
+253 003 00/03 3270 RIGHT2 3270
+253 004 00/04 3270 LEFT2 3270
+253 005 00/05 3270 BACKTAB 3270
+253 006 00/06 3270 ERASEEOF 3270
+253 007 00/07 3270 ERASEINPUT 3270
+253 008 00/08 3270 RESET 3270
+253 009 00/09 3270 QUIT 3270
+253 010 00/10 3270 PA1 3270
+253 011 00/11 3270 PA2 3270
+253 012 00/12 3270 PA3 3270
+253 013 00/13 3270 TEST 3270
+253 014 00/14 3270 ATTN 3270
+253 015 00/15 3270 CURSORBLINK 3270
+253 016 01/01 3270 ALTCURSOR 3270
+253 017 01/02 3270 KEYCLICK 3270
+253 018 01/03 3270 JUMP 3270
+253 019 01/04 3270 IDENT 3270
+253 020 01/05 3270 RULE 3270
+253 021 01/06 3270 COPY 3270
+253 022 01/07 3270 PLAY 3270
+253 023 01/08 3270 SETUP 3270
+253 024 01/09 3270 RECORD 3270
+253 025 01/10 3270 CHANGESCREEN 3270
+253 026 01/11 3270 DELETEWORD 3270
+253 027 01/12 3270 EXSELECT 3270
+253 028 01/13 3270 CURSORSELECT 3270
+253 029 01/14 3270 PRINTSCREEN 3270
+253 030 01/15 3270 ENTER 3270
+.sp 2
+255 008 00/08 BACKSPACE, BACK SPACE, BACK CHAR Keyboard
+255 009 00/09 TAB Keyboard
+255 010 00/10 LINEFEED, LF Keyboard
+255 011 00/11 CLEAR Keyboard
+255 013 00/13 RETURN, ENTER Keyboard
+255 019 01/03 PAUSE, HOLD Keyboard
+255 020 01/04 SCROLL LOCK Keyboard
+255 021 01/05 SYS REQ, SYSTEM REQUEST Keyboard
+255 027 01/11 ESCAPE Keyboard
+255 032 02/00 MULTI-KEY CHARACTER PREFACE Keyboard
+255 033 02/01 KANJI, KANJI CONVERT Keyboard
+255 034 02/02 MUHENKAN Keyboard
+255 035 02/03 HENKAN MODE Keyboard
+255 036 02/04 ROMAJI Keyboard
+255 037 02/05 HIRAGANA Keyboard
+255 038 02/06 KATAKANA Keyboard
+255 039 02/07 HIRAGANA/KATAKANA TOGGLE Keyboard
+255 040 02/08 ZENKAKU Keyboard
+255 041 02/09 HANKAKU Keyboard
+255 042 02/10 ZENKAKU/HANKAKU TOGGLE Keyboard
+255 043 02/11 TOUROKU Keyboard
+255 044 02/12 MASSYO Keyboard
+255 045 02/13 KANA LOCK Keyboard
+255 046 02/14 KANA SHIFT Keyboard
+255 047 02/15 EISU SHIFT Keyboard
+255 048 03/00 EISU TOGGLE Keyboard
+255 049 03/01 HANGUL START/STOP (TOGGLE) Keyboard
+255 050 03/02 HANGUL START Keyboard
+255 051 03/03 HANGUL END, ENGLISH START Keyboard
+255 052 03/04 START HANGUL/HANJA CONVERSION Keyboard
+255 053 03/05 HANGUL JAMO MODE Keyboard
+255 054 03/06 HANGUL ROMAJA MODE Keyboard
+255 055 03/07 HANGUL CODE INPUT Keyboard
+255 056 03/08 HANGUL JEONJA MODE Keyboard
+255 057 03/09 HANGUL BANJA MODE Keyboard
+255 058 03/10 HANGUL PREHANJA CONVERSION Keyboard
+255 059 03/11 HANGUL POSTHANJA CONVERSION Keyboard
+255 060 03/12 HANGUL SINGLE CANDIDATE Keyboard
+255 061 03/13 HANGUL MULTIPLE CANDIDATE Keyboard
+255 062 03/14 HANGUL PREVIOUS CANDIDATE Keyboard
+255 063 03/15 HANGUL SPECIAL SYMBOLS Keyboard
+255 080 05/00 HOME Keyboard
+255 081 05/01 LEFT, MOVE LEFT, LEFT ARROW Keyboard
+255 082 05/02 UP, MOVE UP, UP ARROW Keyboard
+255 083 05/03 RIGHT, MOVE RIGHT, RIGHT ARROW Keyboard
+255 084 05/04 DOWN, MOVE DOWN, DOWN ARROW Keyboard
+255 085 05/05 PRIOR, PREVIOUS, PAGE UP Keyboard
+255 086 05/06 NEXT, PAGE DOWN Keyboard
+255 087 05/07 END, EOL Keyboard
+255 088 05/08 BEGIN, BOL Keyboard
+255 096 06/00 SELECT, MARK Keyboard
+255 097 06/01 PRINT Keyboard
+255 098 06/02 EXECUTE, RUN, DO Keyboard
+255 099 06/03 INSERT, INSERT HERE Keyboard
+255 101 06/05 UNDO, OOPS Keyboard
+255 102 06/06 REDO, AGAIN Keyboard
+255 103 06/07 MENU Keyboard
+255 104 06/08 FIND, SEARCH Keyboard
+255 105 06/09 CANCEL, STOP, ABORT, EXIT Keyboard
+255 106 06/10 HELP Keyboard
+255 107 06/11 BREAK Keyboard
+255 126 07/14 MODE SWITCH, SCRIPT SWITCH, CHARACTER SET SWITCH Keyboard
+255 127 07/15 NUM LOCK Keyboard
+255 128 08/00 KEYPAD SPACE Keyboard
+255 137 08/09 KEYPAD TAB Keyboard
+255 141 08/13 KEYPAD ENTER Keyboard
+255 145 09/01 KEYPAD F1, PF1, A Keyboard
+255 146 09/02 KEYPAD F2, PF2, B Keyboard
+255 147 09/03 KEYPAD F3, PF3, C Keyboard
+255 148 09/04 KEYPAD F4, PF4, D Keyboard
+255 149 09/05 KEYPAD HOME Keyboard
+255 150 09/06 KEYPAD LEFT Keyboard
+255 151 09/07 KEYPAD UP Keyboard
+255 152 09/08 KEYPAD RIGHT Keyboard
+255 153 09/09 KEYPAD DOWN Keyboard
+255 154 09/10 KEYPAD PRIOR, PAGE UP Keyboard
+255 155 09/11 KEYPAD NEXT, PAGE DOWN Keyboard
+255 156 09/12 KEYPAD END Keyboard
+255 157 09/13 KEYPAD BEGIN Keyboard
+255 158 09/14 KEYPAD INSERT Keyboard
+255 159 09/15 KEYPAD DELETE Keyboard
+255 170 10/10 KEYPAD MULTIPLICATION SIGN, ASTERISK Keyboard
+255 171 10/11 KEYPAD PLUS SIGN Keyboard
+255 172 10/12 KEYPAD SEPARATOR, COMMA Keyboard
+255 173 10/13 KEYPAD MINUS SIGN, HYPHEN Keyboard
+255 174 10/14 KEYPAD DECIMAL POINT, FULL STOP Keyboard
+255 175 10/15 KEYPAD DIVISION SIGN, SOLIDUS Keyboard
+255 176 11/00 KEYPAD DIGIT ZERO Keyboard
+255 177 11/01 KEYPAD DIGIT ONE Keyboard
+255 178 11/02 KEYPAD DIGIT TWO Keyboard
+255 179 11/03 KEYPAD DIGIT THREE Keyboard
+255 180 11/04 KEYPAD DIGIT FOUR Keyboard
+255 181 11/05 KEYPAD DIGIT FIVE Keyboard
+255 182 11/06 KEYPAD DIGIT SIX Keyboard
+255 183 11/07 KEYPAD DIGIT SEVEN Keyboard
+255 184 11/08 KEYPAD DIGIT EIGHT Keyboard
+255 185 11/09 KEYPAD DIGIT NINE Keyboard
+255 189 11/13 KEYPAD EQUALS SIGN Keyboard
+255 190 11/14 F1 Keyboard
+255 191 11/15 F2 Keyboard
+255 192 12/00 F3 Keyboard
+255 193 12/01 F4 Keyboard
+255 194 12/02 F5 Keyboard
+255 195 12/03 F6 Keyboard
+255 196 12/04 F7 Keyboard
+255 197 12/05 F8 Keyboard
+255 198 12/06 F9 Keyboard
+255 199 12/07 F10 Keyboard
+255 200 12/08 F11, L1 Keyboard
+255 201 12/09 F12, L2 Keyboard
+255 202 12/10 F13, L3 Keyboard
+255 203 12/11 F14, L4 Keyboard
+255 204 12/12 F15, L5 Keyboard
+255 205 12/13 F16, L6 Keyboard
+255 206 12/14 F17, L7 Keyboard
+255 207 12/15 F18, L8 Keyboard
+255 208 13/00 F19, L9 Keyboard
+255 209 13/01 F20, L10 Keyboard
+255 210 13/02 F21, R1 Keyboard
+255 211 13/03 F22, R2 Keyboard
+255 212 13/04 F23, R3 Keyboard
+255 213 13/05 F24, R4 Keyboard
+255 214 13/06 F25, R5 Keyboard
+255 215 13/07 F26, R6 Keyboard
+255 216 13/08 F27, R7 Keyboard
+255 217 13/09 F28, R8 Keyboard
+255 218 13/10 F29, R9 Keyboard
+255 219 13/11 F30, R10 Keyboard
+255 220 13/12 F31, R11 Keyboard
+255 221 13/13 F32, R12 Keyboard
+255 222 13/14 F33, R13 Keyboard
+255 223 13/15 F34, R14 Keyboard
+255 224 14/00 F35, R15 Keyboard
+255 225 14/01 LEFT SHIFT Keyboard
+255 226 14/02 RIGHT SHIFT Keyboard
+255 227 14/03 LEFT CONTROL Keyboard
+255 228 14/04 RIGHT CONTROL Keyboard
+255 229 14/05 CAPS LOCK Keyboard
+255 230 14/06 SHIFT LOCK Keyboard
+255 231 14/07 LEFT META Keyboard
+255 232 14/08 RIGHT META Keyboard
+255 233 14/09 LEFT ALT Keyboard
+255 234 14/10 RIGHT ALT Keyboard
+255 235 14/11 LEFT SUPER Keyboard
+255 236 14/12 RIGHT SUPER Keyboard
+255 237 14/13 LEFT HYPER Keyboard
+255 238 14/14 RIGHT HYPER Keyboard
+255 255 15/15 DELETE, RUBOUT Keyboard
+.sp 6p
+_
+.TE
+.bp
diff --git a/specs/XProtocol/X11.protocol b/specs/XProtocol/X11.protocol
new file mode 100644
index 0000000..660700b
--- /dev/null
+++ b/specs/XProtocol/X11.protocol
@@ -0,0 +1,10303 @@
+.\" $Xorg: X11.protocol,v 1.3 2000/08/17 19:42:23 cpqbld Exp $
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 4
+\s+2\fBX Window System Protocol\fP\s-2
+
+\s+1\fBX Consortium Standard\fP\s-1
+
+\s+1\fBX Version 11, Release 6.4\fP\s-1
+.sp 6
+.ce 5
+\s-1Robert W. Scheifler
+.sp 6p
+X Consortium, Inc.
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+X Window System is a trademark of X Consortium, Inc.
+.LP
+Copyright \(co 1986, 1987, 1988, 1994
+X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 11
+.nr PS 11
+.bp
+.XS iii
+Acknowledgments
+.XE
+\&
+.sp 1
+.ce 3
+\s+1\fBAcknowledgments\fP\s-1
+.sp 2
+.na
+.LP
+The primary contributers to the X11 protocol are:
+.LP
+.Ds
+Dave Carver (Digital HPW)
+Branko Gerovac (Digital HPW)
+Jim Gettys (MIT/Project Athena, Digital)
+Phil Karlton (Digital WSL)
+Scott McGregor (Digital SSG)
+Ram Rao (Digital UEG)
+David Rosenthal (Sun)
+Dave Winchell (Digital UEG)
+.De
+.LP
+The implementors of initial server who provided useful
+input are:
+.LP
+.Ds
+Susan Angebranndt (Digital)
+Raymond Drewry (Digital)
+Todd Newman (Digital)
+.De
+.LP
+The invited reviewers who provided useful input are:
+.LP
+.Ds
+Andrew Cherenson (Berkeley)
+Burns Fisher (Digital)
+Dan Garfinkel (HP)
+Leo Hourvitz (Next)
+Brock Krizan (HP)
+David Laidlaw (Stellar)
+Dave Mellinger (Interleaf)
+Ron Newman (MIT)
+John Ousterhout (Berkeley)
+Andrew Palay (ITC CMU)
+Ralph Swick (MIT)
+Craig Taylor (Sun)
+Jeffery Vroom (Stellar)
+.De
+.LP
+Thanks go to Al Mento of Digital's UEG Documentation Group for
+formatting this document.
+.LP
+This document does not attempt to provide the rationale or pragmatics required
+to fully understand the protocol or to place it in perspective within a
+complete system.
+.LP
+The protocol contains many management mechanisms that are not intended for
+normal applications.
+Not all mechanisms are needed to build a particular user interface.
+It is important to keep in mind that the protocol is intended to
+provide mechanism, not policy.
+.LP
+.Ds 0
+Robert W. Scheifler
+X Consortium, Inc.
+.De
+.bp 1
+.EH '\fBX Protocol\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Protocol\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Protocol Formats
+.XS
+\*(SN Protocol Formats
+.XE
+.SH
+Request Format
+.LP
+Every request contains an 8-bit major opcode and a 16-bit length field
+expressed in units of four bytes.
+Every request consists of four bytes of a header
+(containing the major opcode, the length field, and a data byte)
+followed by zero or more additional bytes of data.
+The length field defines the total length of the request, including the header.
+The length field in a request must equal the minimum length required to contain
+the request.
+If the specified length is smaller or larger than the required length,
+an error is generated.
+Unused bytes in a request are not required to be zero.
+Major opcodes 128 through 255 are reserved for extensions.
+Extensions are intended to contain multiple requests,
+so extension requests typically have an additional minor opcode encoded
+in the second data byte in the request header.
+However, the placement and interpretation of this minor opcode and of all
+other fields in extension requests are not defined by the core protocol.
+Every request on a given connection is implicitly assigned a sequence number,
+starting with one, that is used in replies, errors, and events.
+.SH
+Reply Format
+.LP
+Every reply contains a 32-bit length field expressed in units of four bytes.
+Every reply consists of 32 bytes followed by zero or more additional bytes of
+data, as specified in the length field.
+Unused bytes within a reply are not guaranteed to be zero.
+Every reply also contains the least significant 16 bits of the sequence number
+of the corresponding request.
+.SH
+Error Format
+.LP
+Error reports are 32 bytes long.
+Every error includes an 8-bit error code.
+Error codes 128 through 255 are reserved for extensions.
+Every error also includes the major and minor opcodes of the failed request
+and the least significant 16 bits of the sequence number of the request.
+For the following errors (see section 4),
+the failing resource ID is also returned:
+.PN Colormap ,
+.PN Cursor ,
+.PN Drawable ,
+.PN Font ,
+.PN GContext ,
+.PN IDChoice ,
+.PN Pixmap ,
+and
+.PN Window .
+For
+.PN Atom
+errors, the failing atom is returned.
+For
+.PN Value
+errors, the failing value is returned.
+Other core errors return no additional data.
+Unused bytes within an error are not guaranteed to be zero.
+.SH
+Event Format
+.LP
+Events are 32 bytes long.
+Unused bytes within an event are not guaranteed to be zero.
+Every event contains an 8-bit type code.
+The most significant bit in this code is set if the event was generated from a
+.PN SendEvent
+request.
+Event codes 64 through 127 are reserved for extensions, although the core
+protocol does not define a mechanism for selecting interest in such events.
+Every core event (with the exception of
+.PN KeymapNotify )
+also contains the least significant 16 bits of the sequence number of the last
+request issued by the client that was (or is currently being) processed by
+the server.
+.NH 1
+Syntactic Conventions
+.XS
+\*(SN Syntactic Conventions
+.XE
+.LP
+The rest of this document uses the following syntactic conventions.
+.IP \(bu 5
+The syntax {...} encloses a set of alternatives.
+.IP \(bu 5
+The syntax [...] encloses a set of structure components.
+.IP \(bu 5
+In general, TYPEs are in uppercase and
+.PN AlternativeValues
+are capitalized.
+.IP \(bu 5
+Requests in section 9 are described in the following format:
+.IP
+.Ds 0
+.TA .75i
+.ta .75i
+.PN RequestName
+ \fIarg1\fP\^: type1
+ ...
+ \fIargN\fP\^: typeN
+ \(->
+ result1: type1
+ ...
+ resultM: typeM
+
+ Errors: kind1, ..., kindK
+
+ Description.
+.De
+.IP
+If no \(-> is present in the description,
+then the request has no reply (it is asynchronous),
+although errors may still be reported.
+If \(->+ is used,
+then one or more replies can be generated for a single request.
+.IP \(bu 5
+Events in section 11 are described in the following format:
+.IP
+.Ds 0
+.TA .75i
+.ta .75i
+.PN EventName
+ \fIvalue1\fP\^: type1
+ ...
+ \fIvalueN\fP\^: typeN
+
+ Description.
+.De
+.NH 1
+Common Types
+.XS
+\*(SN Common Types
+.XE
+.LP
+.TS H
+lw(1.25i) lw(4.5i).
+_
+.sp 6p
+.B
+Name Value
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+.IN "Types" "LISTofFOO" "@DEF@"
+LISTofFOO T{
+A type name of the form LISTofFOO means a counted list of elements of type
+FOO.
+The size of the length field may vary (it is not necessarily the same
+size as a FOO), and in some cases, it may be implicit.
+It is fully specified in Appendix B.
+Except where explicitly noted,
+zero-length lists are legal.
+T}
+.sp 3p
+.IN "Types" "BITMASK" "@DEF@"
+T{
+BITMASK
+.br
+.ns
+.IN "Types" "LISTofVALUE" "@DEF@"
+LISTofVALUE
+T} T{
+The types BITMASK and LISTofVALUE are somewhat special.
+Various requests contain arguments of the form:
+.br
+\fIvalue-mask\fP\^: BITMASK
+.br
+\fIvalue-list\fP\^: LISTofVALUE
+.br
+These are used to allow the client to specify a subset of a heterogeneous
+collection of optional arguments.
+The value-mask specifies which arguments are to be provided;
+each such argument is assigned a unique bit position.
+The representation of the BITMASK will typically contain more bits than
+there are defined arguments.
+The unused bits in the value-mask must be zero (or the server generates a
+.PN Value
+error).
+The value-list contains one value for each bit set to 1 in the mask,
+from least significant to most significant bit in the mask.
+Each value is represented with four bytes,
+but the actual value occupies only the least significant bytes as required.
+The values of the unused bytes do not matter.
+T}
+.sp 3p
+.IN "Types" "OR" "@DEF@"
+OR T{
+A type of the form ``T1 or ... or Tn'' means the union of the indicated types.
+A single-element type is given as the element without enclosing braces.
+T}
+.IN "Types" "WINDOW" "@DEF@"
+WINDOW 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "PIXMAP" "@DEF@"
+PIXMAP 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "CURSOR" "@DEF@"
+CURSOR 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "FONT" "@DEF@"
+FONT 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "GCONTEXT" "@DEF@"
+GCONTEXT 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "COLORMAP" "@DEF@"
+COLORMAP 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "DRAWABLE" "@DEF@"
+DRAWABLE WINDOW or PIXMAP
+.IN "Types" "FONTABLE" "@DEF@"
+FONTABLE FONT or GCONTEXT
+.IN "Types" "ATOM" "@DEF@"
+ATOM 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "VISUALID" "@DEF@"
+VISUALID 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "VALUE" "@DEF@"
+VALUE 32-bit quantity (used only in LISTofVALUE)
+.IN "Types" "BYTE" "@DEF@"
+BYTE 8-bit value
+.IN "Types" "INT8" "@DEF@"
+INT8 8-bit signed integer
+.IN "Types" "INT16" "@DEF@"
+INT16 16-bit signed integer
+.IN "Types" "INT32" "@DEF@"
+INT32 32-bit signed integer
+.IN "Types" "CARD8" "@DEF@"
+CARD8 8-bit unsigned integer
+.IN "Types" "CARD16" "@DEF@"
+CARD16 16-bit unsigned integer
+.IN "Types" "CARD32" "@DEF@"
+CARD32 32-bit unsigned integer
+.IN "Types" "TIMESTAMP" "@DEF@"
+TIMESTAMP CARD32
+.IN "Types" "BITGRAVITY" "@DEF@"
+BITGRAVITY T{
+.Pn { Forget ,
+.PN Static ,
+.PN NorthWest ,
+.PN North ,
+.PN NorthEast ,
+.PN West ,
+.PN Center ,
+.br
+\
+.PN East ,
+.PN SouthWest ,
+.PN South ,
+.PN SouthEast }
+T}
+.IN "Types" "WINGRAVITY" "@DEF@"
+WINGRAVITY T{
+.Pn { Unmap ,
+.PN Static ,
+.PN NorthWest ,
+.PN North ,
+.PN NorthEast ,
+.PN West ,
+.PN Center ,
+.br
+\
+.PN East ,
+.PN SouthWest ,
+.PN South ,
+.PN SouthEast }
+T}
+.IN "Types" "BOOL" "@DEF@"
+BOOL T{
+.Pn { True ,
+.PN False }
+T}
+.IN "Types" "EVENT" "@DEF@"
+EVENT T{
+.Pn { KeyPress ,
+.PN KeyRelease ,
+.PN OwnerGrabButton ,
+.PN ButtonPress ,
+.br
+\
+.PN ButtonRelease ,
+.PN EnterWindow ,
+.PN LeaveWindow ,
+.PN PointerMotion ,
+.br
+\
+.PN PointerMotionHint ,
+.PN Button1Motion ,
+.PN Button2Motion ,
+.br
+\
+.PN Button3Motion ,
+.PN Button4Motion ,
+.PN Button5Motion ,
+.PN ButtonMotion ,
+.br
+\
+.PN Exposure ,
+.PN VisibilityChange ,
+.PN StructureNotify ,
+.PN ResizeRedirect ,
+.br
+\
+.PN SubstructureNotify ,
+.PN SubstructureRedirect ,
+.PN FocusChange ,
+.br
+\
+.PN PropertyChange ,
+.PN ColormapChange ,
+.PN KeymapState }
+T}
+.IN "Types" "POINTEREVENT" "@DEF@"
+POINTEREVENT T{
+.Pn { ButtonPress ,
+.PN ButtonRelease ,
+.PN EnterWindow ,
+.PN LeaveWindow ,
+.br
+\
+.PN PointerMotion ,
+.PN PointerMotionHint ,
+.PN Button1Motion ,
+.br
+\
+.PN Button2Motion ,
+.PN Button3Motion ,
+.PN Button4Motion ,
+.PN Button5Motion ,
+.br
+\
+.PN ButtonMotion ,
+.PN KeymapState }
+T}
+.IN "Types" "DEVICEEVENT" "@DEF@"
+DEVICEEVENT T{
+.Pn { KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.br
+\
+.PN PointerMotion ,
+.PN Button1Motion ,
+.PN Button2Motion ,
+.PN Button3Motion ,
+.br
+\
+.PN Button4Motion ,
+.PN Button5Motion ,
+.PN ButtonMotion }
+T}
+.IN "Types" "KEYSYM" "@DEF@"
+KEYSYM 32-bit value (top three bits guaranteed to be zero)
+.IN "Types" "KEYCODE" "@DEF@"
+KEYCODE CARD8
+.IN "Types" "BUTTON" "@DEF@"
+BUTTON CARD8
+.IN "Types" "KEYMASK" "@DEF@"
+KEYMASK T{
+.Pn { Shift ,
+.PN Lock ,
+.PN Control ,
+.PN Mod1 ,
+.PN Mod2 ,
+.PN Mod3 ,
+.PN Mod4 ,
+.PN Mod5 }
+T}
+.IN "Types" "BUTMASK" "@DEF@"
+BUTMASK T{
+.Pn { Button1 ,
+.PN Button2 ,
+.PN Button3 ,
+.PN Button4 ,
+.PN Button5 }
+T}
+.IN "Types" "KEYBUTMASK" "@DEF@"
+KEYBUTMASK KEYMASK or BUTMASK
+.IN "Types" "STRING8" "@DEF@"
+STRING8 LISTofCARD8
+.IN "Types" "STRING16" "@DEF@"
+STRING16 LISTofCHAR2B
+.IN "Types" "CHAR2B" "@DEF@"
+CHAR2B [byte1, byte2: CARD8]
+.IN "Types" "POINT" "@DEF@"
+POINT [x, y: INT16]
+.IN "Types" "RECTANGLE" "@DEF@"
+RECTANGLE T{
+[x, y: INT16,
+.br
+\ width, height: CARD16]
+T}
+.IN "Types" "ARC" "@DEF@"
+ARC T{
+[x, y: INT16,
+.br
+\ width, height: CARD16,
+.br
+\ angle1, angle2: INT16]
+T}
+.IN "Types" "HOST" "@DEF@"
+HOST T{
+[family:
+.Pn { Internet ,
+.PN DECnet ,
+.PN Chaos }
+T}
+ T{
+\ address: LISTofBYTE]
+T}
+.TE
+.LP
+The [x,y] coordinates of a RECTANGLE specify the upper-left corner.
+.LP
+The primary interpretation of large characters in a STRING16 is that they
+are composed of two bytes used to index a two-dimensional matrix,
+hence, the use of CHAR2B rather than CARD16.
+This corresponds to the JIS/ISO method of indexing 2-byte characters.
+It is expected that most large fonts will be defined with 2-byte
+matrix indexing.
+For large fonts constructed with linear indexing,
+a CHAR2B can be interpreted as a 16-bit number by treating byte1 as
+the most significant byte.
+This means that clients should always transmit such
+16-bit character values most significant byte first, as the server will never
+byte-swap CHAR2B quantities.
+.LP
+The length, format, and interpretation of a HOST address are specific to the
+family (see
+.PN ChangeHosts
+request).
+.NH 1
+Errors
+.XS
+\*(SN Errors
+.XE
+.LP
+In general, when a request terminates with an error,
+the request has no side effects (that is, there is no partial execution).
+The only requests for which this is not true are
+.PN ChangeWindowAttributes ,
+.PN ChangeGC ,
+.PN PolyText8 ,
+.PN PolyText16 ,
+.PN FreeColors ,
+.PN StoreColors ,
+and
+.PN ChangeKeyboardControl .
+.LP
+The following error codes result from various requests as follows:
+.TS H
+lw(1.5i) lw(4.25i).
+_
+.sp 6p
+.B
+Error Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+.IN "Error Codes" "Access" "@DEF@"
+T{
+.PN Access
+T} T{
+An attempt is made to grab a key/button combination already grabbed by another
+client.
+.sp 6p
+An attempt is made to free a colormap entry not allocated by the client
+or to free an entry in a colormap that was created with all entries writable.
+.sp 6p
+An attempt is made to store into a read-only or an unallocated colormap entry.
+.sp 6p
+An attempt is made to modify the access control list from other than the local
+host (or otherwise authorized client).
+.sp 6p
+An attempt is made to select an event type that only one client can
+select at a time when another client has already selected it.
+T}
+.sp 6p
+.IN "Error Codes" "Alloc" "@DEF@"
+T{
+.PN Alloc
+T} T{
+The server failed to allocate the requested resource.
+Note that the explicit listing of
+.PN Alloc
+errors in request only covers allocation errors at a very coarse level
+and is not intended to cover all cases
+of a server running out of allocation space in the middle of service.
+The semantics when a server runs out of allocation space are left unspecified,
+but a server may generate an
+.PN Alloc
+error on any request for this reason,
+and clients should be prepared to receive such errors and handle
+or discard them.
+T}
+.sp 6p
+.IN "Error Codes" "Atom" "@DEF@"
+T{
+.PN Atom
+T} T{
+A value for an ATOM argument does not name a defined ATOM.
+T}
+.sp 6p
+.IN "Error Codes" "Colormap" "@DEF@"
+T{
+.PN Colormap
+T} T{
+A value for a COLORMAP argument does not name a defined COLORMAP.
+T}
+.sp 6p
+.IN "Error Codes" "Cursor" "@DEF@"
+T{
+.PN Cursor
+T} T{
+A value for a CURSOR argument does not name a defined CURSOR.
+T}
+.sp 6p
+.IN "Error Codes" "Drawable" "@DEF@"
+T{
+.PN Drawable
+T} T{
+A value for a DRAWABLE argument does not name a defined WINDOW or
+PIXMAP.
+T}
+.sp 6p
+.IN "Error Codes" "Font" "@DEF@"
+T{
+.PN Font
+T} T{
+A value for a FONT argument does not name a defined FONT.
+.sp 6p
+A value for a FONTABLE argument does not name a defined FONT or a
+defined GCONTEXT.
+T}
+.sp 6p
+.IN "Error Codes" "GContext" "@DEF@"
+T{
+.PN GContext
+T} T{
+A value for a GCONTEXT argument does not name a defined GCONTEXT.
+T}
+.sp 6p
+.IN "Error Codes" "IDChoice" "@DEF@"
+T{
+.PN IDChoice
+T} T{
+The value chosen for a resource identifier either is not included
+in the range assigned to the client or is already in use.
+T}
+.sp 6p
+.IN "Error Codes" "Implementation" "@DEF@"
+T{
+.PN Implementation
+T} T{
+The server does not implement some aspect of the request.
+A server that generates this error for a core request is deficient.
+As such, this error is not listed for any of the requests,
+but clients should be prepared to receive such errors
+and handle or discard them.
+T}
+.sp 6p
+.IN "Error Codes" "Length" "@DEF@"
+T{
+.PN Length
+T} T{
+The length of a request is shorter or longer than that required
+to minimally contain the arguments.
+.sp 6p
+The length of a request exceeds the maximum length accepted by the
+server.
+T}
+.sp 6p
+.IN "Error Codes" "Match" "@DEF@"
+T{
+.PN Match
+T} T{
+An
+.PN InputOnly
+window is used as a DRAWABLE.
+.sp 6p
+In a graphics request, the GCONTEXT argument does not have the same
+root and depth as the destination DRAWABLE argument.
+.sp 6p
+Some argument (or pair of arguments) has the correct type and range,
+but it fails to match in some other way required by the request.
+T}
+.sp 6p
+.IN "Error Codes" "Name" "@DEF@"
+T{
+.PN Name
+T} T{
+A font or color of the specified name does not exist.
+T}
+.sp 6p
+.IN "Error Codes" "Pixmap" "@DEF@"
+T{
+.PN Pixmap
+T} T{
+A value for a PIXMAP argument does not name a defined PIXMAP.
+T}
+.sp 6p
+.IN "Error Codes" "Request" "@DEF@"
+T{
+.PN Request
+T} T{
+The major or minor opcode does not specify a valid request.
+T}
+.sp 6p
+.IN "Error Codes" "Value" "@DEF@"
+T{
+.PN Value
+T} T{
+Some numeric value falls outside the range of values accepted by the request.
+Unless a specific range is specified for an argument,
+the full range defined by the argument's type is accepted.
+Any argument defined as a set of alternatives typically can generate
+this error (due to the encoding).
+T}
+.sp 6p
+.IN "Error Codes" "Window" "@DEF@"
+T{
+.PN Window
+T} T{
+A value for a WINDOW argument does not name a defined WINDOW.
+T}
+.sp 6p
+_
+.TE
+.NT Note
+The
+.PN Atom ,
+.PN Colormap ,
+.PN Cursor ,
+.PN Drawable ,
+.PN Font ,
+.PN GContext ,
+.PN Pixmap ,
+and
+.PN Window
+errors are also used when the argument type is extended by union with a
+set of fixed alternatives, for example, <WINDOW or
+.PN PointerRoot
+or
+.PN None >.
+.NE
+.NH 1
+Keyboards
+.XS
+\*(SN Keyboards
+.XE
+.LP
+A KEYCODE represents a physical (or logical) key.
+Keycodes lie in the inclusive range [8,255].
+A keycode value carries no intrinsic information,
+although server implementors may attempt to encode geometry information
+(for example, matrix) to be interpreted in a server-dependent fashion.
+The mapping between keys and keycodes cannot be changed using the
+protocol.
+.LP
+A KEYSYM is an encoding of a symbol on the cap of a key.
+The set of defined KEYSYMs include the character sets Latin-1, Latin-2,
+Latin-3, Latin-4, Kana, Arabic, Cyrillic, Greek, Tech, Special, Publish, APL,
+Hebrew, Thai, and Korean as well as a set of symbols common on keyboards
+(Return, Help, Tab,
+and so on).
+KEYSYMs with the most significant bit (of the 29 bits) set are reserved
+as vendor-specific.
+.LP
+A list of KEYSYMs is associated with each KEYCODE.
+The list is intended to convey the set of symbols on the corresponding key.
+If the list (ignoring trailing
+.PN NoSymbol
+entries) is a single KEYSYM ``\fIK\fP'',
+then the list is treated as if it were
+the list ``\fIK\fP NoSymbol \fIK\fP NoSymbol''.
+If the list (ignoring trailing NoSymbol entries) is a pair of KEYSYMs
+``\fIK1 K2\fP'', then the list is treated as if it were the list
+``\fIK1 K2 K1 K2\fP''.
+If the list (ignoring trailing
+.PN NoSymbol
+entries) is
+a triple of KEYSYMs ``\fIK1 K2 K3\fP'',
+then the list is treated as if it were the list ``\fIK1 K2 K3\fP NoSymbol''.
+When an explicit ``void'' element is desired in the list,
+the value
+.PN VoidSymbol
+can be used.
+.LP
+The first four elements of the list are split into two groups of KEYSYMs.
+Group 1 contains the first and second KEYSYMs, Group 2 contains the third and
+fourth KEYSYMs.
+Within each group,
+if the second element of the group is
+.PN NoSymbol ,
+then the group should be treated as if the second element were the
+same as the first element, except when the first element is an alphabetic
+KEYSYM ``\fIK\fP'' for which both lowercase and uppercase forms are defined.
+In that case, the group should be treated as if the first element were the
+lowercase form of ``\fIK\fP'' and the second element were the uppercase form
+of ``\fIK\fP''.
+.LP
+The standard rules for obtaining a KEYSYM from a
+.PN KeyPress
+event make use of only the Group 1 and Group 2 KEYSYMs; no interpretation of
+other KEYSYMs in the list is defined. The modifier state determines which
+group to use. Switching between groups is controlled by the KEYSYM named
+MODE SWITCH, by attaching that KEYSYM to some KEYCODE and attaching that
+KEYCODE to any one of the modifiers
+.PN Mod1
+through
+.PN Mod5 .
+This modifier is
+called the ``group modifier''. For any KEYCODE, Group 1 is used when the
+group modifier is off, and Group 2 is used when the group modifier is on.
+.LP
+The
+.PN Lock
+modifier is interpreted as CapsLock when the KEYSYM named CAPS
+LOCK is attached to some KEYCODE and that KEYCODE is attached to the
+.PN Lock
+modifier. The
+.PN Lock
+modifier is interpreted as ShiftLock when the KEYSYM
+named SHIFT LOCK is attached to some KEYCODE and that KEYCODE is attached
+to the
+.PN Lock
+modifier. If the
+.PN Lock
+modifier could be interpreted as both
+CapsLock and ShiftLock, the CapsLock interpretation is used.
+.LP
+The operation of ``keypad'' keys is controlled by the KEYSYM named NUM LOCK,
+by attaching that KEYSYM to some KEYCODE and attaching that KEYCODE to any
+one of the modifiers
+.PN Mod1
+through
+.PN Mod5 .
+This modifier is called the
+``numlock modifier''. The standard KEYSYMs with the prefix KEYPAD in their
+name are called ``keypad'' KEYSYMs; these are KEYSYMS with numeric value in
+the hexadecimal range #xFF80 to #xFFBD inclusive. In addition,
+vendor-specific KEYSYMS in the hexadecimal range #x11000000 to #x1100FFFF
+are also keypad KEYSYMs.
+.LP
+Within a group, the choice of KEYSYM is determined by applying the first
+rule that is satisfied from the following list:
+.IP \(bu 5
+The numlock modifier is on and the second KEYSYM is a keypad KEYSYM. In
+this case, if the
+.PN Shift
+modifier is on, or if the
+.PN Lock
+modifier is on and
+is interpreted as ShiftLock, then the first KEYSYM is used; otherwise, the
+second KEYSYM is used.
+.IP \(bu 5
+The
+.PN Shift
+and
+.PN Lock
+modifiers are both off. In this case, the first
+KEYSYM is used.
+.IP \(bu 5
+The
+.PN Shift
+modifier is off, and the
+.PN Lock
+modifier is on and is
+interpreted as CapsLock. In this case, the first KEYSYM is used, but if
+that KEYSYM is lowercase alphabetic, then the corresponding uppercase
+KEYSYM is used instead.
+.IP \(bu 5
+The
+.PN Shift
+modifier is on, and the
+.PN Lock
+modifier is on and is interpreted
+as CapsLock. In this case, the second KEYSYM is used, but if that KEYSYM
+is lowercase alphabetic, then the corresponding uppercase KEYSYM is used
+instead.
+.IP \(bu 5
+The
+.PN Shift
+modifier is on, or the
+.PN Lock
+modifier is on and is interpreted
+as ShiftLock, or both. In this case, the second KEYSYM is used.
+.LP
+The mapping between KEYCODEs and KEYSYMs is not used directly by the server;
+it is merely stored for reading and writing by clients.
+.NH 1
+Pointers
+.XS
+\*(SN Pointers
+.XE
+.LP
+Buttons are always numbered starting with one.
+.NH 1
+Predefined Atoms
+.XS
+\*(SN Predefined Atoms
+.XE
+.LP
+Predefined atoms are not strictly necessary and may not be useful in all
+environments, but they will eliminate many
+.PN InternAtom
+requests in most applications.
+Note that they are predefined only in the sense of having numeric values,
+not in the sense of having required semantics.
+The core protocol imposes no semantics on these names,
+but semantics are specified in other X Consortium standards,
+such as the \fIInter-Client Communication Conventions Manual\fP
+and the \fIX Logical Font Description Conventions\fP.
+.LP
+The following names have predefined atom values.
+Note that uppercase and lowercase matter.
+.TS
+lw(1.75i) l w(1.75i) lw(1.75i).
+ARC ITALIC_ANGLE STRING
+ATOM MAX_SPACE SUBSCRIPT_X
+BITMAP MIN_SPACE SUBSCRIPT_Y
+CAP_HEIGHT NORM_SPACE SUPERSCRIPT_X
+CARDINAL NOTICE SUPERSCRIPT_Y
+COLORMAP PIXMAP UNDERLINE_POSITION
+COPYRIGHT POINT UNDERLINE_THICKNESS
+CURSOR POINT_SIZE VISUALID
+CUT_BUFFER0 PRIMARY WEIGHT
+CUT_BUFFER1 QUAD_WIDTH WINDOW
+CUT_BUFFER2 RECTANGLE WM_CLASS
+CUT_BUFFER3 RESOLUTION WM_CLIENT_MACHINE
+CUT_BUFFER4 RESOURCE_MANAGER WM_COMMAND
+CUT_BUFFER5 RGB_BEST_MAP WM_HINTS
+CUT_BUFFER6 RGB_BLUE_MAP WM_ICON_NAME
+CUT_BUFFER7 RGB_COLOR_MAP WM_ICON_SIZE
+DRAWABLE RGB_DEFAULT_MAP WM_NAME
+END_SPACE RGB_GRAY_MAP WM_NORMAL_HINTS
+FAMILY_NAME RGB_GREEN_MAP WM_SIZE_HINTS
+FONT RGB_RED_MAP WM_TRANSIENT_FOR
+FONT_NAME SECONDARY WM_ZOOM_HINTS
+FULL_NAME STRIKEOUT_ASCENT X_HEIGHT
+INTEGER STRIKEOUT_DESCENT
+.TE
+.LP
+To avoid conflicts with possible future names for which semantics might be
+imposed (either at the protocol level or in terms of higher level user
+interface models),
+names beginning with an underscore should be used for atoms
+that are private to a particular vendor or organization.
+To guarantee no conflicts between vendors and organizations,
+additional prefixes need to be used.
+However, the protocol does not define the mechanism for choosing such prefixes.
+For names private to a single application or end user but stored in globally
+accessible locations,
+it is suggested that two leading underscores be used to avoid conflicts with
+other names.
+.NH 1
+Connection Setup
+.XS
+\*(SN Connection Setup
+.XE
+.LP
+For remote clients,
+the X protocol can be built on top of any reliable byte stream.
+.SH
+Connection Initiation
+.LP
+The client must send an initial byte of data to identify the byte order to be
+employed.
+The value of the byte must be octal 102 or 154.
+The value 102 (ASCII uppercase B) means values are transmitted most significant
+byte first, and value 154 (ASCII lowercase l) means values are transmitted
+least significant byte first.
+Except where explicitly noted in the protocol,
+all 16-bit and 32-bit quantities sent by the client must be transmitted with
+this byte order,
+and all 16-bit and 32-bit quantities returned by the server will be transmitted
+with this byte order.
+.LP
+Following the byte-order byte,
+the client sends the following information at connection setup:
+.IP
+protocol-major-version: CARD16
+.br
+protocol-minor-version: CARD16
+.br
+authorization-protocol-name: STRING8
+.br
+authorization-protocol-data: STRING8
+.LP
+The version numbers indicate what version of the protocol the client
+expects the server to implement.
+.LP
+The authorization name indicates what authorization (and authentication)
+protocol the client
+expects the server to use, and the data is specific to that protocol.
+Specification of valid authorization mechanisms is not part of the core
+X protocol.
+A server that does not implement the protocol the client expects
+or that only implements the host-based mechanism may simply ignore this
+information.
+If both name and data strings are empty,
+this is to be interpreted as ``no explicit authorization.''
+.SH
+Server Response
+.LP
+The client receives the following information at connection setup:
+.IP
+success:
+.Pn { Failed ,
+.PN Success ,
+.PN Authenticate }
+.LP
+The client receives the following additional data if the returned success
+value is
+.PN Failed ,
+and the connection is not successfully established:
+.IP
+protocol-major-version: CARD16
+.br
+protocol-minor-version: CARD16
+.br
+reason: STRING8
+.LP
+The client receives the following additional data if the returned success
+value is
+.PN Authenticate ,
+and further authentication negotiation is required:
+.IP
+reason: STRING8
+.LP
+The contents of the reason string are specific to the authorization
+protocol in use. The semantics of this authentication negotiation are
+not constrained, except that the negotiation must eventually terminate
+with a reply from the server containing a success value of
+.PN Failed
+or
+.PN Success .
+.LP
+The client receives the following additional data if the returned success
+value is
+.PN Success ,
+and the connection is successfully established:
+.IP
+protocol-major-version: CARD16
+.br
+protocol-minor-version: CARD16
+.br
+vendor: STRING8
+.br
+release-number: CARD32
+.br
+resource-id-base, resource-id-mask: CARD32
+.br
+image-byte-order:
+.Pn { LSBFirst ,
+.PN MSBFirst }
+.br
+bitmap-scanline-unit: {8, 16, 32}
+.br
+bitmap-scanline-pad: {8, 16, 32}
+.br
+bitmap-bit-order:
+.Pn { LeastSignificant ,
+.PN MostSignificant }
+.br
+pixmap-formats: LISTofFORMAT
+.br
+roots: LISTofSCREEN
+.br
+motion-buffer-size: CARD32
+.br
+maximum-request-length: CARD16
+.br
+min-keycode, max-keycode: KEYCODE
+.IP
+where:
+.TS
+rw(1.25i) lw(4i).
+T{
+FORMAT:
+T} T{
+[depth: CARD8,
+.br
+\ bits-per-pixel: {1, 4, 8, 16, 24, 32}
+.br
+\ scanline-pad: {8, 16, 32}]
+T}
+.sp
+T{
+SCREEN:
+T} T{
+[root: WINDOW
+.br
+\ width-in-pixels, height-in-pixels: CARD16
+.br
+\ width-in-millimeters, height-in-millimeters: CARD16
+.br
+\ allowed-depths: LISTofDEPTH
+.br
+\ root-depth: CARD8
+.br
+\ root-visual: VISUALID
+.br
+\ default-colormap: COLORMAP
+.br
+\ white-pixel, black-pixel: CARD32
+.br
+\ min-installed-maps, max-installed-maps: CARD16
+.br
+\ backing-stores:
+.Pn { Never ,
+.PN WhenMapped ,
+.PN Always }
+.br
+\ save-unders: BOOL
+.br
+\ current-input-masks: SETofEVENT]
+T}
+.sp
+T{
+DEPTH:
+T} T{
+[depth: CARD8
+.br
+\ visuals: LISTofVISUALTYPE]
+T}
+.sp
+T{
+VISUALTYPE:
+T} T{
+[visual-id: VISUALID
+.br
+\ class:
+.Pn { StaticGray ,
+.PN StaticColor ,
+.PN TrueColor ,
+.PN GrayScale ,
+.br
+\ \ \ \ \ \ \ \ \ \
+.PN PseudoColor ,
+.PN DirectColor }
+.br
+\ red-mask, green-mask, blue-mask: CARD32
+.br
+\ bits-per-rgb-value: CARD8
+.br
+\ colormap-entries: CARD16]
+T}
+.TE
+.SH
+Server Information
+.LP
+The information that is global to the server is:
+.LP
+The protocol version numbers are an escape hatch in case future revisions of
+the protocol are necessary.
+In general,
+the major version would increment for incompatible changes,
+and the minor version would increment for small upward compatible changes.
+Barring changes,
+the major version will be 11, and the minor version will be 0.
+The protocol version numbers returned indicate the protocol the server
+actually supports.
+This might not equal the version sent by the client.
+The server can (but need not) refuse connections from clients that offer a
+different version than the server supports.
+A server can (but need not) support more than one version simultaneously.
+.LP
+The vendor string gives some identification of the owner of the server
+implementation.
+The vendor controls the semantics of the release number.
+.LP
+The resource-id-mask contains a single contiguous set of bits (at least 18).
+The client allocates resource IDs for types WINDOW, PIXMAP,
+CURSOR, FONT, GCONTEXT, and COLORMAP by choosing a value with only
+some subset of these bits set and ORing it with resource-id-base.
+Only values constructed in this way can be used to name newly created
+resources over this connection.
+Resource IDs never have the top three bits set.
+The client is not restricted to linear or contiguous allocation
+of resource IDs.
+Once an ID has been freed,
+it can be reused.
+An ID must be unique with respect to the IDs of all other resources,
+not just other resources of the same type.
+However, note that the value spaces of resource identifiers,
+atoms, visualids, and keysyms are distinguished by context, and
+as such, are not required to be disjoint; for example, a given numeric value
+might be both a valid window ID, a valid atom, and a valid keysym.
+.LP
+Although the server is in general responsible for byte-swapping data to
+match the client,
+images are always transmitted and received in formats (including byte order)
+specified by the server.
+The byte order for images is given by image-byte-order and applies to each
+scanline unit in XY format (bitmap format) and to each pixel value in Z format.
+.LP
+A bitmap is represented in scanline order.
+Each scanline is padded to a multiple of bits as given by bitmap-scanline-pad.
+The pad bits are of arbitrary value.
+The scanline is quantized in multiples of bits as given by bitmap-scanline-unit.
+The bitmap-scanline-unit is always less than or equal to the
+bitmap-scanline-pad.
+Within each unit,
+the leftmost bit in the bitmap is either the least significant
+or most significant bit in the unit, as given by bitmap-bit-order.
+If a pixmap is represented in XY format,
+each plane is represented as a bitmap, and the planes appear from
+most significant to least significant in bit order with no padding
+between planes.
+.LP
+Pixmap-formats contains one entry for each depth value.
+The entry describes the Z format used to represent images of that depth.
+An entry for a depth is included if any screen supports that depth,
+and all screens supporting that depth must support only that Z format for that
+depth.
+In Z format,
+the pixels are in scanline order, left to right within a scanline.
+The number of bits used to hold each pixel is given by bits-per-pixel.
+Bits-per-pixel may be larger than strictly required by the depth,
+in which case the least significant bits are used to hold
+the pixmap data, and the values of the unused high-order bits are
+undefined.
+When the bits-per-pixel is 4,
+the order of nibbles in the byte is the same as the image byte-order.
+When the bits-per-pixel is 1,
+the format is identical for bitmap format.
+Each scanline is padded to a multiple of bits as given by scanline-pad.
+When bits-per-pixel is 1,
+this will be identical to bitmap-scanline-pad.
+.LP
+How a pointing device roams the screens is up to the server
+implementation and is transparent to the protocol.
+No geometry is defined among screens.
+.LP
+The server may retain the recent history of pointer motion and do so to a
+finer granularity than is reported by
+.PN MotionNotify
+events.
+The
+.PN GetMotionEvents
+request makes such history available.
+The motion-buffer-size gives the approximate maximum number
+of elements in the history buffer.
+.LP
+Maximum-request-length specifies the maximum length of a request
+accepted by the server, in 4-byte units.
+That is, length is the maximum value that can appear in the length field of a
+request.
+Requests larger than this maximum generate a
+.PN Length
+error,
+and the server will read and simply discard the entire request.
+Maximum-request-length will always be at least 4096
+(that is, requests of length up to and including 16384 bytes
+will be accepted by all servers).
+.LP
+Min-keycode and max-keycode specify the smallest and largest keycode
+values transmitted by the server.
+Min-keycode is never less than 8,
+and max-keycode is never greater than 255.
+Not all keycodes in this range are required to have corresponding keys.
+.SH
+Screen Information
+.LP
+The information that applies per screen is:
+.LP
+The allowed-depths specifies what pixmap and window depths are supported.
+Pixmaps are supported for each depth listed,
+and windows of that depth are supported if at least one visual type is listed
+for the depth.
+A pixmap depth of one is always supported and listed,
+but windows of depth one might not be supported.
+A depth of zero is never listed,
+but zero-depth
+.PN InputOnly
+windows are always supported.
+.LP
+Root-depth and root-visual specify the depth and visual type of the
+root window.
+Width-in-pixels and height-in-pixels specify the size of
+the root window (which cannot be changed).
+The class of the root window is always
+.PN InputOutput .
+Width-in-millimeters and height-in-millimeters can be used to determine the
+physical size and the aspect ratio.
+.LP
+The default-colormap is the one initially associated with the root window.
+Clients with minimal color requirements creating windows of
+the same depth as the root may want to allocate from this map by
+default.
+.LP
+Black-pixel and white-pixel can be used in implementing a monochrome
+application.
+These pixel values are for permanently allocated entries in the
+default-colormap.
+The actual RGB values may be settable on some screens
+and, in any case, may not actually be black and white.
+The names are intended to convey the expected relative intensity of the colors.
+.LP
+The border of the root window is initially a pixmap filled with the black-pixel.
+The initial background of the root window is a pixmap filled with some
+unspecified two-color pattern using black-pixel and white-pixel.
+.LP
+Min-installed-maps specifies the number of maps that can be guaranteed
+to be installed simultaneously (with
+.PN InstallColormap ),
+regardless of the number of entries allocated in each map.
+Max-installed-maps specifies the maximum number of maps that might possibly be
+installed simultaneously, depending on their allocations.
+Multiple static-visual colormaps with identical contents but differing in
+resource ID should be considered as a single map for the purposes of this
+number.
+For the typical case of a single hardware colormap, both values will be 1.
+.LP
+Backing-stores indicates when the server supports backing stores for
+this screen, although it may be storage limited in the number of
+windows it can support at once.
+If save-unders is
+.PN True ,
+the server can support the save-under mode in
+.PN CreateWindow
+and
+.PN ChangeWindowAttributes ,
+although again it may be storage limited.
+.LP
+The current-input-events is what
+.PN GetWindowAttributes
+would return for the all-event-masks for the root window.
+.SH
+Visual Information
+.LP
+The information that applies per visual-type is:
+.LP
+A given visual type might be listed for more than one depth or for
+more than one screen.
+.LP
+For
+.PN PseudoColor ,
+a pixel value indexes a colormap to produce independent RGB values;
+the RGB values can be changed dynamically.
+.PN GrayScale
+is treated in the same way as
+.PN PseudoColor
+except which primary drives the screen is undefined;
+thus, the client should always store the
+same value for red, green, and blue in colormaps.
+For
+.PN DirectColor ,
+a pixel value is decomposed into separate RGB subfields,
+and each subfield separately indexes the colormap for the corresponding value.
+The RGB values can be changed dynamically.
+.PN TrueColor
+is treated in the same way as
+.PN DirectColor
+except the colormap has predefined read-only RGB values.
+These values are server-dependent but provide linear or near-linear
+increasing ramps in each primary.
+.PN StaticColor
+is treated in the same way as
+.PN PseudoColor
+except the colormap has predefined read-only RGB values,
+which are server-dependent.
+.PN StaticGray
+is treated in the same way as
+.PN StaticColor
+except the red, green, and blue values are equal for any
+single pixel value, resulting in shades of gray.
+.PN StaticGray
+with a two-entry colormap can be thought of as monochrome.
+.LP
+The red-mask, green-mask, and blue-mask are only defined for
+.PN DirectColor
+and
+.PN TrueColor .
+Each has one contiguous set of bits set to 1 with no intersections.
+Usually each mask has the same number of bits set to 1.
+.LP
+The bits-per-rgb-value specifies the log base 2 of the number of
+distinct color intensity values (individually) of red, green, and blue.
+This number need not bear any relation to the number of colormap entries.
+Actual RGB values are always passed in the protocol within a
+16-bit spectrum, with 0 being minimum intensity and 65535 being the
+maximum intensity.
+On hardware that provides a linear zero-based intensity ramp,
+the following relationship exists:
+.LP
+.RS
+.DS
+hw-intensity = protocol-intensity / (65536 / total-hw-intensities)
+.DE
+.RE
+.LP
+Colormap entries are indexed from 0.
+The colormap-entries defines the number of available colormap entries in a
+newly created colormap.
+For
+.PN DirectColor
+and
+.PN TrueColor ,
+this will usually be 2 to the power of the maximum number of bits set to 1 in
+red-mask, green-mask, and blue-mask.
+.NH 1
+Requests
+.XS
+\*(SN Requests
+.XE
+.EQ
+delim %%
+.EN
+.LP
+.sM
+.IN "CreateWindow" "" "@DEF@"
+.PN CreateWindow
+.in +.2i
+.LP
+\fIwid\fP, \fIparent\fP\^: WINDOW
+.br
+\fIclass\fP\^:
+.Pn { InputOutput ,
+.PN InputOnly ,
+.PN CopyFromParent }
+.br
+\fIdepth\fP\^: CARD8
+.br
+\fIvisual\fP\^: VISUALID or
+.PN CopyFromParent
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP, \fIborder-width\fP\^: CARD16
+.br
+\fIvalue-mask\fP\^: BITMASK
+.br
+\fIvalue-list\fP\^: LISTofVALUE
+.LP
+Errors:
+.PN Alloc ,
+.PN Colormap ,
+.PN Cursor ,
+.PN IDChoice ,
+.PN Match ,
+.PN Pixmap ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request creates an unmapped window and assigns the identifier wid to it.
+.LP
+A class of
+.PN CopyFromParent
+means the class is taken from the parent.
+A depth of zero for class
+.PN InputOutput
+or
+.PN CopyFromParent
+means the depth is taken from the parent.
+A visual of
+.PN CopyFromParent
+means the visual type is taken from the parent.
+For class
+.PN InputOutput ,
+the visual type and depth must be a combination supported for the screen
+(or a
+.PN Match
+error results).
+The depth need not be the same as the parent,
+but the parent must not be of class
+.PN InputOnly
+(or a
+.PN Match
+error results).
+For class
+.PN InputOnly ,
+the depth must be zero (or a
+.PN Match
+error results), and the visual must be one supported for the screen (or a
+.PN Match
+error results).
+However, the parent can have any depth and class.
+.LP
+The server essentially acts as if
+.PN InputOnly
+windows do not exist for the purposes of graphics requests,
+exposure processing, and
+.PN VisibilityNotify
+events.
+An
+.PN InputOnly
+window cannot be used as a drawable (as a source or destination for graphics
+requests).
+.PN InputOnly
+and
+.PN InputOutput
+windows act identically in other respects\-properties,
+grabs, input control, and so on.
+.LP
+The coordinate system has the X axis horizontal and the Y axis vertical
+with the origin [0, 0] at the upper-left corner.
+Coordinates are integral,
+in terms of pixels,
+and coincide with pixel centers.
+Each window and pixmap has its own coordinate system.
+For a window,
+the origin is inside the border at the inside, upper-left corner.
+.LP
+The x and y coordinates
+for the window are relative to the parent's origin
+and specify the position of the upper-left outer corner of the window
+(not the origin).
+The width and height specify the inside size (not including the border)
+and must be nonzero (or a
+.PN Value
+error results).
+The border-width for an
+.PN InputOnly
+window must be zero (or a
+.PN Match
+error results).
+.LP
+The window is placed on top in the stacking order with respect to siblings.
+.LP
+The value-mask and value-list specify attributes of the window that are
+to be explicitly initialized.
+The possible values are:
+.TS H
+l lw(2.6i).
+_
+.sp 6p
+.B
+Attribute Type
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+background-pixmap
+T} T{
+PIXMAP or
+.PN None
+or
+.PN ParentRelative
+T}
+T{
+background-pixel
+T} T{
+CARD32
+T}
+T{
+border-pixmap
+T} T{
+PIXMAP or
+.PN CopyFromParent
+T}
+T{
+border-pixel
+T} T{
+CARD32
+T}
+T{
+bit-gravity
+T} T{
+BITGRAVITY
+T}
+T{
+win-gravity
+T} T{
+WINGRAVITY
+T}
+T{
+backing-store
+T} T{
+.Pn { NotUseful ,
+.PN WhenMapped ,
+.PN Always }
+T}
+T{
+backing-planes
+T} T{
+CARD32
+T}
+T{
+backing-pixel
+T} T{
+CARD32
+T}
+T{
+save-under
+T} T{
+BOOL
+T}
+T{
+event-mask
+T} T{
+SETofEVENT
+T}
+T{
+do-not-propagate-mask
+T} T{
+SETofDEVICEEVENT
+T}
+T{
+override-redirect
+T} T{
+BOOL
+T}
+T{
+colormap
+T} T{
+COLORMAP or
+.PN CopyFromParent
+T}
+T{
+cursor
+T} T{
+CURSOR or
+.PN None
+T}
+.sp 6p
+_
+.TE
+.LP
+The default values when attributes are not explicitly initialized
+are:
+.TS H
+l l.
+_
+.sp 6p
+.B
+Attribute Default
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+background-pixmap
+T} T{
+.PN None
+T}
+T{
+border-pixmap
+T} T{
+.PN CopyFromParent
+T}
+T{
+bit-gravity
+T} T{
+.PN Forget
+T}
+T{
+win-gravity
+T} T{
+.PN NorthWest
+T}
+T{
+backing-store
+T} T{
+.PN NotUseful
+T}
+T{
+backing-planes
+T} T{
+all ones
+T}
+T{
+backing-pixel
+T} T{
+zero
+T}
+T{
+save-under
+T} T{
+.PN False
+T}
+T{
+event-mask
+T} T{
+{} (empty set)
+T}
+T{
+do-not-propagate-mask
+T} T{
+{} (empty set)
+T}
+T{
+override-redirect
+T} T{
+.PN False
+T}
+T{
+colormap
+T} T{
+.PN CopyFromParent
+T}
+T{
+cursor
+T} T{
+.PN None
+T}
+.sp 6p
+_
+.TE
+.LP
+Only the following attributes are defined for
+.PN InputOnly
+windows:
+.IP \(bu 5
+win-gravity
+.IP \(bu 5
+event-mask
+.IP \(bu 5
+do-not-propagate-mask
+.IP \(bu 5
+override-redirect
+.IP \(bu 5
+cursor
+.LP
+It is a
+.PN Match
+error to specify any other attributes for
+.PN InputOnly
+windows.
+.LP
+If background-pixmap is given,
+it overrides the default background-pixmap.
+The background pixmap and the window must have the
+same root and the same depth (or a
+.PN Match
+error results).
+Any size pixmap can be used, although some sizes may be faster than others.
+If background
+.PN None
+is specified, the window has no defined background.
+If background
+.PN ParentRelative
+is specified, the parent's background is used,
+but the window must have the same depth as the parent (or a
+.PN Match
+error results).
+If the parent has background
+.PN None ,
+then the window will also have background
+.PN None .
+A copy of the parent's background is not made.
+The parent's background is reexamined each time the window background is
+required.
+If background-pixel is given, it overrides the default
+background-pixmap and any background-pixmap given explicitly,
+and a pixmap of undefined size filled with background-pixel is used for the
+background.
+Range checking is not performed on the background-pixel value;
+it is simply truncated to the appropriate number of bits.
+For a
+.PN ParentRelative
+background,
+the background tile origin always aligns with the parent's background tile
+origin.
+Otherwise, the background tile origin is always the window origin.
+.LP
+When no valid contents are available for regions of a window
+and the regions are either visible or the server is maintaining backing store,
+the server automatically tiles the regions with the window's background
+unless the window has a background of
+.PN None .
+If the background is
+.PN None ,
+the previous screen contents from other windows of the same depth as the window
+are simply left in place if the contents come from the parent of the window
+or an inferior of the parent;
+otherwise, the initial contents of the exposed regions are undefined.
+Exposure events are then generated for the regions, even if the background is
+.PN None .
+.LP
+The border tile origin is always the same as the background tile origin.
+If border-pixmap is given,
+it overrides the default border-pixmap.
+The border pixmap and the window must have the same root
+and the same depth (or a
+.PN Match
+error results).
+Any size pixmap can be used,
+although some sizes may be faster than others.
+If
+.PN CopyFromParent
+is given, the parent's border pixmap is copied (subsequent changes to
+the parent's border attribute do not affect the child),
+but the window must have the same depth as the parent (or a
+.PN Match
+error results).
+The pixmap might be copied by sharing the same pixmap object between the
+child and parent or by making a complete copy of the pixmap contents.
+If border-pixel is given,
+it overrides the default border-pixmap and any border-pixmap given explicitly,
+and a pixmap of undefined size filled with border-pixel is used for the border.
+Range checking is not performed on the border-pixel value;
+it is simply truncated to the appropriate number of bits.
+.LP
+Output to a window is always clipped to the inside of the window,
+so that the border is never affected.
+.LP
+The bit-gravity defines which region of the window should be retained
+if the window is resized, and win-gravity defines how the window should
+be repositioned if the parent is resized (see
+.PN ConfigureWindow
+request).
+.LP
+A backing-store of
+.PN WhenMapped
+advises the server that maintaining contents of obscured regions
+when the window is mapped would be beneficial.
+A backing-store of
+.PN Always
+advises the server that maintaining contents even when the window is
+unmapped would be beneficial.
+In this case,
+the server may generate an exposure event when the window is created.
+A value of
+.PN NotUseful
+advises the server that maintaining contents is unnecessary,
+although a server may still choose to maintain contents while the window
+is mapped.
+Note that if the server maintains contents,
+then the server should maintain complete contents
+not just the region within the parent boundaries,
+even if the window is larger than its parent.
+While the server maintains contents,
+exposure events will not normally be generated,
+but the server may stop maintaining contents at any time.
+.LP
+If save-under is
+.PN True ,
+the server is advised that when this window is
+mapped, saving the contents of windows it obscures would be beneficial.
+.LP
+When the contents of obscured regions of a window are being maintained,
+regions obscured by noninferior windows are included in the
+destination (and source, when the window is the source) of graphics
+requests, but regions obscured by inferior windows are not included.
+.LP
+The backing-planes indicates (with bits set to 1) which bit planes
+of the window hold dynamic data that must be preserved in backing-stores
+and during save-unders.
+The backing-pixel specifies what value to use in planes not
+covered by backing-planes.
+The server is free to save only the specified bit planes in the backing-store
+or save-under and regenerate the remaining planes with the specified pixel
+value.
+Any bits beyond the specified depth of the window in these
+values are simply ignored.
+.LP
+The event-mask defines which events the client is interested in for
+this window (or for some event types, inferiors of the window).
+The do-not-propagate-mask defines which events should not be propagated to
+ancestor windows when no client has the event type selected in this
+window.
+.LP
+The override-redirect specifies whether map and configure requests on this
+window should override a
+.PN SubstructureRedirect
+on the parent, typically to inform a window manager not to tamper with
+the window.
+.LP
+The colormap specifies the colormap that best reflects the true
+colors of the window.
+Servers capable of supporting multiple hardware colormaps may use this
+information, and window managers may use it for
+.PN InstallColormap
+requests.
+The colormap must have the same visual type and root as the window (or a
+.PN Match
+error results).
+If
+.PN CopyFromParent
+is specified,
+the parent's colormap is copied (subsequent changes to the parent's
+colormap attribute do not affect the child).
+However, the window must have the same visual type as the parent (or a
+.PN Match
+error results), and the parent must not have a colormap of
+.PN None
+(or a
+.PN Match
+error results).
+For an explanation of
+.PN None ,
+see
+.PN FreeColormap
+request.
+The colormap is copied by sharing the colormap object between the child
+and the parent,
+not by making a complete copy of the colormap contents.
+.LP
+If a cursor is specified,
+it will be used whenever the pointer is in the window.
+If
+.PN None
+is specified,
+the parent's cursor will be used when the pointer is in the window,
+and any change in the parent's cursor will cause an immediate change
+in the displayed cursor.
+.LP
+This request generates a
+.PN CreateNotify
+event.
+.LP
+The background and border pixmaps and the cursor may be freed
+immediately if no further explicit references to them are to be made.
+.LP
+Subsequent drawing into the background or border pixmap has an
+undefined effect on the window state.
+The server might or might not make a copy of the pixmap.
+.sp
+.LP
+.sM
+.IN "ChangeWindowAttributes" "" "@DEF@"
+.PN ChangeWindowAttributes
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIvalue-mask\fP\^: BITMASK
+.br
+\fIvalue-list\fP\^: LISTofVALUE
+.LP
+Errors:
+.PN Access ,
+.PN Colormap ,
+.PN Cursor ,
+.PN Match ,
+.PN Pixmap ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+The value-mask and value-list specify which attributes are to be changed.
+The values and restrictions are the same as for
+.PN CreateWindow .
+.LP
+Setting a new background, whether by background-pixmap or
+background-pixel, overrides any previous background.
+Setting a new border, whether by border-pixel or border-pixmap,
+overrides any previous border.
+.LP
+Changing the background does not cause the window contents to be changed.
+Setting the border or changing the background such that the
+border tile origin changes causes the border to be repainted.
+Changing the background of a root window to
+.PN None
+or
+.PN ParentRelative
+restores the default background pixmap.
+Changing the border of a root window to
+.PN CopyFromParent
+restores the default border pixmap.
+.LP
+Changing the win-gravity does not affect the current position of the
+window.
+.LP
+Changing the backing-store of an obscured window to
+.PN WhenMapped
+or
+.PN Always
+or changing the backing-planes, backing-pixel, or save-under of
+a mapped window may have no immediate effect.
+.LP
+Multiple clients can select input on the same window;
+their event-masks are disjoint.
+When an event is generated,
+it will be reported to all interested clients.
+However, only one client at a time can select for
+.PN SubstructureRedirect ,
+only one client at a time can select for
+.PN ResizeRedirect ,
+and only one client at a time can select for
+.PN ButtonPress .
+An attempt to violate these restrictions results in an
+.PN Access
+error.
+.LP
+There is only one do-not-propagate-mask for a window, not one per
+client.
+.LP
+Changing the colormap of a window (by defining a new map, not by
+changing the contents of the existing map) generates a
+.PN ColormapNotify
+event.
+Changing the colormap of a visible window might have no immediate effect
+on the screen (see
+.PN InstallColormap
+request).
+.LP
+Changing the cursor of a root window to
+.PN None
+restores the default cursor.
+.LP
+The order in which attributes are verified and altered is server-dependent.
+If an error is generated,
+a subset of the attributes may have been altered.
+.sp
+.LP
+.sM
+.IN "GetWindowAttributes" "" "@DEF@"
+.PN GetWindowAttributes
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+visual: VISUALID
+.br
+class:
+.Pn { InputOutput ,
+.PN InputOnly }
+.br
+bit-gravity: BITGRAVITY
+.br
+win-gravity: WINGRAVITY
+.br
+backing-store:
+.Pn { NotUseful ,
+.PN WhenMapped ,
+.PN Always }
+.br
+backing-planes: CARD32
+.br
+backing-pixel: CARD32
+.br
+save-under: BOOL
+.br
+colormap: COLORMAP or
+.PN None
+.br
+map-is-installed: BOOL
+.br
+map-state:
+.Pn { Unmapped ,
+.PN Unviewable ,
+.PN Viewable }
+.br
+all-event-masks, your-event-mask: SETofEVENT
+.br
+do-not-propagate-mask: SETofDEVICEEVENT
+.br
+override-redirect: BOOL
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request returns the current attributes of the window.
+A window is
+.PN Unviewable
+if it is mapped but some ancestor is unmapped.
+All-event-masks is the inclusive-OR of all event masks selected on the window
+by clients.
+Your-event-mask is the event mask selected by the querying client.
+.sp
+.LP
+.sM
+.IN "DestroyWindow" "" "@DEF@"
+.PN DestroyWindow
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+If the argument window is mapped,
+an
+.PN UnmapWindow
+request is performed automatically.
+The window and all inferiors are then destroyed, and a
+.PN DestroyNotify
+event is generated for each window.
+The ordering of the
+.PN DestroyNotify
+events is such that for any given window,
+.PN DestroyNotify
+is generated on all inferiors of the window before being generated on
+the window itself.
+The ordering among siblings and across subhierarchies is not otherwise
+constrained.
+.LP
+Normal exposure processing on formerly obscured windows is performed.
+.LP
+If the window is a root window,
+this request has no effect.
+.sp
+.LP
+.sM
+.IN "DestroySubwindows" "" "@DEF@"
+.PN DestroySubwindows
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request performs a
+.PN DestroyWindow
+request on all children of the window, in bottom-to-top stacking order.
+.sp
+.LP
+.sM
+.IN "ChangeSaveSet" "" "@DEF@"
+.PN ChangeSaveSet
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fImode\fP\^:
+.Pn { Insert ,
+.PN Delete }
+.LP
+Errors:
+.PN Match ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request adds or removes the specified window from the client's
+save-set.
+The window must have been created by some other client (or a
+.PN Match
+error results).
+For further information about the use of the save-set,
+see section 10.
+.LP
+When windows are destroyed,
+the server automatically removes them from the save-set.
+.sp
+.LP
+.sM
+.IN "ReparentWindow" "" "@DEF@"
+.PN ReparentWindow
+.in +.2i
+.LP
+\fIwindow\fP\^, \fIparent\fP\^: WINDOW
+.br
+\fIx\fP\^, \fIy\fP\^: INT16
+.LP
+Errors:
+.PN Match ,
+.PN Window
+.in -.2i
+.eM
+.LP
+If the window is mapped,
+an
+.PN UnmapWindow
+request is performed automatically first.
+The window is then removed from its current position in the hierarchy
+and is inserted as a child of the specified parent.
+The x and y coordinates are relative to the parent's origin
+and specify the new position of the upper-left outer corner of the
+window.
+The window is placed on top in the stacking order with respect
+to siblings.
+A
+.PN ReparentNotify
+event is then generated.
+The override-redirect attribute of the window is passed on in this event;
+a value of
+.PN True
+indicates that a window manager should not tamper with this window.
+Finally, if the window was originally mapped, a
+.PN MapWindow
+request is performed automatically.
+.LP
+Normal exposure processing on formerly obscured windows is performed.
+The server might not generate exposure events for regions from the
+initial unmap that are immediately obscured by the final map.
+.LP
+A
+.PN Match
+error is generated if:
+.IP \(bu 5
+The new parent is not on the same screen as the old parent.
+.IP \(bu 5
+The new parent is the window itself or an inferior of the window.
+.IP \(bu 5
+The new parent is
+.PN InputOnly ,
+and the window is not.
+.IP \(bu 5
+The window has a
+.PN ParentRelative
+background, and the new parent is not the same depth as the window.
+.sp
+.LP
+.sM
+.IN "MapWindow" "" "@DEF@"
+.PN MapWindow
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+If the window is already mapped, this request has no effect.
+.LP
+If the override-redirect attribute of the window is
+.PN False
+and some other client has selected
+.PN SubstructureRedirect
+on the parent, then a
+.PN MapRequest
+event is generated, but the window remains unmapped.
+Otherwise, the window is mapped,
+and a
+.PN MapNotify
+event is generated.
+.LP
+If the window is now viewable and its contents have been discarded,
+the window is tiled with its background (if no background is defined,
+the existing screen contents are not altered), and zero or more exposure
+events are generated.
+If a backing-store has been maintained while the window was unmapped,
+no exposure events are generated.
+If a backing-store will now be maintained,
+a full-window exposure is always generated.
+Otherwise, only visible regions may be reported.
+Similar tiling and exposure take place for any newly viewable inferiors.
+.sp
+.LP
+.sM
+.IN "MapSubwindows" "" "@DEF@"
+.PN MapSubwindows
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request performs a
+.PN MapWindow
+request on all unmapped children of the window,
+in top-to-bottom stacking order.
+.sp
+.LP
+.sM
+.IN "UnmapWindow" "" "@DEF@"
+.PN UnmapWindow
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+If the window is already unmapped, this request has no effect.
+Otherwise, the window is unmapped, and an
+.PN UnmapNotify
+event is generated.
+Normal exposure processing on formerly obscured windows is performed.
+.sp
+.LP
+.sM
+.IN "UnmapSubwindows" "" "@DEF@"
+.PN UnmapSubwindows
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request performs an
+.PN UnmapWindow
+request on all mapped children of the window,
+in bottom-to-top stacking order.
+.sp
+.LP
+.sM
+.IN "ConfigureWindow" "" "@DEF@"
+.PN ConfigureWindow
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIvalue-mask\fP\^: BITMASK
+.br
+\fIvalue-list\fP\^: LISTofVALUE
+.LP
+Errors:
+.PN Match ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request changes the configuration of the window.
+The value-mask and value-list specify which values are to be given.
+The possible values are:
+.TS H
+l lw(3.1i).
+_
+.sp 6p
+.B
+Attribute Type
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+x
+T} T{
+INT16
+T}
+T{
+y
+T} T{
+INT16
+T}
+T{
+width
+T} T{
+CARD16
+T}
+T{
+height
+T} T{
+CARD16
+T}
+T{
+border-width
+T} T{
+CARD16
+T}
+T{
+sibling
+T} T{
+WINDOW
+T}
+T{
+stack-mode
+T} T{
+.Pn { Above ,
+.PN Below ,
+.PN TopIf ,
+.PN BottomIf ,
+.PN Opposite }
+T}
+.sp 6p
+_
+.TE
+.LP
+The x and y coordinates are relative to the parent's origin
+and specify the position of the upper-left outer corner of the window.
+The width and height specify the inside size, not including the border, and
+must be nonzero (or a
+.PN Value
+error results).
+Those values not specified are taken from the existing geometry of the window.
+Note that changing just the border-width leaves the outer-left corner
+of the window in a fixed position but moves the absolute position of the
+window's origin.
+It is a
+.PN Match
+error to attempt to make the border-width of an
+.PN InputOnly
+window nonzero.
+.LP
+If the override-redirect attribute of the window is
+.PN False
+and some other client has selected
+.PN SubstructureRedirect
+on the parent, a
+.PN ConfigureRequest
+event is generated, and no further processing is performed.
+Otherwise, the following is performed:
+.LP
+If some other client has selected
+.PN ResizeRedirect
+on the window and the inside width or height of the window is being changed,
+a
+.PN ResizeRequest
+event is generated,
+and the current inside width and height are used instead.
+Note that the override-redirect attribute of the window has no effect on
+.PN ResizeRedirect
+and that
+.PN SubstructureRedirect
+on the parent has precedence over
+.PN ResizeRedirect
+on the window.
+.LP
+The geometry of the window is changed as specified,
+the window is restacked among siblings, and a
+.PN ConfigureNotify
+event is generated if the state of the window actually changes.
+If the inside width or height of the window has actually changed,
+then children of the window are affected,
+according to their win-gravity.
+Exposure processing is performed on formerly obscured windows
+(including the window itself and its inferiors if regions of them were
+obscured but now are not).
+Exposure processing is also performed on any new regions of the window
+(as a result of increasing the width or height)
+and on any regions where window contents are lost.
+.LP
+If the inside width or height of a window is not changed
+but the window is moved or its border is changed,
+then the contents of the window are not lost but move with the window.
+Changing the inside width or height of the window causes its contents to be
+moved or lost, depending on the bit-gravity of the window.
+It also causes children to be reconfigured, depending on their win-gravity.
+For a change of width and height of W and H,
+we define the [x, y] pairs as:
+.TS H
+l l.
+_
+.sp 6p
+.B
+Direction Deltas
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+.PN NorthWest
+T} T{
+[\^0, 0\^]
+T}
+T{
+.PN North
+T} T{
+[\^W/2, 0\^]
+T}
+T{
+.PN NorthEast
+T} T{
+[\^W, 0\^]
+T}
+T{
+.PN West
+T} T{
+[\^0, H/2\^]
+T}
+T{
+.PN Center
+T} T{
+[\^W/2, H/2\^]
+T}
+T{
+.PN East
+T} T{
+[\^W, H/2\^]
+T}
+T{
+.PN SouthWest
+T} T{
+[\^0, H\^]
+T}
+T{
+.PN South
+T} T{
+[\^W/2, H\^]
+T}
+T{
+.PN SouthEast
+T} T{
+[\^W, H\^]
+T}
+.sp 6p
+_
+.TE
+.LP
+When a window with one of these bit-gravities is resized,
+the corresponding pair defines the change in position of each pixel in the
+window.
+When a window with one of these win-gravities has its parent window resized,
+the corresponding pair defines the change in position
+of the window within the parent.
+This repositioning generates a
+.PN GravityNotify
+event.
+.PN GravityNotify
+events are generated after the
+.PN ConfigureNotify
+event is generated.
+.LP
+A gravity of
+.PN Static
+indicates that the contents or origin should not move relative to the origin
+of the root window.
+If the change in size of the window is coupled with a change
+in position of [X, Y],
+then for bit-gravity the change in position of each pixel is [\-X, \-Y] and for
+win-gravity the change in position of a child when its parent is so
+resized is [\-X, \-Y].
+Note that
+.PN Static
+gravity still only takes effect when the width or height of the
+window is changed, not when the window is simply moved.
+.LP
+A bit-gravity of
+.PN Forget
+indicates that the window contents are always discarded after a size change,
+even if backing-store or save-under has been requested.
+The window is tiled with its background (except, if no background is defined,
+the existing screen contents are not altered)
+and zero or more exposure events are generated.
+.LP
+The contents and borders of inferiors are not affected by their parent's
+bit-gravity.
+A server is permitted to ignore the specified bit-gravity and use
+.PN Forget
+instead.
+.LP
+A win-gravity of
+.PN Unmap
+is like
+.PN NorthWest ,
+but the child is also unmapped when the parent is resized,
+and an
+.PN UnmapNotify
+event is generated.
+.PN UnmapNotify
+events are generated after the
+.PN ConfigureNotify
+event is generated.
+.LP
+If a sibling and a stack-mode are specified,
+the window is restacked as follows:
+.TS
+lw(1i) lw(4.75i).
+T{
+.PN Above
+T} T{
+The window is placed just above the sibling.
+T}
+.sp 6p
+T{
+.PN Below
+T} T{
+The window is placed just below the sibling.
+T}
+.sp 6p
+T{
+.PN TopIf
+T} T{
+If the sibling occludes the window,
+then the window is placed at the top of the stack.
+T}
+.sp 6p
+T{
+.PN BottomIf
+T} T{
+If the window occludes the sibling,
+then the window is placed at the bottom of the stack.
+T}
+.sp 6p
+T{
+.PN Opposite
+T} T{
+If the sibling occludes the window,
+then the window is placed at the top of the stack.
+Otherwise, if the window occludes the sibling,
+then the window is placed at the bottom of the stack.
+T}
+.TE
+.LP
+If a stack-mode is specified but no sibling is specified,
+the window is restacked as follows:
+.TS
+lw(1i) lw(4.75i).
+T{
+.PN Above
+T} T{
+The window is placed at the top of the stack.
+T}
+.sp 6p
+T{
+.PN Below
+T} T{
+The window is placed at the bottom of the stack.
+T}
+.sp 6p
+T{
+.PN TopIf
+T} T{
+If any sibling occludes the window,
+then the window is placed at the top of the stack.
+T}
+.sp 6p
+T{
+.PN BottomIf
+T} T{
+If the window occludes any sibling,
+then the window is placed at the bottom of the stack.
+T}
+.sp 6p
+T{
+.PN Opposite
+T} T{
+If any sibling occludes the window,
+then the window is placed at the top of the stack.
+Otherwise, if the window occludes any sibling,
+then the window is placed at the bottom of the stack.
+T}
+.TE
+.LP
+It is a
+.PN Match
+error if a sibling is specified without a stack-mode
+or if the window is not actually a sibling.
+.LP
+Note that the computations for
+.PN BottomIf ,
+.PN TopIf ,
+and
+.PN Opposite
+are performed with respect to the window's final geometry (as controlled by
+the other arguments to the request), not to its initial geometry.
+.LP
+Attempts to configure a root window have no effect.
+.sp
+.LP
+.sM
+.IN "CirculateWindow" "" "@DEF@"
+.PN CirculateWindow
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIdirection\fP\^:
+.Pn { RaiseLowest ,
+.PN LowerHighest }
+.LP
+Errors:
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+If some other client has selected
+.PN SubstructureRedirect
+on the window, then a
+.PN CirculateRequest
+event is generated, and no further processing is performed.
+Otherwise, the following is performed, and then a
+.PN CirculateNotify
+event is generated if the window is actually restacked.
+.LP
+For
+.PN RaiseLowest ,
+.PN CirculateWindow
+raises the lowest mapped child (if any) that is
+occluded by another child to the top of the stack.
+For
+.PN LowerHighest ,
+.PN CirculateWindow
+lowers the highest mapped child (if any) that occludes another child to
+the bottom of the stack.
+Exposure processing is performed on formerly obscured windows.
+.sp
+.LP
+.sM
+.IN "GetGeometry" "" "@DEF@"
+.PN GetGeometry
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+root: WINDOW
+.br
+depth: CARD8
+.br
+x, y: INT16
+.br
+width, height, border-width: CARD16
+.LP
+Errors:
+.PN Drawable
+.in -.2i
+.eM
+.LP
+This request returns the root and current geometry of the drawable.
+The depth is the number of bits per pixel for the object.
+The x, y, and border-width will always be zero for pixmaps.
+For a window,
+the x and y coordinates specify the upper-left outer corner of the window
+relative to its parent's origin,
+and the width and height specify the inside size, not including the border.
+.LP
+It is legal to pass an
+.PN InputOnly
+window as a drawable to this request.
+.sp
+.LP
+.sM
+.IN "QueryTree" "" "@DEF@"
+.PN QueryTree
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.LP
+.in -.2i
+ \(->
+.in +.2i
+.LP
+root: WINDOW
+.br
+parent: WINDOW or
+.PN None
+.br
+children: LISTofWINDOW
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request returns the root, the parent, and the children of the window.
+The children are listed in bottom-to-top stacking order.
+.sp
+.LP
+.sM
+.IN "InternAtom" "" "@DEF@"
+.PN InternAtom
+.in +.2i
+.LP
+\fIname\fP\^: STRING8
+.br
+\fIonly-if-exists\fP\^: BOOL
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+atom: ATOM or
+.PN None
+.LP
+Errors:
+.PN Alloc ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request returns the atom for the given name.
+If only-if-exists is
+.PN False ,
+then the atom is created if it does not exist.
+The string should use the ISO Latin-1 encoding.
+Uppercase and lowercase matter.
+.LP
+The lifetime of an atom is not tied to the interning client.
+Atoms remain defined until server reset (see section 10).
+.sp
+.LP
+.sM
+.IN "GetAtomName" "" "@DEF@"
+.PN GetAtomName
+.in +.2i
+.LP
+\fIatom\fP\^: ATOM
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+name: STRING8
+.LP
+Errors:
+.PN Atom
+.in -.2i
+.eM
+.LP
+This request returns the name for the given atom.
+.sp
+.LP
+.sM
+.IN "ChangeProperty" "" "@DEF@"
+.PN ChangeProperty
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIproperty\fP, \fItype\fP\^: ATOM
+.br
+\fIformat\fP\^: {8, 16, 32}
+.br
+\fImode\fP\^:
+.Pn { Replace ,
+.PN Prepend ,
+.PN Append }
+.br
+\fIdata\fP\^: LISTofINT8 or LISTofINT16 or LISTofINT32
+.LP
+Errors:
+.PN Alloc ,
+.PN Atom ,
+.PN Match ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request alters the property for the specified window.
+The type is uninterpreted by the server.
+The format specifies whether the data should be viewed as a list of 8-bit,
+16-bit, or 32-bit quantities so that the server can correctly byte-swap
+as necessary.
+.LP
+If the mode is
+.PN Replace ,
+the previous property value is discarded.
+If the mode is
+.PN Prepend
+or
+.PN Append ,
+then the type and format must match the existing property value (or a
+.PN Match
+error results).
+If the property is undefined,
+it is treated as defined with the correct type
+and format with zero-length data.
+For
+.PN Prepend ,
+the data is tacked on to the beginning of the existing data, and for
+.PN Append ,
+it is tacked on to the end of the existing data.
+.LP
+This request generates a
+.PN PropertyNotify
+event on the window.
+.LP
+The lifetime of a property is not tied to the storing client.
+Properties remain until explicitly deleted, until the window is destroyed,
+or until server reset (see section 10).
+.LP
+The maximum size of a property is server-dependent and may vary dynamically.
+.sp
+.LP
+.sM
+.IN "DeleteProperty" "" "@DEF@"
+.PN DeleteProperty
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIproperty\fP\^: ATOM
+.LP
+Errors:
+.PN Atom ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request deletes the property from the specified window
+if the property exists and generates a
+.PN PropertyNotify
+event on the window unless the property does not exist.
+.sp
+.LP
+.sM
+.IN "GetProperty" "" "@DEF@"
+.PN GetProperty
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIproperty\fP\^: ATOM
+.br
+\fItype\fP\^: ATOM or
+.PN AnyPropertyType
+.br
+\fIlong-offset\fP, \fIlong-length\fP\^: CARD32
+.br
+\fIdelete\fP\^: BOOL
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+type: ATOM or
+.PN None
+.br
+format: {0, 8, 16, 32}
+.br
+bytes-after: CARD32
+.br
+value: LISTofINT8 or LISTofINT16 or LISTofINT32
+.LP
+Errors:
+.PN Atom ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+If the specified property does not exist for the specified window,
+then the return type is
+.PN None ,
+the format and bytes-after are zero,
+and the value is empty.
+The delete argument is ignored in this case.
+If the specified property exists but its type does not match the specified type,
+then the return type is the actual type of the property,
+the format is the actual format of the property (never zero),
+the bytes-after is the length of the property in bytes
+(even if the format is 16 or 32),
+and the value is empty.
+The delete argument is ignored in this case.
+If the specified property exists and either
+.PN AnyPropertyType
+is specified or the specified type matches the actual type of the property,
+then the return type is the actual type of the property,
+the format is the actual format of the property (never zero),
+and the bytes-after and value are as follows, given:
+.DS
+N = actual length of the stored property in bytes
+\ \ \ \ (even if the format is 16 or 32)
+I = 4 * long-offset
+T = N \- I
+L = MINIMUM(T, 4 * long-length)
+A = N \- (I + L)
+.DE
+.LP
+The returned value starts at byte index I in the property (indexing from 0),
+and its length in bytes is L.
+However, it is a
+.PN Value
+error if long-offset is given such that L is negative.
+The value of bytes-after is A,
+giving the number of trailing unread bytes in the stored
+property.
+If delete is
+.PN True
+and the bytes-after is zero,
+the property is also deleted from the window,
+and a
+.PN PropertyNotify
+event is generated on the window.
+.sp
+.LP
+.sM
+.IN "RotateProperties" "" "@DEF@"
+.PN RotateProperties
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIdelta\fP\^: INT16
+.br
+\fIproperties\fP\^: LISTofATOM
+.LP
+Errors:
+.PN Atom ,
+.PN Match ,
+.PN Window
+.in -.2i
+.eM
+.LP
+If the property names in the list are viewed as being numbered starting
+from zero, and there are N property names in the list,
+then the value associated with property name I becomes the value
+associated with property name (I + delta) mod N, for all I from zero to N \- 1.
+The effect is to rotate the states by delta places around the virtual ring
+of property names (right for positive delta, left for negative delta).
+.LP
+If delta mod N is nonzero,
+a
+.PN PropertyNotify
+event is generated for each property in the order listed.
+.LP
+If an atom occurs more than once in the list or no property with that
+name is defined for the window,
+a
+.PN Match
+error is generated.
+If an
+.PN Atom
+or
+.PN Match
+error is generated, no properties are changed.
+.sp
+.LP
+.sM
+.IN "ListProperties" "" "@DEF@"
+.PN ListProperties
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+atoms: LISTofATOM
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request returns the atoms of properties currently defined on the window.
+.sp
+.LP
+.sM
+.IN "SetSelectionOwner" "" "@DEF@"
+.PN SetSelectionOwner
+.in +.2i
+.LP
+\fIselection\fP\^: ATOM
+.br
+\fIowner\fP\^: WINDOW or
+.PN None
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+Errors:
+.PN Atom ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request changes the owner, owner window,
+and last-change time of the specified selection.
+This request has no effect if the specified time is earlier
+than the current last-change time of the specified selection or is
+later than the current server time.
+Otherwise, the last-change time is set to the specified time
+with
+.PN CurrentTime
+replaced by the current server time.
+If the owner window is specified as
+.PN None ,
+then the owner of the selection becomes
+.PN None
+(that is, no owner).
+Otherwise, the owner of the selection becomes the client executing the request.
+If the new owner (whether a client or
+.PN None )
+is not the same as the current owner
+and the current owner is not
+.PN None ,
+then the current owner is sent a
+.PN SelectionClear
+event.
+.LP
+If the client that is the owner of a selection is later terminated
+(that is, its connection is closed) or if the owner window it has
+specified in the request is later destroyed,
+then the owner of the selection automatically reverts to
+.PN None ,
+but the last-change time is not affected.
+.LP
+The selection atom is uninterpreted by the server.
+The owner window is returned by the
+.PN GetSelectionOwner
+request and is reported in
+.PN SelectionRequest
+and
+.PN SelectionClear
+events.
+.LP
+Selections are global to the server.
+.sp
+.LP
+.sM
+.IN "GetSelectionOwner" "" "@DEF@"
+.PN GetSelectionOwner
+.in +.2i
+.LP
+\fIselection\fP\^: ATOM
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+owner: WINDOW or
+.PN None
+.LP
+Errors:
+.PN Atom
+.in -.2i
+.eM
+.LP
+This request returns the current owner window of the specified selection,
+if any.
+If
+.PN None
+is returned, then there is no owner for the selection.
+.sp
+.LP
+.sM
+.IN "ConvertSelection" "" "@DEF@"
+.PN ConvertSelection
+.in +.2i
+.LP
+\fIselection\fP, \fItarget\fP\^: ATOM
+.br
+\fIproperty\fP\^: ATOM or
+.PN None
+.br
+\fIrequestor\fP\^: WINDOW
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+Errors:
+.PN Atom ,
+.PN Window
+.in -.2i
+.eM
+.LP
+If the specified selection has an owner,
+the server sends a
+.PN SelectionRequest
+event to that owner.
+If no owner for the specified selection exists,
+the server generates a
+.PN SelectionNotify
+event to the requestor with property
+.PN None .
+The arguments are passed on unchanged in either of the events.
+.sp
+.LP
+.sM
+.IN "SendEvent" "" "@DEF@"
+.PN SendEvent
+.in +.2i
+.LP
+\fIdestination\fP\^: WINDOW or
+.PN PointerWindow
+or
+.PN InputFocus
+.br
+\fIpropagate\fP\^: BOOL
+.br
+\fIevent-mask\fP\^: SETofEVENT
+.br
+\fIevent\fP\^: <normal-event-format>
+.LP
+Errors:
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+If
+.PN PointerWindow
+is specified,
+destination is replaced with the window that the pointer is in.
+If
+.PN InputFocus
+is specified and the focus window contains the pointer,
+destination is replaced with the window that the pointer is in.
+Otherwise, destination is replaced with the focus window.
+.LP
+If the event-mask is the empty set,
+then the event is sent to the client that created the destination window.
+If that client no longer exists, no event is sent.
+.LP
+If propagate is
+.PN False ,
+then the event is sent to every client selecting
+on destination any of the event types in event-mask.
+.LP
+If propagate is
+.PN True
+and no clients have selected on destination any
+of the event types in event-mask,
+then destination is replaced with the
+closest ancestor of destination for which some client has selected a
+type in event-mask and no intervening window has that type in its
+do-not-propagate-mask.
+If no such window exists or if the window is an ancestor of the focus window
+and
+.PN InputFocus
+was originally specified as the destination,
+then the event is not sent to any clients.
+Otherwise, the event is reported to every client selecting on the final
+destination any of the types specified in event-mask.
+.LP
+The event code must be one of the core events or one of the events
+defined by an extension (or a
+.PN Value
+error results) so that the server can correctly byte-swap the
+contents as necessary.
+The contents of the event are otherwise unaltered and unchecked
+by the server except to force on the most significant bit of the event code
+and to set the sequence number in the event correctly.
+.LP
+Active grabs are ignored for this request.
+.sp
+.LP
+.sM
+.IN "GrabPointer" "" "@DEF@"
+.PN GrabPointer
+.in +.2i
+.LP
+\fIgrab-window\fP\^: WINDOW
+.br
+\fIowner-events\fP\^: BOOL
+.br
+\fIevent-mask\fP\^: SETofPOINTEREVENT
+.br
+\fIpointer-mode\fP, \fIkeyboard-mode\fP\^:
+.Pn { Synchronous ,
+.PN Asynchronous }
+.br
+\fIconfine-to\fP\^: WINDOW or
+.PN None
+.br
+\fIcursor\fP\^: CURSOR or
+.PN None
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+status:
+.Pn { Success ,
+.PN AlreadyGrabbed ,
+.PN Frozen ,
+.PN InvalidTime ,
+.PN NotViewable }
+.LP
+Errors:
+.PN Cursor ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request actively grabs control of the pointer.
+Further pointer events are only reported to the grabbing client.
+The request overrides any active pointer grab by this client.
+.LP
+If owner-events is
+.PN False ,
+all generated pointer events are reported with respect to grab-window
+and are only reported if selected by event-mask.
+If owner-events is
+.PN True
+and a generated pointer event would normally be reported to this client,
+it is reported normally.
+Otherwise, the event is reported with respect to the grab-window and is
+only reported if selected by event-mask.
+For either value of owner-events,
+unreported events are simply discarded.
+.LP
+If pointer-mode is
+.PN Asynchronous ,
+pointer event processing continues normally.
+If the pointer is currently frozen by this client,
+then processing of pointer events is resumed.
+If pointer-mode is
+.PN Synchronous ,
+the state of the pointer (as seen by means of the protocol) appears to freeze,
+and no further pointer events are generated by the server until the
+grabbing client issues a releasing
+.PN AllowEvents
+request or until the pointer grab is released.
+Actual pointer changes are not lost while the pointer is frozen.
+They are simply queued for later processing.
+.LP
+If keyboard-mode is
+.PN Asynchronous ,
+keyboard event processing is unaffected by activation of the grab.
+If keyboard-mode is
+.PN Synchronous ,
+the state of the keyboard (as seen by means of the protocol) appears to freeze,
+and no further keyboard events are generated by the server until the grabbing
+client issues a releasing
+.PN AllowEvents
+request or until the pointer grab is released.
+Actual keyboard changes are not lost while the keyboard is frozen.
+They are simply queued for later processing.
+.LP
+If a cursor is specified,
+then it is displayed regardless of what window the pointer is in.
+If no cursor is specified,
+then when the pointer is in grab-window or one of its subwindows,
+the normal cursor for that window is displayed.
+Otherwise, the cursor for grab-window is displayed.
+.LP
+If a confine-to window is specified,
+then the pointer will be restricted to stay contained in that window.
+The confine-to window need have no relationship to the grab-window.
+If the pointer is not initially in the confine-to window,
+then it is warped automatically to the closest edge
+(and enter/leave events are generated normally) just before the grab activates.
+If the confine-to window is subsequently reconfigured,
+the pointer will be warped automatically as necessary to
+keep it contained in the window.
+.LP
+This request generates
+.PN EnterNotify
+and
+.PN LeaveNotify
+events.
+.LP
+The request fails with status
+.PN AlreadyGrabbed
+if the pointer is actively grabbed by some other client.
+The request fails with status
+.PN Frozen
+if the pointer is frozen by an active grab of another client.
+The request fails with status
+.PN NotViewable
+if grab-window or confine-to window is not viewable
+or if the confine-to window lies completely outside the boundaries
+of the root window.
+The request fails with status
+.PN InvalidTime
+if the specified time is earlier than the last-pointer-grab time or later than
+the current server time.
+Otherwise, the last-pointer-grab time is set to the specified time, with
+.PN CurrentTime
+replaced by the current server time.
+.sp
+.LP
+.sM
+.IN "UngrabPointer" "" "@DEF@"
+.PN UngrabPointer
+.in +.2i
+.LP
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.in -.2i
+.eM
+.LP
+This request releases the pointer if this client has it actively grabbed (from
+either
+.PN GrabPointer
+or
+.PN GrabButton
+or from a normal button press) and releases any queued events.
+The request has no effect if the specified time is earlier than
+the last-pointer-grab time or is later than the current server time.
+.LP
+This request generates
+.PN EnterNotify
+and
+.PN LeaveNotify
+events.
+.LP
+An
+.PN UngrabPointer
+request is performed automatically if the event window or
+confine-to window for an active pointer grab becomes not viewable
+or if window reconfiguration causes the confine-to window to lie
+completely outside the boundaries of the root window.
+.sp
+.LP
+.sM
+.IN "GrabButton" "" "@DEF@"
+.PN GrabButton
+.in +.2i
+.LP
+\fImodifiers\fP\^: SETofKEYMASK or
+.PN AnyModifier
+.br
+\fIbutton\fP\^: BUTTON or
+.PN AnyButton
+.br
+\fIgrab-window\fP\^: WINDOW
+.br
+\fIowner-events\fP\^: BOOL
+.br
+\fIevent-mask\fP\^: SETofPOINTEREVENT
+.br
+\fIpointer-mode\fP, \fIkeyboard-mode\fP\^:
+.Pn { Synchronous ,
+.PN Asynchronous }
+.br
+\fIconfine-to\fP\^: WINDOW or
+.PN None
+.br
+\fIcursor\fP\^: CURSOR or
+.PN None
+.LP
+Errors:
+.PN Access ,
+.PN Cursor ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request establishes a passive grab.
+In the future,
+the pointer is actively grabbed as described in
+.PN GrabPointer ,
+the last-pointer-grab time is set to the time at which the button was
+pressed (as transmitted in the
+.PN ButtonPress
+event), and the
+.PN ButtonPress
+event is reported if all of the following conditions are true:
+.IP \(bu 5
+The pointer is not grabbed and the specified button is logically pressed
+when the specified modifier keys are logically down,
+and no other buttons or modifier keys are logically down.
+.IP \(bu 5
+The grab-window contains the pointer.
+.IP \(bu 5
+The confine-to window (if any) is viewable.
+.IP \(bu 5
+A passive grab on the same button/key combination does not exist
+on any ancestor of grab-window.
+.LP
+The interpretation of the remaining arguments is the same as for
+.PN GrabPointer .
+The active grab is terminated automatically when
+the logical state of the pointer has all buttons released,
+independent of the logical state of modifier keys.
+Note that the logical state of a device (as seen by means of the protocol)
+may lag the physical state if device event processing is frozen.
+.LP
+This request overrides all previous passive grabs by the same client on
+the same button/key combinations on the same window.
+A modifier of
+.PN AnyModifier
+is equivalent to issuing the request for all possible modifier combinations
+(including the combination of no modifiers).
+It is not required that all specified modifiers have currently assigned
+keycodes.
+A button of
+.PN AnyButton
+is equivalent to issuing the request for all possible buttons.
+Otherwise, it is not required that the button specified currently be assigned
+to a physical button.
+.LP
+An
+.PN Access
+error is generated if some other client has already issued a
+.PN GrabButton
+request with the same button/key combination on the same window.
+When using
+.PN AnyModifier
+or
+.PN AnyButton ,
+the request fails completely (no grabs are established), and an
+.PN Access
+error is generated if there is a conflicting grab for any combination.
+The request has no effect on an active grab.
+.sp
+.LP
+.sM
+.IN "UngrabButton" "" "@DEF@"
+.PN UngrabButton
+.in +.2i
+.LP
+\fImodifiers\fP\^: SETofKEYMASK or
+.PN AnyModifier
+.br
+\fIbutton\fP\^: BUTTON or
+.PN AnyButton
+.br
+\fIgrab-window\fP\^: WINDOW
+.LP
+Errors:
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request releases the passive button/key combination
+on the specified window if it was grabbed by this client.
+A modifiers argument of
+.PN AnyModifier
+is equivalent to issuing the request for all possible modifier
+combinations (including the combination of no modifiers).
+A button of
+.PN AnyButton
+is equivalent to issuing the request for all possible buttons.
+The request has no effect on an active grab.
+.sp
+.LP
+.sM
+.IN "ChangeActivePointerGrab" "" "@DEF@"
+.PN ChangeActivePointerGrab
+.in +.2i
+.LP
+\fIevent-mask\fP\^: SETofPOINTEREVENT
+.br
+\fIcursor\fP\^: CURSOR or
+.PN None
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+Errors:
+.PN Cursor ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request changes the specified dynamic parameters if the pointer is
+actively grabbed by the client and the specified time is no earlier than the
+last-pointer-grab time and no later than the current server time.
+The interpretation of event-mask and cursor are the same as in
+.PN GrabPointer .
+This request has no effect on the parameters of any passive grabs established
+with
+.PN GrabButton .
+.sp
+.LP
+.sM
+.IN "GrabKeyboard" "" "@DEF@"
+.PN GrabKeyboard
+.in +.2i
+.LP
+\fIgrab-window\fP\^: WINDOW
+.br
+\fIowner-events\fP\^: BOOL
+.br
+\fIpointer-mode\fP, \fIkeyboard-mode\fP\^:
+.Pn { Synchronous ,
+.PN Asynchronous }
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+status:
+.Pn { Success ,
+.PN AlreadyGrabbed ,
+.PN Frozen ,
+.PN InvalidTime ,
+.PN NotViewable }
+.LP
+Errors:
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request actively grabs control of the keyboard.
+Further key events are reported only to the grabbing client.
+This request overrides any active keyboard grab by this client.
+.LP
+If owner-events is
+.PN False ,
+all generated key events are reported with respect to grab-window.
+If owner-events is
+.PN True
+and if a generated key event would normally be reported to this client,
+it is reported normally.
+Otherwise, the event is reported with respect to the grab-window.
+Both
+.PN KeyPress
+and
+.PN KeyRelease
+events are always reported,
+independent of any event selection made by the client.
+.LP
+If keyboard-mode is
+.PN Asynchronous ,
+keyboard event processing continues normally.
+If the keyboard is currently frozen by this client,
+then processing of keyboard events is resumed.
+If keyboard-mode is
+.PN Synchronous ,
+the state of the keyboard (as seen by means of the protocol) appears to freeze.
+No further keyboard events are generated by the server until the
+grabbing client issues a releasing
+.PN AllowEvents
+request or until the keyboard grab is released.
+Actual keyboard changes are not lost while the keyboard is frozen.
+They are simply queued for later processing.
+.LP
+If pointer-mode is
+.PN Asynchronous ,
+pointer event processing is unaffected by activation of the grab.
+If pointer-mode is
+.PN Synchronous ,
+the state of the pointer (as seen by means of the protocol) appears to freeze.
+No further pointer events are generated by the server
+until the grabbing client issues a releasing
+.PN AllowEvents
+request or until the keyboard grab is released.
+Actual pointer changes are not lost while the pointer is frozen.
+They are simply queued for later processing.
+.LP
+This request generates
+.PN FocusIn
+and
+.PN FocusOut
+events.
+.LP
+The request fails with status
+.PN AlreadyGrabbed
+if the keyboard is actively grabbed by some other client.
+The request fails with status
+.PN Frozen
+if the keyboard is frozen by an active grab of another client.
+The request fails with status
+.PN NotViewable
+if grab-window is not viewable.
+The request fails with status
+.PN InvalidTime
+if the specified time is earlier than the last-keyboard-grab time
+or later than the current server time.
+Otherwise, the last-keyboard-grab time is set to the specified time with
+.PN CurrentTime
+replaced by the current server time.
+.sp
+.LP
+.sM
+.IN "UngrabKeyboard" "" "@DEF@"
+.PN UngrabKeyboard
+.in +.2i
+.LP
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.in -.2i
+.eM
+.LP
+This request releases the keyboard if this client has it actively grabbed
+(as a result of either
+.PN GrabKeyboard
+or
+.PN GrabKey )
+and releases any queued events.
+The request has no effect if the specified time is earlier than the
+last-keyboard-grab time or is later than the current server time.
+.LP
+This request generates
+.PN FocusIn
+and
+.PN FocusOut
+events.
+.LP
+An
+.PN UngrabKeyboard
+is performed automatically if the event window for an active keyboard grab
+becomes not viewable.
+.sp
+.LP
+.sM
+.IN "GrabKey" "" "@DEF@"
+.PN GrabKey
+.in +.2i
+.LP
+\fIkey\fP\^: KEYCODE or
+.PN AnyKey
+.br
+\fImodifiers\fP\^: SETofKEYMASK or
+.PN AnyModifier
+.br
+\fIgrab-window\fP\^: WINDOW
+.br
+\fIowner-events\fP\^: BOOL
+.br
+\fIpointer-mode\fP, \fIkeyboard-mode\fP\^:
+.Pn { Synchronous ,
+.PN Asynchronous }
+.LP
+Errors:
+.PN Access ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request establishes a passive grab on the keyboard.
+In the future,
+the keyboard is actively grabbed as described in
+.PN GrabKeyboard ,
+the last-keyboard-grab time is set to the time at which the key was pressed
+(as transmitted in the
+.PN KeyPress
+event), and the
+.PN KeyPress
+event is reported if all of the following conditions are true:
+.IP \(bu 5
+The keyboard is not grabbed and the specified key
+(which can itself be a modifier key) is logically pressed
+when the specified modifier keys are logically down,
+and no other modifier keys are logically down.
+.IP \(bu 5
+Either the grab-window is an ancestor of (or is) the focus window,
+or the grab-window is a descendent of the focus window and contains the pointer.
+.IP \(bu 5
+A passive grab on the same key combination does not exist
+on any ancestor of grab-window.
+.LP
+The interpretation of the remaining arguments is the same as for
+.PN GrabKeyboard .
+The active grab is terminated automatically when the logical state
+of the keyboard has the specified key released,
+independent of the logical state of modifier keys.
+Note that the logical state of a device (as seen by means of the protocol)
+may lag the physical state if device event processing is frozen.
+.LP
+This request overrides all previous passive grabs by the same client
+on the same key combinations on the same window.
+A modifier of
+.PN AnyModifier
+is equivalent to issuing the request for all possible modifier combinations
+(including the combination of no modifiers).
+It is not required that all modifiers specified have
+currently assigned keycodes.
+A key of
+.PN AnyKey
+is equivalent to issuing the request for all possible keycodes.
+Otherwise, the key must be in the range specified by min-keycode
+and max-keycode in the connection setup (or a
+.PN Value
+error results).
+.LP
+An
+.PN Access
+error is generated if some other client has issued a
+.PN GrabKey
+with the same key combination on the same window.
+When using
+.PN AnyModifier
+or
+.PN AnyKey ,
+the request fails completely (no grabs are established),
+and an
+.PN Access
+error is generated if there is a conflicting grab for any combination.
+.sp
+.LP
+.sM
+.IN "UngrabKey" "" "@DEF@"
+.PN UngrabKey
+.in +.2i
+.LP
+\fIkey\fP\^: KEYCODE or
+.PN AnyKey
+.br
+\fImodifiers\fP\^: SETofKEYMASK or
+.PN AnyModifier
+.br
+\fIgrab-window\fP\^: WINDOW
+.LP
+Errors:
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request releases the key combination on the specified window
+if it was grabbed by this client.
+A modifiers argument of
+.PN AnyModifier
+is equivalent to issuing the request for all possible modifier combinations
+(including the combination of no modifiers).
+A key of
+.PN AnyKey
+is equivalent to issuing the request for all possible keycodes.
+This request has no effect on an active grab.
+.sp
+.LP
+.sM
+.IN "AllowEvents" "" "@DEF@"
+.PN AllowEvents
+.in +.2i
+.LP
+\fImode\fP:
+.Pn { AsyncPointer ,
+.PN SyncPointer ,
+.PN ReplayPointer ,
+.PN AsyncKeyboard ,
+.br
+\ \ \ \ \ \ \ \ \ \
+.PN SyncKeyboard ,
+.PN ReplayKeyboard ,
+.PN AsyncBoth ,
+.PN SyncBoth }
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+This request releases some queued events if the client has caused a device to
+freeze.
+The request has no effect if the specified time is earlier
+than the last-grab time of the most recent active grab for the client
+or if the specified time is later than the current server time.
+.LP
+For
+.PN AsyncPointer ,
+if the pointer is frozen by the client,
+pointer event processing continues normally.
+If the pointer is frozen twice by the client on behalf of two separate grabs,
+.PN AsyncPointer
+thaws for both.
+.PN AsyncPointer
+has no effect if the pointer is not frozen by the client,
+but the pointer need not be grabbed by the client.
+.LP
+For
+.PN SyncPointer ,
+if the pointer is frozen and actively grabbed by the client,
+pointer event processing continues normally until the next
+.PN ButtonPress
+or
+.PN ButtonRelease
+event is reported to the client,
+at which time the pointer again appears to freeze.
+However, if the reported event causes the pointer grab to be released,
+then the pointer does not freeze.
+.PN SyncPointer
+has no effect if the pointer is not frozen by the
+client or if the pointer is not grabbed by the client.
+.LP
+For
+.PN ReplayPointer ,
+if the pointer is actively grabbed by the client and
+is frozen as the result of an event having been sent to the client
+(either from the activation of a
+.PN GrabButton
+or from a previous
+.PN AllowEvents
+with mode
+.PN SyncPointer
+but not from a
+.PN GrabPointer ),
+then the pointer grab is released and that event is completely reprocessed,
+this time ignoring any passive grabs at or above (towards the root)
+the grab-window of the grab just released.
+The request has no effect if the pointer is not grabbed by the client
+or if the pointer is not frozen as the result of an event.
+.LP
+For
+.PN AsyncKeyboard ,
+if the keyboard is frozen by the client,
+keyboard event processing continues normally.
+If the keyboard is frozen twice by the client on behalf of two separate grabs,
+.PN AsyncKeyboard
+thaws for both.
+.PN AsyncKeyboard
+has no effect if the keyboard is not frozen by the client,
+but the keyboard need not be grabbed by the client.
+.LP
+For
+.PN SyncKeyboard ,
+if the keyboard is frozen and actively grabbed by the client,
+keyboard event processing continues normally until the next
+.PN KeyPress
+or
+.PN KeyRelease
+event is reported to the client,
+at which time the keyboard again appears to freeze.
+However, if the reported event causes the keyboard grab to be released,
+then the keyboard does not freeze.
+.PN SyncKeyboard
+has no effect if the keyboard is not frozen by the client or
+if the keyboard is not grabbed by the client.
+.LP
+For
+.PN ReplayKeyboard ,
+if the keyboard is actively grabbed by the client
+and is frozen as the result of an event having been sent to the client
+(either from the activation of a
+.PN GrabKey
+or from a previous
+.PN AllowEvents
+with mode
+.PN SyncKeyboard
+but not from a
+.PN GrabKeyboard ),
+then the keyboard grab is released and that event is completely reprocessed,
+this time ignoring any passive grabs at or above (towards the root)
+the grab-window of the grab just released.
+The request has no effect if the keyboard is not grabbed by the client
+or if the keyboard is not frozen as the result of an event.
+.LP
+For
+.PN SyncBoth ,
+if both pointer and keyboard are frozen by the client,
+event processing (for both devices) continues normally until the next
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN KeyPress ,
+or
+.PN KeyRelease
+event is reported to the client for a grabbed device
+(button event for the pointer, key event for the keyboard),
+at which time the devices again appear to freeze.
+However, if the reported event causes the grab to be released,
+then the devices do not freeze (but if the other device is still
+grabbed, then a subsequent event for it will still cause both devices
+to freeze).
+.PN SyncBoth
+has no effect unless both pointer and keyboard are frozen by the client.
+If the pointer or keyboard is frozen twice by the client on behalf
+of two separate grabs,
+.PN SyncBoth
+thaws for both (but a subsequent freeze for
+.PN SyncBoth
+will only freeze each device once).
+.LP
+For
+.PN AsyncBoth ,
+if the pointer and the keyboard are frozen by the client,
+event processing for both devices continues normally.
+If a device is frozen twice by the client on behalf of two separate grabs,
+.PN AsyncBoth
+thaws for both.
+.PN AsyncBoth
+has no effect unless both pointer and keyboard are frozen by the client.
+.LP
+.PN AsyncPointer ,
+.PN SyncPointer ,
+and
+.PN ReplayPointer
+have no effect on processing of keyboard events.
+.PN AsyncKeyboard ,
+.PN SyncKeyboard ,
+and
+.PN ReplayKeyboard
+have no effect on processing of pointer events.
+.LP
+It is possible for both a pointer grab and a keyboard grab to be active
+simultaneously (by the same or different clients).
+When a device is frozen on behalf of either grab,
+no event processing is performed for the device.
+It is possible for a single device to be frozen because of both grabs.
+In this case, the freeze must be released on behalf of both grabs
+before events can again be processed.
+If a device is frozen twice by a single client, then a single
+.PN AllowEvents
+releases both.
+.sp
+.LP
+.sM
+.IN "GrabServer" "" "@DEF@"
+.PN GrabServer
+.eM
+.LP
+This request disables processing of requests and close-downs on all
+connections other than the one this request arrived on.
+.sp
+.LP
+.sM
+.IN "UngrabServer" "" "@DEF@"
+.PN UngrabServer
+.eM
+.LP
+This request restarts processing of requests and close-downs
+on other connections.
+.sp
+.LP
+.sM
+.IN "QueryPointer" "" "@DEF@"
+.PN QueryPointer
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+root: WINDOW
+.br
+child: WINDOW or
+.PN None
+.br
+same-screen: BOOL
+.br
+root-x, root-y, win-x, win-y: INT16
+.br
+mask: SETofKEYBUTMASK
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+The root window the pointer is logically on and the pointer coordinates
+relative to the root's origin are returned.
+If same-screen is
+.PN False ,
+then the pointer is not on the same screen as the argument window,
+child is
+.PN None ,
+and win-x and win-y are zero.
+If same-screen is
+.PN True ,
+then win-x and win-y are the pointer coordinates relative to the
+argument window's origin, and child is the child containing the
+pointer, if any.
+The current logical state of the modifier keys and the buttons
+are also returned.
+Note that the logical state of a device (as seen by means of the protocol)
+may lag the physical state if device event processing is frozen.
+.sp
+.LP
+.sM
+.IN "GetMotionEvents" "" "@DEF@"
+.PN GetMotionEvents
+.in +.2i
+.LP
+\fIstart\fP, \fIstop\fP\^: TIMESTAMP or
+.PN CurrentTime
+.br
+\fIwindow\fP\^: WINDOW
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+events: LISTofTIMECOORD
+.LP
+where:
+.TS
+l l.
+TIMECOORD: [x, y: INT16
+.br
+ \ time: TIMESTAMP]
+.TE
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request returns all events in the motion history buffer that fall
+between the specified start and stop times (inclusive)
+and that have coordinates that lie within (including borders)
+the specified window at its present placement.
+The x and y coordinates are reported relative to the origin of the window.
+.LP
+If the start time is later than the stop time or if the start time is
+in the future, no events are returned.
+If the stop time is in the future, it is equivalent to specifying
+.PN CurrentTime .
+.sp
+.LP
+.sM
+.IN "TranslateCoordinates" "" "@DEF@"
+.PN TranslateCoordinates
+.in +.2i
+.LP
+\fIsrc-window\fP, \fIdst-window\fP: WINDOW
+.br
+\fIsrc-x\fP, \fIsrc-y\fP\^: INT16
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+same-screen: BOOL
+.br
+child: WINDOW or
+.PN None
+.br
+dst-x, dst-y: INT16
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+The src-x and src-y coordinates are taken relative to src-window's
+origin and are returned as dst-x and dst-y coordinates relative to
+dst-window's origin.
+If same-screen is
+.PN False ,
+then src-window and dst-window are on different screens,
+and dst-x and dst-y are zero.
+If the coordinates are contained in a mapped child of dst-window,
+then that child is returned.
+.sp
+.LP
+.sM
+.IN "WarpPointer" "" "@DEF@"
+.PN WarpPointer
+.in +.2i
+.LP
+\fIsrc-window\fP\^: WINDOW or
+.PN None
+.br
+\fIdst-window\fP\^: WINDOW or
+.PN None
+.br
+\fIsrc-x\fP, \fIsrc-y\fP\^: INT16
+.br
+\fIsrc-width\fP, \fIsrc-height\fP\^: CARD16
+.br
+\fIdst-x\fP, \fIdst-y\fP\^: INT16
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+If dst-window is
+.PN None ,
+this request moves the pointer by offsets [dst-x, dst-y]
+relative to the current position of the pointer.
+If dst-window is a window,
+this request moves the pointer to [dst-x, dst-y] relative to dst-window's
+origin.
+However, if src-window is not
+.PN None ,
+the move only takes place if src-window contains the pointer
+and the pointer is contained in the specified rectangle of src-window.
+.LP
+The src-x and src-y coordinates are relative to src-window's origin.
+If src-height is zero,
+it is replaced with the current height of src-window minus src-y.
+If src-width is zero,
+it is replaced with the current width of src-window minus src-x.
+.LP
+This request cannot be used to move the pointer outside the confine-to
+window of an active pointer grab.
+An attempt will only move the pointer as far as the closest edge
+of the confine-to window.
+.LP
+This request will generate events just as if the user had instantaneously
+moved the pointer.
+.sp
+.LP
+.sM
+.IN "SetInputFocus" "" "@DEF@"
+.PN SetInputFocus
+.in +.2i
+.LP
+\fIfocus\fP\^: WINDOW or
+.PN PointerRoot
+or
+.PN None
+.br
+\fIrevert-to\fP\^:
+.Pn { Parent ,
+.PN PointerRoot ,
+.PN None }
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.LP
+Errors:
+.PN Match ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request changes the input focus and the last-focus-change time.
+The request has no effect if the specified time is earlier than the current
+last-focus-change time or is later than the current server time.
+Otherwise, the last-focus-change time is set to the specified time
+with
+.PN CurrentTime
+replaced by the current server time.
+.LP
+If
+.PN None
+is specified as the focus,
+all keyboard events are discarded until a new focus window is set.
+In this case, the revert-to argument is ignored.
+.LP
+If a window is specified as the focus,
+it becomes the keyboard's focus window.
+If a generated keyboard event would normally be reported to
+this window or one of its inferiors, the event is reported normally.
+Otherwise, the event is reported with respect to the focus window.
+.LP
+If
+.PN PointerRoot
+is specified as the focus,
+the focus window is dynamically taken to be the root window of whatever screen
+the pointer is on at each keyboard event.
+In this case,
+the revert-to argument is ignored.
+.LP
+This request generates
+.PN FocusIn
+and
+.PN FocusOut
+events.
+.LP
+The specified focus window must be viewable at the time of the request (or a
+.PN Match
+error results).
+If the focus window later becomes not viewable,
+the new focus window depends on the revert-to argument.
+If revert-to is
+.PN Parent ,
+the focus reverts to the parent (or the closest viewable ancestor)
+and the new revert-to value is taken to be
+.PN None .
+If revert-to is
+.PN PointerRoot
+or
+.PN None ,
+the focus reverts to that value.
+When the focus reverts,
+.PN FocusIn
+and
+.PN FocusOut
+events are generated,
+but the last-focus-change time is not affected.
+.sp
+.LP
+.sM
+.IN "GetInputFocus" "" "@DEF@"
+.PN GetInputFocus
+.LP
+ \(->
+.in +.2i
+.LP
+focus: WINDOW or
+.PN PointerRoot
+or
+.PN None
+.br
+revert-to:
+.Pn { Parent ,
+.PN PointerRoot ,
+.PN None }
+.in -.2i
+.eM
+.LP
+This request returns the current focus state.
+.sp
+.LP
+.sM
+.IN "QueryKeymap" "" "@DEF@"
+.PN QueryKeymap
+.LP
+ \(->
+.in +.2i
+.LP
+keys: LISTofCARD8
+.in -.2i
+.eM
+.LP
+This request returns a bit vector for the logical state of the keyboard.
+Each bit set to 1 indicates that the corresponding key is currently pressed.
+The vector is represented as 32 bytes.
+Byte N (from 0) contains the bits for keys 8N to 8N + 7
+with the least significant bit in the byte representing key 8N.
+Note that the logical state of a device (as seen by means of the protocol)
+may lag the physical state if device event processing is frozen.
+.sp
+.LP
+.sM
+.IN "OpenFont" "" "@DEF@"
+.PN OpenFont
+.in +.2i
+.LP
+\fIfid\fP\^: FONT
+.br
+\fIname\fP\^: STRING8
+.LP
+Errors:
+.PN Alloc ,
+.PN IDChoice ,
+.PN Name
+.in -.2i
+.eM
+.LP
+This request loads the specified font, if necessary,
+and associates identifier fid with it.
+The font name should use the ISO Latin-1 encoding,
+and uppercase and lowercase do not matter.
+When the characters ``?'' and ``*'' are used in a font name, a
+pattern match is performed and any matching font is used.
+In the pattern,
+the ``?'' character (octal value 77) will match any single character,
+and the ``*'' character (octal value 52) will match any number
+of characters.
+A structured format for font names is specified in the
+X Consortium standard \fIX Logical Font Description Conventions\fP.
+.LP
+Fonts are not associated with a particular screen
+and can be stored as a component of any graphics context.
+.sp
+.LP
+.sM
+.IN "CloseFont" "" "@DEF@"
+.PN CloseFont
+.in +.2i
+.LP
+\fIfont\fP\^: FONT
+.LP
+Errors:
+.PN Font
+.in -.2i
+.eM
+.LP
+This request deletes the association between the resource ID and the font.
+The font itself will be freed when no other resource references it.
+.sp
+.LP
+.sM
+.IN "QueryFont" "" "@DEF@"
+.PN QueryFont
+.in +.2i
+.LP
+\fIfont\fP\^: FONTABLE
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+font-info: FONTINFO
+.br
+char-infos: LISTofCHARINFO
+.LP
+where:
+.IP
+.TS
+l lw(3i).
+T{
+FONTINFO:
+T} T{
+[draw-direction:
+.Pn { LeftToRight ,
+.PN RightToLeft }
+T}
+ \ min-char-or-byte2, max-char-or-byte2: CARD16
+ \ min-byte1, max-byte1: CARD8
+ \ all-chars-exist: BOOL
+ \ default-char: CARD16
+ \ min-bounds: CHARINFO
+ \ max-bounds: CHARINFO
+ \ font-ascent: INT16
+ \ font-descent: INT16
+ \ properties: LISTofFONTPROP]
+FONTPROP: [name: ATOM
+ \ value: <32-bit-value>]
+CHARINFO: [left-side-bearing: INT16
+ \ right-side-bearing: INT16
+ \ character-width: INT16
+ \ ascent: INT16
+ \ descent: INT16
+ \ attributes: CARD16]
+.TE
+.LP
+Errors:
+.PN Font
+.in -.2i
+.eM
+.LP
+This request returns logical information about a font.
+If a gcontext is given for font,
+the currently contained font is used.
+.LP
+The draw-direction is just a hint
+and indicates whether most char-infos have a positive,
+.PN LeftToRight ,
+or a negative,
+.PN RightToLeft ,
+character-width metric.
+The core protocol defines no support for vertical text.
+.LP
+If min-byte1 and max-byte1 are both zero,
+then min-char-or-byte2 specifies the linear character index corresponding
+to the first element of char-infos,
+and max-char-or-byte2 specifies the linear character index of the last element.
+If either min-byte1 or max-byte1 are nonzero,
+then both min-char-or-byte2 and max-char-or-byte2 will be less than 256,
+and the 2-byte character index values corresponding to char-infos element N
+(counting from 0) are:
+.DS
+byte1 = N/D + min-byte1
+byte2 = N\\\\D + min-char-or-byte2
+.DE
+.LP
+where:
+.DS
+D = max-char-or-byte2 \- min-char-or-byte2 + 1
+/ = integer division
+\\\\ = integer modulus
+.DE
+.LP
+If char-infos has length zero,
+then min-bounds and max-bounds will be identical,
+and the effective char-infos is one filled with this char-info, of length:
+.DS
+L = D * (max-byte1 \- min-byte1 + 1)
+.DE
+.LP
+That is,
+all glyphs in the specified linear or matrix range have the same information,
+as given by min-bounds (and max-bounds).
+If all-chars-exist is
+.PN True ,
+then all characters in char-infos have nonzero bounding boxes.
+.LP
+The default-char specifies the character that will be used when an
+undefined or nonexistent character is used.
+Note that default-char is a CARD16, not CHAR2B.
+For a font using 2-byte matrix format,
+the default-char has byte1 in the most significant byte
+and byte2 in the least significant byte.
+If the default-char itself specifies an undefined or nonexistent character,
+then no printing is performed for an undefined or nonexistent character.
+.LP
+The min-bounds and max-bounds contain the minimum and maximum values of
+each individual CHARINFO component over all char-infos (ignoring
+nonexistent characters).
+The bounding box of the font (that is, the
+smallest rectangle enclosing the shape obtained by superimposing all
+characters at the same origin [x,y]) has its upper-left coordinate at:
+.DS
+[x + min-bounds.left-side-bearing, y \- max-bounds.ascent]
+.DE
+with a width of:
+.DS
+max-bounds.right-side-bearing \- min-bounds.left-side-bearing
+.DE
+.LP
+and a height of:
+.DS
+max-bounds.ascent + max-bounds.descent
+.DE
+.LP
+The font-ascent is the logical extent of the font above the baseline
+and is used for determining line spacing.
+Specific characters may extend beyond this.
+The font-descent is the logical extent of the font at or below the baseline
+and is used for determining line spacing.
+Specific characters may extend beyond this.
+If the baseline is at Y-coordinate y,
+then the logical extent of the font is inclusive
+between the Y-coordinate values (y \- font-ascent) and (y + font-descent \- 1).
+.LP
+A font is not guaranteed to have any properties.
+The interpretation of the property value (for example, INT32, CARD32)
+must be derived from \fIa priori\fP knowledge of the property.
+A basic set of font properties is specified in the X Consortium
+standard \fIX Logical Font Description Conventions\fP.
+.LP
+For a character origin at [x,y],
+the bounding box of a character (that is,
+the smallest rectangle enclosing the character's shape), described in
+terms of CHARINFO components, is a rectangle with its upper-left corner at:
+.DS
+[x + left-side-bearing, y \- ascent]
+.DE
+.LP
+with a width of:
+.DS
+right-side-bearing \- left-side-bearing
+.DE
+.LP
+and a height of:
+.DS
+ascent + descent
+.DE
+.LP
+and the origin for the next character is defined to be:
+.DS
+[x + character-width, y]
+.DE
+.LP
+Note that the baseline is logically viewed as being just below
+nondescending characters (when descent is zero, only pixels with
+Y-coordinates less than y are drawn) and that the origin is logically
+viewed as being coincident with the left edge of a nonkerned character
+(when left-side-bearing is zero, no pixels with X-coordinate less than
+x are drawn).
+.LP
+Note that CHARINFO metric values can be negative.
+.LP
+A nonexistent character is represented with all CHARINFO components
+zero.
+.LP
+The interpretation of the per-character attributes field is
+server-dependent.
+.sp
+.LP
+.sM
+.IN "QueryTextExtents" "" "@DEF@"
+.PN QueryTextExtents
+.in +.2i
+.LP
+\fIfont\fP\^: FONTABLE
+.br
+\fIstring\fP\^: STRING16
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+draw-direction:
+.Pn { LeftToRight ,
+.PN RightToLeft }
+.br
+font-ascent: INT16
+.br
+font-descent: INT16
+.br
+overall-ascent: INT16
+.br
+overall-descent: INT16
+.br
+overall-width: INT32
+.br
+overall-left: INT32
+.br
+overall-right: INT32
+.LP
+Errors:
+.PN Font
+.in -.2i
+.eM
+.LP
+This request returns the logical extents of the specified string of characters
+in the specified font.
+If a gcontext is given for font,
+the currently contained font is used.
+The draw-direction, font-ascent, and font-descent are the same as
+described in
+.PN QueryFont .
+The overall-ascent is the maximum of the ascent metrics of all characters
+in the string, and the overall-descent is the maximum of the descent metrics.
+The overall-width is the sum of the character-width metrics of all characters
+in the string.
+For each character in the string,
+let W be the sum of the character-width metrics of all characters preceding it
+in the string,
+let L be the left-side-bearing metric of the character plus W,
+and let R be the right-side-bearing metric of the character plus W.
+The overall-left is the minimum L of all characters in the string,
+and the overall-right is the maximum R.
+.LP
+For fonts defined with linear indexing rather than 2-byte matrix indexing,
+the server will interpret each CHAR2B as a 16-bit number that
+has been transmitted most significant byte first (that is, byte1 of the
+CHAR2B is taken as the most significant byte).
+.LP
+Characters with all zero metrics are ignored.
+If the font has no defined default-char,
+then undefined characters in the string are also ignored.
+.sp
+.LP
+.sM
+.IN "ListFonts" "" "@DEF@"
+.PN ListFonts
+.in +.2i
+.LP
+\fIpattern\fP\^: STRING8
+.br
+\fImax-names\fP\^: CARD16
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+names: LISTofSTRING8
+.in -.2i
+.eM
+.LP
+This request returns a list
+of available font names (as controlled by the font search path; see
+.PN SetFontPath
+request)
+that match the pattern.
+At most, max-names names will be returned.
+The pattern should use the ISO Latin-1 encoding,
+and uppercase and lowercase do not matter.
+In the pattern,
+the ``?'' character (octal value 77) will match any single character,
+and the ``*'' character (octal value 52) will match any number
+of characters.
+The returned names are in lowercase.
+.sp
+.LP
+.sM
+.IN "ListFontsWithInfo" "" "@DEF@"
+.PN ListFontsWithInfo
+.in +.2i
+.LP
+\fIpattern\fP\^: STRING8
+.br
+\fImax-names\fP\^: CARD16
+.in -.2i
+.LP
+ \(->+
+.in +.2i
+.LP
+name: STRING8
+.br
+info: FONTINFO
+.br
+replies-hint: CARD32
+.LP
+where:
+.LP
+FONTINFO: <same type definition as in
+.PN QueryFont >
+.in -.2i
+.eM
+.LP
+This request is similar to
+.PN ListFonts ,
+but it also returns information about each font.
+The information returned for each font is identical to what
+.PN QueryFont
+would return except that the per-character metrics are not returned.
+Note that this request can generate multiple replies.
+With each reply,
+replies-hint may provide an indication of how many more fonts will be returned.
+This number is a hint only and may be larger or smaller than
+the number of fonts actually returned.
+A zero value does not guarantee that no more fonts will be returned.
+After the font replies,
+a reply with a zero-length name is sent to indicate the end of the reply
+sequence.
+.sp
+.LP
+.sM
+.IN "SetFontPath" "" "@DEF@"
+.PN SetFontPath
+.in +.2i
+.LP
+\fIpath\fP\^: LISTofSTRING8
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+This request defines the search path for font lookup.
+There is only one search path per server, not one per client.
+The interpretation of the strings is operating-system-dependent,
+but the strings are intended to specify directories to be searched in the
+order listed.
+.LP
+Setting the path to the empty list restores the default path defined
+for the server.
+.LP
+As a side effect of executing this request,
+the server is guaranteed to flush all cached information about fonts
+for which there currently are no explicit resource IDs allocated.
+.LP
+The meaning of an error from this request is system specific.
+.sp
+.LP
+.sM
+.IN "GetFontPath" "" "@DEF@"
+.PN GetFontPath
+.LP
+ \(->
+.in +.2i
+.LP
+path: LISTofSTRING8
+.in -.2i
+.eM
+.LP
+This request returns the current search path for fonts.
+.sp
+.LP
+.sM
+.IN "CreatePixmap" "" "@DEF@"
+.PN CreatePixmap
+.in +.2i
+.LP
+\fIpid\fP\^: PIXMAP
+.br
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIdepth\fP\^: CARD8
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.LP
+Errors:
+.PN Alloc ,
+.PN Drawable ,
+.PN IDChoice ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request creates a pixmap and assigns the identifier pid to it.
+The width and height must be nonzero (or a
+.PN Value
+error results).
+The depth must be one of the depths supported by the root of the specified
+drawable (or a
+.PN Value
+error results).
+The initial contents of the pixmap are undefined.
+.LP
+It is legal to pass an
+.PN InputOnly
+window as a drawable to this request.
+.sp
+.LP
+.sM
+.IN "FreePixmap" "" "@DEF@"
+.PN FreePixmap
+.in +.2i
+.LP
+\fIpixmap\fP\^: PIXMAP
+.LP
+Errors:
+.PN Pixmap
+.in -.2i
+.eM
+.LP
+This request deletes the association between the resource ID and the pixmap.
+The pixmap storage will be freed when no other resource references it.
+.sp
+.LP
+.sM
+.IN "CreateGC" "" "@DEF@"
+.PN CreateGC
+.in +.2i
+.LP
+\fIcid\fP\^: GCONTEXT
+.br
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIvalue-mask\fP\^: BITMASK
+.br
+\fIvalue-list\fP\^: LISTofVALUE
+.LP
+Errors:
+.PN Alloc ,
+.PN Drawable ,
+.PN Font ,
+.PN IDChoice ,
+.PN Match ,
+.PN Pixmap ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request creates a graphics context
+and assigns the identifier cid to it.
+The gcontext can be used with any destination drawable having the same root
+and depth as the specified drawable;
+use with other drawables results in a
+.PN Match
+error.
+.LP
+The value-mask and value-list specify which components are to be
+explicitly initialized.
+The context components are:
+.TS H
+lw(1.5i) lw(4.25i).
+_
+.sp 6p
+.B
+Component Type
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+function
+T} T{
+.Pn { Clear ,
+.PN And ,
+.PN AndReverse ,
+.PN Copy ,
+.PN AndInverted ,
+.PN NoOp ,
+.PN Xor ,
+.br
+\
+.PN Or ,
+.PN Nor ,
+.PN Equiv ,
+.PN Invert ,
+.PN OrReverse ,
+.PN CopyInverted ,
+.br
+\
+.PN OrInverted ,
+.PN Nand ,
+.PN Set }
+T}
+T{
+plane-mask
+T} T{
+CARD32
+T}
+T{
+foreground
+T} T{
+CARD32
+T}
+T{
+background
+T} T{
+CARD32
+T}
+T{
+line-width
+T} T{
+CARD16
+T}
+T{
+line-style
+T} T{
+.Pn { Solid ,
+.PN OnOffDash ,
+.PN DoubleDash }
+T}
+T{
+cap-style
+T} T{
+.Pn { NotLast ,
+.PN Butt ,
+.PN Round ,
+.PN Projecting }
+T}
+T{
+join-style
+T} T{
+.Pn { Miter ,
+.PN Round ,
+.PN Bevel }
+T}
+T{
+fill-style
+T} T{
+.Pn { Solid ,
+.PN Tiled ,
+.PN OpaqueStippled ,
+.PN Stippled }
+T}
+T{
+fill-rule
+T} T{
+.Pn { EvenOdd ,
+.PN Winding }
+T}
+T{
+arc-mode
+T} T{
+.Pn { Chord ,
+.PN PieSlice }
+T}
+T{
+tile
+T} T{
+PIXMAP
+T}
+T{
+stipple
+T} T{
+PIXMAP
+T}
+T{
+tile-stipple-x-origin
+T} T{
+INT16
+T}
+T{
+tile-stipple-y-origin
+T} T{
+INT16
+T}
+T{
+font
+T} T{
+FONT
+T}
+T{
+subwindow-mode
+T} T{
+.Pn { ClipByChildren ,
+.PN IncludeInferiors }
+T}
+T{
+graphics-exposures
+T} T{
+BOOL
+T}
+T{
+clip-x-origin
+T} T{
+INT16
+T}
+T{
+clip-y-origin
+T} T{
+INT16
+T}
+T{
+clip-mask
+T} T{
+PIXMAP or
+.PN None
+T}
+T{
+dash-offset
+T} T{
+CARD16
+T}
+T{
+dashes
+T} T{
+CARD8
+T}
+.sp 6p
+_
+.TE
+.LP
+In graphics operations,
+given a source and destination pixel,
+the result is computed bitwise on corresponding bits of the pixels;
+that is, a Boolean operation is performed in each bit plane.
+The plane-mask restricts the operation to a subset of planes,
+so the result is:
+.LP
+.DS
+((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))
+.DE
+.LP
+Range checking is not performed on the values for foreground, background,
+or plane-mask.
+They are simply truncated to the appropriate number of bits.
+.LP
+The meanings of the functions are:
+.TS
+lw(1.5i) lw(2i).
+_
+.sp 6p
+.B
+Function Operation
+.sp 6p
+_
+.R
+.sp 6p
+T{
+.PN Clear
+T} T{
+0
+T}
+T{
+.PN And
+T} T{
+src AND dst
+T}
+T{
+.PN AndReverse
+T} T{
+src AND (NOT dst)
+T}
+T{
+.PN Copy
+T} T{
+src
+T}
+T{
+.PN AndInverted
+T} T{
+(NOT src) AND dst
+T}
+T{
+.PN NoOp
+T} T{
+dst
+T}
+T{
+.PN Xor
+T} T{
+src XOR dst
+T}
+T{
+.PN Or
+T} T{
+src OR dst
+T}
+T{
+.PN Nor
+T} T{
+(NOT src) AND (NOT dst)
+T}
+T{
+.PN Equiv
+T} T{
+(NOT src) XOR dst
+T}
+T{
+.PN Invert
+T} T{
+NOT dst
+T}
+T{
+.PN OrReverse
+T} T{
+src OR (NOT dst)
+T}
+T{
+.PN CopyInverted
+T} T{
+NOT src
+T}
+T{
+.PN OrInverted
+T} T{
+(NOT src) OR dst
+T}
+T{
+.PN Nand
+T} T{
+(NOT src) OR (NOT dst)
+T}
+T{
+.PN Set
+T} T{
+1
+T}
+.sp 6p
+_
+.TE
+.LP
+The line-width is measured in pixels and can be greater than or equal to
+one, a wide line, or the special value zero, a thin line.
+.LP
+Wide lines are drawn centered on the path described by the graphics request.
+Unless otherwise specified by the join or cap style,
+the bounding box of a wide line with endpoints [x1, y1], [x2, y2] and
+width w is a rectangle with vertices at the following real coordinates:
+.DS
+[x1\-(w*sn/2), y1+(w*cs/2)], [x1+(w*sn/2), y1\-(w*cs/2)],
+[x2\-(w*sn/2), y2+(w*cs/2)], [x2+(w*sn/2), y2\-(w*cs/2)]
+.DE
+.LP
+The sn is the sine of the angle of the line and cs is the cosine of
+the angle of the line.
+A pixel is part of the line (and hence drawn) if the center of the pixel
+is fully inside the bounding box, which is viewed as having infinitely thin
+edges.
+If the center of the pixel is exactly on the bounding box,
+it is part of the line if and only if the interior is immediately to its right
+(x increasing direction).
+Pixels with centers on a horizontal edge are a special case and are part of
+the line if and only if the interior or the boundary is immediately below
+(y increasing direction) and if the interior or the boundary is immediately
+to the right (x increasing direction).
+Note that this description is a mathematical model describing the pixels
+that are drawn for a wide line and does not imply that trigonometry is required
+to implement such a model.
+Real or fixed point arithmetic is recommended for computing the corners of the
+line endpoints for lines greater than one pixel in width.
+.LP
+Thin lines (zero line-width) are nominally one pixel wide lines drawn using an
+unspecified, device-dependent algorithm.
+There are only two constraints on this algorithm.
+First, if a line is drawn unclipped from [x1,y1] to [x2,y2]
+and another line is drawn unclipped from [x1+dx,y1+dy] to [x2+dx,y2+dy],
+then a point [x,y] is touched by drawing the first line if
+and only if the point [x+dx,y+dy] is touched by drawing the second line.
+Second, the effective set of points comprising a line cannot be affected
+by clipping.
+Thus, a point is touched in a clipped line if and only if the point lies
+inside the clipping region and the point would be touched by the line
+when drawn unclipped.
+.LP
+Note that a wide line drawn from [x1,y1] to [x2,y2] always draws the
+same pixels as a wide line drawn from [x2,y2] to [x1,y1], not counting
+cap-style and join-style.
+Implementors are encouraged to make this property true for thin lines,
+but it is not required.
+A line-width of zero may differ from a line-width of one in which pixels
+are drawn.
+In general,
+drawing a thin line will be faster than drawing a wide line of width one,
+but thin lines may not mix well aesthetically with wide lines
+because of the different drawing algorithms.
+If it is desirable to obtain precise and uniform results across all displays,
+a client should always use a line-width of one, rather than a line-width of
+zero.
+.LP
+The line-style defines which sections of a line are drawn:
+.TS
+lw(1i) lw(4.75i).
+T{
+.PN Solid
+T} T{
+The full path of the line is drawn.
+T}
+.sp 6p
+T{
+.PN DoubleDash
+T} T{
+The full path of the line is drawn,
+but the even dashes are filled differently than the odd dashes
+(see fill-style), with
+.PN Butt
+cap-style used where even and odd dashes meet.
+T}
+.sp 6p
+T{
+.PN OnOffDash
+T} T{
+Only the even dashes are drawn,
+and cap-style applies to all internal ends of the individual dashes
+(except
+.PN NotLast
+is treated as
+.PN Butt ).
+T}
+.TE
+.LP
+The cap-style defines how the endpoints of a path are drawn:
+.TS
+lw(1i) lw(4.75i).
+T{
+.PN NotLast
+T} T{
+The result is equivalent to
+.PN Butt ,
+except that for a line-width of zero the final endpoint is not drawn.
+T}
+.sp 6p
+T{
+.PN Butt
+T} T{
+The result is square at the endpoint (perpendicular to the slope of the
+line) with no projection beyond.
+T}
+.sp 6p
+T{
+.PN Round
+T} T{
+The result is a circular arc with its diameter equal to the line-width,
+centered on the endpoint; it is equivalent to
+.PN Butt
+for line-width zero.
+T}
+.sp 6p
+T{
+.PN Projecting
+T} T{
+The result is square at the end, but the path continues beyond the
+endpoint for a distance equal to half the line-width;
+it is equivalent to
+.PN Butt
+for line-width zero.
+T}
+.TE
+.LP
+The join-style defines how corners are drawn for wide lines:
+.TS
+lw(1i) lw(4.75i).
+T{
+.PN Miter
+T} T{
+The outer edges of the two lines extend to meet at an angle.
+However, if the angle is less than 11 degrees, a
+.PN Bevel
+join-style is used instead.
+T}
+.sp 6p
+T{
+.PN Round
+T} T{
+The result is a circular arc with a diameter equal to the line-width,
+centered on the joinpoint.
+T}
+.sp 6p
+T{
+.PN Bevel
+T} T{
+The result is
+.PN Butt
+endpoint styles, and then the triangular notch is filled.
+T}
+.TE
+.LP
+For a line with coincident endpoints (x1=x2, y1=y2), when the cap-style
+is applied to both endpoints, the semantics depends on the line-width
+and the cap-style:
+.TS
+lw(1i) lw(.5i) lw(4.25i).
+T{
+.PN NotLast
+T} T{
+thin
+T} T{
+This is device-dependent, but the desired effect is that nothing is drawn.
+T}
+.sp 6p
+T{
+.PN Butt
+T} T{
+thin
+T} T{
+This is device-dependent, but the desired effect is that a single pixel is drawn.
+T}
+.sp 6p
+T{
+.PN Round
+T} T{
+thin
+T} T{
+This is the same as
+.PN Butt /thin.
+T}
+.sp 6p
+T{
+.PN Projecting
+T} T{
+thin
+T} T{
+This is the same as
+.PN Butt /thin.
+T}
+.sp 6p
+T{
+.PN Butt
+T} T{
+wide
+T} T{
+Nothing is drawn.
+T}
+.sp 6p
+T{
+.PN Round
+T} T{
+wide
+T} T{
+The closed path is a circle, centered at the endpoint and
+with a diameter equal to the line-width.
+T}
+.sp 6p
+T{
+.PN Projecting
+T} T{
+wide
+T} T{
+The closed path is a square, aligned with the coordinate axes,
+centered at the endpoint and with sides equal to the line-width.
+T}
+.TE
+.LP
+For a line with coincident endpoints (x1=x2, y1=y2),
+when the join-style is applied at one or both endpoints,
+the effect is as if the line was removed from the overall path.
+However, if the total path consists of (or is reduced to) a single point
+joined with itself,
+the effect is the same as when the cap-style is applied at both endpoints.
+.LP
+The tile/stipple represents an infinite two-dimensional plane
+with the tile/stipple
+replicated in all dimensions. When that plane is superimposed on
+the drawable for use in a graphics operation, the upper-left corner
+of some instance of the tile/stipple is at the coordinates within
+the drawable specified by the tile/stipple origin.
+The tile/stipple and clip origins are interpreted relative to the
+origin of whatever destination drawable is specified in a graphics
+request.
+.LP
+The tile pixmap must have the same root and depth as the gcontext (or a
+.PN Match
+error results).
+The stipple pixmap must have depth one and must have the same root
+as the gcontext (or a
+.PN Match
+error results).
+For fill-style
+.PN Stippled
+(but not fill-style
+.PN OpaqueStippled ),
+the stipple pattern is tiled in a single plane
+and acts as an additional clip mask to be ANDed with the clip-mask.
+Any size pixmap can be used for tiling or stippling,
+although some sizes may be faster to use than others.
+.LP
+The fill-style defines the contents of the source for line, text, and
+fill requests.
+For all text and fill requests (for example,
+.PN PolyText8 ,
+.PN PolyText16 ,
+.PN PolyFillRectangle ,
+.PN FillPoly ,
+and
+.PN PolyFillArc )
+as well as for line requests with line-style
+.PN Solid ,
+(for example,
+.PN PolyLine ,
+.PN PolySegment ,
+.PN PolyRectangle ,
+.PN PolyArc )
+and for the even dashes for line requests with line-style
+.PN OnOffDash
+or
+.PN DoubleDash :
+.TS
+lw(1.25i) lw(4.5i).
+T{
+.PN Solid
+T} T{
+Foreground
+T}
+.sp 6p
+T{
+.PN Tiled
+T} T{
+Tile
+T}
+.sp 6p
+T{
+.PN OpaqueStippled
+T} T{
+A tile with the same width and height as stipple
+but with background everywhere stipple has a zero
+and with foreground everywhere stipple has a one
+T}
+.sp 6p
+T{
+.PN Stippled
+T} T{
+Foreground masked by stipple
+T}
+.TE
+.LP
+For the odd dashes for line requests with line-style
+.PN DoubleDash :
+.TS
+lw(1.25i) lw(4.5i).
+T{
+.PN Solid
+T} T{
+Background
+T}
+.sp 6p
+T{
+.PN Tiled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.PN OpaqueStippled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.PN Stippled
+T} T{
+Background masked by stipple
+T}
+.TE
+.LP
+The dashes value allowed here is actually a simplified form of the more
+general patterns that can be set with
+.PN SetDashes .
+Specifying a value of N here is equivalent to specifying
+the two element list [N, N] in
+.PN SetDashes .
+The value must be nonzero (or a
+.PN Value
+error results).
+The meaning of dash-offset and dashes are explained in the
+.PN SetDashes
+request.
+.LP
+The clip-mask restricts writes to the destination drawable.
+Only pixels where the clip-mask has bits set to 1 are drawn.
+Pixels are not drawn outside the area covered by the clip-mask
+or where the clip-mask has bits set to 0.
+The clip-mask affects all graphics requests,
+but it does not clip sources.
+The clip-mask origin is interpreted relative to the origin of whatever
+destination drawable is specified in a graphics request.
+If a pixmap is specified as the clip-mask,
+it must have depth 1 and have the same root as the gcontext (or a
+.PN Match
+error results).
+If clip-mask is
+.PN None ,
+then pixels are always drawn, regardless of the clip origin.
+The clip-mask can also be set with the
+.PN SetClipRectangles
+request.
+.LP
+For
+.PN ClipByChildren ,
+both source and destination windows are additionally clipped by all viewable
+.PN InputOutput
+children.
+For
+.PN IncludeInferiors ,
+neither source nor destination window is clipped by inferiors.
+This will result in including subwindow contents in the
+source and drawing through subwindow boundaries of the destination.
+The use of
+.PN IncludeInferiors
+with a source or destination window of one depth with mapped inferiors
+of differing depth is not illegal,
+but the semantics is undefined by the core protocol.
+.LP
+The fill-rule defines what pixels are inside (that is, are drawn) for
+paths given in
+.PN FillPoly
+requests.
+.PN EvenOdd
+means a point is inside if an infinite ray with the point as origin crosses
+the path an odd number of times.
+For
+.PN Winding ,
+a point is inside if an infinite ray with the point as origin crosses an
+unequal number of clockwise and counterclockwise directed path segments.
+A clockwise directed path segment is one that crosses the ray from left
+to right as observed from the point.
+A counter-clockwise segment is one that crosses the ray from right to left
+as observed from the point.
+The case where a directed line segment is coincident with the ray is
+uninteresting because one can simply choose a different ray that is not
+coincident with a segment.
+.LP
+For both fill rules,
+a point is infinitely small and the path is an infinitely thin line.
+A pixel is inside if the center point of the pixel is inside
+and the center point is not on the boundary.
+If the center point is on the boundary,
+the pixel is inside if and only if the polygon interior is immediately
+to its right (x increasing direction).
+Pixels with centers along a horizontal edge are a special case
+and are inside if and only if the polygon interior is immediately below
+(y increasing direction).
+.LP
+The arc-mode controls filling in the
+.PN PolyFillArc
+request.
+.LP
+The graphics-exposures flag controls
+.PN GraphicsExposure
+event generation for
+.PN CopyArea
+and
+.PN CopyPlane
+requests (and any similar requests defined by extensions).
+.LP
+The default component values are:
+.TS H
+l lw(4i).
+_
+.sp 6p
+.B
+Component Default
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+function
+T} T{
+.PN Copy
+T}
+T{
+plane-mask
+T} T{
+all ones
+T}
+T{
+foreground
+T} T{
+0
+T}
+T{
+background
+T} T{
+1
+T}
+T{
+line-width
+T} T{
+0
+T}
+T{
+line-style
+T} T{
+.PN Solid
+T}
+T{
+cap-style
+T} T{
+.PN Butt
+T}
+T{
+join-style
+T} T{
+.PN Miter
+T}
+T{
+fill-style
+T} T{
+.PN Solid
+T}
+T{
+fill-rule
+T} T{
+.PN EvenOdd
+T}
+T{
+arc-mode
+T} T{
+.PN PieSlice
+T}
+T{
+tile
+T} T{
+Pixmap of unspecified size filled with foreground pixel
+.br
+(that is, client specified pixel if any, else 0)
+.br
+(subsequent changes to foreground do not affect this pixmap)
+T}
+T{
+stipple
+T} T{
+Pixmap of unspecified size filled with ones
+T}
+T{
+tile-stipple-x-origin
+T} T{
+0
+T}
+T{
+tile-stipple-y-origin
+T} T{
+0
+T}
+T{
+font
+T} T{
+<server-dependent-font>
+T}
+T{
+subwindow-mode
+T} T{
+.PN ClipByChildren
+T}
+T{
+graphics-exposures
+T} T{
+.PN True
+T}
+T{
+clip-x-origin
+T} T{
+0
+T}
+T{
+clip-y-origin
+T} T{
+0
+T}
+T{
+clip-mask
+T} T{
+.PN None
+T}
+T{
+dash-offset
+T} T{
+0
+T}
+T{
+dashes
+T} T{
+4 (that is, the list [4, 4])
+T}
+.sp 6p
+_
+.TE
+.LP
+Storing a pixmap in a gcontext might or might not result in a copy
+being made.
+If the pixmap is later used as the destination for a graphics request,
+the change might or might not be reflected in the gcontext.
+If the pixmap is used simultaneously in a graphics request
+as both a destination and as a tile or stipple,
+the results are not defined.
+.LP
+It is quite likely that some amount of gcontext information will be
+cached in display hardware and that such hardware can only cache a
+small number of gcontexts.
+Given the number and complexity of components,
+clients should view switching between gcontexts with nearly
+identical state as significantly more expensive than making minor
+changes to a single gcontext.
+.sp
+.LP
+.sM
+.IN "ChangeGC" "" "@DEF@"
+.PN ChangeGC
+.in +.2i
+.LP
+\fIgc\fP\^: GCONTEXT
+.br
+\fIvalue-mask\fP\^: BITMASK
+.br
+\fIvalue-list\fP\^: LISTofVALUE
+.LP
+Errors:
+.PN Alloc ,
+.PN Font ,
+.PN GContext ,
+.PN Match ,
+.PN Pixmap ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request changes components in gc.
+The value-mask and value-list specify which components are to be changed.
+The values and restrictions are the same
+as for
+.PN CreateGC .
+.LP
+Changing the clip-mask also overrides any previous
+.PN SetClipRectangles
+request on the context.
+Changing dash-offset or dashes overrides any previous
+.PN SetDashes
+request on the context.
+.LP
+The order in which components are verified and altered is server-dependent.
+If an error is generated,
+a subset of the components may have been altered.
+.sp
+.LP
+.sM
+.IN "CopyGC" "" "@DEF@"
+.PN CopyGC
+.in +.2i
+.LP
+\fIsrc-gc\fP, \fIdst-gc\fP\^: GCONTEXT
+.br
+\fIvalue-mask\fP\^: BITMASK
+.LP
+Errors:
+.PN Alloc ,
+.PN GContext ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request copies components from src-gc to dst-gc.
+The value-mask specifies which components to copy, as for
+.PN CreateGC .
+The two gcontexts must have the same root and the same depth (or a
+.PN Match
+error results).
+.sp
+.LP
+.sM
+.IN "SetDashes" "" "@DEF@"
+.PN SetDashes
+.in +.2i
+.LP
+\fIgc\fP\^: GCONTEXT
+.br
+\fIdash-offset\fP\^: CARD16
+.br
+\fIdashes\fP\^: LISTofCARD8
+.LP
+Errors:
+.PN Alloc ,
+.PN GContext ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request sets dash-offset and dashes in gc for dashed line styles.
+Dashes cannot be empty (or a
+.PN Value
+error results).
+Specifying an odd-length list is equivalent to specifying the same list
+concatenated with itself to produce an even-length list.
+The initial and alternating elements of dashes are the even dashes;
+the others are the odd dashes.
+Each element specifies a dash length in pixels.
+All of the elements must be nonzero (or a
+.PN Value
+error results).
+The dash-offset defines the phase of the pattern,
+specifying how many pixels into dashes the pattern should actually begin in
+any single graphics request.
+Dashing is continuous through path elements combined with a join-style
+but is reset to the dash-offset between each sequence of joined lines.
+.LP
+The unit of measure for dashes is the same as in the ordinary
+coordinate system.
+Ideally, a dash length is measured along the slope of the line,
+but implementations are only required to match this ideal
+for horizontal and vertical lines.
+Failing the ideal semantics,
+it is suggested that the length be measured along the major axis of the line.
+The major axis is defined as the x axis for lines drawn at an angle of
+between \-45 and +45 degrees or between 135 and 225 degrees from the x axis.
+For all other lines, the major axis is the y axis.
+.LP
+For any graphics primitive, the computation of the endpoint of an individual
+dash only depends on the geometry of the primitive, the start position
+of the dash, the direction of the dash, and the dash length.
+.LP
+For any graphics primitive, the total set of pixels used to render the
+primitive (both even and odd numbered dash elements) with
+.PN DoubleDash
+line-style is the same as the set of pixels used to render the
+primitive with
+.PN Solid
+line-style.
+.LP
+For any graphics primitive, if the primitive is drawn with
+.PN OnOffDash
+or
+.PN DoubleDash
+line-style unclipped at position [x,y] and again at position
+[x+dx,y+dy], then a point [x1,y1] is included in a dash in the first
+instance if and only if the point [x1+dx,y1+dy] is included in the dash in
+the second instance. In addition, the effective set of points comprising a
+dash cannot be affected by clipping. A point is included in a clipped dash
+if and only if the point lies inside the clipping region and the point
+would be included in the dash when drawn unclipped.
+.sp
+.LP
+.sM
+.IN "SetClipRectangles" "" "@DEF@"
+.PN SetClipRectangles
+.in +.2i
+.LP
+\fIgc\fP\^: GCONTEXT
+.br
+\fIclip-x-origin\fP, \fIclip-y-origin\fP\^: INT16
+.br
+\fIrectangles\fP\^: LISTofRECTANGLE
+.br
+\fIordering\fP\^:
+.Pn { UnSorted ,
+.PN YSorted ,
+.PN YXSorted ,
+.PN YXBanded }
+.LP
+Errors:
+.PN Alloc ,
+.PN GContext ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request changes clip-mask in gc to the specified list of rectangles
+and sets the clip origin.
+Output will be clipped to remain contained within the rectangles.
+The clip origin is interpreted relative to the origin of
+whatever destination drawable is specified in a graphics request.
+The rectangle coordinates are interpreted relative to the clip origin.
+The rectangles should be nonintersecting, or graphics results will be
+undefined.
+Note that the list of rectangles can be empty,
+which effectively disables output.
+This is the opposite of passing
+.PN None
+as the clip-mask in
+.PN CreateGC
+and
+.PN ChangeGC .
+.LP
+If known by the client,
+ordering relations on the rectangles can be specified with the ordering
+argument.
+This may provide faster operation by the server.
+If an incorrect ordering is specified,
+the server may generate a
+.PN Match
+error, but it is not required to do so.
+If no error is generated,
+the graphics results are undefined.
+.PN UnSorted
+means that the rectangles are in arbitrary order.
+.PN YSorted
+means that the rectangles are nondecreasing in their Y origin.
+.PN YXSorted
+additionally constrains
+.PN YSorted
+order in that all rectangles with an equal Y origin are
+nondecreasing in their X origin.
+.PN YXBanded
+additionally constrains
+.PN YXSorted
+by requiring that, for every possible Y scanline,
+all rectangles that include that scanline have identical Y origins and Y
+extents.
+.sp
+.LP
+.sM
+.IN "FreeGC" "" "@DEF@"
+.PN FreeGC
+.in +.2i
+.LP
+\fIgc\fP\^: GCONTEXT
+.LP
+Errors:
+.PN GContext
+.in -.2i
+.eM
+.LP
+This request deletes the association between the resource ID and the gcontext
+and destroys the gcontext.
+.sp
+.LP
+.sM
+.IN "ClearArea" "" "@DEF@"
+.PN ClearArea
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP: CARD16
+.br
+\fIexposures\fP\^: BOOL
+.LP
+Errors:
+.PN Match ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+The x and y coordinates are relative to the window's origin
+and specify the upper-left corner of the rectangle.
+If width is zero,
+it is replaced with the current width of the window minus x.
+If height is zero,
+it is replaced with the current height of the window minus y.
+If the window has a defined background tile,
+the rectangle is tiled with a plane-mask of all ones and function of
+.PN Copy
+and a subwindow-mode of
+.PN ClipByChildren .
+If the window has background
+.PN None ,
+the contents of the window are not changed.
+In either case,
+if exposures is
+.PN True ,
+then one or more exposure events are generated for regions of the rectangle
+that are either visible or are being retained in a backing store.
+.LP
+It is a
+.PN Match
+error to use an
+.PN InputOnly
+window in this request.
+.sp
+.LP
+.sM
+.IN "CopyArea" "" "@DEF@"
+.PN CopyArea
+.in +.2i
+.LP
+\fIsrc-drawable\fP, \fIdst-drawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIsrc-x\fP\^, \fIsrc-y\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.br
+\fIdst-x\fP, \fIdst-y\fP\^: INT16
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+This request combines the specified rectangle of src-drawable with the
+specified rectangle of dst-drawable.
+The src-x and src-y coordinates are relative to src-drawable's origin.
+The dst-x and dst-y are relative to dst-drawable's origin,
+each pair specifying the upper-left corner of the rectangle.
+The src-drawable must have the same root and the same depth
+as dst-drawable (or a
+.PN Match
+error results).
+.LP
+If regions of the source rectangle are obscured and have not been retained
+in backing store
+or if regions outside the boundaries of the source drawable are specified,
+then those regions are not copied,
+but the following occurs on all corresponding destination regions that are
+either visible or are retained in backing-store.
+If the dst-drawable is a window with a background other than
+.PN None ,
+these corresponding destination regions are tiled
+(with plane-mask of all ones and function
+.PN Copy )
+with that background.
+Regardless of tiling and whether the destination is a window or a pixmap,
+if graphics-exposures in gc is
+.PN True ,
+then
+.PN GraphicsExposure
+events for all corresponding destination regions are generated.
+.LP
+If graphics-exposures is
+.PN True
+but no
+.PN GraphicsExposure
+events are generated,
+then a
+.PN NoExposure
+event is generated.
+.LP
+GC components: function, plane-mask, subwindow-mode,
+graphics-exposures, clip-x-origin, clip-y-origin, clip-mask
+.sp
+.LP
+.sM
+.IN "CopyPlane" "" "@DEF@"
+.PN CopyPlane
+.in +.2i
+.LP
+\fIsrc-drawable\fP, \fIdst-drawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIsrc-x\fP, \fIsrc-y\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.br
+\fIdst-x\fP, \fIdst-y\fP\^: INT16
+.br
+\fIbit-plane\fP\^: CARD32
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+The src-drawable must have the same root as dst-drawable (or a
+.PN Match
+error results), but it need not have the same depth.
+The bit-plane must have exactly one bit set to 1 and the value of bit-plane
+must be less than %2 sup n% where \fIn\fP is the depth of src-drawable (or a
+.PN Value
+error results).
+Effectively, a pixmap of the same depth as dst-drawable and with size specified
+by the source region is formed using the foreground/background pixels in gc
+(foreground everywhere the bit-plane in src-drawable contains a bit set to 1,
+background everywhere the bit-plane contains a bit set to 0),
+and the equivalent of a
+.PN CopyArea
+is performed, with all the same exposure semantics.
+This can also be thought of as using the specified region of the source
+bit-plane as a stipple with a fill-style of
+.PN OpaqueStippled
+for filling a rectangular area of the destination.
+.LP
+GC components: function, plane-mask, foreground, background,
+subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin,
+clip-mask
+.sp
+.LP
+.sM
+.IN "PolyPoint" "" "@DEF@"
+.PN PolyPoint
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIcoordinate-mode\fP\^:
+.Pn { Origin ,
+.PN Previous }
+.br
+\fIpoints\fP\^: LISTofPOINT
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request combines the foreground pixel in gc with the pixel
+at each point in the drawable.
+The points are drawn in the order listed.
+.LP
+The first point is always relative to the drawable's origin.
+The rest are relative either to that origin or the previous point,
+depending on the coordinate-mode.
+.LP
+GC components: function, plane-mask, foreground, subwindow-mode,
+clip-x-origin, clip-y-origin, clip-mask
+.sp
+.LP
+.sM
+.IN "PolyLine" "" "@DEF@"
+.PN PolyLine
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIcoordinate-mode\fP\^:
+.Pn { Origin ,
+.PN Previous }
+.br
+\fIpoints\fP\^: LISTofPOINT
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request draws lines between each pair of points (point[i], point[i+1]).
+The lines are drawn in the order listed.
+The lines join correctly at all intermediate points,
+and if the first and last points coincide,
+the first and last lines also join correctly.
+.LP
+For any given line,
+no pixel is drawn more than once.
+If thin (zero line-width) lines intersect,
+the intersecting pixels are drawn multiple times.
+If wide lines intersect,
+the intersecting pixels are drawn only once, as though the entire
+.PN PolyLine
+were a single filled shape.
+.LP
+The first point is always relative to the drawable's origin.
+The rest are relative either to that origin or the previous point,
+depending on the coordinate-mode.
+.LP
+When either of the two lines involved in a
+.PN Bevel
+join is neither vertical
+nor horizontal, then the slope and position of the line segment defining
+the bevel join edge is implementation dependent. However, the computation
+of the slope and distance (relative to the join point) only depends on
+the line width and the slopes of the two lines.
+.LP
+GC components: function, plane-mask, line-width, line-style,
+cap-style, join-style, fill-style, subwindow-mode, clip-x-origin,
+clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dashes
+.sp
+.LP
+.sM
+.IN "PolySegment" "" "@DEF@"
+.PN PolySegment
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIsegments\fP\^: LISTofSEGMENT
+.LP
+where:
+.LP
+SEGMENT: [x1, y1, x2, y2: INT16]
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+For each segment,
+this request draws a line between [x1, y1] and [x2, y2].
+The lines are drawn in the order listed.
+No joining is performed at coincident endpoints.
+For any given line,
+no pixel is drawn more than once.
+If lines intersect,
+the intersecting pixels are drawn multiple times.
+.LP
+GC components: function, plane-mask, line-width, line-style,
+cap-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin,
+clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dashes
+.sp
+.LP
+.sM
+.IN "PolyRectangle" "" "@DEF@"
+.PN PolyRectangle
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIrectangles\fP\^: LISTofRECTANGLE
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+This request draws the outlines of the specified rectangles, as if a five-point
+.PN PolyLine
+were specified for each rectangle:
+.LP
+.DS
+[x,y] [x+width,y] [x+width,y+height] [x,y+height] [x,y]
+.DE
+.LP
+The x and y coordinates of each rectangle are relative to the drawable's origin
+and define the upper-left corner of the rectangle.
+.LP
+The rectangles are drawn in the order listed.
+For any given rectangle,
+no pixel is drawn more than once.
+If rectangles intersect,
+the intersecting pixels are drawn multiple times.
+.LP
+GC components: function, plane-mask, line-width, line-style,
+cap-style, join-style, fill-style, subwindow-mode, clip-x-origin,
+clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dashes
+.sp
+.LP
+.sM
+.IN "PolyArc" "" "@DEF@"
+.PN PolyArc
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIarcs\fP\^: LISTofARC
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+This request draws circular or elliptical arcs.
+Each arc is specified by a rectangle and two angles.
+The angles are signed integers in degrees scaled by 64,
+with positive indicating counterclockwise motion and
+negative indicating clockwise motion.
+The start of the arc is specified by angle1 relative to the three-o'clock
+position from the center of the rectangle,
+and the path and extent of the arc is specified by angle2 relative to the
+start of the arc.
+If the magnitude of angle2 is greater than 360 degrees,
+it is truncated to 360 degrees.
+The x and y coordinates of the rectangle are relative to the origin of
+the drawable.
+For an arc specified as [x,y,w,h,a1,a2],
+the origin of the major and minor axes is at [x+(w/2),y+(h/2)],
+and the infinitely thin path describing the entire circle/ellipse intersects
+the horizontal axis at [x,y+(h/2)] and [x+w,y+(h/2)] and intersects the
+vertical axis at [x+(w/2),y] and [x+(w/2),y+h].
+These coordinates are not necessarily integral; that is,
+they are not truncated to discrete coordinates.
+.LP
+For a wide line with line-width lw, the ideal bounding outlines for filling
+are given by the two infinitely thin paths consisting of all points whose
+perpendicular distance from a tangent to the path of the circle/ellipse is
+equal to lw/2 (which may be a fractional value). When the width and height
+of the arc are not equal and both are nonzero, then the actual bounding
+outlines are implementation dependent. However, the computation of the
+shape and position of the bounding outlines (relative to the center of the
+arc) only depends on the width and height of the arc and the
+line-width.
+.LP
+The cap-style is applied the same as for a line corresponding to the
+tangent of the circle/ellipse at the endpoint. When the angle of an arc
+face is not an integral multiple of 90 degrees, and the width and height of
+the arc are both are nonzero, then the shape and position of the cap at
+that face is implementation dependent. However, for a
+.PN Butt
+cap, the face
+is defined by a straight line, and the computation of the position
+(relative to the center of the arc) and the slope of the line only
+depends on the width and height of the arc and the angle of the arc face.
+For other cap styles, the computation of the position (relative to the
+center of the arc) and the shape of the cap only depends on the width
+and height of the arc, the line-width, the angle of the arc face, and the
+direction (clockwise or counter clockwise) of the arc from the endpoint.
+.LP
+The join-style is applied the same as for two lines corresponding to the
+tangents of the circles/ellipses at the join point. When the width and
+height of both arcs are nonzero, and the angle of either arc face is not an
+integral multiple of 90 degrees, then the shape of the join is
+implementation dependent. However, the computation of the shape only
+depends on the width and height of each arc, the line-width, the angles of
+the two arc faces, the direction (clockwise or counter clockwise) of the
+arcs from the join point, and the relative orientation of the two arc
+center points.
+.LP
+For an arc specified as [x,y,w,h,a1,a2],
+the angles must be specified in the effectively skewed coordinate system of
+the ellipse (for a circle, the angles and coordinate systems are identical).
+The relationship between these angles and angles expressed in the normal
+coordinate system of the screen (as measured with a protractor) is as
+follows:
+.DS
+skewed-angle = atan(tan(normal-angle) * w/h) + adjust
+.DE
+.LP
+The skewed-angle and normal-angle are expressed in radians (rather
+than in degrees scaled by 64) in the range [0,2*PI).
+The atan returns a value in the range [\-PI/2,PI/2].
+The adjust is:
+.RS
+.TS
+l l.
+0 for normal-angle in the range [0,PI/2)
+PI for normal-angle in the range [PI/2,(3*PI)/2)
+2*PI for normal-angle in the range [(3*PI)/2,2*PI)
+.TE
+.RE
+.LP
+The arcs are drawn in the order listed.
+If the last point in one arc coincides with the first point in the following
+arc,
+the two arcs will join correctly.
+If the first point in the first arc coincides with the last point
+in the last arc,
+the two arcs will join correctly.
+For any given arc,
+no pixel is drawn more than once.
+If two arcs join correctly and the line-width is greater than zero
+and the arcs intersect,
+no pixel is drawn more than once.
+Otherwise, the intersecting pixels of intersecting arcs are drawn multiple
+times.
+Specifying an arc with one endpoint and a clockwise extent draws the
+same pixels as specifying the other endpoint and an equivalent
+counterclockwise extent, except as it affects joins.
+.LP
+By specifying one axis to be zero,
+a horizontal or vertical line can be drawn.
+.LP
+Angles are computed based solely on the coordinate system,
+ignoring the aspect ratio.
+.LP
+GC components: function, plane-mask, line-width, line-style,
+cap-style, join-style, fill-style, subwindow-mode, clip-x-origin,
+clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dashes
+.sp
+.LP
+.sM
+.IN "FillPoly" "" "@DEF@"
+.PN FillPoly
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIshape\fP\^:
+.Pn { Complex ,
+.PN Nonconvex ,
+.PN Convex }
+.br
+\fIcoordinate-mode\fP\^:
+.Pn { Origin ,
+.PN Previous }
+.br
+\fIpoints\fP\^: LISTofPOINT
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request fills the region closed by the specified path.
+The path is closed automatically if the last point in the list does not
+coincide with the first point.
+No pixel of the region is drawn more than once.
+.LP
+The first point is always relative to the drawable's origin.
+The rest are relative either to that origin or the previous point,
+depending on the coordinate-mode.
+.LP
+The shape parameter may be used by the server to improve performance.
+.PN Complex
+means the path may self-intersect.
+Contiguous coincident points in the path are not treated
+as self-intersection.
+.LP
+.PN Nonconvex
+means the path does not self-intersect,
+but the shape is not wholly convex.
+If known by the client,
+specifying
+.PN Nonconvex
+over
+.PN Complex
+may improve performance.
+If
+.PN Nonconvex
+is specified for a self-intersecting path,
+the graphics results are undefined.
+.LP
+.PN Convex
+means that for every pair of points inside the polygon,
+the line segment connecting them does not intersect the path.
+If known by the client,
+specifying
+.PN Convex
+can improve performance.
+If
+.PN Convex
+is specified for a path that is not convex,
+the graphics results are undefined.
+.LP
+GC components: function, plane-mask, fill-style, fill-rule,
+subwindow-mode, clip-x-origin, clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin
+.sp
+.LP
+.sM
+.IN "PolyFillRectangle" "" "@DEF@"
+.PN PolyFillRectangle
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIrectangles\fP\^: LISTofRECTANGLE
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+This request fills the specified rectangles, as if a four-point
+.PN FillPoly
+were specified for each rectangle:
+.DS
+[x,y] [x+width,y] [x+width,y+height] [x,y+height]
+.DE
+.LP
+The x and y coordinates of each rectangle are relative to the drawable's origin
+and define the upper-left corner of the rectangle.
+.LP
+The rectangles are drawn in the order listed.
+For any given rectangle,
+no pixel is drawn more than once.
+If rectangles intersect,
+the intersecting pixels are drawn multiple times.
+.LP
+GC components: function, plane-mask, fill-style, subwindow-mode,
+clip-x-origin, clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin
+.sp
+.LP
+.sM
+.IN "PolyFillArc" "" "@DEF@"
+.PN PolyFillArc
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIarcs\fP\^: LISTofARC
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+For each arc,
+this request fills the region closed by the infinitely thin path
+described by the specified arc and one or two line segments,
+depending on the arc-mode.
+For
+.PN Chord ,
+the single line segment joining the endpoints of the arc is used.
+For
+.PN PieSlice ,
+the two line segments joining the endpoints of the arc with the center point
+are used.
+.LP
+For an arc specified as [x,y,w,h,a1,a2], the origin of the major and minor
+axes is at [x+(w/2),y+(h/2)], and the infinitely thin path describing the
+entire circle/ellipse intersects the horizontal axis at [x,y+(h/2)] and
+[x+w,y+(h/2)] and intersects the vertical axis at [x+(w/2),y] and
+[x+(w/2),y+h]. These coordinates are not necessarily integral; that is,
+they are not truncated to discrete coordinates.
+.LP
+The arc angles are interpreted as specified in the
+.PN PolyArc
+request. When
+the angle of an arc face is not an integral multiple of 90 degrees, then
+the precise endpoint on the arc is implementation dependent. However, for
+.PN Chord
+arc-mode, the computation of the pair of endpoints (relative to the
+center of the arc) only depends on the width and height of the arc and
+the angles of the two arc faces. For
+.PN PieSlice
+arc-mode, the computation of
+an endpoint only depends on the angle of the arc face for that
+endpoint and the ratio of the arc width to arc height.
+.LP
+The arcs are filled in the order listed.
+For any given arc,
+no pixel is drawn more than once.
+If regions intersect,
+the intersecting pixels are drawn multiple times.
+.LP
+GC components: function, plane-mask, fill-style, arc-mode,
+subwindow-mode, clip-x-origin, clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin
+.sp
+.LP
+.sM
+.IN "PutImage" "" "@DEF@"
+.PN PutImage
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIdepth\fP\^: CARD8
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.br
+\fIdst-x\fP, \fIdst-y\fP\^: INT16
+.br
+\fIleft-pad\fP\^: CARD8
+.br
+\fIformat\fP\^:
+.Pn { Bitmap ,
+.PN XYPixmap ,
+.PN ZPixmap }
+.br
+\fIdata\fP\^: LISTofBYTE
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request combines an image with a rectangle of the drawable.
+The dst-x and dst-y coordinates are relative to the drawable's origin.
+.LP
+If
+.PN Bitmap
+format is used,
+then depth must be one (or a
+.PN Match
+error results), and the image must be in XY format.
+The foreground pixel in gc defines the source for bits set to 1 in the image,
+and the background pixel defines the source for the bits set to 0.
+.LP
+For
+.PN XYPixmap
+and
+.PN ZPixmap ,
+the depth must match the depth of the drawable (or a
+.PN Match
+error results).
+For
+.PN XYPixmap ,
+the image must be sent in XY format.
+For
+.PN ZPixmap ,
+the image must be sent in the Z format defined for the given depth.
+.LP
+The left-pad must be zero for
+.PN ZPixmap
+format (or a
+.PN Match
+error results).
+For
+.PN Bitmap
+and
+.PN XYPixmap
+format,
+left-pad must be less than bitmap-scanline-pad as given in the server
+connection setup information (or a
+.PN Match
+error results).
+The first left-pad bits in every scanline are to be ignored by the server.
+The actual image begins that many bits into the data.
+The width argument defines the width of the actual image
+and does not include left-pad.
+.LP
+GC components: function, plane-mask, subwindow-mode, clip-x-origin,
+clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background
+.sp
+.LP
+.sM
+.IN "GetImage" "" "@DEF@"
+.PN GetImage
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.br
+\fIplane-mask\fP\^: CARD32
+.br
+\fIformat\fP\^:
+.Pn { XYPixmap ,
+.PN ZPixmap }
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+depth: CARD8
+.br
+visual: VISUALID or
+.PN None
+.br
+data: LISTofBYTE
+.LP
+Errors:
+.PN Drawable ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request returns the contents of the given rectangle of the drawable in the
+given format.
+The x and y coordinates are relative to the drawable's origin
+and define the upper-left corner of the rectangle.
+If
+.PN XYPixmap
+is specified,
+only the bit planes specified in plane-mask are transmitted,
+with the planes appearing from most significant to least significant
+in bit order.
+If
+.PN ZPixmap
+is specified, then bits in all planes not specified in plane-mask are
+transmitted as zero.
+Range checking is not performed on plane-mask;
+extraneous bits are simply ignored.
+The returned depth is as specified when the drawable was created
+and is the same as a depth component in a FORMAT structure (in the connection
+setup), not a bits-per-pixel component.
+If the drawable is a window,
+its visual type is returned.
+If the drawable is a pixmap,
+the visual is
+.PN None .
+.LP
+If the drawable is a pixmap,
+then the given rectangle must be wholly contained within the pixmap (or a
+.PN Match
+error results).
+If the drawable is a window,
+the window must be viewable,
+and it must be the case that,
+if there were no inferiors or overlapping windows,
+the specified rectangle of the window would be fully visible on the screen
+and wholly contained within the outside edges of the window (or a
+.PN Match
+error results).
+Note that the borders of the window can be included and read with this request.
+If the window has a backing store,
+then the backing-store contents are returned for regions of the window
+that are obscured by noninferior windows;
+otherwise, the returned contents of such obscured regions are undefined.
+Also undefined are the returned contents of visible
+regions of inferiors of different depth than the specified window.
+The pointer cursor image is not included in the contents returned.
+.LP
+This request is not general-purpose in the same sense as other
+graphics-related requests.
+It is intended specifically for rudimentary hardcopy support.
+.sp
+.LP
+.sM
+.IN "PolyText8" "" "@DEF@"
+.PN PolyText8
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIitems\fP\^: LISTofTEXTITEM8
+.LP
+where:
+.TS
+r l.
+TEXTITEM8: TEXTELT8 or FONT
+.br
+TEXTELT8: [delta: INT8
+.br
+ \ string: STRING8]
+.TE
+.LP
+Errors:
+.PN Drawable ,
+.PN Font ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+The x and y coordinates are relative to the drawable's origin
+and specify the baseline starting position (the initial character origin).
+Each text item is processed in turn.
+A font item causes the font to be stored in gc
+and to be used for subsequent text.
+Switching among fonts does not affect the next character origin.
+A text element delta specifies an additional change in the position
+along the x axis before the string is drawn;
+the delta is always added to the character origin.
+Each character image, as defined by the font in gc,
+is treated as an additional mask for a fill operation on the drawable.
+.LP
+All contained FONTs are always transmitted most significant byte first.
+.LP
+If a
+.PN Font
+error is generated for an item,
+the previous items may have been drawn.
+.LP
+For fonts defined with 2-byte matrix indexing,
+each STRING8 byte is interpreted as a byte2 value of a CHAR2B with a byte1
+value of zero.
+.LP
+GC components: function, plane-mask, fill-style, font,
+subwindow-mode, clip-x-origin, clip-y-origin, clip-mask
+.LP
+GC mode-dependent components: foreground, background, tile, stipple,
+tile-stipple-x-origin, tile-stipple-y-origin
+.sp
+.LP
+.sM
+.IN "PolyText16" "" "@DEF@"
+.PN PolyText16
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIitems\fP\^: LISTofTEXTITEM16
+.LP
+where:
+.TS
+r l.
+TEXTITEM16: TEXTELT16 or FONT
+.br
+TEXTELT16: [delta: INT8
+.br
+ \ string: STRING16]
+.TE
+.LP
+Errors:
+.PN Drawable ,
+.PN Font ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+This request is similar to
+.PN PolyText8 ,
+except 2-byte (or 16-bit) characters are used.
+For fonts defined with linear indexing rather than 2-byte matrix indexing,
+the server will interpret each CHAR2B as a 16-bit number that
+has been transmitted most significant byte first (that is, byte1 of the
+CHAR2B is taken as the most significant byte).
+.sp
+.LP
+.sM
+.IN "ImageText8" "" "@DEF@"
+.PN ImageText8
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIstring\fP\^: STRING8
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+The x and y coordinates are relative to the drawable's origin
+and specify the baseline starting position (the initial character origin).
+The effect is first to fill a destination rectangle with the background
+pixel defined in gc and then to paint the text with the foreground pixel.
+The upper-left corner of the filled rectangle is at:
+.DS
+[x, y \- font-ascent]
+.DE
+.LP
+the width is:
+.DS
+overall-width
+.DE
+.LP
+and the height is:
+.DS
+font-ascent + font-descent
+.DE
+.LP
+The overall-width, font-ascent, and font-descent are as
+they would be returned by a
+.PN QueryTextExtents
+call using gc and string.
+.LP
+The function and fill-style defined in gc are ignored for this request.
+The effective function is
+.PN Copy ,
+and the effective fill-style
+.PN Solid .
+.LP
+For fonts defined with 2-byte matrix indexing,
+each STRING8 byte is interpreted as a byte2 value of a CHAR2B with a byte1
+value of zero.
+.LP
+GC components: plane-mask, foreground, background, font,
+subwindow-mode, clip-x-origin, clip-y-origin, clip-mask
+.sp
+.LP
+.sM
+.IN "ImageText16" "" "@DEF@"
+.PN ImageText16
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIgc\fP\^: GCONTEXT
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIstring\fP\^: STRING16
+.LP
+Errors:
+.PN Drawable ,
+.PN GContext ,
+.PN Match
+.in -.2i
+.eM
+.LP
+This request is similar to
+.PN ImageText8 ,
+except 2-byte (or 16-bit) characters are used.
+For fonts defined with linear indexing rather than 2-byte matrix indexing,
+the server will interpret each CHAR2B as a 16-bit number that
+has been transmitted most significant byte first (that is, byte1 of the
+CHAR2B is taken as the most significant byte).
+.sp
+.LP
+.sM
+.IN "CreateColormap" "" "@DEF@"
+.PN CreateColormap
+.in +.2i
+.LP
+\fImid\fP\^: COLORMAP
+.br
+\fIvisual\fP\^: VISUALID
+.br
+\fIwindow\fP\^: WINDOW
+.br
+\fIalloc\fP\^:
+.Pn { None ,
+.PN All }
+.LP
+Errors:
+.PN Alloc ,
+.PN IDChoice ,
+.PN Match ,
+.PN Value ,
+.PN Window
+.in -.2i
+.eM
+.LP
+This request creates a colormap of the specified visual type for the screen
+on which the window resides and associates the identifier mid with it.
+The visual type must be one supported by the screen (or a
+.PN Match
+error results).
+The initial values of the colormap entries are undefined for classes
+.PN GrayScale ,
+.PN PseudoColor ,
+and
+.PN DirectColor .
+For
+.PN StaticGray ,
+.PN StaticColor ,
+and
+.PN TrueColor ,
+the entries will have defined values,
+but those values are specific to the visual and are not defined
+by the core protocol.
+For
+.PN StaticGray ,
+.PN StaticColor ,
+and
+.PN TrueColor ,
+alloc must be specified as
+.PN None
+(or a
+.PN Match
+error results).
+For the other classes, if alloc is
+.PN None ,
+the colormap initially has no allocated entries,
+and clients can allocate entries.
+.LP
+If alloc is
+.PN All ,
+then the entire colormap is allocated writable.
+The initial values of all allocated entries are undefined.
+For
+.PN GrayScale
+and
+.PN PseudoColor ,
+the effect is as if an
+.PN AllocColorCells
+request returned all pixel values from zero to N \- 1,
+where N is the colormap-entries value in the specified visual.
+For
+.PN DirectColor ,
+the effect is as if an
+.PN AllocColorPlanes
+request returned a pixel value of zero and red-mask,
+green-mask, and blue-mask values containing the same bits as the
+corresponding masks in the specified visual.
+However,
+in all cases, none of these entries can be freed with
+.PN FreeColors .
+.sp
+.LP
+.sM
+.IN "FreeColormap" "" "@DEF@"
+.PN FreeColormap
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.LP
+Errors:
+.PN Colormap
+.in -.2i
+.eM
+.LP
+This request deletes the association between the resource ID and the colormap
+and frees the colormap storage.
+If the colormap is an installed map for a screen,
+it is uninstalled (see
+.PN UninstallColormap
+request).
+If the colormap is defined as the colormap for a window (by means of
+.PN CreateWindow
+or
+.PN ChangeWindowAttributes ),
+the colormap for the window is changed to
+.PN None ,
+and a
+.PN ColormapNotify
+event is generated.
+The protocol does not define the colors displayed for a window with a colormap of
+.PN None .
+.LP
+This request has no effect on a default colormap for a screen.
+.sp
+.LP
+.sM
+.IN "CopyColormapAndFree" "" "@DEF@"
+.PN CopyColormapAndFree
+.in +.2i
+.LP
+\fImid\fP, \fIsrc-cmap\fP\^: COLORMAP
+.LP
+Errors:
+.PN Alloc ,
+.PN Colormap ,
+.PN IDChoice
+.in -.2i
+.eM
+.LP
+This request creates a colormap of the same visual type
+and for the same screen as src-cmap,
+and it associates identifier mid with it.
+It also moves all of the client's existing allocations from src-cmap
+to the new colormap with their color values intact
+and their read-only or writable characteristics intact,
+and it frees those entries in src-cmap.
+Color values in other entries in the new colormap are undefined.
+If src-cmap was created by the client with alloc
+.PN All
+(see
+.PN CreateColormap
+request),
+then the new colormap is also created with alloc
+.PN All ,
+all color values for all entries are copied from src-cmap,
+and then all entries in src-cmap are freed.
+If src-cmap was not created by the client with alloc
+.PN All ,
+then the allocations to be moved are all those pixels and planes that have
+been allocated by the client using either
+.PN AllocColor ,
+.PN AllocNamedColor ,
+.PN AllocColorCells ,
+or
+.PN AllocColorPlanes
+and that have not been freed since they were allocated.
+.sp
+.LP
+.sM
+.IN "InstallColormap" "" "@DEF@"
+.PN InstallColormap
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.LP
+Errors:
+.PN Colormap
+.in -.2i
+.eM
+.LP
+This request makes this colormap an installed map for its screen.
+All windows associated with this colormap immediately display with true colors.
+As a side effect,
+additional colormaps might be implicitly installed
+or uninstalled by the server.
+Which other colormaps get installed or uninstalled is server-dependent
+except that the required list must remain installed.
+.LP
+If cmap is not already an installed map, a
+.PN ColormapNotify
+event is generated on every window having cmap as an attribute.
+In addition,
+for every other colormap that is installed or uninstalled as a result
+of the request, a
+.PN ColormapNotify
+event is generated on every window having that colormap as an attribute.
+.LP
+At any time, there is a subset of the installed maps that are viewed as an
+ordered list and are called the required list.
+The length of the required list is at most M,
+where M is the min-installed-maps specified for the screen in the
+connection setup.
+The required list is maintained as follows.
+When a colormap is an explicit argument to
+.PN InstallColormap ,
+it is added to the head of the list; the list is truncated at the
+tail, if necessary, to keep the length of the list to at most M.
+When a colormap is an explicit argument to
+.PN UninstallColormap
+and it is in the required list, it is removed from the list.
+A colormap is not added to the required list when it is installed implicitly
+by the server, and the server cannot implicitly uninstall a colormap that is
+in the required list.
+.LP
+Initially the default colormap for a screen is installed (but is not in
+the required list).
+.sp
+.LP
+.sM
+.IN "UninstallColormap" "" "@DEF@"
+.PN UninstallColormap
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.LP
+Errors:
+.PN Colormap
+.in -.2i
+.eM
+.LP
+If cmap is on the required list for its screen (see
+.PN InstallColormap
+request),
+it is removed from the list.
+As a side effect,
+cmap might be uninstalled,
+and additional colormaps might be implicitly installed or uninstalled.
+Which colormaps get installed or uninstalled is server-dependent
+except that the required list must remain installed.
+.LP
+If cmap becomes uninstalled, a
+.PN ColormapNotify
+event is generated on every window having cmap as an attribute.
+In addition,
+for every other colormap that is installed or uninstalled as a result of
+the request, a
+.PN ColormapNotify
+event is generated on every window having that colormap as an attribute.
+.sp
+.LP
+.sM
+.IN "ListInstalledColormaps" "" "@DEF@"
+.PN ListInstalledColormaps
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+cmaps: LISTofCOLORMAP
+.LP
+Errors:
+.PN Window
+.in -.2i
+.eM
+.LP
+This request returns a list of the currently installed colormaps for the
+screen of the specified window.
+The order of colormaps is not significant,
+and there is no explicit indication of the required list (see
+.PN InstallColormap
+request).
+.sp
+.LP
+.sM
+.IN "AllocColor" "" "@DEF@"
+.PN AllocColor
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIred\fP, \fIgreen\fP, \fIblue\fP\^: CARD16
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+pixel: CARD32
+.br
+red, green, blue: CARD16
+.LP
+Errors:
+.PN Alloc ,
+.PN Colormap
+.in -.2i
+.eM
+.LP
+This request allocates a read-only colormap entry corresponding to the closest
+RGB values provided by the hardware.
+It also returns the pixel and the RGB values actually used.
+Multiple clients requesting the same effective RGB values can be assigned
+the same read-only entry, allowing entries to be shared.
+.sp
+.LP
+.sM
+.IN "AllocNamedColor" "" "@DEF@"
+.PN AllocNamedColor
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIname\fP\^: STRING8
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+pixel: CARD32
+.br
+exact-red, exact-green, exact-blue: CARD16
+.br
+visual-red, visual-green, visual-blue: CARD16
+.LP
+Errors:
+.PN Alloc ,
+.PN Colormap ,
+.PN Name
+.in -.2i
+.eM
+.LP
+This request looks up the named color with respect to the screen associated
+with the colormap.
+Then, it does an
+.PN AllocColor
+on cmap.
+The name should use the ISO Latin-1 encoding,
+and uppercase and lowercase do not matter.
+The exact RGB values specify the true values for the color,
+and the visual values specify the values actually used in the colormap.
+.sp
+.LP
+.sM
+.IN "AllocColorCells" "" "@DEF@"
+.PN AllocColorCells
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIcolors\fP, \fIplanes\fP\^: CARD16
+.br
+\fIcontiguous\fP\^: BOOL
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+pixels, masks: LISTofCARD32
+.LP
+Errors:
+.PN Alloc ,
+.PN Colormap ,
+.PN Value
+.in -.2i
+.eM
+.LP
+The number of colors must be positive,
+and the number of planes must be nonnegative (or a
+.PN Value
+error results).
+If C colors and P planes are requested,
+then C pixels and P masks are returned.
+No mask will have any bits in common with any other mask
+or with any of the pixels.
+By ORing together masks and pixels,
+C*%2 sup P% distinct pixels can be produced;
+all of these are allocated writable by the request.
+For
+.PN GrayScale
+or
+.PN PseudoColor ,
+each mask will have exactly one bit set to 1; for
+.PN DirectColor ,
+each will have exactly three bits set to 1.
+If contiguous is
+.PN True
+and if all masks are ORed together,
+a single contiguous set of bits will be formed for
+.PN GrayScale
+or
+.PN PseudoColor ,
+and three contiguous sets of bits (one within each pixel subfield) for
+.PN DirectColor .
+The RGB values of the allocated entries are undefined.
+.sp
+.LP
+.sM
+.IN "AllocColorPlanes" "" "@DEF@"
+.PN AllocColorPlanes
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIcolors\fP, \fIreds\fP, \fIgreens\fP, \fIblues\fP\^: CARD16
+.br
+\fIcontiguous\fP\^: BOOL
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+pixels: LISTofCARD32
+.br
+red-mask, green-mask, blue-mask: CARD32
+.LP
+Errors:
+.PN Alloc ,
+.PN Colormap ,
+.PN Value
+.in -.2i
+.eM
+.LP
+The number of colors must be positive,
+and the reds, greens, and blues must be nonnegative (or a
+.PN Value
+error results).
+If C colors, R reds, G greens, and B blues are requested,
+then C pixels are returned, and the masks have R, G, and B bits set,
+respectively.
+If contiguous is
+.PN True ,
+then each mask will have a contiguous set of bits.
+No mask will have any bits in common with any other mask
+or with any of the pixels.
+For
+.PN DirectColor ,
+each mask will lie within the corresponding pixel subfield.
+By ORing together subsets of masks with pixels,
+C*%2 sup R+G+B% distinct pixels can be produced;
+all of these are allocated writable by the request.
+The initial RGB values of the allocated entries are undefined.
+In the colormap,
+there are only C*%2 sup R% independent red entries,
+C*%2 sup G% independent green entries,
+and C*%2 sup B% independent blue entries.
+This is true even for
+.PN PseudoColor .
+When the colormap entry for a pixel value is changed using
+.PN StoreColors
+or
+.PN StoreNamedColor ,
+the pixel is decomposed according to the masks and the
+corresponding independent entries are updated.
+.sp
+.LP
+.sM
+.IN "FreeColors" "" "@DEF@"
+.PN FreeColors
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIpixels\fP\^: LISTofCARD32
+.br
+\fIplane-mask\fP\^: CARD32
+.LP
+Errors:
+.PN Access ,
+.PN Colormap ,
+.PN Value
+.in -.2i
+.eM
+.LP
+The plane-mask should not have any bits in common with any of the
+pixels.
+The set of all pixels is produced by ORing together subsets of
+plane-mask with the pixels.
+The request frees all of these pixels that
+were allocated by the client (using
+.PN AllocColor ,
+.PN AllocNamedColor ,
+.PN AllocColorCells ,
+and
+.PN AllocColorPlanes ).
+Note that freeing an
+individual pixel obtained from
+.PN AllocColorPlanes
+may not actually allow it to be reused until all of its related pixels
+are also freed.
+Similarly, a read-only entry is not actually freed until it has been
+freed by all clients, and if a client allocates the same read-only entry
+multiple times, it must free the entry that many times before the
+entry is actually freed.
+.LP
+All specified pixels that are allocated by the client in cmap are freed,
+even if one or more pixels produce an error.
+A
+.PN Value
+error is generated if a specified pixel is not a valid index into cmap.
+An
+.PN Access
+error is generated if a specified pixel is not allocated by the
+client (that is, is unallocated or is only allocated by another client)
+or if the colormap was created with all entries writable (using an alloc
+value of
+.PN All
+in
+.PN CreateColormap ).
+If more than one pixel is in error,
+it is arbitrary as to which pixel is reported.
+.sp
+.LP
+.sM
+.IN "StoreColors" "" "@DEF@"
+.PN StoreColors
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIitems\fP\^: LISTofCOLORITEM
+.LP
+where:
+.TS
+l l.
+COLORITEM: [pixel: CARD32
+.br
+ \ do-red, do-green, do-blue: BOOL
+.br
+ \ red, green, blue: CARD16]
+.TE
+.LP
+Errors:
+.PN Access ,
+.PN Colormap ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request changes the colormap entries of the specified pixels.
+The do-red, do-green, and do-blue fields indicate which components
+should actually be changed.
+If the colormap is an installed map for its screen,
+the changes are visible immediately.
+.LP
+All specified pixels that are allocated writable in cmap (by any client)
+are changed, even if one or more pixels produce an error.
+A
+.PN Value
+error is generated if a specified pixel is not a valid index into cmap, and an
+.PN Access
+error is generated if a specified pixel is unallocated or is allocated
+read-only.
+If more than one pixel is in error,
+it is arbitrary as to which pixel is reported.
+.sp
+.LP
+.sM
+.IN "StoreNamedColor" "" "@DEF@"
+.PN StoreNamedColor
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIpixel\fP\^: CARD32
+.br
+\fIname\fP\^: STRING8
+.br
+\fIdo-red\fP, \fIdo-green\fP\^, \fIdo-blue\fP\^: BOOL
+.LP
+Errors:
+.PN Access ,
+.PN Colormap ,
+.PN Name ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request looks up the named color with respect to the screen associated
+with cmap and then does a
+.PN StoreColors
+in cmap.
+The name should use the ISO Latin-1 encoding,
+and uppercase and lowercase do not matter.
+The
+.PN Access
+and
+.PN Value
+errors are the same as in
+.PN StoreColors .
+.sp
+.LP
+.sM
+.IN "QueryColors" "" "@DEF@"
+.PN QueryColors
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIpixels\fP\^: LISTofCARD32
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+colors: LISTofRGB
+.LP
+where:
+.LP
+.DS 0
+RGB: [red, green, blue: CARD16]
+.DE
+Errors:
+.PN Colormap ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request returns the hardware-specific color values stored in cmap for
+the specified pixels.
+The values returned for an unallocated entry are undefined.
+A
+.PN Value
+error is generated if a pixel is not a valid index into cmap.
+If more than one pixel is in error,
+it is arbitrary as to which pixel is reported.
+.sp
+.LP
+.sM
+.IN "LookupColor" "" "@DEF@"
+.PN LookupColor
+.in +.2i
+.LP
+\fIcmap\fP\^: COLORMAP
+.br
+\fIname\fP\^: STRING8
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+exact-red, exact-green, exact-blue: CARD16
+.br
+visual-red, visual-green, visual-blue: CARD16
+.LP
+Errors:
+.PN Colormap ,
+.PN Name
+.in -.2i
+.eM
+.LP
+This request looks up the string name of a color with respect to the screen
+associated with cmap and returns both the exact color values and
+the closest values provided by the hardware with respect to the visual
+type of cmap.
+The name should use the ISO Latin-1 encoding,
+and uppercase and lowercase do not matter.
+.sp
+.LP
+.sM
+.IN "CreateCursor" "" "@DEF@"
+.PN CreateCursor
+.in +.2i
+.LP
+\fIcid\fP\^: CURSOR
+.br
+\fIsource\fP\^: PIXMAP
+.br
+\fImask\fP\^: PIXMAP or
+.PN None
+.br
+\fIfore-red\fP, \fIfore-green\fP, \fIfore-blue\fP\^: CARD16
+.br
+\fIback-red\fP, \fIback-green\fP, \fIback-blue\fP\^: CARD16
+.br
+\fIx\fP, \fIy\fP\^: CARD16
+.LP
+Errors:
+.PN Alloc ,
+.PN IDChoice ,
+.PN Match ,
+.PN Pixmap
+.in -.2i
+.eM
+.LP
+This request creates a cursor and associates identifier cid with it.
+The foreground and background RGB values must be specified,
+even if the server only has a
+.PN StaticGray
+or
+.PN GrayScale
+screen.
+The foreground is used for the bits set to 1 in the source,
+and the background is used for the bits set to 0.
+Both source and mask (if specified) must have depth one (or a
+.PN Match
+error results), but they can have any root.
+The mask pixmap defines the shape of the cursor.
+That is,
+the bits set to 1 in the mask define which source pixels will be displayed,
+and where the mask has bits set to 0,
+the corresponding bits of the source pixmap are ignored.
+If no mask is given,
+all pixels of the source are displayed.
+The mask, if present, must be the same size as the source (or a
+.PN Match
+error results).
+The x and y coordinates define the hotspot relative to the source's origin
+and must be a point within the source (or a
+.PN Match
+error results).
+.LP
+The components of the cursor may be transformed arbitrarily to meet
+display limitations.
+.LP
+The pixmaps can be freed immediately if no further explicit references
+to them are to be made.
+.LP
+Subsequent drawing in the source or mask pixmap has an undefined effect
+on the cursor.
+The server might or might not make a copy of the pixmap.
+.sp
+.LP
+.sM
+.IN "CreateGlyphCursor" "" "@DEF@"
+.PN CreateGlyphCursor
+.in +.2i
+.LP
+\fIcid\fP\^: CURSOR
+.br
+\fIsource-font\fP\^: FONT
+.br
+\fImask-font\fP\^: FONT or
+.PN None
+.br
+\fIsource-char\fP, \fImask-char\fP\^: CARD16
+.br
+\fIfore-red\fP, \fIfore-green\fP, \fIfore-blue\fP\^: CARD16
+.br
+\fIback-red\fP, \fIback-green\fP, \fIback-blue\fP\^: CARD16
+.LP
+Errors:
+.PN Alloc ,
+.PN Font ,
+.PN IDChoice ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request is similar to
+.PN CreateCursor ,
+except the source and mask bitmaps are obtained from the specified font glyphs.
+The source-char must be a defined glyph in source-font,
+and if mask-font is given, mask-char must be a defined glyph in mask-font
+(or a
+.PN Value
+error results).
+The mask font and character are optional.
+The origins of the source and mask (if it is defined) glyphs
+are positioned coincidently and define the hotspot.
+The source and mask need not have the same bounding box metrics,
+and there is no restriction on the placement of the hotspot relative
+to the bounding boxes.
+If no mask is given,
+all pixels of the source are displayed.
+Note that source-char and mask-char are CARD16, not CHAR2B.
+For 2-byte matrix fonts,
+the 16-bit value should be formed with byte1 in the most significant byte
+and byte2 in the least significant byte.
+.LP
+The components of the cursor may be transformed arbitrarily to meet
+display limitations.
+.LP
+The fonts can be freed immediately if no further explicit references to
+them are to be made.
+.sp
+.LP
+.sM
+.IN "FreeCursor" "" "@DEF@"
+.PN FreeCursor
+.in +.2i
+.LP
+\fIcursor\fP\^: CURSOR
+.LP
+Errors:
+.PN Cursor
+.in -.2i
+.eM
+.LP
+This request deletes the association between the resource ID and the cursor.
+The cursor storage will be freed when no other resource references it.
+.sp
+.LP
+.sM
+.IN "RecolorCursor" "" "@DEF@"
+.PN RecolorCursor
+.in +.2i
+.LP
+\fIcursor\fP\^: CURSOR
+.br
+\fIfore-red\fP, \fIfore-green\fP, \fIfore-blue\fP\^: CARD16
+.br
+\fIback-red\fP, \fIback-green\fP, \fIback-blue\fP\^: CARD16
+.LP
+Errors:
+.PN Cursor
+.in -.2i
+.eM
+.LP
+This request changes the color of a cursor.
+If the cursor is being displayed on a screen,
+the change is visible immediately.
+.sp
+.LP
+.sM
+.IN "QueryBestSize" "" "@DEF@"
+.PN QueryBestSize
+.in +.2i
+.LP
+\fIclass\fP:
+.Pn { Cursor ,
+.PN Tile ,
+.PN Stipple }
+.br
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+width, height: CARD16
+.LP
+Errors:
+.PN Drawable ,
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request returns the best size that is closest to the argument size.
+For
+.PN Cursor ,
+this is the largest size that can be fully displayed.
+For
+.PN Tile ,
+this is the size that can be tiled fastest.
+For
+.PN Stipple ,
+this is the size that can be stippled fastest.
+.LP
+For
+.PN Cursor ,
+the drawable indicates the desired screen.
+For
+.PN Tile
+and
+.PN Stipple ,
+the drawable indicates the screen and also possibly the window class and depth.
+An
+.PN InputOnly
+window cannot be used as the drawable for
+.PN Tile
+or
+.PN Stipple
+(or a
+.PN Match
+error results).
+.sp
+.LP
+.sM
+.IN "QueryExtension" "" "@DEF@"
+.PN QueryExtension
+.in +.2i
+.LP
+\fIname\fP\^: STRING8
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+present: BOOL
+.br
+major-opcode: CARD8
+.br
+first-event: CARD8
+.br
+first-error: CARD8
+.in -.2i
+.eM
+.LP
+This request determines if the named extension is present.
+If so,
+the major opcode for the extension is returned, if it has one.
+Otherwise, zero is returned.
+Any minor opcode and the request formats are specific to the extension.
+If the extension involves additional event types,
+the base event type code is returned.
+Otherwise, zero is returned.
+The format of the events is specific to the extension.
+If the extension involves additional error codes,
+the base error code is returned.
+Otherwise, zero is returned.
+The format of additional data in the errors is specific to the extension.
+.LP
+The extension name should use the ISO Latin-1 encoding,
+and uppercase and lowercase matter.
+.sp
+.LP
+.sM
+.IN "ListExtensions" "" "@DEF@"
+.PN ListExtensions
+.LP
+ \(->
+.in +.2i
+.LP
+names: LISTofSTRING8
+.in -.2i
+.eM
+.LP
+This request returns a list of all extensions supported by the server.
+.LP
+.sM
+.IN "SetModifierMapping" "" "@DEF@"
+.PN SetModifierMapping
+.in +.2i
+.LP
+\fIkeycodes-per-modifier\fP\^: CARD8
+.br
+\fIkeycodes\fP\^: LISTofKEYCODE
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+status:
+.Pn { Success ,
+.PN Busy ,
+.PN Failed }
+.LP
+Errors:
+.PN Alloc ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request specifies the keycodes (if any) of the keys to be used as
+modifiers.
+The number of keycodes in the list must be 8*keycodes-per-modifier (or a
+.PN Length
+error results).
+The keycodes are divided into eight sets,
+with each set containing keycodes-per-modifier elements.
+The sets are assigned to the modifiers
+.PN Shift ,
+.PN Lock ,
+.PN Control ,
+.PN Mod1 ,
+.PN Mod2 ,
+.PN Mod3 ,
+.PN Mod4 ,
+and
+.PN Mod5 ,
+in order.
+Only nonzero keycode values are used within each set;
+zero values are ignored.
+All of the nonzero keycodes must be in the range specified by min-keycode
+and max-keycode in the connection setup (or a
+.PN Value
+error results).
+The order of keycodes within a set does not matter.
+If no nonzero values are specified in a set,
+the use of the corresponding modifier is disabled,
+and the modifier bit will always be zero.
+Otherwise, the modifier bit will be one whenever
+at least one of the keys in the corresponding set is in the down
+position.
+.LP
+A server can impose restrictions on how modifiers can be changed (for example,
+if certain keys do not generate up transitions in hardware,
+if auto-repeat cannot be disabled on certain keys,
+or if multiple keys per modifier are not supported).
+The status reply is
+.PN Failed
+if some such restriction is violated,
+and none of the modifiers is changed.
+.LP
+If the new nonzero keycodes specified for a modifier differ from those
+currently defined and any (current or new) keys for that modifier are
+logically in the down state, then the status reply is
+.PN Busy ,
+and none of the modifiers is changed.
+.LP
+This request generates a
+.PN MappingNotify
+event on a
+.PN Success
+status.
+.sp
+.LP
+.sM
+.IN "GetModifierMapping" "" "@DEF@"
+.PN GetModifierMapping
+.LP
+ \(->
+.in +.2i
+.LP
+keycodes-per-modifier: CARD8
+.br
+keycodes: LISTofKEYCODE
+.in -.2i
+.eM
+.LP
+This request returns the keycodes of the keys being used as modifiers.
+The number of keycodes in the list is 8*keycodes-per-modifier.
+The keycodes are divided into eight sets,
+with each set containing keycodes-per-modifier elements.
+The sets are assigned to the modifiers
+.PN Shift ,
+.PN Lock ,
+.PN Control ,
+.PN Mod1 ,
+.PN Mod2 ,
+.PN Mod3 ,
+.PN Mod4 ,
+and
+.PN Mod5 ,
+in order.
+The keycodes-per-modifier value is chosen arbitrarily by the server;
+zeroes are used to fill in unused elements within each set.
+If only zero values are given in a set,
+the use of the corresponding modifier has been disabled.
+The order of keycodes within each set is chosen arbitrarily by the server.
+.sp
+.LP
+.sM
+.IN "ChangeKeyboardMapping" "" "@DEF@"
+.PN ChangeKeyboardMapping
+.in +.2i
+.LP
+\fIfirst-keycode\fP\^: KEYCODE
+.br
+\fIkeysyms-per-keycode\fP\^: CARD8
+.br
+\fIkeysyms\fP\^: LISTofKEYSYM
+.LP
+Errors:
+.PN Alloc ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request defines the symbols for the specified number of keycodes,
+starting with the specified keycode.
+The symbols for keycodes outside this range remained unchanged.
+The number of elements in the keysyms list must be a multiple of
+keysyms-per-keycode (or a
+.PN Length
+error results).
+The first-keycode must be greater than or equal to min-keycode as returned
+in the connection setup (or a
+.PN Value
+error results) and:
+.DS
+first-keycode + (keysyms-length / keysyms-per-keycode) \- 1
+.DE
+.LP
+must be less than or equal to max-keycode as returned in the connection
+setup (or a
+.PN Value
+error results).
+KEYSYM number N (counting from zero) for keycode K has an index
+(counting from zero) of:
+.DS
+(K \- first-keycode) * keysyms-per-keycode + N
+.DE
+.LP
+in keysyms.
+The keysyms-per-keycode can be chosen arbitrarily by the client
+to be large enough to hold all desired symbols.
+A special KEYSYM value of
+.PN NoSymbol
+should be used to fill in unused elements for individual keycodes.
+It is legal for
+.PN NoSymbol
+to appear in nontrailing positions of the effective list for a keycode.
+.LP
+This request generates a
+.PN MappingNotify
+event.
+.LP
+There is no requirement that the server interpret this mapping;
+it is merely stored for reading and writing by clients (see section 5).
+.sp
+.LP
+.sM
+.IN "GetKeyboardMapping" "" "@DEF@"
+.PN GetKeyboardMapping
+.in +.2i
+.LP
+\fIfirst-keycode\fP\^: KEYCODE
+.br
+\fIcount\fP\^: CARD8
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+keysyms-per-keycode: CARD8
+.br
+keysyms: LISTofKEYSYM
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+This request returns the symbols for the specified number of keycodes,
+starting with the specified keycode.
+The first-keycode must be greater than or equal to
+min-keycode as returned in the connection setup (or a
+.PN Value
+error results), and:
+.DS
+first-keycode + count \- 1
+.DE
+.LP
+must be less than or equal to max-keycode as returned in the connection setup
+(or a
+.PN Value
+error results).
+The number of elements in the keysyms list is:
+.DS
+count * keysyms-per-keycode
+.DE
+.LP
+and KEYSYM number N (counting from zero) for keycode K has an index
+(counting from zero) of:
+.DS
+(K \- first-keycode) * keysyms-per-keycode + N
+.DE
+.LP
+in keysyms.
+The keysyms-per-keycode value is chosen arbitrarily by the server
+to be large enough to report all requested symbols.
+A special KEYSYM value of
+.PN NoSymbol
+is used to fill in unused elements for individual keycodes.
+.sp
+.LP
+.sM
+.IN "ChangeKeyboardControl" "" "@DEF@"
+.PN ChangeKeyboardControl
+.in +.2i
+.LP
+\fIvalue-mask\fP\^: BITMASK
+.br
+\fIvalue-list\fP\^: LISTofVALUE
+.LP
+Errors:
+.PN Match ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request controls various aspects of the keyboard.
+The value-mask and value-list specify which controls are to be changed.
+The possible values are:
+.TS H
+l l.
+_
+.sp 6p
+.B
+Control Type
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+key-click-percent
+T} T{
+INT8
+T}
+T{
+bell-percent
+T} T{
+INT8
+T}
+T{
+bell-pitch
+T} T{
+INT16
+T}
+T{
+bell-duration
+T} T{
+INT16
+T}
+T{
+led
+T} T{
+CARD8
+T}
+T{
+led-mode
+T} T{
+.Pn { On ,
+.PN Off }
+T}
+T{
+key
+T} T{
+KEYCODE
+T}
+T{
+auto-repeat-mode
+T} T{
+.Pn { On ,
+.PN Off ,
+.PN Default }
+T}
+.sp 6p
+_
+.TE
+.LP
+The key-click-percent sets the volume for key clicks between 0 (off) and
+100 (loud) inclusive, if possible.
+Setting to \-1 restores the default.
+Other negative values generate a
+.PN Value
+error.
+.LP
+The bell-percent sets the base volume for the bell between 0 (off) and 100
+(loud) inclusive, if possible.
+Setting to \-1 restores the default.
+Other negative values generate a
+.PN Value
+error.
+.LP
+The bell-pitch sets the pitch (specified in Hz) of the bell, if possible.
+Setting to \-1 restores the default.
+Other negative values generate a
+.PN Value
+error.
+.LP
+The bell-duration sets the duration of the bell (specified in milliseconds),
+if possible.
+Setting to \-1 restores the default.
+Other negative values generate a
+.PN Value
+error.
+.LP
+If both led-mode and led are specified,
+then the state of that LED is changed, if possible.
+If only led-mode is specified,
+then the state of all LEDs are changed, if possible.
+At most 32 LEDs, numbered from one, are supported.
+No standard interpretation of LEDs is defined.
+It is a
+.PN Match
+error if an led is specified without an led-mode.
+.LP
+If both auto-repeat-mode and key are specified,
+then the auto-repeat mode of that key is changed, if possible.
+If only auto-repeat-mode is specified,
+then the global auto-repeat mode for the entire keyboard is changed,
+if possible, without affecting the per-key settings.
+It is a
+.PN Match
+error if a key is specified without an auto-repeat-mode.
+Each key has an individual mode of whether or not it should auto-repeat
+and a default setting for that mode.
+In addition, there is a global mode of whether auto-repeat should be
+enabled or not and a default setting for that mode.
+When the global mode is
+.PN On ,
+keys should obey their individual auto-repeat modes.
+When the global mode is
+.PN Off ,
+no keys should auto-repeat.
+An auto-repeating key generates alternating
+.PN KeyPress
+and
+.PN KeyRelease
+events.
+When a key is used as a modifier,
+it is desirable for the key not to auto-repeat,
+regardless of the auto-repeat setting for that key.
+.LP
+A bell generator connected with the console but not directly on the
+keyboard is treated as if it were part of the keyboard.
+.LP
+The order in which controls are verified and altered is server-dependent.
+If an error is generated,
+a subset of the controls may have been altered.
+.sp
+.LP
+.sM
+.IN "GetKeyboardControl" "" "@DEF@"
+.PN GetKeyboardControl
+.LP
+ \(->
+.in +.2i
+.LP
+key-click-percent: CARD8
+.br
+bell-percent: CARD8
+.br
+bell-pitch: CARD16
+.br
+bell-duration: CARD16
+.br
+led-mask: CARD32
+.br
+global-auto-repeat:
+.Pn { On ,
+.PN Off }
+.br
+auto-repeats: LISTofCARD8
+.in -.2i
+.eM
+.LP
+This request returns the current control values for the keyboard.
+For the LEDs,
+the least significant bit of led-mask corresponds to LED one,
+and each one bit in led-mask indicates an LED that is lit.
+The auto-repeats is a bit vector;
+each one bit indicates that auto-repeat is enabled for the corresponding key.
+The vector is represented as 32 bytes.
+Byte N (from 0) contains the bits for keys 8N to 8N + 7,
+with the least significant bit in the byte representing key 8N.
+.sp
+.LP
+.sM
+.IN "Bell" "" "@DEF@"
+.PN Bell
+.in +.2i
+.LP
+\fIpercent\fP\^: INT8
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+This request rings the bell on the keyboard at a volume relative to the
+base volume for the keyboard, if possible.
+Percent can range from \-100 to 100 inclusive (or a
+.PN Value
+error results).
+The volume at which the bell is rung when percent is nonnegative is:
+.DS
+base \- [(base * percent) / 100] + percent
+.DE
+.LP
+When percent is negative, it is:
+.DS
+base + [(base * percent) / 100]
+.DE
+.sp
+.LP
+.sM
+.IN "SetPointerMapping" "" "@DEF@"
+.PN SetPointerMapping
+.in +.2i
+.LP
+\fImap\fP\^: LISTofCARD8
+.in -.2i
+.LP
+ \(->
+.in +.2i
+.LP
+status:
+.Pn { Success ,
+.PN Busy }
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+This request sets the mapping of the pointer.
+Elements of the list are indexed starting from one.
+The length of the list must be the same as
+.PN GetPointerMapping
+would return (or a
+.PN Value
+error results).
+The index is a core button number,
+and the element of the list defines the effective number.
+.LP
+A zero element disables a button.
+Elements are not restricted in value by the number of physical buttons,
+but no two elements can have the same nonzero value (or a
+.PN Value
+error results).
+.LP
+If any of the buttons to be altered are logically in the down state,
+the status reply is
+.PN Busy ,
+and the mapping is not changed.
+.LP
+This request generates a
+.PN MappingNotify
+event on a
+.PN Success
+status.
+.sp
+.LP
+.sM
+.IN "GetPointerMapping" "" "@DEF@"
+.PN GetPointerMapping
+.LP
+ \(->
+.in +.2i
+.LP
+map: LISTofCARD8
+.in -.2i
+.eM
+.LP
+This request returns the current mapping of the pointer.
+Elements of the list are indexed starting from one.
+The length of the list indicates the number of physical buttons.
+.LP
+The nominal mapping for a pointer is the identity mapping: map[i]=i.
+.sp
+.LP
+.sM
+.IN "ChangePointerControl" "" "@DEF@"
+.PN ChangePointerControl
+.in +.2i
+.LP
+\fIdo-acceleration\fP, \fIdo-threshold\fP\^: BOOL
+.br
+\fIacceleration-numerator\fP, \fIacceleration-denominator\fP\^: INT16
+.br
+\fIthreshold\fP\^: INT16
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+This request defines how the pointer moves.
+The acceleration is a multiplier for movement expressed as a fraction.
+For example,
+specifying 3/1 means the pointer moves three times as fast as normal.
+The fraction can be rounded arbitrarily by the server.
+Acceleration only takes effect if the pointer moves more than threshold
+number of pixels at once and only applies to the amount beyond the threshold.
+Setting a value to \-1 restores the default.
+Other negative values generate a
+.PN Value
+error, as does a zero value for acceleration-denominator.
+.sp
+.LP
+.sM
+.IN "GetPointerControl" "" "@DEF@"
+.PN GetPointerControl
+.LP
+ \(->
+.in +.2i
+.LP
+acceleration-numerator, acceleration-denominator: CARD16
+.br
+threshold: CARD16
+.in -.2i
+.eM
+.LP
+This request returns the current acceleration and threshold for the pointer.
+.sp
+.LP
+.sM
+.IN "SetScreenSaver" "" "@DEF@"
+.PN SetScreenSaver
+.in +.2i
+.LP
+\fItimeout\fP, \fIinterval\fP\^: INT16
+.br
+\fIprefer-blanking\fP\^:
+.Pn { Yes ,
+.PN No ,
+.PN Default }
+.br
+\fIallow-exposures\fP\^:
+.Pn { Yes ,
+.PN No ,
+.PN Default }
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+The timeout and interval are specified in seconds;
+setting a value to \-1 restores the default.
+Other negative values generate a
+.PN Value
+error.
+If the timeout value is zero,
+screen-saver is disabled (but an activated screen-saver is not deactivated).
+If the timeout value is nonzero,
+screen-saver is enabled.
+Once screen-saver is enabled,
+if no input from the keyboard or pointer is generated for timeout seconds,
+screen-saver is activated.
+For each screen,
+if blanking is preferred and the hardware supports video blanking,
+the screen will simply go blank.
+Otherwise,
+if either exposures are allowed or the screen can be regenerated without
+sending exposure events to clients,
+the screen is changed in a server-dependent fashion to avoid phosphor burn.
+Otherwise,
+the state of the screens does not change, and screen-saver is not activated.
+At the next keyboard or pointer input or at the next
+.PN ForceScreenSaver
+with mode
+.PN Reset ,
+screen-saver is deactivated, and all screen states are restored.
+.LP
+If the server-dependent screen-saver method is amenable to periodic change,
+interval serves as a hint about how long the change period should be,
+with zero hinting that no periodic change should be made.
+Examples of ways to change the screen include scrambling the color map
+periodically, moving an icon image about the screen periodically, or
+tiling the screen with the root window background tile,
+randomly reorigined periodically.
+.sp
+.LP
+.sM
+.IN "GetScreenSaver" "" "@DEF@"
+.PN GetScreenSaver
+.LP
+ \(->
+.in +.2i
+.LP
+timeout, interval: CARD16
+.br
+prefer-blanking:
+.Pn { Yes ,
+.PN No }
+.br
+allow-exposures:
+.Pn { Yes ,
+.PN No }
+.in -.2i
+.eM
+.LP
+This request returns the current screen-saver control values.
+.sp
+.LP
+.sM
+.IN "ForceScreenSaver" "" "@DEF@"
+.PN ForceScreenSaver
+.in +.2i
+.LP
+\fImode\fP\^:
+.Pn { Activate ,
+.PN Reset }
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+If the mode is
+.PN Activate
+and screen-saver is currently deactivated,
+then screen-saver is activated (even if screen-saver has been disabled with
+a timeout value of zero).
+If the mode is
+.PN Reset
+and screen-saver is currently enabled,
+then screen-saver is deactivated (if it was activated),
+and the activation timer is reset to its initial state
+as if device input had just been received.
+.sp
+.LP
+.sM
+.IN "ChangeHosts" "" "@DEF@"
+.PN ChangeHosts
+.in +.2i
+.LP
+\fImode\fP\^:
+.Pn { Insert ,
+.PN Delete }
+.br
+\fIhost\fP: HOST
+.LP
+Errors:
+.PN Access ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request adds or removes the specified host from the access control list.
+When the access control mechanism is enabled and a client attempts to
+establish a connection to the server,
+the host on which the client resides must be in the access control list,
+or the client must have been granted permission by a server-dependent
+method, or the server will refuse the connection.
+.LP
+The client must reside on the same host as the server and/or have been granted
+permission by a server-dependent method to execute this request (or an
+.PN Access
+error results).
+.LP
+An initial access control list can usually be specified,
+typically by naming a file that the server reads at startup and reset.
+.LP
+The following address families are defined.
+A server is not required to support these families
+and may support families not listed here.
+Use of an unsupported family, an improper address format,
+or an improper address length within a supported family results in a
+.PN Value
+error.
+.LP
+For the Internet family,
+the address must be four bytes long.
+The address bytes are in standard IP order;
+the server performs no automatic swapping on the address bytes.
+For a Class A address,
+the network number is the first byte in the address,
+and the host number is the remaining three bytes, most significant byte first.
+For a Class B address,
+the network number is the first two bytes and the host number
+is the last two bytes, each most significant byte first.
+For a Class C address,
+the network number is the first three bytes, most significant byte first,
+and the last byte is the host number.
+.LP
+For the DECnet family,
+the server performs no automatic swapping on the address bytes.
+A Phase IV address is two bytes long:
+the first byte contains the least significant eight bits of the node number,
+and the second byte contains the most significant two bits of the node number in
+the least significant two bits of the byte and the area in the most
+significant six bits of the byte.
+.LP
+For the Chaos family,
+the address must be two bytes long.
+The host number is always the first byte in the address,
+and the subnet number is always the second byte.
+The server performs no automatic swapping on the address bytes.
+.sp
+.LP
+.sM
+.IN "ListHosts" "" "@DEF@"
+.PN ListHosts
+.LP
+ \(->
+.in +.2i
+.LP
+mode:
+.Pn { Enabled ,
+.PN Disabled }
+.br
+hosts: LISTofHOST
+.in -.2i
+.eM
+.LP
+This request returns the hosts on the access control list
+and whether use of the list at connection setup is currently
+enabled or disabled.
+.LP
+Each HOST is padded to a multiple of four bytes.
+.sp
+.LP
+.sM
+.IN "SetAccessControl" "" "@DEF@"
+.PN SetAccessControl
+.in +.2i
+.LP
+\fImode\fP\^:
+.Pn { Enable ,
+.PN Disable }
+.LP
+Errors:
+.PN Access ,
+.PN Value
+.in -.2i
+.eM
+.LP
+This request enables or disables the use of the access control list
+at connection setups.
+.LP
+The client must reside on the same host as the server
+and/or have been granted permission by a server-dependent method
+to execute this request (or an
+.PN Access
+error results).
+.sp
+.LP
+.sM
+.IN "SetCloseDownMode" "" "@DEF@"
+.PN SetCloseDownMode
+.in +.2i
+.LP
+\fImode\fP:
+.Pn { Destroy ,
+.PN RetainPermanent ,
+.PN RetainTemporary }
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+This request defines what will happen to the client's resources
+at connection close.
+A connection starts in
+.PN Destroy
+mode.
+The meaning of the close-down mode is described in section 10.
+.sp
+.LP
+.sM
+.IN "KillClient" "" "@DEF@"
+.PN KillClient
+.in +.2i
+.LP
+\fIresource\fP\^: CARD32 or
+.PN AllTemporary
+.LP
+Errors:
+.PN Value
+.in -.2i
+.eM
+.LP
+If a valid resource is specified,
+.PN KillClient
+forces a close-down of the client that created the resource.
+If the client has already terminated in either
+.PN RetainPermanent
+or
+.PN RetainTemporary
+mode, all of the client's resources are destroyed (see section 10).
+If
+.PN AllTemporary
+is specified,
+then the resources of all clients that have terminated in
+.PN RetainTemporary
+are destroyed.
+.sp
+.LP
+.sM
+.IN "NoOperation" "" "@DEF@"
+.PN NoOperation
+.eM
+.LP
+This request has no arguments and no results,
+but the request length field
+allows the request to be any multiple of four bytes in length.
+The bytes contained in the request are uninterpreted by the server.
+.LP
+This request can be used in its minimum four byte form as padding where
+necessary by client libraries that find it convenient to force requests
+to begin on 64-bit boundaries.
+.NH 1
+Connection Close
+.XS
+\*(SN Connection Close
+.XE
+.LP
+At connection close,
+all event selections made by the client are discarded.
+If the client has the pointer actively grabbed, an
+.PN UngrabPointer
+is performed.
+If the client has the keyboard actively grabbed, an
+.PN UngrabKeyboard
+is performed.
+All passive grabs by the client are released.
+If the client has the server grabbed, an
+.PN UngrabServer
+is performed.
+All selections (see
+.PN SetSelectionOwner
+request)
+owned by the client are disowned.
+If close-down mode (see
+.PN SetCloseDownMode
+request) is
+.PN RetainPermanent
+or
+.PN RetainTemporary ,
+then all resources (including colormap entries)
+allocated by the client are marked as permanent or temporary,
+respectively (but this does not prevent other clients from explicitly
+destroying them).
+If the mode is
+.PN Destroy ,
+all of the client's resources are destroyed.
+.LP
+When a client's resources are destroyed,
+for each window in the client's save-set,
+if the window is an inferior of a window created by the client,
+the save-set window is reparented to the closest ancestor such that
+the save-set window is not an inferior of a window created by the client.
+If the save-set window is unmapped, a
+.PN MapWindow
+request is performed on it (even if it was not an inferior
+of a window created by the client).
+The reparenting leaves unchanged the absolute coordinates
+(with respect to the root window) of the upper-left outer corner of the
+save-set window.
+After save-set processing,
+all windows created by the client are destroyed.
+For each nonwindow resource created by the client,
+the appropriate
+.PN Free
+request is performed.
+All colors and colormap entries allocated by the client are freed.
+.LP
+A server goes through a cycle of having no connections and having some
+connections.
+At every transition to the state of having no connections
+as a result of a connection closing with a
+.PN Destroy
+close-down mode,
+the server resets its state as if it had just been started.
+This starts by destroying all lingering resources from clients
+that have terminated in
+.PN RetainPermanent
+or
+.PN RetainTemporary
+mode.
+It additionally includes deleting all but the predefined atom identifiers,
+deleting all properties on all root windows, resetting all device maps and
+attributes (key click, bell volume, acceleration), resetting the access
+control list, restoring the standard root tiles and cursors, restoring
+the default font path, and restoring the input focus to state
+.PN PointerRoot .
+.LP
+Note that closing a connection with a close-down mode of
+.PN RetainPermanent
+or
+.PN RetainTemporary
+will not cause the server to reset.
+.NH 1
+Events
+.XS
+\*(SN Events
+.XE
+.LP
+When a button press is processed with the pointer in some window W
+and no active pointer grab is in progress,
+the ancestors of W are searched from the root down,
+looking for a passive grab to activate.
+If no matching passive grab on the button exists,
+then an active grab is started automatically for the client receiving the event,
+and the last-pointer-grab time is set to the current server time.
+The effect is essentially equivalent to a
+.PN GrabButton
+with arguments:
+.TS H
+lw(2.25i) lw(3.25i).
+_
+.sp 6p
+.B
+Argument Value
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+event-window
+T} T{
+Event window
+T}
+T{
+event-mask
+T} T{
+Client's selected pointer events on the event window
+T}
+T{
+pointer-mode and keyboard-mode
+T} T{
+.PN Asynchronous
+T}
+T{
+owner-events
+T} T{
+.PN True
+if the client has
+.PN OwnerGrabButton
+selected on the event window, otherwise
+.PN False
+T}
+T{
+confine-to
+T} T{
+.PN None
+T}
+T{
+cursor
+T} T{
+.PN None
+T}
+.sp 6p
+_
+.TE
+.LP
+The grab is terminated automatically when the logical state of the pointer
+has all buttons released.
+.PN UngrabPointer
+and
+.PN ChangeActivePointerGrab
+can both be used to modify the active grab.
+.sp
+.LP
+.sM
+.IN "KeyPress" "" "@DEF@"
+.PN KeyPress
+.br
+.IN "KeyRelease" "" "@DEF@"
+.PN KeyRelease
+.br
+.IN "ButtonPress" "" "@DEF@"
+.PN ButtonPress
+.br
+.IN "ButtonRelease" "" "@DEF@"
+.PN ButtonRelease
+.br
+.IN "MotionNotify" "" "@DEF@"
+.PN MotionNotify
+.in +.2i
+.LP
+\fIroot\fP, \fIevent\fP\^: WINDOW
+.br
+\fIchild\fP\^: WINDOW or
+.PN None
+.br
+\fIsame-screen\fP\^: BOOL
+.br
+\fIroot-x\fP, \fIroot-y\fP, \fIevent-x\fP, \fIevent-y\fP\^: INT16
+.br
+\fIdetail\fP\^: <see below>
+.br
+\fIstate\fP\^: SETofKEYBUTMASK
+.br
+\fItime\fP\^: TIMESTAMP
+.in -.2i
+.eM
+.LP
+These events are generated either when a key or button logically changes state
+or when the pointer logically moves.
+The generation of these logical changes may lag the physical changes
+if device event processing is frozen.
+Note that
+.PN KeyPress
+and
+.PN KeyRelease
+are generated for all keys, even those mapped to modifier bits.
+The source of the event is the window the pointer is in.
+The window the event is reported with respect to is called the event window.
+The event window is found by starting with the source window and
+looking up the hierarchy for the first window on which any client has selected
+interest in the event (provided no intervening window prohibits event
+generation by including the event type in its do-not-propagate-mask).
+The actual window used for reporting can be modified by active grabs and,
+in the case of keyboard events, can be modified by the focus window.
+.LP
+The root is the root window of the source window,
+and root-x and root-y are the pointer coordinates relative to root's origin
+at the time of the event.
+Event is the event window.
+If the event window is on the same screen as root,
+then event-x and event-y are the pointer coordinates relative to the
+event window's origin.
+Otherwise, event-x and event-y are zero.
+If the source window is an inferior of the event window,
+then child is set to the child of the event window that is an
+ancestor of (or is) the source window.
+Otherwise, it is set to
+.PN None .
+The state component gives the logical state of the buttons and modifier keys
+just before the event.
+The detail component type varies with the event type:
+.TS H
+l l.
+_
+.sp 6p
+.B
+Event Component
+.sp 6p
+_
+.TH
+.R
+.sp 6p
+T{
+.PN KeyPress ,
+.PN KeyRelease
+T} T{
+KEYCODE
+T}
+T{
+.PN ButtonPress ,
+.PN ButtonRelease
+T} T{
+BUTTON
+T}
+T{
+.PN MotionNotify
+T} T{
+.Pn { Normal ,
+.PN Hint }
+T}
+.sp 6p
+_
+.TE
+.LP
+.PN MotionNotify
+events are only generated when the motion begins and ends in the window.
+The granularity of motion events is not guaranteed,
+but a client selecting for motion events is guaranteed to get at least one
+event when the pointer moves and comes to rest.
+Selecting
+.PN PointerMotion
+receives events independent of the state of the pointer buttons.
+By selecting some subset of
+.PN Button[1-5]Motion
+instead,
+.PN MotionNotify
+events will only be received when one or more of the
+specified buttons are pressed.
+By selecting
+.PN ButtonMotion ,
+.PN MotionNotify
+events will be received only when at least one button is pressed.
+The events are always of type
+.PN MotionNotify ,
+independent of the selection.
+If
+.PN PointerMotionHint
+is selected,
+the server is free to send only one
+.PN MotionNotify
+event (with detail
+.PN Hint )
+to the client for the event window until
+either the key or button state changes,
+the pointer leaves the event window,
+or the client issues a
+.PN QueryPointer
+or
+.PN GetMotionEvents
+request.
+.sp
+.LP
+.sM
+.IN "EnterNotify" "" "@DEF@"
+.PN EnterNotify
+.br
+.IN "LeaveNotify" "" "@DEF@"
+.PN LeaveNotify
+.in +.2i
+.LP
+\fIroot\fP, \fIevent\fP\^: WINDOW
+.br
+\fIchild\fP\^: WINDOW or
+.PN None
+.br
+\fIsame-screen\fP\^: BOOL
+.br
+\fIroot-x\fP, \fIroot-y\fP, \fIevent-x\fP, \fIevent-y\fP\^: INT16
+.br
+\fImode\fP\^:
+.Pn { Normal ,
+.PN Grab ,
+.PN Ungrab }
+.br
+\fIdetail\fP\^:
+.Pn { Ancestor ,
+.PN Virtual ,
+.PN Inferior ,
+.PN Nonlinear ,
+.PN NonlinearVirtual }
+.br
+\fIfocus\fP\^: BOOL
+.br
+\fIstate\fP\^: SETofKEYBUTMASK
+.br
+\fItime\fP\^: TIMESTAMP
+.in -.2i
+.eM
+.LP
+If pointer motion or window hierarchy change causes the pointer to be
+in a different window than before,
+.PN EnterNotify
+and
+.PN LeaveNotify
+events are generated instead of a
+.PN MotionNotify
+event.
+Only clients selecting
+.PN EnterWindow
+on a window receive
+.PN EnterNotify
+events, and only clients selecting
+.PN LeaveWindow
+receive
+.PN LeaveNotify
+events.
+The pointer position reported in the event is always the final position,
+not the initial position of the pointer.
+The root is the root window for this position,
+and root-x and root-y are the pointer coordinates relative to root's
+origin at the time of the event.
+Event is the event window.
+If the event window is on the same screen as root,
+then event-x and event-y are the pointer coordinates relative
+to the event window's origin.
+Otherwise, event-x and event-y are zero.
+In a
+.PN LeaveNotify
+event, if a child of the event window contains the initial position of the
+pointer, then the child component is set to that child.
+Otherwise, it is
+.PN None .
+For an
+.PN EnterNotify
+event, if a child of the event window contains the final pointer position,
+then the child component is set to that child.
+Otherwise, it is
+.PN None .
+If the event window is the focus window or an inferior of the focus window,
+then focus is
+.PN True .
+Otherwise, focus is
+.PN False .
+.LP
+Normal pointer motion events have mode
+.PN Normal .
+Pseudo-motion events when a grab activates have mode
+.PN Grab ,
+and pseudo-motion events when a grab deactivates have mode
+.PN Ungrab .
+.LP
+All
+.PN EnterNotify
+and
+.PN LeaveNotify
+events caused by a hierarchy change are generated after any hierarchy event
+caused by that change (that is,
+.PN UnmapNotify ,
+.PN MapNotify ,
+.PN ConfigureNotify ,
+.PN GravityNotify ,
+.PN CirculateNotify ),
+but the ordering of
+.PN EnterNotify
+and
+.PN LeaveNotify
+events with respect to
+.PN FocusOut ,
+.PN VisibilityNotify ,
+and
+.PN Expose
+events is not constrained.
+.LP
+Normal events are generated as follows:
+.LP
+When the pointer moves from window A to window B and A is an inferior
+of B:
+.IP \(bu 5
+.PN LeaveNotify
+with detail
+.PN Ancestor
+is generated on A.
+.IP \(bu 5
+.PN LeaveNotify
+with detail
+.PN Virtual
+is generated on each window between A and B exclusive (in that order).
+.IP \(bu 5
+.PN EnterNotify
+with detail
+.PN Inferior
+is generated on B.
+.LP
+When the pointer moves from window A to window B and B is an inferior
+of A:
+.IP \(bu 5
+.PN LeaveNotify
+with detail
+.PN Inferior
+is generated on A.
+.IP \(bu 5
+.PN EnterNotify
+with detail
+.PN Virtual
+is generated on each window between A and B exclusive (in that order).
+.IP \(bu 5
+.PN EnterNotify
+with detail
+.PN Ancestor
+is generated on B.
+.LP
+When the pointer moves from window A to window B and window C is
+their least common ancestor:
+.IP \(bu 5
+.PN LeaveNotify
+with detail
+.PN Nonlinear
+is generated on A.
+.IP \(bu 5
+.PN LeaveNotify
+with detail
+.PN NonlinearVirtual
+is generated on each window between A and C exclusive (in that order).
+.IP \(bu 5
+.PN EnterNotify
+with detail
+.PN NonlinearVirtual
+is generated on each window between C and B exclusive (in that order).
+.IP \(bu 5
+.PN EnterNotify
+with detail
+.PN Nonlinear
+is generated on B.
+.LP
+When the pointer moves from window A to window B on different screens:
+.IP \(bu 5
+.PN LeaveNotify
+with detail
+.PN Nonlinear
+is generated on A.
+.IP \(bu 5
+If A is not a root window,
+.PN LeaveNotify
+with detail
+.PN NonlinearVirtual
+is generated on each window above A up to and including its root (in order).
+.IP \(bu 5
+If B is not a root window,
+.PN EnterNotify
+with detail
+.PN NonlinearVirtual
+is generated on each window from B's root down to but not including B
+(in order).
+.IP \(bu 5
+.PN EnterNotify
+with detail
+.PN Nonlinear
+is generated on B.
+.LP
+When a pointer grab activates (but after any initial warp into a confine-to
+window and before generating any actual
+.PN ButtonPress
+event that activates the grab),
+G is the grab-window for the grab, and P is the window the pointer is in:
+.IP \(bu 5
+.PN EnterNotify
+and
+.PN LeaveNotify
+events with mode
+.PN Grab
+are generated (as for
+.PN Normal
+above) as if the pointer were to suddenly warp from its current
+position in P to some position in G.
+However, the pointer does not warp,
+and the pointer position is used as both the initial
+and final positions for the events.
+.LP
+When a pointer grab deactivates (but after generating any actual
+.PN ButtonRelease
+event that deactivates the grab), G is the grab-window for
+the grab, and P is the window the pointer is in:
+.IP \(bu 5
+.PN EnterNotify
+and
+.PN LeaveNotify
+events with mode
+.PN Ungrab
+are generated (as for
+.PN Normal
+above) as if the pointer were to suddenly warp from
+some position in G to its current position in P.
+However, the pointer does not warp,
+and the current pointer position is used as both the initial
+and final positions for the events.
+.sp
+.LP
+.sM
+.IN "FocusIn" "" "@DEF@"
+.PN FocusIn
+.br
+.IN "FocusOut" "" "@DEF@"
+.PN FocusOut
+.in +.2i
+.LP
+\fIevent\fP\^: WINDOW
+.br
+\fImode\fP\^:
+.Pn { Normal ,
+.PN WhileGrabbed ,
+.PN Grab ,
+.PN Ungrab }
+.br
+\fIdetail\fP\^:
+.Pn { Ancestor ,
+.PN Virtual ,
+.PN Inferior ,
+.PN Nonlinear ,
+.PN NonlinearVirtual ,
+.PN Pointer ,
+.br
+\ \ \ \ \ \ \ \ \ \ \
+.PN PointerRoot ,
+.PN None }
+.in -.2i
+.eM
+.LP
+These events are generated when the input focus changes
+and are reported to clients selecting
+.PN FocusChange
+on the window.
+Events generated by
+.PN SetInputFocus
+when the keyboard is not grabbed have mode
+.PN Normal .
+Events generated by
+.PN SetInputFocus
+when the keyboard is grabbed have mode
+.PN WhileGrabbed .
+Events generated when a keyboard grab activates have mode
+.PN Grab ,
+and events generated when a keyboard grab deactivates have mode
+.PN Ungrab .
+.LP
+All
+.PN FocusOut
+events caused by a window unmap are generated after any
+.PN UnmapNotify
+event, but the ordering of
+.PN FocusOut
+with respect to generated
+.PN EnterNotify ,
+.PN LeaveNotify ,
+.PN VisibilityNotify ,
+and
+.PN Expose
+events is not constrained.
+.LP
+.PN Normal
+and
+.PN WhileGrabbed
+events are generated as follows:
+.LP
+When the focus moves from window A to window B, A is an inferior of B,
+and the pointer is in window P:
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN Ancestor
+is generated on A.
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN Virtual
+is generated on each window between A and B exclusive (in order).
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN Inferior
+is generated on B.
+.IP \(bu 5
+If P is an inferior of B
+but P is not A or an inferior of A or an ancestor of A,
+.PN FocusIn
+with detail
+.PN Pointer
+is generated on each window below B down to and including P (in order).
+.LP
+When the focus moves from window A to window B, B is an inferior of A,
+and the pointer is in window P:
+.IP \(bu 5
+If P is an inferior of A
+but P is not an inferior of B or an ancestor of B,
+.PN FocusOut
+with detail
+.PN Pointer
+is generated on each window from P up to but not including A (in order).
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN Inferior
+is generated on A.
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN Virtual
+is generated on each window between A and B exclusive (in order).
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN Ancestor
+is generated on B.
+.LP
+When the focus moves from window A to window B, window C is their
+least common ancestor, and the pointer is in window P:
+.IP \(bu 5
+If P is an inferior of A,
+.PN FocusOut
+with detail
+.PN Pointer
+is generated on each window from P up to but not including A (in order).
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN Nonlinear
+is generated on A.
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN NonlinearVirtual
+is generated on each window between A and C exclusive (in order).
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN NonlinearVirtual
+is generated on each window between C and B exclusive (in order).
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN Nonlinear
+is generated on B.
+.IP \(bu 5
+If P is an inferior of B,
+.PN FocusIn
+with detail
+.PN Pointer
+is generated on each window below B down to and including P (in order).
+.LP
+When the focus moves from window A to window B on different screens
+and the pointer is in window P:
+.IP \(bu 5
+If P is an inferior of A,
+.PN FocusOut
+with detail
+.PN Pointer
+is generated on each window from P up to but not including A (in order).
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN Nonlinear
+is generated on A.
+.IP \(bu 5
+If A is not a root window,
+.PN FocusOut
+with detail
+.PN NonlinearVirtual
+is generated on each window above A up to and including its root (in order).
+.IP \(bu 5
+If B is not a root window,
+.PN FocusIn
+with detail
+.PN NonlinearVirtual
+is generated on each window from B's root down to but not including B
+(in order).
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN Nonlinear
+is generated on B.
+.IP \(bu 5
+If P is an inferior of B,
+.PN FocusIn
+with detail
+.PN Pointer
+is generated on each window below B down to and including P (in order).
+.LP
+When the focus moves from window A to
+.PN PointerRoot
+(or
+.PN None )
+and the pointer is in window P:
+.IP \(bu 5
+If P is an inferior of A,
+.PN FocusOut
+with detail
+.PN Pointer
+is generated on each window from P up to but not including A (in order).
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN Nonlinear
+is generated on A.
+.IP \(bu 5
+If A is not a root window,
+.PN FocusOut
+with detail
+.PN NonlinearVirtual
+is generated on each window above A up to and including its root (in order).
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN PointerRoot
+(or
+.PN None )
+is generated on all root windows.
+.IP \(bu 5
+If the new focus is
+.PN PointerRoot ,
+.PN FocusIn
+with detail
+.PN Pointer
+is generated on each window from P's root down to and including P (in order).
+.LP
+When the focus moves from
+.PN PointerRoot
+(or
+.PN None )
+to window A and the pointer is in window P:
+.IP \(bu 5
+If the old focus is
+.PN PointerRoot ,
+.PN FocusOut
+with detail
+.PN Pointer
+is generated on each window from P up to and including P's root (in order).
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN PointerRoot
+(or
+.PN None )
+is generated on all root windows.
+.IP \(bu 5
+If A is not a root window,
+.PN FocusIn
+with detail
+.PN NonlinearVirtual
+is generated on each window from A's root down to but not including A
+(in order).
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN Nonlinear
+is generated on A.
+.IP \(bu 5
+If P is an inferior of A,
+.PN FocusIn
+with detail
+.PN Pointer
+is generated on each window below A down to and including P (in order).
+.LP
+When the focus moves from
+.PN PointerRoot
+to
+.PN None
+(or vice versa) and the pointer is in window P:
+.IP \(bu 5
+If the old focus is
+.PN PointerRoot ,
+.PN FocusOut
+with detail
+.PN Pointer
+is generated on each window from P up to and including P's root (in order).
+.IP \(bu 5
+.PN FocusOut
+with detail
+.PN PointerRoot
+(or
+.PN None )
+is generated on all root windows.
+.IP \(bu 5
+.PN FocusIn
+with detail
+.PN None
+(or
+.PN PointerRoot )
+is generated on all root windows.
+.IP \(bu 5
+If the new focus is
+.PN PointerRoot ,
+.PN FocusIn
+with detail
+.PN Pointer
+is generated on each window from P's root down to and including P (in order).
+.LP
+When a keyboard grab activates (but before generating any actual
+.PN KeyPress
+event that activates the grab), G is the grab-window for the grab,
+and F is the current focus:
+.IP \(bu 5
+.PN FocusIn
+and
+.PN FocusOut
+events with mode
+.PN Grab
+are generated (as for
+.PN Normal
+above) as if the focus were to change from F to G.
+.LP
+When a keyboard grab deactivates (but after generating any actual
+.PN KeyRelease
+event that deactivates the grab), G is the grab-window for the grab,
+and F is the current focus:
+.IP \(bu 5
+.PN FocusIn
+and
+.PN FocusOut
+events with mode
+.PN Ungrab
+are generated (as for
+.PN Normal
+above) as if the focus were to change from G to F.
+.sp
+.LP
+.sM
+.IN "KeymapNotify" "" "@DEF@"
+.PN KeymapNotify
+.in +.2i
+.LP
+\fIkeys\fP\^: LISTofCARD8
+.in -.2i
+.eM
+.LP
+The value is a bit vector as described in
+.PN QueryKeymap .
+This event is reported to clients selecting
+.PN KeymapState
+on a window and is generated immediately after every
+.PN EnterNotify
+and
+.PN FocusIn .
+.sp
+.LP
+.sM
+.IN "Expose" "" "@DEF@"
+.PN Expose
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP\^: CARD16
+.br
+\fIcount\fP\^: CARD16
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN Exposure
+on the window.
+It is generated when no valid contents are available for regions of a window,
+and either the regions are visible, the regions are viewable
+and the server is (perhaps newly) maintaining backing store on the window,
+or the window is not viewable but the server is (perhaps newly) honoring
+window's backing-store attribute of
+.PN Always
+or
+.PN WhenMapped .
+The regions are decomposed into an arbitrary set of rectangles,
+and an
+.PN Expose
+event is generated for each rectangle.
+.LP
+For a given action causing exposure events,
+the set of events for a given window are guaranteed to be reported contiguously.
+If count is zero,
+then no more
+.PN Expose
+events for this window follow.
+If count is nonzero,
+then at least that many more
+.PN Expose
+events for this window follow (and possibly more).
+.LP
+The x and y coordinates are relative to window's origin
+and specify the upper-left corner of a rectangle.
+The width and height specify the extent of the rectangle.
+.LP
+.PN Expose
+events are never generated on
+.PN InputOnly
+windows.
+.LP
+All
+.PN Expose
+events caused by a hierarchy change are generated after any
+hierarchy event caused by that change (for example,
+.PN UnmapNotify ,
+.PN MapNotify ,
+.PN ConfigureNotify ,
+.PN GravityNotify ,
+.PN CirculateNotify ).
+All
+.PN Expose
+events on a given window are generated after any
+.PN VisibilityNotify
+event on that window,
+but it is not required that all
+.PN Expose
+events on all windows be generated after all
+.PN Visibilitity
+events on all windows.
+The ordering of
+.PN Expose
+events with respect to
+.PN FocusOut ,
+.PN EnterNotify ,
+and
+.PN LeaveNotify
+events is not constrained.
+.sp
+.LP
+.sM
+.IN "GraphicsExposure" "" "@DEF@"
+.PN GraphicsExposure
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP\^: CARD16
+.br
+\fIcount\fP\^: CARD16
+.br
+\fImajor-opcode\fP\^: CARD8
+.br
+\fIminor-opcode\fP\^: CARD16
+.in -.2i
+.eM
+.LP
+This event is reported to a client using a graphics context
+with graphics-exposures selected
+and is generated when a destination region could not be computed due
+to an obscured or out-of-bounds source region.
+All of the regions exposed by a given graphics request
+are guaranteed to be reported contiguously.
+If count is zero then no more
+.PN GraphicsExposure
+events for this window follow.
+If count is nonzero,
+then at least that many more
+.PN GraphicsExposure
+events for this window follow (and possibly more).
+.LP
+The x and y coordinates are relative to drawable's origin
+and specify the upper-left corner of a rectangle.
+The width and height specify the extent of the rectangle.
+.LP
+The major and minor opcodes identify the graphics request used.
+For the core protocol,
+major-opcode is always
+.PN CopyArea
+or
+.PN CopyPlane ,
+and minor-opcode is always zero.
+.sp
+.LP
+.sM
+.IN "NoExposure" "" "@DEF@"
+.PN NoExposure
+.in +.2i
+.LP
+\fIdrawable\fP\^: DRAWABLE
+.br
+\fImajor-opcode\fP\^: CARD8
+.br
+\fIminor-opcode:\fP\^ CARD16
+.in -.2i
+.eM
+.LP
+This event is reported to a client using a graphics context
+with graphics-exposures selected
+and is generated when a graphics request
+that might produce
+.PN GraphicsExposure
+events does not produce any.
+The drawable specifies the destination used for the graphics request.
+.LP
+The major and minor opcodes identify the graphics request used.
+For the core protocol,
+major-opcode is always
+.PN CopyArea
+or
+.PN CopyPlane ,
+and the minor-opcode is always zero.
+.sp
+.LP
+.sM
+.IN "VisibilityNotify" "" "@DEF@"
+.PN VisibilityNotify
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIstate\fP\^:
+.Pn { Unobscured ,
+.PN PartiallyObscured ,
+.PN FullyObscured }
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN VisibilityChange
+on the window.
+In the following,
+the state of the window is calculated ignoring all of the window's subwindows.
+When a window changes state from partially or fully obscured or
+not viewable to viewable and completely unobscured,
+an event with
+.PN Unobscured
+is generated.
+When a window changes state from viewable and completely unobscured,
+from viewable and completely obscured,
+or from not viewable, to viewable and partially obscured,
+an event with
+.PN PartiallyObscured
+is generated.
+When a window changes state from viewable and completely unobscured,
+from viewable and partially obscured,
+or from not viewable to viewable and fully obscured,
+an event with
+.PN FullyObscured
+is generated.
+.LP
+.PN VisibilityNotify
+events are never generated on
+.PN InputOnly
+windows.
+.LP
+All
+.PN VisibilityNotify
+events caused by a hierarchy change are generated after any hierarchy event
+caused by that change (for example,
+.PN UnmapNotify ,
+.PN MapNotify ,
+.PN ConfigureNotify ,
+.PN GravityNotify ,
+.PN CirculateNotify ).
+Any
+.PN VisibilityNotify
+event on a given window is generated before any
+.PN Expose
+events on that window,
+but it is not required that all
+.PN VisibilityNotify
+events on all windows be generated before all
+.PN Expose
+events on all windows.
+The ordering of
+.PN VisibilityNotify
+events with respect to
+.PN FocusOut ,
+.PN EnterNotify ,
+and
+.PN LeaveNotify
+events is not constrained.
+.sp
+.LP
+.sM
+.IN "CreateNotify" "" "@DEF@"
+.PN CreateNotify
+.in +.2i
+.LP
+\fIparent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP, \fIborder-width\fP\^: CARD16
+.br
+\fIoverride-redirect\fP\^: BOOL
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN SubstructureNotify
+on the parent
+and is generated when the window is created.
+The arguments are as in the
+.PN CreateWindow
+request.
+.sp
+.LP
+.sM
+.IN "DestroyNotify" "" "@DEF@"
+.PN DestroyNotify
+.in +.2i
+.LP
+\fIevent\fP, \fIwindow\fP\^: WINDOW
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN StructureNotify
+on the window and to clients selecting
+.PN SubstructureNotify
+on the parent.
+It is generated when the window is destroyed.
+The event is the window on which the event was generated,
+and the window is the window that is destroyed.
+.LP
+The ordering of the
+.PN DestroyNotify
+events is such that for any given window,
+.PN DestroyNotify
+is generated on all inferiors of the window
+before being generated on the window itself.
+The ordering among siblings and across subhierarchies is not
+otherwise constrained.
+.sp
+.LP
+.sM
+.IN "UnmapNotify" "" "@DEF@"
+.PN UnmapNotify
+.in +.2i
+.LP
+\fIevent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIfrom-configure\fP\^: BOOL
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN StructureNotify
+on the window and to clients selecting
+.PN SubstructureNotify
+on the parent.
+It is generated when the window changes state from mapped to unmapped.
+The event is the window on which the event was generated,
+and the window is the window that is unmapped.
+The from-configure flag is
+.PN True
+if the event was generated as a result of the window's parent being resized
+when the window itself had a win-gravity of
+.PN Unmap .
+.sp
+.LP
+.sM
+.IN "MapNotify" "" "@DEF@"
+.PN MapNotify
+.in +.2i
+.LP
+\fIevent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIoverride-redirect\fP\^: BOOL
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN StructureNotify
+on the window and to clients selecting
+.PN SubstructureNotify
+on the parent.
+It is generated when the window changes state from unmapped to mapped.
+The event is the window on which the event was generated,
+and the window is the window that is mapped.
+The override-redirect flag is from the window's attribute.
+.sp
+.LP
+.sM
+.IN "MapRequest" "" "@DEF@"
+.PN MapRequest
+.in +.2i
+.LP
+\fIparent\fP, \fIwindow\fP\^: WINDOW
+.in -.2i
+.eM
+.LP
+This event is reported to the client selecting
+.PN SubstructureRedirect
+on the parent and is generated when a
+.PN MapWindow
+request is issued on an unmapped window with an override-redirect attribute of
+.PN False .
+.sp
+.LP
+.sM
+.IN "ReparentNotify" "" "@DEF@"
+.PN ReparentNotify
+.in +.2i
+.LP
+\fIevent\fP, \fIwindow\fP, \fIparent\fP\^: WINDOW
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIoverride-redirect\fP\^: BOOL
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN SubstructureNotify
+on either the old or the new parent and to clients selecting
+.PN StructureNotify
+on the window.
+It is generated when the window is reparented.
+The event is the window on which the event was generated.
+The window is the window that has been rerooted.
+The parent specifies the new parent.
+The x and y coordinates are relative to the new parent's origin
+and specify the position of the upper-left outer corner of the window.
+The override-redirect flag is from the window's attribute.
+.sp
+.LP
+.sM
+.IN "ConfigureNotify" "" "@DEF@"
+.PN ConfigureNotify
+.in +.2i
+.LP
+\fIevent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP, \fIborder-width\fP\^: CARD16
+.br
+\fIabove-sibling\fP\^: WINDOW or
+.PN None
+.br
+\fIoverride-redirect\fP\^: BOOL
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN StructureNotify
+on the window and to clients selecting
+.PN SubstructureNotify
+on the parent.
+It is generated when a
+.PN ConfigureWindow
+request actually changes the state of the window.
+The event is the window on which the event was generated,
+and the window is the window that is changed.
+The x and y coordinates are relative to the new parent's origin
+and specify the position of the upper-left outer corner of the window.
+The width and height specify the inside size, not including the border.
+If above-sibling is
+.PN None ,
+then the window is on the bottom of the stack with respect to siblings.
+Otherwise, the window is immediately on top of the specified sibling.
+The override-redirect flag is from the window's attribute.
+.sp
+.LP
+.sM
+.IN "GravityNotify" "" "@DEF@"
+.PN GravityNotify
+.in +.2i
+.LP
+\fIevent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN SubstructureNotify
+on the parent and to clients selecting
+.PN StructureNotify
+on the window.
+It is generated when a window is moved because of a change in size
+of the parent.
+The event is the window on which the event was generated,
+and the window is the window that is moved.
+The x and y coordinates are relative to the new parent's origin
+and specify the position of the upper-left outer corner of the window.
+.sp
+.LP
+.sM
+.IN "ResizeRequest" "" "@DEF@"
+.PN ResizeRequest
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.in -.2i
+.eM
+.LP
+This event is reported to the client selecting
+.PN ResizeRedirect
+on the window and is generated when a
+.PN ConfigureWindow
+request by some other client on the window attempts to change the size
+of the window.
+The width and height are the requested inside size, not including the border.
+.sp
+.LP
+.sM
+.IN "ConfigureRequest" "" "@DEF@"
+.PN ConfigureRequest
+.in +.2i
+.LP
+\fIparent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP, \fIborder-width\fP\^: CARD16
+.br
+\fIsibling\fP\^: WINDOW or
+.PN None
+.br
+\fIstack-mode\fP\^:
+.Pn { Above ,
+.PN Below ,
+.PN TopIf ,
+.PN BottomIf ,
+.PN Opposite }
+.br
+\fIvalue-mask\fP\^: BITMASK
+.in -.2i
+.eM
+.LP
+This event is reported to the client selecting
+.PN SubstructureRedirect
+on the parent and is generated when a
+.PN ConfigureWindow
+request is issued on the window by some other client.
+The value-mask indicates which components were specified in the request.
+The value-mask and the corresponding values are reported as given
+in the request.
+The remaining values are filled in from the current geometry of the window,
+except in the case of sibling and stack-mode,
+which are reported as
+.PN None
+and
+.PN Above
+(respectively) if not given in the request.
+.sp
+.LP
+.sM
+.IN "CirculateNotify" "" "@DEF@"
+.PN CirculateNotify
+.in +.2i
+.LP
+\fIevent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIplace\fP\^:
+.Pn { Top ,
+.PN Bottom }
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN StructureNotify
+on the window and to clients selecting
+.PN SubstructureNotify
+on the parent.
+It is generated when the window is actually restacked from a
+.PN CirculateWindow
+request.
+The event is the window on which the event was generated,
+and the window is the window that is restacked.
+If place is
+.PN Top ,
+the window is now on top of all siblings.
+Otherwise, it is below all siblings.
+.sp
+.LP
+.sM
+.IN "CirculateRequest" "" "@DEF@"
+.PN CirculateRequest
+.in +.2i
+.LP
+\fIparent\fP, \fIwindow\fP\^: WINDOW
+.br
+\fIplace\fP:
+.Pn { Top ,
+.PN Bottom }
+.in -.2i
+.eM
+.LP
+This event is reported to the client selecting
+.PN SubstructureRedirect
+on the parent and is generated when a
+.PN CirculateWindow
+request is issued on the parent and a window actually needs to be restacked.
+The window specifies the window to be restacked,
+and the place specifies what the new position in the stacking order should be.
+.sp
+.LP
+.sM
+.IN "PropertyNotify" "" "@DEF@"
+.PN PropertyNotify
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIatom\fP\^: ATOM
+.br
+\fIstate\fP\^:
+.Pn { NewValue ,
+.PN Deleted }
+.br
+\fItime\fP\^: TIMESTAMP
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN PropertyChange
+on the window and is generated with state
+.PN NewValue
+when a property of the window is changed using
+.PN ChangeProperty
+or
+.PN RotateProperties ,
+even when adding zero-length data using
+.PN ChangeProperty
+and when replacing all or part of a property with identical data using
+.PN ChangeProperty
+or
+.PN RotateProperties .
+It is generated with state
+.PN Deleted
+when a property of the
+window is deleted using request
+.PN DeleteProperty
+or
+.PN GetProperty .
+The timestamp indicates the server time when the property was changed.
+.sp
+.LP
+.sM
+.IN "SelectionClear" "" "@DEF@"
+.PN SelectionClear
+.in +.2i
+.LP
+\fIowner\fP\^: WINDOW
+.br
+\fIselection\fP\^: ATOM
+.br
+\fItime\fP\^: TIMESTAMP
+.in -.2i
+.eM
+.LP
+This event is reported to the current owner of a selection
+and is generated when a new owner is being defined by means of
+.PN SetSelectionOwner .
+The timestamp is the last-change time recorded for the selection.
+The owner argument is the window that was specified by the current owner in its
+.PN SetSelectionOwner
+request.
+.sp
+.LP
+.sM
+.IN "SelectionRequest" "" "@DEF@"
+.PN SelectionRequest
+.in +.2i
+.LP
+\fIowner\fP\^: WINDOW
+.br
+\fIselection\fP\^: ATOM
+.br
+\fItarget\fP\^: ATOM
+.br
+\fIproperty\fP\^: ATOM or
+.PN None
+.br
+\fIrequestor\fP\^: WINDOW
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.in -.2i
+.eM
+.LP
+This event is reported to the owner of a selection
+and is generated when a client issues a
+.PN ConvertSelection
+request.
+The owner argument is the window that was specified in the
+.PN SetSelectionOwner
+request.
+The remaining arguments are as in the
+.PN ConvertSelection
+request.
+.LP
+The owner should convert the selection based on the specified target type
+and send a
+.PN SelectionNotify
+back to the requestor.
+A complete specification for using selections is given in the X Consortium
+standard \fIInter-Client Communication Conventions Manual\fP.
+.sp
+.LP
+.sM
+.IN "SelectionNotify" "" "@DEF@"
+.PN SelectionNotify
+.in +.2i
+.LP
+\fIrequestor\fP\^: WINDOW
+.br
+\fIselection\fP, \fItarget\fP\^: ATOM
+.br
+\fIproperty\fP\^: ATOM or
+.PN None
+.br
+\fItime\fP\^: TIMESTAMP or
+.PN CurrentTime
+.in -.2i
+.eM
+.LP
+This event is generated by the server in response to a
+.PN ConvertSelection
+request when there is no owner for the selection.
+When there is an owner,
+it should be generated by the owner using
+.PN SendEvent .
+The owner of a selection should send this event to a requestor either
+when a selection has been converted and stored as a property
+or when a selection conversion could not be performed (indicated with property
+.PN None ).
+.sp
+.LP
+.sM
+.IN "ColormapNotify" "" "@DEF@"
+.PN ColormapNotify
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fIcolormap\fP\^: COLORMAP or
+.PN None
+.br
+\fInew\fP\^: BOOL
+.br
+\fIstate\fP\^:
+.Pn { Installed ,
+.PN Uninstalled }
+.in -.2i
+.eM
+.LP
+This event is reported to clients selecting
+.PN ColormapChange
+on the window.
+It is generated with value
+.PN True
+for new when the colormap attribute of the window is changed
+and is generated with value
+.PN False
+for new when the colormap of a window is installed or uninstalled.
+In either case,
+the state indicates whether the colormap is currently installed.
+.sp
+.LP
+.sM
+.IN "MappingNotify" "" "@DEF@"
+.PN MappingNotify
+.in +.2i
+.LP
+\fIrequest\fP:
+.Pn { Modifier ,
+.PN Keyboard ,
+.PN Pointer }
+.br
+\fIfirst-keycode\fP, \fIcount\fP\^: CARD8
+.in -.2i
+.eM
+.LP
+This event is sent to all clients.
+There is no mechanism to express disinterest in this event.
+The detail indicates the kind of change that occurred:
+.PN Modifiers
+for a successful
+.PN SetModifierMapping ,
+.PN Keyboard
+for a successful
+.PN ChangeKeyboardMapping ,
+and
+.PN Pointer
+for a successful
+.PN SetPointerMapping .
+If the detail is
+.PN Keyboard ,
+then first-keycode and count indicate the range of altered keycodes.
+.sp
+.LP
+.sM
+.IN "ClientMessage" "" "@DEF@"
+.PN ClientMessage
+.in +.2i
+.LP
+\fIwindow\fP\^: WINDOW
+.br
+\fItype\fP\^: ATOM
+.br
+\fIformat\fP\^: {8, 16, 32}
+.br
+\fIdata\fP\^: LISTofINT8 or LISTofINT16 or LISTofINT32
+.in -.2i
+.eM
+.LP
+This event is only generated by clients using
+.PN SendEvent .
+The type specifies how the data is to be interpreted by the receiving client;
+the server places no interpretation on the type or the data.
+The format specifies whether the data should be viewed as a list of 8-bit,
+16-bit, or 32-bit quantities, so that the server can correctly
+byte-swap, as necessary.
+The data always consists of either 20 8-bit values or 10 16-bit values
+or 5 32-bit values, although particular message types might not make use
+of all of these values.
+.NH 1
+Flow Control and Concurrency
+.XS
+\*(SN Flow Control and Concurrency
+.XE
+.LP
+Whenever the server is writing to a given connection,
+it is permissible for the server to stop reading from that connection
+(but if the writing would block, it must continue to service other connections).
+The server is not required to buffer more than a single request per connection
+at one time.
+For a given connection to the server,
+a client can block while reading from the connection
+but should undertake to read (events and errors) when writing would block.
+Failure on the part of a client to obey this rule could result
+in a deadlocked connection,
+although deadlock is probably unlikely unless either
+the transport layer has very little buffering or the client attempts to
+send large numbers of requests without ever reading replies or checking for
+errors and events.
+.LP
+Whether or not a server is implemented with internal concurrency,
+the overall effect must be as if individual requests are executed to completion
+in some serial order,
+and requests from a given connection must be executed in delivery order
+(that is, the total execution order is a shuffle of the individual streams).
+The execution of a request includes validating all arguments,
+collecting all data for any reply,
+and generating and queueing all required events.
+However,
+it does not include the actual transmission of the reply and the events.
+In addition, the effect of any other cause that can generate multiple events
+(for example, activation of a grab or pointer motion) must effectively generate
+and queue all required events indivisibly with respect to all other causes
+and requests.
+For a request from a given client,
+any events destined for that client that are caused by executing the request
+must be sent to the client before any reply or error is sent.
+.bp
diff --git a/specs/XProtocol/glossary b/specs/XProtocol/glossary
new file mode 100644
index 0000000..c097720
--- /dev/null
+++ b/specs/XProtocol/glossary
@@ -0,0 +1,1028 @@
+.\" $Xorg: glossary,v 1.3 2000/08/17 19:42:25 cpqbld Exp $
+.ps 11
+.nr PS 11
+\&
+.sp 1
+.XS
+Glossary
+.XE
+.ce 1
+\s+1\fBGlossary\fP\s-1
+.sp 2
+.na
+.LP
+.KS
+\fBAccess control list\fP
+.IN "Access control list" "" "@DEF@"
+.IP
+X maintains a list of hosts from which client programs can be run.
+By default,
+only programs on the local host and hosts specified in an initial list read
+by the server can use the display.
+Clients on the local host can change this access control list.
+Some server implementations can also implement other authorization mechanisms
+in addition to or in place of this mechanism.
+The action of this mechanism can be conditional based on the authorization
+protocol name and data received by the server at connection setup.
+.KE
+.KS
+.LP
+\fBActive grab\fP
+.IN "Active grab" "" "@DEF@"
+.IP
+A grab is active when the pointer or keyboard is actually owned by
+the single grabbing client.
+.KE
+.KS
+.LP
+\fBAncestors\fP
+.IN "Ancestors" "" "@DEF@"
+.IP
+If W is an inferior of A, then A is an ancestor of W.
+.KE
+.KS
+.LP
+\fBAtom\fP
+.IN "Atom" "" "@DEF@"
+.IP
+An atom is a unique ID corresponding to a string name.
+Atoms are used to identify properties, types, and selections.
+.KE
+.KS
+.LP
+\fBBackground\fP
+.IN "Background" "" "@DEF@"
+.IP
+An
+.PN InputOutput
+window can have a background, which is defined as a pixmap.
+When regions of the window have their contents lost or invalidated,
+the server will automatically tile those regions with the background.
+.KE
+.KS
+.LP
+\fBBacking store\fP
+.IN "Backing store" "" "@DEF@"
+.IP
+When a server maintains the contents of a window,
+the pixels saved off screen are known as a backing store.
+.KE
+.KS
+.LP
+\fBBit gravity\fP
+.IN "Bit" "gravity" "@DEF@"
+.IP
+When a window is resized,
+the contents of the window are not necessarily discarded.
+It is possible to request that the server relocate the previous contents
+to some region of the window (though no guarantees are made).
+This attraction of window contents for some location of
+a window is known as bit gravity.
+.KE
+.KS
+.LP
+\fBBit plane\fP
+.IN "Bit" "plane" "@DEF@"
+.IP
+When a pixmap or window is thought of as a stack of bitmaps,
+each bitmap is called a bit plane or plane.
+.KE
+.KS
+.LP
+\fBBitmap\fP
+.IN "Bitmap" "" "@DEF@"
+.IP
+A bitmap is a pixmap of depth one.
+.KE
+.KS
+.LP
+\fBBorder\fP
+.IN "Border" "" "@DEF@"
+.IP
+An
+.PN InputOutput
+window can have a border of equal thickness on all four sides of the window.
+A pixmap defines the contents of the border,
+and the server automatically maintains the contents of the border.
+Exposure events are never generated for border regions.
+.KE
+.KS
+.LP
+\fBButton grabbing\fP
+.IN "Button" "grabbing" "@DEF@"
+.IP
+Buttons on the pointer may be passively grabbed by a client.
+When the button is pressed,
+the pointer is then actively grabbed by the client.
+.KE
+.KS
+.LP
+\fBByte order\fP
+.IN "Byte order" "" "@DEF@"
+.IP
+For image (pixmap/bitmap) data,
+the server defines the byte order,
+and clients with different native byte ordering must swap bytes as necessary.
+For all other parts of the protocol,
+the client defines the byte order,
+and the server swaps bytes as necessary.
+.KE
+.KS
+.LP
+\fBChildren\fP
+.IN "Children" "" "@DEF@"
+.IP
+The children of a window are its first-level subwindows.
+.KE
+.KS
+.LP
+\fBClient\fP
+.IN "Client" "" "@DEF@"
+.IP
+An application program connects to the window system server by some
+interprocess communication path, such as a TCP connection or a
+shared memory buffer.
+This program is referred to as a client of the window system server.
+More precisely,
+the client is the communication path itself;
+a program with multiple paths open to the server is viewed as
+multiple clients by the protocol.
+Resource lifetimes are controlled by connection lifetimes,
+not by program lifetimes.
+.KE
+.KS
+.LP
+\fBClipping region\fP
+.IN "Clipping region" "" "@DEF@"
+.IP
+In a graphics context,
+a bitmap or list of rectangles can be specified
+to restrict output to a particular region of the window.
+The image defined by the bitmap or rectangles is called a clipping region.
+.KE
+.KS
+.LP
+\fBColormap\fP
+.IN "Colormap" "" "@DEF@"
+.IP
+A colormap consists of a set of entries defining color values.
+The colormap associated with a window is used to display the contents of
+the window; each pixel value indexes the colormap to produce RGB values
+that drive the guns of a monitor.
+Depending on hardware limitations,
+one or more colormaps may be installed at one time,
+so that windows associated with those maps display with correct colors.
+.KE
+.KS
+.LP
+\fBConnection\fP
+.IN "Connection" "" "@DEF@"
+.IP
+The interprocess communication path between the server and client
+program is known as a connection.
+A client program typically (but not necessarily) has one
+connection to the server over which requests and events are sent.
+.KE
+.KS
+.LP
+\fBContainment\fP
+.IN "Containment" "" "@DEF@"
+.IP
+A window ``contains'' the pointer if the window is viewable and the
+hotspot of the cursor is within a visible region of the window or a
+visible region of one of its inferiors.
+The border of the window is included as part of the window for containment.
+The pointer is ``in'' a window if the window contains the pointer
+but no inferior contains the pointer.
+.KE
+.KS
+.LP
+\fBCoordinate system\fP
+.IN "Coordinate system" "" "@DEF@"
+.IP
+The coordinate system has the X axis horizontal and the Y axis vertical,
+with the origin [0, 0] at the upper left.
+Coordinates are integral,
+in terms of pixels,
+and coincide with pixel centers.
+Each window and pixmap has its own coordinate system.
+For a window,
+the origin is inside the border at the inside upper left.
+.KE
+.KS
+.LP
+\fBCursor\fP
+.IN "Cursor" "" "@DEF@"
+.IP
+A cursor is the visible shape of the pointer on a screen.
+It consists of a hot spot, a source bitmap, a shape bitmap,
+and a pair of colors.
+The cursor defined for a window controls the visible appearance
+when the pointer is in that window.
+.KE
+.KS
+.LP
+\fBDepth\fP
+.IN "Depth" "" "@DEF@"
+.IP
+The depth of a window or pixmap is the number of bits per pixel that it has.
+The depth of a graphics context is the depth of the drawables it can be
+used in conjunction with for graphics output.
+.KE
+.KS
+.LP
+\fBDevice\fP
+.IN "Device" "" "@DEF@"
+.IP
+Keyboards, mice, tablets, track-balls, button boxes, and so on are all
+collectively known as input devices.
+The core protocol only deals with two devices,
+``the keyboard'' and ``the pointer.''
+.KE
+.KS
+.LP
+\fBDirectColor\fP
+.IN "DirectColor" "" "@DEF@"
+.IP
+.PN DirectColor
+is a class of colormap in which a pixel value is decomposed into three
+separate subfields for indexing.
+The first subfield indexes an array to produce red intensity values.
+The second subfield indexes a second array to produce blue intensity values.
+The third subfield indexes a third array to produce green intensity values.
+The RGB values can be changed dynamically.
+.KE
+.KS
+.LP
+\fBDisplay\fP
+.IN "Display" "" "@DEF@"
+.IP
+A server, together with its screens and input devices, is called a display.
+.KE
+.KS
+.LP
+\fBDrawable\fP
+.IN "Drawable" "" "@DEF@"
+.IP
+Both windows and pixmaps can be used as sources and destinations in
+graphics operations.
+These windows and pixmaps are collectively known as drawables.
+However, an
+.PN InputOnly
+window cannot be used as a source or destination in a graphics operation.
+.KE
+.KS
+.LP
+\fBEvent\fP
+.IN "Event" "" "@DEF@"
+.IP
+Clients are informed of information asynchronously by means of events.
+These events can be generated either asynchronously from devices
+or as side effects of client requests.
+Events are grouped into types.
+The server never sends events to a client unless the
+client has specificially asked to be informed of that type of event.
+However, other clients can force events to be sent to other clients.
+Events are typically reported relative to a window.
+.KE
+.KS
+.LP
+\fBEvent mask\fP
+.IN "Event" "mask" "@DEF@"
+.IP
+Events are requested relative to a window.
+The set of event types that a client requests relative to a window
+is described by using an event mask.
+.KE
+.KS
+.LP
+\fBEvent synchronization\fP
+.IN "Event" "synchronization" "@DEF@"
+.IP
+There are certain race conditions possible when demultiplexing device
+events to clients (in particular deciding where pointer and keyboard
+events should be sent when in the middle of window management
+operations).
+The event synchronization mechanism allows synchronous processing
+of device events.
+.KE
+.KS
+.LP
+\fBEvent propagation\fP
+.IN "Event" "propagation" "@DEF@"
+.IP
+Device-related events propagate from the source window to ancestor
+windows until some client has expressed interest in handling that type
+of event or until the event is discarded explicitly.
+.KE
+.KS
+.LP
+\fBEvent source\fP
+.IN "Event" "source" "@DEF@"
+.IP
+The window the pointer is in is the source of a device-related
+event.
+.KE
+.KS
+.LP
+\fBExposure event\fP
+.IN "Event" "Exposure" "@DEF@"
+.IP
+Servers do not guarantee to preserve the contents of windows when
+windows are obscured or reconfigured.
+Exposure events are sent to clients to inform them when contents
+of regions of windows have been lost.
+.KE
+.KS
+.LP
+\fBExtension\fP
+.IN "Extension" "" "@DEF@"
+.IP
+Named extensions to the core protocol can be defined to extend the
+system.
+Extension to output requests, resources, and event types are
+all possible and are expected.
+.KE
+.KS
+.LP
+\fBFocus window\fP
+.IN "Focus window" "" ""@DEF@"
+.IP
+The focus window is another term for the input focus.
+.KE
+.KS
+.LP
+\fBFont\fP
+.IN "Font" "" "@DEF@"
+.IP
+A font is a matrix of glyphs (typically characters).
+The protocol does no translation or interpretation of character sets.
+The client simply indicates values used to index the glyph array.
+A font contains additional metric information to determine interglyph
+and interline spacing.
+.KE
+.KS
+.LP
+\fBGC\fP, \fBGContext\fP
+.IN "GC" "" "@DEF@"
+.IN "GContext" "" "@DEF@"
+.IP
+GC and gcontext are abbreviations for graphics context.
+.KE
+.KS
+.LP
+\fBGlyph\fP
+.IN "Glyph" "" "@DEF@"
+.IP
+A glyph is an image, typically of a character, in a font.
+.KE
+.KS
+.LP
+\fBGrab\fP
+.IN "Grab" "" "@DEF@"
+.IP
+Keyboard keys, the keyboard, pointer buttons, the pointer, and the
+server can be grabbed for exclusive use by a client.
+In general,
+these facilities are not intended to be used by normal applications
+but are intended for various input and window managers to implement
+various styles of user interfaces.
+.KE
+.KS
+.LP
+\fBGraphics context\fP
+.IN "Graphics context" "" "@DEF@"
+.IP
+Various information for graphics output is stored in a graphics context
+such as foreground pixel, background pixel, line width, clipping region,
+and so on.
+A graphics context can only be used with drawables that have the same root
+and the same depth as the graphics context.
+.KE
+.KS
+.LP
+\fBGravity\fP
+.IN "Gravity" "" "@DEF@"
+.IP
+See \fBbit gravity\fP and \fBwindow gravity\fP.
+.KE
+.KS
+.LP
+\fBGrayScale\fP
+.IN "GrayScale" "" "@DEF@"
+.IP
+.PN GrayScale
+can be viewed as a degenerate case of
+.PN PseudoColor ,
+in which the red, green, and blue values in any given colormap entry are equal,
+thus producing shades of gray.
+The gray values can be changed dynamically.
+.KE
+.KS
+.LP
+\fBHotspot\fP
+.IN "Hotspot" "" "@DEF@"
+.IP
+A cursor has an associated hotspot that defines the point in the
+cursor corresponding to the coordinates reported for the pointer.
+.KE
+.KS
+.LP
+\fBIdentifier\fP
+.IN "Identifier" "" "@DEF@"
+.IP
+An identifier is a unique value associated with a resource that clients use
+to name that resource.
+The identifier can be used over any connection.
+.KE
+.KS
+.LP
+\fBInferiors\fP
+.IN "Inferiors" "" "@DEF@"
+.IP
+The inferiors of a window are all of the subwindows nested below it:
+the children, the children's children, and so on.
+.KE
+.KS
+.LP
+\fBInput focus\fP
+.IN "Input focus" "" "@DEF@"
+.IP
+The input focus is normally a window defining the scope for
+processing of keyboard input.
+If a generated keyboard event would normally be reported to this window
+or one of its inferiors,
+the event is reported normally.
+Otherwise, the event is reported with respect to
+the focus window.
+The input focus also can be set such that all
+keyboard events are discarded and such that the focus
+window is dynamically taken to be the root window of whatever screen
+the pointer is on at each keyboard event.
+.KE
+.KS
+.LP
+\fBInput manager\fP
+.IN "Input manager" "" "@DEF@"
+.IP
+Control over keyboard input is typically provided by an input manager client.
+.KE
+.KS
+.LP
+\fBInputOnly window\fP
+.IN "Window" "InputOnly" "@DEF@"
+.IP
+An
+.PN InputOnly
+window is a window that cannot be used for graphics requests.
+.PN InputOnly
+windows are invisible and can be used to control such things
+as cursors, input event generation, and grabbing.
+.PN InputOnly
+windows cannot have
+.PN InputOutput
+windows as inferiors.
+.KE
+.KS
+.LP
+\fBInputOutput window\fP
+.IN "Window" "InputOutput" "@DEF@"
+.IP
+An
+.PN InputOutput
+window is the normal kind of opaque window, used for both input and output.
+.PN InputOutput
+windows can have both
+.PN InputOutput
+and
+.PN InputOnly
+windows as inferiors.
+.KE
+.KS
+.LP
+\fBKey grabbing\fP
+.IN "Key" "grabbing" "@DEF@"
+.IP
+Keys on the keyboard can be passively grabbed by a client.
+When the key is pressed,
+the keyboard is then actively grabbed by the client.
+.KE
+.KS
+.LP
+\fBKeyboard grabbing\fP
+.IN "Keyboard" "grabbing" "@DEF@"
+.IP
+A client can actively grab control of the keyboard, and key events
+will be sent to that client rather than the client the events would
+normally have been sent to.
+.KE
+.KS
+.LP
+\fBKeysym\fP
+.IN "Keysym" "" "@DEF@"
+.IP
+An encoding of a symbol on a keycap on a keyboard.
+.KE
+.KS
+.LP
+\fBMapped\fP
+.IN "Mapped window" "" "@DEF@"
+.IP
+A window is said to be mapped if a map call has been performed on it.
+Unmapped windows and their inferiors are never viewable or visible.
+.KE
+.KS
+.LP
+\fBModifier keys\fP
+.IN "Modifier keys" "" "@DEF@"
+.IP
+Shift, Control, Meta, Super, Hyper, Alt, Compose, Apple, CapsLock,
+ShiftLock, and similar keys are called modifier keys.
+.KE
+.KS
+.LP
+\fBMonochrome\fP
+.IN "Monochrome" "" "@DEF@"
+.IP
+Monochrome is a special case of
+.PN StaticGray
+in which there are only two colormap entries.
+.KE
+.KS
+.LP
+\fBObscure\fP
+.IN "Obscure" "" "@DEF@"
+.IP
+A window is obscured if some other window obscures it.
+Window A obscures window B if both are viewable
+.PN InputOutput
+windows, A is higher in the global stacking order,
+and the rectangle defined by the outside edges of A intersects
+the rectangle defined by the outside edges of B.
+Note the distinction between obscure and occludes.
+Also note that window borders are included in the calculation
+and that a window can be obscured and yet still have visible regions.
+.KE
+.KS
+.LP
+\fBOcclude\fP
+.IN "Occlude" "" "@DEF@"
+.IP
+A window is occluded if some other window occludes it.
+Window A occludes window B if both are mapped, A is higher in the global
+stacking order, and the rectangle defined by the outside edges of A
+intersects the rectangle defined by the outside edges of B.
+Note the distinction between occludes and obscures.
+Also note that window borders are included in the calculation.
+.KE
+.KS
+.LP
+\fBPadding\fP
+.IN "Padding" "" "@DEF@"
+.IP
+Some padding bytes are inserted in the data stream to maintain
+alignment of the protocol requests on natural boundaries.
+This increases ease of portability to some machine architectures.
+.KE
+.KS
+.LP
+\fBParent window\fP
+.IN "Window" "parent" "@DEF@"
+.IP
+If C is a child of P, then P is the parent of C.
+.KE
+.KS
+.LP
+\fBPassive grab\fP
+.IN "Passive grab" "" "@DEF@"
+.IP
+Grabbing a key or button is a passive grab.
+The grab activates when the key or button is actually pressed.
+.KE
+.KS
+.LP
+\fBPixel value\fP
+.IN "Pixel value" "" "@DEF@"
+.IP
+A pixel is an N-bit value, where N is the number of bit planes used
+in a particular window or pixmap (that is,
+N is the depth of the window or pixmap).
+For a window,
+a pixel value indexes a colormap to derive an actual color to be displayed.
+.KE
+.KS
+.LP
+\fBPixmap\fP
+.IN "Pixmap" "" "@DEF@"
+.IP
+A pixmap is a three-dimensional array of bits.
+A pixmap is normally thought of as a two-dimensional array of pixels,
+where each pixel can be a value from 0 to (2^N)-1
+and where N is the depth (z axis) of the pixmap.
+A pixmap can also be thought of as a stack of N bitmaps.
+.KE
+.KS
+.LP
+\fBPlane\fP
+.IN "Plane" "" "@DEF@"
+.IP
+When a pixmap or window is thought of as a stack of bitmaps,
+each bitmap is called a plane or bit plane.
+.KE
+.KS
+.LP
+\fBPlane mask\fP
+.IN "Plane" "mask" "@DEF@"
+.IP
+Graphics operations can be restricted to only affect a subset of bit
+planes of a destination.
+A plane mask is a bit mask describing which planes are to be modified.
+The plane mask is stored in a graphics context.
+.KE
+.KS
+.LP
+\fBPointer\fP
+.IN "Pointer" "" "@DEF@"
+.IP
+The pointer is the pointing device attached to the cursor
+and tracked on the screens.
+.KE
+.KS
+.LP
+\fBPointer grabbing\fP
+.IN "Pointer" "grabbing" "@DEF@"
+.IP
+A client can actively grab control of the pointer.
+Then button and motion events will be sent to that client
+rather than the client the events would normally have been sent to.
+.KE
+.KS
+.LP
+\fBPointing device\fP
+.IN "Pointing device" "" "@DEF@"
+.IP
+A pointing device is typically a mouse, tablet, or some other
+device with effective dimensional motion.
+There is only one visible cursor defined by the core protocol,
+and it tracks whatever pointing device is attached as the pointer.
+.KE
+.KS
+.LP
+\fBProperty\fP
+.IN "Property" "" "@DEF@"
+.IP
+Windows may have associated properties,
+which consist of a name, a type, a data format, and some data.
+The protocol places no interpretation on properties.
+They are intended as a general-purpose naming mechanism for clients.
+For example, clients might use properties to share information such as resize
+hints, program names, and icon formats with a window manager.
+.KE
+.KS
+.LP
+\fBProperty list\fP
+.IN "Property list" "" "@DEF@"
+.IP
+The property list of a window is the list of properties that have
+been defined for the window.
+.KE
+.KS
+.LP
+\fBPseudoColor\fP
+.IN "PseudoColor" "" "@DEF@"
+.IP
+.PN PseudoColor
+is a class of colormap in which a pixel value indexes the colormap to
+produce independent red, green, and blue values;
+that is, the colormap is viewed as an array of triples (RGB values).
+The RGB values can be changed dynamically.
+.KE
+.KS
+.LP
+\fBRedirecting control\fP
+.IN "Redirecting control" "" "@DEF@"
+.IP
+Window managers (or client programs) may want to enforce window layout
+policy in various ways.
+When a client attempts to change the size or position of a window,
+the operation may be redirected to a specified client
+rather than the operation actually being performed.
+.KE
+.KS
+.LP
+\fBReply\fP
+.IN "Reply" "" "@DEF@"
+.IP
+Information requested by a client program is sent back to the client
+with a reply.
+Both events and replies are multiplexed on the same connection.
+Most requests do not generate replies,
+although some requests generate multiple replies.
+.KE
+.KS
+.LP
+\fBRequest\fP
+.IN "Request" "" "@DEF@"
+.IP
+A command to the server is called a request.
+It is a single block of data sent over a connection.
+.KE
+.KS
+.LP
+\fBResource\fP
+.IN "Resource" "" "@DEF@"
+.IP
+Windows, pixmaps, cursors, fonts, graphics contexts, and colormaps are
+known as resources.
+They all have unique identifiers associated with them for naming purposes.
+The lifetime of a resource usually is bounded by the lifetime of the connection
+over which the resource was created.
+.KE
+.KS
+.LP
+\fBRGB values\fP
+.IN "RGB values" "" "@DEF@"
+.IP
+Red, green, and blue (RGB) intensity values are used to define color.
+These values are always represented as 16-bit unsigned numbers,
+with 0 being the minimum intensity and 65535 being the maximum intensity.
+The server scales the values to match the display hardware.
+.KE
+.KS
+.LP
+\fBRoot\fP
+.IN "Root" "" "@DEF@"
+.IP
+The root of a pixmap, colormap, or graphics context is the same as the root of
+whatever drawable was used when the pixmap, colormap, or graphics context was
+created.
+The root of a window is the root window under which the window was created.
+.KE
+.KS
+.LP
+\fBRoot window\fP
+.IN "Window" "root" "@DEF@"
+.IP
+Each screen has a root window covering it.
+It cannot be reconfigured or unmapped,
+but it otherwise acts as a full-fledged window.
+A root window has no parent.
+.KE
+.KS
+.LP
+\fBSave set\fP
+.IN "Save set" "" "@DEF@"
+.IP
+The save set of a client is a list of other clients' windows that,
+if they are inferiors of one of the client's windows at connection close,
+should not be destroyed and that should be remapped if currently unmapped.
+Save sets are typically used by window managers to avoid
+lost windows if the manager terminates abnormally.
+.KE
+.KS
+.LP
+\fBScanline\fP
+.IN "Scanline" "" "@DEF@"
+.IP
+A scanline is a list of pixel or bit values viewed as a horizontal
+row (all values having the same y coordinate) of an image, with the
+values ordered by increasing x coordinate.
+.KE
+.KS
+.LP
+\fBScanline order\fP
+.IN "Scanline order" "" "@DEF@"
+.IP
+An image represented in scanline order contains scanlines ordered by
+increasing y coordinate.
+.KE
+.KS
+.LP
+\fBScreen\fP
+.IN "Screen" "" "@DEF@"
+.IP
+A server can provide several independent screens,
+which typically have physically independent monitors.
+This would be the expected configuration when there is only a single keyboard
+and pointer shared among the screens.
+.KE
+.KS
+.LP
+\fBSelection\fP
+.IN "Selection" "" "@DEF@"
+.IP
+A selection can be thought of as an indirect property with dynamic
+type; that is, rather than having the property stored in the server,
+it is maintained by some client (the ``owner'').
+A selection is global in nature and is thought of as belonging to the user
+(although maintained by clients), rather than as being private to a particular
+window subhierarchy or a particular set of clients.
+When a client asks for the contents of a selection,
+it specifies a selection ``target type''.
+This target type can be used to control the transmitted representation of the
+contents.
+For example,
+if the selection is ``the last thing the user clicked on''
+and that is currently an image, then the target type might specify
+whether the contents of the image should be sent in XY format or Z format.
+The target type can also be used to control the class of contents transmitted;
+for example, asking for the ``looks'' (fonts, line
+spacing, indentation, and so on) of a paragraph selection rather than the
+text of the paragraph.
+The target type can also be used for other purposes.
+The protocol does not constrain the semantics.
+.KE
+.KS
+.LP
+\fBServer\fP
+.IN "Server" "" "@DEF@"
+.IP
+The server provides the basic windowing mechanism.
+It handles connections from clients,
+multiplexes graphics requests onto the screens,
+and demultiplexes input back to the appropriate clients.
+.KE
+.KS
+.LP
+\fBServer grabbing\fP
+.IN "Server" "grabbing" "@DEF@"
+.IP
+The server can be grabbed by a single client for exclusive use.
+This prevents processing of any requests from other client connections until
+the grab is completed.
+This is typically only a transient state for
+such things as rubber-banding, pop-up menus, or to execute requests
+indivisibly.
+.KE
+.KS
+.LP
+\fBSibling\fP
+.IN "Sibling" "" "@DEF@"
+.IP
+Children of the same parent window are known as sibling windows.
+.KE
+.KS
+.LP
+\fBStacking order\fP
+.IN "Stacking order" "" "@DEF@"
+.IP
+Sibling windows may stack on top of each other.
+Windows above other windows both obscure and occlude those lower windows.
+This is similar to paper on a desk.
+The relationship between sibling windows is known as the stacking order.
+.KE
+.KS
+.LP
+\fBStaticColor\fP
+.IN "StaticColor" "" "@DEF@"
+.IP
+.PN StaticColor
+can be viewed as a degenerate case of
+.PN PseudoColor
+in which the RGB values are predefined and read-only.
+.KE
+.KS
+.LP
+\fBStaticGray\fP
+.IN "StaticGray" "" "@DEF@"
+.IP
+.PN StaticGray
+can be viewed as a degenerate case of
+.PN GrayScale
+in which the gray values are predefined and read-only.
+The values are typically linear or near-linear increasing ramps.
+.KE
+.KS
+.LP
+\fBStipple\fP
+.IN "Stipple" "" "@DEF@"
+.IP
+A stipple pattern is a bitmap that is used to tile a region that will serve
+as an additional clip mask for a fill operation with the foreground
+color.
+.KE
+.KS
+.LP
+\fBString Equivalence\fP
+.IN "String Equivalence" "" "@DEF@"
+.IP
+Two ISO Latin-1 STRING8 values are considered equal if they are the same
+length and if corresponding bytes are either equal or are equivalent as
+follows: decimal values 65 to 90 inclusive (characters ``A'' to ``Z'') are
+pairwise equivalent to decimal values 97 to 122 inclusive
+(characters ``a'' to ``z''), decimal values 192 to 214 inclusive
+(characters ``A grave'' to ``O diaeresis'') are pairwise equivalent to decimal
+values 224 to 246 inclusive (characters ``a grave'' to ``o diaeresis''),
+and decimal values 216 to 222 inclusive (characters ``O oblique'' to ``THORN'')
+are pairwise equivalent to decimal values 246 to 254 inclusive
+(characters ``o oblique'' to ``thorn'').
+.KE
+.KS
+.LP
+\fBTile\fP
+.IN "Tile" "" "@DEF@"
+.IP
+A pixmap can be replicated in two dimensions to tile a region.
+The pixmap itself is also known as a tile.
+.KE
+.KS
+.LP
+\fBTimestamp\fP
+.IN "Timestamp" "" "@DEF@"
+.IP
+A timestamp is a time value, expressed in milliseconds.
+It typically is the time since the last
+server reset.
+Timestamp values wrap around (after about 49.7 days).
+The server, given its current time is represented by timestamp T,
+always interprets timestamps from clients by treating half of the
+timestamp space as being earlier in time than T and half of the
+timestamp space as being later in time than T.
+One timestamp value (named
+.PN CurrentTime )
+is never generated by the server.
+This value is reserved for use in requests to represent the current
+server time.
+.KE
+.KS
+.LP
+\fBTrueColor\fP
+.IN "TrueColor" "" "@DEF@"
+.IP
+.PN TrueColor
+can be viewed as a degenerate case of
+.PN DirectColor
+in which the subfields in the pixel value directly encode
+the corresponding RGB values; that is, the colormap has predefined
+read-only RGB values.
+The values are typically linear or near-linear increasing ramps.
+.KE
+.KS
+.LP
+\fBType\fP
+.IN "Type" "" "@DEF@"
+.IP
+A type is an arbitrary atom used to identify the interpretation of
+property data.
+Types are completely uninterpreted by the server
+and are solely for the benefit of clients.
+.KE
+.KS
+.LP
+\fBViewable\fP
+.IN "Viewable" "" "@DEF@"
+.IP
+A window is viewable if it and all of its ancestors are mapped.
+This does not imply that any portion of the window is actually visible.
+Graphics requests can be performed on a window when it is not viewable,
+but output will not be retained unless the server is maintaining
+backing store.
+.KE
+.KS
+.LP
+\fBVisible\fP
+.IN "Visible" "" "@DEF@"
+.IP
+A region of a window is visible if someone looking at the screen can
+actually see it;
+that is, the window is viewable and the region is not occluded by any
+other window.
+.KE
+.KS
+.LP
+\fBWindow gravity\fP
+.IN "Window" "gravity" "@DEF@"
+.IP
+When windows are resized,
+subwindows may be repositioned automatically relative to some position
+in the window.
+This attraction of a subwindow to some part of its parent is known
+as window gravity.
+.KE
+.KS
+.LP
+\fBWindow manager\fP
+.IN "Window" "manager" "@DEF@"
+.IP
+Manipulation of windows on the screen and much of the user interface
+(policy) is typically provided by a window manager client.
+.KE
+.KS
+.LP
+\fBXYFormat\fP
+.IN "XYFormat" "" "@DEF@"
+.IP
+The data for a pixmap is said to be in XY format if it is organized as
+a set of bitmaps representing individual bit planes, with the planes
+appearing from most-significant to least-significant in bit order.
+.KE
+.KS
+.LP
+\fBZFormat\fP
+.IN "ZFormat" "" "@DEF@"
+.IP
+The data for a pixmap is said to be in Z format if it is organized as
+a set of pixel values in scanline order.
+.KE
+.LP
+.bp
diff --git a/specs/XProtocol/indexmacros.t b/specs/XProtocol/indexmacros.t
new file mode 100644
index 0000000..3ceba91
--- /dev/null
+++ b/specs/XProtocol/indexmacros.t
@@ -0,0 +1,3 @@
+.eh '\s+1\fBX Protocol\fP''\fBX11, Release 6.4\fP\s-1'
+.oh '\s+1\fBX Protocol\fP''\fBX11, Release 6.4\fP\s-1'
+.so index.pageno
diff --git a/specs/XProtocol/postproc b/specs/XProtocol/postproc
new file mode 100644
index 0000000..3b59b4e
--- /dev/null
+++ b/specs/XProtocol/postproc
@@ -0,0 +1,14 @@
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.bp
+\&
+.XS
+Index
+.XE
+.EQ
+delim $$
+.EN
+.tm .pn \n%
+.PX
diff --git a/specs/Xaw/AsciiSink b/specs/Xaw/AsciiSink
new file mode 100644
index 0000000..56dc20e
--- /dev/null
+++ b/specs/Xaw/AsciiSink
@@ -0,0 +1,77 @@
+.\" $Xorg: AsciiSink,v 1.3 2000/08/17 19:42:25 cpqbld Exp $
+.LP
+.NH 2
+Ascii Sink Object and Multi Sink Object
+.LP
+.XS
+ AsciiSink Object
+.XE
+.IN "AsciiSink object" "" "@DEF@"
+.LP
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/AsciiSink.h>
+.IN "AsciiSink.h" ""
+Class Header file <X11/Xaw/AsciiSinkP.h>
+.IN "AsciiSinkP.h" ""
+Class asciiSinkObjectClass
+.IN "asciiSinkObjectClass" ""
+Class Name AsciiSink
+.IN "AsciiSink object" "class name"
+Superclass TextSink
+.De
+.LP
+The AsciiSink or MultiSink object is used by a text widget to render the text.
+Depending on its \fBinternational\fP resource, a
+AsciiText widget will create one or the other of these when the AsciiText
+itself is created. Both types are nearly identical; the following discussion
+applies to both, with MultiSink differences noted only as they occur.
+The AsciiSink
+will display all printing characters in an 8 bit font, along with handling Tab
+and Carriage Return. The name has been left as ``AsciiSink'' for compatibility.
+\fIThe MultiSink will display all printing characters in a font set, along with
+handling Tab and Carriage
+Return.\fP The source object also reports the text window metrics to the
+text widgets.
+.NH 3
+Resources
+.LP
+When creating an AsciiSink object instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "AsciiSink object" "resources"
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+background Background Pixel XtDefaultBackground
+destroyCallback Callback XtCallbackList NULL
+displayNonprinting Output Boolean True
+echo Output Boolean True
+font Font XFontStruct* XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+foreground Foreground Pixel XtDefaultForeground
+.sp 3p
+_
+.TE
+.Bg Bold
+This resource is retrieved by the AsciiSink instead of being copied
+from the Text widget.
+.Dc
+.Sd Bold
+.Sh Bold
+.IP \fBfont\fP 1.5i
+The text font to use when displaying the \fBstring\fP.
+(This resource is present in the AsciiSink, but not the MultiSink.)
+.IP \fBfontSet\fP 1.5i
+The text font set to use when displaying the \fBstring\fP.
+(This resource is present in the MultiSink, but not the AsciiSink.)
+
diff --git a/specs/Xaw/AsciiSource b/specs/Xaw/AsciiSource
new file mode 100644
index 0000000..38b45ec
--- /dev/null
+++ b/specs/Xaw/AsciiSource
@@ -0,0 +1,208 @@
+.\" $Xorg: AsciiSource,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.NH 2
+Ascii Source Object and Multi Source Object
+.LP
+.XS
+ AsciiSrc Object
+.XE
+.IN "AsciiSrc object" "" "@DEF@"
+.LP
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/AsciiSrc.h> or <X11/Xaw/MultiSrc.h>
+.IN "AsciiSrc.h" ""
+Class Header file <X11/Xaw/AsciiSrcP.h> or <X11/Xaw/MultiSrcP.h>
+.IN "AsciiSrcP.h" ""
+Class asciiSrcObjectClass or multiSrcObjectClass
+.IN "asciiSrcObjectClass" ""
+Class Name AsciiSrc or MultiSrc
+.IN "AsciiSrc object" "class name"
+Superclass TextSource
+.De
+.LP
+The AsciiSrc or MultiSrc object is used by a text widget to read the text from a
+file or string in memory. Depending on its \fBinternational\fP resource, an
+AsciiText widget will create one or the other of these when the AsciiText
+itself is created. Both types are nearly identical; the following discussion
+applies to both, with MultiSrc differences noted only as they occur.
+.LP
+The AsciiSrc understands all Latin1 characters plus Tab
+and Carriage Return. \fIThe MultiSrc understands any set of character sets that
+the underlying X implementation's internationalization handles.\fP
+.LP
+The AsciiSrc can be either of two types: \fBXawAsciiFile\fP
+or \fBXawAsciiString\fP.
+.LP
+AsciiSrc objects of type \fBXawAsciiFile\fP read the text from a file and
+store it
+into an internal buffer. This buffer may then be modified, provided the
+text widget is in the correct edit mode, just as if it were a source of
+type \fBXawAsciiString\fP. Unlike R3 and earlier versions of the AsciiSrc,
+it is now possible to specify an editable disk source. The file is not
+updated, however, until a call to \fBXawAsciiSave\fP is made. When the
+source is in this mode the \fBuseStringInPlace\fP resource is ignored.
+.LP
+AsciiSrc objects of type \fBXawAsciiString\fP have the text buffer
+implemented as a string.
+\fIMultiSrc objects of type \fBXawAsciiString\fP have the text buffer
+implemented as a wide character string.\fP
+The string owner is responsible for allocating and managing storage for the
+string.
+.LP
+In the default case for AsciiSrc objects of type \fBXawAsciiString\fP,
+the resource \fBuseStringInPlace\fP is false,
+and the widget owns the string. The initial value of the
+string resource, and any update made by the application
+programmer to the string resource with \fBXtSetValues\fP, is copied
+into memory private to the widget, and managed internally by the widget.
+The application writer
+does not need to worry about running out of buffer space
+(subject to the total memory available to the application).
+The performance does not decay linearly as the buffer grows
+large, as is necessarily the case when the text buffer is used
+in place. The application writer must use \fBXtGetValues\fP to
+determine the contents of the text buffer, which will return
+a copy of the widget's text buffer as
+it existed at the time of the \fBXtGetValues\fP call. This copy
+is not affected by subsequent updates to the text buffer, i.e.,
+it is not updated as the user types input into the text buffer.
+This copy is freed upon the next call to XtGetValues to
+retrieve the string resource; however, to conserve memory,
+there is a convenience routine, \fBXawAsciiSrcFreeString\fP, allowing the
+application programmer to direct the widget to free the copy.
+.LP
+When the resource \fBuseStringInPlace\fP is true and the AsciiSrc object
+is of type \fBXawAsciiString\fP, the application
+is the string owner. The widget will take the value
+of the string resource as its own text buffer, and the \fBlength\fP
+resource indicates the buffer size. In this case
+the buffer contents change as the user types at the widget;
+it is not necessary to call \fBXtGetValues\fP on the string
+resource to determine the contents of the buffer\*-it will
+simply return the address of the application's implementation
+of the text buffer.
+.NH 3
+Resources
+.LP
+When creating an AsciiSrc object instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "AsciiSrc object" "resources"
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+callback Callback XtCallbackList NULL
+dataCompression DataCompression Boolean True
+destroyCallback Callback Callback NULL
+editType EditType EditMode XawtextRead
+length Length Int A length of \fBstring\fP
+pieceSize PieceSize Int BUFSIZ
+string String String NULL
+type Type AsciiType XawAsciiString
+useStringInPlace UseStringInPlace Boolean False
+.sp 3p
+_
+.TE
+.Oc Bold
+.Dc
+.Od Bold
+.Oe
+.Ol Bold
+.Op Bold
+.Os Bold
+.Ot Bold
+.Ou Bold
+.NH 3
+Convenience Routines
+.LP
+The AsciiSrc has a few convenience routines that allow the
+application programmer quicker or easier access to some of the
+commonly used functionality of the AsciiSrc.
+.NH 4
+Conserving Memory
+.LP
+When the AsciiSrc widget is not in \fBuseStringInPlace\fP mode
+space must be allocated whenever the file is saved, or the string is
+requested with a call to \fBXtGetValues\fP. This memory is allocated on the
+fly, and remains valid until the next time a string needs to be allocated.
+You may save memory by freeing this string as soon as you are done
+with it by calling \fBXawAsciiSrcFreeString\fP.
+.FD 0
+void XawAsciiSourceFreeString(\fIw\fP)
+.IN "XawAsciiSourceFreeString" "" @DEF@
+.br
+Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the AsciiSrc object.
+.LP
+This function will free the memory that contains the string pointer returned
+by \fBXtGetValues\fP. This will normally happen automatically when
+the next call to \fBXtGetValues\fP occurs, or when the widget is destroyed.
+.NH 4
+Saving Files
+.LP
+To save the changes made in the current text source into a file use
+\fBXawAsciiSave\fP.
+.FD 0
+Boolean XawAsciiSave(\fIw\fP)
+.IN "XawAsciiSave" "" @DEF@
+.br
+Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the AsciiSrc object.
+.LP
+\fBXawAsciiSave\fP returns \fBTrue\fP if the save was successful.
+It will update the file named in the \fBstring\fP resource.
+If the buffer has not been changed, no action will be taken. This function
+only works on an AsciiSrc of type \fBXawAsciiFile\fP.
+.LP
+.sp 1
+To save the contents of the current text buffer into a named file use
+\fBXawAsciiSaveAsFile\fP.
+.FD 0
+Boolean XawAsciiSaveAsFile(\fIw\fP, \fIname\fP)
+.IN "XawAsciiSaveAsFile" "" @DEF@
+.br
+Widget \fIw\fP;
+.br
+String \fIname\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the AsciiSrc object.
+.IP \fIname\fP 1i
+The name of the file to save the current buffer into.
+.LP
+This function returns \fBTrue\fP if the save was successful.
+\fBXawAsciiSaveAsFile\fP will work with a buffer of either type
+\fBXawAsciiString\fP or type \fBXawAsciiFile\fP.
+.NH 4
+Seeing if the Source has Changed
+.LP
+To find out if the text buffer in an AsciiSrc object has changed
+since the last time it was saved with \fBXawAsciiSave\fP or queried
+.IN "XawAsciiSave" ""
+use \fBXawAsciiSourceChanged\fP.
+.FD 0
+Boolean XawAsciiSourceChanged(\fIw\fP)
+.IN "XawAsciiSourceChanged" "" @DEF@
+.br
+Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the AsciiSrc object.
+.LP
+This function will return \fBTrue\fP if the source has changed since
+the last time it was saved or queried. The internal change flag is
+reset whenever the string is queried via \fBXtGetValues\fP or the
+buffer is saved via \fBXawAsciiSave\fP.
diff --git a/specs/Xaw/AsciiText b/specs/Xaw/AsciiText
new file mode 100644
index 0000000..94d4060
--- /dev/null
+++ b/specs/Xaw/AsciiText
@@ -0,0 +1,166 @@
+.\" $Xorg: AsciiText,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.NH 2
+Ascii Text Widget
+.LP
+.XS
+ AsciiText Widget
+.XE
+.IN "AsciiText widget" "" "@DEF@"
+.LP
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/AsciiText.h>
+.IN "AsciiText.h" ""
+ClassHeader file <X11/Xaw/AsciiTextP.h>
+.IN "AsciiTextP.h" ""
+Class asciiTextWidgetClass
+.IN "asciiTextWidgetClass" ""
+Class Name Text
+.IN "AsciiText widget" "class name"
+Superclass Text
+Sink Name textSink
+Source Name textSource
+.De
+.sp 1
+.LP
+For the ease of internationalization, the AsciiText widget class name has not
+been changed, although it is actually able support non-ASCII locales.
+The AsciiText widget is really a collection of smaller parts. It
+includes the Text widget itself, a ``Source'' (which supports memory management),
+and a ``Sink'' (which handles the display). There are currently two supported
+sources, the AsciiSrc and MultiSrc, and two supported sinks, the AsciiSink and
+.IN "AsciiSrc object" ""
+.IN "AsciiSink object" ""
+.IN "MultiSrc object" ""
+.IN "MultiSink object" ""
+MultiSink. Some of
+the resources listed below are not actually resources of the
+AsciiText, but belong to the associated source or sink. This is
+is noted in the explanation of each resource where it applies. When
+specifying these resources in a resource file it is necessary to use
+\fI*AsciiText*resource_name\fP instead of
+\fI*AsciiText.resource_name\fP, since they actually belong to the
+children of the AsciiText widget, and not the AsciiText widget itself.
+However, these resources may be set directly on the AsciiText widget at
+widget creation time, or via \fBXtSetValues\fP.
+.NH 3
+Resources
+.LP
+When creating an AsciiText widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "AsciiText widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1.1i) lw(.5i) lw(1.9i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+autoFill AutoFill Boolean False
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+bottomMargin Margin Position 2
+callback Callback XtCallbackList NULL
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor XC_xterm
+cursorName Cursor String NULL
+dataCompression DataCompression Boolean True
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+displayCaret Output Boolean True
+displayNonprinting Output Boolean True
+displayPosition TextPosition XawTextPosition 0
+echo Output Boolean True
+editType EditType XawTextEditType XawtextRead
+font Font XFontStruct* XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A Font height + margins
+insensitiveBorder Insensitive Pixmap GreyPixmap
+insertPosition TextPosition int 0
+international International Boolean C False
+leftMargin Margin Dimension 2
+length Length int A length of \fBstring\fP
+mappedWhenManaged MappedWhenManaged Boolean True
+pieceSize PieceSize XawTextPosition BUFSIZ
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+resize Resize XawTextResizeMode XawtextResizeNever
+rightMargin Margin Position 2
+screen Screen Screen R Parent's Screen
+scrollHorizontal Scroll XawTextScrollMode XawtextScrollNever
+scrollVertical Scroll XawTextScrollMode XawtextScrollNever
+selectTypes SelectTypes XawTextSelectType* See above
+sensitive Sensitive Boolean True
+string String String NULL
+textSink TextSink Widget An AsciiSink
+textSource TextSource Widget An AsciiSrc
+topMargin Margin Position 2
+translations Translations TranslationTable See above
+type Type XawAsciiType XawAsciiString
+useStringInPlace UseStringInPlace Boolean False
+width Width Dimension 100
+wrap Wrap WrapMode XawtextWrapNever
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Af
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Tm
+.Oc AsciiText
+.Cm
+.Cu
+.Cn
+.Od AsciiText
+.Dp
+.Dc
+.Tc
+.Sd AsciiText
+.Td
+.Oe AsciiText
+.Sh AsciiText
+.Sf AsciiText
+.Sn AsciiText
+.Sg AsciiText
+.Hw
+.Ib
+.Ti
+.Ol AsciiText
+.Mm
+.Pf
+.Pb
+.Op AsciiText
+.Tz
+.Sc
+.Ts
+.St
+.Se
+.Os AsciiText
+.To
+.Tr
+.Ot AsciiText
+.Ou AsciiText
+.Tw
+.Xy
+
+
diff --git a/specs/Xaw/Box b/specs/Xaw/Box
new file mode 100644
index 0000000..5737a97
--- /dev/null
+++ b/specs/Xaw/Box
@@ -0,0 +1,139 @@
+.\" $Xorg: Box,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.NH 2
+Box Widget
+.LP
+.XS
+ Box Widget
+.XE
+.IN "Box widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Box.h>
+.IN "Box.h" ""
+Class Header file <X11/Xaw/BoxP.h>
+.IN "BoxP.h" ""
+Class boxWidgetClass
+.IN "boxWidgetClass" ""
+Class Name Box
+.IN "Box widget" "class name"
+Superclass Composite
+.sp
+.De
+.LP
+The Box widget provides geometry management of arbitrary widgets in a
+box of a specified dimension. The children are rearranged when
+resizing events occur either on the Box or its children, or when
+children are managed or unmanaged. The Box widget always attempts to
+pack its children as tightly as possible within the geometry allowed by
+its parent.
+.LP
+Box widgets are commonly used to manage a related set of buttons and
+are often called ButtonBox widgets, but the children are not
+limited to buttons. The Box's children are arranged on a background that
+has its own specified dimensions and color.
+.NH 3
+Resources
+.LP
+When creating a Box widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Box widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+children ReadOnly WidgetList R NULL
+colormap Colormap Colormap Parent's Colormap
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+height Height Dimension A see \fBLayout Semantics\fP
+hSpace HSpace Dimension 4
+mappedWhenManaged MappedWhenManaged Boolean True
+numChildren ReadOnly Cardinal R 0
+orientation Orientation Orientation XtorientVertical
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+vSpace VSpace Dimension 4
+translations Translations TranslationTable NULL
+width Width Dimension A see \fBLayout Semantics\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Ch
+.Cm
+.Dp
+.Dc
+.Hw
+.IP \fBhSpace\fP 1.5i
+.br
+.ns
+.IP \fBvSpace\fP 1.5i
+The amount of space, in pixels, to leave between the children. This
+resource specifies the amount of space left between the outermost
+children and the edge of the box.
+.Mm
+.Nc
+.IP \fBorientation\fP 1.5i
+Specifies whether the preferred shape of the box (i.e. the result
+returned by the query_geometry class method) is tall and narrow
+\fBXtorientVertical\fP or short and wide \fPXtorientHorizontal\fP.
+.IN "XtorientVertical" ""
+.IN "XtorientHorizontal" ""
+.IN "conversions" "Orientation"
+When the Box is a child of a parent which enforces width constraints, it
+is usually better to specify \fBXtorientVertical\fP (the default).
+When the parent enforces height constraints, it is usually better to
+specify \fBXtorientHorizontal\fP.
+.Rs "horizontal \fPand\fB vertical"
+.Sc
+.Se
+.Tr
+.Xy
+.NH 3
+Layout Semantics
+.IN "Box widget" "layout semantics"
+.LP
+Each time a child is managed or unmanaged, the Box widget will attempt
+to reposition the remaining children to compact the box. Children are
+positioned in order left to right, top to bottom. The packing
+algorithm used depends on the \fBorientation\fP of the Box.
+.IP \fBXtorientVertical\fP 1.5i
+.IN "XtorientVertical" "" @DEF@
+When the next child does not fit on the current row, a new row is
+started. If a child is wider than the width of the box, the box will
+request a larger width from its parent and will begin the layout
+process from the beginning if a new width is granted.
+.IP \fBXtorientHorizontal\fP 1.5i
+.IN "XtorientHorizontal" "" @DEF@
+When the next child does not fit on the current row, the Box widens if
+possible (so as to keep children on a single row); otherwise a new row is
+started.
+.LP
+After positioning all children, the Box widget attempts to shrink its
+own size to the minimum dimensions required for the layout.
diff --git a/specs/Xaw/CH1 b/specs/Xaw/CH1
new file mode 100644
index 0000000..8262a86
--- /dev/null
+++ b/specs/Xaw/CH1
@@ -0,0 +1,411 @@
+.\" $Xorg: CH1,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.ps 11
+.nr PS 11
+.ds LH \fBAthena Widget Set\fP
+.ds CH
+.ds RH \fBX11, Release 6.4\fP
+.bp 1
+.af PN 1
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 1\fP\s-1
+
+\s+1\fBAthena Widgets and The Intrinsics\fP\s-1
+.sp 2
+.nr H1 1
+.if \n(GS .nr nh*hl 1
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 1 \- Athena Widgets and The \*(xI
+.XE
+The X Toolkit is made up of two distinct pieces, the Xt \*(xI and a
+widget set. The Athena widget set is a sample implementation of a
+widget set built upon the \*(xI. In the \*(tk, a widget is the
+combination of an X window or subwindow and its associated input and
+output semantics.
+.LP
+Because the \*(xI provide the same basic functionality to all widget
+sets it may be possible to use widgets from the Athena widget set with
+other widget sets based upon the \*(xI. Since widget sets may also
+implement private protocols, all functionality may not be available when
+mixing and matching widget sets. For information about the \*(xI, see
+the \fI\*(xT\fP.
+.LP
+The Athena widget set is a library package layered on top of the \*(xI
+and Xlib that provides a set of user interface tools sufficient to build
+a wide variety of applications. This layer extends the basic
+abstractions provided by X and provides the next layer of functionality
+primarily by supplying a cohesive set of sample widgets. Although the
+\*(xI are a Consortium standard, there is no standard widget set.
+.LP
+To the extent possible, the \*(xI are "policy-free". The application
+environment and widget set, not the \*(xI, define, implement, and
+enforce:
+.IP \(bu 5
+Policy
+.IP \(bu 5
+Consistency
+.IP \(bu 5
+Style
+.LP
+Each individual widget implementation defines its own policy. The \*(tk
+design allows for, but does not necessarily encourage, the free mixing
+of radically differing widget implementations.
+.NH 2
+Introduction to the \*(tk
+.LP
+.XS
+ Introduction to the \*(tk
+.XE
+.IN "introduction" "" "@DEF@"
+The \*(tk provides tools that simplify the design of
+application user interfaces in the X Window System programming environment.
+It assists application programmers by providing a set of common
+underlying user-interface functions. It also lets widget programmers
+modify existing widgets, by subclassing, or add new widgets. By using
+the \*(tk in their applications, programmers can present a similar
+user interface across applications to all workstation users.
+.LP
+The \*(tk consists of:
+.IP \(bu 5
+A set of \*(xI functions for building widgets
+.IP \(bu 5
+An architectural model for constructing widgets
+.IP \(bu 5
+A widget set for application programming
+.LP
+While the majority of the \*(xI functions are intended
+for the widget programmer,
+a subset of the \*(xI functions are to be used by application programmers
+(see \fI\*(xT\fP).
+The architectural model lets the widget programmer design new widgets
+by using the \*(xI and by combining other widgets.
+The application interface layers built on top of the \*(tk include a
+coordinated set of widgets and composition policies.
+Some of these widgets and policies are specific to a single
+application domain, and others are common to a variety of
+applications.
+.LP
+The remainder of this chapter discusses the \*(tk and Athena widget set:
+.IP \(bu 5
+Terminology
+.IP \(bu 5
+Model
+.IP \(bu 5
+Conventions used in this manual
+.IP \(bu 5
+Format of the Widget Reference Chapters
+.NH 2
+Terminology
+.LP
+.XS
+ Terminology
+.XE
+.LP
+In addition to the terms already defined for X programming (see \fI\*(xL\fP),
+the following terms are specific to the \*(xI and Athena widget set
+and used throughout this document.
+.LP
+\fBApplication programmer\fP
+.IN "application programmer" "" "@DEF@"
+.IP
+A programmer who uses the \*(tk to produce an application user interface.
+.LP
+\fBChild\fP
+.IN "child" "" "@DEF"
+.IP
+A widget that is contained within another "parent" widget.
+.LP
+\fBClass\fP
+.IN "class" "" "@DEF@"
+.IP
+The general group to which a specific object belongs.
+.LP
+\fBClient\fP
+.IN "client" "" "@DEF@"
+.IP
+A function that uses a widget in an application or for composing
+other widgets.
+.LP
+\fBFullName\fP
+.IN "FullName" "" "@DEF"
+.IP
+The name of a widget instance appended to the full name of its parent.
+.LP
+\fBInstance\fP
+.IN "instance" "" "@DEF@"
+.IP
+A specific widget object as opposed to a general widget class.
+.LP
+\fBMethod\fP
+.IN "method" "" "@DEF@"
+.IP
+A function or procedure implemented by a widget class.
+.LP
+\fBName\fP
+.IN "name" "widget" "@DEF@"
+.IP
+The name that is specific to an instance of a widget for a given client.
+This name is specified at creation time and cannot be modified.
+.LP
+\fBObject\fP
+.IN "object" "" "@DEF@"
+.IP
+A data abstraction consisting of private data and private and public
+functions that operate on the private data.
+Users of the abstraction can interact with the object only through calls
+to the object's public functions.
+In the \*(tk,
+some of the object's public functions are called directly by the application,
+while others are called indirectly when the application calls the common
+\*(xI functions.
+In general, if a function is common to all widgets,
+an application uses a single \*(xI function to invoke the function for all
+types of widgets.
+If a function is unique to a single widget type,
+the widget exports the function.
+.LP
+\fBParent\fP
+.IN "parent" "" "@DEF@"
+.IP
+A widget that contains at least one other ("child") widget.
+A parent widget is also known as a composite widget.
+.LP
+\fBResource\fP
+.IN "resource" "" "@DEF@"
+.IP
+A named piece of data in a widget that can be set by a client,
+by an application, or by user defaults.
+.LP
+\fBSuperclass\fP
+.IN "superclass" "" "@DEF@"
+.IP
+A larger class of which a specific class is a member.
+All members of a class are also members of the superclass.
+.LP
+\fBUser\fP
+.IN "user" "" "@DEF@"
+.IP
+A person interacting with a workstation.
+.LP
+\fBWidget\fP
+.IN "widget" "" "@DEF@"
+.IP
+An object providing a user-interface abstraction (for example, a Scrollbar
+widget).
+.LP
+\fBWidget class\fP
+.IN "widget class" "" "@DEF@"
+.IP
+The general group to which a specific widget belongs,
+otherwise known as the type of the widget.
+.LP
+\fBWidget programmer\fP
+.IN "widget programmer" "" "@DEF@"
+.IP
+A programmer who adds new widgets to the \*(tk.
+.NH 2
+Underlying Model
+.LP
+.XS
+ Underlying Model
+.XE
+.IN "underlying model" "" "@DEF@"
+The underlying architectural model is based on the following premises:
+.KS
+.IP "Widgets are X windows"
+.IP
+Every user-interface widget is associated with an X window.
+The X window ID for a widget is readily available from the widget.
+Standard Xlib calls can be used by widgets for many of their input and
+output operations.
+.KE
+.KS
+.IP "Information hiding"
+.IP
+The data for every widget is private to the widget and its subclasses.
+That is, the data is neither directly accessible
+nor visible outside of the module implementing the widget.
+All program interaction with the widget is performed by a set of operations
+(methods) that are defined for the widget.
+.KE
+.KS
+.IP "Widget semantics and widget layout geometry"
+.IP
+Widget semantics are clearly separated from widget layout geometry.
+Widgets are concerned with implementing specific user-interface
+semantics. They have little control over issues such as their size or
+placement relative to other widget peers. Mechanisms are provided for
+associating geometric managers with widgets and for widgets to make
+suggestions about their own geometry.
+.KE
+.NH 2
+Conventions Used in this Manual
+.IP \(bu 5
+.IN "conventions" "used in manual" "@DEF@"
+All resources available to the widgets are listed with each widget. Many
+of these are available to more than one widget class due to the object
+oriented nature of the \*(xI. The new resources for each widget are
+listed in bold text, and the inherited resources are listed in plain text.
+.IP \(bu 5
+Global symbols are printed in \fBbold\fP and can be function names,
+symbols defined in include files, or structure names. Arguments are
+printed in \fIitalics\fP.
+.IP \(bu 5
+Each function is introduced by a general discussion that distinguishes
+it from other functions. The function declaration itself follows, and
+each argument is specifically explained. General discussion of the
+function, if any is required, follows the arguments. Where
+applicable, the last paragraph of the explanation lists the return values
+of the function.
+.IP \(bu 5
+To eliminate any ambiguity between those arguments that you pass and
+those that a function returns to you, the explanations for all
+arguments that you pass start with the word \fIspecifies\fP or, in the
+case of multiple arguments, the word \fIspecify\fP. The explanations
+for all arguments that are returned to you start with the word
+\fIreturns\fP or, in the case of multiple arguments, the word
+\fIreturn\fP. The explanations for all arguments that you can pass
+and are returned start with the words \fIspecifies and returns\fP.
+.IP \(bu 5
+Any pointer to a structure that is used to return a value is
+designated as such by the \fI_return\fP suffix as part of its name.
+All other pointers passed to these functions are used for reading
+only. A few arguments use pointers to structures that are used for
+both input and output and are indicated by using the \fI_in_out\fP
+suffix.
+.IN "_return" "" "@DEF@"
+.IN "_in_out" "" "@DEF@"
+.NH 2
+Format of the Widget Reference Chapters
+.LP
+.IN "conventions" "chapter format" "@DEF@"
+.IN "chapter format" "" "@DEF@"
+The majority of this document is a reference guide for the Athena
+widget set. Chapters three through six give the programmer all
+information necessary to use the widgets. The layout of the chapters
+follows a specific pattern to allow the programmer to easily find the
+desired information.
+.LP
+The first few pages of every chapter give an overview of the widgets
+in that section. Widgets are grouped into chapters by functionality.
+.IP "Chapter 3" .75i
+Simple Widgets
+.IP "Chapter 4" .75i
+Menus
+.IP "Chapter 5" .75i
+Text Widgets
+.IP "Chapter 6" .75i
+Composite and Constraint Widget
+.LP
+Following the introduction will be a description of each widget in that
+chapter. When no functional grouping is obvious the widgets are listed
+in alphabetical order, such as in chapters three and six.
+.LP
+The first section of each widget's description is a table that
+contains general information about this widget class. Here is the
+table for the Box widget, and an explanation of all the entries.
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Box.h>
+Class Header file <X11/Xaw/BoxP.h>
+Class boxWidgetClass
+Class Name Box
+Superclass Composite
+.sp
+.De
+.IP "\fBApplication Header File\fP" 2.0i
+.IN "application header file" "" "@DEF@"
+This file must be included when an application uses this widget.
+It usually contains the class definition, and some resource macros.
+This is often called the ``public'' header file.
+.IN "class header file" "" "@DEF@"
+.IP "\fBClass Header File\fP" 2.0i
+This file will only be used by widget programmers. It will need to be
+included by any widget that subclasses this widget. This is often
+called the ``private'' header file.
+.IN "class" "" "@DEF@"
+.IP \fBClass\fP 2.0i
+This is the widget class of this widget. This global symbol is passed to
+\fBXtCreateWidget\fP so that the \*(xI will know which type of widget
+to create.
+.IN "class name" "" "@DEF@"
+.IP "\fBClass Name\fP" 2.0i
+This is the resource name of this class. This name can be used in
+a resource file to match any widget of this class.
+.IN "superclass" ""
+.IP \fBSuperclass\fP 2.0i
+This is the superclass that this widget class is descended from. If
+you understand how the superclass works it will allow you to more quickly
+understand what this widget does, since much of its functionality may be
+inherited from its superclass.
+.sp
+.LP
+After this table follows a general description of the default behavior of
+this widget, as seen by the user. In many cases this functionality
+may be overridden by the application programmer, or by the user.
+.LP
+The next section is a table showing the
+name, class, type and default value of each resource that is available
+to this widget. There is also a column containing notes describing
+special restrictions placed upon individual resources.
+.IN "notes" "" "@DEF@"
+.IN "A, note" "" "@DEF@"
+.IN "D, note" "" "@DEF@"
+.IN "C, note" "" "@DEF@"
+.IN "R, note" "" "@DEF@"
+.IP A .5i
+This resource may be automatically adjusted when another
+resource is changed.
+.IP C .5i
+This resource is only settable at widget creation time, and may not
+be modified with \fBXtSetValues\fP.
+.IP D .5i
+Do not modify this resource. While setting this resource will
+work, it can cause unexpected behavior. When this symbol appears
+there is another, preferred, interface provided by the \*(tk.
+.IP R .5i
+This resource is READ-ONLY, and may not be modified.
+.LP
+After the resource table is a detailed description of every resource
+available to that widget. Many of these are redundant, but printing
+them with each widget saves page flipping. The names of the resources
+that are inherited are printed in plain text, while the names of the
+resources that are new to this class are printed in \fBbold\fP.
+If you have already read the description of the superclass you need
+only pay attention to the resources printed in bold.
+.LP
+For each composite widget there is a section on layout semantics that
+follows the resource description. This section will describe the
+effect of constraint resources on the layout of the children, as well
+as a general description of where it prefers to place its children.
+.LP
+Descriptions of default translations and action routines come next, for
+widgets to which they apply. The last item in each widget's
+documentation is the description of all convenience routines provided by
+the widget.
+.NH 2
+Input Focus
+.XS
+ Input Focus
+.XE
+.IN "input focus" "" "@DEF@"
+.IN "input" "" "@DEF@"
+.IN "XtNinput" "" "@DEF@"
+.LP
+The \*(xI define a resource on all Shell widgets that interact with
+the window manager called \fBinput\fP. This resource requests the
+assistance of window manager in acquiring the input focus. The
+resource defaults to \fBFalse\fP in the \*(xI, but is redefined to
+default to \fBTrue\fP when an application is using the Athena widget
+set. An application programmer may override this default and set the
+resource back to \fBFalse\fP if the application does not need the window
+manager to give it the input focus. See the \fI\*(xT\fP for details
+on the \fIinput\fP resource.
diff --git a/specs/Xaw/CH2 b/specs/Xaw/CH2
new file mode 100644
index 0000000..d40adcb
--- /dev/null
+++ b/specs/Xaw/CH2
@@ -0,0 +1,1103 @@
+.\" $Xorg: CH2,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 2\fP\s-1
+
+\s+1\fBUsing Widgets\fP\s-1
+.sp 2
+.nr H1 2
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 2 \- Using Widgets
+.XE
+.IN "using widgets" "" "@DEF@"
+Widgets serve as the primary tools for building a user interface or
+application environment. The Athena widget set consists of primitive
+widgets that contain no children (for example, a command button) and
+composite widgets which may contain one or more widget children (for
+example, a Box widget).
+.LP
+The remaining chapters explain the widgets that are provided
+by the Athena widget set.
+These user-interface components serve as an interface for
+application programmers who do not want to implement their own widgets.
+In addition, they serve as a starting point
+for those widget programmers who, using the \*(xI mechanisms,
+want to implement alternative application programming interfaces.
+.LP
+This chapter is a brief introduction to widget programming. The
+examples provided use the Athena widgets, though most of the concepts
+will apply to all widget sets. Although there are several programming
+interfaces to the \*(tk, only one is described here. A full
+description of the programming interface is provided in the document
+\fI\*(xT\fP.
+.NH 2
+Setting the Locale
+.LP
+.XS
+ Setting the Locale
+.XE
+If it is desirable that the application take advantage of
+internationalization (i18n), you must establish locale with
+.PN XtSetLanguageProc
+before \fBXtDisplayInitialize\fP or \fBXtAppInitialize\fP
+is called. For full details, please refer to the document
+\fI\*(xT\fP, section 2.2. However, the following simplest-case
+call is sufficient in many or most applications.
+.LP
+.IN "internationalization" "" ""
+.IN "XtSetLanguageProc" "" "@DEF@"
+.IN "locale" "" ""
+.Ds
+.TA .5i 2i
+.ta .5i 2i
+ XtSetLanguageProc(NULL, NULL, NULL);
+.De
+.LP
+Most notably, this will affect the Standard C locale, determine which
+resource files will be loaded, and what fonts will be required of FontSet
+specifications. In many cases, the addition of this line is the only source change
+required to internationalize Xaw programs, and will not disturb the function
+of programs in the default "C" locale.
+.NH 2
+Initializing the Toolkit
+.LP
+.XS
+ Initializing the Toolkit
+.XE
+You must call a toolkit initialization function before invoking any
+other toolkit routines (besides locale setting, above).
+.PN XtAppInitialize
+opens the X server connection, parses the command line,
+and creates an initial widget that will serve as the root of
+a tree of widgets created by this application.
+.IN "initialization" "" "@DEF@"
+.IN "toolkit initialization" "" "@DEF@"
+.IN "XtAppInitialize" "" "@DEF@"
+.IN "fallback resources" "" "@DEF@"
+.FD 0
+Widget XtAppInitialize(\fIapp_context_return\fP, \fIapplication_class\fP, \
+\fIoptions\fP, \fInum_options\fP,
+.ta 2i
+ \fIargc_in_out\fP, \fIargv_in_out\fP, \fIfallback_resources\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ XtAppContext *\fIapp_context_return\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescRec \fIoptions\fP[];
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc_in_out\fP;
+.br
+ String *\fIargv_in_out\fP[];
+.br
+ String *\fIfallback_resources\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIapp_con_return\fP 1.5i
+Returns the application context of this application, if non-NULL.
+.IP \fIapplication_class\fP 1.5i
+Specifies the class name of this application,
+which is usually the generic name for all instances of this application.
+A useful convention is to form the class name by capitalizing the
+first letter of the application name. For example, the application named
+``xman'' has a class name of ``Xman''.
+.IP \fIoptions\fP 1.5i
+Specifies how to parse the command line for any application-specific
+resources.
+The options argument is passed as a parameter to
+.PN XrmParseCommand .
+For further information,
+see \fI\*(xL\fP.
+.IP \fInum_options\fP 1.5i
+Specifies the number of entries in the options list.
+.IP \fIargc_in_out\fP 1.5i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv_in_out\fP 1.5i
+Specifies the command line parameters.
+.IP \fIfallback_resources\fP 1.5i
+Specifies resource values to be used if the site-wide application class
+defaults file cannot be opened, or NULL.
+.IP \fIargs\fP 1.5i
+Specifies the argument list to use when creating the Application shell.
+.IP \fInum_args\fP 1.5i
+Specifies the number of arguments in \fIargs\fP.
+.LP
+This function will remove the command line arguments that the toolkit
+reads from \fIargc_in_out\fP, and \fIargv_in_out\fP. It will then
+attempt to open the display. If the display cannot be opened, an error
+message is issued and XtAppInitialize terminates the application. Once
+the display is opened, all resources are read from the locations
+specified by the \*(xI. This function returns an ApplicationShell
+widget to be used as the root of the application's widget tree.
+.NH 2
+Creating a Widget
+.LP
+.XS
+ Creating a Widget
+.XE
+.IN "widget creation" "" "@DEF@"
+.IN "creating widgets" "" "@DEF@"
+.IN "XtRealizeWidget" "" ""
+Creating a widget is a three-step process. First, the widget instance
+is allocated, and various instance-specific attributes are set by
+using \fBXtCreateWidget\fP. Second, the widget's parent is informed
+of the new child by using \fBXtManageChild\fP. Finally, X windows are
+created for the parent and all its children by using \fBXtRealizeWidget\fP
+and specifying the top-most widget. The first two steps can be
+combined by using \fBXtCreateManagedWidget\fP. In addition,
+\fBXtRealizeWidget\fP is automatically called when the child becomes
+managed if the parent is already realized.
+.LP
+To allocate, initialize, and manage a widget, use
+.PN XtCreateManagedWidget .
+.IN "XtCreateManagedWidget" "" "@DEF@"
+.FD 0
+Widget XtCreateManagedWidget(\fIname\fP, \fIwidget_class\fP, \fIparent\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Widget \fIparent\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the instance name for the created widget that is used for retrieving
+widget resources.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class pointer for the created widget.
+.IP \fIparent\fP 1i
+Specifies the parent widget ID.
+.IP \fIargs\fP 1i
+Specifies the argument list. The argument list is a variable-length
+list composed of name and value pairs that contain information
+pertaining to the specific widget instance being created. For further
+information, see Section 2.7.2.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+If the num_args is zero, the argument list is never referenced.
+.LP
+When a widget instance is successfully created, the widget identifier
+is returned to the application. If an error is encountered, the
+.PN XtError
+routine is invoked to inform the user of the error.
+.IN "XtError" "" ""
+.LP
+For further information, see \fI\*(xT\fP.
+.NH 2
+Common Resources
+.XS
+ Common Resources
+.XE
+.IN "resource" ""
+.LP
+Although a widget can have unique arguments that it understands, all
+widgets have common arguments that provide some regularity of operation.
+The common arguments allow arbitrary widgets to be managed by
+higher-level components without regard for the individual widget type.
+Widgets will ignore any argument that they do not understand.
+.LP
+The following resources are retrieved from the argument list
+or from the resource database by all of the Athena widgets:
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+colormap Colormap Colormap Parent's Colormap
+depth Depth int Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+height Height Dimension \fIwidget dependent\fP
+mappedWhenManaged MappedWhenManaged Boolean True
+screen Screen Screen Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable \fIwidget dependent\fP
+width Width Dimension \fIwidget dependent\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.IN "XtDefaultForeground" "" ""
+.IN "XtDefaultBackground" "" ""
+.LP
+The following additional resources are retrieved from the argument list
+or from the resource database by many of the Athena widgets:
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+callback Callback XtCallbackList NULL
+cursor Cursor Cursor \fIwidget dependent\fP
+foreground Foreground Pixel XtDefaultForeground
+insensitiveBorder Insensitive Pixmap GreyPixmap
+.sp 3p
+_
+.TE
+.IN "XtDefaultForeground" "" ""
+.NH 2
+Resource Conversions
+.XS
+ Resource Conversions
+.XE
+.IN "conversions" "" "@DEF@"
+.IN "string conversions" "" "@DEF@"
+.IN "type conversions" "" "@DEF@"
+.LP
+Most resources in the Athena widget set have a converter registered that
+will translate the string in a resource file to the correct internal
+representation. While some are obvious (string to integer, for example),
+others need specific mention of the allowable values. Three general
+converters are described here:
+.IP \(bu 5
+Cursor
+.IP \(bu 5
+Pixel
+.IP \(bu 5
+Bitmap
+.LP
+Many widgets have defined special converters that apply only to that
+widget. When these occur, the documentation section for that widget
+will describe the converter.
+.NH 3
+Cursor Conversion
+.IN "conversions" "ColorCursor" "@DEF@"
+.IN "conversions" "Cursor" "@DEF@"
+.IN "cursor" "" ""
+.LP
+The value for the \fBcursorName\fP resource is specified in the resource
+database as a string, and is of the following forms:
+.IP \(bu 5
+A standard X cursor name from \fB< X11/cursorfont.h >\fP.
+The names in \fBcursorfont.h\fP each describe a specific cursor. The
+resource names for these cursors are exactly like the names in this file
+except the \fBXC_\fP is not used. The cursor definition \fBXC_gumby\fP
+has a resource name of \fBgumby\fP.
+.IP \(bu 5
+Glyphs, as in \fIFONT font-name glyph-index [[ font-name ] glyph-index ]\fP.
+The first font and glyph specify the cursor source pixmap.
+The second font and glyph specify the cursor mask pixmap.
+The mask font defaults to the source font,
+and the mask glyph index defaults to the source glyph index.
+.IP \(bu 5
+A relative or absolute file name.
+If a relative or absolute file name is specified, that file is used to
+create the source pixmap. Then the string "Mask" is appended to
+locate the cursor mask pixmap. If the "Mask" file does not exist, the
+suffix "msk" is tried. If "msk" fails, no cursor mask will be used.
+If the filename does not start with '/' or './' the the bitmap
+file path is used (see section 2.4.3).
+.NH 3
+Pixel Conversion
+.LP
+.IN "conversions" "Pixel" "@DEF@"
+.IN "pixel" "" ""
+.IN "rgb.txt" "" ""
+.IN "XtDefaultForeground" "" ""
+.IN "XtDefaultBackground" "" ""
+The string-to-pixel converter takes any name that is acceptable to
+XParseColor (see \fI\*(xL\fP). In addition this routine understands
+the special toolkit symbols `XtDefaultForeground' and
+`XtDefaultBackground', described in \fI\*(xT\fP. In short the acceptable
+pixel names are:
+.IP \(bu 5
+Any color name for the rgb.txt file (typically in the directory
+/usr/lib/X11 on POSIX systems).
+.IP \(bu 5
+A numeric specification of the form #<red><green><blue> where these
+numeric values are hexadecimal digits (both upper and lower case).
+.IP \(bu 5
+The special strings `XtDefaultForeground' and `XtDefaultBackground'
+.NH 3
+Bitmap Conversion
+.IN "bitmap conversions" "" "@DEF@"
+.IN "conversions" "Bitmap" "@DEF@"
+.IN "bitmapFilePath" "" "@DEF@"
+.IN "BitmapFilePath" "" "@DEF@"
+.IN "/usr/include/X11/bitmaps" "" ""
+.LP
+The string-to-bitmap converter attempts to locate a file containing
+bitmap data whose name is specified by the input string. If the file
+name is relative (i.e. does not begin with / or ./), the directories to
+be searched are specified in the \fBbitmapFilePath\fP resource--class
+\fBBitmapFilePath\fP. This resource specifies a colon (:) separated
+list of directories that will be searched for the named bitmap or
+cursor glyph (see section 2.4.1). The \fBbitmapFilePath\fP resource is
+global to the application, and may \fBnot\fP be specified differently
+for each widget that wishes to convert a cursor to bitmap. In addition
+to the directories specified in the \fBbitmapFilePath\fP resource a
+default directory is searched. When using POSIX the default
+directory is
+.PN /usr/include/X11/bitmaps .
+.NH 2
+Realizing a Widget
+.LP
+.XS
+ Realizing a Widget
+.XE
+.IN "realizing widgets" "" "@DEF@"
+The
+.PN XtRealizeWidget
+function performs two tasks:
+.IP \(bu 5
+Calculates the geometry constraints of all managed descendants
+of this widget. The actual calculation is put off until realize time
+for performance reasons.
+.IP \(bu 5
+Creates an X window for the widget and, if it is a composite widget,
+realizes each of its managed children.
+.IN "XtRealizeWidget" "" "@DEF@"
+.FD 0
+void XtRealizeWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.LP
+For further information about this function,
+see the \fI\*(xT\fP.
+.NH 2
+Processing Events
+.LP
+.XS
+ Processing Events
+.XE
+.IN "events" "" ""
+.IN "XtAppInitialize" "" ""
+Now that the application has created, managed and realized its
+widgets, it is ready to process the events that will be delivered by the
+X Server to this client. A function call that will process the
+events is \fBXtAppMainLoop\fP.
+.IN "XtAppMainLoop" "" "@DEF@"
+.FD 0
+void XtAppMainLoop(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context of this application. The value is
+normally returned by \fBXtAppInitialize\fP.
+.LP
+This function never returns: it is an infinite loop that processes the
+X events. User input can be handled through callback procedures and
+application defined action routines. More details are provided in
+\fI\*(xT\fP.
+.NH 2
+Standard Widget Manipulation Functions
+.XS
+ Standard Widget Manipulation Functions
+.XE
+.LP
+After a widget has been created, a client can interact with that
+widget by calling one of the standard widget manipulation routines
+provided by the \*(xI, or a widget class-specific manipulation routine.
+.LP
+The \*(xI provide generic routines to give the application programmer
+access to a set of standard widget functions. The common widget
+routines let an application or composite widget perform the following
+operations on widgets without requiring explicit knowledge of the widget
+type.
+.IP \(bu 5
+Control the mapping of widget windows
+.IP \(bu 5
+Destroy a widget instance
+.IP \(bu 5
+Obtain an argument value
+.IP \(bu 5
+Set an argument value
+.NH 3
+Mapping Widgets
+.LP
+By default,
+widget windows are mapped (made viewable) automatically by
+\fBXtRealizeWidget\fP. This behavior can be disabled by using
+\fBXtSetMappedWhenManaged\fP, making the client responsible for calling
+\fBXtMapWidget\fP to make the widget viewable.
+.IN "XtSetMappedWhenManaged" "" "@DEF@"
+.IN "XtMapWidget" "" ""
+.IN "XtRealizeWidget" "" ""
+.FD 0
+void XtSetMappedWhenManaged(\fIw\fP, \fImap_when_managed\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fImap_when_managed\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fImap_when_managed\fP 1i
+Specifies the new value.
+If map_when_managed is \fBTrue\fP, the widget is mapped automatically
+when it is realized. If map_when_managed is \fBFalse\fP, the client
+must call
+.PN XtMapWidget
+or make a second call to
+.PN XtSetMappedWhenManaged
+to cause the child window to be mapped.
+.LP
+.sp
+The definition for
+.PN XtMapWidget
+is:
+.IN "XtMapWidget" "" "@DEF@"
+.FD 0
+void XtMapWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.LP
+When you are creating several children in sequence for a previously
+realized common parent it is generally more efficient to construct a
+list of children as they are created (using \fBXtCreateWidget\fP) and
+then use \fBXtManageChildren\fP to request that their parent managed
+them all at once. By managing a list of children at one time, the
+parent can avoid wasteful duplication of geometry processing and the
+associated ``screen flash''.
+.IN "XtManageChildren" "" "@DEF@"
+.IN "XtCreateWidget" "" ""
+.FD 0
+void XtManageChildren(\fIchildren\fP, \fInum_children\fP)
+.br
+ WidgetList \fIchildren\fP;
+.br
+ Cardinal \fInum_children\fP;
+.FN
+.IP \fIchildren\fP 1i
+Specifies a list of children to add.
+.IP \fInum_children\fP 1i
+Specifies the number of children to add.
+.LP
+If the parent is already visible on the screen, it is especially
+important to batch updates so that the minimum amount of visible window
+reconfiguration is performed.
+.LP
+For further information about these functions,
+see the \fI\*(xT\fP.
+.NH 3
+Destroying Widgets
+.LP
+To destroy a widget instance of any type, use
+.PN XtDestroyWidget .
+.IN "XtDestroyWidget" "" "@DEF@"
+.FD 0
+void XtDestroyWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.LP
+.PN XtDestroyWidget
+destroys the widget and recursively destroys any children that it may have,
+including the windows created by its children.
+After calling
+.PN XtDestroyWidget ,
+no further references should be made to the widget or any children
+that the destroyed widget may have had.
+.NH 3
+Retrieving Widget Resource Values
+.LP
+To retrieve the current value of a resource attribute associated
+with a widget instance, use
+.PN XtGetValues .
+.IN "XtGetValues" "" "@DEF@"
+.FD 0
+void XtGetValues(\fIw\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIargs\fP 1i
+Specifies a variable-length argument list of name and \fBaddress\fP
+pairs that contain the resource name and the address into which the
+resource value is stored.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.LP
+The arguments and values passed in the argument list are dependent on
+the widget. Note that the caller is responsible for providing space
+into which the returned resource value is copied; the \fBArgList\fP
+contains a pointer to this storage (e.g. x and y must be
+allocated as Position). For further information, see the \fI\*(xT\fP.
+.NH 3
+Modifying Widget Resource Values
+.LP
+To modify the current value of a resource attribute associated with a
+widget instance, use
+.PN XtSetValues .
+.IN "XtSetValues" "" "@DEF@"
+.FD 0
+void XtSetValues(\fIw\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIargs\fP 1i
+Specifies an array of name and \fBvalue\fP pairs that contain the
+arguments to be modified and their new values.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.LP
+The arguments and values that are passed will depend on the widget
+being modified. Some widgets may not allow certain resources to be
+modified after the widget instance has been created or realized.
+No notification is given if any part of a \fBXtSetValues\fP request is
+ignored.
+.LP
+For further information about these functions, see the \fI\*(xT\fP.
+.IN "XtGetValues" "" ""
+.IN "XtSetValues" "" ""
+.NT
+The argument list entry for
+.PN XtGetValues
+specifies the address to which the caller wants the value copied. The
+argument list entry for
+.PN XtSetValues ,
+however, contains the new value itself, if the size of value is less than
+sizeof(XtArgVal) (architecture dependent, but at least sizeof(long));
+otherwise, it is a pointer to the value. String resources are always
+passed as pointers, regardless of the length of the string.
+.NE
+.NH 2
+Using the Client Callback Interface
+.LP
+.XS
+ Using the Client Callback Interface
+.XE
+.IN "callbacks" "" ""
+Widgets can communicate changes in their state to their clients
+by means of a callback facility.
+The format for a client's callback handler is:
+.IN "CallbackProc" "" "@DEF@"
+.FD 0
+void \fICallbackProc\fP(\fIw\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies widget for which the callback is registered.
+.IP \fIclient_data\fP 1i
+Specifies arbitrary client-supplied data that the widget should pass
+back to the client when the widget executes the client's callback
+procedure. This is a way for the client registering the callback to
+also register client-specific data: a pointer to additional information
+about the widget, a reason for invoking the callback, and so on. If no
+additional information is necessary, NULL may be passed as this argument.
+This field is also frequently known as the \fIclosure\fP.
+.IP \fIcall_data\fP 1i
+Specifies any callback-specific data the widget wants to pass to the client.
+For example, when Scrollbar executes its \fBjumpProc\fP callback list,
+it passes the current position of the thumb in \fIcall_data\fP.
+.LP
+Callbacks can be registered either by creating an argument containing
+the callback list described below or by using the special convenience
+routines \fBXtAddCallback\fP and \fBXtAddCallbacks\fP. When the widget
+is created, a pointer to a list of callback procedure and data pairs can
+be passed in the argument list to
+.PN XtCreateWidget .
+The list is of type
+.PN XtCallbackList :
+.IN "XtCallbackProc"
+.IN "XtAddCallbacks"
+.IN "XtAddCallback"
+.IN "XtCallbackList" "" "@DEF@"
+.IN "XtCallbackRec" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XtCallbackProc callback;
+ XtPointer closure;
+} XtCallbackRec, *XtCallbackList;
+.De
+.LP
+The callback list must be allocated and initialized before calling
+.PN XtCreateWidget .
+.IN "XtCreateWidget"
+The end of the list is identified by an entry containing NULL in
+callback and closure. Once the widget is created, the client can change
+or de-allocate this list; the widget itself makes no further reference
+to it. The closure field contains the client_data passed to the
+callback when the callback list is executed.
+.LP
+The second method for registering callbacks is to use
+.PN XtAddCallback
+after the widget has been created.
+.IN "XtAddCallback" "" "@DEF@"
+.FD 0
+void XtAddCallback(\fIw\fP, \fIcallback_name, \fP\fIcallback\fP, \
+\fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.br
+ XtCallbackProc \fIcallback\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget to add the callback to.
+.IP \fIcallback_name\fP 1i
+Specifies the callback list within the widget to append to.
+.IP \fIcallback\fP 1i
+Specifies the callback procedure to add.
+.IP \fIclient_data\fP 1i
+Specifies the data to be passed to the callback when it is invoked.
+.LP
+.PN XtAddCallback
+adds the specified callback to the list for the named widget.
+.LP
+All widgets provide a callback list named
+.PN destroyCallback
+.IN "destroyCallback" "" "@DEF@"
+where clients can register procedures that are to be executed when the
+widget is destroyed. The destroy callbacks are executed when the widget
+or an ancestor is destroyed. The \fIcall_data\fP argument is unused for
+destroy callbacks.
+.NH 2
+Programming Considerations
+.LP
+.XS
+ Programming Considerations
+.XE
+This section provides some guidelines on how to set up an application
+program that uses the \*(tk.
+.NH 3
+Writing Applications
+.LP
+.IN "writing applications"
+.IN "StringDefs.h"
+.IN "Intrinsic.h"
+When writing an application that uses the X Toolkit,
+you should make sure that your application performs the following:
+.IP 1. 5
+Include
+.Pn < X11/Intrinsic.h >
+in your application programs.
+This header file automatically includes
+.Pn < X11/Xlib.h >,
+so all Xlib functions also are defined.
+It may also be necessary to include \fB< X11/StringDefs.h >\fP when setting
+up argument lists, as many of the XtN\fIsomething\fP definitions are
+only defined in this file.
+.IP 2. 5
+Include the widget-specific header files for each widget type
+that you need to use.
+For example,
+.Pn < X11/Xaw/Label.h >
+and
+.Pn < X11/Xaw/Command.h >.
+.IP 3. 5
+Call the
+.PN XtAppInitialize
+.IN "XtAppInitialize"
+function before invoking any other toolkit or Xlib functions.
+For further information,
+see Section 2.1 and the \fI\*(xT\fP.
+.IP 4. 5
+To pass attributes to the widget creation routines that will override
+any site or user customizations, set up argument lists. In this
+document, a list of valid argument names is provided in the discussion
+of each widget. The names each have a global symbol defined that begins
+with \fBXtN\fP to help catch spelling errors. For example,
+\fBXtNlabel\fP is defined for the \fBlabel\fP resource of many widgets.
+.IN "XtN" "" "@DEF@"
+.IP
+For further information, see Section 2.9.2.2.
+.IP 5. 5
+When the argument list is set up, create the widget with the
+\fBXtCreateManagedWidget\fP function. For further information, see
+Section 2.2 and the \fI\*(xT\fP.
+.IN "XtCreateManagedWidget"
+.IP 6. 5
+If the widget has any callback routines, set by the
+.PN XtNcallback
+argument or the
+.PN XtAddCallback
+function, declare these routines within the application.
+.IN "XtAddCallback"
+.IP 7. 5
+After creating the initial widget hierarchy, windows must be created
+for each widget by calling
+.PN XtRealizeWidget
+on the top level widget.
+.IN "XtRealizeWidget"
+.IP 8. 5
+Most applications now sit in a loop processing events using
+.PN XtAppMainLoop ,
+for example:
+.IN "XtAppMainLoop"
+.IP
+.Ds 0
+XtCreateManagedWidget(\fIname\fP, \fIclass\fP, \fIparent\fP, \fIargs\fP, \fInum_args\fP);
+XtRealizeWidget(\fIshell\fP);
+XtAppMainLoop(\fIapp_context\fP);
+.De
+.IP
+For information about this function, see the \fI\*(xT\fP.
+.IP 9. 5
+Link your application with
+.PN libXaw
+(the Athena widgets),
+.PN libXmu
+(miscellaneous utilities),
+.PN libXt
+(the \*(tk \*(xI),
+.PN libSM
+(Session Management),
+.PN libICE
+(Inter-Client Exchange),
+.PN libXext
+(the extension library needed for the shape extension code which allows
+rounded Command buttons), and
+.PN libX11
+(the core X library).
+The following provides a sample command line:
+.IN "libXaw"
+.IN "libXmu"
+.IN "libXt"
+.IN "libSM"
+.IN "libICE"
+.IN "libXext"
+.IN "libX11"
+.IN "linking applications"
+.IN "compiling applications"
+.IP
+.Ds 0
+cc -o \fIapplication\fP \fIapplication\fP.c \-lXaw \-lXmu \-lXt \
+\-lSM \-lICE \-lXext \-lX11
+.De
+.NH 3
+Changing Resource Values
+.IN "resource" ""
+.LP
+The \*(xI support two methods of changing the default resource
+values; the resource manager, and an argument list passed into
+XtCreateWidget. While resources values will get updated no matter
+which method you use, the two methods provide slightly different
+functionality.
+.IP "Resource Manager" 1.5i
+This method picks up resource definitions described in \fI\*(xL\fP from
+many different locations at run time. The locations most important to
+the application programmer are the \fIfallback resources\fP and the
+\fIapp-defaults\fP file, (see \fI\*(xT\fP for the complete list).
+Since these resource are loaded at run time, they can be overridden by
+the user, allowing an application to be customized to fit the
+particular needs of each individual user. These values can also be
+modified without the need to rebuild the application, allowing rapid
+prototyping of user interfaces. Application programmers should use
+resources in preference to hard-coded values whenever possible.
+.IP "Argument Lists" 1.5i
+The values passed into the widget at creation time via an argument list
+cannot be modified by the user, and allow no opportunity for
+customization. It is used to set resources that cannot be specified as
+strings (e.g. callback lists) or resources that should not be
+overridden (e.g. window depth) by the user.
+.NH 4
+Specifying Resources
+.LP
+It is important for all X Toolkit application programmers to
+understand how to use the X Resource Manager to specify resources for
+widgets in an X application. This section will describe the most common
+methods used to specify these resources, and how to use the X Resource
+manager.
+.IN "xrdb"
+.IP \fBXrdb\fP 1.5i
+The \fBxrdb\fP utility may be used to load a file containing
+resources into the X server. Once the resources are loaded, the
+resources will affect any new applications started on the display that
+they were loaded onto.
+.IN "application defaults"
+.IN "app-defaults"
+.IN "/usr/lib/X11/app-defaults"
+.IP "\fBApplication Defaults\fP" 1.5i
+The application defaults (app-defaults) file (normally in
+/usr/lib/X11/app-defaults/\fIclassname\fP) for an application is loaded
+whenever the application is started.
+.LP
+The resource specification has two colon-separated parts, a name, and
+a value. The \fIvalue\fP is a string whose format is dependent on the
+resource specified by \fIname\fP. \fIName\fP is constructed by
+appending a resource name to a full widget name.
+.LP
+The full widget name is a list of the name of every ancestor of the
+desired widget separated by periods (.). Each widget also has a class
+associated with it. A class is a type of widget (e.g. Label or
+Scrollbar or Box). Notice that class names, by convention, begin with
+capital letters and instance names begin with lower case letters. The
+class of any widget may be used in place of its name in a resource
+specification. Here are a few examples:
+.IP xman.form.button1 1.5i
+This is a fully specified resource name, and will affect only widgets
+called button1 that are children of widgets called form that are
+children of
+applications named xman. (Note that while typically two widgets that
+are siblings will have different names, it is not prohibited.)
+
+.IP Xman.Form.Command 1.5i
+This will match any Command widget that is a child of a Form widget
+that is itself a child of an application of class \fIXman\fP.
+.IP Xman.Form.button1 1.5i
+This is a mixed resource name with both widget names and classes specified.
+.LP
+This syntax allows an application programmer to specify any widget
+in the widget tree. To match more than one widget (for example a user
+may want to make all Command buttons blue), use an asterisk (*)
+instead of a period. When an asterisk is used, any number of widgets
+(including zero) may exist between the two widget names. For example:
+.IP Xman*Command 1.5i
+This matches all Command widgets in the Xman application.
+.IP Foo*button1 1.5i
+This matches any widget in the Foo application that is named \fIbutton1\fP.
+.LP
+The root of all application widget trees is the widget returned by
+\fBXtAppInitialize\fP. Even though this is actually an
+ApplicationShell widget, the toolkit replaces its widget class with the
+class name of the application. The name of this widget is either
+the name used to invoke the application (\fBargv[0]\fP) or the name of
+the application specified using the standard \fI-name\fP command line
+option supported by the \*(xI.
+.LP
+The last step in constructing the resource name is to append the name of
+the resource with either a period or asterisk to the full or partial
+widget name already constructed.
+.IP *foreground:Blue 2.25i
+Specifies that all widgets in all applications will have a foreground
+color of blue.
+.IP Xman*borderWidth:10 2.25i
+Specifies that all widgets in an application whose class is Xman will
+have a border width of 10 (pixels).
+.IP xman.form.button1.label:Testing 2.25i
+Specifies that a particular widget in the xman application will have a
+label named \fITesting\fP.
+.LP
+An exclamation point (!) in the first column of a line indicates
+that the rest of the line should be treated as a comment.
+.LP
+\fBFinal Words\fP
+.LP
+The Resource manager is a powerful tool that can be used very
+effectively to customize \*(tk applications at run time by either the
+application programmer or the user. Some final points to note:
+.IP \(bu 5
+An application programmer may add new resources to their
+application. These resources are associated with the global
+application, and not any particular widget. The \*(tk function used for
+adding the application resources is \fBXtGetApplicationResources\fP.
+.IN "XtGetApplicationResources"
+.IP \(bu 5
+Be careful when creating resource files. Since widgets will
+ignore resources that they do not understand, any spelling
+errors will cause a resource to have no effect.
+.IP \(bu 5
+Only one resource line will match any given resource. There is a set
+of precedence rules, which take the following general stance.
+.ta 10n
+.IP "" 5
+\(bu More specific overrides less specific, thus period always overrides asterisk.
+.IP "" 5
+\(bu Names on the left are more specific and override names on the right.
+.IP "" 5
+\(bu When resource specifications are exactly the same, user defaults
+.br
+ will override program defaults.
+.LP
+For a complete explanation of the rules of precedence, and
+other specific topics see \fI\*(xT\fP and \fI\*(xL\fP.
+.NH 4
+Creating Argument Lists
+.IN "argument lists" "" "@DEF@"
+.LP
+To set up an argument list for the inline specification of widget attributes,
+you may use any of the four approaches discussed in this section.
+Each resource name has a global symbol associated with it. This
+global symbol has the form XtN\fIresource name\fP. For example, the
+symbol for ``foreground'' is \fBXtNforeground\fP. For further information,
+see the \fI\*(xT\fP.
+.LP
+Argument are specified by using the following structure:
+.IN "ArgList" "" "@DEF@"
+.IN "Arg" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 1.5i
+.ta .5i 1.5i
+typedef struct {
+ String name;
+ XtArgVal value;
+} Arg, *ArgList;
+.De
+.LP
+The first approach is to statically initialize the argument list.
+For example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+static Arg arglist[] = {
+ {XtNwidth, (XtArgVal) 400},
+ {XtNheight, (XtArgVal) 300},
+};
+.De
+.LP
+This approach is convenient for lists that do not need to be computed
+at runtime and makes adding or deleting new elements easy.
+The
+.IN "XtNumber"
+.PN XtNumber
+macro is used to compute the number of elements in the argument list,
+preventing simple programming errors:
+.LP
+.Ds
+XtCreateWidget(\fIname\fP, \fIclass\fP, \fIparent\fP, \fIarglist\fP, XtNumber(\fIarglist\fP));
+.De
+.IN "XtSetArg" "" "@DEF@"
+.LP
+The second approach is to use the
+.PN XtSetArg
+macro.
+For example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+Arg arglist[10];
+XtSetArg(arglist[1], XtNwidth, 400);
+XtSetArg(arglist[2], XtNheight, 300);
+.De
+.LP
+To make it easier to insert and delete entries,
+you also can use a variable index:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+Arg arglist[10];
+Cardinal i=0;
+XtSetArg(arglist[i], XtNwidth, 400); i++;
+XtSetArg(arglist[i], XtNheight, 300); i++;
+.De
+.LP
+The i variable can then be used as the argument list count in the widget
+create function.
+In this example,
+.IN "XtNumber"
+.PN XtNumber
+would return 10, not 2, and therefore is not useful.
+.NT
+You should not use auto-increment or auto-decrement
+within the first argument to
+.PN XtSetArg .
+As it is currently implemented,
+.PN XtSetArg
+is a macro that dereferences the first argument twice.
+.NE
+.LP
+The third approach is to individually set the elements of the
+argument list array:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+Arg arglist[10];
+arglist[0].name = XtNwidth;
+arglist[0].value = (XtArgVal) 400;
+arglist[1].name = XtNheight;
+arglist[1].value = (XtArgVal) 300;
+.De
+.LP
+Note that in this example, as in the previous example,
+.IN "XtNumber"
+.PN XtNumber
+would return 10, not 2, and therefore would not be useful.
+.LP
+The fourth approach is to use a mixture of the first and third approaches:
+you can statically define the argument list but modify some entries at runtime.
+For example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+static Arg arglist[] = {
+ {XtNwidth, (XtArgVal) 400},
+ {XtNheight, (XtArgVal) NULL},
+};
+arglist[1].value = (XtArgVal) 300;
+.De
+.LP
+In this example,
+.IN "XtNumber"
+.PN XtNumber
+can be used, as in the first approach, for easier code maintenance.
+.NH 2
+Example Programs
+.XS
+ Example Programs
+.XE
+.IN "examples"
+.LP
+The best way to understand how to use any programming library is by
+trying some simple examples. A collection of example programs that
+introduces each of the widgets in that Athena widget set, as well as many
+important toolkit programming concepts, is available in the X11R6
+release as distributed by the X Consortium. It can be found in the
+distribution directory \fBcontrib/examples/mit/Xaw\fP, but see your
+site administrator for the exact location of these files on your system.
+See the README file from that directory for a guide to the examples.
+
diff --git a/specs/Xaw/CH3.intro b/specs/Xaw/CH3.intro
new file mode 100644
index 0000000..9040e02
--- /dev/null
+++ b/specs/Xaw/CH3.intro
@@ -0,0 +1,67 @@
+.bp
+.if e .bp \" make sure we break on an odd page.
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 3\fP\s-1
+
+\s+1\fBSimple Widgets\fP\s-1
+.IN "simple widgets" ""
+.sp 2
+.nr H1 3
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 3 - Simple Widgets
+.XE
+.LP
+Each of these widgets performs a specific user interface function. They
+are \fIsimple\fP because they cannot have widget children\(emthey may only
+be used as leaves of the widget tree. These widgets display information or
+take user input.
+.sp
+.IP \fBCommand\fP 1i
+.IN "Command widget" ""
+A push button that, when selected, may cause a specific action
+to take place. This widget can display a multi-line string or a bitmap or pixmap image.
+.IP \fBGrip\fP 1i
+.IN "Grip widget" ""
+A rectangle that, when selected, will cause an action to take place.
+.IP \fBLabel\fP 1i
+.IN "Label widget" ""
+A rectangle that can display a multi-line string or a bitmap or pixmap image.
+.IP \fBList\fP 1i
+.IN "List widget" ""
+A list of text strings presented in row column format that may be
+individually selected. When an element is selected an action may take
+place.
+.IP \fBPanner\fP 1i
+.IN "Panner widget" ""
+A rectangular area containing a \fIslider\fP that may be moved in two
+dimensions. Notification of movement may be continuous or discrete.
+.IP \fBRepeater\fP 1i
+.IN "Repeater widget" ""
+A push button that triggers an action at an increasing rate when selected.
+This widget can display a multi-line string or a bitmap or pixmap image.
+.IP \fBScrollbar\fP
+.IN "Scrollbar widget" ""
+A rectangular area containing a \fIthumb\fP that when slid along one
+dimension may cause a specific action to take place. The Scrollbar may
+be oriented horizontally or vertically.
+.IP \fBSimple\fP 1i
+.IN "Simple widget" ""
+The base class for most of the simple widgets. Provides a rectangular
+area with a settable mouse cursor and special border.
+.IP \fBStripChart\fP 1i
+.IN "StripChart widget" ""
+A real time data graph that will automatically update and scroll.
+.IP \fBToggle\fP 1i
+.IN "Toggle widget" ""
+A push button that contains state information. Toggles
+may also be used as ``radio buttons'' to implement a ``one of many'' or
+``zero or one of many'' group
+of buttons. This widget can display a multi-line string or a bitmap or pixmap image.
diff --git a/specs/Xaw/CH4.intro b/specs/Xaw/CH4.intro
new file mode 100644
index 0000000..feeebff
--- /dev/null
+++ b/specs/Xaw/CH4.intro
@@ -0,0 +1,87 @@
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 4\fP\s-1
+
+\s+1\fBMenus\fP\s-1
+.sp 2
+.nr H1 4
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 4 - Menus
+.XE
+.IN "Menus" ""
+.LP
+The Athena widget set provides support for single paned non-hierarchical
+popup and pulldown menus. Since menus are such a common user interface
+tool, support for them must be provided in even the most basic widget
+sets. In menuing as in other areas, the Athena Widget Set provides only
+basic functionality.
+.LP
+Menus in the Athena widget set are implemented as a menu container (the
+SimpleMenu widget) and a collection of objects that comprise the
+menu entries. The SimpleMenu widget is itself a direct subclass of the
+OverrideShell widget class, so no other shell is necessary when
+creating a menu. The managed children of a SimpleMenu must be
+subclasses of the Sme (Simple Menu Entry) object.
+.LP
+The Athena widget set provides three classes of Sme objects that may be
+used to build menus.
+.sp
+.IP \fBSme\fP 1i
+.IN "Sme object" "
+The base class of all menu entries. It may be used as a menu entry
+itself to provide blank space in a menu. ``Sme'' means ``Simple Menu
+Entry.''
+.IP \fBSmeBSB\fP 1i
+.IN "SmeBSB object" ""
+This menu entry provides a selectable entry containing a text string.
+A bitmap may also be placed in the left and right margins. ``BSB'' means
+``Bitmap String Bitmap.''
+.IP \fBSmeLine\fP 1i
+.IN "SmeLine object" ""
+This menu entry provides an unselectable entry containing a separator line.
+.sp
+.LP
+The SimpleMenu widget informs the window manager that it should ignore
+its window by setting the \fBOverride Redirect\fP flag. This is the
+correct behavior for the press-drag-release style of menu operation. If
+click-move-click or ``pinable''' menus are desired it is the
+responsibility of the application programmer, using the SimpleMenu
+resources, to inform the window manager of the menu.
+.LP
+To allow easy creation of pulldown menus, a MenuButton widget is
+also provided as part of the Athena widget set.
+.NH 2
+Using the Menus
+.XS
+ Using the Menus
+.XE
+.IN "Menus" "using"
+.LP
+The default configuration for the menus is press-drag-release.
+The menus will typically be
+activated by clicking a pointer button while the pointer is over a
+MenuButton, causing the menu to appear in a fixed location relative to
+that button; this is a \fBpulldown\fP menu. Menus may also be activated
+.IN "Menus" "pulldown"
+when a specific pointer and/or key sequence is used anywhere in the
+application; this is a \fBpopup\fP menu (e.g. clicking Ctrl-<pointer
+.IN "Menus" "popup"
+button 1> in the common application \fBxterm\fP). In this
+case the menu should be positioned under
+the cursor. Typically menus will be placed so the pointer cursor is on
+the first menu entry, or the last entry selected by the user.
+.LP
+The menu remains on the screen as long as the pointer button is held
+down. Moving the pointer will highlight different menu items.
+If the pointer leaves the menu, or moves over an entry that cannot
+be selected then no menu entry will highlighted. When the desired menu
+entry has been highlighted, releasing the pointer button removes the menu,
+and causes any mechanism associated with this entry to be invoked.
diff --git a/specs/Xaw/CH5.intro b/specs/Xaw/CH5.intro
new file mode 100644
index 0000000..dafc31e
--- /dev/null
+++ b/specs/Xaw/CH5.intro
@@ -0,0 +1,292 @@
+.\" $Xorg: CH5.intro,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.LP
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 5\fP\s-1
+
+\s+1\fBText Widgets\fP\s-1
+.sp 2
+.nr H1 5
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 5 - Text Widgets.
+.XE
+.LP
+The Text widget provides a window that will allow an application
+to display and edit one or more lines of text. Options are provided to
+allow the user to add Scrollbars to its window, search for a specific
+string, and modify the text in the buffer.
+.LP
+The Text widget is made up of a number of pieces; it was modularized to
+ease customization. The AsciiText widget class (actually not limited to
+ASCII but so named for compatibility) is be general enough to most
+needs. If more flexibility, special features, or extra functionality is
+needed, they can be added by implementing a new TextSource or TextSink, or
+by subclassing the Text Widget (See Section 5.8 for customization
+details.)
+.LP
+The words \fIinsertion point\fP are used in this chapter to refer to the text
+caret. This is the symbol that is displayed between two characters in
+the file. The insertion point marks the location where any new characters
+will be added to the file. To avoid confusion the pointer cursor will
+always be referred to as the \fIpointer\fP.
+.LP
+The text widget supports three edit modes, controlling the types of
+modifications a user is allowed to make:
+.IN "Text widget" "edit modes"
+.IP \(bu 5
+Append-only
+.IP \(bu 5
+Editable
+.IP \(bu 5
+Read-only
+.LP
+Read-only mode does not allow the user or the programmer to modify the text
+in the widget. While the entire string may be reset in
+read-only mode with \fBXtSetValues\fP, it cannot be modified via
+with \fBXawTextReplace\fP. Append-only and editable modes allow
+.IN "XawTextReplace" ""
+the text at the insertion point to be modified. The only difference is
+that text may only be added to or removed from the end of a buffer in
+append-only mode.
+.LP
+.NH 2
+Text Widget for Users
+.IN "Text widget" "User's Guide to the Text widget"
+.XS
+ Text Widget for Users
+.XE
+.LP
+The Text widget provides many of the common keyboard editing commands.
+These commands allow users to move around and edit the buffer. If an
+illegal operation is attempted, (such as deleting characters in a
+read-only text widget), the X server will beep.
+.NH 3
+Default Key Bindings
+.IN "Text widget" "default key bindings"
+.LP
+The default key bindings are patterned after those in the EMACS text editor:
+.sp
+.Ds 0
+.TA 1.0i 3.0i 4.5i
+.ta 1.0i 3.0i 4.5i
+Ctrl-a Beginning Of Line Meta-b Backward Word
+Ctrl-b Backward Character Meta-f Forward Word
+Ctrl-d Delete Next Character Meta-i Insert File
+Ctrl-e End Of Line Meta-k Kill To End Of Paragraph
+Ctrl-f Forward Character Meta-q Form Paragraph
+Ctrl-g Multiply Reset Meta-v Previous Page
+Ctrl-h Delete Previous Character Meta-y Insert Current Selection
+Ctrl-j Newline And Indent Meta-z Scroll One Line Down
+Ctrl-k Kill To End Of Line Meta-d Delete Next Word
+Ctrl-l Redraw Display Meta-D Kill Word
+Ctrl-m Newline Meta-h Delete Previous Word
+Ctrl-n Next Line Meta-H Backward Kill Word
+Ctrl-o Newline And Backup Meta-< Beginning Of File
+Ctrl-p Previous Line Meta-> End Of File
+Ctrl-r Search/Replace Backward Meta-] Forward Paragraph
+Ctrl-s Search/Replace Forward Meta-[ Backward Paragraph
+Ctrl-t Transpose Characters
+Ctrl-u Multiply by 4 Meta-Delete Delete Previous Word
+Ctrl-v Next Page Meta-Shift Delete Kill Previous Word
+Ctrl-w Kill Selection Meta-Backspace Delete Previous Word
+Ctrl-y Unkill Meta-Shift Backspace Kill Previous Word
+Ctrl-z Scroll One Line Up
+Ctrl-\\ Reconnect to input method
+Kanji Reconnect to input method
+.De
+.sp
+.LP
+In addition, the pointer may be used to cut and paste text:
+.LP
+.Ds
+.TA .5i 2.0i
+.ta .5i 2.0i
+ Button 1 Down Start Selection
+ Button 1 Motion Adjust Selection
+ Button 1 Up End Selection (cut)
+
+ Button 2 Down Insert Current Selection (paste)
+
+ Button 3 Down Extend Current Selection
+ Button 3 Motion Adjust Selection
+ Button 3 Up End Selection (cut)
+
+.De
+.LP
+Since all of these key and pointer bindings are set through the
+translations and resource manager, the user and the application
+programmer can modify them by changing the Text widget's
+\fBtranslations\fP resource.
+.\"
+.NH 3
+Search and Replace
+.IN "Text widget" "search"
+.IN "Text widget" "query replace"
+.LP
+The Text widget provides a search popup that can be used to search for a
+string within the current Text widget. The popup can be activated by
+typing either \fIControl-r\fP or \fIControl-s\fP. If \fIControl-s\fP is
+used the search will be forward in the file from the current location of the
+insertion point; if \fIControl-r\fP is used the search will be backward. The
+activated popup is placed under the pointer. It has a number of buttons
+that allow both text searches and text replacements to be performed.
+.LP
+At the top of the search popup are two toggle buttons labeled
+\fIbackward\fP and \fIforward\fP. One of these buttons will always be
+highlighted; this is the direction in which the search will be
+performed. The user can change the direction at any time by clicking on
+the appropriate button.
+.LP
+Directly under the buttons there are two text areas, one labeled
+\fISearch for:\fP and the other labeled \fIReplace with:\fP. If this is
+a read-only Text widget the \fIReplace with:\fP field will be insensitive
+and no replacements will be allowed. After each of these labels will be
+a text field. This field will allow the user to enter a string to
+search for and the string to replace it with. Only one of these text
+fields will have a window border around it; this is the active text
+field. Any key presses that occur when the focus in in the search popup
+will be directed to the active text field. There are also a few special
+key sequences:
+.DS
+.TA 1.75i
+.ta 1.75i
+\fBCarriage Return\fP: Execute the action, and pop down the search widget.
+\fBTab\fP: Execute the action, then move to the next field.
+\fBShift Carriage Return\fP: Execute the action, then move to the next field.
+\fBControl-q Tab\fP: Enter a Tab into a text field.
+\fBControl-c\fP: Pop down the search popup.
+.DE
+.LP
+Using these special key sequences should allow simple
+searches without ever removing one's hands from the keyboard.
+.LP
+Near the bottom of the search popup is a row of buttons. These buttons
+allow the same actions to to be performed as the key sequences, but the
+buttons will leave the popup active. This can be quite useful if many
+searches are being performed, as the popup will be left on the display.
+Since the search popup is a transient window, it may be picked
+up with the window manager and pulled off to the side for use
+at a later time.
+.IP \fBSearch\fP 15
+Search for the specified string.
+.IP \fBReplace\fP 15
+Replace the currently highlighted string with the string in the
+\fIReplace with\fP text field, and move onto the next occurrence of the
+\fISearch for\fP text field. The functionality is commonly referred to as
+query-replace.
+.IP \fBReplace-All\fP 15
+Replace all occurrences of the search string with the replace string from
+the current insertion point position to the end (or beginning) of the
+file. There is no key sequence to perform this action.
+.IP \fBCancel\fP 15
+Remove the search popup from the screen.
+.LP
+Finally, when \fBinternational\fP resource is \fBtrue\fP, there may be a
+pre-edit buffer below the button row, for composing input. Its presence
+is determined by the X locale in use and the VendorShell's \fBpreeditType\fP
+resource.
+.LP
+The widget hierarchy for the search popup is show below, all widgets
+are listed by class and instance name.
+.sp
+.nf
+.ta .5i 1.0i 1.5i 2.0i 2.5i
+Text <name of Text widget>
+ TransientShell search
+ Form form
+ Label label1
+ Label label2
+ Toggle backwards
+ Toggle forwards
+ Label searchLabel
+ Text searchText
+ Label replaceLabel
+ Text replaceText
+ Command search
+ Command replaceOne
+ Command replaceAll
+ Command cancel
+.fi
+.NH 3
+File Insertion
+.LP
+.IN "Text widget" "file insertion"
+To insert a file into a text widget, type the key sequence \fIMeta-i\fP,
+which will activate the file insert popup. This popup will appear under
+the pointer, and any text typed while the focus is in this popup will be
+redirected to the text field used for the filename. When the desired
+filename has been entered, click on \fIInsert File\fP, or type
+\fICarriage Return\fP. The named file will then be inserted in the text
+widget beginning at the insertion point position. If an error occurs when
+opening the file, an error message will be printed, prompting the user
+to enter the filename again. The file insert may be aborted by clicking
+on \fICancel\fP. If \fIMeta-i\fP is typed at a text widget that is
+read-only, it will beep, as no file insertion is allowed.
+.LP
+The widget hierarchy for the file insert popup is show below; all widgets
+are listed by class and instance name.
+.sp
+.nf
+.ta .5i 1.0i 1.5i 2.0i 2.5i
+Text <name of Text widget>
+ TransientShell insertFile
+ Form form
+ Label label
+ Text text
+ Command insert
+ Command cancel
+.fi
+.NH 3
+Text Selections for Users
+.LP
+.IN "Text widget" "Text Selections for Users"
+The text widgets have a text selection mechanism that allows
+the user to copy pieces of the text into the \fBPRIMARY\fP selection,
+and paste
+into the text widget some text that another application (or text
+widget) has put in the \fBPRIMARY\fP selection.
+.LP
+One method of selecting text is to press pointer button 1
+on the beginning of the text to be selected, drag the pointer until all
+of the desired text is highlighted, and then release the button to
+activate the selection. Another method is to click pointer button 1 at
+one end of the text to be selected, then click pointer button 3 at the
+other end.
+.LP
+To modify a currently active selection, press pointer button 3 near
+either the end of the selection that you want to
+adjust. This end of the selection may be moved while holding down pointer
+button 3. When the proper area has been highlighted release the pointer
+button to activate the selection.
+.LP
+The selected text may now be pasted into another application, and
+will remain active until some other client makes a selection.
+To paste text that some other application has
+put into the \fBPRIMARY\fP selection use pointer button 2.
+First place the insertion point where you would like the text to be inserted,
+then click and release pointer button 2.
+.LP
+Rapidly clicking pointer button 1 the following number of times will adjust
+the selection as described.
+.IP \fBTwo\fP 1.0i
+Select the word under the pointer. A word boundary is defined by the
+Text widget to be a Space, Tab, or Carriage Return.
+.IP \fBThree\fP 1.0i
+Select the line under the pointer.
+.IP \fBFour\fP 1.0i
+Select the paragraph under the pointer. A paragraph boundary is
+defined by the text widget as two Carriage Returns in a row with only
+Spaces or Tabs between them.
+.IP \fBFive\fP 1.0i
+Select the entire text buffer.
+.LP
+To unset the text selection, click pointer button 1
+without moving it.
diff --git a/specs/Xaw/CH6.intro b/specs/Xaw/CH6.intro
new file mode 100644
index 0000000..655cf63
--- /dev/null
+++ b/specs/Xaw/CH6.intro
@@ -0,0 +1,84 @@
+.LP
+.bp
+.if e .bp \" make sure we break on an odd page.
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 6\fP\s-1
+
+\s+1\fBComposite and Constraint Widgets\fP\s-1
+.sp 2
+.nr H1 6
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 6 - Composite and Constraint Widgets
+.XE
+.LP
+These widgets may contain arbitrary widget children. They implement a
+policy for the size and location of their children.
+.IP \fBBox\fP 1i
+.IN "Box widget" ""
+This widget will pack its children as tightly as possible in
+non-overlapping rows.
+.IP \fBDialog\fP 1i
+.IN "Dialog widget" ""
+An implementation of a commonly used interaction semantic to prompt for
+auxiliary input from the user, such as a filename.
+.IP \fBForm\fP 1i
+.IN "Form widget" ""
+A more sophisticated layout widget that allows the children to specify
+their positions relative to the other children, or to the edges of the Form.
+.IP \fBPaned\fP 1i
+.IN "Paned widget" ""
+Allows children to be tiled vertically or horizontally. Controls are
+also provided to allow the user to dynamically resize the individual panes.
+.IP \fBPorthole\fP 1i
+.IN "Porthole widget" ""
+Allows viewing of a managed child which is as large as, or larger than its
+parent, typically under control of a Panner widget.
+.IP \fBTree\fP 1i
+.IN "Tree widget" ""
+Provides geometry management of widgets arranged in a directed, acyclic graph.
+.IP \fBViewport\fP 1i
+.IN "Viewport widget" ""
+Consists of a frame, one or two scrollbars, and an inner window. The
+inner window can contain all the data that is to be displayed. This inner
+window will be clipped by the frame with the scrollbars controlling
+which section of the inner window is currently visible.
+.LP
+.NH 3
+A Brief Note on Geometry Management
+.IN "geometry management" ""
+.LP
+The geometry management semantics provided by the X Toolkit give full
+control of the size and position of a widget to the parent of that
+widget. While the children are allowed to request a certain size or
+location, it is the parent who makes the final decision. Many of the
+composite widgets here will deny any geometry request from their
+children by default. If a child widget is not getting the expected size
+or location, it is most likely the parent disallowing a request, or
+implementing semantics slightly different than those expected by the
+application programmer.
+.LP
+If the application wishes to change the size or location of
+any widget it should make a call to \fBXtSetValues\fP. This will
+.IN "XtSetValues" ""
+allow the widget to ask its parent for the new size or location.
+As noted above the parent is allowed to refuse this request,
+and the child must live with the result. If the
+application is unable to achieve the desired semantics, then perhaps it
+should use a different composite widget. Under no circumstances
+should an application programmer resort to \fBXtMoveWidget\fP or
+.IN "XtMoveWidget" ""
+\fBXtResizeWidget\fP; these functions are exclusively for the use of
+.IN "XtResizeWidget" ""
+Composite widget implementors.
+.LP
+For more information on geometry management consult the \fI\*(xT\fP.
+
+
diff --git a/specs/Xaw/CH7.intro b/specs/Xaw/CH7.intro
new file mode 100644
index 0000000..7aaa189
--- /dev/null
+++ b/specs/Xaw/CH7.intro
@@ -0,0 +1,99 @@
+.LP
+.bp
+.if e .bp \" make sure we break on an odd page.
+\&
+.sp 1
+.ce 5
+\s+1\fBChapter 7\fP\s-1
+
+\s+1\fBCreating New Widgets (Subclassing)\fP\s-1
+
+\s+1Written By: Ralph Swick\s-1
+.sp 2
+.nr H1 7
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 7 - Creating New Widgets (Subclassing)
+.XE
+.IN "subclassing" "" "@DEF@"
+.IN "creating new widgets" "" "@DEF@"
+.LP
+Although the task of creating a new widget may at first appear a little
+daunting, there is a basic simple pattern that all widgets follow. The
+Athena Widget library contains a special widget called the
+\fITemplate\fP widget that is intended to assist the novice widget
+programmer in writing a custom widget.
+.LP
+Reasons for wishing to write a custom widget include:
+.IP \(bu 3
+Providing a graphical interface not currently supported by any existing
+widget set.
+.IP \(bu 3
+Convenient access to resource management procedures to obtain fonts,
+colors, etc., even if user customization is not desired.
+.IP \(bu 3
+Convenient access to user input dispatch and translation management procedures.
+.IP \(bu 3
+Access to callback mechanism for building higher-level application libraries.
+.IP \(bu 3
+Customizing the interface or behavior of an existing widget to suit a
+special application need.
+.IP \(bu 3
+Desire to allow user customization of resources such as fonts, colors,
+etc., or to allow convenient re-binding of keys and buttons to internal
+functions.
+.IP \(bu 3
+Converting a non-Toolkit application to use the Toolkit.
+.LP
+In each of these cases, the operation needed to create a new widget is
+to "subclass" an existing one. If the desired semantics of the new
+widget are similar to an existing one, then the implementation of the
+existing widget should be examined to see how much work would be
+required to create a subclass that will then be
+able to share the existing class methods. Much time will be saved in
+writing the new widget if an existing widget class Expose, Resize and/or
+GeometryManager method can be used by the subclass.
+.LP
+Note that some trivial uses of a ``bare-bones'' widget may be achieved by
+simply creating an instance of the Core
+widget. The class variable to use when creating a Core widget is
+.PN widgetClass .
+The geometry of the Core widget is determined entirely by the parent
+widget.
+.LP
+It is very often the case than an application will have a special need
+for a certain set of functions and that many copies of these functions
+will be needed. For example, when converting an older application to use
+the Toolkit, it may be desirable to have a "Window Widget" class that
+might have the following semantics:
+.IN "Window widget"
+.IN "Core widget"
+.IN "widgetClass"
+.IP \(bu 3
+Allocate 2 drawing colors in addition to a background color.
+.IP \(bu 3
+Allocate a text font.
+.IP \(bu 3
+Execute an application-supplied function to handle exposure events.
+.IP \(bu 3
+Execute an application-supplied function to handle user input events.
+.LP
+It is obvious that a completely general-purpose WindowWidgetClass could
+be constructed that would export all class methods as callbacks lists,
+but such a widget would be very large and would have to choose some
+arbitrary number of resources such as colors to allocate. An application
+that used many instances of the general-purpose widget would therefore
+un-necessarily waste many resources.
+.LP
+.sp
+In this section, an outline will be given of the procedure to follow to
+construct a special-purpose widget to address the items listed above.
+The reader should refer to the appropriate sections of the \fI\*(xT\fP
+for complete details of the material outlined here. Section 1.4 of
+the \fI\*(xI\fP should be read in conjunction with this section.
+.LP
diff --git a/specs/Xaw/Command b/specs/Xaw/Command
new file mode 100644
index 0000000..ec10197
--- /dev/null
+++ b/specs/Xaw/Command
@@ -0,0 +1,205 @@
+.\" $Xorg: Command,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.NH 2
+Command Widget
+.XS
+ Command Widget
+.XE
+.IN "Command widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application header file <X11/Xaw/Command.h>
+.IN "Command.h" ""
+Class header file <X11/Xaw/CommandP.h>
+.IN "CommandP.h" ""
+Class commandWidgetClass
+.IN "commandWidgetClass" ""
+Class Name Command
+.IN "Command widget" "class name"
+Superclass Label
+.sp
+.De
+.LP
+The Command widget is an area, often rectangular, that contains text
+or a graphical image. Command widgets are often referred to as
+``push buttons.'' When the pointer is over a Command widget, the
+widget becomes highlighted by drawing a rectangle around its perimeter.
+This highlighting indicates that the widget is ready for selection.
+When mouse button 1 is pressed, the Command widget indicates that
+it has been selected by reversing its foreground and background colors.
+When the mouse button is released, the Command widget's \fBnotify\fP
+action is invoked, calling all functions on its callback list. If
+the pointer is moved off of the widget before the pointer button is
+released, the widget reverts to its normal foreground and background
+colors, and releasing the pointer button has no effect. This behavior
+allows the user to cancel an action.
+.NH 3
+Resources
+.LP
+When creating a Command widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Command widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+bitmap Bitmap Pixmap None
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+callback Callback XtCallbackList NULL
+colormap Colormap Colormap Parent's Colormap
+cornerRoundPercent CornerRoundPercent Dimension 25
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+encoding Encoding UnsignedChar XawTextEncoding8bit
+font Font XFontStruct XtDefaultFont
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A graphic height + 2 * \fBinternalHeight\fP
+highlightThickness Thickness Dimension A 2 (0 if Shaped)
+insensitiveBorder Insensitive Pixmap GreyPixmap
+internalHeight Height Dimension 2
+internalWidth Width Dimension 4
+international International Boolean C False
+justify Justify Justify XtJustifyCenter (center)
+label Label String name of widget
+leftBitmap LeftBitmap Bitmap None
+mappedWhenManaged MappedWhenManaged Boolean True
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+resize Resize Boolean True
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+shapeStyle ShapeStyle ShapeStyle Rectangle
+translations Translations TranslationTable See below
+width Width Dimension A graphic width + 2 * \fBinternalWidth\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+\" Resource Descriptions
+.Ac
+.As
+.Bg
+.Gp
+.Bm
+.Bc
+.Bp
+.Bw
+.Cb Bold
+.Cm
+.Cr Bold
+.Cu
+.Cn
+.Dp
+.Dc
+.Le
+.Lf
+.Ls
+.Lg
+.Hw
+.Ht Bold
+.Ib
+.Ih
+.In
+.Ju
+.La
+.Ll
+.Mm
+.Pf
+.Pb
+.Re
+.Sc
+.Se
+.Ss Bold
+.Tr
+.Xy
+.NH 3
+Command Actions
+.IN "Command widget" "actions"
+.LP
+The Command widget supports the following actions:
+.IP \(bu 5
+Switching the button's interior between the foreground and background
+colors with \fBset\fP, \fBunset\fP, and \fBreset\fP.
+.IP \(bu 5
+Processing application callbacks with \fBnotify\fP
+.IP \(bu 5
+Switching the internal border between highlighted
+and unhighlighted states with \fBhighlight\fP and \fBunhighlight\fP
+.LP
+.IN "Command widget" "translation bindings"
+The following are the default translation bindings used by the
+Command widget:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <EnterWindow>: highlight(\|)
+ <LeaveWindow>: reset(\|)
+ <Btn1Down>: set(\|)
+ <Btn1Up>: notify(\|) unset(\|)
+.De
+.LP
+The full list of actions supported by Command is:
+.IP \fBhighlight\fP(\fIcondition\fP) 1.5i
+Displays the internal highlight border in the color (\fBforeground\fP
+or \fBbackground\fP ) that contrasts with the interior color of the
+Command widget. The conditions \fBWhenUnset\fP and \fBAlways\fP are
+understood by this action procedure. If no argument is passed,
+\fBWhenUnset\fP is assumed.
+.IP \fBunhighlight\fP(\|) 1.5i
+Displays the internal highlight border in the color (\fBforeground\fP
+or \fBbackground\fP ) that matches the interior color of the
+Command widget.
+.IP \fBset\fP(\|) 1.5i
+Enters the \fIset\fP state, in which \fBnotify\fP is possible. This
+action causes the button to display its interior in the
+\fBforeground\fP color. The label or bitmap is displayed in the
+\fBbackground\fP color.
+.IP \fBunset\fP(\|) 1.5i
+Cancels the \fIset\fP state and displays the interior of the button in the
+\fBbackground\fP color. The label or bitmap is displayed in the
+\fBforeground\fP color.
+.IP \fBreset\fP(\|) 1.5i
+Cancels any \fIset\fP or \fIhighlight\fP and displays the interior of the
+button in the \fBbackground\fP color, with the label or bitmap displayed
+in the \fBforeground\fP color.
+.IP \fBnotify\fP(\|) 1.5i
+When the button is in the \fBset\fP state this action calls all functions in
+the callback list named by the \fBcallback\fP resource. The value of
+the \fIcall_data\fP argument passed to these functions is undefined.
+.LP
+A very common alternative to registering callbacks is to augment a
+Command's translations with an action performing the desired
+function. This often takes the form of:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+*Myapp*save.translations: #augment <Btn1Down>,<Btn1Up>: Save()
+.De
+.LP
+.NT
+When a bitmap of depth greater that one (1) is specified the
+\fIset\fP(), \fIunset\fP(), and \fIreset\fP() actions have no effect,
+since there are no foreground and background colors used in a
+multi-plane pixmap.
+.NE
diff --git a/specs/Xaw/Dialog b/specs/Xaw/Dialog
new file mode 100644
index 0000000..d948e3c
--- /dev/null
+++ b/specs/Xaw/Dialog
@@ -0,0 +1,280 @@
+.\" $Xorg: Dialog,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.NH 2
+Dialog Widget
+.LP
+.XS
+ Dialog Widget
+.XE
+.IN "Dialog widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Dialog.h>
+.IN "Dialog.h" ""
+Class Header file <X11/Xaw/DialogP.h>
+.IN "DialogP.h" ""
+Class dialogWidgetClass
+.IN "dialogWidgetClass" ""
+Class Name Dialog
+.IN "Dialog widget" "class name"
+Superclass Form
+.sp
+.De
+.LP
+The Dialog widget implements a commonly used interaction semantic to
+prompt for auxiliary input from a user. For example, you can use a
+Dialog widget when an application requires a small piece of information,
+such as a filename, from the user. A Dialog widget, which is simply a
+special case of the Form widget, provides a convenient way to create a
+preconfigured form.
+.LP
+The typical Dialog widget contains three areas. The first line
+contains a description of the function of the Dialog widget, for
+example, the string \fIFilename:\fP. The second line contains an area
+into which the user types input. The third line can contain buttons
+that let the user confirm or cancel the Dialog input. Any of these
+areas may be omitted by the application.
+.NH 3
+Resources
+.LP
+When creating a Dialog widget instance, the following resources are
+retrieved from the argument list or the resource database:
+.IN "Dialog widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+children ReadOnly WidgetList R NULL
+colormap Colormap Colormap Parent's Colormap
+defaultDistance Thickness int 4
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+height Height Dimension A Enough space to contain all children
+icon Icon Bitmap None
+label Label String "label"
+mappedWhenManaged MappedWhenManaged Boolean True
+numChildren ReadOnly Cardinal R 0
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+value Value String no value widget
+width Width Dimension A Enough space to contain all children
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Ch
+.Cm
+.Dd
+.Dp
+.Dc
+.Hw
+.IP \fBicon\fP 1.5i
+A pixmap image to be displayed immediately to the left of the
+Dialog widget's label.
+.IP \fBlabel\fP 1.5i
+A string to be displayed at the top of the Dialog widget.
+.Mm
+.Nc
+.Sc
+.Se
+.Tr
+.IP \fBvalue\fP 1.5i
+An initial value for the string field that the user will enter text
+into. By default, no text entry field is available to the user.
+Specifying an initial value for \fBvalue\fP activates the text entry
+field. If string input is desired, but no initial value is to be
+specified then set this resource to "" (empty string).
+.Xy
+.NH 3
+Constraint Resources
+.LP
+.IN "Dialog widget" "constraint resources"
+Each child of the Dialog widget may request special layout resources
+be applied to it. These \fIconstraint\fP resources allow the Dialog
+widget's children to specify individual layout requirements.
+.LP
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+bottom Edge XawEdgeType XawRubber
+fromHoriz Widget Widget NULL (left edge of Dialog)
+fromVert Widget Widget NULL (top edge of Dialog)
+horizDistance Thickness int \fBdefaultDistance\fP resource
+left Edge XawEdgeType XawRubber
+.IN "XawEdgeType" ""
+resizable Boolean Boolean FALSE
+right Edge XawEdgeType XawRubber
+.IN "XawRubber" ""
+top Edge XawEdgeType XawRubber
+vertDistance Thickness int \fBdefaultDistance\fP resource
+.sp 3p
+_
+.TE
+.Bt
+.Fh
+.Hd
+.Rl
+.NH 3
+Layout Semantics
+.IN "Dialog widget" "layout semantics"
+.LP
+.Lt Dialog
+.LP
+.TS H
+lw(1.5i) lw(1i) lw(3i).
+_
+.sp 3p
+.TB
+Edge Type Resource Name Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XawChainBottom ChainBottom Edge remains a fixed distance from bottom of Dialog
+.IN "XawChainBottom" ""
+XawChainLeft ChainLeft Edge remains a fixed distance from left of Dialog
+.IN "XawChainLeft" ""
+XawChainRight ChainRight Edge remains a fixed distance from right of Dialog
+.IN "XawChainRight" ""
+XawChainTop ChainTop Edge remains a fixed distance from top of Dialog
+.IN "XawChainTop" ""
+XawRubber Rubber Edges will move a proportional distance
+.IN "XawRubber" ""
+.sp 3p
+_
+.TE
+.NH 4
+Example
+.LP
+If you wish to force the Dialog to never resize one or more of its children
+then set \fBleft\fP and \fBright\fP to \fBXawChainLeft\fP and
+\fBtop\fP and \fBbottom\fP to \fBXawChainTop\fP. This will cause
+the child to remain a fixed distance from the top and left
+edges of the Dialog, and to never resize.
+.NH 4
+Special Considerations
+.IN "Dialog widget" "special considerations"
+.LP
+The Dialog widget automatically sets the \fBtop\fP and \fBbottom\fP
+resources for all Children that are subclasses of the Command widget,
+as well as the widget children that are used to contain the \fBlabel\fP,
+\fBvalue\fP, and \fBicon\fP. This policy allows the buttons at the
+bottom of the Dialog to interact correctly with the predefined children,
+and makes it possible for a client to simply create and manage a new
+Command button without having to specify its constraints.
+.LP
+The Dialog will also set \fBfromLeft\fP to the last button in the
+.IN "fromLeft" ""
+Dialog for each new button added to the Dialog widget.
+.LP
+The automatically added constraints cannot be overridden, as they are
+policy decisions of the Dialog widget. If a more flexible Dialog is
+desired, the application is free to use the Form widget to create its
+own Dialog policy.
+.NH 3
+Automatically Created Children.
+.IN "Dialog widget" "automatically created children"
+.LP
+The Dialog uses Label widgets to contain the \fBlabel\fP and \fBicon\fP.
+These widgets are named \fIlabel\fP and \fIicon\fP respectively. The
+Dialog \fBvalue\fP is contained in an AsciiText widget whose name is
+\fIvalue\fP. Using \fBXtNameToWidget\fP the application can change
+.IN "XtNameToWidget" ""
+those resources associated with each of these widgets that are not
+available through the Dialog widget itself.
+.LP
+.NH 3
+Convenience Routines
+.LP
+To return the character string in the text field, use
+.PN XawDialogGetValueString .
+.IN "XawDialogGetValueString" "" "@DEF@"
+.FD 0
+String XawDialogGetValueString(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Dialog widget.
+.LP
+This function returns a copy of the value string of the Dialog
+widget. This string is allocated by the AsciiText widget and will
+remain valid and unchanged until another call to
+\fBXawDialogGetValueString\fP or an \fBXtGetValues\fP call on the
+\fBvalue\fP widget, when the string will be automatically freed, and
+a new string is returned. This string may be freed earlier by calling
+the function \fBXawAsciiSourceFreeString\fP.
+.IN "XawAsciiSourceFreeString" ""
+.LP
+.sp
+To add a new button to the Dialog widget use
+\fBXawDialogAddButton\fP.
+.IN "XawDialogAddButton" "" "@DEF@"
+.FD 0
+void XawDialogAddButton(\fIw\fP, \fIname\fP, \fIfunc\fP, \fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIname\fP;
+.br
+ XtCallbackProc \fIfunc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Dialog widget.
+.IP \fIname\fP 1i
+Specifies the name of the new Command button to be added to the Dialog.
+.IP \fIfunc\fP 1i
+Specifies a callback function to be called when this button is activated. If
+NULL is specified then no callback is added.
+.IP \fIclient_data\fP 1i
+Specifies the client_data to be passed to the \fIfunc\fP.
+.LP
+This function is merely a shorthand for the code sequence:
+.sp
+.Ds 0
+.SM
+.TA 1i 2i
+.ta 1i 2i
+{
+ Widget button = XtCreateManagedWidget(name, commandWidgetClass, w, NULL, ZERO);
+ XtAddCallback(button, XtNcallback, func, client_data);
+}
+.NL
+.De
+.sp
diff --git a/specs/Xaw/Form b/specs/Xaw/Form
new file mode 100644
index 0000000..1a89d80
--- /dev/null
+++ b/specs/Xaw/Form
@@ -0,0 +1,200 @@
+.\" $Xorg: Form,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.NH 2
+Form Widget
+.LP
+.XS
+ Form Widget
+.XE
+.IN "Form widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Form.h>
+.IN "Form.h" ""
+Class Header file <X11/Xaw/FormP.h>
+.IN "FormP.h" ""
+Class formWidgetClass
+.IN "formWidgetClass" ""
+Class Name Form
+.IN "Form widget" "class name"
+Superclass Constraint
+.sp
+.De
+.LP
+The Form widget can contain an arbitrary number of children or
+subwidgets. The Form provides geometry management for its children,
+which allows individual control of the position of each child. Any
+combination of children can be added to a Form. The initial positions
+of the children may be computed relative to the positions of previously
+created children. When the Form is resized, it computes new positions and
+sizes for its children. This computation is based upon information
+provided when a child is added to the Form.
+.LP
+The default width of the Form is the minimum width needed to
+enclose the children after computing their initial layout, with a
+margin of \fBdefaultDistance\fP
+at the right and bottom edges. If a width and height is assigned
+to the Form that is too small for the layout, the children will
+be clipped by the right and bottom edges of the Form.
+.NH 3
+Resources
+.LP
+When creating an Form widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Form widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+children ReadOnly WidgetList R NULL
+colormap Colormap Colormap Parent's Colormap
+defaultDistance Thickness int 4
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+height Height Dimension A Enough space to contain all children
+mappedWhenManaged MappedWhenManaged Boolean True
+numChildren ReadOnly Cardinal R 0
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+width Width Dimension A Enough space to contain all children
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Ch
+.Cm
+.Dd Bold
+.Dp
+.Dc
+.Hw
+.Mm
+.Nc
+.Sc
+.Se
+.Tr
+.Xy
+.NH 3
+Constraint Resources
+.LP
+.IN "Form widget" "constraint resources"
+Each child of the Form widget may request special layout resources
+be applied to it. These \fIconstraint\fP resources allow the Form
+widget's children to specify individual layout requirements.
+.LP
+.LP
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+bottom Edge XawEdgeType XawRubber
+fromHoriz Widget Widget NULL (left edge of Form)
+fromVert Widget Widget NULL (top edge of Form)
+horizDistance Thickness int \fBdefaultDistance\fP resource
+left Edge XawEdgeType XawRubber
+.IN "XawEdgeType" ""
+resizable Boolean Boolean FALSE
+right Edge XawEdgeType XawRubber
+.IN "XawRubber" ""
+top Edge XawEdgeType XawRubber
+vertDistance Thickness int \fBdefaultDistance\fP resource
+.sp 3p
+_
+.TE
+.Bt Bold
+.Fh Bold
+.Hd Bold
+.Rl Bold
+.NH 3
+Layout Semantics
+.LP
+.Lt Form
+.LP
+.TS H
+lw(1.5i) lw(1i) lw(3i).
+_
+.sp 3p
+.TB
+Edge Type Resource Name Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XawChainBottom ChainBottom Edge remains a fixed distance from bottom of Form
+.IN "XawChainBottom" ""
+XawChainLeft ChainLeft Edge remains a fixed distance from left of Form
+.IN "XawChainLeft" ""
+XawChainRight ChainRight Edge remains a fixed distance from right of Form
+.IN "XawChainRight" ""
+XawChainTop ChainTop Edge remains a fixed distance from top of Form
+.IN "XawChainTop" ""
+XawRubber Rubber Edges will move a proportional distance
+.IN "XawRubber" ""
+.sp 3p
+_
+.TE
+.NH 4
+Example
+.LP
+If you wish to force the Form to never resize one or more of its
+children, then set \fBleft\fP and \fBright\fP to \fBXawChainLeft\fP and
+\fBtop\fP and \fBbottom\fP to \fBXawChainTop\fP. This will cause the
+child to remain a fixed distance from the top and left edges of the
+Form, and never to resize.
+.NH 3
+Convenience Routines
+.LP
+To force or defer a re-layout of the Form, use
+.PN XawFormDoLayout .
+.IN "Form widget" "re-layout"
+.IN "XawFormDoLayout" "" "@DEF@"
+.FD 0
+void XawFormDoLayout(\fIw\fP, \fIdo_layout\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIdo_layout\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Form widget.
+.IP \fIdo_layout\fP 1i
+Specifies whether the layout of the Form widget is enabled (\fBTrue\fP)
+or disabled (\fBFalse\fP).
+.LP
+When making several changes to the children of a Form widget
+after the Form has been realized, it is a good idea to disable
+relayout until after all changes have been made.
+
diff --git a/specs/Xaw/Grip b/specs/Xaw/Grip
new file mode 100644
index 0000000..cdbcb0e
--- /dev/null
+++ b/specs/Xaw/Grip
@@ -0,0 +1,157 @@
+.\" $Xorg: Grip,v 1.3 2000/08/17 19:42:26 cpqbld Exp $
+.NH 2
+Grip Widget
+.XS
+ Grip Widget
+.XE
+.IN "Grip widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application header file <X11/Xaw/Grip.h>
+.IN "Grip.h" ""
+Class header file <X11/Xaw/GripP.h>
+.IN "GripP.h" ""
+Class gripWidgetClass
+.IN "gripWidgetClass" ""
+Class Name Grip
+.IN "Grip widget" "class name"
+Superclass Simple
+.sp
+.De
+.LP
+The Grip widget provides a small rectangular region in which user input
+events (such as ButtonPress or ButtonRelease) may be handled. The most
+common use for the Grip widget is as an attachment point for visually
+repositioning an object, such as the pane border in a Paned widget.
+.NH 3
+Resources
+.LP
+When creating a Grip widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Grip widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 0
+callback Callback Callback NULL
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension 8
+insensitiveBorder Insensitive Pixmap GreyPixmap
+international International Boolean C False
+mappedWhenManaged MappedWhenManaged Boolean True
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+width Width Dimension 8
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.IP \fBcallback\fP 1.5i
+All routines on this list are called whenever the \fBGripAction\fP
+action routine is invoked. The \fIcall_data\fP contains all
+information passed to the action routine. A detailed description
+is given below in the \fBGrip Actions\fP section.
+.Cm
+.Cu
+.Cn
+.Dp
+.Dc
+.IP \fBforeground\fP 1.5i
+A pixel value which indexes the widget's colormap to derive the color
+used to flood fill the entire Grip widget.
+.Hw
+.Ib
+.Ix
+.Mm
+.Pf
+.Pb
+.Sc
+.Se
+.Tr
+.Xy
+.NH 3
+Grip Actions
+.IN "Grip widget" "actions"
+.LP
+The Grip widget does not declare any default event translation bindings,
+but it does declare a single action routine named \fBGripAction\fP. The
+.IN "Grip widget" "GripAction routine"
+client specifies an arbitrary event translation table, optionally giving
+parameters to the \fBGripAction\fP routine.
+.LP
+The \fBGripAction\fP routine executes the callbacks on the
+\fBcallback\fP list, passing as \fIcall_data\fP a pointer to a
+\fBXawGripCallData\fP structure, defined in the Grip widget's application
+header file.
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+.IN "XawGripCallData" "" "@DEF@"
+.IN "XawGripCallDataRec" "" "@DEF@"
+.sp
+typedef struct _XawGripCallData {
+ XEvent *event;
+ String *params;
+ Cardinal num_params;
+} XawGripCallDataRec, *XawGripCallData,
+ GripCallDataRec, *GripCallData; /* supported for R4 compatibility */
+.IN "XawGripCallDataRec" ""
+.IN "XawGripCallData" ""
+.IN "GripCallData" ""
+.sp
+.De
+.LP
+In this structure, the \fIevent\fP is a pointer to the input event that
+triggered the action. \fIparams\fP and \fInum_params\fP give the string
+parameters specified in the translation table for the particular event
+binding.
+.IN "Grip widget" "GripAction table"
+.LP
+The following is an example of a translation table that uses the GripAction:
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+.sp
+ <Btn1Down>: GripAction(press)
+ <Btn1Motion>: GripAction(move)
+ <Btn1Up>: GripAction(release)
+.sp
+.De
+For a complete description of the format of translation tables, see the
+\fI\*(xT\fP.
diff --git a/specs/Xaw/Label b/specs/Xaw/Label
new file mode 100644
index 0000000..5c3a92d
--- /dev/null
+++ b/specs/Xaw/Label
@@ -0,0 +1,122 @@
+.\" $Xorg: Label,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+Label Widget
+.XS
+ Label Widget
+.XE
+.IN "Label widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application header file <X11/Xaw/Label.h>
+.IN "Label.h" ""
+Class header file <X11/Xaw/LabelP.h>
+.IN "LabelP.h" ""
+Class labelWidgetClass
+.IN "labelWidgetClass" ""
+Class Name Label
+.IN "Label widget" "class name"
+Superclass Simple
+.sp
+.De
+.LP
+A Label widget holds a graphic displayed within a
+rectangular region of the screen. The graphic may be a
+text string containing multiple lines of characters in an
+8 bit or 16 bit character set (to be displayed with a
+\fIfont\fP), or in a multi-byte encoding (for use with a
+\fIfontset\fP). The graphic may also be a bitmap or
+pixmap. The Label widget will allow its graphic to be
+left, right, or center justified. Normally, this widget
+can be neither selected nor directly edited by the user.
+It is intended for use as an output device only.
+.NH 3
+Resources
+.LP
+When creating a Label widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Label widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+bitmap Bitmap Pixmap None
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+encoding Encoding UnsignedChar XawTextEncoding8bit
+font Font XFontStruct XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A graphic height + 2 * \fBinternalHeight\fP
+insensitiveBorder Insensitive Pixmap GreyPixmap
+internalHeight Height Dimension 2
+internalWidth Width Dimension 4
+international International Boolean C False
+justify Justify Justify XtJustifyCenter (center)
+label Label String name of widget
+leftBitmap LeftBitmap Bitmap None
+mappedWhenManaged MappedWhenManaged Boolean True
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+resize Resize Boolean True
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable See above
+width Width Dimension A graphic width + 2 * \fBinternalWidth\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bm Bold
+.Bc
+.Bp
+.Bw
+.Cm
+.Cu
+.Cn
+.Dp
+.Dc
+.Le Bold
+.Lf Bold
+.Ls Bold
+.Lg Bold
+.Hw
+.Ib
+.Ih Bold
+.In
+.Ju Bold
+.La Bold
+.Ll Bold
+.Mm
+.Pf
+.Pb
+.Re Bold
+.Sc
+.Se
+.Tr
+.Xy
diff --git a/specs/Xaw/List b/specs/Xaw/List
new file mode 100644
index 0000000..562ecbd
--- /dev/null
+++ b/specs/Xaw/List
@@ -0,0 +1,341 @@
+.\" $Xorg: List,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+List Widget
+.LP
+.XS
+ List Widget
+.XE
+.IN "List widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application header file <X11/Xaw/List.h>
+.IN "List.h" ""
+Class header file <X11/Xaw/ListP.h>
+.IN "ListP.h" ""
+Class listWidgetClass
+.IN "listWidgetClass" ""
+Class Name List
+.IN "List widget" "class name"
+Superclass Simple
+.sp
+.De
+.LP
+
+The List widget contains a list of strings formatted into rows and
+columns. When one of the strings is selected, it is highlighted, and the
+List widget's \fBNotify\fP action is invoked, calling all routines on
+its callback list. Only one string may be selected at a time.
+.NH 3
+Resources
+.LP
+When creating a List widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "List widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+callback Callback Callback NULL
+colormap Colormap Colormap Parent's Colormap
+columnSpacing Spacing Dimension 6
+cursor Cursor Cursor XC_left_ptr
+cursorName Cursor String NULL
+defaultColumns Columns int 2
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+font Font FontStruct XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+forceColumns Columns Boolean False
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A Enough space to contain the list
+insensitiveBorder Insensitive Pixmap GreyPixmap
+internalHeight Height Dimension 2
+internalWidth Width Dimension 4
+international International Boolean C False
+list List Pointer name of widget
+longest Longest int A 0
+mappedWhenManaged MappedWhenManaged Boolean True
+numberStrings NumberStrings int A computed for NULL terminated list
+pasteBuffer Boolean Boolean False
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+rowSpacing Spacing Dimension 2
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable See below
+verticalList Boolean Boolean False
+width Width Dimension A Enough space to contain the list
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.IP \fBcallback\fP 1.5i
+All functions on this list are called whenever the \fBnotify\fP action is
+invoked. The \fIcall_data\fP argument contains information about the element
+selected and is described in detail in the \fBList Callbacks\fP section.
+.Cm
+.IP \fBcolumnSpacing\fP 1.5i
+.br
+.ns
+.IP \fBrowSpacing\fP 1.5i
+The amount of space, in pixels, between each of the rows and columns
+in the list.
+.Cu
+.Cn
+.IP \fBdefaultColumns\fP 1.5i
+The default number of columns. This value is used when neither the
+width nor the height of the List widget is specified or when
+\fBforceColumns\fP is \fBTrue\fP.
+.Dp
+.Dc
+.IP \fBfont\fP
+The text font to use when displaying the \fBlist\fP, when the
+\fBinternational\fP resource is \fBfalse\fP.
+.IP \fBfontSet\fP
+The text font set to use when displaying the \fBlist\fP, when the
+\fBinternational\fP resource is \fBtrue\fP.
+.IP \fBforceColumns\fP
+Forces the default number of columns to be used regardless of the
+List widget's current size.
+.IP \fBforeground\fP 1.5i
+A pixel value which indexes the widget's colormap to derive the color
+used to paint the text of the list elements.
+.Hw
+.Ib
+.IP \fPinternalHeight\fP 1.5i
+.br
+.ns
+.IP \fPinternalWidth\fP 1.5i
+The margin, in pixels, between the edges of the list and the
+corresponding edge of the List widget's window.
+.IP \fBlist\fP 1.5i
+An array of text strings displayed in the List widget. If
+\fBnumberStrings\fP is zero (the default) then the \fBlist\fP must be
+NULL terminated. If a value is not specified for the \fBlist\fP, then
+\fBnumberStrings\fP is set to 1, and the name of the widget is used as
+the \fBlist\fP, and \fBlongest\fP is set to the length of the name of the
+widget. The \fBlist\fP is used in place, and must be available
+to the List widget for the lifetime of this widget, or until it is
+changed with \fBXtSetValues\fP or \fBXawListChange\fP.
+.In
+.IP \fBlongest\fP
+Specifies the width, in pixels, of the longest string in the current
+list. The List widget will compute this value if zero (the default)
+is specified. If this resource is set by hand, entries longer than this
+will be clipped to fit.
+.Mm
+.IP \fBnumberStrings\fP 1.5i
+The number of strings in the current list. If a value of zero (the
+default) is specified, the List widget will compute it. When computing
+the number of strings the List widget assumes that the \fBlist\fP is NULL
+terminated.
+.IP \fBpasteBuffer\fP 1.5i
+If this resource is set to \fBTrue\fP then the name of the currently
+selected list element will be put into \fBCUT_BUFFER_0\fP.
+.Pf
+.Pb
+.Sc
+.Se
+.Tr
+.IP \fBverticalList\fP 1.5i
+If this resource is set to \fBTrue\fP then the list elements will be
+presented in column major order.
+.Xy
+.NH 3
+List Actions
+.IN "List widget" "actions"
+.LP
+The List widget supports the following actions:
+.IP \(bu 5
+Highlighting and unhighlighting the list element under the
+pointer with \fBSet\fP and \fBUnset\fP
+.IP \(bu 5
+Processing application callbacks with \fBNotify\fP
+.LP
+The following is the default translation table used by the List Widget:
+.IN "List widget" "default translation table"
+.LP
+.Ds
+.TA .5i 2.25i
+.ta .5i 2.25i
+<Btn1Down>,<Btn1Up>: Set(\|) Notify(\|)
+.sp
+.De
+.LP
+The full list of actions supported by List widget is:
+.IP \fBSet\fP(\|) 1.5i
+\fISets\fP the list element that is currently under the pointer. To
+inform the user that this element is currently set, it is drawn with
+foreground and background colors reversed. If this action is called when
+there is no list element under the cursor, the currently \fIset\fP
+element will be \fIunset\fP.
+.IP \fBUnset\fP(\|) 1.5i
+Cancels the \fIset\fP state of the element under the pointer,
+and redraws it with normal foreground and background colors.
+.IP \fBNotify\fP(\|) 1.5i
+Calls all callbacks on the List widget's callback list. Information
+about the currently selected list element is passed in the
+\fIcall_data\fP argument (see \fBList Callbacks\fP below).
+.NH 3
+List Callbacks
+.IN "List widget" "callbacks"
+.LP
+All procedures on the List widget's callback list will have a
+\fBXawListReturnStruct\fP passed to them as \fIcall_data\fP. The
+structure is defined in the List widget's application header file.
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+.IN "XawListReturnStruct" "" "@DEF@"
+typedef struct _XawListReturnStruct {
+ String string; /* string shown in the list. */
+ int list_index; /* index of the item selected. */
+} XawListReturnStruct;
+.IN "XawListReturnStruct" ""
+.NT
+The \fIlist_index\fP item used to be called simply \fIindex\fP.
+Unfortunately, this name collided with a global name defined on some
+operating systems, and had to be changed.
+.NE
+.De
+.NH 3
+Changing the List
+.LP
+To change the list that is displayed, use
+.PN XawListChange .
+.IN "XawListChange" "" "@DEF@"
+.FD 0
+void XawListChange(\fIw\fP, \fIlist\fP, \fInitems\fP, \fIlongest\fP, \fIresize\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String * \fIlist\fP;
+.br
+ int \fInitems\fP, \fIlongest\fP;
+.br
+ Boolean \fIresize\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the List widget.
+.IP \fIlist\fP 1i
+Specifies the new list for the List widget to display.
+.IP \fInitems\fP 1i
+Specifies the number of items in the \fIlist\fP. If a value less than 1
+is specified, \fIlist\fP must be NULL terminated, and the number of
+items will be calculated by the List widget.
+.IP \fIlongest\fP 1i
+Specifies the length of the longest item in the \fIlist\fP in pixels.
+If a value less than 1 is specified, the List widget will calculate the
+value.
+.IP \fIresize\fP 1i
+Specifies a Boolean value that if \fBTrue\fP indicates that the
+List widget should try to resize itself after making the change.
+The constraints of the List widget's parent are always enforced,
+regardless of the value specified here.
+.LP
+.PN XawListChange
+will \fIunset\fP all list elements that are currently \fBset\fP before
+the list is actually changed. The \fIlist\fP is used in place, and must
+remain usable for the lifetime of the List widget, or until \fIlist\fP
+has been changed again with this function or with \fBXtSetValues\fP.
+.NH 3
+Highlighting an Item
+.LP
+To highlight an item in the list, use
+.PN XawListHighlight .
+.IN "XawListHighlight" "" "@DEF@"
+.FD 0
+void XawListHighlight(\fIw\fP, \fIitem\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fIitem\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the List widget.
+.IP \fIitem\fP 1i
+Specifies an index into the current list that indicates the item to be
+highlighted.
+.LP
+Only one item can be highlighted at a time.
+If an item is already highlighted when
+.PN XawListHighlight
+is called,
+the highlighted item is unhighlighted before the new item is highlighted.
+.NH 3
+Unhighlighting an Item
+.LP
+To unhighlight the currently highlighted item in the list, use
+.PN XawListUnhighlight .
+.IN "XawListUnhighlight" "" "@DEF@"
+.FD 0
+void XawListUnhighlight(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the List widget.
+.NH 3
+Retrieving the Currently Selected Item
+.LP
+To retrieve the list element that is currently \fIset\fP, use
+.PN XawListShowCurrent .
+.IN "XawListShowCurrent" "" "@DEF@"
+.FD 0
+XawListReturnStruct *XawListShowCurrent(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the List widget.
+.LP
+.PN XawListShowCurrent
+returns a pointer to an
+.PN XawListReturnStruct
+structure,
+containing the currently highlighted item.
+If the value of the index member is XAW_LIST_NONE,
+.IN "XAW_LIST_NONE"
+the string member is undefined, and no item is currently selected.
+.NH 3
+Restrictions
+.LP
+Many programmers create a ``scrolled list'' by putting a List
+widget with many entries as a child of a Viewport widget. The
+List continues to create a window as big as its contents, but
+that big window is only visible where it intersects the parent
+Viewport's window. (I.e., it is ``clipped.'')
+.LP
+While this is a useful technique, there is a serious drawback.
+X does not support windows above 32,767 pixels in width or
+height, but this height limit will be exceeded by a List's
+window when the List has many entries (i.e., with a 12 point
+font, about 3000 entries would be too many.)
+.LP
diff --git a/specs/Xaw/MenuButton b/specs/Xaw/MenuButton
new file mode 100644
index 0000000..e89925a
--- /dev/null
+++ b/specs/Xaw/MenuButton
@@ -0,0 +1,215 @@
+.\" $Xorg: MenuButton,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+MenuButton Widget
+.XS
+ MenuButton Widget
+.XE
+.IN "MenuButton widget" "" "@DEF@"
+.sp
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/MenuButton.h>
+.IN "MenuButton.h" ""
+Class Header file <X11/Xaw/MenuButtonP.h>
+.IN "MenuButtonP.h" ""
+Class menuButtonWidgetClass
+.IN "menuButtonWidgetClass" ""
+Class Name MenuButton
+.IN "MenuButton widget" "class name"
+Superclass Command
+.De
+.LP
+.sp
+The MenuButton widget is an area, often rectangular,
+that displays a graphic. The graphic may be a text
+string containing multiple lines of characters in an 8
+bit or 16 bit character set (to be displayed with a
+\fIfont\fP), or in a multi-byte encoding (for use with
+a \fIfontset\fP). The graphic may also be a bitmap or
+pixmap.
+.LP
+When the pointer cursor is on a MenuButton widget, the
+MenuButton becomes highlighted by drawing a rectangle
+around its perimeter. This highlighting indicates
+that the MenuButton is ready for selection. When a
+pointer button is pressed, the MenuButton widget will
+pop up the menu named in the \fBmenuName\fP resource.
+.NH 3
+Resources
+.LP
+When creating a MenuButton widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.LP
+.IN "MenuButton widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+bitmap Bitmap Pixmap None
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+callback Callback XtCallbackList NULL
+colormap Colormap Colormap Parent's Colormap
+cornerRoundPercent CornerRoundPercent Dimension 25
+cursor Cursor Cursor None
+cursorName Cursor String None
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+encoding Encoding UnsignedChar XawTextEncoding8bit
+font Font XFontStruct XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A graphic height + 2 * \fBinternalHeight\fP
+highlightThickness Thickness Dimension A 2 (0 if Shaped)
+insensitiveBorder Insensitive Pixmap GreyPixmap
+internalHeight Height Dimension 2
+internalWidth Width Dimension 4
+international International Boolean C False
+justify Justify Justify XtJustifyCenter (center)
+label Label String name of widget
+leftBitmap LeftBitmap Bitmap None
+mappedWhenManaged MappedWhenManaged Boolean True
+menuName MenuName String "menu"
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+resize Resize Boolean True
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+shapeStype ShapeStyle ShapeStyle Rectangle
+translations Translations TranslationTable See below
+width Width Dimension A graphic width + 2 * \fBinternalWidth\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bm
+.Bc
+.Bp
+.Bw
+.Cb
+.Cm
+.Cr
+.Cu
+.Cn
+.Dp
+.Dc
+.Lf
+.Ls
+.Lg
+.Hw
+.Ht
+.Ib
+.Ih
+.In
+.Ju
+.La
+.Mm
+.IP \fBmenuName\fP 1.5i
+The name of a popup shell to popup as a menu. The MenuButton
+will search for this name using \fBXtNameToWidget\fP starting
+with itself as the reference widget. If the search is
+unsuccessful the widget will continue up the widget tree using
+each of its ancestors as the reference widget passed to
+\fBXtNameToWidget\fP. If no widget of called \fBmenuName\fP is
+found by this algorithm, the widget will print a warning message
+and give up. When the menu is found it will be popped up
+exclusive and spring_loaded. The MenuButton widget does not
+copy the value of this resource into newly allocated memory. The
+application programmer must pass the resource value in
+nonvolatile memory.
+.Pf
+.Pb
+.Re
+.Sc
+.Se
+.Ss
+.Tr
+.Xy
+.NH 3
+MenuButton Actions
+.IN "MenuButton widget" "actions"
+.LP
+The MenuButton widget supports the following actions:
+.IP \(bu 5
+Switching the button between the foreground and background
+colors with \fBset\fP and \fBunset\fP
+.IP \(bu 5
+Processing application callbacks with \fBnotify\fP
+.IP \(bu 5
+Switching the internal border between highlighted
+and unhighlighted states with \fBhighlight\fP and \fBunhighlight\fP
+.IP \(bu 5
+Popping up a menu with \fBPopupMenu\fP
+.LP
+The following are the default translation bindings used by the
+MenuButton widget:
+.LP
+.sp
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <EnterWindow>: highlight(\|)
+ <LeaveWindow>: reset(\|)
+ <BtnDown>: reset(\|) PopupMenu(\)
+.De
+.NH 3
+MenuButton Actions
+.LP
+The full list of actions supported by MenuButton is:
+.IP \fBhighlight\fP(\fIcondition\fP) 1.5i
+Displays the internal highlight border in the color (\fBforeground\fP
+or \fBbackground\fP ) that contrasts with the interior color of the
+Command widget. The conditions \fBWhenUnset\fP and \fBAlways\fP are
+understood by this action procedure. If no argument is passed,
+\fBWhenUnset\fP is assumed.
+.IP \fBunhighlight\fP(\|) 1.5i
+Displays the internal highlight border in the color (\fBXtNforeground\fP
+or \fBbackground\fP ) that matches the interior color of the
+MenuButton widget.
+.IP \fBset\fP(\|) 1.5i
+Enters the \fIset\fP state, in which \fBnotify\fP is possible. This
+action causes the button to display its interior in the
+\fBforeground\fP color. The label or bitmap is displayed in the
+\fBbackground\fP color.
+.IP \fBunset\fP(\|) 1.5i
+Cancels the \fIset\fP state and displays the interior of the button in the
+\fBbackground\fP color. The label or bitmap is displayed in the
+\fBforeground\fP color.
+.IP \fBreset\fP(\|) 1.5i
+Cancels any \fBset\fP or \fBhighlight\fP and displays the interior of the
+button in the \fBbackground\fP color, with the label displayed in the
+\fBforeground\fP color.
+.IP \fBnotify\fP(\|) 1.5i
+When the button is in the \fBset\fP state this action calls all functions in
+the callback list named by the \fBcallback\fP resource. The value of
+the call_data argument in these callback functions is undefined.
+.IP \fBPopupMenu\fP(\|) 1.5i
+Pops up the menu specified by the \fBmenuName\fP resource.
+.LP
+The MenuButton widget does not place a server grab on itself.
+Instead, PopupMenu is registered as a grab action.
+As a result, clients which popup menus without using XtMenuPopup
+or MenuPopup or PopupMenu in translations will fail to have a grab active.
+They should make a call to XtRegisterGrabAction on the appropriate action
+in the application initialization routine, or use a different translation.
+.bp
diff --git a/specs/Xaw/Paned b/specs/Xaw/Paned
new file mode 100644
index 0000000..eaa2b8d
--- /dev/null
+++ b/specs/Xaw/Paned
@@ -0,0 +1,492 @@
+.\" $Xorg: Paned,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+Paned Widget
+.LP
+.XS
+ Paned Widget
+.XE
+.IN "Paned widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Paned.h>
+.IN "Paned.h" ""
+Class Header file <X11/Xaw/PanedP.h>
+.IN "PanedP.h" ""
+Class panedWidgetClass
+.IN "panedWidgetClass" ""
+Class Name Paned
+.IN "Paned widget" "class name"
+Superclass Constraint
+.sp
+.De
+.LP
+The Paned widget manages children in a vertically or horizontally
+tiled fashion. The panes may be dynamically resized by the user by
+using the \fIgrips\fP that appear near the right or bottom edge of the
+border between two panes.
+.LP
+The Paned widget may accept any widget class as a pane \fBexcept\fP
+Grip. Grip widgets have a special meaning for the Paned widget, and
+adding a Grip as its own pane will confuse the Paned widget.
+.NH 3
+Using the Paned Widget
+.IN "Paned widget" "using"
+.LP
+The grips allow the panes to be resized by the user. The semantics of
+how these panes resize is somewhat complicated, and warrants further
+explanation here. When the mouse pointer is positioned on a grip and
+pressed, an arrow is displayed that indicates the pane that is to be to
+be resized. While keeping the mouse button down, the user can move the
+grip up and down (or left and right). This, in turn, changes the size
+of the pane. The size of the Paned widget will not change. Instead,
+it chooses another pane (or panes) to resize. For more details on which
+pane it chooses to resize, see \fBLayout Semantics\fP.
+.LP
+One pointer binding allows the border between two panes to be moved,
+without affecting any of the other panes. When this occurs the pointer
+will change to an arrow that points along the pane border.
+.LP
+The default bindings for the Paned widget's grips are:
+.TS H
+lw(1i) lw(2i) lw(2i).
+_
+.sp 3p
+.TB
+Mouse button Pane to Resize - Vertical Pane to Resize - Horizontal
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+1 (left) above the grip left of the grip
+2 (middle) adjust border adjust border
+3 (right) below the grip right of the grip
+.sp 3p
+_
+.TE
+.NH 3
+Resources
+.LP
+When creating a Paned widget instance, the following resources are
+retrieved from the argument list or the resource database:
+.LP
+.IN "Paned widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.4i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+betweenCursor Cursor Cursor A Depends on orientation
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+children ReadOnly WidgetList R NULL
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor None
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+gripCursor Cursor Cursor A Depends on orientation
+gripIndent GripIndent Position 10
+gripTranslations Translations TranslationTable see below
+height Height Dimension A Depends on orientation
+horizontalBetweenCursor Cursor Cursor sb_up_arrow
+horizontalGripCursor Cursor Cursor sb_h_double_arrow
+internalBorderColor BorderColor Pixel XtDefaultForeground
+internalBorderWidth BorderWidth Dimension 1
+leftCursor Cursor Cursor sb_left_arrow
+lowerCursor Cursor Cursor sb_down_arrow
+mappedWhenManaged MappedWhenManaged Boolean True
+numChildren ReadOnly Cardinal R 0
+orientation Orientation Orientation XtorientVertical
+refigureMode Boolean Boolean True
+rightCursor Cursor Cursor sb_right_arrow
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+upperCursor Cursor Cursor sb_up_arrow
+verticalBetweenCursor Cursor Cursor sb_left_arrow
+verticalGripCursor Cursor Cursor sb_v_double_arrow
+width Width Dimension A Depends on orientation
+x Paned Position 0
+y Paned Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Ch
+.Cm
+.IP \fBcursor\fP 1.5i
+The cursor to use when the mouse pointer is over the Paned widget, but
+not in any of its children (children may also inherit this cursor). It
+should be noted that the internal borders are actually part of the Paned
+widget, not the children.
+.Dp
+.Dc
+.IP \fBgripCursor\fP 1.5i
+The cursor to use when the grips are not active. The default value is
+\fBverticalGripCursor\fP or \fBhorizontalGripCursor\fP depending on
+the orientation of the Paned widget.
+.IP \fBgripIndent\fP 1.5i
+The amount of space left between the right (or bottom) edge of the
+Paned widget and all the grips.
+.IP \fBgripTranslation\fP 1.5i
+Translation table that will be applied to all grips.
+.Hw
+.IP \fBhorizontalBetweenCursor\fP 1.5i
+.br
+.ns
+.IP \fBverticalBetweenCursor\fP 1.5i
+The cursor to be used for the grip when changing the boundary between
+two panes. These resources allow the cursors to be different
+depending on the orientation of the Paned widget.
+.IP \fBhorizontalGripCursor\fP 1.5i
+.br
+.ns
+.IP \fBverticalGripCursor\fP 1.5i
+The cursor to be used for the grips when they are not active. These
+resources allow the cursors to be different depending on the
+orientation of the Paned widget.
+.IP \fBinternalBorderColor\fP 1.5i
+A pixel value which indexes the widget's colormap to derive the internal
+border color of the widget's window. The class name of this resource
+allows \fIPaned*BorderColor: blue\fP to set the internal border color
+for the Paned widget. An optimization is invoked if
+\fBinternalBorderColor\fP and \fBbackground\fP are the same, and the
+internal borders are not drawn. \fBinternalBorderWidth\fP is still left
+between the panes, however.
+.IP \fBinternalBorderWidth\fP 1.5i
+The width of the internal borders. This is the amount of space left
+between the panes. The class name of this resource allows
+\fIPaned*BorderWidth: 3\fP to set the internal border width for the
+Paned widget.
+.IP \fBleftCursor\fP 1.5i
+.br
+.ns
+.IP \fBrightCursor\fP 1.5i
+The cursor used to indicate which is the \fIimportant\fP pane to resize
+when the Paned widget is oriented horizontally.
+.IP \fBlowerCursor\fP 1.5i
+.br
+.ns
+.IP \fBupperCursor\fP 1.5i
+The cursor used to indicate which is the \fIimportant\fP pane to resize
+when the Paned widget is oriented vertically.
+.Mm
+.Nc
+This is not the same as the number of panes, since this also contains a
+grip for some of the panes, use \fBXawPanedGetNumSub\fP to retrieve the
+number of panes.
+.IP \fBorientation\fP 1.5i
+The orientation to stack the panes. This value can be either
+\fBXtorientVertical\fP or \fBXtorientHorizontal\fP.
+.IN "XtorientVertical" ""
+.IN "XtorientHorizontal" ""
+.IN "conversions" "Orientation"
+.Rs "vertical \fPand\fB horizontal"
+.IP \fBrefigureMode\fP 1.5i
+This resource allows pane layout to be suspended. If this value is
+\fBFalse\fP, then no layout actions will be taken. This may improve
+efficiency when adding or removing more than one pane from the Paned
+widget.
+.Sc
+.Se
+.Tr
+.Xy
+.NH 3
+Constraint Resources
+.LP
+.IN "Paned widget" "constraint resources"
+Each child of the Paned widget may request special layout resources
+be applied to it. These \fIconstraint\fP resources allow the Paned
+widget's children to specify individual layout requirements.
+.LP
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+allowResize Boolean Boolean False
+max Max Dimension Infinity
+min Min Dimension Height of Grips
+preferredPaneSize PreferredPaneSize Dimension ask child
+resizeToPreferred Boolean Boolean False
+showGrip ShowGrip Boolean True
+skipAdjust Boolean Boolean False
+.sp 3p
+_
+.TE
+.IP \fBallowResize\fP 1.5i
+If this value is \fBFalse\fP the the Paned widget will disallow all
+geometry requests from this child.
+.IP \fBmax\fP 1.5i
+.br
+.ns
+.IP \fBmin\fP 1.5i
+The absolute maximum or minimum size for this pane. These values will
+never be overridden by the Paned widget. This may cause some panes to be
+pushed off the bottom (or right) edge of the paned widget.
+.IP \fBpreferredPaneSize\fP 1.5i
+Normally the paned widget makes a QueryGeometry call on a child to
+determine the preferred size of the child's pane. There are times
+when the application programmer or the user has a better idea of the
+preferred size of a pane. Setting this resource causes the value
+passed to be interpreted as the preferred size, in pixels, of this pane.
+.IP \fBresizeToPreferred\fP 1.5i
+Determines whether or not to resize each pane to its preferred size
+when the Paned widget is resized. See \fBLayout Semantics\fP for details.
+.IP \fBshowGrip\fP 1.5i
+If \fBTrue\fP then a grip will be shown for this pane. The grip
+associated with a pane is either below or to the right of the pane. No
+grip is ever shown for the last pane.
+.IP \fBskipAdjust\fP 1.5i
+This resource is used to determine which pane is forced to be resized.
+Setting this value to \fBTrue\fP makes this pane less likely to be
+forced to be resized. See \fBLayout Semantics\fP for details.
+.NH 3
+Layout Semantics
+.LP
+.IN "Paned widget" "layout semantics"
+In order to make effective use of the Paned widget it is helpful to know
+the rules it uses to determine which child will be resized in any given
+situation. There are three rules used to determine which child is
+resized. While these rules are always the same, the panes that are
+searched can change depending upon what caused the relayout.
+.LP
+.sp
+\fBLayout Rules\fP
+.IP \fB1\fP .5i
+Do not let a pane grow larger than its \fBmax\fP or smaller than its
+\fBmin\fP.
+.IP \fB2\fP .5i
+Do not adjust panes with \fBskipAdjust\fP set.
+.IP \fB3\fP .5i
+Do not adjust panes away from their preferred size, although moving one
+closer to its preferred size is fine.
+.LP
+When searching the children the Paned widget looks for panes that
+satisfy all the rules, and if unsuccessful then it eliminates rule 3
+and then 2. Rule 1 is always enforced.
+.LP
+If the relayout is due to a resize or change in management then the
+panes are searched from bottom to top. If the relayout is due to grip
+movement then they are searched from the grip selected in the direction
+opposite the pane selected.
+.NH 4
+Resizing Panes from a Grip Action
+.LP
+The pane above the grip is resized by invoking the GripAction with
+\fBUpLeftPane\fP specified. The panes below the grip are each checked
+against all rules, then rules 2 and 1 and finally against rule 1 only.
+No pane above the chosen pane will ever be resized.
+.LP
+The pane below the grip is resized by invoking the GripAction with
+\fBLowRightPane\fP specified. The panes above the grip are each
+checked in this case. No pane below the chosen pane will ever be resized.
+.LP
+Invoking GripAction with \fBThisBorderOnly\fP specified just moves the
+border between the panes. No other panes are ever resized.
+.NH 4
+Resizing Panes after the Paned widget is resized.
+.LP
+When the Pane widget is resized it must determine a new size for each
+pane. There are two methods of doing this. The Paned widget can either
+give each pane its preferred size and then resize the panes to fit, or
+it can use the current sizes and then resize the panes to fit. The
+\fBresizeToPreferred\fP resource allows the application to tell the
+Paned widget whether to query the child about its preferred size
+(subject to the the \fBpreferredPaneSize\fP) or to use the current size
+when refiguring the pane locations after the pane has been resized.
+.LP
+There is one special case. All panes assume they should resize to
+their preferred size until the Paned widget becomes visible to the user.
+.NH 4
+Managing Children and Geometry Management
+.LP
+The Paned widget always resizes its children to their preferred sizes when
+a new child is managed, or a geometry management request is honored.
+The Paned widget will first attempt to resize itself to contain its
+panes exactly. If this is not possible then it will hunt through the
+children, from bottom to top (right to left), for a pane to resize.
+.NH 4
+Special Considerations
+.LP
+When a user resizes a pane with the grips, the Paned widget assumes that
+this new size is the preferred size of the pane.
+.NH 3
+Grip Translations
+.LP
+The Paned widget has no action routines of its own, as all actions are
+handled through the grips. The grips are each assigned a default
+Translation table.
+.LP
+.sp
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <Btn1Down>: GripAction(Start, UpLeftPane)
+.IN "GripAction" ""
+ <Btn2Down>: GripAction(Start, ThisBorderOnly)
+ <Btn3Down>: GripAction(Start, LowRightPane)
+ <Btn1Motion>: GripAction(Move, UpLeftPane)
+ <Btn2Motion>: GripAction(Move, ThisBorderOnly)
+ <Btn3Motion>: GripAction(Move, LowRightPane)
+ Any<BtnUp>: GripAction(Commit)
+.De
+.sp
+.LP
+The Paned widget interprets the \fBGripAction\fP as taking two arguments.
+.IN "GripAction" ""
+The first argument may be any of the following:
+.IP \fBStart\fP 1i
+Sets up the Paned widget for resizing and changes the cursor of the
+grip. The second argument determines which pane will be resized, and
+can take on any of the three values shown above.
+.IP \fBMove\fP 1i
+The internal borders are drawn over the current pane locations to
+animate where the borders would actually be placed if you were to move
+this border as shown. The second argument must match the second argument
+that was passed to the \fBStart\fP action, that began this process. If
+these arguments are not passed, the behavior is undefined.
+.IP \fBCommit\fP 1i
+This argument causes the Paned widget to commit the changes selected
+by the previously started action. The cursor is changed back to the
+grip's inactive cursor. No second argument is needed in this case.
+.NH 3
+Convenience Routines
+.LP
+.IN "Paned widget" "enable pane resizing"
+.IN "Paned widget" "disable pane resizing"
+To enable or disable a child's request for pane resizing,
+use
+.PN XawPanedAllowResize :
+.IN "XawPanedAllowResize" "" "@DEF@"
+.FD 0
+void XawPanedAllowResize(\fIw\fP, \fIallow_resize\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIallow_resize\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the child pane.
+.IP \fIallow_resize\fP
+Specifies whether or not resizing requests for this child will be
+granted by the Paned widget.
+.LP
+If allow_resize is \fBTrue\fP, the Paned widget allows geometry
+requests from the child to change the pane's height. If allow_resize
+is \fBFalse\fP, the Paned widget ignores geometry requests from the
+child to change the pane's height. The default state is \fBTrue\fP
+before the Pane is realized and \fBFalse\fP after it is realized.
+This procedure is equivalent to changing the \fBallowResize\fP
+constraint resource for the child.
+.LP
+.sp
+.IN "Paned widget" "change height settings"
+To change the minimum and maximum height settings for a pane, use
+.PN XawPanedSetMinMax :
+.IN "XawPanedSetMinMax" "" "@DEF@"
+.FD 0
+void XawPanedSetMinMax(\fIw\fP, \fImin\fP, \fImax\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fImin\fP, \fImax\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the child pane.
+.IP \fImin\fP 1i
+Specifies the new minimum height of the child, expressed in pixels.
+.IP \fImax\fP 1i
+Specifies new maximum height of the child, expressed in pixels.
+.LP
+This procedure is equivalent to setting the \fBmin\fP and \fBmax\fP
+constraint resources for the child.
+.LP
+.sp
+.IN "Paned widget" "get height settings"
+To retrieve the minimum and maximum height settings for a pane, use
+.PN XawPanedGetMinMax :
+.IN "XawPanedGetMinMax" "" "@DEF@"
+.FD 0
+void XawPanedGetMinMax(\fIw\fP, \fImin_return\fP, \fImax_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fI*min_return\fP, \fI*max_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the child pane.
+.IP \fImin_return\fP 1i
+Returns the minimum height of the child, expressed in pixels.
+.IP \fImax_return\fP 1i
+Returns the maximum height of the child, expressed in pixels.
+.LP
+This procedure is equivalent to getting the \fBmin\fP and \fBmax\fP
+resources for this child child.
+.LP
+.sp
+.IN "Paned widget" "enable auto-reconfiguring"
+.IN "Paned widget" "disable auto-reconfiguring"
+To enable or disable automatic recalculation of pane sizes and positions,
+use
+.PN XawPanedSetRefigureMode :
+.IN "XawPanedSetRefigureMode" "" "@DEF@"
+.FD 0
+void XawPanedSetRefigureMode(\fIw\fP, \fImode\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fImode\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Paned widget.
+.IP \fImode\fP 1i
+Specifies whether the layout of the Paned widget is enabled (\fBTrue\fP)
+or disabled (\fBFalse\fP).
+.LP
+When making several changes to the children of a Paned widget
+after the Paned has been realized, it is a good idea to disable
+relayout until after all changes have been made.
+.LP
+.sp
+.IN "Paned widget" "getting the number of children"
+To retrieve the number of panes in a paned widget use
+\fBXawPanedGetNumSub\fP:
+.IN "XawPanedGetNumSub" "" "@DEF@"
+.FD 0
+int XawPanedGetNumSub(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Paned widget.
+.LP
+This function returns the number of panes in the Paned widget. This is
+\fBnot\fP the same as the number of children, since the grips are also
+children of the Paned widget.
diff --git a/specs/Xaw/Panner b/specs/Xaw/Panner
new file mode 100644
index 0000000..d417b0b
--- /dev/null
+++ b/specs/Xaw/Panner
@@ -0,0 +1,247 @@
+.\" $Xorg: Panner,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+Panner Widget
+.LP
+.XS
+ Panner Widget
+.XE
+.IN "Panner widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application header file <X11/Xaw/Panner.h>
+.IN "Panner.h" ""
+Class header file <X11/Xaw/PannerP.h>
+.IN "PannerP.h" ""
+Class pannerWidgetClass
+.IN "pannerWidgetClass" ""
+Class Name Panner
+.IN "Panner widget" "class name"
+Superclass Simple
+.sp
+.De
+.LP
+A Panner widget is a rectangle, called the
+``canvas,'' on which another rectangle, the ``slider,'' moves in two
+dimensions. It is often used with a Porthole widget to move, or
+``scroll,'' a third widget in two dimensions, in which case the
+slider's size and position gives feedback as to what portion of
+the third widget is visible.
+.LP
+The slider may be scrolled around the canvas by pressing,
+dragging, and releasing Button1; the default translation also
+enables scrolling via arrow keys and some other keys. While
+scrolling is in progress, the application receives notification
+through callback procedures. Notification may be done either
+continuously whenever the slider moves or discretely whenever the
+slider has been given a new location.
+.NH 3
+Resources
+.LP
+When creating a Panner widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Panner widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+allowOff AllowOff Boolean False
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+backgroundStipple BackgroundStipple String NULL
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+canvasHeight CanvasHeight Dimension 0
+canvasWidth CanvasWidth Dimension 0
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+defaultScale DefaultScale Dimension 8
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A depends on orientation
+internalSpace InternalSpace Dimension 4
+international International Boolean C False
+lineWidth LineWidth Dimension 0
+mappedWhenManaged MappedWhenManaged Boolean True
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+reportCallback ReportCallback Callback NULL
+resize Resize Boolean True
+rubberBand RubberBand Boolean False
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+shadowColor ShadowColor Pixel XtDefaultForeground
+shadowThickness ShadowThickness Dimension 2
+sliderX SliderX Position 0
+sliderY SliderY Position 0
+sliderHeight SliderHeight Dimension 0
+sliderWidth SliderWidth Dimension 0
+translations Translations TranslationTable See below
+width Width Dimension A depends on orientation
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.IP \fBallowOff\fP 1.5i
+Whether to allow the edges of the slider to go off the edges of the canvas.
+.As
+.Bg
+.Gp
+.IP \fBbackgroundStipple\fP 1.5i
+The name of a bitmap pattern to be used as the background for
+the area representing the canvas.
+.Bc
+.Bp
+.Bw
+.IP \fBcanvasHeight\fP 1.5i
+.br
+.ns
+.IP \fBcanvasWidth\fP 1.5i
+The size of the canvas.
+.Cm
+.Cu
+.Cn
+.IP \fBdefaultScale\fP 1.5i
+The percentage size that the Panner widget should have relative
+to the size of the canvas.
+.Dp
+.Dc
+.IP \fBforeground\fP 1.5i
+A pixel value which indexes the widget's colormap to derive the color
+used to draw the slider.
+.Hw
+.IP \fBinternalSpace\fP 1.5i
+The width of internal border in pixels between a slider representing the
+full size of the canvas
+and the edge of the Panner widget.
+.Ix
+.IP \fBlineWidth\fP 1.5i
+The width of the lines in the rubberbanding rectangle when rubberbanding
+is in effect instead of continuous scrolling. The default is 0.
+.Mm
+.Pf
+.Pb
+.IP \fBreportCallback\fP 1.5i
+All functions on this callback list are called when the
+\fBnotify\fP action is invoked. See the \fBPanner Actions\fP section
+for details.
+.IP \fBresize\fP 1.5i
+Whether or not to resize the panner whenever the canvas size is changed so
+that the \fBdefaultScale\fP is maintained.
+.IP \fBrubberBand\fP 1.5i
+Whether or not scrolling should be discrete (only moving a rubberbanded
+rectangle until the scrolling is done) or continuous (moving the slider
+itself). This controls whether or not the \fBmove\fP action procedure also
+invokes the \fBnotify\fP action procedure.
+.Sc
+.Se
+.IP \fBshadowColor\fP 1.5i
+The color of the shadow underneath the slider.
+.IP \fBshadowThickness\fP 1.5i
+The width of the shadow underneath the slider.
+.IP \fBsliderX\fP 1.5i
+.br
+.ns
+.IP \fBsliderY\fP 1.5i
+The location of the slider in the coordinates of the canvas.
+.IP \fBsliderHeight\fP 1.5i
+.br
+.ns
+.IP \fBsliderWidth\fP 1.5i
+The size of the slider.
+.Tr
+.Xy
+.NH 3
+Panner Actions
+.IN "Panner widget" "actions"
+.LP
+The actions supported by the Panner widget are:
+.IP \fBstart\fP() 1.5i
+This action begins movement of the slider.
+.IP \fBstop\fP() 1.5i
+This action ends movement of the slider.
+.IP \fBabort\fP() 1.5i
+This action ends movement of the slider and restores it to the position it
+held when the \fBstart\fP action was invoked.
+.IP \fBmove\fP() 1.5i
+This action moves the outline of the slider (if the \fBrubberBand\fP resource
+is True) or the slider itself (by invoking the \fBnotify\fP
+action procedure).
+.IP \fBpage\fP(\fIxamount\fP,\fIyamount\fP) 1.5i
+This action moves the slider by the specified amounts. The format
+for the amounts is a signed or unsigned floating-point number (e.g., +1.0
+or \-.5) followed
+by either \fBp\fP indicating pages (slider sizes), or \fBc\fP indicating
+canvas sizes. Thus, \fIpage(+0,+.5p)\fP represents vertical movement down
+one-half the height of the slider and \fIpage(0,0)\fP represents moving to
+the upper left corner of the canvas.
+.IP \fBnotify\fP() 1.5i
+This action informs the application of the slider's current position by
+invoking the \fBreportCallback\fP functions registered by the application.
+.IP \fBset\fP(\fIwhat\fP,\fIvalue\fP) 1.5i
+This action changes the behavior of the Panner. The \fIwhat\fP argument
+must currently be the string \fBrubberband\fP and controls the value of
+the \fBrubberBand\fP resource. The \fIvalue\fP argument
+may have one of the values \fBon\fP, \fBoff\fP, or \fBtoggle\fP.
+.LP
+.sp
+The default bindings for Panner are:
+.IN "Panner widget" "default translation table"
+.LP
+.Ds 0
+.TA .5i 1.75i
+.ta .5i 1.75i
+ <Btn1Down>: start(\|)
+ <Btn1Motion>: move(\|)
+ <Btn1Up>: notify(\|) stop(\|)
+ <Btn2Down>: abort(\|)
+ <Key>KP_Enter: set(rubberband,toggle)
+ <Key>space: page(+1p,+1p)
+ <Key>Delete: page(\-1p,\-1p)
+ <Key>BackSpace: page(\-1p,\-1p)
+ <Key>Left: page(\-.5p,+0)
+ <Key>Right: page(+.5p,+0)
+ <Key>Up: page(+0,\-.5p)
+ <Key>Down: page(+0,+.5p)
+ <Key>Home: page(0,0)
+.De
+.NH 3
+Panner Callbacks
+.IN "Panner widget" "callbacks"
+.LP
+The functions registered on the \fBreportCallback\fP list are invoked by
+the \fBnotify\fP action as follows:
+.IN "ReportProc" "" "@DEF@"
+.FD 0
+void ReportProc(\fIpanner\fP, \fIclient_data\fP, \fIreport\fP)
+.br
+ Widget \fIpanner\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIreport\fP; /* (XawPannerReport *) */
+.FN
+.IP \fIpanner\fP 1i
+Specifies the Panner widget.
+.IP \fIclient_data\fP 1i
+Specifies the client data.
+.IP \fIreport\fP 1i
+Specifies a pointer to an \fBXawPannerReport\fP structure containing
+the location and size of the slider and the size of the canvas.
diff --git a/specs/Xaw/Porthole b/specs/Xaw/Porthole
new file mode 100644
index 0000000..ff42863
--- /dev/null
+++ b/specs/Xaw/Porthole
@@ -0,0 +1,125 @@
+.\" $Xorg: Porthole,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+Porthole Widget
+.LP
+.XS
+ Porthole Widget
+.XE
+.IN "Porthole widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Porthole.h>
+.IN "Porthole.h" ""
+Class Header file <X11/Xaw/PortholeP.h>
+.IN "PortholeP.h" ""
+Class portholeWidgetClass
+.IN "portholeWidgetClass" ""
+Class Name Porthole
+.IN "Porthole widget" "class name"
+Superclass Composite
+.sp
+.De
+.LP
+The Porthole widget provides geometry management of a list of arbitrary
+widgets, only one of which may be managed at any particular time.
+The managed child widget is reparented within the porthole and is moved around
+by the application (typically under the control of a Panner widget).
+.NH 3
+Resources
+.LP
+When creating a Porthole widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Porthole widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+children ReadOnly WidgetList R NULL
+colormap Colormap Colormap Parent's Colormap
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+height Height Dimension A see \fBLayout Semantics\fP
+mappedWhenManaged MappedWhenManaged Boolean True
+numChildren ReadOnly Cardinal R 0
+reportCallback ReportCallback Callback NULL
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+width Width Dimension A see \fBLayout Semantics\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Ch
+.Cm
+.Dp
+.Dc
+.Hw
+.Mm
+.Nc
+.IP \fBreportCallback\fP 1.5i
+A list of functions to invoke whenever the managed child widget changes
+size or position.
+.Sc
+.Se
+.Tr
+.Xy
+.NH 3
+Layout Semantics
+.IN "Porthole widget" "layout semantics"
+.LP
+The Porthole widget allows its managed child to request any size
+that is as large
+or larger than the Porthole itself and any location so long as the child
+still obscures all of the Porthole. This widget typically is used with a
+Panner widget.
+.NH 3
+Porthole Callbacks
+.IN "Porthole widget" "callbacks"
+.LP
+The functions registered on the \fBreportCallback\fP list are invoked whenever
+the managed child changes size or position:
+.IN "ReportProc" "" "@DEF@"
+.FD 0
+void ReportProc(\fIporthole\fP, \fIclient_data\fP, \fIreport\fP)
+.br
+ Widget \fIporthole\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIreport\fP; /* (XawPannerReport *) */
+.FN
+.IP \fIporthole\fP 1i
+Specifies the Porthole widget.
+.IP \fIclient_data\fP 1i
+Specifies the client data.
+.IP \fIreport\fP 1i
+Specifies a pointer to an \fBXawPannerReport\fP structure containing
+the location and size of the slider and the size of the canvas.
+
diff --git a/specs/Xaw/Repeater b/specs/Xaw/Repeater
new file mode 100644
index 0000000..4c753a7
--- /dev/null
+++ b/specs/Xaw/Repeater
@@ -0,0 +1,184 @@
+.\" $Xorg: Repeater,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+Repeater Widget
+.XS
+ Repeater Widget
+.XE
+.IN "Repeater widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application header file <X11/Xaw/Repeater.h>
+.IN "Repeater.h" ""
+Class header file <X11/Xaw/RepeaterP.h>
+.IN "RepeaterP.h" ""
+Class repeaterWidgetClass
+.IN "repeaterWidgetClass" ""
+Class Name Repeater
+.IN "Repeater widget" "class name"
+Superclass Command
+.sp
+.De
+.LP
+The Repeater widget is a subclass of the Command widget; see the
+Command documentation for details. The difference is that the Repeater can call its
+registered callbacks repeatedly, at an increasing rate. The default translation
+does so for the duration the user holds down pointer button 1 while the pointer
+is on the Repeater.
+.NH 3
+Resources
+.LP
+When creating a Repeater widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Repeater widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+bitmap Bitmap Pixmap None
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+callback Callback XtCallbackList NULL
+colormap Colormap Colormap Parent's Colormap
+cornerRoundPercent CornerRoundPercent Dimension 25
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+decay Decay Int 5
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+encoding Encoding UnsignedChar XawTextEncoding8bit
+flash Boolean Boolean False
+font Font XFontStruct XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A graphic height + 2 * \fBinternalHeight\fP
+highlightThickness Thickness Dimension A 2 (0 if Shaped)
+initialDelay Delay Int 200
+insensitiveBorder Insensitive Pixmap GreyPixmap
+internalHeight Height Dimension 2
+internalWidth Width Dimension 4
+international International Boolean C False
+justify Justify Justify XtJustifyCenter (center)
+label Label String name of widget
+leftBitmap LeftBitmap Bitmap None
+mappedWhenManaged MappedWhenManaged Boolean True
+minimumDelay MinimumDelay Int 10
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+repeatDelay Delay Int 50
+resize Resize Boolean True
+screen Screen Pointer R Parent's Screen
+sensitive Sensitive Boolean True
+shapeStyle ShapeStyle ShapeStyle Rectangle
+startCallback StartCallback Callback NULL
+stopCallback StopCallback Callback NULL
+translations Translations TranslationTable See below
+width Width Dimension A graphic width + 2 * \fBinternalWidth\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+\" Resource Descriptions
+.Ac
+.As
+.Bg
+.Gp
+.Bm
+.Bc
+.Bp
+.Bw
+.Cb
+.Cm
+.Cr
+.Cu
+.Cn
+.IP \fBdecay\fP 1.5i
+The number of milliseconds that should be subtracted from each succeeding
+interval while the Repeater button is being held down until the interval
+has reached \fBminimumDelay\fP milliseconds.
+.Dp
+.Dc
+.Le
+.IP \fBflash\fP 1.5i
+Whether or not to flash the Repeater button whenever the timer goes off.
+.Lf
+.Ls
+.Lg
+.Hw
+.Ht
+.IP \fBinitialDelay\fP 1.5i
+The number of milliseconds between the beginning of the Repeater button
+being held down and the first invocation of the \fBcallback\fP function.
+.Ib
+.Ih
+.In
+.Ju
+.La
+.Ll
+.Mm
+.IP \fBminimumDelay\fP 1.5i
+The minimum time between callbacks in milliseconds.
+.Pf
+.Pb
+.IP \fBrepeatDelay\fP 1.5i
+The number of milliseconds between each callback after the first (minus an
+increasing number of \fBdecay\fPs).
+.Re
+.Sc
+.Se
+.Ss
+.IP \fBstartCallback\fP 1.5i
+The list of functions to invoke by the \fBstart\fP action (typically
+when the Repeater button is first pressed). The callback data parameter
+is set to NULL.
+.IP \fBstopCallback\fP 1.5i
+The list of functions to invoke by the \fBstop\fP action (typically
+when the Repeater button is released). The callback data parameter
+is set to NULL.
+.Tr
+.Xy
+.NH 3
+Repeater Actions
+.IN "Repeater widget" "actions"
+.LP
+The Repeater widget supports the following actions beyond those of the Command
+button:
+.IP \fBstart\fP() 1.5i
+This invokes the functions on the \fBstartCallback\fP and \fBcallback\fP lists
+and sets a timer to go off in \fBinitialDelay\fP milliseconds. The timer
+will cause the \fBcallback\fP functions to be invoked with increasing
+frequency until the \fBstop\fP action occurs.
+.IP \fBstop\fP() 1.5i
+This invokes the functions on the \fBstopCallback\fP list and prevents any
+further timers from occuring until the next \fBstart\fP action.
+.LP
+.sp
+.IN "Repeater widget" "translation bindings"
+The following are the default translation bindings used by the
+Repeater widget:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <EnterWindow>: highlight(\|)
+ <LeaveWindow>: unhighlight(\|)
+ <Btn1Down>: set(\|) start(\|)
+ <Btn1Up>: stop(\|) unset(\|)
+.De
+.LP
diff --git a/specs/Xaw/Scrollbar b/specs/Xaw/Scrollbar
new file mode 100644
index 0000000..87d9ca1
--- /dev/null
+++ b/specs/Xaw/Scrollbar
@@ -0,0 +1,386 @@
+.\" $Xorg: Scrollbar,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+Scrollbar Widget
+.LP
+.XS
+ Scrollbar Widget
+.XE
+.IN "Scrollbar widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application header file <X11/Xaw/Scrollbar.h>
+.IN "Scrollbar.h" ""
+Class header file <X11/Xaw/ScrollbarP.h>
+.IN "ScrollbarP.h" ""
+Class scrollbarWidgetClass
+.IN "scrollbarWidgetClass" ""
+Class Name Scrollbar
+.IN "Scrollbar widget" "class name"
+Superclass Simple
+.sp
+.De
+.LP
+A Scrollbar widget is a rectangle, called the ``canvas,'' on
+which another rectangle, the ``thumb,'' moves in one
+dimension, either vertically or horizontally. A Scrollbar
+can be used alone, as a value generator, or it can be used
+within a composite widget (for example, a Viewport). When a
+Scrollbar is used to move, or ``scroll,'' the contents of
+another widget, the size and the position of the thumb usually give
+feedback as to what portion of the other widget's contents
+are visible.
+.LP
+Each pointer button invokes a specific action. Pointer
+buttons 1 and 3 do not move the thumb automatically.
+Instead, they return the pixel position of the cursor on the
+scroll region. When pointer button 2 is clicked, the thumb
+moves to the current pointer position. When pointer button
+2 is held down and the pointer is moved, the thumb follows
+the pointer.
+.LP
+The pointer cursor in the scroll region changes depending on the current
+action. When no pointer button is pressed, the cursor appears as a
+double-headed arrow that points in the direction that scrolling can
+occur. When pointer button 1 or 3 is pressed, the cursor appears as a
+single-headed arrow that points in the logical direction that the thumb
+will move. When pointer button 2 is pressed, the cursor
+appears as an arrow that points to the top or the left of the thumb.
+.LP
+When the user scrolls, the application receives notification
+through callback procedures. For both discrete scrolling actions, the
+callback returns the Scrollbar widget, the client_data, and the pixel
+position of the pointer when the button was released. For continuous
+scrolling, the callback routine returns the scroll bar widget, the
+client data, and the current relative position of the thumb. When the
+thumb is moved using pointer button 2, the callback procedure is invoked
+continuously. When either button 1 or 3 is pressed, the callback
+procedure is invoked only when the button is released and the client
+callback procedure is responsible for moving the thumb.
+.NH 3
+Resources
+.LP
+When creating a Scrollbar widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Scrollbar widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+colormap Colormap Colormap parent's Colormap
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+depth Depth int C parent's Depth
+destroyCallback Callback XtCallbackList NULL
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A depends on orientation
+insensitiveBorder Insensitive Pixmap GreyPixmap
+international International Boolean C False
+jumpProc Callback XtCallbackList NULL
+length Length Dimension 1
+mappedWhenManaged MappedWhenManaged Boolean True
+minimumThumb MinimumThumb Dimension 7
+orientation Orientation Orientation XtorientVertical (vertical)
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+screen Screen Screen R parent's Screen
+scrollDCursor Cursor Cursor XC_sb_down_arrow
+scrollHCursor Cursor Cursor XC_sb_h_double_arrow
+scrollLCursor Cursor Cursor XC_sb_left_arrow
+scrollProc Callback XtCallbackList NULL
+scrollRCursor Cursor Cursor XC_sb_right_arrow
+scrollUCursor Cursor Cursor XC_sb_up_arrow
+scrollVCursor Cursor Cursor XC_sb_v_arrow
+sensitive Sensitive Boolean True
+shown Shown Float 0.0
+thickness Thickness Dimension 14
+thumb Thumb Bitmap GreyPixmap
+thumbProc Callback XtCallbackList NULL
+topOfThumb TopOfThumb Float 0.0
+translations Translations TranslationTable See below
+width Width Dimension A depends on orientation
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Cm
+.Cu
+.Cn
+.Dp
+.Dc
+.IP \fBforeground\fP 1.5i
+A pixel value which indexes the widget's colormap to derive the color
+used to draw the thumb.
+.Hw
+.Ib
+.Ix
+.IP \fBjumpProc\fP 1.5i
+All functions on this callback list are called when the
+\fBNotifyThumb\fP action is invoked. See the \fBScrollbar
+Actions\fP section for details.
+.IP \fBlength\fP 1.5i
+The height of a vertical scrollbar or the width of a horizontal scrollbar.
+.Mm
+.IP \fBminimumThumb\fP 1.5i
+The smallest size, in pixels, to which the thumb can shrink.
+.IP \fBorientation\fP 1.5i
+The orientation is the direction that the thumb will be allowed to move.
+This value can be either \fBXtorientVertical\fP or
+\fBXtorientHorizontal\fP.
+.IN "XtorientVertical" ""
+.IN "XtorientHorizontal" ""
+.IN "conversions" "Orientation"
+.Rs "vertical \fPand\fB horizontal"
+.Pf
+.Pb
+.Sc
+.IP \fBscrollDCursor\fP 1.5i
+This cursor is used when scrolling backward in a vertical scrollbar.
+.IP \fBscrollHCursor\fP 1.5i
+This cursor is used when a horizontal scrollbar is inactive.
+.IP \fBscrollLCursor\fP 1.5i
+This cursor is used when scrolling forward in a horizontal scrollbar.
+.IP \fBscrollProc\fP 1.5i
+All functions on this callback list may be called when the
+\fBNotifyScroll\fP action is invoked. See the \fBScrollbar
+Actions\fP section for details.
+.IP \fBscrollRCursor\fP 1.5i
+This cursor is used when scrolling backward in a horizontal scrollbar,
+or when thumbing a vertical scrollbar.
+.IP \fBscrollUCursor\fP 1.5i
+This cursor is used when scrolling forward in a vertical scrollbar, or when
+thumbing a horizontal scrollbar.
+.IP \fBscrollVCursor\fP 1.5i
+This cursor is used when a vertical scrollbar is inactive.
+.Se
+.IP \fBshown\fP 1.5i
+This is the size of the thumb, expressed as a percentage (0.0 - 1.0)
+of the length of the scrollbar.
+.IP \fBthickness\fP 1.5i
+The width of a vertical scrollbar or the height of a horizontal scrollbar.
+.IP \fBthumb\fP 1.5i
+This pixmap is used to tile (or stipple) the thumb of the scrollbar. If
+no tiling is desired, then set this resource to \fBNone\fP. This
+resource will accept either a bitmap or a pixmap that is the same depth
+as the window. The resource converter for this resource constructs
+bitmaps from the contents of files. (See \fBConverting Bitmaps\fP for
+details.)
+.IP \fBtopOfThumb\fP 1.5i
+The location of the top of the thumb, as a percentage (0.0 - 1.0)
+of the length of the scrollbar. This resource was called \fBtop\fP in
+previous versions of the Athena widget set. The name collided with the
+a Form widget constraint resource, and had to be changed.
+.Tr
+.Xy
+.NH 3
+Scrollbar Actions
+.IN "Scrollbar widget" "actions"
+.LP
+The actions supported by the Scrollbar widget are:
+.IP \fBStartScroll\fP(\fIvalue\fP) 1.5i
+The possible \fIvalues\fP are Forward, Backward, or Continuous.
+This must be the first action to begin a new movement.
+.IP \fBNotifyScroll\fP(\fIvalue\fP) 1.5i
+The possible \fIvalues\fP are Proportional or FullLength. If the
+argument to StartScroll was Forward or Backward, NotifyScroll executes
+the \fBscrollProc\fP callbacks and passes either; the position of the
+pointer, if \fIvalue\fP is Proportional, or the full length of the
+scroll bar, if \fIvalue\fP is FullLength. If the argument to
+StartScroll was Continuous, NotifyScroll returns without executing any
+callbacks.
+.IP \fBEndScroll\fP(\^) 1.5i
+This must be the last action after a movement is complete.
+.IP \fBMoveThumb\fP(\^) 1.5i
+Repositions the Scrollbar's thumb to the current pointer location.
+.IP \fBNotifyThumb\fP(\^)\ \ \ 1.5i
+Calls the
+.PN jumpProc
+callbacks and passes the relative position of the
+pointer as a percentage of the scroll bar length.
+.LP
+.sp
+The default bindings for Scrollbar are:
+.IN "Scrollbar widget" "default translation table"
+.LP
+.Ds 0
+.TA .5i 1.75i
+.ta .5i 1.75i
+ <Btn1Down>: StartScroll(Forward)
+ <Btn2Down>: StartScroll(Continuous) MoveThumb(\|) NotifyThumb(\|)
+ <Btn3Down>: StartScroll(Backward)
+ <Btn2Motion>: MoveThumb(\|) NotifyThumb(\|)
+ <BtnUp>: NotifyScroll(Proportional) EndScroll(\|)
+.De
+.LP
+.sp
+Examples of additional bindings a user might wish to specify in a
+resource file are:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+*Scrollbar.Translations: \\
+ ~Meta<Key>space: StartScroll(Forward) NotifyScroll(FullLength) \\n\\
+ Meta<Key>space: StartScroll(Backward) NotifyScroll(FullLength) \\n\\
+ EndScroll(\|)
+.De
+.NH 3
+Scrollbar Callbacks
+.IN "Scrollbar widget" "callbacks"
+.LP
+There are two callback lists provided by the Scrollbar widget.
+The procedural interface for these functions is described here.
+.LP
+The calling interface to the \fBscrollProc\fP callback procedure is:
+.IN "ScrollProc" "" "@DEF@"
+.FD 0
+void ScrollProc(\fIscrollbar\fP, \fIclient_data\fP, \fIposition\fP)
+.br
+ Widget \fIscrollbar\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIposition\fP; /* int */
+.FN
+.IP \fIscrollbar\fP 1i
+Specifies the Scrollbar widget.
+.IP \fIclient_data\fP 1i
+Specifies the client data.
+.IP \fIposition\fP 1i
+Specifies a pixel position in integer form.
+.LP
+The \fBscrollProc\fP callback is used for incremental scrolling
+and is called by the \fBNotifyScroll\fP action.
+The position argument is a signed quantity and should be cast to an int
+when used. Using the default button bindings, button 1 returns a
+positive value, and button 3 returns a negative value. In both cases,
+the magnitude of the value is the distance of the pointer in
+pixels from the top (or left) of the Scrollbar. The value will never
+be greater than the length of the Scrollbar.
+.LP
+.sp
+The calling interface to the \fBjumpProc\fP callback procedure is:
+.IN "jumpProc" "" "@DEF@"
+.FD 0
+void JumpProc(\fIscrollbar\fP, \fIclient_data\fP, \fIpercent\fP)
+.br
+ Widget \fIscrollbar\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIpercent_ptr\fP; /* float* */
+.FN
+.IP \fIscrollbar\fP 1i
+Specifies the ID of the scroll bar widget.
+.IP \fIclient_data\fP 1i
+Specifies the client data.
+.IP \fIpercent_ptr\fP 1i
+Specifies the floating point position of the thumb (0.0 \- 1.0).
+.LP
+The \fBjumpProc\fP callback is used to implement smooth scrolling and
+is called by the \fBNotifyThumb\fP action. Percent_ptr must be cast
+to a pointer to float before use; i.e.
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+ float percent = *(float*)percent_ptr;
+.De
+.LP
+With the default button bindings, button 2 moves the thumb interactively,
+and the \fBjumpProc\fP is called on each new position of the pointer,
+while the pointer button remains down. The value specified by
+\fIpercent_ptr\fP is the current location of the thumb (from the top or
+left of the Scrollbar) expressed as a percentage of the length of the
+Scrollbar.
+.NH 3
+Convenience Routines
+.LP
+.IN "Scrollbar widget" "setting thumb values"
+To set the position and length of a Scrollbar thumb, use
+.PN XawScrollbarSetThumb .
+.IN "XawScrollbarSetThumb" "" "@DEF@"
+.FD 0
+void XawScrollbarSetThumb(\fIw\fP, \fItop\fP, \fIshown\fP)
+.br
+ Widget \fIw\fP;
+.br
+ float \fItop\fP;
+.br
+ float \fIshown\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Scrollbar widget.
+.IP \fItop\fP 1i
+Specifies the position of the top of the thumb as a fraction of the
+length of the Scrollbar.
+.IP \fIshown\fP 1i
+Specifies the length of the thumb as a fraction of the total length
+of the Scrollbar.
+.LP
+.PN XawScrollbarThumb
+moves the visible thumb to a new position (0.0 \- 1.0) and length (0.0 \- 1.0).
+Either the top or shown arguments can be specified as \-1.0,
+in which case the current value is left unchanged.
+Values greater than 1.0 are truncated to 1.0.
+.LP
+If called from \fBjumpProc\fP, \fBXawScrollbarSetThumb\fP has no effect.
+.NH 3
+Setting Float Resources
+.IN "float resources" "setting"
+.LP
+The \fBshown\fP and \fBtopOfThumb\fP resources are of type
+\fIfloat\fP. These resources can be difficult to get into an
+argument list. The reason is that C performs an automatic cast of
+the float value to an integer value, usually truncating the important
+information. The following code fragment is one portable method of
+getting a float into an argument list.
+.sp
+.Ds 0
+.SM
+.TA 1i 2i
+.ta 1i 2i
+ top = 0.5;
+ if (sizeof(float) > sizeof(XtArgVal)) {
+ /*
+ \ * If a float is larger than an XtArgVal then pass this
+ \ * resource value by reference.
+ \ */
+ XtSetArg(args[0], XtNshown, &top);
+ }
+ else {
+ /*
+ \ * Convince C not to perform an automatic conversion, which
+ \ * would truncate 0.5 to 0.
+ \ */
+ XtArgVal * l_top = (XtArgVal *) &top;
+ XtSetArg(args[0], XtNshown, *l_top);
+ }
+.NL
+.De
+.sp
diff --git a/specs/Xaw/Simple b/specs/Xaw/Simple
new file mode 100644
index 0000000..a030d40
--- /dev/null
+++ b/specs/Xaw/Simple
@@ -0,0 +1,95 @@
+.\" $Xorg: Simple,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+Simple Widget
+.XS
+ Simple Widget
+.XE
+.IN "Simple widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <Xaw/Simple.h>
+.IN "Simple.h" ""
+Class Header file <Xaw/SimpleP.h>
+.IN "SimpleP.h" ""
+Class simpleWidgetClass
+.IN "simpleWidgetClass"
+Class Name Simple
+.IN "Simple widget" "class name"
+Superclass Core
+.sp
+.De
+.LP
+The Simple widget is not very useful by itself, as it has no semantics
+of its own. It main purpose is to be used as a common superclass for
+the other \fIsimple\fP Athena widgets. This widget adds six resources
+to the resource list provided by the Core widget and its superclasses.
+.NH 3
+Resources
+.LP
+When creating a Simple widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Simple widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+height Height Dimension 0
+insensitiveBorder Insensitive Pixmap GreyPixmap
+international International Boolean C False
+mappedWhenManaged MappedWhenManaged Boolean True
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+width Width Dimension 0
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Cm
+.Cu Bold
+.Cn Bold
+.Dp
+.Dc
+.Hw
+.Ib Bold
+.Ix Bold
+.Mm
+.Pf Bold
+.Pb Bold
+.Sc
+.Se
+.Tr
+.Xy
diff --git a/specs/Xaw/SimpleMenu b/specs/Xaw/SimpleMenu
new file mode 100644
index 0000000..b88585b
--- /dev/null
+++ b/specs/Xaw/SimpleMenu
@@ -0,0 +1,315 @@
+.\" $Xorg: SimpleMenu,v 1.3 2000/08/17 19:42:27 cpqbld Exp $
+.NH 2
+SimpleMenu Widget
+.XS
+ SimpleMenu Widget
+.XE
+.IN "SimpleMenu widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/SimpleMenu.h>
+.IN "SimpleMenu.h" ""
+Class Header file <X11/Xaw/SimpleMenP.h>
+.IN "SimpleMenP.h" ""
+Class simpleMenuWidgetClass
+.IN "simpleMenuWidgetClass" ""
+Class Name SimpleMenu
+.IN "SimpleMenu widget" "class name"
+Superclass OverrideShell
+.sp
+.De
+.LP
+The SimpleMenu widget is a container for the menu entries. It is a
+direct subclass of shell, and is should be created with
+\fBXtCreatePopupShell\fP, not \fBXtCreateManagedWidget\fP. This is the
+only part of the menu that
+actually is associated with a window. The SimpleMenu serves as the glue to bind
+the individual menu entries together into a menu.
+.NH 3
+Resources
+.LP
+.IN "SimpleMenu widget" "resources"
+.LP
+The resources associated with the SimpleMenu widget control aspects
+that will affect the entire menu.
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+allowShellResize AllowShellResize Boolean True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+backingStore BackingStore BackingStore see below
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+bottomMargin VerticalMargins Dimension 0
+children ReadOnly WidgetList R NULL
+createPopupChildProc CreatePopupChildProc Function NULL
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor None
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+geometry Geometry String NULL
+height Height Dimension Enough space to contain all entries
+label Label String NULL
+labelClass LabelClass Pointer SmeBSBObjectClass
+mappedWhenManaged MappedWhenManaged Boolean True
+menuOnScreen MenuOnScreen Boolean True
+numChildren ReadOnly Cardinal R 0
+overrideRedirect OverrideRedirect Boolean True
+popdownCallback Callback XtCallbackList NULL
+popupCallback Callback XtCallbackList NULL
+popupOnEntry PopupOnEntry Widget A Label or first entry
+rowHeight RowHeight Dimension 0
+saveUnder SaveUnder Boolean False
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+topMargin VerticalMargins Dimension 0
+translations Translations TranslationTable See below
+visual Visual Visual CopyFromParent
+width Width Dimension Width of widest entry
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.IP \fBbackingStore\fP 1.5i
+.IN "conversions" "BackingStore"
+Determines what type of backing store will be used for the menu. Legal
+values for this resource are \fBNotUseful\fP, \fBWhenMapped\fP, and
+\fBAlways\fP. These values are the backing-store integers defined in
+<X11/X.h>.
+.Rs "notUseful, whenMapped, always, \fPand\fP default"
+If \fBdefault\fP is specified (the default behavior) the server will use
+whatever it thinks is appropriate.
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.IP \fBbottomMargin\fP 1.5i
+.br
+.ns
+.IP \fBtopMargin\fP 1.5i
+The amount of space between the top or bottom of the menu and the menu entry
+closest to that edge.
+.Ch
+.Cm
+.IP \fBcursor\fP 1.5i
+The shape of the mouse pointer whenever it is in this widget.
+.Dp
+.Dc
+.IP geometry 1.5i
+If this resource is specified it will override the x, y, width and
+height of this widget. The format of this string is
+[<\fIwidth\fP>x<\fIheight\fP>][{+ -} <\fIxoffset\fP> {+ -}<\fIyoffset\fP>].
+.Hw
+.IP \fBlabel\fP 1.5i
+This label will be placed at the top of the SimpleMenu, and may not be
+highlighted. The name of the
+label object is \fBmenuLabel\fP. Using this name it is possible to
+modify the label's attributes through the resource database. When the label
+is created, the \fBlabel\fP is hard coded to the value of \fBlabel\fP, and
+\fBjustify\fP is hard coded as \fBXtJustifyCenter\fP.
+.IP \fBlabelClass\fP 1.5i
+Specifies the type of Sme object created as the menu label.
+.Mm
+.IP \fBmenuOnScreen\fP 1.5i
+If the menu is automatically positioned under the cursor with the
+\fBXawPositionSimpleMenu\fP action, and this resource is \fBTrue\fP,
+then the menu will always be fully visible on the screen.
+.Nc
+.IP overrideRedirect 1.5i
+Determines the value of the override_redirect attribute of the
+SimpleMenu's window. The override_redirect attribute of a window
+determines whether or not a window manager may interpose itself between
+this window and the root window of the display. For more information
+see the \fIInterclient Communications Conventions Manual\fP.
+.IP popdownCallback 1.5i
+.br
+.ns
+.IP popupCallback 1.5i
+These callback functions are called by the Xt Intrinsics whenever the
+shell is popped up or down (See \fI\*(xT\fP for details).
+.IP \fBpopupOnEntry\fP 1.5i
+The \fBXawPositionSimpleMenu\fP action will, by default, popup the
+SimpleMenu with its label (or first entry) directly under the
+pointer. To popup the menu under
+another entry, set this resource to the menu entry that should be
+under the pointer, when the menu is popped up. This allows the
+application to offer the user a default menu entry that can be selected
+with out moving the pointer.
+.IP \fBrowHeight\fP 1.5i
+If this resources is zero (the default) then each menu entry will be
+given its desired height. If this resource has any other value then
+all menu entries will be forced to be \fBrowHeight\fP pixels high.
+.IP saveUnder 1.5i
+If this is \fBTrue\fP then save unders will be active on the menu's window.
+.Sc
+.Se
+.Tr
+.Xy
+.NH 3
+SimpleMenu Actions
+.IN "SimpleMenu widget" "actions"
+.LP
+The SimpleMenu widget supports the following actions:
+.IP \(bu 5
+Switching the entry under the mouse pointer between
+the foreground and background colors with \fBhighlight\fP
+and \fBunhighlight\fP
+.IP \(bu 5
+Processing menu entry callbacks with \fBnotify\fP
+.sp
+.LP
+.IN "SimpleMenu widget" "default translations"
+The following are the default translation bindings used
+by the SimpleMenu widget:
+.LP
+.sp
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <EnterWindow>: highlight(\|)
+ <LeaveWindow>: unhighlight(\|)
+ <BtnMotion>: highlight(\|)
+ <BtnUp>: MenuPopdown(\|) notify(\|) unhighlight(\|)
+.De
+.sp
+.LP
+.IN "SimpleMenu widget" "MenuPopdown routine"
+The user can pop down the menu without activating any of the callback
+functions by releasing the pointer button when no menu item is
+highlighted.
+.sp
+.LP
+The full list of actions supported by SimpleMenu is:
+.IP \fBhighlight\fP() 1.5i
+Highlight the menu entry that is currently under the pointer.
+Only a item that is highlighted will be notified when the \fBnotify\fP
+action is invoked. The look of a highlighted entry is determined by
+the menu entry.
+.IP \fBunhighlight\fP(\|) 1.5i
+Unhighlights the currently highlighted menu item, and returns it to
+its normal look.
+.IP \fBnotify\fP(\|) 1.5i
+Notifies the menu entry that is currently highlighted that is has been
+selected. It is the responsibility of the menu entry to take the
+appropriate action.
+.IP \fBMenuPopdown\fP(\fImenu\fP)
+This action is defined in \fI\*(xT\fP.
+.IN "SimpleMenu widget" "MenuPopdown routine"
+.NH 3
+Positioning the SimpleMenu
+.IN "XawPositionSimpleMenu" "" "@DEF@"
+.IN "SimpleMenu widget" "positioning" "@DEF@"
+.LP
+If the SimpleMenu widget is to be used as a pulldown menu then the
+MenuButton widget, or some other outside means should be used to place
+the menu when it is popped up.
+.LP
+If popup menus are desired it will be necessary to add the
+\fBXawPositionSimpleMenu\fP and \fBMenuPopup\fP actions to the
+translation table of the widget that will be popping up the menu. The
+\fBMenuPopup\fP action is described in \fI\*(xT\fP.
+\fBXawPositionSimpleMenu\fP is a global action procedure registered by
+the SimpleMenu widget when the first one is created or the convenience
+routine \fBXawSimpleMenuAddGlobalActions\fP is called.
+.LP
+Translation writers should be aware that Xt does not register grabs on
+``don't care'' modifiers, and therefore the left hand side of the
+production should be written to exclude unspecified modifiers.
+For example these are the translations needed to popup some of
+\fBxterm's\fP menus:
+.sp
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ !Ctrl<Btn1Down>: XawPositionSimpleMenu(xterm) MenuPopup(xterm)
+ !Ctrl<Btn2Down>: XawPositionSimpleMenu(modes) MenuPopup(modes)
+.De
+.sp 1
+.LP
+.IP \fBXawPositionSimpleMenu\fP(\fImenu\fP) 2.25i
+The \fBXawPositionSimpleMenu\fP routine will search for the menu name
+passed to it using \fBXtNameToWidget\fP starting with the widget
+invoking the action as the reference widget. If it is unsuccessful it
+will continue up the widget tree using each of the invoking widget's
+ancestors as the reference widget. If it is still unsuccessful it will
+print a warning message and give up. \fBXawPositionSimpleMenu\fP will
+position the menu directly under the pointer cursor. The menu will be
+placed so that the pointer cursor is centered on the entry named by the
+\fBpopupOnEntry\fP resource. If the \fBmenuOnScreen\fP resource is
+\fBTrue\fP then the menu will always be fully visible on the screen.
+.NH 3
+Convenience Routines
+.NH 4
+Registering the Global Action Routines
+.LP
+.IN "XawPositionSimpleMenu" ""
+The \fBXawPositionSimpleMenu\fP action routine may often be invoked
+before any menus have been created. This can occur when an
+application uses dynamic menu creation. In these cases an application will
+need to register this global action routine by calling
+\fBXawSimpleMenuAddGlobalActions\fP:
+.IN "XawSimpleMenuAddGlobalActions" "" "@DEF@"
+.FD 0
+void XawSimpleMenuAddGlobalActions(\fIapp_con\fP)
+.br
+ XtAppContext \fIapp_con\fP;
+.FN
+.IP \fIapp_con\fP 1i
+Specifies the application context in which this action should be registered.
+.LP
+This function need only be called once per application and must be
+called before any widget that uses \fBXawPositionSimpleMenu\fP action
+is realized.
+.NH 4
+Getting and Clearing the Current Menu Entry
+.LP
+To get the currently highlighted menu entry use
+\fBXawSimpleMenuGetActiveEntry\fP:
+.IN "XawSimpleMenuGetActiveEntry" "" "@DEF@"
+.FD 0
+Widget XawSimpleMenuGetActiveEntry(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the SimpleMenu widget.
+.LP
+This function returns the menu entry that is
+currently highlighted, or NULL if no entry is highlighted.
+.LP
+.sp
+To clear the SimpleMenu widget's internal information about the
+currently highlighted menu entry use
+\fBXawSimpleMenuClearActiveEntry\fP:
+.IN "XawSimpleMenuClearActiveEntry" "" "@DEF@"
+.FD 0
+Widget XawSimpleMenuClearActiveEntry(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the SimpleMenu widget.
+.LP
+This function unsets all internal references to the currently
+highlighted menu entry. It does not \fIunhighlight\fP or otherwise
+alter the appearance of the active entry. This function is primarily
+for use by implementors of menu entries.
diff --git a/specs/Xaw/Sme b/specs/Xaw/Sme
new file mode 100644
index 0000000..51f2359
--- /dev/null
+++ b/specs/Xaw/Sme
@@ -0,0 +1,106 @@
+.\" $Xorg: Sme,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+Sme Object
+.LP
+.XS
+ Sme Object
+.XE
+.IN "Sme object" "" "@DEF@"
+.sp
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/Sme.h>
+.IN "Sme.h" ""
+Class Header file <X11/Xaw/SmeP.h>
+.IN "SmeP.h" ""
+Class smeObjectClass
+.IN "smeObjectClass" ""
+Class Name Sme
+.IN "Sme object" "class name"
+Superclass RectObj
+.De
+.sp
+.LP
+The Sme object is the base class for all menu entries. While this
+object is mainly intended to be subclassed, it may be used in a menu to
+add blank space between menu entries.
+.NH 3
+Resources
+.IN "SmeLine object" "resources"
+.LP
+The resources associated with the SmeLine object are defined in this
+section, and affect only the single menu entry specified by this object.
+There are no new resources added for this class, as it picks up all its
+resources from the RectObj class.
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+ancestorSensitive AncestorSensitive Boolean True
+callback Callback XtCallbackList NULL
+destroyCallback Callback XtCallbackList NULL
+height Height Dimension 0
+international International Boolean C False
+sensitive Sensitive Boolean True
+width Width Dimension 1
+.sp 3p
+_
+.TE
+.As
+.Dc
+.Hw
+Keep in mind that the SimpleMenu widget will force all menu items to
+be the width of the widest entry.
+.Ix Bold
+.Se
+.NH 3
+Subclassing the Sme Object
+.IN "Sme object" "subclassing" "@DEF"
+.LP
+.sp
+To Create a new Sme object \fIclass\fP you will need to define three class methods.
+These methods allow the SimpleMenu to highlight and unhighlight the
+menu entry as the pointer cursor moves over it, as well as notify the
+entry when the user has selected it. All of
+these methods may be inherited from the Sme object, although the default
+semantics are not very interesting.
+.IP \fBHighlight\fP(\|) 1i
+.IN "Sme object" "Highlight method"
+Called to put the menu entry into the highlighted state.
+.IP \fBUnhighlight\fP(\|) 1i
+.IN "Sme object" "Unhighlight method"
+Called to return the widget to its normal (unhighlighted) state.
+.IP \fBNotify\fP(\|)
+.IN "Sme object" "Notify method"
+Called when the user selects this menu entry.
+.LP
+.sp
+Other then these methods, creating a new object
+is straight forward. Here is some information that may help you
+avoid some common mistakes.
+.IP 1) 3n
+Objects can be zero pixels high.
+.IP 2) 3n
+Objects draw on their parent's window, therefore the Drawing dimensions
+are different from those of widgets. For instance, y locations vary
+from \fBy\fP to \fBy + height\fP, not \fB0\fP to \fBheight\fP.
+.IP 3) 3n
+XtSetValues calls may come from the application while the Sme is highlighted,
+and if the SetValues method returns True, will result in an expose event.
+The SimpleMenu may later call the menu entry's \fBunhighlight\fP
+procedure. However, due to the asynchronous nature of
+X, the expose event generated by \fBXtSetValues\fP will come \fIafter\fP
+this unhighlight.
+.IP 4) 3n
+Remember that your subclass of the Sme does not own the
+window. Share the space with other menu entries, and refrain
+from drawing outside the subclass's own section of the menu.
+
diff --git a/specs/Xaw/SmeBSB b/specs/Xaw/SmeBSB
new file mode 100644
index 0000000..e1c83fc
--- /dev/null
+++ b/specs/Xaw/SmeBSB
@@ -0,0 +1,125 @@
+.\" $Xorg: SmeBSB,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+SmeBSB Object
+.LP
+.XS
+ SmeBSB Object
+.XE
+.IN "SmeBSB object" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/SmeBSB.h>
+.IN "SmeBSB.h" ""
+Class Header file <X11/Xaw/SmeBSBP.h>
+.IN "SmeBSBP.h" ""
+Class smeBSBObjectClass
+.IN "smeBSBObjectClass" ""
+Class Name SmeBSB
+.IN "SmeBSB object" "class name"
+Superclass Sme
+.sp
+.De
+.LP
+The SmeBSB object is used to create a menu entry that contains a string,
+and optional bitmaps in its left and right margins. Since each menu
+entry is an independent object, the application is able to change the
+font, color, height, and other attributes of the menu entries, on an
+entry by entry basis. The format of the string may either be the encoding
+of the 8 bit \fBfont\fP utilized, or in a multi-byte encoding for use with a
+\fBfontSet\fP.
+.NH 3
+Resources
+.IN "SmeBSB object" "resources"
+.LP
+The resources associated with the SmeBSB object are defined in this section,
+and affect only the single menu entry specified by this object.
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+ancestorSensitive AncestorSensitive Boolean D True
+callback Callback Callback NULL
+destroyCallback Callback XtCallbackList NULL
+font Font FontStruct XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A Font height + \fBvertSpace\fP
+international International Boolean C False
+justify Justify Justify XtjustifyLeft
+label Label String NULL
+leftBitmap LeftBitmap Pixmap XtUnspecifiedPixmap
+leftMargin leftMargin Dimension 4
+rightBitmap RightBitmap Pixmap XtUnspecifiedPixmap
+rightMargin rightMargin Dimension 4
+sensitive Sensitive Boolean True
+vertSpace VertSpace int 25
+width Width Dimension A TextWidth + margins
+.sp 3p
+_
+.TE
+.As
+.IP \fBcallback\fP 1.5i
+All callback functions on this list are called when the SimpleMenu
+\fInotifies\fP this entry that the user has selected it.
+.Dc
+.IP \fBfont\fP 1.5i
+The text font to use when displaying the \fBlabel\fP, when the
+\fBinternational\fP resource is \fBfalse\fP.
+.IP \fBfontSet\fP 1.5i
+The text font set to use when displaying the \fBlabel\fP, when the
+\fBinternational\fP resource is \fBtrue\fP.
+.IP \fBforeground\fP 1.5i
+A pixel value which indexes the SimpleMenu's colormap to derive the
+foreground color of the menu entry's window. This color is also
+used to render all 1's in the left and right \fBbitmaps\fP.
+.Hw
+Keep in mind that the SimpleMenu widget will force the width of all
+menu entries to be the width of the longest entry.
+.In
+.IP \fBjustify\fP 1.5i
+How the label is to be rendered between the left and right margins when
+the space is wider than the actual text. This resource may be
+specified with the values \fBXtJustifyLeft\fP, \fBXtJustifyCenter\fP,
+or \fBXtJustifyRight\fP. When specifying the justification from a
+resource file the values \fBleft\fP, \fBcenter\fP, or \fBright\fP may be
+used.
+.IP \fBlabel\fP 1.5i
+This is a the string that will be displayed in the menu entry. The
+exact location of this string within the bounds of the menu entry is
+controlled by the \fBleftMargin\fP, \fBrightMargin\fP, \fBvertSpace\fP,
+and \fBjustify\fP resources.
+.IP \fBleftBitmap\fP 1.5i
+.br
+.ns
+.IP \fBrightBitmap\fP 1.5i
+This is a name of a bitmap to display in the left or right margin of the
+menu entry. All 1's in the bitmap will be rendered in the foreground
+color, and all 0's will be drawn in the background color of the
+SimpleMenu widget. It is the
+programmers' responsibility to make sure that the menu entry is tall
+enough, and the appropriate margin wide enough to accept the bitmap.
+If care is not taken the bitmap may extend into another menu entry, or
+into this entry's label.
+.IP \fBleftMargin\fP 1.5i
+.br
+.ns
+.IP \fBrightMargin\fP 1.5i
+This is the amount of space (in pixels) that will be left between the
+edge of the menu entry and the label string.
+.Se
+.IP \fBvertSpace\fP 1.5i
+This is the amount of vertical padding, expressed as a percentage of
+the height of the font, that is to be placed around the label of a
+menu entry.. The label and bitmaps are always centered vertically
+within the menu. The default value for this
+resource (25) causes the default height to be 125% of the height of the
+font.
diff --git a/specs/Xaw/SmeLine b/specs/Xaw/SmeLine
new file mode 100644
index 0000000..5b87cd9
--- /dev/null
+++ b/specs/Xaw/SmeLine
@@ -0,0 +1,72 @@
+.\" $Xorg: SmeLine,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+SmeLine Object
+.LP
+.XS
+ SmeLine Object
+.XE
+.IN "SmeLine object" "" "@DEF@"
+.sp
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/SmeLine.h>
+.IN "SmeLine.h" ""
+Class Header file <X11/Xaw/SmeLineP.h>
+.IN "SmeLineP.h" ""
+Class smeLineObjectClass
+.IN "smeLineObjectClass" ""
+Class Name SmeLine
+.IN "SmeLine object" "class name"
+Superclass Sme
+.De
+.sp
+.LP
+The SmeLine object is used to add a horizontal line or menu separator to
+a menu. Since each SmeLine is an independent object, the application
+is able to change the color, height, and other attributes of the SmeLine
+objects on an entry by entry basis. This object is not selectable, and
+will not highlight when the pointer cursor is over it.
+.NH 3
+Resources
+.IN "SmeLine object" "resources"
+.LP
+The resources associated with the SmeLine object are defined in this section,
+and affect only the single menu entry specified by this object.
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+destroyCallback Callback XtCallbackList NULL
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension \fBlineWidth\fP
+international International Boolean C False
+lineWidth LineWidth Dimension 1
+stipple Stipple Pixmap XtUnspecifiedPixmap
+width Width Dimension 1
+.sp 3p
+_
+.TE
+.Dc
+.IP \fBforeground\fP 1.5i
+A pixel value which indexes the SimpleMenu's colormap to derive the
+foreground color used to draw the separator line.
+.Hw
+Keep in mind that the SimpleMenu widget will force all menu items to
+be the width of the widest entry. Thus, setting the width is generally not
+very important.
+.Ix
+.IP \fBlineWidth\fP 1.5i
+The width of the horizontal line that is to be displayed.
+.IP \fBstipple\fP 1.5i
+If a bitmap is specified for this resource, the line will be stippled
+through it. This allows the menu separator to be rendered as something
+more exciting than just a line. For instance, if you define a stipple
+that is a chain link, then your menu separators will look like chains.
diff --git a/specs/Xaw/StripChart b/specs/Xaw/StripChart
new file mode 100644
index 0000000..42b0ca5
--- /dev/null
+++ b/specs/Xaw/StripChart
@@ -0,0 +1,160 @@
+.\" $Xorg: StripChart,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+StripChart Widget
+.XS
+ StripChart Widget
+.XE
+.IN "StripChart widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <Xaw/StripChart.h>
+.IN "StripChart.h" ""
+Class Header file <Xaw/StripCharP.h>
+.IN "StripCharP.h" ""
+Class stripChartWidgetClass
+.IN "stripChartWidgetClass" ""
+Class Name StripChart
+.IN "StripChart widget" "class name"
+Superclass Simple
+.sp
+.De
+.LP
+The StripChart widget is used to provide a roughly real
+time graphical chart of a single value. For example,
+it is used by the common client program \fBxload\fP
+to provide a graph of processor load. The StripChart
+reads data from an application, and updates the chart
+at the \fBupdate\fP interval specified.
+.NH 3
+Resources
+.LP
+When creating a StripChart widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "StripChart widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+foreground Foreground Pixel XtDefaultForeground
+getValue Callback XtCallbackList NULL
+height Height Dimension 120
+highlight Foreground Pixel XtDefaultForeground
+insensitiveBorder Insensitive Pixmap GreyPixmap
+international International Boolean C False
+jumpScroll JumpScroll int A half the width of the widget
+mappedWhenManaged MappedWhenManaged Boolean True
+minScale Scale int 1
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+screen Screen Pointer R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+update Interval int 10
+width Width Dimension 120
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Cm
+.Cu
+.Cn
+.Dp
+.Dc
+.IP \fBforeground\fP 1.5i
+A pixel value which indexes the widget's colormap to derive the color
+that will be used to draw the graph.
+.IP \fBgetValue\fP 1.5i
+A list of callback functions to call every \fBupdate\fP seconds.
+This list should contain one function, which returns the
+value to be graphed by the StripChart widget. The following
+section describes the procedural interface. Behavior when this list has
+more than one function is undefined.
+.Hw
+.IP \fBhighlight\fP 1.5i
+A pixel value which indexes the widget's colormap to derive the color
+that will be used to draw the scale lines on the graph.
+.Ib
+.Ix
+.IP \fBjumpScroll\fP 1.5i
+When the graph reaches the right edge of the window it must be
+scrolled to the left. This resource specifies the number of pixels
+it will jump. Smooth scrolling can be achieved by setting this resource
+to 1.
+.Mm
+.IP \fBminScale\fP 1.5i
+The minimum scale for the graph. The number of divisions on the graph
+will always be greater than or equal to this value.
+.Pf
+.Pb
+.Sc
+.Se
+.Tr
+.IP \fBupdate\fP
+The number of seconds between graph updates. Each update is
+represented on the graph as a 1 pixel wide line. Every \fBupdate\fP seconds
+the \fBgetValue\fP procedure will be used to get a new graph point,
+and this point will be added to the right end of the StripChart.
+.Xy
+.NH 3
+Getting the StripChart Value
+.IN "StripChart widget" "getting the value"
+.LP
+The StripChart widget will call the application routine passed to it
+as the \fBgetValue\fP callback function every \fBupdate\fP seconds to
+obtain another point for the StripChart graph.
+.LP
+The calling interface for the \fBgetValue\fP callback is:
+.IN "StripChart widget" "getValue callback" "@DEF@"
+.FD 0
+void (*\fIgetValueProc\fP)(\fIw\fP, \fIclient_data\fP, \fIvalue\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIvalue\fP; /* double * */
+.FN
+.IP \fIw\fP 1i
+Specifies the StripChart widget.
+.IP \fIclient_data\fP 1i
+Specifies the client data.
+.IP \fIvalue\fP 1i
+Returns a pointer to a double. The application should set the address
+pointed to by this argument to a double containing the value to be
+graphed on the StripChart.
+.LP
+This function is used by the StripChart to call an application routine.
+The routine will pass the value to be graphed back to the the StripChart
+in the \fBvalue\fP field of this routine.
+
diff --git a/specs/Xaw/TPage_Credits b/specs/Xaw/TPage_Credits
new file mode 100644
index 0000000..70418c6
--- /dev/null
+++ b/specs/Xaw/TPage_Credits
@@ -0,0 +1,153 @@
+.\" $Xorg: TPage_Credits,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.ds CH
+.ds CF
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 5
+\s+2\fB\*(xW\fP\s-2
+
+\s+1\fBX Window System\fP\s-1
+
+\s+1\fBX Version 11, Release 6.4\fP\s-1
+
+.sp 6
+.ce 4
+Chris D. Peterson
+.sp 6p
+formerly MIT X Consortium
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+X Window System is a trademark of X Consortium, Inc.
+.LP
+Copyright \(co 1985, 1986, 1987, 1988, 1989, 1991, 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.LP
+Copyright \(co 1985, 1986, 1987, 1988, 1989, 1991
+Digital Equipment Corporation, Maynard, Massachusetts.
+.LP
+Permission to use, copy, modify and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice appears in all copies and that both that copyright notice and this
+permission notice appear in supporting documentation, and that the name of
+Digital not be used in in advertising or publicity pertaining
+to distribution of the software without specific, written prior permission.
+Digital makes no representations about the suitability of the
+software described herein for any purpose.
+It is provided ``as is'' without express or implied warranty.
+.ps 11
+.nr PS 11
+.bp 5
+.af PN i
+.ds CF \fB\\n(PN\fP
+.XS v
+Acknowledgments
+.XE
+\&
+.ce 3
+\s+1\fBAcknowledgments\fP\s-1
+.sp 2
+.na
+.LP
+Many thanks go to Ralph Swick (Project Athena / Digital) who has
+contributed much time and effort to this widget set. Previous
+versions of the widget set are largely due to his time and effort.
+Many of the improvements that I have been able to make are because he
+provided a solid foundation to build upon. While much of the effort
+has been Ralph's, many other people have contributed to the code.
+.LP
+.Ds
+Mark Ackerman (formerly Project Athena)
+Donna Converse (MIT X Consortium)
+Jim Fulton (formerly MIT X Consortium)
+Loretta Guarino-Reid (Digital WSL)
+Charles Haynes (Digital WSL)
+Rich Hyde (Digital WSL)
+Mary Larson (Digital UEG)
+Joel McCormack (Digital WSL)
+Ron Newman (formerly Project Athena)
+Jeanne Rich (Digital WSL)
+Terry Weissman (formerly Digital WSL)
+.De
+.LP
+While not much remains of the X10 toolkit, many of the ideas for this
+widget set come from that original version. The design and
+implementation of the X10 toolkit were done by:
+.LP
+.Ds
+Mike Gancarz (formerly Digital UEG)
+Charles Haynes (Digital WSL)
+Phil Karlton (formerly Digital WSL)
+Kathleen Langone (Digital UEG)
+Mary Larson (Digital UEG)
+Ram Rao (Digital UEG)
+Smokey Wallace (formerly Digital WSL)
+Terry Weissman (formerly Digital WSL)
+.De
+.LP
+I have used the formatting ideas, and some of the words from previous
+versions of this document. The X11R3 Athena widget document was
+written by:
+.LP
+.Ds
+Ralph R. Swick (Project Athena/ Digital)
+Terry Weissman (formerly Digital WSL)
+Al Mento (Digital UEG)
+.De
+.LP
+Putting this manual together was a major task in and of itself. I
+would like to thank Ralph Swick, Donna Converse, and Jim Fulton for
+taking the time to help convert my technical knowledge into legible
+text. A special thanks to Jean Diaz (O'Reilly and Associates) for
+spending nearly a month with me working out all the annoying little
+details.
+.sp
+.Ds 0
+Chris D. Peterson
+MIT X Consortium 1989
+.De
+.LP
+.sp
+The R5 edition of this document has been edited by the research staff of
+the MIT X Consortium, with significant contributions by Jim Fulton (NCD).
+.sp
+.Ds 0
+Donna Converse
+MIT X Consortium 1991
+.De
+.LP
+.sp
+The R6 edition of this document has been edited to reflect changes
+brought about by research staff of the Omron Corporation, with special
+recognition to Li Yuhong, Seiji Kuwari, and Hiroshi Kuribayashi for
+the X11R5/contrib/lib/Xaw internationalization that inspired this version.
+.sp
+.Ds 0
+Frank Sheeran
+Omron Corporation 1994
+.De
diff --git a/specs/Xaw/Template b/specs/Xaw/Template
new file mode 100644
index 0000000..b5dc050
--- /dev/null
+++ b/specs/Xaw/Template
@@ -0,0 +1,426 @@
+.\" $Xorg: Template,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+All Athena widgets have three separate files associated with them:
+.LP
+.IP \(bu 3
+A \*Qpublic\*U header file containing declarations needed by
+applications programmers
+.IP \(bu 3
+A \*Qprivate\*U header file containing additional declarations needed by the
+widget and any subclasses
+.IP \(bu 3
+A source code file containing the implementation of the widget
+.LP
+This separation of functions into three files is suggested for all
+widgets, but nothing in the Toolkit actually requires this format. In
+particular, a private widget created for a single application may easily
+combine the \*Qpublic\*U and \*Qprivate\*U header files into a single file, or
+merge the contents into another application header file. Similarly, the
+widget implementation can be merged into other application code.
+.LP
+.sp
+In the following example, the public header file
+.Pn < X11/Xaw/Template.h >,
+the private header file
+.Pn < X11/Xaw/TemplateP.h >
+and the source code file
+.Pn < X11/Xaw/Template.c >
+will be modified to produce the \*QWindowWidget\*U described above.
+In each case, the files have been designed so that a global string
+replacement of ``Template'' and ``template''
+with the name of your new widget, using
+the appropriate case, can be done.
+.NH 2
+Public Header File
+.LP
+The public header file contains declarations that will be required by any
+application module that needs to refer to the widget; whether to create
+an instance of the class, to perform an
+.PN XtSetValues
+operation, or to call a public routine implemented by the widget class.
+.LP
+The contents of the Template public header file,
+.Pn < X11/Xaw/Template.h >,
+are:
+.de CB
+.sp
+.Ds 0
+.SM
+.vs 10
+.in +.25i
+.TA .25i 1.4i 2.4i 2.75i 3.5i
+.ta .25i 1.4i 2.4i 2.75i 3.5i
+..
+.de CE
+.NL
+.vs 13
+.De
+.\".in -.25i
+..
+.CB
+.\".so ../../lib/Xaw/Template.h
+/* XConsortium: Template.h,v 1.2 88/10/25 17:22:09 swick Exp $ */
+/* Copyright (c) X Consortium 1987, 1988 */
+
+#ifndef _Template_h
+#define _Template_h
+
+/****************************************************************
+ *
+ * Template widget
+ *
+ ****************************************************************/
+
+/* Resources:
+
+ Name Class RepType Default Value
+ ---- ----- ------- -------------
+ background Background Pixel XtDefaultBackground
+ border BorderColor Pixel XtDefaultForeground
+ borderWidth BorderWidth Dimension 1
+ destroyCallback Callback Pointer NULL
+ height Height Dimension 0
+ mappedWhenManaged MappedWhenManaged Boolean True
+ sensitive Sensitive Boolean True
+ width Width Dimension 0
+ x Position Position 0
+ y Position Position 0
+
+*/
+
+/* define any special resource names here that are not in <X11/StringDefs.h> */
+
+#define XtNtemplateResource "templateResource"
+
+#define XtCTemplateResource "TemplateResource"
+
+/* declare specific TemplateWidget class and instance datatypes */
+
+typedef struct _TemplateClassRec* TemplateWidgetClass;
+typedef struct _TemplateRec* TemplateWidget;
+
+/* declare the class constant */
+
+extern WidgetClass templateWidgetClass;
+
+#endif /* _Template_h */
+.CE
+.LP
+.sp
+You will notice that most of this file is documentation. The crucial
+parts are the last 8 lines where macros for any private resource names
+and classes are defined and where the widget class datatypes and class
+record pointer are declared.
+.LP
+For the \*QWindowWidget\*U, we want 2 drawing colors, a callback list for
+user input and an
+\fBexposeCallback\fP callback list, and we will declare three
+convenience procedures, so we need to add
+.LP
+.sp
+.CB
+/* Resources:
+ ...
+ callback Callback Callback NULL
+ drawingColor1 Color Pixel XtDefaultForeground
+ drawingColor2 Color Pixel XtDefaultForeground
+ exposeCallback Callback Callback NULL
+ font Font XFontStruct* XtDefaultFont
+ ...
+ */
+
+#define XtNdrawingColor1 "drawingColor1"
+#define XtNdrawingColor2 "drawingColor2"
+#define XtNexposeCallback "exposeCallback"
+
+extern Pixel WindowColor1(\|/* Widget */\|);
+extern Pixel WindowColor2(\|/* Widget */\|);
+extern Font\ \ WindowFont(\|/* Widget */\|);
+.CE
+.LP
+Note that we have chosen to call the input callback list by the generic
+name, \fBcallback\fP, rather than a specific name. If widgets that define
+a single user-input action all choose the same resource name then there
+is greater possibility for an application to switch between widgets of
+different types.
+.NH 2
+Private Header File
+.LP
+The private header file contains the complete declaration of the class
+and instance structures for the widget and any additional private data
+that will be required by anticipated subclasses of the widget.
+Information in the private header file is normally hidden from the
+application and is designed to be accessed only through other public
+procedures; e.g.
+.PN XtSetValues .
+.LP
+The contents of the Template private header file,
+.Pn < X11/Xaw/TemplateP.h >,
+are:
+.CB
+.\".so ../../lib/Xaw/TemplateP.h
+/* XConsortium: TemplateP.h,v 1.2 88/10/25 17:31:47 swick Exp $ */
+
+/* Copyright (c) X Consortium 1987, 1988
+ */
+
+#ifndef _TemplateP_h
+#define _TemplateP_h
+
+#include <X11/Xaw/Template.h>
+/* include superclass private header file */
+#include <X11/CoreP.h>
+
+/* define unique representation types not found in <X11/StringDefs.h> */
+
+#define XtRTemplateResource "TemplateResource"
+
+typedef struct {
+ int empty;
+} TemplateClassPart;
+
+typedef struct _TemplateClassRec {
+ CoreClassPart core_class;
+ TemplateClassPart template_class;
+} TemplateClassRec;
+
+extern TemplateClassRec templateClassRec;
+
+typedef struct {
+ /* resources */
+ char* resource;
+ /* private state */
+} TemplatePart;
+
+typedef struct _TemplateRec {
+ CorePart core;
+ TemplatePart template;
+} TemplateRec;
+
+#endif /* _TemplateP_h */
+.CE
+.LP
+.sp
+The private header file includes the private header file of its
+superclass, thereby exposing the entire internal structure of the widget.
+It may not always be advantageous to do this; your own project
+development style will dictate the appropriate level of detail to expose
+in each module.
+.LP
+The \*QWindowWidget\*U needs to declare two fields in its instance structure to
+hold the drawing colors, a resource field for the font and a field for the
+expose and user input callback lists:
+.CB
+typedef struct {
+ /* resources */
+ Pixel color_1;
+ Pixel color_2;
+ XFontStruct* font;
+ XtCallbackList expose_callback;
+ XtCallbackList input_callback;
+ /* private state */
+ /* (none) */
+} WindowPart;
+.CE
+.NH 2
+Widget Source File
+.LP
+The source code file implements the widget class itself. The unique
+part of this file is the declaration and initialization of the
+widget class record structure and the declaration of all resources and
+action routines added by the widget class.
+.LP
+The contents of the Template implementation file,
+.Pn < X11/Xaw/Template.c >,
+are:
+.CB
+.\".so ../../lib/Xaw/Template.c
+/* XConsortium: Template.c,v 1.2 88/10/25 17:40:25 swick Exp $ */
+
+/* Copyright (c) X Consortium 1987, 1988
+ */
+
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+#include "TemplateP.h"
+
+static XtResource resources[] = {
+#define offset(field) XtOffsetOf(TemplateRec, template.field)
+ /* {name, class, type, size, offset, default_type, default_addr}, */
+ { XtNtemplateResource, XtCTemplateResource, XtRTemplateResource,
+ sizeof(char*), offset(resource), XtRString, (XtPointer) "default" },
+#undef offset
+};
+
+static void TemplateAction(/* Widget, XEvent*, String*, Cardinal* */);
+
+static XtActionsRec actions[] =
+{
+ /* {name, procedure}, */
+ {"template", TemplateAction},
+};
+
+static char translations[] =
+" <Key>: template(\|) \\n\\
+";
+
+TemplateClassRec templateClassRec = {
+ { /* core fields */
+ /* superclass */ (WidgetClass) &widgetClassRec,
+ /* class_name */ "Template",
+ /* widget_size */ sizeof(TemplateRec),
+ /* class_initialize */ NULL,
+ /* class_part_initialize */ NULL,
+ /* class_inited */ FALSE,
+ /* initialize */ NULL,
+ /* initialize_hook */ NULL,
+ /* realize */ XtInheritRealize,
+ /* actions */ actions,
+ /* num_actions */ XtNumber(actions),
+ /* resources */ resources,
+ /* num_resources */ XtNumber(resources),
+ /* xrm_class */ NULLQUARK,
+ /* compress_motion */ TRUE,
+ /* compress_exposure */ TRUE,
+ /* compress_enterleave */ TRUE,
+ /* visible_interest */ FALSE,
+ /* destroy */ NULL,
+ /* resize */ NULL,
+ /* expose */ NULL,
+ /* set_values */ NULL,
+ /* set_values_hook */ NULL,
+ /* set_values_almost */ XtInheritSetValuesAlmost,
+ /* get_values_hook */ NULL,
+ /* accept_focus */ NULL,
+ /* version */ XtVersion,
+ /* callback_private */ NULL,
+ /* tm_table */ translations,
+ /* query_geometry */ XtInheritQueryGeometry,
+ /* display_accelerator */ XtInheritDisplayAccelerator,
+ /* extension */ NULL
+ },
+ { /* template fields */
+ /* empty */ 0
+ }
+};
+
+WidgetClass templateWidgetClass = (WidgetClass)&templateClassRec;
+
+.CE
+The resource list for the \*QWindowWidget\*U might look like the following:
+.CB
+static XtResource resources[] = {
+#define offset(field) XtOffsetOf(WindowWidgetRec, window.field)
+ /* {name, class, type, size, offset, default_type, default_addr}, */
+ { XtNdrawingColor1, XtCColor, XtRPixel, sizeof(Pixel),
+ offset(color_1), XtRString, XtDefaultForeground },
+ { XtNdrawingColor2, XtCColor, XtRPixel, sizeof(Pixel),
+ offset(color_2), XtRString, XtDefaultForeground },
+ { XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct*),
+ offset(font), XtRString, XtDefaultFont },
+ { XtNexposeCallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
+ offset(expose_callback), XtRCallback, NULL },
+ { XtNcallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
+ offset(input_callback), XtRCallback, NULL },
+#undef offset
+};
+.CE
+.LP
+The user input callback will be implemented by an action procedure which
+passes the event pointer as call_data. The action procedure
+is declared as:
+.CB
+/* ARGSUSED */
+static void InputAction(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+ String *params; /* unused */
+ Cardinal *num_params; /* unused */
+{
+ XtCallCallbacks(w, XtNcallback, (XtPointer)event);
+}
+
+static XtActionsRec actions[] =
+{
+ /* {name, procedure}, */
+ {"input", InputAction},
+};
+.CE
+.LP
+and the default input binding will be to execute the input callbacks on
+.PN KeyPress
+and
+.PN ButtonPress :
+.LP
+.CB
+static char translations[] =
+" <Key>: input(\|) \\n\\
+ <BtnDown>: input(\|) \\
+";
+.CE
+.LP
+In the class record declaration and initialization, the only field that
+is different from the Template is the expose procedure:
+.CB
+/* ARGSUSED */
+static void Redisplay(w, event, region)
+ Widget w;
+ XEvent *event; /* unused */
+ Region region;
+{
+ XtCallCallbacks(w, XtNexposeCallback, (XtPointer)region);
+}
+
+WindowClassRec windowClassRec = {
+
+ ...
+
+ /* expose */ Redisplay,
+.CE
+.LP
+.sp
+The \*QWindowWidget\*U will also declare three public procedures to return the
+drawing colors and the font id, saving the application the effort of
+constructing an argument list for a call to
+.PN XtGetValues :
+.LP
+.CB
+Pixel WindowColor1(w)
+ Widget w;
+{
+ return ((WindowWidget)w)->window.color_1;
+}
+
+Pixel WindowColor2(w)
+ Widget w;
+{
+ return ((WindowWidget)w)->window.color_2;
+}
+
+Font WindowFont(w)
+ Widget w;
+{
+ return ((WindowWidget)w)->window.font->fid;
+}
+.CE
+.LP
+The \*QWindowWidget\*U is now complete. The application can retrieve the two
+drawing colors from the widget instance by calling either
+.PN XtGetValues ,
+or the \fBWindowColor\fP functions. The actual window created for the
+\*QWindowWidget\*U is available by calling the
+.PN XtWindow
+function.
+.ds LH
+.ds CH
+.ds RH
+.nr PN +1
+.XS
+Index
+.XE
+.tm .pn \n(PN
+.nr PN -1
+.\" print Table of Contents
+.if o .bp \" blank page to make count even
+.bp 3
+.af PN i
+.PX
diff --git a/specs/Xaw/Text b/specs/Xaw/Text
new file mode 100644
index 0000000..b2b0671
--- /dev/null
+++ b/specs/Xaw/Text
@@ -0,0 +1,123 @@
+.\" $Xorg: Text,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+Text Widget
+.LP
+.XS
+ Text Widget
+.XE
+.IN "Text widget" "" "@DEF@"
+.LP
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/Text.h>
+.IN "Text.h" ""
+Class Header file <X11/Xaw/TextP.h>
+.IN "TextP.h" ""
+Class textWidgetClass
+.IN "textWidgetClass" ""
+Class Name Text
+.IN "Text widget" "class name"
+Superclass Simple
+.De
+.sp 1
+.LP
+The Text widget is the glue that binds all the other pieces together, it
+maintains the internal state of the displayed text, and acts as a
+mediator between the source and sink.
+.LP
+This section lists the resources that are actually part of the
+Text widget, and explains the functionality provided by each.
+.NH 3
+Resources
+.LP
+When creating an Text widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Text widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1.1i) lw(.5i) lw(1.9i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+autoFill AutoFill Boolean False
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+bottomMargin Margin Position 2
+colormap Colormap Colormap Parent's Colormap
+cursor Cursor Cursor XC_xterm
+cursorName Cursor String NULL
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+displayCaret Output Boolean True
+displayPosition TextPosition XawTextPosition 0
+height Height Dimension A Font height + margins
+insensitiveBorder Insensitive Pixmap GreyPixmap
+insertPosition TextPosition int 0
+leftMargin Margin Position 2
+mappedWhenManaged MappedWhenManaged Boolean True
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+resize Resize XawTextResizeMode XawtextResizeNever
+rightMargin Margin Position 4
+screen Screen Pointer R Parent's Screen
+scrollHorizontal Scroll ScrollMode XawtextScrollNever
+scrollVertical Scroll XawTextScrollMode XawtextScrollNever
+selectTypes SelectTypes XawTextSelectType* See above
+sensitive Sensitive Boolean True
+textSink TextSink Widget NULL
+textSource TextSource Widget NULL
+topMargin Margin Position 2
+translations Translations TranslationTable See above
+unrealizeCallback Callback XtCallbackList NULL
+width Width Dimension 100
+wrap Wrap WrapMode XawtextWrapNever
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Af Bold
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Tm Bold
+.Cm
+.Cu
+.Cn
+.Dp
+.Dc
+.Tc Bold
+.Td Bold
+.Hw
+.Ib
+.Ti Bold
+.Mm
+.Pf
+.Pb
+.Tz Bold
+.Sc
+.Ts Bold
+.St Bold
+.Se
+.To Bold
+.Tr
+.Tw Bold
+.Tu Bold
+.Xy
diff --git a/specs/Xaw/TextActions b/specs/Xaw/TextActions
new file mode 100644
index 0000000..aa76f40
--- /dev/null
+++ b/specs/Xaw/TextActions
@@ -0,0 +1,506 @@
+.\" $Xorg: TextActions,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+Text Widget Actions
+.LP
+.IN "Text widget" "actions"
+.XS
+ Actions Supported by all Text Widgets
+.XE
+.IN "Text widget" "actions" "@DEF@"
+
+All editing functions are performed by translation manager actions that may
+be specified through the \fBtranslations\fP resource in the Text widget.
+.LP
+.sp
+.Ds 0
+.TA .5i 2.5i 3i
+.ta .5i 2.5i 3i
+Insert Point Movement Delete
+ forward-character delete-next-character
+ backward-character delete-previous-character
+ forward-word delete-next-word
+ backward-word delete-previous-word
+ forward-paragraph delete-selection
+ backward-paragraph
+ beginning-of-line
+ end-of-line Selection
+ next-line select-word
+ previous-line select-all
+ next-page select-start
+ previous-page select-adjust
+ beginning-of-file select-end
+ end-of-file extend-start
+ scroll-one-line-up extend-adjust
+ scroll-one-line-down extend-end
+ insert-selection
+
+
+Miscellaneous New Line
+ redraw-display newline-and-indent
+ insert-file newline-and-backup
+ insert-char newline
+ insert-string
+ display-caret
+ focus-in Kill
+ focus-in kill-word
+ search backward-kill-word
+ multiply kill-selection
+ form-paragraph kill-to-end-of-line
+ transpose-characters kill-paragraph
+ no-op kill-to-end-of-paragraph
+ XawWMProtocols
+ reconnect-im
+.De
+.sp
+.LP
+Most of the actions take no arguments, and unless otherwise noted you
+may assume this to be the case.
+.LP
+.NH 3
+Cursor Movement Actions\fP
+.LP
+.sp
+.IP forward-character(\|) 2.0i
+.br
+.ns
+.IP backward-character(\|) 2.0i
+These actions move the insert point forward or backward one character in
+the buffer. If the insert point is at the end or beginning of a line
+this action will move the insert point to the next (or previous) line.
+.IP forward-word(\|) 2.0i
+.br
+.ns
+.IP backward-word(\|) 2.0i
+These actions move the insert point to the next or previous word boundary.
+A word boundary is defined as a Space, Tab or Carriage Return.
+.IP forward-paragraph(\|) 2.0i
+.br
+.ns
+.IP backward-paragraph(\|) 2.0i
+These actions move the insert point to the next or previous paragraph boundary.
+A paragraph boundary is defined as two Carriage Returns in a row with only
+Spaces or Tabs between them.
+.IP beginning-of-line(\|) 2.0i
+.br
+.ns
+.IP end-of-line(\|) 2.0i
+These actions move to the beginning or end of the current line. If the
+insert point is already at the end or beginning of the line then no action is taken.
+.IP next-line(\|) 2.0i
+.br
+.ns
+.IP previous-line(\|) 2.0i
+These actions move the insert point up or down one line. If the insert
+point is currently N characters from the beginning of the line then it
+will be N characters from the beginning of the next or previous line.
+If N is past the end of the line, the insert point is placed at the end
+of the line.
+.IP next-page(\|) 2.0i
+.br
+.ns
+.IP previous-page(\|) 2.0i
+These actions move the insert point up or down one page in the file.
+One page is defined as the current height of the text widget. The
+insert point is always placed at the first character of the top line by
+this action.
+.IP beginning-of-file(\|) 2.0i
+.br
+.ns
+.IP end-of-file(\|) 2.0i
+These actions place the insert point at the beginning or end of the
+current text buffer. The text widget is then scrolled the minimum
+amount necessary to make the new insert point location visible.
+.IP scroll-one-line-up(\|) 2.0i
+.br
+.ns
+.IP scroll-one-line-down(\|) 2.0i
+These actions scroll the current text field up or down by one line.
+They do not move the insert point. Other than the scrollbars this is
+the only way that the insert point may be moved off of the visible text
+area. The widget will be scrolled so that the insert point is back on
+the screen as soon as some other action is executed.
+.NH 3
+Delete Actions
+.LP
+.sp
+.IP delete-next-character(\|) 2.0i
+.br
+.ns
+.IP delete-previous-character(\|) 2.0i
+These actions remove the character immediately before or after the
+insert point. If a Carriage Return is removed then the next line is
+appended to the end of the current line.
+.IP delete-next-word(\|) 2.0i
+.br
+.ns
+.IP delete-previous-word(\|) 2.0i
+These actions remove all characters between the insert point location and
+the next word boundary. A word boundary is defined as a Space, Tab or
+Carriage Return.
+.IP delete-selection(\|) 2.0i
+This action removes all characters in the current selection.
+The selection can be set with the selection actions.
+.NH 3
+Selection Actions
+.LP
+.sp
+.IP select-word(\|) 2.0i
+This action selects the word in which the insert point is currently located.
+If the insert point is between words then it will select the previous word.
+.IP select-all(\|) 2.0i
+This action selects the entire text buffer.
+.IP select-start(\|) 2.0i
+This action sets the insert point to the current pointer location (if
+triggered by a button event) or text cursor location (if triggered by
+a key event). It
+will then begin a selection at this location. If many of these
+selection actions occur quickly in succession then the selection count
+mechanism will be invoked (see the section titled \fBText Selections for
+Application Programmers\fP for details).
+.IP select-adjust(\|) 2.0i
+This action allows a selection started with the \fIselect-start\fP
+action to be modified, as described above.
+.IP select-end(\fIname\fP[,\fIname\fP,...]) 2.0i
+This action ends a text selection that began with the \fIselect-start\fP
+action, and asserts ownership of the selection or selections specified.
+A \fIname\fP can be a selection (e.g., \fBPRIMARY\fP) or a cut buffer
+(e.g., \fBCUT_BUFFER0\fP). Note that case is important. If no
+\fInames\fP are specified, \fBPRIMARY\fP is asserted.
+.IP extend-start(\|) 2.0i
+This action finds the nearest end of the current selection, and moves it
+to the current pointer location (if triggered by a button event) or text
+cursor location (if triggered by a key event).
+.IP extend-adjust(\|) 2.0i
+This action allows a selection started with an \fIextend-start\fP action
+to be modified.
+.IP extend-end(\fIname\fP[,\fIname\fP,...]) 2.0i
+This action ends a text selection that began with the \fIextend-start\fP
+action, and asserts ownership of the selection or selections specified.
+A \fIname\fP can be a selection (e.g. \fBPRIMARY\fP) or a cut buffer
+(e.g \fBCUT_BUFFER0\fP). Note that case is important. If no names are
+given, \fBPRIMARY\fP is asserted.
+.IP insert-selection(\fIname\fP[,\fIname\fP,...]) 2.0i
+This action retrieves the value of the first (left-most) named selection
+that exists or the cut buffer that is not empty and inserts it into the
+Text widget at the current insert point location. A \fIname\fP can be a
+selection (e.g. \fBPRIMARY\fP) or a cut buffer (e.g \fBCUT_BUFFER0\fP).
+Note that case is important.
+.NH 3
+The New Line Actions
+.LP
+.sp
+.IP newline-and-indent(\|) 2.0i
+This action inserts a newline into the text and adds spaces to
+that line to indent it to match the previous line.
+.IP newline-and-backup(\|) 2.0i
+This action inserts a newline into the text \fIafter\fP the insert point.
+.IP newline(\|) 2.0i
+This action inserts a newline into the text \fIbefore\fP the insert point.
+.NH 3
+Kill and Actions
+.LP
+.sp
+.IP kill-word(\|) 2.0i
+.br
+.ns
+.IP backward-kill-word(\|) 2.0i
+These actions act exactly like the \fIdelete-next-word\fP and
+\fIdelete-previous-word\fP actions, but they stuff the word that was
+killed into the kill buffer (\fBCUT_BUFFER_1\fP).
+.IP kill-selection(\|) 2.0i
+This action deletes the current selection and stuffs the deleted text into
+the kill buffer (\fBCUT_BUFFER_1\fP).
+.IP kill-to-end-of-line(\|) 2.0i
+This action deletes the entire line to the right of the insert point position,
+and stuffs the deleted text into the kill buffer (\fBCUT_BUFFER_1\fP).
+.IP kill-paragraph(\|) 2.0i
+This action deletes the current paragraph, if between paragraphs it deletes
+the paragraph above the insert point, and stuffs the deleted text into
+the kill buffer (\fBCUT_BUFFER_1\fP).
+.IP kill-to-end-of-paragraph(\|) 2.0i
+This action deletes everything between the current insert point location and
+the next paragraph boundary, and stuffs the deleted text into the kill
+buffer (\fBCUT_BUFFER_1\fP).
+.NH 3
+Miscellaneous Actions
+.LP
+.sp 1
+.IP redraw-display(\|) 2.0i
+This action recomputes the location of all the text lines on the
+display, scrolls the text to vertically center the line containing the insert point
+on the screen, clears the entire screen, and redisplays it.
+.IP insert-file([\fIfilename\fP]) 2.0i
+This action activates the insert file popup. The \fIfilename\fP
+option specifies the default filename to put in the filename buffer of
+the popup. If no \fIfilename\fP is specified the buffer is empty
+at startup.
+.IP insert-char(\|) 2.0i
+This action may only be attached to a key event. When the
+\fBinternational\fP resource is \fBfalse\fP, this action
+calls XLookupString to translate the event into a (rebindable) Latin-1
+character (sequence) and inserts it into the text at the
+insert point. When the \fBinternational\fP resource is \fBtrue\fP,
+characters are passed to the input method via XwcLookupString, and any
+committed string returned is inserted into the text at the insert point.
+.IP insert-string(\fIstring\fP[,\fIstring\fP,...]) 2.0i
+This action inserts each \fIstring\fP into the text
+at the insert point location. Any \fIstring\fP
+beginning with the characters "0x" followed by an even
+number of hexadecimal digits is
+interpreted as a hexadecimal constant and the
+corresponding string is inserted instead. This
+hexadecimal string may represent up to 50 8-bit characters.
+ When the\fBinternational\fP resource is
+\fBtrue\fP, a hexadecimal string is intrepeted as
+being in a multi-byte encoding, and a hexadecimal
+or regular string will result in an error message
+if it is not legal in the current locale.
+.IP display-caret(\fIstate\fP,\fIwhen\fP) 2.0i
+This action allows the insert point to be turned on and off.
+The \fIstate\fP argument specifies the desired state of the insert point.
+This value may be any of the string
+values accepted for Boolean resources (e.g. \fBon\fP, \fBTrue\fP,
+\fBoff\fP, \fBFalse\fP, etc.). If no arguments are specified, the
+default value is \fBTrue\fP.
+The \fIwhen\fP argument specifies, for \fBEnterNotify\fP or \fBLeaveNotify\fP
+events whether or not the focus field in the event is to be examined.
+If the second argument is not specified, or specified as something other
+than \fBalways\fP then if the action is bound to an \fBEnterNotify\fP
+or \fBLeaveNotify\fP event, the action will be taken only if the focus
+field is \fBTrue\fP. An augmented binding that might be useful is:
+.LP
+.Ds 0
+.TA 2.0i 2.5i 4.0i
+.ta 2.0i 2.5i 4.0i
+ *Text.Translations: #override \\
+ <FocusIn>: display-caret(on) \\n\\
+ <FocusOut>: display-caret(off)
+.De
+.IP focus-in(\|) 2.0i
+.br
+.ns
+.IP focus-out(\|) 2.0i
+These actions do not currently do anything.
+.IP search(\fIdirection\fP,[\fIstring\fP]) 2.0i
+This action activates the search popup. The \fIdirection\fP must be
+specified as either \fBforward\fP or \fBbackward\fP. The string is
+optional and is used as an initial value for the \fISearch for\fP: string.
+For further explanation of the search widget see the section on
+\fBText Searches\fP.
+.IP multiply(\fIvalue\fP) 2.0i
+The multiply action allows the user to multiply the effects of many of
+the text actions. Thus the following action sequence
+\fImultiply(10) delete-next-word()\fP will delete 10 words. It does not
+matter whether these actions take place in one event or many events.
+Using the default translations the key sequence \fIControl-u,
+Control-d\fP will delete 4 characters.
+Multiply actions can be chained, thus \fImultiply(5)
+multiply(5)\fP is the same as \fImultiply(25)\fP. If the string
+\fBreset\fP is passed to the multiply action the effects of all previous
+multiplies are removed and a beep is sent to the display.
+.IP form-paragraph(\|) 2.0i
+This action removes all the Carriage Returns from the current
+paragraph and reinserts them so that each line is as long as possible, while
+still fitting on the current screen. Lines are broken at word boundaries if
+at all possible. This action currently works only on Text widgets
+that use ASCII text.
+.IP transpose-characters(\|) 2.0i
+This action will swap the position of the character to the left of the
+insert point with the character to the right of the insert point. The insert point will then
+be advanced one character.
+.IP no-op([\fIaction\fP]) 2.0i
+The no-op action makes no change to the text widget, and is mainly used
+to override translations. This action takes one optional argument. If
+this argument is \fIRingBell\fP then a beep is sent to the display.
+.IP XawWMProtocols([\fIwm_protocol_name\fP]) 2.0i
+.IN "XawWMProtocols"
+.sp
+This action is written specifically for the file insertion and the search
+and replace
+dialog boxes. This action is attached to those shells by the Text widget,
+in order to handle ClientMessage events with the WM_PROTOCOLS atom in the
+detail field. This action supports WM_DELETE_WINDOW on the Text widget
+popups, and may support other window manager protocols if necessary in
+the future. The popup will be dismissed if the window manager sends
+a WM_DELETE_WINDOW request and there are no parameters in the action
+call, which is the default. The popup will also be dismissed if the
+parameters include the string ``wm_delete_window,'' and the event is a
+ClientMessage event requesting dismissal or is not a ClientMessage event.
+This action is not sensitive to the case of the strings passed as parameters.
+.IP reconnect-im() 2.0i
+.IN "Input Method"
+When the \fBinternational\fP resource is \fBtrue\fP,
+input is usually passed to an input method, a separate
+process, for composing. Sometimes the connection to
+this process gets severed; this action will attempt to
+reconnect it. Causes for severage include network
+trouble, and the user explicitly killing one input
+method and starting a new one. This action may also
+establish first connection when the application is
+started before the input method.
+.NH 3
+Text Selections for Application Programmers
+.IN "Text widget" "Text Selections for Application Programmers"
+.LP
+The default behavior of the text selection array is described in the
+section called \fBText Selections for Users\fP. To modify the selections
+a programmer must construct a \fBXawTextSelectType\fP array (called the
+selection array), containing the selections desired, and pass this as
+the new value for the \fBselectionTypes\fP resource. The selection
+array may also be modified using the \fBXawTextSetSelectionArray\fP
+.IN "XawTextSetSelectionArray" ""
+function. All selection arrays must end with the value
+\fBXawselectNull\fP. The \fBselectionTypes\fP resource has no converter
+registered and cannot be modified through the resource manager.
+.LP
+The array contains a list of entries that will be called when the user
+attempts to select text in rapid succession with the \fIselect-start\fP
+action (usually by clicking a pointer button). The first entry in the
+selection array will be used when the \fIselect-start\fP action is
+initially called. The next entry will be used when \fIselect-start\fP
+is called again, and so on. If a timeout value (1/10 of a second) is
+exceeded, the the next \fIselect-start\fP action will begin at the top
+of the selection array. When \fBXawselectNull\fP is reached the array
+is recycled beginning with the first element.
+.TS
+lw(1.25i) lw(4.25i).
+T{
+\fBXawselectAll\fP
+.IN "XawselectAll" ""
+T} T{
+Selects the contents of the entire buffer.
+T}
+.sp 6p
+T{
+\fBXawselectChar\fP
+.IN "XawselectChar" ""
+T} T{
+Selects text characters as the pointer moves over them.
+T}
+.sp 6p
+T{
+\fBXawselectLine\fP
+.IN "XawselectLine" ""
+T} T{
+Selects the entire line.
+T}
+.sp 6p
+T{
+\fBXawselectNull\fP
+.IN "XawselectNull" ""
+T} T{
+Indicates the end of the selection array.
+T}
+.sp 6p
+T{
+\fBXawselectParagraph\fP
+.IN "XawselectParagraph" ""
+T} T{
+Selects the entire paragraph.
+T}
+.sp 6p
+T{
+\fBXawselectPosition\fP
+.IN "XawselectPosition" ""
+T} T{
+Selects the current pointer position.
+T}
+.sp 6p
+T{
+\fBXawselectWord\fP
+.IN "XawselectWord" ""
+T} T{
+Selects whole words as the pointer moves onto them.
+T}
+.TE
+.LP
+The default selectType array is:
+.LP
+.sp
+.Ds 0
+{XawselectPosition, XawselectWord, XawselectLine, XawselectParagraph, XawselectAll, XawselectNull}
+.De
+.sp
+.LP
+The selection array is not copied by the text widgets. The
+application must allocate space for the array and cannot deallocate or
+change it until the text widget is destroyed or until a new selection
+array is set.
+.NH 2
+Default Translation Bindings
+.LP
+.XS
+ Default Translation Bindings
+.XE
+.IN "Text widget" "default translations"
+The following translations are defaults built into every Text widget.
+They can be overridden, or replaced by specifying a new value for the
+Text widget's \fBtranslations\fP resource.
+.LP
+.sp
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+ Ctrl<Key>A: beginning-of-line(\|) \\n\\
+ Ctrl<Key>B: backward-character(\|) \\n\\
+ Ctrl<Key>D: delete-next-character(\|) \\n\\
+ Ctrl<Key>E: end-of-line(\|) \\n\\
+ Ctrl<Key>F: forward-character(\|) \\n\\
+ Ctrl<Key>G: multiply(Reset) \\n\\
+ Ctrl<Key>H: delete-previous-character(\|) \\n\\
+ Ctrl<Key>J: newline-and-indent(\|) \\n\\
+ Ctrl<Key>K: kill-to-end-of-line(\|) \\n\\
+ Ctrl<Key>L: redraw-display(\|) \\n\\
+ Ctrl<Key>M: newline(\|) \\n\\
+ Ctrl<Key>N: next-line(\|) \\n\\
+ Ctrl<Key>O: newline-and-backup(\|) \\n\\
+ Ctrl<Key>P: previous-line(\|) \\n\\
+ Ctrl<Key>R: search(backward) \\n\\
+ Ctrl<Key>S: search(forward) \\n\\
+ Ctrl<Key>T: transpose-characters(\|) \\n\\
+ Ctrl<Key>U: multiply(4) \\n\\
+ Ctrl<Key>V: next-page(\|) \\n\\
+ Ctrl<Key>W: kill-selection(\|) \\n\\
+ Ctrl<Key>Y: insert-selection(CUT_BUFFER1) \\n\\
+ Ctrl<Key>Z: scroll-one-line-up(\|) \\n\\
+ Ctrl<Key>\\: reconnect-im(\|) \\n\\
+ Meta<Key>B: backward-word(\|) \\n\\
+ Meta<Key>F: forward-word(\|) \\n\\
+ Meta<Key>I: insert-file(\|) \\n\\
+ Meta<Key>K: kill-to-end-of-paragraph(\|) \\n\\
+ Meta<Key>Q: form-paragraph(\|) \\n\\
+ Meta<Key>V: previous-page(\|) \\n\\
+ Meta<Key>Y: insert-selection(PRIMARY, CUT_BUFFER0) \\n\\
+ Meta<Key>Z: scroll-one-line-down(\|) \\n\\
+ :Meta<Key>d: delete-next-word(\|) \\n\\
+ :Meta<Key>D: kill-word(\|) \\n\\
+ :Meta<Key>h: delete-previous-word(\|) \\n\\
+ :Meta<Key>H: backward-kill-word(\|) \\n\\
+ :Meta<Key>\\<: beginning-of-file(\|) \\n\\
+ :Meta<Key>\\>: end-of-file(\|) \\n\\
+ :Meta<Key>]: forward-paragraph(\|) \\n\\
+ :Meta<Key>[: backward-paragraph(\|) \\n\\
+ ~Shift Meta<Key>Delete: delete-previous-word(\|) \\n\\
+ \ Shift Meta<Key>Delete: backward-kill-word(\|) \\n\\
+ ~Shift Meta<Key>Backspace: delete-previous-word(\|) \\n\\
+ \ Shift Meta<Key>Backspace: backward-kill-word(\|) \\n\\
+ <Key>Right: forward-character(\|) \\n\\
+ <Key>Left: backward-character(\|) \\n\\
+ <Key>Down: next-line(\|) \\n\\
+ <Key>Up: previous-line(\|) \\n\\
+ <Key>Delete: delete-previous-character(\|) \\n\\
+ <Key>BackSpace: delete-previous-character(\|) \\n\\
+ <Key>Linefeed: newline-and-indent(\|) \\n\\
+ <Key>Return: newline(\|) \\n\\
+ <Key>: insert-char(\|) \\n\\
+ <Key>Kanji: reconnect-im(\|) \\n\\
+ <FocusIn>: focus-in(\|) \\n\\
+ <FocusOut>: focus-out(\|) \\n\\
+ <Btn1Down>: select-start(\|) \\n\\
+ <Btn1Motion>: extend-adjust(\|) \\n\\
+ <Btn1Up>: extend-end(PRIMARY, CUT_BUFFER0) \\n\\
+ <Btn2Down>: insert-selection(PRIMARY, CUT_BUFFER0) \\n\\
+ <Btn3Down>: extend-start(\|) \\n\\
+ <Btn3Motion>: extend-adjust(\|) \\n\\
+ <Btn3Up>: extend-end(PRIMARY, CUT_BUFFER0) \\n
+.De
diff --git a/specs/Xaw/TextCustom b/specs/Xaw/TextCustom
new file mode 100644
index 0000000..0c80392
--- /dev/null
+++ b/specs/Xaw/TextCustom
@@ -0,0 +1,63 @@
+.NH 2
+Customizing the Text Widget
+.LP
+.XS
+ Customizing the Text Widget
+.XE
+.IN "Text widget" "customizing" "@DEF@"
+.LP
+The remainder of this chapter will describe customizing the Text
+widget. The Text widget may be customized by subclassing, or by
+creating new sources and sinks. Subclassing is described in
+detail in Chapter 7; this section will describe only those things that
+are specific to the Text widget. Attributes of the Text widget base
+class and creating new sources and sinks will be discussed.
+.LP
+The Text widget is made up of a number of different pieces, with the
+Text widget as the base widget class. It and the AsciiText widget are
+the only true "widgets" in the Text widget family. The other pieces
+(sources and sinks) are X Toolkit objects and have no window
+associated with them. No source or sink is useful unless assigned to
+a Text widget.
+.LP
+Each of the following pieces of the Text widget has a specific purpose,
+and will be, or has been, discussed in detail in this chapter:
+.IN "Text widget" ""
+.IP \fBText\fP 15
+This is the glue that binds everything else together. This widget reads
+the text data from the source, and displays the information in the sink.
+All translations and actions are handled in the Text widget itself.
+.IN "TextSink object" ""
+.IP \fBTextSink\fP 15
+This object is responsible for displaying and clearing the drawing area.
+It also reports the configuration of the window that contains the
+drawing area. The TextSink does not have its own window; instead it does
+its drawing on the Text widget's window.
+.IN "TextSrc object" ""
+.IP \fBTextSrc\fP 15
+This object is responsible for reading, editing and searching through the
+text buffer.
+.IN "AsciiSink object" ""
+.IP \fBAsciiSink\fP 15
+This object is a subclass of the TextSink and knows how to display
+ASCII text. Support has been added to display any 8-bit character set, given
+the font.
+.IN "MultiSink object" ""
+.IP \fBMultiSink\fP 15
+This object is a subclass of the TextSink and knows how to display
+font sets.
+.IN "AsciiSrc object" ""
+.IP \fBAsciiSrc\fP 15
+This object is a subclass of the TextSrc and knows how to read strings
+and files.
+.IN "MultiSrc object" ""
+.IP \fBMultiSrc\fP 15
+This object is a subclass of the TextSrc and knows how to read strings
+and multibyte files, converting them to wide characters based on locale.
+.IN "AsciiText widget" ""
+.IP \fBAsciiText\fP 15
+This widget is a subclass of the Text widget. When created, the AsciiText
+automatically creates and attaches either an AsciiSrc and AsciiSink, or a
+MultiSrc and MultiSink, to itself. The AsciiText provides the simplest
+interface to the Athena Text widgets.
+
diff --git a/specs/Xaw/TextFuncs b/specs/Xaw/TextFuncs
new file mode 100644
index 0000000..0f64138
--- /dev/null
+++ b/specs/Xaw/TextFuncs
@@ -0,0 +1,397 @@
+.\" $Xorg: TextFuncs,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+Text Functions
+.XS
+ Text Functions
+.XE
+.LP
+The following functions are provided as convenience routines for use with
+the Text widget. Although many of these actions can be performed by
+modifying resources, these interfaces are frequently more efficient.
+.LP
+These data structures are defined in the Text widget's public header file,
+<X11/Xaw/Text.h>.
+.LP
+.IN "XawTextPosition" "" "@DEF@"
+typedef long XawTextPosition;
+.sp
+.LP
+Character positions in the Text widget begin at 0 and end at n, where
+n is the number of characters in the Text source widget.
+.LP
+.IN "XawTextBlock" "" "@DEF@"
+.Ds 0
+.TA .5i 1.5i 2.25i
+.ta .5i 1.5i 2.25i
+typedef struct {
+ int \fIfirstPos\fP;
+ int \fIlength\fP;
+ char *\fIptr\fP;
+ unsigned long \fIformat\fP;
+} XawTextBlock, *XawTextBlockPtr;
+.De
+.LP
+.IN "XawTextBlockPtr" ""
+.IP \fIfirstPos\fP 1.0i
+The first position, or index, to use within the \fIptr\fP field.
+The value is commonly zero.
+.IP \fIlength\fP 1.0i
+The number of characters to be used from the \fIptr\fP field.
+The number of characters used is commonly the number of characters
+in \fIptr\fP, and must not be greater than the length of the string
+in \fIptr\fP.
+.IP \fIptr\fP 1.0i
+Contains the string to be referenced by the Text widget.
+.IP \fIformat\fP 1.0i
+This flag indicates whether the data pointed to by \fBptr\fP is char
+or wchar_t. When the associated widget has \fBinternational\fP set
+to \fBfalse\fP this field must be XawFmt8Bit. When the associated
+widget has \fBinternational\fP set to \fBtrue\fP this field must be
+either XawFmt8Bit or XawFmtWide.
+.LP
+Note: Previous versions of Xaw used
+.PN FMT8BIT ,
+which has been retained for backwards compatibility. \fBFMT8BIT\fP is
+deprecated and will eventually be removed from the implementation.
+.NH 3
+Selecting Text
+.LP
+To select a piece of text, use
+.PN XawTextSetSelection :
+.IN "XawTextSetSelection" "" "@DEF@"
+.FD 0
+void XawTextSetSelection(\fIw\fP, \fIleft\fP, \fIright\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition \fIleft\fP, \fIright\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIleft\fP 1i
+Specifies the character position at which the selection begins.
+.IP \fIright\fP 1i
+Specifies the character position at which the selection ends.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP.
+If redisplay is enabled, this function highlights the text and
+makes it the \fBPRIMARY\fP selection. This function does not have any
+effect on \fBCUT_BUFFER0\fP.
+.LP
+.NH 3
+Unhighlighting Text
+.LP
+To unhighlight previously highlighted text in a widget, use
+\fBXawTextUnsetSelection\fP:
+.IN "XawTextUnsetSelection" "" "@DEF@"
+.FD 0
+void XawTextUnsetSelection(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.NH 3
+Getting Current Text Selection
+.LP
+To retrieve the text that has been selected by this
+text widget use \fBXawTextGetSelectionPos\fP:
+.IN "XawTextGetSelectionPos" "" "@DEF@"
+.FD 0
+void XawTextGetSelectionPos(\fIw\fP, \fIbegin_return\fP, \fIend_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition *\fIbegin_return\fP, *\fIend_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIbegin_return\fP 1i
+Returns the beginning of the text selection.
+.IP \fIend_return\fP 1i
+Returns the end of the text selection.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP.
+If the returned values are equal, no text is currently selected.
+.NH 3
+Replacing Text
+.LP
+To modify the text in an editable Text widget use \fBXawTextReplace\fP:
+.IN "XawTextReplace" "" "@DEF@"
+.FD 0
+int XawTextReplace(\fIw\fP, \fIstart\fP, \fIend\fP, \fItext\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition \fIstart\fP, \fIend\fP;
+.br
+ XawTextBlock *\fItext\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIstart\fP 1i
+Specifies the starting character position of the text replacement.
+.IP \fIend\fP 1i
+Specifies the ending character position of the text replacement.
+.IP \fItext\fP 1i
+Specifies the text to be inserted into the file.
+.LP
+This function will not
+be able to replace text in read-only text widgets. It will also only
+be able to append text to an append-only text widget.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP and
+\fBXawTextBlock\fP.
+.LP
+This function may return the following values:
+.IP \fBXawEditDone\fP 1.25i
+.IN "XawEditDone" ""
+The text replacement was successful.
+.IP \fBXawPositionError\fP 1.25i
+.IN "XawPositionError" ""
+The edit mode is \fBXawtextAppend\fP and \fIstart\fP is not the position of
+the last character of the source.
+.IP \fBXawEditError\fP 1.25i
+.IN "XawEditError" ""
+Either the Source was read-only or the range to be deleted is larger
+than the length of the Source.
+
+.LP
+The \fBXawTextReplace\fP arguments \fIstart\fP and
+\fIend\fP represent the text source character positions for the
+existing text that is to be replaced by the text in the text block.
+The characters from \fIstart\fP up to
+but not including \fIend\fP are deleted, and the characters
+specified on the text block are inserted in their place. If
+\fIstart\fP and \fIend\fP are equal, no text is deleted and the new
+text is inserted after \fIstart\fP.
+.NH 3
+Searching for Text
+.LP
+To search for a string in the Text widget, use
+\fBXawTextSearch\fP:
+.IN "XawTextSearch" "" "@DEF@"
+.FD 0
+XawTextPosition XawTextSearch(\fIw\fP, \fIdir\fP, \fItext\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextScanDirection \fIdir\fP;
+.br
+ XawTextBlock * \fItext\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIdir\fP 1i
+Specifies the direction to search in. Legal values are
+\fBXawsdLeft\fP and \fBXawsdRight\fP.
+.IP \fItext\fP 1i
+Specifies a text block structure that contains the text to search for.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP and \fBXawTextBlock\fP.
+The \fBXawTextSearch\fP function will begin at the insertion point
+and search in the
+direction specified for a string that matches the one passed in
+\fItext\fP. If the string is found the location of the first
+character in the string is returned. If the string could not be
+found then the value \fBXawTextSearchError\fP is returned.
+.NH 3
+Redisplaying Text
+.LP
+To redisplay a range of characters, use \fBXawTextInvalidate\fP:
+.IN "XawTextInvalidate" "" "@DEF@"
+.FD 0
+void XawTextInvalidate(\fIw\fP, \fIfrom\fP, \fIto\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition \fIfrom\fP, \fIto\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIfrom\fP 1i
+Specifies the start of the text to redisplay.
+.IP \fIto\fP 1i
+Specifies the end of the text to redisplay.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP.
+The \fBXawTextInvalidate\fP
+function causes the specified range of characters to be redisplayed
+immediately if redisplay is enabled or the next time that redisplay is
+enabled.
+.LP
+.sp 1
+To enable redisplay, use \fBXawTextEnableRedisplay\fP:
+.IN "XawTextEnableRedisplay" "" "@DEF@"
+.FD 0
+void XawTextEnableRedisplay(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.LP
+The \fBXawTextEnableRedisplay\fP function flushes any changes due to
+batched updates when \fBXawTextDisableRedisplay\fP
+was called and allows future changes to be reflected immediately.
+.LP
+.sp 1
+To disable redisplay while making several changes, use
+\fBXawTextDisableRedisplay\fP.
+.IN "XawTextDisableRedisplay" "" "@DEF@"
+.FD 0
+void XawTextDisableRedisplay(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.LP
+The \fBXawTextDisableRedisplay\fP function causes all changes to be
+batched until either \fBXawTextDisplay\fP or \fBXawTextEnableRedisplay\fP
+is called.
+.LP
+.sp 1
+To display batched updates, use \fBXawTextDisplay\fP:
+.IN "XawTextDisplay" "" "@DEF@"
+.FD 0
+void XawTextDisplay(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.LP
+The \fBXawTextDisplay\fP function forces any accumulated updates to be
+displayed.
+.NH 3
+Resources Convenience Routines
+.LP
+To obtain the character position of the left-most character on the
+first line displayed in the widget (the value of the
+\fBdisplayPosition\fP resource), use \fBXawTextTopPosition\fP.
+.IN "XawTextTopPosition" "" @DEF@"
+.FD 0
+XawTextPosition XawTextTopPosition(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.LP
+.sp 1
+To assign a new selection array to a text widget use
+\fBXawTextSetSelectionArray\fP:
+.IN "XawTextSetSelectionArray" "" "@DEF@"
+.FD 0
+void XawTextSetSelectionArray(\fIw\fP, \fIsarray\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextSelectType * \fIsarray\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIsarray\fP 1i
+Specifies a selection array as defined in the section called \fBText
+Selections for Application Programmers\fP.
+.LP
+Calling this function is equivalent to setting the value of the
+\fBselectionTypes\fP resource.
+.LP
+.sp 1
+To move the insertion point to the specified source position, use
+\fBXawTextSetInsertionPoint\fP:
+.IN "XawTextSetInsertionPoint" "" "@DEF@"
+.FD 0
+void XawTextSetInsertionPoint(\fIw\fP, \fIposition\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition \fIposition\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIposition\fP 1i
+Specifies the new position for the insertion point.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP.
+The text will be scrolled vertically if necessary to make the line
+containing the insertion point visible. Calling this function is
+equivalent to setting the \fBinsertPosition\fP resource.
+.LP
+.sp 1
+To obtain the current position of the insertion point, use
+\fBXawTextGetInsertionPoint\fP:
+.IN "XawTextGetInsertionPoint" "" "@DEF@"
+.FD 0
+XawTextPosition XawTextGetInsertionPoint(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP.
+The result is equivalent to retrieving the value of the
+\fBinsertPosition\fP resource.
+.LP
+.sp 1
+To replace the text source in the specified widget, use
+\fBXawTextSetSource\fP:
+.IN "XawTextSetSource" "" "@DEF@"
+.FD 0
+void XawTextSetSource(\fIw\fP, \fIsource\fP, \fIposition\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Widget \fIsource\fP;
+.br
+ XawTextPosition \fIposition\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIsource\fP 1i
+Specifies the text source object.
+.IP \fIposition\fP 1i
+Specifies character position that will become the upper left hand corner
+of the displayed text. This is usually set to zero.
+.LP
+See section 5.4 for a description of \fBXawTextPosition\fP.
+A display update will be performed if redisplay is enabled.
+.LP
+.sp 1
+To obtain the current text source for the specified widget, use
+\fBXawTextGetSource\fP:
+.IN "XawTextGetSource" "" "@DEF@"
+.FD 0
+Widget XawTextGetSource(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.LP
+This function returns the text source that this Text widget is currently
+using.
+.LP
+.sp
+To enable and disable the insertion point, use
+\fBXawTextDisplayCaret\fP:
+.IN "XawTextDisplayCaret" "" "@DEF@"
+.FD 0
+void XawTextDisplayCaret(\fIw\fP, \fIvisible\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIvisible\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Text widget.
+.IP \fIvisible\fP 1i
+Specifies whether or not the caret should be displayed.
+.LP
+If \fIvisible\fP is \fBFalse\fP the insertion point will be disabled.
+The marker is re-enabled either by setting \fIvisible\fP to \fBTrue\fP, by
+calling \fBXtSetValues\fP, or by executing the \fIdisplay-caret\fP
+action routine.
diff --git a/specs/Xaw/TextSink b/specs/Xaw/TextSink
new file mode 100644
index 0000000..f316fed
--- /dev/null
+++ b/specs/Xaw/TextSink
@@ -0,0 +1,420 @@
+.\" $Xorg: TextSink,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+TextSink Object
+.LP
+.XS
+ TextSink Object
+.XE
+.IN "TextSink object" "" "@DEF@"
+.LP
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/TextSink.h>
+.IN "TextSink.h" ""
+Class Header file <X11/Xaw/TextSinkP.h>
+.IN "TextSinkP.h" ""
+Class textSinkObjectClass
+.IN "textSinkObjectClass" ""
+Class Name TextSink
+.IN "TextSink object" "class name"
+Superclass Object
+.De
+.LP
+The TextSink object is the root object for all text sinks. Any new text
+sink objects should be subclasses of the TextSink Object. The TextSink
+Class contains all methods that the Text widget expects a text sink to
+export.
+.LP
+Since all text sinks will have some resources in common, the TextSink
+defines a few new resources.
+.NH 3
+Resources
+.LP
+When creating an TextSink object instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "AsciiSink object" "resources"
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+background Background Pixel XtDefaultBackground
+destroyCallback Callback XtCallbackList NULL
+foreground Foreground Pixel XtDefaultForeground
+.sp 3p
+_
+.TE
+.Bg Bold
+.Dc
+.Sg Bold
+.NH 3
+Subclassing the TextSink
+.IN "TextSink object" "subclassing" "@DEF@"
+.LP
+The only purpose of the TextSink Object is to be subclassed. It
+contains the minimum set of class methods that all text sinks must have.
+While all may be inherited, the direct descendant of TextSink \fBmust
+specify\fP some of them as TextSink does contain enough information to
+be a valid text sink by itself. Do not try to use
+the TextSink as a valid sink for the Text widget; it is not intended
+to be used as a sink by itself.
+.TS H
+lw(1i) lw(1.5i) lw(2i) lw(1i).
+_
+.sp 3p
+.TB
+Function Inherit with Public Interface must specify
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+DisplayText XtInheritDisplayText XawTextSinkDisplayText yes
+.IN "XtInheritDisplayText" ""
+.IN "XawTextSinkDisplayText" ""
+InsertCursor XtInheritInsertCursor XawTextSinkInsertCursor yes
+.IN "XtInheritInsertCursor" ""
+.IN "XawTextSinkInsertCursor" ""
+ClearToBackground XtInheritClearToBackground XawTextSinkClearToBackground no
+.IN "XtInheritClearToBackground" ""
+.IN "XawTextSinkClearToBackground" ""
+FindPosition XtInheritFindPosition XawTextSinkFindPosition yes
+.IN "XtInheritFindPosition" ""
+.IN "XawTextSinkFindPosition" ""
+FindDistance XtInheritFindDistance XawTextSinkFindDistance yes
+.IN "XtInheritFindDistance" ""
+.IN "XawTextSinkFindDistance" ""
+Resolve XtInheritResolve XawTextSinkResolve yes
+.IN "XtInheritResolve" ""
+.IN "XawTextSinkResolve" ""
+MaxLines XtInheritMaxLines XawTextSinkMaxLines no
+.IN "XtInheritMaxLines" ""
+.IN "XawTextSinkMaxLines" ""
+MaxHeight XtInheritMaxHeight XawTextSinkMaxHeight no
+.IN "XtInheritMaxHeight" ""
+.IN "XawTextSinkMaxHeight" ""
+SetTabs XtInheritSetTabs XawTextSinkSetTabs no
+.IN "XtInheritSetTabs" ""
+.IN "XawTextSinkSetTabs" ""
+GetCursorBounds XtInheritGetCursorBounds XawTextSinkGetCursorBounds yes
+.IN "XtInheritGetCursorBounds" ""
+.IN "XawTextSinkGetCursorBounds" ""
+_
+.TE
+.NH 4
+Displaying Text
+.LP
+To display a section of the text buffer contained in the text source
+use the function \fBDisplayText\fP:
+.IN "TextSink object" "DisplayText" "@DEF@"
+.FD 0
+void DisplayText(\fIw\fP, \fIx\fP, \fIy\fP, \fIpos1\fP, \fIpos2\fP, \fIhighlight\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Position \fIx\fP, \fIy\fP;
+.br
+ XawTextPosition \fIpos1\fP, \fIpos2\fP;
+.br
+ Boolean \fIhighlight\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fIx\fP 1i
+Specifies the x location to start drawing the text.
+.IP \fIy\fP 1i
+Specifies the y location to start drawing text.
+.IP \fIpos1\fP 1i
+Specifies the location within the text source of the first character
+to be printed.
+.IP \fIpos2\fP 1i
+Specifies the location within the text source of the last character
+to be printed.
+.IP \fIhighlight\fP 1i
+Specifies whether or not to paint the text region highlighted.
+.LP
+The Text widget will only pass one line at a time to the text sink, so
+this function does not need to know how to line feed the text. It is
+acceptable for this function to just ignore Carriage Returns. \fIx\fP
+and \fIy\fP denote the upper left hand corner of the first character to
+be displayed.
+.NH 4
+Displaying the Insert Point
+.LP
+The function that controls the display of the text cursor is
+\fBInsertCursor\fP. This function will be called whenever the text
+widget desires to change the state of, or move the insert point.
+.FD 0
+void InsertCursor(\fIw\fP, \fIx\fP, \fIy\fP, \fIstate\fP)
+.IN "TextSink object" "InsertCursor" "@DEF@"
+.br
+ Widget \fIw\fP;
+.br
+ Position \fIx\fP, \fIy\fP;
+.br
+ XawTextInsertState \fIstate\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fIx\fP 1i
+Specifies the x location of the cursor in Pixels.
+.IP \fIy\fP 1i
+Specifies the y location of the cursor in Pixels.
+.IP \fIstate\fP 1i
+Specifies the state of the cursor, may be one of \fBXawisOn\fP or
+\fBXawisOff\fP.
+.LP
+\fIX\fP and \fIy\fP denote the upper left hand corner of the insert point.
+.NH 4
+Clearing Portions of the Text window
+.LP
+To clear a portion of the Text window to its background color, the Text
+widget will call \fBClearToBackground\fP. The TextSink object already
+defines this function as calling \fBXClearArea\fP on the region passed.
+This behavior will be used if you specify
+\fBXtInheritClearToBackground\fP for this method.
+.IN "XtInheritClearToBackground" ""
+.IN "TextSink object" "ClearToBackground" "@DEF@"
+.FD 0
+void ClearToBackground(\fIw\fP, \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Position \fIx\fP, \fIy\fP;
+.br
+ Dimension \fIwidth\fP, \fIheight\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fIx\fP 1i
+Specifies the x location, in pixels, of the Region to clear.
+.IP \fIy\fP 1i
+Specifies the y location, in pixels, of the Region to clear.
+.IP \fIwidth\fP 1i
+Specifies the width, in pixels, of the Region to clear.
+.IP \fIheight\fP 1i
+Specifies the height, in pixels, of the Region to clear.
+.LP
+\fIX\fP and \fIy\fP denote the upper left hand corner of region to clear.
+.NH 4
+Finding a Text Position Given Pixel Values
+.LP
+To find the text character position that will be rendered at a given x
+location the Text widget uses the function \fBFindPosition\fP:
+.IN "TextSink object" "FindPosition" "@DEF@"
+.FD 0
+void FindPosition(\fIw\fP, \fIfromPos\fP, \fIfromX\fP, \fIwidth\fP, \fIstopAtWordBreak\fP, \fIpos_return\fP, \fIwidth_return\fP, \fIheight_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition \fIfromPos\fP;
+.br
+ int \fIfromX\fP, \fIwidth\fP;
+.br
+ Boolean \fIstopAtWordBreak\fP;
+.br
+ XawTextPosition \fI*pos_return\fP;
+.br
+ int \fI*width_return\fP, \fI*height_return\fP;
+.FN
+.IP \fIw\fP 1.25i
+Specifies the TextSink object.
+.IP \fIfromPos\fP 1.25i
+Specifies a reference position, usually the first character in this line.
+This character is always to the left of the desired character location.
+.IP \fIfromX\fP 1.25i
+Specifies the distance that the left edge of \fIfromPos\fP is from the
+left edge of the window. This is the reference x location for the
+reference position.
+.IP \fIwidth\fP 1.25i
+Specifies the distance, in pixels, from the reference position to the
+desired character position.
+.IP \fIstopAtWordBreak\fP 1.25i
+Specifies whether or not the position that is returned should be forced
+to be on a word boundary.
+.IP \fIpos_return\fP 1.25i
+Returns the character position that corresponds to the location that has
+been specified, or the work break immediately to the left of the
+position if \fIstopAtWordBreak\fP is \fBTrue\fP.
+.IP \fIwidth_return\fP 1.25i
+Returns the actual distance between \fIfromPos\fP and \fIpos_return\fI.
+.IP \fIheight_return\fP 1.25i
+Returns the maximum height of the text between \fIfromPos\fP and
+\fIpos_return\fI.
+.LP
+This function need make no attempt to deal with line feeds. The text
+widget will only call it one line at a time.
+.LP
+.sp
+Another means of finding a text position is provided by the \fBResolve\fP
+function:
+.IN "TextSink object" "Resolve" "@DEF@"
+.FD 0
+void Resolve(\fIw\fP, \fIfromPos\fP, \fIfromX\fP, \fIwidth\fP, \fIpos_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition \fIfromPos\fP;
+.br
+ int \fIfromX\fP, \fIwidth\fP;
+.br
+ XawTextPosition \fI*pos_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fIfromPos\fP 1i
+Specifies a reference position, usually the first character in this line.
+This character is always to the left of the desired character location.
+.IP \fIfromX\fP 1i
+Specifies the distance that the left edge of \fIfromPos\fP is from the
+left edge of the window. This is the reference x location for the
+reference position.
+.IP \fIwidth\fP 1i
+Specifies the distance, in pixels, from the reference position to the
+desired character position.
+.IP \fIpos_return\fP 1i
+Returns the character position that corresponds to the
+location that has been specified, or the word break immediately to the left
+if \fIstopAtWordBreak\fP is \fBTrue\fP.
+.LP
+This function need make no attempt to deal with line feeds. The text
+widget will only call it one line at a time. This is a more convenient
+interface to the \fBFindPosition\fP function, and provides a subset of its
+functionality.
+.IN "FindPosition" ""
+.NH 4
+Finding the Distance Between two Text Positions
+.LP
+To find the distance in pixels between two text positions on the same
+line use the function \fBFindDistance\fP.
+.IN "TextSink object" "FindDistance" "@DEF@"
+.FD 0
+void FindDistance(\fIw\fP, \fIfromPos\fP, \fIfromX\fP, \fItoPos\fP, \fIwidth_return\fP, \fIpos_return\fP, \fIheight_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XawTextPosition \fIfromPos\fP, \fItoPos\fP;
+.br
+ int \fIfromX\fP;
+.br
+ XawTextPosition \fI*pos_return\fP;
+.br
+ int \fI*width_return\fP, \fI*height_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fIfromPos\fP 1i
+Specifies the text buffer position, in characters, of the first position.
+.IP \fIfromX\fP 1i
+Specifies the distance that the left edge of \fIfromPos\fP is from the
+left edge of the window. This is the reference x location for the
+reference position.
+.IP \fItoPos\fP 1i
+Specifies the text buffer position, in characters, of the second position.
+.IP \fIresWidth\fP 1i
+Return the actual distance between \fIfromPos\fP
+and \fIpos_return\fI.
+.IP \fIresPos\fP 1i
+Returns the character position that corresponds to the actual character
+position used for \fItoPos\fP in the calculations. This may be
+different than \fItoPos\fP, for example if \fIfromPos\fP and \fItoPos\fP
+are on different lines in the file.
+.IP \fIheight_return\fP 1i
+Returns the maximum height of the text between \fIfromPos\fP and
+\fIpos_return\fP.
+.LP
+This function need make no attempt to deal with line feeds. The Text
+widget will only call it one line at a time.
+.NH 4
+Finding the Size of the Drawing area
+.LP
+To find the maximum number of lines that will fit into the current Text
+widget, use the function \fBMaxLines\fP. The TextSink already defines
+this function to compute the maximum number of lines by using the height
+of \fBfont\fP.
+.IN "TextSink object" "MaxLines" "@DEF@"
+.FD 0
+int MaxLines(\fIw\fP, \fIheight\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Dimension \fIheight\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fIheight\fP 1i
+Specifies the height of the current drawing area.
+.LP
+Returns the maximum number of lines that will fit in \fIheight\fP.
+.LP
+.sp
+To find the height required for a given number of text lines, use
+the function \fBMaxHeight\fP. The TextSink already defines this
+function to compute the maximum height of the window by using the
+height of \fBfont\fP.
+.IN "TextSink object" "MaxHeight" "@DEF@"
+.FD 0
+int MaxHeight(\fIw\fP, \fIlines\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fIlines\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fIheight\fP 1i
+Specifies the height of the current drawing area.
+.LP
+Returns the height that will be taken up by the number of lines passed.
+.NH 4
+Setting the Tab Stops
+.LP
+To set the tab stops for a text sink use the \fBSetTabs\fP function.
+The TextSink already defines this function to set the tab x location in
+pixels to be the number of characters times the figure width of
+\fBfont\fP.
+.IN "TextSink object" "SetTabs" "@DEF@"
+.FD 0
+void SetTabs(\fIw\fP, \fItab_count\fP, \fItabs\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fItab_count\fP, \fI*tabs\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSink object.
+.IP \fItab_count\fP 1i
+Specifies the number of tabs passed in \fItabs\fP.
+.IP \fItabs\fP 1i
+Specifies the position, in characters, of the tab stops.
+.LP
+This function is responsible for the converting character positions passed
+to it into whatever internal positions the TextSink uses for tab placement.
+.NH 4
+Getting the Insert Point's Size and Location
+.LP
+To get the size and location of the insert point use the
+\fBGetCursorBounds\fP function.
+.IN "TextSink object" "GetCursorBounds" "@DEF@"
+.FD 0
+void GetCursorBounds(\fIw\fP, \fIrect_return\fP)
+.br
+Widget \fIw\fP;
+.br
+XRectangle \fI*rect_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSinkObject.
+.IP \fIrect_return\fP 1i
+Returns the location and size of the insert point.
+.LP
+\fIRect\fP will be filled with the current size and location of the
+insert point.
diff --git a/specs/Xaw/TextSource b/specs/Xaw/TextSource
new file mode 100644
index 0000000..8c50b5f
--- /dev/null
+++ b/specs/Xaw/TextSource
@@ -0,0 +1,330 @@
+.\" $Xorg: TextSource,v 1.3 2000/08/17 19:42:28 cpqbld Exp $
+.NH 2
+TextSrc Object
+.LP
+.XS
+ TextSrc Object
+.XE
+.IN "TextSrc object" "" "@DEF@"
+.LP
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+Application Header file <X11/Xaw/TextSrc.h>
+.IN "TextSrc.h" ""
+Class Header file <X11/Xaw/TextSrcP.h>
+.IN "TextSrcP.h" ""
+Class textSrcObjectClass
+.IN "textSrcObjectClass" ""
+Class Name TextSrc
+.IN "TextSrc object" "class name"
+Superclass Object
+.De
+.LP
+The TextSrc object is the root object for all text sources. Any new text
+source objects should be subclasses of the TextSrc Object. The
+TextSrc Class contains all methods the Text widget expects a text
+source to export.
+.LP
+Since all text sources will have some resources in common the
+TextSrc defines a few new resources.
+.NH 3
+Resources
+.LP
+When creating an TextSrc object instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "TextSrc object" "resources"
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+destroyCallback Callback XtCallbackList NULL
+editType EditType EditMode NULL
+.sp 3p
+_
+.TE
+.Dc
+.Oe Bold
+.NH 3
+Subclassing the TextSrc
+.IN "TextSrc object" "subclassing" "@DEF@"
+.LP
+The only purpose of the TextSrc Object is to be subclassed. It contains
+the minimum set of class methods that all text sources must have. All
+class methods of the TextSrc must be defined, as the Text widget uses
+them all. While all may be inherited, the direct descendant of TextSrc
+\fBmust\fP specify some of them as TextSrc does not contain enough
+information to be a valid text source by itself. Do not try to use the
+TextSrc as a valid source for the Text widget; it is not intended to be
+used as a source by itself and bad things will probably happen.
+.TS H
+lw(1i) lw(1.5i) lw(2i) lw(1i).
+_
+.sp 3p
+.TB
+Function Inherit with Public Interface must specify
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+Read XtInheritRead XawTextSourceRead yes
+.IN "XtInheritRead" ""
+.IN "XawTextSourceRead" ""
+Replace XtInheritReplace XawTextSourceReplace no
+.IN "XtInheritReplace" ""
+.IN "XawTextSourceReplace" ""
+Scan XtInheritScan XawTextSourceScan yes
+.IN "XtInheritScan" ""
+.IN "XawTextSourceScan" ""
+Search XtInheritSearch XawTextSourceSearch no
+.IN "XtInheritSearch" ""
+.IN "XawTextSourceSearch" ""
+SetSelection XtInheritSetSelection XawTextSourceSetSelection no
+.IN "XtInheritSetSelection" ""
+.IN "XawTextSourceSetSelection" ""
+ConvertSelection XtInheritConvertSelection XawTextSourceConvertSelection no
+.IN "XtInheritConvertSelection" ""
+.IN "XawTextSourceConvertSelection" ""
+_
+.TE
+.NH 4
+Reading Text.
+.LP
+To read the text in a text source use the \fBRead\fP function:
+.IN "TextSrc object" "Read" "@DEF@"
+.FD 0
+XawTextPosition Read(\fIw\fP, \fIpos\fP, \fItext_return\fP, \fIlength\fP)
+.br
+Widget \fIw\fP;
+.br
+XawTextPosition \fIpos\fP;
+.br
+XawTextBlock \fI*text_return\fP;
+.br
+int \fIlength\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSrc object.
+.IP \fIpos\fP 1i
+Specifies the position of the first character to be read from the text buffer.
+.IP \fItext\fP 1i
+Returns the text read from the source.
+.IP \fIlength\fP 1i
+Specifies the maximum number of characters the TextSrc should
+return to the application in \fItext_return\fP.
+.LP
+This function returns the actual number of characters read from the
+text buffer. The function is not required to return \fIlength\fP
+characters if that many characters are in the file, it may break at
+any point that is convenient to the internal structure of the
+source. It may take several calls to \fBRead\fP before the desired
+portion of the text buffer is fully retrieved.
+.NH 4
+Replacing Text.
+.LP
+To replace or edit the text in a text buffer use the \fBReplace\fP function:
+.FD 0
+XawTextPosition Replace(\fIw\fP, \fIstart\fP, \fIend\fP, \fItext\fP)
+.IN "TextSrc object" "Replace" @DEF@
+.br
+Widget \fIw\fP;
+.br
+XawTextPosition \fIstart\fP, \fIend\fP;
+.br
+XawTextBlock \fI*text\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSrc object.
+.IP \fIstart\fP 1i
+Specifies the position of the first character to be removed from the text
+buffer. This is also the location to begin inserting the new text.
+.IP \fIend\fP 1i
+Specifies the position immediately after the last character to be
+removed from the text buffer.
+.IP \fItext\fP 1i
+Specifies the text to be added to the text source.
+.LP
+This function can return any of the following values:
+.IP \fBXawEditDone\fP 1.25i
+.IN "XawEditDone" ""
+The text replacement was successful.
+.IP \fBXawPositionError\fP 1.25i
+.IN "XawPositionError" ""
+The edit mode is \fBXawtextAppend\fP and \fIstart\fP is not the last
+character of the source.
+.IP \fBXawEditError\fP 1.25i
+.IN "XawEditError" ""
+Either the Source was read-only or the range to be deleted is larger
+than the length of the Source.
+.LP
+The \fBReplace\fP arguments \fIstart\fP and \fIend\fP represent the
+text source character positions for the existing text that is to be
+replaced by the text in the text block. The characters from
+\fIstart\fP up to but not including \fIend\fP are deleted, and the
+buffer specified by the text block is inserted in their
+place. If \fIstart\fP and \fIend\fP are equal, no text is deleted and
+the new text is inserted after \fIstart\fP.
+.NH 4
+Scanning the TextSrc
+.LP
+To search the text source for one of the predefined boundary types use
+the \fBScan\fP function:
+.FD 0
+XawTextPosition Scan(\fIw\fP, \fIposition\fP, \fItype\fP, \fIdir\fP, \fIcount\fP, \fIinclude\fP)
+.IN "TextSrc object" "Scan" @DEF@
+.br
+Widget \fIw\fP;
+.br
+XawTextPosition \fIposition\fP;
+.br
+XawTextScanType \fItype\fP;
+.br
+XawTextScanDirection \fIdir\fP;
+.br
+int \fIcount\fP;
+.br
+Boolean \fIinclude\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSrc object.
+.IP \fIposition\fP 1i
+Specifies the position to begin scanning the source.
+.IP \fItype\fP 1i
+Specifies the type of boundary to scan for, may be one of:
+\fBXawstPosition\fP, \fBXawstWhiteSpace\fP, \fBXawstEOL\fP,
+.IN "XawstPositions" ""
+.IN "XawstWhiteSpace" ""
+.IN "XawstEOL" ""
+\fBXawstParagraph\fP, \fBXawstAll\fP. The exact meaning of these
+.IN "XawstParagraph" ""
+.IN "XawstAll" ""
+boundaries is left up to the individual text source.
+.IP \fIdir\fP 1i
+Specifies the direction to scan, may be either \fBXawsdLeft\fP to search
+.IN "XawsdLeft" ""
+backward, or \fBXawsdRight\fP to search forward.
+.IN "XawsdRight" ""
+.IP \fIcount\fP 1i
+Specifies the number of boundaries to scan for.
+.IP \fIinclude\fP 1i
+Specifies whether the boundary itself should be included in the scan.
+.LP
+The \fBScan\fP function returns the position in the text source of the desired
+boundary. It is expected to return a valid address for
+all calls made to it, thus if a particular request is made that would take
+the text widget beyond the end of the source it must return the
+position of that end.
+.NH 4
+Searching through a TextSrc
+.LP
+To search for a particular string use the \fBSearch\fP function.
+.FD 0
+XawTextPosition Search(\fIw\fP, \fIposition\fP, \fIdir\fP, \fItext\fP)
+.IN "TextSrc object" "Search" @DEF@
+.br
+Widget \fIw\fP;
+.br
+XawTextPosition \fIposition\fP;
+.br
+XawTextScanDirection \fIdir\fP;
+.br
+XawTextBlock \fI*text\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSrc object.
+.IP \fIposition\fP 1i
+Specifies the position to begin the search.
+.IP \fIdir\fP 1i
+Specifies the direction to search, may be either \fBXawsdLeft\fP to search
+.IN "XawsdLeft" ""
+backward, or \fBXawsdRight\fP to search forward.
+.IN "XawsdRight" ""
+.IP \fItext\fP 1i
+Specifies a text block containing the text to search for.
+.LP
+This function will search through the text buffer attempting to find a
+match for the string in the text block. If a match is found in the
+direction specified, then the character location of the first character
+in the string is returned. If no text was found then
+\fBXawTextSearchError\fP is returned.
+.IN "XawTextSearchError" ""
+.NH 4
+Text Selections
+.LP
+While many selection types are handled by the Text widget, text sources
+may have selection types unknown to the Text widget. When a selection
+conversion is requested by the X server the Text widget will first call
+the \fBConvertSelection\fP function, to attempt the selection
+conversion.
+.FD 0
+Boolean ConvertSelections(\fIw\fP, \fIselection\fP, \fItarget\fP, \fItype\fP, \fIvalue_return\fP, \fIlength_return\fP, \fIformat_return\fP)
+.IN "Text widget" "ConvertSelection" @DEF@
+.br
+Widget \fIw\fP;
+.br
+Atom \fI*selection\fP, \fI*target\fP, \fI*type\fP;
+.br
+caddr_t \fI*value_return\fP;
+.br
+unsigned long \fI*length_return\fP;
+.br
+int \fI*format_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSrc object.
+.IP \fIselection\fP 1i
+Specifies the type of selection that was requested (e.g. \fBPRIMARY\fP).
+.IP \fItarget\fP 1i
+Specifies the type of the selection that has been requested, which
+indicates the desired information about the selection (e.g. Filename,
+Text, Window).
+.IP \fItype\fP 1i
+Specifies a pointer to the atom into which the property type of the converted
+value of the selection is to be stored. For instance, either file
+name or text might have property type \fBXA_STRING\fP.
+.IP \fIvalue_return\fP 1i
+Returns a pointer into which a pointer to the converted value of the
+selection
+is to be stored. The selection owner is responsible for allocating
+this storage. The memory is considered owned by the toolkit, and is
+freed by XtFree when the Intrinsics selection mechanism is done with it.
+.IP \fIlength_return\fP 1i
+Returns a pointer into which the number of elements in value is to be stored.
+The size of each element is determined by \fIformat\fP.
+.IP \fIformat_return\fP 1i
+Returns a pointer into which the size in bits of the data elements of the
+selection value is to be stored.
+.LP
+If this function returns \fBTrue\fP then the Text widget will assume
+that the source has taken care of converting the selection, Otherwise the
+Text widget will attempt to convert the selection itself.
+.LP
+.sp
+If the source needs to know when the text selection is modified it
+should define a \fBSetSelection\fP procedure:
+.FD 0
+void SetSelection(\fIw\fP, \fIstart\fP, \fIend\fP, \fIselection\fP)
+Widget \fIw\fP;
+.IN "SetSelection" "" @DEF@
+.br
+XawTextPosition \fIstart\fP, \fIend\fP;
+.br
+Atom \fIselection\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the TextSrc object.
+.IP \fIstart\fP 1i
+Specifies the character position of the beginning of the new text selection.
+.IP \fIend\fP
+Specifies the character position of the end of the new text selection.
+.IP \fIselection\fP 1i
+Specifies the type of selection that was requested (e.g. \fBPRIMARY\fP).
diff --git a/specs/Xaw/Toggle b/specs/Xaw/Toggle
new file mode 100644
index 0000000..d5ffe7c
--- /dev/null
+++ b/specs/Xaw/Toggle
@@ -0,0 +1,370 @@
+.\" $Xorg: Toggle,v 1.3 2000/08/17 19:42:29 cpqbld Exp $
+.NH 2
+Toggle Widget
+.XS
+ Toggle Widget
+.XE
+.IN "Toggle widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <Xaw/Toggle.h>
+.IN "Toggle.h" ""
+Class Header file <Xaw/ToggleP.h>
+.IN "ToggleP.h" ""
+Class toggleWidgetClass
+.IN "toggleWidgetClass" ""
+Class Name Toggle
+.IN "Toggle widget" "class name"
+Superclass Command
+.sp
+.De
+.LP
+The Toggle widget is an area, often rectangular,
+that displays a graphic. The graphic may be a text
+string containing multiple lines of characters in an 8
+bit or 16 bit character set (to be displayed with a
+\fIfont\fP), or in a multi-byte encoding (for use with
+a \fIfontset\fP). The graphic may also be a bitmap or
+pixmap.
+.LP
+This widget maintains a Boolean state (e.g.
+True/False or On/Off) and changes state whenever it is selected. When
+the pointer is on the Toggle widget, the Toggle widget may become highlighted by
+drawing a rectangle around its perimeter. This highlighting indicates
+that the Toggle widget is ready for selection. When pointer button 1 is
+pressed and released, the Toggle widget indicates that it has changed
+state by reversing its foreground and background colors, and its
+\fBnotify\fP action is invoked, calling all functions on its callback
+list. If the pointer is moved off of the widget before the pointer button is
+released, the Toggle widget reverts to its previous foreground and background
+colors, and releasing the pointer button has no effect. This behavior allows
+the user to cancel the operation.
+.LP
+Toggle widgets may also be part of a ``radio group.'' A radio group is a
+.IN "Radio groups" ""
+.IN "Radio button" ""
+.IN "Toggle widget" "used in radio groups"
+list of at least two Toggle widget in which no more than one Toggle may
+be set at
+any time. A radio group is identified by the widget ID of any one of
+its members. The convenience routine \fBXawToggleGetCurrent\fP will
+return information about the Toggle widget in the radio group.
+.LP
+Toggle widget state is preserved across changes in sensitivity.
+.NH 3
+Resources
+.LP
+When creating a Toggle widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Toggle widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+bitmap Bitmap Pixmap None
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+callback Callback XtCallbackList NULL
+colormap Colormap Colormap Parent's Colormap
+cornerRoundPercent CornerRoundPercent Dimension 25
+cursor Cursor Cursor None
+cursorName Cursor String NULL
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+encoding Encoding UnsignedChar XawTextEncoding8bit
+font Font XFontStruct XtDefaultFont
+fontSet FontSet XFontSet XtDefaultFontSet
+foreground Foreground Pixel XtDefaultForeground
+height Height Dimension A graphic height + 2 * \fBinternalHeight\fP
+highlightThickness Thickness Dimension A 2 (0 if Shaped)
+insensitiveBorder Insensitive Pixmap GreyPixmap
+internalHeight Height Dimension 2
+internalWidth Width Dimension 4
+international International Boolean C False
+justify Justify Justify XtJustifyCenter (center)
+label Label String name of widget
+leftBitmap LeftBitmap Bitmap None
+mappedWhenManaged MappedWhenManaged Boolean True
+pointerColor Foreground Pixel XtDefaultForeground
+pointerColorBackground Background Pixel XtDefaultBackground
+radioData RadioData Pointer Name of widget
+radioGroup Widget Widget No radio group
+resize Resize Boolean True
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+shapeStype ShapeStyle ShapeStyle Rectangle
+state State Boolean Off
+translations Translations TranslationTable See below
+width Width Dimension A graphic width + 2 * \fBinternalWidth\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.As
+.Bg
+.Gp
+.Bm
+.Bc
+.Bp
+.Bw
+.Cb
+.Cm
+.Cr
+.Cu
+.Cn
+.Dp
+.Dc
+.Le
+.Lf
+.Ls
+.Lg
+.Hw
+.Ht
+.Ib
+.Ih
+.In
+.Ju
+.La
+.Ll
+.Mm
+.Pf
+.Pb
+.IP \fBradioData\fP 1.5i
+Specifies the data that will be returned by \fBXawToggleGetCurrent\fP
+when this is the currently \fIset\fP widget in the radio group. This
+value is also used to identify the Toggle that will be set by a call to
+\fBXawToggleSetCurrent\fP. The value NULL will be returned by
+\fBXawToggleGetCurrent\fP if no widget in a radio group is currently
+set. Programmers must not specify NULL (or Zero) as \fBradioData\fP.
+.IP \fBradioGroup\fP 1.5i
+Specifies another Toggle widget that is in the radio group to which this
+Toggle widget should be added. A radio group is a group of at least two Toggle
+widgets, only one of which may be \fIset\fP at a time. If this value is
+NULL (the default) then the Toggle will not be part of any radio group
+and can change state without affecting any other Toggle widgets. If the
+widget specified in this resource is not already in a radio group then a
+new radio group will be created containing these two Toggle widgets. No
+Toggle widget can be in multiple radio groups. The behavior of a radio
+group of one toggle is undefined. A converter is registered which will
+convert widget names to widgets without caching.
+.Re
+.Sc
+.Se
+.Ss
+.IP \fBstate\fP
+Specifies whether the Toggle widget is set (\fBTrue\fP) or unset
+(\fBFalse\fP).
+.Tr
+.Xy
+.NH 3
+Toggle Actions
+.IN "Toggle widget" "actions"
+.LP
+The Toggle widget supports the following actions:
+.IP \(bu 5
+Switching the Toggle widget between the foreground and background
+colors with \fBset\fP and \fBunset\fP and \fBtoggle\fP
+.IP \(bu 5
+Processing application callbacks with \fBnotify\fP
+.IP \(bu 5
+Switching the internal border between highlighted
+and unhighlighted states with \fBhighlight\fP and \fBunhighlight\fP
+.LP
+The following are the default translation bindings used by the
+Toggle widget:
+.IN "Toggle widget" "default translation table"
+.LP
+.sp
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <EnterWindow>: highlight(Always)
+ <LeaveWindow>: unhighlight(\|)
+ <Btn1Down>,<Btn1Up>: toggle(\|) notify(\|)
+.De
+.NH 3
+Toggle Actions
+.LP
+The full list of actions supported by Toggle is:
+.IP \fBhighlight\fP(\fIcondition\fP) 1.5i
+Displays the internal highlight border in the color (\fBforeground\fP
+or \fBbackground\fP ) that contrasts with the interior color of the
+Toggle widget. The conditions \fBWhenUnset\fP and \fBAlways\fP are
+understood by this action procedure. If no argument is passed then
+\fBWhenUnset\fP is assumed.
+.IP \fBunhighlight\fP(\|) 1.5i
+Displays the internal highlight border in the color (\fBforeground\fP
+or \fBbackground\fP ) that matches the interior color of the
+Toggle widget.
+.IP \fBset\fP(\|) 1.5i
+Enters the \fIset\fP state, in which \fBnotify\fP is possible. This
+action causes the Toggle widget to display its interior in the
+\fBforeground\fP color. The label or bitmap is displayed in the
+\fBbackground\fP color.
+.IP \fBunset\fP(\|) 1.5i
+Cancels the \fIset\fP state and displays the interior of the Toggle widget in the
+\fBbackground\fP color. The label or bitmap is displayed in the
+\fBforeground\fP color.
+.IP \fBtoggle\fP(\|) 1.5i
+Changes the current state of the Toggle widget, causing to be set
+if it was previously unset, and unset if it was previously set.
+If the widget is to be set, and is in a radio group then this procedure may
+unset another Toggle widget causing all routines on its callback list
+to be invoked. The callback routines for the Toggle that
+is to be unset will be called before the one that is to be set.
+.IP \fBreset\fP(\|) 1.5i
+Cancels any \fBset\fP or \fBhighlight\fP and displays the interior of the
+Toggle widget in the \fBbackground\fP color, with the label displayed in the
+\fBforeground\fP color.
+.IP \fBnotify\fP(\|) 1.5i
+When the Toggle widget is in the \fBset\fP state this action calls all functions in
+the callback list named by the \fBcallback\fP resource. The value of
+the call_data argument in these callback functions is undefined.
+.LP
+.NT
+When a bitmap of depth greater that one (1) is specified the
+\fIset\fP(), \fIunset\fP(), and \fIreset\fP() actions have no effect,
+since there are no foreground and background colors used in a
+multi-plane pixmap.
+.NE
+.NH 3
+Radio Groups
+.IN "Radio groups"
+.LP
+There are typically two types of radio groups desired by applications.
+The default translations for the Toggle widget implement a "zero or one
+.IN "Radio groups" "zero or one of many"
+of many" radio group. This means that there may be no more than one
+Toggle widget active, but there need not be any Toggle widgets active.
+.LP
+The other type of radio group is "one of many" and has the more strict
+.IN "Radio groups" "one of many"
+policy that there will always be exactly one radio button active.
+Toggle widgets can be used to provide this interface with a slight
+modification to the translation table of each Toggle in the group.
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+.sp
+ <EnterWindow>: highlight(Always)
+ <LeaveWindow>: unhighlight(\|)
+ <Btn1Down>,<Btn1Up>: set(\|) notify(\|)
+.sp
+.De
+This translation table will not allow any Toggle to be \fIunset\fP
+except as a result of another Toggle becoming \fIset\fP. It is
+the application programmer's responsibility to choose an initial
+state for the radio group by setting the \fBstate\fP resource of one of
+its member widgets to \fBTrue\fP.
+.NH 3
+Convenience Routines
+.LP
+The following functions allow easy access to the Toggle widget's radio
+group functionality.
+.NH 4
+Changing the Toggle's Radio Group.
+.LP
+To enable an application to change the Toggle's radio group, add
+the Toggle to a radio group, or remove the Toggle from a radio group, use
+\fBXawToggleChangeRadioGroup\fP.
+.IN "XawToggleChangeRadioGroup" "" "@DEF@"
+.FD
+void XawToggleChangeRadioGroup(\fIw\fP, \fIradio_group\fP)
+.br
+ Widget \fIw\fP, \fIradio_group\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Toggle widget.
+.IP \fIradio_group\fP 1i
+Specifies any Toggle in the new radio group. If NULL then the Toggle
+will be removed from any radio group of which it is a member.
+.LP
+If a Toggle is already \fIset\fP in the new radio group,
+and the Toggle to be added is also \fIset\fP then the previously
+\fIset\fP Toggle in the radio group is \fIunset\fP and its callback
+procedures are invoked.
+.SH
+Finding the Currently selected Toggle in a radio group of Toggles
+.LP
+To find the currently selected Toggle in a radio group of Toggle widgets
+use
+\fBXawToggleGetCurrent\fP.
+.IN "XawToggleGetCurrent" "" "@DEF@"
+.FD
+XtPointer XawToggleGetCurrent(\fIradio_group\fP);
+.br
+ Widget \fIradio_group\fP;
+.FN
+.IP \fIradio_group\fP 1i
+Specifies any Toggle widget in the radio group.
+.LP
+The value returned by this function is the
+.PN radioData
+of the Toggle in this radio group that is currently set. The default
+value for
+.PN radioData
+is the name of that Toggle widget. If no Toggle is set in the radio
+group specified then NULL is returned.
+.SH
+Changing the Toggle that is set in a radio group.
+.LP
+To change the Toggle that is currently set in a radio group use
+\fBXawToggleSetCurrent\fP.
+.IN "XawToggleSetCurrent" "" "@DEF@"
+.FD
+void XawToggleSetCurrent(\fIradio_group\fP, \fIradio_data\fP);
+.br
+ Widget \fIradio_group\fP;
+ XtPointer \fIradio_data\fP;
+.FN
+.IP \fIradio_group\fP 1i
+Specifies any Toggle widget in the radio group.
+.IP \fIradio_data\fP 1i
+Specifies the
+.PN radioData
+identifying the Toggle that should be set in the radio group specified
+by the \fIradio_group\fP argument.
+.LP
+\fBXawToggleSetCurrent\fP locates the Toggle widget to be set by
+matching \fIradio_data\fP against the \fBradioData\fP for each Toggle in
+the radio group. If none match, \fBXawToggleSetCurrent\fP returns
+without making any changes. If more than one Toggle matches,
+\fBXawToggleSetCurrent\fP will choose a Toggle to set arbitrarily. If
+this causes any Toggle widgets to change state, all routines in their
+callback lists will be invoked. The callback routines for a Toggle that
+is to be unset will be called before the one that is to be set.
+.SH
+Unsetting all Toggles in a radio group.
+.LP
+To unset all Toggle widgets in a radio group use
+\fBXawToggleUnsetCurrent\fP.
+.IN "XawToggleUnsetCurrent" "" "@DEF@"
+.FD
+void XawToggleUnsetCurrent(\fIradio_group\fP);
+.br
+ Widget \fIradio_group\fP;
+.FN
+.IP \fIradio_group\fP 1i
+Specifies any Toggle widget in the radio group.
+.LP
+If this causes a Toggle widget to change state, all routines on its
+callback list will be invoked.
+
diff --git a/specs/Xaw/Tree b/specs/Xaw/Tree
new file mode 100644
index 0000000..ceefc22
--- /dev/null
+++ b/specs/Xaw/Tree
@@ -0,0 +1,181 @@
+.\" $Xorg: Tree,v 1.3 2000/08/17 19:42:29 cpqbld Exp $
+.NH 2
+Tree Widget
+.LP
+.XS
+ Tree Widget
+.XE
+.IN "Tree widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Tree.h>
+.IN "Box.h" ""
+Class Header file <X11/Xaw/TreeP.h>
+.IN "TreeP.h" ""
+Class treeWidgetClass
+.IN "treeWidgetClass" ""
+Class Name Tree
+.IN "Tree widget" "class name"
+Superclass Constraint
+.sp
+.De
+.LP
+The Tree widget provides geometry management of arbitrary widgets arranged
+in a directed, acyclic graph (i.e., a tree). The hierarchy is constructed
+by attaching a constraint resource called \fBtreeParent\fP to each widget
+indicating which other node in the tree should be treated as the widget's
+superior. The structure of the tree is shown by laying out the nodes
+in the standard format for tree diagrams with lines drawn connecting each
+node with its children.
+.LP
+The Tree sizes itself according to the needs of its children and is not
+intended to be resized by its parent. Instead, it should be placed inside
+another composite widget (such as the \fBPorthole\fP or \fBViewport\fP)
+that can be used to scroll around in the tree.
+.NH 3
+Resources
+.LP
+When creating a Tree widget instance, the following resources are
+retrieved from the argument list or from the resource database:
+.LP
+.IN "Box widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+ancestorSensitive AncestorSensitive Boolean D True
+autoReconfigure AutoReconfigure Boolean False
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+children ReadOnly WidgetList R NULL
+colormap Colormap Colormap Parent's Colormap
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+foreground Foreground Pixel XtDefaultForeground
+gravity Gravity XtGravity WestGravity
+height Height Dimension A see \fBLayout Semantics\fP
+hSpace HSpace Dimension 4
+lineWidth LineWidth Dimension 0
+mappedWhenManaged MappedWhenManaged Boolean True
+numChildren ReadOnly Cardinal R 0
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+vSpace VSpace Dimension 4
+translations Translations TranslationTable NULL
+width Width Dimension A see \fBLayout Semantics\fP
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.IP \fBautoReconfigure\fP 1.5i
+Whether or not to layout the tree every time a node is added or removed.
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Ch
+.Cm
+.Dp
+.Dc
+.Lg
+.IP \fBgravity\fP 1.5i
+.IN "conversions" "Gravity"
+Specifies the side of the widget from which the tree should grow. Valid
+values include \fBWestGravity\fP, \fBNorthGravity\fP, \fBEastGravity\fP, and
+\fBSouthGravity\fP.
+.Rs "\fP the legal values\fB"
+.Hw
+.IP \fBhSpace\fP 1.5i
+.br
+.ns
+.IP \fBvSpace\fP 1.5i
+The amount of space, in pixels, to leave between the children. This
+resource specifies the amount of space left between the outermost
+children and the edge of the box.
+.IP \fBlineWidth\fP 1.5i
+The width of the lines from nodes that do not have a \fBtreeGC\fP
+constraint resource to their children.
+.Mm
+.Nc
+.Sc
+.Se
+.Tr
+.Xy
+.NH 3
+Constraint Resources
+.LP
+.IN "Tree widget" "constraint resources"
+Each child of the Tree widget must specify its superior node in the tree. In
+addition, it may specify a GC to use when drawing a line between it and its
+inferior nodes.
+.TS H
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+treeGC TreeGC GC NULL
+treeParent TreeParent Widget NULL
+.sp 3p
+_
+.TE
+.IP \fBtreeGC\fP 1.5i
+This specifies the GC to use when drawing lines between this widget and its
+inferiors in the tree. If this resource is not specified, the Tree's
+\fBforeground\fP and \fBlineWidth\fP will be used.
+.IP \fBtreeParent\fP 1.5i
+This specifies the superior node in the tree for this widget. The default is
+for the node to have no superior (and to therefore be at the top of the tree).
+.NH 3
+Layout Semantics
+.IN "Tree widget" "layout semantics"
+.LP
+Each time a child is managed or unmanaged, the Tree widget will attempt
+to reposition the remaining children to fix the shape of the tree if the
+.B autoReconfigure
+resource is set. Children at the top (most superior) of the tree are
+drawn at
+the side specified by the
+.B gravity
+resource.
+.LP
+After positioning all children, the Tree widget attempts to shrink its
+own size to the minimum dimensions required for the layout.
+.NH 3
+Convenience Routines
+.LP
+.IN "Tree widget" "convenience routines"
+The most efficient way to layout a tree is to set
+.B autoReconfigure
+to False and then use the
+.B XawTreeForceLayout
+routine to arrange the children.
+.IN "XawTreeForceLayout" "" "@DEF@"
+.FD 0
+void XawTreeForceLayout(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Tree widget.
diff --git a/specs/Xaw/Viewport b/specs/Xaw/Viewport
new file mode 100644
index 0000000..0b59947
--- /dev/null
+++ b/specs/Xaw/Viewport
@@ -0,0 +1,156 @@
+.\" $Xorg: Viewport,v 1.3 2000/08/17 19:42:29 cpqbld Exp $
+.NH 2
+Viewport Widget
+.LP
+.XS
+ Viewport Widget
+.XE
+.IN "Viewport widget" "" "@DEF@"
+.Ds 0
+.TA 2.0i
+.ta 2.0i
+.sp
+Application Header file <X11/Xaw/Viewport.h>
+.IN "Viewport.h" ""
+Class Header file <X11/Xaw/ViewportP.h>
+.IN "ViewportP.h" ""
+Class viewportWidgetClass
+.IN "viewportWidgetClass" ""
+Class Name Viewport
+.IN "Viewport widget" "class name"
+Superclass Form
+.sp
+.De
+.LP
+The Viewport widget consists of a frame window, one or two Scrollbars,
+and an inner window. The size of the frame window is determined by the
+viewing size of the data that is to be displayed and the dimensions to
+which the Viewport is created. The inner window is the full size of the
+data that is to be displayed and is clipped by the frame window. The
+Viewport widget controls the scrolling of the data directly. No
+application callbacks are required for scrolling.
+.LP
+When the geometry of the frame window is equal in size to the inner
+window, or when the data does not require scrolling, the Viewport widget
+automatically removes any scrollbars. The \fBforceBars\fP option causes
+the Viewport widget to display all scrollbars permanently.
+.NH 3
+Resources
+.LP
+When creating a Viewport widget instance, the following resources are
+retrieved from the argument list or the resource database:
+.LP
+.IN "Viewport widget" "resources"
+.TS H
+expand;
+lw(1i) lw(1i) lw(1i) lw(.5i) lw(2i).
+_
+.sp 3p
+.TB
+Name Class Type Notes Default Value
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+accelerators Accelerators AcceleratorTable NULL
+allowHoriz Boolean Boolean False
+allowVert Boolean Boolean False
+ancestorSensitive AncestorSensitive Boolean D True
+background Background Pixel XtDefaultBackground
+backgroundPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderColor BorderColor Pixel XtDefaultForeground
+borderPixmap Pixmap Pixmap XtUnspecifiedPixmap
+borderWidth BorderWidth Dimension 1
+children ReadOnly WidgetList R NULL
+colormap Colormap Colormap Parent's Colormap
+depth Depth int C Parent's Depth
+destroyCallback Callback XtCallbackList NULL
+forceBars Boolean Boolean False
+height Height Dimension height of the child
+mappedWhenManaged MappedWhenManaged Boolean True
+numChildren ReadOnly Cardinal R 0
+reportCallback ReportCallback XtCallbackList NULL
+screen Screen Screen R Parent's Screen
+sensitive Sensitive Boolean True
+translations Translations TranslationTable NULL
+useBottom Boolean Boolean False
+useRight Boolean Boolean False
+width Width Dimension width of the child
+x Position Position 0
+y Position Position 0
+.sp 3p
+_
+.TE
+.Ac
+.IP \fBallowHoriz\fP 1.5i
+.br
+.ns
+.IP \fBallowVert\fP 1.5i
+If these resources are \fBFalse\fP then the Viewport will never create
+a scrollbar in this direction. If it is \fBTrue\fP then the scrollbar will
+only appear when it is needed, unless \fBforceBars\fP is \fBTrue\fP.
+.As
+.Bg
+.Gp
+.Bc
+.Bp
+.Bw
+.Ch
+.Cm
+.Dp
+.Dc
+.IP \fBforceBars\fP 1.5i
+When \fBTrue\fP the scrollbars that have been \fIallowed\fP will always be
+visible on the screen. If \fBFalse\fP the scrollbars will be visible only
+when the inner window is larger than the frame.
+.Hw
+.Mm
+.Nc
+.IP \fBreportCallback\fP 1.5i
+These callbacks will be executed whenever the Viewport adjusts the viewed
+area of the child. The call_data parameter is a pointer to an XawPannerReport
+structure.
+.Sc
+.Se
+.Tr
+.IP \fBuseBottom\fP 1.5i
+.br
+.ns
+.IP \fBuseRight\fP 1.5i
+By default the scrollbars appear on the left and top of the screen.
+These resources allow the vertical scrollbar to be placed on the right
+edge of the Viewport, and the horizontal scrollbar on the bottom edge of
+the Viewport.
+.Xy
+.NH 3
+Layout Semantics
+.LP
+.IN "Viewport widget" "layout semantics"
+The Viewport widget manages a single child widget. When the size of the
+child is larger than the size of the Viewport, the user can interactively
+move the child within the Viewport by repositioning the scrollbars.
+.LP
+The default size of the Viewport before it is realized is the width and/or
+height of the child. After it is realized, the Viewport will allow its
+child to grow vertically or horizontally if \fBallowVert\fP or
+\fBallowHoriz\fP are set, respectively. If the corresponding vertical
+or horizontal scrollbar is not enabled, the Viewport will propagate the
+geometry request to its own parent and the child will be allowed to change
+size only if the Viewport's parent allows it. Regardless of whether or not
+scrollbars are enabled in the corresponding direction, if the child requests
+a new size smaller than the Viewport size, the change will be allowed only
+if the parent of the Viewport allows the Viewport to shrink to the
+appropriate dimension.
+.LP
+The scrollbar children of the Viewport are named \fBhorizontal\fP and
+\fBvertical\fP. By using these names the programmer can specify resources
+for the individual scrollbars. \fBXtSetValues\fP can be used to modify
+the resources dynamically once the widget ID has been obtained with
+\fBXtNameToWidget\fP.
+.IN "XtNameToWidget" ""
+.NT
+Although the Viewport is a Subclass of the Form, no resources for the Form
+may be supplied for any of the children of the Viewport. These constraints
+are managed internally and are not meant for public consumption.
+.NE
diff --git a/specs/Xaw/Xtk.widg.front b/specs/Xaw/Xtk.widg.front
new file mode 100644
index 0000000..6ffe090
--- /dev/null
+++ b/specs/Xaw/Xtk.widg.front
@@ -0,0 +1,134 @@
+.\"
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 5
+\s+2\fB\*(xW\fP\s-2
+
+\s+1\fBX Window System\fP\s-1
+
+\s+1\fBX Version 11, Release 3+\fP\s-1
+
+\s+1\fBDRAFT - not for Redistribution\fP\s-1
+.sp 6
+.ce 4
+\s-1Ralph R. Swick
+.sp 6p
+Digital Equipment Corporation
+External Research Group
+MIT Project Athena
+.sp 2
+.ce 4
+Terry Weissman
+.sp 6p
+Digital Equipment Corporation
+Western Software Laboratory\s+1
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+X Window System is a trademark of X Consortium, Inc.
+.LP
+Copyright \(co 1985, 1986, 1987, 1988
+Digital Equipment Corporation, Maynard, Massachusetts.
+.LP
+Permission to use, copy, modify and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice appears in all copies and that both that copyright notice and this
+permission notice appear in supporting documentation, and that the name of
+Digital not be used in in advertising or publicity pertaining
+to distribution of the software without specific, written prior permission.
+Digital makes no representations about the suitability of the
+software described herein for any purpose.
+It is provided ``as is'' without express or implied warranty.
+Copyright \(co 1985, 1986, 1987, 1988 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.LP
+.ps 11
+.nr PS 11
+.bp iii
+.XS iii
+Acknowledgments
+.XE
+\&
+.sp 1
+.ce 3
+\s+1\fBAcknowledgments\fP\s-1
+.sp 2
+.na
+.LP
+The implementation of the Athena Widgets was the responsibility of
+Ralph Swick, Ron Newman (Project Athena),
+and Mark Ackerman (Project Athena).
+Additional contributions to their implementation was made by:
+.LP
+.Ds
+Rich Hyde (Digital WSL)
+Terry Weissman (Digital WSL)
+Mary Larson (Digital UEG)
+Joel McCormack (Digital WSL)
+Jeanne Rich (Digital WSL)
+Charles Haynes (Digital WSL)
+Loretta Guarino-Reid (Digital WSL)
+.De
+.LP
+The contributors to the X10 toolkit also deserve much of the
+credit for this work.
+The Athena Widgets borrow heavily on the their counterparts in the X10 toolkit.
+The design and implementation of the X10 toolkit were done by:
+.LP
+.Ds
+Terry Weissman (Digital WSL)
+Smokey Wallace (Digital WSL)
+Phil Karlton (Digital WSL)
+Charles Haynes (Digital WSL)
+Ram Rao (Digital UEG)
+Mary Larson (Digital UEG)
+Mike Gancarz (Digital UEG)
+Kathleen Langone (Digital UEG)
+.De
+.LP
+Thanks go to Al Mento of Digital's UEG Documentation Group for
+formatting and generally improving this document
+and to Chris Peterson of Project Athena for testing the many versions
+of the code and reviewing this document.
+.LP
+.sp
+.Ds 0
+Ralph R. Swick
+Digital Equipment Corporation
+External Research Group
+MIT Project Athena
+.De
+.bp 1
+.EH '\fBX Toolkit Athena Widgets\fP''\fBX11, Release 3+ DRAFT\fP'
+.OH '\fBX Toolkit Athena Widgets\fP''\fBX11, Release 3+ DRAFT\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
diff --git a/specs/Xaw/Xtk.widgets b/specs/Xaw/Xtk.widgets
new file mode 100644
index 0000000..d33c240
--- /dev/null
+++ b/specs/Xaw/Xtk.widgets
@@ -0,0 +1,5960 @@
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 1\fP\s-1
+
+\s+1\fBAthena Widgets and The Intrinsics\fP\s-1
+.sp 2
+.nr H1 1
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 1 \- Athena Widgets and The Intrinsics
+.XE
+The Athena widget set and the \*(xI make up the \*(tk.
+In the \*(tk,
+a widget is the combination of an X window or subwindow
+and its associated input and output semantics.
+The Athena widgets provide the base functionality necessary to build
+a wide variety of application environments.
+Because the \*(xI mask implementation details from the widget
+and application programmer,
+the Athena widgets and the application environments built with them are
+fully compatible with the other widget sets built with the \*(xI.
+For information about the \*(xI,
+see the \fI\*(xT\fP.
+.LP
+The Athena widget set is a library package layered on top of the \*(xI
+and Xlib.
+This layer extends the basic abstractions provided by X
+and provides the next layer of functionality primarily by supplying
+a cohesive set of sample widgets.
+.LP
+To the extent possible,
+the \*(tk is policy free.
+The application environment, not the \*(tk, defines, implements, and enforces:
+.IP \(bu 5
+Policy
+.IP \(bu 5
+Consistency
+.IP \(bu 5
+Style
+.LP
+Each individual widget implementation defines its own policy.
+The \*(tk design allows for but does not necessarily encourage
+the free mixing of radically differing widget implementations.
+.NH 2
+Introduction to the \*(tk Library
+.LP
+.XS
+\*(SN Introduction to the \*(tk Library
+.XE
+The \*(tk library provides tools that simplify the design of
+application user interfaces in the X Window System programming environment.
+It assists application programmers by providing a set of common
+underlying user-interface functions.
+It also lets widget programmers modify existing widgets
+or add new widgets.
+By using the \*(tk library in their applications,
+programmers present a similar user interface across
+applications to all workstation users.
+.LP
+The \*(tk consists of:
+.IP \(bu 5
+A set of \*(xI functions for building widgets
+.IP \(bu 5
+An architectural model for constructing widgets
+.IP \(bu 5
+A sample interface (widget set) for programming
+.LP
+While the majority of the \*(xI functions are intended
+for the widget programmer,
+a subset of the \*(xI functions are to be used by application programmers
+(see \fI\*(xT\fP).
+The architectural model lets the widget programmer design new widgets
+by using the \*(xI and by combining other widgets.
+The application interface layers built on top of the \*(tk include a
+coordinated set of widgets and composition policies.
+Some of these widgets and policies are specific to an application domain,
+and others are common across a number of application domains.
+.LP
+The \*(tk also can implement one or more application interface layers to:
+.IP \(bu 5
+Verify the toolkit architecture
+.IP \(bu 5
+Provide a base set of widgets and composition policies that
+can be incorporated in other application interface layers
+.IP \(bu 5
+Make the \*(tk immediately usable by those application
+programmers who find that a supplied application interface layer
+meets their needs
+.LP
+The remainder of this chapter discusses the \*(tk:
+.IP \(bu 5
+Terminology
+.IP \(bu 5
+Model
+.IP \(bu 5
+Design principles and philosophy
+.LE
+.NH 2
+Terminology
+.LP
+.XS
+\*(SN Terminology
+.XE
+.LP
+In addition to the terms already defined for X programming (see \fI\*(xL\fP),
+the following terms are specific to the \*(xI and used throughout this book.
+.LP
+\fBApplication programmer\fP
+.IN "Application programmer" "" "@DEF@"
+.IP
+A programmer who uses the \*(tk to produce an application user interface.
+.LP
+.PN Child
+.IP
+A widget that is contained within another ("parent") widget.
+.LP
+\fBClass\fP
+.IN "Class" "" "@DEF@"
+.IP
+The general group to which a specific object belongs.
+.LP
+\fBClient\fP
+.IN "Client" "" "@DEF@"
+.IP
+A function that uses a widget in an application or for composing
+other widgets.
+.LP
+.PN "Full\ name"
+.IP
+The name of a widget instance appended to the full name of its parent.
+.LP
+\fBInstance\fP
+.IN "Instance" "" "@DEF@"
+.IP
+A specific widget object as opposed to a general widget class.
+.LP
+\fBMethod\fP
+.IN "Method" "" "@DEF@"
+.IP
+The functions or procedures that a widget class implements.
+.LP
+\fBName\fP
+.IN "Name" "" "@DEF@"
+.IP
+The name that is specific to an instance of a widget for a given client.
+.LP
+\fBObject\fP
+.IN "Object" "" "@DEF@"
+.IP
+A software data abstraction consisting of private data and private and public
+functions that operate on the private data.
+Users of the abstraction can interact with the object only through calls
+to the object's public functions.
+In the \*(tk,
+some of the object's public functions are called directly by the application,
+while others are called indirectly when the application calls the common
+\*(xI functions.
+In general, if a function is common to all widgets,
+an application uses a single \*(xI function to invoke the function for all
+types of widgets.
+If a function is unique to a single widget type,
+the widget exports the function as another ``Xt'' function.
+.LP
+.PN Parent
+.IP
+A widget that contains at least one other ("child") widget.
+A parent widget is also known as a composite widget.
+.LP
+\fBResource\fP
+.IN "Resource" "" "@DEF@"
+.IP
+A named piece of data in a widget that can be set by a client,
+by an application, or by user defaults.
+.LP
+.PN Superclass
+.IP
+A larger class of which a specific class is a member.
+All members of a class are also members of the superclass.
+.LP
+\fBUser\fP
+.IN "User" "" "@DEF@"
+.IP
+A person interacting with a workstation.
+.LP
+\fBWidget\fP
+.IN "Widget" "" "@DEF@"
+.IP
+An object providing a user-interface abstraction (for example, a Scrollbar
+widget).
+.LP
+\fBWidget class\fP
+.IN "Widget class" "" "@DEF@"
+.IP
+The general group to which a specific widget belongs,
+otherwise known as the type of the widget.
+.LP
+\fBWidget programmer\fP
+.IN "Widget programmer" "" "@DEF@"
+.IP
+A programmer who adds new widgets to the \*(tk.
+.NH 2
+Underlying Model
+.LP
+.XS
+\*(SN Underlying Model
+.XE
+The underlying architectural model is based on the following premises:
+.KS
+.IP "Widgets are X windows"
+.IP
+Every user-interface widget is contained in a unique X window.
+The X window ID for a widget is readily available from the widget ID,
+so standard Xlib window manipulation procedures can operate on
+widgets.
+.KE
+.KS
+.IP "Information hiding"
+.IP
+The data for every widget is private to the widget and its subclasses.
+That is, the data is neither directly accessible
+nor visible outside of the module implementing the widget.
+All program interaction with the widget is performed by a set of operations
+(methods) that are defined for the widget.
+.KE
+.KS
+.IP "Widget semantics and widget layout geometry"
+.IP
+Widget semantics are clearly separated from widget layout
+geometry.
+Widgets are concerned with implementing specific user-interface
+semantics.
+They have little control over issues such as their size or
+placement relative to other widget peers.
+Mechanisms are provided for associating geometric managers with widgets
+and for widgets to make suggestions about their own geometry.
+.KE
+.NH 2
+Design Principles and Philosophy
+.LP
+.XS
+\*(SN Design Principles and Philosophy
+.XE
+The \*(tk follows two design principles throughout,
+which cover languages and language bindings as well as widget IDs.
+.NH 3
+Languages and Language Bindings
+.LP
+The \*(tk facilitates access from objective languages.
+However, the \*(tk library is conveniently usable by
+application programs written in nonobjective languages.
+Procedural interface guidelines are required when the
+\*(tk is used with nonobjective languages.
+.LP
+The guidelines for the procedural interfaces are:
+.IP \(bu 5
+Strings are passed as null-terminated character arrays.
+.IP \(bu 5
+Most other arrays are passed using two parameters: a size and a pointer to
+the first element.
+.IP \(bu 5
+Most numeric arguments are passed by value.
+.IP \(bu 5
+Structures as arguments are avoided,
+unless a method for building them is provided for languages without pointers.
+Pointers embedded in structures are allowed,
+but they should be avoided if an equivalent alternative is available.
+.IP \(bu 5
+Pointers are not recommended as return arguments, unless they will never
+have to be dereferenced by the caller.
+If they need to be dereferenced,
+the caller should allocate storage and pass the address to the procedure
+to fill in.
+.IP \(bu 5
+Procedures can be passed as parameters.
+.IP \(bu 5
+The ownership of dynamically allocated storage is determined on a
+case-by-case basis.
+The application is also permitted to replace the standard
+memory allocation and freeing routines used by the library at build time.
+.NH 3
+Widget IDs
+.LP
+All references to widgets use a unique identifier that is known as the widget ID.
+The widget ID is returned to the client by the
+.PN XtCreateWidget
+function.
+From an application programmer's perspective,
+a widget ID is an opaque data type;
+no particular interpretation can be assigned to it.
+Given a widget ID,
+you can retrieve the corresponding X window ID, the
+.PN Display
+and
+.PN Screen
+structures, and other information by using \*(xI functions.
+.LP
+From a widget programmer's perspective,
+the widget ID actually is a pointer to a data structure
+known as the widget instance record.
+Several parts of the data structure are common to all widget types,
+while other parts are unique to a particular widget type.
+The widget's private data that is associated with a particular widget instance
+normally is included directly in the widget instance record.
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 2\fP\s-1
+
+\s+1\fBUsing Widgets\fP\s-1
+.sp 2
+.nr H1 2
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 2 \- Using Widgets
+.XE
+Widgets serve as the primary tools for building a user
+interface or application environment.
+The widget set consists of primitive widgets (for example, a command button)
+and composite widgets (for example, a Dialog widget).
+.LP
+The remaining chapters of this guide explain the widgets and the geometry
+managers that work together to provide a set of user-interface components.
+These user-interface components serve as a default interface for
+application programmers who do not want to implement their own widgets.
+In addition, they serve as examples or a starting point
+for those widget programmers who, using the \*(xI mechanisms,
+want to implement alternative application programming interfaces.
+.LP
+This chapter discusses the common features of the \*(tk widgets.
+.NH 2
+Initializing the Toolkit
+.LP
+.XS
+\*(SN Initializing the Toolkit
+.XE
+You must invoke the toolkit initialization function
+.PN XtInitialize
+before invoking any other toolkit routines.
+.PN XtInitialize
+opens the X server connection,
+parses standard parts of the command line,
+and creates an initial widget that is to serve as the root of
+a tree of widgets that will be created by this application.
+.IN "XtInitialize" "" "@DEF@"
+.FD 0
+Widget XtInitialize(\fIshell_name\fP, \fIapplication_class\fP, \fIoptions\fP, \
+\fInum_options\fP, \fIargc\fP, \fIargv\fP)
+.br
+ String \fIshell_name\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescRec \fIoptions\fP[];
+.br
+ Cardinal \fInum_options\fP;
+.br
+ Cardinal *\fIargc\fP;
+.br
+ String \fIargv\fP[];
+.FN
+.IP \fIshell_name\fP 1i
+Specifies the name of the application shell widget instance,
+which usually is something generic like ``main''.
+.IP \fIapplication_class\ \ \ \fP 1i
+Specifies the class name of this application,
+which usually is the generic name for all instances of this application.
+By convention, the class name is formed by reversing the case of the
+application's first significant letter.
+For example,
+an application named ``xterm'' would have a class name of ``XTerm''.
+.IP \fIoptions\fP 1i
+Specifies how to parse the command line for any application-specific resources.
+The options argument is passed as a parameter to
+.PN XrmParseCommand .
+For further information,
+see \fI\*(xL\fP.
+.IP \fInum_options\fP 1i
+Specifies the number of entries in the options list.
+.IP \fIargc\fP 1i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv\fP 1i
+Specifies the command line parameters.
+.LP
+For further information about this function,
+see the \fI\*(xI\fP.
+.NH 2
+Creating a Widget
+.LP
+.XS
+\*(SN Creating a Widget
+.XE
+Creating a widget is a three-step process.
+First, the widget instance is allocated,
+and various instance-specific attributes are set by using
+.PN XtCreateWidget .
+Second, the widget's parent is informed of the new child by using
+.PN XtManageChild .
+Finally, X windows are created for the parent and all its children by using
+.PN XtRealizeWidget
+and specifying the top-most widget.
+The first two steps can be combined by using
+.PN XtCreateManagedWidget .
+In addition,
+.PN XtRealizeWidget
+is automatically called when the child becomes managed if the parent
+is already realized.
+.LP
+To allocate and initialize a widget, use
+.PN XtCreateWidget .
+.IN "XtCreateWidget" "" "@DEF@"
+.FD 0
+Widget XtCreateWidget(\fIname\fP, \fIwidget_class\fP, \fIparent\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Widget \fIparent\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the instance name for the created widget that is used for retrieving
+widget resources.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class pointer for the created widget.
+.IP \fIparent\fP 1i
+Specifies the parent widget ID.
+.IP \fIargs\fP 1i
+Specifies the argument list.
+The argument list is a variable-length list composed of name
+and value pairs that contain information pertaining to the specific widget
+instance being created.
+For further information,
+see Section 2.7.2.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+When the num_args is zero, the argument list is never referenced.
+.LP
+When a widget instance is successfully created,
+the widget identifier is returned to the application.
+If an error is encountered,
+the
+.PN XtError
+routine is invoked to inform the user of the error.
+.LP
+For further information,
+see the \fI\*(xI\fP.
+.NH 2
+Common Arguments in the Widget Argument List
+.LP
+Although a widget can have unique arguments that it understands,
+all widgets have common arguments that provide some regularity of operation.
+The common arguments allow arbitrary widgets to be
+managed by higher-level components without regards to the individual
+widget type.
+All widgets ignore any argument that they do not understand.
+.LP
+The following resources are retrieved from the argument list
+or from the resource database by all \*(tk widgets:
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of the border in pixels
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callback for
+.PN XtDestroyWidget
+T}
+XtNheight Dimension Widget dependent Height of the widget
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNsensitive Boolean True Whether widget should receive input
+XtNtranslations TranslationTable None Event-to-action translations
+XtNwidth Dimension Widget dependent Width of the widget
+XtNx Position 0 x coordinate within parent
+XtNy Position 0 y coordinate within parent
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The following additional resources are retrieved from the argument list
+or from the resource database by many \*(tk widgets:
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNcallback XtCallbackList NULL Callback functions and client data
+XtNcursor Cursor None Pointer cursor
+XtNforeground Pixel XtDefaultForeground Foreground color
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The value for the XtNcursor resource can be specified in the resource
+database as a string,
+which can be specified as one of the following:
+.IP \(bu 5
+A standard X cursor name from
+.Pn < X11/cursorfont.h >
+.IP \(bu 5
+FONT font-name glyph-index [[ font-name ] glyph-index ]
+.IP \(bu 5
+A relative or absolute file name
+.LP
+The first font and glyph specify the cursor source pixmap.
+The second font and glyph specify the cursor mask pixmap.
+The mask font defaults to the source font,
+and the mask glyph index defaults to the source glyph index.
+.LP
+If a relative or absolute file name is specified,
+that file is used to create the source pixmap.
+Then the string "Mask" is appended to locate the cursor mask pixmap.
+If the "Mask" file does not exist,
+the suffix "msk" is tried.
+If "msk" fails,
+no cursor mask will be used.
+If a relative file name is used,
+the directory specified by the resource name
+.PN bitmapFilePath
+or class
+.PN BitmapFilePath
+is added to the beginning of the file name.
+If the
+.PN bitmapFilePath
+resource is not defined,
+the default directory on a UNIX-based system is
+.PN /usr/include/X11/bitmaps .
+.NH 2
+Realizing a Widget
+.LP
+.XS
+\*(SN Realizing a Widget
+.XE
+The
+.PN XtRealizeWidget
+function performs two tasks:
+.IP \(bu 5
+Creates an X window for the widget and,
+if it is a composite widget, for each of its managed children.
+.IP \(bu 5
+Maps each window onto the screen.
+.IN "XtRealizeWidget" "" "@DEF@"
+.FD 0
+void XtRealizeWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.LP
+For further information about this function,
+see the \fI\*(xT\fP.
+.NH 2
+Standard Widget Manipulation Functions
+.LP
+.XS
+\*(SN Standard Widget Manipulation Functions
+.XE
+After a widget has been created,
+a client can interact with that widget by calling either of the following:
+.IP \(bu 5
+One of the standard widget manipulation routines that
+provide functions that all widgets support
+.IP \(bu 5
+A widget class-specific manipulation routine
+.LP
+The \*(tk provides generic routines to provide the
+application programmer access to a set of standard widget functions.
+These routines let an application or composite widget manipulate
+widgets without requiring explicit knowledge of the widget type.
+The standard widget manipulation functions let you:
+.IP \(bu 5
+Control the location, size and mapping of widget windows
+.IP \(bu 5
+Destroy a widget instance
+.IP \(bu 5
+Obtain an argument value
+.IP \(bu 5
+Set an argument value
+.NH 3
+Mapping Widgets
+.LP
+By default,
+widget windows automatically are mapped (made viewable) by
+.PN XtRealizeWidget .
+This behavior can be changed by using
+.PN XtSetMappedWhenManaged ,
+and it then is the client's responsibility to use the
+.PN XtMapWidget
+function to make the widget viewable.
+.IN "XtSetMappedWhenManaged" "" @DEF@"
+.FD 0
+void XtSetMappedWhenManaged(\fIw\fP, \fImap_when_managed\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fImap_when_managed\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fImap_when_managed\fP 1i
+Specifies the new value.
+If map_when_managed is
+.PN True ,
+the widget is mapped automatically when it is realized.
+If map_when_managed is
+.PN False ,
+the client must call
+.PN XtMapWidget
+or make a second call to
+.PN XtSetMappedWhenManaged
+to cause the child window to be mapped.
+.LP
+.sp
+The definition for
+.PN XtMapWidget
+is:
+.IN "XtMapWidget" "" "@DEF@"
+.FD 0
+XtMapWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.LP
+When you create several children in sequence for a common parent
+after it has been realized,
+it is generally more efficient to construct a list of children as
+they are created and use
+.PN XtManageChildren
+to inform their parent of them all at once,
+instead of causing each child to be managed separately.
+By managing a list of children at one time,
+the parent can avoid wasteful duplication of geometry processing
+and the associated "screen flash".
+.IN "XtManageChildren" "" "@DEF@"
+.FD 0
+void XtManageChildren(\fIchildren\fP, \fInum_children\fP)
+.br
+ WidgetList \fIchildren\fP;
+.br
+ Cardinal \fInum_children\fP;
+.FN
+.IP \fIchildren\fP 1i
+Specifies a list of children to add.
+.IP \fInum_children\fP 1i
+Specifies the number of children to add.
+.LP
+If the parent is already visible on the screen,
+it is especially important to batch updates so that the minimum amount
+of visible window reconfiguration is performed.
+.LP
+For further information about these functions,
+see the \fI\*(xI\fP.
+.NH 3
+Destroying Widgets
+.LP
+To destroy a widget instance of any type, use
+.PN XtDestroyWidget .
+.IN "XtDestroyWidget" "" "@DEF@"
+.FD 0
+void XtDestroyWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.LP
+.PN XtDestroyWidget
+destroys the widget and recursively destroys any children that it may have,
+including the windows created by its children.
+After calling
+.PN XtDestroyWidget ,
+no further references should be made to the widget or to the widget IDs
+of any children that the destroyed widget may have had.
+.NH 3
+Retrieving Widget Resource Values
+.LP
+To retrieve the current value of a resource attribute associated
+with a widget instance, use
+.PN XtGetValues .
+.IN "XtGetValues" "" "@DEF@"
+.FD 0
+void XtGetValues(\fIw\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIargs\fP 1i
+Specifies a variable-length argument list of name and address
+pairs that contain the resource name and the address into which the resource value is stored.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.LP
+The arguments and values passed in the argument list are dependent on the widget.
+Note that the caller is responsible for allocating space into which the returned
+resource value is copied; the
+.PN ArgList
+contains a pointer to this storage.
+The caller must allocate storage of the type as represented in the widget.
+For example, x and y must be allocated as Position and so on.
+For further information,
+see the \fI\*(xT\fP.
+.NH 3
+Modifying Widget Resource Values
+.LP
+To modify the current value of a resource attribute associated
+with a widget instance, use
+.PN XtSetValues .
+.IN "XtSetValues" "" "@DEF@"
+.FD 0
+void XtSetValues(\fIw\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIargs\fP 1i
+Specifies a variable-length argument list of name and value
+pairs that contain the arguments to be modified and their new values.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.LP
+The arguments and values passed in the argument list depend on
+the widget being modified.
+Some widgets may not allow certain resources to be modified
+after the widget instance has been created or realized.
+No notification is given if any part of a
+.PN XtSetValues
+request is ignored.
+.LP
+For further information about these functions,
+see the \fI\*(xI\fP.
+.NT
+The argument list entry for
+.PN XtGetValues
+specifies the address to which the caller wants the value copied.
+The argument list entry for
+.PN XtSetValues ,
+however, contains the new value itself if the size of value is less
+than sizeof(XtArgVal) (architecture dependent, but at least sizeof(long));
+otherwise, it is a pointer to the value.
+String resources are always passed as pointers, regardless of the
+length of the string.
+.NE
+.NH 2
+Using the Client Callback Interface
+.LP
+.XS
+\*(SN Using the Client Callback Interface
+.XE
+Widgets communicate changes in their state to their clients
+by means of a callback facility.
+The format for a client's callback handler is:
+.IN "CallbackProc" "" "@DEF@"
+.FD 0
+void \fICallbackProc\fP(\fIw\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ caddr_t \fIclient_data\fP;
+.br
+ caddr_t \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies widget for which the callback is registered.
+.IP \fIclient_data\fP 1i
+Specifies arbitrary client-supplied data that the widget should pass back
+to the client when the widget executes the client's callback procedure.
+This is a way for the client registering the callback to also register
+client-specific data:
+a pointer to additional information about the widget,
+a reason for invoking the callback, and so on.
+It is perfectly normal to have client_data of NULL
+if all necessary information is in the widget.
+This field is also frequently known as the \fIclosure\fP.
+.IP \fIcall_data\fP 1i
+Specifies any callback-specific data the widget wants to pass to the client.
+For example, when Scrollbar executes its jumpProc callback list,
+it passes the current position of the thumb in the call_data argument.
+.LP
+Callbacks can be registered with widgets in one of two ways.
+When the widget is created,
+a pointer to a list of callback procedure and data pairs can be passed in the
+argument list to
+.PN XtCreateWidget .
+The list is of type
+.PN XtCallbackList :
+.IN "XtCallbackProc"
+.IN "XtCallbackList" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XtCallbackProc callback;
+ caddr_t closure;
+} XtCallbackRec, *XtCallbackList;
+.De
+.LP
+The callback list must be allocated and initialized before calling
+.PN XtCreateWidget .
+The end of the list is identified by an entry containing NULL in
+callback and closure.
+Once the widget is created,
+the client can change or de-allocate this list;
+The widget itself makes no further reference to it.
+The closure field contains the client_data passed to the callback
+when the callback list is executed.
+.LP
+The second method for registering callbacks is to use
+.PN XtAddCallback
+after the widget has been created.
+.IN "XtAddCallback" "" "@DEF@"
+.FD 0
+void XtAddCallback(\fIw\fP, \fIcallback_name, \fP\fIcallback\fP, \
+\fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.br
+ XtCallbackProc \fIcallback\fP;
+.br
+ caddr_t \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget to add the callback to.
+.IP \fIcallback_name\fP 1i
+Specifies the callback list within the widget to append to.
+.IP \fIcallback\fP 1i
+Specifies the callback procedure to add.
+.IP \fIclient_data\fP 1i
+Specifies the data to be passed to the callback when it is invoked.
+.LP
+.PN XtAddCallback
+adds the specified callback to the list for the named widget.
+.LP
+All widgets provide a callback list named
+.PN XtNdestroyCallback
+where clients can register procedures that are to be executed when the widget
+is destroyed.
+The destroy callbacks are executed when the widget or an ancestor is destroyed.
+The call_data argument is unused for destroy callbacks.
+.LP
+The \*(tk \*(xI provide additional functions for further manipulating
+a callback list.
+For information about these functions, see
+.PN XtCallCallbacks ,
+.PN XtRemoveCallback ,
+.PN XtRemoveCallbacks ,
+and
+.PN XtRemoveAllCallbacks
+in the \fI\*(xT\fP.
+.NH 2
+Programming Considerations
+.LP
+.XS
+\*(SN Programming Considerations
+.XE
+This section provides some guidelines to set up an application
+program that uses the \*(tk.
+This section discusses:
+.IP \(bu 5
+Writing applications
+.IP \(bu 5
+Creating argument lists
+.NH 3
+Writing Applications
+.LP
+When writing an application that uses the toolkit,
+you should make sure that your application performs the following:
+.IP 1. 5
+Include
+.Pn < X11/Intrinsic.h >
+in your application programs.
+This header file automatically includes
+.Pn < X11/Xlib.h >,
+so all Xlib functions also are defined.
+.IP 2. 5
+Include the widget-specific header files for each widget type
+that you need to use.
+For example,
+.Pn < X11/Label.h >
+and
+.Pn < X11/Command.h >.
+.IP 3. 5
+Call the
+.PN XtInitialize
+function before invoking any other toolkit or Xlib functions.
+For further information,
+see Section 2.1 and the \fI\*(xT\fP.
+.IP 4. 5
+To pass attributes to the widget creation routines
+that will over-ride any site or user customizations,
+set up argument lists.
+In this document,
+a list of valid argument names that start with
+.PN XtN
+is provided in the discussion of each widget.
+.IP
+For further information,
+see Section 2.7.2.
+.IP 5. 5
+When the argument list is set up,
+create the widget by using the
+.PN XtCreateWidget
+function.
+For further information,
+see Section 2.2 and the \fI\*(xT\fP.
+.IP 6. 5
+If the widget has any callback routines, which are usually defined by the
+.PN XtNcallback
+argument or the
+.PN XtAddCallback
+function, declare these routines within the application.
+.IP 7. 5
+After a widget has been created, use
+.PN XtManageChild
+to manage it.
+If there is no manipulation of the widget between
+.PN XtCreateWidget
+and
+.PN XtManageChild,
+you can do this in a single step by using
+.PN XtCreateManagedWidget .
+For further information about these functions,
+see the \fI\*(xI\fP.
+.IP 8. 5
+After creating the initial widget hierarchy, windows must be created
+for each widget by calling
+.PN XtRealizeWidget
+on the top level widget.
+.IP 9. 5
+Most applications now sit in a loop processing events using
+.PN XtMainLoop ,
+for example:
+.IP
+.Ds 0
+XtCreateManagedWidget(\fIname\fP, \fIclass\fP, \fIparent\fP, \fIargs\fP, \fInum_args\fP);
+XtRealizeWidget(\fIparent\fP);
+XtMainLoop(\|);
+.De
+.IP
+For information about this function,
+see the \fI\*(xT\fP.
+.IP 10. 5
+Link your application with
+.PN libXaw.a
+(the Athena widgets),
+.PN libXmu.a
+(miscellaneous utilities),
+.PN libXt.a
+(the \*(tk \*(xI), and
+.PN libX11.a
+(the core X library).
+The following provides a sample command line:
+.IP
+.Ds 0
+cc -o \fIapplication\fP \fIapplication\fP.c \-lXaw \-lXmu \-lXt \-lX11
+.De
+.NH 3
+Creating Argument Lists
+.LP
+To set up an argument list for the inline specification of widget attributes,
+you can use one of the four approaches discussed in this section.
+You should use whichever approach fits the needs of the application
+and you are most comfortable with.
+In general,
+argument lists should be kept as short as possible to allow widget attributes
+to be specified through the resource database.
+Whenever a client inserts a specific attribute value in an argument list,
+the user is prevented from customizing the behavior of the widget.
+Resource names in the resource database, by convention,
+correspond to their symbolic names that are used in argument list without the
+.PN XtN
+prefix.
+For example, the resource name for
+.PN XtNforeground
+is ``foreground''.
+For further information,
+see the \fI\*(xI\fP.
+.LP
+The
+.PN Arg
+structure contains:
+.IN "ArgList" "" "@DEF@"
+.IN "Arg" "" "@DEF@"
+.LP
+.Ds 0
+.TA .5i 1.5i
+.ta .5i 1.5i
+typedef struct {
+ String name;
+ XtArgVal value;
+} Arg, *ArgList;
+.De
+.LP
+The first approach lets you statically initialize the argument list.
+For example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+static Arg arglist[] = {
+ {XtNwidth, (XtArgVal) 400},
+ {XtNheight, (XtArgVal) 300},
+};
+.De
+.LP
+This approach makes it easy to add or delete new
+elements.
+The
+.PN XtNumber
+macro can be used to compute the number of elements in the argument list,
+thus preventing simple programming errors.
+The following provides an example:
+.LP
+.Ds
+XtCreateWidget(\fIname\fP, \fIclass\fP, \fIparent\fP, \fIarglist\fP, XtNumber(\fIarglist\fP));
+.De
+.LP
+The second approach lets you use the
+.PN XtSetArg
+macro.
+For example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+Arg arglist[10];
+XtSetArg(arglist[1], XtNwidth, 400);
+XtSetArg(arglist[2], XtNheight, 300);
+.De
+.LP
+To make it easier to insert and delete entries,
+you also can use a variable index,
+as in this example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+Arg arglist[10];
+Cardinal i=0;
+XtSetArg(arglist[i], XtNwidth, 400); i++;
+XtSetArg(arglist[i], XtNheight, 300); i++;
+.De
+.LP
+The i variable can then be used as the argument list count in the widget
+create function.
+In this example,
+.PN XtNumber
+would return 10, not 2, and therefore is not useful.
+.NT
+You should not use auto-increment or auto-decrement
+within the first argument to
+.PN XtSetArg .
+As it is currently implemented,
+.PN XtSetArg
+is a macro that dereferences the first argument twice.
+.NE
+.LP
+The third approach lets you individually set the elements of the argument list array,
+one piece at a time.
+For example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+Arg arglist[10];
+arglist[0].name = XtNwidth;
+arglist[0].value = (XtArgVal) 400;
+arglist[1].name = XtNheight;
+arglist[1].value = (XtArgVal) 300;
+.De
+.LP
+Note that in this example, as in the previous example,
+.PN XtNumber
+would return 10, not 2, and therefore is not useful.
+.LP
+The fourth approach lets you use a mixture of the first and third approaches:
+you can statically define the argument list but modify some entries at runtime.
+For example:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+static Arg arglist[] = {
+ {XtNwidth, (XtArgVal) 400},
+ {XtNheight, (XtArgVal) NULL},
+};
+arglist[1].value = (XtArgVal) 300;
+.De
+.LP
+In this example,
+.PN XtNumber
+can be used, as in the first approach, for easier code maintenance.
+.NH 3
+Sample Program
+.LP
+The following program creates one command button that, when pressed,
+causes the program to exit.
+This example is a complete program that illustrates:
+.IP \(bu 5
+Toolkit initialization
+.IP \(bu 5
+Optional command-line arguments
+.IP \(bu 5
+Widget creation
+.IP \(bu 5
+Callback routines
+.LP
+.bp
+.ps 9
+.nr PS 9
+.Ds 0
+.TA .5i 2i
+.ta .5i 2i
+#include <stdio.h>
+#include <X11/Intrinsic.h>
+#include <X11/Command.h>
+.sp 6p
+static XrmOptionDescRec options[] = {
+{"\-label", "*button.label", XrmoptionSepArg, NULL}
+};
+.sp 6p
+Syntax(call)
+ char *call;
+{
+ fprintf(stderr, "Usage: %s\\n", call);
+}
+.sp 6p
+void Activate(w, client_data, call_data)
+ Widget w;
+ caddr_t client_data; /* unused */
+ caddr_t call_data; /* unused */
+{
+ printf("button was activated.\\n");
+ exit(0);
+}
+.sp 6p
+void main(argc, argv)
+ unsigned int argc;
+ char **argv;
+{
+ Widget toplevel;
+ static XtCallbackRec callbacks[] = {
+ \ \ \ \ { Activate, NULL },
+ \ \ \ \ { NULL, NULL },
+ };
+.sp 6p
+ static Arg args[] = {
+ \ \ { XtNcallback, (XtArgVal)callbacks },
+ };
+.sp 6p
+ toplevel = XtInitialize("main", "Demo", options, XtNumber(options), &argc, argv );
+ if (argc != 1) Syntax(argv[0]);
+.sp 6p
+ XtCreateManagedWidget("button",commandWidgetClass,toplevel,args,XtNumber(args));
+.sp 6p
+ XtRealizeWidget(toplevel);
+ XtMainLoop(\|);
+}
+.De
+.ps 11
+.nr PS 11
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 3\fP\s-1
+
+\s+1\fBAthena Widget Set\fP\s-1
+.sp 2
+.nr H1 3
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.na
+.LP
+.XS
+Chapter 3 - Athena Widget Set
+.XE
+.LP
+This chapter describes the following Athena widgets:
+.IP \(bu 5
+Command
+.IP \(bu 5
+Label
+.IP \(bu 5
+Text
+.IP \(bu 5
+Scrollbar
+.IP \(bu 5
+Viewport
+.IP \(bu 5
+Box
+.\".IP \(bu 5
+.\"MenuBox
+.IP \(bu 5
+VPaned
+.IP \(bu 5
+Form
+.IP \(bu 5
+Dialog
+.IP \(bu 5
+List
+.IP \(bu 5
+Grip
+.IP \(bu 5
+Toggle
+.LE
+.NH 2
+Command Widget
+.LP
+.XS
+\*(SN Command Widget
+.XE
+.IN "Command widget" "" "@DEF@"
+The Command widget is a rectangular button that contains a text or
+pixmap label.
+When the pointer cursor is on the button,
+the button border is highlighted to indicate that the button is available
+for selection.
+Then, when a pointer button is pressed and released
+the button is selected,
+and the application's callback routine is invoked.
+.LP
+The class variable for the Command widget is
+.PN commandWidgetClass .
+.LP
+When creating a Command widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Command widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+T{
+XtNbitmap
+T} T{
+Pixmap
+T} T{
+None
+T} T{
+Pixmap to display in place of the label
+T}
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of button border
+XtNcallback XtCallbackList NULL Callback for button select
+XtNcursor Cursor None Pointer cursor
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNfont XFontStruct* XtDefaultFont Label font
+XtNforeground Pixel XtDefaultForeground Foreground color
+XtNheight Dimension Text height Button height
+T{
+XtNhighlightThickness
+T} T{
+Dimension
+T} T{
+2
+T} T{
+Width of border to be highlighted
+T}
+XtNinsensitiveBorder Pixmap Gray Border when not sensitive
+T{
+XtNinternalHeight
+T} T{
+Dimension
+T} T{
+2
+T} T{
+Internal border height for highlighting
+T}
+T{
+XtNinternalWidth
+T} T{
+Dimension
+T} T{
+4
+T} T{
+Internal border width for highlighting
+T}
+XtNjustify XtJustify XtJustifyCenter Type of text alignment
+XtNlabel String Button name Button label
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNresize Boolean True Whether to auto-resize in SetValues
+XtNsensitive Boolean True Whether widget receives input
+XtNtranslations TranslationTable see below Event-to-action translations
+XtNwidth Dimension Text width Button width
+XtNx Position 0 x coordinate
+XtNy Position 0 y coordinate
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The new resources associated with the Command widget are:
+.TS
+lw(1.5i) lw(4i).
+T{
+.PN XtNbitmap
+T} T{
+Specifies a bitmap to display in place of the text label.
+See the description of this resource in the Label widget for
+further details.
+T}
+.sp 6p
+T{
+.PN XtNheight
+T} T{
+Specifies the height of the Command widget.
+The default value is the minimum height that will contain:
+.br
+XtNinternalheight + height of XtNlabel + XtNinternalHeight
+.br
+If the specified height is larger than the minimum,
+the label string is centered vertically.
+T}
+.sp 6p
+T{
+.PN XtNinternalHeight
+T} T{
+Represents the distance in pixels between the top and bottom
+of the label text or bitmap and the horizontal edges of the Command widget.
+HighlightThickness can be larger or smaller than this value.
+T}
+.sp 6p
+T{
+.PN XtNinternalWidth
+T} T{
+Represents the distance in pixels between the ends of the label text
+or bitmap and the vertical edges of the Command widget.
+HighlightThickness can be larger or smaller than this value.
+T}
+.sp 6p
+T{
+.PN XtNjustify
+T} T{
+Specifies left, center, or right alignment of the label string
+within the Command widget.
+If it is specified within an
+.PN ArgList ,
+one of the values
+.PN XtJustifyLeft ,
+.PN XtJustifyCenter ,
+or
+.PN XtJustifyRight
+can be specified.
+In a resource of type ``string'',
+one of the values ``left'', ``center'', or ``right'' can be specified.
+T}
+.sp 6p
+T{
+.PN XtNlabel
+T} T{
+Specifies the text string that is to be displayed in the Command widget
+if no bitmap is specified.
+The default is the widget name of the Command widget.
+T}
+.sp 6p
+T{
+.PN XtNresize
+T} T{
+Specifies whether the Command widget should attempt to resize to its
+preferred dimensions whenever
+.PN XtSetValues
+is called for it.
+The default is
+.PN True .
+T}
+.sp 6p
+T{
+.PN XtNsensitive
+T} T{
+If set to
+.PN False ,
+the Command widget will change its window border to
+.PN XtNinsensitiveBorder
+and will stipple the label string.
+T}
+.sp 6p
+T{
+.PN XtNwidth
+T} T{
+Specifies the width of the Command widget.
+The default value is the minimum width that will contain:
+.br
+XtNinternalWidth + width of XtNlabel + XtNinternalWidth
+.br
+If the width is larger or smaller than the minimum,
+.PN XtNjustify
+determines how the label string is aligned.
+T}
+.TE
+.LP
+The Command widget supports the following actions:
+.IP \(bu 5
+Switching the button between the foreground and background
+colors with \fBset\fP and \fBunset\fP
+.IP \(bu 5
+Processing application callbacks with \fBnotify\fP
+.IP \(bu 5
+Switching the internal border between highlighted
+and unhighlighted states with \fBhighlight\fP and \fBunhighlight\fP
+.LE
+.LP
+The following are the default translation bindings that are used
+by the Command widget:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <EnterWindow>: highlight(\|)
+ <LeaveWindow>: reset(\|)
+ <Btn1Down>: set(\|)
+ <Btn1Up>: notify(\|) unset(\|)
+.De
+.LP
+With these bindings, the user can cancel the action before
+releasing the button by moving the pointer out of the Command widget.
+.NH 3
+Command Actions
+.LP
+The full list of actions supported by Command is:
+.IP \fBhighlight\fP(\fIcondition\fP) 1.5i
+Displays the internal highlight border in the color (\fBXtNforeground\fP
+or
+.PN XtNbackground )
+that contrasts with the interior color of the Command widget.
+This action procedure takes one of the following conditions: WhenUnset and
+Always. If no argument is passed then WhenUnset is assumed, this maintains
+backwards compatibility.
+.IP \fBunhighlight\fP(\|) 1.5i
+Displays the internal highlight border in the color (\fBXtNforeground\fP
+or
+.PN XtNbackground )
+that matches the interior color of the Command widget.
+.IP \fBset\fP(\|) 1.5i
+Enters the "set" state, in which \fBnotify\fP is possible and displays the
+interior of the button in the
+.PN XtNforeground
+color. The label is displayed
+in the
+.PN XtNbackground
+color.
+.IP \fBunset\fP(\|) 1.5i
+Cancels the "set" state and displays the interior of the button in the
+.PN XtNbackground
+color. The label is displayed in the
+.PN XtNforeground
+color.
+.IP \fBreset\fP(\|) 1.5i
+Cancels any \fBset\fP or \fBhighlight\fP and displays the interior of the
+button in the
+.PN XtNbackground
+color, with the label displayed in the
+.PN XtNforeground
+color.
+.IP \fBnotify\fP(\|) 1.5i
+Executes the
+.PN XtNcallback
+callback list if executed in the \fBset\fP state. The value of the call_data
+argument is undefined.
+.LP
+.IN "Command widget" "creating"
+.IN "Creating widgets" "Command"
+To create a Command widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN commandWidgetClass .
+.LP
+.IN "Command widget" "destroying"
+.IN "Destroying widgets" "Command"
+To destroy a Command widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID of the button.
+.LP
+The Command widget supports two callback lists:
+.PN XtNdestroyCallback
+and
+.PN XtNcallback .
+The notify action executes the callbacks on the
+.PN XtNcallback
+list.
+The call_data
+argument is unused.
+.NH 2
+Label Widget
+.LP
+.XS
+\*(SN Label Widget
+.XE
+.IN "Label widget" "" "@DEF@"
+A Label is an noneditable text string or pixmap that is displayed within a window.
+The string is limited to one line and can be aligned to the left, right,
+or center of its window.
+A Label can neither be selected nor directly edited by the user.
+.LP
+The class variable for the Label widget is
+.PN labelWidgetClass .
+.LP
+When creating a Label widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Label widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+T{
+XtNbitmap
+T} T{
+Pixmap
+T} T{
+None
+T} T{
+Pixmap to display in place of the label
+T}
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Border width in pixels
+XtNcursor Cursor None Pointer cursor
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNfont XFontStruct* XtDefaultFont Label font
+XtNforeground Pixel XtDefaultForeground Foreground color
+XtNheight Dimension text height Height of widget
+XtNinsensitiveBorder Pixmap Gray Border when not sensitive
+XtNinternalHeight Dimension 2 See note
+XtNinternalWidth Dimension 4 See note
+XtNjustify XtJustify XtJustifyCenter Type of text alignment
+XtNlabel String label name String to be displayed
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNresize Boolean True Whether to auto-resize in SetValues
+XtNsensitive Boolean True Whether widget receives input
+XtNwidth Dimension text width Width of widget
+XtNx Position 0 x coordinate in pixels
+XtNy Position 0 y coordinate in pixels
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The new resources associated with Label are:
+.TS
+lw(1.5i) lw(4i).
+T{
+.PN XtNbitmap
+T} T{
+Specifies a bitmap to display in place of the text label.
+The bitmap can be specified as a string in the resource data base.
+The StringToPixmap converter will interpret the string as the name of a
+file in the bitmap utility format that is to be loaded into a pixmap.
+The string can be an absolute or a relative file name.
+If a relative file name is used,
+the directory specified by the resource name
+.PN bitmapFilePath
+or
+the resource class
+.PN BitmapFilePath
+is add to the beginning of the
+specified file name.
+If the
+.PN bitmapFilePath
+resource is not defined,
+the default directory on a UNIX-based system is
+.PN /usr/include/X11/bitmaps .
+T}
+.sp 6p
+T{
+.PN XtNheight
+T} T{
+Specifies the height of the Label widget.
+The default value is the minimum height that will contain:
+.br
+XtNinternalheight + height of XtNlabel + XtNinternalHeight
+.br
+If the specified height is larger than the minimum,
+the label string is centered vertically.
+T}
+.sp 6p
+T{
+.PN XtNinternalHeight
+T} T{
+Represents the distance in pixels between the top and bottom
+of the label text or bitmap and the horizontal edges of the Label widget.
+T}
+.sp 6p
+T{
+.PN XtNinternalWidth
+T} T{
+Represents the distance in pixels between the ends of the label text or bitmap
+and the vertical edges of the Label widget.
+T}
+.sp 6p
+T{
+.PN XtNjustify
+T} T{
+Specifies left, center, or right alignment of the label string
+within the Label widget.
+If it is specified within an
+.PN ArgList ,
+one of the values
+.PN XtJustifyLeft ,
+.PN XtJustifyCenter ,
+or
+.PN XtJustifyRight
+can be specified.
+In a resource of type ``string'',
+one of the values ``left'', ``center'', or ``right'' can be specified.
+T}
+.sp 6p
+T{
+.PN XtNlabel
+T} T{
+Specifies the text string that is to be displayed in the button
+if no bitmap is specified.
+The default is the widget name of the Label widget.
+T}
+.sp 6p
+T{
+.PN XtNresize
+T} T{
+Specifies whether the Label widget should attempt to resize to its
+preferred dimensions whenever
+.PN XtSetValues
+is called for it.
+T}
+.sp 6p
+T{
+.PN XtNsensitive
+T} T{
+If set to
+.PN False ,
+the Label widget will change its window border to
+.PN XtNinsensitiveBorder
+and will stipple the label string.
+T}
+.sp 6p
+T{
+.PN XtNwidth
+T} T{
+Specifies the width of the Label widget.
+The default value is the minimum width that will contain:
+.br
+XtNinternalWidth + width of XtNlabel + XtNinternalWidth
+.br
+If the width is larger or smaller than the minimum,
+.PN XtNjustify
+determines how the label string is aligned.
+T}
+.TE
+.LP
+.IN "Label widget" "creating"
+.IN "Creating widgets" "Label"
+To create a Label widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN labelWidgetClass .
+.LP
+.IN "Label widget" "destroying"
+.IN "Destroying widgets" "Label"
+To destroy a Label widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID of the label.
+.LP
+The Label widget supports only the
+.PN XtNdestroyCallback
+callback list.
+.NH 2
+Text Widget
+.LP
+.XS
+\*(SN Text Widget
+.XE
+.IN "Text widget" "" "@DEF@"
+A Text widget is a window that provides a way for an application to display
+one or more lines of text.
+The displayed text can reside in a file on disk or in a string in memory.
+An option also lets an application display a vertical Scrollbar
+in the Text window,
+letting the user scroll through the displayed text.
+Other options allow an application to let the user modify the text
+in the window.
+.LP
+The Text widget is divided into three parts:
+.IP \(bu 5
+Source
+.IP \(bu 5
+Sink
+.IP \(bu 5
+Text widget
+.LP
+The idea is to separate the storage
+of the text (source) from the painting of the text (sink).
+The Text widget coordinates the sources and sinks.
+Clients usually will use
+.PN AsciiText
+widgets that automatically create the source and sink for the client.
+A client can, if it so chooses, explicitly create the source and sink
+before creating the Text widget.
+.LP
+The source stores and manipulates the text.
+The \*(tk provides string and disk file sources.
+The source determines what editing functions may be performed on the text.
+.LP
+The sink obtains the fonts and the
+colors in which to paint the text.
+The sink also computes what text can fit on each line.
+The \*(tk provides a single-font, single-color ASCII sink.
+.LP
+If a disk file is used to display the text,
+two edit modes are available:
+.IP \(bu 5
+Append
+.IP \(bu 5
+Read-only
+.LP
+Append mode lets the user enter text into the window,
+while read-only mode does not.
+Text may only be entered if the insertion point is after the last
+character in the window.
+.LP
+If a string in memory is used,
+the application must allocate the amount of space needed.
+If a string in memory is used to display text,
+three types of edit mode are available:
+.IN "Text widget" "edit modes"
+.IP \(bu 5
+Append-only
+.IP \(bu 5
+Read-only
+.IP \(bu 5
+Editable
+.LP
+The first two modes are the same as displaying text from a disk file.
+Editable mode lets the user place the cursor anywhere in the text and
+modify the text at that position.
+The text cursor position can be modified by using the
+key strokes or pointer buttons defined by the event bindings.
+.LE
+Many standard keyboard editing facilities are supported by the
+event bindings.
+The following actions are supported:
+.LP
+.Ds 0
+.TA .5i 2.5i 3i
+.ta .5i 2.5i 3i
+Cursor Movement Delete
+ forward-character delete-next-character
+ backward-character delete-previous-character
+ forward-word delete-next-word
+ backward-word delete-previous-word
+ forward-paragraph delete-selection
+ backward-paragraph
+ beginning-of-line
+ end-of-line Selection
+ next-line select-word
+ previous-line select-all
+ next-page select-start
+ previous-page select-adjust
+ beginning-of-file select-end
+ end-of-file extend-start
+ scroll-one-line-up extend-adjust
+ scroll-one-line-down extend-end
+
+New Line Miscellaneous
+ newline-and-indent redraw-display
+ newline-and-backup insert-file
+ newline insert-char
+ insert-string
+ display-caret
+ do-nothing
+
+Kill Unkill
+ kill-word unkill
+ backward-kill-word stuff
+ kill-selection insert-selection
+ kill-to-end-of-line
+ kill-to-end-of-paragraph
+.De
+.NT Notes
+.IP 1. 5
+A page corresponds to the size of the Text window.
+For example, if the Text window is 50 lines in length,
+scrolling forward one page is the same as scrolling forward 50 lines.
+.IP 2. 5
+The \fBinsert-char\fP action may only be attached to a key event. It
+calls XLookupString to translate the event into a (rebindable) Latin-1
+character (sequence) and inserts that sequence into the text at the
+current position. The \fBinsert-string\fP action takes one or more
+arguments and inserts the arguments into the text at the current position.
+An argument beginning with the characters "0x" and containing only
+valid hexadecimal digits in the remainder is interpreted as a hexadecimal
+constant and the corresponding single character is inserted instead.
+.IP 3. 5
+The \fBdelete\fP
+action deletes a text item.
+The \fBkill\fP
+action deletes a text item and puts the item in the kill buffer
+(X cut buffer 1).
+.IP 4. 5
+The \fBunkill\fP
+action inserts the contents of the kill buffer into the text at the current
+position.
+The \fBstuff\fP
+action inserts the contents of the paste buffer (X cut buffer 0) into the
+text at the current position.
+The \fBinsert-selection\fP
+action retrieves the value of a specified X selection or cut
+buffer, with fall-back to alternative selections or cut buffers.
+.IP 5. 5
+The \fBdisplay-caret\fP
+action allows the insert position marker to be turned on and off.
+The first argument specifies the desired state as any of the string
+values accepted for Boolean resources (e.g. "on", "true", "off", "false",
+etc.). If no arguments are specified, the default value is "on".
+The second argument specifies, for
+.PN EnterNotify or
+.PN LeaveNotify
+events whether or not the focus field in the event is to be examined.
+If the second argument is not specified, or specified as something other
+than "always" then if the action is bound to an
+.PN EnterNotify or
+.PN LeaveNotify
+event, the action will be taken only if the focus field is \fBTrue\fP.
+An augmented binding that might be useful is:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+*Text.Translations: #override \\
+ <FocusIn>: display-caret(on) \\n\\
+ <FocusOut>: display-caret(off)
+.De
+.NE
+.LP
+The default event bindings for the Text widget are:
+.IN "Text widget" "default bindings"
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+char defaultTextTranslations[] = ``\\
+ Ctrl<Key>F: forward-character(\|) \\n\\
+ Ctrl<Key>B: backward-character(\|) \\n\\
+ Ctrl<Key>D: delete-next-character(\|) \\n\\
+ Ctrl<Key>A: beginning-of-line(\|) \\n\\
+ Ctrl<Key>E: end-of-line(\|) \\n\\
+ Ctrl<Key>H: delete-previous-character(\|) \\n\\
+ Ctrl<Key>J: newline-and-indent(\|) \\n\\
+ Ctrl<Key>K: kill-to-end-of-line(\|) \\n\\
+ Ctrl<Key>L: redraw-display(\|) \\n\\
+ Ctrl<Key>M: newline(\|) \\n\\
+ Ctrl<Key>N: next-line(\|) \\n\\
+ Ctrl<Key>O: newline-and-backup(\|) \\n\\
+ Ctrl<Key>P: previous-line(\|) \\n\\
+ Ctrl<Key>V: next-page(\|) \\n\\
+ Ctrl<Key>W: kill-selection(\|) \\n\\
+ Ctrl<Key>Y: unkill(\|) \\n\\
+ Ctrl<Key>Z: scroll-one-line-up(\|) \\n\\
+ Meta<Key>F: forward-word(\|) \\n\\
+ Meta<Key>B: backward-word(\|) \\n\\
+ Meta<Key>I: insert-file(\|) \\n\\
+ Meta<Key>K: kill-to-end-of-paragraph(\|) \\n\\
+ Meta<Key>V: previous-page(\|) \\n\\
+ Meta<Key>Y: stuff(\|) \\n\\
+ Meta<Key>Z: scroll-one-line-down(\|) \\n\\
+ :Meta<Key>d: delete-next-word(\|) \\n\\
+ :Meta<Key>D: kill-word(\|) \\n\\
+ :Meta<Key>h: delete-previous-word(\|) \\n\\
+ :Meta<Key>H: backward-kill-word(\|) \\n\\
+ :Meta<Key>\\<: beginning-of-file(\|) \\n\\
+ :Meta<Key>\\>: end-of-file(\|) \\n\\
+ :Meta<Key>]: forward-paragraph(\|) \\n\\
+ :Meta<Key>[: backward-paragraph(\|) \\n\\
+ ~Shift Meta<Key>Delete: delete-previous-word(\|) \\n\\
+ \ Shift Meta<Key>Delete: backward-kill-word(\|) \\n\\
+ ~Shift Meta<Key>Backspace: delete-previous-word(\|) \\n\\
+ \ Shift Meta<Key>Backspace: backward-kill-word(\|) \\n\\
+ <Key>Right: forward-character(\|) \\n\\
+ <Key>Left: backward-character(\|) \\n\\
+ <Key>Down: next-line(\|) \\n\\
+ <Key>Up: previous-line(\|) \\n\\
+ <Key>Delete: delete-previous-character(\|) \\n\\
+ <Key>BackSpace: delete-previous-character(\|) \\n\\
+ <Key>Linefeed: newline-and-indent(\|) \\n\\
+ <Key>Return: newline(\|) \\n\\
+ <Key>: insert-char(\|) \\n\\
+ <FocusIn>: focus-in(\|) \\n\\
+ <FocusOut>: focus-out(\|) \\n\\
+ <Btn1Down>: select-start(\|) \\n\\
+ <Btn1Motion>: extend-adjust(\|) \\n\\
+ <Btn1Up>: extend-end(PRIMARY, CUT_BUFFER0) \\n\\
+ <Btn2Down>: insert-selection(PRIMARY, CUT_BUFFER0) \\n\\
+ <Btn3Down>: extend-start(\|) \\n\\
+ <Btn3Motion>: extend-adjust(\|) \\n\\
+ <Btn3Up>: extend-end(PRIMARY, CUT_BUFFER0) \\
+'';
+.De
+.LP
+A user-supplied resource entry can use application-specific bindings, a subset
+of the supplied default bindings, or both.
+The following is an example of a user-supplied resource entry that uses a
+subset of the default bindings:
+.LP
+.Ds 0
+.TA .5i 1.75i
+.ta .5i 1.75i
+Xmh*Text.Translations: \\
+ <Key>Right: forward-character(\|) \\n\\
+ <Key>Left: backward-character(\|) \\n\\
+ Meta<Key>F: forward-word(\|) \\n\\
+ Meta<Key>B: backward-word(\|) \\n\\
+ :Meta<Key>]: forward-paragraph(\|) \\n\\
+ :Meta<Key>[: backward-paragraph(\|) \\n\\
+ <Key>: insert-char(\|)
+.De
+.LP
+An augmented binding that is useful with the xclipboard
+utility is:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+*Text.Translations: #override \\
+ Button1 <Btn2Down>: extend-end(CLIPBOARD)
+.De
+.LP
+A Text widget lets both the user and the application
+take control of the text being displayed.
+The user takes control with the scroll bar or with key strokes
+defined by the event bindings.
+The scroll bar option places the scroll bar on the left side of the widget
+and can be used with any editing mode.
+The application takes control with procedure calls to the Text widget
+to:
+.IP \(bu 5
+Display text at a specified position
+.IP \(bu 5
+Highlight specified text areas
+.IP \(bu 5
+Replace specified text areas
+.LE
+.LP
+The text that is selected within a Text widget may be assigned to an
+X selection or copied into a cut buffer
+and can be retrieved by the application with the Intrinsics
+.PN XtGetSelectionValue
+or the Xlib
+.PN XFetchBytes
+functions respectively.
+Several standard selection schemes
+(e.g. character/word/paragraph with multi-click)
+are supported through the event bindings.
+.LP
+The class variable for the Text widget is
+.PN textWidgetClass .
+.LP
+.IN "Text widget" "creating"
+.IN "Creating widgets" "Text string"
+To create a Text string widget, use
+.PN XtCreateWidget
+and specify the class variable
+.PN asciiStringWidgetClass .
+.LP
+.IN "Creating widgets" "Text file"
+To create a Text file widget, use
+.PN XtCreateWidget
+and specify the class variable
+.PN asciiDiskWidgetClass .
+.NT
+If you want to create an instance of the class
+.PN textWidgetClass ,
+you must provide a source and a sink when the widget is created.
+The Text widget cannot be instantiated without both.
+.NE
+.LP
+When creating a Text widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Text widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 4 Border width in pixels
+XtNcursor Cursor XC_xterm Pointer cursor
+XtNdialogHOffset int 10 Offset of insert file dialog
+XtNdialogVOffset int 10 Offset of insert file dialog
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNdisplayCaret Boolean True Display a marker at the insert position
+XtNdisplayNonPrinting Boolean True Display control char as ^C
+XtNdisplayPosition int 0 Character position of first line
+XtNecho Boolean True Whether or not to display output
+XtNeditType XtEditType XttextRead Edit mode (see note)
+T{
+XtNfile
+T} T{
+char*
+T} T{
+tmpnam(\|)
+T} T{
+File for
+.PN asciiDiskWidgetClass
+T}
+XtNforeground Pixel Black Foreground color
+XtNfont XFontStruct* Fixed Fontname
+XtNheight Dimension Font height Height of widget
+XtNinsertPosition int 0 Character position of caret
+XtNleftMargin Dimension 2 Left margin in pixels
+T{
+XtNlength
+T} T{
+int
+T} T{
+String length
+T} T{
+Size of the string buffer
+T}
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNselectTypes XtTextSelectType* See below Selection units for multi-click
+XtNsensitive Boolean True Whether widget receives input
+T{
+XtNstring
+T} T{
+char*
+T} T{
+Blank
+T} T{
+String for
+.PN asciiStringWidgetClass
+T}
+XtNtextOptions int None See below
+XtNtextSink XtTextSink None See below
+XtNtextSource XtTextSource None See below
+XtNtranslations TranslationTable See above event-to-action translations
+XtNwidth Dimension 100 Width of widget (pixels)
+XtNx Position 0 x coordinate in pixels
+XtNy Position 0 y coordinate in pixels
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.NT Notes
+.IP 1. 5
+You cannot use
+.PN XtNeditType ,
+.PN XtNfile ,
+.PN XtNlength ,
+and
+.PN XtNfont
+with the
+.PN XtTextSetValues
+and the
+.PN XtTextGetValues
+calls.
+.IP 2. 5
+The
+.PN XtNeditType
+attribute has one of the values
+.PN XttextAppend ,
+.PN XttextEdit ,
+or
+.PN XttextRead .
+.IP 3. 5
+If
+.PN asciiStringWidgetClass
+is used, the resource
+.PN XtNstring
+specifies a buffer containing the text to be displayed and edited.
+.PN AsciiStringWidget
+does not copy this buffer but uses it in-place.
+.IP 4. 5
+If
+.PN XtNdisplayNonPrinting
+is
+.PN True
+any control characters will be displayed as the two-character
+sequence "^", "C" where "C" is the uppercase (printing) equivalent
+of the control character. If the value is
+.PN False
+any control characters will be displayed as a single space character.
+.IP 5. 5
+If
+.PN XtNecho
+is
+.PN False
+then no text is displayed. Text may still be selected and modified,
+though invisibly.
+.NE
+.LP
+The options for the
+.PN XtNtextOptions
+attribute are:
+.TS H
+lw(1.5i) lw(4.5i).
+_
+.sp 3p
+.TB
+Option Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+T{
+.PN editable
+T} T{
+Whether or not the user is allowed to modify the text.
+T}
+.sp 3p
+T{
+.PN resizeHeight
+T} T{
+Makes a request to the parent widget to lengthen the widget
+if all the text cannot fit in the window.
+T}
+.sp 3p
+T{
+.PN resizeWidth
+T} T{
+Makes a request to the parent widget to widen the widget if the
+text becomes too long to fit on one line.
+T}
+.\".sp 3p
+.\"T{
+.\".PN scrollHorizontal
+.\"T} T{
+.\"Puts a scroll bar on the top of the widget.
+.\"T}
+.sp 3p
+T{
+.PN scrollOnOverflow
+T} T{
+Automatically scrolls the text up when new text is entered
+below the bottom (last) line.
+T}
+.sp 3p
+T{
+.PN scrollVertical
+T} T{
+Puts a scroll bar on the left side of the widget.
+T}
+.sp 3p
+T{
+.PN wordBreak
+T} T{
+Starts a new line when a word does not fit on the current line.
+T}
+.sp 3p
+_
+.TE
+.LP
+These options can be ORed together to set more than one at the same time.
+.LP
+.PN XtNselectionTypes
+is an array of entries of type
+.PN XtTextSelectType
+and is used for multiclick.
+As the pointer button is clicked in rapid succession,
+each click highlights the next ``type'' described in the array.
+.TS
+lw(1.25i) lw(4.25i).
+T{
+XtselectAll
+T} T{
+Selects the contents of the entire buffer.
+T}
+.sp 6p
+T{
+XtselectChar
+T} T{
+Selects text characters as the pointer moves over them.
+T}
+.sp 6p
+T{
+XtselectLine
+T} T{
+Selects the entire line.
+T}
+.sp 6p
+T{
+XtselectNull
+T} T{
+Indicates the end of the selection array.
+T}
+.sp 6p
+T{
+XtselectParagraph
+T} T{
+Selects the entire paragraph (delimited by newline characters).
+T}
+.sp 6p
+T{
+XtselectPosition
+T} T{
+Selects the current pointer position.
+T}
+.sp 6p
+T{
+XtselectWord
+T} T{
+Selects whole words (delimited by whitespace) as the pointer moves onto
+them.
+T}
+.TE
+.LP
+The default selectType array is:
+.LP
+.Ds 0
+{XtselectPosition, XtselectWord, XtselectLine, XtselectParagraph, XtselectAll, XtselectNull}
+.De
+.LP
+For the default case,
+two rapid pointer clicks highlight the current word, three clicks
+highlight the current line,
+four clicks highlight the current paragraph,
+and five clicks highlight the entire text.
+If the timeout value is exceeded, the next pointer
+click returns to the first entry in the selection array.
+The selection array is not copied by the Text widget.
+The client must allocate space for the array
+and cannot deallocate or change it until the Text widget is destroyed
+or until a new selection array is set.
+.NH 3
+Selection Actions
+.LP
+The Text widget fully supports the X selection and cut buffer mechanisms.
+The following actions can be used to specify button bindings that will cause Text
+to assert ownership of one or more selections, to store the selected text into a
+cut buffer, and to retrieve the value of a selection or cut buffer and insert it
+into the text value.
+.IP \fBinsert-selection\fP(\fIname\fP[,\fIname\fP,...]) 1i
+Retrieves the value of the first (left-most) named selection that exists
+or the cut buffer that is not empty and inserts it into the input stream.
+The specified name can be that of any selection (for example,
+.PN PRIMARY
+or
+.PN SECONDARY )
+or a cut buffer (i.e.
+.PN CUT_BUFFER0
+through
+.PN CUT_BUFFER7 ).
+Note that case matters.
+.IP \fBselect-start\fP(\^) 1i
+Unselects any previously selected text and begins selecting new text.
+.sp 6p
+.IP \fBselect-adjust\fP(\^) 1i
+.br
+.ns
+.IP \fBextend-adjust\fP(\^)\ \ \ 1i
+Continues selecting text from the previous start position.
+.sp 6p
+.IP \fBstart-extend\fP(\^) 1i
+Begins extending the selection from the farthest (left or right) edge.
+.sp 6p
+.IP \fBselect-end\fP(\fIname\fP[,\fIname\fP,...]) 1i
+.br
+.ns
+.IP \fBextend-end\fP(\fIname\fP[,\fIname\fP,...]) 1i
+Ends the text selection, asserts ownership of the specified
+selection(s)
+and stores the text in the specified cut buffer(s).
+The specified name can be that of a selection (for example,
+.PN PRIMARY
+or
+.PN SECONDARY )
+or a cut buffer (i.e.
+.PN CUT_BUFFER0
+through
+.PN CUT_BUFFER7 ).
+Note that case is significant. If
+.PN CUT_BUFFER0
+is listed, the cut buffers are rotated before storing into buffer 0.
+.NH 3
+Selecting Text
+.LP
+To enable an application to select a piece of text, use
+.PN XtTextSetSelection .
+.IN "XtTextSetSelection" "" "@DEF@"
+.FD 0
+typedef long XtTextPosition;
+.sp 6p
+void XtTextSetSelection(\fIw\fP, \fIleft\fP, \fIright\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTextPosition \fIleft\fP, \fIright\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID.
+.IP \fIleft\fP 1i
+Specifies the character position at which the selection begins.
+.IP \fIright\fP 1i
+Specifies the character position at which the selection ends.
+.LP
+If redisplay is not disabled,
+this function highlights the text and
+makes it the PRIMARY selection.
+.LP
+.NH 3
+Unhighlighting Text
+.LP
+To unhighlight previously highlighted text in a widget, use
+.PN XtTextUnsetSelection .
+.IN "XtTextUnsetSelection" "" "@DEF@"
+.FD 0
+void XtTextUnsetSelection(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.LP
+.NH 3
+Getting Selected Text Character Positions
+.LP
+To enable the application to get the character positions of the
+selected text, use
+.PN XtTextGetSelectionPos .
+.IN "XtTextGetSelectionPos" "" "@DEF@"
+.FD 0
+void XtTextGetSelectionPos(\fIw\fP, \fIpos1\fP, \fIpos2\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTextPosition *\fIpos1\fP, *\fIpos2\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID.
+.IP \fIpos1\fP 1i
+Specifies a pointer to the location to which the beginning character position
+of the selection
+is returned.
+.IP \fIpos2\fP 1i
+Specifies a pointer to the location to which the ending character position of
+the selection is returned.
+.LP
+If the returned values are equal,
+there is no current selection.
+.NH 3
+Replacing Text
+.LP
+To enable an application to replace text, use
+.PN XtTextReplace .
+.IN "XtTextReplace" "" "@DEF@"
+.FD 0
+int XtTextReplace(\fIw\fP, \fIstart_pos\fP, \fIend_pos\fP, \fItext\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTextPosition \fIstart_pos\fP, \fIend_pos\fP;
+.br
+ XtTextBlock *\fItext\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID.
+.IP \fIstart_pos\fP 1i
+Specifies the starting character position of the text replacement.
+.IP \fIend_pos\fP 1i
+Specifies the ending character position of the text replacement.
+.IP \fItext\fP 1i
+Specifies the text to be inserted into the file.
+.LP
+The
+.PN XtTextReplace
+function deletes text in the specified range (startPos, endPos)
+and inserts the new text at startPos.
+The return value is
+.PN XawEditDone
+if the replacement is successful,
+.PN XawPositionError
+if the edit mode is
+.PN XttextAppend
+and startPos is
+not the last character of the source,
+or
+.PN XawEditError
+if either the source was read-only
+or the range to be deleted is larger than the length of the source.
+.LP
+The
+.PN XtTextBlock
+structure (defined in
+.Pn < X11/Text.h >
+contains:
+.LP
+.IN "XtTextBlock" "" "@DEF@"
+.Ds 0
+.TA .5i 1.5i 2.25i
+.ta .5i 1.5i 2.25i
+typedef struct {
+ int firstPos;
+ int length;
+ char *ptr;
+ Atom format;
+} XtTextBlock, *TextBlockPtr;
+.De
+.LP
+The firstPos field is the starting point to use within the ptr field.
+The value is usually zero.
+The length field is the number of characters that are transferred from the
+ptr field.
+The number of characters transferred is usually the number of characters in
+ptr.
+This format field indicates whether the data pointed to by \fBptr\fP is
+char or wchar_t. When the associated widget has \fBinternational\fP set
+to \fBfalse\fP this field must be XawFmt8Bit. When the associated
+widget has \fBinternational\fP set to \fBtrue\fP this field must be
+either XawFmt8Bit or XawFmtWide.
+.LP
+Note: Previous versions of Xaw used
+.PN FMT8BIT ,
+which has been retained for backwards compatibility. \fBFMT8BIT\fP is
+deprecated and will eventually be removed from the implementation.
+The
+.PN XtTextReplace
+arguments \fBstart_pos\fP and \fBend_pos\fP
+represent the text source character positions for the existing text that is
+to be replaced by the text in
+the
+.PN XtTextBlock
+structure.
+The characters from start_pos up to but not including end_pos are deleted,
+and the characters that are specified by the text block are inserted in
+their place. If start_pos and end_pos are equal, no text is
+deleted and the new text is inserted after start_pos.
+.NT
+Only ASCII text is currently supported, and
+only one font can be used for each Text widget.
+.NE
+.NH 3
+Redisplaying Text
+.LP
+To redisplay a range of characters, use
+.PN XtTextInvalidate .
+.IN "XtTextInvalidate" "" "@DEF@"
+.FD 0
+void XtTextInvalidate(\fIw\fP, \fIfrom\fP, \fIto\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTextPosition \fIfrom\fP, \fIto\fP;
+.FN
+The
+.PN XtTextInvalidate
+function causes the specified range of characters to be redisplayed immediately
+if redisplay is enabled or the next time that redisplay is enabled.
+.LP
+.sp
+To enable redisplay, use
+.PN XtTextEnableRedisplay .
+.IN "XtTextEnableRedisplay" "" "@DEF@"
+.FD 0
+void XtTextEnableRedisplay(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+The
+.PN XtTextEnableRedisplay
+function flushes any changes due to batched updates when
+.PN XtTextDisableRedisplay
+was called and allows future changes to be reflected immediately.
+.LP
+.sp
+To disable redisplay while making several changes, use
+.PN XtTextDisableRedisplay .
+.IN "XtTextDisableRedisplay" "" "@DEF@"
+.FD 0
+void XtTextDisableRedisplay(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+The
+.PN XtTextDisableRedisplay
+function causes all changes to be batched until
+.PN XtTextDisplay
+or
+.PN XtTextEnableRedisplay
+is called.
+.LP
+.sp
+To display batched updates, use
+.PN XtTextDisplay .
+.IN "XtTextDisplay" "" "@DEF@"
+.FD 0
+void XtTextDisplay(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+The
+.PN XtTextDisplay
+function forces any accumulated updates to be displayed.
+.LP
+.sp
+To notify the source that the length has been changed, use
+.PN XtTextSetLastPos .
+.IN "XtTextSetLastPos" "" "@DEF@"
+.FD 0
+void XtTextSetLastPos(\fIw\fP, \fIlast\fP);
+.br
+ Widget \fIw\fP;
+.br
+ XtTextPosition \fIlast\fP;
+.FN
+.LP
+The
+.PN XtTextSetLastPos
+function notifies the text source that data has been added to
+or removed from the end of the source.
+.NH 3
+Changing Resources
+.LP
+The following procedures are convenience procedures that replace calls to
+.PN XtSetValues
+or
+.PN XtGetValues
+when only a single resource is to be modified or retrieved.
+.LP
+.sp
+To assigns a new value to XtNtextOptions resource, use
+.PN XtTextChangeOptions .
+.IN "XtTextChangeOptions" "" "@DEF@"
+.FD 0
+void XtTextChangeOptions(\fIw\fP, \fIoptions\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fIoptions\fP;
+.FN
+.LP
+.sp
+To obtain the current value of XtNtextOptions for the specified widget, use
+.PN XtTextGetOptions .
+.IN "XtTextGetOptions" "" "@DEF@"
+.FD 0
+int XtTextGetOptions(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.LP
+.sp
+To obtain the character position of the left-most character on the
+first line displayed in the widget (that is, the value of XtNdisplayPosition), use
+.PN XtTextTopPosition .
+.IN "XtTextTopPosition" "" @DEF@"
+.FD 0
+XtTextPosition XtTextTopPosition(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.LP
+.sp
+To move the insertion caret to the specified source position, use
+.PN XtTextSetInsertionPoint .
+.IN "XtTextSetInsertionPoint" "" "@DEF@"
+.FD 0
+void XtTextSetInsertionPoint(\fIw\fP, \fIposition\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTextPosition \fIposition\fP;
+.FN
+.LP
+The text will be scrolled vertically if necessary to make the line containing the
+insertion point visible.
+The result is equivalent to setting the XtNinsertPosition resource.
+.LP
+.sp
+To obtain the current position of the insertion caret, use
+.PN XtTextGetInsertionPoint .
+.IN "XtTextGetInsertionPoint" "" "@DEF@"
+.FD 0
+XtTextPosition XtTextGetInsertionPoint(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+The result is equivalent to retrieving the value of the XtNinsertPosition resource.
+.LP
+.sp
+To replace the text source in the specified widget, use
+.PN XtTextSetSource .
+.IN "XtTextSetSource" "" "@DEF@"
+.FD 0
+void XtTextSetSource(\fIw\fP, \fIsource\fP, \fIposition\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTextSource \fIsource\fP;
+.br
+ XtTextPosition \fIposition\fP;
+.FN
+A display update will be performed if redisplay has not been disabled.
+.LP
+.sp
+To obtain the current text source for the specified widget, use
+.PN XtTextGetSource .
+.IN "XtTextGetSource" "" "@DEF@"
+.FD 0
+XtTextSource XtTextGetSource(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.LP
+.sp
+To enable and disable the insert position marker, use
+.PN XtTextDisplayCaret .
+.IN "XtTextDisplayCaret" "" "@DEF@"
+.FD 0
+void XtTextDisplayCaret(\fIw\fP, \fIvisible\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIvisible\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID of the Text widget.
+.IP \fIvisible\fP 1i
+Specifies whether or not the caret should be displayed.
+.LP
+If visible is \fBFalse\fP the insert position marker will be disabled.
+The marker is re-enabled either by setting visible to \fBTrue\fP, by
+calling
+.PN XtSetValues ,
+or by executing the \fBdisplay-caret\fP action routine.
+.NH 3
+Creating Sources and Sinks
+.LP
+The following functions for creating and destroying text sources and sinks
+are called automatically by
+.PN AsciiStringWidget
+and
+.PN AsciiDiskWidget
+and it is therefore only necessary for the client to use them when creating
+an instance of
+.PN textWidgetClass .
+.LP
+.sp
+To create a new ASCII text sink, use
+.PN XtAsciiSinkCreate .
+.IN "XtAsciiSinkCreate" "" "@DEF@"
+.FD 0
+XtTextSink XtAsciiSinkCreate(\fIw\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.LP
+The resources required by the sink are
+qualified by the name and class of the parent and the sub-part name
+.PN XtNtextSink
+and class
+.PN XtCTextSink .
+.LP
+.sp
+To deallocate an ASCII text sink, use
+.PN XtAsciiSinkDestroy .
+.IN "XtAsciiSinkDestroy" "" "@DEF@"
+.FD 0
+void XtAsciiSinkDestroy(\fIsink\fP)
+.br
+ XtTextSink \fIsink\fP;
+.FN
+.LP
+The sink must not be in use by any widget or an error will result.
+.LP
+.sp
+To create a new text disk source, use
+.PN XtDiskSourceCreate .
+.IN "XtDiskSourceCreate" "" "@DEF@"
+.FD 0
+XtTextSource XtDiskSourceCreate(\fIw\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.LP
+The resources required by the source are
+qualified by the name and class of the parent and the sub-part name
+.PN XtNtextSource
+and class
+.PN XtCTextSource .
+.LP
+.sp
+To deallocate a text disk source, use
+.PN XtDiskSourceDestroy .
+.IN "XtDiskSourceDestroy" "" "@DEF@"
+.FD 0
+void XtDiskSourceDestroy(\fIsource\fP)
+.br
+ XtTextSource \fIsource\fP;
+.FN
+.LP
+The source must not be in use by any widget or an error will result.
+.LP
+.sp
+To create a new text string source, use
+.PN XtStringSourceCreate .
+.IN "XtStringSourceCreate" "" "@DEF@"
+.FD 0
+XtTextSource XtStringSourceCreate(\fIw\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.LP
+The resources required by the source are
+qualified by the name and class of the parent and the sub-part name
+.PN XtNtextSource
+and class
+.PN XtCTextSource .
+.LP
+.sp
+To deallocate a text string source, use
+.PN XtStringSourceDestroy .
+.IN "XtStringSourceDestroy" "" "@DEF@"
+.FD 0
+void XtStringSourceDestroy(\fIsource\fP)
+.br
+ XtTextSource \fIsource\fP;
+.FN
+.LP
+The source must not be in use by any widget or an error will result.
+.NH 2
+Scrollbar Widget
+.LP
+.XS
+\*(SN Scrollbar Widget
+.XE
+.IN "Scrollbar widget" "" "@DEF@"
+The Scrollbar widget is a rectangular area that contains a slide region and
+a thumb (slide bar).
+A Scrollbar can be used alone, as a valuator, or it can
+be used within a composite widget (for example, a Viewport).
+A Scrollbar can be aligned either vertically or horizontally.
+.LP
+When a Scrollbar is created,
+it is drawn with the thumb in a contrasting color.
+The thumb is normally used to scroll client data and to give visual
+feedback on the percentage of the client data that is visible.
+.LP
+Each pointer button invokes a specific scroll bar action.
+That is, given either a vertical or horizontal alignment,
+the pointer button actions will scroll or return data as appropriate
+for that alignment.
+Pointer buttons 1 and 3 do not perform scrolling operations by default.
+Instead, they return the pixel position of the cursor on the scroll region.
+When pointer button 2 is clicked,
+the thumb moves to the current pointer position.
+When pointer button 2 is held down and the pointer pointer is moved,
+the thumb follows the pointer.
+.LP
+The cursor in the scroll region changes depending on the current action.
+When no pointer button is pressed,
+the cursor appears as an arrow that points in the direction
+that scrolling can occur.
+When pointer button 1 or 3 is pressed,
+the cursor appears as a single-headed arrow that points in the logical
+direction that the client will move the data.
+When pointer button 2 is pressed,
+the cursor appears as an arrow that points to the thumb.
+.LP
+While scrolling is in progress,
+the application receives notification from callback procedures.
+For both scrolling actions,
+the callback returns the Scrollbar widget ID, the client_data,
+and the pixel position of the pointer when the button was released.
+For smooth scrolling,
+the callback routine returns the scroll bar widget, the client data,
+and the current relative position of the thumb.
+When the thumb is moved using pointer button 2,
+the callback procedure is invoked continuously.
+When either button 1 or 3 is pressed,
+the callback procedure is invoked only when the button is released
+and the client callback procedure is responsible for moving the thumb.
+.LP
+The class variable for the Scrollbar widget is
+.PN scrollbarWidgetClass .
+.LP
+When creating a Scrollbar widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Scrollbar widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel white Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of button border
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNforeground Pixel black Thumb color
+XtNheight Dimension See below Height of scroll bar
+XtNjumpProc XtCallbackList NULL Callback for thumb select
+XtNlength Dimension None Major dimension (height of XtorientVertical)
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+T{
+XtNorientation
+T} T{
+XtOrientation
+T} T{
+XtorientVertical
+T} T{
+Orientation (vertical or horizontal)
+T}
+T{
+XtNscrollDCursor
+T} T{
+Cursor
+T} T{
+XC_sb_down_arrow
+T} T{
+Cursor for scrolling down
+T}
+T{
+XtNscrollHCursor
+T} T{
+Cursor
+T} T{
+XC_sb_h_double_arrow
+T} T{
+Idle horizontal cursor
+T}
+T{
+XtNscrollLCursor
+T} T{
+Cursor
+T} T{
+XC_sb_left_arrow
+T} T{
+Cursor for scrolling left
+T}
+XtNscrollProc XtCallbackList NULL Callback for the slide region
+T{
+XtNscrollRCursor
+T} T{
+Cursor
+T} T{
+XC_sb_right_arrow
+T} T{
+Cursor for scrolling right
+T}
+T{
+XtNscrollUCursor
+T} T{
+Cursor
+T} T{
+XC_sb_up_arrow
+T} T{
+Cursor for scrolling up
+T}
+T{
+XtNscrollVCursor
+T} T{
+Cursor
+T} T{
+XC_sb_v_double_arrow
+T} T{
+Idle vertical cursor
+T}
+XtNsensitive Boolean True Whether widget receives input
+XtNshown float NULL Percentage the thumb covers
+XtNthickness Dimension 14 Minor dimension (height if XtorientHorizontal)
+XtNthumb Pixmap Grey Thump pixmap
+XtNtop float NULL Position on scroll bar
+XtNtranslations TranslationTable See below Event-to-action translations
+XtNwidth Dimension See below Width of scroll bar
+XtNx Position NULL x position of scroll bar
+XtNy Position NULL y position of scroll bar
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The class for all cursor resources is
+.PN XtCCursor .
+.LP
+You can set the dimensions of the Scrollbar two ways.
+As for all widgets,
+you can use the
+.PN XtNwidth
+and
+.PN XtNheight
+resources.
+In addition,
+you can use an alternative method that is independent of the vertical
+or horizontal orientation:
+.TS
+lw(1.5i) lw(4.5i).
+T{
+.PN XtNlength
+T} T{
+Specifies the height for a vertical Scrollbar
+and the width for a horizontal Scrollbar.
+T}
+T{
+.PN XtNthickness
+T} T{
+Specifies the width for a vertical Scrollbar
+and the height for a horizontal Scrollbar.
+T}
+.TE
+.LP
+.IN "Scrollbar widget" "creating"
+.IN "Creating widgets" "Scrollbar"
+To create a Scrollbar widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN scrollbarWidgetClass .
+.LP
+.IN "Scrollbar widget" "destroying"
+.IN "Destroying widgets" "Scrollbar"
+To destroy a Scrollbar widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID for the Scrollbar.
+.LP
+.sp
+The arguments to the
+.PN XtNscrollProc
+callback procedure are:
+.IN "ScrollProc" "" "@DEF@"
+.FD 0
+void \fIScrollProc\fP(\fIscrollbar\fP, \fIclient_data\fP, \fIposition\fP)
+.br
+ Widget \fIscrollbar\fP;
+.br
+ caddr_t \fIclient_data\fP;
+.br
+ caddr_t \fIposition\fP; /* int */
+.FN
+.IP \fIscrollbar\fP 1i
+Specifies the ID of the Scrollbar.
+.IP \fIclient_data\fP 1i
+Specifies the client data.
+.IP \fIposition\fP 1i
+Returns the pixel position of the thumb in integer form.
+.LP
+The
+.PN XtNscrollProc
+callback is used for incremental scrolling
+and is called by the \fBNotifyScroll\fP action.
+The position argument is a signed quantity and should be cast to an int
+when used.
+Using the default button bindings,
+button 1 returns a positive value,
+and button 3 returns a negative value.
+In both cases,
+the magnitude of the value is the distance of the pointer in pixels from the
+top (or left) of the Scrollbar.
+The value will never be less than zero or greater than the length
+of the Scrollbar.
+.LP
+.sp
+The arguments to the
+.PN XtNjumpProc
+callback procedure are:
+.IN "JumpProc" "" "@DEF@"
+.FD 0
+void \fIJumpProc\fP(\fIscrollbar\fP, \fIclient_data\fP, \fIpercent\fP)
+.br
+ Widget \fIscrollbar\fP;
+.br
+ caddr_t \fIclient_data\fP;
+.br
+ caddr_t \fIpercent_ptr\fP; /* float* */
+.FN
+.IP \fIscrollbar\fP 1i
+Specifies the ID of the scroll bar widget.
+.IP \fIclient_data\fP 1i
+Specifies the client data.
+.IP \fIpercent_ptr\fP 1i
+Specifies the floating point position of the thumb (0.0 \- 1.0).
+.LP
+The
+.PN XtNjumpProc
+callback is used to implement smooth scrolling and is called by the
+\fBNotifyThumb\fP
+action. Percent_ptr must be cast to a pointer to float before
+use; i.e.
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+ float percent = *(float*)percent_ptr;
+.De
+.LP
+With the default button bindings,
+button 2 moves the thumb interactively,
+and the
+.PN XtNjumpProc
+is called on each new position of the pointer.
+.NT
+An older interface used
+.PN XtNthumbProc
+and passed the percentage by value rather than by reference.
+This interface is not portable across machine architectures
+and therefore is no longer supported but is still implemented
+for those (non-portable) applications which used it.
+.NE
+.LP
+.IN "Scrollbar widget" "setting thumb values"
+To set the position and length of a Scrollbar thumb, use
+.PN XtScrollbarSetThumb .
+.IN "XtScrollbarSetThumb" "" "@DEF@"
+.FD 0
+void XtScrollbarSetThumb(\fIw\fP, \fItop\fP, \fIshown\fP)
+.br
+ Widget \fIw\fP;
+.br
+ float \fItop\fP;
+.br
+ float \fIshown\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Scrollbar widget ID.
+.IP \fItop\fP 1i
+Specifies the position of the top of the thumb as a fraction of the
+length of the Scrollbar.
+.IP \fIshown\fP 1i
+Specifies the length of the thumb as a fraction of the total length
+of the Scrollbar.
+.LP
+.PN XtScrollbarThumb
+moves the visible thumb to position (0.0 \- 1.0) and length (0.0 \- 1.0).
+Either the top or shown arguments can be specified as \-1.0,
+in which case the current value is left unchanged.
+Values greater than 1.0 are truncated to 1.0.
+.LP
+If called from
+.PN XtNjumpProc ,
+.PN XtScrollbarSetThumb
+has no effect.
+.LP
+.sp
+The actions supported by the Scrollbar widget are:
+.IP \fBStartScroll\fP(\fIvalue\fP) 1i
+The possible values are Forward, Backward, or Continuous.
+This must be the first action to begin a new movement.
+.IP \fBNotifyScroll\fP(\fIvalue\fP) 1i
+The possible values are Proportional or FullLength.
+If the argument to StartScroll was Forward or Backward,
+NotifyScroll executes the
+.PN XtNscrollProc
+callbacks
+and passes either the position of the pointer if its argument is Proportional
+or the full length of the scroll bar if its argument is FullLength.
+If the argument to StartScroll was Continuous,
+NotifyScroll returns without executing any callbacks.
+.IP \fBEndScroll\fP(\^) 1i
+This must be the last action after a movement is complete.
+.IP \fBMoveThumb\fP(\^) 1i
+Repositions the scroll bar thumb to the current pointer location.
+.IP \fBNotifyThumb\fP(\^)\ \ \ 1i
+Calls the
+.PN XtNjumpProc
+callbacks and passes the relative position of the
+pointer as a percentage of the scroll bar length.
+.LP
+The default bindings for Scrollbar are:
+.LP
+.Ds 0
+.TA .5i 1.75i
+.ta .5i 1.75i
+ <Btn1Down>: StartScroll(Forward)
+ <Btn2Down>: StartScroll(Continuous) MoveThumb(\|) NotifyThumb(\|)
+ <Btn3Down>: StartScroll(Backward)
+ <Btn2Motion>: MoveThumb(\|) NotifyThumb(\|)
+ <BtnUp>: NotifyScroll(Proportional) EndScroll(\|)
+.De
+.LP
+Examples of additional bindings a user might wish to specify in a
+resource file are:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+*Scrollbar.Translations: \\
+ ~Meta<KeyPress>space: StartScroll(Forward) NotifyScroll(FullLength) \\n\\
+ Meta<KeyPress>space: StartScroll(Backward) NotifyScroll(FullLength) \\n\\
+ EndScroll(\|)
+.De
+.NH 2
+Viewport Widget
+.LP
+.XS
+\*(SN Viewport Widget
+.XE
+.IN "Viewport widget" "" "@DEF@"
+The Viewport widget consists of a frame window, one or two Scrollbars,
+and an inner window.
+The frame window is determined by
+the viewing size of the data that is to be displayed
+and the dimensions to which the Viewport is created.
+The inner window is the full size of the data that is to be displayed
+and is clipped by the frame window.
+The Viewport widget controls the scrolling of the data directly.
+No application callbacks are required for scrolling.
+.LP
+When the geometry of the frame window is equal in size to the inner window,
+or when the data does not require scrolling,
+the Viewport widget automatically removes any scroll bars.
+The
+.PN forceBars
+option causes the Viewport widget to display any scroll bar permanently.
+.LP
+The class variable for the Viewport widget is
+.PN viewportWidgetClass .
+.LP
+When creating a Viewport widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Viewport widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNallowHoriz Boolean False Flag to allow horizontal scroll bars
+XtNallowVert Boolean False Flag to allow vertical scroll bars
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of the border in pixels
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callback for
+.PN XtDestroyWidget
+T}
+XtNforceBars Boolean False Flag to force display of scroll bars
+XtNheight Dimension height of child Height of the widget
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNsensitive Boolean True Whether widget should receive input
+XtNtranslations TranslationTable None Event-to-action translations
+XtNuseBottom Boolean False Flag to indicate bottom/top bars
+XtNuseRight Boolean False Flag to indicate right/left bars
+XtNwidth Dimension width of child Width of the widget
+XtNx Position 0 x coordinate within parent
+XtNy Position 0 y coordinate within parent
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The Viewport widget manages a single child widget.
+When the size of the child is larger than the size of the Viewport,
+the user can interactively move the child within the Viewport
+by repositioning the Scrollbars.
+.LP
+The default size of the Viewport before it is realized is the
+width and/or height of the child.
+After it is realized, the viewport will allow its
+child to grow vertically or horizontally if
+.PN XtNallowVert
+or
+.PN XtNallowHoriz
+were set, respectively. If the corresponding vertical or horizontal
+scrolling were not enabled, the viewport will propagate the
+geometry request to its own parent and the child will be allowed
+to change size only if the (grand) parent allows it. Regardless
+of whether or not scrolling was enabled in the corresponding
+direction, if the child requests a new size smaller than the
+viewport size, the change will be allowed only if the parent of
+the viewport allows the viewport to shrink to the appropriate dimension.
+.LP
+.IN "Viewport widget" "creating"
+To create a Viewport widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN viewportWidgetClass .
+.LP
+.IN "Viewport widget" "inserting a child"
+To insert a child into a Viewport widget, use
+.PN XtCreateWidget
+and specify the widget ID of the previously created Viewport as the parent.
+.LP
+.IN "Viewport widget" "removing a child"
+To remove a child from a Viewport widget, use
+.PN XtUnmanageChild
+or
+.PN XtDestroyWidget
+and specify the widget ID of the child.
+.LP
+.IN "Viewport widget" "destroying"
+.IN "Destroying widgets" "Viewport"
+To delete the inner window, any children, and the frame window, use
+.PN XtDestroyWidget
+and specify the widget ID of the Viewport widget.
+.NH 2
+Box Widget
+.LP
+.XS
+\*(SN Box Widget
+.XE
+.IN "Box widget" "" "@DEF@"
+The Box widget provides geometry management of
+arbitrary widgets in a box of a specified dimension.
+The children are rearranged when resizing events occur either on the
+Box or when children are added or deleted.
+The Box widget always attempts to pack its children as closely as possible
+within the geometry allowed by its parent.
+.LP
+Box widgets are commonly used to manage a related set of Command
+widgets and are frequently called ButtonBox widgets, but the children are
+not limited to buttons.
+.LP
+The children are arranged on a background that
+has its own specified dimensions and color.
+.LP
+The class variable for the Box widget is
+.PN boxWidgetClass .
+.LP
+When creating a Box widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Box widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i) .
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Border width on button box
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNhSpace Dimension 4 Pixel distance left and right of children
+XtNheight Dimension see below Viewing height of inner window
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNtranslations TranslationTable None Event-to-action translations
+XtNvSpace Dimension 4 Pixel distance top and bottom of children
+XtNwidth Dimension width of widest child Viewing width of inner window
+XtNx Position 0 Widget location x coordinate
+XtNy Position 0 Widget location y coordinate
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The Box widget positions its children in rows with
+.PN XtNhSpace
+pixels to the left and right of each child and
+.PN XtNvSpace
+pixels between rows.
+If the Box width is not specified,
+the Box widget uses the width of the widest child.
+Each time a child is managed or unmanaged, the Box widget will
+attempt to reposition the remaining children to compact the box.
+Children are positioned in order left to right, top to bottom.
+When the next child does not fit on the current row, a new row is
+started. If a child is wider than the width of the box, the box
+will request a larger width from it parent and will begin the
+layout process from the beginning if a new width is granted.
+After positioning all children,
+the Box widget attempts to shrink its own size to the minimum dimensions
+required for the layout.
+.LP
+.IN "Box widget" "creating"
+.IN "Creating widgets" "Box"
+To create a box widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN boxWidgetClass .
+.LP
+.IN "Box widget" "adding children"
+To add a child to the Box, use
+.PN XtCreateWidget
+and specify the widget ID of the Box as the parent of the new widget.
+.LP
+.IN "Box widget" "removing children"
+To remove a child from the Box, use
+.PN XtUnmanageChild
+or
+.PN XtDestroyWidget
+and specify the widget ID of the child.
+.LP
+.IN "Box widget" "destroying"
+.IN "Destroying widgets" "Box"
+To destroy a Box widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID of the Box widget.
+All the children of this box are automatically destroyed at the same time.
+.\".NH 2
+.\"MenuBox Widget
+.\".LP
+.\".XS
+.\"\*(SN MenuBox Widget
+.\".XE
+.\".IN "MenuBox widget" "" "@DEF@"
+.\"The MenuBox widget allows for menus of arbitrary complexity.
+.\"A MenuBox consists of a main window and a number of entries that
+.\"are added to it.
+.\"Although these entries typically are Command widgets,
+.\"any kind of widget can be added to a MenuBox.
+.\".LP
+.\"The class variable for the MenuBox widget is
+.\".PN menuBoxWidgetClass .
+.\".LP
+.\"An application can use the MenuBox widget to create:
+.\".IP \(bu 5
+.\"Pop-up menus
+.\".IP \(bu 5
+.\"Pull-down menus
+.\".IP \(bu 5
+.\"Cascading menus
+.\".LP
+.\"For example, to create a pop-up menu,
+.\"use
+.\".PN XtCreateWidget
+.\"and specifies the class variable
+.\".PN menuBoxWidgetClass .
+.\"This creates an empty main window.
+.\"Then, to create a menu item that is to be added to the MenuBox,
+.\"specify the widget ID of this empty menu as the parent
+.\"of each new item.
+.\".LP
+.\"The MenuBox can arrange its children either vertically or horizontally.
+.\".LP
+.\"The MenuBox widget automatically makes all items the same width
+.\"(for vertical orientation) or the same height (for horizontal orientation)
+.\"as the largest one passed to it.
+.\"Then, to make the MenuBox visible,
+.\"use
+.\".PN XtRealize
+.\"to map the MenuBox widget.
+.\".LP
+.\"When creating a MenuBox widget,
+.\"the following resources are retrieved from the argument list
+.\"or from the resource database:
+.\".IN "MenuBox widget" "resources"
+.\".ps 9
+.\".nr PS 9
+.\".vs 11
+.\".nr VS 11
+.\".TS H
+.\"lw(1.5i) lw(1i) lw(1i) lw(2i).
+.\"_
+.\".sp 3p
+.\".TB
+.\"Name Type Default Description
+.\".sp 3p
+.\"_
+.\".TH
+.\".R
+.\".sp 3p
+.\"XtNbackgroundPixmap Pixmap None Window background pixmap
+.\"XtNborderPixmap Pixmap None Window border pixmap
+.\"XtNwidth Dimension 1 Menu window width
+.\"XtNheight Dimension 1 Menu window height
+.\"XtNorientation XtOrientation XtorientVertical Row/column layout
+.\"XtNborderWidth Dimension 1 Menu window border width
+.\"XtNborder Pixmap BlackPixmap Border color
+.\"XtNbackground int WhitePixel Background color
+.\"T{
+.\"XtNinternalWidth
+.\"T} T{
+.\"int
+.\"T} T{
+.\"2
+.\"T} T{
+.\"Space between first item and top
+.\".br
+.\"Space between last item and bottom
+.\"T}
+.\"XtNinternalHeight int 2 First menu item to window top
+.\"XtNspace int 1 Space between menu items
+.\"XtNtranslations TranslationTable None event-to-action translations
+.\"XtNx Position 0 Widget location x coordinate
+.\"XtNy Position 0 Widget location y coordinate
+.\"XtNcallback XtCallbackList Dummy Callback function
+.\".sp 3p
+.\"_
+.\".TE
+.\".ps 11
+.\".nr PS 11
+.\".vs 13
+.\".nr VS 13
+.\".LP
+.\".IN "MenuBox widget" 'creating"
+.\".IN "Creating widgets" "MenuBox"
+.\"To create a MenuBox widget instance, use
+.\".PN XtCreateWidget
+.\"and specify the class variable
+.\".PN menuBoxWidgetClass .
+.\".LP
+.\".IN "MenuBox widget" "adding entries"
+.\"To add entries,
+.\"specify the widget ID of the previously created MenuBox widget
+.\"as the parent of each new entry.
+.\".LP
+.\".IN "MenuBox widget" "deleting entries"
+.\"To delete an entry, use
+.\".PN XtUnmanageChild
+.\"or
+.\".PN XtDestroyWidget
+.\"and specify the widget ID of the entry.
+.\".LP
+.\"The MenuBox widget resides in whatever parent widget the application specifies.
+.\"For example, it does not automatically create a pop-up widget.
+.\"To create a pop-up menu, use
+.\".PN XtCreatePopupShell
+.\"and then create the MenuBox as a child of this newly created shell.
+.\".LP
+.\".IN "MenuBox widget" "over-riding geometry manager"
+.\"The MenuBox widget has a built-in geometry manager that enables the menu to
+.\"become as large as necessary.
+.\"To override the built-in geometry manager,
+.\"create your own geometry manager and call it
+.\".PN XtMenuGeometryManager .
+.\".IN "XtMenuGeometryManager" "" "@DEF@"
+.\".FD 0
+.\"GeometryReturnCode XtMenuGeometryManager(\fIw\fP, \fIrequest\fP, \
+.\"\fIrequest_box\fP, \fIreply_box\fP)
+.\".br
+.\" Widget \fIw\fP;
+.\".br
+.\" int \fIrequest\fP;
+.\".br
+.\"XtWidgetGeometry *\fIrequest_box\fP, *\fIreply_box\fP;
+.\".FN
+.\".IP \fIw\fP 1i
+.\"Specifies the widget ID.
+.\".IP \fIrequest\fP 1i
+.\"Specifies the geometry management request.
+.\".IP \fIrequest_box\fP 1i
+.\"Specifies the desired widget geometry.
+.\".IP \fIreply_box\fP 1i
+.\"Specifies an argument to which the allowed widget size is returned.
+.\".LP
+.\".IN "MenuBox widget" "destroying"
+.\".IN "Destroying widgets" "MenuBox"
+.\"To destroy a MenuBox widget instance,
+.\"use
+.\".PN XtDestroyWidget
+.\"and specify the widget ID of the MenuBox widget.
+.NH 2
+VPaned Widget
+.LP
+.XS
+\*(SN VPaned Widget
+.XE
+.IN "VPaned widget" "" "@DEF@"
+The VPaned widget manages children in a vertically tiled fashion.
+A region, called a grip, appears on the border between each child.
+When the pointer is positioned on a grip and pressed,
+an arrow is displayed that indicates the significant pane that is
+being resized.
+While keeping the pointer button down,
+the user can move the pointer up or down.
+This, in turn, changes the window borders, causing one pane to shrink
+and some other pane to grow.
+The cursor indicates the pane that is of interest to the user;
+some other pane in the opposite direction will be chosen to grow
+or shrink an equal amount. The choice of alternate pane is a
+function of the
+.PN XtNmin ,
+.PN XtNmax
+and
+.PN XtNskipAdjust
+constraints on the other panes. With the default bindings,
+button 1 resizes the pane above the selected grip, button 3
+resizes the pane below the selected grip and button 2 repositions
+the border between two panes only.
+.LP
+The class variable for the VPaned widget is
+.PN vPanedWidgetClass .
+.LP
+When creating a VPaned widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "VPaned widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i) .
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+T{
+XtNbetweenCursor
+T} T{
+Cursor
+T} T{
+XC_sb_left_arrow
+T} T{
+Cursor for changing the boundary between two panes
+T}
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Border width (pixels)
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNforeground Pixel Black Pixel value for the foreground color
+XtNgripCursor Cursor XC_sb_v_double_arrow Cursor for grip when not active
+XtNgripIndent Position 10 Offset of grip from margin (pixels)
+XtNgripTranslations TranslationTable internal button bindings for grip
+XtNheight Dimension sum of child heights Height of vPane
+T{
+XtNlowerCursor
+T} T{
+Cursor
+T} T{
+XC_sb_down_arrow
+T} T{
+Cursor for resizing pane below grip
+T}
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNrefigureMode Boolean On Whether vPane should adjust children
+XtNsensitive Boolean True Whether widget receives input
+XtNtranslations TranslationTable None Event-to-action translations
+T{
+XtNupperCursor
+T} T{
+Cursor
+T} T{
+XC_sb_up_arrow
+T} T{
+Cursor for resizing pane above grip
+T}
+XtNwidth Dimension width of widest child Width of vPane
+XtNx Position 0 x position of vPane
+XtNy Position 0 y position of vPane
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+.IN "VPaned widget" "creating"
+.IN "Creating widgets" "VPaned"
+To create a VPaned widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN vPanedWidgetClass .
+.LP
+Once the parent frame is created,
+you then add panes to it.
+Any type of widget can be paned.
+.LP
+.IN "VPaned widget" "adding pane"
+To add a child pane to a VPaned frame, use
+.PN XtCreateWidget
+and specify the widget ID of the VPaned widget
+as the parent of each new child pane.
+.LP
+During the creation of a child pane,
+the following resources,
+by which the VPaned widget controls the placement of the child,
+can be specified in the argument list or retrieved from the resource database:
+.IN "VPaned widget" "child resources"
+.LP
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i) .
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+T{
+XtNallowResize
+T} T{
+Boolean
+T} T{
+False
+T} T{
+If False, ignore child resize requests
+T}
+XtNmax Dimension unlimited Maximum height for pane
+XtNmin Dimension 1 Minimum height for pane
+T{
+XtNskipAdjust
+T} T{
+Boolean
+T} T{
+False
+T} T{
+True if VPaned widget should not automatically resize pane
+T}
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+.IN "VPaned widget" "deleting pane"
+To delete a pane from a vertically paned window frame, use
+.PN XtUnmanageWidget
+or
+.PN XtDestroyWidget
+and specify the widget ID of the child pane.
+.LP
+.IN "VPaned widget" "enable pane resizing"
+.IN "VPaned widget" "disable pane resizing"
+To enable or disable a child's request for pane resizing,
+use
+.PN XtPanedAllowResize .
+.IN "XtPanedAllowResize" "" "@DEF@"
+.FD 0
+void XtPanedAllowResize(\fIw\fP, \fIallow_resize\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIallow_resize\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID of the child widget pane.
+.IP \fIallow_resize\fP
+Enables or disables a pane widget for resizing requests.
+.LP
+If allow_resize is
+.PN True ,
+VPane allows geometry requests from the child to change the pane's height.
+If allow_resize is
+.PN False ,
+VPane ignores geometry requests from the child to change the pane's height.
+The default state is
+.PN True
+before the VPane is realized and
+.PN False
+after it is realized.
+This procedure is equivalent to changing the
+.PN XtNallowResize
+resource for the child.
+.LP
+.sp
+.IN "VPaned widget" "change height settings"
+To change the minimum and maximum height settings for a pane, use
+.PN XtPanedSetMinMax .
+.IN "XtPanedSetMinMax" "" "@DEF@"
+.FD 0
+void XtPanedSetMinMax(\fIw\fP, \fImin\fP, \fImax\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fImin\fP, \fImax\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID of the child widget pane.
+.IP \fImin\fP 1i
+New minimum height of the child, expressed in pixels.
+.IP \fImax\fP 1i
+New maximum height of the child, expressed in pixels.
+.LP
+This procedure is equivalent to setting the
+.PN XtNmin
+and
+.PN XtNmax
+resources for the child.
+.LP
+.sp
+.IN "VPaned widget" "enable auto-reconfiguring"
+.IN "VPaned widget" "disable auto-reconfiguring"
+To enable or disable automatic recalculation of pane sizes and positions,
+use
+.PN XtPanedSetRefigureMode .
+.IN "XtPanedSetRefigureMode" "" "@DEF@"
+.FD 0
+void XtPanedSetRefigureMode(\fIw\fP, \fImode\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fImode\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID of the VPaned widget.
+.IP \fImode\fP 1i
+Enables or disables refiguration.
+.LP
+You should set the mode to FALSE if you add multiple panes to
+or remove multiple panes from the parent frame after it has been realized,
+unless you can arrange to manage all the panes at once using
+.PN XtManageChildren .
+After all the panes are added, set the mode to TRUE.
+This avoids unnecessary geometry calculations and ``window dancing''.
+.LP
+.IN "VPaned widget" "destroying"
+.IN "Destroying widgets" "VPaned"
+To delete an entire VPaned widget and all associated data structures,
+use
+.PN XtDestroyWidget
+and specify the widget ID of the VPaned widget.
+All the children of the VPaned widget
+are automatically destroyed at the same time.
+.NH 2
+Form Widget
+.LP
+.XS
+\*(SN Form Widget
+.XE
+.IN "Form widget" "" "@DEF@"
+The Form widget can contain an arbitrary number of children or subwidgets.
+The Form provides geometry management for its children,
+which allows individual control of the position of each child.
+Any combination of children can be added to a Form.
+The initial positions of the children may be computed relative to
+the positions of other children.
+When the Form is resized,
+it computes new positions and sizes for its children.
+This computation is based upon information provided
+when a child is added to the Form.
+.LP
+The class variable for a Form widget is
+.PN formWidgetClass .
+.LP
+When creating a Form widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Form widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of border in pixels
+T{
+XtNdefaultDistance
+T} T{
+int
+T} T{
+4
+T} T{
+Default value for XtNhorizDistance
+.br
+and XtNvertDistance
+T}
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNheight Dimension computed at realize Height of form
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNsensitive Boolean True Whether widget receives input
+XtNtranslations TranslationTable None Event-to-action translations
+XtNwidth Dimension computed at realize Width of form
+XtNx Position NULL x position of form
+XtNy Position NULL y position of form
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+.IN "Form widget" "creating"
+.IN "Creating widgets" "Form"
+To create a Form widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN formWidgetClass .
+.LP
+.IN "Form widget" "adding children"
+To add a new child to a Form, use
+.PN XtCreateWidget
+and specify the widget ID of the previously created Form as the parent
+of the child.
+.LP
+When creating children that are to be added to a Form,
+the following additional resources are retrieved from the
+argument list or from the resource database:
+.IN "Form widget" "child resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbottom XtEdgeType XtRubber See text
+XtNfromHoriz Widget NULL See text
+XtNfromVert Widget NULL See text
+XtNhorizDistance int XtdefaultDistance See text
+XtNleft XtEdgeType XtRubber See text
+XtNresizable Boolean FALSE TRUE if allowed to resize
+XtNright XtEdgeType XtRubber See text
+XtNtop XtEdgeType XtRubber See text
+XtNvertDistance int XtdefaultDistance See text
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+When a widget is added to a Form, constraints
+can be specified to the Form to indicate
+where the child should be positioned within the Form.
+.LP
+The resources
+.PN XtNhorizDistance
+and
+.PN XtNfromHoriz
+let the
+widget position itself a specified number of pixels horizontally
+away from another
+widget in the form.
+As an example,
+.PN XtNhorizDistance
+could equal 10 and
+.PN XtNfromHoriz
+could be the widget ID of
+another widget in the Form.
+The new widget will be placed
+10 pixels to the right of the
+widget defined in
+.PN XtNfromHoriz .
+If
+.PN XtNfromHoriz
+equals NULL, then
+.PN XtNhorizDistance
+is measured from the left edge of the Form.
+.LP
+Similarly, the resources
+.PN XtNvertDistance
+and
+.PN XtNfromVert
+let
+the widget position itself a specified number of pixels vertically
+away from another widget in the Form.
+If
+.PN XtNfromVert
+equals
+NULL, then
+.PN XtNvertDistance
+is measured from the top of the Form.
+Form provides a StringToWidget conversion procedure. Using this
+procedure, the resource database may be used to specify the
+.PN XtNfromHoriz
+and
+.PN XtNfromVert
+resources by widget name rather than widget id. The string value
+must be the name of a child of the same Form widget parent.
+.LP
+The
+.PN XtNtop ,
+.PN XtNbottom ,
+.PN XtNleft ,
+and
+.PN XtNright
+resources tell the Form where to position the child when the Form is
+resized.
+.PN XtEdgeType
+is defined in
+.Pn < X11/Form.h >
+and is one of
+.IN "XtEdgeType" "" "@DEF@"
+.PN XtChainTop ,
+.PN XtChainBottom ,
+.PN XtChainLeft ,
+.PN XtChainRight
+or
+.PN XtRubber .
+.LP
+The values
+.PN XtChainTop ,
+.PN XtChainBottom ,
+.PN XtChainLeft ,
+and
+.PN XtChainRight
+specify that a constant distance from an edge of the child to
+the top, bottom, left, and right edges respectively of the Form is to be
+maintained.
+The value
+.PN XtRubber
+specifies that a proportional distance from the edge of the child to
+the left or top edge of the Form is to be maintained when the
+form is resized. The proportion is determined from the initial
+position of the child and the initial size of the Form.
+Form provides a StringToEdgeType conversion procedure to allow the resize
+constraints to be easily specified in a resource file.
+.LP
+The default width of the Form is the minimum width needed to
+enclose the children after computing their initial layout, with a
+margin of
+.PN XtNdefaultDistance
+at the right and bottom edges. If a width and height is assigned
+to the Form that is too small for the layout, the children will
+be clipped by the right and bottom edges of the Form.
+.LP
+.IN "Form widget" "deleting children"
+To remove a child from a Form, use
+.PN XtUnmanageChild
+or
+.PN XtDestroyWidget
+and specify the widget ID of the child widget.
+.LP
+.IN "Form widget" "destroying"
+.IN "Destroying widgets" "Form"
+To destroy a Form widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID of the Form.
+All children of the Form are automatically destroyed at the same
+time.
+.LP
+When a new child becomes managed or an old child unmanaged, Form
+will recalculate the positions of its children according to the
+values of the
+.PN XtNhorizDistance ,
+.PN XtNfromHoriz ,
+.PN XtNvertDistance
+and
+.PN XtNfromVert
+constraints at the time the change is made.
+No re-layout is performed when a child makes a
+geometry request.
+.LP
+.sp
+To force or defer a re-layout of the Form, use
+.PN XtFormDoLayout .
+.IN "Form widget" "re-layout"
+.IN "XtFormDoLayout" "" "@DEF@"
+.FD 0
+void XtFormDoLayout(\fIw\fP, \fIdo_layout\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIdo_layout\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the Form widget.
+.IP \fIdo_layout\fP 1i
+Enables (if
+.PN True )
+or disables (if
+.PN False )
+layout of the Form widget.
+.LP
+When making several changes to the children of a Form widget
+after the Form has been realized, it is a good idea to disable
+re-layout until all changes have been made, then allow the
+layout. Form increments an internal count each time
+.PN XtFormDoLayout
+is called with do_layout
+.PN False
+and decrements the count when do_layout is
+.PN True .
+When the count reaches 0, Form performs a re-layout.
+.NH 2
+Dialog Widget
+.LP
+.XS
+\*(SN Dialog Widget
+.XE
+.IN "Dialog widget" "" "@DEF@"
+The Dialog widget implements a commonly used interaction
+semantic to prompt for auxiliary input from a user.
+For example, you can use a Dialog widget when an application
+requires a small piece of information, such as a file name, from the user.
+A Dialog widget is simply a special case of the Form widget
+that provides a convenient way to create a ``preconfigured form''.
+.LP
+The typical Dialog widget contains three areas.
+The first line contains a
+description of the function of the Dialog widget,
+for example, the string ``Filename:''.
+The second line contains an area into which the user types input.
+The third line can contain buttons that let the user confirm
+or cancel the Dialog input.
+.LP
+The class variable for the Dialog widget is
+.PN dialogWidgetClass .
+.LP
+When creating a Dialog widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Dialog widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of border in pixels
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNheight Dimension computed at create Height of dialog
+XtNlabel String Label name String to be displayed
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNmaximumLength int 256 Length of input buffer
+XtNsensitive Boolean True Whether widget receives input
+XtNtranslations TranslationTable None Event-to-action translations
+XtNvalue char* NULL Pointer to default value string
+XtNwidth Dimension computed at create Width of dialog
+XtNx Position NULL x position of dialog
+XtNy Position NULL y position of dialog
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The instance name of the label widget within the Dialog widget is ``label'',
+and the instance name of the Dialog value widget is ``value''.
+.LP
+.IN "Dialog widget" "creating"
+.IN "Creating widgets" "Dialog"
+To create a Dialog widget instance, you can use
+.PN XtCreateWidget
+and specify the class variable
+.PN dialogWidgetClass .
+.LP
+.IN "Dialog widget" "adding children"
+To add a child button to the Dialog box, use
+.PN XtCreateWidget
+and specify widget ID of the previously created Dialog box as the parent
+of each child.
+When creating buttons,
+you do not have to specify form constraints.
+The Dialog box will automatically add the constraints.
+.LP
+.sp
+To return the character string in the text field, use
+.PN XtDialogGetValueString .
+.IN "XtDialogGetValueString" "" "@DEF@"
+.FD 0
+char *XtDialogGetValueString(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID of the Dialog box.
+.LP
+If a string was specified in the
+.PN XtNvalue
+resource, Dialog copy the string internally and will use it as the
+initial (i.e. default) value for the input text. The value string
+may be freed immediately after creating the Dialog widget. If the
+length of the value string is greater than the maximumLength resource,
+the larger value is used.
+.LP
+If no value resource is specified for the Dialog widget, the text user
+input area is not displayed. In order to display a blank input area,
+an empty string must be passed as the value resource.
+.LP
+.sp
+.IN "Dialog widget" "removing children"
+To remove a child button from the Dialog box, use
+.PN XtUnmanageChild
+or
+.PN XtDestroyWidget
+and specify the widget ID of the child.
+.LP
+.IN "Dialog widget" "destroying"
+.IN "Destroying widgets" "Dialog"
+To destroy a Dialog widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID of the Dialog widget.
+All children of the Dialog are automatically destroyed at the same time.
+.NH 2
+List Widget
+.LP
+.XS
+\*(SN List Widget
+.XE
+.IN "List widget" "" "@DEF@"
+The List widget is a rectangle that contains a list of strings formatted
+into rows and columns.
+When one of the strings is selected,
+it is highlighted, and an application callback routine is invoked.
+.\"When the cursor pointer is clicked on one of the strings
+.\"it is shown to be selected by highlighting and the application's
+.\"callback routine is invoked.
+.LP
+The class variable for the List widget is
+.PN listWidgetClass .
+.LP
+When creating a List widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "List widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of border
+XtNcallback XtCallbackList NULL Selection callback function
+XtNcolumnSpacing Dimension 6 Space between columns in the list
+XtNcursor Cursor left_ptr Pointer cursor
+XtNdefaultColumns int 2 Number of columns to use
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNfont XFontStruct* XtDefaultFont Font for list text
+XtNforceColumns Boolean False Force the use of XtNdefaultColumns
+XtNforeground Pixel XtDefaultForeground Foreground (text) color
+XtNheight Dimension Contains list exactly Height of widget
+XtNinsensitiveBorder Pixmap Gray Border when not sensitive
+T{
+XtNinternalHeight
+T} T{
+Dimension
+T} T{
+2
+T} T{
+Spacing between list and widget edges
+T}
+T{
+XtNinternalWidth
+T} T{
+Dimension
+T} T{
+4
+T} T{
+Spacing between list and widget edges
+T}
+XtNlist String * List name An array of strings that is the list
+T{
+XtNlongest
+T} T{
+int
+T} T{
+Longest item
+T} T{
+Length of the longest list item in pixels
+T}
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+T{
+XtNnumberStrings
+T} T{
+int
+T} T{
+Number of strings
+T} T{
+Number of items in the list
+T}
+XtNpasteBuffer Boolean False Copy the selected item to cut buffer 0
+XtNrowSpacing Dimension 4 Space between rows in the list
+XtNsensitive Boolean True Whether widget receives input
+XtNtranslations TranslationTable None Event-to-action translations
+XtNverticalList Boolean False Specify the layout of list items
+XtNwidth Dimension Contains list exactly Width of widget
+XtNx Position 0 Widget x coordinate
+XtNy Position 0 Widget y coordinate
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+The new resources associated with the List widget are:
+.TS
+lw(1.7i) lw(4i).
+T{
+.PN XtNcolumnSpacing
+.br
+.PN XtNrowSpacing
+T} T{
+Specify the amount of space between each of the rows and columns in the list.
+T}
+.sp
+T{
+.PN XtNdefaultColumns
+T} T{
+Specifies the default number of columns,
+which is used when neither the width nor the height of the List widget
+is specified or when XtNforceColumns is
+.PN True .
+T}
+.sp 6p
+T{
+.PN XtNforceColumns
+T} T{
+Specifies that the default number of columns is to be used
+no matter what the current size of the List widget is.
+T}
+.sp 6p
+T{
+.PN XtNheight
+T} T{
+Specifies the height of the List widget.
+The default value is the minimum height that will contain
+the entire list with the spacing values specified.
+If the specified height is larger than the minimum,
+the list is put in the upper left corner.
+T}
+.sp 6p
+T{
+.PN XtNinternalHeight
+T} T{
+Represents a margin, in pixels, between the top and bottom
+of the list and the edges of the List widget.
+T}
+.sp 6p
+T{
+.PN XtNinternalWidth
+T} T{
+Represents a margin, in pixels, between the left and right edges
+of the list and the edges of the List widget.
+T}
+.sp 6p
+T{
+.PN XtNlist
+T} T{
+Specifies the array of text strings that is to displayed in the List widget.
+If the default for XtNnumberStrings is used,
+the list must be null-terminated.
+If a value is not specified for the list,
+the number of strings is set to 1,
+and the name of the widget is used as the list.
+T}
+.sp 6p
+T{
+.PN XtNlongest
+T} T{
+Specifies the length of the longest string in the current list in pixels.
+If the client knows the length,
+it should specify it.
+The List widget will compute a default length by searching through the list.
+T}
+.sp 6p
+T{
+.PN XtNnumberStrings
+T} T{
+Specifies the number of strings in the current list.
+If a value is not specified,
+the list must be null-terminated.
+T}
+.sp 6p
+T{
+.PN XtNpasteBuffer
+T} T{
+If this is
+.PN True ,
+then the value of the string selected will be put
+into X cut buffer 0.
+T}
+.sp 6p
+T{
+.PN XtNsensitive
+T} T{
+If set to
+.PN False ,
+the List widget will change its window border to
+.PN XtNinsensitiveBorder
+and display all items in the list as stippled strings.
+While the List widget is insensitive,
+no item in the list can be selected or highlighted.
+T}
+.sp 6p
+T{
+.PN XtNverticalList
+T} T{
+If this is
+.PN True ,
+the elements in the list are arranged vertically; if
+.PN False ,
+the elements are arranged horizontally.
+T}
+.sp 6p
+T{
+.PN XtNwidth
+T} T{
+Specifies the width of the List widget.
+The default value is the minimum width that will contain
+the entire list with the spacing values specified.
+If the specified width is larger than the minimum,
+the list is put in the upper left corner.
+T}
+.TE
+.LP
+The List widget has three predefined actions: Set, Unset, and Notify.
+Set and Unset allow switching the foreground and background colors
+for the current list item.
+Notify allows processing application callbacks.
+.LP
+The following is the default translation table used by the List Widget:
+.LP
+.Ds
+.TA .5i 2.25i
+.ta .5i 2.25i
+<Btn1Down>,<Btn1Up>: Set(\|) Notify(\|)
+.De
+.LP
+.IN "List widget" "creating"
+.IN "Creating widgets" "List"
+To create a List widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN listWidgetClass .
+.LP
+.IN "List widget" "destroying"
+.IN "Destroying widgets" "list"
+To destroy a List widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID of the List widget.
+.LP
+The List widget supports two callback lists:
+.IP \(bu 5
+.PN XtNdestroyCallback
+.IP \(bu 5
+.PN XtNcallback
+.LP
+The notify action executes the callbacks on the the
+.PN XtNcallback
+list.
+.LP
+The call_data argument passed to callbacks on the
+.PN XtNcallback
+list is a pointer to an
+.PN XtListReturnStruct
+structure, defined in
+.Pn < X11/List.h >:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+.IN "XtListReturnStruct" "" "@DEF@"
+typedef struct _XtListReturnStruct {
+ String string; /* string shown in the list. */
+ int index; /* index of the item selected. */
+} XtListReturnStruct;
+.De
+.NH 3
+Changing the List
+.LP
+To change the list that is displayed, use
+.PN XtListChange .
+.IN "XtListChange" "" "@DEF@"
+.FD 0
+void XtListChange(\fIw\fP, \fIlist\fP, \fInitems\fP, \fIlongest\fP, \fIresize\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String * \fIlist\fP;
+.br
+ int \fInitems\fP, \fIlongest\fP;
+.br
+ Boolean \fIresize\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID.
+.IP \fIlist\fP 1i
+Specifies the new list for the list widget to display.
+.IP \fInitems\fP 1i
+Specifies the number of items in the list.
+If a value less than 1 is specified,
+list must be null terminated.
+.IP \fIlongest\fP 1i
+Specifies the length of the longest item in the list in pixels.
+If a value less than 1 is specified,
+the List widget calculates the value for you.
+.IP \fIresize\fP 1i
+Specifies a Boolean value that indicates whether the List widget should try
+to resize itself
+.Pn ( True )
+or not
+.Pn ( False )
+after making the change.
+Note that the constraints of the parent of this widget are always enforced,
+regardless of the value specified.
+.LP
+.PN XtListChange
+changes the list of strings that the List widget is to display.
+.NH 3
+Highlighting an Item
+.LP
+To highlight an item in the list use,
+.PN XtListHighlight
+.IN "XtListHighlight" "" "@DEF@"
+.FD 0
+void XtListHighlight(\fIw\fP, \fIitem\fP);
+.br
+ Widget \fIw\fP;
+.br
+ int \fIitem\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID.
+.IP \fIitem\fP 1i
+Specifies the index into the current list that indicates the item
+to be highlighted.
+.LP
+Only one item can be highlighted at a time.
+If an item is already highlighted when
+.PN XtListHighlight
+is called,
+the highlighted item is immediately unhighlighted and
+the new item is highlighted.
+.NH 3
+Unhighlighting an Item
+.LP
+To unhighlight the currently highlighted item in the list, use
+.PN XtListUnhighlight
+.IN "XtListUnhighlight" "" "@DEF@"
+.FD 0
+void XtListUnhightlight(\fIw\fP);
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID.
+.NH 3
+Retrieving the Currently Selected Item
+.LP
+To retrieve an item in the list use,
+.PN XtListShowCurrent
+.IN "XtListShowCurrent" "" "@DEF@"
+.FD 0
+XtListReturnStruct *XtListShowCurrent(\fIw\fP);
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID.
+.LP
+The
+.PN XtListShowCurrent
+function returns a pointer to an
+.PN XtListReturnStruct
+structure,
+contains the currently highlighted item.
+If the value of the index member is XT_LIST_NONE,
+.IN "XT_LIST_NONE"
+the string member is undefined,
+which indicates that no item is currently selected.
+.\"------------------------------------------------------------------------
+.NH 2
+Grip Widget
+.LP
+.XS
+\*(SN Grip Widget
+.XE
+.IN "Grip widget" "" "@DEF@"
+.LP
+The Grip widget provides a small region in which user input
+events
+(such as
+.PN ButtonPress or
+.PN ButtonRelease )
+may be handled.
+The most common use for the grip is as an attachment
+point for visually repositioning an object,
+such as the pane border in a VPaned widget.
+.LP
+The class variable for the Grip widget is
+.PN gripWidgetClass .
+.LP
+When creating a Grip widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 0 Width of the border in pixels
+XtNcallback XtCallbackList None Action routine
+XtNcursor Cursor None Cursor for the grip
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callback for
+.PN XtDestroyWidget
+T}
+XtNforeground Pixel XtDefaultForeground Window background color
+XtNheight Dimension 8 Height of the widget
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNsensitive Boolean True Whether widget should receive input
+XtNtranslations TranslationTable None Event-to-action translations
+XtNwidth Dimension 8 Width of the widget
+XtNx Position 0 x coordinate within parent
+XtNy Position 0 y coordinate within parent
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.LP
+Note that the Grip widget displays its region with the foreground pixel only.
+.LP
+The Grip widget does not declare any default event translation bindings,
+but it does declare a single action routine named GripAction
+in its action table.
+The client specifies an arbitrary
+event translation table giving parameters to the GripAction routine.
+.LP
+The
+.PN GripAction
+action executes the callbacks on the
+.PN XtNcallback
+list, passing as call_data a pointer to a
+.PN GripCallData
+structure, defined in
+.Pn < X11/Grip.h > :
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+.IN "GripCallData" "" "@DEF@"
+.IN "GripCallDataRec" "" "@DEF@"
+typedef struct _GripCallData {
+ XEvent *event;
+ String *params;
+ Cardinal num_params;
+} GripCallDataRec, *GripCallData;
+.De
+.LP
+In this structure, the event field is a pointer to the input
+event that triggered the action, and params and num_params give
+the string parameters specified in the translation table for the
+particular event binding.
+.IN "Grip widget" "GripAction table"
+.LP
+The following is an example of a GripAction translation table:
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+ <Btn1Down>: GripAction(press)
+ <Btn1Motion>: GripAction(move)
+ <Btn1Up>: GripAction(release)
+.De
+For a complete description of the format of action routines,
+see the \fI\*(xT\fP.
+.LP
+.IN "Grip widget" "creating"
+.IN "Creating widgets" "Grip"
+To create a Grip widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN gripWidgetClass .
+.LP
+.IN "Grip widget" "destroying"
+.IN "Destroying widgets" "Grip"
+To destroy a Command button widget instance, use
+.PN XtDestroyWidget
+and specify the ID of the Grip widget.
+.\"------------------------------------------------------------------------
+.NH 2
+Toggle Widget
+.LP
+.XS
+\*(SN Toggle Widget
+.XE
+.IN "Toggle widget" "" "@DEF@"
+
+The Toggle widget is a rectanglular button that contains a text label
+or pixmap. This widget maintains a Boolean state (e.g. True/False or
+On/Off) and changes state whenever it is selected. When the pointer
+cursor is on the Toggle it highlights to indicate that the Toggle is
+available for selection. When the pointer button is pressed the
+Toggle is selected. This causes the state of the Toggle to reverse
+and its callback routine to be invoked.
+.LP
+Toggle buttons may also be part of a radio group. A radio group is a
+list of Toggle buttons in which only one Toggle may be set at any
+time. A radio group is identified by giving the widget id of any one
+of its members. There is a convenience routine,
+.PN XtToggleGetCurrent
+that will return information about the Toggle in the radio group that is
+currently set. More information on radio groups is presented below.
+.LP
+The class variable for the Toggle widget is
+.PN toggleWidgetClass .
+.LP
+When creating a Toggle widget instance,
+the following resources are retrieved from the argument list
+or from the resource database:
+.IN "Toggle widget" "resources"
+.ps 9
+.nr PS 9
+.vs 11
+.nr VS 11
+.TS H
+lw(1.5i) lw(1i) lw(1i) lw(2i).
+_
+.sp 3p
+.TB
+Name Type Default Description
+.sp 3p
+_
+.TH
+.R
+.sp 3p
+XtNbackground Pixel XtDefaultBackground Window background color
+XtNbackgroundPixmap Pixmap None Window background pixmap
+T{
+XtNbitmap
+T} T{
+Pixmap
+T} T{
+None
+T} T{
+Pixmap to display in place of the label
+T}
+XtNborderColor Pixel XtDefaultForeground Window border color
+XtNborderPixmap Pixmap None Window border pixmap
+XtNborderWidth Dimension 1 Width of button border
+XtNcallback XtCallbackList NULL Callback for button select
+XtNcursor Cursor None Pointer cursor
+T{
+XtNdestroyCallback
+T} T{
+XtCallbackList
+T} T{
+NULL
+T} T{
+Callbacks for
+.PN XtDestroyWidget
+T}
+XtNfont XFontStruct* XtDefaultFont Label font
+XtNforeground Pixel XtDefaultForeground Foreground color
+XtNheight Dimension Text height Button height
+T{
+XtNhighlightThickness
+T} T{
+Dimension
+T} T{
+2
+T} T{
+Width of border to be highlighted
+T}
+XtNinsensitiveBorder Pixmap Gray Border when not sensitive
+T{
+XtNinternalHeight
+T} T{
+Dimension
+T} T{
+2
+T} T{
+Internal border height for highlighting
+T}
+T{
+XtNinternalWidth
+T} T{
+Dimension
+T} T{
+4
+T} T{
+Internal border width for highlighting
+T}
+XtNjustify XtJustify XtJustifyCenter Type of text alignment
+XtNlabel String Button name Button label
+T{
+XtNmappedWhenManaged
+T} T{
+Boolean
+T} T{
+True
+T} T{
+Whether
+.PN XtMapWidget
+is automatic
+T}
+XtNradioData Pointer Name of widget Value that will be returned by \fBXtToggleGetCurrent\fP
+XtNradioGroup Widget NULL Any other widget in the Toggle's radio group
+XtNresize Boolean True Whether to auto-resize in \fBSetValues\fP
+XtNsensitive Boolean True Whether widget receives input
+XtNstate Boolean Off State of the Toggle widget
+XtNtranslations TranslationTable see below Event-to-action translations
+XtNwidth Dimension Text width Button width
+XtNx Position 0 x coordinate
+XtNy Position 0 y coordinate
+.sp 3p
+_
+.TE
+.ps 11
+.nr PS 11
+.vs 13
+.nr VS 13
+.TS
+lw(1.7i) lw(4i).
+T{
+.PN XtNbitmap
+T} T{
+Specifies a bitmap to display in place of the text label
+[See the description of this resource in the Label widget for
+further details].
+T}
+.sp 6p
+T{
+.PN XtNcallback
+T} T{
+Specifies the callback list of functions to be called when the
+Toggle widget changes state. This usually occurs when the Toggle
+widget's notify action is called, but when a toggle is in a radio
+group it may change state at other times. The places where
+this can occur include:
+.PN XtToggleSetCurrent ,
+.PN XtToggleUnsetCurrent ,
+.PN XtToggleChangeRadioGroup ,
+the
+.PN set
+action,
+.PN XtSetValues,
+and
+.PN XtCreateWidget.
+T}
+.sp 6p
+T{
+.PN XtNheight
+T} T{
+Specifies the height of the Toggle widget.
+The default value is the minimum height that will contain:
+.br
+\fBXtNinternalheight\fP + height of \fBXtNlabel\fP + \fBXtNinternalHeight\fP
+.br
+If the specified height is larger than the minimum,
+the label string is centered vertically.
+T}
+.sp 6p
+T{
+.PN XtNinternalHeight
+T} T{
+Represents the distance in pixels between the top and bottom
+of the label text or bitmap and the horizontal edges of the Toggle widget.
+HighlightThickness can be larger or smaller than this value.
+T}
+.sp 6p
+T{
+.PN XtNinternalWidth
+T} T{
+Represents the distance in pixels between the ends of the label text
+or bitmap and the vertical edges of the Toggle widget.
+HighlightThickness can be larger or smaller than this value.
+T}
+.sp 6p
+T{
+.PN XtNjustify
+T} T{
+Specifies left, center, or right alignment of the label string
+within the Toggle widget.
+If it is specified within an
+.PN ArgList ,
+one of the values
+.PN XtJustifyLeft ,
+.PN XtJustifyCenter ,
+or
+.PN XtJustifyRight
+can be specified.
+In a resource of type ``string'',
+one of the values ``left'', ``center'', or ``right'' can be specified.
+T}
+.sp 6p
+T{
+.PN XtNlabel
+T} T{
+Specifies the text string that is to be displayed in the Toggle widget
+if no bitmap is specified.
+The default is the widget name of the Toggle widget.
+T}
+.sp 6p
+T{
+.PN XtNradioData
+T} T{
+Specifies the data that will be returned from a call to
+.PN XtToggleGetCurrent
+if this widget is the one that is set in a radio group. This data is
+also used to identify the toggle that will be set by a call to
+.PN XtToggleSetCurrent.
+The value NULL is returned by
+.PN XtToggleGetCurrent
+if no widget is set in a radio group. Programmers not
+specify NULL as \fBXtNradioData\fP, if they intend to use
+\fBXtToggleGetCurrent\fP
+T}
+.sp 6p
+T{
+.PN XtNradioGroup
+T} T{
+Specifies another Toggle widget which is in the radio group to which this
+Toggle widget should be added. A radio group is a group of Toggle widgets,
+only one of which may be "set" at a time. If this value is NULL (the default)
+then the Toggle will not be part of any radio group and can
+change state without effecting any other Toggle widgets. If the
+widget specified in this resource is not already in a radio group
+then a new radio group will be created containing these two
+Toggle widgets. No Toggle widget can be in multiple radio groups.
+T}
+.sp 6p
+T{
+.PN XtNresize
+T} T{
+Specifies whether the Toggle widget should attempt to resize to its
+preferred dimensions whenever
+.PN XtSetValues
+is called for it.
+The default is
+.PN True .
+T}
+.sp 6p
+T{
+.PN XtNsensitive
+T} T{
+If set to
+.PN False ,
+the Toggle widget will change its window border to
+.PN XtNinsensitiveBorder
+and will stipple the label string.
+T}
+.sp 6p
+T{
+.PN XtNstate
+T} T{
+Specifies whether the Toggle widget is set (True/On) or unset (False/Off).
+T}
+.sp 6p
+T{
+.PN XtNwidth
+T} T{
+Specifies the width of the Toggle widget.
+The default value is the minimum width that will contain:
+.br
+\fBXtNinternalwidth\fP + width of \fBXtNlabel\fP + \fBXtNinternalWidth\fP
+.br
+If the width is larger or smaller than the minimum,
+.PN XtNjustify
+determines how the label string is aligned.
+T}
+.TE
+.LP
+The Toggle widget supports the following actions:
+.IP \(bu 5
+Switching the button between the foreground and background
+colors with \fBset\fP, \fBunset\fP and \fBtoggle\fP
+.IP \(bu 5
+Processing application callbacks with \fBnotify\fP.
+.IP \(bu 5
+Switching the internal border between highlighted
+and unhighlighted states with \fBhighlight\fP and \fBunhighlight\fP
+.LE
+.LP
+The following are the default translation bindings that are used
+by the Toggle widget:
+.LP
+.Ds 0
+.TA .5i 2.25i
+.ta .5i 2.25i
+ <EnterWindow>: highlight(Always)
+ <LeaveWindow>: unhighlight(\|)
+ <Btn1Down>,<Btn1Up>: toggle(\|) notify(\|)
+.De
+.LP
+With these bindings, the user can cancel the action before
+releasing the button by moving the pointer out of the Toggle widget.
+.NH 3
+Toggle Actions
+.LP
+The full list of actions supported by the Toggle widget is:
+.IP \fBhighlight\fP(\fIvalue\fP) 1.5i
+Displays the internal highlight border in the color (\fBXtNforeground\fP
+or
+.PN XtNbackground )
+that contrasts with the interior color of the Toggle widget.
+This action procedure takes one of the following conditions: WhenUnset and
+Always. If no argument is passed then WhenUnset is assumed, this maintains
+backwards compatibility.
+.IP \fBunhighlight\fP(\|) 1.5i
+Displays the internal highlight border in the color (\fBXtNforeground\fP
+or
+.PN XtNbackground )
+that matches the interior color of the Toggle widget.
+.IP \fBset\fP(\|) 1.5i
+Enters the "set" state, in which \fBnotify\fP is possible and displays the
+interior of the button in the
+.PN XtNforeground
+color. The label is displayed
+in the
+.PN XtNbackground
+color. If the widget to be set is in a radio
+group then this procedure may unset another widget, which will
+cause all routines on its callback list to be invoked. Since only one
+toggle in a radio group may be set at a time the callback routines for
+the toggle that is to be unset will be called before the one that
+is to be set.
+.IP \fBunset\fP(\|) 1.5i
+Cancels the "set" state and displays the interior of the button in the
+.PN XtNbackground
+color. The label is displayed in the
+.PN XtNforeground
+color.
+.IP \fBtoggle\fP(\|) 1.5i
+Changes the current state of the Toggle widget, causing to be set
+if it was previously unset, and unset if it was previously set.
+If the widget is to be set, and is in a radio group then this procedure may
+unset another widget, which will cause all routines on its callback list
+to be invoked. Since only one toggle in a radio
+group may be set at a time the callback routines for the toggle that
+is to be unset will be called before the one that is to be set.
+.IP \fBreset\fP(\|) 1.5i
+Cancels any \fBset\fP or \fBhighlight\fP and displays the interior of the
+button in the
+.PN XtNbackground
+color, with the label displayed in the
+.PN XtNforeground
+color.
+.IP \fBnotify\fP(\|) 1.5i
+Executes the
+.PN XtNcallback
+callback list. The call_data contains a Boolean which is
+the current state of the widget.
+.LP
+.IN "Toggle widget" "creating"
+.IN "Creating widgets" "Toggle"
+To create a Toggle widget instance, use
+.PN XtCreateWidget
+and specify the class variable
+.PN toggleWidgetClass .
+.LP
+.IN "Toggle widget" "destroying"
+.IN "Destroying widgets" "toggle"
+To destroy a Toggle widget instance, use
+.PN XtDestroyWidget
+and specify the widget ID of the Toggle widget.
+.LP
+The Toggle widget supports two callbacks:
+.PN XtNdestroyCallback
+and
+.PN XtNcallback .
+The notify action executes the callbacks on the the
+.PN XtNcallback
+list.
+.SH
+Changing the Toggle's Radio Group.
+.LP
+To enable an application to change the Toggle's current radio group, add
+the Toggle to a radio group, or remove the Toggle from a radio group, use
+.PN XtToggleChangeRadioGroup.
+.IN ""XtToggleChangeRadioGroup"" "@DEF@"
+.sp 6p
+void XtToggleChangeRadioGroup(\fIw\fP, \fIradio_group\fP)
+.br
+ Widget \fIw\fP, \fIradio_group\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget ID of the Toggle widget.
+.IP \fIradio_group\fP 1i
+This should be any Toggle on the new radio group. If NULL then the Toggle
+will be removed from any radio group of which it is a member.
+.LP
+If a toggle is already in the set state in the new radio group,
+and the toggle to be added is also set then the previously set toggle in
+the new radio group is unset and its callback procedures are
+invoked.
+.SH
+Finding the Currently selected Toggle in a radio group of Toggles
+.LP
+To find the currently selected Toggle in a radio group of Toggle widgets
+use
+.PN XtToggleGetCurrent.
+.IN ""XtToggleGetCurrent"" "@DEF@"
+.sp 6p
+caddr_t XtToggleGetCurrent(\fIradio_group\fP);
+.br
+ Widget \fIradio_group\fP;
+.FN
+.IP \fIradio_group\fP 1i
+Specifies the widget ID of any Toggle in the radio group.
+.LP
+The value returned by this function is the data pointed to by
+.PN XtNradioData,
+for the Toggle in the radio group that is currently set. The default
+value for
+.PN XtNradioData
+is the name of that Toggle widget. If no Toggle
+is set in the radio group specified then NULL is returned.
+.SH
+Changing the Toggle that is set in a radio group.
+.LP
+To change the Toggle that is currently set in a radio group use
+.PN XtToggleSetCurrent.
+.IN ""XtToggleSetCurrent"" "@DEF@"
+.sp 6p
+void XtToggleSetCurrent(\fIradio_group\fP, \fIradio_data\fP);
+.br
+ Widget \fIradio_group\fP;
+ caddr_t \fIradio_data\fP;
+.FN
+.IP \fIradio_group\fP 1i
+Specifies the widget ID of any Toggle in the radio group.
+.IP \fIradio_data\fP 1i
+Specifies the
+.PN XtNradioData
+identifying the Toggle that should be set in the radio group specified
+by the \fIradio_group\fP argument.
+.LP
+
+\fBXtToggleSetCurrent\fP locates the Toggle widget to be set by
+matching \fIradio_data\fP against the \fBXtNradioData\fP for each
+Toggle in the radio group. If none match \fBXtToggleSetCurrent\fP
+returns without making any changes. If more than one Toggle matches,
+\fBXtToggleSetCurrent\fP will choose a Toggle to set arbitrarily. If
+this causes any Toggle widgets to change state all routines in their
+callback lists will be invoked. Since only one toggle in a radio
+group may be set at a time the callback routines for a Toggle that
+is to be unset will be called before the one that is to be set.
+
+.SH
+Unsetting all Toggles in a radio group.
+.LP
+To unset all Toggle widgets in a radio group use
+.PN XtToggleUnsetCurrent.
+.IN ""XtToggleUnsetCurrent"" "@DEF@"
+.sp 6p
+void XtToggleUnsetCurrent(\fIradio_group\fP);
+.br
+ Widget \fIradio_group\fP;
+.FN
+.IP \fIradio_group\fP 1i
+Specifies the widget ID of any Toggle in the radio group.
+.LP
+If this causes a Toggle widget to change state all routines on its
+callback list will be invoked.
+.\"------------------------------------------------------------------------
+.NH 2
+Template Widget - Creating A Custom Widget
+.LP
+.XS
+\*(SN Template Widget - Creating A Custom Widget
+.XE
+.IN "Template widget" "" "@DEF@"
+.LP
+Although the task of creating a new widget may at first appear a little
+daunting, there is a basic simple pattern that all widgets follow. The
+Athena widget library contains three files that are intended to assist
+in writing a custom widget.
+.LP
+Reasons for wishing to write a custom widget include:
+.IP \(bu 3
+Convenient access to resource management procedures to obtain fonts,
+colors, etc., even if user customization is not desired.
+.IP \(bu 3
+Convenient access to user input dispatch and translation management procedures.
+.IP \(bu 3
+Access to callback mechanism for building higher-level application libraries.
+.IP \(bu 3
+Customizing the interface or behavior of an existing widget to suit a
+special application need.
+.IP \(bu 3
+Desire to allow user customization of resources such as fonts, colors,
+etc., or to allow convenient re-binding of keys and buttons to internal
+functions.
+.IP \(bu 3
+Converting a non-Toolkit application to use the Toolkit.
+.LP
+In each of these cases, the operation needed to create a new widget is
+to "subclass" an existing one. If the desired semantics of the new
+widget are similar to an existing one, then the implementation of the
+existing widget should be examined to see how much work would be
+required to create a subclass that will then be
+able to share the existing class methods. Much time will be saved in
+writing the new widget if an existing widget class Expose, Resize and/or
+GeometryManager method can be shared by the subclass.
+.LP
+Note that some trivial uses of a ``bare-bones'' widget may be achieved by
+simply creating an instance of the Core
+widget. The class variable to use when creating a Core widget is
+.PN widgetClass .
+The geometry of the Core widget is determined entirely by the parent widget.
+.LP
+It is very often the case than an application will have a special need
+for a certain set of functions and that many copies of these functions
+will be needed. For example, when converting an older application to use
+the Toolkit, it may be desireable to have a "Window Widget" class that
+might have the following semantics:
+.IP \(bu 3
+Allocate 2 drawing colors in addition to a background color.
+.IP \(bu 3
+Allocate a text font.
+.IP \(bu 3
+Execute an application-supplied function to handle exposure events.
+.IP \(bu 3
+Execute an application-supplied function to handle user input events.
+.LP
+It is obvious that a completely general-purpose WindowWidgetClass could
+be constructed that would export all class methods as callbacks lists,
+but such a widget would be very large and would have to choose some
+arbitrary number of resources such as colors to allocate. An application
+that used many instances of the general-purpose widget would therefore
+un-necessarily waste many resources.
+.LP
+.sp
+In this section, an outline will be given of the procedure to follow to
+construct a special-purpose widget to address the items listed above.
+The reader should refer to the appropriate sections of the \fI\*(xT\fP
+for complete details of the material outlined here. Section 1.4 of
+the \fI\*(xI\fP should be read in conjunction with this section.
+.LP
+All Athena widgets have three separate files associated with them:
+.LP
+.IP \(bu 3
+A "public" header file containing declarations needed by
+applications programmers
+.IP \(bu 3
+A "private" header file containing additional declarations needed by the
+widget and any subclasses
+.IP \(bu 3
+A source code file containing the implementation of the widget
+.LP
+This separation of functions into three files is suggested for all
+widgets, but nothing in the Toolkit actually requires this format. In
+particular, a private widget created for a single application may easily
+combine the "public" and "private" header files into a single file, or
+merge the contents into another application header file. Similarly, the
+widget implementation can be merged into other application code.
+.LP
+.sp
+In the following example, the public header file
+.Pn < X11/Template.h >,
+the private header file
+.Pn < X11/TemplateP.h >
+and the source code file
+.Pn < X11/Template.c >
+will be modified to produce the "WindowWidget" described above.
+In each case, the files have been designed so that a global string
+replacement of ``Template'' and ``template''
+with the name of your new widget, using
+the appropriate case, can be done.
+.NH 3
+Public Header File
+.LP
+The public header file contains declarations that will be required by any
+application module that needs to refer to the widget; whether to create
+an instance of the class, to perform an
+.PN XtSetValues
+operation, or to call a public routine implemented by the widget class.
+.LP
+The contents of the Template public header file,
+.Pn < X11/Template.h >,
+are:
+.de CB
+.sp
+.ps 9
+.nr PS 9
+.vs 10
+.Ds 0
+.in +.25i
+.TA .25i 1.4i 2.4i 2.75i 3.5i
+.ta .25i 1.4i 2.4i 2.75i 3.5i
+..
+.de CE
+.De
+.\".in -.25i
+.ps 11
+.nr PS 11
+.vs 13
+..
+.CB
+.\".so ../../lib/Xaw/Template.h
+#include <X11/copyright.h>
+
+/* XConsortium: Template.h,v 1.2 88/10/25 17:22:09 swick Exp $ */
+/* Copyright (c) X Consortium 1987, 1988 */
+
+#ifndef _Template_h
+#define _Template_h
+
+/****************************************************************
+ *
+ * Template widget
+ *
+ ****************************************************************/
+
+/* Resources:
+
+ Name Class RepType Default Value
+ ---- ----- ------- -------------
+ background Background Pixel XtDefaultBackground
+ border BorderColor Pixel XtDefaultForeground
+ borderWidth BorderWidth Dimension 1
+ destroyCallback Callback Pointer NULL
+ height Height Dimension 0
+ mappedWhenManaged MappedWhenManaged Boolean True
+ sensitive Sensitive Boolean True
+ width Width Dimension 0
+ x Position Position 0
+ y Position Position 0
+
+*/
+
+/* define any special resource names here that are not in <X11/StringDefs.h> */
+
+#define XtNtemplateResource "templateResource"
+
+#define XtCTemplateResource "TemplateResource"
+
+/* declare specific TemplateWidget class and instance datatypes */
+
+typedef struct _TemplateClassRec* TemplateWidgetClass;
+typedef struct _TemplateRec* TemplateWidget;
+
+/* declare the class constant */
+
+extern WidgetClass templateWidgetClass;
+
+#endif _Template_h
+
+.CE
+.LP
+.sp
+You will notice that most of this file is documentation. The crucial
+parts are the last 8 lines where macros for any private resource names
+and classes are defined and where the widget class datatypes and class
+record pointer are declared.
+.LP
+For the "WindowWidget", we want 2 drawing colors, a callback list for
+user input and an
+\fBXtNexposeCallback\fP callback list, and we will declare three
+convenience procedures, so we need to add
+.LP
+.sp
+.CB
+/* Resources:
+ ...
+ callback Callback Callback NULL
+ drawingColor1 Color Pixel XtDefaultForeground
+ drawingColor2 Color Pixel XtDefaultForeground
+ exposeCallback Callback Callback NULL
+ font Font XFontStruct* XtDefaultFont
+ ...
+ */
+
+#define XtNdrawingColor1 "drawingColor1"
+#define XtNdrawingColor2 "drawingColor2"
+#define XtNexposeCallback "exposeCallback"
+
+extern Pixel WindowColor1(\|/* Widget */\|);
+extern Pixel WindowColor2(\|/* Widget */\|);
+extern Font\ \ WindowFont(\|/* Widget */\|);
+.CE
+.LP
+Note that we have chosen to call the input callback list by the generic
+name,
+.PN XtNcallback ,
+rather than a specific name. If widgets that define a single user-input
+action all choose the same resource name then there is greater possibility
+for an application to switch between widgets of different types.
+.NH 3
+Private Header File
+.LP
+The private header file contains the complete declaration of the class
+and instance structures for the widget and any additional private data
+that will be required by anticipated subclasses of the widget.
+Information in the private header file is normally hidden from the
+application and is designed to be accessed only through other public
+procedures; e.g.
+.PN XtSetValues .
+.LP
+The contents of the Template private header file,
+.Pn < X11/TemplateP.h >,
+are:
+.CB
+.\".so ../../lib/Xaw/TemplateP.h
+#include <X11/copyright.h>
+
+/* XConsortium: TemplateP.h,v 1.2 88/10/25 17:31:47 swick Exp $ */
+/* Copyright (c) X Consortium 1987, 1988 */
+
+#ifndef _TemplateP_h
+#define _TemplateP_h
+
+#include "Template.h"
+/* include superclass private header file */
+#include <X11/CoreP.h>
+
+/* define unique representation types not found in <X11/StringDefs.h> */
+
+#define XtRTemplateResource "TemplateResource"
+
+typedef struct {
+ int empty;
+} TemplateClassPart;
+
+typedef struct _TemplateClassRec {
+ CoreClassPart core_class;
+ TemplateClassPart template_class;
+} TemplateClassRec;
+
+extern TemplateClassRec templateClassRec;
+
+typedef struct {
+ /* resources */
+ char* resource;
+ /* private state */
+} TemplatePart;
+
+typedef struct _TemplateRec {
+ CorePart core;
+ TemplatePart template;
+} TemplateRec;
+
+#endif _TemplateP_h
+
+.CE
+.LP
+.sp
+The private header file includes the private header file of its
+superclass, thereby exposing the entire internal structure of the widget.
+It may not always be advantageous to do this; your own project
+development style will dictate the appropriate level of detail to expose
+in each module.
+.LP
+The "WindowWidget" needs to declare two fields in its instance structure to
+hold the drawing colors, a resource field for the font and a field for the
+expose and user input callback lists:
+.CB
+typedef struct {
+ /* resources */
+ Pixel color_1;
+ Pixel color_2;
+ XFontStruct* font;
+ XtCallbackList expose_callback;
+ XtCallbackList input_callback;
+ /* private state */
+ /* (none) */
+} WindowPart;
+.CE
+.NH 3
+Widget Source File
+.LP
+The source code file implements the widget class itself. The unique
+part of this file is the declaration and initialization of the
+widget class record structure and the declaration of all resources and
+action routines added by the widget class.
+.LP
+The contents of the Template implementation file,
+.Pn < X11/Template.c >,
+are:
+.CB
+.\".so ../../lib/Xaw/Template.c
+#include <X11/copyright.h>
+
+/* XConsortium: Template.c,v 1.2 88/10/25 17:40:25 swick Exp $ */
+/* Copyright (c) X Consortium 1987, 1988 */
+
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+#include "TemplateP.h"
+
+static XtResource resources[] = {
+#define offset(field) XtOffset(TemplateWidget, template.field)
+ /* {name, class, type, size, offset, default_type, default_addr}, */
+ { XtNtemplateResource, XtCTemplateResource, XtRTemplateResource, sizeof(char*),
+ offset(resource), XtRString, "default" },
+#undef offset
+};
+
+static void TemplateAction(/* Widget, XEvent*, String*, Cardinal* */);
+
+static XtActionsRec actions[] =
+{
+ /* {name, procedure}, */
+ {"template", TemplateAction},
+};
+
+static char translations[] =
+" <Key>: template(\|) \\n\\
+";
+
+TemplateClassRec templateClassRec = {
+ { /* core fields */
+ /* superclass */ (WidgetClass) &widgetClassRec,
+ /* class_name */ "Template",
+ /* widget_size */ sizeof(TemplateRec),
+ /* class_initialize */ NULL,
+ /* class_part_initialize */ NULL,
+ /* class_inited */ FALSE,
+ /* initialize */ NULL,
+ /* initialize_hook */ NULL,
+ /* realize */ XtInheritRealize,
+ /* actions */ actions,
+ /* num_actions */ XtNumber(actions),
+ /* resources */ resources,
+ /* num_resources */ XtNumber(resources),
+ /* xrm_class */ NULLQUARK,
+ /* compress_motion */ TRUE,
+ /* compress_exposure */ TRUE,
+ /* compress_enterleave */ TRUE,
+ /* visible_interest */ FALSE,
+ /* destroy */ NULL,
+ /* resize */ NULL,
+ /* expose */ NULL,
+ /* set_values */ NULL,
+ /* set_values_hook */ NULL,
+ /* set_values_almost */ XtInheritSetValuesAlmost,
+ /* get_values_hook */ NULL,
+ /* accept_focus */ NULL,
+ /* version */ XtVersion,
+ /* callback_private */ NULL,
+ /* tm_table */ translations,
+ /* query_geometry */ XtInheritQueryGeometry,
+ /* display_accelerator */ XtInheritDisplayAccelerator,
+ /* extension */ NULL
+ },
+ { /* template fields */
+ /* empty */ 0
+ }
+};
+
+WidgetClass templateWidgetClass = (WidgetClass)&templateClassRec;
+
+.CE
+The resource list for the "WindowWidget" might look like the following:
+.CB
+static XtResource resources[] = {
+#define offset(field) XtOffset(WindowWidget, window.field)
+ /* {name, class, type, size, offset, default_type, default_addr}, */
+ { XtNdrawingColor1, XtCColor, XtRPixel, sizeof(Pixel),
+ offset(color_1), XtRString, XtDefaultForeground },
+ { XtNdrawingColor2, XtCColor, XtRPixel, sizeof(Pixel),
+ offset(color_2), XtRString, XtDefaultForeground },
+ { XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct*),
+ offset(font), XtRString, XtDefaultFont },
+ { XtNexposeCallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
+ offset(expose_callback), XtRCallback, NULL },
+ { XtNcallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
+ offset(input_callback), XtRCallback, NULL },
+#undef offset
+};
+.CE
+.LP
+The user input callback will be implemented by an action procedure which
+passes the event pointer as call_data. The action procedure
+is declared as:
+.CB
+/* ARGSUSED */
+static void InputAction(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+ String *params; /* unused */
+ Cardinal *num_params; /* unused */
+{
+ XtCallCallbacks(w, XtNcallback, (caddr_t)event);
+}
+
+static XtActionsRec actions[] =
+{
+ /* {name, procedure}, */
+ {"input", InputAction},
+};
+.CE
+.LP
+and the default input binding will be to execute the input callbacks on
+.PN KeyPress
+and
+.PN ButtonPress :
+.LP
+.CB
+static char translations[] =
+" <Key>: input(\|) \\n\\
+ <BtnDown>: input(\|) \\
+";
+.CE
+.LP
+In the class record declaration and initialization, the only field that
+is different from the Template is the expose procedure:
+.CB
+/* ARGSUSED */
+static void Redisplay(w, event, region)
+ Widget w;
+ XEvent *event; /* unused */
+ Region region;
+{
+ XtCallCallbacks(w, XtNexposeCallback, (caddr_t)region);
+}
+
+WindowClassRec windowClassRec = {
+
+ ...
+
+ /* expose */ Redisplay,
+.CE
+.LP
+.sp
+The "WindowWidget" will also declare three public procedures to return the
+drawing colors and the font id, saving the application the effort of
+constructing an argument list for a call to
+.PN XtGetValues :
+.LP
+.CB
+Pixel WindowColor1(w)
+ Widget w;
+{
+ return ((WindowWidget)w)->window.color_1;
+}
+
+Pixel WindowColor2(w)
+ Widget w;
+{
+ return ((WindowWidget)w)->window.color_2;
+}
+
+Font WindowFont(w)
+ Widget w;
+{
+ return ((WindowWidget)w)->window.font->fid;
+}
+.CE
+.LP
+The "WindowWidget" is now complete. The application can retrieve the two
+drawing colors from the widget instance by calling either
+.PN XtGetValues ,
+or the \fBWindowColor\fP functions. The actual window created for the
+"WindowWidget" is available by calling the
+.PN XtWindow
+function.
+.LP
+To test the new ``WindowWidget'', you may substitute ``window'' for
+``command'' in the sample program given in Section 2.7.3.
+.TC
diff --git a/specs/Xaw/block.awk b/specs/Xaw/block.awk
new file mode 100644
index 0000000..0dd75f3
--- /dev/null
+++ b/specs/Xaw/block.awk
@@ -0,0 +1,22 @@
+BEGIN {
+ firstchar = "@";
+ a["a"] = "A"; a["b"] = "B"; a["c"] = "C";
+ a["d"] = "D"; a["e"] = "E"; a["f"] = "F";
+ a["g"] = "G"; a["h"] = "H"; a["i"] = "I";
+ a["j"] = "J"; a["k"] = "K"; a["l"] = "L";
+ a["m"] = "M"; a["n"] = "N"; a["o"] = "O";
+ a["p"] = "P"; a["q"] = "Q"; a["r"] = "R";
+ a["s"] = "S"; a["t"] = "T"; a["u"] = "U";
+ a["v"] = "V"; a["w"] = "W"; a["x"] = "X";
+ a["y"] = "Y"; a["z"] = "Z";
+}
+
+{
+ c = substr($2,2,1);
+ if (c >= "a" && c <= "z")
+ c = a[c];
+ if (c != firstchar)
+ printf(".LB %s\n", c);
+ firstchar = c;
+ print;
+}
diff --git a/specs/Xaw/fixindex.awk b/specs/Xaw/fixindex.awk
new file mode 100644
index 0000000..e8849f3
--- /dev/null
+++ b/specs/Xaw/fixindex.awk
@@ -0,0 +1,73 @@
+BEGIN {
+ FS = ":";
+ BD = "\\s+1\\fB";
+ ED = "\\fP\\s-1";
+}
+
+NR == 1 {
+ if ($3 != "")
+ printf(".Ib \"%s\"\n", $2);
+ major = $2;
+ minor = $3;
+ if ($4 == "@DEF@") {
+ pagelist = BD $1 ED;
+ }
+ else {
+ pagelist = $1;
+ }
+ pageno = $1;
+ oldpageno = $1;
+ oldpagelist = "";
+}
+
+NR != 1 {
+ if ($2 == major && $3 == minor) # neither has changed
+ {
+ if ($1 != pageno) { # new page number, append
+ oldpageno = $1;
+ oldpagelist = pagelist;
+ if ($4 == "@DEF@") {
+ pagelist = pagelist ", " BD $1 ED;
+ }
+ else {
+ pagelist = pagelist ", " $1;
+ }
+ }
+ else { # old page, but check for def
+ if ($4 == "@DEF@") {
+ if (pageno == oldpageno) {
+ if (oldpagelist != "")
+ oldpagelist = oldpagelist ", "
+ }
+ pagelist = oldpagelist BD $1 ED;
+ }
+ }
+ }
+ else # one has changed
+ {
+ if (minor != "") # dump full record
+ printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
+ else
+ printf(".I> \"%s\" \"%s\"\n", major, pagelist);
+ if ($4 == "@DEF@") { # restart pagelist
+ pagelist = BD $1 ED;
+ }
+ else {
+ pagelist = $1;
+ }
+ oldpagelist = "";
+ oldpageno = $1;
+ if ($2 != major && $3 != "") # major has changed, minor not null
+ printf(".Ib \"%s\"\n", $2);
+ }
+ major = $2;
+ minor = $3;
+ pageno = $1;
+}
+
+END {
+ if (minor != "") # dump full record
+ printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
+ else
+ printf(".I> \"%s\" \"%s\"\n", major, pagelist);
+}
diff --git a/specs/Xaw/strings.mit b/specs/Xaw/strings.mit
new file mode 100644
index 0000000..e8a339b
--- /dev/null
+++ b/specs/Xaw/strings.mit
@@ -0,0 +1,10 @@
+.\" $Xorg: strings.mit,v 1.3 2000/08/17 19:42:29 cpqbld Exp $
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \(em C Language Interface
+.ds xI Intrinsics
+.ds xW Athena Widget Set \(em C Language Interface
+.ds xL Xlib \(em C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 4
+.ds Vn 2.2
+.hw XtMake-Geometry-Request XtQuery-Geometry wid-get sub-class sub-classes
diff --git a/specs/Xaw/strings.xaw b/specs/Xaw/strings.xaw
new file mode 100644
index 0000000..802bf7c
--- /dev/null
+++ b/specs/Xaw/strings.xaw
@@ -0,0 +1,714 @@
+.\" $Xorg: strings.xaw,v 1.3 2000/08/17 19:42:29 cpqbld Exp $
+\" These macros are not associated with any widget.
+
+.de Rs \" Resource Conversion message
+A converter is registered for this resource that will convert
+the following strings: \fB\\$1\fP.
+..
+.de Sk \" This is a resource of the associated sink.
+.if 'AsciiText'\\$1' This is a resource of the associated sink.
+..
+.de So \" This is a resource of the associated source.
+.if 'AsciiText'\\$1' This is a resource of the associated source.
+..
+
+\" Object Resources
+.de Dc \" Object destroyCallback
+.IP destroyCallback 1.5i
+All functions on this list are called when this widget is destroyed.
+..
+
+\" RectObj Resources
+.de As \" RectObj ancestorSensitive
+.IP ancestorSensitive 1.5i
+The sensitivity state of the ancestors of this widget. A widget is
+insensitive if either it or any of its ancestors is insensitive.
+This resource should not be changed with \fBXtSetValues\fP, although it
+may be queried.
+..
+.de Bw \" RectObj borderWidth
+.IP borderWidth 1.5i
+The width of this widget's window border.
+..
+.de Hw \" RectObj height and width
+.IP height 1.5i
+.br
+.ns
+.IP width 1.5i
+The height and width of this widget in pixels.
+..
+.de Se \" RectObj sensitive
+.IP sensitive 1.5i
+Whether or not the toolkit should pass user events to this widget. The
+widget will not get input events if either \fBancestorSensitive\fP or
+\fBsensitive\fP is \fBFalse\fP.
+..
+.de Xy \" RectObj x and y
+.IP x 1.5i
+.br
+.ns
+.IP y 1.5i
+The location of the upper left outside corner of this widget in its parent.
+..
+
+\" Core Resources
+
+.de Ac \" Core accelerators
+.IP accelerators 1.5i
+A list of event to action bindings to be executed by this widget, even
+though the event occurred in another widget. (See the \fI\*(xT\fP for
+details).
+..
+.de Bg \" Core background
+.ie 'Bold'\\$1' .IP \fBbackground\fP 1.5i
+.el .IP background 1.5i
+A pixel value which indexes the widget's colormap to derive the
+background color of the widget's window.
+..
+.de Gp \" Core backgroundPixmap
+.IP backgroundPixmap 1.5i
+The background pixmap of this widget's window. If this resource is set to
+anything other than \fBXtUnspecifiedPixmap\fP, the pixmap specified will be
+used instead of the background color.
+..
+.de Bc \" Core borderColor
+.IP borderColor 1.5i
+A pixel value which indexes the widget's colormap to derive the border
+color of the widget's window.
+..
+.de Bp \" Core borderPixmap
+.IP borderPixmap 1.5i
+The border pixmap of this widget's window. If this resource is set to
+anything other than \fBXtUnspecifiedPixmap\fP, the pixmap specified will be
+used instead of the border color.
+..
+.de Cm \" Core colormap
+.IP colormap 1.5i
+The colormap that this widget will use.
+..
+.de Dp \" Core depth
+.IP depth 1.5i
+The depth of this widget's window.
+..
+.de Mm \" Core mappedWhenManaged
+.IP mappedWhenManaged 1.5i
+If this resource is \fBTrue\fP, then the widget's window will
+automatically be mapped by the Toolkit when it is realized and managed.
+..
+.de Sc \" Core screen
+.IP screen 1.5i
+The screen on which this widget is displayed. This is not a settable
+resource.
+..
+.de Tr \" Core translations
+.IP translations 1.5i
+The event bindings associated with this widget.
+..
+
+\" Simple Widget Resource Definitions
+
+.de Cu \" Simple cursor
+.ie 'Bold'\\$1' .IP \fBcursor\fP 1.5i
+.el .IP cursor 1.5i
+The image that will be displayed as the pointer cursor whenever it is in
+this widget. The use of this resource is deprecated in favor
+of \fBcursorName\fP.
+..
+.de Cn \" Simple cursorName
+.ie 'Bold'\\$1' .IP \fBcursorName\fP 1.5i
+.el .IP cursorName 1.5i
+The name of the symbol to use to represent the pointer cursor. This resource
+will override the \fBcursor\fP resource if both are specified. (See 2.4.1)
+..
+.de Ib \" Simple insensitiveBorder
+.ie 'Bold'\\$1' .IP \fBinsensitiveBorder\fP 1.5i
+.el .IP insensitiveBorder 1.5i
+This pixmap will be tiled into the widget's border if the widget becomes
+insensitive.
+..
+.de In \" Simple international
+.ie 'Bold'\\$1' .IP \fBinternational\fP 1.5i
+.el .IP international 1.5i
+This is a boolean flag, only settable at widget creation
+time. A value of \fBfalse\fP signals the widget to use
+pre-R6 internationalization (specifically, the lack thereof),
+such as using fonts for displaying text, etc. A value of
+\fBtrue\fP directs the widget to act in an internationalized
+manner, such as utilizing font sets for displaying text, etc.
+..
+.de Ix \" Simple international
+.ie 'Bold'\\$1' .IP \fBinternational\fP 1.5i
+.el .IP international 1.5i
+This is a boolean flag, only settable at widget creation
+time. While not utilized in this widget, it can and should
+be checked by any subclasses that have behavior that
+should vary with locale.
+..
+.de Pf \" Simple pointerColor
+.ie 'Bold'\\$1' .IP \fBpointerColor\fP 1.5i
+.el .IP pointerColor 1.5i
+A pixel value which indexes the widget's colormap to derive the foreground
+color of the pointer symbol specified by the \fBcursorName\fP resource.
+..
+.de Pb \" Simple pointerColorBackground
+.ie 'Bold'\\$1' .IP \fBpointerColorBackground\fP 1.75i
+.el .IP pointerColorBackground 1.75i
+A pixel value which indexes the widget's colormap to derive the background
+color of the pointer symbol specified by the \fBcursorName\fP resource.
+..
+
+\" Label Widget Resource Definitions
+
+.de Bm \" Label bitmap
+.ie 'Bold'\\$1' .IP \fBbitmap\fP 1.5i
+.el .IP bitmap 1.5i
+A bitmap to display instead of the \fBlabel\fP. The default size of the
+widget will be just large enough to contain the bitmap and the widget's
+internal width and height. The resource converter for this resource
+constructs bitmaps from the contents of files. (See \fBConverting
+Bitmaps\fP for details.) If this bitmap is one bit deep then the 1's
+will be rendered in the foreground color, and the 0's in the background
+color. If \fBbitmap\fP has a depth greater than one, it is copied
+directly into the window.
+..
+.de Le \" Label encoding
+.ie 'Bold'\\$1' .IP \fBencoding\fP 1.5i
+.el .IP encoding 1.5i
+The encoding method used by the value of the \fBlabel\fP resource.
+The value may be \fBXawTextEncoding8bit\fP or \fBXawTextEncodingChar2b\fP.
+When \fBinternational\fP is set to \fBtrue\fP this resource is not used.
+..
+.de Lf \" Label font
+.ie 'Bold'\\$1' .IP \fBfont\fP 1.5i
+.el .IP font 1.5i
+The text font to use when displaying the \fBlabel\fP, when the
+\fBinternational\fP resource is \fBfalse\fP.
+..
+.de Ls \" Label fontSet
+.ie 'Bold'\\$1' .IP \fBfontSet\fP 1.5i
+.el .IP fontSet 1.5i
+The text font set to use when displaying the \fBlabel\fP, when the
+\fBinternational\fP resource is \fBtrue\fP.
+..
+.de Lg \" Label foreground
+.ie 'Bold'\\$1' .IP \fBforeground\fP 1.5i
+.el .IP foreground 1.5i
+A pixel value which indexes the widget's colormap to derive the
+foreground color of the widget's window. This color is also
+used to render all 1's in a \fBbitmap\fP one plane deep.
+..
+.de Ih \" Label internalHeight
+.ie 'Bold'\\$1' .IP \fBinternalHeight\fP 1.5i
+.el .IP internalHeight 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBinternalWidth\fP 1.5i
+.el .IP internalWidth 1.5i
+The minimum amount of space to leave between the graphic
+and the vertical and horizontal edges of the window.
+..
+.de Ju \" Label justify
+.ie 'Bold'\\$1' .IP \fBjustify\fP 1.5i
+.el .IP justify 1.5i
+.IN "conversions" "Justify"
+Specifies left, center, or right alignment of graphic within the
+widget. This resource may be specified with the values
+\fBXtJustifyLeft\fP, \fBXtJustifyCenter\fP, or \fBXtJustifyRight\fP.
+.Rs "left, right, \fPand\fB center".
+This resource only has noticeable effect when the width of the widget
+is larger than necessary to display the graphic. Note that when the
+graphic is a multi-line \fBlabel\fP, the longest line will obey this
+justification while shorter lines will be left-justified with the longest
+one.
+
+..
+.de La \" Label label
+.ie 'Bold'\\$1' .IP \fBlabel\fP 1.5i
+.el .IP label 1.5i
+Specifies the text string to be displayed in the widget's window
+if no bitmap is specified. The default is the name of this widget.
+Irregardless of the value of \fBencoding\fP or \fBinternational\fP,
+a single newline character (1 byte) will cause a line break.
+..
+.de Ll \" Label leftBitmap
+.ie 'Bold'\\$1' .IP \fBleftBitmap\fP 1.5i
+.el .IP leftBitmap 1.5i
+Specifies a bitmap to display to the left of the graphic in the widget's
+window.
+..
+.de Re \" Label resize
+.ie 'Bold'\\$1' .IP \fBresize\fP 1.5i
+.el .IP resize 1.5i
+Specifies whether the widget should attempt to resize to its
+preferred dimensions whenever its resources are modified with
+\fBXtSetValues\fP. This attempt to resize may be denied by the parent
+of this widget. The parent is always free to resize the widget
+regardless of the state of this resource.
+..
+
+\" Command Widget Resource Definitions
+
+.de Cb \" Command callback
+.ie 'Bold'\\$1' .IP \fBcallback\fP 1.5i
+.el .IP callback 1.5i
+A list of routines to be called when the \fBnotify\fP action is invoked.
+..
+.de Cr \" Command cornerRoundPercent
+.ie 'Bold'\\$1' .IP \fBcornerRoundPercent\fP 1.5i
+.el .IP cornerRoundPercent 1.5i
+When a \fBShapeStyle\fP of \fBroundedRectangle\fP is used, this
+resource controls the radius of the rounded corner. The radius of the
+rounded corners is specified as a percentage of the length of the
+shortest side of the widget.
+..
+.de Ht \" Command highlightThickness
+.ie 'Bold'\\$1' .IP \fBhighlightThickness\fP 1.5i
+.el .IP highlightThickness 1.5i
+The thickness of the rectangle that is used to highlight the internal
+border of this widget, alerting the user that it is ready to be
+selected. The default value is 2 pixels if the \fBshapeStyle\fP is
+\fBrectangle\fP, and 0 Pixels (no highlighting) otherwise.
+..
+.de Ss \" Command shapeStyle
+.ie 'Bold'\\$1' .IP \fBshapeStyle\fP 1.5i
+.el .IP shapeStyle 1.5i
+.IN "conversions" "ShapeStyle"
+Nonrectangular widgets may be created using this resource.
+Nonrectangular widgets are supported only on a server that supports the
+\fBShape Extension\fP. If nonrectangular widgets are specified
+for a server lacking this extension, the shape is ignored and the
+widgets will be rectangular. The following shapes are currently
+supported: \fBXmuShapeRectangle\fP, \fBXmuShapeOval\fP,
+\fBXmuShapeEllipse\fP, and \fBXmuShapeRoundedRectangle\fP.
+.Rs "rectangle, oval, ellipse, \fPand\fP roundedRectangle"
+..
+
+\" Composite Resources
+
+.de Ch \" Composite children
+.IP children 1.5i
+A list of all this composite widget's current children.
+..
+.de Ip \" Composite insertPosition
+.IP insertPosition 1.5i
+A function which allows the application programmer to specify the position
+of a new child.
+..
+.de Nc \" Composite numChildren
+.IP numChildren 1.5i
+The number of children in this composite widget.
+..
+
+\" Form Resources
+
+.de Dd \" Form defaultDistance
+.ie 'Bold'\\$1' .IP \fBdefaultDistance\fP 1.5i
+.el .IP defaultDistance 1.5i
+The default internal spacing for the children. This is
+the default value for the constraint resources \fBhorizDistance\fP and
+\fBvertDistance\fP.
+..
+
+\" Form Constraints
+
+.de Bt \" Form bottom, left, right, and top
+.ie 'Bold'\\$1' .IP \fBbottom\fP 1.5i
+.el .IP bottom 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBleft\fP 1.5i
+.el .IP left 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBright\fP 1.5i
+.el .IP right 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBtop\fP 1.5i
+.el .IP top 1.5i
+What to do with this edge of the child when the parent is resized. This
+resource may be any \fBedgeType\fP. See \fBLayout Semantics\fP for
+details.
+..
+.de Fh \" Form fromHoriz and fromVert
+.ie 'Bold'\\$1' .IP \fBfromHoriz\fP 1.5i
+.el .IP fromHoriz 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBfromVert\fP 1.5i
+.el .IP fromVert 1.5i
+Which widget this child should be placed underneath (or to the right
+of). If a value of NULL is specified then this widget will be positioned
+relative to the edge of the parent.
+..
+.de Hd \" Form horizDistance and vertDistance
+.ie 'Bold'\\$1' .IP \fBhorizDistance\fP 1.5i
+.el .IP horizDistance 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBvertDistance\fP 1.5i
+.el .IP vertDistance 1.5i
+The amount of space, in pixels, between this child and its left or
+upper neighbor.
+..
+.de Rl \" Form resizable
+.ie 'Bold'\\$1' .IP \fBresizable\fP 1.5i
+.el .IP resizable 1.5i
+If this resource is \fBFalse\fP then the parent widget will ignore all
+geometry request made by this child. The parent may still resize this
+child itself, however.
+..
+
+.de Lt \" Form Section on Layout semantics
+The \\$1 widget uses two different sets of layout semantics. One is
+used when initially laying out the children. The other is used when
+the \\$1 is resized.
+.LP
+The first layout method uses the \fBfromVert\fP and \fPfromHoriz\fP
+.IN "fromVert" "
+.IN "fromHoriz" ""
+resources to place the children of the \\$1. A single pass is made
+through the \\$1 widget's children in the order that they were created.
+Each child is then placed in the \\$1 widget below or to the right of
+the widget specified by the \fBfromVert\fP and \fBfromHoriz\fP resources.
+The distance the new child is placed from its left or upper neighbor is
+determined by the \fBhorizDistance\fP and \fBvertDistance\fP resources.
+.IN "horizDistance" ""
+.IN "vertDistance" ""
+.IN "conversions" "Widget"
+This implies some things about how the order of creation affects the
+possible placement of the children. The Form widget registers a
+string to widget converter which does not postpone conversion and
+does not cache conversion results.
+.LP
+The second layout method is used when the \\$1 is resized. It does not
+matter what causes this resize, and it is possible for a resize to
+happen before the widget becomes visible (due to constraints imposed by
+the parent of the \\$1). This layout method uses the \fBbottom\fP,
+\fBtop\fP, \fBleft\fP, and \fBright\fP resources. These resources are
+used to determine what will happen to each edge of the child when the
+\\$1 is resized. If a value of \fBXawChain\fP\fI<something>\fP is
+.IN "XawChain" ""
+specified, the the edge of the child will remain a fixed distance from
+the \fIchain\fP edge of the \\$1. For example if \fBXawChainLeft\fP is
+specified for the \fBright\fP resource of a child then the right edge of
+that child will remain a fixed distance from the left edge of the \\$1
+widget. If a value of \fBXawRubber\fP is specified, that edge will grow
+.IN "XawRubber" ""
+by the same percentage that the \\$1 grew. For instance if the \\$1
+grows by 50% the left edge of the child (if specified as \fBXawRubber\fP
+will be 50% farther from the left edge of the \\$1). One must be very
+careful when specifying these resources, for when they are specified
+incorrectly children may overlap or completely occlude other children
+when the \\$1 widget is resized.
+..
+
+\" Text Resources
+
+.de Af \" Text autoFill
+.ie 'Bold'\\$1' .IP \fBautoFill\fP 1.5i
+.el .IP autoFill 1.5i
+If this resource is \fBTrue\fP the text widget will automatically break a line
+when the user attempts to type into the right margin. The attribute has
+no effect on files or text inserted into the text widget. It only
+checks to see if the action should be taken when a user enters a new
+character via the \fIinsert-character\fP action.
+..
+.de Tm \" Text margin resources
+.ie 'Bold'\\$1' .IP \fBbottomMargin\fP 1.5i
+.el .IP bottomMargin 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBleftMargin\fP 1.5i
+.el .IP leftMargin 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBrightMargin\fP 1.5i
+.el .IP rightMargin 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBtopMargin\fP 1.5i
+.el .IP topMargin 1.5i
+The amount of space, in pixels, between the edge of the window
+and the corresponding edge of the text within the window. If there is
+a scrollbar active on this edge, then this is the space between the text and
+the scrollbar.
+..
+.de Tc \" Text displayCaret
+.ie 'Bold'\\$1' .IP \fBdisplayCaret\fP 1.5i
+.el .IP displayCaret 1.5i
+Whether or not to display the text insert point.
+..
+.de Td \" Text displayPosition
+.ie 'Bold'\\$1' .IP \fBdisplayPosition\fP 1.5i
+.el .IP displayPosition 1.5i
+The position in the text buffer of the character that is currently
+displayed in the upper left hand corner of the text display.
+..
+.de Ti \" Text insertPosition
+.ie 'Bold'\\$1' .IP \fBinsertPosition\fP 1.5i
+.el .IP insertPosition 1.5i
+This is the location of the insert point. It is expressed in
+characters from the beginning of the file. The cursor will always be
+forced to be on the screen. This resource may therefore be used to
+scroll the text display to a certain character position.
+..
+.de Tz \" Text resize
+.ie 'Bold'\\$1' .IP \fBresize\fP 1.5i
+.el .IP resize 1.5i
+.IN "conversions" "XawTextResizeMode"
+Controls whether or not the Text widget attempts to resize itself when
+it is no longer able to display the full text buffer in the associated
+window. Any attempt by the Text widget to resize itself is always
+subject to the constraints imposed by its parent. The values
+\fBXawtextResizeNever\fP, \fBXawtextResizeWidth\fP,
+.IN "XawtextResizeNever" ""
+.IN "XawtextResizeWidth" ""
+\fBXawtextResizeHeight\fP, and \fBXawtextResizeBoth\fP are all
+.IN "XawtextResizeHeight" ""
+.IN "XawtextResizeBoth" ""
+acceptable for this resource.
+.Rs "never, height, width, \fPand\fB both"
+..
+.de Ts \" Text scrollHorizontal and scrollVertical
+.ie 'Bold'\\$1' .IP \fBscrollHorizontal\fP 1.5i
+.el .IP scrollHorizontal 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBscrollVertical\fP 1.5i
+.el .IP scrollVertical 1.5i
+.IN "conversions" "XawTextScrollMode"
+These resources control the placement of scrollbars on the left and
+bottom edge of the text widget. These resources accept the
+values \fBXawtextScrollAlways\fP, \fBXawtextScrollWhenNeeded\fP, and
+.IN "XawtextScrollAlways" ""
+.IN "XawtextScrollWhenNeeded" ""
+\fBXawtextScrollNever\fP.
+.IN "XawtextScrollNever" ""
+.Rs "always, never, \fPand\fB whenNeeded"
+If \fBXawtextScrollWhenNeeded\fP is specified, the appropriate scrollbar
+will only appear when there is text in the buffer that is not able to
+fit within the bounds of the current window. The scrollbar will
+disappear when the text once again fits within the window.
+..
+.de St \" Text selectTypes
+.ie 'Bold'\\$1' .IP \fBselectTypes\fP 1.5i
+.el .IP selectTypes 1.5i
+Specifies the selection type array that is used when
+multi-click is activated (see \fBText Selections for Application
+Programmers\fP for details). This resource is used in place, and must
+not be freed until the widget is destroyed. There is no
+type converter registered for this resource, so it may not be set from
+the resource manager.
+..
+.de To \" Text Source and Sink Objects
+.ie 'Bold'\\$1' .IP \fBtextSink\fP 1.5i
+.el .IP textSink 1.5i
+.br
+.ns
+.ie 'Bold'\\$1' .IP \fBtextSource\fP 1.5i
+.el .IP textSource 1.5i
+These are the TextSink or TextSource objects used by this widget.
+.ie 'Bold'\\$1' When using the Text widget these MUST be set by the \
+application programmer.
+.el \{\
+When \fBinternational\fP is set to \fBtrue\fP
+the AsciiText widget initializes these resources to point
+to an MultiSink and MultiSrc respectively.
+When \fBinternational\fP is set to \fBfalse\fP
+the AsciiText widget initializes these resources to point
+to an AsciiSink and AsciiSrc respectively.
+.\}
+..
+.de Tw \" Text wrap
+.ie 'Bold'\\$1' .IP \fBwrap\fP 1.5i
+.el .IP wrap 1.5i
+When the text in any one line is wider than the window there are several
+possible actions. This resource allows the user to decide what will
+happen. The accepted values for this resource are
+\fBXawtextWrapNever\fP, \fBXawtextWrapLine\fP, and
+.IN "XawtextWrapNever" ""
+.IN "XawtextWrapLine" ""
+\fBXawtextWrapWord\fP. With \fBXawtextWrapLine\fP all text
+.IN "XawtextWrapWord" ""
+.IN "WrapMode"
+that is beyond the right edge of the window will be displayed on the
+next line. With \fBXawtextWrapWord\fP the
+same action occurs but the text is broken at a word boundary if
+possible. If no wrapping is enabled then the text will extend off
+the edge of the window, and a small rectangle will be painted in the
+right margin to alert the user that this line is too long.
+.Rs "never, word, \fPand\fB line"
+..
+.de Tu \" Text unrealizeCallback
+.ie 'Bold'\\$1' .IP \fBunrealizeCallback\fP 1.5i
+.el .IP unrealizeCallback 1.5i
+A list of callback functions which will be executed when the Text widget
+is unrealized.
+..
+
+\" Text Sink Resources
+
+.de Sb \" TextSink background
+.ie 'Bold'\\$1 .IP \fBbackground\fP 1.5i
+.el .IP background 1.5i
+A pixel value which indexes the Text widget's colormap to derive the
+background color used by the text sink.
+..
+.de Sg \" TextSink foreground
+.ie 'Bold'\\$1' .IP \fBforeground\fP 1.5i
+.el .IP foreground 1.5i
+A pixel value which indexes the Text widget's colormap to derive the
+foreground color used by the text sink.
+.Sk \\$1
+..
+
+\" Ascii Sink Resources
+
+.de Sd \" AsciiSink displayNonprinting
+.ie 'Bold'\\$1' .IP \fBdisplayNonprinting\fP 1.5i
+.el .IP displayNonprinting 1.5i
+If this resource is \fBTrue\fP, the Text widget will display all
+non-printable characters as the string \fI^@\fP. If \fBFalse\fP, the
+Text widget
+will just leave a blank space where a non-printable character exists
+in the text buffer.
+.Sk \\$1
+..
+.de Sh \" AsciiSink echo
+.ie 'Bold'\\$1' .IP \fBecho\fP 1.5i
+.el .IP echo 1.5i
+Whether or not to echo characters to the screen. The buffer can still
+be edited, but nothing is displayed. This mode can be useful for
+entering passwords and other sensitive information.
+.Sk \\$1
+..
+.de Sf \" AsciiSink font
+.ie 'Bold'\\$1' .IP \fBfont\fP 1.5i
+.el .IP font 1.5i
+The text font to use when displaying the \fBstring\fP, when the
+\fBinternational\fP resource is \fBfalse\fP.
+.Sk \\$1
+..
+.de Sn \" MultiSink fontSet
+.ie 'Bold'\\$1' .IP \fBfont\fP 1.5i
+.el .IP font 1.5i
+The text font set to use when displaying the \fBstring\fP, when the
+\fBinternational\fP resource is \fBtrue\fP.
+.Sk \\$1
+..
+
+\" TextSrc Resources
+
+.de Oe \" TextSrc editType
+.ie 'Bold'\\$1' .IP \fBeditType\fP 1.5i
+.el .IP editType 1.5i
+This is the type of editing that will be allowed in this text widget.
+Legal values are \fBXawtextRead\fP, \fBXawtextEdit\fP, and
+.IN "XawtextRead" ""
+.IN "XawtextEdit" ""
+\fBXawtextAppend\fP.
+.IN "XawtextAppend" ""
+.IN "conversions" "XawTextEditType"
+.Rs "read, edit, \fPand\fB append"
+.So \\$1
+..
+
+\" AsciiSrc Resources
+
+
+.de Oc \" AsciiSrc callback
+.ie 'Bold'\\$1' .IP \fBcallback\fP 1.5i
+.el .IP callback 1.5i
+The callbacks registered on this resource will be called every time the
+text buffer changes, after the text has been updated.
+.So \\$1
+..
+.de Od \" AsciiSrc dataCompression
+.ie 'Bold'\\$1' .IP \fBdataCompression\fP 1.5i
+.el .IP dataCompression 1.5i
+The AsciiSrc uses an algorithm that may cause the text buffer to grow
+to about twice the size of the actual text over time, as the text is
+edited. On systems where CPU cycles are cheaper than memory, it is helpful to
+spend some extra time to compress this buffer back to its minimum size.
+If this resource is \fBTrue\fP, the AsciiSrc will compress its data
+to the minimum size required every time the text string is saved, or the
+value of the string is queried.
+.So \\$1
+..
+.de Ol \" AsciiSrc length
+.ie 'Bold'\\$1' .IP \fBlength\fP 1.5i
+.el .IP length 1.5i
+If the \fBuseStringInPlace\fP resource is \fBFalse\fP this attribute has no
+effect. If that resource is \fBTrue\fP, however, then the \fBlength\fP
+resource specifies the length of the buffer passed to the text widget
+in the \fBstring\fP resource.
+.So \\$1
+..
+.de Op \" AsciiSrc pieceSize
+.ie 'Bold'\\$1' .IP \fBpieceSize\fP 1.5i
+.el .IP pieceSize 1.5i
+This is the size of the internal chunks into which the text buffer is
+broken down for memory management. The larger this value the less segmented
+your memory will be, but the slower your editing will be. The text
+widgets will always allocate a chunk of memory this size to stuff the
+\fBstring\fP into, so when using small strings, having this buffer
+large can waste memory. This resource has no effect if
+\fBuseStringInPlace\fP is \fBTrue\fP.
+.So \\$1
+..
+.de Os \" AsciiSrc string
+.ie 'Bold'\\$1' .IP \fBstring\fP 1.5i
+.el .IP string 1.5i
+If \fBtype\fP is \fBXawAsciiString\fP then this string contains the
+buffer to be displayed in the widget. If \fBtype\fP is
+\fBXawAsciiFile\fP then the string contains the name of the file to be
+displayed. This string is normally copied by the text widget into
+internal memory, but may be used in place by setting the
+\fBuseStringInPlace\fP resource. As of X11R4 this is a settable resource.
+.So \\$1
+When the \fBstring\fP resource is queried, using \fBXtGetValues\fP, and
+\fBuseStringInPlace\fP is false, the value returned is valid until
+the next time the \fBstring\fP resource is queried, or until the application
+writer calls \fBXawAsciiSrcFreeString\fP. If \fBuseStringInPlace\fP is
+true, a pointer to the actual string is returned. See also section 5.6.
+..
+.de Ot \" AsciiSrc type
+.ie 'Bold'\\$1' .IP \fBtype\fP 1.5i
+.el .IP type 1.5i
+This resource may be either \fBXawAsciiString\fP or
+\fBXawAsciiFile\fP. The value of this resource determines whether the
+\fBstring\fP resource contains the name of a file to be opened or a buffer to
+be displayed by the text widget. A converter has been registered for
+this resource and accepts the values \fBstring\fP and \fBfile\fP.
+.IN "conversions" "AsciiType"
+.So \\$1
+..
+.de Ou \" AsciiSrc useStringInPlace
+.ie 'Bold'\\$1' .IP \fBuseStringInPlace\fP 1.5i
+.el .IP useStringInPlace 1.5i
+Setting this resource to \fBTrue\fP will disable the memory management
+provided by the Text widget, updating the \fBstring\fP resource in
+place. Using the string in place can
+be much more efficient for text widgets that display static data, or
+where the programmer wishes to impose strict constraints on the
+contents of the \fBstring\fP. When using the string in place be sure that:
+the length of the string is specified by setting the \fBlength\fP resource,
+the \fBtype\fP of the Text widget is \fBXawAsciiString\fP, and that
+the \fBstring\fP exists for the lifetime of the text widget, or until it has
+been reset. \fINote: Since the MultiSrc and AsciiSrc have different data
+formats, use of this resource forces application code to be cognisant as to
+which of the two is being used. Application programming is simplified when
+use of this resource is avoided.\fP
+.So \\$1
+..
+.\" .TB is used throughout this manual. Don't know what it is,
+.\" but I'll guess "table bold".
+.\" Note that I've also used it to set the size, rather than
+.\" have (incorrect) commands sprinkled throughout the document.
+.\" -gildea April 1994
+.de TB
+.B
+.ps 9
+.vs 11
+..
diff --git a/specs/Xaw/widg.idxmac.t b/specs/Xaw/widg.idxmac.t
new file mode 100644
index 0000000..e5a0527
--- /dev/null
+++ b/specs/Xaw/widg.idxmac.t
@@ -0,0 +1,3 @@
+.eh '\fBAthena Widget Set\fP''\fBX11, Release 6.4\fP'
+.oh '\fBAthena Widget Set\fP''\fBX11, Release 6.4\fP'
+.so index.pageno
diff --git a/specs/Xext/AppGroup.mif b/specs/Xext/AppGroup.mif
new file mode 100644
index 0000000..8ce4fef
--- /dev/null
+++ b/specs/Xext/AppGroup.mif
@@ -0,0 +1,10667 @@
+<MIFFile 4.00> # Generated by FrameMaker xm4.0.3P1a
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+# Element Definitions
+# Elements
+#
+<Units Uin >
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CShown >
+ <CStyle CUnderline >
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `API'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encoding'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Explain'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.5">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle RunIn >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `T:Table <n+\>: '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 24.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 6.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+> # end of PgfCatalog
+<ElementDefCatalog
+> # end of ElementDefCatalog
+<FontCatalog
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FAngle `Italic'>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Left >
+ <TblPlacement Anywhere >
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement InHeader >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 2>
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 2>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center >
+ <TblPlacement Anywhere >
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `Thin'>
+ <TblRRuling `'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement InHeader >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[Title]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[Heading1]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 76 37 605 792 >
+ <DWindowRect 52 11 649 895 >
+ <DViewScale 100.0%>
+ <DNextUnique 110265>
+ <DPageSize 8.5" 11.0">
+ <DStartPage 1>
+ <DPageNumStyle Arabic >
+ <DPagePointStyle Arabic >
+ <DTwoSides No >
+ <DParity FirstRight >
+ <DFrozenPages No >
+ <DPageRounding DeleteEmptyPages >
+ <DMaxInterLine 2.0 pt>
+ <DMaxInterPgf 6.0 pt>
+ <DFNoteMaxH 4.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage >
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic >
+ <DFNoteAnchorPos FNSuperscript >
+ <DFNoteNumberPos FNBaseline >
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `.\\t'>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha >
+ <DTblFNoteAnchorPos FNSuperscript >
+ <DTblFNoteNumberPos FNBaseline >
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `.\\t'>
+ <DLinebreakChars `/ - \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.25">
+ <DChBarWidth 2.0 pt>
+ <DChBarPosition LeftOfCol >
+ <DChBarColor `Black'>
+ <DAutoChBars No >
+ <DShowAllConditions Yes >
+ <DDisplayOverrides Yes >
+ <DViewOnly No >
+ <DViewOnlyXRef GotoBehavior >
+ <DViewOnlySelect Yes >
+ <DViewOnlyWinBorders Yes >
+ <DViewOnlyWinMenubar Yes >
+ <DViewOnlyWinPopup Yes >
+ <DViewOnlyWinPalette No >
+ <DGridOn No >
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.25>
+ <DRulersOn Yes >
+ <DFullRulers Yes >
+ <DGraphicsOff No >
+ <DCurrentView 1>
+ <DBordersOn Yes >
+ <DSymbolsOn Yes >
+ <DElementBordersOn No >
+ <DSmartQuotesOn Yes >
+ <DSmartSpacesOn No >
+ <DLanguage USEnglish >
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No >
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DElementCatalogScope Strict >
+ <DPrintSkipBlankPages Yes >
+ <DPrintSeparations No >
+> # end of Document
+<BookComponent
+ <FileName `<c\>AppGroupTOC.doc'>
+ <FileNameSuffix `TOC'>
+ <DeriveLinks No >
+ <DeriveType TOC >
+ <DeriveTag `Heading1'>
+ <DeriveTag `Heading2'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+<OKWord `);'>
+<OKWord `EmbedGetVersion'>
+<OKWord `dpy_string'>
+<OKWord `ength'>
+<OKWord `override_redirect'>
+> # end of Dictionary
+<AFrames
+> # end of AFrames
+<Tbls
+ <Tbl
+ <TblID 1>
+ <TblTag `Format A'>
+ <TblNumColumns 3>
+ <Unique 105975>
+ <TblColumnWidth 2.16667">
+ <TblColumnWidth 2.16667">
+ <TblColumnWidth 2.16667">
+ <TblTitleContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105977>
+ <PgfTag `Heading1'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Attribute Type Default'>
+ >
+ > # end of Para
+ > # end of TblTitleContent
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 110002>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `app_group_leader'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 110004>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Bool'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 110006>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `True'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109720>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `single_screen'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109722>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Bool'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109724>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `True'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109684>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `default_root'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109686>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Window'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109688>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `None'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 107036>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `root_visual'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 107038>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `VisualID'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 107347>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `None'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 107032>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `default_colormap'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 107034>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Colormap'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 107349>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `None'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109969>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `black_pixel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109971>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Pixel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109973>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109975>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `white_pixel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109977>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Pixel'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 109979>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `0'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+> # end of Tbl
+> # end of Tbls
+<Page
+ <Unique 94657>
+ <PageType LeftMasterPage >
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 2>
+ <Unique 105690>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 3>
+ <Unique 105688>
+ <Overprint No >
+ <ShapeRect 1.0" 10.40741" 6.5" 0.13889">
+ <BRect 1.0" 10.40741" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 4>
+ <Unique 105680>
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 94658>
+ <PageType RightMasterPage >
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 5>
+ <Unique 105686>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 6>
+ <Unique 105684>
+ <Overprint No >
+ <ShapeRect 1.0" 10.40741" 6.5" 0.13889">
+ <BRect 1.0" 10.40741" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 7>
+ <Unique 105682>
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 94659>
+ <PageType ReferencePage >
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 94660>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 94661>
+ <Overprint No >
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 94662>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored >
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 105661>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square >
+ <TailCap Square >
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 94664>
+ <Overprint No >
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 94665>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored >
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 105665>
+ <Pen 0>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 105667>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 94668>
+ <Pen 15>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored >
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 105670>
+ <Pen 0>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 94670>
+ <Pen 15>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored >
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 94671>
+ <Overprint No >
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `TableFootnote'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 996720>
+ <PageType BodyPage >
+ <PageNum `1'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 8>
+ <Unique 105692>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 9>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105742>
+ <PageType BodyPage >
+ <PageNum `2'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 9>
+ <Unique 105743>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 10>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105821>
+ <PageType BodyPage >
+ <PageNum `3'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 10>
+ <Unique 105822>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 11>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105881>
+ <PageType BodyPage >
+ <PageNum `4'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 11>
+ <Unique 105882>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 12>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106012>
+ <PageType BodyPage >
+ <PageNum `5'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 12>
+ <Unique 106013>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 13>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106108>
+ <PageType BodyPage >
+ <PageNum `6'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 13>
+ <Unique 106109>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 14>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106203>
+ <PageType BodyPage >
+ <PageNum `7'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 14>
+ <Unique 106204>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 15>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106265>
+ <PageType BodyPage >
+ <PageNum `8'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 15>
+ <Unique 106266>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 16>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106902>
+ <PageType BodyPage >
+ <PageNum `9'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 16>
+ <Unique 106903>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 17>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 106990>
+ <PageType BodyPage >
+ <PageNum `10'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 17>
+ <Unique 106991>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 18>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 107733>
+ <PageType BodyPage >
+ <PageNum `11'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 18>
+ <Unique 107734>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 19>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 107871>
+ <PageType BodyPage >
+ <PageNum `12'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 19>
+ <Unique 107872>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 20>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 107955>
+ <PageType BodyPage >
+ <PageNum `13'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 20>
+ <Unique 107956>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 21>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 108111>
+ <PageType BodyPage >
+ <PageNum `14'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 21>
+ <Unique 108112>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 22>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 108277>
+ <PageType BodyPage >
+ <PageNum `15'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 22>
+ <Unique 108278>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 23>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 108729>
+ <PageType BodyPage >
+ <PageNum `16'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 23>
+ <Unique 108730>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 24>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 109400>
+ <PageType BodyPage >
+ <PageNum `17'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 24>
+ <Unique 109401>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 25>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 109534>
+ <PageType BodyPage >
+ <PageNum `18'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 25>
+ <Unique 109535>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 26>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 110248>
+ <PageType BodyPage >
+ <PageNum `19'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 26>
+ <Unique 110249>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105681>
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 4>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105683>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 7>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105685>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 0.5">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <HyphenMinPrefix 2>
+ <HyphenMinSuffix 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 6>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 109151>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105687>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfAlignment LeftRight >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 5>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105689>
+ <Pgf
+ <PgfTag `Footer'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 3>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105691>
+ <Pgf
+ <PgfTag `Header'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 2>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ <FNote
+ <ID 27>
+ <Para
+ <Unique 107132>
+ <PgfTag `Footnote'>
+ <ParaLine
+ <String `Wabi is a trademark of Sun Microsystems, Inc. MAE is a trademark of Apple Computer, Inc. WinCenter '>
+ >
+ <ParaLine
+ <String `is a trademark of Network Computing Devices, Inc.'>
+ >
+ > # end of Para
+ > # end of FNote
+ > # end of Notes
+ <Para
+ <Unique 105693>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 8>
+ >
+ > # end of Para
+ <Para
+ <Unique 105698>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105699>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109090>
+ <PgfTag `Title'>
+ <ParaLine
+ <String `Application Group Extension to the X Protocol'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109091>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `27 September 1996'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109092>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `Version 1.0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110254>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `X Consortium Standard'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110255>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `X11 Release 6.4'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105696>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105704>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105705>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105706>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Kaleb S. KEITHLEY'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106416>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `kaleb@x.org'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105707>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ > # end of Pgf
+ <ParaLine
+ <String `X Consortium, Inc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105708>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105709>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105712>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `ABSTRACT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105713>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105715>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The Application Group Extension to the X protocol is intended to provide a framework to allow '>
+ >
+ <ParaLine
+ <String `more than one program to manage X applications on the desktop. The initial use of this extension '>
+ >
+ <ParaLine
+ <String `will be to insert or embed the windows of X programs into the windows of another program, such '>
+ >
+ <ParaLine
+ <String `as a web browser. This extension is not intended to address larger embedding issues that, for '>
+ >
+ <ParaLine
+ <String `example, OpenDoc does, such as shared menu bars, etc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105719>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108588>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108589>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108609>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108610>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106695>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105772>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ > # end of Pgf
+ <ParaLine
+ <String `Copyright \xa9 1996 X Consortium, Inc. All Rights Reserved.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105746>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105747>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `THE SOFTWARE IS PROVIDED \xd2 AS IS\xd3 , WITHOUT WARRANTY OF ANY KIND, '>
+ >
+ <ParaLine
+ <String `EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF '>
+ >
+ <ParaLine
+ <String `MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGE'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `MENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, '>
+ >
+ <ParaLine
+ <String `DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT '>
+ >
+ <ParaLine
+ <String `OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFT'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `WARE OR THE USE OF OR OTHER DEALINGS IN THE SOFTWARE.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108595>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108596>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Except as contained in this notice, the name of the X Consortium shall not be used in advertising '>
+ >
+ <ParaLine
+ <String `or otherwise to promote the sale, use or other dealings in this Software without prior written '>
+ >
+ <ParaLine
+ <String `authorization from the X Consortium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105820>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 9>
+ <String `1. Purpose and Goals'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105824>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105825>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The Application Group Extension to the X protocol is intended to provide a framework to allow '>
+ >
+ <ParaLine
+ <String `more than one program to manage X applications on the desktop. The initial use of this extension '>
+ >
+ <ParaLine
+ <String `will be to insert or embed the windows of X programs into the windows of another program, such '>
+ >
+ <ParaLine
+ <String `as a web browser. This extension is not intended to address larger embedding issues that, for '>
+ >
+ <ParaLine
+ <String `example, OpenDoc does, such as shared menu bars, etc. Using X programs on the World Wide '>
+ >
+ <ParaLine
+ <String `Web allows for greater control of the presentation and takes advantage of the existing body of X '>
+ >
+ <ParaLine
+ <String `programs rather than re-implement them in another language. In addition it allows the embedding '>
+ >
+ <ParaLine
+ <String `of non-X programs into web browsers by using third party products like Wabi, MAE, and Win'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Center.'>
+ <FNote 27>
+ >
+ > # end of Para
+ <Para
+ <Unique 107527>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 10>
+ <String `2. Overview of the protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105837>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105849>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This extension introduces the concept of an Application Group. An Application Group is a set of '>
+ >
+ <ParaLine
+ <String `one or more applications that are primarily managed by a special application known as the Appli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cation Group Leader, which, for example, might be a web browser. The primary purpose of Appli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cation Groups is to provide a means of sharing the Substructure-Redirect attribute of the root '>
+ >
+ <ParaLine
+ <String `window between the window manager and one or more Application Group Leaders.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107158>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107515>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `To join an Application Group an application must present the proper authorization during the con'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `nection setup. Authorizations are generated by the X server at the request of an Application '>
+ >
+ <ParaLine
+ <String `Group Leader, and are then stored for the application to use to establish its connection to the X '>
+ >
+ <ParaLine
+ <String `server. To generate an authorization the Application Group Leader sends a request to the server '>
+ >
+ <ParaLine
+ <String `naming the Application Group to which the authorization will be bound, and any applications that '>
+ >
+ <ParaLine
+ <String `connect using that authorization will automatically become part of the associated Application '>
+ >
+ <ParaLine
+ <String `Group. The protocol to generate an authorization is defined in the Security Extension specifica'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107517>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107159>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `As a member of an Application Group, when an application creates and maps a window as a child '>
+ >
+ <ParaLine
+ <String `of the root window, the MapRequest and ConfigureRequest events are delivered to the Applica'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion Group Leader instead of the window manager. The Application Group Leader may then rep'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `arent the window into its own window hierarchy; or reissue the map request, in which case the '>
+ >
+ <ParaLine
+ <String `window comes under the control of the window manager.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105861>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 11>
+ <String `3. Requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105862>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105868>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105871>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105872>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `client_major_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105873>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `client_minor_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105875>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `=\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105877>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `server_major_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105878>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `server_minor_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105869>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105880>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If supplied, the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `client_major_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `client_minor_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` indicate what version of the pro'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tocol the application wants the server to implement. The server version numbers returned indicate '>
+ >
+ <ParaLine
+ <String `the version of the protocol the X server actually supports. This may not match the versions '>
+ >
+ <ParaLine
+ <String `requested by the application. An implementation may (but need not) support more than one ver'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sion simultaneously. The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `server_major_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `server_minor_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` numbers are a mecha'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `nism to support any future revisions of the Application Group extension protocol which may be '>
+ >
+ <ParaLine
+ <String `necessary. In general, the major version would increment for incompatible changes, and the minor '>
+ >
+ <ParaLine
+ <String `version would increment for small, upward-compatible changes. X servers that support the proto'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `col defined in this document will return a '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `server_major_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` of 1 and a '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `server_minor_version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `of 0. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 109152>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105886>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105887>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreate'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105888>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105889>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: APPGROUP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109218>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `value_mask'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: BITMASK'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105953>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `value_list'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofVALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107166>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105904>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request creates an Application Group using '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` as the Application Group ID.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109252>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108424>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `value_mask'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `value_list'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` specify attributes of the Application Group that are to be explicitly '>
+ >
+ <ParaLine
+ <String `initialized. The attributes, their types, and the default values are:'>
+ <ATbl 1>
+ >
+ > # end of Para
+ <Para
+ <Unique 109728>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 12>
+ <String `If the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is True then the number of video screens returned to a program in the '>
+ >
+ <ParaLine
+ <String `Application Group in the connection setup message is one, irrespective of how many video '>
+ >
+ <ParaLine
+ <String `screens the server actually has. If a server supports both video and print screens, then all print '>
+ >
+ <ParaLine
+ <String `screens will always be returned. If '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is specified as True then the connection setup '>
+ >
+ <ParaLine
+ <String `message will contain only the information about the video screen which has '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` as its '>
+ >
+ <ParaLine
+ <String `root window, plus any print screens.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109729>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109730>
+ <PgfTag `Explain'>
+ <ParaLine
+ <String `The intent is to allow an embedding manager to ensure that it will be able to reparent any top-level windows '>
+ >
+ <ParaLine
+ <String `that Application Group members create. By hiding the fact that there are other screens it can be reasonably '>
+ >
+ <ParaLine
+ <String `assured that applications will only create top-level windows on the same screen that it itself appears on. An '>
+ >
+ <ParaLine
+ <String `embedding manager should take care not to supply an invalid display, e.g. :0.1, to a program that will be in an '>
+ >
+ <ParaLine
+ <String `Application Group where the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is True.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109731>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109698>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is set to True '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` specifies which screen will be returned as screen zero '>
+ >
+ <ParaLine
+ <String `in the connection setup message for applications in the Application Group. If set to None, then the '>
+ >
+ <ParaLine
+ <String `real screen zero is used, otherwise the screen which has '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` as its root window will be '>
+ >
+ <ParaLine
+ <String `used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109699>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109705>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is set to True the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attributes may be used to '>
+ >
+ <ParaLine
+ <String `over-ride the default values that are returned in the connection setup information returned to new '>
+ >
+ <ParaLine
+ <String `programs in the Application Group. If None is specified for '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` then '>
+ >
+ <ParaLine
+ <String `the normal default values for the screen (possibly spedified by '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root)'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` are used, otherwise '>
+ >
+ <ParaLine
+ <String `the specified values are used. If '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and/or '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` are specified they must be '>
+ >
+ <ParaLine
+ <String `valid, i.e. '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` must be a visual type available on the screen, and the colormap, if specified, '>
+ >
+ <ParaLine
+ <String `must be a valid colormap for the visual that is used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109706>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110011>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `IF '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is set to True and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is not specified as None, the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `black_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `white_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attributes must be specified, and they will over-ride the default values that are '>
+ >
+ <ParaLine
+ <String `returned in the connection setup returned to new programs in the Application Group. If '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is specified as None and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `black_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and/or '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `white_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` are specified, they will '>
+ >
+ <ParaLine
+ <String `be ignored.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110012>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109715>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_leader'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is used to identify the Application Group Leader program for the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. By specifying True the server will identify the program making the request as the '>
+ >
+ <ParaLine
+ <String `Application Group Leader for the application group. The Application Group Leader receives '>
+ >
+ <ParaLine
+ <String `MapRequest and ConfigureRequest events from the server when an attempt is made to map or '>
+ >
+ <ParaLine
+ <String `configure top-level windows of a program in an Application Group, instead of being sent to a '>
+ >
+ <ParaLine
+ <String `window manager that has selected SubstructureRedirect events on the root window. The parent '>
+ >
+ <ParaLine
+ <String `window field in these events will contain the Application Group ID.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109716>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109245>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105925>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupDestroy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105935>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105936>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: APPGROUP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105937>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105938>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request destroys the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. If the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_leader'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute for the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is True, '>
+ >
+ <ParaLine
+ <String `then any applications in the Application Group that are still connected will be killed as if a '>
+ >
+ <ParaLine
+ <TextRectID 13>
+ <String `KillClient request had been received for that application.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110080>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110081>
+ <PgfTag `Explain'>
+ <ParaLine
+ <String `If the application that created a non-embedded Application Group exits, and therefore any Authorizations to '>
+ >
+ <ParaLine
+ <String `be cancelled, and any applications that attempt to open new connections to the X server using one of those '>
+ >
+ <ParaLine
+ <String `Authorizations will be unable to do so.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108429>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106555>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106551>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupGetAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106552>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106562>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: APPGROUP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106563>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `=\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106564>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` LISTofVALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106578>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107010>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the application group attributes for '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108141>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106592>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106829>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupQuery'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106830>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106833>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `resource'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: XID'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106838>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `=\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106839>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: APPGROUP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106840>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106841>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the Application Group ID of the application that created '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `resource'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` or None if '>
+ >
+ <ParaLine
+ <String `that application is not associated with any Application Group. The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `resource'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` value may be the '>
+ >
+ <ParaLine
+ <String `resource base of the application.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108145>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108941>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108943>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreateAssociation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108944>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108945>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109330>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108942>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofCARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108947>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109336>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request associates '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` with '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` indicates the native win'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `dow system of the application making the request. For non-X '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `s both the embedding '>
+ >
+ <ParaLine
+ <String `manager and the server must be executing on the same host. When '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is Microsoft '>
+ >
+ <ParaLine
+ <String `Windows or OS/2 Presentation Manager, the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is an HWND; when the native win'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `dow system is Macintosh, the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is a WindowPtr and a Rect. The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` may be '>
+ >
+ <ParaLine
+ <String `used for any X request that takes a Window.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108946>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108955>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108956>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupDestroyAssociation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108957>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108958>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106589>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108959>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request destroys the association created with AppGroupCreateAssociation. The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is '>
+ >
+ <ParaLine
+ <String `destroyed. The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` that was specified in the AppGroupCreateAssociation request is '>
+ >
+ <ParaLine
+ <TextRectID 14>
+ <String `not affected.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108960>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108744>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 15>
+ <String `4. Changes to Existing Requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108764>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108767>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `MapWindow'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108794>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108771>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the override-redirect attribute of the window is False and if the window is a child of a root win'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `dow and if the window belongs to an application that is in an application group and if some other '>
+ >
+ <ParaLine
+ <String `application is the application group leader for that group, then a MapRequest event is generated '>
+ >
+ <ParaLine
+ <String `and the window remains unmapped. Otherwise, the core protocol semantics apply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108777>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108809>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108798>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `ConfigureWindow'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108827>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108831>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the override-redirect attribute of the window is False and if the window is a child of a root win'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `dow and if the window belongs to an application that is in an application group and if some other '>
+ >
+ <ParaLine
+ <String `application is the application group leader for that group, then a ConfigureRequest event is gener'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ated and the window remains unchanged. Otherwise, the core protocol semantics apply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108828>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110017>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110018>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CreateWindow'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110019>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110020>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When a program in an Application Group creates a window that is a child of a root window and '>
+ >
+ <ParaLine
+ <String `specifies CopyFromParent for the Visual, if the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is True and the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `attribute is set to something other than None, then the window will be created using the Applica'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion Group\xd5 s '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, otherwise core protocol semantics apply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110024>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110025>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When a program in an Application Group creates a window that is a child of a root window and '>
+ >
+ <ParaLine
+ <String `specifies CopyFromParent for the Colormap, if the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is True, the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is set to something other than None, and the window\xd5 s Visual is the '>
+ >
+ <ParaLine
+ <String `same as the Application Group\xd5 s '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute, then the window will be created using the '>
+ >
+ <ParaLine
+ <String `Application Group\xd5 s '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, otherwise core protocol semantics apply. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 110026>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110027>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110021>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `ChangeWindowAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110022>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110031>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When a program in an Application Group changes the attributes of a window that is a child of a '>
+ >
+ <ParaLine
+ <String `root window and specifies CopyFromParent for the Colormap, if the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is '>
+ >
+ <ParaLine
+ <String `True, the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is set to something other than None, and the window\xd5 s Visual '>
+ >
+ <ParaLine
+ <String `is the same as the Application Group\xd5 s '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute, then the window will be created '>
+ >
+ <ParaLine
+ <String `using the Application Group\xd5 s '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, otherwise core protocol semantics apply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108760>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 16>
+ <String `5. Changes to Existing Events'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109939>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109944>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the top-level window of an application that is a member of an Application Group is the tar'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `get of a MapWindow or ConfigureWindow request, if there is an Application Group Leader then '>
+ >
+ <ParaLine
+ <String `MapRequest and ConfigureRequest events are automatically delivered to it, otherwise the core '>
+ >
+ <ParaLine
+ <String `protocol semantics apply, i.e. they are delivered to the client, if any, that has SubstructureRedirect '>
+ >
+ <ParaLine
+ <String `set in its root-window event mask, e.g. the window manager.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109940>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109941>
+ <PgfTag `Explain'>
+ <ParaLine
+ <String `The Application Group Leader must not select SubstructuRedirect events on a root window as doing so would '>
+ >
+ <ParaLine
+ <String `result in a core protocol error; only one client is permitted to do so, and that is usually the window manager.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106525>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107575>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `MapRequest'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107576>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108017>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When a MapWindow request is received for a window whose override-redirect attribut is set to '>
+ >
+ <ParaLine
+ <String `False and whose parent is the root window and the window belongs to an application that is in an '>
+ >
+ <ParaLine
+ <String `application group and there is an application group leader for the group, then this event is deliv'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ered to the Application Group Leader with the parent field in the event set to the AppGroup ID. '>
+ >
+ <ParaLine
+ <String `Otherwise the core protocol semantics apply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108032>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108033>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108034>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `ConfigureRequest'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109395>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109398>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When a ConfigureWindow request is received for a window whose override-redirect attribut is set '>
+ >
+ <ParaLine
+ <String `to False and whose parent is the root window and the window belongs to an application that is in '>
+ >
+ <ParaLine
+ <String `an application group and there is an application group leader for the group, then this event is '>
+ >
+ <ParaLine
+ <String `delivered to the Application Group Leader with the parent field in the event set to the AppGroup '>
+ >
+ <ParaLine
+ <String `ID. Otherwise the core protocol semantics apply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107569>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 17>
+ <String `6. Errors'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107571>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107579>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108146>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110138>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `There are no errors for AppGroupQueryVersion.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108173>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108147>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreate'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108148>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108174>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A Window error is returned if '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `is specified and is not a valid root window..'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108179>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108180>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A Color error is returned '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is specified but '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is not a valid color'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `map for the screen of '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108181>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109183>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A Match error is returned if '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` are both specified, but'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109187>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `\xd5 s visual is not '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109185>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109188>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A Match error is returned if '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` does not exist for the screen of the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109184>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108172>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108149>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupDestroy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108150>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108307>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An AppGroup error is returned if '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is not a valid Application Group.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108305>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108203>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An Access error is returned if an untrusted application attempts to destroy an Application Group '>
+ >
+ <ParaLine
+ <String `created by a trusted application.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108205>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108204>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108153>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupGetAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108154>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108317>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An AppGroup error is returned if '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is not a valid Application Group.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108325>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108328>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An Access error is returned if an untrusted application attempts to get the attributes of an Applica'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion Group created by a trusted application.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108312>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108313>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108155>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupQuery'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107568>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108330>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An Access error is returned if an untrusted application attempts to query the Application Group of '>
+ >
+ <ParaLine
+ <String `a trusted application.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108964>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108965>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108966>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreateAssociation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108967>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109351>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A Match error is returned if the X server does not support the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109352>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109353>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An Access error may be returned if the X server only supports the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` on the local host '>
+ >
+ <ParaLine
+ <TextRectID 18>
+ <String `and the program making the request is on a non-local host.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109354>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108968>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A Window error may be returned for system-specific errors related to '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, e.g. '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` does not represent a valid native window.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108969>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108970>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108971>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupDestroyAssociation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108972>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108973>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A Window error is returned if '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` was not specified in a previous AppGroupCreateAssocia'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108284>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 19>
+ <String `7. Encoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105866>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105867>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Please refer to the X11 Protocol encoding document as this document uses conventions estab'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `lished there.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106168>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106169>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The name of this extension is XC-APPGROUP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106207>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106171>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105851>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106199>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106200>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `3'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106201>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `client_major_version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106202>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `client_minor_version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106209>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108898>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <String `=\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106210>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106211>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106212>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `sequence_number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106213>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106214>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `server_major_version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106215>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `server_minor_version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106216>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106217>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106867>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106218>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreate'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106219>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106227>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106228>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `8+n'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106229>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `XID'>
+ <Char Tab >
+ <Char Tab >
+ <String `app_group'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106231>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `BITMASK'>
+ <Char Tab >
+ <Char Tab >
+ <String `attrib_mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110173>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#x00000001'>
+ <Char Tab >
+ <String `app_group_leader'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110179>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#x00000002'>
+ <Char Tab >
+ <String `single_screen'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107076>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#0x0000004'>
+ <Char Tab >
+ <String `default_root'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109747>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#x00000008'>
+ <Char Tab >
+ <String `root_visual'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107077>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#x00000010'>
+ <Char Tab >
+ <String `default_colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110034>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#x00000020'>
+ <Char Tab >
+ <String `black_pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110035>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#x00000040'>
+ <Char Tab >
+ <String `white_pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106881>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `LISTofVALUE'>
+ <Char Tab >
+ <Char Tab >
+ <String `value-list'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106883>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <String `VALUEs'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110185>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <Char Tab >
+ <String `app_group_leader'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110191>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <Char Tab >
+ <String `single_screen'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107238>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `default_root'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107115>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `VISUALID'>
+ <Char Tab >
+ <Char Tab >
+ <String `root_visual'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107116>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <Char Tab >
+ <String `default_colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110036>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <Char Tab >
+ <String `black_pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110037>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <Char Tab >
+ <String `white_pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106238>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <TextRectID 20>
+ >
+ > # end of Para
+ <Para
+ <Unique 107973>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106243>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupDestroy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106244>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106248>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106249>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106250>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `XID'>
+ <Char Tab >
+ <Char Tab >
+ <String `app_group'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106251>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106887>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108652>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AAppGroupGetAttr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106910>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106911>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106912>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106913>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `XID'>
+ <Char Tab >
+ <Char Tab >
+ <String `app_group'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106914>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <String `=\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106917>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106918>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106919>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `sequence_number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106920>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107245>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `default_root'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107246>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `VISUALID'>
+ <Char Tab >
+ <Char Tab >
+ <String `root_visual'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107247>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <Char Tab >
+ <String `default_colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110040>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <Char Tab >
+ <String `black_pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110041>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <Char Tab >
+ <String `whte_pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109771>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <Char Tab >
+ <String `single_screen'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109778>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <Char Tab >
+ <String `app_group_leader'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107239>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109133>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106936>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 106969>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupQuery'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106971>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106973>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `5'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106974>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106975>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `XID'>
+ <Char Tab >
+ <Char Tab >
+ <String `resource'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106970>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <String `=\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106976>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106978>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106979>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `sequence_number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106980>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 106981>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `XID'>
+ <Char Tab >
+ <Char Tab >
+ <String `app_group'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109132>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108983>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108984>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108985>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreateAssoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108986>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108987>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108988>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <TextRectID 21>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108989>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109360>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `window_type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109361>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#0'>
+ <Char Tab >
+ <String `X11'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109362>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#1'>
+ <Char Tab >
+ <String `Macintosh'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109363>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#2'>
+ <Char Tab >
+ <String `Win32, OS/2 PM 2.x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109364>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `#3'>
+ <Char Tab >
+ <String `Win16, OS/2 PM 1.x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109098>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <Char Tab >
+ <String `system_window_len'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109952>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `LISTofCARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `system_window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108991>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108992>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 108993>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupDestroyAssoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108994>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108995>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `7'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108996>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108997>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107152>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 22>
+ <String `8. Library API'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109821>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107154>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagQueryVersion('>
+ >
+ > # end of Para
+ <Para
+ <Unique 107590>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107591>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `int*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `major_version_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107592>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `int*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `minor_version_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107595>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107731>
+ <PgfTag `API'>
+ <ParaLine
+ <String `XagQueryVersion sets '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `major_version_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `minor_version_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` to the major and minor '>
+ >
+ <ParaLine
+ <String `Application Group protocol version supported by the server. If the Xag library is compatible with '>
+ >
+ <ParaLine
+ <String `the version returned by the server it returns non-zero. If '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` does not support the Application '>
+ >
+ <ParaLine
+ <String `Group extension, or if the server and library protocol versions are incompatible, or if there was an '>
+ >
+ <ParaLine
+ <String `error during communication with the server, it returns zero. No other Xag functions may be called '>
+ >
+ <ParaLine
+ <String `before this function. If a program violates this rule, the effects of all subsequent Xag calls that it '>
+ >
+ <ParaLine
+ <String `makes are undefined.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107736>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107737>
+ <PgfTag `Explain'>
+ <ParaLine
+ <String `An embedding manager in, e.g. a Personal Computer Web Browser, will need to open a connection to the Per'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sonal Computer X server by calling XOpenDisplay() before using the Application Group extension.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109829>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109833>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110061>
+ <PgfTag `API'>
+ <ParaLine
+ <String `An embedding manager such as a web browser that intends to embed programs in an Application '>
+ >
+ <ParaLine
+ <String `Group should create the Application Group with XagCreateEmbeddedApplicationGroup.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110062>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107612>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagCreateEmbeddedApplicationGroup('>
+ >
+ > # end of Para
+ <Para
+ <Unique 107614>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy,'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 110044>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `VisualID'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110047>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Colormap'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110048>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `unsigned long'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `black_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110049>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `unsigned long'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `white_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107617>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `XAppGroup*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107622>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107745>
+ <PgfTag `API'>
+ <ParaLine
+ <String `XagCreateEmbeddedApplicationGroup creates an Application Group for an embedding manager '>
+ >
+ <ParaLine
+ <String `with the attributes specified. It also sets the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute to DefaultRoot(dpy, DefaultsS'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `creen(dpy)) and the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_leader'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attributes to True. It returns the Appli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cation Group ID in '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107746>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110063>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110064>
+ <PgfTag `API'>
+ <ParaLine
+ <String `You can create an Application Group without intending to do embedding. One reason for doing '>
+ >
+ <ParaLine
+ <String `this is to give a group of clients their own font-path.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110065>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110070>
+ <PgfTag `Explain'>
+ <ParaLine
+ <String `A special font-path can be created by creating an Application Group, getting an Authorization using XSecuri'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tyGenerateAuthorization, and then running \xd4 xset fp+ <new font path\>\xd5 as a member of the Application Group. '>
+ >
+ <ParaLine
+ <String `Font-path elements added in this way will be \xd2 private\xd3 to the Application Group.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107832>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110056>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagCreateNonembeddedApplicationGroup('>
+ >
+ > # end of Para
+ <Para
+ <Unique 110057>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110058>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `XAppGroup*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110054>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110055>
+ <PgfTag `API'>
+ <ParaLine
+ <TextRectID 23>
+ <String `An Application Group created with XagCreateNonembeddedApplicationGroup will have the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `root_visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attributes all set to None; the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `single_screen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_leader'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attributes are set to False, and the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `black_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `white_pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attributes are '>
+ >
+ <ParaLine
+ <String `not used since the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `default_colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` attribute is None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110073>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110074>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110075>
+ <PgfTag `API'>
+ <ParaLine
+ <String `To destroy an Application Group use XagDestroyApplicationGroup.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107748>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107623>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagDestroyApplicationGroup('>
+ >
+ > # end of Para
+ <Para
+ <Unique 107625>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107626>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `XAppGroup'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107629>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107842>
+ <PgfTag `API'>
+ <ParaLine
+ <String `The Application Group specified by '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is destroyed. If the Application Group was cre'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ated using XagCreateEmbeddingApplicationGroup, i.e. and therefore the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_leader'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `attribute is True, all programs that are members of the Application Group are killed as if a KillCli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ent request had been issued.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107843>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110082>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110083>
+ <PgfTag `API'>
+ <ParaLine
+ <String `To retrieve the attributes of an Application Group use XagGetApplicationGroupAttributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108270>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107639>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagGetApplicationGroupAttributes('>
+ >
+ > # end of Para
+ <Para
+ <Unique 107641>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107642>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `XAppGroup'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 108363>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `...);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107883>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107884>
+ <PgfTag `API'>
+ <ParaLine
+ <String `XagGetApplicationGroupAttributes is a varargs function that retrieves the Application Group\xd5 s '>
+ >
+ <ParaLine
+ <String `attributes specified in the vararg parameter list.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107885>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107886>
+ <PgfTag `API'>
+ <ParaLine
+ <String `The attributes that may be specified are: XagNappGroupLeader, XagNsingleScreen, XagNde'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `faultRoot, XagNrootVisual, XagNdefaultColormap, XagNblackPixel, and XagNwhitePixel; '>
+ >
+ <ParaLine
+ <String `which correspond to app_group_leader, single_screen, default_root, root_visual, '>
+ >
+ <ParaLine
+ <String `default_colormap, black_pixel, and white_pixel respectively. See AppGroupCreate in Section 3 '>
+ >
+ <ParaLine
+ <String `for a description of each attribute.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107887>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110086>
+ <PgfTag `API'>
+ <ParaLine
+ <String `The types for each of the parameters are pointers to the following:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110088>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110090>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `single_screen'>
+ <Char Tab >
+ <Char Tab >
+ <String `Bool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110217>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `default_root'>
+ <Char Tab >
+ <Char Tab >
+ <String `Window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110091>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `root_visual'>
+ <Char Tab >
+ <Char Tab >
+ <String `VisualID'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110092>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `default_colormap'>
+ <Char Tab >
+ <Char Tab >
+ <String `Colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110094>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `black_pixel'>
+ <Char Tab >
+ <Char Tab >
+ <String `unsigned long'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110104>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `white_pixel'>
+ <Char Tab >
+ <Char Tab >
+ <String `unsigned long'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110164>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `app_group_leader'>
+ <Char Tab >
+ <Char Tab >
+ <String `Bool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110087>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107888>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Example:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107894>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107897>
+ <PgfTag `API'>
+ <ParaLine
+ <TextRectID 24>
+ <Char Tab >
+ <String `...'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107978>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Boolean app_group_leader, single_screen;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107900>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Window default_root;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110105>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `VisualID root_visual;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107901>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Colormap default_colormap;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110106>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Pixel black_pixel, white_pixel;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107903>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `...'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107904>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `status = XagGetApplicationGroupAttributes(dpy, app_group,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110197>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `XagNappGroupLeader, &app_group_leader,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110111>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `XagNsingleScreen, &single_screen,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110155>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `XagNdefault_root, &default_root,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107908>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `XagNrootVisual, &root_visual,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107909>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `XagNdefaultColormap, &default_colormap,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110117>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `XagNblackPixel, &black_pixel,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110118>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `XagNwhitePixel, &white_pixel,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107911>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `NULL);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107912>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `...'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107913>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107647>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110119>
+ <PgfTag `API'>
+ <ParaLine
+ <String `To determine which Application Group a resource (such as a window) belongs to, use XagQue'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ryApplicationGroup.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110120>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107661>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagQueryApplicationGroup('>
+ >
+ > # end of Para
+ <Para
+ <Unique 107654>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107655>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `XID'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `resource'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107656>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `XAppGroup*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107723>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 107926>
+ <PgfTag `API'>
+ <ParaLine
+ <String `The Application Group is returned in '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, if the resource is not in any Application '>
+ >
+ <ParaLine
+ <String `Group then '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `app_group_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` will be set to None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 107648>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110123>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110124>
+ <PgfTag `API'>
+ <ParaLine
+ <String `To associate an X Window ID with a system-specific window ID, such as a HWND or a Win'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `dowPtr, use XagCreateAssociation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109005>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109001>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagCreateAssociation('>
+ >
+ > # end of Para
+ <Para
+ <Unique 109002>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109003>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Window*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109004>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `void*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109006>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109007>
+ <PgfTag `API'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_ret'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` may be used as the target for a ReparentWindow request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109813>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109563>
+ <PgfTag `Explain'>
+ <ParaLine
+ <String `Because XReparentWindow is not constrained in the same way that Win32\xd5 s SetParent and the Macintosh are, '>
+ >
+ <ParaLine
+ <String `there is no reason to call XagCreateAssociation in an X-based embedding manager. As such if XagCreateAs'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sociation is called in a native X program, the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` will be the same as the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and the '>
+ >
+ <ParaLine
+ <String `implementation may even elect to not generate any protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109569>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109786>
+ <PgfTag `API'>
+ <ParaLine
+ <String `To create an association on the Macintosh:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109789>
+ <PgfTag `API'>
+ <ParaLine
+ <TextRectID 25>
+ >
+ > # end of Para
+ <Para
+ <Unique 109790>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `struct {'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109791>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String ` WindowPtr win;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109792>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String ` Rect rect;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109793>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `} system_window;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109797>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109798>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `system_window.win = win_ptr;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109799>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `system_window.rect.top = system_window.rect.left = 20;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109787>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `system_window.rect.bottom = 180;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109801>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `system_window.rect.right = 380;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109802>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109803>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `status = XagCreateAssociation (dpy, &window, (void*)&system_window);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109804>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109805>
+ <PgfTag `API'>
+ <ParaLine
+ <String `To create an association using a Win16, Win32, or OS/2 PM:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109806>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109807>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `HWND system_window;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109808>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109809>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `status = XagCreateAssociation (dpy, &window, (void*)&system_window);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109788>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110127>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 110128>
+ <PgfTag `API'>
+ <ParaLine
+ <String `To destroy the association created with XagCreateAssociation use XagDestroyAssociation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109009>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109010>
+ <PgfTag `API'>
+ <ParaLine
+ <String `Status XagDestroyAssociation('>
+ >
+ > # end of Para
+ <Para
+ <Unique 109011>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Display*'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `dpy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109012>
+ <PgfTag `API'>
+ <ParaLine
+ <Char Tab >
+ <String `Window'>
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109013>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109570>
+ <PgfTag `API'>
+ <ParaLine
+ <String `After calling XagDestroyAssociation the '>
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` may no longer be used to reparent windows '>
+ >
+ <ParaLine
+ <String `with XReparentWindow.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 110131>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109571>
+ <PgfTag `Explain'>
+ <ParaLine
+ <String `Like XagCreateAssociation, if the native window system is X11 the implementation may elect to not generate '>
+ >
+ <ParaLine
+ <String `any protocol as a result of this function call in order to avoid unintentionally destroying the the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ > # end of Font
+ <String `system_window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` that was specified in the prior XagCreateAssociation call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109399>
+ <PgfTag `API'>
+ <Pgf
+ <PgfPlacement PageTop >
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 26>
+ <String `APPENDIX A: System Window Encodings'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109403>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109404>
+ <PgfTag `API'>
+ <ParaLine
+ <String `The AppGroupCreateAssoc request has the following possible variations:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109416>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109419>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreateAssoc'>
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String ` (X11)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109420>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109421>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109422>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109423>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109424>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <Char Tab >
+ <String `window_type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109429>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `system_window_len'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109431>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `Window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109432>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109444>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreateAssoc'>
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String ` (Macintosh)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109445>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109446>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109447>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109448>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109508>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `window_type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109509>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `12'>
+ <Char Tab >
+ <Char Tab >
+ <String `system_window_len'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109452>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <Char Tab >
+ <String `WindowPtr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109459>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <Char Tab >
+ <String `Rect.top'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109575>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <Char Tab >
+ <String `Rect.left'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109576>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <Char Tab >
+ <String `Rect.bottom'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109581>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <Char Tab >
+ <String `Rect.right'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109453>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109461>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreateAssoc'>
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String ` (Win32)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109462>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109463>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109464>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109465>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109466>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `window_type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109467>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `system_window_len'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109469>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <Char Tab >
+ <String `HWND'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109475>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109490>
+ <PgfTag `Encoding'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `AppGroupCreateAssoc'>
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String ` (Win16)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109476>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109477>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <Char Tab >
+ <String `XC-APPGROUP opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109478>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <Char Tab >
+ <String `length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109479>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109480>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `3'>
+ <Char Tab >
+ <Char Tab >
+ <String `window_type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109481>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `system_window_len'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109483>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `HWND offset'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109584>
+ <PgfTag `Encoding'>
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `HWND segment'>
+ >
+ > # end of Para
+ <Para
+ <Unique 109470>
+ <PgfTag `Encoding'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 109411>
+ <PgfTag `API'>
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/Xext/DPMS.ms b/specs/Xext/DPMS.ms
new file mode 100644
index 0000000..f32246d
--- /dev/null
+++ b/specs/Xext/DPMS.ms
@@ -0,0 +1,462 @@
+.\" Use -ms and macros.t
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 1
+\s+2\fBX Display Power Management Signaling (DPMS) Extension\fP\s-2
+.sp
+.ce 1
+\s+1\fBProtocol Specification\fP\s-1
+.sp 3
+.ce 3
+Version 1.0
+X Project Team Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+Rob Lembree
+\fIlembree@zk3.dec.com\fP
+.sp 6p
+Digital Equipment Corporation
+.sp 6p
+24 April 1996
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+.bp
+.sp 15
+Copyright \(co Digital Equipment Corporation, 1996
+.LP
+Permission to use, copy, modify, distribute, and sell this
+documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice and this permission
+notice appear in all copies. Digital Equipment Corporation
+makes no representations about the suitability for any purpose
+of the information in this document. This documentation is
+provided ``as is'' without express or implied warranty.
+.LP
+.ps 10
+.nr PS 10
+.bp 1
+.EH '\fBDisplay Power Management Signaling (DPMS) Extension\fP'
+.OH '\fBDisplay Power Management Signaling (DPMS) Extension\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.LP
+This extension provides X Protocol control over the VESA Display
+Power Management Signaling (DPMS) characteristics of video boards
+under control of the X Window System.
+.FS
+1. \fIX Window System\fP is a trademark of X Consortium, Inc.
+.FE
+.LP
+Traditionally, the X Window System has provided for both blanking and
+non-blanking screen savers. Timeouts associated with these built-in
+screen saver mechanisms are limited to idle (dwell) time, and a change
+timeout that specifies the change interval for non-blanking screen savers.
+.LP
+The United States' Environmental Protection Agency (EPA) Energy Star program
+requires that monitors power down after some idle time by default.
+While it is possible to simply overload the existing screen saver timeouts,
+this solution leaves the non-privileged user little to no control over
+the DPMS characteristics of his or her system. For example, disabling
+DPMS would require some unintended side effect in the core screen saver,
+such as disabling the changing of a non-blanking screen saver. Providing
+clients with this control requires an extension to the core X Window System
+Protocol, and this extension seeks to fill this gap.
+.LP
+The design goal of the DPMS extension is to be a logical extension to
+the traditional screen saver. The protocol and sample implementation is
+designed to use the same date types and time units as the screen saver.
+The sample implementation works independently from the screen saver so that
+policy as it pertains to the interaction between screen saver and DPMS can
+be deferred to the user or screen saver application. The extension has
+been tested with and shown to work correctly with both the internal blanking
+and non-blanking screen savers, as well as with screen saver extension
+clients.
+.LP
+The DPMS extension is designed to be simple, yet export sufficient
+VESA DPMS information to enable full function clients to be written.
+Included is the ability to sense DPMS capability, set and get DPMS timeouts,
+enable and disable individual DPMS modes, enable and disable DPMS (without
+destroying timeout values), and sense current DPMS on/off state and
+power level.
+.LP
+There are four power levels specified by the Video Electronics Standards
+Association (VESA) Display Power Management Signaling (DPMS) standard.
+These are:
+.LP
+.Ds 0
+.TA .2i 1.5i 2.5i 3.5i
+.ta .2i 1.5i 2.5i 3.5i
+.R
+.PN "DPMS Extension Power Levels"
+ 0 DPMSModeOn In use
+ 1 DPMSModeStandby Blanked, low power
+ 2 DPMSModeSuspend Blanked, lower power
+ 3 DPMSModeOff Shut off, awaiting activity
+.De
+.LP
+.LP
+It is logical to assume that successive DPMS modes be chronologically
+at the same time or later than one another, and the protocol is designed
+to enforce this rule.
+.LP
+Note however that a concious decision is made to decouple the timeouts
+associated with screen saver from the DPMS timeouts. While it might be
+considered logical to require that the first non-zero DPMS timeout be
+greater than or equal to the screen saver timeout, this is intentionally
+omitted, leaving this policy decision to the user or the screen saver
+application. In the case of a laptop where power may be scarce, the
+importance of power savings should supersede the screen saver. If the
+laptop user plugs the unit in and power is no longer a scarce commodity,
+it may be decided to make DPMS less aggressive, or disable it completely.
+.LP
+.NH 1
+Requests
+.LP
+.PN "DPMSGetVersion"
+.LP
+.IP
+\fIclient_major_version\fP\^: CARD16
+.br
+\fIclient_minor_version\fP\^: CARD16
+.LP
+ =>
+.IP
+\fIserver_major_version\fP\^: CARD16
+.br
+\fIserver_minor_version\fP\^: CARD16
+.LP
+If supplied, the \fIclient_major_version\fP and
+\fIclient_minor_version\fP indicate what version of the protocol the
+client wants the server to implement. The server version numbers
+returned indicate the protocol this extension actually supports. This
+might not equal the version sent by the client. An implementation can
+(but need not) support more than one version simultaneously. The
+\fIserver_major_version\fP and the \fIserver_minor_version\fP are a
+mechanism to support future revisions of the Display Power Management
+Signaling protocol which may be necessary. In general, the major version
+would increment for incompatible changes, and the minor version would
+increment for small, upward-compatible changes. Servers that support the
+protocol defined in this document will return a \fIserver_major_version\fP
+of one (1), and a \fIserver_minor_version\fP of one (1).
+.LP
+.PN "DPMSCapable"
+.IP
+ =>
+.IP
+\fIcapable\fP\^: BOOL
+.LP
+This request is used to determine whether or not the currently running
+server's devices are capable of DPMS operations. The truth value of this
+request is implementation defined, but is generally based on the capabilities
+of the graphic card and monitor combination. Also, the return value in the
+case of heterogeneous multi-head servers is implementation defined.
+.LP
+.PN "DPMSGetTimeouts"
+.LP
+ =>
+.IP
+\fIstandby_timeout\fP\^: CARD16
+.br
+\fIsuspend_timeout\fP\^: CARD16
+.br
+\fIoff_timeout\fP\^: CARD16
+.LP
+This request returns the current values of the DPMS timeout values. All
+values are in units of seconds.
+.LP
+\fIstandby_timeout\fP is the amount of time of inactivity before standby
+mode is invoked. The actual effects of this mode are implementation defined,
+but in the case of DPMS compliant hardware, it is implemented by shutting off
+the horizontal sync signal, and pulsing the vertical sync signal. Standby
+mode provides the quickest monitor recovery time. Note also that many
+monitors implement this mode identically to suspend mode. A value of
+zero indicates that this mode is disabled.
+.LP
+\fIsuspend_timeout\fP is the amount of time of inactivity before the second
+level of power savings is invoked. Suspend mode's physical and electrical
+characteristics are implementation defined, but in DPMS compliant hardware,
+results in the pulsing of the horizontal sync signal, and shutting off of
+the vertical sync signal. Suspend mode recovery is considered to be slower
+than standby mode, but faster than off mode, however this is monitor
+dependent. As noted above, many monitors implement this mode identically to
+standby mode. A value of zero indicates that this mode is disabled.
+.LP
+\fIoff_timeout\fP is the amount of time of inactivity before the third and
+final level of power savings is invoked. Off mode's physical and electrical
+characteristics are implementation defined, but in DPMS compliant hardware,
+is implemented by shutting off both horizontal and vertical sync signals,
+resulting in the power-down of the monitor. Recovery time is implementation
+dependant, but frequently is similar to the power-up time of the monitor. A
+value of zero indicates that this mode is disabled.
+.LP
+.PN "DPMSSetTimeouts"
+.IP
+\fIstandby_timeout\fP\^: CARD16
+.br
+\fIsuspend_timeout\fP\^: CARD16
+.br
+\fIoff_timeout\fP\^: CARD16
+ =>
+.IP
+.LP
+All values are in units of seconds. \fIstandby_timeout\fP is the amount of
+time of inactivity before standby mode will be invoked. This is the
+lightest level of power savings, and the monitor is generally immediately
+ready upon detection of user activity. This is most often implemented by
+shutting off the horizontal sync signal to the monitor.
+A value of zero disables this mode.
+.LP
+The \fIsuspend_timeout\fP specifies the amount of time of inactivity
+before the screen is placed into suspend mode. Suspend mode is the
+middle level of power savings, resulting in a slightly longer recovery
+upon detection of activity. Suspend mode is most often implemented by
+pulsing the horizontal sync signal, and removing the vertical sync
+signal. A value of zero disables this mode.
+.LP
+The \fIoff_timeout\fP specifies the amount of time of inactivity before
+the monitor is shut off. Off mode is the deepest level of power management,
+resulting in the greatest power savings and the longest recovery time.
+Off mode is most often implemented by removing both the horizontal and
+vertical signals. A value of zero disables this mode.
+.LP
+The values of successive power levels must be greater than or equal
+to the value of the previous (non-zero) level. A BadValue error is generated
+if an illegal combination is detected.
+
+.LP
+.PN "DPMSEnable"
+.IP
+ =>
+.IP
+.LP
+This request enables the DPMS characteristics of the server, using the
+server's currently stored timeouts. If DPMS is already enabled, no change is
+effected.
+
+.LP
+.PN "DPMSDisable"
+.IP
+ =>
+.IP
+.LP
+This request disables the DPMS characteristics of the server. It does
+not affect the core or extension screen savers. If DPMS is already
+disabled, no change is effected. This request is provided so that DPMS
+may be disabled without damaging the server's stored timeout values.
+.LP
+.PN "DPMSForceLevel"
+.IP
+\fIpower_level\fP\^: CARD16
+ =>
+.IP
+.LP
+This request forces a specific DPMS level on the server. If DPMS is
+disabled, a BadMatch error is generated. If an erroneous power level
+is specified, a BadValue error is returned, and the error value contains
+the bad value. If the power level specified is already in effect, no
+changes occur. Power Level must be one of DPMSModeOn, DPMSModeStandby,
+DPMSModeSuspend or DPMSModeOff.
+.LP
+.PN "DPMSInfo"
+.IP
+ =>
+.IP
+\fIpower_level\fP\^: CARD16
+.br
+\fIstate\fP\^: BOOL
+.LP
+This request returns information about the current DPMS state of the
+display. \fIstate\fP\^ is one of DPMSEnabled or DPMSDisabled.
+If \fIstate\fP\^ is DPMSEnabled, \fIpower_level\fP\^ is returned as one
+of DPMSModeOn, DPMSModeStandby, DPMSModeSuspend or DPMSModeOff, otherwise
+it is undefined.
+.LP
+.NH 1
+Events and Errors
+.LP
+No new events or errors are defined by this extension.
+.NH 1
+Encoding
+.LP
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+.LP
+The name of this extension is "DPMS".
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSGetVersion"
+ 1 CARD8 opcode
+ 1 0 DPMS opcode
+ 2 2 request length
+ 2 CARD16 client_major_version
+ 2 CARD16 client_minor_version
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 2 CARD16 server_major_version
+ 2 CARD16 server_minor_version
+ 20 unused
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSCapable"
+ 1 CARD8 opcode
+ 1 1 DPMS opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 1 BOOL capable
+ 23 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSGetTimeouts"
+ 1 CARD8 opcode
+ 1 2 DPMS opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 2 CARD16 standby_timeout
+ 2 CARD16 suspend_timeout
+ 2 CARD16 off_timeout
+ 18 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSSetTimeouts"
+ 1 CARD8 opcode
+ 1 3 DPMS opcode
+ 2 3 request length
+ 2 CARD16 standby_timeout
+ 2 CARD16 suspend_timeout
+ 2 CARD16 off_timeout
+ 2 unused
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSEnable"
+ 1 CARD8 opcode
+ 1 4 DPMS opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSDisable"
+ 1 CARD8 opcode
+ 1 5 DPMS opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSForceLevel"
+ 1 CARD8 opcode
+ 1 6 DPMS opcode
+ 2 2 request length
+ 2 power_level
+ 0 DPMSModeOn
+ 1 DPMSModeStandby
+ 2 DPMSModeSuspend
+ 3 DPMSModeOff
+ 2 unused
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN "DPMSInfo"
+ 1 CARD8 opcode
+ 1 7 DPMS opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 2 power_level
+ 0 DPMSModeOn
+ 1 DPMSModeStandby
+ 2 DPMSModeSuspend
+ 3 DPMSModeOff
+ 1 BOOL state
+ 21 unused
diff --git a/specs/Xext/DPMSLib.ms b/specs/Xext/DPMSLib.ms
new file mode 100644
index 0000000..9b13a48
--- /dev/null
+++ b/specs/Xext/DPMSLib.ms
@@ -0,0 +1,330 @@
+.\" Use -ms and macros.t
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 1
+\s+2\fBX Display Power Management Signaling (DPMS) Extension\fP\s-2
+.sp
+.ce 1
+\s+1\fBLibrary Specification\fP\s-1
+.sp 3
+.ce 3
+Version 1.0
+X Project Team Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+Rob Lembree
+\fIlembree@zk3.dec.com\fP
+.sp 6p
+Digital Equipment Corporation
+.sp 6p
+24 April 1996
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+.bp
+.sp 15
+Copyright \(co Digital Equipment Corporation, 1996
+.LP
+Permission to use, copy, modify, distribute, and sell this
+documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice and this permission
+notice appear in all copies. Digital Equipment Corporation
+makes no representations about the suitability for any purpose
+of the information in this document. This documentation is
+provided ``as is'' without express or implied warranty.
+.LP
+.ps 10
+.nr PS 10
+.bp 1
+.EH '\fBDisplay Power Management Signaling (DPMS) Extension\fP'
+.OH '\fBDisplay Power Management Signaling (DPMS) Extension\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.LP
+This extension provides X Protocol control over the VESA Display
+Power Management Signaling (DPMS) characteristics of video boards
+under control of the X Window System.
+.FS
+1. \fIX Window System\fP is a trademark of X Consortium, Inc.
+.FE
+.LP
+Traditionally, the X Window System has provided for both blanking and
+non-blanking screen savers. Timeouts associated with these built-in
+screen saver mechanisms are limited to idle (dwell) time, and a change
+timeout that specifies the change interval for non-blanking screen savers.
+.LP
+The United States' Environmental Protection Agency (EPA) Energy Star program
+requires that monitors power down after some idle time by default.
+While it is possible to simply overload the existing screen saver timeouts,
+this solution leaves the non-privileged user little to no control over
+the DPMS characteristics of his or her system. For example, disabling
+DPMS would require some unintended side effect in the core screen saver,
+such as disabling the changing of a non-blanking screen saver. Providing
+clients with this control requires an extension to the core X Window System
+Protocol, and this extension seeks to fill this gap.
+.LP
+There are four power levels specified by the Video Electronics Standards
+Association (VESA) Display Power Management Signaling (DPMS) standard.
+These are mapped onto the X DPMS Extension like this:
+.LP
+.Ds 0
+.TA .2i 1.5i 2.5i 3.5i
+.ta .2i 1.5i 2.5i 3.5i
+.R
+.PN "DPMS Extension Power Levels"
+ 0 DPMSModeOn In use
+ 1 DPMSModeStandby Blanked, low power
+ 2 DPMSModeSuspend Blanked, lower power
+ 3 DPMSModeOff Shut off, awaiting activity
+.De
+
+.NH 1
+DPMS Functions
+
+.PN DPMSQueryExtension
+.LP
+
+Bool DPMSQueryExtension \^(\fIdisplay, event_base, error_base\fP\^)
+.IP
+ Display \fI*display;\fP
+.br
+ int \fI*event_base, *error_base;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+.br
+\fIevent_base\fP Specifies the return location for the assigned base event
+.br
+\fIerror_base\fP Specifies the return location for the assigned base error
+
+.LP
+The DPMSQueryExtension function queries the X server to determine the availability
+of the DPMS Extension. If the extension is available, the return value is TRUE,
+and \fIevent_base\fP and \fIerror_base\fP are set to the base event number and base
+error number for the extension, respectively. Otherwise, the return value is
+FALSE, and the values of \fIevent_base\fP and \fIerror_base\fP are undefined.
+.LP
+
+.PN DPMSGetVersion
+.LP
+
+Status DPMSGetVersion\^(\fIdisplay, major_version, minor_version\fP\^)
+.IP
+ Display \fI*display;\fP
+.br
+ int \fI*major_version, *minor_version;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+.br
+\fImajor_version\fP Specifies the return location for the extension major version.
+.br
+\fIminor_version\fP Specifies the return location for the extension minor version.
+
+.LP
+The DPMSGetVersion function returns the version of the DPMS extension implemented by
+the X server. The version is returned in \fImajor_version\fP and \fIminor_version\fP.
+The major version and minor version for this specification are '1' and '1', respectively.
+The major version will be incremented for protocol incompatible changes, and the minor
+version will be incremented for small, upwardly compatible changes.
+.LP
+
+.PN DPMSCapable
+.LP
+
+Bool DPMSCapable\^(\fIdisplay\fP\^)
+.IP
+ Display \fI*display;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+
+.LP
+The DPMSCapable function returns the DPMS capability of the X server, either
+TRUE \^(capable of DPMS\^) or FALSE \^(incapable of DPMS\^). The capability
+of an X server is implementation defined. For example, if a multi-headed X server
+is capable of DPMS on one head, and incapable on another, the truth value of this
+function is defined by the X server implementation.
+.LP
+
+.PN DPMSSetTimeouts
+.LP
+
+
+Status DPMSSetTimeouts\^(\fIdisplay, standby, suspend, off\fP\^)
+.IP
+ Display \fI*display;\fP
+.br
+ CARD16 \fIstandby, suspend, off;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+.br
+\fIstandby\fP Specifies the new standby timeout in seconds.
+.br
+\fIsuspend\fP Specifies the new suspend timeout in seconds.
+.br
+\fIoff\fP Specifies the new off timeout in seconds.
+
+.LP
+The DPMSSetTimeouts function permits applications to set the timeout values
+used by the X server for DPMS timings.
+.LP
+The value \fIstandby\fP is the amount of time of inactivity in seconds before
+standby mode is invoked. The actual effects of this mode are implementation
+defined, but in the case of DPMS compliant hardware, it is implemented by
+shutting off the horizontal sync signal, and pulsing the vertical sync signal.
+Standby mode provides the quickest monitor recovery time. Note also that many
+monitors implement this mode identically to suspend mode. A value of zero
+disables this mode.
+.LP
+The value \fIsuspend\fP is the amount of time of inactivity in seconds
+before the second level of power savings is invoked. Suspend mode's physical
+and electrical characteristics are implementation defined, but in DPMS compliant
+hardware, results in the pulsing of the horizontal sync signal, and shutting off
+of the vertical sync signal. Suspend mode recovery is considered to be slower
+than standby mode, but faster than off mode, however this is monitor
+dependent. As noted above, many monitors implement this mode identically to
+standby mode. A value of zero disables this mode.
+.LP
+The value \fIoff\fP is the amount of time of inactivity in seconds before the third and
+final level of power savings is invoked. Off mode's physical and electrical
+characteristics are implementation defined, but in DPMS compliant hardware,
+is implemented by shutting off both horizontal and vertical sync signals,
+resulting in the power-down of the monitor. Recovery time is implementation
+dependant, but frequently is similar to the power-up time of the monitor.
+A value of zero disables this mode.
+.LP
+Chronologically, standby mode occurs before or simultaneously with suspend mode, and
+suspend mode must occur before or simultaneously with off mode. Therefore,
+non-zero mode timeout values must be greater than or equal to the timeout values of
+earlier modes. If inconsistent values are supplied, a BadValue error will result.
+.LP
+
+.PN DPMSGetTimeouts
+.LP
+
+
+Bool DPMSGetTimeouts\^(\fIdisplay, standby, suspend, off\fP\^)
+.IP
+ Display \fI*display;\fP
+.br
+ CARD16 \fI*standby, *suspend, *off;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+.br
+\fIstandby\fP Specifies the current standby timeout in seconds.
+.br
+\fIsuspend\fP Specifies the current suspend timeout in seconds.
+.br
+\fIoff\fP Specifies the current off timeout in seconds.
+
+.LP
+The DPMSGetTimeouts function retrieves the timeout values used by the X
+server for DPMS timings.
+.LP
+The value \fIstandby\fP is the amount of time of inactivity in seconds before
+standby mode is invoked. A value of zero indicates that this mode has been disabled.
+.LP
+The value \fIsuspend\fP is the amount of time of inactivity in seconds before the
+second level of power savings is invoked. A value of zero indicates that this mode
+has been disabled.
+.LP
+The value \fIoff\fP is the amount of time of inactivity in seconds before the third
+and final level of power savings is invoked. A value of zero indicates that this mode
+has been disabled.
+.LP
+
+.PN DPMSEnable
+.LP
+
+
+Status DPMSEnable\^(\fIdisplay\fP\^)
+.IP
+ Display \fI*display;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+
+.LP
+The DPMSEnable function enables DPMS on the specified display. When
+enabled, DPMS will use the currently saved timeout values, and will
+invoke the DPMS power mode appropriate for the amount of time that
+the workstation input devices have been idle. If DPMSEnable is invoked
+on a display with DPMS already enabled, no change is made, and no
+error is returned. If DPMSEnable is invoked on a display without
+support for DPMS, no change is made and no error is returned.
+.LP
+
+.PN DPMSDisable
+.LP
+
+
+Status DPMSDisable\^(\fIdisplay\fP\^)
+.IP
+ Display \fI*display;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+
+.LP
+The DPMSDisable function disables DPMS on the specified display. When
+disabled, DPMS returns the display to DPMSModeOn. If DPMSDisable is
+invoked on a display with DPMS already disabled, no change is made,
+and no error is returned. If DPMSDisable is invoked on a display
+without support for DPMS, no change is made and no error is returned.
+.LP
+
+.PN DPMSForceLevel
+.LP
+
+
+Status DPMSForceLevel\^(\fIdisplay, level\fP\^)
+.IP
+ Display \fI*display;\fP
+.br
+ CARD16 \fIlevel;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+.br
+\fIlevel\fP Specifies the level to force power to.
+
+.LP
+The DPMSForceLevel function forces a DPMS capable display into the
+specified power level. The \fIlevel\fP must be one of
+DPMSModeOn, DPMSModeStandby, DPMSModeSuspend, or DPMSModeOff.
+Values other than these will result in a BadValue error. If DPMS
+is disabled on the display, a BadMatch protocol error will result.
+.LP
+
+.PN DPMSInfo
+.LP
+
+
+Status DPMSInfo\^(\fIdisplay, power_level, state\fP\^)
+.IP
+ Display \fI*display;\fP
+.br
+ CARD16 \fI*power_level;\fP
+.br
+ BOOL \fI*state;\fP
+.LP
+\fIdisplay\fP Specifies the connection to the X server.
+.br
+\fIpower_level\fP Specifies the current power level.
+.br
+\fIstate\fP Specifies the current DPMS state
+
+.LP
+The DPMSInfo function returns information about the current DPMS state.
+The \fIstate\fP return parameter indicates whether or not DPMS is enabled
+\^(TRUE\^) or
+disabled \^(FALSE\^). The \fIpower_level\fP return parameter indicates the current
+power level \^(one of DPMSModeOn, DPMSModeStandby, DPMSModeSuspend, or
+DPMSModeOff.\^)
+.LP
+
diff --git a/specs/Xext/bigreq.ms b/specs/Xext/bigreq.ms
new file mode 100644
index 0000000..06e56ed
--- /dev/null
+++ b/specs/Xext/bigreq.ms
@@ -0,0 +1,223 @@
+.\" Use -ms and macros.t
+.\" $Xorg: bigreq.ms,v 1.3 2000/08/17 19:42:30 cpqbld Exp $
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 1
+\s+2\fBBig Requests Extension\fP\s-2
+.sp 3
+.ce 3
+Version 2.0
+X Consortium Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+Bob Scheifler
+.sp 6p
+X Consortium, Inc.
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+Copyright \(co 1993, 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''Big Requests Extension''
+.OH ''Big Requests Extension''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.LP
+This extension enables the use of protocol requests that exceed 262140
+bytes in length.
+.LP
+The core protocol restricts the maximum length of a protocol request
+to 262140 bytes, in that it uses a 16-bit length field specifying the
+number of 4-byte units in the request. This is a problem in the core
+protocol when joining large numbers of lines
+.Pn ( PolyLine )
+or arcs
+.Pn ( PolyArc ),
+since these requests cannot be broken up into smaller requests without
+disturbing the rendering of the join points. It is also much more of
+a problem for protocol extensions, such as the PEX extension
+for 3D graphics and the XIE extension for imaging, that need to send
+long data lists in output commands.
+.LP
+This extension defines a mechanism for extending the length field
+beyond 16 bits. If the normal 16-bit length field of the protocol
+request is zero, then an additional 32-bit field containing the actual
+length (in 4-byte units) is inserted into the request, immediately
+following the 16-bit length field.
+.LP
+For example, a normal
+.PN PolyLine
+encoding is:
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyLine
+ 1 65 opcode
+ 1 coordinate-mode
+ 0 Origin
+ 1 Previous
+ 2 3+n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 4n LISTofPOINT points
+.De
+.LP
+An extended-length
+.PN PolyLine
+encoding is:
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN PolyLine
+ 1 65 opcode
+ 1 coordinate-mode
+ 0 Origin
+ 1 Previous
+ 2 0 extended length flag
+ 4 4+n request length
+ 4 DRAWABLE drawable
+ 4 GCONTEXT gc
+ 4n LISTofPOINT points
+.De
+.LP
+Extended-length protocol encodings, once enabled, can be used on all
+protocol requests, including all extensions.
+.NH 1
+Requests
+.LP
+.PN "BigReqEnable"
+.LP
+ =>
+.IP
+\fImaximum-request-length\fP\^: CARD32
+.IP
+This request enables extended-length protocol requests
+for the requesting client. It also returns the maximum length of a
+request, in 4-byte units, that can be used in extended-length protocol
+requests. This value will always be greater than the maximum-request-length
+returned in the connection setup information.
+.NH 1
+Events and Errors
+.LP
+No new events or errors are defined by this extension.
+.NH 1
+Encoding
+.LP
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+.LP
+The name of this extension is ``BIG-REQUESTS''.
+.LP
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN BigReqEnable
+ 1 CARD8 opcode
+ 1 0 bigreq opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 4 CARD32 maximum-request-length
+ 20 unused
+.De
+.NH 1
+C language binding
+.LP
+It is desirable for core Xlib, and other extensions,
+to use this extension internally when necessary.
+It is also desirable to make the use of this extension as transparent as
+possible to the X client. For example, if enabling of the extension were
+delayed until the first time it was needed, an application that used
+.PN XNextRequest
+to determine the sequence number of a request would no longer get the
+correct sequence number.
+As such,
+.PN XOpenDisplay
+will determine if the extension is supported by the server and, if it is,
+enable extended-length encodings.
+.LP
+The core Xlib functions
+.PN XDrawLines ,
+.PN XDrawArcs ,
+.PN XFillPolygon ,
+.PN XChangeProperty ,
+.PN XSetClipRectangles ,
+and
+.PN XSetRegion
+are required to use extended-length encodings when necessary, if supported
+by the server. Use of extended-length encodings in other core Xlib
+functions
+.Pn ( XDrawPoints ,
+.PN XDrawRectangles ,
+.PN XDrawSegments ,
+.PN XFillArcs ,
+.PN XFillRectangles ,
+.PN XPutImage )
+is permitted but not required; an Xlib implementation may choose to
+split the data across multiple smaller requests instead.
+.LP
+To permit clients to know what the maximum-request-length for extended-length
+encodings is, the following function is added to Xlib:
+.LP
+long
+.br
+XExtendedMaxRequestSize (display)
+.RS
+Display *display;
+.RE
+.IP
+Returns zero (0) if the specified display does not support this
+extension, otherwise returns the maximum-request-length (in 4-byte
+units) supported by the server through the extended-length encoding.
+.NH 1
+Acknowledgements
+.LP
+Clive Feather (IXI) originated the extended-length encoding used in this
+extension proposal.
diff --git a/specs/Xext/buffer.ms b/specs/Xext/buffer.ms
new file mode 100644
index 0000000..bc75132
--- /dev/null
+++ b/specs/Xext/buffer.ms
@@ -0,0 +1,1296 @@
+.\" $Xorg: buffer.ms,v 1.3 2000/08/17 19:42:31 cpqbld Exp $
+.TL
+Extending X for Double-Buffering, Multi-Buffering, and Stereo
+.AU
+Jeffrey Friedberg
+Larry Seiler
+Jeff Vroom
+.AI
+Version 3.3
+January 11, 1990
+
+\fIThe \fRMulti-Buffering\fP extension described here was a draft standard of the
+X Consortium prior to Release 6.1. It has been superseded by the Double Buffer
+Extension (DBE). DBE is an X Consortium Standard as of Release 6.1.\fP
+.SH
+Introduction
+.LP
+Several proposals have been written that address some of the
+issues surrounding the support of double-buffered, multi-buffered,
+and stereo windows in the X Window System:
+.IP \(bu
+\fIExtending X for Double-Buffering,\fP
+Jeffrey Friedberg, Larry Seiler, Randi Rost.
+.IP \(bu
+\fI(Proposal for) Double-Buffering Extensions\fP,
+Jeff Vroom.
+.IP \(bu
+\fIAn Extension to X.11 for Displays with Multiple Buffers,\fP
+David S.H. Rosenthal.
+.IP \(bu
+\fIA Multiple Buffering/Stereo Proposal\fP,
+Mark Patrick.
+.FS
+Copyright \(co 1989 Digital Equipment Corporation.
+.br
+Permission to use, copy, modify, and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+Digital Equipment Corporation makes no representations
+about the suitability for any purpose of the information in
+this document. This documentation is provided "as is"
+without express or implied warranty. This document
+is subject to change.
+.LP
+Copyright \(co 1989, 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.LP
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.FE
+.LP
+The authors of this proposal have tried to unify the above documents
+to yield a proposal that incorporates support for double-buffering,
+multi-buffering, and stereo in a way that is acceptable to all concerned.
+.SH
+Goals
+.LP
+Clients should be able to:
+.IP \(bu
+Associate multiple buffers with a window.
+.IP \(bu
+Paint in any buffer associated with a window.
+.IP \(bu
+Display any buffer associated with a window.
+.IP \(bu
+Display a series of buffers in a window in rapid succession
+to achieve a \fIsmooth\fP animation.
+.IP \(bu
+Request simultaneous display of different buffers in different windows.
+.LP
+In addition, the extension should:
+.IP \(bu
+Allow existing X applications to run unchanged.
+.IP \(bu
+Support a range of implementation methods that can capitalize on
+existing hardware features.
+.bp
+.SH
+Image Buffers
+.LP
+Normal windows are created using the standard \fBCreateWindow\fP request:
+.DS
+.ft 8
+CreateWindow
+ parent : WINDOW
+ w_id : WINDOW
+ depth : CARD8
+ visual : VISUALID or CopyFromParent
+ x, y : INT16
+ width, height : INT16
+ border_width : INT16
+ value_mask : BITMASK
+ value_list : LISTofVALUE
+.ft
+.DE
+.LP
+This request allocates a set of window attributes and
+a buffer into which an image can be drawn.
+The contents of this \fIimage buffer\fP will
+be displayed when the window is mapped to the screen.
+.LP
+To support double-buffering and multi-buffering,
+we introduce the notion that additional image buffers can
+be created and bound together to form groups.
+The following rules will apply:
+.IP \(bu
+All image buffers in a group will have the same
+visual type, depth, and geometry (ie: width and height).
+.IP \(bu
+Only one image buffer per group can be displayed
+at a time.
+.IP \(bu
+Draw operations can occur to any image buffer at
+any time.
+.IP \(bu
+Window management requests (\fBMapWindow\fP, \fBDestroyWindow\fP,
+\fBConfigureWindow\fP, etc...)
+affect all image buffers associated with a window.
+.IP \(bu
+Appropriate resize and exposure events will be generated
+for every image buffer that is affected by a window
+management operation.
+.LP
+By allowing draw operations to occur on any image buffer at any time,
+a client could, on a multi-threaded multi-processor server,
+simultaneously build up images for display.
+To support this, each buffer must have its own resource ID.
+Since buffers are different than windows and pixmaps
+(buffers are not hierarchical and pixmaps cannot be displayed)
+a new resource, \fBBuffer\fP, is introduced.
+Furthermore, a \fBBuffer\fP is also a \fBDrawable\fP, thus
+draw operations may also be performed on buffers simply
+by passing a buffer ID to the existing pixmap/window
+interface.
+.LP
+To allow existing X applications to work unchanged, we assume
+a window ID passed in a draw request, for a multi-buffered
+window, will be an \fIalias\fP for the ID of the currently
+displayed image buffer. Any draw requests (eq: \fBGetImage\fP) on
+the window will be relative to the displayed image buffer.
+.LP
+In window management requests, only a window ID will be
+accepted. Requests like \fBQueryTree\fP, will continue to
+return only window ID's. Most events will return
+just the window ID. Some new events, described in a subsequent
+section, will return a buffer ID.
+.LP
+When a window has backing store the contents of the window
+are saved off-screen. Likewise, when the contents of an image
+buffer of a multi-buffer window is saved off-screen, it is
+said to have backing store. This applies to all image buffers,
+whether or not they are selected for display.
+.LP
+In some multi-buffer implementations, undisplayed buffers might be
+implemented using pixmaps. Since the contents of pixmaps exist
+off-screen and are not affected by occlusion, these image buffers
+in effect have backing store.
+.LP
+On the other hand, both the displayed and undisplayed image buffers
+might be implemented using a subset of the on-screen pixels.
+In this case, unless the contents of an image buffer are saved
+off-screen, these image buffers in effect do not have backing store.
+.LP
+Output to any image buffer of an unmapped multi-buffered window
+that does not have backing store is discarded. Output to any
+image buffer of a mapped multi-buffer window will be performed;
+however, portions of an image buffer may be occluded or clipped.
+.LP
+When an unmapped multi-buffered window becomes mapped, the contents
+of any image buffer buffer that did not have backing store is
+tiled with the background and zero or more exposure events are
+generated. If no background is defined for the window, then
+the screen contents are not altered and the contents of any
+undisplayed image buffers are undefined. If backing store was
+maintained for an image buffer, then no exposure events are generated.
+.SH
+New Requests
+.LP
+The new request, \fBCreateImageBuffers\fP, creates a group of
+image buffers and associates them with a normal X window:
+.DS
+.ft 8
+CreateImageBuffers
+ w_id : WINDOW
+ buffers : LISTofBUFFER
+ update_action : {Undefined,Background,Untouched,Copied}
+ update_hint : {Frequent,Intermittent,Static}
+ =>
+ number_buffers : CARD16
+
+ (Errors: Window, IDChoice, Value)
+.ft
+.DE
+One image buffer will be associated with each ID passed in \fIbuffers\fP.
+The first buffer of the list is referred to as buffer[0], the next
+buffer[1], and so on. Each buffer will have the same visual type
+and geometry as the window.
+Buffer[0] will refer to the image buffer already associated
+with the window ID and its contents will not be modified.
+The displayed image buffer attribute is set to buffer[0].
+.LP
+Image buffers for the remaining ID's (buffer[1],...) are allocated.
+If the window is mapped, or if these image buffers have backing
+store, their contents will be tiled with the window background
+(if no background is defined, the buffer contents are undefined),
+and zero or more expose events will be generated for each of these
+buffers. The contents of an image buffer is undefined when
+the window is unmapped and the buffer does not have backing store.
+.LP
+If the window already has a group of image buffers
+associated with it (ie: from a previous \fBCreateImageBuffers\fP request)
+the actions described for \fBDestroyImageBuffers\fP are performed first
+(this will delete the association of the previous buffer ID's and
+their buffers as well as de-allocate all buffers except for the
+one already associated with the window ID).
+.LP
+To allow a server implementation to efficiently allocate the
+buffers, the total number of buffers required and
+the update action (how they will behave during an update)
+is specified "up front" in the request.
+If the server cannot allocate all the buffers requested, the
+total number of buffers actually allocated will be returned.
+No \fBAlloc\fP errors will be generated \- buffer[0] can
+always be associated with the existing displayed image buffer.
+.LP
+For example, an application that wants to animate a short movie
+loop may request 64 image buffers. The server may only be able to
+support 16 image buffers of this type, size, and depth.
+The application can then decide 16 buffers is sufficient and may
+truncate the movie loop, or it may decide it really needs
+64 and will free the buffers and complain to the user.
+.LP
+One might be tempted to provide a request that inquires whether \fIn\fP
+buffers of a particular type, size, and depth \fIcould\fP be allocated.
+But if the query is decoupled from the actual allocation,
+another client could sneak in and take the buffers before the
+original client has allocated them.
+.LP
+While any buffer of a group can be selected for display,
+some applications may display buffers in a predictable order
+(ie: the movie loop application). The \fIlist order\fP
+(buffer[0], buffer[1], ...) will be used as a hint by the
+server as to which buffer will be displayed next.
+A client displaying buffers in this order may see a
+performance improvement.
+.LP
+\fIupdate_action\fP indicates what should happen to a previously
+displayed buffer when a different buffer becomes displayed.
+Possible actions are:
+.IP \fIUndefined\fP 15
+The contents of the buffer that was
+last displayed will become undefined after the update. This
+is the most efficient action since it allows the implementation
+to trash the contents of the buffer if it needs to.
+.IP \fIBackground\fP
+The contents of the buffer that was
+last displayed will be set to the background of the window after the update.
+The background action allows devices to use a fast clear
+capability during an update.
+.IP \fIUntouched\fP
+The contents of the buffer that was
+last displayed will be untouched after the update. Used
+primarily when cycling through images that have already
+been drawn.
+.IP \fICopied\fP
+The contents of the buffer that was
+last displayed will become the same as those that are being
+displayed after the update. This is useful when incrementally
+adding to an image.
+.LP
+\fIupdate_hint\fP indicates how often the client will
+request a different buffer to be displayed.
+This hint will allow smart server implementations to choose the
+most efficient means to support a multi-buffered window based
+on the current need of the application (dumb implementations
+may choose to ignore this hint). Possible hints are:
+.IP \fIFrequent\fP 15
+An animation or movie loop is
+being attempted and the fastest, most efficient means for
+multi-buffering should be employed.
+.IP \fIIntermittent\fP
+The displayed image will be
+changed every so often. This is common for images that are
+displayed at a rate slower than a second. For example, a
+clock that is updated only once a minute.
+.IP \fIStatic\fP
+The displayed image buffer will
+not be changed any time soon. Typically set by an application
+whenever there is a pause in the animation.
+.LP
+To display an image buffer the following request can be used:
+.DS
+.ft 8
+DisplayImageBuffers
+ buffers : LISTofBUFFER
+ min_delay : CARD16
+ max_delay : CARD16
+
+ (Errors: Buffer, Match)
+.ft
+.DE
+The image buffers listed will become displayed as simultaneously
+as possible and the update action, bound at \fBCreateImageBuffers\fP
+time, will be performed.
+.LP
+A list of buffers is specified to
+allow the server to efficiently change the display of more than one
+window at a time (ie: when a global screen swap method is used).
+Attempting to simultaneously display
+multiple image buffers from the same window is an error
+(\fBMatch\fP) since it violates the rule that only one
+image buffer per group can be displayed at a time.
+.LP
+If a specified buffer is already displayed,
+any delays and update action will still be
+performed for that buffer. In this instance,
+only the update action of \fIBackground\fP (and possibly
+\fIUndefined\fP) will have any affect on the contents
+of the displayed buffer. These semantics allow
+an animation application to successfully execute
+even when there is only a single buffer available
+for a window.
+.LP
+When a \fBDisplayImageBuffers\fP request is made to an unmapped
+multi-buffered window, the effect of the update action depends
+on whether the image buffers involved have backing store.
+When the target of the update action is an image buffer that
+does not have backing store, output is discarded. When the
+target image buffer does have backing store, the update is performed;
+however, when the source of the update is an image buffer does not
+have backing store (as in the case of update action \fICopied\fP), the
+contents of target image buffer will become undefined.
+.LP
+\fImin_delay\fP and \fImax_delay\fP put a bound on how long the
+server should wait before processing the display request.
+For each of the windows to be updated by this request, at least
+\fImin_delay\fP milli-seconds should elapse since the last
+time any of the windows were updated; conversely, no window
+should have to wait more than \fImax_delay\fP milli-seconds
+before being updated.
+.LP
+\fImin_delay\fP allows an application to
+\fIslow down\fP an animation or movie loop so that it appears
+synchronized at a rate the server can support given the current load.
+For example, a \fImin_delay\fP of 100 indicates the server should
+wait at least 1/10 of a second since the last time any of the
+windows were updated. A \fImin_delay\fP of zero indicates
+no waiting is necessary.
+.LP
+\fImax_delay\fP can be thought of as an additional
+delay beyond \fImin_delay\fP the server is allowed to wait
+to facilitate such things as efficient update of multiple windows.
+If \fImax_delay\fP would require an update before \fImin_delay\fP
+is satisfied, then the server should process the display request as
+soon as the \fImin_delay\fP requirement is met. A typical
+value for \fImax_delay\fP is zero.
+.LP
+To implement the above functionality, the time since the last
+update by a \fBDisplayImageBuffers\fP request for each multi-buffered
+window needs to be saved as state by the server.
+The server may delay execution of the \fBDisplayImageBuffers\fP
+request until the appropriate time (e.g. by requeuing the
+request after computing the timeout);
+however, the entire request must be processed in one operation.
+Request execution indivisibility must be maintained. When
+a server is implemented with internal concurrency, the
+extension must adhere to the same concurrency semantics
+as those defined for the core protocol.
+.LP
+To explicitly clear a rectangular area of an image buffer to
+the window background, the following request can be used:
+.DS
+.ft 8
+ClearImageBufferArea
+ buffer : BUFFER
+ x, y : INT16
+ w, h : CARD16
+ exposures : BOOL
+
+ (Errors: Buffer, Value)
+.ft P
+.DE
+.LP
+Like the X \fBClearArea\fP request, \fIx\fP and \fIy\fP are relative to
+the window's origin and specify the upper-left corner of the rectangle.
+If \fIwidth\fP is zero, it is replaced with the current window width
+minus \fIx\fP. If \fIheight\fP is zero it is replaced with the current
+window height minus \fIy\fP. If the window has a defined background
+tile, the rectangle is tiled with a plane mask of all ones,
+a function of \fICopy\fP, and a subwindow-mode of \fIClipByChildren\fP.
+If the window has background \fINone\fP, the contents of the buffer
+are not changed. In either case, if \fIexposures\fP is true, then one or
+more exposure events are generated for regions of the rectangle that are
+either visible or are being retained in backing store.
+.LP
+The group of image buffers allocated by a \fBCreateImageBuffers\fP
+request can be destroyed with the following request:
+.DS
+.ft 8
+DestroyImageBuffers
+ w_id : WINDOW
+
+ (Error: Window)
+.ft
+.DE
+.LP
+The association between the buffer ID's and their corresponding
+image buffers are deleted. Any image buffers not selected for
+display are de-allocated. If the window is not multi-buffered,
+the request is ignored.
+.SH
+Attributes
+.LP
+The following attributes will be associated with each window that
+is multi-buffered:
+.DS
+.ft 8
+ displayed_buffer : CARD16
+ update_action : {Undefined,Background,Untouched,Copied}
+ update_hint : {Frequent,Intermittent,Static}
+ window_mode : {Mono,Stereo}
+ buffers : LISTofBUFFER
+.ft
+.DE
+.LP
+\fIdisplayed_buffer\fP is set to the \fIindex\fP of the currently
+displayed image buffer (for stereo windows, this will be
+the index of the left buffer \- the index of the right buffer
+is simply \fIindex\fP+1).
+\fIwindow_mode\fP indicates whether this window is \fIMono\fP or \fIStereo\fP.
+The ID for each buffer associated with the window is recorded
+in the \fIbuffers\fP list.
+The above attributes can be queried with the following request:
+.DS
+.ft 8
+GetMultiBufferAttributes
+ w_id : WINDOW
+ =>
+ displayed_buffer : CARD16
+ update_action : {Undefined,Background,Untouched,Copied}
+ update_hint : {Frequent,Intermittent,Static}
+ window_mode : {Mono,Stereo}
+ buffers : LISTofBUFFER
+
+ (Errors: Window, Access, Value)
+.ft
+.DE
+.LP
+If the window is not multi-buffered, a \fBAccess\fP error will be generated.
+The only multi-buffer attribute that can be explicitly set
+is \fIupdate_hint\fP. Rather than have a specific request
+to set this attribute, a generic set request is provided to
+allow for future expansion:
+.DS
+.ft 8
+SetMultiBufferAttributes
+ w_id : WINDOW
+ value_mask : BITMASK
+ value_list : LISTofVALUE
+
+ (Errors: Window, Match, Value)
+.ft
+.DE
+.LP
+If the window is not multi-buffered, a \fBMatch\fP error will be generated.
+The following attributes are maintained for each buffer of a
+multi-buffered window:
+.DS
+.ft 8
+ window : WINDOW
+ event_mask : SETofEVENT
+ index : CARD16
+ side : {Mono,Left,Right}
+.ft
+.DE
+.LP
+\fIwindow\fP indicates the window this buffer is associated with.
+\fIevent_mask\fP specifies which events, relevant to
+buffers, will be sent back to the client via the associated buffer ID
+(initially no events are selected).
+\fIindex\fP is the list position (0, 1, ...) of the buffer.
+\fIside\fP indicates whether this buffer is associated with
+the left side or right side of a stereo window.
+For non-stereo windows, this attribute will be set to \fIMono\fP.
+These attributes can be queried with the following request:
+.DS
+.ft 8
+GetBufferAttributes
+ buffer : BUFFER
+ =>
+ window : WINDOW
+ event_mask : SETofEVENT
+ index : CARD16
+ side : {Mono,Left,Right}
+
+ (Errors: Buffer, Value)
+.ft
+.DE
+.LP
+The only buffer attribute that can be explicitly set
+is \fIevent_mask\fP.
+The only events that are valid are
+\fBExpose\fP and the new \fBClobberNotify\fP and \fBUpdateNotify\fP event
+(see Events section below).
+A \fBValue\fP error will be generated if an event not selectable
+for a buffer is specified in an event mask.
+Rather than have a specific request
+to set this attribute, a generic set request is provided to
+allow for future expansion:
+.DS
+.ft 8
+SetBufferAttributes
+ buffer : BUFFER
+ value_mask : BITMASK
+ value_list : LISTofVALUE
+
+ (Errors: Buffer, Value)
+.ft
+.DE
+.LP
+Clients may want to query the server about basic multi-buffer
+and stereo capability on a per screen basis. The following request
+returns a large list of information
+that would most likely be read once by Xlib for each screen, and used as a data base for
+other Xlib queries:
+.DS
+.ft 8
+GetBufferInfo
+ root : WINDOW
+ =>
+ info : LISTofSCREEN_INFO
+.ft
+.DE
+.LP
+Where \fBSCREEN_INFO\fP and \fBBUFFER_INFO\fP are defined as:
+.DS
+.ft 8
+
+ SCREEN_INFO : [ normal_info : LISTofBUFFER_INFO,
+ stereo_info : LISTofBUFFER_INFO ]
+
+ BUFFER_INFO : [ visual : VISUALID,
+ max_buffers : CARD16,
+ depth : CARD8 ]
+.ft
+.DE
+.LP
+Information regarding multi-buffering of normal (mono) windows
+is returned in the \fInormal_info\fP list. The \fIstereo_info\fP
+list contains information about stereo windows.
+If the \fIstereo_info\fP list is empty, stereo windows are
+not supported on the screen. If \fImax_buffers\fP is zero,
+the maximum number of buffers for the depth and visual is
+a function of the size of the created window and current
+memory limitations.
+.LP
+The following request returns the major and minor version numbers
+of this extension:
+.DS
+.ft 8
+GetBufferVersion
+ =>
+ major_number : CARD8
+ minor_number : CARD8
+.ft
+.DE
+.LP
+The version numbers are an escape hatch in case future revisions of
+the protocol are necessary. In general, the major version would
+increment for incompatible changes, and the minor version would
+increment for small upward compatible changes. Barring changes, the
+major version will be 1, and the minor version will be 1.
+.SH
+Events
+.LP
+All events normally generated for single-buffered
+windows are also generated for multi-buffered windows.
+Most of these events (ie: \fBConfigureNotify\fP) will
+only be generated for the window and not for each buffer.
+These events will return a window ID.
+.LP
+\fBExpose\fP events will be generated for both the window
+and any buffer affected. When this event is generated for
+a buffer, the same event structure will be used
+but a buffer ID is returned instead of a window ID.
+Clients, when processing these events, will know whether an
+ID returned in an event structure is for a window or a buffer
+by comparing the returned ID to the ones returned when the
+window and buffer were created.
+.LP
+\fBGraphicsExposure\fP and \fBNoExposure\fP are generated
+using whatever ID is specified in the graphics operation.
+If a window ID is specified, the event will contain the
+window ID. If a buffer ID is specified, the event will
+contain the buffer ID.
+.LP
+In some implementations, moving a window
+over a multi-buffered window may cause one or more of its buffers
+to get overwritten or become unwritable. To allow a
+client drawing into one of these buffers the opportunity
+to stop drawing until some portion of the buffer is
+writable, the following event is added:
+.DS
+.ft 8
+ClobberNotify
+ buffer : BUFFER
+ state : {Unclobbered,PartiallyClobbered,FullyClobbered}
+.ft
+.DE
+.LP
+The \fBClobberNotify\fP event is reported to clients selecting
+\fIClobberNotify\fP on a buffer. When a buffer that was fully
+or partially clobbered becomes unclobbered, an event with \fIUnclobbered\fP
+is generated. When a buffer that was unclobbered becomes
+partially clobbered, an event with \fIPartiallyClobbered\fP
+is generated. When a buffer that was unclobbered or
+partially clobbered becomes fully clobbered, an event with
+\fIFullyClobbered\fP is generated.
+.LP
+\fBClobberNotify\fP events on a given buffer are
+generated before any \fBExpose\fP events on that buffer,
+but it is not required that all \fBClobberNotify\fP
+events on all buffers be generated before all
+\fBExpose\fP events on all buffers.
+.LP
+The ordering of \fBClobberNotify\fP events with respect
+to \fBVisibilityNotify\fP events is not constrained.
+.LP
+If multiple buffers were used as an image FIFO between an image
+server and the X display server, then the FIFO manager would like
+to know when a buffer that was previously displayed, has been
+undisplayed and updated, as the side effect of a \fBDisplayImageBuffers\fP
+request. This allows the FIFO manager to load up a future frame as
+soon as a buffer becomes available. To support this,
+the following event is added:
+.DS
+.ft 8
+UpdateNotify
+ buffer : BUFFER
+.ft
+.DE
+.LP
+The \fBUpdateNotify\fP event is reported to clients selecting
+\fIUpdateNotify\fP on a buffer. Whenever a buffer becomes \fIupdated\fP
+(e.g. its update action is performed as part of a \fBDisplayImageBuffers\fP
+request), an \fBUpdateNotify\fP event is generated.
+.SH
+Errors
+.LP
+The following error type has been added to support
+this extension:
+.IP \fBBuffer\fP 15
+A value for a BUFFER argument does not name a defined
+BUFFER.
+.bp
+.SH
+Double-Buffering Normal Windows
+.LP
+The following pseudo-code fragment illustrates how to create and display
+a double-buffered image:
+.DS
+.ft 8
+/*
+ * Create a normal window
+ */
+CreateWindow( W, ... )
+
+/*
+ * Create two image buffers. Assume after display, buffer
+ * contents become "undefined". Assume we will "frequently"
+ * update the display. Abort if we don't get two buffers,
+ */
+n = CreateImageBuffers( W, [B0,B1], Undefined, Frequent )
+if (n != 2) <abort>
+
+/*
+ * Map window to the screen
+ */
+MapWindow( W )
+
+/*
+ * Draw images using alternate buffers, display every
+ * 1/10 of a second. Note we draw B1 first so it will
+ * "pop" on the screen
+ */
+while animating
+{
+ <draw picture using B1>
+ DisplayImageBuffers( [B1], 100, 0 )
+
+ <draw picture using B0>
+ DisplayImageBuffers( [B0], 100, 0 )
+}
+
+/*
+ * Strip image buffers and leave window with
+ * contents of last displayed image buffer.
+ */
+DestroyImageBuffers( W )
+.ft
+.DE
+.bp
+.SH
+Multi-Buffering Normal Windows
+.LP
+Multi-buffered images are also supported by these requests.
+The following pseudo-code fragment illustrates how to create a
+a multi-buffered image and cycle through the images to
+simulate a movie loop:
+.DS
+.ft 8
+/*
+ * Create a normal window
+ */
+CreateWindow( W, ... )
+
+/*
+ * Create 'N' image buffers. Assume after display, buffer
+ * contents are "untouched". Assume we will "frequently"
+ * update the display. Abort if we don't get all the buffers.
+ */
+n = CreateImageBuffers( W, [B0,B1,...,B(N-1)], Untouched, Frequent )
+if (n != N) <abort>
+
+/*
+ * Map window to screen
+ */
+MapWindow( W )
+
+/*
+ * Draw each frame of movie one per buffer
+ */
+foreach frame
+ <draw frame using B(i)>
+
+/*
+ * Cycle through frames, one frame every 1/10 of a second.
+ */
+while animating
+{
+ foreach frame
+ DisplayImageBuffers( [B(i)], 100, 0 )
+}
+.ft
+.DE
+.bp
+.SH
+Stereo Windows
+.LP
+\fIHow\fP stereo windows are supported on a server is implementation
+dependent. A server may contain specialized hardware that allows
+left and right images to be toggled at field or frame rates. The
+stereo affect may only be perceived with the aid of special
+viewing glasses. The \fIdisplay\fP of a stereo picture should
+be independent of how often the contents of the picture are
+\fIupdated\fP by an application. Double and multi-buffering
+of images should be possible regardless of whether the image
+is displayed normally or in stereo.
+.LP
+To achieve this goal, a simple extension to normal windows
+is suggested. Stereo windows are just like normal windows
+except the displayed image is made up of a left image
+buffer and a right image buffer. To create a stereo window,
+a client makes the following request:
+.DS
+.ft 8
+CreateStereoWindow
+ parent : WINDOW
+ w_id : WINDOW
+ left, right : BUFFER
+ depth : CARD8
+ visual : VISUALID or CopyFromParent
+ x, y : INT16
+ width, height : INT16
+ border_width : INT16
+ value_mask : BITMASK
+ value_list : LISTofVALUE
+
+ (Errors: Alloc, Color, Cursor, Match,
+ Pixmap, Value, Window)
+.ft
+.DE
+.LP
+This request, modeled after the \fBCreateWindow\fP request,
+adds just two new parameters: \fIleft\fP and \fIright\fP.
+For stereo, it is essential that one can distinguish whether
+a draw operation is to occur on the left image or right image.
+While an internal mode could have been added to achieve this,
+using two buffer ID's allows clients to simultaneously build up
+the left and right components of a stereo image. These
+ID's always refer to (are an alias for) the left and right
+image buffers that are currently \fIdisplayed\fP.
+.LP
+Like normal windows, the window ID is used whenever a window
+management operation is to be performed. Window queries would
+also return this window ID (eg: \fBQueryTree\fP) as would most
+events. Like the window ID, the left and right buffer ID's
+each have their own event mask. They can be set and queried
+using the \fBSet/GetBufferAttributes\fP requests.
+.LP
+Using the window ID of a stereo window in a draw request
+(eg: \fBGetImage\fP) results in pixels that are \fIundefined\fP.
+Possible semantics are that both left and right images get
+drawn, or just a single side is operated on (existing applications
+will have to be re-written to explicitly use the left and right
+buffer ID's in order to successfully create, fetch, and store
+stereo images).
+.LP
+Having an explicit \fBCreateStereoWindow\fP request is helpful
+in that a server implementation will know from the onset whether
+a stereo window is desired and can return appropriate status
+to the client if it cannot support this functionality.
+.LP
+Some hardware may support separate stereo and non-stereo modes,
+perhaps with different vertical resolutions. For example, the
+vertical resolution in stereo mode may be half that of non-stereo
+mode. Selecting one mode or the other must be done through some
+means outside of this extension (eg: by providing a separate
+screen for each hardware display mode). The screen attributes
+(ie: x/y resolution) for a screen that supports normal windows,
+may differ from a screen that supports stereo windows;
+however, all windows, regardless of type, displayed on the
+same screen must have the same screen attributes
+(ie: pixel aspect ratio).
+.LP
+If a screen that supports stereo windows also supports
+normal windows, then the images presented to the left and
+right eyes for normal windows should be the same
+(ie: have no stereo offset).
+.KS
+.SH
+Single-Buffered Stereo Windows
+.LP
+The following shows how to create and display a single-buffered
+stereo image:
+.DS
+.ft 8
+/*
+ * Create the stereo window, map it the screen,
+ * and draw the left and right images
+ */
+CreateStereoWindow( W, L, R, ... )
+
+MapWindow( W )
+
+<draw picture using L,R>
+.ft
+.DE
+.KE
+.bp
+.SH
+Double-Buffering Stereo Windows
+.LP
+Additional image buffers may be added to a stereo window
+to allow double or multi-buffering of stereo images.
+Simply use the the \fBCreateImageBuffers\fP request.
+Even numbered buffers (0,2,...) will be left buffers.
+Odd numbered buffers (1,3,...) will be right buffers.
+Displayable stereo images are formed by consecutive
+left/right pairs of image buffers. For example,
+(buffer[0],buffer[1]) form the first displayable
+stereo image; (buffer[2],buffer[3]) the next;
+and so on.
+.LP
+The \fBCreateImageBuffers\fP request will only create
+pairs of left and right image buffers for stereo windows.
+By always pairing left and right image
+buffers together, implementations might be able to
+perform some type of optimization. If an odd number
+of buffers is specified, a \fBValue\fP error is generated.
+All the rules mentioned at the start of this proposal
+still apply to the image buffers supported by a stereo window.
+.LP
+To display a image buffer pair of a multi-buffered stereo image,
+either the left buffer ID or right buffer ID may be specified in a
+\fBDisplayImageBuffers\fP request, but not both.
+.LP
+To double-buffer a stereo window:
+.DS
+.ft 8
+/*
+ * Create stereo window and map it to the screen
+ */
+CreateStereoWindow( W, L, R, ... )
+
+/*
+ * Create two pairs of image buffers. Assume after display,
+ * buffer contents become "undefined". Assume we will "frequently"
+ * update the display. Abort if we did get all the buffers.
+ */
+n = CreateImageBuffers( W, [L0,R0,L1,R1], Undefined, Frequently )
+if (n != 4) <abort>
+
+/*
+ * Map window to the screen
+ */
+MapWindow( W )
+
+/*
+ * Draw images using alternate buffers,
+ * display every 1/10 of a second.
+ */
+while animating
+{
+ <draw picture using L1,R1>
+ DisplayImageBuffers( [L1], 100, 0 )
+
+ <draw picture using L0,R0>
+ DisplayImageBuffers( [L0], 100, 0 )
+}
+.ft
+.DE
+.bp
+.SH
+Multi-Buffering Stereo Windows
+.LP
+To cycle through \fIN\fP stereo images:
+.DS
+.ft 8
+/*
+ * Create stereo window
+ */
+CreateStereoWindow( W, L, R, ... )
+
+/*
+ * Create N pairs of image buffers. Assume after display,
+ * buffer contents are "untouched". Assume we will "frequently"
+ * update the display. Abort if we don't get all the buffers.
+ */
+n = CreateImageBuffers( W, [L0,R0,...,L(N-1),R(N-1)], Untouched, Frequently )
+if (n != N*2) <abort>
+
+/*
+ * Map window to screen
+ */
+MapWindow( W )
+
+/*
+ * Draw the left and right halves of each image
+ */
+foreach stereo image
+ <draw picture using L(i),R(i)>
+
+/*
+ * Cycle through images every 1/10 of a second
+ */
+while animating
+{
+ foreach stereo image
+ DisplayImageBuffers( [L(i)], 100, 0 )
+}
+.ft
+.DE
+.bp
+.SH
+Protocol Encoding
+.LP
+The official name of this extension is "Multi-Buffering".
+When this string passed to \fBQueryExtension\fP the
+information returned should be interpreted as follows:
+.IP \fImajor-opcode\fP 15
+Specifies the major opcode of this extension.
+The first byte of each extension request should
+specify this value.
+.IP \fIfirst-event\fP
+Specifies the code that will be returned when
+\fBClobberNotify\fP events are generated.
+.IP \fIfirst-error\fP
+Specifies the code that will be returned when
+\fBBuffer\fP errors are generated.
+.LP
+The following sections describe the protocol
+encoding for this extension.
+.SH
+TYPES
+.LP
+BUFFER_INFO
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+4 VISUALID visual
+2 CARD16 max-buffers
+1 CARD8 depth
+1 unused
+.TE
+.LP
+SETofBUFFER_EVENT
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+\0 #x00008000 Exposure
+\0 #x02000000 ClobberNotify
+\0 #x04000000 UpdateNotify
+.TE
+.SH
+EVENTS
+.LP
+\fBClobberNotify\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fIfirst-event\fP code
+1 unused
+2 CARD16 sequence number
+4 BUFFER buffer
+1 state
+ 0 Unclobbered
+ 1 PartiallyClobbered
+ 2 FullyClobbered
+23 unused
+.TE
+.LP
+\fBUpdateNotify\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 \fIfirst-event\fP+1 code
+1 unused
+2 CARD16 sequence number
+4 BUFFER buffer
+24 unused
+.TE
+.SH
+ERRORS
+.LP
+\fBBuffer\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 0 Error
+1 see \fIfirst-error\fP code
+2 CARD16 sequence number
+4 CARD32 bad resource id
+2 CARD16 minor-opcode
+1 CARD8 major-opcode
+21 unused
+.TE
+.bp
+.SH
+REQUESTS
+.KS
+.LP
+\fBGetBufferVersion\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 0 minor-opcode
+2 1 request length
+\(->
+1 1 Reply
+1 unused
+2 CARD16 sequence number
+4 0 reply length
+1 CARD8 major version number
+1 CARD8 minor version number
+22 unused
+.TE
+.KE
+.KS
+.LP
+\fBCreateImageBuffers\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 1 minor-opcode
+2 3+n request length
+4 WINDOW wid
+1 update-action
+ 0 Undefined
+ 1 Background
+ 2 Untouched
+ 3 Copied
+1 update-hint
+ 0 Frequent
+ 1 Intermittent
+ 2 Static
+2 unused
+4n LISTofBUFFER buffer-list
+\(->
+1 1 Reply
+1 unused
+2 CARD16 sequence number
+4 0 reply length
+2 CARD16 number-buffers
+22 unused
+.TE
+.KE
+.KS
+.LP
+\fBDestroyImageBuffers\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 2 minor-opcode
+2 2 request length
+4 WINDOW wid
+.TE
+.KE
+.KS
+.LP
+\fBDisplayImageBuffers\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 3 minor-opcode
+2 2+n request length
+2 CARD16 min-delay
+2 CARD16 max-delay
+4n LISTofBUFFER buffer-list
+.TE
+.KE
+.KS
+.LP
+\fBSetMultiBufferAttributes\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 4 minor-opcode
+2 3+n request length
+4 WINDOW wid
+
+4 BITMASK value-mask (has n bits set to 1)
+ #x00000001 update-hint
+
+4n LISTofVALUE value-list
+
+VALUEs
+1 update-hint
+ 0 Frequent
+ 1 Intermittent
+ 2 Static
+.TE
+.KE
+.KS
+.LP
+\fBGetMultiBufferAttributes\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 5 minor-opcode
+2 2 request length
+4 WINDOW wid
+\(->
+1 1 Reply
+1 unused
+2 CARD16 sequence number
+4 n reply length
+2 CARD16 displayed-buffer
+1 update-action
+ 0 Undefined
+ 1 Background
+ 2 Untouched
+ 3 Copied
+1 update-hint
+ 0 Frequent
+ 1 Intermittent
+ 2 Static
+1 window-mode
+ 0 Mono
+ 1 Stereo
+19 unused
+4n LISTofBUFFER buffer list
+.TE
+.KE
+.KS
+.LP
+\fBSetBufferAttributes\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 6 minor-opcode
+2 3+n request length
+4 BUFFER buffer
+
+4 BITMASK value-mask (has n bits set to 1)
+ #x00000001 event-mask
+
+4n LISTofVALUE value-list
+
+VALUEs
+4 SETofBUFFER_EVENT event-mask
+.TE
+.KE
+.KS
+.LP
+\fBGetBufferAttributes\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 7 minor-opcode
+2 2 request length
+4 BUFFER buffer
+\(->
+1 1 Reply
+1 unused
+2 CARD16 sequence number
+4 0 reply length
+4 WINDOW wid
+4 SETofBUFFER_EVENT event-mask
+2 CARD16 index
+1 side
+ 0 Mono
+ 1 Left
+ 2 Right
+13 unused
+.TE
+.KE
+.KS
+.LP
+\fBGetBufferInfo\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 8 minor-opcode
+2 2 request length
+4 WINDOW root
+\(->
+1 1 Reply
+1 unused
+2 CARD16 sequence number
+4 2(n+m) reply length
+2 n number BUFFER_INFO in normal-info
+2 m number BUFFER_INFO in stereo-info
+20 unused
+8n LISTofBUFFER_INFO normal-info
+8m LISTofBUFFER_INFO stereo-info
+.TE
+.KE
+.KS
+.LP
+\fBCreateStereoWindow\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 9 minor-opcode
+2 11+n request length
+3 unused
+1 CARD8 depth
+4 WINDOW wid
+4 WINDOW parent
+4 BUFFER left
+4 BUFFER right
+2 INT16 x
+2 INT16 y
+2 CARD16 width
+2 CARD16 height
+2 CARD16 border-width
+2 class
+ 0 CopyFromParent
+ 1 InputOutput
+ 2 InputOnly
+
+4 VISUALID visual
+ 0 CopyFromParent
+
+4 BITMASK value-mask (has n bits set to 1)
+ \fIencodings are the same\fP
+ \fIas for CreateWindow\fP
+
+4n LISTofVALUE value-list
+ \fIencodings are the same\fP
+ \fIas for CreateWindow\fP
+.TE
+.KE
+.KS
+.LP
+\fBClearImageBufferArea\fP
+.TS
+lw(.5i) lw(1.5i) lw(2i).
+1 see \fImajor-opcode\fP major-opcode
+1 10 minor-opcode
+2 5 request length
+4 WINDOW buffer
+2 INT16 x
+2 INT16 y
+2 CARD16 width
+2 CARD16 height
+3 unused
+1 BOOL exposures
+.TE
+.KE
+
diff --git a/specs/Xext/dbe.tex b/specs/Xext/dbe.tex
new file mode 100644
index 0000000..ea43e58
--- /dev/null
+++ b/specs/Xext/dbe.tex
@@ -0,0 +1,782 @@
+% $Xorg: dbe.tex,v 1.3 2000/08/17 19:42:31 cpqbld Exp $
+% edited for DP edits and code consistency w/ core protocol/xlib 3/30/96
+% split into separate library and protocol documentos 4/15/96
+\documentstyle{article}
+\pagestyle{myheadings}
+\markboth{Double Buffer Extension Specification}{Double Buffer Extension Specification}
+\setlength{\parindent}{0 pt}
+\setlength{\parskip}{6pt}
+\setlength{\topsep}{0 pt}
+
+% Request names are literal symbols; therefore, use the same font for both.
+\newcommand{\requestname}[1]{{\tt #1}}
+\newcommand{\literal}[1]{\mbox{\tt #1}}
+
+\newcommand{\encodingsection}[1]{{\bf #1}}
+\newcommand{\requestsection}[1]{{\bf #1}}
+
+% Font treatment of type names differs between protocol and library sections.
+\newcommand{\libtypename}[1]{\mbox{\tt #1}}
+\newcommand{\typename}[1]{\mbox{\rm #1}} % default font
+\newcommand{\typeargname}[1]{\mbox{\rm #1}} % default font
+\newcommand{\argname}[1]{\mbox{\it #1}}
+\newcommand{\argdecl}[2]{\argname{#1} & : \typename{#2}\\}
+\newcommand{\areplyargdecl}[2]{#1 & : \typename{#2}\\}
+
+\newenvironment{arequest}[1]{\requestsection{#1} \\ \begin{tabular}{ll}}{\end{tabular}}
+\newcommand{\areply}{$\Rightarrow$\\}
+
+\newcommand{\etabstops}{\hspace*{0cm}\=\hspace*{1cm}\=\hspace*{5cm}\=\kill}
+
+\newcommand{\eargdecl}[3]{\> #1 \> \typename{#2} \> #3 \\}
+
+\newenvironment{keeptogether}{\vbox \bgroup}{\egroup}
+
+\newenvironment{erequest}[3]{\pagebreak[3] \begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops \eargdecl{1}{CARD8}{major-opcode} \eargdecl{1}{#2}{minor-opcode} \eargdecl{2}{#3}{request length}}{\end{tabbing} \end{keeptogether}}
+
+\newenvironment{eerror}[1]{\begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
+
+\newenvironment{etypedef}[1]{\begin{keeptogether} \typename{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
+
+\newcommand{\cfunctionname}[1]{\mbox{\tt #1}}
+\newcommand{\cfunctiondecl}[1]{\mbox{\rm #1}}
+\newcommand{\cargdecl}[2]{\penalty -1\typename{#1} \argname{#2}}
+\newenvironment{cfunction}[2]{\begin{sloppypar}\begin{keeptogether}\vspace{5mm}\typename{#1}\\ \cfunctiondecl{#2}\ (}{)\end{keeptogether}\end{sloppypar}{\hangafter=2 \hangindent=20pt \raggedright\par}}
+
+% make things easier with all the long names
+\spaceskip .3333em plus 5em
+\tolerance=2000
+
+\begin{document}
+
+\title{Double Buffer Extension Protocol\\Protocol Version 1.0\\X Consortium Standard}
+\author{Ian Elliott\\Hewlett-Packard Company \and David P. Wiggins\\X Consortium, Inc.}
+\maketitle
+\thispagestyle{empty}
+
+\eject
+
+Copyright \copyright 1989 X Consortium, Inc. and Digital Equipment Corporation.
+
+Copyright \copyright 1992 X Consortium, Inc. and Intergraph Corporation.
+
+Copyright \copyright 1993 X Consortium, Inc. and Silicon Graphics, Inc.
+
+Copyright \copyright 1994, 1995 X Consortium, Inc. and Hewlett-Packard Company.
+
+Permission to use, copy, modify, and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+Digital Equipment Corporation, Intergraph Corporation, Silicon
+Graphics, Hewlett-Packard, and the X Consortium make no
+representations about the suitability for any purpose of the
+information in this document. This documentation is provided ``as is''
+without express or implied warranty.
+
+\eject
+
+\section{Introduction}
+
+The Double Buffer Extension (DBE) provides a standard way to utilize
+double-buffering within the framework of the X Window System.
+Double-buffering uses two buffers, called front and back, which hold
+images. The front buffer is visible to the user; the back buffer is
+not. Successive frames of an animation are rendered into the back
+buffer while the previously rendered frame is displayed in the front
+buffer. When a new frame is ready, the back and front buffers swap
+roles, making the new frame visible. Ideally, this exchange appears to
+happen instantaneously to the user and with no visual artifacts. Thus,
+only completely rendered images are presented to the user, and they remain
+visible during the entire time it takes to render a new frame. The
+result is a flicker-free animation.
+
+\section{Goals}
+
+This extension should enable clients to:
+\begin{itemize}
+
+\item Allocate and deallocate double-buffering for a window.
+
+\item Draw to and read from the front and back buffers associated with
+a window.
+
+\item Swap the front and back buffers associated with a window.
+
+\item Specify a wide range of actions to be taken when a window is
+swapped. This includes explicit, simple swap actions (defined
+below), and more complex actions (for example, clearing ancillary buffers)
+that can be put together within explicit ``begin'' and ``end''
+requests (defined below).
+
+\item Request that the front and back buffers associated with multiple
+double-buffered windows be swapped simultaneously.
+
+\end{itemize}
+
+In addition, the extension should:
+
+\begin{itemize}
+
+\item Allow multiple clients to use double-buffering on the same window.
+
+\item Support a range of implementation methods that can capitalize on
+existing hardware features.
+
+\item Add no new event types.
+
+\item Be reasonably easy to integrate with a variety of direct graphics
+hardware access (DGHA) architectures.
+\end{itemize}
+
+\section{Concepts}
+
+Normal windows are created using the core \requestname{CreateWindow}
+request, which allocates a set of window attributes and, for
+\literal{InputOutput} windows, a front buffer,
+into which an image can be drawn.
+The contents of this buffer will be displayed when the window is
+visible.
+
+This extension enables applications to use double-buffering with a
+window. This involves creating a second buffer, called a back buffer,
+and associating one or more back buffer names (\typename{XID}s) with
+the window for use when referring to (that is, drawing to or reading
+from) the window's back buffer. The back buffer name is a
+\typename{DRAWABLE} of type \typename{BACKBUFFER}.
+
+DBE provides a relative double-buffering model. One XID, the window,
+always refers to the front buffer. One or more other XIDs, the back buffer
+names, always refer to the back buffer. After a buffer swap, the
+window continues to refer to the (new) front buffer, and the
+back buffer name continues to refer to the (new) back buffer. Thus,
+applications and toolkits that want to just render to the back buffer
+always use the back buffer name for all drawing requests to the
+window. Portions of an application that want to render to the front
+buffer always use the window XID for all drawing requests to the
+window.
+
+Multiple clients and toolkits can all use double-buffering on the same
+window. DBE does not provide a request for querying whether a window
+has double-buffering support, and if so, what the back buffer name is.
+Given the asynchronous nature of the X Window System, this would cause
+race conditions. Instead, DBE allows multiple back buffer names to
+exist for the same window; they all refer to the same physical back
+buffer. The first time a back buffer name is allocated for a window,
+the window becomes double-buffered and the back buffer name is
+associated with the window. Subsequently, the window already is a
+double-buffered window, and nothing about the window changes when a
+new back buffer name is allocated, except that the new back buffer
+name is associated with the window. The window remains
+double-buffered until either the window is destroyed or until all of
+the back buffer names for the window are deallocated.
+
+In general, both the front and back buffers are treated the same. In
+particular, here are some important characteristics:
+
+\begin{itemize}
+
+\item Only one buffer per window can be visible at a time (the
+front buffer).
+
+\item Both buffers associated with a window have the same visual type,
+depth, width, height, and shape as the window.
+
+\item Both buffers associated with a window are ``visible'' (or
+``obscured'') in the same way. When an \literal{Expose} event is
+generated for
+a window, both buffers should be considered to be damaged in the
+exposed area. Damage that occurs to either buffer will result in an
+\literal{Expose} event on the window. When a double-buffered window is
+exposed,
+both buffers are tiled with the window background, exactly as stated
+by the core protocol. Even though the back buffer is not visible,
+terms such as obscure apply to the back buffer as well as to the front
+buffer.
+
+\item It is acceptable at any time to pass a \typename{BACKBUFFER} in
+any request, notably any core or extension drawing request, that
+expects a \typename{DRAWABLE}. This enables an application to draw
+directly into \typename{BACKBUFFER}s in the same fashion as it would
+draw into any other \typename{DRAWABLE}.
+
+\item It is an error (\literal{Window}) to pass a \typename{BACKBUFFER} in a
+core request that expects a Window.
+
+\item A \typename{BACKBUFFER} will never be sent by core X in a reply,
+event, or error where a Window is specified.
+\item If core X11 backing-store and save-under applies to a
+double-buffered window, it applies to both buffers equally.
+
+\item If the core \requestname{ClearArea} request is executed on a
+double-buffered window, the same area in both the front and back
+buffers is cleared.
+
+\end{itemize}
+
+The effect of passing a window to a request that accepts a
+\typename{DRAWABLE} is unchanged by this extension. The window and
+front buffer are synonomous with each other. This includes obeying
+the \requestname{GetImage} semantics and the subwindow-mode semantics
+if a core graphics context is involved. Regardless of whether the
+window was explicitly passed in a \requestname{GetImage} request, or
+implicitly referenced (that is, one of the window's ancestors was passed
+in the request), the front (that is, visible) buffer is always referenced.
+Thus, DBE-na\"{\i}ve screen dump clients will always get the front buffer.
+\requestname{GetImage} on a back buffer returns undefined image
+contents for any obscured regions of the back buffer that fall within
+the image.
+
+Drawing to a back buffer always uses the clip region that would be
+used to draw to the front buffer with a GC subwindow-mode of
+\literal{ClipByChildren}. If an ancestor of a double-buffered window is drawn
+to with a core GC having a subwindow-mode of \literal{IncludeInferiors}, the
+effect on the double-buffered window's back buffer depends on the
+depth of the double-buffered window and the ancestor. If the depths
+are the same, the contents of the back buffer of the double-buffered
+window are not changed. If the depths are different, the contents of
+the back buffer of the double-buffered window are undefined for the
+pixels that the \literal{IncludeInferiors} drawing touched.
+
+DBE adds no new events. DBE does not extend the semantics of any
+existing events with the exception of adding a new \typename{DRAWABLE}
+type called \typename{BACKBUFFER}. If events, replies, or errors that
+contain a \typename{DRAWABLE} (for example, \literal{GraphicsExpose}) are
+generated in
+response to a request, the \typename{DRAWABLE} returned will be the
+one specified in the request.
+
+DBE advertises which visuals support double-buffering.
+
+DBE does not include any timing or synchronization facilities.
+Applications that need such facilities (for example, to maintain a constant
+frame rate) should investigate the Synchronization Extension, an X
+Consortium standard.
+
+\subsection{Window Management Operations}
+
+The basic philosophy of DBE is that both buffers are treated the same by
+core X window management operations.
+
+When the core \requestname{DestroyWindow} is executed on a
+double-buffered window, both buffers associated with the window are
+destroyed, and all back buffer names associated with the window are
+freed.
+
+If the core \requestname{ConfigureWindow} request changes the size of
+a window, both buffers assume the new size. If the window's size
+increases, the effect on the buffers depends on whether the
+implementation honors bit gravity for buffers. If bit gravity is
+implemented, then the contents of both buffers are moved in accordance
+with the window's bit gravity (see the core
+\requestname{ConfigureWindow} request), and the remaining areas are
+tiled with the window background. If bit gravity is not implemented,
+then the entire unobscured region of both buffers is tiled with the
+window background. In either case, \literal{Expose} events are generated for
+the region that is tiled with the window background.
+
+If the core \requestname{GetGeometry} request is executed on a
+\typename{BACKBUFFER}, the returned x, y, and border-width will be
+zero.
+
+If the Shape extension \requestname{ShapeRectangles},
+\requestname{ShapeMask}, \requestname{ShapeCombine}, or
+\requestname{ShapeOffset} request is executed on a double-buffered
+window, both buffers are reshaped to match the new window shape. The
+region difference is the following:
+
+\[ D = new shape - old shape \]
+
+It is tiled with the window background in both buffers,
+and \literal{Expose} events are generated for D.
+
+\subsection{Complex Swap Actions}
+
+DBE has no explicit knowledge of ancillary buffers (for example, depth buffers
+or alpha buffers), and only has a limited set of defined swap actions.
+Some applications may need a richer set of swap actions than DBE
+provides. Some DBE implementations have knowledge of ancillary
+buffers, and/or can provide a rich set of swap actions. Instead of
+continually extending DBE to increase its set of swap actions, DBE
+provides a flexible ``idiom'' mechanism. If an application's needs
+are served by the defined swap actions, it should use them; otherwise,
+it should use the following method of expressing a complex swap action
+as an idiom. Following this policy will ensure the best possible
+performance across a wide variety of implementations.
+
+As suggested by the term ``idiom,'' a complex swap action should be
+expressed as a group/series of requests. Taken together, this group
+of requests may be combined into an atomic operation by the
+implementation, in order to maximize performance. The set of idioms
+actually recognized for optimization is implementation dependent. To
+help with idiom expression and interpretation, an idiom must be
+surrounded by two protocol requests: \requestname{DBEBeginIdiom} and
+\requestname{DBEEndIdiom}. Unless this begin-end pair surrounds the
+idiom, it may not be recognized by a given implementation, and
+performance will suffer.
+
+For example, if an application wants to swap buffers for two windows,
+and use core X to clear only certain planes of the back buffers, the
+application would issue the following protocol requests as a group, and
+in the following order:
+
+\begin{itemize}
+\item \requestname{DBEBeginIdiom} request.
+\item \requestname{DBESwapBuffers} request with XIDs for two windows, each
+of which uses a swap action of \literal{Untouched}.
+\item Core X \requestname{PolyFillRectangle} request to the back buffer of one window.
+\item Core X \requestname{PolyFillRectangle} request to the back buffer of the other window.
+\item \requestname{DBEEndIdiom} request.
+\end{itemize}
+
+The \requestname{DBEBeginIdiom} and \requestname{DBEEndIdiom} requests
+do not perform any actions themselves. They are treated as markers by
+implementations that can combine certain groups/series of requests as
+idioms, and are ignored by other implementations or for nonrecognized
+groups/series of requests. If these requests are sent out of order,
+or are mismatched, no errors are sent, and the requests are executed
+as usual, though performance may suffer.
+
+An idiom need not include a \requestname{DBESwapBuffers} request. For
+example, if a swap action of \literal{Copied} is desired, but only some of the
+planes should be copied, a core X \requestname{CopyArea} request may
+be used instead of \requestname{DBESwapBuffers}. If
+\requestname{DBESwapBuffers} is included in an idiom, it should
+immediately follow the \requestname{DBEBeginIdiom} request. Also,
+when the \requestname{DBESwapBuffers} is included in an idiom, that
+request's swap action will still be valid, and if the swap action
+might overlap with another request, then the final result of the idiom
+must be as if the separate requests were executed serially. For
+example, if the specified swap action is \literal{Untouched}, and if a
+\requestname{PolyFillRectangle} using a client clip rectangle is done
+to the window's back buffer after the \requestname{DBESwapBuffers}
+request, then the contents of the new back buffer (after the idiom)
+will be the same as if the idiom was not recognized by the
+implementation.
+
+It is highly recommended that Application Programming Interface (API)
+providers define, and application developers use, ``convenience'' functions
+that allow client applications to call one procedure that encapsulates common idioms.
+These functions will generate the \requestname{DBEBeginIdiom} request,
+the idiom requests, and \requestname{DBEEndIdiom} request. Usage of
+these functions will ensure best possible performance across a wide
+variety of implementations.
+
+\section{Requests}
+
+The DBE defines the following requests.
+
+\subsection{DBEGetVersion}
+
+This request returns the major and minor version numbers of this
+extension.
+
+% start marker
+\begin{arequest}{DBEGetVersion}
+\argdecl{client-major-version}{CARD8}
+\argdecl{client-minor-version}{CARD8}
+\areply
+\areplyargdecl{server-major-version}{CARD8}
+\areplyargdecl{server-minor-version}{CARD8}
+\end{arequest}
+% end marker
+
+The client-major-version and client-minor-version
+numbers indicate what version of the protocol the client wants the
+server to implement. The server-major-version and the
+server-minor-version numbers returned indicate the protocol
+this extension actually supports. This might not equal the version
+sent by the client. An implementation can (but need not) support more
+than one version simultaneously. The server-major-version
+and server-minor-version allow the creation of future
+revisions of the DBE protocol that may be
+necessary. In general, the major version would increment for
+incompatible changes, and the minor version would increment for small,
+upward-compatible changes. Servers that support the protocol defined
+in this document will return a server-major-version of one
+(1), and a server-minor-version of zero (0).
+
+The DBE client must issue a \requestname{DBEGetVersion}
+request before any other double buffering request in order to
+negotiate a compatible protocol version; otherwise, the client will get
+undefined behavior (DBE may or may not work).
+
+\subsection{DBEGetVisualInfo}
+
+This request returns information about which visuals support double
+buffering.
+
+% start marker
+\begin{arequest}{DBEGetVisualInfo}
+\argdecl{screen-specifiers}{LISTofDRAWABLE}
+\areply
+\areplyargdecl{visinfo}{LISTofSCREENVISINFO}
+\end{arequest}
+
+where:
+\begin{tabbing}
+\typename{SCREENVISINFO}: \= \typename{LISTofVISINFO}\\
+\typename{VISINFO}: \> [ \= \typeargname{visual}: \typename{VISUALID}\\
+ \>\> \typeargname{depth}: \typename{CARD8}\\
+ \>\> \typeargname{perflevel}: \typename{CARD8} ]
+\end{tabbing}
+%
+Errors: \literal{Drawable}
+% end marker
+
+All of the values passed in screen-specifiers must be valid
+\typename{DRAWABLE}s (or a \literal{Drawable} error results). For each drawable
+in screen-specifiers, the reply will contain a list of
+VISINFO structures for visuals that support double-buffering on the
+screen on which the drawable resides. The visual member
+specifies the VISUALID\@. The depth member specifies the
+depth in bits for the visual. The perflevel is a
+performance hint. The only operation defined on a perflevel
+is comparison to a perflevel of another visual on the same
+screen. The visual having the higher perflevel is likely to
+have better double-buffer graphics performance than the visual having
+the lower perflevel. Nothing can be deduced from any of the
+following: the magnitude of the difference of two
+perflevels, a perflevel value in isolation, or
+comparing perflevels from different servers.
+
+If the list of screen-specifiers is empty, information for
+all screens is returned, starting with screen zero.
+
+\subsection{DBEAllocateBackBufferName}
+
+This request allocates a drawable ID used to refer to the back buffer of a
+window.
+
+% start marker
+\begin{arequest}{DBEAllocateBackBufferName}
+\argdecl{window}{WINDOW}
+\argdecl{back-buffer-name}{BACKBUFFER}
+\argdecl{swap-action-hint}{SWAPACTION}
+\end{arequest}
+
+Errors: \literal{Alloc, Value, IDChoice, Match, Window}
+% end marker
+
+If the window is not already a double-buffered window, the
+window becomes double-buffered, and the back-buffer-name is
+associated with the window. The swap-action-hint tells the
+server which swap action is most likely to be used with the window in
+subsequent \requestname{DBESwapBuffers} requests. The
+swap-action-hint must have one of the values specified for
+type \typename{SWAPACTION} (or a \literal{Value} error results). See the
+description of the \requestname{DBESwapBuffers} request for a complete
+discussion of swap actions and the \typename{SWAPACTION} type.
+
+If the window already is a double-buffered window, nothing about the
+window changes, except that an additional back-buffer-name
+is associated with the window. The window remains double-buffered
+until either the window is destroyed, or until all of the back buffer
+names for the window are deallocated.
+
+The window passed into the request must be a valid \typename{WINDOW}
+(or a \literal{Window} error results).
+The window passed into the request must
+be an \literal{InputOutput} window (or a \literal{Match} error results).
+The visual of the window must be in the list returned by
+\requestname{DBEGetVisualInfo} (or a \literal{Match} error results).
+The back-buffer-name must be in the range assigned to the
+client, and must not already be in use (or an \literal{IDChoice}
+error results).
+If the server cannot allocate all resources associated with turning on
+double-buffering for the window, an \literal{Alloc} error results, the
+window's double-buffer status (whether it is already double-buffered or not)
+remains unchanged, and the back-buffer-name is freed.
+
+\subsection{DBEDeallocateBackBufferName}
+
+This request frees a drawable ID that was obtained by
+\requestname{DBEAllocateBackBufferName}.
+
+% start marker
+\begin{arequest}{DBEDeallocateBackBufferName}
+\argdecl{back-buffer-name}{BACKBUFFER}
+\end{arequest}
+
+Errors: \literal{Buffer}
+% end marker
+
+The back-buffer-name passed in the request is freed and no
+longer associated with the window. If this is the last
+back-buffer-name associated with the window, then the back
+buffer is no longer accessible to clients, and all double-buffering
+resources associated with the window may be freed. The window's
+current front buffer remains the front buffer.
+
+The back-buffer-name must be a valid \typename{BACKBUFFER}
+associated with a window (or a \literal{Buffer} error results).
+
+\subsection{DBESwapBuffers}
+
+This request swaps the buffers for all windows listed, applying the
+appropriate swap action for each window.
+
+% start marker
+\begin{arequest}{DBESwapBuffers}
+\argdecl{windows}{LISTofSWAPINFO}
+\end{arequest}
+
+where:
+\begin{tabbing}
+\typename{SWAPINFO}: \= [ \= \typeargname{window}: \typename{WINDOW}\\
+ \>\> \typeargname{swap-action}: \typename{SWAPACTION} ]\\
+\typename{SWAPACTION}: \{\literal{Undefined, Background, Untouched, Copied}\}
+\end{tabbing}
+%
+Errors: \literal{Match, Window, Value}
+% end marker
+
+Each window passed into the request must be a valid \typename{WINDOW}
+(or a \literal{Window} error results).
+Each window passed into the request must
+be a double-buffered window (or a \literal{Match} error results).
+Each window passed into the request must only be listed once
+(or a \literal{Match} error results).
+Each swap-action in the list must have one of the
+values specified for type \typename{SWAPACTION} (or a \literal{Value} error
+results). If an error results, none of the valid double-buffered
+windows will have their buffers swapped.
+
+The swap-action determines what will happen to the new back
+buffer of the window it is paired with in the list in
+addition to making the old back buffer become visible. The
+defined actions are as follows:
+
+\begin{description}
+\setlength{\labelsep}{2em}
+\item[\literal{Undefined}] The contents of the new back buffer become
+ undefined. This may be the most efficient
+ action since it allows the implementation to
+ discard the contents of the buffer if it needs
+ to.
+
+\item[\literal{Background}] The unobscured region of the new back buffer
+ will be tiled with the window background. The
+ background action allows devices to use a fast
+ clear capability during a swap.
+
+\item[\literal{Untouched}] The unobscured region of the new back buffer
+ will be unmodified by the swap.
+
+\item[\literal{Copied}] The unobscured region of the new back buffer
+ will be the contents of the old back buffer.
+\end{description}
+
+If \requestname{DBESwapBuffers} is included in a ``swap and clear''
+type of idiom, it must immediately follow the \requestname{DBEBeginIdiom}
+request.
+
+\subsection{DBEBeginIdiom}
+
+This request informs the server that a complex swap will immediately
+follow this request.
+
+% start marker
+\begin{arequest}{DBEBeginIdiom}
+\end{arequest}
+% end marker
+
+As previously discussed, a complex swap action is a group/series of
+requests that, taken together, may be combined into an atomic
+operation by the implementation. The sole function of this request is
+to serve as a ``marker'' that the server can use to aid in idiom
+processing. The server is free to implement this request as a no-op.
+
+\subsection{DBEEndIdiom}
+
+This request informs the server that a complex swap has concluded.
+
+% start marker
+\begin{arequest}{DBEEndIdiom}
+\end{arequest}
+% end marker
+
+The sole function of this request is to serve as a ``marker'' that the
+server can use to aid in idiom processing. The server is free to
+implement this request as a no-op.
+
+
+\subsection{DBEGetBackBufferAttributes}
+
+This request returns information about a back buffer.
+
+% start marker
+\begin{arequest}{DBEGetBackBufferAttributes}
+\argdecl{back-buffer-name}{BACKBUFFER}
+\areply
+\areplyargdecl{attributes}{BUFFER\_ATTRIBUTES}
+\end{arequest}
+
+where:
+
+\typename{BUFFER\_ATTRIBUTES}: [\typeargname{window}: \typename{WINDOW} ]
+% end marker
+
+If back-buffer-name is a valid \typename{BACKBUFFER}, the
+window field of the attributes in the reply will
+be the window which has the back buffer that
+back-buffer-name refers to. If back-buffer-name
+is not a valid \typename{BACKBUFFER}, the window field of
+the attributes in the reply will be \literal{None}.
+
+\section{Encoding}
+
+Please refer to the X11 Protocol Encoding document as this section uses
+syntactic conventions and data types established there.
+
+The name of this extension is ``DOUBLE-BUFFER''.
+
+\subsection{Types}
+
+The following new types are used by the extension.
+
+\typename{BACKBUFFER}: \typename{XID}
+\vspace{5mm}
+
+\begin{etypedef}{SWAPACTION}
+\eargdecl{\#x00}{Undefined}{}
+\eargdecl{\#x01}{Background}{}
+\eargdecl{\#x02}{Untouched}{}
+\eargdecl{\#x03}{Copied}{}
+\end{etypedef}
+
+\begin{etypedef}{SWAPINFO}
+\eargdecl{4}{WINDOW}{window}
+\eargdecl{1}{SWAPACTION}{swap action}
+\eargdecl{3}{}{unused}
+\end{etypedef}
+
+\begin{etypedef}{VISINFO}
+\eargdecl{4}{VISUALID}{visual}
+\eargdecl{1}{CARD8}{depth}
+\eargdecl{1}{CARD8}{perflevel}
+\eargdecl{2}{}{unused}
+\end{etypedef}
+
+\begin{etypedef}{SCREENVISINFO}
+\eargdecl{4}{CARD32}{n, number in list}
+\eargdecl{8n}{LISTofVISINFO}{n VISINFOs}
+\end{etypedef}
+
+\begin{etypedef}{BUFFER\_ATTRIBUTES}
+\eargdecl{4}{WINDOW}{window}
+\end{etypedef}
+
+\subsection{Errors}
+
+\begin{eerror}{Buffer}
+\eargdecl{1}{0}{error}
+\eargdecl{1}{error base + 0}{code}
+\eargdecl{2}{CARD16}{sequence number}
+\eargdecl{4}{CARD32}{bad buffer}
+\eargdecl{2}{CARD16}{minor-opcode}
+\eargdecl{1}{CARD8}{major-opcode}
+\eargdecl{21}{}{unused}
+\end{eerror}
+
+\subsection{Requests}
+
+\begin{erequest}{DBEGetVersion}{0}{2}
+\eargdecl{1}{CARD8}{client-major-version}
+\eargdecl{1}{CARD8}{client-minor-version}
+\eargdecl{2}{}{unused}
+\areply
+\eargdecl{1}{1}{Reply}
+\eargdecl{1}{}{unused}
+\eargdecl{2}{CARD16}{sequence number}
+\eargdecl{4}{0}{reply length}
+\eargdecl{1}{CARD8}{server-major-version}
+\eargdecl{1}{CARD8}{server-minor-version}
+\eargdecl{22}{}{unused}
+\end{erequest}
+
+\begin{erequest}{DBEAllocateBackBufferName}{1}{4}
+\eargdecl{4}{WINDOW}{window}
+\eargdecl{4}{BACKBUFFER}{back buffer name}
+\eargdecl{1}{SWAPACTION}{swap action hint}
+\eargdecl{3}{}{unused}
+\end{erequest}
+
+\begin{erequest}{DBEDeallocateBackBufferName}{2}{2}
+\eargdecl{4}{BACKBUFFER}{back buffer name}
+\end{erequest}
+
+\begin{erequest}{DBESwapBuffers}{3}{2+2n}
+\eargdecl{4}{CARD32}{n, number of window/swap action pairs in list}
+\eargdecl{8n}{LISTofSWAPINFO}{window/swap action pairs}
+\end{erequest}
+
+\begin{erequest}{DBEBeginIdiom}{4}{1}
+\end{erequest}
+
+\begin{erequest}{DBEEndIdiom}{5}{1}
+\end{erequest}
+
+\begin{erequest}{DBEGetVisualInfo}{6}{2+n}
+\eargdecl{4}{CARD32}{n, number of screen specifiers in list}
+\eargdecl{4n}{LISTofDRAWABLE}{n screen specifiers}
+\areply
+\eargdecl{1}{1}{Reply}
+\eargdecl{1}{}{unused}
+\eargdecl{2}{CARD16}{sequence number}
+\eargdecl{4}{CARD32}{reply length}
+\eargdecl{4}{CARD32}{m, number of SCREENVISINFOs in list}
+\eargdecl{20}{}{unused}
+\eargdecl{4j}{LISTofSCREENVISINFO}{m SCREENVISINFOs}
+\end{erequest}
+
+\begin{erequest}{DBEGetBackBufferAttributes}{7}{2}
+\eargdecl{4}{BACKBUFFER}{back-buffer-name}
+\areply
+\eargdecl{1}{1}{Reply}
+\eargdecl{1}{}{unused}
+\eargdecl{2}{CARD16}{sequence number}
+\eargdecl{4}{0}{reply length}
+\eargdecl{4}{BUFFER\_ATTRIBUTES}{attributes}
+\eargdecl{20}{}{unused}
+\end{erequest}
+
+\pagebreak[4]
+\section{Acknowledgements}
+
+We wish to thank the following individuals who have contributed their
+time and talent toward shaping the DBE specification:
+
+T. Alex Chen, IBM;
+Peter Daifuku, Silicon Graphics, Inc.;
+Ian Elliott, Hewlett-Packard Company;
+Stephen Gildea, X Consortium, Inc.;
+Jim Graham, Sun;
+Larry Hare, AGE Logic;
+Jay Hersh, X Consortium, Inc.;
+Daryl Huff, Sun;
+Deron Dann Johnson, Sun;
+Louis Khouw, Sun;
+Mark Kilgard, Silicon Graphics, Inc.;
+Rob Lembree, Digital Equipment Corporation;
+Alan Ricker, Metheus;
+Michael Rosenblum, Digital Equipment Corporation;
+Bob Scheifler, X Consortium, Inc.;
+Larry Seiler, Digital Equipment Corporation;
+Jeanne Sparlin Smith, IBM;
+Jeff Stevenson, Hewlett-Packard Company;
+Walter Strand, Metheus;
+Ken Tidwell, Hewlett-Packard Company; and
+David P. Wiggins, X Consortium, Inc.
+
+Mark provided the impetus to start the DBE project. Ian wrote the
+first draft of the specification. David served as architect.
+
+\section{References}
+
+Jeffrey Friedberg, Larry Seiler, and Jeff Vroom, ``Multi-buffering Extension
+Specification Version 3.3.''
+
+Tim Glauert, Dave Carver, Jim Gettys, and David P. Wiggins,
+``X Synchronization Extension Version 3.0.''
+
+\end{document}
diff --git a/specs/Xext/dbelib.tex b/specs/Xext/dbelib.tex
new file mode 100644
index 0000000..4b9a076
--- /dev/null
+++ b/specs/Xext/dbelib.tex
@@ -0,0 +1,621 @@
+% $Xorg: dbelib.tex,v 1.3 2000/08/17 19:42:31 cpqbld Exp $
+% edited for DP edits and code consistency w/ core protocol/xlib 3/30/96
+% split into separate library and protocol documentos 4/15/96
+\documentstyle{article}
+\pagestyle{myheadings}
+\markboth{Double Buffer Extension Specification}{Double Buffer Extension Specification}
+\setlength{\parindent}{0 pt}
+\setlength{\parskip}{6pt}
+\setlength{\topsep}{0 pt}
+
+% Request names are literal symbols; therefore, use the same font for both.
+\newcommand{\requestname}[1]{{\tt #1}}
+\newcommand{\literal}[1]{\mbox{\tt #1}}
+
+\newcommand{\encodingsection}[1]{{\bf #1}}
+\newcommand{\requestsection}[1]{{\bf #1}}
+
+% Font treatment of type names differs between protocol and library sections.
+\newcommand{\libtypename}[1]{\mbox{\tt #1}}
+\newcommand{\typename}[1]{\mbox{\rm #1}} % default font
+\newcommand{\typeargname}[1]{\mbox{\rm #1}} % default font
+\newcommand{\argname}[1]{\mbox{\it #1}}
+\newcommand{\argdecl}[2]{\argname{#1} & : \typename{#2}\\}
+\newcommand{\areplyargdecl}[2]{#1 & : \typename{#2}\\}
+
+\newenvironment{arequest}[1]{\requestsection{#1} \\ \begin{tabular}{ll}}{\end{tabular}}
+\newcommand{\areply}{$\Rightarrow$\\}
+
+\newcommand{\etabstops}{\hspace*{0cm}\=\hspace*{1cm}\=\hspace*{5cm}\=\kill}
+
+\newcommand{\eargdecl}[3]{\> #1 \> \typename{#2} \> #3 \\}
+
+\newenvironment{keeptogether}{\vbox \bgroup}{\egroup}
+
+\newenvironment{erequest}[3]{\pagebreak[3] \begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops \eargdecl{1}{CARD8}{major-opcode} \eargdecl{1}{#2}{minor-opcode} \eargdecl{2}{#3}{request length}}{\end{tabbing} \end{keeptogether}}
+
+\newenvironment{eerror}[1]{\begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
+
+\newenvironment{etypedef}[1]{\begin{keeptogether} \typename{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
+
+\newcommand{\cfunctionname}[1]{\mbox{\tt #1}}
+\newcommand{\cfunctiondecl}[1]{\mbox{\rm #1}}
+\newcommand{\cargdecl}[2]{\penalty -1\typename{#1} \argname{#2}}
+\newenvironment{cfunction}[2]{\begin{sloppypar}\begin{keeptogether}\vspace{5mm}\typename{#1}\\ \cfunctiondecl{#2}\ (}{)\end{keeptogether}\end{sloppypar}{\hangafter=2 \hangindent=20pt \raggedright\par}}
+
+% make things easier with all the long names
+\spaceskip .3333em plus 5em
+\tolerance=2000
+
+\begin{document}
+
+\title{Double Buffer Extension Library\\Protocol Version 1.0\\X Consortium Standard}
+\author{Ian Elliott\\Hewlett-Packard Company \and David P. Wiggins\\X Consortium, Inc.}
+\maketitle
+\thispagestyle{empty}
+
+\eject
+
+Copyright \copyright 1989 X Consortium, Inc. and Digital Equipment Corporation.
+
+Copyright \copyright 1992 X Consortium, Inc. and Intergraph Corporation.
+
+Copyright \copyright 1993 X Consortium, Inc. and Silicon Graphics, Inc.
+
+Copyright \copyright 1994, 1995 X Consortium, Inc. and Hewlett-Packard Company.
+
+Permission to use, copy, modify, and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+Digital Equipment Corporation, Intergraph Corporation, Silicon
+Graphics, Hewlett-Packard, and the X Consortium make no
+representations about the suitability for any purpose of the
+information in this document. This documentation is provided ``as is''
+without express or implied warranty.
+
+\eject
+
+\section{Introduction}
+
+The Double Buffer Extension (DBE) provides a standard way to utilize
+double-buffering within the framework of the X Window System.
+Double-buffering uses two buffers, called front and back, which hold
+images. The front buffer is visible to the user; the back buffer is
+not. Successive frames of an animation are rendered into the back
+buffer while the previously rendered frame is displayed in the front
+buffer. When a new frame is ready, the back and front buffers swap
+roles, making the new frame visible. Ideally, this exchange appears to
+happen instantaneously to the user and with no visual artifacts. Thus,
+only completely rendered images are presented to the user, and they remain
+visible during the entire time it takes to render a new frame. The
+result is a flicker-free animation.
+
+\section{Goals}
+
+This extension should enable clients to:
+\begin{itemize}
+
+\item Allocate and deallocate double-buffering for a window.
+
+\item Draw to and read from the front and back buffers associated with
+a window.
+
+\item Swap the front and back buffers associated with a window.
+
+\item Specify a wide range of actions to be taken when a window is
+swapped. This includes explicit, simple swap actions (defined
+below), and more complex actions (for example, clearing ancillary buffers)
+that can be put together within explicit ``begin'' and ``end''
+requests (defined below).
+
+\item Request that the front and back buffers associated with multiple
+double-buffered windows be swapped simultaneously.
+
+\end{itemize}
+
+In addition, the extension should:
+
+\begin{itemize}
+
+\item Allow multiple clients to use double-buffering on the same window.
+
+\item Support a range of implementation methods that can capitalize on
+existing hardware features.
+
+\item Add no new event types.
+
+\item Be reasonably easy to integrate with a variety of direct graphics
+hardware access (DGHA) architectures.
+\end{itemize}
+
+\section{Concepts}
+
+Normal windows are created using the core \requestname{CreateWindow}
+request, which allocates a set of window attributes and, for
+\literal{InputOutput} windows, a front buffer,
+into which an image can be drawn.
+The contents of this buffer will be displayed when the window is
+visible.
+
+This extension enables applications to use double-buffering with a
+window. This involves creating a second buffer, called a back buffer,
+and associating one or more back buffer names (\typename{XID}s) with
+the window for use when referring to (that is, drawing to or reading
+from) the window's back buffer. The back buffer name is a
+\typename{DRAWABLE} of type \typename{BACKBUFFER}.
+
+DBE provides a relative double-buffering model. One XID, the window,
+always refers to the front buffer. One or more other XIDs, the back buffer
+names, always refer to the back buffer. After a buffer swap, the
+window continues to refer to the (new) front buffer, and the
+back buffer name continues to refer to the (new) back buffer. Thus,
+applications and toolkits that want to just render to the back buffer
+always use the back buffer name for all drawing requests to the
+window. Portions of an application that want to render to the front
+buffer always use the window XID for all drawing requests to the
+window.
+
+Multiple clients and toolkits can all use double-buffering on the same
+window. DBE does not provide a request for querying whether a window
+has double-buffering support, and if so, what the back buffer name is.
+Given the asynchronous nature of the X Window System, this would cause
+race conditions. Instead, DBE allows multiple back buffer names to
+exist for the same window; they all refer to the same physical back
+buffer. The first time a back buffer name is allocated for a window,
+the window becomes double-buffered and the back buffer name is
+associated with the window. Subsequently, the window already is a
+double-buffered window, and nothing about the window changes when a
+new back buffer name is allocated, except that the new back buffer
+name is associated with the window. The window remains
+double-buffered until either the window is destroyed or until all of
+the back buffer names for the window are deallocated.
+
+In general, both the front and back buffers are treated the same. In
+particular, here are some important characteristics:
+
+\begin{itemize}
+
+\item Only one buffer per window can be visible at a time (the
+front buffer).
+
+\item Both buffers associated with a window have the same visual type,
+depth, width, height, and shape as the window.
+
+\item Both buffers associated with a window are ``visible'' (or
+``obscured'') in the same way. When an \literal{Expose} event is
+generated for
+a window, both buffers should be considered to be damaged in the
+exposed area. Damage that occurs to either buffer will result in an
+\literal{Expose} event on the window. When a double-buffered window is
+exposed,
+both buffers are tiled with the window background, exactly as stated
+by the core protocol. Even though the back buffer is not visible,
+terms such as obscure apply to the back buffer as well as to the front
+buffer.
+
+\item It is acceptable at any time to pass a \typename{BACKBUFFER} in
+any request, notably any core or extension drawing request, that
+expects a \typename{DRAWABLE}. This enables an application to draw
+directly into \typename{BACKBUFFER}s in the same fashion as it would
+draw into any other \typename{DRAWABLE}.
+
+\item It is an error (\literal{Window}) to pass a \typename{BACKBUFFER} in a
+core request that expects a Window.
+
+\item A \typename{BACKBUFFER} will never be sent by core X in a reply,
+event, or error where a Window is specified.
+\item If core X11 backing-store and save-under applies to a
+double-buffered window, it applies to both buffers equally.
+
+\item If the core \requestname{ClearArea} request is executed on a
+double-buffered window, the same area in both the front and back
+buffers is cleared.
+
+\end{itemize}
+
+The effect of passing a window to a request that accepts a
+\typename{DRAWABLE} is unchanged by this extension. The window and
+front buffer are synonomous with each other. This includes obeying
+the \requestname{GetImage} semantics and the subwindow-mode semantics
+if a core graphics context is involved. Regardless of whether the
+window was explicitly passed in a \requestname{GetImage} request, or
+implicitly referenced (that is, one of the window's ancestors was passed
+in the request), the front (that is, visible) buffer is always referenced.
+Thus, DBE-na\"{\i}ve screen dump clients will always get the front buffer.
+\requestname{GetImage} on a back buffer returns undefined image
+contents for any obscured regions of the back buffer that fall within
+the image.
+
+Drawing to a back buffer always uses the clip region that would be
+used to draw to the front buffer with a GC subwindow-mode of
+\literal{ClipByChildren}. If an ancestor of a double-buffered window is drawn
+to with a core GC having a subwindow-mode of \literal{IncludeInferiors}, the
+effect on the double-buffered window's back buffer depends on the
+depth of the double-buffered window and the ancestor. If the depths
+are the same, the contents of the back buffer of the double-buffered
+window are not changed. If the depths are different, the contents of
+the back buffer of the double-buffered window are undefined for the
+pixels that the \literal{IncludeInferiors} drawing touched.
+
+DBE adds no new events. DBE does not extend the semantics of any
+existing events with the exception of adding a new \typename{DRAWABLE}
+type called \typename{BACKBUFFER}. If events, replies, or errors that
+contain a \typename{DRAWABLE} (for example, \literal{GraphicsExpose}) are
+generated in
+response to a request, the \typename{DRAWABLE} returned will be the
+one specified in the request.
+
+DBE advertises which visuals support double-buffering.
+
+DBE does not include any timing or synchronization facilities.
+Applications that need such facilities (for example, to maintain a constant
+frame rate) should investigate the Synchronization Extension, an X
+Consortium standard.
+
+\subsection{Window Management Operations}
+
+The basic philosophy of DBE is that both buffers are treated the same by
+core X window management operations.
+
+When the core \requestname{DestroyWindow} is executed on a
+double-buffered window, both buffers associated with the window are
+destroyed, and all back buffer names associated with the window are
+freed.
+
+If the core \requestname{ConfigureWindow} request changes the size of
+a window, both buffers assume the new size. If the window's size
+increases, the effect on the buffers depends on whether the
+implementation honors bit gravity for buffers. If bit gravity is
+implemented, then the contents of both buffers are moved in accordance
+with the window's bit gravity (see the core
+\requestname{ConfigureWindow} request), and the remaining areas are
+tiled with the window background. If bit gravity is not implemented,
+then the entire unobscured region of both buffers is tiled with the
+window background. In either case, \literal{Expose} events are generated for
+the region that is tiled with the window background.
+
+If the core \requestname{GetGeometry} request is executed on a
+\typename{BACKBUFFER}, the returned x, y, and border-width will be
+zero.
+
+If the Shape extension \requestname{ShapeRectangles},
+\requestname{ShapeMask}, \requestname{ShapeCombine}, or
+\requestname{ShapeOffset} request is executed on a double-buffered
+window, both buffers are reshaped to match the new window shape. The
+region difference is the following:
+
+\[ D = new shape - old shape \]
+
+It is tiled with the window background in both buffers,
+and \literal{Expose} events are generated for D.
+
+\subsection{Complex Swap Actions}
+
+DBE has no explicit knowledge of ancillary buffers (for example, depth buffers
+or alpha buffers), and only has a limited set of defined swap actions.
+Some applications may need a richer set of swap actions than DBE
+provides. Some DBE implementations have knowledge of ancillary
+buffers, and/or can provide a rich set of swap actions. Instead of
+continually extending DBE to increase its set of swap actions, DBE
+provides a flexible ``idiom'' mechanism. If an application's needs
+are served by the defined swap actions, it should use them; otherwise,
+it should use the following method of expressing a complex swap action
+as an idiom. Following this policy will ensure the best possible
+performance across a wide variety of implementations.
+
+As suggested by the term ``idiom,'' a complex swap action should be
+expressed as a group/series of requests. Taken together, this group
+of requests may be combined into an atomic operation by the
+implementation, in order to maximize performance. The set of idioms
+actually recognized for optimization is implementation dependent. To
+help with idiom expression and interpretation, an idiom must be
+surrounded by two protocol requests: \requestname{DBEBeginIdiom} and
+\requestname{DBEEndIdiom}. Unless this begin-end pair surrounds the
+idiom, it may not be recognized by a given implementation, and
+performance will suffer.
+
+For example, if an application wants to swap buffers for two windows,
+and use core X to clear only certain planes of the back buffers, the
+application would issue the following protocol requests as a group, and
+in the following order:
+
+\begin{itemize}
+\item \requestname{DBEBeginIdiom} request.
+\item \requestname{DBESwapBuffers} request with XIDs for two windows, each
+of which uses a swap action of \literal{Untouched}.
+\item Core X \requestname{PolyFillRectangle} request to the back buffer of one window.
+\item Core X \requestname{PolyFillRectangle} request to the back buffer of the other window.
+\item \requestname{DBEEndIdiom} request.
+\end{itemize}
+
+The \requestname{DBEBeginIdiom} and \requestname{DBEEndIdiom} requests
+do not perform any actions themselves. They are treated as markers by
+implementations that can combine certain groups/series of requests as
+idioms, and are ignored by other implementations or for nonrecognized
+groups/series of requests. If these requests are sent out of order,
+or are mismatched, no errors are sent, and the requests are executed
+as usual, though performance may suffer.
+
+An idiom need not include a \requestname{DBESwapBuffers} request. For
+example, if a swap action of \literal{Copied} is desired, but only some of the
+planes should be copied, a core X \requestname{CopyArea} request may
+be used instead of \requestname{DBESwapBuffers}. If
+\requestname{DBESwapBuffers} is included in an idiom, it should
+immediately follow the \requestname{DBEBeginIdiom} request. Also,
+when the \requestname{DBESwapBuffers} is included in an idiom, that
+request's swap action will still be valid, and if the swap action
+might overlap with another request, then the final result of the idiom
+must be as if the separate requests were executed serially. For
+example, if the specified swap action is \literal{Untouched}, and if a
+\requestname{PolyFillRectangle} using a client clip rectangle is done
+to the window's back buffer after the \requestname{DBESwapBuffers}
+request, then the contents of the new back buffer (after the idiom)
+will be the same as if the idiom was not recognized by the
+implementation.
+
+It is highly recommended that Application Programming Interface (API)
+providers define, and application developers use, ``convenience'' functions
+that allow client applications to call one procedure that encapsulates common idioms.
+These functions will generate the \requestname{DBEBeginIdiom} request,
+the idiom requests, and \requestname{DBEEndIdiom} request. Usage of
+these functions will ensure best possible performance across a wide
+variety of implementations.
+
+\section{C Language Binding}
+
+The header for this extension is \verb|<X11/extensions/Xdbe.h>|. All
+identifier names provided by this header begin with Xdbe.
+
+\subsection{Types}
+
+The type \libtypename{XdbeBackBuffer} is a \libtypename{Drawable}.
+
+The type \libtypename{XdbeSwapAction} can be one of the constants
+\literal{XdbeUndefined}, \literal{XdbeBackground},
+\literal{XdbeUntouched}, or \literal{XdbeCopied}.
+
+\subsection{C Functions}
+
+The C functions provide direct access to the protocol and add no
+additional semantics. For complete details on the effects of these
+functions, refer to the appropriate protocol request, which can be
+derived by replacing Xdbe at the start of the function name with DBE\@.
+All functions that have return type \libtypename{Status} will return
+nonzero for success and zero for failure.
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Status}{XdbeQueryExtension}
+\cargdecl{Display *}{dpy},
+\cargdecl{int *}{major\_version\_return},
+\cargdecl{int *}{minor\_version\_return}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeQueryExtension} sets major\_version\_return and
+minor\_version\_return to the major and minor DBE protocol
+version supported by the server. If the DBE library is compatible
+with the version returned by the server, it returns
+nonzero. If dpy does not support the DBE extension, or if
+there was an error during communication with the server, or if the
+server and library protocol versions are incompatible, it
+returns zero. No other Xdbe functions may be called before this
+function. If a client violates this rule, the effects of all
+subsequent Xdbe calls that it makes are undefined.
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{XdbeScreenVisualInfo *}{XdbeGetVisualInfo}
+\cargdecl{Display *}{dpy},
+\cargdecl{Drawable *}{screen\_specifiers},
+\cargdecl{int *}{num\_screens}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeGetVisualInfo} returns information about which visuals support
+double buffering. The argument num\_screens specifies how many
+elements there are in the screen\_specifiers list. Each
+drawable in screen\_specifiers designates a screen for which
+the supported visuals are being requested. If num\_screens
+is zero, information for all screens is requested. In this case, upon
+return from this function, num\_screens will be set to the
+number of screens that were found. If an error occurs, this function
+returns NULL; otherwise, it returns a pointer to a list of
+\libtypename{XdbeScreenVisualInfo} structures of length num\_screens.
+The {\it n}th element in the returned list corresponds to the {\it n}th
+drawable in the screen\_specifiers list, unless
+num\_screens was passed in with the value zero, in which
+case the {\it n}th element in the returned list corresponds to the
+{\it n}th screen of the server, starting with screen zero.
+
+The \libtypename{XdbeScreenVisualInfo} structure has the following
+fields:
+
+\begin{tabular}{lll}
+\typename{int} & \argname{count} & number of items in visinfo \\
+\typename{XdbeVisualInfo *} & \argname{visinfo} & list of visuals and depths for this screen \\
+\end{tabular}
+
+The \libtypename{XdbeVisualInfo} structure has the following fields:
+
+\begin{tabular}{lll}
+\typename{VisualID} & \argname{visual} & one visual ID that supports double-buffering\\
+\typename{int} & \argname{depth} & depth of visual in bits \\
+\typename{int} & \argname{perflevel} & performance level of visual \\
+\end{tabular}
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{void }{XdbeFreeVisualInfo}
+\cargdecl{XdbeScreenVisualInfo *}{visual\_info}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeFreeVisualInfo} frees the list of \libtypename{XdbeScreenVisualInfo}
+returned by \cfunctionname{XdbeGetVisualInfo}.
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{XdbeBackBuffer}{XdbeAllocateBackBufferName}
+\cargdecl{Display *}{dpy},
+\cargdecl{Window}{window},
+\cargdecl{XdbeSwapAction}{swap\_action}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeAllocateBackBufferName} returns a drawable ID used to refer
+to the back buffer of the specified window.
+The swap\_action is a hint to indicate the swap action
+that will likely be used in subsequent calls to
+\cfunctionname{XdbeSwapBuffers}.
+The actual swap action used in calls to
+\cfunctionname{XdbeSwapBuffers} does not have
+to be the same as the swap\_action passed to this function,
+though clients are encouraged to provide accurate information whenever
+possible.
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Status}{XdbeDeallocateBackBufferName}
+\cargdecl{Display *}{dpy},
+\cargdecl{XdbeBackBuffer}{buffer}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeDeallocateBackBufferName} frees the specified
+drawable ID, buffer,
+that was obtained via \cfunctionname{XdbeAllocateBackBufferName}. The buffer
+must be a valid name for the back buffer of a window, or an
+\literal{XdbeBadBuffer}
+error results.
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Status}{XdbeSwapBuffers}
+\cargdecl{Display *}{dpy},
+\cargdecl{XdbeSwapInfo *}{swap\_info},
+\cargdecl{int}{num\_windows}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeSwapBuffers} swaps the front and back buffers for a list of windows.
+The argument num\_windows specifies how many windows are to
+have their buffers swapped; it is the number of elements in the
+swap\_info array. The argument swap\_info
+specifies the information needed per window to do the swap.
+
+The \libtypename{XdbeSwapInfo} structure has the following fields:
+
+\begin{tabular}{lll}
+\typename{Window} & \argname{swap\_window} & window for which to swap buffers \\
+\typename{XdbeSwapAction} & \argname{swap\_action} & swap action to use for this swap\_window \\
+\end{tabular}
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Status}{XdbeBeginIdiom}
+\cargdecl{Display *}{dpy}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeBeginIdiom} marks the beginning of an idiom sequence.
+See section 3.2
+for a complete discussion of idioms.
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Status}{XdbeEndIdiom}
+\cargdecl{Display *}{dpy}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeEndIdiom} marks the end of an idiom sequence.
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{XdbeBackBufferAttributes *}{XdbeGetBackBufferAttributes}
+\cargdecl{Display *}{dpy},
+\cargdecl{XdbeBackBuffer}{buffer}
+\end{cfunction}
+% end marker
+
+\cfunctionname{XdbeGetBackBufferAttributes} returns the attributes associated
+with the specified buffer.
+
+The \libtypename{XdbeBackBufferAttributes} structure has the following fields:
+
+\begin{tabular}{lll}
+\typename{Window} & \argname{window} & window that buffer belongs to \\
+\end{tabular}
+
+If buffer is not a valid \libtypename{XdbeBackBuffer},
+window is set to \literal{None}.
+
+The returned \libtypename{XdbeBackBufferAttributes} structure can be
+freed with the Xlib function \cfunctionname{XFree}.
+\end{keeptogether}
+
+\begin{keeptogether}
+\subsection{Errors}
+
+The \libtypename{XdbeBufferError} structure has the following fields:
+
+\begin{tabular}{lll}
+\typename{int} & \argname{type} \\
+\typename{Display *} & \argname{display}& Display the event was read from\\
+\typename{XdbeBackBuffer} & \argname{buffer}& resource id \\
+\typename{unsigned long} & \argname{serial}& serial number of failed request\\
+\typename{unsigned char} & \argname{error\_code}& error base + \literal{XdbeBadBuffer}\\
+\typename{unsigned char} & \argname{request\_code}& Major op-code of failed request\\
+\typename{unsigned char} & \argname{minor\_code}& Minor op-code of failed request\\
+\end{tabular}
+\end{keeptogether}
+
+\pagebreak[4]
+\section{Acknowledgements}
+
+We wish to thank the following individuals who have contributed their
+time and talent toward shaping the DBE specification:
+
+T. Alex Chen, IBM;
+Peter Daifuku, Silicon Graphics, Inc.;
+Ian Elliott, Hewlett-Packard Company;
+Stephen Gildea, X Consortium, Inc.;
+Jim Graham, Sun;
+Larry Hare, AGE Logic;
+Jay Hersh, X Consortium, Inc.;
+Daryl Huff, Sun;
+Deron Dann Johnson, Sun;
+Louis Khouw, Sun;
+Mark Kilgard, Silicon Graphics, Inc.;
+Rob Lembree, Digital Equipment Corporation;
+Alan Ricker, Metheus;
+Michael Rosenblum, Digital Equipment Corporation;
+Bob Scheifler, X Consortium, Inc.;
+Larry Seiler, Digital Equipment Corporation;
+Jeanne Sparlin Smith, IBM;
+Jeff Stevenson, Hewlett-Packard Company;
+Walter Strand, Metheus;
+Ken Tidwell, Hewlett-Packard Company; and
+David P. Wiggins, X Consortium, Inc.
+
+Mark provided the impetus to start the DBE project. Ian wrote the
+first draft of the specification. David served as architect.
+
+\section{References}
+
+Jeffrey Friedberg, Larry Seiler, and Jeff Vroom, ``Multi-buffering Extension
+Specification Version 3.3.''
+
+Tim Glauert, Dave Carver, Jim Gettys, and David P. Wiggins,
+``X Synchronization Extension Version 3.0.''
+
+\end{document}
diff --git a/specs/Xext/evi.ms b/specs/Xext/evi.ms
new file mode 100644
index 0000000..7192864
--- /dev/null
+++ b/specs/Xext/evi.ms
@@ -0,0 +1,338 @@
+.\" Use -ms and macros.t
+.\" $Xorg: evi.ms,v 1.3 2000/08/17 19:42:31 cpqbld Exp $
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 3
+
+
+\s+2\fBExtended Visual Information Extension\fP\s-2
+.sp 3
+.ce 3
+Version 1.0
+X Project Team Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+Peter Daifuku
+.sp 6p
+Silicon Graphics, Inc.
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+Copyright \(co 1986-1997 The Open Group All Rights Reserved
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the Software), to use the Software
+without restriction, including, without limitation, the rights to copy, modify, merge,
+publish, distribute and sublicense the Software, to make, have made, license and
+distribute derivative works thereof, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and the following permission notice shall be included in all
+copies of the Software:
+.LP
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
+INFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER USEABILITIY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN
+CONNNECTION WITH THE SOFTWARE OR THE USE OF OTHER DEALINGS IN
+THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of The Open Group shall not be used in
+advertising or otherwise to promote the use or other dealings in this Software without
+prior written authorization from The Open Group.
+.LP
+X Window System is a trademark of The Open Group.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''X11 Extended Visual Information extension''
+.OH ''X11 Extended Visual Information extension''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Introduction
+.LP
+EVI (Extended Visual Information extension) allows a client to determine
+information about core X visuals beyond what the core protocol provides.
+.NH 1
+Goals
+.LP
+As the X Window System has evolved, it has become clear that the information
+returned by the core X protocol regarding Visuals is often insufficient for a
+client to determine which is the most appropriate visual for its needs. This
+extension allows clients to query the X server for additional visual
+information, specifically as regards colormaps and framebuffer levels.
+.LP
+This extension is meant to address the needs of pure X clients only. It is
+specifically and purposefully not designed to address the needs of X
+extensions. Extensions that have an impact on visual information should provide
+their own mechanisms for delivering that information. For example, the Double
+Buffering Extension (DBE) provides its own mechanism for determining which
+visuals support double-buffering.
+.NH 1
+Requests
+.LP
+.sM
+.PN GetVersion
+.IP
+\fIclient_major_version\fP\^: CARD8
+.br
+\fIclient_minor_version\fP\^: CARD8
+.LP
+ =>
+.IP
+\fIserver_major_version\fP\^: CARD8
+.br
+\fIserver_minor_version\fP\^: CARD8
+.LP
+.eM
+If supplied, the client_major_version and client_minor_version indicate
+what version of the protocol the client wants the server to implement.
+The server version numbers returned indicate the protocol this extension
+actually supports. This might not equal the version sent by the client.
+An implementation can (but need not) support more than one version
+simultaneously. The server_major_version and the server_minor_version
+are a mechanism to support future revisions of the EVI protocol that
+may be necessary. In general, the major version would increment for
+incompatible changes, and the minor version would increment for small
+upward-compatible changes. Servers that support the protocol defined in
+this document will return a server_major_version of one (1), and a
+server_minor_version of zero (0).
+.LP
+.sM
+.PN GetVisualInfo
+.IP
+\fIvisual_list\fP\^: LISTofVISUALID
+.LP
+ =>
+.IP
+\fIper_visual_info\fP\^: LISTofVISUALINFO
+.LP
+where:
+.TS
+l l.
+VISUALINFO: [core_visual_id: VISUALID
+.br
+ \ screen: CARD8
+.br
+ \ level: INT8
+.br
+ \ transparency_type: CARD8
+.br
+ \ unused: CARD8
+.br
+ \ transparency_value: CARD32
+.br
+ \ min_hw_colormaps: CARD8
+.br
+ \ max_hw_colormaps: CARD8
+.br
+ \ num_colormap_conflicts: CARD16
+.br
+ \ colormap_conflicts: LISTofVISUALID]
+.TE
+.eM
+.LP
+.IP
+ - level is 0 for normal planes, > 0 for overlays, < 0 for underlays.
+.br
+ - transparency_type is 0 for none, 1 for transparent pixel, 2 for
+ transparent mask.
+.br
+ - transparency_value: value to get transparent pixel if transparency
+ supported.
+.br
+ - min_hw_colormaps: minimum number of hardware colormaps backing up the
+visual.
+.br
+ - max_hw_colormaps: maximum number of hardware colormaps backing up the
+visual.
+.br
+ (architectures with static colormap allocation/reallocation would have min
+= max)
+.br
+ - num_colormap_conflicts: number of elements in colormap_conflicts.
+.br
+ - colormap_conflicts: list of visuals that may conflict with this one. For
+ example, if a 12-bit colormap is overloaded to support 8-bit visuals, the
+ 8-bit visuals would conflict with the 12-bit visuals.
+.LP
+.NH 1
+Events and Errors
+.LP
+No new events or errors are defined by this extension.
+.LP
+.NH 1
+Changes to existing protocol.
+.LP
+None.
+.LP
+.NH 1
+Encoding
+.LP
+The name of this extension is "Extended-Visual-Information".
+.LP
+The conventions used here are the same as those for the core X11
+Protocol Encoding.
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetVersion
+.sp 6p
+ 1 CARD8 opcode
+ 1 0 EVI opcode
+ 2 2 request length
+ 2 CARD16 client_major_version
+ 2 CARD16 client_minor_version
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 2 CARD16 server_major_version
+ 2 CARD16 server_minor_version
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetVisualInfo
+.sp 6p
+ 1 CARD8 opcode
+ 1 1 EVI opcode
+ 2 2+n request length
+ 4 CARD32 n_visual
+ 4n CARD32 visual_ids
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n length
+ 4 CARD32 n_info
+ 4 CARD32 n_conflicts
+ 16 unused
+ 16n LISTofVISUALINFO items
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ VISUALINFO
+ 4 VisualID core_visual_id
+ 1 INT8 screen
+ 1 INT8 level
+ 1 CARD8 transparency_type
+ 1 CARD8 unused
+ 4 CARD32 transparency_value
+ 1 CARD8 min_hw_colormaps
+ 1 CARD8 max_hw_colormaps
+ 2 CARD16 num_colormap_conflicts
+.De
+.LP
+.NH 1
+C Language Binding
+.LP
+The C functions provide direct access to the protocol and add no additional
+semantics. For complete details on the effects of these functions, refer
+to the appropriate protocol request, which can be derived by deleting Xevi
+at the start of the function. All functions that have return type Status
+will return nonzero for success and zero for failure.
+.LP
+The include file for this extension is:
+.Pn < X11/extensions/XEVI.h >.
+.LP
+.sM
+.FD0
+.PN Bool XeviQueryVersion(
+.br
+ Display *\fIdisplay\fP\^,
+.br
+ int *\fImajor_version_return\fP\^,
+.br
+ int *\fIminor_version_return\fP\^)
+.FN
+.LP
+.eM
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImajor_version_return\fP 1i
+Returns the major version supported by the server.
+.IP \fIminor_version_return\fP 1i
+Returns the minor version supported by the server.
+.LP
+XeviQueryVersion sets major_version_return and minor_version_return to
+the major and minor EVI protocol version supported by the server. If
+the EVI library is compatible with the version returned by the server,
+it returns nonzero. If dpy does not support the EVI extension, or if
+there was an error during communication with the server, or if the server
+and library protocol versions are incompatible, it returns zero. No other
+Xevi functions may be called before this function. If a client violates
+this rule, the effects of all subsequent Xevi calls that it makes are
+undefined.
+.LP
+To get the extended information for any subset of visuals use
+XeviGetVisualInfo.
+.LP
+.sM
+.FD 0
+.PN int XeviGetVisualInfo(
+.br
+ Display *\fIdisplay\fP\^,
+.br
+ VisualID *\fIvisual\fP\^,
+.br
+ int \fIn_visual\fP\^,
+.br
+ ExtendedVisualInfo **\fIevi_return\fP\^,
+.br
+ int *\fIn_info_return\fP\^)
+.FN
+.LP
+.eM
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIvisual\fP 1i
+If NULL, then information for all visuals of all
+screens is returned. Otherwise, a pointer to a list of visuals for which
+extended visual information is desired.
+.IP \fIn_visual\fP 1i
+If 0, then information for all visuals of all screens is returned. Otherwise,
+the number of elements in the array \fIvisual\fP.
+.IP \fIevi_return\fP 1i
+Returns a pointer to a list of \fIExtendedVisualInfo\fP. When done, the client
+should free the list using \fIXFree\fP.
+.IP \fIn_info_return\fP 1i
+Returns the number of elements in the list of \fIExtendedVisualInfo\fP.
+.LP
+XeviGetVisualInfo returns a list of ExtendedVisualInfo structures that describe
+visual information beyond that supported by the core protocol. This includes
+layer information relevant for systems supporting overlays and/or underlay
+planes, and information that allows applications better to determine the level
+of hardware support for multiple colormaps. XeviGetVisualInfo returns Success if
+successful, or an X error otherwise.
+
diff --git a/specs/Xext/lbx.book b/specs/Xext/lbx.book
new file mode 100644
index 0000000..90e6f95
--- /dev/null
+++ b/specs/Xext/lbx.book
Binary files differ
diff --git a/specs/Xext/lbx.mif b/specs/Xext/lbx.mif
new file mode 100644
index 0000000..5184d92
--- /dev/null
+++ b/specs/Xext/lbx.mif
@@ -0,0 +1,56495 @@
+<MIFFile 4.00> # Generated by FrameMaker xm4.0.3P1a
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+# Element Definitions
+# Elements
+#
+<Units Uin >
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CShown >
+ <CStyle CUnderline >
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+ <Condition
+ <CTag `Open Issue'>
+ <CState CShown >
+ <CStyle CUnderline >
+ <CSeparation 4>
+ <CColor `Blue'>
+ > # end of Condition
+ <Condition
+ <CTag `Proposed'>
+ <CState CHidden >
+ <CStyle CDoubleUnderline >
+ > # end of Condition
+ <Condition
+ <CTag `Q-Implementation'>
+ <CState CHidden >
+ <CStyle CDoubleUnderline >
+ <CSeparation 7>
+ <CColor `Yellow'>
+ > # end of Condition
+ <Condition
+ <CTag `Unimplemented'>
+ <CState CHidden >
+ <CStyle CUnderline >
+ <CSeparation 6>
+ <CColor `Magenta'>
+ > # end of Condition
+ <Condition
+ <CTag `Version Tag'>
+ <CState CShown >
+ <CStyle CAsIs >
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `#define'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `#define'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Heading'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 21.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `H:<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Step'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Step'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `S:<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `2Heading'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 21.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `H:<n\>.<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `3Heading'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 18.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `H:<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `4Heading'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 15.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `H:<n\>.<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Author'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `1Heading'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 3.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bullet'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `B:\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BulletCont'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.94">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.19">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CBullet'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBodyCntr'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Bottom >
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeadingCntr'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Bottom >
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Code Example'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `ComposeCellBody'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CStep'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Definition'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.25">
+ <PgfRIndent 0.5">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 11>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-arrow'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.375">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-form'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-heading'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-headingTOC'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 1.6">
+ <PgfLIndent 2.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-literal'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Encode-literal'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.875">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-type'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Equation'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `E:(EQ <n+\>)'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd Yes >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Extract'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 1.25">
+ <PgfLIndent 1.25">
+ <PgfRIndent 0.75">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Figure'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `Table Rule'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 16.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `F:FIGURE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Decl'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Intro'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Function Decl'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.65">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 16.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle RunIn >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Note'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered-decrement'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n--\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered0'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n=0\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-arrow'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-errors'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-item'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 2.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `ProtocolTOC'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 1.6">
+ <PgfLIndent 2.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `right footer'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Step'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `S:<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Structure Decl'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `SubTitle'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Author'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.16667">
+ <PgfLIndent 0.16667">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.191">
+ <PgfLIndent 0.191">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `T:TABLE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Author'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 24.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 7.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner1'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner2'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+> # end of PgfCatalog
+<ElementDefCatalog
+> # end of ElementDefCatalog
+<FontCatalog
+ <Font
+ <FTag `Argument'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar Yes >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `BitLabel'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Bullet Symbol'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Callout'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Emphasis'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Field Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Figure Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Table'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Text'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `New Term'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Node Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Path'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Program'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Protocol'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Run-In Heading'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Subscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Superscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Tree Cap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Type Name'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Variable Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Compose Table'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center >
+ <TblPlacement Float >
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Medium'>
+ <TblBRuling `Medium'>
+ <TblRRuling `Medium'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement None >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 7>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Sequence Examples'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.39641">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 2.10255">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.79896">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 0.95443">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.108">
+ <TblRIndent 0.0">
+ <TblAlignment Center >
+ <TblPlacement Anywhere >
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Thin'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 2>
+ <TblLastBRuling No >
+ <TblTitlePlacement None >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblTitleGap 0.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 3>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.108">
+ <TblRIndent 0.0">
+ <TblAlignment Center >
+ <TblPlacement Anywhere >
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Very Thin'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement None >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 7>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.10756">
+ <TblRIndent 0.0">
+ <TblAlignment Left >
+ <TblPlacement Anywhere >
+ <TblSpBefore 4.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement None >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 7>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$dayname\>, <$monthname\> <$daynum01\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[Title]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[1Heading]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table & Page'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section & Page'>
+ <XRefDef `Section\x11 <$paranum\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure & Page'>
+ <XRefDef `Figure\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section'>
+ <XRefDef `section\x11 <$paranum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure'>
+ <XRefDef `Figure\x11 <$paranumonly\>'>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 143 13 791 908 >
+ <DWindowRect 119 -13 835 986 >
+ <DViewScale 120.0%>
+ <DNextUnique 2536>
+ <DPageSize 8.5" 11.0">
+ <DStartPage -1>
+ <DPageNumStyle Arabic >
+ <DPagePointStyle Arabic >
+ <DTwoSides Yes >
+ <DParity FirstRight >
+ <DFrozenPages No >
+ <DPageRounding MakePageCountEven >
+ <DMaxInterLine 2.0 pt>
+ <DMaxInterPgf 6.0 pt>
+ <DFNoteMaxH 4.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage >
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic >
+ <DFNoteAnchorPos FNSuperscript >
+ <DFNoteNumberPos FNBaseline >
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `. '>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha >
+ <DTblFNoteAnchorPos FNSuperscript >
+ <DTblFNoteNumberPos FNBaseline >
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `. '>
+ <DLinebreakChars `- \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.25">
+ <DChBarWidth 2.0 pt>
+ <DChBarPosition NearestEdge >
+ <DChBarColor `Black'>
+ <DAutoChBars No >
+ <DShowAllConditions No >
+ <DDisplayOverrides Yes >
+ <DViewOnly No >
+ <DViewOnlyXRef GotoBehavior >
+ <DViewOnlySelect Yes >
+ <DViewOnlyWinBorders Yes >
+ <DViewOnlyWinMenubar Yes >
+ <DViewOnlyWinPopup Yes >
+ <DViewOnlyWinPalette No >
+ <DGridOn No >
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.0>
+ <DRulersOn Yes >
+ <DFullRulers No >
+ <DGraphicsOff No >
+ <DCurrentView 1>
+ <DBordersOn Yes >
+ <DSymbolsOn Yes >
+ <DElementBordersOn No >
+ <DSmartQuotesOn No >
+ <DSmartSpacesOn Yes >
+ <DLanguage USEnglish >
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No >
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DElementCatalogScope Strict >
+ <DPrintSkipBlankPages Yes >
+ <DPrintSeparations No >
+ <DNoPrintSepColor `White'>
+> # end of Document
+<BookComponent
+ <FileName `<c\>lbxTOC.doc'>
+ <FileNameSuffix `TOC'>
+ <DeriveLinks Yes >
+ <DeriveType TOC >
+ <DeriveTag `1Heading'>
+ <DeriveTag `2Heading'>
+ <DeriveTag `3Heading'>
+ <DeriveTag `4Heading'>
+ <DeriveTag `Encode-heading'>
+ <DeriveTag `Protocol'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+<OKWord `&&'>
+<OKWord `(?)'>
+<OKWord `),'>
+<OKWord `*/'>
+<OKWord `/*'>
+<OKWord `<='>
+<OKWord `=='>
+<OKWord `\>\>'>
+<OKWord `Adler'>
+<OKWord `Alloc'>
+<OKWord `Alloc,Match,Value'>
+<OKWord `AllocColor'>
+<OKWord `AllocNamedColor'>
+<OKWord `AllowMotion'>
+<OKWord `AnyPropertyType'>
+<OKWord `AppGroup'>
+<OKWord `AppGroupDeltas'>
+<OKWord `BadAccess'>
+<OKWord `BadAlloc'>
+<OKWord `BadColormap'>
+<OKWord `BadRequest'>
+<OKWord `BeginLargeRequest'>
+<OKWord `Bool'>
+<OKWord `ChangeProperty'>
+<OKWord `CloseClient'>
+<OKWord `Colorname'>
+<OKWord `ConnInfo'>
+<OKWord `CopyArea'>
+<OKWord `CopyPlane'>
+<OKWord `Demultiplexing'>
+<OKWord `DirectColor'>
+<OKWord `Drawables'>
+<OKWord `EndLargeRequest'>
+<OKWord `FONTPROPs'>
+<OKWord `FillPoly'>
+<OKWord `Font,Alloc'>
+<OKWord `FreeCells'>
+<OKWord `FreeCellsEvent'>
+<OKWord `Gailly'>
+<OKWord `GetGeometry'>
+<OKWord `GetImage'>
+<OKWord `GetKeyboardMapping'>
+<OKWord `GetModifierMapping'>
+<OKWord `GetProperty'>
+<OKWord `GetWindowAttributes'>
+<OKWord `GrabCmap'>
+<OKWord `GrayScale'>
+<OKWord `IncrementPixel'>
+<OKWord `InputOnly'>
+<OKWord `InputOutput'>
+<OKWord `InternAtom'>
+<OKWord `InternAtoms'>
+<OKWord `InvalidateTag'>
+<OKWord `Kantarjiev'>
+<OKWord `KeyCode'>
+<OKWord `KeyPress'>
+<OKWord `Keymap'>
+<OKWord `LBXAllocColor'>
+<OKWord `LISTofATOM'>
+<OKWord `LISTofBYTE'>
+<OKWord `LISTofCHAN'>
+<OKWord `LISTofCHARINFO'>
+<OKWord `LISTofCHOICE'>
+<OKWord `LISTofCOLORSINGLE'>
+<OKWord `LISTofCOLORTRIPLE'>
+<OKWord `LISTofDELTA'>
+<OKWord `LISTofDIFFITEM'>
+<OKWord `LISTofFONTPROP'>
+<OKWord `LISTofFOO'>
+<OKWord `LISTofINDEXEDOPT'>
+<OKWord `LISTofKEYCODE'>
+<OKWord `LISTofKEYSYM'>
+<OKWord `LISTofLBXARC'>
+<OKWord `LISTofLBXARCS'>
+<OKWord `LISTofLBXCHARINFO'>
+<OKWord `LISTofLBXPIXEL'>
+<OKWord `LISTofLBXPOINT'>
+<OKWord `LISTofLBXRECTANGLE'>
+<OKWord `LISTofLBXSEGMENT'>
+<OKWord `LISTofLONGSTR'>
+<OKWord `LISTofMASK'>
+<OKWord `LISTofNAMEDOPT'>
+<OKWord `LISTofOPTION'>
+<OKWord `LISTofPIXELTRIPLE'>
+<OKWord `LISTofPIXMAPCHOICE'>
+<OKWord `LISTofPIXMAPMETHOD'>
+<OKWord `LISTofSETofEVENT'>
+<OKWord `LargeRequestData'>
+<OKWord `LbxAllowMotion'>
+<OKWord `LbxBeginLargeRequest'>
+<OKWord `LbxChangeProperty'>
+<OKWord `LbxClient'>
+<OKWord `LbxCloseClient'>
+<OKWord `LbxCloseEvent'>
+<OKWord `LbxCopyArea'>
+<OKWord `LbxCopyPlane'>
+<OKWord `LbxDelta'>
+<OKWord `LbxDeltaEvent'>
+<OKWord `LbxDeltaResponse'>
+<OKWord `LbxEndLargeRequest'>
+<OKWord `LbxFillPoly'>
+<OKWord `LbxFreeCells'>
+<OKWord `LbxFreeCellsEvent'>
+<OKWord `LbxGetImage'>
+<OKWord `LbxGetKeyboardMapping'>
+<OKWord `LbxGetModifierMapping'>
+<OKWord `LbxGetProperty'>
+<OKWord `LbxGetWinAttrAndGeom'>
+<OKWord `LbxGrabCmap'>
+<OKWord `LbxImageCompressNone'>
+<OKWord `LbxImageCompressPackBits'>
+<OKWord `LbxIncrementPixel'>
+<OKWord `LbxInternAtoms'>
+<OKWord `LbxInvalidateTag'>
+<OKWord `LbxInvalidateTagEvent'>
+<OKWord `LbxLargeRequestData'>
+<OKWord `LbxListenToAll'>
+<OKWord `LbxListenToOne'>
+<OKWord `LbxModifySequence'>
+<OKWord `LbxMotionDeltaEvent'>
+<OKWord `LbxNewClient'>
+<OKWord `LbxOptionDeltaProxy'>
+<OKWord `LbxOptionDeltaServer'>
+<OKWord `LbxOptionExtension'>
+<OKWord `LbxOptionUseTags'>
+<OKWord `LbxPixelAlloc'>
+<OKWord `LbxPixelAllocRange'>
+<OKWord `LbxPixelPrivate'>
+<OKWord `LbxPixelRange'>
+<OKWord `LbxPolyArc'>
+<OKWord `LbxPolyFillArc'>
+<OKWord `LbxPolyFillRectangle'>
+<OKWord `LbxPolyLine'>
+<OKWord `LbxPolyPoint'>
+<OKWord `LbxPolyRectangle'>
+<OKWord `LbxPolySegment'>
+<OKWord `LbxPutImage'>
+<OKWord `LbxQueryExtension'>
+<OKWord `LbxQueryFont'>
+<OKWord `LbxQueryTag'>
+<OKWord `LbxQueryVersion'>
+<OKWord `LbxQuickMotionDeltaEvent'>
+<OKWord `LbxReleaseCmap'>
+<OKWord `LbxReleaseCmapEvent'>
+<OKWord `LbxSendTagDataEvent'>
+<OKWord `LbxSetReqMask'>
+<OKWord `LbxStartProxy'>
+<OKWord `LbxStopProxy'>
+<OKWord `LbxSwitch'>
+<OKWord `LbxSwitchEvent'>
+<OKWord `LbxSync'>
+<OKWord `LbxTagData'>
+<OKWord `LbxTagTypeConnInfo'>
+<OKWord `LbxTagTypeFont'>
+<OKWord `LbxTagTypeKeymap'>
+<OKWord `LbxTagTypeModmap'>
+<OKWord `LbxTagTypeProperty'>
+<OKWord `LeftToRight'>
+<OKWord `Lemke'>
+<OKWord `ListExtensions'>
+<OKWord `ListenToAll'>
+<OKWord `ListenToOne'>
+<OKWord `LookupColor'>
+<OKWord `Lpad'>
+<OKWord `ModifySequence'>
+<OKWord `Modmap'>
+<OKWord `MotionNotify'>
+<OKWord `NLISTofFOO'>
+<OKWord `NLISTofINDEXEDOPT'>
+<OKWord `NLISTofNAMEDOPT'>
+<OKWord `NLISTofOPTION'>
+<OKWord `NLISTofPIXMAPCHOICE'>
+<OKWord `NLISTofPIXMAPMETHOD'>
+<OKWord `NLISTofSTR'>
+<OKWord `NewClient'>
+<OKWord `NoDeltas'>
+<OKWord `Nonconvex'>
+<OKWord `NormalClientDeltas'>
+<OKWord `NotUseful'>
+<OKWord `Packard'>
+<OKWord `Pixmap'>
+<OKWord `PolyArc'>
+<OKWord `PolyFillArc'>
+<OKWord `PolyFillRectangle'>
+<OKWord `PolyPoint'>
+<OKWord `PolyRectangle'>
+<OKWord `PolySegment'>
+<OKWord `Prepend'>
+<OKWord `Preprend'>
+<OKWord `Proc'>
+<OKWord `PutImage'>
+<OKWord `QueryExtension'>
+<OKWord `QueryFont'>
+<OKWord `QueryTag'>
+<OKWord `QueryVersion'>
+<OKWord `Reencoding'>
+<OKWord `ReleaseCmap'>
+<OKWord `ReleaseCmapEvent'>
+<OKWord `RightToLeft'>
+<OKWord `SETofDEVICEEVENT'>
+<OKWord `SETofEVENT'>
+<OKWord `Scheifler'>
+<OKWord `SendTagData'>
+<OKWord `SendTagDataEvent'>
+<OKWord `Squishing'>
+<OKWord `StartProxy'>
+<OKWord `StaticColor'>
+<OKWord `StaticGray'>
+<OKWord `StopProxy'>
+<OKWord `TagData'>
+<OKWord `Tonogai'>
+<OKWord `TrueColor'>
+<OKWord `Unviewable'>
+<OKWord `WhenMapped'>
+<OKWord `XGetWindowAttributes'>
+<OKWord `XLbxGetEventBase'>
+<OKWord `XLbxQueryExtension'>
+<OKWord `XLbxQueryVersion'>
+<OKWord `XLbxQueryVersion(display'>
+<OKWord `XQueryExtension'>
+<OKWord `XYPixmap'>
+<OKWord `X_ChangeProperty'>
+<OKWord `X_FillPoly'>
+<OKWord `X_LbxAllowMotion'>
+<OKWord `X_LbxChangeProperty'>
+<OKWord `X_LbxDelta'>
+<OKWord `X_LbxGetProperty'>
+<OKWord `X_LbxIncrementPixel'>
+<OKWord `X_LbxListenToAll'>
+<OKWord `X_LbxListenToOne'>
+<OKWord `X_LbxModifySequence'>
+<OKWord `X_LbxSwitch'>
+<OKWord `X_LookupColor'>
+<OKWord `X_PolyArc'>
+<OKWord `X_PolyFillArc'>
+<OKWord `X_PolyFillRectangle'>
+<OKWord `X_PolyLine'>
+<OKWord `X_PolyPoint'>
+<OKWord `X_PolyRectangle'>
+<OKWord `X_PolySegment'>
+<OKWord `Xerox'>
+<OKWord `Xext'>
+<OKWord `Xlib'>
+<OKWord `ZPixmap'>
+<OKWord `authored'>
+<OKWord `bitPlane'>
+<OKWord `bitmask'>
+<OKWord `cachable'>
+<OKWord `cindex'>
+<OKWord `cmap'>
+<OKWord `colormap'>
+<OKWord `colormaps'>
+<OKWord `comp'>
+<OKWord `compflag'>
+<OKWord `configurable'>
+<OKWord `data:LISTofBYTE'>
+<OKWord `decremented'>
+<OKWord `deltaSequence'>
+<OKWord `deltaTime'>
+<OKWord `deltaX'>
+<OKWord `deltaY'>
+<OKWord `dest'>
+<OKWord `diff'>
+<OKWord `diffs'>
+<OKWord `dst'>
+<OKWord `encodings'>
+<OKWord `errorValue'>
+<OKWord `eventBase'>
+<OKWord `event_base'>
+<OKWord `firstKeyCode'>
+<OKWord `first_error_return'>
+<OKWord `first_event_return'>
+<OKWord `font_info'>
+<OKWord `gc'>
+<OKWord `infos'>
+<OKWord `int'>
+<OKWord `interclient'>
+<OKWord `keycodes'>
+<OKWord `keysperkeycode'>
+<OKWord `keyspermod'>
+<OKWord `keysyms'>
+<OKWord `lbx'>
+<OKWord `lbxType'>
+<OKWord `majorVersion'>
+<OKWord `major_opcode_return'>
+<OKWord `major_version_return'>
+<OKWord `mask:LISTofMASK'>
+<OKWord `maxMaxMsgLen'>
+<OKWord `maxN'>
+<OKWord `max_bounds'>
+<OKWord `maxlen'>
+<OKWord `metrics'>
+<OKWord `min'>
+<OKWord `minMaxMsgLen'>
+<OKWord `minN'>
+<OKWord `minorVersion'>
+<OKWord `minor_version_return'>
+<OKWord `multipass'>
+<OKWord `n+p'>
+<OKWord `nChars'>
+<OKWord `nItems'>
+<OKWord `nUnits'>
+<OKWord `nbytes'>
+<OKWord `num'>
+<OKWord `op'>
+<OKWord `opcode'>
+<OKWord `opcodes'>
+<OKWord `optcode'>
+<OKWord `p=Lpad'>
+<OKWord `p=pad(E)'>
+<OKWord `p=pad(n)'>
+<OKWord `padBytes'>
+<OKWord `pixelEnd'>
+<OKWord `pixelStart'>
+<OKWord `prefMaxMsgLen'>
+<OKWord `prefN'>
+<OKWord `prepended'>
+<OKWord `pseudocolor'>
+<OKWord `reencode'>
+<OKWord `reencoded'>
+<OKWord `reencodes'>
+<OKWord `refering'>
+<OKWord `rgb'>
+<OKWord `sequenceNumber'>
+<OKWord `squish'>
+<OKWord `src'>
+<OKWord `srcCache'>
+<OKWord `timeout'>
+<OKWord `unallocated'>
+<OKWord `uncompressed'>
+<OKWord `ungrabbed'>
+<OKWord `workInProgress'>
+<OKWord `xLbxIncrementPixelReq'>
+<OKWord `xLbxTagDataReq'>
+<OKWord `xff'>
+<OKWord `zlib'>
+> # end of Dictionary
+<AFrames
+> # end of AFrames
+<Tbls
+ <Tbl
+ <TblID 1>
+ <TblTag `Format B'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblLIndent 0.108">
+ <TblAlignment Center >
+ <TblBRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblSeparatorRuling `Thin'>
+ <TblInitNumBodyRows 3>
+ > # end of TblFormat
+ <TblNumColumns 4>
+ <Unique 1618>
+ <TblColumnWidth 1.25013">
+ <TblColumnWidth 1.75985">
+ <TblColumnWidth 1.85356">
+ <TblColumnWidth 1.50224">
+ <TblH
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1620>
+ <PgfTag `CellHeading'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `optcode'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1622>
+ <PgfTag `CellHeading'>
+ <ParaLine
+ <String `option'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1624>
+ <PgfTag `CellHeading'>
+ <ParaLine
+ <String `choice'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1992>
+ <PgfTag `CellHeading'>
+ <ParaLine
+ <String `default'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblH
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1626>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `delta-proxy'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1628>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DELTAOPT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1630>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DELTACHOICE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1994>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `entries=16, maxlen=64'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1632>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `delta-server'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1634>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DELTAOPT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1636>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `DELTACHOICE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1996>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `entries=16, maxlen=64'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1638>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `stream-comp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1640>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `LISTofNAMEDOPT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1642>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `INDEXEDCHOICE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1998>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `No Compression'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1644>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `bitmap-comp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1646>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `LISTofSTRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1648>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `LISTofINDEXEDOPT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2000>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `No Compression'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1650>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `pixmap-comp'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1652>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `LISTofPIXMAPMETHOD'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1654>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `LISTofPIXMAPCHOICE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2002>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `No Compression'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1656>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `use-squish'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1658>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1660>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2004>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `True'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1662>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `use-tags'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1664>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 1666>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `BOOL'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2006>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `True'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2019>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `colormap'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2021>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `LISTofSTRING8'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2023>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `INDEXEDCHOICE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2008>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `No Colormap Grabbing'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.22222">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2111>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `extension'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2113>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `NAMEDOPT'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2115>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `INDEXEDCHOICE'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2010>
+ <PgfTag `CellBody'>
+ <ParaLine
+ <String `Extension Disabled'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+> # end of Tbl
+> # end of Tbls
+<Page
+ <Unique 713331>
+ <PageType LeftMasterPage >
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 2>
+ <Unique 713332>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 10.334" 6.0" 0.1569">
+ <BRect 1.0" 10.334" 6.0" 0.1569">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 3>
+ <Unique 713333>
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 133>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square >
+ <TailCap Square >
+ <Overprint No >
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.0" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 4>
+ <Unique 713335>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.0" 0.211">
+ <BRect 1.0" 0.5" 6.0" 0.211">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 5>
+ <Unique 713336>
+ <Overprint No >
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 6>
+ <Unique 713337>
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.125">
+ <BRect 1.0" 1.0" 6.5" 9.125">
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 141>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 7>
+ <Unique 713339>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713364>
+ <PageType RightMasterPage >
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 8>
+ <Unique 713369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 147>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <HeadCap Square >
+ <TailCap Square >
+ <Overprint No >
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 9>
+ <Unique 713371>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No >
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 151>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 10>
+ <Unique 713506>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713383>
+ <PageType OtherMasterPage >
+ <PageTag `First'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 713384>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <TLOrigin 4.5" 3.125">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 713385>
+ <Overprint No >
+ <TLOrigin 4.375" 3.125">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ > # end of TextLine
+ <TextLine
+ <Unique 713386>
+ <Overprint No >
+ <TLOrigin 4.375" 3.0">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ > # end of TextLine
+ <TextRect
+ <ID 11>
+ <Unique 713387>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No >
+ <ShapeRect 1.0" 2.125" 6.5" 8.0">
+ <BRect 1.0" 2.125" 6.5" 8.0">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 12>
+ <Unique 713388>
+ <Overprint No >
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 163>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <HeadCap Square >
+ <TailCap Square >
+ <Overprint No >
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+> # end of Page
+<Page
+ <Unique 713401>
+ <PageType ReferencePage >
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 713402>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <TLOrigin 1.0" 0.625">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713403>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 0.69444" 2.52778" 0.27778">
+ <BRect 1.0" 0.69444" 2.52778" 0.27778">
+ <FrameType NotAnchored >
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 168>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <HeadCap Square >
+ <TailCap Square >
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.16667">
+ <Point 1.83333" 0.16667">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 713405>
+ <Overprint No >
+ <TLOrigin 1.02845" 1.70441">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `TableFootnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713406>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 1.76745" 2.52778" 0.09722">
+ <BRect 1.0" 1.76745" 2.52778" 0.09722">
+ <FrameType NotAnchored >
+ <Tag `TableFootnote'>
+ <PolyLine
+ <Unique 172>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.08333" 0.0534">
+ <Point 1.83333" 0.0534">
+ > # end of PolyLine
+ > # end of Frame
+> # end of Page
+<Page
+ <Unique 713409>
+ <PageType ReferencePage >
+ <PageTag `TOC'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 13>
+ <Unique 713410>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713411>
+ <Overprint No >
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Table of Contents Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713416>
+ <PageType ReferencePage >
+ <PageTag `IX'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 14>
+ <Unique 713417>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.5" 4.0" 5.5" 1.625">
+ <BRect 1.5" 4.0" 5.5" 1.625">
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713418>
+ <Overprint No >
+ <TLOrigin 1.5" 3.88623">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Index Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713427>
+ <PageType ReferencePage >
+ <PageTag `LOF'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 15>
+ <Unique 713428>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713429>
+ <Overprint No >
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `List of Figures Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713432>
+ <PageType ReferencePage >
+ <PageTag `LOT'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 16>
+ <Unique 713433>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713434>
+ <Overprint No >
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `List of Tables Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 10368>
+ <PageType BodyPage >
+ <PageNum `-1'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `First'>
+ <TextRect
+ <ID 17>
+ <Unique 10369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 2.125" 6.5" 8.0">
+ <BRect 1.0" 2.125" 6.5" 8.0">
+ <TRNext 18>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713316>
+ <PageType BodyPage >
+ <PageNum `0'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `First'>
+ <TextRect
+ <ID 18>
+ <Unique 713317>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 2.125" 6.5" 8.0">
+ <BRect 1.0" 2.125" 6.5" 8.0">
+ <TRNext 19>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713319>
+ <PageType BodyPage >
+ <PageNum `1'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 19>
+ <Unique 713320>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 20>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713322>
+ <PageType BodyPage >
+ <PageNum `2'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 20>
+ <Unique 713323>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 21>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713325>
+ <PageType BodyPage >
+ <PageNum `3'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 21>
+ <Unique 713326>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 22>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713328>
+ <PageType BodyPage >
+ <PageNum `4'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 22>
+ <Unique 713329>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 23>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713436>
+ <PageType BodyPage >
+ <PageNum `5'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 23>
+ <Unique 713437>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 24>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713439>
+ <PageType BodyPage >
+ <PageNum `6'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 24>
+ <Unique 713440>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 25>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713654>
+ <PageType BodyPage >
+ <PageNum `7'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 25>
+ <Unique 713655>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 26>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713657>
+ <PageType BodyPage >
+ <PageNum `8'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 26>
+ <Unique 713658>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 27>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713660>
+ <PageType BodyPage >
+ <PageNum `9'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 27>
+ <Unique 713661>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 28>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713663>
+ <PageType BodyPage >
+ <PageNum `10'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 28>
+ <Unique 713664>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 29>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714045>
+ <PageType BodyPage >
+ <PageNum `11'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 29>
+ <Unique 714046>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 30>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714112>
+ <PageType BodyPage >
+ <PageNum `12'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 30>
+ <Unique 714113>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 31>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714217>
+ <PageType BodyPage >
+ <PageNum `13'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 31>
+ <Unique 714218>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 32>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714310>
+ <PageType BodyPage >
+ <PageNum `14'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 32>
+ <Unique 714311>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 33>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714444>
+ <PageType BodyPage >
+ <PageNum `15'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 33>
+ <Unique 714445>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 34>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714528>
+ <PageType BodyPage >
+ <PageNum `16'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 34>
+ <Unique 714529>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 35>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714631>
+ <PageType BodyPage >
+ <PageNum `17'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 35>
+ <Unique 714632>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 36>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714705>
+ <PageType BodyPage >
+ <PageNum `18'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 36>
+ <Unique 714706>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 37>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714787>
+ <PageType BodyPage >
+ <PageNum `19'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 37>
+ <Unique 714788>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 38>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714850>
+ <PageType BodyPage >
+ <PageNum `20'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 38>
+ <Unique 714851>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 39>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 714966>
+ <PageType BodyPage >
+ <PageNum `21'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 39>
+ <Unique 714967>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 40>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 715519>
+ <PageType BodyPage >
+ <PageNum `22'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 40>
+ <Unique 715520>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 41>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 715632>
+ <PageType BodyPage >
+ <PageNum `23'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 41>
+ <Unique 715633>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 42>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 715635>
+ <PageType BodyPage >
+ <PageNum `24'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 42>
+ <Unique 715636>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 43>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 715638>
+ <PageType BodyPage >
+ <PageNum `25'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 43>
+ <Unique 715639>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 44>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 715641>
+ <PageType BodyPage >
+ <PageNum `26'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 44>
+ <Unique 715642>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 45>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 716136>
+ <PageType BodyPage >
+ <PageNum `27'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 45>
+ <Unique 716137>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 46>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 716396>
+ <PageType BodyPage >
+ <PageNum `28'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 46>
+ <Unique 716397>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 47>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 716647>
+ <PageType BodyPage >
+ <PageNum `29'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 47>
+ <Unique 716648>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 48>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 717067>
+ <PageType BodyPage >
+ <PageNum `30'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 48>
+ <Unique 717068>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 49>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 717259>
+ <PageType BodyPage >
+ <PageNum `31'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 49>
+ <Unique 717260>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 50>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 717573>
+ <PageType BodyPage >
+ <PageNum `32'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 50>
+ <Unique 717574>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 51>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 717855>
+ <PageType BodyPage >
+ <PageNum `33'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 51>
+ <Unique 717856>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 52>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 718002>
+ <PageType BodyPage >
+ <PageNum `34'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 52>
+ <Unique 718003>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 53>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1387>
+ <PageType BodyPage >
+ <PageNum `35'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 53>
+ <Unique 1388>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 54>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1407>
+ <PageType BodyPage >
+ <PageNum `36'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 54>
+ <Unique 1408>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 55>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1466>
+ <PageType BodyPage >
+ <PageNum `37'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 55>
+ <Unique 1467>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 56>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1518>
+ <PageType BodyPage >
+ <PageNum `38'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 56>
+ <Unique 1519>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 57>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1793>
+ <PageType BodyPage >
+ <PageNum `39'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 57>
+ <Unique 1794>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 58>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1756>
+ <PageType BodyPage >
+ <PageNum `40'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 58>
+ <Unique 1757>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 59>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1968>
+ <PageType BodyPage >
+ <PageNum `41'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 59>
+ <Unique 1969>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 60>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2079>
+ <PageType BodyPage >
+ <PageNum `42'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 60>
+ <Unique 2080>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 61>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2129>
+ <PageType BodyPage >
+ <PageNum `43'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 61>
+ <Unique 2130>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 62>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1968>
+ <PageType BodyPage >
+ <PageNum `44'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 62>
+ <Unique 1969>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 63>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2644>
+ <PageType BodyPage >
+ <PageNum `45'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 63>
+ <Unique 2645>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 64>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2384>
+ <PageType BodyPage >
+ <PageNum `46'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 64>
+ <Unique 2385>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 65>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2516>
+ <PageType BodyPage >
+ <PageNum `47'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 65>
+ <Unique 2517>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 66>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2512>
+ <PageType BodyPage >
+ <PageNum `48'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 66>
+ <Unique 2513>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 67>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2536>
+ <PageType BodyPage >
+ <PageNum `49'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 67>
+ <Unique 2537>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 68>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2539>
+ <PageType BodyPage >
+ <PageNum `50'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 68>
+ <Unique 2540>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1958>
+ <PageType HiddenPage >
+ <PageTag `HIDDEN'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 69>
+ <Unique 1959>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.0" 9.0">
+ <BRect 1.0" 1.0" 6.0" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713349>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.0">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 2>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 713341>
+ > # end of Variable
+ <Char Tab >
+ <Variable
+ <VariableName `Current Date (Long)'>
+ <Unique 713344>
+ > # end of Variable
+ <Char Tab >
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 713347>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713350>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 3>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713351>
+ <Pgf
+ <PgfTag `header right'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfBlockSize 1>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.0">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 4>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713477>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 5>
+ <String `$'>
+ <Font
+ <FTag `'>
+ <FSize 9.0 pt>
+ > # end of Font
+ <String `XConsortium'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `$'>
+ <Char Tab >
+ <Char Tab >
+ <Variable
+ <VariableName `Modification Date (Short)'>
+ <Unique 713496>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713362>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 6>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713363>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 7>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 713554>
+ > # end of Variable
+ <Char Tab >
+ <String `LBX'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713374>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 8>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713381>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 9>
+ <Variable
+ <VariableName `Modification Date (Short)'>
+ <Unique 713487>
+ > # end of Variable
+ <Char Tab >
+ <Font
+ <FTag `'>
+ <FSize 9.0 pt>
+ > # end of Font
+ <String `$Xorg: lbx.mif,v 1.3 2000/08/17 19:42:31 cpqbld Exp $'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713510>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 10>
+ <Variable
+ <VariableName `Running H/F 2'>
+ <Unique 713559>
+ > # end of Variable
+ <Char Tab >
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 715799>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713393>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 11>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713400>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 12>
+ <Variable
+ <VariableName `Modification Date (Short)'>
+ <Unique 713395>
+ > # end of Variable
+ <Char Tab >
+ <String `$Xorg: lbx.mif,v 1.3 2000/08/17 19:42:31 cpqbld Exp $'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `TOC'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713412>
+ <Pgf
+ <PgfTag `1HeadingTOC'>
+ <PgfLIndent 0.5">
+ <PgfSpBefore 5.0 pt>
+ <PgfBlockSize 2>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 13>
+ <String `<$paranum\>'>
+ <Char Tab >
+ <String `<$paratext\>'>
+ <Char Tab >
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713413>
+ <Pgf
+ <PgfTag `2HeadingTOC'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab >
+ <String `<$paratext\>'>
+ <Char Tab >
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713414>
+ <Pgf
+ <PgfTag `3HeadingTOC'>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.5">
+ <PgfSpBefore 0.0 pt>
+ <PgfBlockSize 1>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab >
+ <String `<$paratext\>'>
+ <Char Tab >
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `IX'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713419>
+ <Pgf
+ <PgfTag `Level2IX'>
+ <PgfFIndent 0.125">
+ <PgfLIndent 0.375">
+ <PgfLeading 1.0 pt>
+ <PgfNumTabs 0>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 14>
+ <String `Level2IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713420>
+ <Pgf
+ <PgfTag `Level1IX'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String `Level1IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713421>
+ <Pgf
+ <PgfTag `SpecIX'>
+ <PgfLIndent 0.0">
+ <PgfLeading 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String ` 1, 2'>
+ <Char EnDash >
+ <String `3'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713422>
+ <Pgf
+ <PgfTag `SortSpecIX'>
+ > # end of Pgf
+ <ParaLine
+ <String `<$symbols\><$numerics\><$alphabetics\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713423>
+ <Pgf
+ <PgfTag `GroupTitlesIX'>
+ <PgfSpBefore 11.0 pt>
+ <PgfWithNext Yes >
+ > # end of Pgf
+ <ParaLine
+ <String `Symbols[\\ ];Numerics[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713424>
+ <Pgf
+ <PgfTag `IndexIX'>
+ <PgfSpBefore 0.0 pt>
+ <PgfWithNext No >
+ > # end of Pgf
+ <ParaLine
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713425>
+ <Pgf
+ <PgfTag `Paragraph'>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOF'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713430>
+ <Pgf
+ <PgfTag `FigureLOF'>
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfBlockSize 2>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right >
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate No >
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 15>
+ <String `<$paranum\>'>
+ <Char Tab >
+ <String `<$paratext\>'>
+ <Char Tab >
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOT'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713435>
+ <Pgf
+ <PgfTag `TableTitleLOT'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 16>
+ <String `<$paranum\>'>
+ <Char Tab >
+ <String `<$paratext\>'>
+ <Char Tab >
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713186>
+ <PgfTag `Title'>
+ <ParaLine
+ <TextRectID 17>
+ <String `Low Bandwidth X Extension'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717094>
+ <PgfTag `SubTitle'>
+ <ParaLine
+ <String `Protocol Version 1.0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717095>
+ <PgfTag `SubTitle'>
+ <ParaLine
+ <String `X Consortium Standard'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717093>
+ <PgfTag `Author'>
+ <ParaLine
+ <String `D. Converse, J. Fulton, C. Kantarjiev, D. Lemke, R. Mor, K. Packard, R. Tice, D. Tonogai'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1932>
+ <PgfTag `Author'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Conditional
+ <InCondition `Version Tag'>
+ > # end of Conditional
+ <String `$Xorg: lbx.mif,v 1.3 2000/08/17 19:42:31 cpqbld Exp $'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2530>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop >
+ > # end of Pgf
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <TextRectID 18>
+ <Unconditional >
+ <String `Copyright (c) 1996 X Consortium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2532>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated '>
+ >
+ <ParaLine
+ <String `documentation files (the "Software"), to deal in the Software without restriction, including without limita'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion the rights to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the Software, '>
+ >
+ <ParaLine
+ <String `and to permit persons to whom the Software is furnished to do so, subject to the following conditions:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2533>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `The above copyright notice and this permission notice shall be included in all copies or substantial portions '>
+ >
+ <ParaLine
+ <String `of the Software.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2534>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR '>
+ >
+ <ParaLine
+ <String `IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X '>
+ >
+ <ParaLine
+ <String `CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN '>
+ >
+ <ParaLine
+ <String `AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2535>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `Except as contained in this notice, the name of the X Consortium shall not be used in advertising or other'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `wise to promote the sale, use or other dealings in this Software without prior written authorization from the '>
+ >
+ <ParaLine
+ <String `X Consortium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713190>
+ <PgfTag `1Heading'>
+ <Pgf
+ <PgfPlacement PageTop >
+ > # end of Pgf
+ <PgfNumString `1\t'>
+ <ParaLine
+ <TextRectID 19>
+ <String `Introduction'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716674>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Low Bandwidth X (LBX) is a network-transparent protocol for running X Window System applications '>
+ >
+ <ParaLine
+ <String `over transport channels whose bandwidth and latency are significantly worse than that used in local area net'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `works. It combines a variety of caching and reencoding techniques to reduce the volume of data that must be '>
+ >
+ <ParaLine
+ <String `sent over the wire. It can be used with existing clients by placing a proxy between the clients and server, so '>
+ >
+ <ParaLine
+ <String `that the low bandwidth/high latency communication occurs between the proxy and server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716663>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This extension was designed and implemented by Jim Fulton, David Lemke, Keith Packard, and Dale '>
+ >
+ <ParaLine
+ <String `Tonogai, all of Network Computing Devices (NCD). Chris Kent Kantarjiev (Xerox PARC) participated in '>
+ >
+ <ParaLine
+ <String `early design discussions. Ralph Mor (X Consortium) designed and implemented additional sections. Donna '>
+ >
+ <ParaLine
+ <String `Converse (X Consortium) authored the protocol description and encoding from design notes and the imple'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `mentation. Ray Tice (X Consortium) resolved the open issues in the design and specification. Bob Scheifler '>
+ >
+ <ParaLine
+ <String `(X Consortium) helped out in many areas.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1944>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The extension name is "LBX".'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713191>
+ <PgfTag `1Heading'>
+ <PgfNumString `2\t'>
+ <ParaLine
+ <String `Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2041>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The design center for LBX is to use a proxy as an intermediary between the client and server. The proxy '>
+ >
+ <ParaLine
+ <String `reencodes and compresses requests, events, replies and errors, as well as the resulting data stream. Addition'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ally, the proxy can cache information from the server to provide low-latency replies to clients. This reply '>
+ >
+ <ParaLine
+ <String `generation by the proxy is known as short-circuiting. A proxy can handle multiple clients for a given server, '>
+ >
+ <ParaLine
+ <String `but does not prevent clients from connecting directly to the server. The design allows the proxy to multiplex '>
+ >
+ <ParaLine
+ <String `multiple clients into a single data stream to the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715581>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Much of LBX is implemented as an extension. The compression and reencoding changes can be isolated to '>
+ >
+ <ParaLine
+ <String `the transport and dispatch portions of the server, while short-circuiting requires minor changes to the '>
+ >
+ <ParaLine
+ <String `server\xd5 s colormap and property code.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2054>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX employs several different compression and short-circuiting methods. Use of these methods is negotia'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ble, and in some cases, the algorithm used by a given method is negotiable as well. LBX also provides for '>
+ >
+ <ParaLine
+ <String `negotiation of extensions to LBX.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716694>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.1\t'>
+ <ParaLine
+ <String `Data Flow'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716695>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The LBX data stream goes through a number of layers:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716696>
+ <PgfTag `Numbered0'>
+ <Pgf
+ <PgfSpAfter 6.0 pt>
+ > # end of Pgf
+ <PgfNumString `0.\t'>
+ <ParaLine
+ <String `Client requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716698>
+ <PgfTag `Numbered'>
+ <PgfNumString `1.\t'>
+ <ParaLine
+ <String `Read by LBX and potential byte-swapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716699>
+ <PgfTag `Numbered'>
+ <PgfNumString `2.\t'>
+ <ParaLine
+ <String `Request-specific compression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716700>
+ <PgfTag `Numbered'>
+ <PgfNumString `3.\t'>
+ <ParaLine
+ <String `Potential byte swapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716712>
+ <PgfTag `Numbered'>
+ <PgfNumString `4.\t'>
+ <ParaLine
+ <String `Multiplexing of client request streams'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716701>
+ <PgfTag `Numbered'>
+ <PgfNumString `5.\t'>
+ <ParaLine
+ <String `Delta replacement'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716702>
+ <PgfTag `Numbered'>
+ <PgfNumString `6.\t'>
+ <ParaLine
+ <String `Stream compression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716703>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Transport'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716704>
+ <PgfTag `Numbered-decrement'>
+ <PgfNumString `6.\t'>
+ <ParaLine
+ <String `Stream decompression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2597>
+ <PgfTag `Numbered-decrement'>
+ <Pgf
+ <PgfNumFormat `<n=5\>.\\t'>
+ > # end of Pgf
+ <PgfNumString `5.\t'>
+ <ParaLine
+ <String `Delta substitution'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2593>
+ <PgfTag `Numbered-decrement'>
+ <Pgf
+ <PgfNumFormat `<n=4\>.\\t'>
+ > # end of Pgf
+ <PgfNumString `4.\t'>
+ <ParaLine
+ <String `Demultiplexing of client request streams'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716706>
+ <PgfTag `Numbered-decrement'>
+ <Pgf
+ <PgfNumFormat `<n=3\>.\\t'>
+ > # end of Pgf
+ <PgfNumString `3.\t'>
+ <ParaLine
+ <String `Potential byte swapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716707>
+ <PgfTag `Numbered-decrement'>
+ <Pgf
+ <PgfNumFormat `<n=2\>.\\t'>
+ > # end of Pgf
+ <PgfNumString `2.\t'>
+ <ParaLine
+ <TextRectID 20>
+ <String `Reencoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716708>
+ <PgfTag `Numbered-decrement'>
+ <Pgf
+ <PgfNumFormat `<n=1\>.\\t'>
+ > # end of Pgf
+ <PgfNumString `1.\t'>
+ <ParaLine
+ <String `Request processing'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716709>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The reverse process occurs with X server replies, events, and errors.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715586>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.2\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `11018: 2Heading: 2.2 Tags'>
+ <MCurrPage 3>
+ <Unique 2533>
+ > # end of Marker
+ <String `Tags'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2155>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Tags are used to support caching of large data items that are expected to be queried multiple times. Such '>
+ >
+ <ParaLine
+ <String `things as the keyboard map and font metrics are often requested by multiple clients. Rather than send the '>
+ >
+ <ParaLine
+ <String `data each time, the first time the data is sent it includes a tag. The proxy saves this data, so that subsequent '>
+ >
+ <ParaLine
+ <String `requests can send only the tag to refer to that same data. The different types of tags are used for connection '>
+ >
+ <ParaLine
+ <String `information, keyboard maps, modifier maps, fonts information and properties.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2171>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Tag usage is negotiated as a boolean in the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message. The proxy controls how many tags '>
+ >
+ <ParaLine
+ <String `are stored in the proxy. The server may wish to observe the proxy\xd5 s InvalidateTag behavior to limit how '>
+ >
+ <ParaLine
+ <String `many tags are cached at any one time. Tagged data is not shared across types of tags, but the number space '>
+ >
+ <ParaLine
+ <String `used for the tag ids is.'>
+ <Marker
+ <MType 10>
+ <MText `+16436'>
+ <MCurrPage 3>
+ <Unique 2663>
+ > # end of Marker
+ <String ` The tag ids are generated by the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715588>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X server keeps track of what tags are known to the proxy. The proxy can invalidate a tag if no tag bear'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ing replies of that type are pending. The proxy sends an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxInvalidateTag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message to release the '>
+ >
+ <ParaLine
+ <String `tagged data. The proxy must not invalidate connection tags unless instructed to do so by the server. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2132>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the server wishes to discard tagged data, it must either have received an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxInvalidateTag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request '>
+ >
+ <ParaLine
+ <String `from the proxy or send an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxInvalidateTag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event to the proxy for that tag. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2108>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.1 \t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `26534: 3Heading: 2.2.1 Tag Substituion in Requests'>
+ <MCurrPage 3>
+ <Unique 2115>
+ > # end of Marker
+ <String `Tag Substitution in Requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2109>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Many substitution requests have a tag field, followed by fields marked optional. For these requests, if the '>
+ >
+ <ParaLine
+ <String `optional fields are present, the data in them is stored in the indicated tag, unless the tag is 0. If the optional '>
+ >
+ <ParaLine
+ <String `fields are absent, the tag field indicates the tag that contains the data for the "optional" fields.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1957>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.2.2 \t'>
+ <ParaLine
+ <String `Property Tags'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2555>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Property data makes special use of tags. A common use of properties is for inter-client communication. If '>
+ >
+ <ParaLine
+ <String `both clients use the proxy, it is wasteful to send the data to the server and then back, when the server may '>
+ >
+ <ParaLine
+ <String `never need it. '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxChangeProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request does the same work as the core '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `ChangeProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `request, but it does not send the data. The reply to this request contains a tag id corresponding to the data. If '>
+ >
+ <ParaLine
+ <String `the property information is used locally, the server responds to '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` with the tag, and the '>
+ >
+ <ParaLine
+ <String `property data need never be sent to the server. If the server does require the data, it can issue an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQue'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ryTag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message. The proxy can also send the data on at any time if it judges it appropriate (i.e., when the '>
+ >
+ <ParaLine
+ <String `wire goes idle). Since the proxy owns the property data, it must not invalidate the tag before sending the data '>
+ >
+ <ParaLine
+ <String `back to the server via an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxTagData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715596>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.3\t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+19804'>
+ <MCurrPage 3>
+ <Unique 2674>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Short-circuiting'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715597>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Short-circuiting is used to handle constant data. This includes atoms, color name/RGB mappings, and '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `AllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` calls. Atoms and color name/RGB mappings stay constant for the life of the server. '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Alloc'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Color'>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `replies are constant for each colormap. Short-circuiting replaces round-trip requests with one-way '>
+ >
+ <ParaLine
+ <String `requests, and can sometimes use one in place of many.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715598>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 21>
+ <String `Atoms are used heavily for ICCCM communication. Once the proxy knows the string to atom mapping, it '>
+ >
+ <ParaLine
+ <String `has no need to send subsequent requests for this atom to the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715599>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Colorname/RGB mappings are constant, so once the proxy sees the response from '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LookupColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, it need '>
+ >
+ <ParaLine
+ <String `not forward any subsequent requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715600>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Clients often use the same color cells, so once a read-only color allocation has occurred, the proxy knows '>
+ >
+ <ParaLine
+ <String `what RGB values should be returned to the client. The proxy doesn\qt need to forward any '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `AllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `requests it can resolve, but it must tell the server to modify the color cell\qs reference count. '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxIncre'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `mentPixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is used to support this.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715601>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For all three classes of short-circuiting, the proxy must still tell the server a request has occurred, so that the '>
+ >
+ <ParaLine
+ <String `request sequence numbers stay in sync. This is done with '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxModifySequence'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715602>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Sequence numbers cause the major complication with short-circuiting. X guarantees that any replies, events '>
+ >
+ <ParaLine
+ <String `or errors generated by a previous request will be sent before those of a later request. This means that any '>
+ >
+ <ParaLine
+ <String `requests that can be handled by the proxy must have their reply sent after any previous events or errors. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2061>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If a proxy\xd5 s applications do not require strict adherence to the X protocol ordering of errors or events, a '>
+ >
+ <ParaLine
+ <String `proxy might provide further optimization by avoiding the overhead of maintaining this ordering, however, '>
+ >
+ <ParaLine
+ <String `the resulting protocol is not strictly X11 compliant.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716757>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.4\t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+37100'>
+ <MCurrPage 4>
+ <Unique 2685>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Graphics Re-encoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716758>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The LBX proxy attempts to reencode '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyPoint'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyLine'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolySegment'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `FillPoly'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyFillRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyFillArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `CopyArea'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `CopyPlane'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyText8'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyText16'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `ImageText8'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `ImageText16'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests. If the request can be reen'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `coded, it may be replaced by an equivalent LBX form of the request. The requests are reencoded by attempt'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ing to reduce 2-byte coordinate, length, width and angle fields to 1 byte. Where applicable, the coordinate '>
+ >
+ <ParaLine
+ <String `mode is also converted to '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Previous'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` to improve the compressibility of the resulting data. In image '>
+ >
+ <ParaLine
+ <String `requests, the image data may also be compressed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715612>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.5\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `15503: 2Heading: 2.5 Motion events'>
+ <MCurrPage 4>
+ <Unique 2591>
+ > # end of Marker
+ <String `Motion events'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715613>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `To prevent clogging the wire with '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` events, the server and proxy work together to control '>
+ >
+ <ParaLine
+ <String `the number of events on the wire. This is done with the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxAllowMotion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. The request adds an '>
+ >
+ <ParaLine
+ <String `amount to an allowed motion count in the server, which is kept on a per-proxy basis. Every motion notify '>
+ >
+ <ParaLine
+ <String `event sent to the proxy decrements the allowed motion counter. If the allowed motion count is less than or '>
+ >
+ <ParaLine
+ <String `equal to zero, motion events not required by the X protocol definition are not sent to the proxy. The allowed '>
+ >
+ <ParaLine
+ <String `motion counter has a minimum value of -2^31.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2016>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.6\t'>
+ <ParaLine
+ <String `Event Squishing'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2017>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In the core protocol, all events are padded as needed to be 32 bytes long. The LBX extension reduces traffic '>
+ >
+ <ParaLine
+ <String `by removing padding at the end of events, and implying the event length from its type. This is known as '>
+ >
+ <ParaLine
+ <String `squishing.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2223>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.7\t'>
+ <ParaLine
+ <TextRectID 22>
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+42157'>
+ <MCurrPage 5>
+ <Unique 2706>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Master Client '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2224>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the initial X connection between the proxy and the server is converted to LBX mode, the proxy itself '>
+ >
+ <ParaLine
+ <String `becomes the master client. New client requests and some tag messages are sent in the context of the master '>
+ >
+ <ParaLine
+ <String `client.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716744>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.8\t'>
+ <ParaLine
+ <String `Multiplexing of Clients'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716745>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The LBX proxy multiplexes the data streams of all its clients into one stream, and then splits them apart '>
+ >
+ <ParaLine
+ <String `again when they are received. The '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxSwitch'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message is used to tell each end which client is using the '>
+ >
+ <ParaLine
+ <String `wire at the time.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1932>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server should process delta requests in the order that they appear on the LBX connection. If the server '>
+ >
+ <ParaLine
+ <String `does not maintain the interclient request order for requests sent by the proxy, it must still obey the semantics '>
+ >
+ <ParaLine
+ <String `implied by the interclient request order so that the delta cache functions correctly.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1936>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server can affect the multiplexing of clients by the proxy using the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxListenToOne'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxLis'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tenToAll'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` messages. This is useful during grabs, since the master connection can not be blocked during '>
+ >
+ <ParaLine
+ <String `grabs like other clients. The proxy is responsible for tracking server grabs issued by its clients so that the '>
+ >
+ <ParaLine
+ <String `proxy can multiplex the client streams in an order executable by the server. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 3038>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Replies must be ordered in the multiplexed data stream from the server to the proxy such that the reply car'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `rying tagged data precedes replies that refer to that tagged data.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716747>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.9\t'>
+ <ParaLine
+ <String `Swapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716748>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Swapping is handled as with any X extension, with one caveat. Since a proxy can be supporting clients with '>
+ >
+ <ParaLine
+ <String `different byte orders, and they all share the same wire, the length fields of all messages between the server '>
+ >
+ <ParaLine
+ <String `and proxy are expressed in the proxy byte order. This prevents any problems with length computation that '>
+ >
+ <ParaLine
+ <String `may occur when clients are switched.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715614>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.10\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `22595: 2Heading: 2.10 Delta cache'>
+ <MCurrPage 5>
+ <Unique 1731>
+ > # end of Marker
+ <String `Delta cache'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715615>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX takes advantage of the fact that an X message may be very similar to one that has been previously sent. '>
+ >
+ <ParaLine
+ <String `For example, a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `KeyPress'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event may differ from a previous '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `KeyPress'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event in just a few bytes. By send'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ing just the bytes that differ (or \xd2 deltas\xd3 ), the number of bytes sent over the wire can be substantially '>
+ >
+ <ParaLine
+ <String `reduced. Delta compaction is used on requests being sent by the proxy as well as on replies and events being '>
+ >
+ <ParaLine
+ <String `sent by the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2029>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server and the proxy each keep per-proxy request and response caches. The response cache contains '>
+ >
+ <ParaLine
+ <String `events, errors and replies. All messages are saved in the appropriate delta cache if they are of an appropriate '>
+ >
+ <ParaLine
+ <String `type and more than 8 bytes long but fit within the delta cache. The number of entries in the delta cache and '>
+ >
+ <ParaLine
+ <String `the maximum saved message size are negotiated in the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2599>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The LBX requests that are never stored in the request delta cache are the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQueryVersion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Lbx'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `StartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxSwitch'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxAllowMotion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxDelta'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQueryExten'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxPutImage'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetImage'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxBeginLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxLargeRequestData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxEndLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxInternAtoms'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests. The responses that are never stored in the '>
+ >
+ <ParaLine
+ <String `response cache are '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxSwitchEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxDeltaResponse'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. The message carried by a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `delta '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `message is also cached, if it meets the other requirements. Messages after the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request are '>
+ >
+ <ParaLine
+ <TextRectID 23>
+ <String `cached starting at index 0, and incrementing the index, modulo the number of entries, thereafter. The request '>
+ >
+ <ParaLine
+ <String `and response caches are independently indexed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2105>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the current message is cachable and the same length as a message in the corresponding delta cache, a delta '>
+ >
+ <ParaLine
+ <String `message may be substituted in place of the original message in the protocol stream. '>
+ <Marker
+ <MType 10>
+ <MText `+42243'>
+ <MCurrPage 6>
+ <Unique 2719>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2102>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.11\t'>
+ <ParaLine
+ <String `Stream '>
+ <Marker
+ <MType 9>
+ <MText `11596: 2Heading: 2.11 Compression'>
+ <MCurrPage 6>
+ <Unique 1766>
+ > # end of Marker
+ <String `Compression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715662>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Before being passed down to the transport layer messages can be passed through a general purpose data '>
+ >
+ <ParaLine
+ <String `compressor. The choice of compression algorithm is negotiated with '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `20870: Protocol: StartProxy'>
+ <XRefSrcFile `'>
+ <Unique 1939>
+ > # end of XRef
+ <String `\xd2 LbxStartProxy\xd3 on page'>
+ <Char HardSpace >
+ <String `9'>
+ <XRefEnd >
+ <String `. The proxy '>
+ >
+ <ParaLine
+ <String `and server are not required to support any specific stream compressor. As an example, however, the X Con'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sortium implementation of a ZLIB based compressor is described below.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1942>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `The XC-ZLIB compressor is presented with a simple byte stream - the X and '>
+ >
+ <ParaLine
+ <String `LBX message boundaries are not apparent. The data is broken up into fixed sized '>
+ >
+ <ParaLine
+ <String `blocks. Each block is compressed using zlib 1.0 (by Gailly & Adler), then a two '>
+ >
+ <ParaLine
+ <String `byte header is prepended, and then the entire packet is transmitted. The header '>
+ >
+ <ParaLine
+ <String `has the following information:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2148>
+ <PgfTag `Extract'>
+ <Pgf
+ <PgfFIndent 2.0">
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `out[0] = (length & 0xfff) \>\> 8 | ((compflag) ? 0x80 : 0);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2150>
+ <PgfTag `Extract'>
+ <Pgf
+ <PgfFIndent 2.0">
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `out[1] = length & 0xff;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2156>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.12\t'>
+ <ParaLine
+ <String `Authentication Protocols'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2157>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The current version of LBX does not support multipass authentication protocols for clients of the proxy. '>
+ >
+ <ParaLine
+ <String `These authentication protocols return an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Authenticate'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message in response to a connection setup '>
+ >
+ <ParaLine
+ <String `request, and require additional authentication data from the client after the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, and '>
+ >
+ <ParaLine
+ <String `before the reply to '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. One example of such a protocol is XC-QUERY-SECURITY-1. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2146>
+ <PgfTag `1Heading'>
+ <PgfNumString `3\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `33319: 2Heading: 2.14 LBX Extension Protocol Pass-through by Proxy'>
+ <MCurrPage 6>
+ <Unique 2144>
+ > # end of Marker
+ <Marker
+ <MType 10>
+ <MText `+19943'>
+ <MCurrPage 6>
+ <Unique 2730>
+ > # end of Marker
+ <String `C Library Interfaces '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2147>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The C Library routines for LBX are in the Xext library. The prototypes are located in a file named "XLbx.h". '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1956>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.1\t'>
+ <ParaLine
+ <String `Application Library Interfaces'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2029>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In a proxy environment, applications do not need to call these routines to take advantage of LBX. Clients '>
+ >
+ <ParaLine
+ <String `can, however, obtain information about the LBX extension to the server using this interface. Use of this rou'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tine may be altered when connected through a proxy, as described in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `33319: 2Heading: 2.14 LBX Extension Protocol Pass-through by Proxy'>
+ <XRefSrcFile `'>
+ <Unique 2042>
+ > # end of XRef
+ <String `\xd2 C Library Interfaces\xd3 on page'>
+ <Char HardSpace >
+ <String `5'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1975>
+ <PgfTag `3Heading'>
+ <PgfNumString `3.1.1 \t'>
+ <ParaLine
+ <String `XLbxQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2037>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `To determine the version of LBX supported by the X server, call '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryVersion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715506>
+ <PgfTag `Function Decl'>
+ <ParaLine
+ <String `Bool XLbxQueryVersion('>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `display, major_version_return, minor_version_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `)'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `Display * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `;'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `int * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `major_version_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `;'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `int * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `minor_version_return;'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `display'>
+ <Char Tab >
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Specifies the connection to the X server.'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `major_version_return'>
+ <Char Tab >
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Returns the extension major version number.'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `minor_version_return'>
+ <Char Tab >
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Returns the extension minor version number.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717085>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 24>
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryVersion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` function determines if the LBX extension is present. If the extension is not '>
+ >
+ <ParaLine
+ <String `present, '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryVersion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` returns '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `False'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `; otherwise, it returns '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `True'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. If the extension is present, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryVersion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` returns the major and minor version numbers of the extension as supported by the X '>
+ >
+ <ParaLine
+ <String `server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1973>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.2\t'>
+ <ParaLine
+ <String `Proxy Library Interfaces'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1974>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The following interfaces are intended for use by the proxy.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2204>
+ <PgfTag `3Heading'>
+ <PgfNumString `3.2.1 \t'>
+ <ParaLine
+ <String `XLbxQueryExtension'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2205>
+ <PgfTag `Function Intro'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `To determine the dynamically assigned codes for the extension, use the Xlib function '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XQueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `or the LBX function '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1961>
+ <PgfTag `Function Decl'>
+ <ParaLine
+ <String `Bool XLbxQueryExtension('>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `major_opcode_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `first_event_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `first_error_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `)'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `Display * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `;'>
+ <Char Tab >
+ <String `Specifies the connection to the X server.'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `int * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `major_opcode_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `;'>
+ <Char Tab >
+ <String `Returns the major opcode.'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `int * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `first_event_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `;'>
+ <Char Tab >
+ <String `Returns the first event code.'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `int * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `first_error_return'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `;'>
+ <Char Tab >
+ <String `Returns the first error code.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1962>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` function determines if the LBX extension is present. If the extension is not '>
+ >
+ <ParaLine
+ <String `present, '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` returns '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `False'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `; otherwise, it returns '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `True'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. If the extension is present, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxQueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` returns the major opcode for the extension to major_opcode_return, the base '>
+ >
+ <ParaLine
+ <String `event type code to first_event_return, and the base error code to first_error_return; otherwise, the return val'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ues are undefined.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1999>
+ <PgfTag `3Heading'>
+ <PgfNumString `3.2.2 \t'>
+ <ParaLine
+ <String `XLbxGetEventBase'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1993>
+ <PgfTag `Function Intro'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `To determine the base event type code, use the Xlib function '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XQueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` or the LBX function '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxGetEventBase'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1964>
+ <PgfTag `Function Decl'>
+ <ParaLine
+ <String `int XLbxGetEventBase('>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `)'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <Char Tab >
+ <String `Display * '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `display'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `;'>
+ <Char Tab >
+ <String `Specifies the connection to the X server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1965>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ > # end of Font
+ <String `XLbxGetEventBase'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` function returns the base event type code if the extension is present; otherwise, '>
+ >
+ <ParaLine
+ <String `it returns -1.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715291>
+ <PgfTag `1Heading'>
+ <PgfNumString `4\t'>
+ <ParaLine
+ <String `Protocol'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715292>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.1\t'>
+ <ParaLine
+ <String `Syntactic Conventions and Common Types'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713194>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Please refer to the X Window System Protocol specification, as this document uses the syntactic conventions '>
+ >
+ <ParaLine
+ <String `established there and references types defined there.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714923>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The following additional types are defined by this extension:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714932>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `DIFFITEM'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714924>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `offset'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714925>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 25>
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `diff'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716458>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `LBXANGLE: CARD8 or 2 BYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2010>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `where (in order of precedence):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2016>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `(0 <= in <= A(95)) && !(in % A(5)) '>
+ <Char Tab >
+ <String `out = 0x5a + (in / A(5))'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2562>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `A(105) <= in <= A(360) && !(in % A(15))'>
+ <Char Tab >
+ <String `out = 0x67 + (in / A(15))'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2545>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `-A(100) <= in <= -A(5) && !(in % A(5))'>
+ <Char Tab >
+ <String `out = 0xa6 + (in / A(5))'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2548>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `-A(360) < in <= -A(105) && !(in % A(15))'>
+ <Char Tab >
+ <String `out = 0x98 + (in / A(15))'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2550>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `-A(360) < in <= A(360)'>
+ <Char Tab >
+ <String `out[0] = in \>\> 8; out[1] = in'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1592>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `LBXARC: '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1590>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `[x, y: LBXINT16,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1589>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `width, height: LBXCARD16,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1586>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `angle1, angle2: LBXANGLE]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1602>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1603>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `Within a list of arcs, after the first arc, x and y are relative to the corresponding fields of the prior arc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1575>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `LBXCARD16: CARD8 or 2 BYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1540>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `where: '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1980>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0x0000 <= in < 0x00F0'>
+ <Char Tab >
+ <String `CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1981>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0x00F0 <= in < 0x10F0'>
+ <Char Tab >
+ <String `out[0] = 0xF0 | ((in - 0xF0) \>\> 8)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1983>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `out[1] = in - 0xF0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2099>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FChangeBar No >
+ > # end of Font
+ <String `LBXGCANDDRAWENT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2104>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `[ gc-cache-index, drawable-cache-index: CARD4 ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2659>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FChangeBar No >
+ > # end of Font
+ <String `LBXGCANDDRAWUPDATE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2100>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `drawable: DRAWABLE'>
+ <Char Tab >
+ <String `/* present only if '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `drawable-cache-index'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` == 0 */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2101>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `gc: GC]'>
+ <Char Tab >
+ <String `/* present only if '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-cache-index'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` == 0 */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2663>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FChangeBar No >
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2666>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `cache-entries: LBXGCANDDRAWENT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2668>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `updates: LBXGCANDDRAWUPDATE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2092>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `LBXINT16'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `: INT8 or 2 BYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2093>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1971>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0xF790 <= in < 0xFF90'>
+ <Char Tab >
+ <String `out[0] = 0x80 | (((in + 0x70) \>\> 8) & 0x0F)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1972>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `out[1] = in + 0x70'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1973>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0xFF90 <= in < 0x0080'>
+ <Char Tab >
+ <String `CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1974>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0x0080 <= in < 0x0880'>
+ <Char Tab >
+ <String `out[0] = 0x80 | (((in - 0x80) \>\> 8) & 0x0F)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1975>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `out[1] = in - 0x80'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2246>
+ <PgfTag `Encode-type'>
+ <Pgf
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `: CARD8 or 2 BYTE '>
+ <Char Tab >
+ <String `/* for usually positive numbers */'>
+ <Char Tab >
+ >
+ > # end of Para
+ <Para
+ <Unique 2247>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1984>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0xFE00 <= in < 0x0000'>
+ <Char Tab >
+ <String `out[0] = 0xF0 | (((in + 0x1000) \>\> 8) & 0x0F)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1986>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `out[1] = in + 0x1000'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2260>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 26>
+ <Char Tab >
+ <String `0x0000 <= in < 0x00F0 '>
+ <Char Tab >
+ <String `CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0x00F0 <= in < 0x0EF0'>
+ <Char Tab >
+ <String `out[0] = 0xF0 | ((in - 0xF0) \>\>8)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1996>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `out[1] = in - 0xF0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2000>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `LBXPOINT'>
+ <Char Tab >
+ <String `: [x, y: LBXINT16]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1608>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `Within a list of points, after the first rectangle, x and y are relative to the corresponding fields of the '>
+ >
+ <ParaLine
+ <String `prior point.'>
+ <Char Tab >
+ >
+ > # end of Para
+ <Para
+ <Unique 1557>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `LBXRECTANGLE'>
+ <Char Tab >
+ <String `: '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1591>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `[x, y: LBXINT16,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1562>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `width, height: LBXCARD16]'>
+ <Char Tab >
+ >
+ > # end of Para
+ <Para
+ <Unique 1614>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1615>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `Within a list of rectangles, after the first rectangle, x and y are relative to the corresponding fields of '>
+ >
+ <ParaLine
+ <String `the prior rectangle.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717322>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `MASK: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717705>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.2\t'>
+ <ParaLine
+ <String `Errors'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717706>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `As with the X11 protocol, when a request terminates with an error, the request has no side effects (that is, '>
+ >
+ <ParaLine
+ <String `there is no partial execution).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2253>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `There is one error, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. This error indicates that the client field of an LBX request was invalid, or '>
+ >
+ <ParaLine
+ <String `that the proxy\xd5 s connection was in an invalid state for a start or stop proxy request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2255>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.3\t'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+15710'>
+ <MCurrPage 9>
+ <Unique 2743>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715384>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `There is one request that is expected to be used only by the client: '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715397>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `There is one request that is expected to be used by the client or the proxy: '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715398>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The following requests are expected to be used only by the proxy, and are instigated by the proxy: '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Lbx'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `StartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStopProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxSwitch'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxCloseClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxModify'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Sequence'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxAllowMotion'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxInvalidateTag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxTagData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQueryTag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715403>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `All other requests are sent by the proxy to the LBX server and are instigated by reception of an X request '>
+ >
+ <ParaLine
+ <String `from the client. They replace the X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715399>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.1 \t'>
+ <ParaLine
+ <String `Requests Initiated by the Proxy or by the Client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713202>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `18761: Protocol: QueryVersion'>
+ <MCurrPage 9>
+ <Unique 2038>
+ > # end of Marker
+ <String `LbxQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713594>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713591>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `majorVersion: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713599>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `minorVersion: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713203>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request returns the major and minor version numbers of the LBX protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1619>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `34166: Encode-heading: QueryVersion'>
+ <XRefSrcFile `'>
+ <Unique 1629>
+ > # end of XRef
+ <String `page 30'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717443>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.2 \t'>
+ <ParaLine
+ <TextRectID 27>
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+37732'>
+ <MCurrPage 10>
+ <Unique 2754>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `Requests Initiated or Substituted by the Proxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713205>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `36662: Protocol: QueryExtension'>
+ <MCurrPage 10>
+ <Unique 2303>
+ > # end of Marker
+ <String `LbxQueryExtension'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713600>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `nbytes'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713610>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `name'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713615>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713616>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `num-requests: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713622>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `present: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713623>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `major-opcode: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713624>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `first-event: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713625>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `first-error: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713626>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `reply-mask: LISTofMASK'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713627>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `event-mask:LISTofMASK'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717435>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717252>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request is identical to the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `QueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, with an additional field, and two optional addi'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tional fields. When the client issues an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `QueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, the proxy will substitute an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQue'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717251>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request determines if the named extension is present. If so, the major opcode for the extension is '>
+ >
+ <ParaLine
+ <String `returned, if it has one. Otherwise, zero is returned. Any minor opcode and the request formats are specific to '>
+ >
+ <ParaLine
+ <String `the extension. If the extension involves additional event types, the base event type code is returned. Other'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `wise, zero is returned. The format of events is specific to the extension. If the extension involves additional '>
+ >
+ <ParaLine
+ <String `error codes, the base error code is returned. Otherwise, zero is returned. The format of additional data in the '>
+ >
+ <ParaLine
+ <String `errors is specific to the extension.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717312>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In addition, the number of requests defined by the named extension is returned. If the number of requests is '>
+ >
+ <ParaLine
+ <String `nonzero, and if the information is available, reply-mask and event-mask will be included in the reply. The '>
+ >
+ <ParaLine
+ <String `reply-mask represents a bit-wise one-to-one correspondence with the extension requests. The least signifi'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cant bit corresponds to the first request, and the next bit corresponds to the next request, and so on. Each ele'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ment in the list contains eight meaningful bits, except for the last element, which contains eight or fewer '>
+ >
+ <ParaLine
+ <String `meaningful bits. Unused bits are not guaranteed to be zero. The bit corresponding to a request is set if the '>
+ >
+ <ParaLine
+ <String `request could generate a reply, otherwise it is zero. In the same way, the event-mask represents a bit-wise '>
+ >
+ <ParaLine
+ <String `one-to-one correspondence with the extension requests. A bit is set if the corresponding request could result '>
+ >
+ <ParaLine
+ <String `in the generation of one or more extension or X11 events. If reply-mask is present in the reply, event-mask '>
+ >
+ <ParaLine
+ <String `will also be present.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713207>
+ <PgfTag `Body'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `+37891'>
+ <MCurrPage 10>
+ <Unique 2766>
+ > # end of Marker
+ <String `The encoding of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `37117: Encode-heading: QueryExtension'>
+ <XRefSrcFile `'>
+ <Unique 1634>
+ > # end of XRef
+ <String `page 41'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1630>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.3 \t'>
+ <ParaLine
+ <String `Control Requests Initiated by the Proxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713208>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `20870: Protocol: StartProxy'>
+ <MCurrPage 10>
+ <Unique 1936>
+ > # end of Marker
+ <String `LbxStartProxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1526>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <Marker
+ <MType 8>
+ <MText `newlink StartProxy Request'>
+ <MCurrPage 10>
+ <Unique 1952>
+ > # end of Marker
+ <String `options'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofOPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713636>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713632>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `choices: LISTofCHOICE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716984>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1550>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 28>
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1558>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `OPTION '>
+ <Char Tab >
+ <String `[optcode: CARD8,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1690>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `len: OPTLEN,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1571>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `option: '>
+ <Char Tab >
+ <String `(See '>
+ <XRef
+ <XRefName `Table & Page'>
+ <XRefSrcText `35444: TableTitle: TABLE 1. StartProxy Options'>
+ <XRefSrcFile `'>
+ <Unique 1677>
+ > # end of XRef
+ <String `Table'>
+ <Char HardSpace >
+ <String `1, \xd2 StartProxy Options,\xd3 on page'>
+ <Char HardSpace >
+ <String `10'>
+ <XRefEnd >
+ <String `) ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1568>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `CHOICE'>
+ <Char Tab >
+ <String `[optcode: CARD8,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1686>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `len: OPTLEN,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1610>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `choice: '>
+ <Char Tab >
+ <String ` (See '>
+ <XRef
+ <XRefName `Table & Page'>
+ <XRefSrcText `35444: TableTitle: TABLE 1. StartProxy Options'>
+ <XRefSrcFile `'>
+ <Unique 1682>
+ > # end of XRef
+ <String `Table'>
+ <Char HardSpace >
+ <String `1, \xd2 StartProxy Options,\xd3 on page'>
+ <Char HardSpace >
+ <String `10'>
+ <XRefEnd >
+ <String `) ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1613>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1614>
+ <PgfTag `TableTitle'>
+ <PgfNumString `TABLE 1. '>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `35444: TableTitle: TABLE 1. StartProxy Options'>
+ <MCurrPage 11>
+ <Unique 1674>
+ > # end of Marker
+ <ATbl 1>
+ <String `StartProxy Options'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1483>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1539>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `DELTAOPT '>
+ <Char Tab >
+ <String `[minN, maxN, prefN: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1494>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `minMaxMsgLen, maxMaxMsgLen, prefMaxMsgLen: CARD8]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1694>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `DELTACHOICE'>
+ <Char Tab >
+ <String `[entries, maxlen: CARD8]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2122>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `INDEXEDCHOICE'>
+ <Char Tab >
+ <String `[index: CARD8,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2123>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `data: LISTofBYTE]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1700>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `INDEXEDOPT'>
+ <Char Tab >
+ <String `[index, opcode: CARD8]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1628>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `NAMEDOPT'>
+ <Char Tab >
+ <String `[name: STRING8,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1495>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `detail: LISTofBYTE]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1703>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `OPTLEN'>
+ <Char Tab >
+ <String `1 or 3 CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1706>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1704>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `(0 < in <= 0xFF):'>
+ <Char Tab >
+ <String ` out = in'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1705>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `(0 <= in<= 0xFFFF): '>
+ <Char Tab >
+ <String `out[0] = 0; out[1] = in \>\> 8; out[2] = in& 0xFF;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1500>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `PIXMAPMETHOD'>
+ <Char Tab >
+ <String `[name: STRING8,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1502>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `format-mask: BITMASK,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1869>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `depths: LISTofCARD8]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1874>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `PIXMAPCHOICE'>
+ <Char Tab >
+ <String `[index, opcode: CARD8,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1870>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `format-mask: BITMASK,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1871>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `depths: LISTofCARD8]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1503>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 718120>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request negotiates LBX protocol options, and switches the proxy-server connection from X11 protocol '>
+ >
+ <ParaLine
+ <String `to LBX protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718245>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The proxy gives the preferred protocol options in the request. The server chooses from the given options and '>
+ >
+ <ParaLine
+ <String `informs the proxy which to use. The options may be listed in any order, and the proxy may choose which '>
+ >
+ <ParaLine
+ <String `options to negotiate. If an option is not successfully negotiated, the default is used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718244>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server delta cache and proxy delta caches can be configured for number of entries, and the length of '>
+ >
+ <ParaLine
+ <String `entries. (See '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `22595: 2Heading: 2.10 Delta cache'>
+ <XRefSrcFile `'>
+ <Unique 1734>
+ > # end of XRef
+ <String `\xd2 Delta cache\xd3 on page'>
+ <Char HardSpace >
+ <String `4'>
+ <XRefEnd >
+ <String ` for details.) The delta caches are configured using the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `delta-server'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ >
+ <ParaLine
+ <TextRectID 29>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `delta-proxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` options. To configure a cache, the proxy sends the minimum, maximum and preferred values for '>
+ >
+ <ParaLine
+ <String `the number of cache entries, ('>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `minN, maxN, prefN'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `), and the length of the cache entries, ('>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `minMaxMsgLen, '>
+ >
+ <ParaLine
+ <String `maxMaxMsgLen, prefMaxMsgLen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `). The server\xd5 s reply fields, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `entries'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `maxlen'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, contains the values to use. '>
+ >
+ <ParaLine
+ <String `These values must be within the ranges specified by the proxy. The server may also specify an '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `entries'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` value '>
+ >
+ <ParaLine
+ <String `of 0 to disable delta caching. The cache entry lengths are specified in units of 4 bytes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1875>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The stream compression algorithm is selected using the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `stream-comp '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `option. (Stream compression is '>
+ >
+ <ParaLine
+ <String `described in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `11596: 2Heading: 2.11 Compression'>
+ <XRefSrcFile `'>
+ <Unique 1877>
+ > # end of XRef
+ <String `\xd2 Stream Compression\xd3 on page'>
+ <Char HardSpace >
+ <String `5'>
+ <XRefEnd >
+ <String `.) Each algorithm has a name that follows the naming conven'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tions in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `13570: 1Heading: 5 Algorithm Naming'>
+ <XRefSrcFile `'>
+ <Unique 1880>
+ > # end of XRef
+ <String `\xd2 Algorithm Naming\xd3 on page'>
+ <Char HardSpace >
+ <String `29'>
+ <XRefEnd >
+ <String `. To negotiate using the stream-comp option, the proxy lists its '>
+ >
+ <ParaLine
+ <String `available compressors. For each candidate algorithm, the proxy sends the name in the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `name'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field, and uses '>
+ >
+ <ParaLine
+ <String `the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `detail'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field to send any additional data specific to each compression algorithm. The reply contains a 0-'>
+ >
+ <ParaLine
+ <String `based index into the list of algorithms to indicate which algorithm to use, followed by data specific to that '>
+ >
+ <ParaLine
+ <String `algorithm. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2891>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Bitmap compression is negotiated using the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `bitmap-comp'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` option. The proxy sends a list of names of avail'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `able algorithms, and the server reply lists the algorithms to use. For each bitmap algorithm in the reply, a 0-'>
+ >
+ <ParaLine
+ <String `based index into the list of algorithms indicates the algorithm, and the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `opcode'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field gives the value for use in '>
+ >
+ <ParaLine
+ <String `requests. The algorithm names follow the conventions in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `13570: 1Heading: 5 Algorithm Naming'>
+ <XRefSrcFile `'>
+ <Unique 1884>
+ > # end of XRef
+ <String `\xd2 Algorithm Naming\xd3 on page'>
+ <Char HardSpace >
+ <String `29'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1857>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Pixmap compression is negotiated using the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixmap-comp'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` option. The proxy sends a list of available algo'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `rithms. For each algorithm, the list includes, the name, a bitmask of supported formats, and a list of depths '>
+ >
+ <ParaLine
+ <String `that the format supports. The server reply lists the algorithms to use. For each pixmap algorithm in the reply, '>
+ >
+ <ParaLine
+ <String `the reply contains a 0-based index into the list of proxy algorithms, the opcode to use in requests when refer'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ring to this algorithm, a mask of valid formats, and a list of valid depths. Algorithm names follow the con'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ventions in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `13570: 1Heading: 5 Algorithm Naming'>
+ <XRefSrcFile `'>
+ <Unique 1859>
+ > # end of XRef
+ <String `\xd2 Algorithm Naming\xd3 on page'>
+ <Char HardSpace >
+ <String `29'>
+ <XRefEnd >
+ <String `. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1913>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Squishing is negotiated using the use-squish option. If the proxy desires squishing, it sends a true value. The '>
+ >
+ <ParaLine
+ <String `reply from the server indicates whether to do squishing, and will indicate squishing only if '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `use-squish'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is set '>
+ >
+ <ParaLine
+ <String `to true in the request. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2034>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Tag caching, described in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `11018: 2Heading: 2.2 Tags'>
+ <XRefSrcFile `'>
+ <Unique 2032>
+ > # end of XRef
+ <String `\xd2 Tags\xd3 on page'>
+ <Char HardSpace >
+ <String `2'>
+ <XRefEnd >
+ <String `, is negotiated using the use-tag option. If the proxy desires tag '>
+ >
+ <ParaLine
+ <String `caching, it sends a true value. The reply from the server indicates whether to do tag caching, and will '>
+ >
+ <ParaLine
+ <String `demand caching only if '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `use-tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is set to true in the request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2895>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The colormap option is used to negotiate what color matching algorithm will be used by the proxy when the '>
+ >
+ <ParaLine
+ <String `proxy uses the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxAllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request to allocate pixels in a grabbed colormap. To negotiate using the '>
+ >
+ <ParaLine
+ <String `colormap option, the proxy lists the names of available colormap algorithms. The choice in the reply con'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tains a 0-based index into the list of algorithms to indicate which algorithm to use, followed by data specific '>
+ >
+ <ParaLine
+ <String `to that algorithm. If no colormap algorithm is successfully negotiated, then the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxAllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGrabCmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxReleaseCmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests will not be used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2124>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The extension option is used to control extensions to LBX. These extensions may, for example, enable other '>
+ >
+ <ParaLine
+ <String `types of compression. To negotiate an extension, the name of the extension is sent, followed by any data spe'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cific to that extension. The extension name follows the conventions in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `13570: 1Heading: 5 Algorithm Naming'>
+ <XRefSrcFile `'>
+ <Unique 2127>
+ > # end of XRef
+ <String `\xd2 Algorithm Naming\xd3 on page'>
+ <Char HardSpace >
+ <String `29'>
+ <XRefEnd >
+ <String `. The '>
+ >
+ <ParaLine
+ <String `extension option may occur multiple times in the start proxy message, since multiple extensions can be '>
+ >
+ <ParaLine
+ <String `negotiated. The reply to an extension option contains the zero-based index of the extension option, as '>
+ >
+ <ParaLine
+ <String `counted in the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message. This index is followed by extension-specific information. The '>
+ >
+ <ParaLine
+ <String `server does not respond to extensions it does not recognize.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717548>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is returned when a client which is already communicating through an LBX proxy to '>
+ >
+ <ParaLine
+ <String `the X server sends a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1636>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `27452: Encode-heading: StartProxy'>
+ <XRefSrcFile `'>
+ <Unique 1640>
+ > # end of XRef
+ <String `page 31'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713211>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <TextRectID 30>
+ <Marker
+ <MType 9>
+ <MText `27455: Protocol: StopProxy'>
+ <MCurrPage 13>
+ <Unique 2056>
+ > # end of Marker
+ <String `LbxStopProxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716985>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713212>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request terminates the connection between the proxy and X server, and terminates any clients con'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `nected through the proxy.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1643>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `23471: Encode-heading: StopProxy'>
+ <XRefSrcFile `'>
+ <Unique 1647>
+ > # end of XRef
+ <String `page 33'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718306>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is returned if the requesting client is not an LBX proxy.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713215>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `17810: Protocol: LbxNewClient'>
+ <MCurrPage 13>
+ <Unique 2072>
+ > # end of Marker
+ <String `LbxNewClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713647>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `byte-order'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1420>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `client-id'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1421>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `protocol-major-version'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1422>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `protocol-minor-version:'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1423>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `authorization-protocol-name'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1424>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `authorization-protocol-data'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1432>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2043>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `Core X reply (if connection is rejected)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2044>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2046>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `OR'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2045>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1457>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `success: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2006>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `change-type: {NoDeltas, NormalClientDeltas, AppGroupDeltas}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1447>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `protocol-major-version: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1448>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `protocol-minor-version: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1449>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `tag-id: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1451>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `length: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1452>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `connection-data: CONINFO or CONDIF or CONDIFROOT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2011>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2012>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2013>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `CONINFO: '>
+ <Char Tab >
+ <String `(the "additional data" portion of the core connection reply for successes)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2014>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `CONDIF:'>
+ <Char Tab >
+ <String `[resource-id-base: CARD32,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2015>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `root-input-masks: LISTofSETofEVENT]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2018>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `CONDIFROOT:'>
+ <Char Tab >
+ <String `[resource-id-base: CARD32,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2024>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `root: WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2025>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `root-visual: VISUALID'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2026>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `default-colormap: COLORMAP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2028>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `white-pixel, black-pixel: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2019>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `root-input-masks: LISTofSETofEVENT]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1470>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Errors: LbxClient, Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1471>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request, which is sent by the proxy over the control connection, creates a new virtual connection to the '>
+ >
+ <ParaLine
+ <String `server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1399>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Much of the information in the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request and reply is identical to the connection setup and '>
+ >
+ <ParaLine
+ <String `reply information in the core X protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1400>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 31>
+ <String `For the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, the field unique to LBX is client-id. For the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` reply, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag-'>
+ >
+ <ParaLine
+ <String `id'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `change-type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` are fields unique to LBX, and the contents of connection-data may be different in LBX '>
+ >
+ <ParaLine
+ <String `from the core X protocol (see below).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1401>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The proxy assigns each virtual connection a unique identifier using the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `client-id'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field in the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewCli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. This client-id is used in the LBX protocol to specify the current client (see the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxSwitch'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `request and the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxSwitchEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `). client-id 0 is reserved for the proxy control connection. An '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxCli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error will result if the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request contains a client-id of 0 or an already in use client-id.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1402>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the server rejects this new virtual connection, the server sends a core X connection failure reply to the '>
+ >
+ <ParaLine
+ <String `proxy. The current version of LBX does not support the return of an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Authenticate'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` reply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2029>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `change-type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is set to '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `NoDeltas'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, then '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `connection-data'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is sent using the CONINFO structure, '>
+ >
+ <ParaLine
+ <String `which is identical to the additional data of the core connection reply. If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag-id'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is non-zero, then the con'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `nection-data is stored by the proxy using this tag value. Tagged connection data must be stored by the proxy, '>
+ >
+ <ParaLine
+ <String `and can not be invalidated by the proxy until an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxInvalidateTag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event is received for that tag.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2047>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `change-type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is not set to '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `NoDeltas'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, then connection data is sent as changes against connec'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion information previously sent to the proxy. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag-id'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field, if non-zero, has the tag of the previously sent '>
+ >
+ <ParaLine
+ <String `data to apply the changes to. A zero tag-id indicates that the changes are with respect to the connection infor'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `mation sent when the proxy connected to the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2079>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `change-type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is set to '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `NormalClientDeltas'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, then '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `connection-data'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is sent using the CONDIF '>
+ >
+ <ParaLine
+ <String `structure. The values in the CONDIF structure are substituted for the identically named fields of the connec'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion information for the new connection.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2065>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `change-type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is set to '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `AppGroupDeltas'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, then '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `connection-data'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is sent using the CONDI'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `FROOT structure. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `root'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `root-visual'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `default-colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` fields, when nonzero, are substituted for the '>
+ >
+ <ParaLine
+ <String `corresponding fields in the reference connection information. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `white-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `black-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` fields are sub'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `stituted only when the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `default-colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field of the reply is non-zero. When '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `default-colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field of the '>
+ >
+ <ParaLine
+ <String `reply is zero, so are '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `white-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `black-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. The first entry in the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `root-input-masks'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is the current-'>
+ >
+ <ParaLine
+ <String `input-mask for the default root window. The remaining entries in '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `root-input-masks'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` are input masks for non-'>
+ >
+ <ParaLine
+ <String `video screens, as defined by the X Print Extension. The number of non-video screens is one less than the '>
+ >
+ <ParaLine
+ <String `number of entries in '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `root-input-masks'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. These screens are at the end of screen list in the reference connection '>
+ >
+ <ParaLine
+ <String `information.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1648>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `15166: Encode-heading: NewClient'>
+ <XRefSrcFile `'>
+ <Unique 1652>
+ > # end of XRef
+ <String `page 33'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713217>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `21625: Protocol: CloseClient'>
+ <MCurrPage 14>
+ <Unique 2080>
+ > # end of Marker
+ <String `LbxCloseClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713648>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `client'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717021>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713218>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This requests the server to close down the connection represented by the specified proxy\xd5 s client identifier. If '>
+ >
+ <ParaLine
+ <String `the specified client wasn\xd5 t previously registered with the server by a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, the server '>
+ >
+ <ParaLine
+ <String `will send the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1653>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `21121: Encode-heading: CloseClient'>
+ <XRefSrcFile `'>
+ <Unique 1657>
+ > # end of XRef
+ <String `page 34'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1376>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `33500: Protocol: Switch'>
+ <MCurrPage 14>
+ <Unique 2064>
+ > # end of Marker
+ <String `LbxSwitch'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1377>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `client'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1378>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 32>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1379>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request causes the X server to treat subsequent requests as being from a connection to the X server rep'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `resented by the specified client identifier.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1668>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the client making the request is not the proxy, or if the client identifier sent in the request was not previ'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ously sent in a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxNewClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, an '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxClient'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is returned.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1676>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `36790: Encode-heading: Switch'>
+ <XRefSrcFile `'>
+ <Unique 1674>
+ > # end of XRef
+ <String `page 33'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1669>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `30719: Protocol: Sync'>
+ <MCurrPage 15>
+ <Unique 2703>
+ > # end of Marker
+ <String `LbxSync'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2032>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2037>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The sync request causes the server to send a reply when all requests before the sync request have been pro'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cessed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2872>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this client is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `21186: Encode-heading: LbxSync'>
+ <XRefSrcFile `'>
+ <Unique 2870>
+ > # end of XRef
+ <String `page 46'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2029>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `36693: Protocol: ModifySequence'>
+ <MCurrPage 15>
+ <Unique 2088>
+ > # end of Marker
+ <String `LbxModifySequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713649>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `adjust'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717029>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713220>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request advances the sequence number of the virtual client connection by the specified amount. The '>
+ >
+ <ParaLine
+ <String `proxy sends the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxModifySequence'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request to the server when it replies to a client request without for'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `warding the client request on to the X server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1684>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this client is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `10940: Encode-heading: ModifySequence'>
+ <XRefSrcFile `'>
+ <Unique 1682>
+ > # end of XRef
+ <String `page 34'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713221>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `15895: Protocol: AllowMotion'>
+ <MCurrPage 15>
+ <Unique 2096>
+ > # end of Marker
+ <String `LbxAllowMotion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717033>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `num'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717036>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713222>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request controls the delivery of optional motion notify events, as described in '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `15503: 2Heading: 2.5 Motion events'>
+ <XRefSrcFile `'>
+ <Unique 2594>
+ > # end of XRef
+ <String `\xd2 Motion events\xd3 on '>
+ >
+ <ParaLine
+ <String `page'>
+ <Char HardSpace >
+ <String `3'>
+ <XRefEnd >
+ <String `. The num field specifies an increase in the allowed number of motion notify events sent.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1692>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `11897: Encode-heading: AllowMotion'>
+ <XRefSrcFile `'>
+ <Unique 1690>
+ > # end of XRef
+ <String `page 34'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715420>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `12515: Protocol: InvalidateTag'>
+ <MCurrPage 15>
+ <Unique 2128>
+ > # end of Marker
+ <String `LbxInvalidateTag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715421>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715422>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The LBX proxy sends this notification to the X server when it refuses to store tagged data, or when it '>
+ >
+ <ParaLine
+ <String `releases tagged data which was previously stored and which was not invalidated by a notification from the X '>
+ >
+ <ParaLine
+ <String `server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1700>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `37545: Encode-heading: InvalidateTag'>
+ <XRefSrcFile `'>
+ <Unique 1698>
+ > # end of XRef
+ <String `page 35'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716485>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+35597'>
+ <MCurrPage 15>
+ <Unique 2777>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `17987: Protocol: TagData'>
+ <MCurrPage 15>
+ <Unique 2242>
+ > # end of Marker
+ <String `LbxTagData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716486>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <TextRectID 33>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716487>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `real-length'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716488>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofBYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716489>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request specifies the data associated with a previously assigned tag. It is sent in two circumstances: in '>
+ >
+ <ParaLine
+ <String `response to receiving a '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `SendTagDataEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and spontaneously, when the proxy must rely on the server '>
+ >
+ <ParaLine
+ <String `to store data which was not previously received from the server. The data is carried in the byte order and '>
+ >
+ <ParaLine
+ <String `structure as would have originally been sent in the core protocol request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1716>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `37174: Encode-heading: TagData'>
+ <XRefSrcFile `'>
+ <Unique 1714>
+ > # end of XRef
+ <String `page 39'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1809>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+10668'>
+ <MCurrPage 16>
+ <Unique 2789>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `10922: Protocol: GrabCmap'>
+ <MCurrPage 16>
+ <Unique 2090>
+ > # end of Marker
+ <String `LbxGrabCmap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2041>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: Colormap '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2084>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `-\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2043>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `smart-grab'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2082>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `large-pixel: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `BOOL'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2074>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `auto-release: '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `BOOL'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2075>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `three-channels'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: BOOL'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2090>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `bits-per-rgb: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `CARD4'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2072>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cells'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofCHAN'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1953>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1954>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2155>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `CHAN:'>
+ <Char Tab >
+ <String `LISTofLBXPIXEL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1955>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `LBXPIXEL: '>
+ <Char Tab >
+ <String `PIXELPRIVATE or PIXELPRIVATERANGE or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1967>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `PIXELALLOC or PIXELALLOCRANGE '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1968>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `PIXEL:'>
+ <Char Tab >
+ <String `CARD8 or CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2172>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `PIXELPRIVATE: '>
+ <Char Tab >
+ <String `[ pixel: PIXEL ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1975>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `PIXELPRIVATERANGE: '>
+ <Char Tab >
+ <String `[ first-pixel, last-pixel: PIXEL]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1980>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `PIXELALLOC: '>
+ <Char Tab >
+ <String `[ pixel: PIXEL,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1986>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `color: COLORSINGLE or COLORTRIPLE]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1982>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `PIXELALLOCRANGE: '>
+ <Char Tab >
+ <String `[ first-pixel, last-pixel: PIXEL,'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1988>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `colors: LISTofCOLORSINGLE or LISTofCOLORTRIPLE]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2148>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `COLORSINGLE:'>
+ <Char Tab >
+ <String `[ value: CARD8 or CARD16 ]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `COLORTRIPLE:'>
+ <Char Tab >
+ <String `[ r, g, b: COLORSINGLE]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1990>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1970>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request asks the server for control of allocating new colormap cells in the specified colormap. The '>
+ >
+ <ParaLine
+ <String `server grants control by replying to this request. If no changes have occurred since the last time this proxy '>
+ >
+ <ParaLine
+ <String `grabbed this colormap, then the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `smart-grab'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field of the reply is set to true, and the optional fields are not '>
+ >
+ <ParaLine
+ <String `sent. Otherwise, the current contents of the colormap are placed in the reply, as described later in this sec'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tion.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2047>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Once the proxy has received the reply, it can use the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxAllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request to allocate new colormap '>
+ >
+ <ParaLine
+ <String `cells without the performance penalty of round trips. The proxy is still permitted to use the normal colormap '>
+ >
+ <ParaLine
+ <String `and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxIncrementPixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests while the colormap is grabbed. The grab is valid across all virtual '>
+ >
+ <ParaLine
+ <String `connections of the proxy.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2048>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGrabCmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request is limited to colormaps for the visual types negotiated as part of the colormap '>
+ >
+ <ParaLine
+ <String `algorithm negotiation in the start proxy request at connection setup. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2049>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 34>
+ <String `The server and other proxies may not allocate new colormap cells in the colormap while the colormap is '>
+ >
+ <ParaLine
+ <String `grabbed by this proxy. If the server or another proxy needs to allocate new colormap cells, the server sends a '>
+ >
+ <ParaLine
+ <String `Lbx'>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `ReleaseCmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event to the proxy holding the grab, which then issues an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxReleaseCmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2050>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server and other proxies may free colormap cells in a colormap grabbed by a proxy. The server will send '>
+ >
+ <ParaLine
+ <String `an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxFreeCells'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event to the proxy that currently has the colormap grabbed when the cell reference '>
+ >
+ <ParaLine
+ <String `count reaches 0.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2202>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the colormap is a of a static visual type, such as '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `StaticGray'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `StaticColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GrayScale'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, or '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `TrueColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, then the proxy\xd5 s grab is immediately released by the server, and the proxy must use '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxIn'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `crementPixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests in place of '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxAllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests for this colormap.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1999>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the cmap field does not refer to a valid colormap or the colormap is already grabbed by this proxy then a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2094>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The reply describes the contents of the colormap via several arguments and a descriptive list containing one '>
+ >
+ <ParaLine
+ <String `or three channels, with each channel describing allocations in the colormap. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2103>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `large-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` argument, if True, specifies that PIXEL indices will be listed as CARD16 quantities instead '>
+ >
+ <ParaLine
+ <String `of CARD8. The'>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String ` auto-release'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field, if True, indicates that this colormap is of a static visual type and the '>
+ >
+ <ParaLine
+ <String `proxy\xd5 s grab is immediately released by the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2194>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `three-channels'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is False, a single channel is enclosed and color values are described using COLORTRI'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `PLE, which has fields for red, green and blue. A single channel is used when the visual type is not '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Direct'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Color'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `TrueColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2224>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `three-channels'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is True, separate red, green and blue channel lists are enclosed, for describing a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Direct'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Color'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `TrueColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` colormap. Color values for entries in each channel are sent using COLORSINGLE '>
+ >
+ <ParaLine
+ <String `and the corresponding PIXEL value refers to the RGB subfield of the current channel, as defined by the cor'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `responding red-mask, green-mask and blue-mask of the visual. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2150>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `bits-per-rgb'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` value is one less than the bits-per-rgb-value field of the visual that the colormap belongs to. '>
+ >
+ <ParaLine
+ <String `If the value is 7 or less, then COLORSINGLE values in the descriptive list are sent using CARD8 fields. '>
+ >
+ <ParaLine
+ <String `Otherwise these values are sent using CARD16 fields.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2028>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The list describing current colormap allocations contains entries of the following types:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2030>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An LBXPIXELPRIVATE entry indicates that the pixel in the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixel '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `field is unavailable for allocation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2040>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An LBXPIXELPRIVATERANGE entry indicates that a contiguous range of pixels are unavailable for allo'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cation. The range is '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `first-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` to '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `last-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and includes '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `last-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2043>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An LBXPIXELALLOC entry indicates that the pixel in the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixel '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `field is allocated as a read-only pixel. The '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `color'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field carries the color information of the pixel.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2055>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `An LBXPIXELALLOCRANGE entry indicates that a contiguous range of pixels are allocated as read-only. '>
+ >
+ <ParaLine
+ <String `The range starts '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `first-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` to '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `last-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and includes '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `last-pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. These fields are followed by a list of COL'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ORSINGLE or COLORTRIPLE, depending on the value of '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `three-channels'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2153>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A NEXTCHANNEL entry indicates that the next channel of the colormap will be described.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2154>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A LISTEND entry indicates the end of the colormap description.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2059>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `All pixels not described in the reply are unallocated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2056>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 35>
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `17198: Encode-heading: GrabCmap'>
+ <XRefSrcFile `'>
+ <Unique 2715>
+ > # end of XRef
+ <String `page 44'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2053>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `34675: Protocol: ReleaseCmap'>
+ <MCurrPage 18>
+ <Unique 2094>
+ > # end of Marker
+ <String `LbxReleaseCmap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2054>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: Colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2055>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request releases the specified grabbed colormap. If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field does not refer to a colormap, a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Bad'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is produced.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2056>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The proxy must remember the state of the colormap when the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxReleaseCmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request is issued if this '>
+ >
+ <ParaLine
+ <String `proxy may at some future time issue another '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGrabCmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request on this colormap before the state of '>
+ >
+ <ParaLine
+ <String `the colormap changes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2142>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `14796: Encode-heading: ReleaseCmap'>
+ <XRefSrcFile `'>
+ <Unique 2721>
+ > # end of XRef
+ <String `page 46'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2132>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `21636: Protocol: LbxInternAtoms'>
+ <MCurrPage 18>
+ <Unique 2661>
+ > # end of Marker
+ <String `LbxInternAtoms'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1810>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `count'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1811>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `names: '>
+ <Font
+ <FTag `Argument'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FChangeBar No >
+ > # end of Font
+ <String `LISTofSTRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1812>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1813>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `atoms'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofATOM'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1814>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1815>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request allows the proxy to intern a group of atoms in a single round trip. The server will create any '>
+ >
+ <ParaLine
+ <String `atoms that do not exist.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1724>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `34140: Encode-heading: LbxInternAtoms'>
+ <XRefSrcFile `'>
+ <Unique 2667>
+ > # end of XRef
+ <String `page 43'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716543>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.4 \t'>
+ <ParaLine
+ <String `Substitution Requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2168>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `10446: Protocol: AllocColor'>
+ <MCurrPage 18>
+ <Unique 2700>
+ > # end of Marker
+ <String `LbxAllocColor'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2155>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: Colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2156>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2157>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `red'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `green'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `blue'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2158>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request is sent by a proxy that has given colormap grabbed to allocate a new read-only cell in the color'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `map. The proxy may substitute this request for the core '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `AllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `AllocNamedColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2159>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field identifies the colormap cell to allocate. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `red'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `green'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `blue'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` fields are the hardware spe'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cific color values of the corresponding fields of the core '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `AllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. The mapping to hardware '>
+ >
+ <ParaLine
+ <String `specific colormap values by the proxy is performed using the color algorithm negotiated by '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStart'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Proxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2212>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For colormaps of static visual types, the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxIncrementPixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request is used instead of LBX '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Alloc'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Color'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2161>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field does not identify a grabbed colormap then a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `BadAccess'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is produced. If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `field refers to a read-write entry, or the pixel field refers to a pixel outside of the range of this colormap, a '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is produced.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2163>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 36>
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `28429: Encode-heading: AllocColor'>
+ <XRefSrcFile `'>
+ <Unique 2728>
+ > # end of XRef
+ <String `page 46'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1939>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `27227: Protocol: IncrementPixel'>
+ <MCurrPage 19>
+ <Unique 2104>
+ > # end of Marker
+ <String `LbxIncrementPixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1940>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: COLORMAP'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1941>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixel'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1943>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1944>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `AllocColor'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request for read-only pixels currently allocated for the current cli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ent. If the visual type of the colormap is of a static type, this request may be used on currently unallocated '>
+ >
+ <ParaLine
+ <String `pixels. The colormap is not required to be grabbed to use this request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1948>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `38053: Encode-heading: IncrementPixel'>
+ <XRefSrcFile `'>
+ <Unique 1946>
+ > # end of XRef
+ <String `page 34'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713234>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+40141'>
+ <MCurrPage 19>
+ <Unique 2800>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `26857: Protocol: Delta'>
+ <MCurrPage 19>
+ <Unique 2112>
+ > # end of Marker
+ <String `LbxDelta'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713679>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `count'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713684>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cache-index'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713685>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `diffs'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofDIFFITEM'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713235>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request contains a minimal amount of information relative to a similar prior request. The information is '>
+ >
+ <ParaLine
+ <String `in the form of a difference comparison to a prior request. The prior request is specified by an index to a '>
+ >
+ <ParaLine
+ <String `cache, independently maintained by both the proxy and the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1753>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `39838: Encode-heading: Delta'>
+ <XRefSrcFile `'>
+ <Unique 1751>
+ > # end of XRef
+ <String `page 34'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713236>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+24590'>
+ <MCurrPage 19>
+ <Unique 2811>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `37687: Protocol: GetModifierMapping'>
+ <MCurrPage 19>
+ <Unique 2120>
+ > # end of Marker
+ <String `LbxGetModifierMapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713686>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713687>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `keyspermod'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713688>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713689>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `keycodes'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofKEYCODE '>
+ <Char Tab >
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2059>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request is identical to the core '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `GetModifierMapping'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, with the addition of a tag being '>
+ >
+ <ParaLine
+ <String `returned in the reply. See '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `26534: 3Heading: 2.2.1 Tag Substituion in Requests'>
+ <XRefSrcFile `'>
+ <Unique 2118>
+ > # end of XRef
+ <String `\xd2 Tag Substitution in Requests\xd3 on page'>
+ <Char HardSpace >
+ <String `2'>
+ <XRefEnd >
+ <String ` for a description of the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field and '>
+ >
+ <ParaLine
+ <String `optional fields.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1764>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `40057: Encode-heading: GetModifierMapping'>
+ <XRefSrcFile `'>
+ <Unique 1762>
+ > # end of XRef
+ <String `page 35'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713238>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `33719: Protocol: GetKeyboardMapping'>
+ <MCurrPage 19>
+ <Unique 2199>
+ > # end of Marker
+ <String `LbxGetKeyboardMapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713690>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `firstKeyCode'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: KEYCODE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713691>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `count'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713692>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713693>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `keysperkeycode'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713694>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713695>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `keysyms'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofKEYSYM'>
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715369>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713239>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 37>
+ <String `This request is identical to the X '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `GetKeyboardMapping'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` protocol request, with the addition that a tag is '>
+ >
+ <ParaLine
+ <String `returned in the reply. See '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `26534: 3Heading: 2.2.1 Tag Substituion in Requests'>
+ <XRefSrcFile `'>
+ <Unique 2124>
+ > # end of XRef
+ <String `\xd2 Tag Substitution in Requests\xd3 on page'>
+ <Char HardSpace >
+ <String `2'>
+ <XRefEnd >
+ <String ` for a description of the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field and '>
+ >
+ <ParaLine
+ <String `optional fields.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1772>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `21702: Encode-heading: GetKeyboardMapping'>
+ <XRefSrcFile `'>
+ <Unique 1770>
+ > # end of XRef
+ <String `page 37'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1707>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `39382: Protocol: LbxGetWinAttrAndGeom'>
+ <MCurrPage 20>
+ <Unique 2671>
+ > # end of Marker
+ <String `LbxGetWinAttrAndGeom'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1708>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1710>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1711>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `visual: VISUALID'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1730>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `class: {InputOutput, InputOnly}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1734>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `bit-gravity: BITGRAVITY'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1736>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `win-gravity: WINGRAVITY'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1738>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `backing-store: {NotUseful, WhenMapped, Always}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1743>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `backing-planes: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1745>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `backing-pixel: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1747>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `save-under: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1749>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `colormap: COLORMAP or None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1752>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `map-is-installed: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1754>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `map-state: {Unmapped, Unviewable, Viewable}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1759>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `all-event-masks, your-event-mask: SETofEVENT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1761>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `do-not-propagate-mask: SETofDEVICEEVENT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1763>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `override-redirect: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1765>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `root: WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1767>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `depth: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1769>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `x, y: INT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1771>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `width, height, border-width: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1712>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1713>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GetWindowAttributes'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GetGeometry'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` are frequently used together in the X protocol. '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetWinAttrAndGeom'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` allows the proxy to request the same information in one round trip.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1780>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `32802: Protocol: QueryFont'>
+ <MCurrPage 20>
+ <Unique 1620>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `41440: Encode-heading: LbxGetWinAttrAndGeom'>
+ <XRefSrcFile `'>
+ <Unique 2709>
+ > # end of XRef
+ <String `page 43'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713241>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `18818: Protocol: QueryFont'>
+ <MCurrPage 20>
+ <Unique 2217>
+ > # end of Marker
+ <String `LbxQueryFont'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713696>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `font'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: FONTABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715529>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 715536>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `compression: BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715539>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `tag: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715540>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `font-info: FONTINFO'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1982>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `char-infos: LISTofCHARINFO or LISTofLBXCHARINFO'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `/* optional */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1983>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 6.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1986>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `LBXCHARINFO: '>
+ <Char Tab >
+ <String `[left-side-bearing: INT6'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1996>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `right-side-bearing: INT7'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1997>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `character-width: INT6'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1998>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `ascent: INT6'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1999>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Char Tab >
+ <String `descent: INT7]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2014>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 38>
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Font,Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2021>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request is used to replace the core '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `QueryFont'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request and has identical semantics.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2030>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `See '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `26534: 3Heading: 2.2.1 Tag Substituion in Requests'>
+ <XRefSrcFile `'>
+ <Unique 2139>
+ > # end of XRef
+ <String `\xd2 Tag Substitution in Requests\xd3 on page'>
+ <Char HardSpace >
+ <String `2'>
+ <XRefEnd >
+ <String ` for a description of the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field and optional fields.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2027>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `compression'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is True if the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `char-infos'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is represented using LBXCHARINFO.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2015>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The per-character information will be encoded in an LBXCHARINFO when, for every character, the charac'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ter-width, left-side-bearing, and ascent can each be represented in not more than 6 bits, and the right-side-'>
+ >
+ <ParaLine
+ <String `bearing and descent can each be represented in not more than 7 bits, and the attributes field is identical the '>
+ >
+ <ParaLine
+ <String `attributes field of the max_bounds of the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `font_info'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field of the font.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1789>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `24597: Encode-heading: QueryFont'>
+ <XRefSrcFile `'>
+ <Unique 1787>
+ > # end of XRef
+ <String `page 37'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713249>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `40098: Protocol: ChangeProperty'>
+ <MCurrPage 21>
+ <Unique 2227>
+ > # end of Marker
+ <String `LbxChangeProperty'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713698>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713699>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `property'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: ATOM'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713700>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: ATOM'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713701>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `format'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: {0,8,16,32}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713702>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `mode'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: {Replace, Prepend, Append}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713703>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `nUnits'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713704>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713705>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `tag: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713250>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request is sent to the server when the client sends an X '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `ChangeProperty '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `request through the proxy. '>
+ >
+ <ParaLine
+ <String `The size of the data is sent with this request, but not the property data itself. The server reply contains a tag '>
+ >
+ <ParaLine
+ <String `identifier for the data, which is stored in the proxy. The proxy must not discard this data before it is sent to '>
+ >
+ <ParaLine
+ <String `the server, or invalidated by the server. This means that before issuing an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStopProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, or exit'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ing, the proxy must send Lbx'>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `TagData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests for these items. If the server loses the connection before the '>
+ >
+ <ParaLine
+ <String `information is sent back, the server should revert the property value to its last known value, if possible.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2061>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `mode'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Prepend'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Append'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, the tag refers only to the prepended or appended data.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2062>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the tag in the reply is zero, then the change was ignored by the server, as defined in the security extension. '>
+ >
+ <ParaLine
+ <String `The proxy should dump the associated data, since the server will never ask for it.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1797>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `18013: Encode-heading: ChangeProperty'>
+ <XRefSrcFile `'>
+ <Unique 1795>
+ > # end of XRef
+ <String `page 38'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713251>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `31397: Protocol: LbxGetProperty'>
+ <MCurrPage 21>
+ <Unique 2226>
+ > # end of Marker
+ <String `LbxGetProperty'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713706>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `window'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: WINDOW'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713707>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `property'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: ATOM'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1508>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: ATOM or AnyPropertyType'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1509>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `long-offset'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1513>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `long-length'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1519>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `delete'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713712>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1529>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `type: ATOM or None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713713>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `format: {0, 8, 16, 32}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1534>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `bytes-after: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713716>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <TextRectID 39>
+ <String `nItems: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713717>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `tag: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1539>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `value: LISTofINT8 or LISTofINT16 or LISTofINT32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1557>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request may be used by the proxy as a substitution for a core '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. It allows tags to '>
+ >
+ <ParaLine
+ <String `be used for property data that is unlikely to change often in value, but is likely to be fetched by multiple cli'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ents.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1558>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request has the same arguments as the core '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. The reply for '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` has all of the fields from the core '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` reply, but has the additional fields of '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `nItems'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1580>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In order to utilize tags in '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` for a specific property, the server must first send the complete '>
+ >
+ <ParaLine
+ <String `property data to the proxy and associate this data with a tag. More precisely, the server sends an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGet'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Property'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` reply with a new '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `nItems'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` set to the number of items in the property, the size of the property '>
+ >
+ <ParaLine
+ <String `data in the reply length field, and the complete property data in value. The proxy stores the property data in '>
+ >
+ <ParaLine
+ <String `its tag cache and associates it with the specified tag.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1581>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In response to future '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests for the same property, if the server thinks that the proxy '>
+ >
+ <ParaLine
+ <String `has the actual property data in its tag cache, it may choose to send an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` reply without the '>
+ >
+ <ParaLine
+ <String `actual property data. In this case, the reply would include a non-zero '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, a zero reply length, and no data for '>
+ >
+ <ParaLine
+ <String `value.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1582>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the server chooses not to generate a tagged reply to '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxGetProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, or for some reason is unable to '>
+ >
+ <ParaLine
+ <String `do so, it would send a reply with a '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` of zero, the size of the property data in the reply length field, and the '>
+ >
+ <ParaLine
+ <String `complete property data in value.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1805>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `13863: Encode-heading: GetProperty'>
+ <XRefSrcFile `'>
+ <Unique 1803>
+ > # end of XRef
+ <String `page 38'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1559>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `37179: Protocol: PolyPoint'>
+ <MCurrPage 22>
+ <Unique 2136>
+ > # end of Marker
+ <String `LbxPolyPoint'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713753>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2105>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `points'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXPOINT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716404>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2275>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyPoint'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyPoint'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can be represented as '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Lbx'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `PolyPoint'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713259>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The proxy will convert the representation of the points to be relative to the previous point, as described by '>
+ >
+ <ParaLine
+ <String `previous coordinate mode in the X protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1813>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `29719: Encode-heading: PolyPoint'>
+ <XRefSrcFile `'>
+ <Unique 1811>
+ > # end of XRef
+ <String `page 35'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713260>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `16574: Protocol: PolyLine'>
+ <MCurrPage 22>
+ <Unique 2145>
+ > # end of Marker
+ <String `LbxPolyLine'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2107>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1458>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `points'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXPOINT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1459>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1460>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyLine'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyLine'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can be represented as '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Lbx'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `Polyline'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713262>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 40>
+ <String `The proxy will convert the representation of the points to be relative to the previous point, as described by '>
+ >
+ <ParaLine
+ <String `previous coordinate mode in the X protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1821>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `31086: Encode-heading: PolyLine'>
+ <XRefSrcFile `'>
+ <Unique 1819>
+ > # end of XRef
+ <String `page 35'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713263>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `26077: Protocol: PolySegment'>
+ <MCurrPage 23>
+ <Unique 2154>
+ > # end of Marker
+ <String `LbxPolySegment'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2111>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713761>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `segments'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXSEGMENT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1471>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1472>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `where:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1470>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `LBXSEGEMENT; [x1, y1, x2, y2: LBXINT16]'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716412>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715205>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolySegment'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolySegment'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can be represented as '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxPolySegment'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1482>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For segments other than the first segment of the request, [x1, y1] is relative to [x1, y1] of the previous seg'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ment. For all segments, [x2, y2] is relative to that segment\xd5 s [x1, y1].'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1829>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `27528: Encode-heading: PolySegment'>
+ <XRefSrcFile `'>
+ <Unique 1827>
+ > # end of XRef
+ <String `page 35'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713265>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `40958: Protocol: PolyRectangle'>
+ <MCurrPage 23>
+ <Unique 2163>
+ > # end of Marker
+ <String `LbxPolyRectangle'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2115>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713765>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `rectangles'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXRECTANGLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716416>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713266>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can be repre'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sented as '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxPolyRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1837>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `33628: Encode-heading: PolyRectangle'>
+ <XRefSrcFile `'>
+ <Unique 1835>
+ > # end of XRef
+ <String `page 36'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713267>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `15317: Protocol: PolyArc'>
+ <MCurrPage 23>
+ <Unique 2172>
+ > # end of Marker
+ <String `LbxPolyArc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2119>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713769>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `arcs'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXARC'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716420>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713268>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can be represented as '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxPol'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `yArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1845>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `25855: Encode-heading: PolyArc'>
+ <XRefSrcFile `'>
+ <Unique 1843>
+ > # end of XRef
+ <String `page 36'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713269>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `25511: Protocol: PolyFillRectangle'>
+ <MCurrPage 23>
+ <Unique 2190>
+ > # end of Marker
+ <String `LbxPolyFillRectangle'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2123>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713773>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `rectangles'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXRECTANGLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716424>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713270>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 41>
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyFillRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyFillRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can '>
+ >
+ <ParaLine
+ <String `be represented as '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxPolyFillRectangle'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1853>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `26399: Encode-heading: PolyFillRectangle'>
+ <XRefSrcFile `'>
+ <Unique 1851>
+ > # end of XRef
+ <String `page 36'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713271>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `42698: Protocol: PolyFillArc'>
+ <MCurrPage 24>
+ <Unique 2200>
+ > # end of Marker
+ <String `LbxPolyFillArc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2127>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713777>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `arcs'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXARC'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716428>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713272>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyFillArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PolyFillArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can be represented as '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxPolyFillArc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1861>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `19081: Encode-heading: PolyFillArc'>
+ <XRefSrcFile `'>
+ <Unique 1859>
+ > # end of XRef
+ <String `page 37'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713273>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `35796: Protocol: FillPoly'>
+ <MCurrPage 24>
+ <Unique 2181>
+ > # end of Marker
+ <String `LbxFillPoly'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2131>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713779>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `shape'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: BYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713780>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `points'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofLBXPOINT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716400>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713274>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `FillPoly'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. Not all '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `FillPoly'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests can be represented as '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Lbx'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `FillPoly'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713275>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The proxy will convert the representation of the points to be relative to the previous point, as described by '>
+ >
+ <ParaLine
+ <String `previous coordinate mode in the X protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1869>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `24998: Encode-heading: FillPoly'>
+ <XRefSrcFile `'>
+ <Unique 1867>
+ > # end of XRef
+ <String `page 36'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713276>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `11409: Protocol: CopyArea'>
+ <MCurrPage 24>
+ <Unique 2250>
+ > # end of Marker
+ <String `LbxCopyArea'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713781>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `srcCache'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ <Char Tab >
+ <String `/* source drawable */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2135>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713786>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `src-Drawable'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713788>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `src-x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713789>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `src-y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713790>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `width'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXCARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713791>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `height'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXCARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713792>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `dst-x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16 '>
+ >
+ > # end of Para
+ <Para
+ <Unique 713793>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `dst-y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716393>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: Those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713277>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `CopyArea'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request for requests within its encoding range.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1877>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `10231: Encode-heading: CopyArea'>
+ <XRefSrcFile `'>
+ <Unique 1875>
+ > # end of XRef
+ <String `page 39'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713278>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `36772: Protocol: CopyPlane'>
+ <MCurrPage 24>
+ <Unique 2258>
+ > # end of Marker
+ <String `LbxCopyPlane'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713800>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `bit-plane'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713801>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <TextRectID 42>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `src-cache'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ <Char Tab >
+ <String `/* cache reference for source drawable */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2167>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713804>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `src-drawable'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713807>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `src-x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713808>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `src-y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713809>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `width'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXCARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713810>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `height'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXCARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713811>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `dst-x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713812>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `dst-y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716391>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: Those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713279>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `CopyPlane'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request for requests within its coding range.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1885>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `18847: Encode-heading: CopyPlane'>
+ <XRefSrcFile `'>
+ <Unique 1883>
+ > # end of XRef
+ <String `page 40'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713280>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `23201: Protocol: PolyText8'>
+ <MCurrPage 25>
+ <Unique 2267>
+ > # end of Marker
+ <String `LbxPolyText8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2139>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713816>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713817>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713818>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `items'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofTEXTITEM8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716373>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713281>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyText8'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request for requests within its encoding range.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1893>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `39640: Encode-heading: PolyText8'>
+ <XRefSrcFile `'>
+ <Unique 1891>
+ > # end of XRef
+ <String `page 40'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713282>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `13228: Protocol: PolyText16'>
+ <MCurrPage 25>
+ <Unique 2276>
+ > # end of Marker
+ <String `LbxPolyText16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2143>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713822>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `x:'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716363>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716364>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `items'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofTEXTITEM16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716369>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716365>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `PolyText16'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request for requests within its encoding range.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1901>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `32634: Encode-heading: PolyText16'>
+ <XRefSrcFile `'>
+ <Unique 1899>
+ > # end of XRef
+ <String `page 40'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713284>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `10990: Protocol: ImageText8'>
+ <MCurrPage 25>
+ <Unique 2285>
+ > # end of Marker
+ <String `LbxImageText8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2149>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713830>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `nChars'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713833>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713834>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713835>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `string'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: STRING8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716342>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2285>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `ImageText8'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request for requests within its encoding range.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1909>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 43>
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `17018: Encode-heading: ImageText8'>
+ <XRefSrcFile `'>
+ <Unique 1907>
+ > # end of XRef
+ <String `page 40'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713286>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `39584: Protocol: ImageText16'>
+ <MCurrPage 26>
+ <Unique 2294>
+ > # end of Marker
+ <String `LbxImageText16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713839>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `nChars'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2161>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713845>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `x: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713847>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713849>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `string'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: STRING16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716339>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, and those given for the corresponding X request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2292>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request replaces the '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `ImageText16'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request for requests within its encoding range.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1917>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `23910: Encode-heading: ImageText16'>
+ <XRefSrcFile `'>
+ <Unique 1915>
+ > # end of XRef
+ <String `page 41'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716503>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `21218: Protocol: PutImage'>
+ <MCurrPage 26>
+ <Unique 2312>
+ > # end of Marker
+ <String `LbxPutImage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716506>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `compression-method'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716507>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `format'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: {'>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Bitmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `XYPixmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `ZPixmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `}'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `/* packed */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2109>
+ <PgfTag `Protocol-item'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `gc-and-drawable: '>
+ <Font
+ <FTag `'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ > # end of Font
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716510>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `width'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `height'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXCARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716511>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `dst-x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `dst-y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LBXPINT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716512>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `depth'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `/* packed */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716513>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `left-pad'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `/* packed */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716514>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pad-bytes'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `/* packed */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718422>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `:LISTofBYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718376>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718423>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the request can be usefully compressed, this request replaces the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `PutImage'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `compres'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sion-method'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` parameter contains the opcode of a compression method returned in the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `reply. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pad-bytes'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` parameter gives the number of unused pad bytes that follow the compressed image '>
+ >
+ <ParaLine
+ <String `data. All other parameters are as in the X request. If the specified compression method is not recognized, the '>
+ >
+ <ParaLine
+ <String `server returns a '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Value'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1925>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `12268: Encode-heading: PutImage'>
+ <XRefSrcFile `'>
+ <Unique 1923>
+ > # end of XRef
+ <String `page 41'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716517>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `26896: Protocol: GetImage'>
+ <MCurrPage 26>
+ <Unique 2321>
+ > # end of Marker
+ <String `LbxGetImage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716519>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `drawable'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: DRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716520>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `x'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `y'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: INT16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716521>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `width'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `height'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716522>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `plane-mask'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716523>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `format'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: {XYPixmap, ZPixmap}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716524>
+ <PgfTag `Protocol-arrow'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Symbol'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Symbol'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 716525>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `depth: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716528>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `x-length: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716529>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `visual: VISUALID or None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716530>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `compression-method: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718442>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <String `data: LISTofBYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718451>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc,Match,Value'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718455>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 44>
+ <String `This request can replace the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GetImage'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request. The same semantics apply, with the following exceptions.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2076>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `compression-method'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field contains the opcode of the compression method used in the reply. The com'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `pression opcodes are supplied in the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxStartProxy'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` reply. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `x-length '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `field'>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String ` '>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `contains the length of the '>
+ >
+ <ParaLine
+ <String `uncompressed version of the reply in 4 byte units.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2210>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Value'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is returned if the format is not recognized by the X server. A '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Match'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is returned under '>
+ >
+ <ParaLine
+ <String `the same circumstances as described by the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `GetImage'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1933>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `10066: Encode-heading: GetImage'>
+ <XRefSrcFile `'>
+ <Unique 1931>
+ > # end of XRef
+ <String `page 42'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717384>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `31209: Protocol: BeginLargeRequest'>
+ <MCurrPage 27>
+ <Unique 2330>
+ > # end of Marker
+ <String `LbxBeginLargeRequest'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717385>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `large-request-length'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717386>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1520>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request, along with the Lbx'>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LargeRequestData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` and Lbx'>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `EndLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests, is used to '>
+ >
+ <ParaLine
+ <String `transport a large request in pieces. The smaller size of the resulting requests allows smoother multiplexing of '>
+ >
+ <ParaLine
+ <String `clients on a single low bandwidth connection to the server. The resulting finer-grained multiplexing '>
+ >
+ <ParaLine
+ <String `improves responsiveness for the other clients.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1521>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `After a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxBeginLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request is sent, multiple '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxLargeRequestData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests are sent '>
+ >
+ <ParaLine
+ <String `to transport all of the data in the large request, and finally an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxEndLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request is sent. The '>
+ >
+ <ParaLine
+ <String `large-request-length field expresses the total length of the transported large request, expressed as the number '>
+ >
+ <ParaLine
+ <String `of bytes in the transported request divided by four.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1941>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `22013: Encode-heading: BeginLargeRequest'>
+ <XRefSrcFile `'>
+ <Unique 1939>
+ > # end of XRef
+ <String `page 42'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717388>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `36982: Protocol: LargeRequestData'>
+ <MCurrPage 27>
+ <Unique 2339>
+ > # end of Marker
+ <String `LbxLargeRequestData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717389>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `data'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofBYTE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718323>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1517>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This request is used to carry the segments of a larger request, as described in the definition of '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxBegin'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `LargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. The data must be carried in order, starting with the request header, and each segment '>
+ >
+ <ParaLine
+ <String `must be multiples of 4 bytes long. If the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxLargeRequestData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is not preceded by a corresponding '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxBeginLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is generated.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1949>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `31469: Encode-heading: LargeRequestData'>
+ <XRefSrcFile `'>
+ <Unique 1947>
+ > # end of XRef
+ <String `page 43'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717391>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `31841: Protocol: EndLargeRequest'>
+ <MCurrPage 27>
+ <Unique 2348>
+ > # end of Marker
+ <String `LbxEndLargeRequest'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717392>
+ <PgfTag `Protocol-errors'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Errors: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `Length, Alloc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1529>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `As described in the definition of '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxBeginLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxEndLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is used to signal '>
+ >
+ <ParaLine
+ <String `the end of a series of '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LargeRequestData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests. If the total length of the data transported by the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxLargeRequestData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` requests does not match the large-request-length field of the preceding '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Lbx'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `BeginLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, then a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `Length'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error occurs. If the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxEndLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is not pre'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ceded by a corresponding '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxBeginLargeRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` error is generated. The request is '>
+ >
+ <ParaLine
+ <String `executed in order for that client as if it were the request after the request preceding '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxEndLargeRe'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `quest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1957>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 45>
+ <String `The encoding for this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `31037: Encode-heading: EndLargeRequest'>
+ <XRefSrcFile `'>
+ <Unique 1955>
+ > # end of XRef
+ <String `page 43'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713288>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.4\t'>
+ <ParaLine
+ <String `Events'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716237>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `33748: Protocol: LbxSwitchEvent'>
+ <MCurrPage 28>
+ <Unique 2358>
+ > # end of Marker
+ <String `LbxSwitchEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716238>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `client'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716250>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Notify the proxy that the subsequent replies, events, and errors are relative to the specified client.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1965>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `17348: Encode-heading: SwitchEvent'>
+ <XRefSrcFile `'>
+ <Unique 1963>
+ > # end of XRef
+ <String `page 46'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713295>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `17292: Protocol: LbxCloseEvent'>
+ <MCurrPage 28>
+ <Unique 2367>
+ > # end of Marker
+ <String `LbxCloseEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713886>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `client'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713296>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Notify the proxy that the specified client\qs connection to the server is closed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1978>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `41814: Encode-heading: CloseEvent'>
+ <XRefSrcFile `'>
+ <Unique 1976>
+ > # end of XRef
+ <String `page 47'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713299>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `23016: Protocol: LbxInvalidateTagEvent'>
+ <MCurrPage 28>
+ <Unique 2376>
+ > # end of Marker
+ <String `LbxInvalidateTagEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713903>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713905>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag-type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: {Modmap, Keymap, Property, Font, ConnInfo}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2089>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This message informs the proxy that the tag and the server data referenced by the tag are obsolete, and '>
+ >
+ <ParaLine
+ <String `should be discarded. The tag type may be one of the following values: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeModmap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTag'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `TypeKeymap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeFont'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeConnInfo'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2093>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `34406: Encode-heading: InvalidateTagEvent'>
+ <XRefSrcFile `'>
+ <Unique 2091>
+ > # end of XRef
+ <String `page 47'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716285>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `20373: Protocol: LbxSendTagDataEvent'>
+ <MCurrPage 28>
+ <Unique 2385>
+ > # end of Marker
+ <String `LbxSendTagDataEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713909>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713911>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `tag-type'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: {Property}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713302>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server sends this event to the proxy to request a copy of tagged data which is being stored by the proxy. '>
+ >
+ <ParaLine
+ <String `The request contains a tag which was previously assigned to the data by the server. The proxy should '>
+ >
+ <ParaLine
+ <String `respond to '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `SendTagData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` by sending a '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `TagData'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request to the server. The tag type may be one of the '>
+ >
+ <ParaLine
+ <String `following values: '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2002>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `22353: Encode-heading: SendTagDataEvent'>
+ <XRefSrcFile `'>
+ <Unique 2000>
+ > # end of XRef
+ <String `page 47'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713303>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `25209: Protocol: LbxListenToOne'>
+ <MCurrPage 28>
+ <Unique 2394>
+ > # end of Marker
+ <String `LbxListenToOne'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716317>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `client'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32 or '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `0xffffffff'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713304>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the server is grabbed, '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `ListenToOne'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is sent to the proxy. As an X client, the proxy itself is unaf'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `fected by grabs, in order that it may respond to requests for data from the X server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713305>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `When the client grabbing the server is managed through the proxy, the proxy will permit messages from '>
+ >
+ <ParaLine
+ <String `itself and the grabbing client to be sent immediately to the server, and may buffer requests from other clients '>
+ >
+ <ParaLine
+ <String `of the proxy. The client is identified in the event.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713306>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 46>
+ <String `When the client grabbing the server is not managed through the proxy, the client field in the event will be '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `0xffffffff'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. The proxy will communicate with the server, and it may buffer requests from other clients. '>
+ >
+ <ParaLine
+ <String `The proxy will continue to handle new connections while the server is grabbed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713307>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The server will send '>
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `ListenToAll'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` to the proxy when the server is ungrabbed. There is no time-out for '>
+ >
+ <ParaLine
+ <String `this interval in the protocol.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2011>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `18630: Encode-heading: ListenToOne'>
+ <XRefSrcFile `'>
+ <Unique 2009>
+ > # end of XRef
+ <String `page 47'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713308>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `11095: Protocol: LbxListenToAll'>
+ <MCurrPage 29>
+ <Unique 2403>
+ > # end of Marker
+ <String `LbxListenToAll'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713309>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Notify the proxy that the server has been ungrabbed, and that the proxy may now send all buffered client '>
+ >
+ <ParaLine
+ <String `requests on to the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2019>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `30610: Encode-heading: ListenToAll'>
+ <XRefSrcFile `'>
+ <Unique 2017>
+ > # end of XRef
+ <String `page 47'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716216>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `40268: Protocol: LbxQuickMotionDeltaEvent'>
+ <MCurrPage 29>
+ <Unique 2412>
+ > # end of Marker
+ <String `LbxQuickMotionDeltaEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2569>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `deltaTime'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716199>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `deltaX'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: INT8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716200>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `deltaY'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: INT8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2027>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This event is used as a replacement for the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event when possible. The fields are used as '>
+ >
+ <ParaLine
+ <String `deltas to the most recent '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event encoded as a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQuickMo'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tionDeltaEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, or '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxMotionDeltaEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. Not every '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event can be encoded as '>
+ >
+ <ParaLine
+ <String `a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQuickMotionDeltaEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2601>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `35213: Encode-heading: QuickMotionDeltaEvent'>
+ <XRefSrcFile `'>
+ <Unique 2025>
+ > # end of XRef
+ <String `page 48'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716201>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `30033: Protocol: LbxMotionDeltaEvent'>
+ <MCurrPage 29>
+ <Unique 2421>
+ > # end of Marker
+ <String `LbxMotionDeltaEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716202>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `deltaX'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: INT8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716203>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `deltaY'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: INT8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716204>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `deltaTime'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716205>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `deltaSequence'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2619>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This event is used as a replacement for the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event when possible. The fields are used as '>
+ >
+ <ParaLine
+ <String `deltas to the most recent '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event encoded as a '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event, '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxQuickMo'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `tionDeltaEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, or '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxMotionDeltaEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `. Not every '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `MotionNotify'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event can be encoded as '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `a LbxMotionDeltaEvent'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2036>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `33682: 1Heading: 6 Algorithm Naming'>
+ <MCurrPage 29>
+ <Unique 1824>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `35310: Encode-heading: MotionDeltaEvent'>
+ <XRefSrcFile `'>
+ <Unique 2034>
+ > # end of XRef
+ <String `page 48'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2101>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `19129: Protocol: ReleaseCmapEvent'>
+ <MCurrPage 29>
+ <Unique 2658>
+ > # end of Marker
+ <String `LbxReleaseCmapEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2104>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: Colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2105>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This event notifies the proxy that it must release the grab on this colormap via the ReleaseCmap request. '>
+ <XRef
+ <XRefName `See Heading & Page'>
+ <XRefSrcText `34675: Protocol: ReleaseCmap'>
+ <XRefSrcFile `'>
+ <Unique 2107>
+ > # end of XRef
+ <String `See '>
+ >
+ <ParaLine
+ <String `\xd2 LbxReleaseCmap\xd3 on page'>
+ <Char HardSpace >
+ <String `17.'>
+ <XRefEnd >
+ >
+ > # end of Para
+ <Para
+ <Unique 2127>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `14052: Encode-heading: ReleaseCmapEvent'>
+ <XRefSrcFile `'>
+ <Unique 2677>
+ > # end of XRef
+ <String `page 48'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2109>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `38041: Protocol: FreeCellsEvent'>
+ <MCurrPage 29>
+ <Unique 2657>
+ > # end of Marker
+ <String `LbxFreeCellsEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2112>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <TextRectID 47>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `colormap'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: Colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2113>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `pixelStart, pixelEnd'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2225>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `LbxFreeCells'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` event is sent to a proxy that has a colormap grabbed to notify the proxy that the refer'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `ence count of the described cells were decremented to zero by the server or another proxy. The reference '>
+ >
+ <ParaLine
+ <String `count includes those by this proxy. The proxy must update its copy of the colormap state accordingly if the '>
+ >
+ <ParaLine
+ <String `colormap is still grabbed, or if the proxy may in the future grab the colormap using smart-grab mode. '>
+ <XRef
+ <XRefName `See Heading & Page'>
+ <XRefSrcText `10922: Protocol: GrabCmap'>
+ <XRefSrcFile `'>
+ <Unique 2227>
+ > # end of XRef
+ <String `See '>
+ >
+ <ParaLine
+ <String `\xd2 LbxGrabCmap\xd3 on page'>
+ <Char HardSpace >
+ <String `15.'>
+ <XRefEnd >
+ >
+ > # end of Para
+ <Para
+ <Unique 2229>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The pixelStart and pixelEnd fields of the event denote a continuous range of cells that were freed.'>
+ <Marker
+ <MType 10>
+ <MText `+33719'>
+ <MCurrPage 30>
+ <Unique 2822>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2682>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `14731: Encode-heading: FreeCellsEvent'>
+ <XRefSrcFile `'>
+ <Unique 2680>
+ > # end of XRef
+ <String `page 48'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2269>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.5\t'>
+ <ParaLine
+ <String `Responses'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2256>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Responses are messages from the server to the proxy that not, strictly speaking, events, replies or errors.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2270>
+ <PgfTag `Protocol'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FSize 14.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `34042: 1Heading: 6 Algorithm Naming'>
+ <MCurrPage 30>
+ <Unique 1924>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `LbxDeltaResponse'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2748>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `count'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2749>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cache-index'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: CARD8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2750>
+ <PgfTag `Protocol-item'>
+ <ParaLine
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `diffs'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `: LISTofDIFFITEM'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2262>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This response carries an event, reply, or error that has been encoded relative to a message in the response '>
+ >
+ <ParaLine
+ <String `delta cache. The '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `cache-index'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` field is the index into the cache. Each entry in '>
+ <Font
+ <FTag `Argument'>
+ <FChangeBar No >
+ > # end of Font
+ <String `diffs'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` provides a byte offset and '>
+ >
+ <ParaLine
+ <String `replacement value to use in reconstructing the response.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2266>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding for this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `17100: Encode-heading: DeltaEvent'>
+ <XRefSrcFile `'>
+ <Unique 2264>
+ > # end of XRef
+ <String `page 49'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1772>
+ <PgfTag `1Heading'>
+ <PgfNumString `5\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `13570: 1Heading: 5 Algorithm Naming'>
+ <MCurrPage 30>
+ <Unique 2633>
+ > # end of Marker
+ <String `Algorithm Naming'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1773>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `To avoid potential clashes between different but similar algorithms for stream, bitmap, and pixmap compres'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sion, the following naming scheme will be adhered to:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1774>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Each algorithm has a unique name, which is a STRING8, of the following form: '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1777>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` <organization\>-<some-descriptive-name\> '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1779>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The organization field above is the organization name as registered in section 1 of the X Registry (the regis'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `try is provided as a free service by the X Consortium.) This prevents conflicts among different vendor\xd5 s '>
+ >
+ <ParaLine
+ <String `extensions.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1783>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `As an example, the X Consortium defines a zlib-based stream compression algorithm called XC-ZLIB.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713310>
+ <PgfTag `1Heading'>
+ <PgfNumString `6\t'>
+ <ParaLine
+ <String `Encoding'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717683>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The syntax and types used in the encoding are taken from the X protocol encoding. Where LBX defines new '>
+ >
+ <ParaLine
+ <String `types, they are defined earlier in this document. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 717689>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `As in the X protocol, in various cases, the number of bytes occupied by a component will be specified by a '>
+ >
+ <ParaLine
+ <String `lowercase single-letter variable name instead of a specific numeric value, and often some other component '>
+ >
+ <ParaLine
+ <TextRectID 48>
+ <String `will have its value specified as a simple numeric expression involving these variables. Components specified '>
+ >
+ <ParaLine
+ <String `with such expressions are always interpreted as unsigned integers. The scope of such variables is always just '>
+ >
+ <ParaLine
+ <String `the enclosing request, reply, error, event, or compound type structure.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717690>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For unused bytes, the encode-form is:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717691>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `N'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717692>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the number of unused bytes is variable, the encode-form typically is:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717693>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(E)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717699>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `where E is some expression, and pad(E) is the number of bytes needed to round E up to a multiple of four.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717700>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `pad(E) = (4 - (E mod 4)) mod 4'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3031>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In many of the encodings, the length depends on many variable length fields. The variable L is used to indi'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cate the number of padded 4 byte units needed to carry the request. Similarly, the variable Lpad indicates the '>
+ >
+ <ParaLine
+ <String `number of bytes needed to pad the request to a 4 byte boundary.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2556>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `For counted lists there is a common encoding of NLISTofFOO:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2563>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `NLISTofFOO'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2557>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `m'>
+ <Char Tab >
+ <String `num items'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2558>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LISTofFOO'>
+ <Char Tab >
+ <String `items'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2708>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For cached GC and Drawables:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2714>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `LBXGCANDDRAWUPDATE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2737>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 or 0'>
+ <Char Tab >
+ <String `DRAWBLE'>
+ <Char Tab >
+ <String `optional drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2739>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 or 0'>
+ <Char Tab >
+ <String `GC'>
+ <Char Tab >
+ <String `optional GC'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2740>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2736>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `LBXGCANDDRAWABLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2711>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `8'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache-entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2727>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `8'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2743>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional GC and Drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716028>
+ <PgfTag `2Heading'>
+ <PgfNumString `6.1\t'>
+ <ParaLine
+ <String `Errors'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716335>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717041>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `Error'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717042>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `error-base + 0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717043>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717044>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717045>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717046>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `major opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717047>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `21'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714014>
+ <PgfTag `2Heading'>
+ <PgfNumString `6.2\t'>
+ <ParaLine
+ <String `Requests'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714027>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `34166: Encode-heading: QueryVersion'>
+ <MCurrPage 31>
+ <Unique 1626>
+ > # end of Marker
+ <String `LbxQueryVersion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714040>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 49>
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714041>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714042>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714043>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714044>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714048>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714055>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714056>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714057>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `major version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714058>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `minor version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714059>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2037>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `18761: Protocol: QueryVersion'>
+ <XRefSrcFile `'>
+ <Unique 2041>
+ > # end of XRef
+ <String `page 8'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714077>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `27452: Encode-heading: StartProxy'>
+ <MCurrPage 32>
+ <Unique 1637>
+ > # end of Marker
+ <String `LbxStartProxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714078>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714079>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714080>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717667>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `NLISTofOPTION-REQUEST'>
+ <Char Tab >
+ <String `options'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717809>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(n)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717811>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `OPTION-REQUEST'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717812>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `OPTCODE'>
+ <Char Tab >
+ <String `option-code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717819>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `OPTLEN'>
+ <Char Tab >
+ <String `option-request-byte-length, (b=m+a+1)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717881>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `DELTAOPT or'>
+ <Char Tab >
+ <String `option '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2493>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `NLISTofNAMEDOPT or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2494>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `NLISTofSTR or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2495>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `NLISTofPIXMAPMETHOD or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2496>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `BOOL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2485>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2489>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding of the option field depends on the option-code. See '>
+ <XRef
+ <XRefName `Table & Page'>
+ <XRefSrcText `35444: TableTitle: TABLE 1. StartProxy Options'>
+ <XRefSrcFile `'>
+ <Unique 2487>
+ > # end of XRef
+ <String `Table'>
+ <Char HardSpace >
+ <String `1, \xd2 StartProxy Options,\xd3 on page'>
+ <Char HardSpace >
+ <String `10'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2504>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `OPTCODE'>
+ <Char Tab >
+ <String `option-code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2505>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `LbxOptionDeltaProxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2506>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LbxOptionDeltaServer'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2507>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `LbxOptionStreamCompression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2508>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ <Char Tab >
+ <String `LbxOptionBitmapCompression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2509>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `LbxOptionPixmapCompression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2510>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `5'>
+ <Char Tab >
+ <String `LbxOptionMessageCompression'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `/* also known as squishing */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2511>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `6'>
+ <Char Tab >
+ <String `LbxOptionUseTags'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2512>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `7'>
+ <Char Tab >
+ <String `LbxOptionColormapAllocation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2513>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `255'>
+ <Char Tab >
+ <String `LbxOptionExtension'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2490>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `OPTLEN has two possible encodings, depending on the size of the value carried:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2472>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `OPTLEN'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2487>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `b (0 < b <= 255)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2488>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2489>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `OPTLEN'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2476>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `long length header'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2477>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1 '>
+ <Char Tab >
+ <String `c'>
+ <Char Tab >
+ <String `length0, c = b \>\> 8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2479>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `d'>
+ <Char Tab >
+ <String `length1, d= b & #xff'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717863>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <TextRectID 50>
+ <String `DELTAOPT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717866>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `min-cache-size'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717867>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `max-cache-size'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717868>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `preferred-cache-size'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717869>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `min-message-length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717870>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `max-message-length (in 4-byte units)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717871>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `preferred-message-length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2509>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `NAMEDOPT'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717892>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `STR'>
+ <Char Tab >
+ <String `type-name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717885>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `g+1'>
+ <Char Tab >
+ <String `option-data-length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717886>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `g'>
+ <Char Tab >
+ <String `LISTofBYTE'>
+ <Char Tab >
+ <String `option-data (option specific)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717977>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `+27878'>
+ <MCurrPage 33>
+ <Unique 2833>
+ > # end of Marker
+ <String `PIXMAPMETHOD'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2539>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `h'>
+ <Char Tab >
+ <String `STR'>
+ <Char Tab >
+ <String `name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2541>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BITMASK'>
+ <Char Tab >
+ <String `format mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2542>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `j'>
+ <Char Tab >
+ <String `depth count'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2543>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `j'>
+ <Char Tab >
+ <String `LISTofCARD8'>
+ <Char Tab >
+ <String `depths'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717668>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2473>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2474>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2475>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `count'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717682>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0xff'>
+ <Char Tab >
+ <String `options in request cannot be decoded'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718079>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717677>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `(a+p-32)/4'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717670>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `LISTofCHOICE'>
+ <Char Tab >
+ <String `options-reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717678>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, if (n<24) p=24-n else p=pad(n)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717716>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `CHOICE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717988>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `request-option-index'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717989>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `OPTLEN'>
+ <Char Tab >
+ <String `reply-option-byte-length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2570>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `DELTACHOICE or '>
+ <Char Tab >
+ <String `choice'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2478>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `INDEXEDCHOICE or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2479>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `NLISTofINDEXEDOPT or'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2480>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `NLISTofPIXMAPCHOICE or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2481>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `BOOL or'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2482>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `INDEXEDCHOICE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2497>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The encoding of the choice field depends on the option-code. See '>
+ <XRef
+ <XRefName `Table & Page'>
+ <XRefSrcText `35444: TableTitle: TABLE 1. StartProxy Options'>
+ <XRefSrcFile `'>
+ <Unique 2495>
+ > # end of XRef
+ <String `Table'>
+ <Char HardSpace >
+ <String `1, \xd2 StartProxy Options,\xd3 on page'>
+ <Char HardSpace >
+ <String `10'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717991>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `DELTACHOICE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717992>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `preferred cache size'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717993>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `preferred message length in 4-byte units'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718043>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `+13814'>
+ <MCurrPage 33>
+ <Unique 2847>
+ > # end of Marker
+ <String `INDEXEDCHOICE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2533>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `index'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2534>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `d'>
+ <Char Tab >
+ <String `LISTofBYTE'>
+ <Char Tab >
+ <String `data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2532>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <TextRectID 51>
+ <String `PIXMAPCHOICE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2535>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `index'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2536>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2537>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BITMASK'>
+ <Char Tab >
+ <String `format mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2538>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `e'>
+ <Char Tab >
+ <String `NLISTofCARD8'>
+ <Char Tab >
+ <String `depths'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2046>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `20870: Protocol: StartProxy'>
+ <XRefSrcFile `'>
+ <Unique 2044>
+ > # end of XRef
+ <String `page 9'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714081>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `23471: Encode-heading: StopProxy'>
+ <MCurrPage 34>
+ <Unique 1644>
+ > # end of Marker
+ <String `LbxStopProxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714085>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714086>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714087>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2053>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `27455: Protocol: StopProxy'>
+ <XRefSrcFile `'>
+ <Unique 2051>
+ > # end of XRef
+ <String `page 12'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714088>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `36790: Encode-heading: Switch'>
+ <MCurrPage 34>
+ <Unique 1679>
+ > # end of Marker
+ <String `LbxSwitch'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714089>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714090>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `3'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714091>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714092>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2061>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `15166: Encode-heading: NewClient'>
+ <MCurrPage 34>
+ <Unique 1649>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `33500: Protocol: Switch'>
+ <XRefSrcFile `'>
+ <Unique 2059>
+ > # end of XRef
+ <String `page 13'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714093>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxNewClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714094>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714095>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714096>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714097>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2859>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `The remaining bytes of the request are the core connection setup.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2862>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2900>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `If the connection is rejected, a core connection reply is sent. Otherwise the reply has the form:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2860>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <String `success'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2865>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `change type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2866>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `no-deltas'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2897>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `normal-client-deltas'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2898>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `app-group-deltas'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2867>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `major version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2868>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `minor version'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2894>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1 + a'>
+ <Char Tab >
+ <String `length '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2875>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag id'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2871>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The remaining bytes depend on the value of change-type and length. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2911>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For no-deltas, the remaining bytes are the "additional data" bytes of the core reply. (a = length of core reply, '>
+ >
+ <ParaLine
+ <String `in 4 byte quantities).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2912>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For normal-client-deltas, the additional bytes have the form, with a length (a = 1 +b):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2907>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `resource id base'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2908>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4b'>
+ <Char Tab >
+ <String `LISTofSETofEVENT'>
+ <Char Tab >
+ <String `root input masks'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2909>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 52>
+ <String `For app-group-deltas, the additional bytes have the following form, with a length of (a = 1 + 4c):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2910>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `resource id base'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2913>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <String `root id base'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2916>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `VISUALID'>
+ <Char Tab >
+ <String `visual'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2915>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2917>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `white pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2918>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `black pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2914>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4c'>
+ <Char Tab >
+ <String `LISTofSETofEVENT'>
+ <Char Tab >
+ <String `root input masks'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2069>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `21121: Encode-heading: CloseClient'>
+ <MCurrPage 35>
+ <Unique 1654>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `17810: Protocol: LbxNewClient'>
+ <XRefSrcFile `'>
+ <Unique 2067>
+ > # end of XRef
+ <String `page 12'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714098>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxCloseClient'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714099>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714100>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `5'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714101>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714102>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2077>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `10940: Encode-heading: ModifySequence'>
+ <MCurrPage 35>
+ <Unique 1687>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `21625: Protocol: CloseClient'>
+ <XRefSrcFile `'>
+ <Unique 2075>
+ > # end of XRef
+ <String `page 13'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714103>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxModifySequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714104>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714105>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714106>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714108>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `offset to sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2085>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `11897: Encode-heading: AllowMotion'>
+ <MCurrPage 35>
+ <Unique 1695>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `36693: Protocol: ModifySequence'>
+ <XRefSrcFile `'>
+ <Unique 2083>
+ > # end of XRef
+ <String `page 14'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714110>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxAllowMotion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714111>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714115>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `7'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714116>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714117>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `number of MotionNotify events'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2093>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `38053: Encode-heading: IncrementPixel'>
+ <MCurrPage 35>
+ <Unique 1748>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `15895: Protocol: AllowMotion'>
+ <XRefSrcFile `'>
+ <Unique 2091>
+ > # end of XRef
+ <String `page 14'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714118>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxIncrementPixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714119>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714120>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `8'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714121>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `3'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714122>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714131>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2101>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `39838: Encode-heading: Delta'>
+ <MCurrPage 35>
+ <Unique 1759>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `27227: Protocol: IncrementPixel'>
+ <XRefSrcFile `'>
+ <Unique 2099>
+ > # end of XRef
+ <String `page 18'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714155>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxDelta'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714156>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714157>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `9'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714158>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(2n +p+2)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714160>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `count of diffs'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714161>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 53>
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `cache index'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714162>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2n'>
+ <Char Tab >
+ <String `LISTofDIFFITEM'>
+ <Char Tab >
+ <String `offsets and differences'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714185>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(2n + 2)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2109>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `26857: Protocol: Delta'>
+ <XRefSrcFile `'>
+ <Unique 2107>
+ > # end of XRef
+ <String `page 18'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714190>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `40057: Encode-heading: GetModifierMapping'>
+ <MCurrPage 36>
+ <Unique 1767>
+ > # end of Marker
+ <String `LbxGetModifierMapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714191>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714192>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `10'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714193>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714198>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714199>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714200>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `keycodes-per-modifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714201>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714202>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `2n'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714204>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714205>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714206>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `8n'>
+ <Char Tab >
+ <String `LISTofKEYCODE'>
+ <Char Tab >
+ <String `keycodes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2117>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `37687: Protocol: GetModifierMapping'>
+ <XRefSrcFile `'>
+ <Unique 2115>
+ > # end of XRef
+ <String `page 18'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714228>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `37545: Encode-heading: InvalidateTag'>
+ <MCurrPage 36>
+ <Unique 1703>
+ > # end of Marker
+ <String `LbxInvalidateTag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714231>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714232>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `12'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714233>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714234>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2125>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `12515: Protocol: InvalidateTag'>
+ <XRefSrcFile `'>
+ <Unique 2123>
+ > # end of XRef
+ <String `page 14'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714235>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `29719: Encode-heading: PolyPoint'>
+ <MCurrPage 36>
+ <Unique 1816>
+ > # end of Marker
+ <String `LbxPolyPoint'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714236>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714237>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `13'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714238>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(m+n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2757>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWABLE'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2759>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXPOINT'>
+ <Char Tab >
+ <String `points (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714250>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2133>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `31086: Encode-heading: PolyLine'>
+ <MCurrPage 36>
+ <Unique 1824>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `37179: Protocol: PolyPoint'>
+ <XRefSrcFile `'>
+ <Unique 2131>
+ > # end of XRef
+ <String `page 21'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714297>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxPolyLine'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714372>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714373>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `14'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2076>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(m+n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2077>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWABLE'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714375>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXPOINT'>
+ <Char Tab >
+ <String `points (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714384>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2142>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `16574: Protocol: PolyLine'>
+ <XRefSrcFile `'>
+ <Unique 2140>
+ > # end of XRef
+ <String `page 21'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714385>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `27528: Encode-heading: PolySegment'>
+ <MCurrPage 36>
+ <Unique 1832>
+ > # end of Marker
+ <String `LbxPolySegment'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714388>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 54>
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714389>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `15'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2081>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(m+n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2082>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWABLE'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714395>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXSEGMENT'>
+ <Char Tab >
+ <String `segments (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714396>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2151>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `33628: Encode-heading: PolyRectangle'>
+ <MCurrPage 37>
+ <Unique 1840>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `26077: Protocol: PolySegment'>
+ <XRefSrcFile `'>
+ <Unique 2149>
+ > # end of XRef
+ <String `page 22'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714386>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxPolyRectangle'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714402>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714403>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `16'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2086>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(m+n+p)/4'>
+ <Char Tab >
+ <String `request length '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2087>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWABLE'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714409>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXRECTANGLE'>
+ <Char Tab >
+ <String `rectangles (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714410>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=pad(m+n)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2160>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `40958: Protocol: PolyRectangle'>
+ <XRefSrcFile `'>
+ <Unique 2158>
+ > # end of XRef
+ <String `page 22'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714399>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `25855: Encode-heading: PolyArc'>
+ <MCurrPage 37>
+ <Unique 1848>
+ > # end of Marker
+ <String `LbxPolyArc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714417>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714421>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `17'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2091>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(m+n+p)/4'>
+ <Char Tab >
+ <String `request length '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2092>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWABLE'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714427>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXARCS'>
+ <Char Tab >
+ <String `arcs (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714428>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2169>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `15317: Protocol: PolyArc'>
+ <XRefSrcFile `'>
+ <Unique 2167>
+ > # end of XRef
+ <String `page 22'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714429>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `24998: Encode-heading: FillPoly'>
+ <MCurrPage 37>
+ <Unique 1872>
+ > # end of Marker
+ <String `LbxFillPoly'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714468>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714469>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `18'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2433>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(3+m+n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2434>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2435>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `shape'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714485>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `Complex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714498>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `Nonconvex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714499>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `Convex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714494>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `p'>
+ <Char Tab >
+ <String `pad byte count'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714473>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714475>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXPOINT'>
+ <Char Tab >
+ <String `points (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714476>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2178>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `35796: Protocol: FillPoly'>
+ <XRefSrcFile `'>
+ <Unique 2176>
+ > # end of XRef
+ <String `page 23'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714430>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `26399: Encode-heading: PolyFillRectangle'>
+ <MCurrPage 37>
+ <Unique 1856>
+ > # end of Marker
+ <String `LbxPolyFillRectangle'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714433>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714434>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `19'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2101>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(m+n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2102>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWABLE'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714440>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 55>
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXRECTANGLE'>
+ <Char Tab >
+ <String `rectangles (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714441>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2187>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `19081: Encode-heading: PolyFillArc'>
+ <MCurrPage 38>
+ <Unique 1864>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `25511: Protocol: PolyFillRectangle'>
+ <XRefSrcFile `'>
+ <Unique 2185>
+ > # end of XRef
+ <String `page 22'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714431>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxPolyFillArc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714449>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714450>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `20'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2106>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(m+n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2107>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LBXGCANDDRAWABLE'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714456>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLBXARC'>
+ <Char Tab >
+ <String `arcs (n is data-dependent)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714457>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2196>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `42698: Protocol: PolyFillArc'>
+ <XRefSrcFile `'>
+ <Unique 2194>
+ > # end of XRef
+ <String `page 23'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714447>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `21702: Encode-heading: GetKeyboardMapping'>
+ <MCurrPage 38>
+ <Unique 1775>
+ > # end of Marker
+ <String `LbxGetKeyboardMapping'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714505>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714506>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `21'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714507>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714511>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `KEYCODE'>
+ <Char Tab >
+ <String `first keycode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714513>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `m'>
+ <Char Tab >
+ <String `count'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714514>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714515>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714516>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714517>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `keysyms-per-keycode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714518>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714519>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `nm'>
+ <Char Tab >
+ <String `reply length (m = count field from the request)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714523>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714524>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714525>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4nm'>
+ <Char Tab >
+ <String `LISTofKEYSYM'>
+ <Char Tab >
+ <String `keysyms'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2206>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `33719: Protocol: GetKeyboardMapping'>
+ <XRefSrcFile `'>
+ <Unique 2204>
+ > # end of XRef
+ <String `page 18'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714538>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+29128'>
+ <MCurrPage 38>
+ <Unique 2859>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `24597: Encode-heading: QueryFont'>
+ <MCurrPage 38>
+ <Unique 1792>
+ > # end of Marker
+ <String `LbxQueryFont'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714539>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714540>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `22'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714541>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714542>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `FONTABLE'>
+ <Char Tab >
+ <String `font'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714547>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714548>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714549>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <String `compression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714550>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714555>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714561>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715548>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715554>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `All of the following is conditional:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715555>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `12'>
+ <Char Tab >
+ <String `CHARINFO'>
+ <Char Tab >
+ <String `min-bounds'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715556>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715557>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `12'>
+ <Char Tab >
+ <String `CHARINFO'>
+ <Char Tab >
+ <String `max-bounds'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715558>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715559>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `min-char-or-byte2'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715560>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 56>
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `max-char-or-byte2'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715561>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `default-char'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715562>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `number of FONTPROPs in properties'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715563>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `draw-direction'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715564>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LeftToRight'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715565>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `RightToLeft'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715566>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `min-byte1'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715567>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `max-byte1'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715568>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <String `all-chars-exist'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715569>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <String `font-ascent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715570>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <String `font-descent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715571>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `m'>
+ <Char Tab >
+ <String `number of elements in char-infos'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715572>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `8n'>
+ <Char Tab >
+ <String `LISTofFONTPROP'>
+ <Char Tab >
+ <String `properties'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716013>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `and either'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716014>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `12m'>
+ <Char Tab >
+ <String `LISTofCHARINFO'>
+ <Char Tab >
+ <String `char-infos'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716015>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `or'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716016>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LISTofLBXCHARINFO'>
+ <Char Tab >
+ <String `char-infos'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2214>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `18818: Protocol: QueryFont'>
+ <XRefSrcFile `'>
+ <Unique 2212>
+ > # end of XRef
+ <String `page 19'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714562>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+24440'>
+ <MCurrPage 39>
+ <Unique 2870>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `18013: Encode-heading: ChangeProperty'>
+ <MCurrPage 39>
+ <Unique 1800>
+ > # end of Marker
+ <String `LbxChangeProperty'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714563>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714564>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `23'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714565>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714566>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714567>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `ATOM'>
+ <Char Tab >
+ <String `property'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714568>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `ATOM'>
+ <Char Tab >
+ <String `type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714569>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `format'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714570>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `mode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714571>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `Replace'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714572>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `Preprend'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714573>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `Append'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714574>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714575>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `length of data in format units'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714576>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `(= n for format = 8)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714577>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `(= n/2 for format = 16)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714578>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `(= n/4 for format = 32)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714583>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714584>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714585>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714586>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714587>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714588>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714589>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2223>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `40098: Protocol: ChangeProperty'>
+ <XRefSrcFile `'>
+ <Unique 2221>
+ > # end of XRef
+ <String `page 20'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714626>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `13863: Encode-heading: GetProperty'>
+ <MCurrPage 39>
+ <Unique 1808>
+ > # end of Marker
+ <String `LbxGetProperty'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714627>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714628>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `24'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714629>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `7'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714630>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <String `window'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714634>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 57>
+ <String `4'>
+ <Char Tab >
+ <String `ATOM'>
+ <Char Tab >
+ <String `property'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714635>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `ATOM'>
+ <Char Tab >
+ <String `type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714640>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `AnyPropertyType'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714636>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `delete'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714637>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714638>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `long-offset'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714639>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `long-length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714641>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714642>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714643>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `format'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714644>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714645>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714646>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `ATOM'>
+ <Char Tab >
+ <String `type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714649>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714647>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `bytes-after'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714648>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `length of value in format units'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714650>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `(= 0 for format = 0)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714651>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `(= n for format = 8)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714652>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `(= n/2 for format = 16)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714653>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <Char Tab >
+ <String `(= n/4 for format = 32)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714655>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714654>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `8'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2232>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `31397: Protocol: LbxGetProperty'>
+ <XRefSrcFile `'>
+ <Unique 2230>
+ > # end of XRef
+ <String `page 20'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714657>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `37174: Encode-heading: TagData'>
+ <MCurrPage 40>
+ <Unique 1719>
+ > # end of Marker
+ <String `LbxTagData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714658>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714659>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `25'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714660>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `3+(n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714661>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714663>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `length of data in bytes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714664>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofBYTE'>
+ <Char Tab >
+ <String `data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714665>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(n)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2239>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `17987: Protocol: TagData'>
+ <XRefSrcFile `'>
+ <Unique 2237>
+ > # end of XRef
+ <String `page 14'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714693>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `10231: Encode-heading: CopyArea'>
+ <MCurrPage 40>
+ <Unique 1880>
+ > # end of Marker
+ <String `LbxCopyArea'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714694>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714695>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `26'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714696>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2509>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `source drawable cache entry'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2497>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2498>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 or 0'>
+ <Char Tab >
+ <String `DRAWABLE'>
+ <Char Tab >
+ <String `optional source drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2512>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and dest drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2502>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `src-x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2503>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `d'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `src-y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2514>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `e'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `dst-x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2515>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `dst-y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2518>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `g'>
+ <Char Tab >
+ <String `LBXCARD16'>
+ <Char Tab >
+ <String `width'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2519>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `h'>
+ <Char Tab >
+ <String `LBXCARD16'>
+ <Char Tab >
+ <String `height'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714700>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2247>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 58>
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `11409: Protocol: CopyArea'>
+ <XRefSrcFile `'>
+ <Unique 2245>
+ > # end of XRef
+ <String `page 23'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714701>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `18847: Encode-heading: CopyPlane'>
+ <MCurrPage 41>
+ <Unique 1888>
+ > # end of Marker
+ <String `LbxCopyPlane'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714704>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714708>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `27'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2491>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2492>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `bit plane'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2525>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `source drawable cache entry'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2526>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2527>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4 or 0'>
+ <Char Tab >
+ <String `DRAWABLE'>
+ <Char Tab >
+ <String `optional source drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2528>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and dest drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2529>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `src-x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2530>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `d'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `src-y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2531>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `e'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `dst-x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2532>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `dst-y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2558>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `g'>
+ <Char Tab >
+ <String `LBXCARD16'>
+ <Char Tab >
+ <String `width'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2534>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `h'>
+ <Char Tab >
+ <String `LBXCARD16'>
+ <Char Tab >
+ <String `height'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714721>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2255>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `39640: Encode-heading: PolyText8'>
+ <MCurrPage 41>
+ <Unique 1896>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `36772: Protocol: CopyPlane'>
+ <XRefSrcFile `'>
+ <Unique 2253>
+ > # end of XRef
+ <String `page 23'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714727>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxPolyText8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714728>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714729>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `28'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714730>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2439>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2445>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714734>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714735>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714736>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofTEXTITEM8'>
+ <Char Tab >
+ <String `items'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714737>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2264>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `32634: Encode-heading: PolyText16'>
+ <MCurrPage 41>
+ <Unique 1904>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `23201: Protocol: PolyText8'>
+ <XRefSrcFile `'>
+ <Unique 2262>
+ > # end of XRef
+ <String `page 24'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714740>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxPolyText16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714741>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714742>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `29'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2451>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2452>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2453>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2454>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2455>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714749>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2n'>
+ <Char Tab >
+ <String `LISTofTEXTITEM16'>
+ <Char Tab >
+ <String `items'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714750>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2273>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `17018: Encode-heading: ImageText8'>
+ <MCurrPage 41>
+ <Unique 1912>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `13228: Protocol: PolyText16'>
+ <XRefSrcFile `'>
+ <Unique 2271>
+ > # end of XRef
+ <String `page 24'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714738>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxImageText8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714756>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714757>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `30'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2459>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 59>
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2460>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2461>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2462>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2463>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714760>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `STRING8'>
+ <Char Tab >
+ <String `string'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714771>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2282>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `23910: Encode-heading: ImageText16'>
+ <MCurrPage 42>
+ <Unique 1920>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `10990: Protocol: ImageText8'>
+ <XRefSrcFile `'>
+ <Unique 2280>
+ > # end of XRef
+ <String `page 24'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714774>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxImageText16'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714775>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714776>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `31'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2467>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2468>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2469>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2470>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2471>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714783>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2n'>
+ <Char Tab >
+ <String `STRING16'>
+ <Char Tab >
+ <String `string'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714784>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2291>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `39584: Protocol: ImageText16'>
+ <XRefSrcFile `'>
+ <Unique 2289>
+ > # end of XRef
+ <String `page 25'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714772>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `37117: Encode-heading: QueryExtension'>
+ <MCurrPage 42>
+ <Unique 1631>
+ > # end of Marker
+ <String `LbxQueryExtension'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714793>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714794>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `32'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714795>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2+(n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714796>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `length of extension name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714797>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `STRING8'>
+ <Char Tab >
+ <String `extension name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714808>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(n)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714809>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714810>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714815>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `number of requests in the extension'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714816>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714817>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `0 or 2*(m + p)'>
+ <Char Tab >
+ <String `reply length, m = (n+7)/8'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714818>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <String `present'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714819>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `major opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714820>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `first event'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714821>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `first error'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714822>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714823>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LISTofMASK'>
+ <Char Tab >
+ <String `optional reply-mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717283>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(m)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714824>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `LISTofMASK'>
+ <Char Tab >
+ <String `optional event-mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 717293>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(m)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2300>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `36662: Protocol: QueryExtension'>
+ <XRefSrcFile `'>
+ <Unique 2298>
+ > # end of XRef
+ <String `page 9'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714826>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `12268: Encode-heading: PutImage'>
+ <MCurrPage 42>
+ <Unique 1928>
+ > # end of Marker
+ <String `LbxPutImage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714827>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714828>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `33'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714829>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714859>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 60>
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `compression method'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2540>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `LBXGCANDDRAWENT'>
+ <Char Tab >
+ <String `cache entries'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714860>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `PIPACKED'>
+ <Char Tab >
+ <Char Tab >
+ <String `bit-packed'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2549>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `LBXGCANDDRAWUPDATE'>
+ <Char Tab >
+ <String `optional gc and drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714863>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `LBXCARD16'>
+ <Char Tab >
+ <String `width'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714864>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `d'>
+ <Char Tab >
+ <String `LBXCARD16'>
+ <Char Tab >
+ <String `height'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714865>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `e'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714866>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `LBXPINT16'>
+ <Char Tab >
+ <String `y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718397>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofBYTE'>
+ <Char Tab >
+ <String `compressed image data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718398>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2613>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If there is no left padding and the depth is less than or equal to nine, PIPPACKED is encoded as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2615>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PIPACKED'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2614>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `#x80 | (format << 5) | ((depth -1) << 2)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2621>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Otherwise PIPACKED is defined as:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2624>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PIPACKED'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2635>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `(depth -1) << 2)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2631>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `(format << 5) | left-pad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2309>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `21218: Protocol: PutImage'>
+ <XRefSrcFile `'>
+ <Unique 2307>
+ > # end of XRef
+ <String `page 25'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714831>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `10066: Encode-heading: GetImage'>
+ <MCurrPage 43>
+ <Unique 1936>
+ > # end of Marker
+ <String `LbxGetImage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714832>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714833>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `34'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714834>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714854>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `DRAWABLE'>
+ <Char Tab >
+ <String `drawable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714874>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <String `x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714875>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <String `y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714876>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `width'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714877>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `height'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714878>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `plane mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714879>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `format'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714880>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714881>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 714882>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714883>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `depth'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714884>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714885>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `(n+p)/4'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714886>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `(m+p)/4'>
+ <Char Tab >
+ <String `X reply length; if uncompressed, m=n'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714887>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `VISUALID'>
+ <Char Tab >
+ <String `visual'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714888>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `None'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714889>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `compression method'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714890>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `15'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715708>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofBYTE'>
+ <Char Tab >
+ <String `data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 718471>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(n)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2318>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `22013: Encode-heading: BeginLargeRequest'>
+ <MCurrPage 43>
+ <Unique 1944>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `26896: Protocol: GetImage'>
+ <XRefSrcFile `'>
+ <Unique 2316>
+ > # end of XRef
+ <String `page 25'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715709>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxBeginLargeRequest'>
+ >
+ > # end of Para
+ <Para
+ <Unique 715710>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714894>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 61>
+ <String `1'>
+ <Char Tab >
+ <String `35'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714895>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714896>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `large request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2327>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `31469: Encode-heading: LargeRequestData'>
+ <MCurrPage 44>
+ <Unique 1952>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `31209: Protocol: BeginLargeRequest'>
+ <XRefSrcFile `'>
+ <Unique 2325>
+ > # end of XRef
+ <String `page 26'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714897>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxLargeRequestData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714898>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714899>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `36'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714900>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+n'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714901>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4n'>
+ <Char Tab >
+ <String `LISTofBYTE'>
+ <Char Tab >
+ <String `data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2336>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `36982: Protocol: LargeRequestData'>
+ <XRefSrcFile `'>
+ <Unique 2334>
+ > # end of XRef
+ <String `page 26'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714914>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `31037: Encode-heading: EndLargeRequest'>
+ <MCurrPage 44>
+ <Unique 1960>
+ > # end of Marker
+ <String `LbxEndLargeRequest'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714904>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714905>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `37'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 714906>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2345>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `31841: Protocol: EndLargeRequest'>
+ <XRefSrcFile `'>
+ <Unique 2343>
+ > # end of XRef
+ <String `page 26'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2586>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `34140: Encode-heading: LbxInternAtoms'>
+ <MCurrPage 44>
+ <Unique 2664>
+ > # end of Marker
+ <String `LbxInternAtoms'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2587>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2588>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `38'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2589>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(2+m+n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2560>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `m'>
+ <Char Tab >
+ <String `num-atoms'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2561>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofLONGSTR'>
+ <Char Tab >
+ <String `names'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3006>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `pad p=Lpad'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2442>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2450>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2451>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2452>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2453>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `a'>
+ <Char Tab >
+ <String `reply length, a = MAX(m - 6, 0)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2458>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4*m'>
+ <Char Tab >
+ <String `LISTofATOM'>
+ <Char Tab >
+ <String `atoms'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2508>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `pad p = MAX(0, 4*(6 - m))'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2438>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2448>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `LONGSTR'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2439>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `c'>
+ <Char Tab >
+ <String `string length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2440>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `STRING8'>
+ <Char Tab >
+ <String `string'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2461>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `21636: Protocol: LbxInternAtoms'>
+ <XRefSrcFile `'>
+ <Unique 2591>
+ > # end of XRef
+ <String `page 17'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2598>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `41440: Encode-heading: LbxGetWinAttrAndGeom'>
+ <MCurrPage 44>
+ <Unique 2706>
+ > # end of Marker
+ <String `LbxGetWinAttrAndGeom'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2599>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2600>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `39'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2675>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2485>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `window id'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2487>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2490>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2505>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2506>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 62>
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `backing store'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2507>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `NotUseful'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2537>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `WhenMapped'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2538>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `Always'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2536>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2508>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `7'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2509>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `VISUALID'>
+ <Char Tab >
+ <String `visual id'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2515>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `class'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2519>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `InputOutput'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2520>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `InputOnly'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2521>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BITGRAVITY'>
+ <Char Tab >
+ <String `bit gravity'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2522>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `WINGRAVITY'>
+ <Char Tab >
+ <String `window gravity'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2523>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `backing bit planes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2524>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `backing pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2525>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <String `save under'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2526>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <String `map installed'>
+ <Char Tab >
+ >
+ > # end of Para
+ <Para
+ <Unique 2527>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `map state'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2531>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `0'>
+ <Char Tab >
+ <String `Unmapped'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2532>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `Unviewable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2533>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `Viewable'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2542>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `BOOL'>
+ <Char Tab >
+ <String `override'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2543>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2544>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `SETofEVENT'>
+ <Char Tab >
+ <String `all events mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2545>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `SETofEVENT'>
+ <Char Tab >
+ <String `your event mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2546>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `SETofDEVICEEVENT'>
+ <Char Tab >
+ <String `do not propagate mask'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2547>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2548>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `WINDOW'>
+ <Char Tab >
+ <String `root'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2549>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <String `x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2550>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `INT16'>
+ <Char Tab >
+ <String `y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2551>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `width'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2552>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `height'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2553>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `border width'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2554>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `depth'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2555>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2688>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `39382: Protocol: LbxGetWinAttrAndGeom'>
+ <XRefSrcFile `'>
+ <Unique 2686>
+ > # end of XRef
+ <String `page 19'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2689>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `17198: Encode-heading: GrabCmap'>
+ <MCurrPage 45>
+ <Unique 2712>
+ > # end of Marker
+ <String `LbxGrabCmap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2690>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2612>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `40'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2613>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2594>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2499>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2500>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If smart-grab is true, the reply is as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2501>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2355>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `#x80'>
+ <Char Tab >
+ <String `flags'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2356>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2357>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2361>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ <Char Tab >
+ >
+ > # end of Para
+ <Para
+ <Unique 2367>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2368>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `If smart-grab is false, the reply is as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2370>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 63>
+ >
+ > # end of Para
+ <Para
+ <Unique 2369>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2362>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Char Tab >
+ <String `flags (set of)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2363>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `#x40'>
+ <Char Tab >
+ <String `auto-release'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2372>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `#x20'>
+ <Char Tab >
+ <String `three-channels'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2373>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `#x10'>
+ <Char Tab >
+ <String `two-byte-pixels'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2374>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `lower four bits specifies bits-per-pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2371>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2364>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `L'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2352>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `m'>
+ <Char Tab >
+ <String `CHAN or CHANNELS'>
+ <Char Tab >
+ <String `cells (CHAN if !three-channels)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2377>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `pad(m)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2399>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2378>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CHANNELS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2380>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `a'>
+ <Char Tab >
+ <String `CHAN'>
+ <Char Tab >
+ <String `red'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2381>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `5'>
+ <Char Tab >
+ <Char Tab >
+ <String `next channel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2382>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `b'>
+ <Char Tab >
+ <String `CHAN'>
+ <Char Tab >
+ <String `green'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2383>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `5'>
+ <Char Tab >
+ <String `next channel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2387>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `c'>
+ <Char Tab >
+ <String `CHAN'>
+ <Char Tab >
+ <String `blue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2388>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `list end'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2389>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2390>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `CHAN'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2407>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `d'>
+ <Char Tab >
+ <String `LISTofLBXPIXEL'>
+ <Char Tab >
+ >
+ > # end of Para
+ <Para
+ <Unique 2414>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2415>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `LBXPIXEL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2416>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `e'>
+ <Char Tab >
+ <String `PIXELPRIVATE or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2422>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `PIXELPRIVATERANGE or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2421>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `PIXELALLOC or '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2427>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `PIXELALLOCRANGE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2431>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2432>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PIXELPRIVATE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2438>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `pixel-private'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2441>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2444>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2445>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PIXEL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2446>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `CARD8 or CARD16'>
+ <Char Tab >
+ <String `(CARD8 if !two-byte-pixels)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2448>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2449>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PIXELPRIVATERANGE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2451>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `pixel-private-range'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2452>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `fist-pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2453>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `last-pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2458>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2459>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `PIXELALLOC'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2464>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `3'>
+ <Char Tab >
+ <String `pixel-private'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2465>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2460>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `g'>
+ <Char Tab >
+ <String `COLORSINGLE or COLORTRIPLE'>
+ <Char Tab >
+ <String `color'>
+ <Char Tab >
+ <String ` (COLORSINGLE if three-channels)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2467>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2470>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `COLORSINGLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2471>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `h'>
+ <Char Tab >
+ <String `CARD8 or CARD16'>
+ <Char Tab >
+ <String `value (CARD8 '>
+ <Char Tab >
+ <String `if bits-per-rgb =< 7)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2473>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2474>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `COLORTRIPLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2475>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `h'>
+ <Char Tab >
+ <String `COLORSINGLE'>
+ <Char Tab >
+ <String `red'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2476>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `h'>
+ <Char Tab >
+ <String `COLORSINGLE'>
+ <Char Tab >
+ <String `green'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2477>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `h'>
+ <Char Tab >
+ <String `COLORSINGLE'>
+ <Char Tab >
+ <String `blue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2478>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2479>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 64>
+ <String `PIXELALLOCRANGE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2375>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `pixel-private'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2481>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `first-pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2483>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `f'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `last-pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2482>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `j'>
+ <Char Tab >
+ <String `LISTofCOLORSINGLE or '>
+ <Char Tab >
+ <String `color'>
+ <Char Tab >
+ <String ` (COLORSINGLE if three-channels)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2484>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Char Tab >
+ <String `LISTofCOLORTRIPLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2617>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `10922: Protocol: GrabCmap'>
+ <XRefSrcFile `'>
+ <Unique 2615>
+ > # end of XRef
+ <String `page 15'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2622>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `14796: Encode-heading: ReleaseCmap'>
+ <MCurrPage 47>
+ <Unique 2718>
+ > # end of Marker
+ <String `LbxReleaseCmap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2623>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2624>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `41'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2625>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2350>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `cmap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2629>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `34675: Protocol: ReleaseCmap'>
+ <XRefSrcFile `'>
+ <Unique 2627>
+ > # end of XRef
+ <String `page 17'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2634>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `28429: Encode-heading: AllocColor'>
+ <MCurrPage 47>
+ <Unique 2725>
+ > # end of Marker
+ <String `LbxAllocColor'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2635>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2636>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `42'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2637>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `5'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2344>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2345>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `pixel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2346>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `red'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2347>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `green'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2348>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <Char Tab >
+ <String `blue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2349>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2641>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `10446: Protocol: AllocColor'>
+ <XRefSrcFile `'>
+ <Unique 2639>
+ > # end of XRef
+ <String `page 17'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2649>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `21186: Encode-heading: LbxSync'>
+ <MCurrPage 47>
+ <Unique 2875>
+ > # end of Marker
+ <String `LbxSync'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2650>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2651>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `43'>
+ <Char Tab >
+ <String `lbx opcode'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2652>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2326>
+ <PgfTag `Encode-arrow'>
+ <ParaLine
+ <String `\xae '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2327>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `Reply'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2328>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2329>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2330>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `reply length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2339>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2656>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this request is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `30719: Protocol: Sync'>
+ <XRefSrcFile `'>
+ <Unique 2654>
+ > # end of XRef
+ <String `page 14'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716041>
+ <PgfTag `2Heading'>
+ <PgfNumString `6.3\t'>
+ <ParaLine
+ <String `Events'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716064>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `17348: Encode-heading: SwitchEvent'>
+ <MCurrPage 47>
+ <Unique 1973>
+ > # end of Marker
+ <String `LbxSwitchEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716066>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716069>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `0'>
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716070>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716071>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 65>
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716072>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2354>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `41814: Encode-heading: CloseEvent'>
+ <MCurrPage 48>
+ <Unique 1981>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `33748: Protocol: LbxSwitchEvent'>
+ <XRefSrcFile `'>
+ <Unique 2352>
+ > # end of XRef
+ <String `page 27'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716073>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxCloseEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716074>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716075>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `1'>
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716076>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716077>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716078>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2592>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `17292: Protocol: LbxCloseEvent'>
+ <XRefSrcFile `'>
+ <Unique 2590>
+ > # end of XRef
+ <String `page 27'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2595>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `34406: Encode-heading: InvalidateTagEvent'>
+ <MCurrPage 48>
+ <Unique 2539>
+ > # end of Marker
+ <String `LbxInvalidateTagEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2570>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716114>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `3'>
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716115>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716117>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716120>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `tag-type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716566>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeModmap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716567>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeKeymap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716568>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeProperty'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716569>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeFont'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716570>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `5'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeConnInfo'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716121>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2373>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `23016: Protocol: LbxInvalidateTagEvent'>
+ <XRefSrcFile `'>
+ <Unique 2371>
+ > # end of XRef
+ <String `page 27'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716126>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `22353: Encode-heading: SendTagDataEvent'>
+ <MCurrPage 48>
+ <Unique 2006>
+ > # end of Marker
+ <String `LbxSendTagDataEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716127>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716129>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `4'>
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716130>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716132>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `tag'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716133>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <Char Tab >
+ <String `tag-type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716554>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `3'>
+ <Char Tab >
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `LbxTagTypeProperty'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716134>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `20'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2382>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `18630: Encode-heading: ListenToOne'>
+ <MCurrPage 48>
+ <Unique 2014>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `20373: Protocol: LbxSendTagDataEvent'>
+ <XRefSrcFile `'>
+ <Unique 2380>
+ > # end of XRef
+ <String `page 27'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716135>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `LbxListenToOne'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716139>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716147>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `5'>
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716148>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716149>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `CARD32'>
+ <Char Tab >
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716172>
+ <PgfTag `Encode-literal'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ > # end of Font
+ <String `#xFFFFFFFF'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `a client not managed by the proxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716152>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2391>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ > # end of Font
+ <Marker
+ <MType 9>
+ <MText `30610: Encode-heading: ListenToAll'>
+ <MCurrPage 48>
+ <Unique 2022>
+ > # end of Marker
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `25209: Protocol: LbxListenToOne'>
+ <XRefSrcFile `'>
+ <Unique 2389>
+ > # end of XRef
+ <String `page 27'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716161>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <TextRectID 66>
+ <String `LbxListenToAll'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716162>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716164>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `6'>
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716165>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716167>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `28'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2400>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `11095: Protocol: LbxListenToAll'>
+ <XRefSrcFile `'>
+ <Unique 2398>
+ > # end of XRef
+ <String `page 28'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716175>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <String `Lbx'>
+ <Marker
+ <MType 9>
+ <MText `35213: Encode-heading: QuickMotionDeltaEvent'>
+ <MCurrPage 49>
+ <Unique 2031>
+ > # end of Marker
+ <String `QuickMotionDeltaEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716176>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 1'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716177>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `delta-time'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716178>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `INT8'>
+ <Char Tab >
+ <String `delta-x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716179>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `INT8'>
+ <Char Tab >
+ <String `delta-y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2409>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This event is not padded to 32 bytes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2708>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `40268: Protocol: LbxQuickMotionDeltaEvent'>
+ <XRefSrcFile `'>
+ <Unique 2407>
+ > # end of XRef
+ <String `page 28'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2625>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `35310: Encode-heading: MotionDeltaEvent'>
+ <MCurrPage 49>
+ <Unique 2039>
+ > # end of Marker
+ <String `LbxMotionDeltaEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2626>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2627>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `7'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2546>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `INT8'>
+ <Char Tab >
+ <String `delta-x'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2628>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `INT8'>
+ <Char Tab >
+ <String `delta-y'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2630>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `delta-time'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2631>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `delta-sequence'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2710>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This event is not padded to 32 bytes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2635>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `30033: Protocol: LbxMotionDeltaEvent'>
+ <XRefSrcFile `'>
+ <Unique 2633>
+ > # end of XRef
+ <String `page 28'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2639>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `14052: Encode-heading: ReleaseCmapEvent'>
+ <MCurrPage 49>
+ <Unique 2674>
+ > # end of Marker
+ <String `LbxReleaseCmapEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2640>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2664>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `8'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2551>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2671>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2688>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `24'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2649>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `19129: Protocol: ReleaseCmapEvent'>
+ <XRefSrcFile `'>
+ <Unique 2647>
+ > # end of XRef
+ <String `page 28'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716184>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `14731: Encode-heading: FreeCellsEvent'>
+ <MCurrPage 49>
+ <Unique 2687>
+ > # end of Marker
+ <String `LbxFreeCellsEvent'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716185>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `base + 0'>
+ <Char Tab >
+ <String `code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2691>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `9'>
+ <Char Tab >
+ <Char Tab >
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2559>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `CARD16'>
+ <Char Tab >
+ <String `sequence number'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2692>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `COLORMAP'>
+ <Char Tab >
+ <String `colormap'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2693>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `pixel start'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2699>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `4'>
+ <Char Tab >
+ <String `PIXEL'>
+ <Char Tab >
+ <String `pixel end'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2698>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `16'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2418>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this event is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `38041: Protocol: FreeCellsEvent'>
+ <XRefSrcFile `'>
+ <Unique 2416>
+ > # end of XRef
+ <String `page 28'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716032>
+ <PgfTag `2Heading'>
+ <PgfNumString `6.4\t'>
+ <ParaLine
+ <TextRectID 67>
+ <String `Re-encoding of X Events'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716033>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X protocol requires all X events to be 32 bytes. The LBX server reduces the number of bytes sent '>
+ >
+ <ParaLine
+ <String `between the server and the proxy for some X events by not appending unused pad bytes to the event data. '>
+ >
+ <ParaLine
+ <String `The offsets of X event data are unchanged. The proxy will pad the events to 32 bytes before passing them on '>
+ >
+ <ParaLine
+ <String `to the client.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716034>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX reencodes X event representations into the following sizes, if squishing is enabled:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 716035>
+ <PgfTag `#define'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `KeyOrButton'>
+ <Char Tab >
+ <Char Tab >
+ <String `32'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `EnterOrLeave'>
+ <Char Tab >
+ <Char Tab >
+ <String `32'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Keymap'>
+ <Char Tab >
+ <Char Tab >
+ <String `32'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Expose'>
+ <Char Tab >
+ <Char Tab >
+ <String `20'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `GraphicsExposure'>
+ <Char Tab >
+ <Char Tab >
+ <String `24'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `NoExposure'>
+ <Char Tab >
+ <Char Tab >
+ <String `12'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `VisibilityNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `12'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `CreateNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `24'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `DestroyNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `12'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `UnmapNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `16'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `MapNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `16'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `MapRequest'>
+ <Char Tab >
+ <Char Tab >
+ <String `12'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Reparent'>
+ <Char Tab >
+ <Char Tab >
+ <String `24'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `ConfigureNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `28'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `ConfigureRequest'>
+ <Char Tab >
+ <Char Tab >
+ <String `28'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `GravityNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `16'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `ResizeRequest'>
+ <Char Tab >
+ <Char Tab >
+ <String `12'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Circulate'>
+ <Char Tab >
+ <Char Tab >
+ <String `20'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Property'>
+ <Char Tab >
+ <String `Notify'>
+ <Char Tab >
+ <String `20'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `SelectionClear'>
+ <Char Tab >
+ <Char Tab >
+ <String `20'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `SelectionRequest'>
+ <Char Tab >
+ <Char Tab >
+ <String `28'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `SelectionNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `24'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Colormap'>
+ <Char Tab >
+ <String `Notify'>
+ <Char Tab >
+ <String `16'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `MappingNotify'>
+ <Char Tab >
+ <Char Tab >
+ <String `8'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `ClientMessage'>
+ <Char Tab >
+ <Char Tab >
+ <String `32'>
+ <Char HardReturn >
+ >
+ <ParaLine
+ <String `Unknown'>
+ <Char Tab >
+ <Char Tab >
+ <String `32'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2094>
+ <PgfTag `2Heading'>
+ <PgfNumString `6.5\t'>
+ <ParaLine
+ <String `Responses'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2085>
+ <PgfTag `Encode-heading'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `17100: Encode-heading: DeltaEvent'>
+ <MCurrPage 50>
+ <Unique 2084>
+ > # end of Marker
+ <String `LbxDeltaResponse'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2086>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `event_base + 0'>
+ <Char Tab >
+ <String `event code'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2730>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `2'>
+ <Char Tab >
+ <String `lbx type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2736>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2'>
+ <Char Tab >
+ <String `1+(2+2n+p)/4'>
+ <Char Tab >
+ <String `request length'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2737>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `count of diffs'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2738>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `cache index'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2739>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `2n'>
+ <Char Tab >
+ <String `LISTofDIFFITEM'>
+ <Char Tab >
+ <String `offsets and differences'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2740>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `p'>
+ <Char Tab >
+ <Char Tab >
+ <String `unused, p=pad(2n)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2427>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The description of this response is on '>
+ <XRef
+ <XRefName `Page'>
+ <XRefSrcText `34042: 1Heading: 6 Algorithm Naming'>
+ <XRefSrcFile `'>
+ <Unique 2425>
+ > # end of XRef
+ <String `page 29'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `HIDDEN'>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2877>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <TextRectID 69>
+ <Conditional
+ <InCondition `Q-Implementation'>
+ > # end of Conditional
+ <Marker
+ <MType 10>
+ <MText `-24440'>
+ <MCurrPage 0>
+ <Unique 2875>
+ > # end of Marker
+ <String `The request structure definition uses CARD32 and fid, not FONTABLE and font. Which is correct? '>
+ >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `=24440'>
+ <MCurrPage 0>
+ <Unique 2876>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2866>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-29128'>
+ <MCurrPage 0>
+ <Unique 2864>
+ > # end of Marker
+ <String `The implementation uses KeyCode, not KEYCODE, in the request structure definition.'>
+ <Marker
+ <MType 10>
+ <MText `=29128'>
+ <MCurrPage 0>
+ <Unique 2865>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2853>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-13814'>
+ <MCurrPage 0>
+ <Unique 2852>
+ > # end of Marker
+ <String `LZW-REPLY'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2855>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `CARD8'>
+ <Char Tab >
+ <String `request index of accepted lzw code size'>
+ <Marker
+ <MType 10>
+ <MText `=13814'>
+ <MCurrPage 0>
+ <Unique 2854>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2839>
+ <PgfTag `Body'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-27878'>
+ <MCurrPage 0>
+ <Unique 2838>
+ > # end of Marker
+ <String `If type-name is "lzw" the option-data is LZW-OPTION.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2840>
+ <PgfTag `Encode-type'>
+ <ParaLine
+ <String `LZW-OPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2841>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `1'>
+ <Char Tab >
+ <String `n'>
+ <Char Tab >
+ <String `count of lzw code sizes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2843>
+ <PgfTag `Encode-form'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `n'>
+ <Char Tab >
+ <String `LISTofCARD8'>
+ <Char Tab >
+ <String `array of lzw code sizes'>
+ <Marker
+ <MType 10>
+ <MText `=27878'>
+ <MCurrPage 0>
+ <Unique 2842>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2828>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-33719'>
+ <MCurrPage 0>
+ <Unique 2827>
+ > # end of Marker
+ <String `Since the proxy may have used these cells since they were freed, it should take this into account in '>
+ >
+ <ParaLine
+ <String `updating its colormap state.'>
+ <Marker
+ <MType 10>
+ <MText `=33719'>
+ <MCurrPage 0>
+ <Unique 2829>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2818>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-24590'>
+ <MCurrPage 0>
+ <Unique 2816>
+ > # end of Marker
+ <String `The count field is named diffs in the implementation.'>
+ <Marker
+ <MType 10>
+ <MText `=24590'>
+ <MCurrPage 0>
+ <Unique 2817>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2807>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-40141'>
+ <MCurrPage 0>
+ <Unique 2805>
+ > # end of Marker
+ <String `The type of cmap is COLORMAP in the specification and CARD32 in xLbxIncrementPixelReq. '>
+ <Marker
+ <MType 10>
+ <MText `=40141'>
+ <MCurrPage 0>
+ <Unique 2806>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2795>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-10668'>
+ <MCurrPage 0>
+ <Unique 2794>
+ > # end of Marker
+ <String `The type of the tag member in xLbxTagDataReq is XID. All other tag fields are typed to be '>
+ >
+ <ParaLine
+ <String `CARD32. Should the implementation be changed to CARD32?'>
+ <Marker
+ <MType 10>
+ <MText `=10668'>
+ <MCurrPage 0>
+ <Unique 2796>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2783>
+ <PgfTag `Body'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-35597'>
+ <MCurrPage 0>
+ <Unique 2782>
+ > # end of Marker
+ <String `Does the proxy check that the validity is True?'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2784>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `The file lbxstr.h has a question as to whether byte swapping information is also in the request. I '>
+ >
+ <ParaLine
+ <String `believe that comment can be deleted. There is byte swapping done according to the type of tagged '>
+ >
+ <ParaLine
+ <String `data before it is put on the wire.'>
+ <Marker
+ <MType 10>
+ <MText `=35597'>
+ <MCurrPage 0>
+ <Unique 2785>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2772>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-37891'>
+ <MCurrPage 0>
+ <Unique 2771>
+ > # end of Marker
+ <String `Extension writers need to register with LBX the information about their requests which generate '>
+ >
+ <ParaLine
+ <String `replies and their requests which may generate events. There are new interfaces in the server, '>
+ >
+ <ParaLine
+ <String `LbxRegisterExtensionGenerationMasks and LbxSetReqMask. I assume these are intended to be '>
+ >
+ <ParaLine
+ <String `used by a server extension integrator.'>
+ <Marker
+ <MType 10>
+ <MText `=37891'>
+ <MCurrPage 0>
+ <Unique 2773>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2760>
+ <PgfTag `Body'>
+ <ParaLine
+ <Conditional
+ <InCondition `Proposed'>
+ > # end of Conditional
+ <Marker
+ <MType 10>
+ <MText `-37732'>
+ <MCurrPage 0>
+ <Unique 2759>
+ > # end of Marker
+ <String `Does a client (maybe the browser) ever want to be able to find out the vendor, release, and vendor '>
+ >
+ <ParaLine
+ <String `release of the proxy? Do nested proxies affect this?'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2762>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `Does a client ever want to know if it\xd5 s currently going through one or more proxies?'>
+ <Marker
+ <MType 10>
+ <MText `=37732'>
+ <MCurrPage 0>
+ <Unique 2761>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2749>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Conditional
+ <InCondition `Q-Implementation'>
+ > # end of Conditional
+ <Marker
+ <MType 10>
+ <MText `-15710'>
+ <MCurrPage 0>
+ <Unique 2748>
+ > # end of Marker
+ <String `If the bad client id is contained in the error message, it must have been set by the Proc handling the '>
+ >
+ <ParaLine
+ <String `request in client-\>errorValue. There\xd5 s no evidence in the code that a bad client id is reported in the '>
+ >
+ <ParaLine
+ <String `error.'>
+ <Marker
+ <MType 10>
+ <MText `=15710'>
+ <MCurrPage 0>
+ <Unique 2750>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2736>
+ <PgfTag `2Heading'>
+ <PgfNumString `0.1\t'>
+ <ParaLine
+ <Conditional
+ <InCondition `Proposed'>
+ > # end of Conditional
+ <Marker
+ <MType 10>
+ <MText `-19943'>
+ <MCurrPage 0>
+ <Unique 2735>
+ > # end of Marker
+ <String `LBX Extension Protocol Pass-through by Proxy'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2737>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `For some network topologies, it may be desirable for an LBX proxy accept and process LBX proto'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `col from its clients. An LBX proxy is not, however, required to do so. If the proxy can not accept '>
+ >
+ <ParaLine
+ <String `LBX protocol from a client, then it should remove LBX entries from the X '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `ListExtensions'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `and '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `QueryExtension'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` replies sent to clients, and return '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `BadRequest'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` errors to LBX extension '>
+ >
+ <ParaLine
+ <String `requests received from clients.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2739>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `(It may be easier to have the server do the removal in the lbxListExensions request.)'>
+ <Marker
+ <MType 10>
+ <MText `=19943'>
+ <MCurrPage 0>
+ <Unique 2738>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2725>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Conditional
+ <InCondition `Q-Implementation'>
+ > # end of Conditional
+ <Marker
+ <MType 10>
+ <MText `-42243'>
+ <MCurrPage 0>
+ <Unique 2724>
+ > # end of Marker
+ <String `The message with the fewest number of differing bytes is selected. If the number of differences is '>
+ >
+ <ParaLine
+ <String `small enough and the resulting '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `X_LbxDelta'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message would not be longer than the original mes'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sage, the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `X_LbxDelta'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` message is sent in place of the original. T'>
+ <Marker
+ <MType 10>
+ <MText `=42243'>
+ <MCurrPage 0>
+ <Unique 2726>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2712>
+ <PgfTag `Extract'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-42157'>
+ <MCurrPage 0>
+ <Unique 2711>
+ > # end of Marker
+ <String `The XC-ZLIB compressor attempts to buffer up enough raw data to fill '>
+ >
+ <ParaLine
+ <String `out a complete block before actually compressing the data. This '>
+ >
+ <ParaLine
+ <String `improves compression efficiency. However, the XC-ZLIB buffers are '>
+ >
+ <ParaLine
+ <String `always flushed before the server/proxy goes to sleep to await more data. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2713>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `There should be a separate document formally specifying the ZLIB algorithm.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2715>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `The sample implementation should do version negotiation on ZLIB)'>
+ <Marker
+ <MType 10>
+ <MText `=42157'>
+ <MCurrPage 0>
+ <Unique 2714>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2691>
+ <PgfTag `Body'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-37100'>
+ <MCurrPage 0>
+ <Unique 2690>
+ > # end of Marker
+ <String `There are three possible ways to support short-circuiting:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2692>
+ <PgfTag `Bullet'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `fully correct protocol, which ensures that nothing can be out of order.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2693>
+ <PgfTag `Bullet'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `mostly correct protocol, where only errors can be out of order.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2694>
+ <PgfTag `Bullet'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `poor protocol, where events and errors can be out of order.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2695>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A smart client or test suite could send a request it knows will generate an event or error, followed '>
+ >
+ <ParaLine
+ <String `by an '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `InternAtom'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` request, and get the '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `InternAtom'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` reply before it gets the event.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2696>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Xlib hides this problem from most applications, so the \qpoor\q protocol can be sufficient. For a fully '>
+ >
+ <ParaLine
+ <String `safe environment, the proxy can be compiled to use any of the three forms (or no short-circuiting at '>
+ >
+ <ParaLine
+ <String `all). In no case do we allow replies to come back out of order. The proxy knows what can come '>
+ >
+ <ParaLine
+ <String `back from all the core requests -- for any extensions it assumes the worst case and expects a reply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2697>
+ <PgfTag `2Heading'>
+ <PgfNumString `0.2\t'>
+ <ParaLine
+ <String `Reply matching'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2698>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX needs to store information about certain requests to support both tags and short-circuiting. To '>
+ >
+ <ParaLine
+ <String `do this, it creates a Reply record for each request that can return a reply. Most of these are only used '>
+ >
+ <ParaLine
+ <String `as place holders, but for special requests data is stashed in them (e.g., '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `InternAtom'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` needs to save '>
+ >
+ <ParaLine
+ <String `the atom name, so it can store it with the returned Atom.)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2699>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Using the core protocol and Xlib, there is usually only one pending Reply record per client. One '>
+ >
+ <ParaLine
+ <String `common exception is caused by '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `XGetWindowAttributes'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String `, which sends two round trip '>
+ >
+ <ParaLine
+ <String `requests and then collects the results from both.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2700>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Test suites and interfaces other than Xlib may not follow this convention, and could result in a '>
+ >
+ <ParaLine
+ <String `number of pending Reply records.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2701>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <String `The worst case are extensions. If the proxy doesn\qt know about them, it must assume the worst case, '>
+ >
+ <ParaLine
+ <String `and create a Reply record for each extension request. These cannot be cleaned out until data comes '>
+ >
+ <ParaLine
+ <String `back from the server (event, error or reply), which allows the proxy to flush any Reply records with '>
+ >
+ <ParaLine
+ <String `older sequence numbers. This has the potential to eat a huge amount of proxy memory, if an exten'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sion issues a huge number of one-way requests. The proxy can limit this backlog by inserting lbx '>
+ >
+ <ParaLine
+ <String `sync requests.'>
+ <Marker
+ <MType 10>
+ <MText `=37100'>
+ <MCurrPage 0>
+ <Unique 2702>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2680>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <PgfCondFullPgf Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-19804'>
+ <MCurrPage 0>
+ <Unique 2679>
+ > # end of Marker
+ <String `The heuristics of property handling can be complex. Because '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `X_LbxChangeProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` is a '>
+ >
+ <ParaLine
+ <String `round-trip, it can take longer to use it than '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `X_ChangeProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` for some wires, especially if the '>
+ >
+ <ParaLine
+ <String `amount of property data is small. Using '>
+ <Font
+ <FTag `Protocol'>
+ > # end of Font
+ <String `X_LbxChangeProperty'>
+ <Font
+ <FTag `'>
+ > # end of Font
+ <String ` can also be a mistake for '>
+ >
+ <ParaLine
+ <String `ICCCM properties, if the window manager is not a proxy client.'>
+ <Marker
+ <MType 10>
+ <MText `=19804'>
+ <MCurrPage 0>
+ <Unique 2681>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2670>
+ <PgfTag `Body'>
+ <PgfEndCond Yes >
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-16436'>
+ <MCurrPage 0>
+ <Unique 2668>
+ > # end of Marker
+ <String `Currently two tag caches are used, one for properties and another for other data types.'>
+ <Marker
+ <MType 10>
+ <MText `=16436'>
+ <MCurrPage 0>
+ <Unique 2669>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1960>
+ <PgfTag `Body'>
+ <ParaLine
+ <Unconditional >
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/Xext/lbxalg.mif b/specs/Xext/lbxalg.mif
new file mode 100644
index 0000000..483e200
--- /dev/null
+++ b/specs/Xext/lbxalg.mif
@@ -0,0 +1,2690 @@
+<MIFFile 4.00> # Generated by FrameMaker xm4.0.3P1a
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+# Element Definitions
+# Elements
+#
+<Units Uin >
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow >
+ <ColorAttribute ColorIsReserved >
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CShown >
+ <CStyle CUnderline >
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 14.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Extract'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.75">
+ <PgfLIndent 1.25">
+ <PgfRIndent 0.75">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle RunIn >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Left >
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes >
+ <PgfNumFormat `T:Table <n+\>: '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes >
+ <PgfNextTag `Body'>
+ <PgfAlignment Center >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 24.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext Yes >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern Yes >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional >
+ <PgfLeading 6.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 0>
+ <PgfHyphenate No >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+> # end of PgfCatalog
+<ElementDefCatalog
+> # end of ElementDefCatalog
+<FontCatalog
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FAngle `Italic'>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Left >
+ <TblPlacement Anywhere >
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement InHeader >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center >
+ <PgfHyphenate No >
+ <PgfCellAlignment Middle >
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center >
+ <TblPlacement Anywhere >
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No >
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `Thin'>
+ <TblRRuling `'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No >
+ <TblTitlePlacement InHeader >
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No >
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[Title]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[Heading1]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 278 35 844 792 >
+ <DWindowRect 254 9 888 895 >
+ <DViewScale 140.0%>
+ <DNextUnique 119>
+ <DPageSize 8.5" 11.0">
+ <DStartPage 1>
+ <DPageNumStyle Arabic >
+ <DPagePointStyle Arabic >
+ <DTwoSides No >
+ <DParity FirstRight >
+ <DFrozenPages No >
+ <DPageRounding DeleteEmptyPages >
+ <DMaxInterLine 2.0 pt>
+ <DMaxInterPgf 6.0 pt>
+ <DFNoteMaxH 4.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage >
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic >
+ <DFNoteAnchorPos FNSuperscript >
+ <DFNoteNumberPos FNBaseline >
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `.\\t'>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha >
+ <DTblFNoteAnchorPos FNSuperscript >
+ <DTblFNoteNumberPos FNBaseline >
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `.\\t'>
+ <DLinebreakChars `/ - \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.25">
+ <DChBarWidth 2.0 pt>
+ <DChBarPosition LeftOfCol >
+ <DChBarColor `Black'>
+ <DAutoChBars No >
+ <DShowAllConditions Yes >
+ <DDisplayOverrides Yes >
+ <DViewOnly No >
+ <DViewOnlyXRef GotoBehavior >
+ <DViewOnlySelect Yes >
+ <DViewOnlyWinBorders Yes >
+ <DViewOnlyWinMenubar Yes >
+ <DViewOnlyWinPopup Yes >
+ <DViewOnlyWinPalette No >
+ <DGridOn No >
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.25>
+ <DRulersOn Yes >
+ <DFullRulers Yes >
+ <DGraphicsOff No >
+ <DCurrentView 1>
+ <DBordersOn Yes >
+ <DSymbolsOn No >
+ <DElementBordersOn No >
+ <DSmartQuotesOn Yes >
+ <DSmartSpacesOn No >
+ <DLanguage USEnglish >
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No >
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DElementCatalogScope Strict >
+ <DPrintSkipBlankPages Yes >
+ <DPrintSeparations No >
+> # end of Document
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+<OKWord `),'>
+<OKWord `<<'>
+<OKWord `\>\>'>
+<OKWord `Adler'>
+<OKWord `Colormap'>
+<OKWord `Gailly'>
+<OKWord `Pixmap'>
+<OKWord `RESCALE(x'>
+<OKWord `Zlib'>
+<OKWord `bitsPerRGB'>
+<OKWord `compflag'>
+<OKWord `pVisual'>
+<OKWord `prepended'>
+<OKWord `sigbits'>
+> # end of Dictionary
+<AFrames
+> # end of AFrames
+<Page
+ <Unique 94657>
+ <PageType LeftMasterPage >
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 1>
+ <Unique 105690>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 2>
+ <Unique 105688>
+ <Overprint No >
+ <ShapeRect 1.0" 10.40741" 6.5" 0.13889">
+ <BRect 1.0" 10.40741" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 3>
+ <Unique 105680>
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 94658>
+ <PageType RightMasterPage >
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextRect
+ <ID 4>
+ <Unique 105686>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 5>
+ <Unique 105684>
+ <Overprint No >
+ <ShapeRect 1.0" 10.40741" 6.5" 0.13889">
+ <BRect 1.0" 10.40741" 6.5" 0.13889">
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 6>
+ <Unique 105682>
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 94659>
+ <PageType ReferencePage >
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 94660>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 94661>
+ <Overprint No >
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 94662>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored >
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 37>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <HeadCap Square >
+ <TailCap Square >
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 94664>
+ <Overprint No >
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 94665>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored >
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 41>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 43>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 94668>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored >
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 46>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No >
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 94670>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No >
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored >
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 94671>
+ <Overprint No >
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left >
+ <TLLanguage USEnglish >
+ <String `TableFootnote'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 996720>
+ <PageType BodyPage >
+ <PageNum `1'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 7>
+ <Unique 105692>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 8>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 105777>
+ <PageType BodyPage >
+ <PageNum `2'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait >
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 8>
+ <Unique 105778>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid >
+ > # end of DashedPattern
+ <Overprint No >
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105691>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfUseNextTag No >
+ <PgfNextTag `'>
+ <PgfAlignment LeftRight >
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfTopSeparator `'>
+ <PgfBotSeparator `'>
+ <PgfPlacement Anywhere >
+ <PgfPlacementStyle Normal >
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No >
+ <PgfWithNext No >
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes >
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 2>
+ <HyphenMinSuffix 2>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No >
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish >
+ <PgfCellAlignment Top >
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No >
+ <PgfCellTMarginFixed No >
+ <PgfCellRMarginFixed No >
+ <PgfCellBMarginFixed No >
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 1>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105689>
+ <Pgf
+ <PgfTag `Footer'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 2>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105681>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 3>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105687>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfAlignment LeftRight >
+ <PgfSpAfter 0.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining >
+ <FUnderline No >
+ <FDoubleUnderline No >
+ <FNumericUnderline No >
+ <FOverline No >
+ <FStrike No >
+ <FChangeBar No >
+ <FOutline No >
+ <FShadow No >
+ <FPairKern No >
+ <FCase FAsTyped >
+ <FPosition FNormal >
+ <FSupScript No >
+ <FSubScript No >
+ <FDX 0.0 pt>
+ <FDY 0.0 pt>
+ <FDW 0.0 pt>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed >
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right >
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <HyphenMinPrefix 2>
+ <HyphenMinSuffix 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 4>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105685>
+ <Pgf
+ <PgfTag `Footer'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 5>
+ <String `$Xorg: lbxalg.mif,v 1.3 2000/08/17 19:42:36 cpqbld Exp $'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105683>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 6>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes >
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 105693>
+ <PgfTag `Title'>
+ <ParaLine
+ <TextRectID 7>
+ <String `LBX X Consortium Algorithms'>
+ >
+ > # end of Para
+ <Para
+ <Unique 118>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfAlignment Center >
+ > # end of Pgf
+ <ParaLine
+ <String `$Xorg: lbxalg.mif,v 1.3 2000/08/17 19:42:36 cpqbld Exp $'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105694>
+ <PgfTag `Heading1'>
+ <ParaLine
+ <String `Introduction'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105701>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The Low Bandwidth X extension allows for negotiating various algorithms used by LBX. This '>
+ >
+ <ParaLine
+ <String `document describes the algorithms used in the Consortium implementation of LBX in the X11 '>
+ >
+ <ParaLine
+ <String `Release 6.4. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 105695>
+ <PgfTag `Heading1'>
+ <ParaLine
+ <String `Streaming Compression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105723>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX negotiates the use of a stream compressor. The consortium implementation defines a stream '>
+ >
+ <ParaLine
+ <String `compressor named XC-ZLIB, which is based on the Zlib version 1.0 compression library by '>
+ >
+ <ParaLine
+ <String `Gailly & Adler.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105711>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The XC-ZLIB compressor is presented with a simple byte stream - the X and LBX message '>
+ >
+ <ParaLine
+ <String `boundaries are not apparent. The data is broken up into fixed sized blocks. Each block is com'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `pressed using zlib, then a two byte header is prepended, and then the entire packet is transmitted. '>
+ >
+ <ParaLine
+ <String `The header has the following information:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105718>
+ <PgfTag `Extract'>
+ <ParaLine
+ <Char Tab >
+ <String `out[0] (length & 0xfff) \>\> 8 | ((compflag) ? 0x80 : 0);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105721>
+ <PgfTag `Extract'>
+ <ParaLine
+ <Char Tab >
+ <String `out[1] = length & 0xff;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105858>
+ <PgfTag `Extract'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 105722>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `If the compflag is false, then the contents of the block are not compressed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105705>
+ <PgfTag `Heading1'>
+ <ParaLine
+ <String `Bitmap Compression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105727>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX also negotiates for bitmap compression. The consortium implementation defines a bitmap '>
+ >
+ <ParaLine
+ <String `compressor named XC-FaxG42D, which uses the CCITT Group 4 2D compression algorithm.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105729>
+ <PgfTag `Heading1'>
+ <ParaLine
+ <String `Pixmap Compression'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105739>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX allows for the negotiation of pixmap compression. The consortium implementation does not '>
+ >
+ <ParaLine
+ <String `define a pixmap compression algorithm. (A run-length encoding algorithm was proposed, but '>
+ >
+ <ParaLine
+ <String `experimentation proved it was less efficient than allowing the stream compressor to compress the '>
+ >
+ <ParaLine
+ <String `image.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105740>
+ <PgfTag `Heading1'>
+ <ParaLine
+ <String `Colormap Algorithm'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105749>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX negotiates for use of a colormap algorithm, used for color matching when the proxy allo'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `cates pixels in a grabbed colormap. The consortium implementation defines an algorithm named '>
+ >
+ <ParaLine
+ <String `XC-CMAP. This algorithm consists of three parts, resolving to a hardware color, finding the clos'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `est existing color, and what free cell to allocate.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 156>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The XC-CMAP algorithm resolves a color to a hardware color in the following manner:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105753>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `#define RESCALE(x, nbits) (x \>\> (16 - nbits)) * 65535 / ((1 << nbits) - 1)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 115>
+ <PgfTag `Extract'>
+ <ParaLine
+ <TextRectID 8>
+ <String `#define GRAY(r, g, b) (30L * r + 59L * g + 11L * b) / 100'>
+ >
+ > # end of Para
+ <Para
+ <Unique 116>
+ <PgfTag `Extract'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 117>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `sigbits = pVisual-\>bitsPerRGB;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 118>
+ <PgfTag `Extract'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 119>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `switch (pVisual-\>class) {'>
+ >
+ > # end of Para
+ <Para
+ <Unique 120>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `case PseudoColor:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 121>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `case DirectColor:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 122>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `case StaticColor:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 123>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` /* rescale to rgb bits */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 124>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *red = RESCALE(*red, sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 125>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *green = RESCALE(*green, sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 126>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *blue = RESCALE(*blue, sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 127>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` break;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 128>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `case GrayScale:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 129>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` /* rescale to gray then rgb bits */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 130>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *blue = *green = *red = RESCALE(GRAY(*red, *green, *blue), sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 131>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` break;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 132>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `case StaticGray:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 133>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` /* rescale to gray then [0..limg] then [0..65535] then rgb bits */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 134>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *blue = *green = *red = RESCALE(RESCALE(GRAY(*red, *green, *blue), '>
+ >
+ > # end of Para
+ <Para
+ <Unique 155>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` pVisual\>numPixelBits), sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 135>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` break;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 136>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `case TrueColor:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 137>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` /* rescale to [0..limN] then [0..65535] then rgb bits */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 138>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *red = RESCALE(RESCALE(*red, pVisual-\>numRedBits), sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 139>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *green = RESCALE(RESCALE(*green, pVisual-\>numGreenBits), sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 140>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` *blue = RESCALE(RESCALE(*blue, pVisual-\>numBlueBits), sigbits);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 141>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String ` break;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 142>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 176>
+ <PgfTag `Extract'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 165>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The XC-CMAP algorithm matches a color to an existing pixel in static visuals by finding the pixel '>
+ >
+ <ParaLine
+ <String `with the lowest color match error, computed as follows:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 167>
+ <PgfTag `Extract'>
+ <ParaLine
+ <String `error = errRed * errRed + errGreen * errGreen + errBlue * errBlue'>
+ >
+ > # end of Para
+ <Para
+ <Unique 173>
+ <PgfTag `Extract'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 166>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The XC-CMAP algorithm selects a free pixel to allocate by selecting the free pixel with the low'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `est index from the free pixels known to the proxy. For direct visuals, it uses the lowest free or '>
+ >
+ <ParaLine
+ <String `matching pixel subfield known to the proxy for each color.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 105818>
+ <PgfTag `Heading1'>
+ <ParaLine
+ <String `Extensions'>
+ >
+ > # end of Para
+ <Para
+ <Unique 130>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `LBX allows for extensions to LBX to enable additional compression or short-circuiting. The con'>
+ <Char SoftHyphen >
+ >
+ <ParaLine
+ <String `sortium implementation does not define any extensions to LBX.'>
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/Xext/mit-shm.ms b/specs/Xext/mit-shm.ms
new file mode 100644
index 0000000..fec9b10
--- /dev/null
+++ b/specs/Xext/mit-shm.ms
@@ -0,0 +1,351 @@
+.\" Use -ms
+.de Cs
+.IP
+.nf
+.ft C
+..
+.de Ce
+.ft P
+.fi
+..
+.de Bu
+.br
+.ti +.5i
+.ie \\n(.$ \\$1
+.el \\(bu
+..
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.TL
+\s+2\fBMIT-SHM\(emThe MIT Shared Memory Extension\fP\s-2
+.sp
+How the shared memory extension works
+.AU
+Jonathan Corbet
+.AI
+Atmospheric Technology Division
+National Center for Atmospheric Research
+corbet@ncar.ucar.edu
+.sp
+Formatted and edited for release 5 by
+.AU
+Keith Packard
+.AI
+MIT X Consortium
+.ps 9
+.nr PS 9
+.sp 8
+.AB
+This document briefly describes how to use the MIT-SHM shared memory
+extension. I have tried to make it accurate, but it would not surprise me
+if some errors remained. If you find anything wrong, do let me know and I
+will incorporate the corrections. Meanwhile, please take this document ``as
+is''\(eman improvement over what was there before, but certainly not the
+definitive word.
+.AE
+.LP
+.DS C
+Copyright \(co 1991 X Consortium
+.DE
+.sp 2
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 10
+.nr PS 10
+.bp 1
+.de PT
+.tl ''MIT Shared Memory Extension''
+..
+.de BT
+.tl ''\fB % \fP''
+..
+.NH 1
+REQUIREMENTS
+.LP
+The shared memory extension is provided only by some X servers. To find out
+if your server supports the extension, use xdpyinfo(1). In particular, to
+be able to use this extension, your system must provide the SYSV shared
+memory primitives. There is not an mmap-based version of this extension.
+To use shared memory on Sun systems, you must have built your kernel with
+SYSV shared memory enabled -- which is not the default configuration.
+Additionally, the shared memeory maximum size will need to be increased on
+both Sun and Digital systems; the defaults are far too small for any useful
+work.
+.NH 1
+WHAT IS PROVIDED
+.LP
+The basic capability provided is that of shared memory XImages. This is
+essentially a version of the ximage interface where the actual image data
+is stored in a shared memory segment, and thus need not be moved through
+the Xlib interprocess communication channel. For large images, use of this
+facility can result in some real performance increases.
+.LP
+Additionally, some implementations provided shared memory pixmaps. These
+are 2 dimensional arrays of pixels in a format specified by the X server,
+where the image data is stored in the shared memory segment. Through use of
+shared memory pixmaps, it is possible to change the contents of these
+pixmaps without using any Xlib routines at all. Shared memory pixmaps can
+only be supported when the X server can use regular virtual memory for
+pixmap data; if the pixmaps are stored in some magic graphics hardware, your
+application will not be able to share them with the server. Xdpyinfo(1)
+doesn't print this particular nugget of information.
+.NH 1
+HOW TO USE THE SHARED MEMORY EXTENSION
+.LP
+Code which uses the shared memory extension must include a number of header
+files:
+.Cs
+# include <X11/Xlib.h> /* of course */
+# include <sys/ipc.h>
+# include <sys/shm.h>
+# include <X11/extensions/XShm.h>
+.Ce
+.LP
+Of course, if the system you are building on does not support shared
+memory, the file XShm.h may not be present. You may want to make
+liberal use of #ifdefs.
+.LP
+Any code which uses the shared memory extension should first check to see
+that the server provides the extension. You could always be running over
+the net, or in some other environment where the extension will not work.
+To perform this check, call either
+.Cs
+Status XShmQueryExtension (display)
+ Display *display
+.Ce
+.LP
+or
+.Cs
+Status XShmQueryVersion (display, major, minor, pixmaps)
+ Display *display;
+ int *major, *minor;
+ Bool *pixmaps
+.Ce
+.LP
+Where ``display'' is, of course, the display on which you are running. If
+the shared memory extension may be used, the return value from either
+function will be True; otherwise your program should operate using
+conventional Xlib calls. When the extension is available,
+\fCXShmQueryVersion\fP also returns ``major'' and ``minor'' which are the
+version numbers of the extension implementation, and ``pixmaps'' which is
+True iff shared memory pixmaps are supported.
+.NH 1
+USE OF SHARED MEMORY XIMAGES
+.LP
+The basic sequence of operations for shared memory XImages is as follows:
+.LP
+.Bu "1 \-"
+Create the shared memory XImage structure
+.Bu "2 \-"
+Create a shared memory segment to store the image data
+.Bu "3 \-"
+Inform the server about the shared memory segment
+.Bu "4 \-"
+Use the shared memory XImage, much like a normal one.
+.LP
+To create a shared memory XImage, use:
+.Cs
+XImage *XShmCreateImage (display, visual, depth, format, data,
+ shminfo, width, height)
+ Display *display;
+ Visual *visual;
+ unsigned int depth, width, height;
+ int format;
+ char *data;
+ XShmSegmentInfo *shminfo;
+.Ce
+.LP
+Most of the arguments are the same as for XCreateImage; I will not go
+through them here. Note, however, that there are no ``offset'', ``bitmap_pad'',
+or ``bytes_per_line'' arguments. These quantities will be defined by the
+server itself, and your code needs to abide by them. Unless you have already
+allocated the shared memory segment (see below), you should pass in NULL for
+the ``data'' pointer.
+.LP
+There is one additional argument: ``shminfo'', which is a pointer to a
+structure of type XShmSegmentInfo. You must allocate one of these
+structures such that it will have a lifetime at least as long as that of
+the shared memory XImage. There is no need to initialize this structure
+before the call to XShmCreateImage.
+.LP
+The return value, if all goes well, will be an XImage structure, which you
+can use for the subsequent steps.
+.LP
+The next step is to create the shared memory segment. This is
+best done after the creation of the XImage, since you need to make use of
+the information in that XImage to know how much memory to allocate. To
+create the segment, you need a call like:
+.Cs
+shminfo.shmid = shmget (IPC_PRIVATE,
+ image->bytes_per_line * image->height, IPC_CREAT|0777);
+.Ce
+.LP
+(assuming that you have called your shared memory XImage ``image''). You
+should, of course, follow the Rules and do error checking on all of these
+system calls. Also, be sure to use the bytes_per_line field, not the width
+you used to create the XImage as they may well be different.
+.LP
+Note that the shared memory ID returned by the system is stored in the
+shminfo structure. The server will need that ID to attach itself to the
+segment.
+.LP
+Next, attach this shared memory segment to your process:
+.Cs
+shminfo.shmaddr = image->data = shmat (shminfo.shmid, 0, 0);
+.Ce
+.LP
+The address returned by shmat should be stored in *both* the XImage
+structure and the shminfo structure.
+.LP
+To finish filling in the shminfo structure, you need to decide how you want
+the server to attach to the shared memory segment, and set the ``readOnly''
+field as follows. Normally, you would code:
+.Cs
+shminfo.readOnly = False;
+.Ce
+.LP
+If you set it to True, the server will not be able to write to this
+segment, and thus XShmGetImage calls will fail.
+.LP
+Finally, tell the server to attach to your shared memory segment with:
+.Cs
+Status XShmAttach (display, shminfo);
+.Ce
+.LP
+If all goes well, you will get a non-zero status back, and your XImage is
+ready for use.
+.LP
+To write a shared memory XImage into an X drawable, use XShmPutImage:
+.Cs
+Status XShmPutImage (display, d, gc, image, src_x, src_y,
+ dest_x, dest_y, width, height, send_event)
+ Display *display;
+ Drawable d;
+ GC gc;
+ XImage *image;
+ int src_x, src_y, dest_x, dest_y;
+ unsigned int width, height;
+ bool send_event;
+.Ce
+.LP
+The interface is identical to that of XPutImage, so I will spare my fingers
+and not repeat that documentation here. There is one additional parameter,
+however, called ``send_event''. If this parameter is passed as True, the
+server will generate a ``completion'' event when the image write is complete;
+thus your program can know when it is safe to begin manipulating the shared
+memory segment again.
+.LP
+The completion event has type XShmCompletionEvent, which is defined as the
+following:
+.Cs
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed */
+ Bool send_event; /* true if came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable; /* drawable of request */
+ int major_code; /* ShmReqCode */
+ int minor_code; /* X_ShmPutImage */
+ ShmSeg shmseg; /* the ShmSeg used in the request */
+ unsigned long offset; /* the offset into ShmSeg used */
+} XShmCompletionEvent;
+.Ce
+.LP
+The event type value that will be used can be determined at run time with a
+line of the form:
+.Cs
+int CompletionType = XShmGetEventBase (display) + ShmCompletion;
+.Ce
+.LP
+If you modify the shared memory segment before the arrival of the
+completion event, the results you see on the screen may be inconsistent.
+.LP
+To read image data into a shared memory XImage, use the following:
+.Cs
+Status XShmGetImage (display, d, image, x, y, plane_mask)
+ Display *display;
+ Drawable d;
+ XImage *image;
+ int x, y;
+ unsigned long plane_mask;
+.Ce
+.LP
+Where ``display'' is the display of interest, ``d'' is the source drawable,
+``image'' is the destination XImage, ``x'' and ``y'' are the offsets within
+``d'', and ``plane_mask'' defines which planes are to be read.
+.LP
+To destroy a shared memory XImage, you should first instruct the server to
+detach from it, then destroy the segment itself, as follows:
+.Cs
+XShmDetach (display, shminfo);
+XDestroyImage (image);
+shmdt (shminfo.shmaddr);
+shmctl (shminfo.shmid, IPC_RMID, 0);
+.Ce
+.NH 1
+USE OF SHARED MEMORY PIXMAPS
+.LP
+Unlike X images, for which any image format is usable, the shared memory
+extension supports only a single format (i.e. XYPixmap or ZPixmap) for the
+data stored in a shared memory pixmap. This format is independent of the
+depth of the image (for 1-bit pixmaps it doesn't really matter what this
+format is) and independent of the screen. Use XShmPixmapFormat to get the
+format for the server:
+.Cs
+int XShmPixmapFormat (display)
+ Display *display;
+.Ce
+.LP
+If your application can deal with the server pixmap data format (including
+bits-per-pixel et al.), create a shared memory segment and ``shminfo''
+structure in exactly the same way as is listed above for shared memory
+XImages. While it is, not strictly necessary to create an XImage first,
+doing so incurs little overhead and will give you an appropriate
+bytes_per_line value to use.
+.LP
+Once you have your shminfo structure filled in, simply call:
+.Cs
+Pixmap XShmCreatePixmap (display, d, data, shminfo, width,
+ height, depth);
+ Display *display;
+ Drawable d;
+ char *data;
+ XShmSegmentInfo *shminfo;
+ unsigned int width, height, depth;
+.Ce
+.LP
+The arguments are all the same as for XCreatePixmap, with two additions:
+``data'' and ``shminfo''. The second of the two is the same old shminfo
+structure that has been used before. The first is the pointer to the shared
+memory segment, and should be the same as the shminfo.shmaddr field. I am
+not sure why this is a separate parameter.
+.LP
+If everything works, you will get back a pixmap, which you can manipulate in
+all of the usual ways, with the added bonus of being able to tweak its
+contents directly through the shared memory segment. Shared memory pixmaps
+are destroyed in the usual manner with XFreePixmap, though you should detach
+and destroy the shared memory segment itself as shown above.
diff --git a/specs/Xext/record.ms b/specs/Xext/record.ms
new file mode 100644
index 0000000..e536382
--- /dev/null
+++ b/specs/Xext/record.ms
@@ -0,0 +1,1471 @@
+.\" Record Extension Protocol, v1.13
+.\" Use tbl, -ms and macros.t
+.\" $Xorg: record.ms,v 1.3 2000/08/17 19:42:36 cpqbld Exp $
+.\" -----------------------------------------------
+.de Ip
+.IP \(bu 3
+..
+.de sC \" start change (gildea). arg is issue number
+.mc \s+5\(br\s0\" \" make tall enough to span paragraph skip
+.if !^\\$1^^ \{\
+'sp -1
+.lt +\w'000'u+\w'\s-2\&\\$1\s0'u
+.tl !!!\v'\n(.vu'\s-2\&\\$1\s0!
+.lt -\w'000'u+\w'\s-2\&\\$1\s0'u
+.\}
+..
+.de eC \" end change
+.if \\n(.u .mc \s+5\(br\s0\" ensure it appears on the last line
+.mc
+..
+.hw RECORD-RANGE
+.hw XTest-Fake-Input
+.hw Button-Release Motion-Notify Record-Disable-Context
+.\"
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.fi
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 50
+\s+3\fBRecord Extension Protocol Specification\fP\s-3
+.sp
+\fBVersion 1.13\fP
+.sp
+\fBX Consortium Standard\fP
+.sp
+\fBX Version 11, Release 6.4\fP
+.sp 6
+Martha Zimet
+Network Computing Devices, Inc.
+.sp 6
+edited by
+Stephen Gildea
+X Consortium
+.ce 0
+.bp
+.br
+\&
+.sp 13
+.ps 9
+.nr PS 9
+.fi
+.LP
+Copyright \(co 1994 Network Computing Devices, Inc.
+.LP
+Permission to use, copy, modify, distribute, and sell this
+documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice and this permission
+notice appear in all copies. Network Computing Devices, Inc.
+makes no representations about the suitability for any purpose
+of the information in this document. This documentation is
+provided \*Qas is\*U without express or implied warranty.
+.LP
+Copyright \(co 1994, 1995 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+\*QSoftware\*U), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED \*QAS IS\*U, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium and
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from the X Consortium.
+.ps 11
+.nr PS 11
+.P1
+.nr LL 6.5i
+.nr LT 6.5i
+.nr FL 6.5i
+.ll 6.5i
+.EH '\fBRecord Extension Protocol, Version 1.13\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX11, Release 6.4\fP''\fBRecord Extension Protocol, Version 1.13\fP'
+.bp 1
+.EF ''\fB\\\\n(PN\fP''
+.OF ''\fB\\\\n(PN\fP''
+.hy 14
+
+.NH 1
+Introduction
+.XS
+\*(SN Introduction
+.XE
+.LP
+Several proposals have been written over the past few years that address some
+of the issues surrounding the recording and playback of user actions
+in the X Window System\**:
+.FS
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.FE
+.Ip
+\fISome Proposals for a Minimal X11 Testing Extension\fP,
+Kieron Drake, UniSoft Ltd., April 1991
+.Ip
+\fIX11 Input Synthesis Extension Proposal\fP, Larry Woestman,
+Hewlett Packard, November 1991
+.Ip
+\fIXTrap Architecture\fP, Dick Annicchiario, et al, Digital Equipment Corporation,
+July 1991
+.Ip
+\fIXTest Extension Recording Specification\fP, Yochanan Slonim,
+Mercury Interactive, December 1992
+.LP
+This document both unifies and extends the previous diverse approaches
+to generate a proposal for an X extension that provides support for
+the recording of all core X protocol and arbitrary extension protocol.
+Input synthesis, or playback, has already been implemented in the
+XTest extension, an X Consortium standard. Therefore, this extension
+is limited to recording.
+.LP
+In order to provide both record and playback functionality, a
+hypothetical record application could use this extension to capture
+both user actions and their consequences. For example, a button press
+(a user action) may cause a window to be mapped and a corresponding
+.PN MapNotify
+event to be sent (a consequence). This information could be
+stored for later use by a playback application.
+.LP
+The playback application could use the recorded actions as input for
+the XTest extension's
+.PN XTestFakeInput
+operation to synthesize the
+appropriate input events. The \*Qconsequence\*U or synchronization
+information is then used as a synchronization point during playback.
+That is, the playback application does not generate specific
+synthesized events until their matching synchronization condition
+occurs. When the condition occurs the processing of synthesized
+events continues. Determination that the condition has occurred may be
+made by capturing the consequences of the synthesized events and
+comparing them to the previously recorded synchronization information.
+For example, if a button press was followed by a
+.PN MapNotify
+event on a
+particular window in the recorded data, the playback application might
+synthesize the button press then wait for the
+.PN MapNotify
+event on the
+appropriate window before proceeding with subsequent synthesized
+input.
+.LP
+Because
+it is impossible to predict what synchronization information will be
+required by a particular application, the extension provides
+facilities to record any subset of core X protocol and arbitrary
+extension protocol.
+As such, this extension does not enforce a specific
+synchronization methodology; any method based on information in the X
+protocol stream (e.g., watching for window mapping/unmapping, cursor
+changes, drawing of certain text strings, etc.) can capture the
+information it needs using RECORD facilities.
+.NH 2
+Acknowledgements
+.XS
+\*(SN Acknowledgements
+.XE
+.LP
+The document represents the culmination of two years of debate and
+experiments done under the auspices of the X Consortium xtest working
+group. Although this was a group effort, the author remains
+responsible for any errors or omissions.
+Two years ago, Robert Chesler of Absol-puter, Kieron Drake of UniSoft
+Ltd., Marc Evans of Synergytics and Ken Miller of Digitial shared the
+vision of a standard extension for recording and were all instrumental
+in the early protocol development. During the last two years, Bob
+Scheifler of the X Consortium and Jim Fulton of NCD continuously
+provided input to the protocol design, as well as encouragement to the
+author. In the last few months, Stephen Gildea and Dave Wiggins,
+both X Consortium staff, have spent considerable time fine tuning the
+protocol design and reviewing the protocol specifications. Most
+recently, Amnon Cohen of Mercury Interactive has assisted in
+clarification of the recorded event policy, and Kent Siefkes of
+Performance Awareness has assisted in clarification of the timestamp
+policy.
+.ne 1.5i
+.NH 2
+Goals
+.XS
+\*(SN Goals
+.XE
+.LP
+.RS
+.Ip
+To provide a standard for recording,
+whereby both device events and synchronization information in the
+form of device event consequences are recorded.
+.Ip
+To record contextual information used in synchronized playback
+without prior knowledge of the application
+that
+is being recorded.
+.Ip
+To provide the ability to record arbitrary X protocol extensions.
+.RE
+.NH 2
+Requirements
+.XS
+\*(SN Requirements
+.XE
+.LP
+The extension should function as follows:
+.RS
+.Ip
+It should
+not be dependent on other clients or extensions for its operation.
+.Ip
+It should
+not significantly impact performance.
+.Ip
+It should
+support the recording of all device input (core devices and XInput devices).
+.Ip
+It should
+be extendible.
+.Ip
+It should
+support the recording of synchronization information for user events.
+.RE
+
+.NH 1
+Design
+.XS
+\*(SN Design
+.XE
+.LP
+This section gives an overview of the RECORD extension and discusses
+its overall operation and data types.
+
+.NH 2
+Overview
+.XS
+\*(SN Overview
+.XE
+.LP
+The mechanism used by this extension for recording is to intercept
+core X protocol and arbitrary X extension protocol entirely within the X server
+itself. When the extension has been requested to intercept specific
+protocol by one or more clients, the protocol data are formatted and
+returned to the recording clients.
+.LP
+The extension provides a mechanism for capturing all events, including
+input device events that go to no clients, that is analogous to a client
+expressing \*Qinterest\*U in all events in all windows, including the root
+window. Event filtering in the extension provides a mechanism for feeding
+device events to recording clients; it does not provide a mechanism for in-place,
+synchronous event substitution, modification, or withholding.
+In addition, the
+extension does not provide data compression before intercepted protocol
+is returned to the recording clients.
+.NH 3
+Data Delivery
+.XS
+\*(SN Data Delivery
+.XE
+.LP
+Because
+events are limited in size to
+32 bytes, using events to return intercepted protocol data to recording
+clients is prohibitive in terms of performance. Therefore, intercepted
+protocol data are returned to recording clients through multiple replies
+to the extension request to begin protocol interception and reporting.
+This utilization is consistent with
+.PN ListFontsWithInfo ,
+for example, where a
+single request has multiple replies.
+.LP
+Individual requests, replies, events or errors intercepted by the extension
+on behalf of recording clients cannot be split across reply packets. In order
+to reduce overhead, multiple intercepted requests, replies, events and errors
+might be collected
+into a single reply.
+Nevertheless, all data are returned to the client in a timely manner.
+.NH 3
+Record Context
+.XS
+\*(SN Record Context
+.XE
+.LP
+The extension adds a record context resource (RC)
+to the set of resources managed by the server. All the
+extension operations take an RC as an argument. Although the protocol
+permits sharing of RCs between clients, it is expected that clients will
+use their own RCs. The attributes used in extension operations are stored
+in the RCs, and these attributes include the protocol and clients to
+intercept.
+.LP
+The terms \*Qregister\*U and \*Qunregister\*U are used to describe the
+relationship between clients to intercept and the RC. To register
+a client with an RC means the client is added to the list
+of clients to intercept; to unregister a client means the client
+is deleted from the list of clients to intercept. When the
+server is requested to register or unregister clients from an RC,
+it is required to do so immediately. That is, it is not permissible for
+the server to wait until recording is enabled to register clients
+or recording is disabled to unregister clients.
+.NH 3
+Record Client Connections
+.XS
+\*(SN Record Client Connections
+.XE
+.LP
+The typical communication model for a recording client is to open
+two connections to the server and use one for RC control and
+the other for reading protocol data.
+.LP
+The \*Qcontrol\*U connection can execute requests to obtain information about
+the supported protocol version, create and destroy RCs, specify protocol
+types to intercept and clients to be recorded, query the current state
+of an RC, and to stop interception and reporting of protocol data. The
+\*Qdata\*U connection can execute a request to
+enable interception
+and reporting of specified protocol for a particular RC. When the
+\*Qenable\*U request is issued, intercepted protocol is sent back on the
+same connection, generally in more than one reply packet. Until the last
+reply to the \*Qenable\*U request is sent by the server, signifying that
+the request execution is complete, no other requests will be executed by
+the server on that connection. That is, the connection that data are being
+reported on cannot issue the \*Qdisable\*U request until the last reply
+to the \*Qenable\*U request is sent by the server. Therefore, unless a
+recording client never has the need to disable the interception and reporting
+of protocol data, two client connections are necessary.
+.NH 3
+Events
+.XS
+\*(SN Events
+.XE
+.LP
+The terms \*Qdelivered events\*U and \*Qdevice events\*U are used
+to describe the two event classes recording clients may
+select for interception. These event classes are handled differently
+by the extension. Delivered events are core X events or X extension events
+the server actually delivers to one or more clients. Device events are
+events generated by core X devices or extension input devices that the
+server may or may not deliver to any clients. When device events
+are selected for interception by a recording client, the extension
+guarantees each device event is recorded and will be forwarded
+to the recording client in the same order it is generated by the
+device.
+.LP
+The recording of selected device events is not affected
+by server grabs. Delivered events, on the other hand, can be affected
+by server grabs.
+If a recording client selects both
+a device event and delivered events that result from that device
+event, the delivered events are recorded after the device event.
+In the absence of grabs, the delivered events for a
+device event precede later device events.
+.LP
+Requests that have side effects on
+devices, such as
+.PN WarpPointer
+and
+.PN GrabPointer
+with a confine-to window,
+will cause RECORD to record an associated device event.
+The XTEST extension request
+.PN XTestFakeInput
+causes a device event to be recorded; the
+device events are recorded in the same order that the
+.PN XTestFakeInput
+requests are received by the server.
+.LP
+If a key autorepeats, multiple
+.PN KeyPress
+and
+.PN KeyRelease
+device events are reported.
+.NH 3
+Timing
+.XS
+\*(SN Timing
+.XE
+.LP
+Requests are recorded just before
+they are executed; the time associated with a request is the server
+time when it is recorded.
+
+.ne 1.5i
+.NH 2
+Types
+.XS
+\*(SN Types
+.XE
+.sp
+.LP
+The following new types are used in the request definitions that appear
+in section 3.
+.LP
+.TS
+tab(@);
+l l.
+RC:@CARD32
+.TE
+.LP
+The
+.PN "RC"
+type is a resource identifier for a server record context.
+.LP
+.TS
+tab(@);
+l l l.
+RANGE8:@\s+2[\s0\fIfirst\fP, \fIlast\fP\^:@CARD8\s+2]\s0
+RANGE16:@\s+2[\s0\fIfirst\fP, \fIlast\fP\^:@CARD16\s+2]\s0
+EXTRANGE:@\s+2[\s0\fImajor\fP\^:@RANGE8
+@\fIminor\fP\^:@RANGE16\s+2]\s0
+.TE
+.LP
+.TS
+tab(@);
+l l l.
+RECORDRANGE:@\s+2[\s0\fIcore-requests\fP\^:@RANGE8
+@\fIcore-replies\fP\^:@RANGE8
+@\fIext-requests\fP\^:@EXTRANGE
+@\fIext-replies\fP\^:@EXTRANGE
+@\fIdelivered-events\fP\^:@RANGE8
+@\fIdevice-events\fP\^:@RANGE8
+@\fIerrors\fP\^:@RANGE8
+@\fIclient-started\fP\^:@BOOL
+@\fIclient-died\fP\^:@BOOL\s+2]\s0
+.TE
+.LP
+The
+.PN "RECORDRANGE"
+structure contains the protocol values to intercept. Typically,
+this structure is sent by recording clients over the control connection
+when creating or modifying an RC.
+.IP \fIcore-requests\fP
+.IN "core-requests"
+.br
+Specifies core X protocol requests with an opcode field between \fIfirst\fP
+and \fIlast\fP inclusive. If \fIfirst\fP is equal to 0 and \fIlast\fP is equal to 0, no
+core requests are specified by this RECORDRANGE. If \fIfirst\fP is greater
+than \fIlast\fP, a
+.PN "Value"
+error results.
+.IP \fIcore-replies\fP
+.IN "core-replies"
+.br
+Specifies replies resulting from core X protocol requests with an opcode
+field between \fIfirst\fP and \fIlast\fP inclusive. If \fIfirst\fP is equal to 0 and \fIlast\fP
+is equal to 0, no core replies are specified by this RECORDRANGE. If
+\fIfirst\fP is greater than \fIlast\fP, a
+.PN "Value"
+error results.
+.IP \fIext-requests\fP
+.IN "ext-requests"
+.br
+Specifies extension protocol requests with a major opcode field between
+\fImajor.first\fP and \fImajor.last\fP and a minor opcode field between \fIminor.first\fP
+and \fIminor.last\fP inclusive.
+If \fImajor.first\fP and \fImajor.last\fP are equal to 0, no
+extension protocol requests are specified by this RECORDRANGE. If
+\fImajor.first\fP or \fImajor.last\fP is less than 128 and greater than 0,
+if \fImajor.first\fP is greater than \fImajor.last\fP,
+or if \fIminor.first\fP
+is greater than \fIminor.last\fP, a
+.PN "Value"
+error results.
+.IP \fIext-replies\fP
+.IN "ext-replies"
+.br
+Specifies replies resulting from extension protocol requests with a
+major opcode field between \fImajor.first\fP and \fImajor.last\fP and
+a minor opcode field between \fIminor.first\fP and \fIminor.last\fP
+inclusive. If \fImajor.first\fP and \fImajor.last\fP are equal to 0,
+no extension protocol replies are specified by this RECORDRANGE. If
+\fImajor.first\fP or \fImajor.last\fP is less than 128 and greater
+than 0,
+if \fImajor.first\fP is greater than \fImajor.last\fP,
+or if \fIminor.first\fP is greater than \fIminor.last\fP, a
+.PN "Value"
+error results.
+.IP \fIdelivered-events\fP
+.IN "delivered-events"
+.br
+This is used for both core X protocol events and arbitrary extension
+events. Specifies events that are delivered to at least one client
+that have a code field between \fIfirst\fP and \fIlast\fP
+inclusive. If \fIfirst\fP is equal to 0 and \fIlast\fP is equal to 0,
+no events are specified by this RECORDRANGE.
+Otherwise, if \fIfirst\fP is less than 2
+or \fIlast\fP is less than 2, or if
+\fIfirst\fP is greater than \fIlast\fP, a
+.PN "Value"
+error results.
+.IP \fIdevice-events\fP
+.IN "device-events"
+.br
+This is used for both core X device events and X extension device
+events that may or may not be delivered to a client.
+Specifies device events that have a code field between \fIfirst\fP and
+\fIlast\fP inclusive. If \fIfirst\fP is equal to 0 and \fIlast\fP
+is equal to 0, no device events are specified by this RECORDRANGE.
+Otherwise,
+if \fIfirst\fP is less than 2 or \fIlast\fP is less
+than 2, or if \fIfirst\fP is greater than \fIlast\fP, a
+.PN "Value"
+error results.
+.IP
+Because
+the generated device event may or may not be associated with a
+client, unlike other RECORDRANGE components, which select protocol for a
+specific client, selecting for device events in any RECORDRANGE in an RC
+causes the recording client to receive one instance for each device event
+generated that is in the range specified.
+.IP \fIerrors\fP
+.IN "errors"
+.br
+This is used for both core X protocol errors and arbitrary extension
+errors. Specifies errors that have a code field between \fIfirst\fP and
+\fIlast\fP inclusive. If \fIfirst\fP is equal to 0 and \fIlast\fP is equal to 0, no
+errors are specified by this RECORDRANGE. If \fIfirst\fP is greater
+than \fIlast\fP, a
+.PN "Value"
+error results.
+.IP \fIclient-started\fP
+.IN "client-started"
+.br
+Specifies the connection setup reply.
+If
+.PN False ,
+the connection setup reply is not specified by
+this RECORDRANGE.
+.IP \fIclient-died\fP
+.IN "client-died"
+.br
+Specifies notification when a client disconnects.
+If
+.PN False ,
+notification when a client disconnects is not specified by
+this RECORDRANGE.
+.LP
+.TS
+tab(@);
+l l l.
+ELEMENT_HEADER:@\s+2[\s0\fIfrom-server-time\fP\^:@BOOL
+@\fIfrom-client-time\fP\^:@BOOL
+@\fIfrom-client-sequence\fP\^:@BOOL\s+2]\s0
+.TE
+.LP
+The
+.PN ELEMENT_HEADER
+structure specifies additional data that precedes each protocol
+element in the \fIdata\fP field of a
+.PN RecordEnableContext
+reply.
+.Ip
+If \fIfrom-server-time\fP is
+.PN True ,
+each intercepted protocol element
+with category
+.PN FromServer
+is preceded by the server time when the protocol was recorded.
+.Ip
+If \fIfrom-client-time\fP is
+.PN True ,
+each intercepted protocol element
+with category
+.PN FromClient
+is preceded by the server time when the protocol was recorded.
+.Ip
+If \fIfrom-client-sequence\fP is
+.PN True ,
+each intercepted protocol
+element with category
+.PN FromClient
+or
+.PN ClientDied
+is preceded by the
+32-bit sequence number of the recorded client's most recent request
+processed by the server at that time.
+For
+.PN FromClient ,
+this will be one less than the sequence number of the
+following request.
+For
+.PN ClientDied ,
+the sequence number will be the only data, because no
+protocol is recorded.
+.LP
+Note that a reply containing device events is treated the same as
+other replies with category
+.PN FromServer
+for purposes of these flags.
+Protocol with category
+.PN FromServer
+is never preceded by a sequence
+number because almost all such protocol has a sequence number in it anyway.
+.LP
+If both a server time and a sequence number have been requested for a
+reply, each protocol request is
+preceded first by the time and second by the sequence number.
+.LP
+.TS
+tab(@);
+l l.
+XIDBASE:@CARD32
+.TE
+.LP
+The XIDBASE type is used to identify a particular client. Valid
+values are any existing resource identifier
+of any connected client,
+in which case the client
+that created the resource is specified, or the resource identifier
+base sent to the target client from the server in the connection setup
+reply. A value of 0 (zero) is valid when the XIDBASE is associated
+with device events that may not have been delivered to a client.
+.LP
+.TS
+tab (@) ;
+l l l.
+CLIENTSPEC:@XIDBASE or \s+2{\s0\fBCurrentClients\fP, \fBFutureClients\fP, \fBAllClients\fP\s+2}\s0
+.TE
+.LP
+The CLIENTSPEC type defines the set of clients the RC attributes are
+associated with. This type is used by recording clients when creating
+an RC or when changing RC attributes. XIDBASE specifies that the RC
+attributes apply to a single client only.
+.PN CurrentClients
+specifies
+that the RC attributes apply to current client connections;
+.PN FutureClients
+specifies future client connections;
+.PN AllClients
+specifies all client connections, which includes current and future.
+.LP
+The numeric values for
+.PN CurrentClients ,
+.PN FutureClients
+and
+.PN AllClients
+are
+defined such that there will be no intersection with valid XIDBASEs.
+.LP
+When the context is enabled, the data connection is unregistered if it
+was registered.
+If the context is enabled,
+.PN CurrentClients
+and
+.PN AllClients
+silently exclude the recording data connection.
+It is an error to explicitly register the data connection.
+.LP
+.KS
+.TS
+tab (@) ;
+l l l.
+CLIENT_INFO\^:@\s+2[\s0\fIclient-resource\fP\^:@CLIENTSPEC
+@\fIintercepted-protocol\fP\^:@LISTofRECORDRANGE\s+2]\s0
+.TE
+.KE
+.LP
+This structure specifies an intercepted client and the protocol to be
+intercepted for the client. The \fIclient-resource\fP field is a
+resource base that identifies the intercepted client. The
+\fIintercepted-protocol\fP field specifies the protocol to intercept
+for the \fIclient-resource\fP.
+
+.NH 2
+Errors
+.LP
+.IP \fBRecordContext\fP
+.IN RecordContext
+.br
+This error is returned if the value for an RC argument
+in a request does not name a defined record context.
+
+.NH 1
+Protocol Requests
+.XS
+\*(SN Protocol Requests
+.XE
+.sp
+.LP
+.PN "RecordQueryVersion"
+.TA .75i
+.ta .75i
+.IP
+\fImajor-version\fP, \fIminor-version\fP\^: CARD16
+.LP
+\(->
+.IP
+\fImajor-version\fP, \fIminor-version\fP\^: CARD16
+.LP
+This request specifies the RECORD extension protocol version the client
+would like to use. When the specified protocol version is supported
+by the extension, the protocol version the server expects from the
+client is returned. Clients must use this request before other RECORD
+extension requests.
+.LP
+This request also determines whether or not the RECORD extension protocol
+version specified by the client is supported by the extension. If the
+extension supports the version specified by the client, this version number
+should be returned. If the client has requested a higher version than is
+supported by the server, the server's highest version should be returned.
+Otherwise, if the client has requested a lower version than is supported
+by the server, the server's lowest version should be returned. This document
+defines major version one (1),
+minor version thirteen (13).
+.LP
+.PN "RecordCreateContext"
+.TA .75i
+.ta .75i
+.IP
+\fIcontext\fP\^: RC
+.IP
+\fIelement-header\fP\^: ELEMENT_HEADER
+.IP
+\fIclient-specifiers\fP\^: LISTofCLIENTSPEC
+.IP
+\fIranges\fP\^: LISTofRECORDRANGE
+.br
+.IP
+Errors:
+.PN Match ,
+.PN Value ,
+.PN IDChoice ,
+.PN Alloc
+.LP
+This request creates a new
+record context
+within the server and assigns the identifier \fIcontext\fP to
+it. After the \fIcontext\fP is created, this request registers the
+set of clients in \fIclient-specifiers\fP with the \fIcontext\fP and
+specifies the protocol to intercept for those clients.
+The recorded protocol elements will be preceded by data as specified
+by \fIelement-header\fP.
+Typically,
+this request is used by a recording client over the control
+connection. Multiple RC
+objects can exist simultaneously, containing overlapping sets of
+protocol and clients to intercept.
+.LP
+If any of the values in
+\fIelement-header\fP or
+\fIranges\fP is invalid, a
+.PN "Value"
+error results. Duplicate items in the list of \fIclient-specifiers\fP are
+ignored. If any item in the \fIclient-specifiers\fP list is not a valid
+CLIENTSPEC, a
+.PN "Match"
+error results. Otherwise, each item in the \fIclient-specifiers\fP list is
+processed as follows:
+.Ip
+If the item is an XIDBASE identifying a particular client, the
+specified client is registered with the \fIcontext\fP and the protocol
+to intercept for the client is then set to \fIranges\fP.
+.Ip
+If the item is
+.PN CurrentClients ,
+all existing clients are registered with the
+\fIcontext\fP at this time.
+The protocol to intercept for all clients registered
+with the \fIcontext\fP is then set to \fIranges\fP.
+.Ip
+If the item is
+.PN FutureClients ,
+all clients that connect to the server
+after this request executes will be automatically registered with the
+\fIcontext\fP. The protocol to intercept for such clients will be set to
+\fIranges\fP in the \fIcontext\fP.
+.Ip
+If the item is
+.PN AllClients ,
+the effect is as if the actions described
+for
+.PN FutureClients
+are performed, followed by the actions for
+.PN CurrentClients .
+.LP
+The
+.PN "Alloc"
+error results when the server is unable to allocate the necessary
+resources.
+
+.LP
+.PN "RecordRegisterClients"
+.TA .75i
+.ta .75i
+.IP
+\fIcontext\fP\^: RC
+.IP
+\fIelement-header\fP\^: ELEMENT_HEADER
+.IP
+\fIclient-specifiers\fP\^: LISTofCLIENTSPEC
+.IP
+\fIranges\fP\^: LISTofRECORDRANGE
+.br
+.IP
+Errors:
+.PN Match ,
+.PN Value ,
+.PN RecordContext ,
+.PN Alloc
+.LP
+This request registers the set of clients in \fIclient-specifiers\fP with
+the given \fIcontext\fP and specifies the protocol to intercept for those
+clients.
+The header preceding each recorded protocol element is set as specified
+by \fIelement-header\fP.
+These flags affect the entire
+context; their effect is not limited to the clients registered by
+this request.
+Typically, this request is used by a recording client over
+the control connection.
+.LP
+If \fIcontext\fP does not name a valid RC, a
+.PN "RecordContext"
+error results. If any of the values in
+\fIelement-header\fP or \fIranges\fP is invalid, a
+.PN "Value"
+error results. Duplicate items in the list of \fIclient-specifiers\fP are
+ignored. If any item in the list of \fIclient-specifiers\fP is not a
+valid CLIENTSPEC, a
+.PN "Match"
+error results.
+If the \fIcontext\fP is enabled and the XID of the enabling connection
+is specified, a
+.PN "Match"
+error results.
+Otherwise, each item in the \fIclient-specifiers\fP list is
+processed as follows:
+.Ip
+If the item is an XIDBASE identifying a particular client, the
+specified client is registered with the \fIcontext\fP if it is not already
+registered. The protocol to intercept for the client is then set to
+\fIranges\fP.
+.Ip
+If the item is
+.PN CurrentClients ,
+all existing clients that are not
+already registered with the specified \fIcontext\fP,
+except the enabling connection if the \fIcontext\fP is enabled,
+are registered at this
+time. The protocol to intercept for all clients registered with the
+\fIcontext\fP is then set to \fIranges\fP.
+.Ip
+If the item is
+.PN FutureClients ,
+all clients that connect to the server
+after this request executes will be automatically registered with the
+\fIcontext\fP. The protocol to intercept for such clients will be set to
+\fIranges\fP in the \fIcontext\fP.
+The set of clients that are registered with the
+\fIcontext\fP and their corresponding sets
+of protocol to intercept are left intact.
+.Ip
+If the item is
+.PN AllClients ,
+the effect is as if the actions described
+for
+.PN FutureClients
+are performed, followed by the actions for
+.PN CurrentClients .
+.LP
+The
+.PN "Alloc"
+error results when the server is unable to allocate the necessary
+resources.
+
+.LP
+.PN "RecordUnregisterClients"
+.TA .75i
+.ta .75i
+.IP
+\fIcontext\fP\^: RC
+.IP
+\fIclient-specifiers\fP\^: LISTofCLIENTSPEC
+.br
+.IP
+Errors:
+.PN Match ,
+.PN RecordContext
+.LP
+This request removes the set of clients in \fIclient-specifiers\fP from the
+given \fIcontext\fP's set of registered clients. Typically, this request is
+used by a recording client over the control connection.
+.LP
+If \fIcontext\fP does not name a valid RC, a
+.PN "RecordContext"
+error results. Duplicate items in the list of \fIclient-specifiers\fP are
+ignored. If any item in the list is not a valid CLIENTSPEC, a
+.PN "Match"
+error results. Otherwise, each item in the \fIclient-specifiers\fP list is
+processed as follows:
+.Ip
+If the item is an XIDBASE identifying a particular client, and the
+specified client is currently registered with the \fIcontext\fP, it is
+unregistered, and the set of protocol to intercept for the client is
+deleted from the \fIcontext\fP. If the specified client is not registered
+with the \fIcontext\fP, the item has no effect.
+.Ip
+If the item is
+.PN CurrentClients ,
+all clients currently registered with
+the \fIcontext\fP are unregistered from it, and their corresponding sets of
+protocol to intercept are deleted from the \fIcontext\fP.
+.Ip
+If the item is
+.PN FutureClients ,
+clients that connect to the server after
+this request executes will not automatically be registered with the
+\fIcontext\fP. The set of clients that are registered with this context
+and their corresponding sets of protocol that will be
+intercepted are left intact.
+.Ip
+If the item is
+.PN AllClients ,
+the effect is as if the actions described
+for
+.PN FutureClients
+are performed, followed by the actions for
+.PN CurrentClients .
+.LP
+A client is unregistered automatically when it disconnects.
+
+.LP
+.PN "RecordGetContext"
+.TA .75i
+.ta .75i
+.IP
+\fIcontext\fP\^: RC
+.LP
+\(->
+.IP
+\fIenabled\fP\^: BOOL
+.IP
+\fIelement-header\fP\^: ELEMENT_HEADER
+.IP
+\fIintercepted-clients\fP\^: LISTofCLIENT_INFO
+.IP
+Errors:
+.PN RecordContext
+.LP
+This request queries the current state of the specified \fIcontext\fP
+and is typically used by a recording client over the control connection.
+The \fIenabled\fP field
+specifies the state of data transfer between the extension and the
+recording client, and is either enabled
+.Pn ( True )
+or disabled
+.Pn ( False ).
+The initial state is disabled.
+When enabled, all core X protocol and
+extension protocol received from (requests) or sent to (replies,
+errors, events) a particular client, and requested to be intercepted
+by the recording client, is reported to the recording client over the
+data connection.
+The \fIelement-header\fP specifies the header that precedes each
+recorded protocol element.
+The
+\fIintercepted-clients\fP field specifies the list of clients currently
+being recorded and the protocol associated with each client.
+If future clients will be automatically registered with the context,
+one of the returned CLIENT_INFO structures has a \fIclient-resource\fP value
+of FutureClients and an \fIintercepted-protocol\fP giving the protocol to
+intercept for future clients.
+Protocol ranges may be decomposed, coalesced, or otherwise modified
+by the server from how they were specified by the client.
+All CLIENTSPECs registered with the server are returned, even if the
+RECORDRANGE(s) associated with them specify no protocol to record.
+.LP
+When the \fIcontext\fP argument is not valid, a
+.PN RecordContext
+error results.
+
+.LP
+.PN "RecordEnableContext"
+.TA .75i
+.ta .75i
+.IP
+\fIcontext\fP\^: RC
+.LP
+\(->\(pl
+.br
+.IP
+\fIcategory\fP\^: {\fBFromServer\fP, \fBFromClient\fP, \fBClientStarted\fP, \fBClientDied\fP,
+\fBStartOfData\fP,
+\fBEndOfData\fP}
+.IP
+\fIelement-header\fP\^: ELEMENT_HEADER
+.IP
+\fIclient-swapped\fP\^: BOOL
+.IP
+\fIid-base\fP\^: XIDBASE
+.IP
+\fIserver-time\fP\^: TIMESTAMP
+.IP
+\fIrecorded-sequence-number\fP\^: CARD32
+.IP
+\fIdata\fP\^: LISTofBYTE
+.br
+.IP
+Errors:
+.PN Match ,
+.PN RecordContext
+.LP
+This request enables data transfer between the recording client
+and the extension and returns the protocol data the recording client
+has previously expressed interest in. Typically, this request is
+executed by the recording client over the data connection.
+.LP
+If the client is registered on the \fIcontext\fP, it is unregistered
+before any recording begins.
+.LP
+Once the server receives this request, it begins intercepting
+and reporting to the recording client all core and extension protocol
+received from or sent to clients registered with the RC that the
+recording client has expressed interest in. All intercepted protocol data
+is returned in the byte-order of the recorded client. Therefore,
+recording clients are responsible for all byte swapping, if required.
+More than one recording client cannot enable data transfer on the
+same RC at the same time. Multiple intercepted requests, replies,
+events and errors might be packaged into a single reply before
+being returned to the recording clients.
+.LP
+The
+\fIcategory\fP field determines the possible
+types of the data.
+When a context is enabled, the server will immediately send a reply of
+category
+.PN StartOfData
+to notify the client that recording is enabled.
+A category of
+.PN FromClient
+means the data are from the client
+(requests);
+.PN FromServer
+means data are from the server (replies,
+errors, events, or device events).
+For a new client, the category is
+.PN ClientStarted
+and the data are the connection setup reply.
+When
+the recorded client connection is closed, \fIcategory\fP is
+set to the value
+.PN ClientDied
+and no protocol is included in this reply.
+When the disable request is made over the control connection,
+a final reply is sent over the data connection with category
+.PN EndOfData
+and no protocol.
+.LP
+The \fIelement-header\fP field returns the value currently set for the
+context, which tells what header information precedes each recorded
+protocol element in this reply.
+.LP
+The \fIclient-swapped\fP field is
+.PN True
+if the byte order of
+the protocol being recorded
+is swapped
+relative to the recording client;
+otherwise, \fIclient-swapped\fP is
+.PN False .
+The recorded protocol
+is in the byte order of the client being
+recorded; device events are in the byte order of the
+recording client.
+For replies of category
+.PN StartOfData
+and
+.PN EndOfData
+the
+\fIclient-swapped\fP bit is set
+according
+to the byte order of the server relative to the recording client.
+The \fIid-base\fP field is the resource identifier base
+sent to the client from the server in the
+connection setup reply, and hence, identifies the client being
+recorded. The \fIid-base\fP field is 0 (zero) when the protocol
+data being
+returned are device events.
+The \fIserver-time\fP field is set to the time of the
+server when the first protocol element in this reply was intercepted.
+The \fIserver-time\fP
+of reply N+1 is greater than or equal to the \fIserver-time\fP of reply N,
+and is greater than or equal to the time of the last protocol
+element in reply N.
+.LP
+The \fIrecorded-sequence-number\fP field is set to the sequence number
+of the recorded client's most recent request processed by the server.
+.LP
+The \fIdata\fP field
+contains the raw protocol data being returned to the recording client.
+If requested by the \fIelement-header\fP of this record context, each
+protocol element may be preceded by a 32-bit timestamp and/or
+a 32-bit sequence number.
+If present, both the timestamp and sequence number are always in the
+byte order of the recording client.
+.LP
+For the core X events
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+and
+.PN ButtonRelease ,
+the fields of a device event that contain
+valid information are \fItime\fP and \fIdetail\fP.
+For the core X event
+.PN MotionNotify ,
+the fields of a device event that contain
+valid information are \fItime\fP, \fIroot\fP,
+\fIroot-x\fP and \fIroot-y\fP.
+The \fItime\fP field refers to the time the event was generated by the
+device.
+.LP
+For the extension input device events
+.PN DeviceKeyPress ,
+.PN DeviceKeyRelease ,
+.PN DeviceButtonPress ,
+and
+.PN DeviceButtonRelease ,
+the fields of a device event that contain valid information are
+\fIdevice\fP, \fItime\fP and \fIdetail\fP.
+For
+.PN DeviceMotionNotify ,
+the valid device event fields are
+\fIdevice\fP and \fItime\fP.
+For the extension input device events
+.PN ProximityIn
+and
+.PN ProximityOut ,
+the fields of a device event that contain valid
+information are \fIdevice\fP and \fItime\fP.
+For the extension input device event
+.PN DeviceValuator ,
+the fields of a device event that contain valid information are
+\fIdevice\fP,
+\fInum_valuators\fP, \fIfirst_valuator\fP, and \fIvaluators\fP.
+The \fItime\fP field refers to the time the event was generated by the
+device.
+.LP
+The error
+.PN "Match"
+is returned when data transfer is already enabled.
+When the \fIcontext\fP argument is not valid, a
+.PN RecordContext
+error results.
+
+.LP
+.PN "RecordDisableContext"
+.TA .75i
+.ta .75i
+.IP
+\fIcontext\fP\^: RC
+.br
+.IP
+Errors:
+.PN RecordContext
+.LP
+This request is typically executed by the recording client over the
+control connection. This request directs the extension to immediately
+send any complete protocol elements currently buffered,
+to send a final reply with category
+.PN EndOfData ,
+and to discontinue
+data transfer between the extension and the recording client.
+Protocol reporting is disabled
+on the data connection that is currently enabled for the given
+\fIcontext\fP. Once the extension completes
+processing this request, no additional recorded protocol will
+be reported to the recording client. If a data connection is not
+currently enabled when this request is executed, then this request has
+no affect on the state of data transfer.
+An RC is disabled automatically when the connection to the enabling
+client is closed down.
+.LP
+When the \fIcontext\fP argument is not valid, a
+.PN RecordContext
+error results.
+
+.LP
+.PN "RecordFreeContext"
+.TA .75i
+.ta .75i
+.IP
+\fIcontext \fP\^: RC
+.br
+.IP
+Errors:
+.PN RecordContext
+.LP
+This request deletes the association between the resource ID and the
+RC and destroys the RC.
+If a client has enabled data transfer on this \fIcontext\fP, the actions
+described in
+.PN RecordDisableContext
+are performed before the \fIcontext\fP
+is freed.
+.LP
+An RC is destroyed automatically when the connection to the creating client
+is closed down and the close-down mode is \fBDestroyAll\fP. When the
+\fIcontext\fP argument is not valid, a
+.PN RecordContext
+error results.
+
+.NH 1
+Encoding
+.XS
+\*(SN Encoding
+.XE
+.LP
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+.LP
+The name of this extension is \*QRECORD\*U.
+.LP
+.NH 2
+Types
+.LP
+RC: CARD32
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+RANGE8
+ 1 CARD8 first
+ 1 CARD8 last
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+RANGE16
+ 2 CARD16 first
+ 2 CARD16 last
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+EXTRANGE
+ 2 RANGE8 major
+ 4 RANGE16 minor
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+RECORDRANGE
+ 2 RANGE8 core-requests
+ 2 RANGE8 core-replies
+ 6 EXTRANGE ext-requests
+ 6 EXTRANGE ext-replies
+ 2 RANGE8 delivered-events
+ 2 RANGE8 device-events
+ 2 RANGE8 errors
+ 1 BOOL client-started
+ 1 BOOL client-died
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+ELEMENT_HEADER
+ 1 CARD8
+ 0x01 from-server-time
+ 0x02 from-client-time
+ 0x04 from-client-sequence
+.DE
+.LP
+XIDBASE: CARD32
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+CLIENTSPEC
+ 4 XIDBASE client-id-base
+ 1 CurrentClients
+ 2 FutureClients
+ 3 AllClients
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+CLIENT_INFO
+ 4 CLIENTSPEC client-resource
+ 4 CARD32 n, number of record ranges in intercepted-protocol
+ 24n LISTofRECORDRANGE intercepted-protocol
+.DE
+.NH 2
+Errors
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordContext
+ 1 0 Error
+ 1 CARD8 extension's base error code + 0
+ 2 CARD16 sequence number
+ 4 CARD32 invalid record context
+ 24 unused
+.DE
+.NH 2
+Requests
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordQueryVersion
+ 1 CARD8 major opcode
+ 1 0 minor opcode
+ 2 2 request length
+ 2 CARD16 major version
+ 2 CARD16 minor version
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 major version
+ 2 CARD16 minor version
+ 20 unused
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordCreateContext
+ 1 CARD8 major opcode
+ 1 1 minor opcode
+ 2 5+m+6n request length
+ 4 RC context
+ 1 ELEMENT_HEADER element-header
+ 3 unused
+ 4 CARD32 m, number of client-specifiers
+ 4 CARD32 n, number of ranges
+ 4m LISTofCLIENTSPEC client-specifiers
+ 24n LISTofRECORDRANGE ranges
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordRegisterClients
+ 1 CARD8 major opcode
+ 1 2 minor opcode
+ 2 5+m+6n request length
+ 4 RC context
+ 1 ELEMENT_HEADER element-header
+ 3 unused
+ 4 CARD32 m, number of client-specifiers
+ 4 CARD32 n, number of ranges
+ 4m LISTofCLIENTSPEC client-specifiers
+ 24n LISTofRECORDRANGE ranges
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordUnregisterClients
+ 1 CARD8 major opcode
+ 1 3 minor opcode
+ 2 3+m request length
+ 4 RC context
+ 4 CARD32 m, number of client-specifiers
+ 4m LISTofCLIENTSPEC client-specifiers
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordGetContext
+ 1 CARD8 major opcode
+ 1 4 minor opcode
+ 2 2 request length
+ 4 RC context
+ =>
+ 1 1 Reply
+ 1 BOOL enabled
+ 2 CARD16 sequence number
+ 4 j reply length
+ 1 ELEMENT_HEADER element-header
+ 3 unused
+ 4 CARD32 n, number of intercepted-clients
+ 16 unused
+ 4j LISTofCLIENT_INFO intercepted-clients
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordEnableContext
+ 1 CARD8 major opcode
+ 1 5 minor opcode
+ 2 2 request length
+ 4 RC context
+ =>+
+ 1 1 Reply
+ 1 category
+ 0 FromServer
+ 1 FromClient
+ 2 ClientStarted
+ 3 ClientDied
+ 4 StartOfData
+ 5 EndOfData
+ 2 CARD16 sequence number
+ 4 n reply length
+ 1 ELEMENT_HEADER element-header
+ 1 BOOL client-swapped
+ 2 unused
+ 4 XIDBASE id-base
+ 4 TIMESTAMP server-time
+ 4 CARD32 recorded-sequence-number
+ 8 unused
+ 4n BYTE data
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordDisableContext
+ 1 CARD8 major opcode
+ 1 6 minor opcode
+ 2 2 request length
+ 4 RC context
+.DE
+.LP
+.DS 0
+.TA .2i 1.0i 2.0i 3.0i
+.ta .2i 1.0i 2.0i 3.0i
+.R
+.PN RecordFreeContext
+ 1 CARD8 major opcode
+ 1 7 minor opcode
+ 2 2 request length
+ 4 RC context
+.DE
diff --git a/specs/Xext/recordlib.ms b/specs/Xext/recordlib.ms
new file mode 100644
index 0000000..0d9a14d
--- /dev/null
+++ b/specs/Xext/recordlib.ms
@@ -0,0 +1,1408 @@
+.\" Record Extension Library, v1.13
+.\" Use -ms and macros.t
+.\" edited for DP edits and code consistency w/ core protocol/xlib 4/1/96
+.\" $Xorg: recordlib.ms,v 1.3 2000/08/17 19:42:36 cpqbld Exp $
+.\" -----------------------------------------------
+.de Ip
+.IP \(bu 5
+..
+.de sC \" start change (gildea). arg is issue number
+.mc \s+5\(br\s0\" \" make tall enough to span paragraph skip
+.if !^\\$1^^ \{\
+'sp -1
+.lt +\w'000'u+\w'\s-2\&\\$1\s0'u
+.tl !!!\v'\n(.vu'\s-2\&\\$1\s0!
+.lt -\w'000'u+\w'\s-2\&\\$1\s0'u
+.\}
+..
+.de eC \" end change
+.if \\n(.u .mc \s+5\(br\s0\" ensure it appears on the last line
+.mc
+..
+.\"
+.hw XRecord-Register-Clients XRecord-Unregister-Clients
+.hw XRecord-Intercept-Data XRecord-Query-Version XRecord-Process-Replies
+.hw XRecord-EndOfData
+.hw XButton-Released-Event XMotion-Event
+.hw XRecord-Context
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.fi
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 50
+\s+3\fBX Record Extension Library\fP\s0
+.sp
+\fBVersion 1.13\fP
+.sp
+\fBX Consortium Standard\fP
+.sp
+\fBX Version 11, Release 6.4\fP
+.sp 6
+Martha Zimet
+Network Computing Devices, Inc.
+.sp 6
+edited by
+Stephen Gildea
+X Consortium
+.ce 0
+.bp
+.br
+\&
+.sp 13
+.ps 9
+.nr PS 9
+.fi
+.LP
+Copyright \(co 1994 Network Computing Devices, Inc.
+.LP
+Permission to use, copy, modify, distribute, and sell this
+documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice and this permission
+notice appear in all copies. Network Computing Devices, Inc.
+makes no representations about the suitability for any purpose
+of the information in this document. This documentation is
+provided \*Qas is\*U without express or implied warranty.
+.LP
+Copyright \(co 1995 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+\*QSoftware\*U), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED \*QAS IS\*U, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium and
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from the X Consortium.
+.ps 11
+.nr PS 11
+.P1
+.nr LL 6.5i
+.nr LT 6.5i
+.nr FL 6.5i
+.ll 6.5i
+.EH '\fBX Record Extension Library, Version 1.13\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX11, Release 6.4\fP''\fBX Record Extension Library, Version 1.13\fP'
+.bp 1
+.EF ''\fB\\\\n(PN\fP''
+.OF ''\fB\\\\n(PN\fP''
+.hy 14
+
+.NH 1
+Record Extension Overview
+.XS
+\*(SN Record Extension Overview
+.XE
+.LP
+The purpose
+of this extension is to support the recording and reporting of all
+core X protocol and arbitrary X extension protocol. This first section
+gives an overview of the Record extension. The following sections
+describe how to use the Record extension library.
+.NH 2
+Synchronous Playback
+.XS
+\*(SN Synchronous Playback
+.XE
+.LP
+Environment information is generally provided to an X-based playback
+mechanism, which might use the XTest extension to synthesize input events.
+This synchronization information defines the X state prior to
+event synthesis (for example, location of the cursor, window locations and
+sizes, installed colormap, window manager running, and so on) and the
+consequences that occur after the playback mechanism synthesizes
+the event. If the user moves the mouse into the icon window and
+presses and releases a mouse button, the device events
+.PN MotionNotify ,
+.PN ButtonPress ,
+and
+.PN ButtonRelease
+are generated by the X server.
+Because
+X follows an event-driven model, there are consequences that
+follow from
+the user actions, or device events, that are in the form of X protocol.
+As a result of the previous user actions, the client could
+generate requests such as
+.PN ImageText8
+and
+.PN PolyLine
+to the X server,
+or the X server could send non-device events such as
+.PN Expose
+and
+.PN MapNotify
+to the client window. Both the requests and non-device events that
+result from user actions are known as \fIconsequences\fP, which
+can be used as a synchronization, or control point, during playback.
+That is, the playback mechanism does not generate a specific synthesized
+event until its matching synchronization condition occurs (for example,
+the window is mapped or unmapped, the cursor changes, a text string
+displays, and so on)
+.LP
+Because
+it cannot be predicted what synchronization information is
+required during playback, the Record extension makes no assumptions
+about the intended use of the recorded data. Facilities exist to
+record any core X protocol or X extension protocol.
+Therefore, Record does not enforce a specific synchronization
+methodology.
+.NH 2
+Design Approach
+.XS
+\*(SN Design Approach
+.XE
+.LP
+The design approach of the extension is to record core X protocol
+and arbitrary X extension protocol entirely within the X server
+itself. When the extension has been requested to record specific
+protocol by one or more recording clients, the protocol data is formatted
+and returned to the recording clients. The extension provides a mechanism
+for capturing all events, including input device events that do not go to any
+clients.
+.NH 2
+Record Clients
+.XS
+\*(SN Record Clients
+.XE
+.LP
+The recommended
+communication model for a Record application is to open two
+connections to the server\*-one connection for recording control
+and one connection for reading recorded protocol data.
+.LP
+Information about recording (for example, what clients to record,
+what protocol to record for each client, and so on) is stored in
+resources called \fIrecord contexts\fP\^
+(type
+.PN XRecordContext ).
+Most Record extension functions take a record context as an argument.
+Although in theory it is possible
+to share record contexts between applications,
+it is expected that
+applications will use their own context when performing recording
+operations.
+.LP
+A client that wishes to record X protocol does so through the library
+functions defined in
+section 3 \*QLibrary Extension Requests\*U. A typical sequence
+of requests that a client would make is as follows:
+.Ip
+.PN XRecordQueryVersion
+\- query the extension protocol version.
+.Ip
+.PN XRecordCreateContext
+\- request that the server create a record context
+for access by this client, and express interest in clients and protocol
+to be recorded. This request returns an
+.PN XRecordContext ,
+which is an XID that is used
+by most other extension requests to identify the specified context.
+.Ip
+.PN XRecordEnableContext
+\- begin the recording and reporting of protocol
+data.
+.Ip
+.PN XRecordDisableContext
+\- end the recording and reporting of protocol data.
+.Ip
+.PN XRecordFreeContext
+\- free the record context.
+.LP
+The header for this library is
+.Pn < X11/extensions/record.h >.
+All identifiers defined in the interface are supplied by this header
+and are prefixed with \*QXRecord\*U. The
+.PN Xtst
+library contains the
+.PN XRecord
+functions.
+.NH 1
+Common Arguments
+.XS
+\*(SN What Is Recorded
+.XE
+.LP
+The Record extension functions
+.PN XRecordCreateContext
+and
+.PN XRecordRegisterClients
+allow applications to specify the following:
+.Ip
+Individual clients or sets of clients to record
+.Ip
+Ranges of core X protocol and X extension protocol to record for
+each client
+.LP
+Protocol in the ranges specified by the recording client
+will be recorded by the server. The device_events
+protocol type can be specified by a recording
+client although it may not be sent to a recorded client.
+The device_events type differs from delivered_events,
+which also can be specified by a recording client;
+delivered_events are actually delivered to one or more clients.
+These event types are discussed in section 2.3 \*QProtocol Ranges\*U.
+.LP
+The Record extension functions
+.PN XRecordCreateContext
+and
+.PN XRecordRegisterClients
+have the common arguments
+datum_flags,
+clients, and ranges, which specify
+whether server time and/or client
+sequence number should precede protocol elements,
+the clients or client set to
+record, and the protocol ranges to record, respectively.
+These are discussed in the following sections.
+.NH 2
+Datum Flags
+.LP
+The datum_flags argument is a set of flags OR'ed together to
+specify options for the record context. Specify zero to disable all
+the options.
+.LP
+The
+.PN XRecordFromServerTime
+flag specifies that
+.PN XRecordInterceptData
+structures with a category of
+.PN XRecordFromServer
+will have a server_time field specific to each
+protocol element.
+.LP
+The
+.PN XRecordFromClientTime
+flag specifies that
+.PN XRecordInterceptData
+structures with a category of
+.PN XRecordFromClient
+will have a server_time field specific to each protocol element.
+.LP
+The
+.PN XRecordFromClientSequence
+flag specifies that
+.PN XRecordInterceptData
+structures with a category of
+.PN XRecordFromClient
+or
+.PN XRecordClientDied
+will have a valid client_seq field.
+.NH 2
+Selecting Clients
+.LP
+The clients argument is a pointer to an array of
+.PN XRecordClientSpec .
+.PN XRecordClientSpec
+is an integral type that holds a resource ID,
+a client resource ID base, or one
+of the \fIclient set\fP constants defined below.
+.LP
+Duplicate
+elements in the array are ignored by the functions, and if any element
+in the array is not valid, a
+.PN "BadMatch"
+error results.
+A resource ID references the client that created that resource.
+The client set may be one of the following constants:
+.PN XRecordCurrentClients ,
+.PN XRecordFutureClients ,
+or
+.PN XRecordAllClients .
+.LP
+If the element in the array identifies a particular client, protocol
+specified by the ranges argument will be recorded by the server.
+The recorded protocol data will not be returned to the recording client
+until the record context has been enabled. This is described in section
+3.4 \*QData Transfer\*U.
+.LP
+If the element is
+.PN XRecordCurrentClients ,
+the protocol ranges specified by the
+ranges argument, except for device_events, are associated with
+each current client connection. If the element is
+.PN XRecordFutureClients ,
+the protocol ranges specified by the ranges argument are associated
+with each new client connection. If the element is
+.PN XRecordAllClients ,
+the protocol ranges specified by the ranges argument are associated
+with each current client connection and with each new client connection.
+.LP
+When the context is enabled, the data connection is unregistered if it
+was registered.
+If the context is enabled,
+.PN XRecordCurrentClients
+and
+.PN XRecordAllClients
+silently exclude the recording data connection.
+It is an error to explicitly register the data connection.
+.NH 2
+Protocol Ranges
+.LP
+The functions
+.PN XRecordCreateContext
+and
+.PN XRecordRegisterClients
+have another common argument, ranges,
+which is an array of pointers to
+.PN XRecordRange
+structures. Each structure contains ranges of numeric values for each
+of the protocol types that can be specified and recorded individually
+by the Record extension.
+An
+.PN XRecordRange
+structure must be allocated
+by the Record library using the
+.PN XRecordAllocRange
+function.
+.LP
+The
+.PN XRecordRange
+typedef is a structure with the following members:
+.LP
+.sM
+.Ds 0
+.TA .5i 3.0i
+.ta .5i 3.0i
+XRecordRange:
+ XRecordRange8 core_requests /* core X requests */
+ XRecordRange8 core_replies /* core X replies */
+ XRecordExtRange ext_requests /* extension requests */
+ XRecordExtRange ext_replies /* extension replies */
+ XRecordRange8 delivered_events /* delivered core and ext events */
+ XRecordRange8 device_events /* all core and ext device events */
+ XRecordRange8 errors /* core X and X ext errors */
+ Bool client_started /* connection setup reply from server */
+ Bool client_died /* notification of client disconnect */
+.De
+.LP
+.eM
+The types used in
+.PN XRecordRange
+members are defined as follows.
+The
+.PN XRecordRange8
+typedef is a structure with the following members:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+XRecordRange8:
+ unsigned char first
+ unsigned char last
+.De
+.LP
+.eM
+The
+.PN XRecordRange16
+typedef is a structure with the following members:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+XRecordRange16:
+ unsigned short first
+ unsigned short last
+.De
+.LP
+.eM
+The
+.PN XRecordExtRange
+typedef is a structure with the following members:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+XRecordExtRange:
+ XRecordRange8 ext_major
+ XRecordRange16 ext_minor
+.De
+.LP
+.eM
+If any of the values specified in
+.PN XRecordRange
+is invalid, a
+.PN "BadValue"
+error results.
+.LP
+The core_requests member specifies the range of core X protocol
+requests to record. Core X protocol requests with a major opcode
+that is between first and last, inclusive, will be
+recorded. A
+.PN "BadValue"
+error results
+if the value of first is greater than the value of last.
+If the values of both first and last are zero, no core
+X protocol requests will be recorded.
+.LP
+The core_replies member specifies the range of replies resulting
+from core X protocol requests to record. Replies that result from
+core X protocol requests with a major opcode between first
+and last, inclusive, will be recorded. A
+.PN "BadValue"
+error results
+if the value of first is greater than the value of last.
+If the values of both first and last are zero,
+no core X protocol replies will be recorded.
+.LP
+The ext_requests member specifies the range of X extension
+requests to record. X extension requests with a major opcode
+between ext_major.first and ext_major.last, and with a
+minor opcode
+between ext_minor.first and ext_minor.last, inclusive, will be
+recorded. A
+.PN "BadValue"
+error results
+if the value of ext_major.first is greater than the value of
+ext_major.last or if the value of ext_minor.first is
+greater than the value of ext_minor.last. If the values of both
+ext_major.first
+and ext_major.last are zero,
+no X extension requests will be recorded.
+.LP
+The ext_replies member specifies the range of replies resulting
+from X extension requests to record. Replies that result from an X
+extension request with a major opcode between
+ext_major.first and
+ext_major.last, and a minor opcode that is between
+ext_minor.first and ext_minor.last will be recorded. A
+.PN "BadValue"
+error results
+if the value of ext_major.first is greater than the value of
+ext_major.last or if the value of ext_minor.first is greater than
+the value of ext_minor.last. If the values of both
+ext_major.first and ext_major.last
+are zero, no X extension
+replies will be recorded.
+.LP
+The delivered_events member specifies the range of both core
+X events and X extension events to record. These events are
+delivered to at least one client. Core X events and X extension events
+with a code value between first and
+last inclusive will be recorded. A
+.PN "BadValue"
+error results
+if the value of first
+is greater than the value of last. If the values of first
+and last are zero, no events will be recorded.
+.LP
+The device_events member specifies the range of
+both core X device events and X extension device events
+to record. These events may or may not be delivered to a client.
+Core X device events and X extension device events with a code value
+between first and last inclusive that are not delivered to any
+clients will be recorded. A
+.PN "BadValue"
+error results
+if the value of first
+is greater than the value of last. A
+.PN "BadValue"
+error results
+if first
+is less than two or last is less than two, except that if
+first and last are zero, no events will be
+recorded.
+.LP
+The errors member specifies the range of both core X errors and X
+extension errors to record. Core X errors and X extension errors with
+a code value between first and last inclusive will be
+recorded. A
+.PN "BadValue"
+error results
+if the value of first
+is greater than the value of last. If the values of first and
+last are zero, no errors will be recorded.
+.LP
+A value of
+.PN True
+for the client_started member specifies the
+connection setup reply from the server to new clients.
+If
+.PN False ,
+the connection setup reply is
+not specified by this
+.PN XRecordRange .
+.LP
+A value of
+.PN True
+for the client_died member specifies
+notification when a client disconnects.
+If
+.PN False ,
+notification when a client disconnects is
+not specified by this
+.PN XRecordRange .
+.NH 1
+Library Extension Requests
+.XS
+\*(SN Library Extension Requests
+.XE
+.LP
+Recording operations are accessed by programs through the use of
+new protocol requests. The following functions are provided as extensions
+to Xlib. An Xlib error results if
+an extension request is made to an X server that does not support the
+Record extension. Note that any of the extension protocol requests may generate
+.PN BadAlloc
+or
+.PN BadLength
+errors.
+.NH 2
+Query Extension Version
+.XS
+\*(SN Query Extension Version
+.XE
+.LP
+An application uses the
+.PN XRecordQueryVersion
+function to determine
+the version of the Record extension protocol supported by an X server.
+.sM
+.FD 0
+Status
+XRecordQueryVersion\^(Display *\fIdisplay\fP, int *\fIcmajor_return\fP, \
+int *\fIcminor_return\fP)
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP "\fIcmajor_return\fP" 1i
+Returns the extension protocol major version in use.
+.IP "\fIcminor_return\fP" 1i
+Returns the extension protocol minor version in use.
+.LP
+.eM
+The
+.PN XRecordQueryVersion
+function returns the major and minor
+protocol version numbers supported by the server.
+.PN XRecordQueryVersion
+returns nonzero (success) only if the returned version numbers are
+common to both the library and the
+server; otherwise, it returns zero.
+.NH 2
+Create and Modify Context
+.XS
+\*(SN Create and Modify Context
+.XE
+.LP
+An application uses the
+.PN XRecordCreateContext
+function to create a
+record context. At the time the record context is
+created by the recording client, the clients to be recorded and the
+protocol to record for each client may be specified.
+.LP
+.sM
+.FD 0
+XRecordContext
+XRecordCreateContext\^(Display *\fIdisplay\fP, int \fIdatum_flags\fP, \
+XRecordClientSpec *\fIclients\fP, int \fInclients\fP,
+.br
+ XRecordRange **\fIranges\fP, int \fInranges\fP)
+.FN
+.IP "\fIdisplay\fP" 1i
+Specifies the connection to the X server.
+.IP \fIdatum_flags\fP 1i
+Specifies whether detailed time or sequence info should be sent.
+.IP "\fIclients\fP" 1i
+Specifies the clients to record.
+.IP "\fInclients\fP" 1i
+Specifies the number of clients.
+.IP "\fIranges\fP" 1i
+Specifies the protocol ranges to record.
+.IP "\fInranges\fP" 1i
+Specifies the number of protocol ranges.
+.LP
+.eM
+The
+.PN XRecordCreateContext
+function creates a record context and returns an
+.PN XRecordContext ,
+which is then used
+in the other Record library calls. This request is typically
+executed by the recording client over its control connection to
+the X server.
+The datum_flags specifies whether server time and/or client
+sequence number should precede protocol elements recorded by context
+(see section 2.1).
+When a clients element identifies
+a particular client, the client is added to the context and
+the protocol to record for that client is set to the union of
+all ranges. When a clients element is
+.PN XRecordCurrentClients ,
+.PN XRecordFutureClients ,
+or
+.PN XRecordAllClients ,
+the actions described in section 2.2 \*QSelecting Clients\*U
+are performed.
+.LP
+.PN XRecordCreateContext
+returns zero if the request failed.
+.PN XRecordCreateContext
+can generate
+.PN BadIDChoice ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.LP
+The ranges argument is an
+.PN XRecordRange *
+array, that is, an array
+of pointers. The structures the elements point to shall be allocated
+by calling
+.PN XRecordAllocRange .
+.LP
+.sM
+.FD 0
+XRecordRange *
+XRecordAllocRange\^(void)
+.FN
+.LP
+.eM
+The
+.PN XRecordAllocRange
+function
+allocates and returns an
+.PN XRecordRange
+structure.
+The structure is initialized to specify no protocol.
+The function returns NULL if the structure allocation fails.
+The application can free the structure by calling
+.PN XFree .
+.NH 3
+Additions
+.LP
+An application uses the
+.PN XRecordRegisterClients
+function to modify a previously created
+record context, by adding clients or modifying the recorded protocol,
+typically over its control connection to the X server.
+.LP
+.sM
+.FD 0
+Status
+XRecordRegisterClients\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \
+int \fIdatum_flags\fP,
+.br
+ XRecordClientSpec *\fIclients\fP, int \fInclients\fP, \
+XRecordRange **\fIranges\fP, int \fInranges\fP)
+.FN
+.IP "\fIdisplay\fP " 1i
+Specifies the connection to the X server.
+.IP "\fIcontext\fP" 1i
+Specifies the record context to modify.
+.IP \fIdatum_flags\fP 1i
+Specifies whether detailed time or sequence info should be sent.
+.IP "\fIclients\fP" 1i
+Specifies the clients to record.
+.IP "\fInclients\fP" 1i
+Specifies the number of clients.
+.IP "\fIranges\fP" 1i
+Specifies the protocol ranges to record.
+.IP "\fInranges\fP" 1i
+Specifies the number of protocol ranges.
+.LP
+.eM
+The datum_flags specifies whether server time and/or client
+sequence number should precede protocol elements
+for all clients
+recorded by context
+(see section 2.1).
+When a clients element identifies a particular client and the
+client is not yet
+targeted for recording in the given context,
+the client is added to the set of clients to record, and the protocol
+to record for that client is set to the union of all ranges.
+When the client is
+already targeted for recording, the protocol to record for that client
+is set to the union of all ranges. When the element is
+.PN XRecordCurrentClients ,
+.PN XRecordFutureClients ,
+or
+.PN XRecordAllClients ,
+the actions described
+in section 2.2 \*QSelecting Clients\*U
+are performed.
+.LP
+.PN XRecordRegisterClients
+returns zero if the request failed; otherwise, it
+returns nonzero.
+.LP
+.PN XRecordRegisterClients
+can generate
+.PN XRecordBadContext ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 3
+Deletions
+.LP
+An application uses
+the
+.PN XRecordUnregisterClients
+function to delete clients from a
+previously created
+record context, typically over its control connection to the X server.
+.LP
+.sM
+.FD 0
+Status
+XRecordUnregisterClients\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \
+RecordClientSpec *\fIclients\fP,
+.br
+ int \fInclients\fP\^)
+.FN
+.IP "\fIdisplay\fP " 1i
+Specifies the connection to the X server.
+.IP "\fIcontext\fP" 1i
+Specifies the record context to modify.
+.IP "\fIclients\fP" 1i
+Specifies the clients to stop recording.
+.IP "\fInclients\fP" 1i
+Specifies the number of clients.
+.LP
+.eM
+When an element in clients identifies a particular client, and the
+specified client is already targeted for recording in the given
+context, the client and the set of protocol to record for that
+client are deleted from the context. If the specified client is not
+targeted for recording, then no action is performed.
+.LP
+When the element is
+.PN XRecordCurrentClients ,
+all clients currently targeted
+for recording in context and their corresponding sets of
+protocol to record are deleted from context.
+.LP
+When the item is
+.PN XRecordFutureClients ,
+any future client connections will
+not automatically be targeted for recording in context.
+.LP
+When the element is
+.PN XRecordAllClients ,
+all clients currently targeted
+for recording in context and their corresponding sets of
+protocol to record are deleted from context. Any future
+client connections will not automatically be targeted for recording
+in context.
+.LP
+.PN XRecordUnregisterClients
+returns zero if the request failed; otherwise,
+it returns nonzero.
+.LP
+.PN XRecordUnregisterClients
+can generate
+.PN XRecordBadContext ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 2
+Query Context State
+.XS
+\*(SN Query Context State
+.XE
+.LP
+An application uses the
+.PN XRecordGetContext
+function to query the
+current state of a record context, typically over its control connection
+to the X server.
+.LP
+.sM
+.FD 0
+Status
+XRecordGetContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \
+ XRecordState **\fIstate_return\fP)
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP "\fIcontext\fP" 1i
+Specifies the record context to query.
+.IP "\fIstate_return\fP" 1i
+Specifies the address of a variable into which the function stores a
+pointer to the current state of the record context.
+.LP
+.eM
+The
+.PN XRecordState
+typedef returned by
+.PN XRecordGetContext
+is a structure
+with the following members:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+XRecordState:
+ Bool enabled
+ int datum_flags
+ unsigned long nclients
+ XRecordClientInfo **client_info
+.De
+.LP
+.eM
+The enabled member is set to the state of data transfer and is
+.PN True
+when the recording client has asked that recorded data be sent;
+otherwise it is
+.PN False .
+The datum_flags member is set to the value of these flags for
+this context.
+The nclients member is set to the
+number of
+.PN XRecordClientInfo
+structures returned. The client_info member
+is an array of pointers to
+.PN XRecordClientInfo
+structures that contain
+the protocol
+to record for each targeted client.
+The
+.PN XRecordClientInfo
+typedef is a structure with the following members:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+XRecordClientInfo:
+ XRecordClientSpec client
+ unsigned long nranges
+ XRecordRange **ranges
+.De
+.LP
+.eM
+The client member either identifies a client targeted for recording
+or is set to
+.PN XRecordFutureClients
+to describe how future clients
+will be automatically targeted for recording.
+The nranges member is set to the number of protocol
+ranges to be recorded for the specified client. The ranges member
+is an array of pointers to
+.PN XRecordRange
+structures, which specify the
+protocol ranges to record.
+.LP
+.PN XRecordGetContext
+returns zero if the request failed; otherwise, it
+returns nonzero.
+The context argument must specify a valid
+.PN XRecordContext
+or a
+.PN XRecordBadContext
+error results.
+.LP
+Recording clients should use the
+.PN XRecordFreeState
+function to free the state data returned by
+.PN XRecordGetContext .
+.LP
+.sM
+.FD 0
+void
+XRecordFreeState\^(XRecordState *\fIstate\fP)
+.FN
+.IP "\fIstate\fP" 1i
+Specifies the structure that is to be freed.
+.LP
+.eM
+.PN XRecordFreeState
+frees the data pointed to by state.
+If the argument does not match an
+.PN XRecordState
+pointer
+returned from a successful call to
+.PN XRecordGetContext ,
+or if
+.PN XRecordFreeState
+has already been
+called with it, the behavior is undefined.
+.NH 2
+Data Transfer
+.XS
+\*(SN Data Transfer
+.XE
+.LP
+An application uses the
+.PN XRecordEnableContext
+and
+.PN XRecordDisableContext
+functions to change the state of data transfer
+between the X server and the recording client. These functions allow
+the application to start recording and reporting of protocol data
+and to stop recording and reporting of protocol data, respectively.
+.NH 3
+Enable Context
+.XS
+\*(SN Enable Context
+.XE
+.LP
+To direct the X server to record and report protocol, a program
+uses
+.PN XRecordEnableContext ,
+typically over its data connection to the X
+server. The reporting of recorded protocol back to the recording client
+is handled by the following data structures and procedure definitions.
+Each recorded protocol element is reported
+to the recording client through an
+.PN XRecordInterceptData
+typedef,
+a structure with the following members:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .25i
+XRecordInterceptData:
+ XID id_base
+ Time server_time
+ unsigned long client_seq
+ int category
+ Bool client_swapped
+ unsigned char *data
+ unsigned long data_len
+.De
+.LP
+.eM
+The id_base member is set to the resource identifier base sent to the
+client in the connection setup reply and therefore identifies the client
+being recorded, except when the recorded protocol data is a device
+event that may have not been delivered to a client. In this case,
+id_base is set to zero. The server_time member
+is set to the time of the server when the protocol was recorded.
+It is the time that was attached to this protocol element in the reply,
+if so specified by datum_flags,
+or else the time from the header of the reply that contained
+this protocol element.
+The client_seq member is the sequence number of the recorded
+client's most recent request processed by the server at the time this
+protocol element was recorded, if this information were included in the
+recorded data; otherwise client_seq is 0.
+The category member is set to one of the following values:
+.PN XRecordStartOfData ,
+.PN XRecordFromServer ,
+.PN XRecordFromClient ,
+.PN XRecordClientStarted ,
+.PN XRecordClientDied ,
+or
+.PN XRecordEndOfData .
+.PN XRecordStartOfData
+is immediately sent as the first reply to confirm
+that the context is enabled.
+.PN XRecordFromClient
+indicates the protocol
+data is from the recorded client to the server (requests).
+.PN XRecordFromServer
+indicates the protocol data is from the server to the recorded client
+(replies, errors, events, or device events).
+.PN XRecordClientStarted
+indicates that the protocol data is the
+connection setup reply from the server.
+.PN XRecordClientDied
+indicates that the recorded
+client has closed its connection
+to the X server; there is no protocol data.
+.PN XRecordEndOfData
+indicates that the context has been disabled and that
+this is the last datum. It does not correspond to any protocol or
+state change in a recorded client. There is no protocol data.
+.LP
+The client_swapped member is set to
+.PN True
+if the byte order of the client being recorded is swapped relative to
+the recording client; otherwise, it is set to
+.PN False .
+All
+recorded protocol data is returned in the byte order of the recorded
+client. Therefore, recording clients are responsible for all byte swapping,
+if required.
+Device events are in the byte order of the
+recording client.
+For replies of category
+.PN XRecordStartOfData
+and
+.PN XRecordEndOfData ,
+client_swapped is set
+according
+to the byte order of the server relative to the recording client.
+.LP
+The data member contains the actual recorded
+protocol data.
+When category is set to
+.PN XRecordStartOfData ,
+.PN XRecordClientDied ,
+or
+.PN XRecordEndOfData ,
+no protocol
+data are contained in data.
+.\"
+.LP
+.\" copied exactly from the protocol document
+For the core X events
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+and
+.PN ButtonRelease ,
+the fields of a device event that contain
+valid information are time and detail.
+For the core X event
+.PN MotionNotify ,
+the fields of a device event that contain
+valid information are time, root,
+root-x and root-y.
+The time field refers to the time the event was generated by the
+device.
+.LP
+For the extension input device events
+.PN DeviceKeyPress ,
+.PN DeviceKeyRelease ,
+.PN DeviceButtonPress ,
+and
+.PN DeviceButtonRelease ,
+the fields of a device event that contain valid information are
+device, time, and detail.
+For
+.PN DeviceMotionNotify ,
+the valid device event fields are
+device and time.
+For the extension input device events
+.PN ProximityIn
+and
+.PN ProximityOut ,
+the fields of a device event that contain valid
+information are device and time.
+For the extension input device event
+.PN DeviceValuator ,
+the fields of a device event that contain valid information are
+device,
+num_valuators, first_valuator, and valuators.
+The time field refers to the time the event was generated by the
+device.
+.\"
+.LP
+The data_len member is set to the
+length of the actual recorded protocol data in 4-byte units.
+.LP
+When the context has been enabled, protocol data the recording client has
+previously expressed interest in is recorded and returned to the
+recording client via multiple replies.
+Because
+the X server batches
+the recorded data, more than one protocol element may be contained
+in the same reply packet.
+When a reply is received, a procedure of type
+.PN XRecordInterceptProc
+is
+called for each protocol
+element in the reply.
+.LP
+.sM
+.FD 0
+typedef void\^(*XRecordInterceptProc)
+.br
+ (XPointer \fIclosure\fP, XRecordInterceptData *\fIrecorded_data\fP)
+.FN
+.IP "\fIclosure\fP" 1i
+Pointer that was passed in when the context was enabled.
+.IP "\fIrecorded_data\fP" 1i
+A protocol element recorded by the server extension.
+.LP
+.eM
+This callback
+may use the control display connection (or any display connection
+other than the data connection).
+.LP
+Recording clients should use the
+.PN XRecordFreeData
+function
+to free the
+.PN XRecordInterceptData
+structure.
+.LP
+.sM
+.FD 0
+Status
+XRecordEnableContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \
+XRecordInterceptProc \fIcallback\fP,
+.br
+ XPointer \fIclosure\fP)
+.FN
+.IP "\fIdisplay\fP" 1i
+Specifies the connection to the X server.
+.IP "\fIcontext\fP" 1i
+Specifies the record context to enable.
+.IP "\fIcallback\fP" 1i
+Specifies the function to be called for each protocol element received.
+.IP "\fIclosure\fP" 1i
+Specifies data passed to \fIcallback.\fP
+.LP
+.eM
+.PN XRecordEnableContext
+enables data transfer between the recording client and
+the X server. All core and extension protocol received from or sent to
+targeted clients that the recording client has expressed
+interest in will be recorded and reported to the recording client.
+.LP
+.PN XRecordEnableContext
+returns zero if the request failed; otherwise, it
+returns nonzero. The context argument must specify a valid
+.PN XRecordContext
+or a
+.PN XRecordBadContext
+error results. The error
+.PN BadMatch
+results when data transfer is already enabled
+on the given context.
+.NH 3
+Enable Context Asynchronously
+.XS
+\*(SN Enable Context Asynchronously
+.XE
+.LP
+Because
+.PN XRecordEnableContext
+does not return until
+.PN XRecordDisableContext
+is executed on the control connection, a nonblocking interface in
+addition to
+.PN XRecordEnableContext
+is provided. This interface also
+enables data transfer; however, it does not block.
+.LP
+This interface is defined as follows:
+.LP
+.sM
+.FD 0
+Status
+XRecordEnableContextAsync\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP,
+.br
+ XRecordInterceptProc \fIcallback\fP, XPointer \fIclosure\fP)
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcontext\fP 1i
+Specifies the record context to enable.
+.IP \fIcallback\fP 1i
+Specifies the function to be called for each protocol element received.
+.IP \fIclosure\fP 1i
+Data passed to \fIcallback\fP.
+.LP
+.eM
+.PN XRecordEnableContextAsync
+enables data transfer between the recording
+client and the X server just as
+.PN XRecordEnableContext
+does.
+Unlike
+.PN XRecordEnableContext ,
+it does not wait for the context to be disabled
+before returning;
+.PN XRecordEnableContextAsync
+returns as soon as the
+.PN XRecordStartOfData
+reply has been received and processed.
+.LP
+.PN XRecordEnableContextAsync
+returns zero if it could not allocate the
+necessary memory and nonzero if it sent the request successfully to
+the server. The context argument must specify a valid
+.PN XRecordContext
+or a
+.PN XRecordBadContext
+error results. The error
+.PN BadMatch
+results when data transfer is already enabled.
+.LP
+Each time it reads data from the server connection, Xlib will check
+for incoming replies and call \fIcallback\fP as necessary. The
+application may direct Xlib explicitly to check for Record data with
+the
+.PN XRecordProcessReplies
+function.
+.LP
+.sM
+.FD 0
+void
+XRecordProcessReplies\^(Display *\fIdisplay\fP)
+.FN
+.IP \fIdisplay\fP 11
+Specifies the connection to the X server.
+.LP
+.eM
+.PN XRecordProcessReplies
+will check for any replies that have not yet
+been processed by the application. The asynchronous callback will be called
+as appropriate.
+.PN XRecordProcessReplies
+returns when all immediately
+available replies have been processed. It does not block.
+.LP
+.sp
+To free the data passed to the
+.PN XRecordInterceptProc
+callback,
+use
+.PN XRecordFreeData .
+.LP
+.sM
+.FD 0
+void
+XRecordFreeData\^(XRecordInterceptData *\fIdata\fP)
+.FN
+.IP "\fIdata\fP" 1i
+Specifies the structure that is to be freed.
+.LP
+.eM
+.PN XRecordFreeData
+frees the data pointed to by data.
+If the argument does not match an
+.PN XRecordInterceptData
+pointer earlier
+passed to an
+.PN XRecordInterceptProc
+callback or if
+.PN XRecordFreeData
+has
+already been called with it, the behavior is undefined.
+.NH 3
+Disable Context
+.XS
+\*(SN Disable Context
+.XE
+.LP
+To direct the X server to halt the reporting of recorded protocol, the
+program executes
+.PN XRecordDisableContext ,
+typically over its
+control connection to the X server.
+.LP
+.sM
+.FD 0
+Status
+XRecordDisableContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP)
+.FN
+.IP "\fIdisplay\fP" 1i
+Specifies the connection to the X server.
+.IP "\fIcontext\fP" 1i
+Specifies the record context to disable.
+.LP
+.eM
+The
+.PN XRecordDisableContext
+function disables context, stopping
+all recording over its data connection.
+Any complete protocol elements for context
+that were buffered in the server will be sent to the
+recording client rather than being discarded.
+If a program attempts to disable an
+.PN XRecordContext
+that has not been enabled, no action will take place.
+.LP
+.PN XRecordDisableContext
+returns zero if the request failed; otherwise, it
+returns nonzero. The context argument must specify a valid
+.PN XRecordContext
+or an
+.PN XRecordBadContext
+error results.
+.NH 2
+ID Base Mask
+.XS
+\*(SN ID Base Mask
+.XE
+.LP
+To determine the mask the server uses for the client ID base, use
+.PN XRecordIdBaseMask .
+.LP
+.sM
+.FD 0
+XID
+XRecordIdBaseMask\^(Display *\fIdisplay\fP)
+.FN
+.IP "\fIdisplay\fP" 1i
+Specifies the connection to the X server.
+.LP
+.eM
+The
+.PN XRecordIdBaseMask
+function returns the resource ID mask passed to the client by the
+server at connection setup.
+.NH 2
+Free Context
+.XS
+\*(SN Free Context
+.XE
+.LP
+Before terminating, the program should request that the server
+free the record context. This is done with the
+.PN XRecordFreeContext
+function, typically over the record client's control connection
+to the X server.
+.LP
+.sM
+.FD 0
+Status
+XRecordFreeContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP)
+.FN
+.IP "\fIdisplay\fP" 1i
+Specifies the connection to the X server.
+.IP "\fIcontext\fP" 1i
+Specifies the record context to free.
+.LP
+.eM
+The
+.PN XRecordFreeContext
+function frees the given context for the
+requesting client. Freeing a record context releases the clients
+targeted for recording and their respective protocol ranges to
+record. If protocol data is being reported to the recording client,
+generally over the data connection to the X server, the reporting
+ceases as if
+.PN XRecordDisableContext
+had been called on the given context.
+When a program terminates without freeing
+its record context, the X server will automatically free that context
+on behalf of the client.
+.LP
+.PN XRecordFreeContext
+returns zero if the request failed; otherwise,it
+returns nonzero. The context argument must specify a valid
+.PN XRecordContext
+or a
+.PN XRecordBadContext
+error results.
+.\"
+.\" Local Variables:
+.\" time-stamp-start: "^\\.ds Ts "
+.\" time-stamp-end: "\\\\\""
+.\" time-stamp-format: "%d %3b %y (%H:%02M)"
+.\" End:
diff --git a/specs/Xext/security.tex b/specs/Xext/security.tex
new file mode 100644
index 0000000..269f363
--- /dev/null
+++ b/specs/Xext/security.tex
@@ -0,0 +1,830 @@
+% $Xorg: security.tex,v 1.3 2000/08/17 19:42:36 cpqbld Exp $
+\documentstyle{article}
+\pagestyle{myheadings}
+\markboth{Security Extension Specification}{Security Extension Specification}
+\setlength{\parindent}{0 pt}
+\setlength{\parskip}{6pt}
+\setlength{\topsep}{0 pt}
+
+% Request names are literal symbols; therefore, use the same font for both.
+\newcommand{\requestname}[1]{{\tt #1}}
+\newcommand{\literal}[1]{\mbox{\tt #1}}
+
+\newcommand{\encodingsection}[1]{{\bf #1}}
+\newcommand{\requestsection}[1]{{\bf #1}}
+
+% Font treatment of type names differs between protocol and library sections.
+\newcommand{\libtypename}[1]{\mbox{\tt #1}}
+\newcommand{\typename}[1]{\mbox{\rm #1}} % default font
+\newcommand{\typeargname}[1]{\mbox{\rm #1}} % default font
+\newcommand{\argname}[1]{\mbox{\it #1}}
+\newcommand{\argdecl}[2]{\argname{#1} & : \typename{#2}\\}
+\newcommand{\areplyargdecl}[2]{#1 & : \typename{#2}\\}
+
+\newenvironment{arequest}[1]{\requestsection{#1} \\ \begin{tabular}{ll}}{\end{tabular}}
+\newcommand{\areply}{$\Rightarrow$\\}
+
+\newcommand{\etabstops}{\hspace*{0cm}\=\hspace*{1cm}\=\hspace*{2.5cm}\=\hspace*{2.5cm}\=\kill}
+
+\newcommand{\eargdecl}[3]{\> #1 \> \typename{#2} \> \> #3 \\}
+\newcommand{\econstdecl}[2]{\> \> #1 \> #2 \\}
+
+\newenvironment{keeptogether}{\vbox \bgroup}{\egroup}
+
+\newenvironment{erequest}[3]{\pagebreak[3] \begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops \eargdecl{1}{CARD8}{major-opcode} \eargdecl{1}{#2}{minor-opcode} \eargdecl{2}{#3}{request length}}{\end{tabbing} \end{keeptogether}}
+
+\newenvironment{estruct}[1]{\pagebreak[3] \begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
+
+\newenvironment{eerror}[1]{\begin{keeptogether} \encodingsection{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
+
+\newenvironment{etypedef}[1]{\begin{keeptogether} \typename{#1} \begin{tabbing} \etabstops }{\end{tabbing} \end{keeptogether}}
+
+\newcommand{\cfunctionname}[1]{\mbox{\tt #1}}
+\newcommand{\cfunctiondecl}[1]{\mbox{\rm #1}}
+\newcommand{\cargdecl}[2]{\penalty -1\typename{#1} \argname{#2}}
+\newenvironment{cfunction}[2]{\begin{sloppypar}\begin{keeptogether}\vspace{5mm}\typename{#1}\\ \cfunctiondecl{#2}\ (}{)\end{keeptogether}\end{sloppypar}{\hangafter=2 \hangindent=20pt \raggedright\par}}
+
+% make things easier with all the long names
+\spaceskip .3333em plus 5em
+\tolerance=2000
+
+\begin{document}
+
+\title{Security Extension Specification\\Version 7.1\\X11 Release 6.4}
+\author{David P. Wiggins\\X Consortium, Inc.}
+\date{November 15, 1996}
+\maketitle
+\thispagestyle{empty}
+
+\eject
+
+Copyright \copyright 1996 X Consortium, Inc.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+\eject
+
+\section{Introduction}
+
+The Security extension contains new protocol needed to provide
+enhanced X server security. The Security extension should not be
+exposed to untrusted clients (defined below).
+
+\section{Requests}
+
+\subsection{SecurityQueryVersion}
+
+This request returns the major and minor version numbers of this
+extension.
+
+% start marker
+\begin{arequest}{SecurityQueryVersion}
+\argdecl{client-major-version}{CARD16}
+\argdecl{client-minor-version}{CARD16}
+\areply
+\areplyargdecl{server-major-version}{CARD16}
+\areplyargdecl{server-minor-version}{CARD16}
+\end{arequest}
+% end marker
+
+The client-major-version and client-minor-version
+numbers indicate what version of the protocol the client wants the
+server to implement. The server-major-version and the
+server-minor-version numbers returned indicate the protocol
+this extension actually supports. This might not equal the version
+sent by the client. An implementation can (but need not) support more
+than one version simultaneously. The server-major-version
+and server-minor-version allow the creation of future
+revisions of the Security protocol that may be
+necessary. In general, the major version would increment for
+incompatible changes, and the minor version would increment for small,
+upward-compatible changes. Servers that support the protocol defined
+in this document will return a server-major-version of one
+(1), and a server-minor-version of zero (0).
+
+Clients using the Security extension must issue a
+\requestname{SecurityQueryVersion} request before any other Security
+request in order to negotiate a compatible protocol version;
+otherwise, the client will get undefined behavior (Security may or may
+not work).
+
+\subsection{SecurityGenerateAuthorization}
+
+This request causes the server to create and return a new
+authorization with specific characteristics. Clients can subsequently
+connect using the new authorization and will inherit some of the
+characteristics of the authorization.
+
+% start marker
+\begin{arequest}{SecurityGenerateAuthorization}
+\argdecl{authorization-protocol-name}{STRING8}
+\argdecl{authorization-protocol-data}{STRING8}
+\argdecl{value-mask}{BITMASK}
+\argdecl{value-list}{LISTofVALUE}
+\areply
+\areplyargdecl{authorization-id}{AUTHID}
+\areplyargdecl{authorization-data-return}{STRING8}
+\end{arequest}
+
+Errors: \literal{AuthorizationProtocol, Value, Alloc}
+% end marker
+
+authorization-protocol-name is the name of the authorization method
+for which the server should generate a new authorization that
+subsequent clients can use to connect to the server. If the
+authorization-protocol-name is not one that the server supports, or if
+authorization-protocol-data does not make sense for the given
+authorization-protocol-name, an AuthorizationProtocol error results.
+
+authorization-protocol-data is authorization-method specific data that
+can be used in some way to generate the authorization.
+
+Note: in this version of the extension, the only authorization method
+required to be supported is ``MIT-MAGIC-COOKIE-1'' with any amount of
+authorization-protocol-data (including none). The server may use the
+authorization-protocol-data as an additional source of randomness used
+to generate the authorization. Other authorization methods can supply
+their own interpretation of authorization-protocol-data.
+
+The value-mask and value-list specify attributes of the authorization
+that are to be explicitly initialized. The possible values are:
+
+\begin{tabular}{lll}
+\\ \hline
+Attribute & Type & Default \\ \hline
+timeout & CARD32 & 60 \\
+group & XID or None & None \\
+trust-level & \{SecurityClientTrusted, \\
+ & SecurityClientUntrusted\} & SecurityClientUntrusted \\
+event-mask & SecurityAuthorizationRevoked, \\
+ & or None & None \\ \hline
+\\
+\end{tabular}
+
+timeout is the timeout period in seconds for this authorization. A
+timeout value of zero means this authorization will never expire. For
+non-zero timeout values, when timeout seconds have elapsed since the
+last time that the authorization entered the state of having no
+connections authorized by it, and if no new connections used the
+authorization during that time, the authorization is automatically
+purged. (Note that when an authorization is created, it enters the
+state of having no connections authorized by it.) Subsequent
+connection attempts using that authorization will fail. This is to
+facilitate ``fire and forget'' launching of applications.
+
+group is an application group ID as defined by the Application Group
+extension, or None. Any other values will cause a Value error. When
+a group is destroyed, all authorizations specifying that group are
+revoked as described under the SecurityRevokeAuthorization request.
+The Application Group extension attaches additional semantics to the
+group.
+
+trust-level tells whether clients using the authorization are trusted
+or untrusted. If trust-level is not one of the constants
+SecurityClientTrusted or SecurityClientUntrusted, a Value error
+results.
+
+event-mask defines which events the client is interested in for
+this authorization. When the authorization expires or is revoked
+if event-mask contains SecurityAuthorizationRevoked a
+SecurityAuthorizationRevoked event is reported to the client.
+
+The SecurityAuthorizationRevoked event contains the following field:
+
+\begin{tabular}{ll}
+\\ \hline
+Field & Type \\ \hline
+authorization-id & AUTHID \\ \hline
+\\
+\end{tabular}
+
+where authorization-id is the identification of the authorization
+that was revoked.
+
+If an invalid value-mask is specified, a Value error occurs.
+
+The returned authorization-id is a non-zero value that uniquely
+identifies this authorization for use in other requests. The value
+space for type AUTHID is not required to be disjoint from values
+spaces of other core X types, e.g. resource ids, atoms, visual ids,
+and keysyms. Thus, a given numeric value might be both a valid
+AUTHID and a valid atom, for example.
+
+authorization-data-return is the data that a client should use in some
+authorization-method-specific way to make a connection with this
+authorization. For ``MIT-MAGIC-COOKIE-1,'' authorization-data-return
+should be sent as the authorization-protocol-data in the connection setup
+message. It is not required that other authorization methods use
+authorization-data-return this way.
+
+\subsection{SecurityRevokeAuthorization}
+
+This request deletes an authorization created by
+SecurityGenerateAuthorization.
+
+% start marker
+\begin{arequest}{SecurityRevokeAuthorization}
+\argdecl{authorization-id}{AUTHID}
+\end{arequest}
+
+Errors: \literal{Authorization}
+% end marker
+
+If authorization-id does not name a valid authorization, an
+Authorization error occurs. Otherwise, this request kills all clients
+currently connected using the authorization specified by
+authorization-id. The authorization is deleted from the server's
+database, so future attempts by clients to connect with this
+authorization will fail.
+
+\section{Changes to Core Requests}
+
+A server supporting this extension modifies the handling of some core
+requests in the following ways.
+
+\subsection{Resource ID Usage}
+
+If an untrusted client makes a request that specifies a resource ID
+that is not owned by another untrusted client, a protocol error is
+sent to the requesting client indicating that the specified resource
+does not exist. The following exceptions apply. An untrusted client
+can:
+
+\begin{enumerate}
+
+\item use the QueryTree, GetGeometry, and TranslateCoordinates requests
+without restriction.
+\item use colormap IDs that are returned in the default-colormap
+field of its connection setup information in any colormap requests.
+\item specify a root window as:
+
+\begin{enumerate}
+
+\item the drawable field of CreatePixmap, CreateGC, and QueryBestSize.
+\item the parent field of CreateWindow.
+\item the window field of CreateColormap, ListProperties, and GetWindowAttributes.
+\item the grab-window or confine-to fields of GrabPointer.
+\item the grab-window field of UngrabButton.
+\item the destination of SendEvent, but only if all of the following
+are true. (These conditions cover all the events that the ICCCM
+specifies with a root window destination.)
+
+\begin{enumerate}
+
+\item The propogate field of SendEvent is False.
+\item The event-mask field of SendEvent is ColormapChange,
+StructureNotify, or the logical OR of SubstructureRedirect with
+SubstructureNotify.
+\item The event type being sent is UnmapNotify, ConfigureRequest,
+or ClientMessage.
+
+\end{enumerate}
+
+\item the window field of ChangeWindowAttributes, but only if
+the value-mask contains only event-mask and the corresponding value
+is StructureNotify, PropertyChange, or the logical OR of both.
+
+\end{enumerate}
+\end{enumerate}
+
+ISSUE: are root window exceptions needed for these? WarpPointer,
+ReparentWindow (parent), CirculateWindow, QueryPointer (emacs does
+this), GetMotionEvents.
+
+\subsection{Extension Security}
+
+This extension introduces the notion of secure and insecure
+extensions. A secure extension is believed to be safe to use by
+untrusted clients; that is, there are no significant security concerns
+known that an untrusted client could use to destroy, modify, or steal
+data of trusted clients. This belief may be founded on a careful
+analysis of the extension protocol, its implementation, and measures
+taken to ``harden'' the extension to close security weaknesses. All
+extensions not considered secure are called insecure. The
+implementation details of how an extension is identified as
+as secure or insecure are beyond the scope of this specification.
+
+ListExtensions will only return names of secure extensions to
+untrusted clients.
+
+If an untrusted client uses QueryExtension on an insecure extension
+that the server supports, the reply will have the present field set to
+False and the major-opcode field set to zero to indicate that the
+extension is not supported.
+
+If an untrusted client successfully guesses the major opcode of an
+insecure extension, attempts by it to execute requests with that major
+opcode will fail with a Request error.
+
+\subsection{Keyboard Security}
+
+The protocol interpretation changes in this section are intended to
+prevent untrusted applications from stealing keyboard input that was
+meant for trusted clients and to prevent them from interfering with
+the use of the keyboard.
+
+The behavior of some keyboard-related requests and events is modified
+when the client is untrusted depending on certain server state at the
+time of request execution or event generation. Specifically, if a
+hypothetical keyboard event were generated given the current input
+focus, pointer position, keyboard grab state, and window event
+selections, and if that keyboard event would not be delivered to any
+untrusted client, the following changes apply:
+
+\begin{enumerate}
+
+\item The bit vector representing the up/down state of the keys
+returned by QueryKeymap and KeymapNotify is all zeroes.
+\item GrabKeyboard returns a status of AlreadyGrabbed.
+\item SetInputFocus does nothing. Note that this means
+the Globally Active Input and WM\_TAKE\_FOCUS mechanisms specified
+in the ICCCM will not work with untrusted clients.
+\item Passive grabs established by GrabKey that would otherwise have
+activated do not activate.
+
+\end{enumerate}
+
+If an untrusted client attempts to use any of the following requests,
+the only effect is that the client receives an Access error:
+SetModifierMapping, ChangeKeyboardMapping, ChangeKeyboardControl.
+
+If an InputOnly window owned by an untrusted client has a parent owned
+by a trusted client, all attempts to map the window will be ignored.
+This includes mapping attempts resulting from MapWindow,
+MapSubwindows, ReparentWindow, and save-set processing.
+
+\subsection{Image Security}
+
+It should be impossible for an untrusted client to retrieve the image
+contents of a trusted window unless a trusted client takes action to
+allow this. We introduce the following defenses in support of this
+requirement.
+
+The restrictions on resource ID usage listed above prevent untrusted
+clients from using GetImage directly on windows not belonging to
+trusted clients.
+
+If an untrusted client tries to set the background-pixmap attribute of
+an untrusted window to None, the server will instead use a
+server-dependent background which must be different than None.
+
+The X protocol description of GetImage states that the returned
+contents of regions of a window obscured by noninferior windows are
+undefined if the window has no backing store. Some implementations
+return the contents of the obscuring windows in these regions. When
+an untrusted client uses GetImage, this behavior is forbidden; the
+server must fill the obscured regions in the returned image with a
+server-dependent pattern.
+
+If an untrusted window has trusted inferiors, their contents are
+vulnerable to theft via GetImage on the untrusted parent, as well as
+being vulnerable to destruction via drawing with subwindow-mode
+IncludeInferiors on the untrusted parent. An untrusted window having
+trusted inferiors can only occur at the request of a trusted client.
+It is expected to be an unusual configuration.
+
+\subsection{Property Security}
+
+Unlike the other security provisions described in this document,
+security for property access is not amenable to a fixed policy because
+properties are used for inter-client communication in diverse ways and
+may contain data of varying degrees of sensitivity. Therefore, we
+only list the possible restrictions the server may decide to impose on
+use of properties on trusted windows by untrusted clients. How the
+server chooses which restrictions from this list to apply to a
+particular property access is implementation dependent
+\footnote{In the X Consortium server implementation, property access
+is controlled by a configuration file; see the -sp option in the
+Xserver(1) manual page.}.
+
+The X Protocol property requests are ChangeProperty, GetProperty,
+DeleteProperty, RotateProperties, and ListProperties. For these
+requests, the server can allow the request to execute normally (as if
+it had been issued by a trusted client), ignore the request completely
+(as if it were a NoOperation), or ignore the request except to send an
+Atom error to the client. Ignoring a ListProperties request means
+replying that the window has no properties. ListProperties may also
+reply with a subset of the existing properties if the server is doing
+property hiding; see below. An ignored GetProperty request may reply
+that the property does not exist, or that it exists but contains no
+data.
+
+The server may decide to hide certain properties on certain windows
+from untrusted clients\footnote{The X Consortium server
+implementation does not currently provide a way to hide properties.}.
+If a property is to be hidden, it must be done consistently to avoid
+confusing clients. This means that for untrusted clients:
+
+\begin{itemize}
+
+\item That property should {\em not} be returned by ListProperties.
+\item PropertyNotify events should {\em not} be sent for that property.
+\item GetProperty on that property should reply that the property
+does not exist (the return type is None, the format and bytes-after
+are zero, and the value is empty).
+
+\end{itemize}
+
+For a property that the server is protecting but not hiding,
+consistency must also be maintained:
+
+\begin{itemize}
+
+\item That property {\em should} be returned by ListProperties.
+\item PropertyNotify events {\em should} be sent for that property.
+\item GetProperty on that property should reply that the property
+exists (if it really does) but the value is empty (return type and format
+are their real values, and the "length of value" field in the reply
+is zero).
+
+\end{itemize}
+
+\subsection{Miscellaneous Security}
+
+If an untrusted client attempts to use ChangeHosts, ListHosts, or
+SetAccessControl, the only effect is that the client receives an
+Access error.
+
+If an untrusted client attempts to use ConvertSelection on a selection
+with a trusted selection owner window, the server generates a
+SelectionNotify event to the requestor with property None.
+
+\section{New Authorization Method}
+
+This extension includes a new authorization method named
+``XC-QUERY-SECURITY-1''. Its purpose is to allow an external agent such
+as the X firewall proxy to probe an X server to determine whether that
+server meets certain security criteria without requiring the agent to
+have its own authorization for that server. The agent may use the
+returned information to make a decision. For example, the X firewall
+proxy may choose not to forward client connections to servers that do
+not meet the criteria.
+
+To use this authorization method, the client (or proxy) sends
+``XC-QUERY-SECURITY-1'' as the authorization-protocol-name in the
+initial connection setup message. The authorization-protocol-data may
+be empty or may contain additional security criteria desribed below.
+If the success field of the server's reply is Authenticate, the server
+supports the security extension, and the server meets all specified
+additional security criteria. In this case, the client should resend
+the initial connection setup message substituting the authorization
+protocol name and data that should be used to authorize the
+connection. If the success field of the server's reply is anything
+other than Authenticate, either the server does not support the
+security extension, does not meet (or cannot determine if it meets)
+all of the additional security criteria, or chooses for internal
+reasons not to answer with Authenticate. In this case, the client
+should close the connection.
+
+If the authorization-protocol-data sent with ``XC-QUERY-SECURITY-1'' is
+not empty, it specifies additional security criteria for the server to
+check, as follows.
+
+\begin{arequest}{authorization-protocol-data}
+\argdecl{policy-mask}{BITMASK}
+\argdecl{policies}{LISTofSECURITYPOLICY}
+\end{arequest}
+
+The policy-mask field is any logical-OR combination of the constants
+Extensions and SitePolicies. For each bit set in policy-mask, there
+is a SECURITYPOLICY element in policies. The nth element in policies
+corresponds to the nth 1-bit in policy-mask, counting upward from bit
+0.
+
+\begin{arequest}{SECURITYPOLICY}
+\argdecl{policy-type}{\{Disallow, Permit\}}
+\argdecl{names}{LISTofSTR}
+\end{arequest}
+
+For a SECURITYPOLICY corresponding to policy-mask Extensions, if
+policy-type is Disallow the server is required to consider as insecure
+all extensions given in names. No policy is specified for extensions
+not listed in names. If policy-type is Permit the server may consider
+only those extensions given in names to be secure; all other
+extensions must be treated as insecure. If these constraints are not
+met, the server should not return Authenticate in the success field of
+the reply. Servers can but need not dynamically configure themselves
+in response to an Extensions SECURITYPOLICY; a conforming server might
+simply compare the policy with a compiled-in table of extensions and
+their security status.
+
+
+For a SECURITYPOLICY corresponding to policy-mask SitePolicies,
+policy-type Disallow means the server must not have been configured
+with any of the site policies given in names. Policy-type Permit
+means the server must have been configured with at least one of the
+site policies given in names. If these constraints are not met, the
+server should not return Authenticate in the success field of the
+reply.
+
+SitePolicies provide a way to express new forms of security-relevant
+information that could not be anticipated at the time of this writing.
+For example, suppose the server is found to have a critical security
+defect. When a fix is developed, a site policy string could be
+associated with the fix. Servers with the fix would advertise that
+site policy, and the X firewall proxy would specify that site policy
+in a SECURITYPOLICY with policy-type Permit.
+
+\section{Encoding}
+
+Please refer to the X11 Protocol Encoding document as this section uses
+syntactic conventions and data types established there.
+
+The name of this extension is ``SECURITY''.
+
+\subsection{Types}
+
+AUTHID: CARD32
+
+\subsection{Request Encoding}
+
+% start marker
+\begin{erequest}{SecurityQueryVersion}{0}{2}
+\eargdecl{2}{CARD16}{client-major-version}
+\eargdecl{2}{CARD16}{client-minor-version}
+\areply
+\eargdecl{1}{1}{Reply}
+\eargdecl{1}{}{unused}
+\eargdecl{2}{CARD16}{sequence number}
+\eargdecl{4}{0}{reply length}
+\eargdecl{2}{CARD16}{server-major-version}
+\eargdecl{2}{CARD16}{server-minor-version}
+\eargdecl{20}{}{unused}
+\end{erequest}
+% end marker
+
+% start marker
+\begin{erequest}{SecurityRevokeAuthorization}{2}{2}
+\eargdecl{4}{AUTHID}{authorization-id}
+\end{erequest}
+% end marker
+
+% start marker
+\begin{erequest}{SecurityGenerateAuthorization}{1}{3 + (m+n+3)/4 + s}
+\eargdecl{2}{CARD16}{m, number of bytes in authorization protocol name}
+\eargdecl{2}{CARD16}{n, number of bytes in authorization data}
+\eargdecl{m}{STRING8}{authorization protocol name}
+\eargdecl{n}{STRING8}{authorization protocol data}
+\eargdecl{p}{}{unused, p=pad(m+n)}
+\eargdecl{4}{BITMASK}{value-mask (has s bits set to 1)}
+\econstdecl{\#x00000001}{timeout}
+\econstdecl{\#x00000002}{trust-level}
+\econstdecl{\#x00000004}{group}
+\econstdecl{\#x00000008}{event-mask}
+\eargdecl{4s}{LISTofVALUE}{value-list}
+\\
+VALUES
+\\
+\eargdecl{4}{CARD32}{timeout}
+\eargdecl{4}{}{trust-level}
+\econstdecl{0}{SecurityClientTrusted}
+\econstdecl{1}{SecurityClientUntrusted}
+\eargdecl{4}{XID}{group}
+\econstdecl{0}{None}
+\eargdecl{4}{CARD32}{event-mask}
+\econstdecl{\#x00000001}{SecurityAuthorizationRevoked}
+\areply
+\eargdecl{1}{1}{Reply}
+\eargdecl{1}{}{unused}
+\eargdecl{2}{CARD16}{sequence number}
+\eargdecl{4}{(q+3)/4}{reply length}
+\eargdecl{4}{AUTHID}{authorization-id}
+\eargdecl{2}{CARD16}{data-length}
+\eargdecl{18}{}{unused}
+\eargdecl{q}{STRING8}{authorization-data-return}
+\eargdecl{r}{}{unused, r=pad(q)}
+\end{erequest}
+% end marker
+
+\subsection{Event Encoding}
+
+% start marker
+\begin{eerror}{SecurityAuthorizationRevoked}
+\eargdecl{1}{0+extension event base}{code}
+\eargdecl{1}{}{unused}
+\eargdecl{2}{CARD16}{sequence number}
+\eargdecl{4}{AUTHID}{authorization id}
+\eargdecl{24}{}{unused}
+\end{eerror}
+% end marker
+
+\subsection{Authorization Method Encoding}
+
+For authorization-protocol-name ``XC-QUERY-SECURITY-1'', the
+authorization-protocol-data is interpreted as follows:
+
+% start marker
+\begin{estruct}{authorization-protocol-data}
+\eargdecl{1}{BITMASK}{policy-mask}
+\econstdecl{\#x00000001}{Extensions}
+\econstdecl{\#x00000002}{SitePolicies}
+\eargdecl{m}{LISTofSECURITYPOLICY}{policies}
+\end{estruct}
+% end marker
+
+% start marker
+\begin{estruct}{SECURITYPOLICY}
+\eargdecl{1}{}{policy-type}
+\econstdecl{0}{Permit}
+\econstdecl{1}{Disallow}
+\eargdecl{1}{CARD8}{number of STRs in names}
+\eargdecl{n}{LISTofSTR}{names}
+\end{estruct}
+% end marker
+
+LISTofSTR has the same encoding as in the X protocol: each STR is a
+single byte length, followed by that many characters, and there is no
+padding or termination between STRs.
+
+\section{C Language Binding}
+
+The header for this extension is \verb|<X11/extensions/security.h>|. All
+identifier names provided by this header begin with XSecurity.
+
+All functions that have return type \libtypename{Status} will return
+nonzero for success and zero for failure.
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Status}{XSecurityQueryExtension}
+\cargdecl{Display *}{dpy},
+\cargdecl{int *}{major\_version\_return},
+\cargdecl{int *}{minor\_version\_return}
+\end{cfunction}
+% end marker
+
+XSecurityQueryExtension sets major\_version\_return
+and minor\_version\_return to the major and minor Security protocol
+version supported by the server. If the Security library is
+compatible with the version returned by the server, it returns
+nonzero. If dpy does not support the Security extension, or if there
+was an error during communication with the server, or if the server
+and library protocol versions are incompatible, it returns zero. No
+other XSecurity functions may be called before this function. If a
+client violates this rule, the effects of all subsequent XSecurity
+calls that it makes are undefined.
+
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Xauth *}{XSecurityAllocXauth}
+\cargdecl{void}{}
+\end{cfunction}
+% end marker
+
+In order to provide for future evolution, Xauth structures are used to
+pass and return authorization data, and the library provides ways to
+allocate and deallocate them.
+
+XSecurityAllocXauth must be used to allocate the
+Xauth structure that is passed to XSecurityGenerateAuthorization.
+
+For the purposes of the Security extension, the Xauth structure has
+the following fields:
+
+\begin{tabular}{lll}
+\\ \hline
+Type & Field name & Description \\ \hline
+\typename{unsigned short} & \argname{name\_length} & number of bytes in name \\
+\typename{char *} & \argname{name} & authorization protocol name \\
+\typename{unsigned short} & \argname{data\_length} & number of bytes in data \\
+\typename{char *} & \argname{data} & authorization protocol data \\ \hline
+\\
+\end{tabular}
+
+The Xauth structure returned by this function is initialized as
+follows: name\_length and data\_length are zero, and name and data are
+NULL.
+
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{void}{XSecurityFreeXauth}
+\cargdecl{Xauth *}{auth}
+\end{cfunction}
+% end marker
+
+XSecurityFreeXauth must be used to free Xauth structures
+allocated by XSecurityAllocXauth or returned by
+XSecurityGenerateAuthorization. It is the caller's responsibility to
+fill in the name and data fields of Xauth structures allocated with
+XSecurityAllocXauth, so this function will not attempt to free
+them. In contrast, all storage associated with Xauth structures
+returned from XSecurityGenerateAuthorization will be freed by this
+function, including the name and data fields.
+
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Bool}{XSecurityRevokeAuthorization}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSecurityAuthorization}{auth\_id}
+\end{cfunction}
+% end marker
+
+XSecurityRevokeAuthorization deletes the authorization specified by
+auth\_id, which must be a value returned in the auth\_id\_return
+parameter of XSecurityGenerateAuthorization. All clients that
+connected with that authorization are be killed. Subsequently,
+clients that attempt to connect using that authorization will be
+refused.
+
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+\begin{cfunction}{Xauth *}{XSecurityGenerateAuthorization}
+\cargdecl{Display *}{dpy},
+\cargdecl{Xauth *}{auth\_in},
+\cargdecl{unsigned long}{valuemask},
+\cargdecl{XSecurityAuthorizationAttributes *}{attributes},
+\cargdecl{XSecurityAuthorization *}{auth\_id\_return}
+\end{cfunction}
+% end marker
+
+XSecurityGenerateAuthorization creates a new authorization with the
+specified attributes. The auth\_in argument must be allocated by
+XSecurityAllocXauth. The name and name\_length fields of
+auth\_in should be initialized to the authorization protocol name and
+its length in characters respectively. If there is authorization
+data, the data and data\_length fields of auth\_in should be
+initialized to the data and its length in characters respectivley.
+The library does not assume that name and data are null-terminated
+strings. The auth\_in argument must be freed with
+XSecurityFreeXauth.
+
+The XSecurityAuthorizationAttributes structure has the following
+fields:
+
+\begin{tabular}{lll}
+\\ \hline
+Type & Field name & Mask \\ \hline
+\typename{unsigned int} & \argname{trust\_level} & XSecurityTrustLevel \\
+\typename{unsigned int} & \argname{timeout} & XSecurityTimeout \\
+\typename{XID} & \argname{group} & XSecurityGroup \\
+\typename{long} & \argname{event\_mask} & XSecurityEventMask \\ \hline
+\\
+\end{tabular}
+
+These correspond to the trust-level, timeout, group,
+and event-mask described in
+the SecurityGenerateAuthorization protocol request. The caller can
+fill in values for any subset of these attributes. The valuemask
+argument must be the bitwise OR of the symbols listed in the Mask
+column for all supplied attributes.
+The event\_mask attribute can be None, XSecurityAuthorizationRevokedMask,
+or XSecurityAllEventMasks. In this revision of the protocol specification
+XSecurityAllEventMasks is equivalent to XSecurityAuthorizationRevokedMask.
+If the caller does not need to
+specify any attributes, the attributes argument can be NULL, and the
+valuemask argument must be zero.
+
+If the function fails, NULL is returned and auth\_id\_return is filled
+in with zero. Otherwise, a pointer to an Xauth structure is returned.
+The name and name\_length fields of the returned Xauth structure will
+be copies of the name that was passed in, and the data and
+data\_length fields will be set to the authorization data returned by
+the server. The caller should not assume that name and data are
+null-terminated strings. If no authorization data was returned by the
+server, the data and data\_length fields will be set to NULL and zero
+repectively. The returned Xauth structure must be freed with
+XSecurityFreeXauth; the caller should not use any other means free the
+structure or any of its components. The auth\_id\_return argument
+will be filled in with the non-zero authorization id of the created
+authorization.
+
+\end{keeptogether}
+
+% start marker
+\begin{keeptogether}
+The XSecurityAuthorizationRevokedEvent structure has the following fields:
+
+\begin{tabular}{lll}
+\\ \hline
+Type & Field name & Description \\ \hline
+\typename{int} & \argname{type} & event base + \\
+ & & XSecurityAuthorizationRevoked \\
+\typename{unsigned long} & \argname{serial} & \# of last request processed by server \\
+\typename{Bool} & \argname{send\_event} & true if this came from SendEvent \\
+\typename{Display*} & \argname{display} & Display the event was read from \\
+\typename{XSecurityAuthorization} & \argname{auth\_id} & revoked authorization id \\ \hline
+\\
+\end{tabular}
+
+\end{keeptogether}
+% end marker
+
+\end{document}
diff --git a/specs/Xext/shape.ms b/specs/Xext/shape.ms
new file mode 100644
index 0000000..a39fd2a
--- /dev/null
+++ b/specs/Xext/shape.ms
@@ -0,0 +1,879 @@
+.\" Use -ms and macros.t
+.\" $Xorg: shape.ms,v 1.3 2000/08/17 19:42:36 cpqbld Exp $
+.\" edited for DP edits and code consistency w/ core protocol/xlib 4/1/96
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 3
+\s+2\fBX Nonrectangular Window
+
+Shape Extension Protocol\fP\s-2
+.sp 3
+.ce 3
+Version 1.0
+X Consortium Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+\s-1Keith Packard
+.sp 6p
+MIT X Consortium
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+Copyright \(co 1989 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''X11 Nonrectangular Window Shape Extension Protocol''
+.OH ''X11 Nonrectangular Window Shape Extension Protocol''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.LP
+This extension provides arbitrary window and border shapes within the X11
+protocol.
+.LP
+The restriction of rectangular windows within the X protocol is a significant
+limitation in the implementation of many styles of user interface. For
+example, many transient windows would like to display a ``drop shadow'' to
+give the illusion of 3 dimensions. As another example, some user interface
+style guides call for buttons with rounded corners; the full simulation of a
+nonrectangular shape, particularly with respect to event distribution and
+cursor shape, is not possible within the core X protocol. As a final
+example, round clocks and nonrectangular icons are desirable visual addition
+to the desktop.
+.LP
+This extension provides mechanisms for changing the visible shape of a
+window to an arbitrary, possibly disjoint, nonrectangular form. The intent
+of the extension is to supplement the existing semantics, not replace them.
+In particular, it is desirable for clients that are unaware of the
+extension to still be able to cope reasonably with shaped windows. For
+example, window managers should still be able to negotiate screen
+real estate in rectangular pieces. Toward this end, any shape specified for
+a window is clipped by the bounding rectangle for the window as specified by
+the window's geometry in the core protocol. An expected convention would be
+that client programs expand their shape to fill the area offered by the
+window manager.
+.NH 1
+Description
+.LP
+Each window (even with no shapes specified) is defined by two regions: the
+\fIbounding region\fP and the \fIclip region\fP. The bounding region is the area of the
+parent window that the window will occupy (including border). The clip region
+is the subset of the bounding region that is available for subwindows and
+graphics. The area between the bounding region and the clip region is defined
+to be the border of the window.
+.LP
+A nonshaped window will have a bounding region that is a rectangle
+spanning the window, including its border; the clip region will be a rectangle
+filling the inside dimensions (not including the border). In this document,
+these areas are referred to as the \fIdefault bounding region\fP and the
+\fIdefault clip region\fP. For a window with inside size of \fIwidth\fP by
+\fIheight\fP and border width \fIbwidth\fP, the default bounding and clip
+regions are the rectangles (relative to the window origin):
+.LP
+.sM
+.Ds 0
+bounding.x = -\fIbwidth\fP
+bounding.y = -\fIbwidth\fP
+bounding.width = \fIwidth\fP + 2 * \fIbwidth\fP
+bounding.height = \fIheight\fP + 2 * \fIbwidth\fP
+
+clip.x = 0
+clip.y = 0
+clip.width = \fIwidth\fP
+clip.height = \fIheight\fP
+.De
+.LP
+.eM
+This extension allows a client to modify either or both of the bounding or
+clip regions by specifying new regions that combine with the default
+regions. These new regions are called the \fIclient bounding region\fP and
+the \fIclient clip region\fP. They are specified relative to the origin of
+the window and are always defined by offsets relative to the window origin
+(that is, region adjustments are not required when the window is moved).
+Three mechanisms for specifying regions are provided: a list of rectangles,
+a bitmap, and an existing bounding or clip region from a window. This is
+modeled on the specification of regions in graphics contexts in the core
+protocol and allows a variety of different uses of the extension.
+.LP
+When using an existing window shape as an operand in specifying a new shape,
+the client region is used, unless none has been set, in which case the
+default region is used instead.
+.LP
+The \fIeffective bounding region\fP of a window is defined to be the intersection of
+the client bounding region with the default bounding region. Any portion of
+the client bounding region that is not included in the default bounding
+region will not be included in the effective bounding region on the screen.
+This means that window managers (or other geometry managers) used to dealing
+with rectangular client windows will be able to constrain the client to a
+rectangular area of the screen.
+.LP
+Construction of the effective bounding region is dynamic; the client bounding
+region is not mutated to obtain the effective bounding region. If a client
+bounding region is specified that extends beyond the current default bounding
+region, and the window is later enlarged, the effective bounding region will
+be enlarged to include more of the client bounding region.
+.LP
+The \fIeffective clip region\fP of a window is defined to be the intersection of the
+client clip region with both the default clip region and the client bounding
+region. Any portion of the client clip region that is not included in both
+the default clip region and the client bounding region will not be included in
+the effective clip region on the screen.
+.LP
+Construction of the effective clip region is dynamic; the client clip region is
+not mutated to obtain the effective clip region. If a client clip region is
+specified that extends beyond the current default clip region and the
+window or its bounding region is later enlarged, the effective clip region will
+be enlarged to include more of the client clip region if it is included in
+the effective bounding region.
+.LP
+The border of a window is defined to be the difference between the effective
+bounding region and the effective clip region. If this region is empty, no
+border is displayed. If this region is nonempty, the border is filled
+using the border-tile or border-pixel of the window as specified in the core
+protocol. Note that a window with a nonzero border width will never be able
+to draw beyond the default clip region of the window. Also note that a zero
+border width does not prevent a window from having a border, since the clip
+shape can still be made smaller than the bounding shape.
+.LP
+All output to the window and visible regions of any subwindows will be
+clipped to the effective clip region. The server must not retain window
+contents beyond the effective bounding region with backing store. The window's
+origin (for graphics operations, background tiling, and subwindow placement)
+is not affected by the existence of a bounding region or clip region.
+.LP
+Areas that are inside the default bounding region but outside the effective
+bounding region are not part of the window; these areas of the screen will
+be occupied by other windows. Input events that occur within the default
+bounding region but outside the effective bounding region will be delivered as
+if the window was not occluding the event position. Events that occur in
+a nonrectangular border of a window will be delivered to that window, just
+as for events that occur in a normal rectangular border.
+.LP
+An
+.PN InputOnly
+window can have its bounding region set, but it is a
+.PN Match
+error to attempt to set a clip region on an
+.PN InputOnly
+window or to specify its clip region as a source to a request
+in this extension.
+.LP
+The server must accept changes to the clip region of a root window, but
+the server is permitted to ignore requested changes to the bounding region
+of a root window. If the server accepts bounding region changes, the contents
+of the screen outside the bounding region are implementation dependent.
+.NH 1
+Types
+.LP
+The following types are used in the request and event definitions in
+subsequent sections.
+.LP
+SHAPE_KIND:
+.Pn { Bounding ,
+.PN Clip }
+.LP
+SHAPE_OP:
+.Pn { Set ,
+.PN Union ,
+.PN Intersect ,
+.PN Subtract ,
+.PN Invert }
+.LP
+.PN Set
+indicates that the region specified as an explicit source in the request is stored
+unaltered as the new destination client region.
+.PN Union
+indicates that the source and destination regions are unioned together to produce
+the new destination client region.
+.PN Intersect
+indicates that the source and destination regions are intersected together to
+produce the new destination client region.
+.PN Subtract
+indicates that the source region is subtracted from the destination region to
+produce the new destination region.
+.PN Invert
+indicates that the destination region is subtracted from the source region to
+produce the new destination region.
+.NH 1
+Requests
+.LP
+.sM
+.PN "ShapeQueryVersion"
+.LP
+ =>
+.IP
+majorVersion: CARD16
+.br
+minorVersion: CARD16
+.LP
+.eM
+This request can be used to ensure that the server version of the SHAPE
+extension is usable by the client. This document defines major version one
+(1), minor version zero (0).
+.LP
+.sM
+.PN "ShapeRectangles"
+.IP
+\fIdest\fP\^: WINDOW
+.br
+\fIdestKind\fP\^: SHAPE_KIND
+.br
+\fIop\fP\^: SHAPE_OP
+.br
+\fIxOff, yOff\fP\^: INT16
+.br
+\fIrectangles\fP\^: LISTofRECTANGLES
+.br
+\fIordering\fP\^:
+.Pn { UnSorted ,
+.PN YSorted ,
+.PN YXSorted ,
+.PN YXBanded }
+.IP
+Errors:
+.PN Window ,
+.PN Length ,
+.PN Match ,
+.PN Value
+.LP
+.eM
+This request specifies an array of rectangles, relative to the origin of the
+window plus the specified offset (xOff and yOff) that together
+define a region. This region is combined (as specified by the operator
+op) with the existing client region (specified by destKind) of the
+destination window, and the result is stored as the specified client region of
+the destination window. Note that the list of rectangles can be empty,
+specifying an empty region; this is not the same as passing
+.PN None
+to
+.PN ShapeMask .
+.LP
+If known by the client,
+ordering relations on the rectangles can be specified with the ordering
+argument.
+This may provide faster operation by the server.
+The meanings of the ordering values are the same as in the core protocol
+.PN SetClipRectangles
+request.
+If an incorrect ordering is specified,
+the server may generate a
+.PN Match
+error, but it is not required to do so.
+If no error is generated,
+the graphics results are undefined.
+Except for
+.PN UnSorted ,
+the rectangles should be nonintersecting, or the resulting region will
+be undefined.
+.PN UnSorted
+means that the rectangles are in arbitrary order.
+.PN YSorted
+means that the rectangles are nondecreasing in their Y origin.
+.PN YXSorted
+additionally constrains
+.PN YSorted
+order in that all rectangles with an equal Y origin are
+nondecreasing in their X origin.
+.PN YXBanded
+additionally constrains
+.PN YXSorted
+by requiring that, for every possible Y scanline,
+all rectangles that include that scanline have identical Y origins and Y
+extents.
+.LP
+.sM
+.PN "ShapeMask"
+.IP
+\fIdest\fP\^: WINDOW
+.br
+\fIdestKind\fP\^: SHAPE_KIND
+.br
+\fIop\fP\^: SHAPE_OP
+.br
+\fIxOff, yOff\fP\^: INT16
+.br
+\fIsource\fP\^: PIXMAP or
+.PN None
+.IP
+Errors:
+.PN Window ,
+.PN Pixmap ,
+.PN Match ,
+.PN Value
+.LP
+.eM
+The source in this request is a 1-bit deep pixmap, or
+.PN None .
+If source is
+.PN None ,
+the specified client region is removed from the window, causing the effective
+region to revert to the default region. The
+.PN ShapeNotify
+event generated by this request and subsequent
+.PN ShapeQueryExtents
+will report that a client shape has not been specified.
+If a valid pixmap is specified, it is converted
+to a region, with bits set to one included in the region and bits set to
+zero excluded, and an offset from the window origin as specified by
+xOff and yOff. The resulting region is then combined (as
+specified by the operator op) with the existing client region
+(indicated by destKind) of the destination window, and the result is
+stored as the specified client region of the destination window. The source
+pixmap and destination window must have been created on the same screen,
+or else a
+.PN Match
+error results.
+.LP
+.sM
+.PN "ShapeCombine"
+.IP
+\fIdest\fP\^: WINDOW
+.br
+\fIdestKind\fP\^: SHAPE_KIND
+.br
+\fIop\fP\^: SHAPE_OP
+.br
+\fIxOff, yOff\fP\^: INT16
+.br
+\fIsource\fP\^: WINDOW
+.br
+\fIsourceKind\fP\^: SHAPE_KIND
+.IP
+Errors:
+.PN Window ,
+.PN Match ,
+.PN Value
+.LP
+.eM
+The client region, indicated by sourceKind, of the source window is
+offset from the window origin by xOff and yOff and combined with
+the client region, indicated by destKind, of the destination window.
+The result is stored as the specified client region of the destination
+window.
+The source and destination windows must be on the same screen, or else a
+.PN Match
+error results.
+.LP
+.sM
+.PN "ShapeOffset"
+.IP
+\fIdest\fP\^: WINDOW
+.br
+\fIdestKind\fP\^: SHAPE_KIND
+.br
+\fIxOff, yOff\fP\^: INT16
+.IP
+Errors:
+.PN Window ,
+.PN Match ,
+.PN Value
+.LP
+.eM
+The client region, indicated by destKind, is moved relative to its
+current position by the amounts xOff and yOff.
+.LP
+.sM
+.PN "ShapeQueryExtents"
+.IP
+\fIdest\fP\^: WINDOW
+.LP
+ =>
+.IP
+boundingShaped: BOOL
+.br
+clipShaped: BOOL
+.br
+xBoundingShape: INT16
+.br
+yBoundingShape: INT16
+.br
+widthBoundingShape: CARD16
+.br
+heightBoundingShape: CARD16
+.br
+xClipShape: INT16
+.br
+yClipShape: INT16
+.br
+widthClipShape: CARD16
+.br
+heightClipShape: CARD16
+.IP
+Errors:
+.PN Window
+.LP
+.eM
+The boundingShaped and clipShaped results are
+.PN True
+if the corresponding client regions have been specified, else they are
+.PN False .
+The x, y, width, and height values define the extents of the client regions,
+when a client region has not been specified, the extents of the
+corresponding default region are reported.
+.LP
+.sM
+.PN "ShapeSelectInput"
+.IP
+\fIwindow\fP\^: WINDOW
+.br
+\fIenable\fP\^: BOOL
+.IP
+Errors:
+.PN Window ,
+.PN Value
+.LP
+.eM
+Specifying enable as
+.PN True
+causes the server to send the requesting client a
+.PN ShapeNotify
+event whenever the bounding or clip region of the specified window is
+altered by any client.
+Specifying enable as
+.PN False
+causes the server to stop sending such events.
+.LP
+.sM
+.PN "ShapeInputSelected"
+.IP
+\fIwindow\fP\^: WINDOW
+.LP
+ =>
+.IP
+enable: BOOL
+.IP
+Errors:
+.PN Window
+.LP
+.eM
+If enable is
+.PN True ,
+then
+.PN ShapeNotify
+events for the window are generated for this client.
+.LP
+.sM
+.PN "ShapeGetRectangles"
+.IP
+\fIwindow\fP\^: WINDOW
+.br
+\fIkind\fP\^: SHAPE_KIND
+.LP
+ =>
+.IP
+rectangles: LISTofRECTANGLE
+.br
+ordering:
+.Pn { UnSorted ,
+.PN YSorted ,
+.PN YXSorted ,
+.PN YXBanded }
+.IP
+Errors:
+.PN Window,
+.PN Match
+.LP
+.eM
+A list of rectangles describing the region indicated by kind, and the
+ordering of those rectangles, is returned. The meaning of the ordering
+values is the same as in the
+.PN ShapeRectangles
+request.
+.NH 1
+Events
+.LP
+.sM
+.PN "ShapeNotify"
+.IP
+\fIwindow\fP\^: WINDOW
+.br
+\fIkind\fP\^: SHAPE_KIND
+.br
+\fIshaped\fP\^: BOOL
+.br
+\fIx\fP, \fIy\fP\^: INT16
+.br
+\fIwidth\fP, \fIheight\fP\^: CARD16
+.br
+\fItime\fP\^: TIMESTAMP
+.LP
+.eM
+Whenever the client bounding or clip shape of a window is modified, a
+.PN ShapeNotify
+event is sent to each client that has used
+.PN ShapeSelectInput
+to request it.
+.LP
+Kind indicates which client region (bounding or clip) has been modified;
+shaped is
+.PN True
+when the window has a client shape of type kind, and is
+.PN False
+when the window no longer has a client shape of this type.
+The x, y, width, and height indicate the extents of the
+current shape. When shaped is
+.PN False
+these will indicate the extents of the default region. The timestamp
+indicates the server time when the shape was changed.
+.NH 1
+Encoding
+.LP
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+.LP
+The name of this extension is ``SHAPE''.
+.LP
+.NH 2
+New Types
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+SHAPE_KIND
+ 0 Bounding
+ 1 Clip
+.De
+.LP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+SHAPE_OP
+ 0 Set
+ 1 Union
+ 2 Intersect
+ 3 Subtract
+ 4 Invert
+.De
+.NH 2
+Requests
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeQueryVersion
+.sp 6p
+ 1 CARD8 opcode
+ 1 0 shape opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 2 CARD16 major version
+ 2 CARD16 minor version
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeRectangles
+.sp 6p
+ 1 CARD8 opcode
+ 1 1 shape opcode
+ 2 4+2n request length
+ 1 SHAPE_OP operation
+ 1 SHAPE_KIND destination kind
+ 1 ordering
+ 0 UnSorted
+ 1 YSorted
+ 2 YXSorted
+ 3 YXBanded
+ 1 unused
+ 4 WINDOW destination window
+ 2 INT16 x offset
+ 2 INT16 y offset
+ 8n LISTofRECTANGLE rectangles
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeMask
+.sp 6p
+ 1 CARD8 opcode
+ 1 2 shape opcode
+ 2 5 request length
+ 1 SHAPE_OP operation
+ 1 SHAPE_KIND destination kind
+ 2 unused
+ 4 WINDOW destination window
+ 2 INT16 x offset
+ 2 INT16 y offset
+ 4 PIXMAP source bitmap
+ 0 None
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeCombine
+.sp 6p
+ 1 CARD8 opcode
+ 1 3 shape opcode
+ 2 5 request length
+ 1 SHAPE_OP operation
+ 1 SHAPE_KIND destination kind
+ 1 SHAPE_KIND source kind
+ 1 unused
+ 4 WINDOW destination window
+ 2 INT16 x offset
+ 2 INT16 y offset
+ 4 WINDOW source window
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeOffset
+.sp 6p
+ 1 CARD8 opcode
+ 1 4 shape opcode
+ 2 4 request length
+ 1 SHAPE_KIND destination kind
+ 3 unused
+ 4 WINDOW destination window
+ 2 INT16 x offset
+ 2 INT16 y offset
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeQueryExtents
+.sp 6p
+ 1 CARD8 opcode
+ 1 5 shape opcode
+ 2 2 request length
+ 4 WINDOW destination window
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 BOOL bounding shaped
+ 1 BOOL clip shaped
+ 2 unused
+ 2 INT16 bounding shape extents x
+ 2 INT16 bounding shape extents y
+ 2 CARD16 bounding shape extents width
+ 2 CARD16 bounding shape extents height
+ 2 INT16 clip shape extents x
+ 2 INT16 clip shape extents y
+ 2 CARD16 clip shape extents width
+ 2 CARD16 clip shape extents height
+ 4 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeSelectInput
+.sp 6p
+ 1 CARD8 opcode
+ 1 6 shape opcode
+ 2 3 request length
+ 4 WINDOW destination window
+ 1 BOOL enable
+ 3 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeInputSelected
+.sp 6p
+ 1 CARD8 opcode
+ 1 6 shape opcode
+ 2 2 request length
+ 4 WINDOW destination window
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 BOOL enabled
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeGetRectangles
+.sp 6p
+ 1 CARD8 opcode
+ 1 7 shape opcode
+ 2 3 request length
+ 4 WINDOW window
+ 1 SHAPE_KIND source kind
+ 3 unused
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 ordering
+ 0 UnSorted
+ 1 YSorted
+ 2 YXSorted
+ 3 YXBanded
+ 2 CARD16 sequence number
+ 4 2n reply length
+ 4 CARD32 nrects
+ 20 unused
+ 8n LISTofRECTANGLE rectangles
+.De
+.NH 2
+Events
+.LP
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN ShapeNotify
+.sp 6p
+ 1 CARD8 type (0 + extension event base)
+ 1 SHAPE_KIND shape kind
+ 2 CARD16 sequence number
+ 4 WINDOW affected window
+ 2 INT16 x value of extents
+ 2 INT16 y value of extents
+ 2 CARD16 width of extents
+ 2 CARD16 height of extents
+ 4 TIMESTAMP server time
+ 1 BOOL shaped
+ 11 unused
+.De
+.NH 1
+Glossary
+.LP
+.KS
+\fBbounding region\fP
+.IP
+The area of the parent window that this window will occupy. This area is
+divided into two parts: the border and the interior.
+.KE
+.LP
+.KS
+\fBclip region\fP
+.IP
+The interior of the window, as a subset of the bounding region. This
+region describes the area that will be painted with the window background
+when the window is cleared, will contain all graphics output to the window,
+and will clip any subwindows.
+.KE
+.LP
+.KS
+\fBdefault bounding region\fP
+.IP
+The rectangular area, as described by the core protocol window size, that
+covers the interior of the window and its border.
+.KE
+.LP
+.KS
+\fBdefault clip region\fP
+.IP
+The rectangular area, as described by the core protocol window size, that
+covers the interior of the window and excludes the border.
+.KE
+.LP
+.KS
+\fBclient bounding region\fP
+.IP
+The region associated with a window that is directly modified via this
+extension when specified by
+.PN ShapeBounding .
+This region is used in conjunction with the default bounding region
+to produce the effective bounding region.
+.KE
+.LP
+.KS
+\fBclient clip region\fP
+.IP
+The region associated with a window that is directly modified via this
+extension when specified by
+.PN ShapeClip .
+This region is used in conjunction with the default clip region
+and the client bounding region to produce the effective clip region.
+.KE
+.LP
+.KS
+\fBeffective bounding region\fP
+.IP
+The actual shape of the window on the screen, including border and interior
+(but excluding the effects of overlapping windows). When a window has a client
+bounding region, the effective bounding region is the intersection of the
+default bounding region and the client bounding region. Otherwise, the
+effective bounding region is the same as the default bounding region.
+.KE
+.LP
+.KS
+\fBeffective clip region\fP
+.IP
+The actual shape of the interior of the window on the screen (excluding the
+effects of overlapping windows). When a window has a client clip region or
+a client bounding region, the effective clip region is the intersection of
+the default clip region, the client clip region (if any) and the client
+bounding region (if any). Otherwise, the effective clip region is the
+same as the default clip region.
+.KE
diff --git a/specs/Xext/shapelib.ms b/specs/Xext/shapelib.ms
new file mode 100644
index 0000000..b42befc
--- /dev/null
+++ b/specs/Xext/shapelib.ms
@@ -0,0 +1,555 @@
+.\" Use -ms and macros.t
+.\" $Xorg: shapelib.ms,v 1.3 2000/08/17 19:42:36 cpqbld Exp $
+.\" edited for DP edits and code consistency w/ core protocol/xlib 4/1/96
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 3
+\s+2\fBX Nonrectangular Window
+
+Shape Extension Library\fP\s-2
+.sp 3
+.ce 3
+Version 1.0
+X Consortium Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+\s-1Keith Packard
+.sp 6p
+MIT X Consortium
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+Copyright \(co 1989 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''X Nonrectangular Window Shape Extension Library''
+.OH ''X Nonrectangular Window Shape Extension Library''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.LP
+This extension provides arbitrary window and border shapes within the X11
+protocol.
+.LP
+The restriction of rectangular windows within the X protocol is a significant
+limitation in the implementation of many styles of user interface. For
+example, many transient windows would like to display a ``drop shadow'' to
+give the illusion of 3 dimensions. As another example, some user interface
+style guides call for buttons with rounded corners; the full simulation of a
+nonrectangular shape, particularly with respect to event distribution and
+cursor shape, is not possible within the core X protocol. As a final
+example, round clocks and nonrectangular icons are desirable visual addition
+to the desktop.
+.LP
+This extension provides mechanisms for changing the visible shape of a
+window to an arbitrary, possibly disjoint, nonrectangular form. The intent
+of the extension is to supplement the existing semantics, not replace them.
+In particular, it is desirable for clients that are unaware of the
+extension to still be able to cope reasonably with shaped windows. For
+example, window managers should still be able to negotiate screen
+real estate in rectangular pieces. Toward this end, any shape specified for
+a window is clipped by the bounding rectangle for the window as specified by
+the window's geometry in the core protocol. An expected convention would be
+that client programs expand their shape to fill the area offered by the
+window manager.
+.NH 1
+Description
+.LP
+Each window (even with no shapes specified) is defined by two regions: the
+\fIbounding region\fP and the \fIclip region\fP. The bounding region is the area of the
+parent window that the window will occupy (including border). The clip region
+is the subset of the bounding region that is available for subwindows and
+graphics. The area between the bounding region and the clip region is defined
+to be the border of the window.
+.LP
+A nonshaped window will have a bounding region that is a rectangle
+spanning the window, including its border; the clip region will be a rectangle
+filling the inside dimensions (not including the border). In this document,
+these areas are referred to as the \fIdefault bounding region\fP and the
+\fIdefault clip region\fP. For a window with inside size of \fIwidth\fP by
+\fIheight\fP and border width \fIbwidth\fP, the default bounding and clip
+regions are the rectangles (relative to the window origin):
+.LP
+.sM
+.Ds 0
+bounding.x = -\fIbwidth\fP
+bounding.y = -\fIbwidth\fP
+bounding.width = \fIwidth\fP + 2 * \fIbwidth\fP
+bounding.height = \fIheight\fP + 2 * \fIbwidth\fP
+
+clip.x = 0
+clip.y = 0
+clip.width = \fIwidth\fP
+clip.height = \fIheight\fP
+.De
+.LP
+.eM
+This extension allows a client to modify either or both of the bounding or
+clip regions by specifying new regions that combine with the default
+regions. These new regions are called the \fIclient bounding region\fP and
+the \fIclient clip region\fP. They are specified relative to the origin of
+the window and are always defined by offsets relative to the window origin
+(that is, region adjustments are not required when the window is moved).
+Three mechanisms for specifying regions are provided: a list of rectangles,
+a bitmap, and an existing bounding or clip region from a window. This is
+modeled on the specification of regions in graphics contexts in the core
+protocol and allows a variety of different uses of the extension.
+.LP
+When using an existing window shape as an operand in specifying a new shape,
+the client region is used, unless none has been set, in which case the
+default region is used instead.
+.LP
+The \fIeffective bounding region\fP of a window is defined to be the intersection of
+the client bounding region with the default bounding region. Any portion of
+the client bounding region that is not included in the default bounding
+region will not be included in the effective bounding region on the screen.
+This means that window managers (or other geometry managers) used to dealing
+with rectangular client windows will be able to constrain the client to a
+rectangular area of the screen.
+.LP
+Construction of the effective bounding region is dynamic; the client bounding
+region is not mutated to obtain the effective bounding region. If a client
+bounding region is specified that extends beyond the current default bounding
+region, and the window is later enlarged, the effective bounding region will
+be enlarged to include more of the client bounding region.
+.LP
+The \fIeffective clip region\fP of a window is defined to be the intersection of the
+client clip region with both the default clip region and the client bounding
+region. Any portion of the client clip region that is not included in both
+the default clip region and the client bounding region will not be included in
+the effective clip region on the screen.
+.LP
+Construction of the effective clip region is dynamic; the client clip region is
+not mutated to obtain the effective clip region. If a client clip region is
+specified that extends beyond the current default clip region and the
+window or its bounding region is later enlarged, the effective clip region will
+be enlarged to include more of the client clip region if it is included in
+the effective bounding region.
+.LP
+The border of a window is defined to be the difference between the effective
+bounding region and the effective clip region. If this region is empty, no
+border is displayed. If this region is nonempty, the border is filled
+using the border-tile or border-pixel of the window as specified in the core
+protocol. Note that a window with a nonzero border width will never be able
+to draw beyond the default clip region of the window. Also note that a zero
+border width does not prevent a window from having a border, since the clip
+shape can still be made smaller than the bounding shape.
+.LP
+All output to the window and visible regions of any subwindows will be
+clipped to the effective clip region. The server must not retain window
+contents beyond the effective bounding region with backing store. The window's
+origin (for graphics operations, background tiling, and subwindow placement)
+is not affected by the existence of a bounding region or clip region.
+.LP
+Areas that are inside the default bounding region but outside the effective
+bounding region are not part of the window; these areas of the screen will
+be occupied by other windows. Input events that occur within the default
+bounding region but outside the effective bounding region will be delivered as
+if the window was not occluding the event position. Events that occur in
+a nonrectangular border of a window will be delivered to that window, just
+as for events that occur in a normal rectangular border.
+.LP
+An
+.PN InputOnly
+window can have its bounding region set, but it is a
+.PN Match
+error to attempt to set a clip region on an
+.PN InputOnly
+window or to specify its clip region as a source to a request
+in this extension.
+.LP
+The server must accept changes to the clip region of a root window, but
+the server is permitted to ignore requested changes to the bounding region
+of a root window. If the server accepts bounding region changes, the contents
+of the screen outside the bounding region are implementation dependent.
+.NH 1
+C Language Binding
+.LP
+The C functions provide direct access to the protocol and add no additional
+semantics.
+.LP
+The include file for this extension is
+.Pn < X11/extensions/shape.h >.
+The defined shape kinds are
+.PN ShapeBounding
+and
+.PN ShapeClip .
+The defined region operations are
+.PN ShapeSet ,
+.PN ShapeUnion ,
+.PN ShapeIntersect ,
+.PN ShapeSubtract ,
+and
+.PN ShapeInvert .
+.sM
+.FD 0
+Bool
+XShapeQueryExtension(\fIdisplay\fP\^, \fIevent_base\fP\^, \fIerror_base\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fIevent_base\fP\^; /* RETURN */
+.br
+ int *\fIerror_base\fP\^; /* RETURN */
+.FN
+.LP
+.eM
+.PN XShapeQueryExtension
+returns
+.PN True
+if the specified display supports the SHAPE extension else
+.PN False .
+If the extension is supported, *event_base is set to the event number for
+.PN ShapeNotify
+events and *error_base would be set to the error number for the first error for
+this extension.
+Because no errors are defined for this version of the extension,
+the value returned here is not defined (nor useful).
+.LP
+.sp
+.sM
+.FD 0
+Status
+XShapeQueryVersion(\fIdisplay\fP\^, \fImajor_version\fP\^, \fIminor_version\fP\^)
+.br
+ Display *\fIdisplay\fP;
+.br
+ int *\fImajor_version\fP, *\fIminor_version\fP\^; /* RETURN */
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XShapeQueryVersion
+sets the major and minor version numbers of the
+extension supported by the display and returns a nonzero value.
+Otherwise, the arguments are not set and zero is returned.
+.LP
+.sp
+.sM
+.FD 0
+XShapeCombineRegion(\fIdisplay\fP\^, \fIdest\fP\^, \fIdest_kind\fP\^, \
+\fIx_off\fP\^, \fIy_off\fP\^, \fIregion\fP\^, \fIop\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIdest\fP\^;
+.br
+ int \fIdest_kind\fP\^, \fIop\fP\^, \fIx_off\fP\^, \fIy_off\fP\^;
+.br
+ REGION *\fIregion\fP\^;
+.FN
+.LP
+.eM
+.PN XShapeCombineRegion
+converts the specified region into a list of rectangles and calls
+.PN XShapeCombineRectangles .
+.LP
+.sp
+.sM
+.FD 0
+XShapeCombineRectangles(\fIdisplay\fP\^, \fIdest\fP\^, \fIdest_kind\fP\^, \
+\fIx_off\fP\^, \fIy_off\fP\^, \fIrectangles\fP\^, \fIn_rects\fP\^, \fIop\fP\^, \
+\fIordering\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIdest\fP\^;
+.br
+ int \fIdest_kind\fP\^, \fIn_rects\fP\^, \fIop\fP\^, \fIx_off\fP\^, \
+\fIy_off\fP\^, \fIordering\fP\^;
+.br
+ XRectangle *\fIrectangles\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XShapeCombineRectangles
+performs a
+.PN ShapeRectangles
+operation; otherwise, the request is ignored.
+.LP
+.sp
+.sM
+.FD 0
+XShapeCombineMask(\fIdisplay\fP\^, \fIdest\fP\^, \fIdest_kind\fP\^, \
+\fIx_off\fP\^, \fIy_off\fP\^, \fIsrc\fP\^, \fIop\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIdest\fP\^;
+.br
+ int \fIdest_kind\fP\^, \fIop\fP\^, \fIx_off\fP\^, \fIy_off\fP\^;
+.br
+ Pixmap \fIsrc\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XShapeCombineMask
+performs a
+.PN ShapeMask
+operation; otherwise, the request is ignored.
+.LP
+.sp
+.sM
+.FD 0
+XShapeCombineShape(\fIdisplay\fP\^, \fIdest\fP\^, \fIdest_kind\fP\^, \
+\fIx_off\fP\^, \fIy_off\fP\^, \fIsrc\fP\^, \fIsrc_kind\fP\^, \fIop\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIdest\fP\^, \fIsrc\fP\^;
+.br
+ int \fIdest_kind\fP\^, \fIsrc_kind\fP\^, \fIop\fP\^, \fIx_off\fP\^, \fIy_off\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XShapeCombineShape
+performs a
+.PN ShapeCombine
+operation; otherwise, the request is ignored.
+.LP
+.sp
+.sM
+.FD 0
+XShapeOffsetShape(\fIdisplay\fP\^, \fIdest\fP\^, \fIdest_kind\fP\^, \
+\fIx_off\fP\^, \fIy_off\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIdest\fP\^;
+.br
+ int \fIdest_kind\fP\^, fIx_off\fP\^, \fIy_off\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XShapeOffsetShape
+performs a
+.PN ShapeOffset
+operation; otherwise, the request is ignored.
+.LP
+.sp
+.sM
+.FD 0
+Status XShapeQueryExtents(\fIdisplay\fP\^, \fIwindow\fP\^, \
+\fIbounding_shaped\fP\^, \fIx_bounding\fP\^, \fIy_bounding\fP\^,
+.br
+ \fIw_bounding\fP\^, \ \fIh_bounding\fP\^, \fIclip_shaped\fP\^, \
+\fIx_clip\fP\^, \fIy_clip\fP\^, \fIw_clip\fP\^, \fIh_clip\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ Bool *\fIbounding_shaped\fP\^, *\fIclip_shaped\fP\^; /* RETURN */
+.br
+ int *\fIx_bounding\fP\^, *\fIy_bounding\fP\^, *\fIx_clip\fP\^, \
+*\fIy_clip\fP\^; /* RETURN */
+.br
+ unsigned int *\fIw_bounding\fP\^, *\fIh_bounding\fP\^, *\fIw_clip\fP\^, \
+* \fIh_clip\fP\^; /* RETURN */
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XShapeQueryExtents
+sets x_bounding, y_bounding, w_bounding, h_bounding to the extents of the
+bounding shape and sets x_clip, y_clip, w_clip, h_clip to the extents of
+the clip shape. For unspecified client regions, the extents of the
+corresponding default region are used.
+.LP
+If the extension is supported,
+a nonzero value is returned; otherwise, zero is returned.
+.LP
+.sp
+.sM
+.FD 0
+XShapeSelectInput(\fIdisplay\fP\^, \fIwindow\fP\^, \fImask\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ unsigned long \fImask\fP\^;
+.FN
+.LP
+.eM
+To make this extension more compatible with other interfaces, although
+only one event type can be selected via the extension,
+.PN XShapeSelectInput
+provides a general mechanism similar to the standard Xlib binding for
+window events. A mask value has been defined,
+.PN ShapeNotifyMask
+that is the only valid bit in mask that may be specified.
+The structure for this event is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA 1.5i
+.ta 1.5i
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ int kind; /* ShapeBounding or ShapeClip */
+ int x, y; /* extents of new region */
+ unsigned width, height;
+ Time time; /* server timestamp when region changed */
+ Bool shaped; /* true if the region exists */
+} XShapeEvent;
+.De
+.LP
+.eM
+.LP
+.sM
+.FD 0
+unsigned long
+XShapeInputSelected(\fIdisplay\fP\^, \fIwindow\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.FN
+.LP
+.eM
+.PN XShapeInputSelected
+returns the current input mask for extension events on the specified
+window; the value returned if
+.PN ShapeNotify
+is selected for is
+.PN ShapeNotifyMask ;
+otherwise, it returns zero.
+If the extension is not supported, it returns zero.
+.LP
+.sp
+.sM
+.FD 0
+XRectangle *
+XShapeGetRectangles(\fIdisplay\fP\^, \fIwindow\fP\^, \fIkind\fP\^, \
+\fIcount\fP\^, \fIordering\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ int \fIkind\fP\^;
+.br
+ int *\fIcount\fP\^; /* RETURN */
+.br
+ int *\fIordering\fP\^; /* RETURN */
+.FN
+.LP
+.eM
+If the extension is not supported,
+.PN XShapeGetRectangles
+returns NULL.
+Otherwise, it returns a list of rectangles that describe the region
+specified by kind.
+.NH 1
+Glossary
+.LP
+.KS
+\fBbounding region\fP
+.IP
+The area of the parent window that this window will occupy. This area is
+divided into two parts: the border and the interior.
+.KE
+.LP
+.KS
+\fBclip region\fP
+.IP
+The interior of the window, as a subset of the bounding region. This
+region describes the area that will be painted with the window background
+when the window is cleared, will contain all graphics output to the window,
+and will clip any subwindows.
+.KE
+.LP
+.KS
+\fBdefault bounding region\fP
+.IP
+The rectangular area, as described by the core protocol window size, that
+covers the interior of the window and its border.
+.KE
+.LP
+.KS
+\fBdefault clip region\fP
+.IP
+The rectangular area, as described by the core protocol window size, that
+covers the interior of the window and excludes the border.
+.KE
+.LP
+.KS
+\fBclient bounding region\fP
+.IP
+The region associated with a window that is directly modified via this
+extension when specified by
+.PN ShapeBounding .
+This region is used in conjunction with the default bounding region
+to produce the effective bounding region.
+.KE
+.LP
+.KS
+\fBclient clip region\fP
+.IP
+The region associated with a window that is directly modified via this
+extension when specified by
+.PN ShapeClip .
+This region is used in conjunction with the default clip region
+and the client bounding region to produce the effective clip region.
+.KE
+.LP
+.KS
+\fBeffective bounding region\fP
+.IP
+The actual shape of the window on the screen, including border and interior
+(but excluding the effects of overlapping windows). When a window has a client
+bounding region, the effective bounding region is the intersection of the
+default bounding region and the client bounding region. Otherwise, the
+effective bounding region is the same as the default bounding region.
+.KE
+.LP
+.KS
+\fBeffective clip region\fP
+.IP
+The actual shape of the interior of the window on the screen (excluding the
+effects of overlapping windows). When a window has a client clip region or
+a client bounding region, the effective clip region is the intersection of
+the default clip region, the client clip region (if any) and the client
+bounding region (if any). Otherwise, the effective clip region is the
+same as the default clip region.
+.KE
diff --git a/specs/Xext/sync.tex b/specs/Xext/sync.tex
new file mode 100644
index 0000000..842f9cb
--- /dev/null
+++ b/specs/Xext/sync.tex
@@ -0,0 +1,1006 @@
+% $Xorg: sync.tex,v 1.3 2000/08/17 19:42:37 cpqbld Exp $
+%
+% Copyright 1991 by Olivetti Research Limited, Cambridge, England and
+% Digital Equipment Corporation, Maynard, Massachusetts.
+%
+% All Rights Reserved
+%
+% Permission to use, copy, modify, and distribute this software and its
+% documentation for any purpose and without fee is hereby granted,
+% provided that the above copyright notice appear in all copies and that
+% both that copyright notice and this permission notice appear in
+% supporting documentation, and that the names of Digital or Olivetti
+% not be used in advertising or publicity pertaining to distribution of the
+% software without specific, written prior permission.
+%
+% DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+% INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+% SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+% ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+% IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+% OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+%\documentstyle[a4]{article}
+\documentstyle{article}
+
+\setlength{\parindent}{0 pt}
+\setlength{\parskip}{6pt}
+
+% Protocol Section
+% For the DP book, these four should be assigned the font for global symbols.
+
+\newcommand{\request}[1]{{\bf #1}}
+\newcommand{\event}[1]{{\bf #1}}
+\newcommand{\error}[1]{{\bf #1}}
+\newcommand{\enum}[1]{{\bf #1}}
+
+% The following fonts are not reassigned for the DP book.
+
+\newcommand{\system}[1]{{\sc #1}}
+\newcommand{\param}[1]{{\it #1}}
+
+\newcommand{\eventdef}[1]{\item {\bf#1}}
+\newcommand{\requestdef}[1]{\item {\bf#1}}
+\newcommand{\errordef}[1]{\item {\bf#1}}
+
+\newcommand{\defn}[1]{{\bf #1}}
+
+\newcommand{\tabstopsA}{\hspace*{4cm}\=\hspace*{1cm}\=\hspace*{7cm}\=\kill}
+\newcommand{\tabstopsB}{\hspace*{1cm}\=\hspace*{1cm}\=\hspace*{3cm}\=\kill}
+\newcommand{\tabstopsC}{\hspace*{1cm}\=\hspace*{1cm}\=\hspace*{5cm}\=\kill}
+
+% commands for formatting the API
+% For the DP book, these three should be assigned the font for global symbols.
+
+\newcommand{\cfunctionname}[1]{\mbox{\tt#1}}
+\newcommand{\ctypename}[1]{\mbox{\tt#1}}
+\newcommand{\cconst}[1]{\mbox{\tt#1}}
+
+% For the DP book, within function definitions, the type and name are in
+% the ordinary font; therefore, ctypenamedef and cfunctionnamedef are used
+% and defined below.
+\newcommand{\ctypenamedef}[1]{\mbox{#1}}
+\newcommand{\cfunctionnamedef}[1]{\mbox{#1}}
+\newcommand{\cargname}[1]{\mbox{\it#1}}
+\newcommand{\cstartfunction}[2]{\begin{sloppypar}\begin{samepage}\ctypenamedef{#1}\\ \cfunctionnamedef{#2}\ (}
+\newcommand{\cargdecl}[2]{\penalty -1\ctypenamedef{#1} \cargname{#2}}
+\newcommand{\cendfunctiondecl}{){\hangafter=2 \hangindent=20pt \raggedright\par}}
+\newcommand{\cendfuncdescription}{\end{samepage}\end{sloppypar}}
+
+\newcommand{\cstartmacro}[2]{\begin{sloppypar}\begin{samepage}\ctypenamedef{#1}\\ \cfunctionnamedef{#2}\ (}
+\newcommand{\cendmacrodecl}{)\par}
+\newcommand{\cendmacrodescription}{\end{samepage}\end{sloppypar}}
+
+% make things easier with all the long names
+\spaceskip .3333em plus 5em
+\tolerance=2000
+
+\begin{document}
+
+\begin{center}
+
+{\large X Synchronization Extension Protocol}\\[10pt]
+{\large Version 3.0}\\[15pt]
+{\large X Consortium Standard}\\[15pt]
+{\large X Version 11, Release 6.4}\\[15pt]
+{\it Tim Glauert}\\[0pt]
+{\tt thg@cam-orl.co.uk}\\[0pt]
+{\bf Olivetti Research / MultiWorks}\\[5pt]
+{\it Dave Carver}\\[0pt]
+{\tt dcc@athena.mit.edu}\\[0pt]
+{\bf Digital Equipment Corporation,}\\[0pt]
+{\bf MIT / Project Athena}\\[5pt]
+{\it Jim Gettys}\\[0pt]
+{\tt jg@crl.dec.com}\\[0pt]
+{\bf Digital Equipment Corporation,}\\[0pt]
+{\bf Cambridge Research Laboratory}\\[5pt]
+{\it David P. Wiggins}\\[0pt]
+{\tt dpw@x.org}\\[0pt]
+{\bf X Consortium, Inc.}\\[0pt]
+
+\end {center}
+
+Copyright 1991 by Olivetti Research Limited, Cambridge, England and
+Digital Equipment Corporation, Maynard, Massachusetts.
+
+{\small Permission to use, copy, modify, and distribute this documentation
+for any purpose and without fee is hereby granted, provided that the above
+copyright notice appear in all copies. Olivetti, Digital, MIT, and the
+X Consortium
+make no representations about the suitability for any purpose of the
+information in this document. This documentation is provided as is without
+express or implied warranty.}
+
+Copyright (c) 1991 X Consortium, Inc.
+
+{\small Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.}
+\eject
+
+\section{Synchronization Protocol}
+
+The core X protocol makes no guarantees about the relative order of execution
+of requests for different clients. This means that any synchronization between
+clients must be done at the client level in an operating system-dependent and
+network-dependent manner. Even if there was an accepted standard for such
+synchronization, the use of a network introduces unpredictable delays between
+the synchronization of the clients and the delivery of the resulting requests
+to the X server.
+
+The core X protocol also makes no guarantees about the time at which requests
+are executed, which means that all clients with real-time constraints must
+implement their timing on the host computer. Any such timings are subject to
+error introduced by delays within the operating system and network and are
+inefficient because of the need for round-trip requests that keep the client and
+server synchronized.
+
+The synchronization extension provides primitives that allow synchronization
+between clients to take place entirely within the X server. This removes any
+error introduced by the network and makes it possible to synchronize clients
+on different hosts running different operating systems. This is important for
+multimedia applications, where audio, video, and graphics data streams are
+being synchronized. The extension also provides internal timers within the X
+server to which client requests can be synchronized. This allows simple
+animation applications to be implemented without any round-trip requests and
+makes best use of buffering within the client, network, and server.
+
+\subsection{Description}
+
+The mechanism used by this extension for synchronization within the X server
+is to block the processing of requests from a client until a specific
+synchronization condition occurs. When the condition occurs, the client is
+released and processing of requests continues. Multiple clients may block on
+the same condition to give inter-client synchronization. Alternatively, a
+single client may block on a condition such as an animation frame marker.
+
+The extension adds \defn{Counter} and \defn{Alarm} to the set of resources
+managed by the server. A counter has a 64-bit integer value that may be
+increased or decreased by client requests or by the server internally. A
+client can block by sending an \request{Await} request that waits until
+one of a set of synchronization conditions, called TRIGGERs, becomes TRUE.
+
+The \request{CreateCounter} request allows a client to create a
+\defn{Counter} that can be changed by explicit \request{SetCounter} and
+\request{ChangeCounter} requests. These can be used to implement
+synchronization between different clients.
+
+There are some counters, called \defn{System Counters}, that are changed by
+the server internally rather than by client requests. The effect of any change
+to a system counter is not visible until the server has finished processing the
+current request. In other words, system counters are apparently updated in the
+gaps between the execution of requests rather than during the actual execution
+of a request. The extension provides a system counter that advances with the
+server time as defined by the core protocol, and it may also provide counters
+that advance with the real-world time or that change each time the CRT
+screen is refreshed. Other extensions may provide their own
+extension-specific system counters.
+
+The extension provides an \defn{Alarm} mechanism that allows clients to
+receive an event on a regular basis when a particular counter is changed.
+
+\subsection{Types}
+
+Please refer to the X11 Protocol specification as this document uses
+syntactic conventions established there and references types defined there.
+
+The following new types are used by the extension.
+
+\begin{tabbing}{l}
+SYSTEMCOUNTER: \=\kill
+ INT64: \>64-bit signed integer\\
+ COUNTER:\>XID\\
+ VALUETYPE:\> \{\enum{Absolute},\enum{Relative}\}\\
+ TESTTYPE:\> \{\enum{PositiveTransition},\enum{NegativeTransition},\\
+ \>\enum{PositiveComparison},\enum{NegativeComparison}\}\\
+ TRIGGER:\>[\\
+ \>counter:COUNTER,\\
+ \>value-type:VALUETYPE,\\
+ \>wait-value:INT64,\\
+ \>test-type:TESTTYPE\\
+ \>]\\
+ WAITCONDITION:\>[\\
+ \>trigger:TRIGGER,\\
+ \>event-threshold:INT64\\
+ \>]\\
+ SYSTEMCOUNTER:\>[\\
+ \>name:STRING8,\\
+ \>counter:COUNTER,\\
+ \>resolution:INT64\\
+ \>]\\
+ ALARM: \>XID\\
+ ALARMSTATE:\> \{\enum{Active},\enum{Inactive},\enum{Destroyed}\}\\
+\end{tabbing}
+
+The COUNTER type defines the client-side handle on a server \defn{Counter}.
+The value of a counter is an INT64.
+
+The TRIGGER type defines a test on a counter that is either TRUE or FALSE.
+The value of the test is determined by the combination of a test value, the
+value of the counter, and the specified test-type.
+
+The test value for a trigger is calculated using the value-type and
+wait-value fields when the trigger is initialized.
+If the value-type field is not one of the
+named VALUETYPE constants, the request that initialized the trigger
+will return a \error{Value} error. If the
+value-type field is \enum{Absolute}, the test value is given by the
+wait-value field. If the value-type field is
+\enum{Relative}, the test value is obtained by adding the
+wait-value field to the value of the counter. If the
+resulting test value would lie outside the range for an INT64, the
+request that initialized the trigger will return a
+\error{Value} error. If counter is \enum{None} and the
+value-type is \enum{Relative}, the request that initialized the
+trigger will return a \error{Match} error.
+If counter is not \enum{None} and does not name a valid
+counter, a \error{Counter} error is generated.
+
+If the test-type is \enum{PositiveTransition}, the trigger is
+initialized to FALSE, and it will become TRUE when the counter changes
+from a value less than the test value to a value greater than or equal to the
+test value. If the test-type is \enum{NegativeTransition}, the
+trigger is initialize to FALSE, and it will become TRUE when the
+counter changes from a value greater than the test value to a value
+less than or equal to the test value. If the test-type is
+\enum{PositiveComparison}, the trigger is TRUE if the counter is greater than or
+equal to the test value and FALSE otherwise. If the test-type is
+\enum{NegativeComparison}, the trigger is TRUE if the counter is less than or
+equal to the test value and FALSE otherwise. If the test-type
+is not one of the named TESTTYPE constants, the request that
+initialized the trigger will return a \error{Value} error. A trigger
+with a counter value of \enum{None} and a valid test-type
+is always TRUE.
+
+The WAITCONDITION type is simply a trigger with an associated
+event-threshold. The event threshold is used by the \request{Await}
+request to decide whether or not to generate an event to the client after the
+trigger has become TRUE. By setting the event-threshold to an
+appropriate value, it is possible to detect the situation where an
+\request{Await} request was processed after the TRIGGER became TRUE,
+which usually indicates that the server is not processing requests as fast as
+the client expects.
+
+The SYSTEMCOUNTER type provides the client with information about a
+\defn{System Counter}. The name field is the textual name of the
+counter that identifies the counter to the client. The counter field
+is the client-side handle that should be used in requests that require a
+counter. The resolution field gives the approximate step size of the
+system counter. This is a hint to the client that the extension may not be
+able to resolve two wait conditions with test values that differ by less than
+this step size. A microsecond clock, for example, may advance in steps of 64
+microseconds, so a counter based on this clock would have a resolution
+of 64.
+
+The only system counter that is guaranteed to be present is called
+\system{SERVERTIME}, which counts milliseconds from some arbitrary starting
+point. The least significant 32 bits of this counter track the value of Time
+used by the server in Events and Requests. Other system counters may be
+provided by different implementations of the extension. The X Consortium will
+maintain a registry of system counter names to avoid collisions in the
+name space.
+
+An ALARM is the client-side handle on an \defn{Alarm} resource.
+
+\subsection{Errors}
+
+\begin{description}
+
+\errordef{Counter}
+
+This error is generated if the value for a COUNTER argument in a request does
+not name a defined COUNTER.
+
+\errordef{Alarm}
+
+This error is generated if the value for an ALARM argument in a request does
+not name a defined ALARM.
+
+\end{description}
+
+\subsection{Requests}
+
+\begin{description}
+
+% start marker
+\requestdef{Initialize}
+
+\begin{tabular}{l}
+ \param{version-major},\param{version-minor}: CARD8
+\end{tabular}\\
+$\Rightarrow$\\
+\begin{tabular}{l}
+ version-major,version-minor: CARD8
+\end{tabular}
+%end marker
+
+This request must be executed before any other requests for this
+extension. If a client violates this rule, the results of all SYNC
+requests that it issues are undefined. The request takes the version
+number of the extension that the client wishes to use and returns the
+actual version number being implemented by the extension for this
+client. The extension may return different version numbers to a client
+depending of the version number supplied by that client. This request
+should be executed only once for each client connection.
+
+Given two different versions of the SYNC protocol, v1 and v2, v1 is
+compatible with v2 if and only if $v1.version\_major = v2.version\_major$
+and $v1.version\_minor \leq v2.version\_minor$. Compatible means that the
+functionality is fully supported in an identical fashion in the two
+versions.
+
+This document describes major version 3, minor version 0 of the SYNC
+protocol.
+
+% start marker
+\requestdef{ListSystemCounters}
+
+$\Rightarrow$\\
+\begin{tabular}{l}
+ system-counters: LISTofSYSTEMCOUNTER\\[5pt]
+ Errors: \error{Alloc}
+\end{tabular}
+% end marker
+
+This request returns a list of all the system counters that are available at
+the time the request is executed, which includes the system counters that are
+maintained by other extensions. The list returned by this request may change
+as counters are created and destroyed by other extensions.
+
+% start marker
+\requestdef{CreateCounter}
+
+\begin{tabular}{l}
+ \param{id}: COUNTER\\
+ \param{initial-value}: INT64\\[5pt]
+ Errors: \error{IDChoice},\error{Alloc}
+\end{tabular}
+% end marker
+
+This request creates a counter and assigns the specified id to it.
+The counter value is initialized to the specified initial-value
+and there are no clients waiting on the counter.
+
+% start marker
+\requestdef{DestroyCounter}
+
+\begin{tabular}{l}
+ \param{counter}: COUNTER\\[5pt]
+ Errors: \error{Counter},\error{Access}
+\end{tabular}
+% end marker
+
+This request destroys the given counter and sets the counter fields
+for all triggers that specify this counter to \enum{None}. All clients
+waiting on the counter are released and a \event{CounterNotify} event with the
+destroyed field set to TRUE is sent to each waiting client,
+regardless of the event-threshold. All alarms specifying the counter
+become \enum{Inactive} and an \event{AlarmNotify} event with a state
+field of \enum{Inactive} is generated. A counter is destroyed automatically
+when the connection to the creating client is closed down if the close-down
+mode is {\bf Destroy}. An \error{Access} error is generated if counter
+is a system counter. A \error{Counter} error is generated if counter
+does not name a valid counter.
+
+% start marker
+\requestdef{QueryCounter}
+
+\begin{tabular}{l}
+ \param{counter}: COUNTER\\
+\end{tabular}\\
+$\Rightarrow$\\
+\begin{tabular}{l}
+ value: INT64\\[5pt]
+ Errors: \error{Counter}
+\end{tabular}
+% end marker
+
+This request returns the current value of the given counter or a generates
+\error{Counter} error if counter does not name a valid counter.
+
+% start marker
+\requestdef{Await}
+
+\begin{tabular}{l}
+ \param{wait-list}: LISTofWAITCONDITION\\[5pt]
+ Errors: \error{Counter},\error{Alloc},\error{Value}
+\end{tabular}
+% end marker
+
+When this request is executed, the triggers in the wait-list are
+initialized using the wait-value and value-type fields, as
+described in the definition of TRIGGER above. The processing of further
+requests for the client is blocked until one or more of the triggers becomes
+TRUE. This may happen immediately, as a result of the initialization, or at
+some later time, as a result of a subsequent \request{SetCounter},
+\request{ChangeCounter} or \request{DestroyCounter} request.
+
+A \error{Value} error is generated if wait-list is empty.
+
+When the client becomes unblocked, each trigger is checked to determine
+whether a \event{CounterNotify} event should be generated. The difference
+between the counter and the test value is calculated by
+subtracting the test value from the value of the counter. If the
+test-type is \enum{PositiveTransition} or \enum{PositiveComparison}, a \event{CounterNotify} event is generated if the
+difference is at least event-threshold. If the test-type is
+\enum{NegativeTransition} or \enum{NegativeComparison}, a
+\event{CounterNotify} event is generated if the difference is at most
+event-threshold. If the difference lies outside the range for an
+INT64, an event is not generated.
+
+This threshold check is made for each trigger in the list and a
+\event{CounterNotify} event is generated for every trigger for which
+the check succeeds. The check for \enum{CounterNotify} events is performed
+even if one of the triggers is TRUE when the request is first executed. Note
+that a \event{CounterNotify} event may be generated for a trigger that
+is FALSE if there are multiple triggers in the request. A
+\event{CounterNotify} event with the destroyed flag set to TRUE is
+always generated if the counter for one of the triggers is destroyed.
+
+% start marker
+\requestdef{ChangeCounter}
+
+\begin{tabular}{l}
+ \param{counter}: COUNTER\\
+ \param{amount}: INT64\\[5pt]
+ Errors: \error{Counter},\error{Access},\error{Value}
+\end{tabular}
+% end marker
+
+This request changes the given counter by adding amount to the current
+counter value. If the change to this counter satisfies a trigger for which a
+client is waiting, that client is unblocked and one or more
+\event{CounterNotify} events may be generated. If the change to the counter
+satisfies the trigger for an alarm, an \event{AlarmNotify} event is generated
+and the alarm is updated. An \error{Access} error is generated if
+counter is a system counter. A \error{Counter} error is generated if
+counter does not name a valid counter. If the resulting value for the
+counter would be outside the range for an INT64, a \error{Value} error is
+generated and the counter is not changed.
+
+It should be noted that all the clients whose triggers are satisfied by
+this change are unblocked, so this request cannot be used to implement mutual
+exclusion.
+
+% start marker
+\requestdef{SetCounter}
+
+\begin{tabular}{l}
+ \param{counter}: COUNTER\\
+ \param{value}: INT64\\[5pt]
+ Errors: \error{Counter},\error{Access}
+\end{tabular}
+% end marker
+
+This request sets the value of the given counter to value. The effect
+is equivalent to executing the appropriate \request{ChangeCounter} request to
+change the counter value to value. An \error{Access} error is
+generated if counter names a system counter. A \error{Counter} error
+is generated if counter does not name a valid counter.
+
+% start marker
+\requestdef{CreateAlarm}
+
+\begin{tabular}{l}
+ \param{id}: ALARM\\
+ \param{values-mask}: CARD32\\
+ \param{values-list}: LISTofVALUE\\[5pt]
+ Errors: \error{IDChoice},\error{Counter},\error{Match},\error{Value},\error{Alloc}
+\end{tabular}
+% end marker
+
+This request creates an alarm and assigns the identifier id to it. The
+values-mask and values-list specify the attributes that are
+to be explicitly initialized. The attributes for an Alarm and their defaults
+are:
+
+\begin{center}
+\begin{tabular}{l|l|ll}
+Attribute & Type & Default \\
+\hline
+trigger & TRIGGER & counter & \enum{None}\\
+ & & value-type & \enum{Absolute}\\
+ & & value & 0\\
+ & & test-type & \enum{PositiveComparison}\\
+delta & INT64 & 1 \\
+events & BOOL & TRUE
+\end{tabular}
+\end{center}
+
+The trigger is initialized as described in the definition of TRIGGER,
+with an error being generated if necessary.
+
+If the counter is \enum{None}, the state of the alarm is set to
+\enum{Inactive}, else it is set to \enum{Active}.
+
+Whenever the trigger becomes TRUE, either as a result of this request
+or as the result of a \request{SetCounter}, \request{ChangeCounter},
+\request{DestroyCounter}, or \request{ChangeAlarm} request, an
+\event{AlarmNotify} event is generated and the alarm is updated. The alarm is
+updated by repeatedly adding delta to the value of the
+trigger and reinitializing it until it becomes FALSE. If this update
+would cause value to fall outside the range for an INT64, or if the
+counter value is \enum{None}, or if the
+delta is 0 and test-type is \enum{PositiveComparison} or
+\enum{NegativeComparison}, no change is made to value and the alarm
+state is changed to \enum{Inactive} before the event is generated. No further
+events are generated by an \enum{Inactive} alarm until a \request{ChangeAlarm}
+or \request{DestroyAlarm} request is executed.
+
+If the test-type is \enum{PositiveComparison} or
+\enum{PositiveTransition} and delta is less than zero, or
+if the test-type is \enum{NegativeComparison} or
+\enum{NegativeTransition} and delta is greater than zero,
+a \error{Match} error is generated.
+
+The events value enables or disables delivery of \event{AlarmNotify}
+events to the requesting client. The alarm keeps a separate event flag for
+each client so that other clients may select to receive events from this
+alarm.
+
+An \event{AlarmNotify} event is always generated at some time after the
+execution of a \request{CreateAlarm} request. This will happen immediately if
+the trigger is TRUE, or it will happen later when the
+trigger becomes TRUE or the Alarm is destroyed.
+
+% start marker
+\requestdef{ChangeAlarm}
+
+\begin{tabular}{l}
+ \param{id}: ALARM\\
+ \param{values-mask}: CARD32\\
+ \param{values-list}: LISTofVALUE\\[5pt]
+ Errors: \error{Alarm},\error{Counter},\error{Value},\error{Match}
+\end{tabular}
+% end marker
+
+This request changes the parameters of an Alarm. All of the parameters
+specified for the \request{CreateAlarm} request may be changed using this
+request. The trigger is reinitialized and an \event{AlarmNotify}
+event is generated if appropriate, as explained in the description of the
+\request{CreateAlarm} request.
+
+Changes to the events flag affect the event delivery to the requesting
+client only and may be used by a client to select or deselect event delivery
+from an alarm created by another client.
+
+The order in which attributes are verified and altered is
+server-dependent. If an error is generated, a subset of the
+attributes may have been altered.
+
+% start marker
+\requestdef{DestroyAlarm}
+
+\begin{tabular}{l}
+ \param{alarm}: ALARM\\[5pt] Errors: \error{Alarm}
+\end{tabular}
+% end marker
+
+This request destroys an alarm. An alarm is automatically destroyed
+when the creating client is closed down if the close-down mode is {\bf
+Destroy}. When an alarm is destroyed, an \event{AlarmNotify} event is
+generated with a state value of \enum{Destroyed}.
+
+% start marker
+\requestdef{QueryAlarm}
+
+\begin{tabular}{l}
+ \param{alarm}: ALARM\\
+\end{tabular}\\
+$\Rightarrow$\\
+\begin{tabular}{l}
+ trigger: TRIGGER\\
+ delta: INT64\\
+ events: ALARMEVENTMASK\\
+ state: ALARMSTATE\\[5pt]
+ Errors: \error{Alarm}
+\end{tabular}
+% end marker
+
+This request retrieves the current parameters for an Alarm.
+
+% start marker
+\requestdef{SetPriority}
+
+\begin{tabular}{l}
+ \param{client-resource}: XID\\
+ \param{priority}: INT32\\[5pt]
+ Errors: \error{Match}
+\end{tabular}
+% end marker
+
+This request changes the scheduling priority of the client that created
+client-resource. If client-resource is \enum{None}, then the
+priority for the client making the request is changed. A \error{Match} error
+is generated if client-resource is not \enum{None} and does not name
+an existing resource in the server. For any two priority values,
+{\tt A} and {\tt B}, {\tt A} is higher priority if and only if {\tt A} is
+greater than {\tt B}.
+
+The priority of a client is set to 0 when the initial client connection is
+made.
+
+The effect of different client priorities depends on the particular
+implementation of the extension, and in some cases it may have no effect at
+all. However, the intention is that higher priority clients will have their
+requests executed before those of lower priority clients.
+
+For most animation applications, it is desirable that animation clients be
+given priority over nonrealtime clients. This improves the smoothness of the
+animation on a loaded server. Because a server is free to implement very strict
+priorities, processing requests for the highest priority client to the
+exclusion of all others, it is important that a client that may potentially
+monopolize the whole server, such as an animation that produces continuous
+output as fast as it can with no rate control, is run at low rather than high
+priority.
+
+% start marker
+\requestdef{GetPriority}
+
+\begin{tabular}{l}
+ \param{client-resource}: XID\\
+\end{tabular}\\
+$\Rightarrow$\\
+\begin{tabular}{l}
+ priority: INT32\\[5pt]
+ Errors: \error{Match}
+\end{tabular}
+% end marker
+
+This request returns the scheduling priority of the client that created
+client-resource. If client-resource is \enum{None}, then the
+priority for the client making the request is returned. A \error{Match} error
+is generated if client-resource is not \enum{None} and does not name
+an existing resource in the server.
+
+\end{description}
+
+\subsection{Events}
+
+\begin{description}
+
+% start marker
+\eventdef{CounterNotify}
+
+\begin{tabular}{l}
+ \param{counter}: COUNTER \\
+ \param{wait-value}: INT64 \\
+ \param{counter-value}: INT64 \\
+ \param{time}: TIME \\
+ \param{count}: CARD16 \\
+ \param{destroyed}: BOOL
+\end{tabular}
+% end marker
+
+\event{CounterNotify} events may be generated when a client becomes unblocked
+after an \request{Await} request has been processed.
+The wait-value is the value being waited for, and
+counter-value is the actual value of the counter at the time
+the event was generated. The
+destroyed flag is TRUE if this request was generated as the
+result of the destruction of the counter and FALSE otherwise.
+The time is the server time at which the event was generated.
+
+When a client is unblocked, all the \event{CounterNotify} events for the
+\request{Await} request are generated contiguously. If
+count is 0, there are no more events to follow for this request. If
+count is $n$, there are at least $n$ more events to follow.
+
+% start marker
+\eventdef{AlarmNotify}
+
+\begin{tabular}{l}
+ \param{alarm}: ALARM \\
+ \param{counter-value}: INT64 \\
+ \param{alarm-value}: INT64 \\
+ \param{state}: ALARMSTATE \\
+ \param{time}: TIME
+\end{tabular}
+% end marker
+
+An \event{AlarmNotify} event is generated when an alarm is triggered.
+alarm-value is the test value of the trigger in the alarm when it was
+triggered, counter-value is the value of the counter that triggered
+the alarm, and time is the server time at which the event was
+generated. The state is the new state of the alarm. If state is
+\enum{Inactive}, no more events will be generated by this alarm until a
+\request{ChangeAlarm} request is executed, the alarm is destroyed, or the
+counter for the alarm is destroyed.
+
+\end{description}
+
+\section{Encoding}
+
+Please refer to the X11 Protocol Encoding document as this section uses
+syntactic conventions established there and references types defined there.
+
+The name of this extension is ``SYNC''.
+
+\subsection{New Types}
+
+The following new types are used by the extension.
+
+\begin{tabbing}
+\tabstopsC
+ALARM: CARD32\\
+ALARMSTATE:\\
+\tabstopsB
+ \> 0 \> Active \\
+ \> 1 \> Inactive \\
+ \> 2 \> Destroyed\\
+\tabstopsC
+COUNTER: CARD32\\
+INT64: 64-bit signed integer\\
+SYSTEMCOUNTER:\\
+ \> 4 \> COUNTER \> counter \\
+ \> 8 \> INT64 \> resolution\\
+ \> 2 \> n \> length of name in bytes\\
+ \> n \> STRING8 \> name \\
+ \> p \> \> pad,p=pad(n+2)\\
+TESTTYPE:\\
+\tabstopsB
+ \> 0 \> PositiveTransition \\
+ \> 1 \> NegativeTransition \\
+ \> 2 \> PositiveComparison \\
+ \> 3 \> NegativeComparison \\
+\tabstopsC
+TRIGGER:\\
+ \> 4 \> COUNTER \> counter \\
+ \> 4 \> VALUETYPE \> wait-type \\
+ \> 8 \> INT64 \> wait-value \\
+ \> 4 \> TESTTYPE \> test-type \\
+VALUETYPE:\\
+\tabstopsB
+ \> 0 \> Absolute \\
+ \> 1 \> Relative \\
+\tabstopsC
+WAITCONDITION:\\
+ \> 20 \> TRIGGER \> trigger \\
+ \> 8 \> INT64 \> event threshold\\
+\end{tabbing}
+
+An INT64 is encoded in 8 bytes with the most significant 4 bytes
+first followed by the least significant 4 bytes. Within these
+4-byte groups, the byte ordering determined during connection setup
+is used.
+
+\subsection{Errors}
+
+\begin{tabbing}
+\tabstopsC
+{\bf Counter}\\
+ \> 1 \> 0 \> Error \\
+ \> 1 \> Base + 0 \> code \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> CARD32 \> bad counter \\
+ \> 2 \> CARD16 \> minor opcode \\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 21 \> \> unused \\
+{\bf Alarm}\\
+ \> 1 \> 0 \> Error \\
+ \> 1 \> Base + 1 \> code \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> CARD32 \> bad alarm \\
+ \> 2 \> CARD16 \> minor opcode \\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 21 \> \> unused \\
+\end{tabbing}
+
+\subsection{Requests}
+
+\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+\setcounter{footnote}{1}
+\setlength{\topsep}{0pt} %vertical space before and after tabbing
+\begin{tabbing}
+\tabstopsC
+{\bf Initialize}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 0 \> minor opcode \\
+ \> 2 \> 2 \> request length \\
+ \> 1 \> CARD8 \> major version \\
+ \> 1 \> CARD8 \> minor version \\
+ \> 2 \> \> unused \\
+$\Rightarrow$\\
+ \> 1 \> 1 \> Reply \\
+ \> 1 \> \> unused \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> 0 \> reply length \\
+ \> 1 \> CARD8 \> major version \\
+ \> 1 \> CARD8 \> minor version \\
+ \> 2 \> \> unused \\
+ \> 20 \> \> unused \\
+\\
+{\bf ListSystemCounters}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 1 \> minor opcode \\
+ \> 2 \> 1 \> request length \\
+$\Rightarrow$\\
+ \> 1 \> 1 \> Reply \\
+ \> 1 \> \> unused \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> {\it variable} \> reply length \\
+ \> 4 \> INT32 \> list length \\
+ \> 20 \> \> unused \\
+ \> 4n \> list of SYSTEMCOUNTER \> system counters \\
+\\
+{\bf CreateCounter}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 2 \> minor opcode \\
+ \> 2 \> 4 \> request length \\
+ \> 4 \> COUNTER \> id\\
+ \> 8 \> INT64 \> initial value\\
+\\
+{\bf DestroyCounter}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 6 \> minor opcode\footnotemark[1] \\
+ \> 2 \> 2 \> request length \\
+ \> 4 \> COUNTER \> counter
+\end{tabbing}
+\footnotetext{A previous version of this document gave an incorrect
+minor opcode.}
+\begin{tabbing}
+\tabstopsC
+{\bf QueryCounter}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 5 \> minor opcode\footnotemark[1] \\
+ \> 2 \> 2 \> request length \\
+ \> 4 \> COUNTER \> counter \\
+$\Rightarrow$\\
+ \> 1 \> 1 \> Reply \\
+ \> 1 \> \> unused \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> 0 \> reply length \\
+ \> 8 \> INT64 \> counter value \\
+ \> 16 \> \> unused\\
+\\
+{\bf Await}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 7 \> minor opcode\footnotemark[1] \\
+ \> 2 \> 1 + 7*n \> request length \\
+ \> 28n \> LISTofWAITCONDITION \> wait conditions
+\end{tabbing}
+\footnotetext{A previous version of this document gave an incorrect
+minor opcode.}
+\setlength{\topsep}{0pt} %vertical space before and after tabbing
+\begin{tabbing}
+\tabstopsC
+{\bf ChangeCounter}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 4 \> minor opcode\footnotemark[1] \\
+ \> 2 \> 4 \> request length \\
+ \> 4 \> COUNTER \> counter \\
+ \> 8 \> INT64 \> amount \\
+\\
+{\bf SetCounter}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 3 \> minor opcode\footnotemark[1] \\
+ \> 2 \> 4 \> request length \\
+ \> 4 \> COUNTER \> counter \\
+ \> 8 \> INT64 \> value \\
+\\
+{\bf CreateAlarm}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 8 \> minor opcode \\
+ \> 2 \> 3+n \> request length \\
+ \> 4 \> ALARM \> id \\
+ \> 4 \> BITMASK \> values mask\\
+\tabstopsB
+ \> \> \#x00000001 \> counter \\
+ \> \> \#x00000002 \> value-type \\
+ \> \> \#x00000004 \> value \\
+ \> \> \#x00000008 \> test-type \\
+ \> \> \#x00000010 \> delta \\
+ \> \> \#x00000020 \> events \\
+\tabstopsC
+ \> 4n \> LISTofVALUE \> values\\
+\tabstopsB
+VALUES\\
+ \> 4 \> COUNTER \> counter\\
+ \> 4 \> VALUETYPE \> value-type \\
+ \> 8 \> INT64 \> value \\
+ \> 4 \> TESTTYPE \> test-type \\
+ \> 8 \> INT64 \> delta \\
+ \> 4 \> BOOL \> events\\
+\tabstopsC
+\\
+{\bf ChangeAlarm}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 9 \> minor opcode \\
+ \> 2 \> 3+n \> request length \\
+ \> 4 \> ALARM \> id \\
+ \> 4 \> BITMASK \> values mask \\
+ \> \> encodings as for {\bf CreateAlarm}\\
+ \> 4n \> LISTofVALUE \> values\\
+ \> \> encodings as for {\bf CreateAlarm}\\
+\\
+{\bf DestroyAlarm}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 11 \> minor opcode\footnotemark[1] \\
+ \> 2 \> 2 \> request length \\
+ \> 4 \> ALARM \> alarm
+\end{tabbing}
+\footnotetext{A previous version of this document gave an incorrect
+minor opcode.}
+\begin{tabbing}
+\tabstopsC
+{\bf QueryAlarm}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 10 \> minor opcode\footnotemark[1] \\
+ \> 2 \> 2 \> request length \\
+ \> 4 \> ALARM \> alarm \\
+$\Rightarrow$\\
+ \> 1 \> 1 \> Reply \\
+ \> 1 \> \> unused \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> 2 \> reply length \\
+ \> 20 \> TRIGGER \> trigger \\
+ \> 8 \> INT64 \> delta \\
+ \> 1 \> BOOL \> events \\
+ \> 1 \> ALARMSTATE \> state \\
+ \> 2 \> \> unused \\
+\\
+{\bf SetPriority}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 12 \> minor opcode \\
+ \> 2 \> 3 \> request length \\
+ \> 4 \> CARD32 \> id \\
+ \> 4 \> INT32 \> priority \\
+\\
+{\bf GetPriority}\\
+ \> 1 \> CARD8 \> major opcode \\
+ \> 1 \> 13 \> minor opcode \\
+ \> 2 \> 1 \> request length \\
+ \> 4 \> CARD32 \> id \\
+$\Rightarrow$\\
+ \> 1 \> 1 \> Reply \\
+ \> 1 \> \> unused \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> 0 \> reply length \\
+ \> 4 \> INT32 \> priority \\
+ \> 20 \> \> unused\\
+\end{tabbing}
+
+\subsection{Events}
+
+\begin{tabbing}
+\tabstopsC
+{\bf CounterNotify}\\
+ \> 1 \> Base + 0 \> code \\
+ \> 1 \> 0 \> kind \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> COUNTER \> counter \\
+ \> 8 \> INT64 \> wait value \\
+ \> 8 \> INT64 \> counter value \\
+ \> 4 \> TIME \> timestamp \\
+ \> 2 \> CARD16 \> count \\
+ \> 1 \> BOOL \> destroyed \\
+ \> 1 \> \> unused \\
+\\
+{\bf AlarmNotify}\\
+ \> 1 \> Base + 1 \> code \\
+ \> 1 \> 1 \> kind \\
+ \> 2 \> CARD16 \> sequence number \\
+ \> 4 \> ALARM \> alarm \\
+ \> 8 \> INT64 \> counter value \\
+ \> 8 \> INT64 \> alarm value \\
+ \> 4 \> TIME \> timestamp \\
+ \> 1 \> ALARMSTATE \> state \\
+ \> 3 \> \> unused\\
+\end{tabbing}
diff --git a/specs/Xext/synclib.tex b/specs/Xext/synclib.tex
new file mode 100644
index 0000000..d48d1d7
--- /dev/null
+++ b/specs/Xext/synclib.tex
@@ -0,0 +1,772 @@
+% $Xorg: synclib.tex,v 1.3 2000/08/17 19:42:37 cpqbld Exp $
+%
+% Copyright 1991 by Olivetti Research Limited, Cambridge, England and
+% Digital Equipment Corporation, Maynard, Massachusetts.
+%
+% All Rights Reserved
+%
+% Permission to use, copy, modify, and distribute this software and its
+% documentation for any purpose and without fee is hereby granted,
+% provided that the above copyright notice appear in all copies and that
+% both that copyright notice and this permission notice appear in
+% supporting documentation, and that the names of Digital or Olivetti
+% not be used in advertising or publicity pertaining to distribution of the
+% software without specific, written prior permission.
+%
+% DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+% INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+% SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+% ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+% IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+% OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+%\documentstyle[a4]{article}
+\documentstyle{article}
+
+\setlength{\parindent}{0 pt}
+\setlength{\parskip}{6pt}
+
+% Protocol Section
+% For the DP book, these four should be assigned the font for global symbols.
+
+\newcommand{\request}[1]{{\bf #1}}
+\newcommand{\event}[1]{{\bf #1}}
+\newcommand{\error}[1]{{\bf #1}}
+\newcommand{\enum}[1]{{\bf #1}}
+
+% The following fonts are not reassigned for the DP book.
+
+\newcommand{\system}[1]{{\sc #1}}
+\newcommand{\param}[1]{{\it #1}}
+
+\newcommand{\eventdef}[1]{\item {\bf#1}}
+\newcommand{\requestdef}[1]{\item {\bf#1}}
+\newcommand{\errordef}[1]{\item {\bf#1}}
+
+\newcommand{\defn}[1]{{\bf #1}}
+
+\newcommand{\tabstopsA}{\hspace*{4cm}\=\hspace*{1cm}\=\hspace*{7cm}\=\kill}
+\newcommand{\tabstopsB}{\hspace*{1cm}\=\hspace*{1cm}\=\hspace*{3cm}\=\kill}
+\newcommand{\tabstopsC}{\hspace*{1cm}\=\hspace*{1cm}\=\hspace*{5cm}\=\kill}
+
+% commands for formatting the API
+% For the DP book, these three should be assigned the font for global symbols.
+
+\newcommand{\cfunctionname}[1]{\mbox{\tt#1}}
+\newcommand{\ctypename}[1]{\mbox{\tt#1}}
+\newcommand{\cconst}[1]{\mbox{\tt#1}}
+
+% For the DP book, within function definitions, the type and name are in
+% the ordinary font; therefore, ctypenamedef and cfunctionnamedef are used
+% and defined below.
+\newcommand{\ctypenamedef}[1]{\mbox{#1}}
+\newcommand{\cfunctionnamedef}[1]{\mbox{#1}}
+\newcommand{\cargname}[1]{\mbox{\it#1}}
+\newcommand{\cstartfunction}[2]{\begin{sloppypar}\begin{samepage}\ctypenamedef{#1}\\ \cfunctionnamedef{#2}\ (}
+\newcommand{\cargdecl}[2]{\penalty -1\ctypenamedef{#1} \cargname{#2}}
+\newcommand{\cendfunctiondecl}{){\hangafter=2 \hangindent=20pt \raggedright\par}}
+\newcommand{\cendfuncdescription}{\end{samepage}\end{sloppypar}}
+
+\newcommand{\cstartmacro}[2]{\begin{sloppypar}\begin{samepage}\ctypenamedef{#1}\\ \cfunctionnamedef{#2}\ (}
+\newcommand{\cendmacrodecl}{)\par}
+\newcommand{\cendmacrodescription}{\end{samepage}\end{sloppypar}}
+
+% make things easier with all the long names
+\spaceskip .3333em plus 5em
+\tolerance=2000
+
+\begin{document}
+
+\begin{center}
+
+{\large X Synchronization Extension Library}\\[10pt]
+{\large Version 3.0}\\[15pt]
+{\large X Consortium Standard}\\[15pt]
+{\large X Version 11, Release 6.4}\\[15pt]
+{\it Tim Glauert}\\[0pt]
+{\tt thg@cam-orl.co.uk}\\[0pt]
+{\bf Olivetti Research / MultiWorks}\\[5pt]
+{\it Dave Carver}\\[0pt]
+{\tt dcc@athena.mit.edu}\\[0pt]
+{\bf Digital Equipment Corporation,}\\[0pt]
+{\bf MIT / Project Athena}\\[5pt]
+{\it Jim Gettys}\\[0pt]
+{\tt jg@crl.dec.com}\\[0pt]
+{\bf Digital Equipment Corporation,}\\[0pt]
+{\bf Cambridge Research Laboratory}\\[5pt]
+{\it David P. Wiggins}\\[0pt]
+{\tt dpw@x.org}\\[0pt]
+{\bf X Consortium, Inc.}\\[0pt]
+
+\end {center}
+
+Copyright 1991 by Olivetti Research Limited, Cambridge, England and
+Digital Equipment Corporation, Maynard, Massachusetts.
+
+{\small Permission to use, copy, modify, and distribute this documentation
+for any purpose and without fee is hereby granted, provided that the above
+copyright notice appear in all copies. Olivetti, Digital, MIT, and the
+X Consortium
+make no representations about the suitability for any purpose of the
+information in this document. This documentation is provided as is without
+express or implied warranty.}
+
+Copyright (c) 1991 X Consortium, Inc.
+
+{\small Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.}
+\eject
+
+\section{Synchronization Protocol}
+
+The core X protocol makes no guarantees about the relative order of execution
+of requests for different clients. This means that any synchronization between
+clients must be done at the client level in an operating system-dependent and
+network-dependent manner. Even if there was an accepted standard for such
+synchronization, the use of a network introduces unpredictable delays between
+the synchronization of the clients and the delivery of the resulting requests
+to the X server.
+
+The core X protocol also makes no guarantees about the time at which requests
+are executed, which means that all clients with real-time constraints must
+implement their timing on the host computer. Any such timings are subject to
+error introduced by delays within the operating system and network and are
+inefficient because of the need for round-trip requests that keep the client and
+server synchronized.
+
+The synchronization extension provides primitives that allow synchronization
+between clients to take place entirely within the X server. This removes any
+error introduced by the network and makes it possible to synchronize clients
+on different hosts running different operating systems. This is important for
+multimedia applications, where audio, video, and graphics data streams are
+being synchronized. The extension also provides internal timers within the X
+server to which client requests can be synchronized. This allows simple
+animation applications to be implemented without any round-trip requests and
+makes best use of buffering within the client, network, and server.
+
+\subsection{Description}
+
+The mechanism used by this extension for synchronization within the X server
+is to block the processing of requests from a client until a specific
+synchronization condition occurs. When the condition occurs, the client is
+released and processing of requests continues. Multiple clients may block on
+the same condition to give inter-client synchronization. Alternatively, a
+single client may block on a condition such as an animation frame marker.
+
+The extension adds \defn{Counter} and \defn{Alarm} to the set of resources
+managed by the server. A counter has a 64-bit integer value that may be
+increased or decreased by client requests or by the server internally. A
+client can block by sending an \request{Await} request that waits until
+one of a set of synchronization conditions, called TRIGGERs, becomes TRUE.
+
+The \request{CreateCounter} request allows a client to create a
+\defn{Counter} that can be changed by explicit \request{SetCounter} and
+\request{ChangeCounter} requests. These can be used to implement
+synchronization between different clients.
+
+There are some counters, called \defn{System Counters}, that are changed by
+the server internally rather than by client requests. The effect of any change
+to a system counter is not visible until the server has finished processing the
+current request. In other words, system counters are apparently updated in the
+gaps between the execution of requests rather than during the actual execution
+of a request. The extension provides a system counter that advances with the
+server time as defined by the core protocol, and it may also provide counters
+that advance with the real-world time or that change each time the CRT
+screen is refreshed. Other extensions may provide their own
+extension-specific system counters.
+
+The extension provides an \defn{Alarm} mechanism that allows clients to
+receive an event on a regular basis when a particular counter is changed.
+
+\section{C Language Binding}
+
+The C routines provide direct access to the protocol and add
+no additional semantics.
+
+The include file for this extension is \verb|<X11/extensions/sync.h>|.
+
+Most of the names in the language binding are derived from the
+protocol names by prepending \cfunctionname{XSync} to the protocol name and changing
+the capitalization.
+
+\subsection{C Functions}
+
+Most of the following functions generate SYNC protocol requests.
+
+% start marker
+\cstartfunction{Status}{XSyncQueryExtension}
+\cargdecl{Display *}{dpy},
+\cargdecl{int *}{event\_base\_return},
+\cargdecl{int *}{error\_base\_return}
+\cendfunctiondecl
+% end marker
+
+If dpy supports the SYNC extension, \cfunctionname{XSyncQueryExtension}
+returns \cconst{True}, sets *event\_base\_return to the event number for the
+first SYNC event, and sets
+*error\_base\_return to the error number for the first SYNC
+error. If dpy does not support the SYNC extension, it
+returns \cconst{False}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncInitialize}
+\cargdecl{Display *}{dpy},
+\cargdecl{int *}{major\_version\_return},
+\cargdecl{int *}{minor\_version\_return}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncInitialize} sets *major\_version\_return and
+*minor\_version\_return to the major/minor SYNC protocol
+version supported by the server. If the XSync library is compatible
+with the version returned by the server, this function returns \cconst{True}.
+If dpy does not support the SYNC extension, or if there was an error during
+communication with the server, or if the server and library protocol
+versions are incompatible, this function returns \cconst{False}. The only
+XSync function that may be called before this function is
+\cfunctionname{XSyncQueryExtension}. If a client violates this rule,
+the effects of all XSync calls that it makes are undefined.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{XSyncSystemCounter *}{XSyncListSystemCounters}
+\cargdecl{Display *}{dpy},
+\cargdecl{int *}{n\_counters\_return}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncListSystemCounters} returns a pointer to an
+array of system counters supported by the display and sets
+*n\_counters\_return to the number of
+counters in the array. The array should be freed with
+\cfunctionname{XSyncFreeSystemCounterList}. If dpy does not
+support the SYNC extension,
+or if there was an error during communication with the
+server, or if the server does not support any system counters, this
+function returns NULL.
+
+\ctypename{XSyncSystemCounter} has the following fields:
+
+\begin{tabular}{lll}
+char * & name; & /* null-terminated name of system counter */\\
+XSyncCounter & counter; & /* counter id of this system counter */\\
+XSyncValue & resolution; & /* resolution of this system counter */\\
+\end{tabular}
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{void}{XSyncFreeSystemCounterList}
+\cargdecl{XSyncSystemCounter *}{list}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncFreeSystemCounterList} frees the memory associated
+with the system counter list returned by \cfunctionname{XSyncListSystemCounters}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{XSyncCounter}{XSyncCreateCounter}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncValue}{initial\_value}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncCreateCounter} creates a counter on the dpy
+with the given initial\_value and returns the counter ID.
+It returns \cconst{None} if dpy does not
+support the SYNC extension.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncSetCounter}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncCounter}{counter},
+\cargdecl{XSyncValue}{value}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncSetCounter} sets counter to value.
+It returns \cconst{False} if dpy does not support the SYNC extension;
+otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncChangeCounter}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncCounter}{counter},
+\cargdecl{XSyncValue}{value}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncChangeCounter} adds value to counter.
+It returns \cconst{False} if dpy does not support the SYNC extension;
+otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncDestroyCounter}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncCounter}{counter}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncDestroyCounter} destroys counter.
+It returns \cconst{False} if dpy does not
+support the SYNC extension; otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncQueryCounter}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncCounter}{counter},
+\cargdecl{XSyncValue *}{value\_return}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncQueryCounter} sets *value\_return to the current value of
+counter. It returns \cconst{False} if there was an error during
+communication with the server or if dpy does not support
+the SYNC extension; otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncAwait}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncWaitCondition *}{wait\_list},
+\cargdecl{int}{n\_conditions}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncAwait} awaits on the conditions in wait\_list.
+The n\_conditions is the number of wait conditions in
+wait\_list. It returns \cconst{False} if dpy does not
+support the SYNC extension; otherwise, it returns \cconst{True}.
+The await is processed asynchronously by the server;
+this function always returns immediately
+after issuing the request.
+
+\ctypename{XSyncWaitCondition} has the following fields:
+
+\begin{tabular}{lll}
+XSyncCounter & trigger.counter; & /* counter to trigger on */ \\
+XSyncValueType & trigger.value\_type; & /* absolute/relative */ \\
+XSyncValue & trigger.wait\_value; & /* value to compare counter to */ \\
+XSyncTestType & trigger.test\_type; & /* pos/neg comparison/transtion */ \\
+XSyncValue & event\_threshold; & /* send event if past threshold */ \\
+\end{tabular}
+
+\ctypename{XSyncValueType} can be either \cconst{XSyncAbsolute} or \cconst{XSyncRelative}.
+
+\ctypename{XSyncTestType} can be one of \cconst{XSyncPositiveTransition},
+\cconst{XSyncNegativeTransition}, \cconst{XSyncPositiveComparison}, or
+\cconst{XSyncNegativeComparison}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{XSyncAlarm}{XSyncCreateAlarm}
+\cargdecl{Display *}{dpy},
+\cargdecl{unsigned long}{values\_mask},
+\cargdecl{XSyncAlarmAttributes *}{values}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncCreateAlarm} creates an alarm and returns the alarm ID.
+It returns \cconst{None} if the display does not support the SYNC extension.
+The values\_mask and values specify the alarm attributes.
+
+\ctypename{XSyncAlarmAttributes} has the following fields. The attribute\_mask
+column specifies the symbol that the caller should OR into
+values\_mask to indicate that the value for the corresponding
+attribute was actually supplied. Default values are used for all
+attributes that do not have their attribute\_mask OR'ed into
+values\_mask.
+See the protocol
+description for \request{CreateAlarm} for the defaults.
+
+\begin{tabular}{lll}
+type & field name & attribute\_mask \\
+XSyncCounter & trigger.counter; & \cconst{XSyncCACounter} \\
+XSyncValueType & trigger.value\_type; & \cconst{XSyncCAValueType} \\
+XSyncValue & trigger.wait\_value; & \cconst{XSyncCAValue} \\
+XSyncTestType & trigger.test\_type; & \cconst{XSyncCATestType} \\
+XSyncValue & delta; & \cconst{XSyncCADelta} \\
+Bool & events; & \cconst{XSyncCAEvents} \\
+XSyncAlarmState & state; & client cannot set this \\
+\end{tabular}
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncDestroyAlarm}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncAlarm}{alarm}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncDestroyAlarm} destroys alarm.
+It returns \cconst{False} if dpy does not
+support the SYNC extension; otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncQueryAlarm}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncAlarm}{alarm},
+\cargdecl{XSyncAlarmAttributes *}{values\_return}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncQueryAlarm} sets *values\_return to the alarm's
+attributes. It returns \cconst{False} if there was an error
+during communication with the server or if dpy does not support
+the SYNC extension; otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncChangeAlarm}
+\cargdecl{Display *}{dpy},
+\cargdecl{XSyncAlarm}{alarm},
+\cargdecl{unsigned long}{values\_mask},
+\cargdecl{XSyncAlarmAttributes *}{values}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncChangeAlarm} changes alarm's attributes.
+The attributes to change are specified as in \cfunctionname{XSyncCreateAlarm}.
+It returns \cconst{False} if dpy does not support the SYNC extension;
+otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncSetPriority}
+\cargdecl{Display *}{dpy},
+\cargdecl{XID}{client\_resource\_id},
+\cargdecl{int}{priority}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncSetPriority} sets the priority of the client owning
+client\_resource\_id to priority.
+If client\_resource\_id is \cconst{None},
+it sets the caller's priority. It returns \cconst{False} if dpy
+does not support the SYNC extension; otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+
+% start marker
+\cstartfunction{Status}{XSyncGetPriority}
+\cargdecl{Display *}{dpy},
+\cargdecl{XID}{client\_resource\_id},
+\cargdecl{int *}{return\_priority}
+\cendfunctiondecl
+% end marker
+
+\cfunctionname{XSyncGetPriority} sets *return\_priority to the priority
+of the client owning client\_resource\_id.
+If client\_resource\_id is
+\cconst{None}, it sets *return\_priority to the caller's priority.
+It returns \cconst{False} if there was an error
+during communication with the server or if dpy does not
+support the SYNC extension; otherwise, it returns \cconst{True}.
+\cendfuncdescription
+
+\subsection{C Macros/Functions}
+
+The following procedures manipulate 64-bit values. They are defined
+both as macros and as functions. By default, the macro form is used.
+To use the function form, \#undef the macro name to uncover the
+function.
+
+
+% start marker
+\cstartmacro{void}{XSyncIntToValue}
+\cargdecl{XSyncValue}{*pv},
+\cargdecl{int}{i}
+\cendmacrodecl
+% end marker
+
+Converts i to an \ctypename{XSyncValue} and stores it in
+*pv. Performs sign extension (*pv will have the
+same sign as i.)
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{void}{XSyncIntsToValue}
+\cargdecl{XSyncValue}{*pv},
+\cargdecl{unsigned int}{low},
+\cargdecl{int}{high}
+\cendmacrodecl
+% end marker
+
+Stores low in the low 32 bits of *pv and
+high in the high 32 bits of *pv.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueGreaterThan}
+\cargdecl{XSyncValue}{a},
+\cargdecl{XSyncValue}{b}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if a is greater than b,
+else returns \cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueLessThan}
+\cargdecl{XSyncValue}{a},
+\cargdecl{XSyncValue}{b}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if a is less than b,
+else returns \cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueGreaterOrEqual}
+\cargdecl{XSyncValue}{a},
+\cargdecl{XSyncValue}{b}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if a is greater than or equal to b,
+else returns \cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueLessOrEqual}
+\cargdecl{XSyncValue}{a},
+\cargdecl{XSyncValue}{b}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if a is less than or equal to b.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueEqual}
+\cargdecl{XSyncValue}{a},
+\cargdecl{XSyncValue}{b}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if a is equal to b,
+else returns \cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueIsNegative}
+\cargdecl{XSyncValue}{v}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if v is negative, else returns
+\cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueIsZero}
+\cargdecl{XSyncValue}{v}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if v is zero,
+else returns \cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{Bool}{XSyncValueIsPositive}
+\cargdecl{XSyncValue}{v}
+\cendmacrodecl
+% end marker
+
+Returns \cconst{True} if v is positive, else returns
+\cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{unsigned int}{XSyncValueLow32}
+\cargdecl{XSyncValue}{v}
+\cendmacrodecl
+% end marker
+
+Returns the low 32 bits of v.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{int}{XSyncValueHigh32}
+\cargdecl{XSyncValue}{v}
+\cendmacrodecl
+% end marker
+
+Returns the high 32 bits of v.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{void}{XSyncValueAdd}
+\cargdecl{XSyncValue *}{presult},
+\cargdecl{XSyncValue}{a},
+\cargdecl{XSyncValue}{b},
+\cargdecl{Bool *}{poverflow}
+\cendmacrodecl
+% end marker
+
+Adds a to b and stores the result in *presult.
+If the result could not fit in 64 bits, *poverflow is set to
+\cconst{True}, else it is set to \cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{void}{XSyncValueSubtract}
+\cargdecl{XSyncValue *}{presult},
+\cargdecl{XSyncValue}{a},
+\cargdecl{XSyncValue}{b},
+\cargdecl{Bool *}{poverflow}
+\cendmacrodecl
+% end marker
+
+Subtracts b from a and stores the result in
+*presult.
+If the result could not fit in 64 bits, overflow is set to
+\cconst{True}, else it is set to \cconst{False}.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{void}{XSyncMaxValue}
+\cargdecl{XSyncValue *}{pv}
+\cendmacrodecl
+% end marker
+
+Sets *pv to the maximum value expressible in 64 bits.
+\cendmacrodescription
+
+
+% start marker
+\cstartmacro{void}{XSyncMinValue}
+\cargdecl{XSyncValue *}{pv}
+\cendmacrodecl
+% end marker
+
+Sets *pv to the minimum value expressible in 64 bits.
+\cendmacrodescription
+
+\subsection{Events}
+
+Let \cargname{event\_base} be the value \cargname{event\_base\_return}
+as defined in the function \cfunctionname{XSyncQueryExtension}.
+
+An \ctypename{XSyncCounterNotifyEvent}'s type field has the value
+\cargname{event\_base} + \cconst{XSyncCounterNotify}. The fields of
+this structure are:
+
+\begin{tabular}{lll}
+int & type; & /* event base + \cconst{XSyncCounterNotify} */ \\
+unsigned long & serial; & /* number of last request processed by server */ \\
+Bool & send\_event;& /* true if this came from a SendEvent request */ \\
+Display * & display; & /* Display the event was read from */\\
+XSyncCounter & counter; & /* counter involved in await */\\
+XSyncValue & wait\_value; & /* value being waited for */\\
+XSyncValue & counter\_value; & /* counter value when this event was sent */\\
+Time & time; & /* milliseconds */\\
+int & count; & /* how many more events to come */\\
+Bool & destroyed; & /* True if counter was destroyed */\\
+\end{tabular}
+
+An \ctypename{XSyncAlarmNotifyEvent}'s type field has the value
+\cargname{event\_base} + \cconst{XSyncAlarmNotify}. The fields of this
+structure are:
+
+\begin{tabular}{lll}
+int & type;& /* event base + \cconst{XSyncAlarmNotify} */\\
+unsigned long & serial;&/* number of last request processed by server */\\
+Bool & send\_event;& /* true if this came from a SendEvent request */\\
+Display * & display;& /* Display the event was read from */\\
+XSyncAlarm & alarm;& /* alarm that triggered */\\
+XSyncValue & counter\_value;&/* value that triggered the alarm */\\
+XSyncValue & alarm\_value;& /* test value of trigger in alarm */\\
+Time & time;& /* milliseconds */\\
+XSyncAlarmState & state;& /* new state of alarm */\\
+\end{tabular}
+
+\subsection{Errors}
+
+Let \cargname{error\_base} be the value \cargname{error\_base\_return}
+as defined in the function \cfunctionname{XSyncQueryExtension}.
+
+An \ctypename{XSyncAlarmError}'s error\_code field has the value
+\cargname{error\_base} + \cconst{XSyncBadAlarm}. The fields of
+this structure are:
+
+\begin{tabular}{lll}
+int & type; \\
+Display * & display;& /* Display the event was read from */\\
+XSyncAlarm & alarm;& /* resource id */\\
+unsigned long & serial;& /* serial number of failed request */\\
+unsigned char & error\_code;&/* error base + XSyncBadAlarm */\\
+unsigned char & request\_code;&/* Major op-code of failed request */\\
+unsigned char & minor\_code;&/* Minor op-code of failed request */\\
+\end{tabular}
+
+An \ctypename{XSyncCounterError}'s error\_code field has the value
+\cargname{error\_base} + \cconst{XSyncBadCounter}. The fields of
+this structure are:
+
+\begin{tabular}{lll}
+int &type;\\
+Display * & display;& /* Display the event was read from */\\
+XSyncCounter & counter;& /* resource id */\\
+unsigned long & serial;& /* serial number of failed request */\\
+unsigned char & error\_code;&/* error base + XSyncBadCounter */\\
+unsigned char & request\_code;&/* Major op-code of failed request */\\
+unsigned char & minor\_code;& /* Minor op-code of failed request */\\
+\end{tabular}
+
+\end{document}
diff --git a/specs/Xext/tog-cup.ms b/specs/Xext/tog-cup.ms
new file mode 100644
index 0000000..9a44753
--- /dev/null
+++ b/specs/Xext/tog-cup.ms
@@ -0,0 +1,395 @@
+.\" Use -ms and macros.t
+.\" $Xorg: tog-cup.ms,v 1.3 2000/08/17 19:42:37 cpqbld Exp $
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 3
+
+
+\s+2\fBColormap Utilization Policy and Extension\fP\s-2
+.sp 3
+.ce 3
+Version 1.0
+X Project Team Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+Kaleb S. KEITHLEY
+.sp 6p
+The Open Group
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+Copyright \(co 1986-1997 The Open Group All Rights Reserved
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the Software), to use the Software
+without restriction, including, without limitation, the rights to copy, modify, merge,
+publish, distribute and sublicense the Software, to make, have made, license and
+distribute derivative works thereof, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and the following permission notice shall be included in all
+copies of the Software:
+.LP
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
+INFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN
+CONNNECTION WITH THE SOFTWARE OR THE USE OF OTHER DEALINGS IN
+THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of The Open Group shall not be used in
+advertising or otherwise to promote the use or other dealings in this Software without
+prior written authorization from The Open Group.
+.LP
+X Window System is a trademark of The Open Group.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''X11 Colormap Utilization Policy and Extension''
+.OH ''X11 Colormap Utilization Policy and Extension''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.LP
+This extension has three purposes: a) to provide mechanism for a special
+application (a colormap manager) to discover any special colormap
+requirements, e.g. the colormap entries that are nominally reserved for
+desktop colors in the MS-Windows environment and initialize the default
+colormap so that it can be more easily shared; and b) to encourage colormap
+sharing and reduce colormap flashing on low-end 8-bit frame buffers by
+providing a policy for sharing; and c) when colormaps aren't shared,
+define a behavior in the X server color allocation scheme to reduce
+colormap flashing.
+.LP
+To encourage colormap sharing and accomodate special colormap requirements
+two new protocols are defined: the first provides a way to query the
+server for a list of reserved colormap entries, and the second is a way
+to initialize read-only (shareable) colormap entries at specific locations
+in a colormap.
+.LP
+To minimize colormap flashing when the root window's default visual is one
+of GrayScale, PseudoColor, or DirectColor, and a private colormap for the
+default visual is being used, a minor (but compatible) change to the
+server implementation of the AllocColor and AllocNamedColor requests is
+required. Where the core protocol says nothing about the pixel values
+returned, when this extension is in effect, the AllocColor and AllocNamedColor
+requests will first look for a matching color in the default colormap, and,
+if a match is found and the same cell in the private colormap has not
+already been allocated, the color will be allocated in the private colormap
+at the same locaton as in the default colormap (instead of in the first
+available location.)
+.NH 1
+Requests
+.LP
+.sM
+.PN QueryVersion
+.IP
+client_major_version: CARD16
+.br
+client_minor_version: CARD16
+.LP
+ =>
+.IP
+server_major_version: CARD16
+.br
+server_minor_version: CARD16
+.LP
+.eM
+If supplied, the client_major_version and client_minor_version indicate
+what version of the protocol the client wants the server to implement.
+The server version numbers returned indicate the protocol this extension
+actually supports. This might not equal the version sent by the client.
+An implementation can (but need not) support more than one version
+simultaneously. The server_major_version and the server_minor_version
+are a mechanism to support future revisions of the TOG-CUP protocol that
+may be necessary. In general, the major version would increment for
+incompatible changes, and the minor version would increment for small
+upward-compatible changes. Servers that support the protocol defined in
+this document will return a server_major_version of one (1), and a
+server_minor_version of zero (0).
+.LP
+.sM
+.PN GetReservedColormapEntries
+.IP
+screen: CARD32
+.LP
+ =>
+.IP
+entries: LISTofCOLORITEM
+.LP
+.eM
+This request returns a list of colormap entries (pixels) that are reserved
+by the system, e.g. MS-Windows reserved desktop colors. This list will, at a
+minimum, contain entries for the BlackPixel and WhitePixel of the specified
+screen. The do-red, do-green, and do-blue elements of the COLORITEMs are
+unused in this reply.
+.LP
+Rationale: There are colormap entries (pixels) that, e.g., MS-Windows
+desktop reserves as desktop colors, that should not be altered. If they
+are altered then X programs will cause colormap flashing between X and
+MS-Windows applications running/displaying on the same desktop.
+.LP
+.sM
+.PN StoreColors
+.IP
+cmap: COLORMAP
+.br
+items: LISTofCOLORITEM
+.LP
+ =>
+.IP
+items: LISTofCOLORITEM
+.LP
+.eM
+This request changes the colormap entries of the specified pixels. The
+colormap entries are allocated as if by an AllocColor request. The do-red,
+do-green, and do-blue elements of the COLORITEMs are unused in this request.
+A boolean alloc-ok element (a bit) is returned indicating whether the
+particular pixel was successfully allocated or not. If successfully
+allocated the RGB and pixel are returned.
+.LP
+A Value error is generated if a pixel is not a valid index into cmap. A
+BadMatch error is generated if if cmap does not belong to a GrayScale,
+PseudoColor, or DirectColor visual.
+.LP
+.NH 1
+Events and Errors
+.LP
+No new events or errors are defined by this extension.
+.LP
+.NH 1
+Changes to existing protocol.
+.LP
+None.
+.LP
+.NH 1
+Encoding
+.LP
+The name of this extension is "TOG-CUP".
+.LP
+The conventions used here are the same as those for the core X11
+Protocol Encoding.
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN QueryVersion
+.sp 6p
+ 1 CARD8 opcode
+ 1 0 TOG-CUP opcode
+ 2 2 request length
+ 2 CARD16 client_major_version
+ 2 CARD16 client_minor_version
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 2 CARD16 server_major_version
+ 2 CARD16 server_minor_number
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN GetReservedColormapEntries
+ 1 CARD8 opcode
+ 1 1 TOG-CUP opcode
+ 2 2 request length
+ 4 CARD32 screen
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 3n length
+ 24 unused
+ 12n LISTofCOLORITEM items
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN StoreColors
+ 1 CARD8 opcode
+ 1 2 TOG-CUP opcode
+ 2 2+3n request length
+ 4 COLORMAP cmap
+ 12n LISTofCOLORITEM items
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 3n length
+ 24 unused
+ 12n LISTofCOLORITEM items
+.De
+.LP
+(The definition of COLORITEM here is only for the purpose of defining the
+additional alloc-ok member in the CUPStoreColors reply.)
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ COLORITEM
+ 4 CARD32 pixel
+ 2 CARD16 red
+ 2 CARD16 green
+ 2 CARD16 blue
+ 1 alloc-ok
+ #x07 unused
+ #x08 alloc-ok (1 is True, 0 is False)
+ #xF0 unused
+ 1 unused
+.De
+.LP
+.NH 1
+C Language Binding
+.LP
+The C functions provide direct access to the protocol and add no additional
+semantics. For complete details on the effects of these functions, refer
+to the appropriate protocol request, which can be derived by deleting XCup
+at the start of the function. All functions that have return type Status
+will return nonzero for success and zero for failure.
+.LP
+The include file for this extension is
+.Pn < X11/extensions/Xcup.h >.
+.LP
+.sM
+.FD 0
+.PN Status XCupQueryVersion(
+.br
+ Display* \fIdisplay\fP\^,
+.br
+ int* \fImajor_version_return\fP\^,
+.br
+ int* \fIminor_version_return\fP\^)
+.FN
+.LP
+.eM
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImajor_version_return\fP 1i
+Returns the major version supported by the server.
+.IP \fIminor_version_return\fP 1i
+Returns the minor version supported by the server.
+.LP
+XCupQueryVersions sets major_version_return and minor_version_return to
+the major and minor TOG-CUP protocol version supported by the server. If
+the TOG-CUP library is compatible with the version returned by the server,
+it returns nonzero. If dpy does not support the TOG-CUP extension, or if
+there was an error during communication with the server, or if the server
+and library protocol versions are incompatible, it returns zero. No other
+XCup functions may be called before this function. If a client violates
+this rule, the effects of all subsequent XCup calls that it makes are
+undefined.
+.LP
+To get the list of reserved colormap entries, use
+XCupGetReservedColormapEntries.
+.LP
+.sM
+.FD 0
+.PN Status XCupGetReservedColormapEntries(
+.br
+ Display* \fIdisplay\fP\^,
+.br
+ int \fIscreen\fP\^,
+.br
+ XColor** \fIcolors_out\fP\^,
+.br
+ int* \fIncolors\fP\^)
+.FN
+.LP
+.eM
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolors_out\fP 1i
+Returns the values reserved by the server.
+.IP \fIncolors\fP 1i
+Returns the number of items in colors_out.
+.LP
+The XCupGetReservedColormapEntries function gets system specific colormap
+entries. E.g. the MS-Windows desktop uses N colormap entries at the beginning
+(0..N) and end (256-N..255) of the colormap. Use XFree to free colors_out.
+.LP
+To allocate one or more read-only color cells with RGB values, use
+XCupStoreColors.
+.LP
+.sM
+.FD 0
+.PN Status XCupStoreColors(
+.br
+ Display* \fIdisplay\fP\^,
+.br
+ Colormap \fIcolormap\fP\^,
+.br
+ XColor* \fIcolors_in_out\fP\^,
+.br
+ int \fIncolors\fP\^)
+.FN
+.LP
+.eM
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcolors_in_out\fP 1i
+Specifies and returns the values actually used in the colormap.
+.IP \fIncolors\fP 1i
+Specifies the number of items in colors_in_out.
+.LP
+The XCupStoreColors function changes the colormap entries of the pixel
+values specified in the pixel members of the XColor structures. The colormap
+entries are allocated as if an AllocColor had been used instead, i.e. the
+colors are read-only (shareable). XCupStoreColors returns the number of
+colors that were successfully allocated in the colormap.
+.LP
+.NH 1
+Using the TOG-CUP extension and Colormap Utilization Policy
+.LP
+The X server preallocates any hardware or desktop special colors in the
+default colormap; e.g. UNIX X servers preallocate Black and White pixels.
+PC X servers should also preallocate the MS-Windows desktop colors. (Note
+to implementors: in the Sample Implementation special colors are allocated
+in the default colormap in cfbCreateDefColormap for dumb memory framebuffers.)
+.LP
+To minimize colormap flash an application which installs its own private
+colormap should query the special colors by calling
+XCupGetReservedColormapEntries, and can then store those entries (in the
+proper location) in its private colormap using XCupStoreColors.
+.LP
+Applications which allocate many colors in a screen's default colormap, e.g.
+a color-cube or a gray-ramp, should allocate them with XCupStoreColors. By
+using XCupStoreColors the colors will be allocated sharable (read-only) and
+any other application which allocates the same color will share that color
+cell.
+.LP
diff --git a/specs/Xext/xc-misc.ms b/specs/Xext/xc-misc.ms
new file mode 100644
index 0000000..464b86e
--- /dev/null
+++ b/specs/Xext/xc-misc.ms
@@ -0,0 +1,221 @@
+.\" Use -ms and macros.t
+.\" $Xorg: xc-misc.ms,v 1.3 2000/08/17 19:42:37 cpqbld Exp $
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 1
+\s+2\fBXC-MISC Extension\fP\s-2
+.sp 3
+.ce 3
+Version 1.1
+X Consortium Standard
+X Version 11, Release 6.4
+.sp 6
+.ce 4
+Bob Scheifler
+David P. Wiggins
+.sp 6p
+X Consortium, Inc.
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+Copyright \(co 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''XC-MISC Extension''
+.OH ''XC-MISC Extension''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.LP
+When an X client connects to an X server, it receives a fixed range of
+resource IDs to use to identify the client's resources inside the X
+server. Xlib hands these out sequentially as needed. When it
+overruns the end of the range, an IDChoice protocol error results.
+Long running clients, or clients that use resource IDs at a rapid
+rate, may encounter this circumstance. When it happens, there are
+usually many resource IDs available, but Xlib doesn't know about them.
+.LP
+One approach to solving this problem would be to have Xlib notice when
+a resource is freed and recycle its ID for future use. This strategy
+runs into difficulties because sometimes freeing one resource causes
+others to be freed (for example, when a window is destroyed, so are
+its children). To do a complete job, Xlib would have to maintain a
+large amount of state that currently resides only in the server (the
+entire window tree in the above example). Even if a less
+comprehensive strategy was adopted, such as recycling only those IDs
+that Xlib can identify without maintaining additional state, the
+additional bookkeeping at resource creation and destruction time
+would likely introduce unacceptable overhead.
+.LP
+To avoid the problems listed above, the server's complete knowledge of
+all resource IDs in use by a client is leveraged. This extension
+provides two ways for Xlib to query the server for available resource
+IDs.
+Xlib can use these extension requests behind the scenes when it has
+exhausted its current pool of resource IDs.
+.NH 1
+Requests
+.LP
+.PN "XCMiscGetVersion"
+.IP
+\fIclient_major_version\fP\^: CARD16
+.br
+\fIclient_minor_version\fP\^: CARD16
+.LP
+ =>
+.IP
+\fIserver_major_version\fP\^: CARD16
+.br
+\fIserver_minor_version\fP\^: CARD16
+.LP
+If supplied, the \fIclient_major_version\fP and
+\fIclient_minor_version\fP indicate what version of the protocol the
+client wants the server to implement. The server version numbers
+returned indicate the protocol this extension actually supports. This
+might not equal the version sent by the client. An implementation can
+(but need not) support more than one version simultaneously. The
+\fIserver_major_version\fP and the \fIserver_minor_version\fP are a
+mechanism to support future revisions of the XC-MISC protocol
+which may be necessary. In general, the major version would increment
+for incompatible changes, and the minor version would increment for
+small, upward-compatible changes. Servers that support the protocol
+defined in this document will return a \fIserver_major_version\fP of
+one (1), and a \fIserver_minor_version\fP of one (1).
+.LP
+.PN "XCMiscGetXIDRange"
+.LP
+ =>
+.IP
+\fIstart_id\fP\^: XID
+.br
+\fIcount\fP\^: CARD32
+.LP
+This request returns a range of available resource IDs for the client
+issuing the request. \fIstart_id\fP is the first ID in the range.
+\fIcount\fP is the number of IDs in the range. The returned range may
+or may not be the largest possible range.
+.LP
+.PN "XCMiscGetXIDList"
+.IP
+\fIcount\fP\^: CARD32
+.LP
+ =>
+.IP
+\fIids\fP\^: LISTofXID
+.LP
+This request returns the a list of individual resource IDs in \fIids\fP.
+\fIcount\fP is the number of resource IDs requested.
+The number returned may be smaller than the number requested.
+.NH 1
+Events and Errors
+.LP
+No new events or errors are defined by this extension.
+.NH 1
+Encoding
+.LP
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+.LP
+The name of this extension is ``XC-MISC''.
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN XCMiscGetVersion
+ 1 CARD8 opcode
+ 1 0 XC-MISC opcode
+ 2 2 request length
+ 2 CARD16 client_major_version
+ 2 CARD16 client_minor_version
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 2 CARD16 server_major_version
+ 2 CARD16 server_minor_version
+ 20 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN XCMiscGetXIDRange
+ 1 CARD8 opcode
+ 1 1 XC-MISC opcode
+ 2 1 request length
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 length
+ 4 XID start_id
+ 4 CARD32 count
+ 16 unused
+.De
+.LP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN XCMiscGetXIDList
+ 1 CARD8 opcode
+ 1 2 XC-MISC opcode
+ 2 2 request length
+ 4 CARD32 count
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 CARD32 length
+ 4 CARD32 number of XIDs in ids
+ 20 unused
+ 4n LISTofXID ids
+.De
diff --git a/specs/Xext/xtest.ms b/specs/Xext/xtest.ms
new file mode 100644
index 0000000..abae03c
--- /dev/null
+++ b/specs/Xext/xtest.ms
@@ -0,0 +1,483 @@
+.\" Use -ms and macros.t
+.\" edited for DP edits and code consistency w/ core protocol/xlib 4/2/96
+.\" $Xorg: xtest.ms,v 1.3 2000/08/17 19:42:37 cpqbld Exp $
+.de lP
+.ne 8
+.LP
+..
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 1
+\s+2\fBXTEST Extension Protocol\fP\s-2
+.sp 3
+.ce 3
+Version 2.2
+X Consortium Standard
+.sp 6
+.ce 4
+\s-1Kieron Drake
+.sp 6p
+UniSoft Ltd.\s+1
+.bp
+.sp 10
+.ps 9
+.nr PS 9
+.sp 8
+.lP
+Copyright \(co 1992 by UniSoft Group Ltd.
+.lP
+Permission to use, copy, modify, and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies. UniSoft makes no
+representations about the suitability for any purpose of the information in
+this document. This documentation is provided ``as is'' without express or
+implied warranty.
+.lP
+.sp 5
+Copyright \(co 1992, 1994 X Consortium
+.lP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.lP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.lP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.lP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''XTEST Extension Protocol''
+.OH ''XTEST Extension Protocol''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.lP
+This extension is a minimal set of client and server extensions
+required to completely test the X11 server with no user intervention.
+.lP
+This extension is not intended to support general journaling and
+playback of user actions. This is a difficult area [XTrap, 89] as it attempts
+to synchronize synthetic user interactions with their effects; it is at the
+higher level of dialogue recording/playback rather than at the strictly lexical
+level. We are interested only in the latter, simpler, case. A more detailed
+discussion and justification of the extension functionality is given in
+[Drake, 91].
+.lP
+We are aiming only to provide a minimum set of facilities that
+solve immediate testing and validation problems. The testing extension
+itself needs testing, where possible, and so should be as simple as possible.
+.lP
+We have also tried to:
+.IP \(bu 5
+Confine the extension to an appropriate high level within the server
+to minimize portability problems. In practice this means that the extension
+should be at the DIX level or use the DIX/DDX interface, or both. This
+has effects, in particular, on the level at which \*Qinput synthesis\*U
+can occur.
+.IP \(bu 5
+Minimize the changes required in the rest of the server.
+.IP \(bu 5
+Minimize performance penalties on normal server operation.
+.lP
+.NH 1
+Description
+.lP
+The functions provided by this extension fall into two groups:
+.IP "\fBClient Operations\fP" .5i
+These routines manipulate otherwise hidden client-side behavior. The
+actual implementation will depend on the details of the actual language
+binding and what degree of request buffering, GContext caching, and so on, is
+provided.
+In the C binding, defined in ``XTEST Extension Library'', routines are
+provided to access the internals of two opaque data structures
+.Pn \*- GC s
+and
+.PN Visual s\*-
+and to discard any requests pending within the
+output buffer of a connection. The exact details can be expected to differ for
+other language bindings.
+.IP "\fBServer Requests\fP" .5i
+The first of these requests is similar to that provided in most
+extensions: it allows a client to specify a major and minor version
+number to the server and for the server to respond with major and minor
+versions of its own. The remaining two requests allow the following:
+.RS
+.IP \(bu 5
+Access to an otherwise \*Qwrite-only\*U server resource: the cursor
+associated with a given window
+.IP \(bu 5
+Perhaps most importantly, limited synthesis of input device events,
+almost as if a cooperative user had moved the pointing device
+or pressed a key or button.
+.RE
+.NH 1
+Types
+.lP
+The following types are used in the request and event definitions in
+subsequent sections:
+.lP
+FAKE_EVENT_TYPE
+.Pn { KeyPress ,
+.PN KeyRelease ,
+.PN MotionNotify ,
+.PN ButtonPress ,
+.PN ButtonRelease }
+.lP
+.Ds 0
+.TA .75i 1.25i
+.ta .75i 1.25i
+.R
+FAKE_EVENT [type: FAKE_EVENT_TYPE,
+ detail: BYTE,
+ time: TIME,
+ root: WINDOW,
+ rootX, rootY: INT16]
+.De
+.lP
+CURSOR
+.Pn { CurrentCursor ,
+.PN None }
+or a cursor as defined by the X11 Protocol.
+.NH 1
+Client Operations
+.lP
+These are abstract definitions of functionality. They refer to client-side
+objects such as \*QGC\*U and \*QVISUAL\*U that are quoted to
+denote their abstract nature. Concrete versions of these functions are
+defined only for particular language bindings. In some circumstances
+a particular language binding may not implement the relevant abstract
+type or may provide it as a transparent, rather than opaque, type, with
+the result that the corresponding function does not make sense or is
+not required, respectively.
+.LP
+.sM
+.PN "XTestSetGContextOfGC"
+.IP
+\fIgc\fP\^: \*QGC\*U
+.br
+\fIgid\fP\^: GCONTEXT
+.LP
+.eM
+.LP
+Sets the GCONTEXT within the \*QGC\*U gc to have
+the value specified by gid.
+.LP
+.sM
+.PN "XTestSetVisualIDOfVisual"
+.IP
+\fIvisual\fP\^: \*QVISUAL\*U
+.br
+\fIvisualid\fP\^: VISUALID
+.LP
+.eM
+.LP
+Sets the VISUALID within the \*QVISUAL\*U visual to have
+the value specified by visualid.
+.LP
+.sM
+.PN "XTestDiscard"
+.IP
+\fIdpy\fP\^: \*QCONNECTION\*U
+.lP
+ =>
+.IP
+status: BOOL
+.LP
+.eM
+.LP
+Discards any requests that are present in the request buffer associated with
+the \*QCONNECTION\*U dpy.
+The status returned is
+.PN True
+if there were one or more requests
+in the buffer and
+.PN False
+otherwise.
+.NH 1
+Server Requests
+.LP
+.sM
+.PN "XTestGetVersion"
+.IP
+\fIclientMajorVersion\fP\^: CARD16
+.br
+\fIclientMinorVersion\fP\^: CARD16
+.lP
+ =>
+.IP
+serverMajorVersion: CARD16
+.br
+serverMinorVersion: CARD16
+.IP
+Errors:
+.PN Length
+.LP
+.eM
+.LP
+This request can be used to ensure that the server version of the XTEST
+extension is usable by the client. This document defines major version two
+(2), minor version one (1).
+.LP
+.sM
+.PN "XTestCompareCursor"
+.IP
+\fIwindow\fP\^: WINDOW
+.br
+\fIcursor-id\fP\^: CURSOR or
+.PN CurrentCursor
+or
+.PN None
+.lP
+ =>
+.IP
+same: BOOL
+.IP
+Errors:
+.PN Window ,
+.PN Length ,
+.PN Cursor
+.LP
+.eM
+.LP
+This request looks up the cursor associated with the window and
+compares it with either the null cursor if cursor-id is
+.PN None ,
+or the current cursor (that is, the one being displayed),
+or the cursor whose ID is cursor-id, and returns
+the result of the comparison in same.
+.LP
+.sM
+.PN "XTestFakeInput"
+.IP
+\fIevents\fP\^: LISTofFAKE_EVENT
+.IP
+Errors:
+.PN Window ,
+.PN Length ,
+.PN Alloc ,
+.PN Value
+.LP
+.eM
+.LP
+This request simulates the limited set of core protocol
+events within the set FAKE_EVENT_TYPE. Only the following event fields,
+defined in FAKE_EVENT, are interpreted:
+.IP \fItype\fP 1i
+This must be one of
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN MotionNotify ,
+.PN ButtonPress ,
+or
+.PN ButtonRelease ,
+or else a
+.PN Value
+error occurs.
+.IP \fIdetail\fP 1i
+For key events, this field is interpreted as the physical keycode.
+If the keycode is less than min-keycode or greater than max-keycode,
+as returned in the connection setup, then a
+.PN Value
+error occurs.
+For button events, this field is interpreted as the physical (or core) button,
+meaning it will be mapped to the corresponding logical button according to
+the most recent
+.PN SetPointerMapping
+request.
+If the button number is less than one or greater than the number of physical
+buttons, then a
+.PN Value
+error occurs.
+For motion events, if this field is
+.PN True ,
+then rootX and rootY
+are relative distances from the current pointer location; if this field is
+.PN False,
+then they are absolute positions.
+.IP \fItime\fP 1i
+This is either
+.PN CurrentTime
+(meaning no delay)
+or the delay in milliseconds that the server should wait before
+simulating this event. No other requests from this client will be
+processed until this delay, if any, has expired and subsequent processing
+of the simulated event has been completed.
+.IP \fIroot\fP 1i
+In the case of motion events this field is the ID of the root window on
+which the new motion is to take place. If
+.PN None
+is specified, the root window of the screen the pointer is currently on
+is used instead.
+If this field is not a valid window, then a
+.PN Window
+error occurs.
+.IP "\fIrootX\fP & \fIrootY\fP" 1i
+In the case of motion events these fields indicate relative distance or
+absolute pointer coordinates, according to the setting of detail.
+If the specified coordinates are off-screen, the closest on-screen
+coordinates will be substituted.
+.LP
+When the simulated event(s) are processed, they cause event propagation,
+passive grab activation, and so on, just as if the corresponding input device
+action had occurred. However, motion events might not be recorded in the
+motion history buffer.
+.LP
+For the currently supported event types, the event list must have length one,
+otherwise a
+.PN BadLength
+error occurs.
+.LP
+.sM
+.PN "XTestGrabControl"
+.IP
+\fIimpervious\fP\^: BOOL
+.LP
+.eM
+.LP
+If impervious is
+.PN True ,
+then the executing client becomes impervious to server grabs;
+that is, it can continue executing requests even if another client
+grabs the server.
+If impervious is
+.PN False ,
+then the executing client returns to the normal state of being
+susceptible to server grabs.
+.NH 1
+Encoding
+.lP
+Please refer to the X11 Protocol Encoding document as this document uses
+conventions established there.
+.lP
+The name of this extension is ``XTEST''.
+.NH 2
+New Types
+.lP
+.Ds 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+.R
+FAKE_EVENT_TYPE
+ 2 KeyPress
+ 3 KeyRelease
+ 4 ButtonPress
+ 5 ButtonRelease
+ 6 MotionNotify
+.De
+.LP
+NOTE that the above values are defined to be the same as those for
+the corresponding core protocol event types.
+.NH 2
+Requests
+.lP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN XTestGetVersion
+ 1 CARD8 opcode
+ 1 0 xtest opcode
+ 2 2 request length
+ 1 CARD8 client major version
+ 1 unused
+ 2 CARD16 client minor version
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 CARD8 server major version
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 server minor version
+ 22 unused
+.De
+.lP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN XTestCompareCursor
+ 1 CARD8 opcode
+ 1 1 xtest opcode
+ 2 3 request length
+ 4 WINDOW window
+ 4 CURSOR cursor-id
+ 0 None
+ 1 CurrentCursor
+.De
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+ =>
+ 1 1 Reply
+ 1 BOOL cursors are the same
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+.De
+.lP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN XTestFakeInput
+ 1 CARD8 opcode
+ 1 2 xtest opcode
+ 2 1+(1*8) request length
+ 1 FAKE_EVENT_TYPE fake device event type
+ 1 BYTE detail: button or keycode
+ 2 unused
+ 4 TIME delay (milliseconds)
+ 0 CurrentTime
+ 4 WINDOW root window for MotionNotify
+ 0 None
+ 8 unused
+ 2 INT16 x position for MotionNotify
+ 2 INT16 y position for MotionNotify
+ 8 unused
+.De
+.lP
+.Ds 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+.R
+.PN XTestGrabControl
+ 1 CARD8 opcode
+ 1 3 xtest opcode
+ 2 2 request length
+ 1 BOOL impervious
+ 3 unused
+.De
+.NH 1
+References
+.XP
+Annicchiarico, D., et al., \fIXTrap: The XTrap Architecture\fP\^.
+Digital Equipment Corporation, July 1991.
+.XP
+Drake, K. J., \fISome Proposals for a Minimum X11 Testing Extension\fP\^.
+UniSoft Ltd., June 1991.
+.LP
diff --git a/specs/Xext/xtest1.info b/specs/Xext/xtest1.info
new file mode 100644
index 0000000..aa28302
--- /dev/null
+++ b/specs/Xext/xtest1.info
@@ -0,0 +1,90 @@
+XTestGenerateEvent is supposed to cause the server to generate a key or
+button event, exactly as one would be generated if a user pressed a key
+or pushed a mouse button. Without knowing how your server does that for
+normal input events, I can't tell you exactly how that should look, but
+it would be something like:
+
+void
+XTestGenerateEvent (dev_type, key_or_button_code, direction, x, y)
+ int dev_type; /* MOUSE = X pointer, KEYBOARD = X keyboard */
+ int key_or_button_code; /* code to stash in event */
+ int direction; /* XTestKEY_UP or XTestKEY_DOWN */
+ int x,y; /* location of event */
+ {
+ int type;
+ xEvent *xE;
+
+ if (key_or_button_code < 8) /* must be a button */
+ if (direction == XTestKEY_UP) /* it's a release event*/
+ type = ButtonRelease;
+ else
+ type = ButtonPress;
+ else /* must be a key */
+ if (direction == XTestKEY_UP) /* it's a release event*/
+ type = KeyRelease;
+ else
+ type = KeyPress;
+
+ /* get an xEvent from some place where ProcessInputEvents can find it. */
+ /* I don't know how your implementation does this. */
+
+ xE = somehow_get_xEvent();
+
+ xE->u.u.type = type;
+ xE->u.u.detail = key_or_button_code;
+ xE->u.keyButtonPointer.time = GetTimeInMillis();
+ xE->u.keyButtonPointer.rootX = x;
+ xE->u.keyButtonPointer.rootY = y;
+
+ /* now call ProcessInputEvents to send the event to DIX for routing to the
+ appropriate client(s). */
+
+ ProcessInputEvents();
+ }
+
+
+XTestJumpPointer performs the equivalent function for pointer events.
+
+void
+XTestJumpPointer (x, y, dev_type)
+ int x,y;
+ int dev_type;
+ {
+ /* get an xEvent from some place where ProcessInputEvents can find it. */
+ /* I don't know how your implementation does this. */
+
+ xE = somehow_get_xEvent();
+
+ xE->u.u.type = MotionNotify;
+ xE->u.keyButtonPointer.time = GetTimeInMillis();
+ xE->u.keyButtonPointer.rootX = x;
+ xE->u.keyButtonPointer.rootY = y;
+
+ /* Call some place in your server code that takes care of acceleration and
+ threshold. Also constrain the move to the screen bounds. You
+ may also have a motion history buffer that should be updated with
+ the information in this event.
+ */
+
+ deal_with_acceleration ();
+ constrainxy();
+ update_motion_history();
+
+ /* now call ProcessInputEvents to send the event to DIX for routing to the
+ appropriate client(s). */
+
+ ProcessInputEvents();
+ }
+
+XTestGetPointerPos returns the server's notion of where the X pointer currently
+is. This is probably kept by ddx in some implementation-specific structure:
+
+Implementation_Specific_Struct *i;
+
+void
+XTestGetPointerPos (x,y)
+ short *x,*y;
+ {
+ *x = i->x;
+ *y = i->y;
+ }
diff --git a/specs/Xext/xtest1.mm b/specs/Xext/xtest1.mm
new file mode 100644
index 0000000..7fe5d81
--- /dev/null
+++ b/specs/Xext/xtest1.mm
@@ -0,0 +1,494 @@
+.tr ~
+.SA 0
+.TL
+X11 INPUT SYNTHESIS EXTENSION PROPOSAL
+.AF "Hewlett Packard"
+.ds ZZ Corvallis~Workstation~Operation
+.AU "Larry Woestman" "" ZZ
+.AT "Member of Technical Staff"
+.AS
+This is a proposal for an extension to the X11 server and Xlib.
+It provides two capabilities:
+.BL
+.LI
+It allows a client to generate user input actions in the server without
+requiring a user to be present.
+.LI
+It also allows a client to control the
+handling of user input actions by the server.
+.LE
+.P
+The capability
+to allow a client to generate user input actions in the server
+will be used by some of the X Testing Consortium Xlib tests.
+Both capabilities will be used by the X Testing Consortium client exerciser
+program.
+These capabilities may also be useful in other programs.
+.P
+This extension requires modification to device-dependent code in the
+server. Therefore it is not a `portable' extension as defined by the
+X11 Server Extensions document. However, the majority of the code
+and functionality of this extension will be implementation-independent.
+.AE
+.MT 4
+.nr Cl 4
+.PH "'X11 Input Synthesis Extension Proposal''Page \\\\nP'"
+.PF "''\\\\*(DT''"
+.SK 1
+.H 1 Conventions~Used~In~This~Document
+The naming conventions used in the Xlib documentation are followed
+with these additions:
+.BL
+.LI
+The names of all functions defined in this extension begin with `XTest',
+with the first letter of each additional word capitalized.
+.LI
+The names of the protocol request structures follow the Xlib convention
+of `x<name>Req'.
+.LI
+The names of the protocol request minor type codes follow the Xlib convention
+of `X_<name>'.
+.LI
+The names of all other constants defined in this extension begin with `XTest',
+with the rest of the name in upper case letters.
+.LI
+All constants and structures defined in this extension will have their
+values specified in the `xtestext1.h' file (listed in section 5).
+.LE
+.H 1 Definition~Of~Terms
+.H 2 Input~Actions
+Input actions are pointer movements, button presses and releases,
+and key presses and releases. They can be generated by a user or by a client
+(using functions in this extension).
+.H 2 User~Input~Actions
+User input actions are input actions that are generated by the user
+moving a pointing device (typically a mouse), pressing and releasing buttons on
+the pointing device, and pressing and releasing keys on the keyboard.
+.SK
+.H 1 What~Does~This~Extension~Do?
+Without this extension, user input actions are processed by the server,
+and are converted into normal X events that are sent to the
+appropriate client or clients.
+.P
+This extension adds the following capabilities:
+.BL
+.LI
+Input actions may be sent from a client to the server to be
+processed just as if the user had physically performed them.
+The input actions are provided to the server in the form of X protocol
+requests defined by this extension.
+The information provided to the server includes what action should be
+performed, and how long to delay before processing the action in the server.
+.LI
+User input actions may be diverted to a client before being processed by the
+server.
+The effect on the server is as if the user had performed no input action.
+The user input actions are provided to the client in the form of X events
+defined by this extension.
+The information provided to the client includes what user input action
+occurred and the delay between this user input action and the previous user
+input action.
+The client may then do anything it wishes with this information.
+.LI
+User input actions may be copied, with one copy going to the server in the
+normal way, and the other copy being sent to a client as described above.
+.LE
+.SK
+.H 1 Functions~In~This~Extension
+.H 2 High~Level~Functions
+These functions are built on top of the low level functions described later.
+.H 3 XTestMovePointer
+.DS
+int
+XTestMovePointer(\fIdisplay\fR, \fIdevice_id\fR, \fIdelay\fR, \fIx\fR, \fIy\fR, \fIcount\fR)
+ Display \(**\fIdisplay\fR;
+ int \fIdevice_id\fR;
+ unsigned long \fIdelay\fR[];
+ int \fIx\fR[];
+ int \fIy\fR[];
+ unsigned int \fIcount\fR;
+.DE
+.VL 11 "" 1
+.LI ~
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LI ~
+.LI \fIdevice_id\fR
+Specifies which pointer device was supposed to have caused the input action.
+This is a provision for future support of multiple (distinguishable) pointer
+devices, and should always be set to 0 for now.
+.LI ~
+.LI \fIdelay\fR
+Specifies the time (in milliseconds) to wait before each movement
+of the pointer.
+.LI ~
+.LI \fIx\fR
+.LI \fIy\fR
+Specifies the x and y coordinates to move the pointer to relative to the
+root window for the specified display.
+.LI ~
+.LI \fIcount\fR
+Specifies the number of `delay, x, y' triplets contained in the \fIdelay\fR,
+\fIx\fR and \fIy\fR arrays.
+.LE
+.P
+The
+.I XTestMovePointer
+function creates input actions to be sent to the the server.
+The input actions will be accumulated in a request defined by this extension
+until the request is full or the XTestFlush function is called.
+They will then be sent to the server.
+When the input actions are sent to the server, the input actions will cause
+the server to think that the pointer was moved to the specified position(s),
+with the specified delay before each input action.
+.P
+The
+.I XTestMovePointer
+function will return -1 if there is an error, and 0 otherwise.
+.SK
+.H 3 XTestPressButton
+.DS
+int
+XTestPressButton(\fIdisplay\fR, \fIdevice_id\fR, \fIdelay\fR, \fIbutton_number\fR,
+ \fIbutton_action\fR)
+ Display \(**\fIdisplay\fR;
+ int \fIdevice_id\fR;
+ unsigned long \fIdelay\fR;
+ unsigned int \fIbutton_number\fR;
+ unsigned int \fIbutton_action\fR;
+.DE
+.VL 15
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LI \fIdevice_id\fR
+Specifies which button device was supposed to have caused the input action.
+This is a provision for future support of multiple (distinguishable) button
+devices, and should always be set to 0 for now.
+.LI \fIdelay\fR
+Specifies the time (in milliseconds) to wait before the input action.
+.LI \fIbutton_number\fR
+Specifies which button is being acted upon.
+.LI \fIbutton_action\fR
+Specifies the action to be performed (one of
+\fIXTestPRESS\fR, \fIXTestRELEASE\fR, or \fIXTestSTROKE\fR).
+.LE
+.P
+The
+.I XTestPressButton
+function creates input actions to be sent to the the server.
+The input actions will be accumulated in a request defined by this extension
+until the request is full or the XTestFlush function is called.
+They will then be sent to the server.
+When the input actions are sent to the server, the input actions will cause
+the server to think that the specified button was moved as specified.
+.P
+The
+.I XTestPressButton
+function will return -1 if there is an error, and 0 otherwise.
+.SK
+.H 3 XTestPressKey
+.DS
+int
+XTestPressKey(\fIdisplay\fR, \fIdevice_id\fR, \fIdelay\fR, \fIkeycode\fR, \fIkey_action\fR)
+ Display \(**\fIdisplay\fR;
+ int \fIdevice_id\fR;
+ unsigned long \fIdelay\fR;
+ unsigned int \fIkeycode\fR;
+ unsigned int \fIkey_action\fR;
+.DE
+.VL 12
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LI \fIdevice_id\fR
+Specifies which keyboard device was supposed to have caused the input action.
+This is a provision for future support of multiple (distinguishable) keyboard
+devices, and should always be set to 0 for now.
+.LI \fIdelay\fR
+Specifies the time (in milliseconds) to wait before the input action.
+.LI \fIkeycode\fR
+Specifies which keycode is being acted upon.
+.LI \fIkey_action\fR
+Specifies the action to be performed (one of
+\fIXTestPRESS\fR, \fIXTestRELEASE\fR, or \fIXTestSTROKE\fR).
+.LE
+.P
+The
+.I XTestPressKey
+function creates input actions to be sent to the the server.
+The input actions will be accumulated in a request defined by this extension
+until the request is full or the XTestFlush function is called.
+They will then be sent to the server.
+When the input actions are sent to the server, the input actions will cause
+the server to think that the specified key on the keyboard was moved as
+specified.
+.P
+The
+.I XTestPressKey
+function will return -1 if there is an error, and 0 otherwise.
+.SK
+.H 3 XTestFlush
+.DS
+int
+XTestFlush(\fIdisplay\fR)
+ Display \(**\fIdisplay\fR;
+.DE
+.VL 9
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LE
+.P
+The
+.I XTestFlush
+will send any remaining input actions to the server.
+.P
+The
+.I XTestFlush
+function will return -1 if there is an error, and 0 otherwise.
+.SK
+.H 2 Low~Level~Functions
+.H 3 XTestGetInput
+.DS
+int
+XTestGetInput(\fIdisplay\fR, \fIaction_handling\fR)
+ Display \(**\fIdisplay\fR;
+ int \fIaction_handling\fR;
+.DE
+.VL 17
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LI \fIaction_handling\fR
+Specifies to the server what to do with the user input actions. (one of
+0, \fIXTestPACKED_MOTION\fR or \fIXTestPACKED_ACTIONS\fR; optionally `or'ed
+with \fIXTestEXCLUSIVE\fR).
+.LE
+.P
+The
+.I XTestGetInput
+function tells the server to begin putting information about user input actions
+into events to be sent to the client that called this function. These events
+can be read via the Xlib \fIXNextEvent\fR function.
+.P
+The server assigns an event type of \fIXTestInputActionType\fR to these events
+to distinguish them from other events.
+Since the actual value of the event type may vary depending on how many
+extensions are included with an X11 implementation,
+\fIXTestInputActionType\fR is a variable that will be contained in the Xlib
+part of this extension. It may be referenced as follows:
+.DS
+extern int XTestInputActionType;
+.DE
+.P
+An \fIaction_handling\fR value of 0 causes the server
+to send one user input action in each \fIXTestInputActionType\fR event.
+This can sometimes cause performance problems.
+.P
+An \fIaction_handling\fR value of \fIXTestPACKED_ACTIONS\fR causes the server
+to pack as many user input actions as possible into a
+\fIXTestInputActionType\fR event.
+This is needed if user input actions are happening rapidly (such as
+when the user moves the pointer) to keep performance at a reasonable level.
+.P
+An \fIaction_handling\fR value of \fIXTestPACKED_MOTION\fR causes the server
+to pack only user input actions associated with moving the pointer.
+This allows the
+client to receive button and key motions as they happen without waiting for the
+event to fill up, while still keeping performance at a reasonable level.
+.P
+An \fIaction_handling\fR value with \fIXTestEXCLUSIVE\fR `or'ed in
+causes the server to send user input actions only to the client.
+The effect on the server is as if the user had performed no input actions.
+.P
+An \fIaction_handling\fR value without \fIXTestEXCLUSIVE\fR
+causes the server to copy user input actions, sending one copy to the
+client, and handling the other copy normally (as it would if this extension
+were not installed).
+.P
+There are four types of input actions that are passed from the server
+to the client. They are:
+.VL 25
+.LI key/button~state~change
+This type of input action contains the keycode of the key or button that
+changed state;
+whether the key or button is up or down,
+and the time delay between this input action and the previous input action.
+.LI pointer~motions
+This type of input action contains information about the motion of the
+pointer when the pointer has only moved a short distance.
+If the pointer has moved a long distance,
+the pointer jump input action is used.
+.LI pointer~jumps
+This type of input action contains information about the motion of the
+pointer when the pointer has moved a long distance.
+.LI delays
+This type of input action is used when the delay between input actions is too
+large to be held in the other input actions.
+.LE
+.P
+The
+.I XTestGetInput
+function will return -1 if there is an error, and 0 otherwise.
+.P
+An error code of \fIBadAccess\fR means that another client has already
+requested that user input actions be sent to it.
+.SK
+.H 3 XTestStopInput
+.DS
+int
+XTestStopInput(\fIdisplay\fR)
+ Display \(**\fIdisplay\fR;
+.DE
+.VL 9
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LE
+.P
+The
+.I XTestStopInput
+function tells the server to stop putting information about user input actions
+into events.
+The server will process user input actions normally (as it would
+if this extension were not in the server).
+.P
+The
+.I XTestStopInput
+function will return -1 if there is an error, and 0 otherwise.
+.P
+An error code of \fIBadAccess\fR means that a request was made to stop input
+when input has never been started.
+.SK
+.H 3 XTestFakeInput
+.DS
+int
+XTestFakeInput(\fIdisplay\fR, \fIaction_list_addr\fR, \fIaction_list_size\fR,
+ \fIack_flag\fR)
+ Display \(**\fIdisplay\fR;
+ char \(**\fIaction_list_addr\fR;
+ int \fIaction_list_size\fR;
+ int \fIack_flag\fR;
+.DE
+.VL 18
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LI \fIaction_list_addr\fR
+Specifies the address of an list of input actions to be sent to the server.
+.LI \fIaction_list_size\fR
+Specifies the size (in bytes) of the list of input actions.
+It may be no larger than \fIXTestMAX_ACTION_LIST_SIZE\fR bytes.
+.LI \fIack_flag\fR
+Specifies whether the server needs to send an event to indicate that its
+input action buffer is empty (one of
+\fIXTestFAKE_ACK_NOT_NEEDED\fR or \fIXTestFAKE_ACK_REQUEST\fR).
+.LE
+.P
+The
+.I XTestFakeInput
+function tells the server to take the specified user input actions and process
+them as if the user had physically performed them.
+.P
+The server can only accept a limited number of input actions at one
+time. This limit can be determined by the \fIXTestQueryInputSize\fR function
+in this extension.
+.P
+The client should set \fIack_flag\fR to \fIXTestFAKE_ACK_NOT_NEEDED\fR
+on calls to \fIXTestFakeInput\fR that do not reach this limit.
+.P
+The client should set \fIack_flag\fR to \fIXTestFAKE_ACK_REQUEST\fR
+on the call to \fIXTestFakeInput\fR that reaches this limit.
+.P
+When the server sees an \fIack_flag\fR value of \fIXTestFAKE_ACK_REQUEST\fR
+it finishes processing its input action buffer, then sends an event with
+type \fIXTestFakeAckType\fR to the client.
+When the client reads this event, it knows that it is safe to resume
+sending input actions to the server.
+.P
+Since the actual value of the event type may vary depending on how many
+extensions are included with an X11 implementation,
+\fIXTestFakeAckType\fR is a variable that is contained in the Xlib part of
+this extension. It may be referenced as follows:
+.DS
+extern int XTestFakeAckType;
+.DE
+.P
+There are four types of input actions that are passed from the client
+to the server. They are:
+.VL 25
+.LI key/button~state~change
+This type of input action contains the keycode of the key or button that
+is to change state;
+whether the key or button is to be up or down,
+and the time to delay before changing the state of the key or button.
+.LI pointer~motions
+This type of input action contains information about the motion of the
+pointer when the pointer is to be moved a short distance,
+and the time to delay before moving the pointer.
+If the pointer is to be moved a long distance,
+the pointer jump input action must be used.
+.LI pointer~jumps
+This type of input action contains information about the motion of the
+pointer when the pointer is to be moved a long distance,
+and the time to delay before moving the pointer.
+.LI delays
+This type of input action is used when the delay between input actions is too
+large to be held in the other input actions.
+.LE
+.P
+The
+.I XTestFakeInput
+function will return -1 if there is an error, and 0 otherwise.
+.P
+An error code of \fIBadAccess\fR means that another client has already
+sent user input actions to the server, and the server has not finished
+processing the user input actions.
+.SK
+.H 3 XTestQueryInputSize
+.DS
+int
+XTestQueryInputSize(\fIdisplay\fR, \fIsize_return\fR)
+ Display \(**\fIdisplay\fR;
+ unsigned long \(**\fIsize_return\fR;
+.DE
+.VL 13
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LI \fIsize_return\fR
+Returns the number of input actions that the server's input action buffer can
+hold.
+.LE
+.P
+The
+.I XTestQueryInputSize
+function asks the server to return the number of input actions that it can hold
+in its input action buffer in the unsigned long pointed to by \fIsize_return\fR.
+.P
+The
+.I XTestQueryInputSize
+function will return -1 if there is an error, and 0 otherwise.
+.SK
+.H 3 XTestReset
+.DS
+int
+XTestReset(\fIdisplay\fR)
+ Display \(**\fIdisplay\fR;
+.DE
+.VL 9
+.LI \fIdisplay\fR
+Specifies the connection to the X server.
+.LE
+.P
+The
+.I XTestReset
+function tells the server to set everything having to do with this extension
+back to its initial state. After this call the server will act as if this
+extension were not installed until one of the extension functions is called by
+a client. This function is not normally needed, but is included in case a
+client wishes to clean up the server state, such as after a serious error.
+.P
+The
+.I XTestReset
+function will return -1 if there is an error, and 0 otherwise.
+.SK
+.H 1 `xtestext1.h'~File~Listing
+.DS
+.so xtestext1.h
+.DE
+.TC 1 1 4
diff --git a/specs/Xext/xtestlib.ms b/specs/Xext/xtestlib.ms
new file mode 100644
index 0000000..9ccdfef
--- /dev/null
+++ b/specs/Xext/xtestlib.ms
@@ -0,0 +1,446 @@
+.\" Use -ms and macros.t
+.\" edited for DP edits and code consistency w/ core protocol/xlib 4/2/96
+.\" $Xorg: xtestlib.ms,v 1.3 2000/08/17 19:42:37 cpqbld Exp $
+.de lP
+.ne 8
+.LP
+..
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 10
+.nr PS 10
+\&
+.sp 8
+.ce 1
+\s+2\fBXTEST Extension Library\fP\s-2
+.sp 3
+.ce 3
+Version 2.2
+X Consortium Standard
+.sp 6
+.ce 4
+\s-1Kieron Drake
+.sp 6p
+UniSoft Ltd.\s+1
+.bp
+.sp 10
+.ps 9
+.nr PS 9
+.sp 8
+.lP
+Copyright \(co 1992 by UniSoft Group Ltd.
+.lP
+Permission to use, copy, modify, and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies. UniSoft makes no
+representations about the suitability for any purpose of the information in
+this document. This documentation is provided ``as is'' without express or
+implied warranty.
+.lP
+.sp 5
+Copyright \(co 1992, 1994 X Consortium
+.lP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.lP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.lP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.lP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.ps 10
+.nr PS 10
+.bp 1
+.EH ''XTEST Extension Library''
+.OH ''XTEST Extension Library''
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Overview
+.lP
+This extension is a minimal set of client and server extensions
+required to completely test the X11 server with no user intervention.
+.lP
+This extension is not intended to support general journaling and
+playback of user actions. This is a difficult area [XTrap, 89] as it attempts
+to synchronize synthetic user interactions with their effects; it is at the
+higher level of dialogue recording/playback rather than at the strictly lexical
+level. We are interested only in the latter, simpler, case. A more detailed
+discussion and justification of the extension functionality is given in
+[Drake, 91].
+.lP
+We are aiming only to provide a minimum set of facilities that
+solve immediate testing and validation problems. The testing extension
+itself needs testing, where possible, and so should be as simple as possible.
+.lP
+We have also tried to:
+.IP \(bu 5
+Confine the extension to an appropriate high level within the server
+to minimize portability problems. In practice this means that the extension
+should be at the DIX level or use the DIX/DDX interface, or both. This
+has effects, in particular, on the level at which \*Qinput synthesis\*U
+can occur.
+.IP \(bu 5
+Minimize the changes required in the rest of the server.
+.IP \(bu 5
+Minimize performance penalties on normal server operation.
+.lP
+.NH 1
+Description
+.lP
+The functions provided by this extension fall into two groups:
+.IP "\fBClient Operations\fP" .5i
+These routines manipulate otherwise hidden client-side behavior. The
+actual implementation will depend on the details of the actual language
+binding and what degree of request buffering, GContext caching, and so on, is
+provided. In the C binding, defined in section 7, routines are provided
+to access the internals of two opaque data structures
+.Pn \*- GC s
+and
+.PN Visual s\*-
+and to discard any requests pending within the
+output buffer of a connection. The exact details can be expected to differ for
+other language bindings.
+.IP "\fBServer Requests\fP" .5i
+The first of these requests is similar to that provided in most
+extensions: it allows a client to specify a major and minor version
+number to the server and for the server to respond with major and minor
+versions of its own. The remaining two requests allow the following:
+.RS
+.IP \(bu 5
+Access to an otherwise \*Qwrite-only\*U server resource: the cursor
+associated with a given window
+.IP \(bu 5
+Perhaps most importantly, limited synthesis of input device events,
+almost as if a cooperative user had moved the pointing device
+or pressed a key or button.
+.RE
+.NH 1
+C Language Binding
+.lP
+The C functions either
+provide direct access to the protocol and add no additional
+semantics to those
+defined in section 5 or they correspond directly to the abstract descriptions
+of client operations in section 4.
+.lP
+All XTEST extension functions and procedures, and all manifest
+constants and macros, will start with the string \*QXTest\*U.
+All operations are classified as
+server/client (Server) or client-only (Client).
+All routines that have return type Status will return nonzero for
+\*Qsuccess\*U and zero for \*Qfailure.\*U Even if the XTEST extension is
+supported, the server may withdraw such facilities arbitrarily; in which case
+they will subsequently return zero.
+.lP
+The include file for this extension is
+.Pn < X11/extensions/XTest.h >.
+.LP
+.sM
+.FD 0
+Bool
+XTestQueryExtension(\fIdisplay\fP\^, \fIevent_base\fP\^, \fIerror_base\fP\^, \
+\fImajor_version\fP\^, \fIminor_version\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fIevent_base\fP\^; /* RETURN */
+.br
+ int *\fIerror_base\fP\^; /* RETURN */
+.br
+ int *\fImajor_version\fP\^; /* RETURN */
+.br
+ int *\fIminor_version\fP\^; /* RETURN */
+.FN
+.LP
+.eM
+.PN XTestQueryExtension
+returns
+.PN True
+if the specified display supports the XTEST extension, else
+.PN False .
+If the extension is supported, *event_base would be set to the event number for
+the first event for this extension and
+*error_base would be set to the error number for the first error for
+this extension. As no errors or events are defined for this version of the extension,
+the values returned here are not defined (nor useful).
+If the extension is supported, *major_version and *minor_version are set to
+the major and minor version numbers of the extension supported by the
+display. Otherwise, none of the arguments are set.
+.sp
+.LP
+.sM
+.FD 0
+Bool
+XTestCompareCursorWithWindow(\fIdisplay\fP\^, \fIwindow\fP\^, \fIcursor\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ Cursor \fIcursor\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XTestCompareCursorWithWindow
+performs a comparison of the cursor
+whose ID is specified by cursor (which may be
+.PN None )
+with the cursor of the window specified by window returning
+.PN True
+if they are the same and
+.PN False
+otherwise.
+If the extension is not supported, then the request is ignored and
+zero is returned.
+.sp
+.LP
+.sM
+.FD 0
+Bool
+XTestCompareCurrentCursorWithWindow(\fIdisplay\fP\^, \fIwindow\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XTestCompareCurrentCursorWithWindow
+performs a comparison of the current cursor
+with the cursor of the specified window returning
+.PN True
+if they are the same and
+.PN False
+otherwise.
+If the extension is not supported, then the request is ignored and
+zero is returned.
+.sp
+.LP
+.sM
+.FD 0
+XTestFakeKeyEvent(\fIdisplay\fP\^, \fIkeycode\fP\^, \fIis_press\fP\^, \fIdelay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIkeycode\fP\^;
+.br
+ Bool \fIis_press\fP\^;
+.br
+ unsigned long \fIdelay\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XTestFakeKeyEvent
+requests the server to simulate either a
+.PN KeyPress
+(if is_press is
+.PN True )
+or a
+.PN KeyRelease
+(if is_press is
+.PN False )
+of the key with the specified keycode;
+otherwise, the request is ignored.
+.LP
+If the extension is supported,
+the simulated event will not be processed until delay milliseconds
+after the request is received (if delay is
+.PN CurrentTime ,
+then this is interpreted as no delay at all). No other requests from
+this client will be processed until this delay, if any, has expired
+and subsequent processing of the simulated event has been completed.
+.sp
+.LP
+.sM
+.FD 0
+XTestFakeButtonEvent(\fIdisplay\fP\^, \fIbutton\fP\^, \fIis_press\fP\^, \fIdelay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ unsigned int \fIbutton\fP\^;
+.br
+ Bool \fIis_press\fP\^;
+.br
+ unsigned long \fIdelay\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XTestFakeButtonEvent
+requests the server to simulate either
+a
+.PN ButtonPress
+(if is_press is
+.PN True )
+or a
+.PN ButtonRelease
+(if is_press is
+.PN False )
+of the logical button numbered by the specified button;
+otherwise, the request is ignored.
+.LP
+If the extension is supported,
+the simulated event will not be processed until delay milliseconds
+after the request is received (if delay is
+.PN CurrentTime ,
+then this is interpreted as no delay at all). No other requests from
+this client will be processed until this delay, if any, has expired
+and subsequent processing of the simulated event has been completed.
+.sp
+.LP
+.sM
+.FD 0
+XTestFakeMotionEvent(\fIdisplay\fP\^, \fIscreen_number\fP\^, \fIx\fP\^, \
+\fIy\fP\^, \fIdelay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.br
+ int \fIx\fP\^ \fIy\fP\^;
+.br
+ unsigned long \fIdelay\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XTestFakeMotionEvent
+requests the server to simulate
+a movement of the pointer to the specified position (x, y) on the
+root window of screen_number;
+otherwise, the request is ignored. If screen_number is -1, the
+current screen (that the pointer is on) is used.
+.LP
+If the extension is supported,
+the simulated event will not be processed until delay milliseconds
+after the request is received (if delay is
+.PN CurrentTime ,
+then this is interpreted as no delay at all). No other requests from
+this client will be processed until this delay, if any, has expired
+and subsequent processing of the simulated event has been completed.
+.sp
+.LP
+.sM
+.FD 0
+XTestFakeRelativeMotionEvent(\fIdisplay\fP\^, \fIscreen_number\fP\^, \
+\fIx\fP\^, \fIy\fP\^, \fIdelay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int \fIscreen_number\fP\^;
+.br
+ int \fIx\fP\^ \fIy\fP\^;
+.br
+ unsigned long \fIdelay\fP\^;
+.FN
+.LP
+.eM
+If the extension is supported,
+.PN XTestFakeRelativeMotionEvent
+requests the server to simulate
+a movement of the pointer by the specified offsets (x, y) relative
+to the current pointer position on screen_number;
+otherwise, the request is ignored. If screen_number is -1, the
+current screen (that the pointer is on) is used.
+.LP
+If the extension is supported,
+the simulated event will not be processed until delay milliseconds
+after the request is received (if delay is
+.PN CurrentTime ,
+then this is interpreted as no delay at all). No other requests from
+this client will be processed until this delay, if any, has expired
+and subsequent processing of the simulated event has been completed.
+.sp
+.LP
+.sM
+.FD 0
+XTestGrabControl(\fIdisplay\fP\^, \fIimpervious\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Bool \fIimpervious\fP\^;
+.FN
+.LP
+.eM
+If impervious is
+.PN True ,
+then the executing client becomes impervious to server grabs.
+If impervious is
+.PN False ,
+then the executing client returns to the normal state of being
+susceptible to server grabs.
+.sp
+.LP
+.sM
+.FD 0
+Bool
+XTestSetGContextOfGC(\fIgc\fP\^, \fIgid\fP\^)
+.br
+ GC \fIgc\fP\^;
+.br
+ GContext \fIgid\fP\^;
+.FN
+.LP
+.eM
+.PN XTestSetGContextOfGC
+sets the GContext within the opaque datatype referenced by gc to
+be that specified by gid.
+.sp
+.LP
+.sM
+.FD 0
+XTestSetVisualIDOfVisual(\fIvisual\fP\^, \fIvisualid\fP\^)
+.br
+ Visual *\fIvisual\fP\^;
+.br
+ VisualID \fIvisualid\fP\^;
+.FN
+.LP
+.eM
+.PN XTestSetVisualIDOfVisual
+sets the VisualID within the opaque datatype referenced by visual to
+be that specified by visualid.
+.sp
+.LP
+.sM
+.FD 0
+Bool
+XTestDiscard(\fIdisplay\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.FN
+.LP
+.eM
+.PN XTestDiscard
+discards any requests within the output buffer for the specified display.
+It returns
+.PN True
+if any requests were discarded; otherwise, it returns
+.PN False .
+.NH 1
+References
+.XP
+Annicchiarico, D., et al., \fIXTrap: The XTrap Architecture\fP\^.
+Digital Equipment Corporation, July 1991.
+.XP
+Drake, K. J., \fISome Proposals for a Minimum X11 Testing Extension\fP\^.
+UniSoft Ltd., June 1991.
+.LP
diff --git a/specs/Xi/encoding.ms b/specs/Xi/encoding.ms
new file mode 100644
index 0000000..f056a51
--- /dev/null
+++ b/specs/Xi/encoding.ms
@@ -0,0 +1,2016 @@
+.\" $Xorg: encoding.ms,v 1.3 2000/08/17 19:42:37 cpqbld Exp $
+\&
+.sp 1
+.XS
+Appendix A \- Input Extension Protocol Encoding
+.XE
+.ce 2
+.ps 11
+.nr PS 11
+.ps +2
+\fBAppendix A\fP
+
+\fBInput Extension Protocol Encoding\fP
+.ps
+.sp 2
+.LP
+.ps 9
+.nr PS 9
+.vs 10
+.nr VS 10
+.\"The sections in this appendix correspond to their number counterparts
+.\"in the protocol document.
+.ps +2
+\fBSyntactic Conventions\fP
+.ps -3
+.LP
+All numbers are in decimal,
+unless prefixed with #x, in which case they are in hexadecimal (base 16).
+.LP
+The general syntax used to describe requests, replies, errors, events, and
+compound types is:
+.LP
+.DS I
+\fBNameofThing\fP
+ encode-form
+ ...
+ encode-form
+.DE
+Each encode-form describes a single component.
+.LP
+For components described in the protocol as:
+.LP
+.DS I
+name: TYPE
+.DE
+the encode-form is:
+.LP
+.DS I
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+N TYPE name
+.DE
+N is the number of bytes occupied in the data stream,
+and TYPE is the interpretation of those bytes.
+For example,
+.LP
+.DS I
+.TA 1i 1.5i
+.ta 1i 1.5i
+depth: CARD8
+.DE
+becomes:
+.LP
+.DS I
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+1 CARD8 depth
+.DE
+For components with a static numeric value the encode-form is:
+.LP
+.DS I
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+N value name
+.DE
+The value is always interpreted as an N-byte unsigned integer.
+For example,
+the first two bytes of a Window error are always zero (indicating an
+error in general) and three (indicating the Window error in particular):
+.LP
+.DS I
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+1 0 Error
+1 3 code
+.DE
+For components described in the protocol as:
+.LP
+.DS I
+name: \fB{Name1, ..., NameI}\fP
+.DE
+.LP
+the encode-form is:
+.LP
+.DS I
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+N name
+ value1 Name1
+ ...
+ valueI NameI
+.DE
+The value is always interpreted as an N-byte unsigned integer.
+Note that the size of N is sometimes larger than that strictly required
+to encode the values.
+For example:
+.LP
+.DS I
+class: \fB{InputOutput, InputOnly, CopyFromParent}\fP
+.DE
+.LP
+becomes:
+.LP
+.DS I
+.TA 1i 1.5i 2.5i 3i
+.ta 1i 1.5i 2.5i 3i
+2 class
+ 0 CopyFromParent
+ 1 InputOutput
+ 2 InputOnly
+.DE
+For components described in the protocol as:
+.LP
+.DS I
+NAME: TYPE or \fBAlternative1 ... or AlternativeI\fP
+.DE
+.LP
+the encode-form is:
+.LP
+.DS I
+.TA 1i 1.5i 2i 2.5i 3i
+.ta 1i 1.5i 2i 2.5i 3i
+N TYPE NAME
+ value1 Alternative1
+ ...
+ valueI AlternativeI
+.DE
+The alternative values are guaranteed not to conflict with the encoding
+of TYPE.
+For example:
+.LP
+.DS
+destination: WINDOW or \fBPointerWindow\fP or \fBInputFocus\fP
+.DE
+.LP
+becomes:
+.LP
+.DS I
+.TA 1i 1.5i 2.5i
+.ta 1i 1.5i 2.5i
+4 WINDOW destination
+ 0 PointerWindow
+ 1 InputFocus
+.DE
+For components described in the protocol as:
+.LP
+.DS I
+.TA 1i 1.5i
+.ta 1i 1.5i
+value-mask: BITMASK
+.DE
+the encode-form is:
+.LP
+.DS I
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+N BITMASK value-mask
+ mask1 mask-name1
+ ...
+ maskI mask-nameI
+.DE
+The individual bits in the mask are specified and named,
+and N is 2 or 4.
+The most-significant bit in a BITMASK is reserved for use in defining
+chained (multiword) bitmasks, as extensions augment existing core requests.
+The precise interpretation of this bit is not yet defined here,
+although a probable mechanism is that a 1-bit indicates that another N bytes
+of bitmask follows, with bits within the overall mask still interpreted
+from least-significant to most-significant with an N-byte unit, with N-byte units
+interpreted in stream order, and with the overall mask being byte-swapped
+in individual N-byte units.
+.LP
+For LISTofVALUE encodings, the request is followed by a section of the form:
+.LP
+.DS I
+.TA 1i 1.5i
+.ta 1i 1.5i
+VALUEs
+ encode-form
+ ...
+ encode-form
+.DE
+listing an encode-form for each VALUE.
+The NAME in each encode-form keys to the corresponding BITMASK bit.
+The encoding of a VALUE always occupies four bytes,
+but the number of bytes specified in the encoding-form indicates how
+many of the least-significant bytes are actually used;
+the remaining bytes are unused and their values do not matter.
+.LP
+In various cases, the number of bytes occupied by a component will be specified
+by a lowercase single-letter variable name instead of a specific numeric
+value, and often some other component will have its value specified as a
+simple numeric expression involving these variables.
+Components specified with such expressions are always interpreted
+as unsigned integers.
+The scope of such variables is always just the enclosing request, reply,
+error, event, or compound type structure.
+For example:
+.LP
+.DS I
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+2 3+n request length
+4n LISTofPOINT points
+.DE
+For unused bytes (the values of the bytes are undefined and do not matter),
+the encode-form is:
+.LP
+.DS I
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+N unused
+.DE
+If the number of unused bytes is variable, the encode-form typically is:
+.LP
+.DS I
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+p unused, p=pad(E)
+.DE
+where E is some expression,
+and pad(E) is the number of bytes needed to round E up to a multiple of four.
+.LP
+.DS I
+.TA 1i 1.5i 2i 2.5i
+.ta 1i 1.5i 2i 2.5i
+pad(E) = (4 - (E mod 4)) mod 4
+.DE
+.ps +2
+\fBCommon Types\fP
+.ps
+.LP
+LISTofFOO
+.IP
+In this document the LISTof notation strictly means some number of repetitions
+of the FOO encoding;
+the actual length of the list is encoded elsewhere.
+.LP
+SETofFOO
+.IP
+A set is always represented by a bitmask, with a 1-bit indicating presence in
+the set.
+.LP
+BITMASK: CARD32
+.LP
+WINDOW: CARD32
+.LP
+BYTE: 8-bit value
+.LP
+INT8: 8-bit signed integer
+.LP
+INT16: 16-bit signed integer
+.LP
+INT32: 32-bit signed integer
+.LP
+CARD8: 8-bit unsigned integer
+.LP
+CARD16: 16-bit unsigned integer
+.LP
+CARD32: 32-bit unsigned integer
+.LP
+TIMESTAMP: CARD32
+.LP
+EVENTCLASS: CARD32
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+INPUTCLASS
+ 0 KeyClass
+ 1 ButtonClass
+ 2 ValuatorClass
+ 3 FeedbackClass
+ 4 ProximityClass
+ 5 FocusClass
+ 6 OtherClass
+.DE
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+INPUTCLASS
+ 0 KbdFeedbackClass
+ 1 PtrFeedbackClass
+ 2 StringFeedbackClass
+ 3 IntegerFeedbackClass
+ 4 LedFeedbackClass
+ 5 BellFeedbackClass
+.DE
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+INPUTINFO
+ 0 KEYINFO
+ 1 BUTTONINFO
+ 2 VALUATORINFO
+.DE
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+DEVICEMODE
+ 0 Relative
+ 1 Absolute
+.DE
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+PROXIMITYSTATE
+ 0 InProximity
+ 1 OutOfProximity
+.DE
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+BOOL
+ 0 False
+ 1 True
+.DE
+.LP
+KEYSYM: CARD32
+.LP
+KEYCODE: CARD8
+.LP
+BUTTON: CARD8
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+SETofKEYBUTMASK
+ #x0001 Shift
+ #x0002 Lock
+ #x0004 Control
+ #x0008 Mod1
+ #x0010 Mod2
+ #x0020 Mod3
+ #x0040 Mod4
+ #x0080 Mod5
+ #x0100 Button1
+ #x0200 Button2
+ #x0400 Button3
+ #x0800 Button4
+ #x1000 Button5
+ #xe000 unused but must be zero
+.DE
+.LP
+.DS 0
+.TA .75i 1.75i
+.ta .75i 1.75i
+SETofKEYMASK
+ encodings are the same as for SETofKEYBUTMASK, except with
+ #xff00 unused but must be zero
+.DE
+.LP
+STRING8: LISTofCARD8
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+STR
+ 1 n length of name in bytes
+ n STRING8 name
+.DE
+.ps +2
+\fBErrors\fP
+.ps
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Request
+ 1 0 Error
+ 1 1 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Value
+ 1 0 Error
+ 1 2 code
+ 2 CARD16 sequence number
+ 4 <32-bits> bad value
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Window
+ 1 0 Error
+ 1 3 code
+ 2 CARD16 sequence number
+ 4 CARD32 bad resource id
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Match
+ 1 0 Error
+ 1 8 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Access
+ 1 0 Error
+ 1 10 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Alloc
+ 1 0 Error
+ 1 11 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Name
+ 1 0 Error
+ 1 15 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Device
+ 1 0 Error
+ 1 CARD8 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Event
+ 1 0 Error
+ 1 CARD8 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Mode
+ 1 0 Error
+ 1 CARD8 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+Class
+ 1 0 Error
+ 1 CARD8 code
+ 2 CARD16 sequence number
+ 4 unused
+ 2 CARD16 minor opcode
+ 1 CARD8 major opcode
+ 21 unused
+.DE
+.ps +2
+Keyboards
+.ps
+.LP
+KEYCODE values are always greater than 7 (and less than 256).
+.LP
+KEYSYM values with the bit #x10000000 set are reserved as vendor-specific.
+.LP
+The names and encodings of the standard KEYSYM values are contained in
+.\"Appendix B, Keysym Encoding.
+appendix F.
+.LP
+.ps +2
+Pointers
+.ps
+.LP
+BUTTON values are numbered starting with one.
+.LP
+.ps +2
+Requests
+.ps
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetExtensionVersion
+ 1 CARD8 input extension opcode
+ 1 1 GetExtensionVersion opcode
+ 2 2+(n+p)/4 request length
+ 2 n length of name
+ 2 unused
+ n STRING8 name
+ p unused, p=pad(n)
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 1 GetExtensionVersion opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 major version
+ 2 CARD16 minor version
+ 1 BOOL present
+ 19 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ListInputDevices
+ 1 CARD8 input extension opcode
+ 1 2 ListInputDevices opcode
+ 2 1 request length
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 2 ListInputDevices opcode
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 1 CARD8 number of input devices
+ 23 unused
+ n LISTofDEVICEINFO info for each input device
+ p unused, p=pad(n)
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ DEVICEINFO
+ 4 CARD32 device type
+ 1 CARD8 device id
+ 1 CARD8 number of input classes this device reports
+ 1 CARD8 device use
+ 0 IsXPointer
+ 1 IsXKeyboard
+ 2 IsXExtensionDevice
+ 1 unused
+ n LISTofINPUTINFO input info for each input class
+ m STR name
+ p unused, p=pad(m)
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ INPUTINFO KEYINFO or BUTTONINFO or VALUATORINFO
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ KEYINFO
+ 1 0 class id
+ 1 8 length
+ 1 KEYCODE minimum keycode
+ 1 KEYCODE maximum keycode
+ 2 CARD16 number of keys
+ 2 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+BUTTONINFO
+ 1 1 class id
+ 1 4 length
+ 2 CARD16 number of buttons
+.DE
+.LP
+.DS 0
+.TA .2i .75i 2.0i 3.0i
+.ta .2i .75i 2.0i 3.0i
+VALUATORINFO
+ 1 2 class id
+ 1 8+12n length
+ 1 n number of axes
+ 1 SETofDEVICEMODE mode
+ 4 CARD32 size of motion buffer
+ 12n LISTofAXISINFO valuator limits
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+AXISINFO
+ 4 CARD32 resolution
+ 4 CARD32 minimum value
+ 4 CARD32 maximum value
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+OpenDevice
+ 1 CARD8 input extension opcode
+ 1 3 OpenDevice opcode
+ 2 2 request length
+ 1 CARD8 device id
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 3.5i
+.ta .2i .5i 1.5i 3.5i
+ =>
+ 1 1 Reply
+ 1 3 OpenDevice opcode
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 1 CARD8 number of input classes
+ 23 unused
+ n LISTofINPUTCLASSINFO input class information
+ p unused, p=pad(n)
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ INPUTCLASSINFO
+ 1 CARD8 input class id
+ 0 KEY
+ 1 BUTTON
+ 2 VALUATOR
+ 3 FEEDBACK
+ 4 PROXIMITY
+ 5 FOCUS
+ 6 OTHER
+ 1 CARD8 event type base code for this class
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+CloseDevice
+ 1 CARD8 input extension opcode
+ 1 4 CloseDevice opcode
+ 2 2 request length
+ 1 CARD8 device id
+ 3 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+SetDeviceMode
+ 1 CARD8 input extension opcode
+ 1 5 SetDeviceMode opcode
+ 2 2 request length
+ 1 CARD8 device id
+ 1 CARD8 mode
+ 2 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 3.5i
+.ta .2i .5i 1.5i 3.5i
+ =>
+ 1 1 Reply
+ 1 5 SetDeviceMode opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 CARD8 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 3 + first_error DeviceBusy
+ 23 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+SelectExtensionEvent
+ 1 CARD8 input extension opcode
+ 1 6 SelectExtensionEvent opcode
+ 2 3+n request length
+ 4 Window event window
+ 2 CARD16 count
+ 2 unused
+ 4n LISTofEVENTCLASS desired events
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetSelectedExtensionEvents
+ 1 CARD8 input extension opcode
+ 1 7 GetSelectedExtensionEvents opcode
+ 2 2 request length
+ 4 Window event window
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 7 GetSelecteExtensionEvents opcode
+ 2 CARD16 sequence number
+ 4 n + m reply length
+ 2 n this client count
+ 2 m all clients count
+ 20 unused
+ 4n LISTofEVENTCLASS this client list
+ 4m LISTofEVENTCLASS all clients list
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ChangeDeviceDontPropagateList
+ 1 CARD8 input extension opcode
+ 1 8 ChangeDeviceDontPropagateList opcode
+ 2 3+n request length
+ 4 Window event window
+ 2 n count of events
+ 1 mode
+ 0 AddToList
+ 1 DeleteFromList
+ 1 unused
+ 4n LISTofEVENTCLASS desired events
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetDeviceDontPropagateList
+ 1 CARD8 input extension opcode
+ 1 9 GetDeviceDontPropagateList opcode
+ 2 2 request length
+ 4 Window event window
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 9 GetDeviceDontPropagateList opcode
+ 2 CARD16 sequence number
+ 4 n reply length
+ 2 n count of events
+ 22 unused
+ 4n LISTofEVENTCLASS don't propagate list
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetDeviceMotionEvents
+ 1 CARD8 input extension opcode
+ 1 10 GetDeviceMotionEvents opcode
+ 2 4 request length
+ 4 TIMESTAMP start
+ 0 CurrentTime
+ 4 TIMESTAMP stop
+ 0 CurrentTime
+ 1 CARD8 device id
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 3.5i
+.ta .2i .5i 1.5i 3.5i
+ =>
+ 1 1 Reply
+ 1 10 GetDeviceMotionEvents opcode
+ 2 CARD16 sequence number
+ 4 (m+1)n reply length
+ 4 n number of DEVICETIMECOORDs in events
+ 1 m number of valuators per event
+ 1 CARD8 mode of the device
+ 0 Absolute
+ 1 Relative
+ 18 unused
+ (4m+4)n LISTofDEVICETIMECOORD events
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ DEVICETIMECOORD
+ 4 TIMESTAMP time
+ 4m LISTofINT32 valuators
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ChangeKeyboardDevice
+ 1 CARD8 input extension opcode
+ 1 11 ChangeKeyboardDevice opcode
+ 2 2 request length
+ 1 CARD8 device id
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 11 ChangeKeyboardDevice opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 2 DeviceFrozen
+ 23 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ChangePointerDevice
+ 1 CARD8 input extension opcode
+ 1 12 ChangePointerDevice opcode
+ 2 2 request length
+ 1 CARD8 x-axis
+ 1 CARD8 y-axis
+ 1 CARD8 device id
+ 1 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 12 ChangePointerDevice opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 2 DeviceFrozen
+ 23 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GrabDevice
+ 1 CARD8 input extension opcode
+ 1 13 GrabDevice opcode
+ 2 5+n request length
+ 4 WINDOW grab-window
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 2 n count of events
+ 1 this-device-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 other-devices-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 BOOL owner-events
+ 1 CARD8 device id
+ 2 unused
+ 4n LISTofEVENTCLASS event list
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 13 GrabDevice opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 2 InvalidTime
+ 3 NotViewable
+ 4 Frozen
+ 23 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+UngrabDevice
+ 1 CARD8 input extension opcode
+ 1 14 UngrabDevice opcode
+ 2 3 request length
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 1 CARD8 device id
+ 3 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GrabDeviceKey
+ 1 CARD8 input extension opcode
+ 1 15 GrabDeviceKey opcode
+ 2 5+n request length
+ 4 WINDOW grab-window
+ 2 n count of events
+ 2 SETofKEYMASK modifiers
+ #x8000 AnyModifier
+ 1 CARD8 modifier device
+ #x0FF UseXKeyboard
+ 1 CARD8 grabbed device
+ 1 KEYCODE key
+ 0 AnyKey
+ 1 this-device-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 other-devices-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 BOOL owner-events
+ 2 unused
+ 4n LISTofEVENTCLASS event list
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+UngrabDeviceKey
+ 1 CARD8 input extension opcode
+ 1 16 UngrabDeviceKey opcode
+ 2 4 request length
+ 4 WINDOW grab-window
+ 2 SETofKEYMASK modifiers
+ #x8000 AnyModifier
+ 1 CARD8 modifier device
+ #x0FF UseXKeyboard
+ 1 KEYCODE key
+ 0 AnyKey
+ 1 CARD8 grabbed device
+ 3 unused
+
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GrabDeviceButton
+ 1 CARD8 input extension opcode
+ 1 17 GrabDeviceButton opcode
+ 2 5+n request length
+ 4 WINDOW grab-window
+ 1 CARD8 grabbed device
+ 1 CARD8 modifier device
+ #x0FF UseXKeyboard
+ 2 n count of desired events
+ 2 SETofKEYMASK modifiers
+ 1 this-device-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 other-device-mode
+ 0 Synchronous
+ 1 Asynchronous
+ 1 BUTTON button
+ 0 AnyButton
+ 1 BOOL owner-events
+ #x8000 AnyModifier
+ 2 unused
+ 4n LISTofEVENTCLASS event list
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+UngrabDeviceButton
+ 1 CARD8 input extension opcode
+ 1 18 UngrabDeviceButton opcode
+ 2 4 request length
+ 4 WINDOW grab-window
+ 2 SETofKEYMASK modifiers
+ #x8000 AnyModifier
+ 1 CARD8 modifier device
+ #x0FF UseXKeyboard
+ 1 BUTTON button
+ 0 AnyButton
+ 1 CARD8 grabbed device
+ 3 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+AllowDeviceEvents
+ 1 CARD8 input extension opcode
+ 1 19 AllowDeviceEvents opcode
+ 2 3 request length
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 1 mode
+ 0 AsyncThisDevice
+ 1 SyncThisDevice
+ 2 ReplayThisDevice
+ 3 AsyncOtherDevices
+ 4 AsyncAll
+ 5 SyncAll
+ 1 CARD8 device id
+ 2 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetDeviceFocus
+ 1 CARD8 input extension opcode
+ 1 20 GetDeviceFocus opcode
+ 2 2 request length
+ 1 CARD8 device
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 20 GetDeviceFocus opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 WINDOW focus
+ 0 None
+ 1 PointerRoot
+ 3 FollowKeyboard
+ 4 TIMESTAMP focus time
+ 1 revert-to
+ 0 None
+ 1 PointerRoot
+ 2 Parent
+ 3 FollowKeyboard
+ 15 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+SetDeviceFocus
+ 1 CARD8 input extension opcode
+ 1 21 SetDeviceFocus opcode
+ 2 4 request length
+ 4 WINDOW focus
+ 0 None
+ 1 PointerRoot
+ 3 FollowKeyboard
+ 4 TIMESTAMP time
+ 0 CurrentTime
+ 1 revert-to
+ 0 None
+ 1 PointerRoot
+ 2 Parent
+ 3 FollowKeyboard
+ 1 CARD8 device
+ 2 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetFeedbackControl
+ 1 CARD8 input extension opcode
+ 1 22 GetFeedbackControl opcode
+ 2 2 request length
+ 1 CARD8 device id
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 22 GetFeedbackControl opcode
+ 2 CARD16 sequence number
+ 4 m/4 reply length
+ 2 n number of feedbacks supported
+ 22 unused
+ m LISTofFEEDBACKSTATE feedbacks
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ FEEDBACKSTATE KBDFEEDBACKSTATE, PTRFEEDBACKSTATE, INTEGERFEEDBACKSTATE,
+ STRINGFEEDBACKSTATE, BELLFEEDBACKSTATE, or LEDFEEDBACKSTATE
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ KBDFEEDBACKSTATE
+ 1 0 feedback class id
+ 1 CARD8 id of this feedback
+ 2 20 length
+ 2 CARD16 pitch
+ 2 CARD16 duration
+ 4 CARD32 led_mask
+ 4 CARD32 led_values
+ 1 global_auto_repeat
+ 0 Off
+ 1 On
+ 1 CARD8 click
+ 1 CARD8 percent
+ 1 unused
+ 32 LISTofCARD8 auto_repeats
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ PTRFEEDBACKSTATE
+ 1 0 feedback class id
+ 1 CARD8 id of this feedback
+ 2 12 length
+ 2 unused
+ 2 CARD16 acceleration-numerator
+ 2 CARD16 acceleration-denominator
+ 2 CARD16 threshold
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ INTEGERFEEDBACKSTATE
+ 1 0 feedback class id
+ 1 CARD8 id of this feedback
+ 2 16 length
+ 4 CARD32 resolution
+ 4 INT32 minimum value
+ 4 INT32 maximum value
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ STRINGFEEDBACKSTATE
+ 1 1 feedback class id
+ 1 CARD8 id of this feedback
+ 2 4n+8 length
+ 2 CARD16 max_symbols
+ 2 n number of keysyms supported
+ 4n LISTofKEYSYM key symbols supported
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ BELLFEEDBACKSTATE
+ 1 1 feedback class id
+ 1 CARD8 id of this feedback
+ 2 12 length
+ 1 CARD8 percent
+ 3 unused
+ 2 CARD16 pitch
+ 2 CARD16 duration
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ LEDFEEDBACKSTATE
+ 1 1 feedback class id
+ 1 CARD8 id of this feedback
+ 2 12 length
+ 4 CARD32 led_mask
+ 4 BITMASK led_values
+ #x0001 On
+ #x0002 Off
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ChangeFeedbackControl
+ 1 CARD8 input extension opcode
+ 1 23 ChangeFeedbackControl opcode
+ 2 3+n/4 request length
+ 4 BITMASK value-mask (has n bits set to 1)
+ #x0001 keyclick-percent
+ #x0002 bell-percent
+ #x0004 bell-pitch
+ #x0008 bell-duration
+ #x0010 led
+ #x0020 led-mode
+ #x0040 key
+ #x0080 auto-repeat-mode
+ #x0001 string
+ #x0001 integer
+ #x0001 acceleration-numerator
+ #x0002 acceleration-denominator
+ #x0004 acceleration-threshold
+ 1 CARD8 device id
+ 1 CARD8 feedback class id
+ 2 unused
+ n FEEDBACKCLASS
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ FEEDBACKCLASS KBDFEEDBACKCTL, PTRFEEDBACKCTL, INTEGERFEEDBACKCTL,
+ STRINGFEEDBACKCTL, BELLFEEDBACKCTL, or LEDFEEDBACKCTL
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ KBDFEEDBACKCTL
+ 1 0 feedback class id
+ 1 CARD8 id of this feedback
+ 2 20 length
+ 1 KEYCODE key
+ 1 auto-repeat-mode
+ 0 Off
+ 1 On
+ 2 Default
+ 1 INT8 key-click-percent
+ 1 INT8 bell-percent
+ 2 INT16 bell-pitch
+ 2 INT16 bell-duration
+ 4 CARD32 led_mask
+ 4 CARD32 led_values
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ PTRFEEDBACKCTL
+ 1 1 feedback class id
+ 1 CARD8 id of this feedback
+ 2 12 length
+ 2 unused
+ 2 INT16 numerator
+ 2 INT16 denominator
+ 2 INT16 threshold
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ STRINGCTL
+ 1 2 feedback class id
+ 1 CARD8 id of this feedback
+ 2 4n+8 length
+ 2 unused
+ 2 n number of keysyms to display
+ 4n LISTofKEYSYM list of key symbols to display
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ INTEGERCTL
+ 1 3 feedback class id
+ 1 CARD8 id of this feedback
+ 2 8 length
+ 4 INT32 integer to display
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ LEDCTL
+ 1 4 feedback class id
+ 1 CARD8 id of this feedback
+ 2 12 length
+ 4 CARD32 led_mask
+ 4 BITMASK led_values
+ #x0001 On
+ #x0002 Off
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ BELLCTL
+ 1 5 feedback class id
+ 1 CARD8 id of this feedback
+ 2 8 length
+ 1 INT8 percent
+ 3 unused
+ 2 INT16 pitch
+ 2 INT16 duration
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetDeviceKeyMapping
+ 1 CARD8 input extension opcode
+ 1 24 GetDeviceKeyMapping opcode
+ 2 2 request length
+ 1 CARD8 device
+ 1 KEYCODE first-keycode
+ 1 CARD8 count
+ 1 unused
+.DE
+.DS 0
+.TA .2i .75i 2.0i 3.0i
+.ta .2i .75i 2.0i 3.0i
+ =>
+ 1 1 Reply
+ 1 24 GetDeviceKeyMapping opcode
+ 2 CARD16 sequence number
+ 4 nm reply length (m = count field from the request)
+ 1 n keysyms-per-keycode
+ 23 unused
+ 4nm LISTofKEYSYM keysyms
+.DE
+.LP
+.DS 0
+.TA .2i .75i 2.0i 3.0i
+.ta .2i .75i 2.0i 3.0i
+ChangeDeviceKeyMapping
+ 1 CARD8 input extension opcode
+ 1 25 ChangeDeviceKeyMapping opcode
+ 2 2+nm request length
+ 1 CARD8 device
+ 1 KEYCODE first-keycode
+ 1 m keysyms-per-keycode
+ 1 n keycode-count
+ 4nm LISTofKEYSYM keysyms
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetDeviceModifierMapping
+ 1 CARD8 input extension opcode
+ 1 26 GetDeviceModifierMapping opcode
+ 2 2 request length
+ 1 CARD8 device
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 26 GetDeviceModifierMapping opcode
+ 2 CARD16 sequence number
+ 4 2n reply length
+ 1 n keycodes-per-modifier
+ 23 unused
+ 8n LISTofKEYCODE keycodes
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+SetDeviceModifierMapping
+ 1 CARD8 input extension opcode
+ 1 27 SetDeviceModifier opcode
+ 2 2+2n request length
+ 1 CARD8 device
+ 1 n keycodes-per-modifier
+ 2 unused
+ 8n LISTofKEYCODE keycodes
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 27 SetDeviceModifierMapping opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 status
+ 0 Success
+ 1 Busy
+ 2 Failed
+ 23 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetDeviceButtonMapping
+ 1 CARD8 input extension opcode
+ 1 28 GetDeviceButtonMapping opcode
+ 2 2 request length
+ 1 CARD8 device
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 28 GetDeviceButtonMapping opcode
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 1 n number of elements in map list
+ 23 unused
+ n LISTofCARD8 map
+ p unused, p=pad(n)
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+SetDeviceButtonMapping
+ 1 CARD8 input extension opcode
+ 1 29 SetDeviceButtonMapping opcode
+ 2 2+(n+p)/4 request length
+ 1 CARD8 device
+ 1 n length of map
+ 2 unused
+ n LISTofCARD8 map
+ p unused, p=pad(n)
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 29 SetDeviceButtonMapping opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 status
+ 0 Success
+ 1 Busy
+ 23 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+QueryDeviceState
+ 1 CARD8 input extension opcode
+ 1 30 QueryDeviceState opcode
+ 2 2 request length
+ 1 CARD8 device
+ 3 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ =>
+ 1 1 Reply
+ 1 30 QueryDeviceState opcode
+ 2 CARD16 sequence number
+ 4 m/4 reply length
+ 1 n number of input classes
+ 23 unused
+ m LISTofINPUTSTATE
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ INPUTSTATE KEYSTATE or BUTTONSTATE or VALUATORSTATE
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ KEYSTATE
+ 1 CARD8 key input class id
+ 1 36 length
+ 1 CARD8 num_keys
+ 1 unused
+ 32 LISTofCARD8 status of keys
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ BUTTONSTATE
+ 1 CARD8 button input class id
+ 1 36 length
+ 1 CARD8 num_buttons
+ 1 unused
+ 32 LISTofCARD8 status of buttons
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ VALUATORSTATE
+ 1 CARD8 valuator input class id
+ 1 4n + 4 length
+ 1 n number of valuators
+ 1 mode
+ #x01 DeviceMode (0 = Relative, 1 = Absolute)
+ #x02 ProximityState (0 = InProximity, 1 = OutOfProximity)
+ 4n LISTofCARD32 status of valuators
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+SendExtensionEvent
+ 1 CARD8 input extension opcode
+ 1 31 SendExtensionEvent opcode
+ 2 4 + 8n + m request length
+ 4 WINDOW destination
+ 1 CARD8 device
+ 1 BOOL propagate
+ 2 CARD16 eventclass count
+ 1 CARD8 num_events
+ 3 unused
+ 32n LISTofEVENTS events to send
+ 4m LISTofEVENTCLASS desired events
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceBell
+ 1 CARD8 input extension opcode
+ 1 32 DeviceBell opcode
+ 2 2 request length
+ 1 CARD8 device id
+ 1 CARD8 feedback id
+ 1 CARD8 feedback class
+ 1 INT8 percent
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+SetDeviceValuators
+ 1 CARD8 input extension opcode
+ 1 33 SetDeviceValuators opcode
+ 2 2 + n request length
+ 1 CARD8 device id
+ 1 CARD8 first valuator
+ 1 n number of valuators
+ 1 unused
+ 4n LISTofINT32 valuator values to set
+.DE
+.DS 0
+.TA .2i .5i 1.5i 3.5i
+.ta .2i .5i 1.5i 3.5i
+ =>
+ 1 1 Reply
+ 1 33 SetDeviceValuators opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 CARD8 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 23 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+GetDeviceControl
+ 1 CARD8 input extension opcode
+ 1 34 GetDeviceControl opcode
+ 2 2 request length
+ 2 CARD16 device control type
+ 1 CARD8 device id
+ 1 unused
+.DE
+.DS 0
+.TA .2i .5i 1.5i 3.5i
+.ta .2i .5i 1.5i 3.5i
+ =>
+ 1 1 Reply
+ 1 34 GetDeviceControl opcode
+ 2 CARD16 sequence number
+ 4 n/4 reply length
+ 1 CARD8 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 3 + first_error DeviceBusy
+ 23 unused
+ n DEVICESTATE
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DEVICESTATE DEVICERESOLUTIONSTATE
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DEVICERESOLUTIONSTATE
+ 2 0 control type
+ 2 8 + 12n length
+ 4 n num_valuators
+ 4n LISTOfCARD32 resolution values
+ 4n LISTOfCARD32 resolution min_values
+ 4n LISTOfCARD32 resolution max_values
+.DE
+.LP
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ChangeDeviceControl
+ 1 CARD8 input extension opcode
+ 1 35 ChangeDeviceControl opcode
+ 2 2+n/4 request length
+ 2 CARD16 control type
+ 1 CARD8 device id
+ 1 unused
+ n DEVICECONTROL
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DEVICECONTROL DEVICERESOLUTIONCTL
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DEVICERESOLUTIONCTL
+ 2 1 control type
+ 2 8 + 4n length
+ 1 CARD8 first_valuator
+ 1 n num_valuators
+ 2 unused
+ 4n LISTOfCARD32 resolution values
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 3.5i
+.ta .2i .5i 1.5i 3.5i
+ =>
+ 1 1 Reply
+ 1 35 ChangeDeviceControl opcode
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 CARD8 status
+ 0 Success
+ 1 AlreadyGrabbed
+ 3 + first_error DeviceBusy
+ 23 unused
+.DE
+.ps +2
+Events
+.ps
+.LP
+DeviceKeyPress, DeviceKeyRelease, DeviceButtonPress, DeviceButtonRelease,
+ProximityIn, ProximityOut, and DeviceStateNotify events may be followed by
+zero or more DeviceValuator events. DeviceMotionNotify events will be
+followed by one or more DeviceValuator events.
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceValuator
+ 1 CARD8 code
+ 1 CARD8 device id
+ 2 CARD16 sequence number
+ 2 SETofKEYBUTMASK state
+ 1 n number of valuators this device reports
+ 1 m number of first valuator in this event
+ 24 LISTofINT32 valuators
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceKeyPress
+ 1 CARD8 code
+ 1 KEYCODE detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceKeyRelease
+ 1 CARD8 code
+ 1 KEYCODE detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceButtonPress
+ 1 CARD8 code
+ 1 BUTTON detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceButtonRelease
+ 1 CARD8 code
+ 1 BUTTON detail
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceMotionNotify
+ 1 CARD8 code
+ 1 detail
+ 0 Normal
+ 1 Hint
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+.DE
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceFocusIn
+ 1 CARD8 code
+ 1 detail
+ 0 Ancestor
+ 1 Virtual
+ 2 Inferior
+ 3 Nonlinear
+ 4 NonlinearVirtual
+ 5 Pointer
+ 6 PointerRoot
+ 7 None
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW event
+ 1 mode
+ 0 Normal
+ 1 Grab
+ 2 Ungrab
+ 3 WhileGrabbed
+ 1 CARD8 device id
+ 18 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceFocusOut
+ 1 CARD8 code
+ 1 detail
+ 0 Ancestor
+ 1 Virtual
+ 2 Inferior
+ 3 Nonlinear
+ 4 NonlinearVirtual
+ 5 Pointer
+ 6 PointerRoot
+ 7 None
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW event
+ 1 mode
+ 0 Normal
+ 1 Grab
+ 2 Ungrab
+ 3 WhileGrabbed
+ 1 CARD8 device id
+ 18 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ProximityIn
+ 1 CARD8 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ProximityOut
+ 1 CARD8 code
+ 1 unused
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 4 WINDOW root
+ 4 WINDOW event
+ 4 WINDOW child
+ 0 None
+ 2 INT16 root-x
+ 2 INT16 root-y
+ 2 INT16 event-x
+ 2 INT16 event-y
+ 2 SETofKEYBUTMASK state
+ 1 BOOL same-screen
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+.DE
+.LP
+DeviceStateNotify events may be immediately followed by zero or one
+DeviceKeyStateNotify and/ or zero or more DeviceValuator events.
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceStateNotify
+ 1 CARD8 code
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 1 CARD8 num_keys
+ 1 CARD8 num_buttons
+ 1 CARD8 num_valuators
+ 1 CARD8 valuator mode and input classes reported
+ #x01 reporting keys
+ #x02 reporting buttons
+ #x04 reporting valuators
+ #x40 device mode (0 = Relative, 1 = Absolute)
+ #x80 proximity state (0 = InProximity, 1 = OutOfProximity)
+ 4 LISTofCARD8 first 32 keys (if reported)
+ 4 LISTofCARD8 first 32 buttons (if reported)
+ 12 LISTofCARD32 first 3 valuators (if reported)
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceKeyStateNotify
+ 1 CARD8 code
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+ 2 CARD16 sequence number
+ 28 LISTofCARD8 state of keys 33-255
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceButtonStateNotify
+ 1 CARD8 code
+ 1 CARD8 device id
+ #x80 MORE_EVENTS follow
+ 2 CARD16 sequence number
+ 28 LISTofCARD8 state of buttons 33-255
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceValuator
+ 1 CARD8 code
+ 1 CARD8 device id
+ 2 CARD16 sequence number
+ 2 SETofKEYBUTMASK state
+ 1 n number of valuators this device reports
+ 1 n number of first valuator in this event
+ 24 LISTofINT32 valuators
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+DeviceMappingNotify
+ 1 CARD8 code
+ 1 CARD8 device id
+ 2 CARD16 sequence number
+ 1 request
+ 0 MappingModifier
+ 1 MappingKeyboard
+ 2 MappingPointer
+ 1 KEYCODE first-keycode
+ 1 CARD8 count
+ 1 unused
+ 4 TIMESTAMP time
+ 20 unused
+.DE
+.LP
+.DS 0
+.TA .2i .5i 1.5i 2.5i
+.ta .2i .5i 1.5i 2.5i
+ChangeDeviceNotify
+ 1 CARD8 code
+ 1 CARD8 id of device specified on change request
+ 2 CARD16 sequence number
+ 4 TIMESTAMP time
+ 1 request
+ 0 NewPointer
+ 1 NewKeyboard
+ 23 unused
+.DE
+.\" print Table of Contents
+.if o .bp \" blank page to make count even
+.bp 1
+.af PN i
+.PX
diff --git a/specs/Xi/library.ms b/specs/Xi/library.ms
new file mode 100644
index 0000000..e2f5522
--- /dev/null
+++ b/specs/Xi/library.ms
@@ -0,0 +1,6312 @@
+.\" $Xorg: library.ms,v 1.3 2000/08/17 19:42:38 cpqbld Exp $
+.\" Input Extension now coded to macros.t
+.\" edited for DP edits and code consistency w/ core protocol/xlib 4/5/96
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\0
+.sp 10
+.ce 500
+.ps 20
+\fBX Input Device Extension Library
+.ps 12
+.sp 2
+X Consortium Standard
+.sp 1
+X Version 11, Release 6.4
+.sp 16
+.ps 15
+\fBMark Patrick\0\0\0\0Ardent Computer
+.sp 1
+\fBGeorge Sachs\0\0\0\0Hewlett-Packard
+.ps 12
+.ce 0
+.bp
+\0
+.sp 10
+.fi
+.LP
+Copyright \(co 1989, 1990, 1991 by Hewlett-Packard Company, Ardent Computer.
+.LP
+Permission to use, copy, modify, and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+Ardent, and Hewlett-Packard make no representations about the suitability
+for any purpose of the information in this document. It is provided \`\`as is''
+without express or implied warranty.
+.sp 5
+Copyright (c) 1989, 1990, 1991, 1992 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.ps
+.vs
+.bp 1
+.EH '\fBX Input Extension Library\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Input Extension Library\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB\\\\n(PN\fP''
+.OF ''\fB\\\\n(PN\fP''
+.\" Force the heading counter for level 1 to one
+.\"
+.\"
+.\"
+.\" Print table of contents to level 4 headings
+.\"
+.\"
+.\" Page eject for each level 1 heading
+.\"
+.\"
+.\" Define Ch to contain the chapter string.
+.\"
+.ds Ch Input Extension Overview
+.\"
+.\"
+.\" Pull in the layout macro package.
+.\"
+.\"
+.tr ~
+.NH 1
+Input Extension Overview
+.XS
+\*(SN Input Extension Overview
+.XE
+.LP
+This document describes an extension to
+the X11 server. The purpose of this extension is to support the use
+of additional input devices beyond the pointer and keyboard devices
+defined by the core X protocol. This first section gives an overview
+of the input extension. The following sections correspond to
+chapters 9, 10, and 11, ``Window and Session Manager Functions'',
+``Events'', and ``Event Handling Functions'' of the
+``Xlib - C Language Interface'' manual
+and describe how to use the input device extension.
+.NH 2
+Design Approach
+.XS
+\*(SN Design Approach
+.XE
+.LP
+The design approach of the extension is to define functions
+and events analogous to the core functions and events.
+This allows extension input devices and events to be individually
+distinguishable from each other and from the core input devices and events.
+These functions and events make use of a device identifier and support the
+reporting of \fIn\fP\^-dimensional motion data as well as other data that
+is not currently reportable via the core input events.
+.NH 2
+Core Input Devices
+.XS
+\*(SN Core Input Devices
+.XE
+.LP
+The X server core protocol supports two input devices: a pointer and a
+keyboard. The pointer device has two major functions.
+First, it may be used to generate motion information
+that client programs can detect. Second, it may also be used to indicate the
+current location and focus of the X keyboard. To accomplish this, the server
+echoes a cursor at the current position of the X pointer. Unless the X
+keyboard has been explicitly focused, this cursor also shows the current
+location and focus of the X keyboard.
+.LP
+The X keyboard is used to generate input that client programs can detect.
+.LP
+The X keyboard and X pointer are referred to in this document as
+the \fIcore devices\fP, and the input
+events they generate
+.Pn ( KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+and
+.PN MotionNotify )
+are known as the \fIcore input events\fP. All other
+input devices are referred to as \fIextension input devices\fP, and the
+input events they generate are referred to as \fIextension input events\fP\^.
+.NT
+This input extension does not change the behavior or functionality of the
+core input devices, core events, or core protocol requests, with the
+exception of the core grab requests. These requests may affect the
+synchronization of events from extension devices. See the explanation
+in the section titled ``Event Synchronization and Core Grabs.''
+.NE
+.LP
+Selection of the physical devices to be initially used by the server as the
+core devices is left implementation dependent. Functions are defined that
+allow client programs to change which physical devices are used as the
+core devices.
+.NH 2
+Extension Input Devices
+.XS
+\*(SN Extension Input Devices
+.XE
+.LP
+The input extension controls access to input devices other than the X keyboard
+and X pointer. It allows client programs to select input from these devices
+independently
+from each other and independently from the core devices. Input events from
+these devices are of extension types
+.Pn ( DeviceKeyPress ,
+.PN DeviceKeyRelease ,
+.PN DeviceButtonPress ,
+.PN DeviceButtonRelease ,
+.PN DeviceMotionNotify ,
+and so on) and contain
+a device identifier so that events of the same type coming from different
+input devices can be distinguished.
+.LP
+Extension input events are not limited in size by the size of the server
+32-byte wire events. Extension input events
+may be constructed by the server sending as many
+wire-sized events as necessary to return the information required for
+that event.
+The library event reformatting routines
+are responsible for combining these into one or more client XEvents.
+.LP
+Any input device that generates key, button, or motion data may be used as
+an extension input device.
+Extension input devices may have zero or more keys, zero or more buttons,
+and may report zero or more axes of motion. Motion may be reported
+as relative movements from a previous position or as an absolute
+position. All valuators reporting motion information for a given
+extension input device must report the same kind of motion information
+(absolute or relative).
+.LP
+This extension is designed to accommodate new types of input devices that
+may be added in the future. The protocol requests that refer to
+specific characteristics of input devices organize that information
+by \fIinput device classes\fP. Server implementors may add new
+classes of input devices without changing the protocol requests.
+.LP
+All extension input
+devices are treated like the core X keyboard in determining their location
+and focus. The server does not track the location of these devices on an
+individual basis and, therefore,
+does not echo a cursor to indicate their current location.
+Instead, their location is determined by the location of the core X pointer.
+Like the core X keyboard, some may be explicitly focused. If they are
+not explicitly focused, their focus
+is determined by the location of the core X pointer.
+.NH 3
+Input Device Classes
+.XS
+\*(SN Input Device Classes
+.XE
+.LP
+Some of the input extension requests divide input devices into classes
+based on their functionality. This is intended to allow new classes of input
+devices to be defined at a later time without changing the semantics of
+these functions. The following input device classes are currently
+defined:
+.IP "\s-1KEY\s+1" 1i
+The device reports key events.
+.IP "\s-1BUTTON\s+1" 1i
+The device reports button events.
+.IP "\s-1VALUATOR\s+1" 1i
+The device reports valuator data in motion events.
+.IP "\s-1PROXIMITY\s+1" 1i
+The device reports proximity events.
+.IP "\s-1FOCUS\s+1" 1i
+The device can be focused.
+.IP "\s-1FEEDBACK\s+1" 1i
+The device supports feedbacks.
+.LP
+Additional classes may be added in the future.
+Functions that support multiple input classes, such as the
+.PN XListInputDevices
+function that lists all available input devices,
+organize the data they return by input class. Client programs that
+use these functions should not access data unless it matches a
+class defined at the time those clients were compiled. In this way,
+new classes can be added without forcing existing clients that use
+these functions to be recompiled.
+.NH 2
+Using Extension Input Devices
+.XS
+\*(SN Using Extension Input Devices
+.XE
+.LP
+A client that wishes to access an input device does so through the library
+functions defined in the following sections. A typical sequence of requests
+that a client would make is as follows:
+.IP \(bu 5
+.PN XListInputDevices
+\- lists all of the available input devices. From the
+information returned by this request, determine whether the desired input
+device is attached to the server. For a description of the
+.PN XListInputDevices
+request, see the section entitled ``Listing Available Devices.''
+.IP \(bu 5
+.PN XOpenDevice
+\- requests that the server open the device for access by this client.
+This request returns an
+.PN XDevice
+structure that is used
+by most other input extension requests to identify the specified device.
+For a description of the
+.PN XOpenDevice
+request, see the section entitled ``Enabling and Disabling Extension Devices.''
+.IP \(bu 5
+Determine the event types and event classes needed to select the desired
+input extension events, and identify them when they are received.
+This is done via macros whose name corresponds to the desired event, for
+example,
+.PN DeviceKeyPress .
+For a description of these macros,
+see the section entitled ``Selecting Extension Device Events.''
+.IP \(bu 5
+.PN XSelectExtensionEvent
+\- selects the desired events from the server.
+For a description of the
+.PN XSelextExtensionEvent
+request, see the section entitled ``Selecting Extension Device Events.''
+.IP \(bu 5
+.PN XNextEvent
+\- receives the next available event. This is the core
+.PN XNextEvent
+function provided by the standard X libarary.
+.LP
+Other requests are defined to grab and focus extension devices, to
+change their key, button, or modifier mappings, to control the
+propagation of input extension events, to get motion history from an
+extension device, and to send input extension events to another client.
+These functions are described in the following sections.
+.NH 1
+Library Extension Requests
+.XS
+\*(SN Library Extension Requests
+.XE
+.LP
+Extension input devices are accessed by client programs through the
+use of new protocol requests.
+The following requests are provided as extensions to Xlib. Constants
+and structures referenced by these functions may be found in the
+files \fB<X11/extensions/XI.h>\fP and \fB<X11/extensions/XInput.h>\fP,
+which are attached to this document as
+Appendix A.
+.LP
+The library will return \fBNoSuchExtension\fP if an extension request
+is made to a server that does not support the input extension.
+.LP
+Input extension requests cannot be used to access the X keyboard and
+X pointer devices.
+.NH 2
+Window Manager Functions
+.XS
+\*(SN Window Manager Functions
+.XE
+.LP
+This section discusses the following X Input Extension Window Manager topics:
+.IP \(bu 5
+Changing the core devices
+.IP \(bu 5
+Event synchronization and core grabs
+.IP \(bu 5
+Extension active grabs
+.IP \(bu 5
+Passively grabbing a key
+.IP \(bu 5
+Passively grabbing a button
+.IP \(bu 5
+Thawing a device
+.IP \(bu 5
+Controlling device focus
+.IP \(bu 5
+Controlling device feedback
+.IP \(bu 5
+Ringing a bell on an input device
+.IP \(bu 5
+Controlling device encoding
+.IP \(bu 5
+Controlling button mapping
+.IP \(bu 5
+Obtaining the state of a device
+.NH 3
+Changing the Core Devices
+.XS
+\*(SN Changing the Core Devices
+.XE
+.LP
+These functions are provided to change which physical device is used
+as the X pointer or X keyboard.
+.NT
+Using these functions may change the characteristics of the core devices.
+The new pointer device may have a different number of buttons from the
+old one, or the new keyboard device may have a different number of
+keys or report a different range of keycodes. Client programs may be
+running that depend on those characteristics. For example, a client
+program could allocate an array based on the number of buttons on the
+pointer device and then use the button numbers received in button events
+as indices into that array. Changing the core devices could cause
+such client programs to behave improperly or to terminate abnormally
+if they ignore the
+.PN ChangeDeviceNotify
+event generated by these requests.
+.NE
+.LP
+These functions change the X keyboard or X pointer device and generate an
+.PN XChangeDeviceNotify
+event and a
+.PN MappingNotify
+event.
+The specified device becomes the
+new X keyboard or X pointer device. The location of the core device
+does not change as a result of this request.
+.LP
+These requests fail and return
+.PN AlreadyGrabbed
+if either the specified
+device or the core device it would replace are grabbed by some other client.
+They fail and return
+.PN GrabFrozen
+if either device is frozen by the active grab of another client.
+.LP
+These requests fail with a
+.PN BadDevice
+error if the specified device is invalid, has not previously been opened via
+.PN XOpenDevice ,
+or is
+not supported as a core device by the server implementation.
+.LP
+Once the device has successfully replaced one of the core devices, it
+is treated as a core device until it is in turn replaced by another
+.PN ChangeDevice
+request or until the server terminates. The termination
+of the client that changed the device will not cause it to change back.
+Attempts to use the
+.PN XCloseDevice
+request to close the new core device will fail with a
+.PN BadDevice
+error.
+.sp
+.LP
+To change which physical device is used as the X keyboard, use the
+.PN XChangeKeyboardDevice
+function.
+The specified device must support input class
+.PN Keys
+(as reported in the
+.PN ListInputDevices
+request) or the request will fail with a
+.PN BadMatch
+error.
+.LP
+.sM
+.FD 0
+int XChangeKeyboardDevice\^(\^\fIdisplay\fP\^, \fIdevice\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.LP
+.eM
+If no error occurs,
+.PN XChangeKeyboardDevice
+returns
+.PN Success .
+A
+.PN ChangeDeviceNotify
+event with the request field set to
+.PN NewKeyboard
+is sent to all clients selecting that event.
+A
+.PN MappingNotify
+event with the request field set to
+.PN MappingKeyboard
+is sent to all clients.
+The requested device becomes the X keyboard, and the old keyboard becomes
+available as an extension input device.
+The focus state of the new keyboard is the same as
+the focus state of the old X keyboard.
+.LP
+.PN XChangeKeyboardDevice
+can generate
+.PN AlreadyGrabbed ,
+.PN BadDevice ,
+.PN BadMatch ,
+and
+.PN GrabFrozen
+errors.
+.sp
+.LP
+To change which physical device is used as the X pointer,
+use the
+.PN XChangePointerDevice
+function.
+The specified device must support input class
+.PN Valuators
+(as reported in the
+.PN XListInputDevices
+request) and report at least two axes of motion,
+or the request will fail with a
+.PN BadMatch
+error.
+If the specified device reports more than two axes, the two specified in
+the xaxis and yaxis arguments will be used. Data from other
+valuators on the device will be ignored.
+.LP
+If the specified device reports absolute positional information, and the
+server implementation does not allow such a device to be used as the
+X pointer, the request will fail with a
+.PN BadDevice
+error.
+.sM
+.FD 0
+int XChangePointerDevice\^(\^\fIdisplay\fP\^, \fIdevice\fP\^, \fIxaxis\fP\^, \fIyaxis\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIxaxis\fP\^;
+.br
+ int \fIyaxis\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIxaxis\fP 1i
+Specifies the zero-based index of the axis to be used as the x-axis of the
+pointer device.
+.IP \fIyaxis\fP 1i
+Specifies the zero-based index of the axis to be used as the y-axis of the
+pointer device.
+.LP
+.eM
+If no error occurs,
+.PN XChangePointerDevice
+returns
+.PN Success .
+A
+.PN ChangeDeviceNotify
+event with the request field set to
+.PN NewPointer
+is sent to all clients selecting that event.
+A
+.PN MappingNotify
+event with the request field set to
+.PN MappingPointer
+is sent to all clients.
+The requested device becomes the X pointer, and the old pointer becomes
+available as an extension input device.
+.LP
+.PN XChangePointerDevice
+can generate
+.PN AlreadyGrabbed ,
+.PN BadDevice ,
+.PN BadMatch ,
+and
+.PN GrabFrozen
+errors.
+.NH 3
+Event Synchronization and Core Grabs
+.XS
+\*(SN Event Synchronization and Core Grabs
+.XE
+.LP
+Implementation of the input extension requires an extension of the
+meaning of event synchronization for the core grab requests. This is
+necessary in order to allow window managers to freeze all input devices
+with a single request.
+.LP
+The core grab requests require a pointer_mode and keyboard_mode
+argument. The meaning of these modes is changed by the input extension.
+For the
+.PN XGrabPointer
+and
+.PN XGrabButton
+requests, pointer_mode controls synchronization of the pointer device,
+and keyboard_mode controls the synchronization of all other input devices.
+For the
+.PN XGrabKeyboard
+and
+.PN XGrabKey
+requests, pointer_mode controls the synchronization
+of all input devices, except the X keyboard, while keyboard_mode controls
+the synchronization of the keyboard. When using one of the core grab
+requests, the synchronization of extension devices
+is controlled by the mode specified for the device not being grabbed.
+.NH 3
+Extension Active Grabs
+.XS
+\*(SN Extension Active Grabs
+.XE
+.LP
+Active grabs of
+extension devices are supported via the
+.PN XGrabDevice
+function in the same way that core devices are grabbed using the core
+.PN XGrabKeyboard
+function, except that an extension input device
+is passed as a function parameter.
+The
+.PN XUngrabDevice
+function allows a previous active grab for an extension device to be released.
+.LP
+Passive grabs of buttons and keys on extension devices are supported
+via the
+.PN XGrabDeviceButton
+and
+.PN XGrabDeviceKey
+functions.
+These passive grabs are released via the
+.PN XUngrabDeviceKey
+and
+.PN XUngrabDeviceButton
+functions.
+.sp
+.LP
+To grab an extension device, use the
+.PN XGrabDevice
+function.
+The device must have previously been opened using the
+.PN XOpenDevice
+function.
+.sM
+.FD 0
+int XGrabDevice\^(\^\fIdisplay\fP\^, \fIdevice\fP\^, \fIgrab_window\fP\^, \fIowner_events\fP\^, \fIevent_count\fP\^, \fIevent_list\fP\^,
+.br
+ \fIthis_device_mode\fP\^, \fIother_device_mode\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ int \fIthis_device_mode\fP\^;
+.br
+ int \fIother_device_mode\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP "\fIdisplay\fP" 1i
+Specifies the connection to the X server.
+.IP "\fIdevice\fP" 1i
+Specifies the desired device.
+.IP "\fIgrab_window\fP" 1i
+Specifies the ID of a window associated with the device specified above.
+.IP "\fIowner_events\fP" 1i
+Specifies a boolean value of either
+.PN True
+or
+.PN False .
+.IP "\fIevent_count\fP" 1i
+Specifies the number of elements in the event_list array.
+.IP "\fIevent_list\fP" 1i
+Specifies a pointer to a list of event classes that indicate which events
+the client wishes to receive.
+These event classes must have been obtained
+using the device being grabbed.
+.IP "\fIthis_device_mode\fP" 1i
+Controls further processing of events from this device. You can pass one
+of these constants:
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP "\fIother_device_mode\fP" 1i
+Controls further processing of events from all other devices. You can pass one
+of these constants:
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP "\fItime\fP" 1i
+Specifies the time. This may be either a timestamp expressed in
+milliseconds or
+.PN CurrentTime .
+.LP
+.eM
+.PN XGrabDevice
+actively grabs an extension input device and generates
+.PN DeviceFocusIn
+and
+.PN DeviceFocusOut
+events.
+Further input events from this device are reported only to the grabbing client.
+This function overrides any previous active grab by this client for this device.
+.LP
+The event_list parameter is a pointer to a list of event classes. This list
+indicates which events the client wishes to receive while the grab is active.
+If owner_events is
+.PN False ,
+input events from this device are reported with respect to
+grab_window and are reported only if specified in event_list.
+If owner_events is
+.PN True ,
+then if a generated event would normally be reported to this client,
+it is reported normally.
+Otherwise, the event is reported with respect to the grab_window and is only
+reported if specified in event_list.
+.LP
+The this_device_mode argument controls the further processing
+of events from this device, and the other_device_mode argument controls
+the further processing of input events from all other devices.
+.IP \(bu 5
+If the this_device_mode argument is
+.PN GrabModeAsync ,
+device event processing continues
+normally; if the device is currently frozen by this client, then
+processing of device events is resumed.
+If the this_device_mode argument is
+.PN GrabModeSync ,
+the state of the grabbed device
+(as seen by client applications) appears to freeze,
+and no further device events are generated by the server until the
+grabbing client issues a releasing
+.PN XAllowDeviceEvents
+call or until the device grab is released.
+Actual device input events are not lost while the device is frozen; they are
+simply queued for later processing.
+.IP \(bu 5
+If the other_device_mode is
+.PN GrabModeAsync ,
+event processing from other input devices is unaffected
+by activation of the grab.
+If other_device_mode is
+.PN GrabModeSync ,
+the state of all devices except the grabbed device
+(as seen by client applications) appears to freeze, and no further
+events are generated by the server until the grabbing client issues a
+releasing
+.PN XAllowEvents
+or
+.PN XAllowDeviceEvents
+call or until the device grab is released.
+Actual events are not lost
+while the other devices are frozen; they are simply queued for later
+processing.
+.LP
+.PN XGrabDevice
+fails on the following conditions:
+.IP \(bu 5
+If the device is actively grabbed by some other client, it returns
+.PN AlreadyGrabbed .
+.IP \(bu 5
+If grab_window is not viewable, it returns
+.PN GrabNotViewable .
+.IP \(bu 5
+If the specified time is earlier
+than the last-grab-time for the specified device
+or later than the current X server time, it returns
+.PN GrabInvalidTime .
+Otherwise,
+the last-grab-time for the specified device is set
+to the specified time and
+.PN CurrentTime
+is replaced by the current X server time.
+.IP \(bu 5
+If the device is frozen by an active grab of another client, it returns
+.PN GrabFrozen .
+.LP
+If a grabbed device is closed by a client while an active grab by that
+client is in effect, that active grab will be released.
+Any passive grabs established by that client will be released.
+If the device is frozen only by an active grab
+of the requesting client, it is thawed.
+.LP
+.PN XGrabDevice
+can generate
+.PN BadClass ,
+.PN BadDevice ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To release a grab of an extension device, use the
+.PN XUngrabDevice
+function.
+.LP
+.sM
+.FD 0
+int XUngrabDevice(\fIdisplay\fP\^, \fIdevice\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fItime\fP 1i
+Specifies the time. This may be either a timestamp expressed in
+milliseconds, or
+.PN CurrentTime .
+.LP
+.eM
+.PN XUngrabDevice
+allows a client to release an extension input device and any
+queued events if this client has it grabbed from either
+.PN XGrabDevice
+or
+.PN XGrabDeviceKey .
+If any other devices are frozen by the grab,
+.PN XUngrabDevice
+thaws them.
+This function does not release the device and any
+queued events if the specified time is earlier than the last-device-grab
+time or is later than the current X server time. It also generates
+.PN DeviceFocusIn
+and
+.PN DeviceFocusOut
+events. The X server automatically performs an
+.PN XUngrabDevice
+if the event window for an active device grab becomes not viewable
+or if the client terminates without releasing the grab.
+.LP
+.PN XUngrabDevice
+can generate
+.PN BadDevice
+errors.
+.NH 3
+Passively Grabbing a Key
+.XS
+\*(SN Passively Grabbing a Key
+.XE
+.LP
+To passively grab a single key on an extension device, use
+.PN XGrabDeviceKey .
+That device must have previously been opened using the
+.PN XOpenDevice
+function, or the request will fail with a
+.PN BadDevice
+error.
+If the specified device does not support input class
+.PN Keys ,
+the request will fail with a
+.PN BadMatch
+error.
+.sM
+.FD 0
+int XGrabDeviceKey(\fIdisplay\fP\^, \fIdevice\fP\^, \fIkeycode\fP\^, \
+\fImodifiers\fP\^, \fImodifier_device\fP\^, \fIgrab_window\fP\^,
+.br
+ \fIowner_events\fP\^, \fIevent_count\fP\^, \fIevent_list\fP\^, \
+\fIthis_device_mode\fP\^, \fIother_device_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIkeycode\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ XDevice *\fImodifier_device\fP\^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ int \fIthis_device_mode\fP\^;
+.br
+ int \fIother_device_mode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIkeycode\fP 1i
+Specifies the keycode of the key that is to be grabbed. You can pass
+either the keycode or
+.PN AnyKey .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks. This mask is the bitwise inclusive OR
+of these keymask bits:
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+and
+.PN Mod5Mask .
+.IP
+You can also pass
+.PN AnyModifier ,
+which is equivalent to issuing the grab key request
+for all possible modifier combinations (including the combination
+of no modifiers).
+.IP \fImodifier_device\fP 1i
+Specifies the device whose modifiers are to be used. If NULL is
+specified, the core X keyboard is used as the modifier_device.
+.IP \fIgrab_window\fP 1i
+Specifies the ID of a window associated with the device specified above.
+.IP \fIowner_events\fP 1i
+Specifies a boolean value of either
+.PN True
+or
+.PN False .
+.IP \fIevent_count\fP 1i
+Specifies the number of elements in the event_list array.
+.IP \fIevent_list\fP 1i
+Specifies a pointer to a list of event classes that indicate which events
+the client wishes to receive.
+.IP \fIthis_device_mode\fP 1i
+Controls further processing of events from this device.
+You can pass one of these constants:
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIother_device_mode\fP 1i
+Controls further processing of events from all other devices.
+You can pass one of these constants:
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.LP
+.eM
+.PN XGrabDeviceKey
+is analogous to the core
+.PN XGrabKey
+function. It creates an
+explicit passive grab for a key on an extension device.
+The
+.PN XGrabDeviceKey
+function establishes a passive grab on a device.
+Consequently, in the future,
+.IP \(bu 5
+IF the device is not grabbed and the specified key,
+which itself can be a modifier key, is logically pressed
+when the specified modifier keys logically are down on the specified
+modifier device (and no other keys are down),
+.IP \(bu 5
+AND no other modifier keys logically are down,
+.IP \(bu 5
+AND EITHER the grab window is an ancestor of (or is) the focus window
+or the grab window is a descendent of the focus window and contains the pointer,
+.IP \(bu 5
+AND a passive grab on the same device and key combination does not exist on any
+ancestor of the grab window,
+.IP \(bu 5
+THEN the device is actively grabbed, as for
+.PN XGrabDevice ,
+the last-device-grab time is set to the time at which the key was pressed
+(as transmitted in the
+.PN DeviceKeyPress
+event), and the
+.PN DeviceKeyPress
+event is reported.
+.LP
+The interpretation of the remaining arguments is as for
+.PN XGrabDevice .
+The active grab is terminated automatically when the logical state of the
+device has the specified key released
+(independent of the logical state of the modifier keys).
+.LP
+Note that the logical state of a device (as seen by means of the X protocol)
+may lag the physical state if device event processing is frozen.
+.LP
+A modifier of
+.PN AnyModifier
+is equivalent to issuing the request for all
+possible modifier combinations (including the combination of no modifiers).
+It is not required that all modifiers specified have
+currently assigned keycodes.
+A key of
+.PN AnyKey
+is equivalent to issuing
+the request for all possible keycodes. Otherwise, the key must be in
+the range specified by min_keycode and max_keycode in the
+information returned by the
+.PN XListInputDevices
+function.
+If it is not within that range,
+.PN XGrabDeviceKey
+generates a
+.PN BadValue
+error.
+.LP
+.PN XGrabDeviceKey
+generates a
+.PN BadAccess
+error if some other client has issued a
+.PN XGrabDeviceKey
+with the same device and key combination on the same window.
+When using
+.PN AnyModifier
+or
+.PN AnyKey ,
+the request fails completely and the X server generates a
+.PN BadAccess
+error, and no grabs are established if there is a conflicting grab
+for any combination.
+.LP
+.PN XGrabDeviceKey
+returns
+.PN Success
+upon successful completion of the request.
+.LP
+.PN XGrabDeviceKey
+can generate
+.PN BadAccess ,
+.PN BadClass ,
+.PN BadDevice ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To release a passive grab of a single key on an extension device, use
+.PN XUngrabDeviceKey .
+.sM
+.FD 0
+int XUngrabDeviceKey(\fIdisplay\fP\^, \fIdevice\fP\^, \fIkeycode\fP\^, \fImodifiers\fP\^, \fImodifier_device\fP\^, \fIungrab_window\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIkeycode\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ XDevice *\fImodifier_device\fP\^;
+.br
+ Window \fIungrab_window\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIkeycode\fP 1i
+Specifies the keycode of the key that is to be ungrabbed. You can pass
+either the keycode or
+.PN AnyKey .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks. This mask is the bitwise inclusive OR
+of these keymask bits:
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+and
+.PN Mod5Mask .
+.IP
+You can also pass
+.PN AnyModifier ,
+which is equivalent to issuing the ungrab key
+request for all possible modifier combinations (including the combination
+of no modifiers).
+.IP \fImodifier_device\fP 1.5i
+Specifies the device whose modifiers are to be used. If NULL is
+specified, the core X keyboard is used as the modifier_device.
+.IP \fIungrab_window\fP 1.5i
+Specifies the ID of a window associated with the device specified above.
+.LP
+.eM
+.PN XUngrabDeviceKey
+is analogous to the core
+.PN XUngrabKey
+function. It releases an explicit passive grab for a key
+on an extension input device.
+.LP
+.PN XUngrabDeviceKey
+can generate
+.PN BadAlloc ,
+.PN BadDevice ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.NH 3
+Passively Grabbing a Button
+.XS
+\*(SN Passively Grabbing a Button
+.XE
+.LP
+To establish a passive grab for a single button on an extension device, use
+.PN XGrabDeviceButton .
+The specified device must have previously been opened using the
+.PN XOpenDevice
+function, or the request will fail with a
+.PN BadDevice
+error. If the specified device does not support input class
+.PN Buttons ,
+the request will fail with a
+.PN BadMatch
+error.
+.sM
+.FD 0
+int XGrabDeviceButton(\fIdisplay\fP\^, \fIdevice\fP\^, \fIbutton\fP\^, \fImodifiers\fP\^, \fImodifier_device\fP \^, \fIgrab_window\fP\^,
+.br
+ \fIowner_events\fP\^, \fIevent_count\fP\^, \fIevent_list\fP\^, \
+\fIthis_device_mode\fP\^, \fIother_device_mode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned int \fIbutton\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ XDevice *\fImodifier_device\fP \^;
+.br
+ Window \fIgrab_window\fP\^;
+.br
+ Bool \fIowner_events\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ int \fIthis_device_mode\fP\^;
+.br
+ int \fIother_device_mode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIbutton\fP 1i
+Specifies the code of the button that is to be grabbed. You can pass
+either the button or
+.PN AnyButton .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks. This mask is the bitwise inclusive OR
+of these keymask bits:
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+and
+.PN Mod5Mask .
+.IP
+You can also pass
+.PN AnyModifier ,
+which is equivalent to issuing the grab request
+for all possible modifier combinations (including the combination
+of no modifiers).
+.IP \fImodifier_device\fP 1i
+Specifies the device whose modifiers are to be used. If NULL is
+specified, the core X keyboard is used as the modifier_device.
+.IP \fIgrab_window\fP 1i
+Specifies the ID of a window associated with the device specified above.
+.IP \fIowner_events\fP 1i
+Specifies a boolean value of either
+.PN True
+or
+.PN False .
+.IP \fIevent_count\fP 1i
+Specifies the number of elements in the event_list array.
+.IP \fIevent_list\fP 1i
+Specifies a list of event classes that indicates which device events are to be
+reported to the client.
+.IP \fIthis_device_mode\fP 1i
+Controls further processing of events from this device. You can pass one
+of these constants:
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.IP \fIother_device_mode\fP 1i
+Controls further processing of events from all other devices. You can pass one
+of these constants:
+.PN GrabModeSync
+or
+.PN GrabModeAsync .
+.LP
+.eM
+.PN XGrabDeviceButton
+is analogous to the core
+.PN XGrabButton
+function.
+It creates an explicit passive grab for a button on an extension input device.
+Because the server does not track extension devices,
+no cursor is specified with this request.
+For the same reason, there is no confine_to parameter.
+The device must have previously been opened using the
+.PN XOpenDevice
+function.
+.LP
+The
+.PN XGrabDeviceButton
+function establishes a passive grab on a device.
+Consequently, in the future,
+.IP \(bu 5
+IF the device is not grabbed and the specified button is logically pressed
+when the specified modifier keys logically are down
+(and no other buttons or modifier keys are down),
+.IP \(bu 5
+AND EITHER the grab window is an ancestor of (or is) the focus window
+OR the grab window is a descendent of the focus window and contains the pointer,
+.IP \(bu 5
+AND a passive grab on the same device and button/key combination does not
+exist on any ancestor of the grab window,
+.IP \(bu 5
+THEN the device is actively grabbed, as for
+.PN XGrabDevice ,
+the last-grab time is set to the time at which the button was pressed
+(as transmitted in the
+.PN DeviceButtonPress
+event), and the
+.PN DeviceButtonPress
+event is reported.
+.LP
+The interpretation of the remaining arguments is as for
+.PN XGrabDevice .
+The active grab is terminated automatically when logical state of the
+device has all buttons released (independent of the logical state of
+the modifier keys).
+.LP
+Note that the logical state of a device (as seen by means of the X protocol)
+may lag the physical state if device event processing is frozen.
+.LP
+A modifier of
+.PN AnyModifier
+is equivalent to issuing the request for all
+possible modifier combinations (including the combination of no
+modifiers).
+It is not required that all modifiers specified have
+currently assigned keycodes.
+A button of
+.PN AnyButton
+is equivalent to issuing
+the request for all possible buttons.
+Otherwise, it is not required that the
+specified button be assigned to a physical button.
+.LP
+.PN XGrabDeviceButton
+generates a
+.PN BadAccess
+error if some other client has issued a
+.PN XGrabDeviceButton
+with the same device and button combination on the same window.
+When using
+.PN AnyModifier
+or
+.PN AnyButton ,
+the request fails completely and the X server generates a
+.PN BadAccess
+error and no grabs are
+established if there is a conflicting grab for any combination.
+.LP
+.PN XGrabDeviceButton
+can generate
+.PN BadAccess ,
+.PN BadClass ,
+.PN BadDevice ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+To release a passive grab of a button on an extension device, use
+.PN XUngrabDeviceButton .
+.sM
+.FD 0
+int XUngrabDeviceButton(\fIdisplay\fP\^, \fIdevice\fP\^, \fIbutton\fP\^, \fImodifiers\fP\^, \fImodifier_device\fP\^, \fIungrab_window\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned int \fIbutton\fP\^;
+.br
+ unsigned int \fImodifiers\fP\^;
+.br
+ XDevice *\fImodifier_device\fP\^;
+.br
+ Window \fIungrab_window\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIbutton\fP 1i
+Specifies the code of the button that is to be ungrabbed. You can pass
+either a button or
+.PN AnyButton .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks. This mask is the bitwise inclusive OR
+of these keymask bits:
+.PN ShiftMask ,
+.PN LockMask ,
+.PN ControlMask ,
+.PN Mod1Mask ,
+.PN Mod2Mask ,
+.PN Mod3Mask ,
+.PN Mod4Mask ,
+and
+.PN Mod5Mask .
+.IP
+You can also pass
+.PN AnyModifier ,
+which is equivalent to issuing the ungrab key
+request for all possible modifier combinations (including the combination
+of no modifiers).
+.IP \fImodifier_device\fP 1i
+Specifies the device whose modifiers are to be used. If NULL is
+specified, the core X keyboard is used as the modifier_device.
+.IP \fIungrab_window\fP 1i
+Specifies the ID of a window associated with the device specified above.
+.LP
+.eM
+.PN XUngrabDeviceButton
+is analogous to the core
+.PN XUngrabButton
+function. It releases an explicit passive grab for a button
+on an extension device.
+That device must have previously been opened using the
+.PN XOpenDevice
+function, or a
+.PN BadDevice
+error will result.
+.LP
+A modifier of
+.PN AnyModifier
+is equivalent to issuing the request for all
+possible modifier combinations (including the combination of no
+modifiers).
+.LP
+.PN XUngrabDeviceButton
+can generate
+.PN BadAlloc ,
+.PN BadDevice ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.NH 3
+Thawing a Device
+.XS
+\*(SN Thawing a Device
+.XE
+.LP
+To allow further events to be processed when a device has been frozen, use
+.PN XAllowDeviceEvents .
+.sM
+.FD 0
+int XAllowDeviceEvents(\fIdisplay\fP\^, \fIdevice\fP\^, \fIevent_mode\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIevent_mode\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIevent_mode\fP 1i
+Specifies the event mode. You can pass one of these constants:
+.PN AsyncThisDevice ,
+.PN SyncThisDevice ,
+.PN AsyncOtherDevices ,
+.PN ReplayThisDevice ,
+.PN AsyncAll ,
+or
+.PN SyncAll .
+.IP \fItime\fP 1i
+Specifies the time. This may be either a timestamp expressed in
+milliseconds, or
+.PN CurrentTime .
+.LP
+.eM
+.PN XAllowDeviceEvents
+releases some queued events if the client has caused a device to freeze.
+It has no effect if the specified time is earlier than the last-grab
+time of the most recent active grab for the client and device,
+or if the specified time is later than the current X server time.
+The following describes the processing that occurs depending on what constant
+you pass to the event_mode argument:
+.IP \(bu 5
+.PN AsyncThisDevice
+.IP
+If the specified device is frozen by the client, event processing for that
+continues as usual. If the device is frozen multiple times by the client on
+behalf of multiple separate grabs,
+.PN AsyncThisDevice
+thaws for all.
+.PN AsyncThisDevice
+has no effect if the specified device is not frozen by the
+client, but the device need not be grabbed by the client.
+.IP \(bu 5
+.PN SyncThisDevice
+.IP
+If the specified device is frozen and actively grabbed by the client,
+event processing for that device continues normally until the next
+key or button event is reported to the client.
+At this time,
+the specified device again appears to freeze.
+However, if the reported event causes the grab to be released,
+the specified device does not freeze.
+.PN SyncThisDevice
+has no effect if the specified device is not frozen by the client
+or is not grabbed by the client.
+.IP \(bu 5
+.PN ReplayThisDevice
+.IP
+If the specified device is actively grabbed by the client
+and is frozen as the result of an event having been sent to the client
+(either from the activation of a
+.PN GrabDeviceButton
+or from a previous
+.PN AllowDeviceEvents
+with mode
+.PN SyncThisDevice ,
+but not from a
+.PN Grab ),
+the grab is released and that event is completely reprocessed.
+This time, however, the request ignores any passive grabs at or above
+(toward the root) the grab-window of the grab just released.
+The request has no effect if the specified device is not grabbed by the client
+or if it is not frozen as the result of an event.
+.IP \(bu 5
+.PN AsyncOtherDevices
+.IP
+If the remaining devices are frozen by the client,
+event processing for them continues as usual.
+If the other devices are frozen multiple times by the client on behalf of
+multiple separate grabs,
+.PN AsyncOtherDevices
+``thaws'' for all.
+.PN AsyncOtherDevices
+has no effect if the devices are not frozen by the client,
+but those devices need not be grabbed by the client.
+.IP \(bu 5
+.PN SyncAll
+.IP
+If all devices are frozen by the client,
+event processing (for all devices) continues normally until the next
+button or key event is reported
+to the client for a grabbed device,
+at which time the devices again appear to
+freeze. However, if the reported event causes the grab to be released,
+then the devices do not freeze (but if any device is still
+grabbed, then a subsequent event for it will still cause all devices
+to freeze).
+.PN SyncAll
+has no effect unless all devices are frozen by the client.
+If any device is frozen twice
+by the client on behalf of two separate grabs,
+.PN SyncAll
+"thaws" for both (but a subsequent freeze for
+.PN SyncAll
+will freeze each device only once).
+.IP \(bu 5
+.PN AsyncAll
+.IP
+If all devices are frozen by the
+client, event processing (for all devices) continues normally.
+If any device is frozen multiple times by the client on behalf of multiple
+separate grabs,
+.PN AsyncAll
+``thaws ''for all.
+If any device is frozen twice by the client on behalf of two separate grabs,
+.PN AsyncAll
+``thaws'' for both.
+.PN AsyncAll
+has no effect unless all devices are frozen by the client.
+.LP
+.PN AsyncThisDevice ,
+.PN SyncThisDevice ,
+and
+.PN ReplayThisDevice
+have no effect on the processing of events from the remaining devices.
+.PN AsyncOtherDevices
+has no effect on the processing of events from the specified device.
+When the event_mode is
+.PN SyncAll
+or
+.PN AsyncAll ,
+the device parameter is ignored.
+.LP
+It is possible for several grabs of different devices (by the same
+or different clients) to be active simultaneously.
+If a device is frozen on behalf of any grab,
+no event processing is performed for the device.
+It is possible for a single device to be frozen because of several grabs.
+In this case,
+the freeze must be released on behalf of each grab before events can
+again be processed.
+.LP
+.PN XAllowDeviceEvents
+can generate
+.PN BadDevice
+and
+.PN BadValue
+errors.
+.NH 3
+Controlling Device Focus
+.XS
+\*(SN Controlling Device Focus
+.XE
+.LP
+The current focus window for an extension input device can be
+determined using the
+.PN XGetDeviceFocus
+function.
+Extension devices are focused using the
+.PN XSetDeviceFocus
+function in the same way that the keyboard is focused using the core
+.PN XSetInputFocus
+function, except that a device ID is passed as
+a function parameter. One additional focus state,
+.PN FollowKeyboard ,
+is provided for extension devices.
+.LP
+To get the current focus state, revert state,
+and focus time of an extension device, use
+.PN XGetDeviceFocus .
+.sM
+.FD 0
+int XGetDeviceFocus(\fIdisplay\fP\^, \fIdevice\fP\^, \fIfocus_return\fP\^, \
+\fIrevert_to_return\fP\^, \fIfocus_time_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Window *\fIfocus_return\fP\^;
+.br
+ int *\fIrevert_to_return\fP\^;
+.br
+ Time *\fIfocus_time_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIfocus_return\fP 1i
+Specifies the address of a variable into which the server can return the ID of
+the window that contains the device focus or one of the constants
+.PN None ,
+.PN PointerRoot ,
+or
+.PN FollowKeyboard .
+.IP \fIrevert_to_return\fP 1i
+Specifies the address of a variable into which the server can
+return the current revert_to status for the device.
+.IP \fIfocus_time_return\fP 1i
+Specifies the address of a variable into which the server can
+return the focus time last set for the device.
+.LP
+.eM
+.PN XGetDeviceFocus
+returns the focus state, the revert-to state,
+and the last-focus-time for an extension input device.
+.LP
+.PN XGetDeviceFocus
+can generate
+.PN BadDevice
+and
+.PN BadMatch
+errors.
+.sp
+.LP
+To set the focus of an extension device, use
+.PN XSetDeviceFocus .
+.sM
+.FD 0
+int XSetDeviceFocus(\fIdisplay\fP\^, \fIdevice\fP\^, \fIfocus\fP\^, \
+\fIrevert_to\fP\^, \fItime\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Window \fIfocus\fP\^;
+.br
+ int \fIrevert_to\fP\^;
+.br
+ Time \fItime\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIfocus\fP 1i
+Specifies the ID of the window to which the device's focus should be set.
+This may be a window ID, or
+.PN PointerRoot ,
+.PN FollowKeyboard ,
+or
+.PN None .
+.IP \fIrevert_to\fP 1i
+Specifies to which window the focus of the device should revert
+if the focus window becomes not viewable. One of the following
+constants may be passed:
+.PN RevertToParent ,
+.PN RevertToPointerRoot ,
+.PN RevertToNone ,
+or
+.PN RevertToFollowKeyboard .
+.IP \fItime\fP 1i
+Specifies the time. You can pass either a timestamp, expressed in
+milliseconds, or
+.PN CurrentTime .
+.LP
+.eM
+.PN XSetDeviceFocus
+changes the focus for an extension input device and the
+last-focus-change-time. It has no effect if the specified
+time is earlier than the last-focus-change-time or is later than the
+current X server time. Otherwise, the last-focus-change-time is set to the
+specified time.
+This function causes the X server to generate
+.PN DeviceFocusIn
+and
+.PN DeviceFocusOut
+events.
+.LP
+The action taken by the server when this function is requested depends
+on the value of the focus argument:
+.IP \(bu 5
+If the focus argument is
+.PN None ,
+all input events from this device will be discarded until a new focus window
+is set. In this case, the revert_to argument is ignored.
+.IP \(bu 5
+If the focus argument is a window ID, it becomes the focus
+window of the device. If an input event from the device would normally
+be reported to this window or to one of its inferiors, the event is
+reported normally. Otherwise, the event is reported relative to the focus
+window.
+.IP \(bu 5
+If the focus argument is
+.PN PointerRoot ,
+the focus window is dynamically taken to be the root window
+of whatever screen the pointer is on at each input event.
+In this case, the revert_to argument is ignored.
+.IP \(bu 5
+If the focus argument is
+.PN FollowKeyboard ,
+the focus window is dynamically taken to be the same as the focus
+of the X keyboard at each input event.
+.LP
+The specified focus window must be viewable at the time
+.PN XSetDeviceFocus
+is called. Otherwise, it generates a
+.PN BadMatch
+error.
+If the focus window later becomes not viewable,
+the X server evaluates the revert_to argument
+to determine the new focus window.
+.IP \(bu 5
+If the revert_to argument is
+.PN RevertToParent ,
+the focus reverts to the parent (or the closest viewable ancestor),
+and the new revert_to value is taken to be
+.PN RevertToNone .
+.IP \(bu 5
+If the revert_to argument is
+.PN RevertToPointerRoot ,
+.PN RevertToFollowKeyboard ,
+or
+.PN RevertToNone ,
+the focus reverts to that value.
+.LP
+When the focus reverts,
+the X server generates
+.PN DeviceFocusIn
+and
+.PN DeviceFocusOut
+events, but the last-focus-change time is not affected.
+.LP
+.PN XSetDeviceFocus
+can generate
+.PN BadDevice ,
+.PN BadMatch ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.NH 3
+Controlling Device Feedback
+.XS
+\*(SN Controlling Device Feedback
+.XE
+.LP
+To determine the current feedback settings of an extension input device, use
+.PN XGetFeedbackControl .
+.sM
+.FD 0
+XFeedbackState * XGetFeedbackControl(\fIdisplay\fP\^, \fIdevice\fP\^, \fInum_feedbacks_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int *\fInum_feedbacks_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fInum_feedbacks_return\fP 1i
+Returns the number of feedbacks supported by the device.
+.LP
+.eM
+.PN XGetFeedbackControl
+returns a list of
+.PN FeedbackState
+structures that describe the feedbacks supported by the specified device.
+There is an
+.PN XFeedbackState
+structure for each class of feedback. These are of
+variable length, but the first three members are common to all.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+} XFeedbackState;
+.De
+.LP
+.eM
+The common members are as follows:
+.IP \(bu 5
+The class member identifies the class of feedback.
+It may be compared to constants defined in the file
+.Pn < X11/extensions/XI.h >.
+Currently defined feedback constants include:
+.PN KbdFeedbackClass ,
+.PN PtrFeedbackClass ,
+.PN StringFeedbackClass ,
+.PN IntegerFeedbackClass ,
+.PN LedFeedbackClass ,
+and
+.PN BellFeedbackClass .
+.IP \(bu 5
+The length member specifies the length of the
+.PN FeedbackState
+structure and can be used by clients to traverse the list.
+.IP \(bu 5
+The id member uniquely identifies a feedback for a given device and class.
+This allows a device to support more than one feedback of the same class.
+Other feedbacks of other classes or devices may have the same ID.
+.sp
+.LP
+Those feedbacks equivalent to those
+supported by the core keyboard are reported in class
+.PN KbdFeedback
+using the
+.PN XKbdFeedbackState
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int click;
+ int percent;
+ int pitch;
+ int duration;
+ int led_mask;
+ int global_auto_repeat;
+ char auto_repeats[32];
+} XKbdFeedbackState;
+.De
+.LP
+.eM
+The additional members of the
+.PN XKbdFeedbackState
+structure report the current state of the feedback:
+.IP \(bu 5
+The click member specifies the key-click volume and has a value in the range
+0 (off) to 100 (loud).
+.IP \(bu 5
+The percent member specifies the bell volume and has a value in the range
+0 (off) to 100 (loud).
+.IP \(bu 5
+The pitch member specifies the bell pitch in Hz. The range of the value is
+implementation-dependent.
+.IP \(bu 5
+The duration member specifies the duration in milliseconds of the bell.
+.IP \(bu 5
+The led_mask member is a bit mask that describes the current state of up to
+32 LEDs. A value of 1 in a bit indicates that the corresponding LED is on.
+.IP \(bu 5
+The global_auto_repeat member has a value of
+.PN AutoRepeatModeOn
+or
+.PN AutoRepeatModeOff .
+.IP \(bu 5
+The auto_repeats member is a bit vector. Each bit set to 1 indicates
+that auto-repeat is enabled for the corresponding key. The vector is
+represented as 32 bytes. Byte N (from 0) contains the bits for keys
+8N to 8N + 7, with the least significant bit in the byte representing
+key 8N.
+.sp
+.LP
+Those feedbacks equivalent to those
+supported by the core pointer are reported in class
+.PN PtrFeedback
+using the
+.PN XPtrFeedbackState
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int accelNum;
+ int accelDenom;
+ int threshold;
+} XPtrFeedbackState;
+.De
+.LP
+.eM
+The additional members of the
+.PN XPtrFeedbackState
+structure report the current state of the feedback:
+.IP \(bu 5
+The accelNum member returns the numerator for the acceleration multiplier.
+.IP \(bu 5
+The accelDenom member returns the denominator for the acceleration multiplier.
+.IP \(bu 5
+The accelDenom member returns the threshold for the acceleration.
+.sp
+.LP
+Integer feedbacks are those capable of displaying integer numbers
+and reported via the
+.PN XIntegerFeedbackState
+structure.
+The minimum and maximum values that they can display are reported.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int resolution;
+ int minVal;
+ int maxVal;
+} XIntegerFeedbackState;
+.De
+.LP
+.eM
+The additional members of the
+.PN XIntegerFeedbackState
+structure report the capabilities of the feedback:
+.IP \(bu 5
+The resolution member specifies the number of digits that the feedback
+can display.
+.IP \(bu 5
+The minVal member specifies the minimum value that the feedback can display.
+.IP \(bu 5
+The maxVal specifies the maximum value that the feedback can display.
+.sp
+.LP
+String feedbacks are those that can display character information
+and are reported via the
+.PN XStringFeedbackState
+structure.
+Clients set these feedbacks by passing a list of
+.PN KeySyms
+to be displayed.
+The
+.PN XGetFeedbackControl
+function returns the
+set of key symbols that the feedback can display, as well as the
+maximum number of symbols that can be displayed.
+The
+.PN XStringFeedbackState
+structure is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int max_symbols;
+ int num_syms_supported;
+ KeySym *syms_supported;
+} XStringFeedbackState;
+.De
+.LP
+.eM
+The additional members of the
+.PN XStringFeedbackState
+structure report the capabilities of the feedback:
+.IP \(bu 5
+The max_symbols member specifies the maximum number of symbols
+that can be displayed.
+.IP \(bu 5
+The syms_supported member is a pointer to the list of supported symbols.
+.IP \(bu 5
+The num_syms_supported member specifies the length of the list of supported symbols.
+.sp
+.LP
+Bell feedbacks are those that can generate a sound
+and are reported via the
+.PN XBellFeedbackState
+structure.
+Some implementations may support a bell as part of a
+.PN KbdFeedback
+feedback. Class
+.PN BellFeedback
+is provided for implementations that do not choose to do
+so and for devices that support multiple feedbacks that can produce sound.
+The meaning of the members is the same as that of the corresponding fields in
+the
+.PN XKbdFeedbackState
+structure.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int percent;
+ int pitch;
+ int duration;
+} XBellFeedbackState;
+.De
+.LP
+.eM
+Led feedbacks are those that can generate a light and are reported via the
+.PN XLedFeedbackState
+structure.
+Up to 32 lights per feedback are supported.
+Each bit in led_mask
+corresponds to one supported light, and the corresponding bit in led_values
+indicates whether that light is currently on (1) or off (0).
+Some implementations may support leds as part of a
+.PN KbdFeedback
+feedback.
+Class
+.PN LedFeedback
+is provided for implementations that do not choose to do
+so and for devices that support multiple led feedbacks.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ Mask led_values;
+ Mask led_mask;
+} XLedFeedbackState;
+.De
+.LP
+.eM
+.PN XGetFeedbackControl
+can generate
+.PN BadDevice
+and
+.PN BadMatch
+errors.
+.sp
+.LP
+To free the information returned by the
+.PN XGetFeedbackControl
+function, use
+.PN XFreeFeedbackList .
+.sM
+.FD 0
+void XFreeFeedbackList(\fIlist\fP\^)
+.br
+ XFeedbackState *\fIlist\fP\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies the pointer to the
+.PN XFeedbackState
+structure returned by
+a previous call to
+.PN XGetFeedbackControl .
+.LP
+.eM
+.PN XFreeFeedbackList
+frees the list of feedback control information.
+.sp
+.LP
+To change the settings of a feedback on an extension device, use
+.PN XChangeFeedbackControl .
+This function modifies the current control values of the specified feedback
+using information passed in the appropriate
+.PN XFeedbackControl
+structure for the feedback.
+Which values are modified depends on the valuemask passed.
+.sM
+.FD 0
+int XChangeFeedbackControl(\fIdisplay\fP\^, \fIdevice\fP\^, \fIvaluemask\fP\^, \
+\fIvalue\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned long \fIvaluemask\fP\^;
+.br
+ XFeedbackControl *\fIvalue\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIvaluemask\fP 1i
+Specifies one value for each bit in the mask (least to most significant
+bit). The values are associated with the feedbacks for the specified
+device.
+.IP \fIvalue\fP 1i
+Specifies a pointer to the
+.PN XFeedbackControl
+structure.
+.LP
+.eM
+.PN XChangeFeedbackControl
+controls the device characteristics described by the
+.PN XFeedbackControl
+structure.
+There is an
+.PN XFeedbackControl
+structure for each class of feedback.
+These are of variable length, but the first
+three members are common to all and are as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+} XFeedbackControl;
+.De
+.LP
+.eM
+Feedback class
+.PN KbdFeedback
+controls feedbacks equivalent to those provided by the core keyboard using the
+.PN KbdFeedbackControl
+structure, which is defined as follows:.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int click;
+ int percent;
+ int pitch;
+ int duration;
+ int led_mask;
+ int led_value;
+ int key;
+ int auto_repeat_mode;
+} XKbdFeedbackControl;
+.De
+.LP
+.eM
+This class controls the device characteristics described by the
+.PN XKbdFeedbackControl
+structure. These include the key_click_percent,
+global_auto_repeat, and individual key auto-repeat. Valid modes
+are
+.PN AutoRepeatModeOn ,
+.PN AutoRepeatModeOff ,
+and
+.PN AutoRepeatModeDefault .
+.LP
+Valid masks are as follows:
+.sM
+.LP
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN DvKeyClickPercent
+T} T{
+(1L << 0)
+T}
+T{
+#define
+T} T{
+.PN DvPercent
+T} T{
+(1L << 1)
+T}
+T{
+#define
+T} T{
+.PN DvPitch
+T} T{
+(1L << 2)
+T}
+T{
+#define
+T} T{
+.PN DvDuration
+T} T{
+(1L << 3)
+T}
+T{
+#define
+T} T{
+.PN DvLed
+T} T{
+(1L << 4)
+T}
+T{
+#define
+T} T{
+.PN DvLedMode
+T} T{
+(1L << 5)
+T}
+T{
+#define
+T} T{
+.PN DvKey
+T} T{
+(1L << 6)
+T}
+T{
+#define
+T} T{
+.PN DvAutoRepeatMode
+T} T{
+(1L << 7)
+T}
+.TE
+.eM
+.LP
+Feedback class
+.PN PtrFeedback
+controls feedbacks equivalent to those provided by the core pointer using the
+.PN PtrFeedbackControl
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int accelNum;
+ int accelDenom;
+ int threshold;
+} XPtrFeedbackControl;
+.De
+.LP
+.eM
+Which values are modified depends on the valuemask passed.
+.LP
+Valid masks are as follows:
+.sM
+.LP
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN DvAccelnum
+T} T{
+(1L << 0)
+T}
+T{
+#define
+T} T{
+.PN DvAccelDenom
+T} T{
+(1L << 1)
+T}
+T{
+#define
+T} T{
+.PN DvThreshold
+T} T{
+(1L << 2)
+T}
+.TE
+.LP
+.eM
+The acceleration, expressed as a fraction, is a multiplier for movement.
+For example,
+specifying 3/1 means that the device moves three times as fast as normal.
+The fraction may be rounded arbitrarily by the X server.
+Acceleration takes effect only if the device moves more than threshold pixels at
+once and applies only to the amount beyond the value in the threshold argument.
+Setting a value to -1 restores the default.
+The values of the accelNumerator and threshold fields must be nonzero for
+the pointer values to be set.
+Otherwise, the parameters will be unchanged.
+Negative values generate a
+.PN BadValue
+error, as does a zero value
+for the accelDenominator field.
+.LP
+This request fails with a
+.PN BadMatch
+error if the specified device is not currently reporting relative motion.
+If a device that is capable of reporting both relative and absolute motion
+has its mode changed from
+.PN Relative
+to
+.PN Absolute
+by an
+.PN XSetDeviceMode
+request, valuator control values
+will be ignored by the server while the device is in that mode.
+.LP
+Feedback class
+.PN IntegerFeedback
+controls integer feedbacks displayed on input devices and are
+reported via the
+.PN IntegerFeedbackControl
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int int_to_display;
+} XIntegerFeedbackControl;
+.De
+.LP
+.eM
+Valid masks are as follows:
+.sM
+.LP
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN DvInteger
+T} T{
+(1L << 0)
+T}
+.TE
+.LP
+.eM
+Feedback class
+.PN StringFeedback
+controls string feedbacks displayed on input devices
+and reported via the
+.PN StringFeedbackControl
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int num_keysyms;
+ KeySym *syms_to_display;
+} XStringFeedbackControl;
+.De
+.LP
+.eM
+Valid masks are as follows:
+.sM
+.LP
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN DvString
+T} T{
+(1L << 0)
+T}
+.TE
+.LP
+.eM
+Feedback class
+.PN BellFeedback
+controls a bell on an input device and is reported via the
+.PN BellFeedbackControl
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int percent;
+ int pitch;
+ int duration;
+} XBellFeedbackControl;
+.De
+.LP
+.eM
+Valid masks are as follows:
+.sM
+.LP
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN DvPercent
+T} T{
+(1L << 1)
+T}
+T{
+#define
+T} T{
+.PN DvPitch
+T} T{
+(1L << 2)
+T}
+T{
+#define
+T} T{
+.PN DvDuration
+T} T{
+(1L << 3)
+T}
+.TE
+.LP
+.eM
+Feedback class
+.PN LedFeedback
+controls lights on an input device and are reported via the
+.PN LedFeedbackControl
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int led_mask;
+ int led_values;
+} XLedFeedbackControl;
+.De
+.LP
+.eM
+Valid masks are as follows:
+.sM
+.LP
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+#define
+T} T{
+.PN DvLed
+T} T{
+(1L << 4)
+T}
+T{
+#define
+T} T{
+.PN DvLedMode
+T} T{
+(1L << 5)
+T}
+.TE
+.LP
+.eM
+.PN XChangeFeedbackControl
+can generate
+.PN BadDevice ,
+.PN BadFeedBack ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 3
+Ringing a Bell on an Input Device
+.XS
+\*(SN Ringing a Bell on an Input Device
+.XE
+.LP
+To ring a bell on an extension input device, use
+.PN XDeviceBell .
+.sM
+.FD 0
+int XDeviceBell(\fIdisplay\fP\^, \fIdevice\fP\^, \fIfeedbackclass\fP\^, \
+\fIfeedbackid\fP\^, \fIpercent\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ XID \fIfeedbackclass\fP\^, \fIfeedbackid\fP\^;
+.br
+ int \fIpercent\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIfeedbackclass\fP 1i
+Specifies the feedbackclass. Valid values are
+.PN KbdFeedbackClass
+and
+.PN BellFeedbackClass .
+.IP \fIfeedbackid\fP 1i
+Specifies the ID of the feedback that has the bell.
+.IP \fIpercent\fP 1i
+Specifies the volume in the range -100 (quiet) to 100 percent (loud).
+.LP
+.eM
+.PN XDeviceBell
+is analogous to the core
+.PN XBell
+function. It rings the specified bell on the specified input device feedback,
+using the specified volume.
+The specified volume is relative to the base volume for the feedback.
+If the value for the percent argument is not in the range -100 to 100
+inclusive, a
+.PN BadValue
+error results.
+The volume at which the bell rings when the percent argument is nonnegative is:
+.LP
+.DS
+ base - [(base * percent) / 100] + percent
+.DE
+.LP
+The volume at which the bell rings
+when the percent argument is negative is:
+.LP
+.DS
+ base + [(base * percent) / 100]
+.DE
+.LP
+To change the base volume of the bell, use
+.PN XChangeFeedbackControl .
+.LP
+.PN XDeviceBell
+can generate
+.PN BadDevice
+and
+.PN BadValue
+errors.
+.NH 3
+Controlling Device Encoding
+.XS
+\*(SN Controlling Device Encoding
+.XE
+.LP
+To get the key mapping of an extension device that supports input class
+.PN Keys ,
+use
+.PN XGetDeviceKeyMapping .
+.sM
+.FD 0
+KeySym * XGetDeviceKeyMapping(\fIdisplay\fP\^, \fIdevice\fP\^, \fIfirst_keycode_wanted\fP\^, \fIkeycode_count\fP\^,
+.br
+ \fIkeysyms_per_keycode_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ KeyCode \fIfirst_keycode_wanted\fP\^;
+.br
+ int \fIkeycode_count\fP\^;
+.br
+ int *\fIkeysyms_per_keycode_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIfirst_keycode_wanted\fP 1i
+Specifies the first keycode that is to be returned.
+.IP \fIkeycode_count\fP 1i
+Specifies the number of keycodes that are to be returned.
+.IP \fIkeysyms_per_keycode_return\fP 1i
+Returns the number of keysyms per keycode.
+.LP
+.eM
+.PN XGetDeviceKeyMapping
+is analogous to the core
+.PN XGetKeyboardMapping
+function.
+It returns the symbols for the specified number of keycodes for the
+specified extension device.
+.LP
+.PN XGetDeviceKeyMapping
+returns the symbols for the
+specified number of keycodes for the
+specified extension device, starting with the specified keycode.
+The first_keycode_wanted must be greater than or equal to
+min-keycode as returned
+by the
+.PN XListInputDevices
+request (else a
+.PN BadValue
+error results). The following value:
+.DS
+first_keycode_wanted + keycode_count \- 1
+.DE
+.LP
+must be less than or equal to max-keycode as returned
+by the
+.PN XListInputDevices
+request (else a
+.PN BadValue
+error results).
+.LP
+The number of elements in the keysyms list is as follows:
+.DS
+keycode_count * keysyms_per_keycode_return
+.DE
+And KEYSYM number N (counting from zero) for keycode K has an index
+(counting from zero), in keysyms, of the following:
+.DS
+(K \- first_keycode_wanted) * keysyms_per_keycode_return + N
+.DE
+.LP
+The keysyms_per_keycode_return value is chosen arbitrarily by the server
+to be large enough to report all requested symbols.
+A special KEYSYM value of
+.PN NoSymbol
+is used to fill in unused elements for individual keycodes.
+.LP
+To free the data returned by this function, use
+.PN XFree .
+.LP
+If the specified device has not first been opened by this client via
+.PN XOpenDevice ,
+this request will fail with a
+.PN BadDevice
+error.
+If that device does not support input class
+.PN Keys ,
+this request will fail with a
+.PN BadMatch
+error.
+.LP
+.PN XGetDeviceKeyMapping
+can generate
+.PN BadDevice ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.sp
+.LP
+To change the keyboard mapping of an extension device that supports input class
+.PN Keys ,
+use
+.PN XChangeDeviceKeyMapping .
+.sM
+.FD )
+int
+XChangeDeviceKeyMapping(\fIdisplay\fP\^, \fIdevice\fP\^, \fIfirst_keycode\fP\^, \
+\fIkeysyms_per_keycode\fP\^, \fIkeysyms\fP\^,
+.br
+ \fInum_codes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIfirst_keycode\fP\^;
+.br
+ int \fIkeysyms_per_keycode\fP\^;
+.br
+ KeySym *\fIkeysyms\fP\^;
+.br
+ int \fInum_codes\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIfirst_keycode\fP 1i
+Specifies the first keycode that is to be changed.
+.IP \fIkeysyms_per_keycode\fP 1i
+Specifies the keysyms that are to be used.
+.IP \fIkeysyms\fP 1i
+Specifies a pointer to an array of keysyms.
+.IP \fInum_codes\fP 1i
+Specifies the number of keycodes that are to be changed.
+.LP
+.eM
+.PN XChangeDeviceKeyMapping
+is analogous to the core
+.PN XChangeKeyboardMapping
+function.
+It defines the symbols for the specified number of keycodes for the
+specified extension keyboard device.
+.LP
+If the specified device has not first been opened by this client via
+.PN XOpenDevice ,
+this request will fail with a
+.PN BadDevice
+error.
+If the specified device does not support input class
+.PN Keys ,
+this request will fail with a
+.PN BadMatch
+error.
+.LP
+The number of elements in the keysyms list must be a multiple of
+keysyms_per_keycode. Otherwise,
+.PN XChangeDeviceKeyMapping
+generates a
+.PN BadLength
+error.
+The specified first_keycode must be greater than or equal to
+the min_keycode value returned by the
+.PN ListInputDevices
+request, or this request will fail with a
+.PN BadValue
+error. In addition, if the following expression is not less than
+the max_keycode value returned by the
+.PN ListInputDevices
+request, the request will fail with a
+.PN BadValue
+error:
+.DS
+ first_keycode + (num_codes / keysyms_per_keycode) - 1
+.DE
+.LP
+.PN XChangeDeviceKeyMapping
+can generate
+.PN BadAlloc ,
+.PN BadDevice ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.sp
+.LP
+To obtain the keycodes that are used as modifiers on an
+extension device that supports input class
+.PN Keys ,
+use
+.PN XGetDeviceModifierMapping .
+.sM
+.FD 0
+XModifierKeymap * XGetDeviceModifierMapping(\fIdisplay\fP\^, \fIdevice\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.LP
+.eM
+.PN XGetDeviceModifierMapping
+is analogous to the core
+.PN XGetModifierMapping
+function.
+The
+.PN XGetDeviceModifierMapping
+function returns a newly created
+.PN XModifierKeymap
+structure that contains the keys being used as
+modifiers for the specified device.
+The structure should be freed after use with
+.PN XFreeModifierMapping .
+If only zero values appear in the set for any modifier,
+that modifier is disabled.
+.LP
+.PN XGetDeviceModifierMapping
+can generate
+.PN BadDevice
+and
+.PN BadMatch
+errors.
+.sp
+.LP
+To set which keycodes are to be used as modifiers for an extension device, use
+.PN XSetDeviceModifierMapping .
+.sM
+.FD 0
+int XSetDeviceModifierMapping(\fIdisplay\fP\^, \fIdevice\fP\^, \fImodmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ XModifierKeymap *\fImodmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fImodmap\fP 1i
+Specifies a pointer to the
+.PN XModifierKeymap
+structure.
+.LP
+.eM
+.PN XSetDeviceModifierMapping
+is analogous to the core
+.PN XSetModifierMapping
+function.
+The
+.PN XSetDeviceModifierMapping
+function specifies the keycodes of the keys, if any,
+that are to be used as modifiers. A zero value means
+that no key should be used. No two arguments can have the same nonzero
+keycode value. Otherwise,
+.PN XSetDeviceModifierMapping
+generates a
+.PN BadValue
+error.
+There are eight modifiers, and the modifiermap member of the
+.PN XModifierKeymap
+structure contains eight sets of max_keypermod
+keycodes, one for each modifier in the order
+.PN Shift ,
+.PN Lock ,
+.PN Control ,
+.PN Mod1 ,
+.PN Mod2 ,
+.PN Mod3 ,
+.PN Mod4 ,
+and
+.PN Mod5 .
+Only nonzero keycodes have meaning in each set, and zero keycodes
+are ignored.
+In addition, all of the nonzero keycodes must be in the range specified by
+min_keycode and max_keycode reported by the
+.PN XListInputDevices
+function.
+Otherwise,
+.PN XSetModifierMapping
+generates a
+.PN BadValue
+error.
+No keycode may appear twice in the entire map.
+Otherwise, it generates a
+.PN BadValue
+error.
+.LP
+A X server can impose restrictions on how modifiers can be changed,
+for example,
+if certain keys do not generate up transitions in hardware or if multiple
+modifier keys are not supported.
+If some such restriction is violated,
+the status reply is
+.PN MappingFailed ,
+and none of the modifiers are changed.
+If the new keycodes specified for a modifier differ from those
+currently defined and any (current or new) keys for that modifier are
+in the logically down state,
+the status reply is
+.PN MappingBusy ,
+and none of the modifiers are changed.
+.PN XSetModifierMapping
+generates a
+.PN DeviceMappingNotify
+event on a
+.PN MappingSuccess
+status.
+.LP
+.PN XSetDeviceModifierMapping
+can generate
+.PN BadAlloc ,
+.PN BadDevice ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 3
+Controlling Button Mapping
+.XS
+\*(SN Controlling Button Mapping
+.XE
+.LP
+To set the mapping of the buttons on an extension device, use
+.PN XSetDeviceButtonMapping .
+.sM
+.FD 0
+int XSetDeviceButtonMapping(\fIdisplay\fP\^, \fIdevice\fP\^, \fImap\fP\^, \fInmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned char \fImap\fP\^[];
+.br
+ int \fInmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fImap\fP 1i
+Specifies the mapping list.
+.IP \fInmap\fP 1i
+Specifies the number of items in the mapping list.
+.LP
+.eM
+.PN XSetDeviceButtonMapping
+sets the mapping of the buttons on an extension device.
+If it succeeds, the X server generates a
+.PN DeviceMappingNotify
+event, and
+.PN XSetDeviceButtonMapping
+returns
+.PN MappingSuccess .
+Elements of the list are indexed starting from one.
+The length of the list must be the same as
+.PN XGetDeviceButtonMapping
+would return, or a
+.PN BadValue
+error results.
+The index is a button number, and the element of the list
+defines the effective number.
+A zero element disables a button, and elements are not restricted in
+value by the number of physical buttons.
+However, no two elements can have the same nonzero value, or a
+.PN BadValue
+error results.
+If any of the buttons to be altered are logically in the down state,
+.PN XSetDeviceButtonMapping
+returns
+.PN MappingBusy ,
+and the mapping is not changed.
+.LP
+.PN XSetDeviceButtonMapping
+can generate
+.PN BadDevice ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.sp
+.LP
+To get the button mapping, use
+.PN XGetDeviceButtonMapping .
+.sM
+.FD 0
+int XGetDeviceButtonMapping(\fIdisplay\fP\^, \fIdevice\fP\^, \fImap_return\fP\^, \fInmap\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ unsigned char \fImap_return\fP\^[];
+.br
+ int \fInmap\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fImap_return\fP 1i
+Specifies the mapping list.
+.IP \fInmap\fP 1i
+Specifies the number of items in the mapping list.
+.LP
+.eM
+.PN XGetDeviceButtonMapping
+returns the current mapping of the specified extension device.
+Elements of the list are indexed starting from one.
+.PN XGetDeviceButtonMapping
+returns the number of physical buttons actually on the pointer.
+The nominal mapping for the buttons is the identity mapping: map[i]=i.
+The nmap argument specifies the length of the array where the button
+mapping is returned, and only the first nmap elements are returned
+in map_return.
+.LP
+.PN XGetDeviceButtonMapping
+can generate
+.PN BadDevice
+and
+.PN BadMatch
+errors.
+.NH 3
+Obtaining the State of a Device
+.XS
+\*(SN Obtaining the State of a Device
+.XE
+.LP
+To obtain information that describes the state of the keys, buttons, and
+valuators of an extension device, use
+.PN XQueryDeviceState .
+.sM
+.FD 0
+XDeviceState * XQueryDeviceState(\fIdisplay\fP\^, \fIdevice\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.LP
+.eM
+.PN XQueryDeviceState
+returns a pointer to an
+.PN XDeviceState
+structure, which points to a list of
+structures that describe the state of the keys, buttons, and valuators
+on the device:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID device_id;
+ int num_classes;
+ XInputClass *data;
+} XDeviceState;
+.De
+.LP
+.eM
+The structures are of variable length, but the first
+two members are common to all and are as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+} XInputClass;
+.De
+.LP
+.eM
+The class member contains a class identifier. This identifier can be
+compared with constants defined in the file
+.Pn < X11/extensions/XI.h >.
+Currently defined constants are:
+.PN KeyClass ,
+.PN ButtonClass ,
+and
+.PN ValuatorClass .
+.LP
+The length member contains the length of the structure and can be used
+by clients to traverse the list.
+.LP
+The
+.PN XValuatorState
+structure describes the current state of the valuators
+on the device.
+The num_valuators member contains the number of valuators
+on the device.
+The mode member is a mask whose bits report the data mode
+and other state information for the device.
+The following bits are currently defined:
+.DS 0
+.TA .5i 1.5i 2.5i
+.ta .5i 1.5i 2.5i
+ DeviceMode 1 << 0 Relative = 0, Absolute = 1
+ ProximityState 1 << 1 InProximity = 0, OutOfProximity = 1
+.DE
+The valuators member contains a pointer to an array of integers that
+describe the current value of the valuators.
+If the mode is
+.PN Relative ,
+these values are undefined.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ unsigned char num_valuators;
+ unsigned char mode;
+ int *valuators;
+} XValuatorState;
+.De
+.LP
+.eM
+The
+.PN XKeyState
+structure describes the current state of the keys
+on the device. Byte N (from 0) contains the
+bits for key 8N to 8N + 7 with the least significant bit in the
+byte representing key 8N.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_keys;
+ char keys[32];
+} XKeyState;
+.De
+.LP
+.eM
+The
+.PN XButtonState
+structure describes the current state of the buttons
+on the device. Byte N (from 0) contains the bits for button 8N to 8N + 7
+with the least significant bit in the
+byte representing button 8N.
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_buttons;
+ char buttons[32];
+} XButtonState;
+.De
+.LP
+.eM
+.PN XQueryDeviceState
+can generate
+.PN BadDevice
+errors.
+.sp
+.LP
+To free the data returned by this function, use
+.PN XFreeDeviceState .
+.sM
+.FD 0
+void XFreeDeviceState(\fIstate\fP\^)
+.br
+ XDeviceState *state;
+.FN
+.IP \fIstate\fP 1i
+Specifies the pointer to the
+.PN XDeviceState
+data returned by a previous call to
+.PN XQueryDeviceState .
+.LP
+.eM
+.PN XFreeDeviceState
+frees the device state data.
+.NH 2
+Events
+.XS
+\*(SN Events
+.XE
+.LP
+The input extension creates input events analogous to the core input events.
+These extension input events are generated by manipulating one of the
+extension input devices.
+The remainder of this section discusses the following X Input Extension
+event topics:
+.IP \(bu 5
+Event types
+.IP \(bu 5
+Event classes
+.IP \(bu 5
+Event structures
+.NH 3
+Event Types
+.XS
+\*(SN Event Types
+.XE
+.LP
+Event types are integer numbers that a client can use to determine what
+kind of event it has received. The client compares the type field of
+the event structure with known event types to make this determination.
+.LP
+The core input event types are constants and are defined in the header file
+.Pn < X11/X.h >.
+Extension event types are not constants. Instead, they
+are dynamically allocated by the extension's request to the X server
+when the extension is initialized. Because of this, extension event
+types must be obtained by the client from the server.
+.LP
+The client program determines the event type for an extension event by using
+the information returned by the
+.PN XOpenDevice
+request.
+This type can then be used for comparison with the type field
+of events received by the client.
+.LP
+Extension events propagate up the window hierarchy in the same manner
+as core events. If a window is not interested in an extension event,
+it usually propagates to the closest ancestor that is interested,
+unless the dont_propagate list prohibits it.
+Grabs of extension devices may alter the set of windows that receive a particular
+extension event.
+.LP
+The following table lists the event category and its associated event
+type or types.
+.TS
+lw(2.5i) lw(2.5i).
+_
+.sp 6p
+\fBEvent Category Event Type\fP
+.sp 6p
+_
+T{
+Device key
+T} T{
+.PN DeviceKeyPress
+T}
+ T{
+.PN DeviceKeyRelease
+T}
+.sp 3p
+T{
+Device motion
+T} T{
+.PN DeviceButtonPress
+T}
+ T{
+.PN DeviceButtonRelease
+T}
+ T{
+.PN DeviceMotionNotify
+T}
+.sp 3p
+T{
+Device input focus
+T} T{
+.PN DeviceFocusIn
+T}
+ T{
+.PN DeviceFocusOut
+T}
+.sp 3p
+T{
+Device state notification
+T} T{
+.PN DeviceStateNotify
+T}
+.sp 3p
+T{
+Device proximity
+T} T{
+.PN ProximityIn
+T}
+ T{
+.PN ProximityOut
+T}
+.sp 3p
+T{
+Device mapping
+T} T{
+.PN DeviceMappingNotify
+T}
+.sp 3p
+T{
+Device change
+T} T{
+.PN ChangeDeviceNotify
+T}
+.sp 6p
+_
+.TE
+.NH 3
+Event Classes
+.XS
+\*(SN Event Classes
+.XE
+.LP
+Event classes are integer numbers that are used in the same way as the
+core event masks. They are used by a client program to indicate to the
+server which events that client program wishes to receive.
+.LP
+The core input event masks are constants and are defined in the header file
+.Pn < X11/X.h >.
+Extension event classes are not constants. Instead, they are dynamically
+allocated by the extension's request to the X server
+when the extension is initialized. Because of this, extension event
+classes must be obtained by the client from the server.
+.LP
+The event class for an extension event and device is obtained from
+information returned by the
+.PN XOpenDevice
+function.
+This class can then be used in an
+.PN XSelectExtensionEvent
+request to ask that events of that type from that device be sent to
+the client program.
+.LP
+For
+.PN DeviceButtonPress
+events, the client may specify whether
+or not an implicit passive grab should be done when the button is
+pressed. If the client wants to guarantee that it will receive a
+.PN DeviceButtonRelease
+event for each
+.PN DeviceButtonPress
+event it receives, it should specify the
+.PN DeviceButtonPressGrab
+class in addition to the
+.PN DeviceButtonPress
+class.
+This restricts the client in that only one client at a time
+may request
+.PN DeviceButtonPress
+events from the same device and
+window if any client specifies this class.
+.LP
+If any client has specified the
+.PN DeviceButtonPressGrab
+class, any requests by any other client that specify the same device
+and window and specify either
+.PN DeviceButtonPress
+or
+.PN DeviceButtonPressGrab
+will cause an
+.PN Access
+error to be generated.
+.LP
+If only the
+.PN DeviceButtonPress
+class is specified, no implicit passive grab will be done when a button
+is pressed on the device.
+Multiple clients may use this class to specify the same device and
+window combination.
+.LP
+The client may also select
+.PN DeviceMotion
+events only when a button is down.
+It does this by specifying the event classes
+.PN DeviceButton1Motion
+through
+.PN DeviceButton5Motion .
+An input device will support only
+as many button motion classes as it has buttons.
+.NH 3
+Event Structures
+.XS
+\*(SN Event Structures
+.XE
+.LP
+Each extension event type has a corresponding structure declared in
+.Pn < X11/extensions/XInput.h >.
+All event structures have the following common members:
+.IP type 1i
+Set to the event type number that uniquely identifies it. For example,
+when the X server reports a
+.PN DeviceKeyPress
+event to a client application, it sends an
+.PN XDeviceKeyPressEvent
+structure.
+.IP serial 1i
+Set from the serial number reported in the protocol but expanded from the
+16-bit least significant bits to a full 32-bit value.
+.IP send_event 1i
+Set to
+.PN True
+if the event came from an
+.PN XSendEvent
+request.
+.IP display 1i
+Set to a pointer to a structure that defines the display
+on which the event was read.
+.LP
+Extension event structures report the current position of the X pointer.
+In addition, if the device reports motion data and is reporting absolute data,
+the current value of any valuators the device contains is also reported.
+.NH 4
+Device Key Events
+.XS
+\*(SN Device Key Events
+.XE
+.LP
+Key events from extension devices contain all the information that is
+contained in a key event from the X keyboard. In addition, they contain
+a device ID and report the current value of any valuators on the device,
+if that device is reporting absolute data.
+If data for more than six valuators is being reported, more than one
+key event will be sent.
+The axes_count member contains the number of axes that are being
+reported. The server sends as many of these events as are
+needed to report the device data. Each event contains the total number
+of axes reported in the axes_count member and the first axis reported
+in the current event in the first_axis member.
+If the device supports input class
+.PN Valuators ,
+but is not reporting absolute mode data,
+the axes_count member contains zero (0).
+.LP
+The location reported in
+the x, y and x_root, y_root members is the location of the core X pointer.
+.LP
+The
+.PN XDeviceKeyEvent
+structure is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed */
+ Bool send_event; /* true if from SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ XID deviceid;
+ Window root; /* root window event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* x, y coordinates in event window */
+ int x_root; /* coordinates relative to root */
+ int y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int keycode; /* detail */
+ Bool same_screen; /* same screen flag */
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+} XDeviceKeyEvent;
+
+typedef XDeviceKeyEvent XDeviceKeyPressedEvent;
+typedef XDeviceKeyEvent XDeviceKeyReleasedEvent;
+.De
+.eM
+.NH 4
+Device Button Events
+.XS
+\*(SN Device Button Events
+.XE
+.LP
+Button events from extension devices contain all the information that is
+contained in a button event from the X pointer. In addition, they contain
+a device ID and report the current value of any valuators on the device
+if that device is reporting absolute data.
+If data for more than six valuators is being reported, more than one
+button event may be sent.
+The axes_count member contains the number of axes that are being
+reported. The server sends as many of these events as are
+needed to report the device data. Each event contains the total number
+of axes reported in the axes_count member and the first axis reported
+in the current event in the first_axis member.
+If the device supports input class
+.PN Valuators ,
+but is not reporting absolute mode data,
+the axes_count member contains zero (0).
+.LP
+The location reported in
+the x, y and x_root, y_root members is the location of the core X pointer.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ XID deviceid;
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* x, y coordinates in event window */
+ int x_root; /* coordinates relative to root */
+ int y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int button; /* detail */
+ Bool same_screen; /* same screen flag */
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+} XDeviceButtonEvent;
+
+typedef XDeviceButtonEvent XDeviceButtonPressedEvent;
+typedef XDeviceButtonEvent XDeviceButtonReleasedEvent;
+.De
+.eM
+.NH 4
+Device Motion Events
+.XS
+\*(SN Device Motion Events
+.XE
+.LP
+Motion events from extension devices contain all the information that is
+contained in a motion event from the X pointer. In addition, they contain
+a device ID and report the current value of any valuators on the device.
+.LP
+The location reported in
+the x, y and x_root, y_root members is the location of the core X pointer,
+and so is 2-dimensional.
+.LP
+Extension motion devices may report motion data for a variable number of
+axes.
+The axes_count member contains the number of axes that are being
+reported. The server sends as many of these events as are
+needed to report the device data. Each event contains the total number
+of axes reported in the axes_count member and the first axis reported
+in the current event in the first_axis member.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ XID deviceid;
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* x, y coordinates in event window */
+ int x_root; /* coordinates relative to root */
+ int y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ char is_hint; /* detail */
+ Bool same_screen; /* same screen flag */
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+} XDeviceMotionEvent;
+.De
+.eM
+.NH 4
+Device Focus Events
+.XS
+\*(SN Device Focus Events
+.XE
+.LP
+These events are equivalent to the core focus events.
+They contain the same information, with the addition
+of a device ID to identify which device has had a focus change,
+and a timestamp.
+.LP
+.PN DeviceFocusIn
+and
+.PN DeviceFocusOut
+events are generated for
+focus changes of extension devices in the same manner as core focus
+events are generated.
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window it is reported relative to */
+ XID deviceid;
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
+ * NotifyPointerRoot, NotifyDetailNone
+ */
+ Time time;
+} XDeviceFocusChangeEvent;
+
+typedef XDeviceFocusChangeEvent XDeviceFocusInEvent;
+typedef XDeviceFocusChangeEvent XDeviceFocusOutEvent;
+.De
+.eM
+.NH 4
+Device StateNotify Event
+.XS
+\*(SN Device StateNotify Event
+.XE
+.LP
+This event is analogous to the core keymap event but
+reports the current state of the device for each
+input class that it supports.
+It is generated after every
+.PN DeviceFocusIn
+event and
+.PN EnterNotify
+event and is delivered to clients who have selected
+.PN XDeviceStateNotify
+events.
+.LP
+If the device supports input class
+.PN Valuators ,
+the mode member in the
+.PN XValuatorStatus
+structure is a bitmask that reports the device mode,
+proximity state, and other state information.
+The following bits are currently defined:
+.DS 0
+.TA .5i 1.5i
+.ta .5i 1.5i
+ 0x01 Relative = 0, Absolute = 1
+ 0x02 InProximity = 0, OutOfProximity = 1
+.DE
+.LP
+If the device supports more valuators than can be reported in a single
+.PN XEvent ,
+multiple
+.PN XDeviceStateNotify
+events will be generated.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+} XInputClass;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ XID deviceid;
+ Time time;
+ int num_classes;
+ char data[64];
+} XDeviceStateNotifyEvent;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ unsigned char num_valuators;
+ unsigned char mode;
+ int valuators[6];
+} XValuatorStatus;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_keys;
+ char keys[32];
+} XKeyStatus;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_buttons;
+ char buttons[32];
+} XButtonStatus;
+.De
+.eM
+.NH 4
+Device Mapping Event
+.XS
+\*(SN Device Mapping Event
+.XE
+.LP
+This event is equivalent to the core
+.PN MappingNotify
+event.
+It notifies client programs when the mapping of keys,
+modifiers, or buttons on an extension device has changed.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type;
+ unsigned long serial;
+ Bool send_event;
+ Display *display;
+ Window window;
+ XID deviceid;
+ Time time;
+ int request;
+ int first_keycode;
+ int count;
+} XDeviceMappingEvent;
+.De
+.eM
+.NH 4
+ChangeDeviceNotify Event
+.XS
+\*(SN ChangeDeviceNotify Event
+.XE
+.LP
+This event has no equivalent in the core protocol. It notifies client
+programs when one of the core devices has been changed.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type;
+ unsigned long serial;
+ Bool send_event;
+ Display *display;
+ Window window;
+ XID deviceid;
+ Time time;
+ int request;
+} XChangeDeviceNotifyEvent;
+.De
+.eM
+.NH 4
+Proximity Events
+.XS
+\*(SN Proximity Events
+.XE
+.LP
+These events have no equivalent in the core protocol. Some input
+devices such as graphics tablets or touchscreens may send these
+events to indicate that a stylus has moved into or out of contact
+with a positional sensing surface.
+.LP
+The event contains the current value of any valuators on the device
+if that device is reporting absolute data.
+If data for more than six valuators is being reported, more than one
+proximity event may be sent.
+The axes_count member contains the number of axes that are being
+reported. The server sends as many of these events as are
+needed to report the device data. Each event contains the total number
+of axes reported in the axes_count member and the first axis reported
+in the current event in the first_axis member.
+If the device supports input class
+.PN Valuators ,
+but is not reporting absolute mode data,
+the axes_count member contains zero (0).
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type; /* ProximityIn or ProximityOut */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ XID deviceid;
+ Window root;
+ Window subwindow;
+ Time time;
+ int x, y;
+ int x_root, y_root;
+ unsigned int state;
+ Bool same_screen;
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+} XProximityNotifyEvent;
+
+typedef XProximityNotifyEvent XProximityInEvent;
+typedef XProximityNotifyEvent XProximityOutEvent;
+.De
+.eM
+.NH 2
+Event Handling Functions
+.XS
+\*(SN Event Handling Functions
+.XE
+.LP
+This section discusses the X Input Extension
+event handling functions that allow you to:
+.IP \(bu 5
+Determine the extension version
+.IP \(bu 5
+List the available devices
+.IP \(bu 5
+Enable and disable extension devices
+.IP \(bu 5
+Change the mode of a device
+.IP \(bu 5
+Initialize valuators on an input device
+.IP \(bu 5
+Get input device controls
+.IP \(bu 5
+Change input device controls
+.IP \(bu 5
+Select extension device events
+.IP \(bu 5
+Determine selected device events
+.IP \(bu 5
+Control event propogation
+.IP \(bu 5
+Send an event
+.IP \(bu 5
+Get motion history
+.NH 3
+Determining the Extension Version
+.XS
+\*(SN Determining the Extension Version
+.XE
+.LP
+.sM
+.FD 0
+XExtensionVersion * XGetExtensionVersion(\fIdisplay\fP\^, \fIname\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char *\fIname\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIname\fP 1i
+Specifies the name of the desired extension.
+.LP
+.eM
+.PN XGetExtensionVersion
+allows a client to determine whether a server supports
+the desired version of the input extension.
+.LP
+The
+.PN XExtensionVersion
+structure returns information about the version of the extension
+supported by the server and is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ Bool present;
+ short major_version;
+ short minor_version;
+} XExtensionVersion;
+.De
+.LP
+.eM
+The major and minor versions can be compared with constants defined in
+the header file
+.Pn < X11/extensions/XI.h >.
+Each version is a superset of the previous versions.
+.LP
+You should use
+.PN XFree
+to free the data returned by this function.
+.NH 3
+Listing Available Devices
+.XS
+\*(SN Listing Available Devices
+.XE
+.LP
+A client program that wishes to access a specific device
+must first determine whether that device is connected to the X server. This
+is done through the
+.PN XListInputDevices
+function, which will return a list of all devices that can be opened
+by the X server. The client program can use one
+of the names defined in the
+.Pn < X11/extensions/XI.h >
+header file in an
+.PN XInternAtom
+request to determine the device type of the desired device. This type
+can then be compared with the device types returned by the
+.PN XListInputDevices
+request.
+.LP
+.sM
+.FD 0
+XDeviceInfo * XListInputDevices(\fIdisplay\fP\^, \fIndevices\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ int *\fIndevices\fP\^; /* RETURN */
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIndevices\fP 1i
+Specifies the address of a variable into which the server
+can return the number of input devices available to the X server.
+.LP
+.eM
+.PN XListInputDevices
+allows a client to determine which devices
+are available for X input and information about those devices.
+An array of
+.PN XDeviceInfo
+structures is returned, with one element in the array for each device.
+The number of devices is returned in the ndevices argument.
+.LP
+The X pointer device and X keyboard device are reported, as well as
+all available extension input devices. The use member of the
+.PN XDeviceInfo
+structure specifies the current use of the device.
+If the value of this member is
+.PN IsXPointer ,
+the device is the X pointer device. If the value is
+.PN IsXKeyboard ,
+the device is the X keyboard device. If the value is
+.PN IsXExtensionDevice ,
+the device is available for use as an extension input device.
+.LP
+Each
+.PN XDeviceInfo
+entry contains a pointer to a list of structures
+that describe the characteristics of each class
+of input supported by that device. The num_classes member
+contains the number of entries in that list.
+.LP
+If the device supports input class
+.PN Valuators ,
+one of the structures pointed to by the
+.PN XDeviceInfo
+structure will be an
+.PN XValuatorInfo
+structure. The axes member of that structure
+contains the address of an array of
+.PN XAxisInfo
+structures.
+There is one element in this array for each axis of motion
+reported by the device. The number of elements in this
+array is contained in the num_axes element of the
+.PN XValuatorInfo
+structure.
+The size of the motion buffer for the device is
+reported in the motion_buffer member of the
+.PN XValuatorInfo
+structure.
+.LP
+The
+.PN XDeviceInfo
+structure is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct _XDeviceInfo {
+ XID id;
+ Atom type;
+ char *name;
+ int num_classes;
+ int use;
+ XAnyClassPtr inputclassinfo;
+} XDeviceInfo;
+.De
+.LP
+.eM
+The structures pointed to by the
+.PN XDeviceInfo
+structure are defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct _XKeyInfo {
+ XID class;
+ int length;
+ unsigned short min_keycode;
+ unsigned short max_keycode;
+ unsigned short num_keys;
+} XKeyInfo;
+
+typedef struct _XButtonInfo {
+ XID class;
+ int length;
+ short num_buttons;
+} XButtonInfo;
+
+typedef struct _XValuatorInfo {
+ XID class;
+ int length;
+ unsigned char num_axes;
+ unsigned char mode;
+ unsigned long motion_buffer;
+ XAxisInfoPtr axes;
+} XValuatorInfo;
+.De
+.LP
+.eM
+The
+.PN XAxisInfo
+structure pointed to by the
+.PN XValuatorInfo
+structure is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct _XAxisInfo {
+ int resolution;
+ int min_value;
+ int max_value;
+} XAxisInfo;
+.De
+.LP
+.eM
+The following atom names are defined in the
+.Pn < X11/extensions/XI.h >
+header file.
+.Ds 0
+.TA 2i
+.ta 2i
+\s-1MOUSE QUADRATURE
+TABLET SPACEBALL
+KEYBOARD DATAGLOVE
+TOUCHSCREEN EYETRACKER
+TOUCHPAD CURSORKEYS
+BUTTONBOX FOOTMOUSE
+BARCODE ID_MODULE
+KNOB_BOX ONE_KNOB
+TRACKBALL NINE_KNOB\s+1
+.De
+.LP
+These names can be used in an
+.PN XInternAtom
+request to return an atom that can be used for comparison
+with the type member of the
+.PN XDeviceInfo
+structure.
+.LP
+.PN XListInputDevices
+returns NULL if there are no input devices to list.
+.sp
+.LP
+To free the data returned by
+.PN XListInputDevices ,
+use
+.PN XFreeDeviceList .
+.sp
+.LP
+.sM
+.FD 0
+void XFreeDeviceList(\fIlist\fP\^)
+.br
+ XDeviceInfo *\fIlist\fP\^;
+.FN
+.IP \fIlist\fP 1i
+Specifies the pointer to the
+.PN XDeviceInfo
+array returned by a previous call to
+.PN XListInputDevices .
+.LP
+.eM
+.PN XFreeDeviceList
+frees the list of input device information.
+.NH 3
+Enabling and Disabling Extension Devices
+.XS
+\*(SN Enabling and Disabling Extension Devices
+.XE
+.LP
+Each client program that wishes to access an extension device must request
+that the server open that device by calling the
+.PN XOpenDevice
+function.
+.sM
+.FD 0
+XDevice * XOpenDevice(\fIdisplay\fP\^, \fIdevice_id\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XID \fIdevice_id\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice_id\fP 1i
+Specifies the ID that uniquely identifies the device to be opened.
+This ID is obtained from the
+.PN XListInputDevices
+request.
+.LP
+.eM
+.PN XOpenDevice
+opens the device for the requesting client and, on success, returns an
+.PN XDevice
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID device_id;
+ int num_classes;
+ XInputClassInfo *classes;
+} XDevice;
+.De
+.LP
+.eM
+The
+.PN XDevice
+structure contains a pointer to an array of
+.PN XInputClassInfo
+structures. Each element in that array
+contains information about events of a particular input class supported
+by the input device.
+.LP
+The
+.PN XInputClassInfo
+structure is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ unsigned char input_class;
+ unsigned char event_type_base;
+} XInputClassInfo;
+.De
+.LP
+.eM
+A client program can determine the event
+type and event class for a given event by using macros defined by the
+input extension. The name of the macro corresponds to the desired event,
+and the macro is passed the structure that describes the device from which
+input is desired, for example:
+.LP
+.DS 0
+.TA .5i
+.ta .5i
+ DeviceKeyPress(XDevice *device, event_type, event_class)
+.DE
+.LP
+The macro will fill in the values of the event class to be used in an
+.PN XSelectExtensionEvent
+request to select the event and the event type to be used in comparing
+with the event types of events received via
+.PN XNextEvent .
+.LP
+.PN XOpenDevice
+can generate
+.PN BadDevice
+errors.
+.sp
+.LP
+Before terminating, the client program should request that the server close
+the device by calling the
+.PN XCloseDevice
+function.
+.sM
+.FD 0
+int XCloseDevice(\fIdisplay\fP\^, \fIdevice\fP\^)
+.br
+ Display *display;
+.br
+ XDevice *device;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the device to be closed.
+.LP
+.eM
+.PN XCloseDevice
+closes the device for the requesting client and frees the associated
+.PN XDevice
+structure.
+.LP
+A client may open the same extension device more than once. Requests
+after the first successful one return an additional
+.PN XDevice
+structure
+with the same information as the first, but otherwise have no effect.
+A single
+.PN XCloseDevice
+request will terminate that client's access to the device.
+.LP
+Closing a device releases any active or passive grabs the requesting client
+has established. If the device is frozen only by an active grab of the
+requesting client, any queued events are released.
+.LP
+If a client program terminates without closing a device, the server will
+automatically close that device on behalf of the client. This does not
+affect any other clients that may be accessing that device.
+.LP
+.PN XCloseDevice
+can generate
+.PN BadDevice
+errors.
+.NH 3
+Changing the Mode of a Device
+.XS
+\*(SN Changing the Mode of a Device
+.XE
+.LP
+Some devices are capable of reporting either relative or absolute motion
+data.
+To change the mode of a device from relative to absolute, use
+.PN XSetDeviceMode .
+.sM
+.FD 0
+int XSetDeviceMode(\fIdisplay\fP\^, \fIdevice\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the device whose mode should be changed.
+.IP \fImode\fP 1i
+Specifies the mode. You can pass
+.PN Absolute
+or
+.PN Relative .
+.LP
+.eM
+.PN XSetDeviceMode
+allows a client to request the server to change the mode of a
+device that is capable of reporting either absolute positional data or relative
+motion data. If the device is invalid or if the client has not previously
+requested that the server open the device via an
+.PN XOpenDevice
+request, this request will fail with a
+.PN BadDevice
+error.
+If the device does not support input class
+.PN Valuators
+or if it is not capable of reporting the specified mode,
+the request will fail with a
+.PN BadMatch
+error.
+.LP
+This request will fail and return
+.PN DeviceBusy
+if another client has already opened the device and requested a different mode.
+.LP
+.PN XSetDeviceMode
+can generate
+.PN BadDevice ,
+.PN BadMatch ,
+.PN BadMode ,
+and
+.PN DeviceBusy
+errors.
+.NH 3
+Initializing Valuators on an Input Device
+.XS
+\*(SN Initializing Valuators on an Input Device
+.XE
+.LP
+Some devices that report absolute positional data can be initialized to a
+starting value. Devices that are capable of reporting relative motion or
+absolute positional data may require that their valuators be initialized
+to a starting value after the mode of the device is changed to
+.PN Absolute .
+.sp
+.LP
+To initialize the valuators on such a device, use
+.PN XSetDeviceValuators .
+.sM
+.FD 0
+Status XSetDeviceValuators(\fIdisplay\fP\^, \fIdevice\fP\^, \fIvaluators\fP\^, \
+\fIfirst_valuator\fP\^, \fInum_valuators\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int *\fIvaluators\fP\^, \fIfirst_valuator\fP\^, \fInum_valuators\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the device whose valuators should be initialized.
+.IP \fIvaluators\fP 1i
+Specifies the values to which each valuator should be set.
+.IP \fIfirst_valuator\fP 1i
+Specifies the first valuator to be set.
+.IP \fInum_valuators\fP 1i
+Specifies the number of valuators to be set.
+.LP
+.eM
+.PN XSetDeviceValuators
+initializes the specified valuators on the specified extension
+input device. Valuators are numbered beginning with zero. Only the valuators
+in the range specified by first_valuator and num_valuators are set.
+A
+.PN BadValue
+error results if the number of valuators supported by the device
+is less than the following expression:
+.DS 0
+.TA .5i
+.ta .5i
+ first_valuator + num_valuators
+.DE
+.LP
+If the request succeeds,
+.PN Success
+is returned. If the specified device is grabbed by some other client,
+the request will fail and a status of
+.PN AlreadyGrabbed
+will be returned.
+.LP
+.PN XSetDeviceValuators
+can generate
+.PN BadDevice ,
+.PN BadLength ,
+.PN BadMatch ,
+and
+.PN BadValue
+errors.
+.NH 3
+Getting Input Device Controls
+.XS
+\*(SN Getting Input Device Controls
+.XE
+.LP
+Some input devices support various configuration controls
+that can be queried or changed by clients. The set of supported
+controls will vary from one input device to another. Requests
+to manipulate these controls will fail if either the target
+X server or the target input device does not support the
+requested device control.
+.LP
+Each device control has a unique identifier. Information
+passed with each device control varies in length and is mapped
+by data structures unique to that device control.
+.sp
+.LP
+To query a device control, use
+.PN XGetDeviceControl .
+.sM
+.FD 0
+XDeviceControl * XGetDeviceControl(\fIdisplay\fP\^, \fIdevice\fP\^, \fIcontrol\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIcontrol\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the device whose configuration control status is to be returned.
+.IP \fIcontrol\fP 1i
+Identifies the specific device control to be queried.
+.LP
+.eM
+.PN XGetDeviceControl
+returns the current state of the specified device control.
+If the target X server does not support that device control, a
+.PN BadValue
+error is returned.
+If the specified device does not support that device control, a
+.PN BadMatch
+error
+is returned.
+.LP
+If the request is successful, a pointer to a generic
+.PN XDeviceState
+structure is returned. The information returned varies according
+to the specified control and is mapped by a structure appropriate
+for that control.
+The first two members are common to all device controls
+and are defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID control;
+ int length;
+} XDeviceState;
+\fP
+.De
+.LP
+.eM
+The control may be compared to constants defined in the file
+.Pn < X11/extensions/XI.h >.
+Currently defined device controls include DEVICE_RESOLUTION.
+.LP
+The information returned for the DEVICE_RESOLUTION control is
+defined in the
+.PN XDeviceResolutionState
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID control;
+ int length;
+ int num_valuators;
+ int *resolutions;
+ int *min_resolutions;
+ int *max_resolutions;
+} XDeviceResolutionState;
+.De
+.LP
+.eM
+This device control returns a list of valuators and the range of
+valid resolutions allowed for each. Valuators are numbered
+beginning with zero (0). Resolutions for all valuators on the device are
+returned. For each valuator i on the device, resolutions[i] returns
+the current setting of the resolution, min_resolutions[i] returns
+the minimum valid setting, and max_resolutions[i] returns the
+maximum valid setting.
+.LP
+When this control is specified,
+.PN XGetDeviceControl
+fails with a
+.PN BadMatch
+error if the specified device has no valuators.
+.LP
+.PN XGetDeviceControl
+can generate
+.PN BadMatch
+and
+.PN BadValue
+errors.
+.NH 3
+Changing Input Device Controls
+.XS
+\*(SN Changing Input Device Controls
+.XE
+.LP
+Some input devices support various configuration controls
+that can be changed by clients. Typically, this would be
+done to initialize the device to a known state or configuration.
+The set of supported controls will vary from one input device
+to another. Requests to manipulate these controls will fail if
+either the target X server or the target input device does not
+support the requested device control. Setting the device control
+will also fail if the target input device is grabbed by another
+client or is open by another client and has been set to a conflicting
+state.
+.LP
+Each device control has a unique identifier. Information
+passed with each device control varies in length and is mapped
+by data structures unique to that device control.
+.sp
+.LP
+To change a device control, use
+.PN XChangeDeviceControl .
+.sM
+.FD 0
+Status XChangeDeviceControl(\fIdisplay\fP\^, \fIdevice\fP\^, \fIcontrol\fP\^, \
+\fIvalue\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ int \fIcontrol\fP\^;
+.br
+ XDeviceControl *\fIvalue\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the device whose configuration control status is to be modified.
+.IP \fIcontrol\fP 1i
+Identifies the specific device control to be changed.
+.IP \fIvalue\fP 1i
+Specifies a pointer to an
+.PN XDeviceControl
+structure that describes which control is to be changed
+and how it is to be changed.
+.LP
+.eM
+.PN XChangeDeviceControl
+changes the current state of the specified device control.
+If the target X server does not support that device control, a
+.PN BadValue
+error is returned.
+If the specified device does not support that device control, a
+.PN BadMatch
+error is returned.
+If another client has the target device grabbed, a status of
+.PN AlreadyGrabbed
+is returned.
+If another client has the device open and has set it to a
+conflicting state, a status of
+.PN DeviceBusy
+is returned.
+If the request fails for any reason, the device control will not
+be changed.
+.LP
+If the request is successful, the device control will be changed
+and a status of
+.PN Success
+is returned.
+The information passed varies according to the specified control
+and is mapped by a structure appropriate for that control.
+The first two members are common to all device controls:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID control;
+ int length;
+} XDeviceControl;
+.De
+.LP
+.eM
+The control may be set using constants defined in the
+.Pn < X11/extensions/XI.h >
+header file.
+Currently defined device controls include DEVICE_RESOLUTION.
+.LP
+The information that can be changed by the DEVICE_RESOLUTION
+control is defined in the
+.PN XDeviceResolutionControl
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ XID control;
+ int length;
+ int first_valuator;
+ int num_valuators;
+ int *resolutions;
+} XDeviceResolutionControl;
+.De
+.LP
+.eM
+This device control changes the resolution of the specified
+valuators on the specified extension input device. Valuators
+are numbered beginning with zero. Only the valuators in the range
+specified by first_valuator and num_valuators are set. A value
+of -1 in the resolutions list indicates that the resolution for
+this valuator is not to be changed. The num_valuators member
+specifies the number of valuators in the resolutions list.
+.LP
+When this control is specified,
+.PN XChangeDeviceControl
+fails with a
+.PN BadMatch
+error if the specified device has no valuators.
+If a resolution is specified that is not within the range of valid values
+(as returned by
+.PN XGetDeviceControl ),
+.PN XChangeDeviceControl
+fails with a
+.PN BadValue
+error.
+A
+.PN BadValue
+error results if the number of valuators supported by the device
+is less than the following expression:
+.LP
+.DS 0
+.TA .5i
+.ta .5i
+ first_valuator + num_valuators,
+.DE
+.LP
+.PN XChangeDeviceControl
+can generate
+.PN BadMatch
+and
+.PN BadValue
+errors.
+.NH 3
+Selecting Extension Device Events
+.XS
+\*(SN Selecting Extension Device Events
+.XE
+.LP
+To select device input events, use
+.PN XSelectExtensionEvent .
+The parameters passed are a pointer to
+a list of classes that define the desired event types and devices, a count
+of the number of elements in the list, and the ID of the window from which
+events are desired.
+.sM
+.FD 0
+int XSelectExtensionEvent(\fIdisplay\fP\^, \fIwindow\fP\^, \fIevent_list\fP\^, \
+\fIevent_count\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwindow\fP 1i
+Specifies the ID of the window from which the client wishes to receive events.
+.IP \fIevent_list\fP 1i
+Specifies a pointer to an array of event classes
+that specify which events are desired.
+.IP \fIevent_count\fP 1i
+Specifies the number of elements in the event_list.
+.LP
+.eM
+.PN XSelectExtensionEvent
+requests the server to send events that match the events and
+devices described by the event list and that come from the requested
+window.
+The elements of the
+.PN XEventClass
+array are the event_class values
+obtained by invoking a macro with the pointer to an
+.PN XDevice
+structure returned by the
+.PN XOpenDevice
+request.
+For example, the
+.PN DeviceKeyPress
+macro would return the
+.PN XEventClass
+for
+.PN DeviceKeyPress
+events from the specified device if it were invoked in the following form:
+.DS 0
+.TA .5i
+.ta .5i
+ DeviceKeyPress (XDevice *device, event_type, event_class)
+.DE
+.LP
+Macros are defined for the following event classes:
+.DS 0
+.PN DeviceKeyPress
+.PN DeviceKeyRelease
+.PN DeviceButtonPress
+.PN DeviceButtonRelease
+.PN DeviceMotionNotify
+.PN DeviceFocusIn
+.PN DeviceFocusOut
+.PN ProximityIn
+.PN ProximityOut
+.PN DeviceStateNotify
+.PN DeviceMappingNotify
+.PN ChangeDeviceNotify
+.PN DevicePointerMotionHint
+.PN DeviceButton1Motion
+.PN DeviceButton2Motion
+.PN DeviceButton3Motion,
+.PN DeviceButton4Motion
+.PN DeviceButton5Motion
+.PN DeviceButtonMotion,
+.PN DeviceOwnerGrabButton
+.PN DeviceButtonPressGrab
+.DE
+.LP
+To get the next available event from within a client program, use the core
+.PN XNextEvent
+function. This returns the next event whether it
+came from a core device or an extension device.
+.LP
+Succeeding
+.PN XSelectExtensionEvent
+requests using event classes
+for the same device as was specified on a previous request will replace
+the previous set of selected events from that device with the new set.
+.LP
+.PN XSelectExtensionEvent
+can generate
+.PN BadAccess ,
+.PN BadClass ,
+.PN BadLength ,
+and
+.PN BadWindow
+errors.
+.NH 3
+Determining Selected Device Events
+.XS
+\*(SN Determining Selected Device Events
+.XE
+.LP
+To determine which extension events are currently selected from a given
+window, use
+.PN XGetSelectedExtensionEvents .
+.sM
+.FD 0
+int XGetSelectedExtensionEvents(\fIdisplay\fP\^, \fIwindow\fP\^, \
+\fIthis_client_count\fP\^, \fIthis_client\fP\^,
+.br
+ \fIall_clients_count\fP\^, \fIall_clients\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ int *\fIthis_client_count\fP\^; /* RETURN */
+.br
+ XEventClass **\fIthis_client\fP\^; /* RETURN */
+.br
+ int *\fIall_clients_count\fP\^; /* RETURN */
+.br
+ XEventClass **\fIall_clients\fP\^; /* RETURN */
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwindow\fP 1i
+Specifies the ID of the window from which the client wishes to receive events.
+.IP \fIthis_client_count\fP 1i
+Returns the number of elements in the this_client list.
+.IP \fIthis_client\fP 1i
+Returns a list of
+.PN XEventClasses
+that specify which events are
+selected by this client.
+.IP \fIall_clients_count\fP 1i
+Returns the number of elements in the all_clients list.
+.IP \fIall_clients\fP 1i
+Returns a list of
+.PN XEventClasses
+that specify which events are
+selected by all clients.
+.LP
+.eM
+.PN XGetSelectedExtensionEvents
+returns pointers to two event class arrays.
+One lists the extension events selected by this client from
+the specified window. The other lists the extension events selected by
+all clients from the specified window. This information is analogous
+to that returned in your_event_mask and all_event_masks of the
+.PN XWindowAttributes
+structure when an
+.PN XGetWindowAttributes
+request is made.
+To free the two arrays returned by this function, use
+.PN XFree .
+.LP
+.PN XGetSelectedExtensionEvents
+can generate
+.PN BadWindow
+errors.
+.NH 3
+Controlling Event Propagation
+.XS
+\*(SN Controlling Event Propagation
+.XE
+.LP
+Extension events propagate up the window hierarchy in the same manner
+as core events. If a window is not interested in an extension event,
+it usually propagates to the closest ancestor that is interested,
+unless the dont_propagate list prohibits it.
+Grabs of extension devices may alter the set of windows that receive a
+particular extension event.
+.LP
+Client programs may control event propagation through the use
+of the following two functions:
+.PN XChangeDeviceDontPropagateList
+and
+.PN XGetDeviceDontPropagateList .
+.LP
+.sM
+.FD 0
+int XChangeDeviceDontPropagateList(\fIdisplay\fP\^, \fIwindow\fP\^, \
+\fIevent_count\fP\^, \fIevents\fP\^, \fImode\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.br
+ XEventClass *\fIevents\fP\^;
+.br
+ int \fImode\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwindow\fP 1i
+Specifies the desired window.
+.IP \fIevent_count\fP 1i
+Specifies the number of elements in the events list.
+.IP \fIevents\fP 1i
+Specifies a pointer to the list of XEventClasses.
+.IP \fImode\fP 1i
+Specifies the mode. You can pass
+.PN AddToList
+or
+.PN DeleteFromList .
+.LP
+.eM
+.PN XChangeDeviceDontPropagateList
+adds an event to or deletes an event from the do_not_propagate list
+of extension events for the specified window.
+There is one list per window, and the list remains for the life of the window.
+The list is not altered if a client that changed the list terminates.
+.LP
+Suppression of event propagation is not allowed for all events. If a
+specified
+.PN XEventClass
+is invalid because suppression of that event is not allowed, a
+.PN BadClass
+error results.
+.LP
+.PN XChangeDeviceDontPropagateList
+can generate
+.PN BadClass ,
+.PN BadMode ,
+and
+.PN BadWindow
+errors.
+.sp
+.LP
+.sM
+.FD 0
+XEventClass * XGetDeviceDontPropagateList(\fIdisplay\fP\^, \fIwindow\fP\^, \fIevent_count\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ int *\fIevent_count\fP\^; /*RETURN */
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwindow\fP 1i
+Specifies the desired window.
+.IP \fIevent_count\fP 1i
+Returns the number of elements in the array returned by this function.
+.LP
+.eM
+.PN XGetDeviceDontPropagateList
+allows a client to determine the do_not_propagate list of extension events
+for the specified window.
+It returns an array of
+.PN XEventClass ,
+each
+.PN XEventClass
+representing a device/event type pair.
+To free the data returned by this function, use
+.PN XFree .
+.LP
+.PN XGetDeviceDontPropagateList
+can generate
+.PN BadWindow
+errors.
+.NH 3
+Sending an Event
+.XS
+\*(SN Sending an Event
+.XE
+.LP
+To send an extension event to another client, use
+.PN XSendExtensionEvent .
+.sM
+.FD 0
+int XSendExtensionEvent(\fIdisplay\fP\^, \fIdevice\fP\^, \fIwindow\fP\^, \
+\fIpropagate\fP\^, \fIevent_count\fP\^, \fIevent_list\fP\^, \fIevent\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Window \fIwindow\fP\^;
+.br
+ Bool \fIpropagate\fP\^;
+.br
+ int \fIevent_count\fP\^;
+.br
+ XEventClass *\fIevent_list\fP\^;
+.br
+ XEvent *\fIevent\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the device whose ID is recorded in the event.
+.IP \fIwindow\fP 1i
+Specifies the destination window ID. You can pass a window ID,
+.PN PointerWindow
+or
+.PN InputFocus .
+.IP \fIpropagate\fP 1i
+Specifies a boolean value that is either
+.PN True
+or
+.PN False .
+.IP \fIevent_count\fP 1i
+Specifies the number of elements in the event_list array.
+.IP \fIevent_list\fP 1i
+Specifies a pointer to an array of
+.PN XEventClass .
+.IP \fIevent\fP 1i
+Specifies a pointer to the event that is to be sent.
+.LP
+.eM
+.PN XSendExtensionEvent
+identifies the destination window, determines which clients should receive
+the specified event, and ignores any active grabs.
+It requires a list of
+.PN XEventClass
+to be specified.
+These are obtained by opening an input device with the
+.PN XOpenDevice
+request.
+.LP
+.PN XSendExtensionEvent
+uses the window argument to identify the destination window as follows:
+.IP \(bu 5
+If you pass
+.PN PointerWindow ,
+the destination window is the window that contains the pointer.
+.IP \(bu 5
+If you pass
+.PN InputFocus
+and if the focus window contains the pointer,
+the destination window is the window that contains the pointer.
+If the focus window does not contain the pointer,
+the destination window is the focus window.
+.LP
+To determine which clients should receive the specified events,
+.PN XSendExtensionEvent
+uses the propagate argument as follows:
+.IP \(bu 5
+If propagate is
+.PN False ,
+the event is sent to every client selecting
+from the destination window
+any of the events specified in the event_list array.
+.IP \(bu 5
+If propagate is
+.PN True
+and no clients have selected from the destination window
+any of the events specified in the event_list array, the destination is
+replaced with the closest ancestor of destination for which some client
+has selected one of the specified events and for which no intervening
+window has that event in its do_not_propagate mask.
+If no such window exists,
+or if the window is an ancestor of the focus window, and
+.PN InputFocus
+was originally specified as the destination,
+the event is not sent to any clients. Otherwise, the event is reported to every
+client selecting on the final destination any of the events specified
+in event_list.
+.LP
+The event in the
+.PN XEvent
+structure must be one of the events defined
+by the input extension, so that the X server can correctly byte swap the
+contents as necessary. The contents of the event are otherwise unaltered
+and unchecked by the X server except to force send_event to
+.PN True
+in the forwarded event and to set the sequence number in the event correctly.
+.LP
+.PN XSendExtensionEvent
+returns zero if the conversion-to-wire protocol failed;
+otherwise, it returns nonzero.
+.LP
+.PN XSendExtensionEvent
+can generate
+.PN BadClass ,
+.PN BadDevice ,
+.PN BadValue ,
+and
+.PN BadWindow
+errors.
+.NH 3
+Getting Motion History
+.XS
+\*(SN Getting Motion History
+.XE
+.LP
+.sM
+.FD 0
+XDeviceTimeCoord * XGetDeviceMotionEvents(\fIdisplay\fP\^, \fIdevice\fP\^, \fIstart\fP\^, \
+\fIstop\fP\^, \fInevents_return\fP\^, \fImode_return\fP\^,
+.br
+ \fIaxis_count_return\fP\^);
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XDevice *\fIdevice\fP\^;
+.br
+ Time \fIstart\fP\^, \fIstop\fP\^;
+.br
+ int *\fInevents_return\fP\^;
+.br
+ int *\fImode_return\fP\^;
+.br
+ int *\fIaxis_count_return\fP\^;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIdevice\fP 1i
+Specifies the desired device.
+.IP \fIstart\fP 1i
+Specifies the start time.
+.IP \fIstop\fP 1i
+Specifies the stop time.
+.IP \fInevents_return\fP 1i
+Returns the number of positions in the motion buffer returned
+for this request.
+.IP \fImode_return\fP 1i
+Returns the mode of the nevents information.
+The mode will be one of the following:
+.PN Absolute
+or
+.PN Relative .
+.IP \fIaxis_count_return\fP 1i
+Returns the number of axes reported in each of the positions returned.
+.LP
+.eM
+.PN XGetDeviceMotionEvents
+returns all positions in the device's motion history buffer
+that fall between the specified start and stop times inclusive.
+If the start time is in the future or is later than the stop time,
+no positions are returned.
+.LP
+The return type for this function is an
+.PN XDeviceTimeCoord
+structure, which is defined as follows:
+.LP
+.sM
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ Time time;
+ unsigned int *data;
+} XDeviceTimeCoord;
+.De
+.LP
+.eM
+The data member is a pointer to an array of data items.
+Each item is of type int, and there is one data item
+per axis of motion reported by the device.
+The number of axes reported by the device is returned in the axis_count variable.
+.LP
+The value of the data items depends on the mode of the device.
+The mode is returned in the mode variable. If the
+mode is
+.PN Absolute ,
+the data items are the raw values generated by the device.
+These may be scaled by the client program using the
+maximum values that the device can generate for each axis of motion
+that it reports. The maximum value for each axis is reported in
+the max_val member of the
+.PN XAxisInfo
+structure, which is part of the information returned by the
+.PN XListInputDevices
+request.
+.LP
+If the mode is
+.PN Relative ,
+the data items are the relative values generated by the device.
+The client program must choose an initial
+position for the device and maintain a current position by
+accumulating these relative values.
+.LP
+Consecutive calls to
+.PN XGetDeviceMotionEvents
+can return data of different modes, that is, if
+some client program has changed the mode of the device via an
+.PN XSetDeviceMode
+request.
+.LP
+.PN XGetDeviceMotionEvents
+can generate
+.PN BadDevice
+and
+.PN BadMatch
+errors.
+.sp
+.LP
+To free the data returned by
+.PN XGetDeviceMotionEvents ,
+use
+.PN XFreeDeviceMotionEvents .
+.LP
+.sM
+.FD 0
+void XFreeDeviceMotionEvents(\fIevents\fP\^)
+.br
+ XDeviceTimeCoord *\fIevents\fP\^;
+.FN
+.IP \fIevents\fP 1i
+Specifies the pointer to the
+.PN XDeviceTimeCoord
+array returned by a previous call to
+.PN XGetDeviceMotionEvents .
+.LP
+.eM
+.PN XFreeDeviceMotionEvents
+frees the specified array of motion information.
+.\"
+.\"
+.\" Appendicies
+.\"
+.\"
+.bp
+.ds Ch ~
+.sp 1
+.ce 3
+\s+1\fBAppendix A\fP\s-1
+.XS
+\*(SN Appendix A
+.XE
+.LP
+The following information is contained in the \fB<X11/extensions/XInput.h>\fP
+and \fB<X11/extensions/XI.h>\fP header files:
+.DS 0
+.cs CW 20
+\fC
+.ps 8
+/* Definitions used by the library and client */
+
+#ifndef _XINPUT_H_
+#define _XINPUT_H_
+
+#ifndef _XLIB_H_
+#include <X11/Xlib.h>
+#endif
+
+#ifndef _XI_H_
+#include "XI.h"
+#endif
+
+#define _deviceKeyPress 0
+#define _deviceKeyRelease 1
+
+#define _deviceButtonPress 0
+#define _deviceButtonRelease 1
+
+#define _deviceMotionNotify 0
+
+#define _deviceFocusIn 0
+#define _deviceFocusOut 1
+
+#define _proximityIn 0
+#define _proximityOut 1
+
+#define _deviceStateNotify 0
+#define _deviceMappingNotify 1
+#define _changeDeviceNotify 2
+
+#define FindTypeAndClass(d, type, class, classid, offset) \
+ { int i; XInputClassInfo *ip; \
+ type = 0; class = 0; \
+ for (i=0, ip= ((XDevice *) d)->classes; \
+ i< ((XDevice *) d)->num_classes; \
+ i++, ip++) \
+ if (ip->input_class == classid) \
+ {type = ip->event_type_base + offset; \
+ class = ((XDevice *) d)->device_id << 8 | type;}}
+
+#define DeviceKeyPress(d, type, class) \
+ FindTypeAndClass(d, type, class, KeyClass, _deviceKeyPress)
+
+#define DeviceKeyRelease(d, type, class) \
+ FindTypeAndClass(d, type, class, KeyClass, _deviceKeyRelease)
+
+#define DeviceButtonPress(d, type, class) \
+ FindTypeAndClass(d, type, class, ButtonClass, _deviceButtonPress)
+
+#define DeviceButtonRelease(d, type, class) \
+ FindTypeAndClass(d, type, class, ButtonClass, _deviceButtonRelease)
+
+#define DeviceMotionNotify(d, type, class) \
+ FindTypeAndClass(d, type, class, ValuatorClass, _deviceMotionNotify)
+
+#define DeviceFocusIn(d, type, class) \
+ FindTypeAndClass(d, type, class, FocusClass, _deviceFocusIn)
+
+#define DeviceFocusOut(d, type, class) \
+ FindTypeAndClass(d, type, class, FocusClass, _deviceFocusOut)
+
+#define ProximityIn(d, type, class) \
+ FindTypeAndClass(d, type, class, ProximityClass, _proximityIn)
+
+#define ProximityOut(d, type, class) \
+ FindTypeAndClass(d, type, class, ProximityClass, _proximityOut)
+
+#define DeviceStateNotify(d, type, class) \
+ FindTypeAndClass(d, type, class, OtherClass, _deviceStateNotify)
+
+#define DeviceMappingNotify(d, type, class) \
+ FindTypeAndClass(d, type, class, OtherClass, _deviceMappingNotify)
+
+#define ChangeDeviceNotify(d, type, class) \
+ FindTypeAndClass(d, type, class, OtherClass, _changeDeviceNotify)
+
+#define DevicePointerMotionHint(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _devicePointerMotionHint;}
+
+#define DeviceButton1Motion(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceButton1Motion;}
+
+#define DeviceButton2Motion(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceButton2Motion;}
+
+#define DeviceButton3Motion(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceButton3Motion;}
+
+#define DeviceButton4Motion(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceButton4Motion;}
+
+#define DeviceButton5Motion(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceButton5Motion;}
+
+#define DeviceButtonMotion(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceButtonMotion;}
+
+#define DeviceOwnerGrabButton(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceOwnerGrabButton;}
+
+#define DeviceButtonPressGrab(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _deviceButtonGrab;}
+
+#define NoExtensionEvent(d, type, class) \
+ { class = ((XDevice *) d)->device_id << 8 | _noExtensionEvent;}
+
+#define BadDevice(dpy, error) _xibaddevice(dpy, &error)
+
+#define BadClass(dpy, error) _xibadclass(dpy, &error)
+
+#define BadEvent(dpy, error) _xibadevent(dpy, &error)
+
+#define BadMode(dpy, error) _xibadmode(dpy, &error)
+
+#define DeviceBusy(dpy, error) _xidevicebusy(dpy, &error)
+
+/***************************************************************
+ *
+ * DeviceKey events. These events are sent by input devices that
+ * support input class Keys.
+ * The location of the X pointer is reported in the coordinate
+ * fields of the x,y and x_root,y_root fields.
+ *
+ */
+
+typedef struct
+ {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed */
+ Bool send_event; /* true if from SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ XID deviceid;
+ Window root; /* root window event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* x, y coordinates in event window */
+ int x_root; /* coordinates relative to root */
+ int y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int keycode; /* detail */
+ Bool same_screen; /* same screen flag */
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+ } XDeviceKeyEvent;
+
+typedef XDeviceKeyEvent XDeviceKeyPressedEvent;
+typedef XDeviceKeyEvent XDeviceKeyReleasedEvent;
+
+/*******************************************************************
+ *
+ * DeviceButton events. These events are sent by extension devices
+ * that support input class Buttons.
+ *
+ */
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ XID deviceid;
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* x, y coordinates in event window */
+ int x_root; /* coordinates relative to root */
+ int y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int button; /* detail */
+ Bool same_screen; /* same screen flag */
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+ } XDeviceButtonEvent;
+
+typedef XDeviceButtonEvent XDeviceButtonPressedEvent;
+typedef XDeviceButtonEvent XDeviceButtonReleasedEvent;
+
+/*******************************************************************
+ *
+ * DeviceMotionNotify event. These events are sent by extension devices
+ * that support input class Valuators.
+ *
+ */
+
+typedef struct
+ {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ XID deviceid;
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* x, y coordinates in event window */
+ int x_root; /* coordinates relative to root */
+ int y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ char is_hint; /* detail */
+ Bool same_screen; /* same screen flag */
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+ } XDeviceMotionEvent;
+
+/*******************************************************************
+ *
+ * DeviceFocusChange events. These events are sent when the focus
+ * of an extension device that can be focused is changed.
+ *
+ */
+
+typedef struct
+ {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ XID deviceid;
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonLinear,NotifyNonLinearVirtual, NotifyPointer,
+ * NotifyPointerRoot, NotifyDetailNone
+ */
+ Time time;
+ } XDeviceFocusChangeEvent;
+
+typedef XDeviceFocusChangeEvent XDeviceFocusInEvent;
+typedef XDeviceFocusChangeEvent XDeviceFocusOutEvent;
+
+/*******************************************************************
+ *
+ * ProximityNotify events. These events are sent by those absolute
+ * positioning devices that are capable of generating proximity information.
+ *
+ */
+
+typedef struct
+ {
+ int type; /* ProximityIn or ProximityOut */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ XID deviceid;
+ Window root;
+ Window subwindow;
+ Time time;
+ int x, y;
+ int x_root, y_root;
+ unsigned int state;
+ Bool same_screen;
+ unsigned int device_state; /* device key or button mask */
+ unsigned char axes_count;
+ unsigned char first_axis;
+ int axis_data[6];
+ } XProximityNotifyEvent;
+typedef XProximityNotifyEvent XProximityInEvent;
+typedef XProximityNotifyEvent XProximityOutEvent;
+
+/*******************************************************************
+ *
+ * DeviceStateNotify events are generated on EnterWindow and FocusIn
+ * for those clients who have selected DeviceState.
+ *
+ */
+
+typedef struct
+ {
+ unsigned char class;
+ unsigned char length;
+ } XInputClass;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ XID deviceid;
+ Time time;
+ int num_classes;
+ char data[64];
+} XDeviceStateNotifyEvent;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ unsigned char num_valuators;
+ unsigned char mode;
+ int valuators[6];
+} XValuatorStatus;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_keys;
+ char keys[32];
+} XKeyStatus;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_buttons;
+ char buttons[32];
+} XButtonStatus;
+
+/*******************************************************************
+ *
+ * DeviceMappingNotify event. This event is sent when the key mapping,
+ * modifier mapping, or button mapping of an extension device is changed.
+ *
+ */
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* unused */
+ XID deviceid;
+ Time time;
+ int request; /* one of MappingModifier, MappingKeyboard,
+ MappingPointer */
+ int first_keycode;/* first keycode */
+ int count; /* defines range of change w. first_keycode*/
+} XDeviceMappingEvent;
+
+/*******************************************************************
+ *
+ * ChangeDeviceNotify event. This event is sent when an
+ * XChangeKeyboard or XChangePointer request is made.
+ *
+ */
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* unused */
+ XID deviceid;
+ Time time;
+ int request; /* NewPointer or NewKeyboard */
+} XChangeDeviceNotifyEvent;
+
+/*******************************************************************
+ *
+ * Control structures for input devices that support input class
+ * Feedback. These are used by the XGetFeedbackControl and
+ * XChangeFeedbackControl functions.
+ *
+ */
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+} XFeedbackState;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int click;
+ int percent;
+ int pitch;
+ int duration;
+ int led_mask;
+ int global_auto_repeat;
+ char auto_repeats[32];
+} XKbdFeedbackState;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int accelNum;
+ int accelDenom;
+ int threshold;
+} XPtrFeedbackState;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int resolution;
+ int minVal;
+ int maxVal;
+} XIntegerFeedbackState;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int max_symbols;
+ int num_syms_supported;
+ KeySym *syms_supported;
+} XStringFeedbackState;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int percent;
+ int pitch;
+ int duration;
+} XBellFeedbackState;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int led_values;
+ int led_mask;
+} XLedFeedbackState;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+} XFeedbackControl;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int accelNum;
+ int accelDenom;
+ int threshold;
+} XPtrFeedbackControl;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int click;
+ int percent;
+ int pitch;
+ int duration;
+ int led_mask;
+ int led_value;
+ int key;
+ int auto_repeat_mode;
+} XKbdFeedbackControl;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int num_keysyms;
+ KeySym *syms_to_display;
+} XStringFeedbackControl;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int int_to_display;
+} XIntegerFeedbackControl;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int percent;
+ int pitch;
+ int duration;
+} XBellFeedbackControl;
+
+typedef struct {
+ XID class;
+ int length;
+ XID id;
+ int led_mask;
+ int led_values;
+} XLedFeedbackControl;
+
+/*******************************************************************
+ *
+ * Device control structures.
+ *
+ */
+
+typedef struct {
+ XID control;
+ int length;
+} XDeviceControl;
+
+typedef struct {
+ XID control;
+ int length;
+ int first_valuator;
+ int num_valuators;
+ int *resolutions;
+} XDeviceResolutionControl;
+
+typedef struct {
+ XID control;
+ int length;
+ int num_valuators;
+ int *resolutions;
+ int *min_resolutions;
+ int *max_resolutions;
+} XDeviceResolutionState;
+
+/*******************************************************************
+ *
+ * An array of XDeviceList structures is returned by the
+ * XListInputDevices function. Each entry contains information
+ * about one input device. Among that information is an array of
+ * pointers to structures that describe the characteristics of
+ * the input device.
+ *
+ */
+
+typedef struct _XAnyClassinfo *XAnyClassPtr;
+
+typedef struct _XAnyClassinfo {
+ XID class;
+ int length;
+ } XAnyClassInfo;
+
+typedef struct _XDeviceInfo *XDeviceInfoPtr;
+
+typedef struct _XDeviceInfo
+ {
+ XID id;
+ Atom type;
+ char *name;
+ int num_classes;
+ int use;
+ XAnyClassPtr inputclassinfo;
+ } XDeviceInfo;
+
+typedef struct _XKeyInfo *XKeyInfoPtr;
+
+typedef struct _XKeyInfo
+ {
+ XID class;
+ int length;
+ unsigned short min_keycode;
+ unsigned short max_keycode;
+ unsigned short num_keys;
+ } XKeyInfo;
+
+typedef struct _XButtonInfo *XButtonInfoPtr;
+
+typedef struct _XButtonInfo {
+ XID class;
+ int length;
+ short num_buttons;
+ } XButtonInfo;
+
+typedef struct _XAxisInfo *XAxisInfoPtr;
+
+typedef struct _XAxisInfo {
+ int resolution;
+ int min_value;
+ int max_value;
+ } XAxisInfo;
+
+typedef struct _XValuatorInfo *XValuatorInfoPtr;
+
+typedef struct _XValuatorInfo
+ {
+ XID class;
+ int length;
+ unsigned char num_axes;
+ unsigned char mode;
+ unsigned long motion_buffer;
+ XAxisInfoPtr axes;
+ } XValuatorInfo;
+
+
+/*******************************************************************
+ *
+ * An XDevice structure is returned by the XOpenDevice function.
+ * It contains an array of pointers to XInputClassInfo structures.
+ * Each contains information about a class of input supported by the
+ * device, including a pointer to an array of data for each type of event
+ * the device reports.
+ *
+ */
+
+
+typedef struct {
+ unsigned char input_class;
+ unsigned char event_type_base;
+} XInputClassInfo;
+
+typedef struct {
+ XID device_id;
+ int num_classes;
+ XInputClassInfo *classes;
+} XDevice;
+
+
+/*******************************************************************
+ *
+ * The following structure is used to return information for the
+ * XGetSelectedExtensionEvents function.
+ *
+ */
+
+typedef struct {
+ XEventClass event_type;
+ XID device;
+} XEventList;
+
+/*******************************************************************
+ *
+ * The following structure is used to return motion history data from
+ * an input device that supports the input class Valuators.
+ * This information is returned by the XGetDeviceMotionEvents function.
+ *
+ */
+
+typedef struct {
+ Time time;
+ int *data;
+} XDeviceTimeCoord;
+
+
+/*******************************************************************
+ *
+ * Device state structure.
+ * This is returned by the XQueryDeviceState request.
+ *
+ */
+
+typedef struct {
+ XID device_id;
+ int num_classes;
+ XInputClass *data;
+} XDeviceState;
+
+/*******************************************************************
+ *
+ * Note that the mode field is a bitfield that reports the Proximity
+ * status of the device as well as the mode. The mode field should
+ * be OR'd with the mask DeviceMode and compared with the values
+ * Absolute and Relative to determine the mode, and should be OR'd
+ * with the mask ProximityState and compared with the values InProximity
+ * and OutOfProximity to determine the proximity state.
+ *
+ */
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ unsigned char num_valuators;
+ unsigned char mode;
+ int *valuators;
+} XValuatorState;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_keys;
+ char keys[32];
+} XKeyState;
+
+typedef struct {
+ unsigned char class;
+ unsigned char length;
+ short num_buttons;
+ char buttons[32];
+} XButtonState;
+
+/*******************************************************************
+ *
+ * Function definitions.
+ *
+ */
+
+_XFUNCPROTOBEGIN
+
+extern int XChangeKeyboardDevice(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */
+#endif
+);
+
+extern int XChangePointerDevice(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int /* xaxis */,
+ int /* yaxis */
+#endif
+);
+
+extern int XGrabDevice(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ Window /* grab_window */,
+ Bool /* ownerEvents */,
+ int /* event count */,
+ XEventClass* /* event_list */,
+ int /* this_device_mode */,
+ int /* other_devices_mode */,
+ Time /* time */
+#endif
+);
+
+extern int XUngrabDevice(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ Time /* time */
+#endif
+);
+
+extern int XGrabDeviceKey(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ unsigned int /* key */,
+ unsigned int /* modifiers */,
+ XDevice* /* modifier_device */,
+ Window /* grab_window */,
+ Bool /* owner_events */,
+ unsigned int /* event_count */,
+ XEventClass* /* event_list */,
+ int /* this_device_mode */,
+ int /* other_devices_mode */
+#endif
+);
+
+extern int XUngrabDeviceKey(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ unsigned int /* key */,
+ unsigned int /* modifiers */,
+ XDevice* /* modifier_dev */,
+ Window /* grab_window */
+#endif
+);
+
+extern int XGrabDeviceButton(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ unsigned int /* button */,
+ unsigned int /* modifiers */,
+ XDevice* /* modifier_device */,
+ Window /* grab_window */,
+ Bool /* owner_events */,
+ unsigned int /* event_count */,
+ XEventClass* /* event_list */,
+ int /* this_device_mode */,
+ int /* other_devices_mode */
+#endif
+);
+
+extern int XUngrabDeviceButton(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ unsigned int /* button */,
+ unsigned int /* modifiers */,
+ XDevice* /* modifier_dev */,
+ Window /* grab_window */
+#endif
+);
+
+extern int XAllowDeviceEvents(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int /* event_mode */,
+ Time /* time */
+#endif
+);
+
+extern int XGetDeviceFocus(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ Window* /* focus */,
+ int* /* revert_to */,
+ Time* /* time */
+#endif
+);
+
+extern int XSetDeviceFocus(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ Window /* focus */,
+ int /* revert_to */,
+ Time /* time */
+#endif
+);
+
+extern XFeedbackState *XGetFeedbackControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int* /* num_feedbacks */
+#endif
+);
+
+extern int XFreeFeedbackList(
+#if NeedFunctionPrototypes
+ XFeedbackState* /* list */
+#endif
+);
+
+extern int XChangeFeedbackControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ unsigned long /* mask */,
+ XFeedbackControl* /* f */
+#endif
+);
+
+extern int XDeviceBell(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ XID /* feedbackclass */,
+ XID /* feedbackid */,
+ int /* percent */
+#endif
+);
+
+extern KeySym *XGetDeviceKeyMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+#if NeedWidePrototypes
+ unsigned int /* first */,
+#else
+ KeyCode /* first */,
+#endif
+ int /* keycount */,
+ int* /* syms_per_code */
+#endif
+);
+
+extern int XChangeDeviceKeyMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int /* first */,
+ int /* syms_per_code */,
+ KeySym* /* keysyms */,
+ int /* count */
+#endif
+);
+
+extern XModifierKeymap *XGetDeviceModifierMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */
+#endif
+);
+
+extern int XSetDeviceModifierMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ XModifierKeymap* /* modmap */
+#endif
+);
+
+extern int XSetDeviceButtonMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ unsigned char* /* map[] */,
+ int /* nmap */
+#endif
+);
+
+extern int XGetDeviceButtonMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ unsigned char* /* map[] */,
+ unsigned int /* nmap */
+#endif
+);
+
+extern XDeviceState *XQueryDeviceState(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */
+#endif
+);
+
+extern int XFreeDeviceState(
+#if NeedFunctionPrototypes
+ XDeviceState* /* list */
+#endif
+);
+
+extern XExtensionVersion *XGetExtensionVersion(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* name */
+#endif
+);
+
+extern XDeviceInfo *XListInputDevices(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* ndevices */
+#endif
+);
+
+extern int XFreeDeviceList(
+#if NeedFunctionPrototypes
+ XDeviceInfo* /* list */
+#endif
+);
+
+extern XDevice *XOpenDevice(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* id */
+#endif
+);
+
+extern int XCloseDevice(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */
+#endif
+);
+
+extern int XSetDeviceMode(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int /* mode */
+#endif
+);
+
+extern int XSetDeviceValuators(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int* /* valuators */,
+ int /* first_valuator */,
+ int /* num_valuators */
+#endif
+);
+
+extern XDeviceControl *XGetDeviceControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int /* control */
+#endif
+);
+
+extern int XChangeDeviceControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ int /* control */,
+ XDeviceControl* /* d */
+#endif
+);
+
+extern int XSelectExtensionEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XEventClass* /* event_list */,
+ int /* count */
+#endif
+);
+
+extern int XGetSelectedExtensionEvents(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int* /* this_client_count */,
+ XEventClass** /* this_client_list */,
+ int* /* all_clients_count */,
+ XEventClass** /* all_clients_list */
+#endif
+);
+
+extern int XChangeDeviceDontPropagateList(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* window */,
+ int /* count */,
+ XEventClass* /* events */,
+ int /* mode */
+#endif
+);
+
+extern XEventClass *XGetDeviceDontPropagateList(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* window */,
+ int* /* count */
+#endif
+);
+
+extern Status XSendExtensionEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ Window /* dest */,
+ Bool /* prop */,
+ int /* count */,
+ XEventClass* /* list */,
+ XEvent* /* event */
+#endif
+);
+
+extern XDeviceTimeCoord *XGetDeviceMotionEvents(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XDevice* /* device */,
+ Time /* start */,
+ Time /* stop */,
+ int* /* nEvents */,
+ int* /* mode */,
+ int* /* axis_count */
+#endif
+);
+
+extern int XFreeDeviceMotionEvents(
+#if NeedFunctionPrototypes
+ XDeviceTimeCoord* /* events */
+#endif
+);
+
+extern int XFreeDeviceControl(
+#if NeedFunctionPrototypes
+ XDeviceControl* /* control */
+#endif
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XINPUT_H_ */
+
+/* Definitions used by the server, library and client */
+
+#ifndef _XI_H_
+
+#define _XI_H_
+
+#define sz_xGetExtensionVersionReq 8
+#define sz_xGetExtensionVersionReply 32
+#define sz_xListInputDevicesReq 4
+#define sz_xListInputDevicesReply 32
+#define sz_xOpenDeviceReq 8
+#define sz_xOpenDeviceReply 32
+#define sz_xCloseDeviceReq 8
+#define sz_xSetDeviceModeReq 8
+#define sz_xSetDeviceModeReply 32
+#define sz_xSelectExtensionEventReq 12
+#define sz_xGetSelectedExtensionEventsReq 8
+#define sz_xGetSelectedExtensionEventsReply 32
+#define sz_xChangeDeviceDontPropagateListReq 12
+#define sz_xGetDeviceDontPropagateListReq 8
+#define sz_xGetDeviceDontPropagateListReply 32
+#define sz_xGetDeviceMotionEventsReq 16
+#define sz_xGetDeviceMotionEventsReply 32
+#define sz_xChangeKeyboardDeviceReq 8
+#define sz_xChangeKeyboardDeviceReply 32
+#define sz_xChangePointerDeviceReq 8
+#define sz_xChangePointerDeviceReply 32
+#define sz_xGrabDeviceReq 20
+#define sz_xGrabDeviceReply 32
+#define sz_xUngrabDeviceReq 12
+#define sz_xGrabDeviceKeyReq 20
+#define sz_xGrabDeviceKeyReply 32
+#define sz_xUngrabDeviceKeyReq 16
+#define sz_xGrabDeviceButtonReq 20
+#define sz_xGrabDeviceButtonReply 32
+#define sz_xUngrabDeviceButtonReq 16
+#define sz_xAllowDeviceEventsReq 12
+#define sz_xGetDeviceFocusReq 8
+#define sz_xGetDeviceFocusReply 32
+#define sz_xSetDeviceFocusReq 16
+#define sz_xGetFeedbackControlReq 8
+#define sz_xGetFeedbackControlReply 32
+#define sz_xChangeFeedbackControlReq 12
+#define sz_xGetDeviceKeyMappingReq 8
+#define sz_xGetDeviceKeyMappingReply 32
+#define sz_xChangeDeviceKeyMappingReq 8
+#define sz_xGetDeviceModifierMappingReq 8
+#define sz_xSetDeviceModifierMappingReq 8
+#define sz_xSetDeviceModifierMappingReply 32
+#define sz_xGetDeviceButtonMappingReq 8
+#define sz_xGetDeviceButtonMappingReply 32
+#define sz_xSetDeviceButtonMappingReq 8
+#define sz_xSetDeviceButtonMappingReply 32
+#define sz_xQueryDeviceStateReq 8
+#define sz_xQueryDeviceStateReply 32
+#define sz_xSendExtensionEventReq 16
+#define sz_xDeviceBellReq 8
+#define sz_xSetDeviceValuatorsReq 8
+#define sz_xSetDeviceValuatorsReply 32
+#define sz_xGetDeviceControlReq 8
+#define sz_xGetDeviceControlReply 32
+#define sz_xChangeDeviceControlReq 8
+#define sz_xChangeDeviceControlReply 32
+
+#define INAME "XInputExtension"
+
+#define XI_KEYBOARD "KEYBOARD"
+#define XI_MOUSE "MOUSE"
+#define XI_TABLET "TABLET"
+#define XI_TOUCHSCREEN "TOUCHSCREEN"
+#define XI_TOUCHPAD "TOUCHPAD"
+#define XI_BARCODE "BARCODE"
+#define XI_BUTTONBOX "BUTTONBOX"
+#define XI_KNOB_BOX "KNOB_BOX"
+#define XI_ONE_KNOB "ONE_KNOB"
+#define XI_NINE_KNOB "NINE_KNOB"
+#define XI_TRACKBALL "TRACKBALL"
+#define XI_QUADRATURE "QUADRATURE"
+#define XI_ID_MODULE "ID_MODULE"
+#define XI_SPACEBALL "SPACEBALL"
+#define XI_DATAGLOVE "DATAGLOVE"
+#define XI_EYETRACKER "EYETRACKER"
+#define XI_CURSORKEYS "CURSORKEYS"
+#define XI_FOOTMOUSE "FOOTMOUSE"
+
+#define Dont_Check 0
+#define XInput_Initial_Release 1
+#define XInput_Add_XDeviceBell 2
+#define XInput_Add_XSetDeviceValuators 3
+#define XInput_Add_XChangeDeviceControl 4
+
+#define XI_Absent 0
+#define XI_Present 1
+
+#define XI_Initial_Release_Major 1
+#define XI_Initial_Release_Minor 0
+
+#define XI_Add_XDeviceBell_Major 1
+#define XI_Add_XDeviceBell_Minor 1
+
+#define XI_Add_XSetDeviceValuators_Major 1
+#define XI_Add_XSetDeviceValuators_Minor 2
+
+#define XI_Add_XChangeDeviceControl_Major 1
+#define XI_Add_XChangeDeviceControl_Minor 3
+
+#define DEVICE_RESOLUTION 1
+
+#define NoSuchExtension 1
+
+#define COUNT 0
+#define CREATE 1
+
+#define NewPointer 0
+#define NewKeyboard 1
+
+#define XPOINTER 0
+#define XKEYBOARD 1
+
+#define UseXKeyboard 0xFF
+
+#define IsXPointer 0
+#define IsXKeyboard 1
+#define IsXExtensionDevice 2
+
+#define AsyncThisDevice 0
+#define SyncThisDevice 1
+#define ReplayThisDevice 2
+#define AsyncOtherDevices 3
+#define AsyncAll 4
+#define SyncAll 5
+
+#define FollowKeyboard 3
+#define RevertToFollowKeyboard 3
+
+#define DvAccelNum (1L << 0)
+#define DvAccelDenom (1L << 1)
+#define DvThreshold (1L << 2)
+
+#define DvKeyClickPercent (1L<<0)
+#define DvPercent (1L<<1)
+#define DvPitch (1L<<2)
+#define DvDuration (1L<<3)
+#define DvLed (1L<<4)
+#define DvLedMode (1L<<5)
+#define DvKey (1L<<6)
+#define DvAutoRepeatMode (1L<<7)
+
+#define DvString (1L << 0)
+
+#define DvInteger (1L << 0)
+
+#define DeviceMode (1L << 0)
+#define Relative 0
+#define Absolute 1
+
+#define ProximityState (1L << 1)
+#define InProximity (0L << 1)
+#define OutOfProximity (1L << 1)
+
+#define AddToList 0
+#define DeleteFromList 1
+
+#define KeyClass 0
+#define ButtonClass 1
+#define ValuatorClass 2
+#define FeedbackClass 3
+#define ProximityClass 4
+#define FocusClass 5
+#define OtherClass 6
+
+#define KbdFeedbackClass 0
+#define PtrFeedbackClass 1
+#define StringFeedbackClass 2
+#define IntegerFeedbackClass 3
+#define LedFeedbackClass 4
+#define BellFeedbackClass 5
+
+#define _devicePointerMotionHint 0
+#define _deviceButton1Motion 1
+#define _deviceButton2Motion 2
+#define _deviceButton3Motion 3
+#define _deviceButton4Motion 4
+#define _deviceButton5Motion 5
+#define _deviceButtonMotion 6
+#define _deviceButtonGrab 7
+#define _deviceOwnerGrabButton 8
+#define _noExtensionEvent 9
+
+#define XI_BadDevice 0
+#define XI_BadEvent 1
+#define XI_BadMode 2
+#define XI_DeviceBusy 3
+#define XI_BadClass 4
+
+typedef unsigned long XEventClass;
+
+/*******************************************************************
+ *
+ * Extension version structure.
+ *
+ */
+
+typedef struct {
+ int present;
+ short major_version;
+ short minor_version;
+} XExtensionVersion;
+
+#endif /* _XI_H_ */
+\fP
+.DE
+.\" print Table of Contents
+.if o .bp \" blank page to make count even
+.bp 1
+.af PN i
+.PX
diff --git a/specs/Xi/porting.ms b/specs/Xi/porting.ms
new file mode 100644
index 0000000..274a0d4
--- /dev/null
+++ b/specs/Xi/porting.ms
@@ -0,0 +1,990 @@
+.\" Input Extension Porting Document
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+\0
+.sp 10
+.ce 50
+.ps 20
+\fBX11 Input Extension Porting Document
+.sp 2
+.ps 12
+X Version 11, Release 6.4
+.sp 16
+.ps 15
+George Sachs\0\0\0\0Hewlett-Packard
+.ps 12
+.ce 0
+.bp
+\0
+.sp 10
+.ps 9
+.vs 11
+.LP
+Copyright \(co 1989, 1990, 1991 by Hewlett-Packard Company
+.LP
+Permission to use, copy, modify, and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+Hewlett-Packard makes no representations about the suitability
+for any purpose of the information in this document. It is provided "as is"
+without express or implied warranty. This document is only a draft standard
+of the X Consortium and is therefore subject to change.
+.sp 5
+Copyright \(co 1989, 1990, 1991 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.bp 1
+.EH '\fBX Input Extension Porting Document\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Input Extension Porting Document\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.\" Force the heading counter for level 1 to one
+.\"
+.\"
+.\"
+.\" Print table of contents to level 4 headings
+.\"
+.nr Cl 4
+.\"
+.\" Page eject for each level 1 heading
+.\"
+.nr H1 1
+.nr P 1
+.\"
+.\" Define Ch to contain the chapter string.
+.\"
+.ds Ch Porting Overview
+.\"
+.\"
+.\" Pull in the layout macro package.
+.\"
+.\"
+.tr ~
+This document is intended to aid the process of integrating the
+X11 Input Extension into an X server.
+.LP
+Most of the functionality provided by the input extension is
+device- and implementation-independent, and should require no changes.
+The functionality is implemented by
+routines that typically reside in the server source tree directory
+extensions/server/xinput.
+This extension includes functions to enable and disable input extension devices,
+select input, grab and focus those device, query and change key
+and button mappings, and others. The only input extension requirements
+for the device-dependent part of X are that the input devices be
+correctly initialized and input events from those devices be correctly
+generated. Device-dependent X is responsible for reading input data from
+the input device hardware and if necessary, reformatting it into X events.
+.LP
+The process of initializing input extension devices is similar to that used
+for the core devices, and is described in the following sections. When
+multiple input devices are attached to X server, the choice of which devices
+to initially use as the core X pointer and keyboard is left
+implementation-dependent. It is also up to each implementation to decide
+whether all input devices will be opened by the server during its
+initialization and kept open for the life of the server. The alternative is
+to open only the X keyboard and X pointer during server initialization, and
+open other input devices only when requested by a client to do so. Either
+type of implementation is supported by the input extension.
+.LP
+Input extension events generated by the X server use the same 32-byte xEvent
+wire event as do core input events. However, additional information must be
+sent for input extension devices, requiring that multiple xEvents be generated
+each time data is received from an input extension device. These xEvents are
+combined into a single client XEvent by the input extension library. A later
+section of this document describes the format and generation of input extension
+events.
+.NH 1
+Initializing Extension Devices
+.LP
+Extension input devices are initialized in the same manner as the core
+X input devices. Device-Independent X provides functions that can be
+called from DDX to initialize these devices. Which functions are called
+and when will vary by implementation, and will depend on whether the
+implementation opens all the input devices available to X when X is initialized,
+or waits until a client requests that a device be opened.
+In the simplest case, DDX will open all input devices as part of its
+initialization, when the InitInput routine is called.
+.NH 2
+Summary of Calling Sequence
+.LP
+.DS
+Device-Independent X | Device-Dependent X
+-------------------- | -------------------
+ |
+InitInput --------------> | - do device-specific initialization
+ |
+ | - call AddInputDevice (deviceProc,AutoStart)
+AddInputDevice |
+ - creates DeviceIntRec |
+ - records deviceProc |
+ - adds new device to |
+ list of off_devices. |
+sets dev->startup=AutoStart|
+ | - call one of:
+ | - RegisterPointerDevice (X pointer)
+ | - processInputProc = ProcessPointerEvents
+ | - RegisterKeyboardDevice (X keyboard)
+ | - processInputProc = ProcessKeyboardEvents
+ | - RegisterOtherDevice (extension device)
+ | - processInputProc = ProcessOtherEvents
+ |
+ |
+InitAndStartDevices -----> | - calls deviceProc with parameters
+ | (DEVICE_INIT, AutoStart)
+sets dev->inited = return |
+ value from deviceProc |
+ |
+ | - in deviceProc, do one of:
+ | - call InitPointerDeviceStruct (X pointer)
+ | - call InitKeyboardDeviceStruct (X keybd)
+ | - init extension device by calling some of:
+ | - InitKeyClassDeviceStruct
+ | - InitButtonClassDeviceStruct
+ | - InitValuatorClassDeviceStruct
+ | - InitValuatorAxisStruct
+ | - InitFocusClassDeviceStruct
+ | - InitProximityClassDeviceStruct
+ | - InitKbdFeedbackClassDeviceStruct
+ | - InitPtrFeedbackClassDeviceStruct
+ | - InitLedFeedbackClassDeviceStruct
+ | - InitStringFeedbackClassDeviceStruct
+ | - InitIntegerFeedbackClassDeviceStruct
+ | - InitBellFeedbackClassDeviceStruct
+ | - init device name and type by:
+ | - calling MakeAtom with one of the
+ | predefined names
+ | - calling AssignTypeAndName
+ |
+ |
+for each device added |
+ by AddInputDevice, |
+ InitAndStartDevices |
+ calls EnableDevice if | - EnableDevice calls deviceProc with
+ dev->startup & | (DEVICE_ON, AutoStart)
+ dev->inited |
+ |
+If deviceProc returns | - core devices are now enabled, extension
+ Success, EnableDevice | devices are now available to be accessed
+ move the device from | through the input extension protocol
+ inputInfo.off_devices | requests.
+ to inputInfo.devices |
+.DE
+.NH 2
+Initialization Called From InitInput
+.LP
+InitInput is the first DDX input entry point called during X server startup.
+This routine is responsible for
+device- and implementation- specific initialization, and for calling
+AddInputDevice to create and initialize the DeviceIntRec structure for each
+input device. AddInputDevice is passed the address of a procedure to be called
+by the DIX routine InitAndStartDevices when input devices are enabled.
+This procedure is expected to perform X initialization for the input device.
+.LP
+If the device is to be used as the X pointer, DDX should then call
+RegisterPointerDevice, passing the DeviceIntRec pointer,
+to initialize the device as the X pointer.
+.LP
+If the device is to be used as the X keyboard, DDX should instead call
+RegisterKeyboardDevice to initialize the device as the X keyboard.
+.LP
+If the device is to be used as an extension device, DDX should instead
+call RegisterOtherDevice, passing the DeviceIntPtr returned by
+AddInputDevice.
+.LP
+A sample InitInput implementation is shown below.
+.LP
+.DS
+InitInput(argc,argv)
+ {
+ int i, numdevs, ReadInput();
+ DeviceIntPtr dev;
+ LocalDevice localdevs[LOCAL_MAX_DEVS];
+ DeviceProc kbdproc, ptrproc, extproc;
+
+ /**************************************************************
+ * Open the appropriate input devices, determine which are
+ * available, and choose an X pointer and X keyboard device
+ * in some implementation-dependent manner.
+ ***************************************************************/
+
+ open_input_devices (&numdevs, localdevs);
+
+ /**************************************************************
+ * Register a WakeupHandler to handle input when it is generated.
+ ***************************************************************/
+
+ RegisterBlockAndWakeupHandlers (NoopDDA, ReadInput, NULL);
+
+ /**************************************************************
+ * Register the input devices with DIX.
+ ***************************************************************/
+
+ for (i=0; i<numdevs; i++)
+ {
+ if (localdevs[i].use == IsXKeyboard)
+ {
+ dev = AddInputDevice (kbdproc, TRUE);
+ RegisterKeyboardDevice (dev);
+ }
+ else if (localdevs[i].use == IsXPointer)
+ {
+ dev = AddInputDevice (ptrproc, TRUE);
+ RegisterPointerDevice (dev);
+ }
+ else
+ {
+ dev = AddInputDevice (extproc, FALSE);
+ RegisterOtherDevice (dev);
+ }
+ if (dev == NULL)
+ FatalError ("Too many input devices.");
+ dev->devicePrivate = (pointer) &localdevs[i];
+ }
+.DE
+.NH 2
+Initialization Called From InitAndStartDevices
+.LP
+After InitInput has returned,
+InitAndStartDevices is the DIX routine that is called to enable input devices.
+It calls the device control routine that was passed to AddInputDevice,
+with a mode value of DEVICE_INIT. The action taken by the device control
+routine depends on how the device is to be used. If the device is to be
+the X pointer, the device control routine should call
+InitPointerDeviceStruct to initialize it. If the device is to be the
+X keyboard, the device control routine should call
+InitKeyboardDeviceStruct. Since input extension devices may support various
+combinations of keys, buttons, valuators, and feedbacks,
+each class of input that it supports must be initialized.
+Entry points are defined by DIX to initialize each of the supported classes of
+input, and are described in the following sections.
+.LP
+A sample device control routine called from InitAndStartDevices is
+shown below.
+.LP
+.DS
+Bool extproc (dev, mode)
+ DeviceIntPtr dev;
+ int mode;
+ {
+ LocalDevice *localdev = (LocalDevice *) dev->devicePrivate;
+
+ switch (mode)
+ {
+ case DEVICE_INIT:
+ if (strcmp(localdev->name, XI_TABLET) == 0)
+ {
+ /****************************************************
+ * This device reports proximity, has buttons,
+ * reports two axes of motion, and can be focused.
+ * It also supports the same feedbacks as the X pointer
+ * (acceleration and threshold can be set).
+ ****************************************************/
+
+ InitButtonClassDeviceStruct (dev, button_count, button_map);
+ InitValuatorClassDeviceStruct (dev, localdev->n_axes,);
+ motionproc, MOTION_BUF_SIZE, Absolute);
+ for (i=0; i<localdev->n_axes; i++)
+ InitValuatorAxisStruct (dev, i, min_val, max_val,
+ resolution);
+ InitFocusClassDeviceStruct (dev);
+ InitProximityClassDeviceStruct (dev);
+ InitPtrFeedbackClassDeviceStruct (dev, p_controlproc);
+ }
+ else if (strcmp(localdev->name, XI_BUTTONBOX) == 0)
+ {
+ /****************************************************
+ * This device has keys and LEDs, and can be focused.
+ ****************************************************/
+
+ InitKeyClassDeviceStruct (dev, syms, modmap);
+ InitFocusClassDeviceStruct (dev);
+ InitLedFeedbackClassDeviceStruct (dev, ledcontrol);
+ }
+ else if (strcmp(localdev->name, XI_KNOBBOX) == 0)
+ {
+ /****************************************************
+ * This device reports motion.
+ * It can be focused.
+ ****************************************************/
+
+ InitValuatorClassDeviceStruct (dev, localdev->n_axes,);
+ motionproc, MOTION_BUF_SIZE, Absolute);
+ for (i=0; i<localdev->n_axes; i++)
+ InitValuatorAxisStruct (dev, i, min_val, max_val,
+ resolution);
+ InitFocusClassDeviceStruct (dev);
+ }
+ localdev->atom =
+ MakeAtom(localdev->name, strlen(localdev->name), FALSE);
+ AssignTypeAndName (dev, localdev->atom, localdev->name);
+ break;
+ case DEVICE_ON:
+ AddEnabledDevice (localdev->file_ds);
+ dev->on = TRUE;
+ break;
+ case DEVICE_OFF:
+ dev->on = FALSE;
+ RemoveEnabledDevice (localdev->file_ds);
+ break;
+ case DEVICE_CLOSE:
+ break;
+ }
+ }
+.DE
+.LP
+The device control routine is called with a mode value of DEVICE_ON
+by the DIX routine EnableDevice, which is called from InitAndStartDevices.
+When called with this mode, it should call AddEnabledDevice to cause the
+server to begin checking for available input from this device.
+.LP
+>From InitAndStartDevices, EnableDevice is called for all devices that have
+the "inited" and "startup" fields in the DeviceIntRec set to TRUE. The
+"inited" field is set by InitAndStartDevices to the value returned by
+the deviceproc when called with a mode value of DEVICE_INIT. The "startup"
+field is set by AddInputDevice to value of the second parameter (autoStart).
+.LP
+When the server is first initialized, it should only be checking for input
+from the core X keyboard and pointer. One way to accomplish this is to
+call AddInputDevice for the core X keyboard and pointer with an
+autoStart value equal to TRUE, while calling AddInputDevice for
+input extension devices with an autoStart value equal to FALSE. If this is
+done, EnableDevice will skip all input extension devices during server
+initialization. In this case,
+the OpenInputDevice routine should set the "startup" field to TRUE
+when called for input extension devices. This will cause ProcXOpenInputDevice
+to call EnableDevice for those devices when a client first does an
+XOpenDevice request.
+.NH 2
+DIX Input Class Initialization Routines
+.LP
+DIX routines are defined to initialize each of the defined input classes.
+The defined classes are:
+.RS
+.in +5n
+.IP "-" 3n
+KeyClass - the device has keys.
+.IP "-" 3n
+ButtonClass - the device has buttons.
+.IP "-" 3n
+ValuatorClass - the device reports motion data or positional data.
+.IP "-" 3n
+Proximitylass - the device reports proximity information.
+.IP "-" 3n
+FocusClass - the device can be focused.
+.IP "-" 3n
+FeedbackClass - the device supports some kind of feedback
+.in -5n
+.RE
+.LP
+DIX routines are provided to initialize the X pointer and keyboard, as in
+previous releases of X. During X initialization, InitPointerDeviceStruct
+is called to initialize the X pointer, and InitKeyboardDeviceStruct is
+called to initialize the X keyboard. There is no
+corresponding routine for extension input devices, since they do not all
+support the same classes of input. Instead, DDX is responsible for the
+initialization of the input classes supported by extension devices.
+A description of the routines provided by DIX to perform that initialization
+follows.
+.NH 3
+InitKeyClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a KeyClassRec, and
+should be called for extension devices that have keys. It is passed a pointer
+to the device, and pointers to arrays of keysyms and modifiers reported by
+the device. It returns FALSE if the KeyClassRec could not be allocated,
+or if the maps for the keysyms and and modifiers could not be allocated.
+Its parameters are:
+.LP
+.DS
+Bool
+InitKeyClassDeviceStruct(dev, pKeySyms, pModifiers)
+ DeviceIntPtr dev;
+ KeySymsPtr pKeySyms;
+ CARD8 pModifiers[];
+.DE
+.LP
+The DIX entry point InitKeyboardDeviceStruct calls this routine for the
+core X keyboard. It must be called explicitly for extension devices
+that have keys.
+.NH 3
+InitButtonClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a ButtonClassRec, and
+should be called for extension devices that have buttons. It is passed a
+pointer to the device, the number of buttons supported, and a map of the
+reported button codes. It returns FALSE if the ButtonClassRec could not be
+allocated. Its parameters are:
+.LP
+.DS
+Bool
+InitButtonClassDeviceStruct(dev, numButtons, map)
+ register DeviceIntPtr dev;
+ int numButtons;
+ CARD8 *map;
+.DE
+.LP
+The DIX entry point InitPointerDeviceStruct calls this routine for the
+core X pointer. It must be called explicitly for extension devices that
+have buttons.
+.NH 3
+InitValuatorClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a ValuatorClassRec, and
+should be called for extension devices that have valuators. It is passed the
+number of axes of motion reported by the device, the address of the motion
+history procedure for the device, the size of the motion history buffer,
+and the mode (Absolute or Relative) of the device. It returns FALSE if
+the ValuatorClassRec could not be allocated. Its parameters are:
+.LP
+.DS
+Bool
+InitValuatorClassDeviceStruct(dev, numAxes, motionProc, numMotionEvents, mode)
+ DeviceIntPtr dev;
+ int (*motionProc)();
+ int numAxes;
+ int numMotionEvents;
+ int mode;
+.DE
+.LP
+The DIX entry point InitPointerDeviceStruct calls this routine for the
+core X pointer. It must be called explicitly for extension devices that
+report motion.
+.NH 3
+InitValuatorAxisStruct
+.LP
+This function is provided to initialize an XAxisInfoRec, and
+should be called for core and extension devices that have valuators.
+The space for the XAxisInfoRec is allocated by
+the InitValuatorClassDeviceStruct function, but is not initialized.
+.LP
+InitValuatorAxisStruct should be called once for each axis of motion
+reported by the device. Each
+invocation should be passed the axis number (starting with 0), the
+minimum value for that axis, the maximum value for that axis, and the
+resolution of the device in counts per meter. If the device reports
+relative motion, 0 should be reported as the minimum and maximum values.
+InitValuatorAxisStruct has the following parameters:
+.DS
+InitValuatorAxisStruct(dev, axnum, minval, maxval, resolution)
+ DeviceIntPtr dev;
+ int axnum;
+ int minval;
+ int maxval;
+ int resolution;
+.DE
+.LP
+This routine is not called by InitPointerDeviceStruct for the
+core X pointer. It must be called explicitly for core and extension devices
+that report motion.
+.NH 3
+InitFocusClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a FocusClassRec, and
+should be called for extension devices that can be focused. It is passed a
+pointer to the device, and returns FALSE if the allocation fails.
+It has the following parameter:
+.DS
+Bool
+InitFocusClassDeviceStruct(dev)
+ DeviceIntPtr dev;
+.DE
+.LP
+The DIX entry point InitKeyboardDeviceStruct calls this routine for the
+core X keyboard. It must be called explicitly for extension devices
+that can be focused. Whether or not a particular device can be focused
+is left implementation-dependent.
+.NH 3
+InitProximityClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a ProximityClassRec, and
+should be called for extension absolute pointing devices that report proximity.
+It is passed a pointer to the device, and returns FALSE if the allocation fails.
+It has the following parameter:
+.DS
+Bool
+InitProximityClassDeviceStruct(dev)
+ DeviceIntPtr dev;
+.DE
+.NH 3
+Initializing Feedbacks
+.LP
+.NH 4
+InitKbdFeedbackClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a KbdFeedbackClassRec, and
+may be called for extension devices that support some or all of the
+feedbacks that the core keyboard supports. It is passed a
+pointer to the device, a pointer to the procedure that sounds the bell,
+and a pointer to the device control procedure.
+It returns FALSE if the allocation fails, and has the following parameters:
+.DS
+Bool
+InitKbdFeedbackClassDeviceStruct(dev, bellProc, controlProc)
+ DeviceIntPtr dev;
+ void (*bellProc)();
+ void (*controlProc)();
+.DE
+The DIX entry point InitKeyboardDeviceStruct calls this routine for the
+core X keyboard. It must be called explicitly for extension devices
+that have the same feedbacks as a keyboard. Some feedbacks, such as LEDs and
+bell, can be supported either with a KbdFeedbackClass or with BellFeedbackClass
+and LedFeedbackClass feedbacks.
+.NH 4
+InitPtrFeedbackClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a PtrFeedbackClassRec, and
+should be called for extension devices that allow the setting of acceleration
+and threshold. It is passed a pointer to the device,
+and a pointer to the device control procedure.
+It returns FALSE if the allocation fails, and has the following parameters:
+.DS
+Bool
+InitPtrFeedbackClassDeviceStruct(dev, controlProc)
+ DeviceIntPtr dev;
+ void (*controlProc)();
+.DE
+.LP
+The DIX entry point InitPointerDeviceStruct calls this routine for the
+core X pointer. It must be called explicitly for extension devices
+that support the setting of acceleration and threshold.
+.NH 4
+InitLedFeedbackClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a LedFeedbackClassRec, and
+should be called for extension devices that have LEDs.
+It is passed a pointer to the device,
+and a pointer to the device control procedure.
+It returns FALSE if the allocation fails, and has the following parameters:
+.DS
+Bool
+InitLedFeedbackClassDeviceStruct(dev, controlProc)
+ DeviceIntPtr dev;
+ void (*controlProc)();
+.DE
+.LP
+Up to 32 LEDs per feedback can be supported, and a device may have
+multiple feedbacks of the same type.
+.NH 4
+InitBellFeedbackClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a BellFeedbackClassRec,
+and should be called for extension devices that have a bell.
+It is passed a pointer to the device,
+and a pointer to the device control procedure.
+It returns FALSE if the allocation fails, and has the following parameters:
+.DS
+Bool
+InitBellFeedbackClassDeviceStruct(dev, bellProc, controlProc)
+ DeviceIntPtr dev;
+ void (*bellProc)();
+ void (*controlProc)();
+.DE
+.NH 4
+InitStringFeedbackClassDeviceStruct
+.LP
+This function is provided to allocate and initialize a StringFeedbackClassRec,
+and should be called for extension devices that have a display upon which a
+string can be displayed.
+It is passed a pointer to the device,
+and a pointer to the device control procedure.
+It returns FALSE if the allocation fails, and has the following parameters:
+.DS
+Bool
+InitStringFeedbackClassDeviceStruct(dev, controlProc, max_symbols,
+ num_symbols_supported, symbols)
+ DeviceIntPtr dev;
+ void (*controlProc)();
+ int max_symbols:
+ int num_symbols_supported;
+ KeySym *symbols;
+.DE
+.NH 4
+InitIntegerFeedbackClassDeviceStruct
+.LP
+This function is provided to allocate and initialize an
+IntegerFeedbackClassRec,
+and should be called for extension devices that have a display upon which an
+integer can be displayed.
+It is passed a pointer to the device,
+and a pointer to the device control procedure.
+It returns FALSE if the allocation fails, and has the following parameters:
+.DS
+Bool
+InitIntegerFeedbackClassDeviceStruct(dev, controlProc)
+ DeviceIntPtr dev;
+ void (*controlProc)();
+.DE
+.NH 2
+Initializing The Device Name And Type
+.LP
+The device name and type can be initialized by calling AssignTypeAndName
+with the following parameters:
+.DS
+void
+AssignTypeAndName(dev, type, name)
+ DeviceIntPtr dev;
+ Atom type;
+ char *name;
+.DE
+.LP
+This will allocate space for the device name and copy the name that was passed.
+The device type can be obtained by calling MakeAtom with one of the names
+defined for input devices. MakeAtom has the following parameters:
+.DS
+Atom
+MakeAtom(name, len, makeit)
+ char *name;
+ int len;
+ Bool makeit;
+.DE
+.LP
+Since the atom was already made when the input extension was initialized, the
+value of makeit should be FALSE;
+.NH 1
+Closing Extension Devices
+.LP
+The DisableDevice entry point is provided by DIX to disable input devices.
+It calls the device control routine for the specified
+device with a mode value of DEVICE_OFF. The device control routine should
+call RemoveEnabledDevice to stop the server from checking for input from
+that device.
+.LP
+DisableDevice is not called by any input extension routines. It can be
+called from the CloseInputDevice routine, which is called by
+ProcXCloseDevice when a client makes an XCloseDevice request. If
+DisableDevice is called, it should only be called when the last client
+using the extension device has terminated or called XCloseDevice.
+.NH 1
+Implementation-Dependent Routines
+.LP
+Several input extension protocol requests have
+implementation-dependent entry points. Default routines
+are defined for these entry points and contained in the source
+file extensions/server/xinput/xstubs.c. Some implementations may
+be able to use the default routines without change.
+The following sections describe each of these routines.
+.NH 2
+AddOtherInputDevices
+.LP
+AddOtherInputDevice is called from ProcXListInputDevices as a result of
+an XListInputDevices protocol request. It may be needed by
+implementations that do not open extension input devices until requested
+to do so by some client. These implementations may not initialize
+all devices when the X server starts up, because some of those devices
+may be in use. Since the XListInputDevices
+function only lists those devices that have been initialized,
+AddOtherInputDevices is called to give DDX a chance to
+initialize any previously unavailable input devices.
+.LP
+A sample AddOtherInputDevices routine might look like the following:
+.DS
+void
+AddOtherInputDevices ()
+ {
+ DeviceIntPtr dev;
+ int i;
+
+ for (i=0; i<MAX_DEVICES; i++)
+ {
+ if (!local_dev[i].initialized && available(local_dev[i]))
+ {
+ dev = (DeviceIntPtr) AddInputDevice (local_dev[i].deviceProc, TRUE);
+ dev->public.devicePrivate = local_dev[i];
+ RegisterOtherDevice (dev);
+ dev->inited = ((*dev->deviceProc)(dev, DEVICE_INIT) == Success);
+ }
+ }
+ }
+.DE
+.LP
+The default AddOtherInputDevices routine in xstubs.c does nothing.
+If all input extension devices are initialized when the server
+starts up, it can be left as a null routine.
+.NH 2
+OpenInputDevice
+.LP
+Some X server implementations open all input devices when the server
+is initialized and never close them. Other implementations may open only
+the X pointer and keyboard devices during server initialization,
+and open other input devices only when some client makes an
+XOpenDevice request. This entry point is for the latter type of
+implementation.
+.LP
+If the physical device is not already open, it can be done in this routine.
+In this case, the server must keep track of the fact that one or more clients
+have the device open, and physically close it when the last client that has
+it open makes an XCloseDevice request.
+.LP
+The default implementation is to do nothing (assume all input devices
+are opened during X server initialization and kept open).
+.NH 2
+CloseInputDevice
+.LP
+Some implementations may close an input device when the last client
+using that device requests that it be closed, or terminates.
+CloseInputDevice is called from ProcXCloseDevice when a client
+makes an XCloseDevice protocol request.
+.LP
+The default implementation is to do nothing (assume all input devices
+are opened during X server initialization and kept open).
+.NH 2
+SetDeviceMode
+.LP
+Some implementations support input devices that can report
+either absolute positional data or relative motion. The XSetDeviceMode
+protocol request is provided to allow DDX to change the current mode of
+such a device.
+.LP
+The default implementation is to always return a BadMatch error. If the
+implementation does not support any input devices that are capable of
+reporting both relative motion and absolute position information, the
+default implementation may be left unchanged.
+.NH 2
+SetDeviceValuators
+.LP
+Some implementations support input devices that allow their valuators to be
+set to an initial value. The XSetDeviceValuators
+protocol request is provided to allow DDX to set the valuators of
+such a device.
+.LP
+The default implementation is to always return a BadMatch error. If the
+implementation does not support any input devices that are allow their
+valuators to be set, the default implementation may be left unchanged.
+.NH 2
+ChangePointerDevice
+.LP
+The XChangePointerDevice protocol request is provided to change which device is
+used as the X pointer. Some implementations may maintain information
+specific to the X pointer in the private data structure pointed to by
+the DeviceIntRec. ChangePointerDevice is called to allow such
+implementations to move that information to the new pointer device.
+The current location of the X cursor is an example of the type of
+information that might be affected.
+.LP
+The DeviceIntRec structure that describes the X pointer device does not
+contain a FocusRec. If the device that has been made into the new X pointer
+was previously a device that could be focused, ProcXChangePointerDevice will
+free the FocusRec associated with that device.
+.LP
+If the server implementation desires to allow clients to focus the old pointer
+device (which is now accessible through the input extension), it should call
+InitFocusClassDeviceStruct for the old pointer device.
+.LP
+The XChangePointerDevice protocol request also allows the client
+to choose which axes of the new pointer device are used to move
+the X cursor in the X- and Y- directions. If the axes are different
+than the default ones, the server implementation should record that fact.
+.LP
+If the server implementation supports input devices with valuators that
+are not allowed to be used as the X pointer, they should be screened out
+by this routine and a BadDevice error returned.
+.LP
+The default implementation is to do nothing.
+.NH 2
+ChangeKeyboardDevice
+.LP
+The XChangeKeyboardDevice protocol request is provided to change which device is
+used as the X keyboard. Some implementations may maintain information
+specific to the X keyboard in the private data structure pointed to by
+the DeviceIntRec. ChangeKeyboardDevice is called to allow such
+implementations to move that information to the new keyboard device.
+.LP
+The X keyboard device can be focused, and the DeviceIntRec that describes
+that device has a FocusRec. If the device that has been made into the new X
+keyboard did not previously have a FocusRec,
+ProcXChangeKeyboardDevice will allocate one for it.
+.LP
+If the implementation does not want clients to be able to focus the old X
+keyboard (which has now become available as an input extension device)
+it should call DeleteFocusClassDeviceStruct to free the FocusRec.
+.LP
+If the implementation supports input devices with keys that are not allowed
+to be used as the X keyboard, they should be checked for here, and a
+BadDevice error returned.
+.LP
+The default implementation is to do nothing.
+.NH 1
+Input Extension Events
+.LP
+Events accessed through the input extension are analogous to the core input
+events, but have different event types. They are of types
+\fBDeviceKeyPress\fP, \fBDeviceKeyRelease\fP, \fBDeviceButtonPress\fP,
+\fBDeviceButtonRelease\fP, \fBDeviceDeviceMotionNotify\fP,
+\fBDeviceProximityIn\fP, \fBDeviceProximityOut\fP, and \fBDeviceValuator\fP.
+These event types are not constants. Instead, they are external integers
+defined by the input extension. Their actual values will depend on which
+extensions are supported by a server, and the order in which they are
+initialized.
+.LP
+The data structures that define these
+events are defined in the file \fBextensions/include/XIproto.h\fP. Other
+input extension constants needed by DDX are defined in the file
+\fBextensions/include/XI.h\fP.
+.LP
+Some events defined by the input extension contain more information than can
+be contained in the 32-byte xEvent data structure. To send this information
+to clients, DDX must generate two or more 32-byte wire events. The following
+sections describe the contents of these events.
+.NH 2
+Device Key Events
+.LP
+\fBDeviceKeyPresss\fP events contain all the information that is contained in
+a core \fBKeyPress\fP event, and also the following additional information:
+.LP
+.RS
+.in +5n
+.IP "-" 3n
+deviceid - the identifier of the device that generated the event.
+.IP "-" 3n
+device_state - the state of any modifiers on the device that generated the event
+.IP "-" 3n
+num_valuators - the number of valuators reported in this event.
+.IP "-" 3n
+first_valuator - the first valuator reported in this event.
+.IP "-" 3n
+valuator0 through valuator5 - the values of the valuators.
+.in -5n
+.RE
+.LP
+In order to pass this information to the input extension library, two 32-byte
+wire events must be generated by DDX. The first has an event type of
+\fBDeviceKeyPress\fP, and the second has an event type of \fPDeviceValuator\fP.
+.LP
+The following code fragment shows how the two wire events could be initialized:
+.LP
+.DS
+ extern int DeviceKeyPress;
+ DeviceIntPtr dev;
+ xEvent xE[2];
+ CARD8 id, num_valuators;
+ INT16 x, y, pointerx, pointery;
+ Time timestamp;
+ deviceKeyButtonPointer *xev = (deviceKeyButtonPointer *) xE;
+ deviceValuator *xv;
+
+ xev->type = DeviceKeyPress; /* defined by input extension */
+ xev->detail = keycode; /* key pressed on this device */
+ xev->time = timestamp; /* same as for core events */
+ xev->rootX = pointerx; /* x location of core pointer */
+ xev->rootY = pointery; /* y location of core pointer */
+
+ /******************************************************************/
+ /* */
+ /* The following field does not exist for core input events. */
+ /* It contains the device id for the device that generated the */
+ /* event, and also indicates whether more than one 32-byte wire */
+ /* event is being sent. */
+ /* */
+ /******************************************************************/
+
+ xev->deviceid = dev->id | MORE_EVENTS; /* sending more than 1*/
+
+ /******************************************************************/
+ /* Fields in the second 32-byte wire event: */
+ /******************************************************************/
+
+ xv = (deviceValuator *) ++xev;
+ xv->type = DeviceValuator; /* event type of second event */
+ xv->deviceid = dev->id; /* id of this device */
+ xv->num_valuators = 0; /* no valuators being sent */
+ xv->device_state = 0; /* will be filled in by DIX */
+.DE
+.NH 2
+Device Button Events
+.LP
+\fBDeviceButton\fP events contain all the information that is contained in
+a core button event, and also the same additional information that a
+\fBDeviceKey\fP event contains.
+.NH 2
+Device Motion Events
+.LP
+\fBDeviceMotion\fP events contain all the information that is contained in
+a core motion event, and also additional valuator information. At least
+two wire events are required to contain this information.
+The following code fragment shows how the two wire events could be initialized:
+.LP
+.DS
+ extern int DeviceMotionNotify;
+ DeviceIntPtr dev;
+ xEvent xE[2];
+ CARD8 id, num_valuators;
+ INT16 x, y, pointerx, pointery;
+ Time timestamp;
+ deviceKeyButtonPointer *xev = (deviceKeyButtonPointer *) xE;
+ deviceValuator *xv;
+
+ xev->type = DeviceMotionNotify; /* defined by input extension */
+ xev->detail = keycode; /* key pressed on this device */
+ xev->time = timestamp; /* same as for core events */
+ xev->rootX = pointerx; /* x location of core pointer */
+ xev->rootY = pointery; /* y location of core pointer */
+
+ /******************************************************************/
+ /* */
+ /* The following field does not exist for core input events. */
+ /* It contains the device id for the device that generated the */
+ /* event, and also indicates whether more than one 32-byte wire */
+ /* event is being sent. */
+ /* */
+ /******************************************************************/
+
+ xev->deviceid = dev->id | MORE_EVENTS; /* sending more than 1*/
+
+ /******************************************************************/
+ /* Fields in the second 32-byte wire event: */
+ /******************************************************************/
+
+ xv = (deviceValuator *) ++xev;
+ xv->type = DeviceValuator; /* event type of second event */
+ xv->deviceid = dev->id; /* id of this device */
+ xv->num_valuators = 2; /* 2 valuators being sent */
+ xv->first_valuator = 0; /* first valuator being sent */
+ xv->device_state = 0; /* will be filled in by DIX */
+ xv->valuator0 = x; /* first axis of this device */
+ xv->valuator1 = y; /* second axis of this device */
+.DE
+.LP
+Up to six axes can be reported in the deviceValuator event. If the device
+is reporting more than 6 axes, additional pairs of DeviceMotionNotify and
+DeviceValuator events should be sent, with the first_valuator field
+set correctly.
+.NH 2
+Device Proximity Events
+.LP
+Some input devices that report absolute positional information, such as
+graphics tablets and touchscreens, may report proximity events.
+\fBProximityIn\fP
+events are generated when a pointing device like a stylus, or in the case
+of a touchscreen, the user's finger, comes into close proximity with the
+surface of the input device. \fBProximityOut\fP events are generated when
+the stylus or finger leaves the proximity of the input devices surface.
+.LP
+\fBProximity\fP events contain almost the same information as button events.
+The event type is \fBProximityIn\fP or \fBProximityOut\fP, and there is no
+detail information.
+.bp
+.TC
diff --git a/specs/Xi/protocol.ms b/specs/Xi/protocol.ms
new file mode 100644
index 0000000..50c56c9
--- /dev/null
+++ b/specs/Xi/protocol.ms
@@ -0,0 +1,3156 @@
+.\" $Xorg: protocol.ms,v 1.3 2000/08/17 19:42:40 cpqbld Exp $
+.\" Input Extension
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\0
+.sp 10
+.ce 500
+.ps 20
+\fBX11 Input Extension Protocol Specification
+.ps 12
+.sp 2
+Version 1.0
+.sp 1
+X Consortium Standard
+.sp 1
+X Version 11, Release 6.4
+.sp 16
+.ps 15
+\fBMark Patrick\0\0\0\0Ardent Computer
+.sp 1
+\fBGeorge Sachs\0\0\0\0Hewlett-Packard
+.ps 12
+.ce 0
+.bp
+\0
+.sp 10
+.fi
+.LP
+Copyright \(co 1989, 1990, 1991 by Hewlett-Packard Company and Ardent Computer
+.LP
+Permission to use, copy, modify, and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+Ardent and Hewlett-Packard make no representations about the suitability
+for any purpose of the information in this document. It is provided "as is"
+without express or implied warranty.
+.sp 5
+Copyright \(co 1989, 1990, 1991, 1992 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.ps
+.vs
+.bp 1
+.EH '\fBX Input Extension Protocol Specification\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Input Extension Protocol Specification\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB\\\\n(PN\fP''
+.OF ''\fB\\\\n(PN\fP''
+.\" Force the heading counter for level 1 to one
+.\"
+.nr Ej 1
+.\"
+.\"
+.\" Print table of contents to level 4 headings
+.\"
+.nr Cl 4
+.\"
+.\" Page eject for each level 1 heading
+.\"
+.nr H1 1
+.if \n(GS .nr nh*hl 1
+.nr P 1
+.\"
+.\" Define Ch to contain the chapter string.
+.\"
+.ds Ch Input Extension Overview
+.\"
+.\"
+.\" Pull in the layout macro package.
+.\"
+.\"
+.tr ~
+.NH 2
+Input Extension Overview
+.XS
+\*(SN Input Extension Overview
+.XE
+.LP
+This document defines an extension to the X11 protocol to support
+input devices other than the core X keyboard and pointer.
+An accompanying document defines a corresponding extension to Xlib
+(similar extensions for languages other than C are anticipated).
+This first section gives an overview of the input extension. The
+next section defines the new protocol requests defined by the extension.
+We conclude with a description of the new input events generated by
+the additional input devices.
+.NH 2
+Design Approach
+.XS
+\*(SN Design Approach
+.XE
+.LP
+The design approach of the extension is to define requests
+and events analogous to the core requests and events. This allows
+extension input devices to be individually distinguishable from each other
+and from the core input devices. These requests and events make use
+of a device identifier and support the reporting of n-dimensional motion
+data as well as other data that is not reportable via the core
+input events.
+.NH 2
+Core Input Devices
+.XS
+\*(SN Core Input Devices
+.XE
+.LP
+The X server core protocol supports two input devices: a pointer and a
+keyboard. The pointer device has two major functions.
+First, it may be used to generate motion information
+that client programs can detect. Second, it may also be used to indicate the
+current location and focus of the X keyboard. To accomplish this, the server
+echoes a cursor at the current position of the X pointer. Unless the X
+keyboard has been explicitly focused, this cursor also shows the current
+location and focus of the X keyboard.
+.LP
+The X keyboard is used to generate input that client programs can detect.
+.LP
+The X keyboard and X pointer are referred to in this document as
+the \fIcore devices\fP, and the input
+events they generate (\fBKeyPress\fP, \fBKeyRelease\fP, \fBButtonPress\fP,
+\fBButtonRelease\fP, and
+\fBMotionNotify\fP) are known as the \fIcore input events\fP. All other
+input devices are referred to as \fIextension input devices\fP and the
+input events they generate are referred to as \fIextension input events\fP.
+.NT
+This input extension does not change the behavior or functionality of the
+core input devices, core events, or core protocol requests, with the
+exception of the core grab requests. These requests may affect the
+synchronization of events from extension devices. See the explanation
+in the section titled "Event Synchronization and Core Grabs".
+.NE
+.LP
+Selection of the physical devices to be initially used by the server as the
+core devices is left implementation-dependent. Requests are defined that
+allow client programs to change which physical devices are used as the
+core devices.
+.NH 2
+Extension Input Devices
+.XS
+\*(SN Extension Input Devices
+.XE
+.LP
+The input extension controls access to input devices other than the X keyboard
+and X pointer. It allows client programs to select input from these devices
+independently from each other and independently from the core devices.
+.LP
+A client that wishes to access a specific device must first determine
+whether that device is connected to the X server. This is done through the
+\fBListInputDevices\fP request, which will return a list of all devices that
+can be opened by the X server. A client can then open one or more of these
+devices using the \fBOpenDevice\fP request, specify what events they are
+interested in receiving, and receive and process input events from extension
+devices in the same way as events from the X keyboard and X pointer.
+Input events from these devices are of extension types (\fBDeviceKeyPress\fP,
+\fBDeviceKeyRelease\fP, \fBDeviceButtonPress\fP, \fBDeviceButtonRelease\fP,
+\fBDeviceMotionNotify\fP, etc.) and contain a device identifier so that events
+of the same type coming from different input devices can be distinguished.
+.LP
+Any kind of input device may be used as an extension input device.
+Extension input devices may have 0 or more keys, 0 or more buttons,
+and may report 0 or more axes of motion. Motion may be reported
+as relative movements from a previous position or as an absolute
+position. All valuators reporting motion information for a given
+extension input device must report the same kind of motion information
+(absolute or relative).
+.LP
+This extension is designed to accommodate new types of input devices that
+may be added in the future. The protocol requests that refer to
+specific characteristics of input devices organize that information
+by \fBinput classes\fP. Server implementors may add new
+classes of input devices without changing the protocol requests.
+Input classes are unique numbers registered with the X Consortium.
+Each extension input device may support multiple input classes.
+.LP
+All extension input devices are treated like the core X keyboard in
+determining their location and focus. The server does not track the
+location of these devices on an individual basis, and therefore
+does not echo a cursor to indicate their current location.
+Instead, their location is determined by the location of the core X pointer.
+Like the core X keyboard, some may be explicitly focused. If they are
+not explicitly focused, their focus is determined by the location of the
+core X pointer.
+.LP
+Input events reported by the server to a client are of fixed size (32 bytes).
+In order to represent the change in state of an input device the extension
+may need to generate a sequence of input events. A client side library
+(such as Xlib) will typically take these raw input events and format
+them into a form more convenient to the client.
+.NH 3
+Event Classes
+.XS
+\*(SN Event Classes
+.XE
+.LP
+In the core protocol a client registers interest in receiving certain
+input events directed to a window by modifying that window's event-mask.
+Most of the bits in the event mask are already used to specify interest
+in core X events. The input extension specifies a different mechanism by which
+a client can express interest in events generated by this extension.
+.LP
+When a client opens a extension input device via the \fBOpenDevice\fP request,
+an \fBXDevice\fP structure is returned. Macros are provided that extract
+32-bit numbers called \fBevent classes\fP from that structure, that a client
+can use to register interest in extension events via the
+\fBSelectExtensionEvent\fP request. The event class combines the desired
+event type and device id, and may be thought of as the equivalent of core
+event masks.
+.NH 3
+Input Classes
+.XS
+\*(SN Input Classes
+.XE
+.LP
+Some of the input extension requests divide input devices into classes
+based on their functionality. This is intended to allow new classes of input
+devices to be defined at a later time without changing the semantics of
+these requests. The following input device classes are currently
+defined:
+.RS
+.in +5n
+.IP "\fBKEY\fP"
+The device reports key events.
+.IP "\fBBUTTON\fP"
+The device reports button events.
+.IP "\fBVALUATOR\fP"
+The device reports valuator data in motion events.
+.IP "\fBPROXIMITY\fP"
+The device reports proximity events.
+.IP "\fBFOCUS\fP"
+The device can be focused and reports focus events.
+.IP "\fBFEEDBACK\fP"
+The device supports feedbacks.
+.IP "\fBOTHER\fP"
+The \fBChangeDeviceNotify\fP, \fBDeviceMappingNotify\fP, and
+\fBDeviceStateNotify\fP macros may be invoked passing the \fBXDevice\fP
+structure returned for this device.
+.in -5n
+.RE
+.LP
+Each extension input device may support multiple input classes.
+Additional classes may be added in the future.
+Requests that support multiple input classes, such as the
+\fBListInputDevices\fP function that lists all available input devices,
+organize the data they return by input class. Client programs that
+use these requests should not access data unless it matches a
+class defined at the time those clients were compiled. In this way,
+new classes can be added without forcing existing clients that use
+these requests to be recompiled.
+.NH 1
+Requests
+.XS
+\*(SN Requests
+.XE
+.LP
+Extension input devices are accessed by client programs through the
+use of new protocol requests. This section summarizes the new requests
+defined by this extension. The syntax and type definitions used below
+follow the notation used for the X11 core protocol.
+.NH 2
+Getting the Extension Version
+.XS
+\*(SN Getting the Extension Version
+.XE
+.LP
+The \fBGetExtensionVersion\fP request returns version information about
+the input extension.
+.sp 1.5
+GetExtensionVersion
+.in +.5i
+name: STRING
+.in -.5i
+=>
+.in +.5i
+.br
+present: BOOL
+.br
+protocol-major-version: CARD16
+.br
+protocol-minor-version: CARD16
+.br
+.sp
+The protocol version numbers returned indicate the version of the input
+extension supported by the target X server. The version numbers can be
+compared to constants defined in the header file \fBXI.h\fP. Each version is
+a superset of the previous versions.
+.NH 2
+Listing Available Devices
+.XS
+\*(SN Listing Available Devices
+.XE
+.LP
+A client that wishes to access a specific device must first determine
+whether that device is connected to the X server. This is done through the
+\fBListInputDevices\fP request, which will return a list of all devices that
+can be opened by the X server.
+.sp 1.5
+ListInputDevices
+.br
+=>
+.in +.5i
+.br
+input-devices: LISTofDEVICEINFO
+.br
+.sp
+.in -.5i
+where
+.in +.5i
+.br
+.TS
+l lw(4i).
+T{
+DEVICEINFO:
+T} T{
+[type: ATOM
+.br
+\ id: CARD8
+.br
+\ num_classes: CARD8
+.br
+\ use: {IsXKeyboard, IsXPointer, IsExtensionDevice}
+.br
+\ info: LISTofINPUTINFO
+.br
+\ name: STRING8]
+T}
+.sp
+T{
+INPUTINFO:
+T} T{
+{KEYINFO, BUTTONINFO, VALUATORINFO}
+T}
+.sp
+T{
+KEYINFO:
+T} T{
+[class: CARD8
+.br
+\ length: CARD8
+.br
+\ min-keycode: KEYCODE
+.br
+\ max-keycode: KEYCODE
+.br
+\ num-keys: CARD16]
+T}
+.sp
+T{
+BUTTONINFO:
+T} T{
+.br
+[class: CARD8
+.br
+\ length: CARD8
+.br
+\ num-buttons: CARD16]
+T}
+.sp
+T{
+VALUATORINFO:
+T} T{
+[class: CARD8
+.br
+\ length: CARD8
+.br
+\ num_axes: CARD8
+.br
+\ mode: SETofDEVICEMODE
+.br
+\ motion_buffer_size: CARD32
+.br
+\ axes: LISTofAXISINFO]
+T}
+.sp
+T{
+AXISINFO:
+T} T{
+[resolution: CARD32
+.br
+\ min-val: CARD32
+.br
+\ max-val: CARD32]
+T}
+.sp
+T{
+DEVICEMODE:
+T} T{
+{Absolute, Relative}
+T}
+.TE
+.br
+Errors: None
+.in -.5i
+.sp 1.5
+This request returns a list of all devices that can be opened by the X
+server,
+including the core X keyboard and X pointer. Some implementations may open
+all input devices as part of X initialization, while others may not open
+an input device until requested to do so by a client program.
+.LP
+.IP \(bu 3n
+The information returned for each device is as follows:
+.LP
+The \fBtype\fP field is of type \fBAtom\fP and indicates the nature of the
+device. Clients may determine device types by invoking the \fBXInternAtom\fP
+request passing one of the names defined in the header file \fBXI.h\fP. The
+following names have been defined to date:
+.DS
+\fBMOUSE\fP
+\fBTABLET\fP
+\fBKEYBOARD\fP
+\fBTOUCHSCREEN\fP
+\fBTOUCHPAD\fP
+\fBBUTTONBOX\fP
+\fBBARCODE\fP
+\fBKNOB_BOX\fP
+\fBTRACKBALL\fP
+\fBQUADRATURE\fP
+\fBSPACEBALL\fP
+\fBDATAGLOVE\fP
+\fBEYETRACKER\fP
+\fBCURSORKEYS\fP
+\fBFOOTMOUSE\fP
+\fBID_MODULE\fP
+\fBONE_KNOB\fP
+\fBNINE_KNOB\fP
+.DE
+.LP
+The \fBid\fP is a small cardinal value in the range 0-128 that uniquely
+identifies the device. It is assigned to the device when it is initialized by
+the server. Some implementations may not open an input device until requested
+by a client program, and may close the device when the last client accessing
+it requests that it be closed.
+If a device is opened by a client program via \fBXOpenDevice\fP,
+then closed via \fBXCloseDevice\fP, then opened again, it is not guaranteed
+to have the same id after the second open request.
+.LP
+The \fBnum_classes\fP field is a small cardinal value in the range 0-255
+that specifies the number of input classes supported by the device for
+which information is returned by \fBListInputDevices\fP. Some input classes,
+such as class \fBFocus\fP and class \fBProximity\fP do not have any information
+to be returned by \fBListInputDevices\fP.
+.LP
+The \fBuse\fP field specifies how the device is currently being used. If the
+value is \fBIsXKeyboard\fP, the device is currently being used as the
+X keyboard. If the value is \fBIsXPointer\fP, the device is currently
+being used as the X pointer. If the value is \fBIsXExtensionDevice\fP,
+the device is available for use as an extension device.
+.LP
+The \fBname\fP field contains a pointer to a null-terminated string that
+corresponds to one of the defined device types.
+.IP \(bu 3n
+\fBInputInfo\fP is one of: \fBKeyInfo\fP, \fBButtonInfo\fP or
+\fBValuatorInfo\fP. The first two fields are common to all three:
+.LP
+The \fBclass\fP field is a cardinal value in the range 0-255. It uniquely
+identifies the class of input for which information is returned.
+.LP
+The \fBlength\fP field is a cardinal value in the range 0-255. It specifies
+the number of bytes of data that are contained in this input class. The
+length includes the class and length fields.
+.LP
+The remaining information returned for input class \fBKEYCLASS\fP is as follows:
+.LP
+\fBmin_keycode\fP is of type KEYCODE. It specifies the minimum keycode that
+the device will report. The minimum keycode will not be smaller than 8.
+.LP
+\fBmax_keycode\fP is of type KEYCODE. It specifies the maximum keycode that
+the device will report. The maximum keycode will not be larger than 255.
+.LP
+\fBnum_keys\fP is a cardinal value that specifies the number of keys that the
+device has.
+.LP
+The remaining information returned for input class \fBBUTTONCLASS\fP is as
+follows:
+.LP
+\fBnum_buttons\fP is a cardinal value that specifies the number of buttons
+that the device has.
+.LP
+The remaining information returned for input class \fBVALUATORCLASS\fP is as
+follows:
+.LP
+\fBmode\fP is a constant that has one of the following values: \fBAbsolute\fP
+or \fBRelative\fP. Some devices allow the mode to be changed dynamically
+via the \fBSetDeviceMode\fP request.
+.LP
+\fBmotion_buffer_size\fP is a cardinal number that specifies the number of
+elements that can be contained in the motion history buffer for the device.
+.LP
+The \fBaxes\fP field contains a pointer to an AXISINFO struture.
+.IP \(bu 3n
+The information returned for each axis reported by the device is:
+.LP
+The \fBresolution\fP is a cardinal value in counts/meter.
+.LP
+The \fBmin_val\fP field is a cardinal value in that contains the minimum
+value the device reports for this axis. For devices whose mode is
+\fBRelative\fP, the min_val field will contain 0.
+.LP
+The \fBmax_val\fP field is a cardinal value in that contains the maximum
+value the device reports for this axis. For devices whose mode is
+\fBRelative\fP, the max_val field will contain 0.
+.NH 2
+Enabling Devices
+.XS
+\*(SN Enabling Devices
+.XE
+.LP
+Client programs that wish to access an extension device must request that
+the server open that device. This is done via the \fBOpenDevice\fP
+request.
+.sp 1.5
+OpenDevice
+.in +.5i
+id: CARD8
+.in -.5i
+=>
+.in +.5i
+.br
+.TS
+l lw(4i).
+T{
+DEVICE:
+T} T{
+[device_id: XID
+.br
+\ num_classes: INT32
+.br
+\ classes: LISTofINPUTCLASSINFO]
+T}
+.sp
+T{
+INPUTCLASSINFO:
+T} T{
+[input_class: CARD8
+.br
+\ event_type_base: CARD8]
+T}
+.TE
+.sp
+Errors: Device
+.in -.5i
+.sp 1.5
+.LP
+This request returns the event classes to be used by the client to indicate
+which events the client program wishes to receive. Each input class
+may report several event classes. For example, input class \fBKeys\fP reports
+\fBDeviceKeyPress\fP and \fBDeviceKeyRelease\fP event classes. Input classes
+are unique numbers registered with the X Consortium. Input class
+\fBOther\fP exists
+to report event classes that are not specific to any one input class,
+such as \fBDeviceMappingNotify\fP, \fBChangeDeviceNotify\fP, and
+\fBDeviceStateNotify\fP.
+.LP
+.IP \(bu 3n
+The information returned for each device is as follows:
+.LP
+The \fBdevice_id\fP is a number that uniquely identifies the device.
+.LP
+The \fBnum_classes\fP field contains the number of input classes supported
+by this device.
+.LP
+.IP \(bu 3n
+For each class of input supported by the device,
+the \fBInputClassInfo\fP structure contains the following information:
+.LP
+The \fBinput_class\fP is a small cardinal number that identifies the class
+of input.
+.LP
+The \fBevent_type_base\fP is a small cardinal number that specifies the
+event type of one of the events reported by this input class. This information
+is not directly used by client programs. Instead, the \fBDevice\fP is used
+by macros that return extension event types and event classes. This is
+described in the section of this document entitled "Selecting Extension
+Device Events".
+.LP
+Before it exits,
+the client program should explicitly request that the server close
+the device. This is done via the \fBCloseDevice\fP request.
+.LP
+A client may open the same extension device more than once. Requests
+after the first successful one return an additional \fBXDevice\fP structure
+with the same information as the first, but otherwise have no effect.
+A single \fBCloseDevice\fP request will terminate that client's access to
+the device.
+.LP
+Closing a device releases any active or passive grabs the requesting client
+has established. If the device is frozen only by an active grab of the
+requesting client, the queued events are released when the client terminates.
+.LP
+If a client program terminates without closing a device, the server will
+automatically close that device on behalf of the client. This does not
+affect any other clients that may be accessing that device.
+.LP
+.sp 1.5
+CloseDevice
+.in +.5i
+device: DEVICE
+.br
+.sp
+Errors: Device
+.br
+.in -.5i
+.sp 1.5
+.NH 2
+Changing The Mode Of A Device
+.XS
+\*(SN Changing The Mode Of A Device
+.XE
+.LP
+Some devices are capable of reporting either relative or absolute motion
+data. To change the mode of a device from relative to absolute, use the
+\fBSetDeviceMode\fP request. The valid values are \fBAbsolute\fP or
+\fBRelative\fP.
+.LP
+This request will fail and return \fBDeviceBusy\fP if another client already
+has the device open with a different mode. It will fail and return
+\fBAlreadyGrabbed\fP if another client has the device grabbed.
+The request will fail with
+a \fBBadMatch\fP error if the requested mode is not supported by the device.
+.sp 1.5
+SetDeviceMode
+.in +.5i
+device: DEVICE
+.br
+mode: {Absolute, Relative}
+.br
+.sp
+Errors: Device, Match, Mode
+.br
+.in -.5i
+.sp 1.5
+=>
+.in +.5i
+status: {Success, DeviceBusy, AlreadyGrabbed}
+.br
+.sp
+.in -.5i
+.NH 2
+Initializing Valuators on an Input Device
+.XS
+\*(SN Initializing Valuators on an Input Device
+.XE
+.LP
+Some devices that report absolute positional data can be initialized to a
+starting value. Devices that are capable of reporting relative motion or
+absolute positional data may require that their valuators be initialized
+to a starting value after the mode of the device is changed to \fBAbsolute\fP.
+To initialize the valuators on such a device, use the \fBSetDeviceValuators\fP
+request.
+.sp 1.5
+SetDeviceValuators
+.in .5i
+device: DEVICE
+.br
+first_valuator: CARD8
+.br
+num_valuators: CARD8
+.br
+valuators: LISTOFINT32
+.br
+.sp
+Errors: Length, Device, Match, Value
+.br
+.in -.5i
+.sp 1.5
+=>
+.in +.5i
+status: {Success, AlreadyGrabbed}
+.br
+.sp
+.in -.5i
+.LP
+This request initializes the specified valuators on the specified extension
+input device. Valuators are numbered beginning with zero. Only the valuators
+in the range specified by first_valuator and num_valuators are set. If the
+number of valuators supported by the device is less than the expression
+first_valuator + num_valuators, a \fBValue\fP error will result.
+.LP
+If the request succeeds, \fBSuccess\fP is returned. If the specifed device is
+grabbed by some other client, the request will fail and a status of
+\fBAlreadyGrabbed\fP will be returned.
+.NH 2
+Getting Input Device Controls
+.XS
+\*(SN Getting Input Device Controls
+.XE
+.LP
+.sp 1.5
+GetDeviceControl
+.in .5i
+device: DEVICE
+.br
+control: XID
+.br
+.sp
+Errors: Length, Device, Match, Value
+.br
+.in -.5i
+.sp 1.5
+=>
+.in +.5i
+controlState: {DeviceState}
+.br
+.sp
+.in -.5i
+.LP
+where
+.in +.5i
+.br
+.TS
+l lw(4i).
+T{
+DeviceState:
+T} T{
+DeviceResolutionState
+T}
+.TE
+.in -.5i
+.br
+.sp
+Errors: Length, Device, Match, Value
+.LP
+This request returns the current state of the specified device control.
+The device control must be supported by the target server and device or an
+error will result.
+.LP
+If the request is successful, a pointer to a generic DeviceState
+structure will be returned. The information returned varies according to
+the specified control and is mapped by a structure appropriate for that
+control.
+.LP
+GetDeviceControl will fail with a BadValue error if the server does not support
+the specified control. It will fail with a BadMatch error if the device
+does not support the specified control.
+.LP
+Supported device controls and the information returned for them include:
+.LP
+.TS
+l lw(4i).
+T{
+DEVICE_RESOLUTION:
+T} T{
+[control: CARD16
+.br
+\ length: CARD16
+.br
+\ num_valuators: CARD8
+.br
+\ resolutions: LISTofCARD32
+.br
+\ min_resolutions: LISTofCARD32
+.br
+\ max_resolutions: LISTofCARD32]
+T}
+.TE
+.LP
+This device control returns a list of valuators and the range of valid
+resolutions allowed for each. Valuators are numbered beginning with 0.
+Resolutions for all valuators on the device are returned.
+For each valuator i on the device, resolutions[i] returns the current setting
+of the resolution, min_resolutions[i] returns the minimum valid setting,
+and max_resolutions[i] returns the maximum valid setting.
+.LP
+When this control is specified, XGetDeviceControl will fail with a BadMatch
+error if the specified device has no valuators.
+.sp 1.5
+ChangeDeviceControl
+.in .5i
+device: DEVICE
+.br
+XID: controlId
+.br
+control: DeviceControl
+.br
+.sp
+.in -.5i
+.LP
+where
+.in +.5i
+.br
+.TS
+l lw(4i).
+T{
+DeviceControl:
+T} T{
+DeviceResolutionControl
+T}
+.TE
+.in -.5i
+.br
+.sp
+Errors: Length, Device, Match, Value
+.br
+=>
+.in +.5i
+status: {Success, DeviceBusy, AlreadyGrabbed}
+.br
+.sp
+.in -.5i
+.LP
+ChangeDeviceControl changes the specifed device control according to the values
+specified in the DeviceControl structure. The device control must be supported
+by the target server and device or an error will result.
+.LP
+The information passed with this request varies according to the specified
+control and is mapped by a structure appropriate for that control.
+.LP
+ChangeDeviceControl will fail with a BadValue error if the server does not
+support the specified control. It will fail with a BadMatch error if the
+server supports the specified control, but the requested device does not.
+The request will fail and return a status of DeviceBusy if another client
+already has the device open with a device control state that conflicts with
+the one specified in the request. It will fail with a status of
+AlreadyGrabbed if some other client has grabbed the specified device. If
+the request succeeds, Success is returned. If it fails, the device control
+is left unchanged.
+.LP
+Supported device controls and the information specified for them include:
+.LP
+.TS
+l lw(4i).
+T{
+DEVICE_RESOLUTION:
+T} T{
+[control: CARD16
+.br
+\ length: CARD16
+.br
+\ first_valuator: CARD8
+.br
+\ num_valuators: CARD8
+.br
+\ resolutions: LISTofCARD32]
+T}
+.TE
+.LP
+This device control changes the resolution of the specified valuators
+on the specified extension input device. Valuators are numbered beginning
+with zero. Only the valuators in the range specified by first_valuator
+and num_valuators are set. A value of -1 in the resolutions list indicates
+that the resolution for this valuator is not to be changed. num_valuators
+specifies the number of valuators in the resolutions list.
+.LP
+When this control is specified, XChangeDeviceControl will fail with a BadMatch
+error if the specified device has no valuators. If a resolution is specified
+that is not within the range of valid values (as returned by XGetDeviceControl)
+the request will fail with a BadValue error. If the number of valuators
+supported by the device is less than the expression first_valuator +
+num_valuators, a BadValue error will result.
+.LP
+If the request fails for any reason, none of the valuator resolutions will be
+changed.
+.NH 2
+Selecting Extension Device Events
+.XS
+\*(SN Selecting Extension Device Events
+.XE
+.LP
+Extension input events are selected using the \fBSelectExtensionEvent\fP
+request.
+.sp 1.5
+SelectExtensionEvent
+.in .5i
+window: WINDOW
+.br
+interest: LISTofEVENTCLASS
+.br
+.sp
+Errors: Window, Class, Access
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request specifies to the server the events within the specified window
+which are of interest to the client. As with the core \fBXSelectInput\fP
+function, multiple clients can select input on the same window.
+.LP
+\fBXSelectExtensionEvent\fP requires a list of \fIevent classes\fP.
+An event class is a 32-bit number that combines an event type and
+device id, and is used to indicate which event a client wishes to
+receive and from which device it wishes to receive it. Macros
+are provided to obtain event classes from the data returned by
+the \fBXOpenDevice\fP request. The names of these macros correspond
+to the desired events, i.e. the \fBDeviceKeyPress\fP is used to
+obtain the event class for \fBDeviceKeyPress\fP events. The syntax
+of the macro invocation is:
+.sp 1.5
+DeviceKeyPress (device, event_type, event_class);
+.in .5i
+device: DEVICE
+.br
+event_type: INT
+.br
+event_class: INT
+.in -.5i
+.br
+.LP
+The value returned in \fBevent_type\fP is the value that will be contained in
+the event type field of the \fBXDeviceKeyPressEvent\fP when it is received by
+the client. The value returned in \fBevent_class\fP is the value that should
+be passed in making an \fBXSelectExtensionEvent\fP request to receive
+\fBDeviceKeyPress\fP events.
+.LP
+For \fBDeviceButtonPress\fP events, the client may specify whether
+or not an implicit passive grab should be done when the button is
+pressed. If the client wants to guarantee that it will receive
+a \fBDeviceButtonRelease\fP event for each \fBDeviceButtonPress\fP
+event it receives, it should specify the \fBDeviceButtonPressGrab\fP
+event class as well as the \fBDeviceButtonPress\fP event class.
+This restricts the client in that only one client at a time
+may request \fBDeviceButtonPress\fP events from the same device and
+window if any client specifies this class.
+.LP
+If any client has specified the \fBDeviceButtonPressGrab\fP class, any requests
+by any other client that specify the same device and window and specify
+\fBDeviceButtonPress\fP or \fBDeviceButtonPressGrab\fP will
+cause an \fBAccess\fP error to be generated.
+.LP
+If only the \fBDeviceButtonPress\fP class is specified, no implicit
+passive grab will be done when a button is pressed on the device.
+Multiple clients may use this class to specify the same device and
+window combination.
+.LP
+A client may also specify the \fBDeviceOwnerGrabButton\fP class. If it has
+specified both the \fBDeviceButtonPressGrab\fP and the
+\fBDeviceOwnerGrabButton\fP classes, implicit passive grabs will activate
+with owner_events set to \fBTrue\fP. If only the
+\fBDeviceButtonPressGrab\fP class is specified, implicit passive grabs will
+activate with owner_events set to \fBFalse\fP.
+.LP
+The client may select \fBDeviceMotion\fP events only when a
+button is down. It does this by specifying the event classes
+\fBButton1Motion\fP through \fBButton5Motion\fP, or \fBButtonMotion\fP.
+An input device will only support
+as many button motion classes as it has buttons.
+.NH 2
+Determining Selected Events
+.XS
+\*(SN Determining Selected Events
+.XE
+.LP
+To determine which extension events are currently selected from a given
+window, use \fBGetSelectedExtensionEvents\fP.
+.sp 1.5
+GetSelectedExtensionEvents
+.in .5i
+window: WINDOW
+.br
+.in -.5i
+=>
+.in +.5i
+.br
+this-client: LISTofEVENTCLASS
+.br
+all-clients: LISTofEVENTCLASS
+.br
+.sp
+Errors: Window
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request returns two lists specifying the events selected on the specified
+window. One list gives the extension events selected by this client from
+the specified window. The other list gives the extension events selected by
+all clients from the specified window. This information is equivalent
+to that returned by your-event-mask and all-event-masks in a
+\fBGetWindowAttributes\fP request.
+.NH 2
+Controlling Event Propagation
+.XS
+\*(SN Controlling Event Propagation
+.XE
+.LP
+Extension events propagate up the window hierarchy in the same manner
+as core events. If a window is not interested in an extension event,
+it usually propagates to the closest ancestor that is interested,
+unless the dont_propagate list prohibits it.
+Grabs of extension devices may alter the set of windows that receive a
+particular extension event.
+.LP
+Client programs may control extension event propagation through the use
+of the following two requests.
+.LP
+\fBXChangeDeviceDontPropagateList\fP adds an event to or deletes an event from
+the do_not_propagate list of extension events for the specified window. This
+list is maintained for the life of the window, and is not altered if the
+client terminates.
+.LP
+.sp 1.5
+ChangeDeviceDontPropagateList
+.in .5i
+window: WINDOW
+.br
+eventclass: LISTofEVENTCLASS
+.br
+mode: {AddToList, DeleteFromList}
+.br
+.sp
+Errors: Window, Class, Mode
+.br
+.in -.5i
+.sp 1.5
+.LP
+This function modifies the list specifying the events that are not propagated
+to the ancestors of the specified window. You may use the modes \fBAddToList\fP
+or \fBDeleteFromList\fP.
+.sp 1.5
+GetDeviceDontPropagateList
+.in .5i
+window: WINDOW
+.br
+.sp
+Errors: Window
+.br
+.in -.5i
+=>
+.in +.5i
+dont-propagate-list: LISTofEVENTCLASS
+.br
+.sp
+.in -.5i
+.sp 1.5
+.LP
+This function returns a list specifying the events that are not propagated
+to the ancestors of the specified window.
+.NH 2
+Sending Extension Events
+.XS
+\*(SN Sending Extension Events
+.XE
+.LP
+One client program may send an event to another via the
+\fBXSendExtensionEvent\fP function.
+.LP
+The event in the \fBXEvent\fP structure must be one of the events defined
+by the input extension, so that the X server can correctly byte swap the
+contents as necessary. The contents of the event are otherwise unaltered
+and unchecked by the X server except to force send_event to \fBTrue\fP
+in the forwarded event and to set the sequence number in the event correctly.
+.LP
+XSendExtensionEvent returns zero if the conversion-to-wire protocol
+failed, otherwise it returns nonzero.
+.sp 1.5
+SendExtensionEvent
+.in .5i
+device: DEVICE
+.br
+destination: WINDOW
+.br
+propagate: BOOL
+.br
+eventclass: LISTofEVENTCLASS
+.br
+event: XEVENT
+.in -.5i
+.sp
+.br
+Errors: Device, Value, Class, Window
+.NH 2
+Getting Motion History
+.XS
+\*(SN Getting Motion History
+.XE
+.LP
+.sp 1.5
+GetDeviceMotionEvents
+.in .5i
+device: DEVICE
+.br
+start, stop: TIMESTAMP or CurrentTime
+.br
+.in -.5i
+=>
+.br
+.in +.5i
+nevents_return: CARD32
+.br
+mode_return: {Absolute, Relative}
+.br
+axis_count_return: CARD8
+.br
+events: LISTofDEVICETIMECOORD
+.br
+.sp
+.in -.5i
+where
+.br
+.in +.5i
+.TS
+l lw(4i).
+T{
+DEVICETIMECOORD:
+T} T{
+[data:LISTofINT32
+\ time:TIMESTAMP]
+T}
+.TE
+.sp
+Errors: Device, Match
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request returns all positions in the device's motion history buffer
+that fall between the specified start and stop times inclusive. If the
+start time is in the future, or is later than the stop time, no positions
+are returned.
+.LP
+The data field of the DEVICETIMECOORD structure is a sequence of
+data items. Each item is of type INT32, and there is one data item
+per axis of motion reported by the device.
+The number of axes reported
+by the device is returned in the axis_count variable.
+.LP
+The value of the data items depends on the mode of the device, which
+is returned in the mode variable.
+If the mode is Absolute, the data items are the raw values
+generated by the device. These may be scaled by the client program
+using the maximum values that the device can generate for each axis
+of motion that it reports. The maximum and minimum values for each
+axis are reported by the \fBListInputDevices\fP request.
+.LP
+If the mode is Relative, the data items are the relative values
+generated by the device. The client program must choose an initial
+position for the device and maintain a current position by
+accumulating these relative values.
+.NH 2
+Changing The Core Devices
+.XS
+\*(SN Changing The Core Devices
+.XE
+.LP
+These requests are provided to change which physical device is used
+as the X pointer or X keyboard.
+.NT
+Using these requests may change the characteristics of the core devices.
+The new pointer device may have a different number of buttons than the
+old one did, or the new keyboard device may have a different number of
+keys or report a different range of keycodes. Client programs may be
+running that depend on those characteristics. For example, a client
+program could allocate an array based on the number of buttons on the
+pointer device, and then use the button numbers received in button events
+as indicies into that array. Changing the core devices could cause
+such client programs to behave improperly or abnormally terminate.
+.NE
+.LP
+These requests change the X keyboard or X pointer device and generate
+an \fBChangeDeviceNotify\fP event and a \fBMappingNotify\fP event.
+The \fBChangeDeviceNotify\fP event is sent only to those clients that have
+expressed an interest in receiving that event via the
+\fBXSelectExtensionEvent\fP request.
+The specified device becomes the
+new X keyboard or X pointer device. The location of the core device
+does not change as a result of this request.
+.LP
+These requests fail and return \fBAlreadyGrabbed\fP if either the specified
+device or the core device it would replace are grabbed by some other
+client. They fail and return \fBGrabFrozen\fP if either device is frozen
+by the active grab of another client.
+.LP
+These requests fail with a \fBBadDevice\fP error if the specified device is
+invalid, or has not previously been opened via \fBOpenDevice\fP.
+.sp 2
+To change the X keyboard device, use the \fBChangeKeyboardDevice\fP request.
+The specified device must support input class Keys (as reported in the
+ListInputDevices request) or the request will fail with a \fBBadMatch\fP error.
+Once the device has successfully replaced one of the core devices, it
+is treated as a core device until it is in turn replaced by another
+ChangeDevice request, or until the server terminates. The termination
+of the client that changed the device will not cause it to change back.
+Attempts to use the CloseDevice request to close the new core device will
+fail with a BadDevice error.
+.LP
+The focus state of the new keyboard is the same as the focus state of the old
+X keyboard. If the new keyboard was not initialized with a \fBFocusRec\fP,
+one is added by the \fBChangeKeyboardDevice\fP request. The X keyboard is
+assumed to have a \fBKbdFeedbackClassRec\fP. If the device was initialized
+without a \fBKbdFeedbackClassRec\fP, one will be added by this request.
+The \fBKbdFeedbackClassRec\fP will specify a null routine as the control
+procedure and the bell procedure.
+.sp 1.5
+ChangeKeyboardDevice
+.in .5i
+device: DEVICE
+.br
+.sp
+Errors: Device, Match
+.br
+.in -.5i
+=>
+.br
+.in +.5i
+status: Success, AlreadyGrabbed, Frozen
+.br
+.sp 1.5
+.LP
+To change the X pointer device, use the \fBChangePointerDevice\fP request.
+The specified device must support input class Valuators (as reported in the
+ListInputDevices request) or the request will fail with a BadMatch error.
+The valuators to be used as the x- and y-axes of the pointer device must
+be specified. Data from other valuators on the device will be ignored.
+.LP
+The X pointer device does not contain a \fBFocusRec\fP. If the new
+pointer was initialized with a \fBFocusRec\fP, it is freed by the
+\fBChangePointerDevice\fP request. The X pointer is assumed to have a
+\fBButtonClassRec\fP and a \fBPtrFeedbackClassRec\fP. If the device
+was initialized without a \fBButtonClassRec\fP or a \fBPtrFeedbackClassRec\fP,
+one will be added by this request. The \fBButtonClassRec\fP added will
+have no buttons, and the \fBPtrFeedbackClassRec\fP will specify a null
+routine as the control procedure.
+.LP
+If the specified device reports absolute positional information, and the
+server implementation does not allow such a device to be used as the
+X pointer, the request will fail with a \fBBadDevice\fP error.
+.LP
+Once the device has successfully replaced one of the core devices, it
+is treated as a core device until it is in turn replaced by another
+ChangeDevice request, or until the server terminates. The termination
+of the client that changed the device will not cause it to change back.
+Attempts to use the CloseDevice request to close the new core device will
+fail with a BadDevice error.
+.sp 1.5
+ChangePointerDevice
+.in .5i
+device: DEVICE
+.br
+xaxis: CARD8
+.br
+yaxis: CARD8
+.sp
+Errors: Device, Match
+.br
+.in -.5i
+=>
+.br
+.in +.5i
+status: Success, AlreadyGrabbed, Frozen
+.br
+.sp 1.5
+.NH 2
+Event Synchronization And Core Grabs
+.XS
+\*(SN Event Synchronization And Core Grabs
+.XE
+.LP
+Implementation of the input extension requires an extension of the
+meaning of event synchronization for the core grab requests. This is
+necessary in order to allow window managers to freeze all input devices
+with a single request.
+.LP
+The core grab requests require a \fBpointer_mode\fP and \fBkeyboard_mode\fP
+argument. The meaning of these modes is changed by the input extension.
+For the \fBXGrabPointer\fP and \fBXGrabButton\fP requests, \fBpointer_mode\fP
+controls synchronization of the pointer device, and \fBkeyboard_mode\fP
+controls the synchronization of all other input devices.
+For the \fBXGrabKeyboard\fP
+and \fBXGrabKey\fP requests, \fBpointer_mode\fP controls the synchronization
+of all input devices except the X keyboard, while \fBkeyboard_mode\fP controls
+the synchronization of the keyboard. When using one of the core grab
+requests, the synchronization of extension devices
+is controlled by the mode specified for the device not being grabbed.
+.NH 2
+Extension Active Grabs
+.XS
+\*(SN Extension Active Grabs
+.XE
+.LP
+Active grabs of extension devices are supported via the \fBGrabDevice\fP
+request in the same way that core devices are grabbed using the core
+GrabKeyboard request, except that a \fIDevice\fP is passed as
+a function parameter. A list of events that the client wishes to
+receive is also passed. The \fBUngrabDevice\fP request allows a
+previous active grab for an extension device to be released.
+.LP
+To grab an extension device, use the \fBGrabDevice\fP request.
+The device must have previously been opened using the \fBOpenDevice\fP
+request.
+.sp 1.5
+GrabDevice
+.br
+.in .5i
+device: DEVICE
+.br
+grab-window: WINDOW
+.br
+owner-events: BOOL
+.br
+event-list: LISTofEVENTCLASS
+.br
+this-device-mode: {Synchronous, Asynchronous}
+.br
+other-device-mode: {Synchronous, Asynchronous}
+.br
+time:TIMESTAMP or CurrentTime
+.br
+.in -.5i
+=>
+.br
+.in +.5i
+status: Success, AlreadyGrabbed, Frozen, InvalidTime, NotViewable
+.br
+.sp
+Errors: Device, Window, Value
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request actively grabs control of the specified input device. Further
+input events from this device are reported only to the grabbing client.
+This request overrides any previous active grab by this client for this
+device.
+.LP
+The event-list parameter is a pointer to a list of event classes. These
+are used to indicate which events the client wishes to receive while the
+device is grabbed. Only event classes obtained from the grabbed device
+are valid.
+.LP
+If owner-events is \fBFalse\fP, input events generated from this
+device are reported with respect to grab-window, and are only reported if
+selected by being included in the event-list.
+If owner-events is
+\fBTrue\fP, then if a generated event would normally be reported to this
+client, it is reported normally, otherwise the event is reported with
+respect to the grab-window, and is only reported if selected by being
+included in the event-list. For either value of owner-events, unreported
+events are discarded.
+.LP
+If this-device-mode is \fBAsynchronous\fP, device event processing continues
+normally. If the device is currently frozen by this client, then processing
+of device events is resumed. If this-device-mode is \fBSynchronous\fP,
+the state of the grabbed device (as seen by means of the protocol) appears
+to freeze,
+and no further device events are generated by the server until the grabbing
+client issues a releasing \fBAllowDeviceEvents\fP request or until the device
+grab is released. Actual device input events are not lost while the device
+is frozen; they are simply queued for later processing.
+.LP
+If other-device-mode is \fBAsynchronous\fP, event processing is
+unaffected by activation of the grab. If other-device-mode is
+\fBSynchronous\fP, the state of all input devices except the grabbed one
+(as seen by means of the protocol) appears to
+freeze, and no further events are generated by the server until
+the grabbing client issues a releasing \fBAllowDeviceEvents\fP request or
+until the device grab is released. Actual events are not lost
+while the devices are frozen; they are simply queued for later
+processing.
+.LP
+This request generates \fBDeviceFocusIn\fP and \fBDeviceFocusOut\fP events.
+.LP
+This request fails and returns:
+.IP \(bu 3n
+\fBAlreadyGrabbed\fP
+If the device is actively grabbed by some other client.
+.IP \(bu 3n
+\fBNotViewable\fP
+If grab-window is not viewable.
+.IP \(bu 3n
+\fBInvalidTime\fP
+If the specified time is earlier
+than the last-grab-time for the specified device
+or later than the current X server time. Otherwise,
+the last-grab-time for the specified device is set
+to the specified time and
+\fBCurrentTime\fP
+is replaced by the current X server time.
+.IP \(bu 3n
+\fBFrozen\fP
+If the device is frozen by an active grab of another client.
+.LP
+If a grabbed device is closed by a client while an active grab by that
+client is in
+effect, that active grab will be released. Any passive grabs established by
+that client will be released. If the device is frozen only by an active grab
+of the requesting client, it is thawed.
+.LP
+To release a grab of an extension device, use \fBUngrabDevice\fP.
+.sp 1.5
+UngrabDevice
+.br
+.in .5i
+device: DEVICE
+.br
+time: TIMESTAMP or CurrentTime
+.br
+.sp
+Errors: Device
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request releases the device if this client has it actively grabbed
+(from either \fBGrabDevice\fP or \fBGrabDeviceKey\fP) and releases
+any queued events. If any devices were frozen by the grab,
+\fBUngrabDevice\fP thaws them.
+The request has no effect if the specified time is earlier
+than the last-device-grab time or is later than the current server time.
+.LP
+This request generates \fBDeviceFocusIn\fP and \fBDeviceFocusOut\fP events.
+.LP
+An \fBUngrabDevice\fP is performed automatically if the event window for an
+active device grab becomes not viewable.
+.NH 2
+Passively Grabbing A Key
+.XS
+\*(SN Passively Grabbing A Key
+.XE
+.LP
+Passive grabs of buttons and keys on extension devices are supported
+via the \fBGrabDeviceButton\fP and \fBGrabDeviceKey\fP requests.
+These passive grabs are released via the \fBUngrabDeviceKey\fP and
+\fBUngrabDeviceButton\fP requests.
+.LP
+To passively grab a single key on an extension device, use \fBGrabDeviceKey\fP.
+That device must have previously been opened using the \fBOpenDevice\fP
+request.
+.sp 1.5
+GrabDeviceKey
+.br
+.LP
+.in .5i
+device: DEVICE
+.br
+keycode: KEYCODE or AnyKey
+.br
+modifiers: SETofKEYMASK or AnyModifier
+.br
+modifier-device: DEVICE or NULL
+.br
+grab-window: WINDOW
+.br
+owner-events: BOOL
+.br
+event-list: LISTofEVENTCLASS
+.br
+this-device-mode: {Synchronous, Asynchronous}
+.br
+other-device-mode: {Synchronous, Asynchronous}
+.br
+.sp
+Errors: Device, Match, Access, Window, Value
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core \fBGrabKey\fP request. It establishes a
+passive grab on a device. Consequently, In the future:
+.IP \(bu 3n
+IF the device is not grabbed and the specified key, which itself can be a
+modifier key, is logically pressed when the specified modifier keys
+logically are down on the specified modifier device (and no other
+keys are down),
+.IP \(bu 3n
+AND no other modifier keys logically are down,
+.IP \(bu 3n
+AND EITHER the grab window is an ancestor of (or is) the focus window
+OR the grab window is a descendent of the focus window and contains the pointer,
+.IP \(bu 3n
+AND a passive grab on the same device and key combination does not exist on any
+ancestor of the grab window,
+.IP \(bu 3n
+THEN the device is actively grabbed, as for \fBGrabDevice\fP,
+the last-device-grab time is set to the time at which the key was pressed
+(as transmitted in the \fBDeviceKeyPress\fP event), and the
+\fBDeviceKeyPress\fP event is reported.
+.LP
+The interpretation of the remaining arguments is as for \fBGrabDevice\fP.
+The active grab is terminated automatically when logical state of the
+device has the specified key released (independent of the logical state of the
+modifier keys).
+.LP
+Note that the logical state of a device (as seen by means of the X protocol)
+may lag the physical state if device event processing is frozen.
+.LP
+A modifier of \fBAnyModifier\fP is equivalent to issuing the request for all
+possible modifier combinations (including the combination of no modifiers).
+It is not required that all modifiers specified have currently assigned
+keycodes.
+A key of \fBAnyKey\fP is equivalent to issuing
+the request for all possible keycodes. Otherwise, the key must be in
+the range specified by min-keycode and max-keycode in the \fBListInputDevices\fP
+request. If it is not within that range, \fBGrabDeviceKey\fP generates a
+\fBValue\fP error.
+.LP
+\fBNULL\fP may be passed for the modifier_device. If the modifier_device is
+\fBNULL\fP, the core X keyboard is used as the modifier_device.
+.LP
+An \fBAccess\fP error is generated if some other client has issued a
+\fBGrabDeviceKey\fP with the same device and key combination on the
+same window. When using \fBAnyModifier\fP or \fBAnyKey\fP,
+the request fails completely and the X server generates a \fBAccess\fP
+error and no grabs are established if there is a conflicting grab for any
+combination.
+.LP
+This request cannot be used to grab a key on the X keyboard device.
+The core \fBGrabKey\fP request should be used for that purpose.
+.LP
+To release a passive grab of a single key on an extension device,
+use \fBUngrabDeviceKey\fP.
+.sp 1.5
+UngrabDeviceKey
+.LP
+.in .5i
+device: DEVICE
+.br
+keycode: KEYCODE or AnyKey
+.br
+modifiers: SETofKEYMASK or AnyModifier
+.br
+modifier-device: DEVICE or NULL
+.br
+grab-window: WINDOW
+.br
+.sp
+Errors: Device, Match, Window, Value, Alloc
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core \fBUngrabKey\fP request. It releases
+the key combination on the specified window if it was grabbed by this
+client. A modifier of \fBAnyModifier\fP is equivalent to issuing the
+request for all possible modifier combinations (including the combination
+of no modifiers). A key of \fBAnyKey\fP is equivalent to issuing the
+request for all possible keycodes. This request has no effect on an
+active grab.
+.LP
+\fBNULL\fP may be passed for the modifier_device. If the modifier_device is
+\fBNULL\fP, the core X keyboard is used as the modifier_device.
+.NH 2
+Passively Grabbing A Button
+.XS
+\*(SN Passively Grabbing A Button
+.XE
+.LP
+To establish a passive grab for a single button on an extension device,
+use \fBGrabDeviceButton\fP.
+.sp 1.5
+GrabDeviceButton
+.LP
+.in .5i
+device: DEVICE
+.br
+button: BUTTON or AnyButton
+.br
+modifiers: SETofKEYMASK or AnyModifier
+.br
+modifier-device: DEVICE or NULL
+.br
+grab-window: WINDOW
+.br
+owner-events: BOOL
+.br
+event-list: LISTofEVENTCLASS
+.br
+this-device-mode: {Synchronous, Asynchronous}
+.br
+other-device-mode: {Synchronous, Asynchronous}
+.br
+.sp
+Errors: Device, Match, Window, Access, Value
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core \fBGrabButton\fP request. It
+establishes an explicit passive grab for a button on an extension input
+device. Since the server does not track extension devices, no cursor is
+specified with this request. For the same reason, there is no
+confine-to parameter. The device must have previously been opened using the
+\fBOpenDevice\fP request.
+.LP
+The \fBGrabDeviceButton\fP request establishes a passive grab on a device.
+Consequently, in the future,
+.IP \(bu 3n
+IF the device is not grabbed and the specified button is logically pressed
+when the specified modifier keys logically are down
+(and no other buttons or modifier keys are down),
+.IP \(bu 3n
+AND the grab window contains the device,
+.IP \(bu 3n
+AND a passive grab on the same device and button/ key combination does not
+exist on any ancestor of the grab window,
+.IP \(bu 3n
+THEN the device is actively grabbed, as for \fBGrabDevice\fP,
+the last-grab time is set to the time at which the button was pressed
+(as transmitted in the \fBDeviceButtonPress\fP event), and the
+\fBDeviceButtonPress\fP event is reported.
+.LP
+The interpretation of the remaining arguments is as for
+\fBGrabDevice\fP.
+The active grab is terminated automatically when logical state of the
+device has all buttons released (independent of the logical state of
+the modifier keys).
+.LP
+Note that the logical state of a device (as seen by means of the X protocol)
+may lag the physical state if device event processing is frozen.
+.LP
+A modifier of \fBAnyModifier\fP is equivalent to issuing the request for all
+possible modifier combinations (including the combination of no modifiers).
+It is not required that all modifiers specified have currently assigned
+keycodes. A button of \fBAnyButton\fP is equivalent to issuing the request
+for all possible buttons. It is not required that the
+specified button be assigned to a physical button.
+.LP
+\fBNULL\fP may be passed for the modifier_device. If the modifier_device is
+\fBNULL\fP, the core X keyboard is used as the modifier_device.
+.LP
+An \fBAccess\fP error is generated if some other client has issued a
+\fBGrabDeviceButton\fP with the same device and button combination on the
+same window. When using \fBAnyModifier\fP or \fBAnyButton\fP, the request
+fails completely and the X server generates a \fBAccess\fP
+error and no grabs are established if there is a conflicting grab for any
+combination. The request has no effect on an active grab.
+.LP
+This request cannot be used to grab a button on the X pointer
+device. The core \fBGrabButton\fP request should be used for that
+purpose.
+.LP
+To release a passive grab of a button on an extension device, use
+\fBUngrabDeviceButton\fP.
+.sp 1.5
+UngrabDeviceButton
+.br
+.LP
+.in .5i
+device: DEVICE
+.br
+button: BUTTON or AnyButton
+.br
+modifiers: SETofKEYMASK or AnyModifier
+.br
+modifier-device: DEVICE or NULL
+.br
+grab-window: WINDOW
+.br
+.sp
+.br
+Errors: Device, Match, Window, Value, Alloc
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core UngrabButton request. It releases
+the passive button/key combination on the specified window if it was grabbed
+by the client. A modifiers of \fBAnyModifier\fP is equivalent to issuing the
+request for all possible modifier combinations (including the combination
+of no modifiers). A button of \fBAnyButton\fP is equivalent to issuing the
+request for all possible buttons. This request has no effect on an
+active grab. The device must have previously been opened using the
+\fBOpenDevice\fP request otherwise a \fBDevice\fP error will be
+generated.
+.LP
+\fBNULL\fP may be passed for the modifier_device. If the modifier_device is
+\fBNULL\fP, the core X keyboard is used as the modifier_device.
+.LP
+This request cannot be used to ungrab a button on the X pointer
+device. The core \fBUngrabButton\fP request should be used for that
+purpose.
+.NH 2
+Thawing A Device
+.XS
+\*(SN Thawing A Device
+.XE
+.LP
+To allow further events to be processed when a device has been frozen,
+use \fBAllowDeviceEvents\fR.
+.sp 1.5
+AllowDeviceEvents
+.br
+.in .5i
+device: DEVICE
+.br
+event-mode: {AsyncThisDevice, SyncThisDevice, AsyncOtherDevices,
+ReplayThisdevice, AsyncAll, or SyncAll}
+.br
+time:TIMESTAMP or CurrentTime
+.br
+.sp
+Errors: Device, Value
+.br
+.in -.5i
+.sp 1.5
+.LP
+The \fBAllowDeviceEvents\fP request releases some queued events if the client
+has caused a device to freeze. The request has no effect if the
+specified time is earlier than the last-grab time of the most recent
+active grab for the client, or if the specified time is later than the
+current X server time.
+.LP
+The following describes the processing that occurs depending on what constant
+you pass to the event-mode argument:
+.IP \(bu 3n \fBAsyncThisDevice\fP
+If the specified device is frozen by the client,
+event processing for that device
+continues as usual. If the device is frozen multiple times by the client on
+behalf of multiple separate grabs, AsyncThisDevice thaws for all.
+AsyncThisDevice has no effect if the specified device is not frozen by the
+client, but the device need not be grabbed by the client.
+.IP \(bu 3n \fBSyncThisDevice\fP
+If the specified device is frozen and actively grabbed by the client,
+event processing for that device continues normally until the next
+button or key event is reported to the client.
+At this time,
+the specified device again appears to freeze.
+However, if the reported event causes the grab to be released,
+the specified device does not freeze.
+SyncThisDevice has no effect if the specified device is not frozen by the client
+or is not grabbed by the client.
+.IP \(bu 3n \fBReplayThisDevice\fP
+If the specified device is actively grabbed by the client and is frozen
+as the result of an event having been sent to the client (either from the
+activation of a GrabDeviceButton or from a previous AllowDeviceEvents with
+mode SyncThisDevice, but not from a Grab),
+the grab is released and that event is completely reprocessed.
+This time, however, the request ignores any passive grabs at or above
+(towards the root) the grab-window of the grab just released.
+The request has no effect if the specified device is not grabbed by the client
+or if it is not frozen as the result of an event.
+.IP \(bu 3n \fBAsyncOtherDevices\fP
+If the remaining devices are frozen by the client,
+event processing for them continues as usual.
+If the other devices are frozen multiple times by the client on behalf of
+multiple separate grabs,
+AsyncOtherDevices ``thaws'' for all.
+AsyncOtherDevices has no effect if the devices are not frozen by the client,
+but those devices need not be grabbed by the client.
+.IP \(bu 3n \fBSyncAll\fP
+If all devices are frozen by the client,
+event processing (for all devices) continues normally until the next
+button or key event is reported
+to the client for a grabbed device (button event for the grabbed device, key
+or motion event for the device), at which time the devices again appear to
+freeze. However, if the reported event causes the grab to be released,
+then the devices do not freeze (but if any device is still
+grabbed, then a subsequent event for it will still cause all devices
+to freeze).
+SyncAll has no effect unless all devices
+are frozen by the client. If any device is frozen twice
+by the client on behalf of two separate grabs,
+SyncAll "thaws" for both (but a subsequent freeze for SyncAll
+will only freeze each device once).
+.IP \(bu 3n \fBAsyncAll\fP
+If all devices are frozen by the
+client, event processing (for all devices) continues normally.
+If any device is frozen multiple times by the client on behalf of multiple
+separate grabs, AsyncAll "thaws" for all.
+AsyncAll has no effect unless all
+devices are frozen by the client.
+.LP
+AsyncThisDevice, SyncThisDevice, and ReplayThisDevice
+have no effect on the processing of events from the remaining devices.
+AsyncOtherDevices has no effect on the processing of events from the
+specified device.
+When the event_mode is SyncAll or AsyncAll, the
+device parameter is ignored.
+.LP
+It is possible for several grabs of different devices (by the same
+or different clients) to be active simultaneously.
+If a device is frozen on behalf of any grab,
+no event processing is performed for the device.
+It is possible for a single device to be frozen because of several grabs.
+In this case,
+the freeze must be released on behalf of each grab before events can
+again be processed.
+.LP
+.NH 2
+Controlling Device Focus
+.XS
+\*(SN Controlling Device Focus
+.XE
+.LP
+The current focus window for an extension input device can be
+determined using the \fBGetDeviceFocus\fP request.
+Extension devices are focused using the \fBSetDeviceFocus\fP
+request in the same way that the keyboard is focused using
+the \fBSetInputFocus\fP request, except that a device is specified as
+part of the request. One additional focus state, \fBFollowKeyboard\fP,
+is provided for extension devices.
+.LP
+To get the current focus state, revert state, and focus time of an extension device,
+use \fBGetDeviceFocus\fP.
+.sp 1.5
+GetDeviceFocus
+.br
+.LP
+.in .5i
+device: DEVICE
+.br
+.in -.5i
+=>
+.in +.5i
+focus: WINDOW, PointerRoot, FollowKeyboard, or None
+.br
+revert-to: Parent, PointerRoot, FollowKeyboard, or None
+.br
+focus-time: TIMESTAMP
+.br
+.sp
+Errors: Device, Match
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request returns the current focus state, revert-to state,
+and last-focus-time of an extension device.
+.LP
+To set the focus of an extension device, use \fBSetDeviceFocus\fP.
+.sp 1.5
+SetDeviceFocus
+.br
+.in .5i
+device: DEVICE
+.br
+focus: WINDOW, PointerRoot, FollowKeyboard, or None
+.br
+revert-to: Parent, PointerRoot, FollowKeyboard, or None
+.br
+focus-time: TIMESTAMP
+.br
+.sp
+Errors: Device, Window, Value, Match
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request changes the focus for an extension input device and the
+last-focus-change-time. The request has no effect if the specified
+time is earlier than the last-focus-change-time or is later than the
+current X server time. Otherwise, the last-focus-change-time is set to the
+specified time, with CurrentTime replaced by the current server time.
+.LP
+The action taken by the server when this request is requested depends
+on the value of the focus argument:
+.IP \(bu 3n
+If the focus argument is \fBNone\fP, all input events from this device
+will be discarded until a new focus window is set. In this case, the
+revert-to argument is ignored.
+.IP \(bu 3n
+If a window ID is assigned to the focus argument, it becomes the focus
+window of the device. If an input event from the device would normally
+be reported to this window or to one of its inferiors, the event is
+reported normally. Otherwise, the event is reported relative to the focus
+window.
+.IP \(bu 3n
+If you assign \fBPointerRoot\fP to the focus argument, the focus window is
+dynamically taken to be the root window of whatever screen the pointer is
+on at each input event. In this case, the revert-to argument is ignored.
+.IP \(bu 3n
+If you assign \fBFollowKeyboard\fP to the focus argument, the focus window is
+dynamically taken to be the same as the focus of the X keyboard at each
+input event.
+.LP
+The specified focus window must be viewable at the time of the request
+(else a \fBMatch\fP error). If the focus window later becomes not viewable,
+the X server evaluates the revert-to argument
+to determine the new focus window.
+.IP \(bu 3n
+If you assign \fBRevertToParent\fP
+to the revert-to argument, the focus reverts to the parent
+(or the closest viewable ancestor), and the new revert-to value is taken to
+be \fBRevertToNone\fP.
+.IP \(bu 3n
+If you assign \fBRevertToPointerRoot\fP, \fBRevertToFollowKeyboard\fP, or \fBRevertToNone\fP
+to the revert-to argument, the focus reverts to that value.
+.LP
+When the focus reverts,
+the X server generates \fBDeviceFocusIn\fP
+and \fBDeviceFocusOut\fP
+events, but the last-focus-change time is not affected.
+.LP
+This request causes the X server to generate \fBDeviceFocusIn\fP and
+\fBDeviceFocusOut\fP events.
+.NH 2
+Controlling Device Feedback
+.XS
+\*(SN Controlling Device Feedback
+.XE
+.LP
+To get the settings of feedbacks on an extension device, use
+\fBGetFeedbackControl\fP. This request provides functionality equivalent to
+the core \fBGetKeyboardControl\fP and \fBGetPointerControl\fP functions. It
+also provides a way to control displays associated with an input device that
+are capable of displaying an integer or string.
+.sp 1.5
+GetFeedbackControl
+.br
+.in .5i
+device: DEVICE
+.br
+.in -.5i
+=>
+.in +.5i
+num_feedbacks_return: CARD16
+.br
+return_value: LISTofFEEDBACKSTATE
+.br
+.sp
+where
+.br
+.in +.5i
+.TS
+l lw(4i).
+T{
+FEEDBACKSTATE:
+T} T{
+{KbdFeedbackState, PtrFeedbackState, IntegerFeedbackState, StringFeedbackState, BellFeedbackState, LedFeedbackState}
+T}
+.TE
+.in -1.0i
+.LP
+Feedbacks are reported by class. Those
+feedbacks that are reported for the core keyboard device are in class
+\fBKbdFeedback\fP, and are returned in the
+\fBKbdFeedbackState\fP structure. The members of that structure are as follows:
+.in +.5i
+.TS
+l lw(4i).
+T{
+CLASS Kbd:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ key_click_percent: CARD8
+.br
+\ bell_percent: CARD8
+.br
+\ bell_pitch: CARD16
+.br
+\ bell_duration: CARD16
+.br
+\ led_value: BITMASK
+.br
+\ global_auto_repeat: {AutoRepeatModeOn, AutoRepeatModeOff}
+.br
+\ auto_repeats: LISTofCARD8]
+T}
+.TE
+.in -.5i
+.LP
+Those feedbacks that are equivalent to those reported for the core pointer
+are in feedback class \fBPtrFeedback\fP and are reported in the
+\fBPtrFeedbackState\fP structure. The members of that structure are:
+.LP
+.in +.5i
+.TS
+l lw(4i).
+T{
+CLASS Ptr:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ accelNumerator: CARD16
+.br
+\ accelDenominator: CARD16
+.br
+\ threshold: CARD16]
+T}
+.TE
+.in -.5i
+.LP
+Some input devices provide a means of displaying an integer. Those devices
+will support feedback class \fBIntegerFeedback\fP, which is reported in the
+\fBIntegerFeedbackState\fP structure. The members of that structure are:
+.LP
+.br
+.sp
+.in +.5i
+.TS
+l lw(4i).
+T{
+CLASS Integer:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ resolution: CARD32
+.br
+\ min-val: INT32
+.br
+\ max-val: INT32]
+T}
+.TE
+.in -.5i
+.br
+.LP
+Some input devices provide a means of displaying a string. Those devices
+will support feedback class \fBStringFeedback\fP, which is reported in the
+\fBStringFeedbackState\fP structure. The members of that structure are:
+.LP
+.in +.5i
+.TS
+l lw(4i).
+T{
+CLASS String:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ max_symbols: CARD16
+.br
+\ num_keysyms_supported: CARD16
+.br
+\ keysyms_supported: LISTofKEYSYM]
+T}
+.TE
+.in -.5i
+.br
+.LP
+Some input devices contain a bell. Those devices
+will support feedback class \fBBellFeedback\fP, which is reported in the
+\fBBellFeedbackState\fP structure. The members of that structure are:
+.LP
+.sp
+.in +.5i
+.TS
+l lw(4i).
+T{
+CLASS Bell:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ percent: CARD8
+.br
+\ pitch: CARD16
+.br
+\ duration: CARD16]
+T}
+.TE
+.in -.5i
+.br
+.sp
+The percent sets the base volume for the bell between 0 (off) and 100
+(loud) inclusive, if possible. Setting to \-1 restores the default.
+Other negative values generate a \fBValue\fP error.
+.LP
+The pitch sets the pitch (specified in Hz) of the bell, if possible.
+Setting to \-1 restores the default. Other negative values generate a
+\fBValue\fP error.
+.LP
+The duration sets the duration (specified in milliseconds) of the
+bell, if possible. Setting to \-1 restores the default.
+Other negative values generate a \fBValue\fP error.
+.LP
+A bell generator connected with the console but not directly on the
+device is treated as if it were part of the device.
+Some input devices contain LEDs. Those devices
+will support feedback class \fBLed\fP, which is reported in the
+\fBLedFeedbackState\fP structure. The members of that structure are:
+.LP
+.sp
+.in +.5i
+.TS
+l lw(4i).
+T{
+CLASS Led:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ led_mask: BITMASK
+.br
+\ led_value: BITMASK]
+T}
+.TE
+.in -.5i
+.br
+.LP
+Each bit in led_mask indicates that the corresponding led is supported by
+the feedback. At most 32 LEDs per feedback are supported.
+No standard interpretation of LEDs is defined.
+.LP
+This function will fail with a \fBBadMatch\fP error if the device specified
+in the request does not support feedbacks.
+.LP
+Errors: Device, Match
+.LP
+To change the settings of a feedback on an extension device, use
+\fBChangeFeedbackControl\fP.
+.sp 1.5
+ChangeFeedbackControl
+.br
+.in .5i
+device: DEVICE
+.br
+feedbackid: CARD8
+.br
+value-mask: BITMASK
+.br
+value: FEEDBACKCONTROL
+.br
+.sp
+Errors: Device, Match, Value
+.br
+.in -.5i
+.sp 1.5
+.TS
+l lw(4i).
+.sp
+T{
+FEEDBACKCONTROL:
+T} T{
+{KBDFEEDBACKCONTROL, PTRFEEDBACKCONTROL, INTEGERFEEDBACKCONTROL,
+STRINGFEEDBACKCONTROL, BELLFEEDBACKCONTROL, LEDFEEDBACKCONTROL}
+T}
+.TE
+.br
+.LP
+Feedback controls are grouped by class. Those feedbacks that are
+equivalent to those supported by the core keyboard are controlled
+by feedback class \fBKbdFeedbackClass\fP using the \fBKbdFeedbackControl\fP
+structure. The members of that structure are:
+.in +.5i
+.TS
+l lw(4i).
+T{
+KBDFEEDBACKCTL:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ key_click_percent: INT8
+.br
+\ bell_percent: INT8
+.br
+\ bell_pitch: INT16
+.br
+\ bell_duration: INT16
+.br
+\ led_mask: INT32
+.br
+\ led_value: INT32
+.br
+\ key: KEYCODE
+.br
+\ auto_repeat_mode: {AutoRepeatModeOn,
+.br
+\ \ AutoRepeatModeOff, AutoRepeatModeDefault}]
+T}
+.TE
+.in -.5i
+.LP
+The key_click_percent sets the volume for key clicks between 0 (off) and
+100 (loud) inclusive, if possible. Setting to \-1 restores the default.
+Other negative values generate a \fBValue\fP error.
+.LP
+If both auto_repeat_mode and key are specified, then the auto_repeat_mode
+of that key is changed, if possible. If only auto_repeat_mode is specified,
+then the global auto-repeat mode for the entire keyboard is changed,
+if possible, without affecting the per-key settings. It is a \fBMatch\fP
+error if a key is specified without an auto_repeat_mode.
+.LP
+The order in which controls are verified and altered is server-dependent.
+If an error is generated, a subset of the controls may have been altered.
+.LP
+Those feedback controls equivalent to those of the core pointer are
+controlled by feedback class \fBPtrFeedbackClass\fP using the
+\fBPtrFeedbackControl\fP
+structure. The members of that structure are as follows:
+.LP
+.in +.5i
+.TS
+l lw(4i).
+T{
+PTRFEEDBACKCTL:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ accelNumerator: INT16
+.br
+\ accelDenominator: INT16
+.br
+\ threshold: INT16]
+T}
+.TE
+.in -.5i
+.LP
+The acceleration, expressed as a fraction, is a multiplier
+for movement. For example, specifying 3/1 means the device moves three
+times as fast as normal. The fraction may be rounded arbitrarily by the
+X server. Acceleration only takes effect if the device moves more than
+threshold pixels at once and only applies to the amount beyond the value
+in the threshold argument. Setting a value to -1 restores the default.
+The values of the do-accel and do-threshold arguments must be nonzero for
+the device values to be set. Otherwise, the parameters will be unchanged.
+Negative values generate a \fBValue\fP error, as does a zero value
+for the accel-denominator argument.
+.LP
+Some devices are capable of displaying an integer. This is done using
+feedback class \fBIntegerFeedbackClass\fP using the \fBIntegerFeedbackControl\fP
+structure. The members of that structure are as follows:
+.sp
+.in +.5i
+.TS
+l lw(4i).
+T{
+INTEGERCTL:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ int_to_display: INT32]
+T}
+.TE
+.in -.5i
+.LP
+Some devices are capable of displaying an string. This is done using
+feedback class \fBStringFeedbackClass\fP using the \fBStringFeedbackCtl\fP
+structure. The members of that structure are as follows:
+.sp
+.in +.5i
+.TS
+l lw(4i).
+T{
+STRINGCTL:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ syms_to_display: LISTofKEYSYMS]
+T}
+.TE
+.in -.5i
+.LP
+Some devices contain a bell. This is done using
+feedback class \fBBellFeedbackClass\fP using the \fBBellFeedbackControl\fP
+structure. The members of that structure are as follows:
+.sp
+.in +.5i
+.TS
+l lw(4i).
+T{
+BELLCTL:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ percent: INT8
+.br
+\ pitch: INT16
+.br
+\ duration: INT16]
+T}
+.TE
+.in -.5i
+.LP
+Some devices contain leds. These can be turned on and off using
+the \fBLedFeedbackControl\fP
+structure. The members of that structure are as follows:
+.sp
+.in +.5i
+.TS
+l lw(4i).
+T{
+LEDCTL:
+T} T{
+[class: CARD8
+.br
+\ length: CARD16
+.br
+\ feedback id: CARD8
+.br
+\ led_mask: BITMASK
+.br
+\ led_value: BITMASK]
+T}
+.TE
+.in -.5i
+.LP
+Errors: Device, Match, Value
+.LP
+.NH 2
+Ringing a Bell on an Input Device
+.XS
+\*(SN Ringing a Bell on an Input Device
+.XE
+.LP
+To ring a bell on an extension input device, use \fBDeviceBell\fP.
+.sp 1.5
+DeviceBell
+.br
+.LP
+.in .5i
+device: DEVICE
+.br
+feedbackclass: CARD8
+.br
+feedbackid: CARD8
+.br
+percent: INT8
+.br
+.sp
+Errors: Device, Value
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core \fBBell\fP request. It rings the
+specified bell on the specified input device feedback, using the specified
+volume.
+The specified volume is relative to the base volume for the feedback.
+If the value for the percent argument is not in the range -100 to 100
+inclusive, a \fBValue\fP error results.
+The volume at which the bell rings when the percent argument is nonnegative is:
+.LP
+.DS
+ base - [(base * percent) / 100] + percent
+.DE
+.LP
+The volume at which the bell rings
+when the percent argument is negative is:
+.DS
+ base + [(base * percent) / 100]
+.DE
+.LP
+To change the base volume of the bell, use \fBChangeFeedbackControl\fP request.
+.LP
+.NH 2
+Controlling Device Encoding
+.XS
+\*(SN Controlling Device Encoding
+.XE
+.LP
+To get the keyboard mapping of an extension device that has keys, use
+\fBGetDeviceKeyMapping\fP.
+.sp 1.5
+GetDeviceKeyMapping
+.br
+.LP
+.in .5i
+device: DEVICE
+.br
+first-keycode: KEYCODE
+.br
+count: CARD8
+.br
+.in -.5i
+=>
+.in +.5i
+keysyms-per-keycode: CARD8
+.br
+keysyms: LISTofKEYSYM
+.br
+.sp
+Errors: Device, Match, Value
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request returns the symbols for the specified number of keycodes for the
+specified extension device, starting with the specified keycode.
+The first-keycode must be greater than or equal to
+min-keycode as returned in the connection setup (else a \fBValue\fP error),
+and
+.LP
+.DS
+first-keycode + count \- 1
+.DE
+.LP
+must be less than or equal to max-keycode as returned in the connection setup
+(else a \fBValue\fP error).
+The number of elements in the keysyms list is
+.LP
+.DS
+count * keysyms-per-keycode
+.DE
+and KEYSYM number N (counting from zero) for keycode K has an index
+(counting from zero) of
+.LP
+.DS
+(K \- first-keycode) * keysyms-per-keycode + N
+.DE
+.LP
+in keysyms.
+The keysyms-per-keycode value is chosen arbitrarily by the server
+to be large enough to report all requested symbols.
+A special KEYSYM value of
+\fBNoSymbol\fP
+is used to fill in unused elements for individual keycodes.
+.LP
+If the specified device has not first been opened by this client via
+\fBOpenDevice\fP, or if that device does not support input class Keys,
+this request will fail with a \fBDevice\fP error.
+.LP
+To change the keyboard mapping of an extension device that has keys, use
+\fBChangeDeviceKeyMapping\fP.
+.sp 1.5
+ChangeDeviceKeyMapping
+.br
+.in .5i
+device: DEVICE
+.br
+first-keycode: KEYCODE
+.br
+keysyms-per-keycode: CARD8
+.br
+keysyms: LISTofKEYSYM
+.br
+num_codes: CARD8
+.br
+.sp
+Errors: Device, Match, Value, Alloc
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core \fBChangeKeyMapping\fP request.
+It defines the symbols for the specified number of keycodes for the
+specified extension device.
+If the specified device has not first been opened by this client via
+\fBOpenDevice\fP, or if that device does not support input class Keys,
+this request will fail with a \fBDevice\fP error.
+.LP
+The number of elements in the keysyms list must be a multiple of
+keysyms_per_keycode. Otherwise, \fBChangeDeviceKeyMapping\fP generates
+a \fBLength\fP error. The specified first_keycode must be greater
+than or equal to the min_keycode value returned by the \fBListInputDevices\fP
+request, or this request will fail with a \fBValue\fP error. In addition,
+if the following expression is not less than the max_keycode value returned by
+the \fBListInputDevices\fP request, the request will fail with a \fBValue\fP
+error:
+.LP
+.DS
+ first_keycode + (num_codes / keysyms_per_keycode) - 1
+.DE
+.LP
+To obtain the keycodes that are used as modifiers on an
+extension device that has keys, use \fBGetDeviceModifierMapping\fP.
+.sp 1.5
+GetDeviceModifierMapping
+.br
+.in .5i
+device: DEVICE
+.br
+.in -.5i
+=>
+.br
+.in +.5i
+keycodes-per-modifier: CARD8
+.br
+keycodes: LISTofKEYCODE
+.br
+.sp
+Errors: Device, Match
+.br
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core \fBGetModifierMapping\fP request.
+This request returns the keycodes of the keys being used as modifiers.
+The number of keycodes in the list is 8*keycodes-per-modifier.
+The keycodes are divided into eight sets, with each set containing
+keycodes-per-modifier elements. The sets are assigned in order to the
+modifiers \fBShift\fP, \fBLock\fP, \fBControl\fP, \fBMod1\fP, \fBMod2\fP,
+\fBMod3\fP, \fBMod4\fP, and \fBMod5\fP. The keycodes-per-modifier value is
+chosen arbitrarily by the server; zeroes are used to fill in unused elements
+within each set. If only zero values are given in a set, the use of the
+corresponding modifier has been disabled. The order of keycodes within
+each set is chosen arbitrarily by the server.
+.LP
+To set which keycodes that are to be used as modifiers for an extension
+device, use \fBSetDeviceModifierMapping\fP.
+.sp 1.5
+SetDeviceModifierMapping
+.br
+.LP
+.in .5i
+device: DEVICE
+.br
+keycodes-per-modifier: CARD8
+.br
+keycodes: LISTofKEYCODE
+.br
+.in -.5i
+=>
+.br
+.in +.5i
+status: {Success, Busy, Failed}
+.br
+.sp
+Errors: Device, Match, Value, Alloc
+.in -.5i
+.sp 1.5
+.LP
+This request is analogous to the core \fBSetModifierMapping\fP request.
+This request specifies the keycodes (if any) of the keys to be used as
+modifiers. The number of keycodes in the list must be
+8*keycodes-per-modifier (else a \fBLength\fP error). The keycodes are
+divided into eight sets, with the sets, with each set containing
+keycodes-per-modifier elements. The sets are assigned in order to the
+modifiers \fBShift\fP, \fBLock\fP, \fBControl\fP, \fBMod1\fP, \fBMod2\fP,
+\fBMod3\fP, \fBMod4\fP, and \fBMod5\fP. Only non-zero keycode values are
+used within each set; zero values are ignored. All of the non-zero
+keycodes must be in the range specified by min-keycode and max-keycode
+in the \fBListInputDevices\fP request (else a \fBValue\fP error). The order of
+keycodes within a set does not matter. If no non-zero values are specified
+in a set, the use of the corresponding modifier is disabled, and the
+modifier bit will always be zero. Otherwise, the modifier bit will be
+one whenever at least one of the keys in the corresponding set is in the down
+position.
+.LP
+A server can impose restrictions on how modifiers can be changed (for example,
+if certain keys do not generate up transitions in hardware or if multiple keys
+per modifier are not supported). The status reply is \fBFailed\fP
+if some such restriction is violated, and none of the modifiers are changed.
+.LP
+If the new non-zero keycodes specified for a modifier differ from those
+currently defined, and any (current or new) keys for that modifier are
+logically in the down state, then the status reply is \fBBusy\fP,
+and none of the modifiers are changed.
+.IP
+This request generates a \fPDeviceMappingNotify\fP event on a
+\fBSuccess\fP status. The \fPDeviceMappingNotify\fP event will be sent only
+to those clients that have expressed an interest in receiving that event
+via the \fBXSelectExtensionEvent\fP request.
+.LP
+A X server can impose restrictions on how modifiers can be changed,
+for example, if certain keys do not generate up transitions in hardware
+or if multiple modifier keys are not supported. If some such restriction
+is violated, the status reply is
+\fBMappingFailed\fP , and none of the modifiers are changed.
+If the new keycodes specified for a modifier differ from those
+currently defined and any (current or new) keys for that modifier are
+in the logically down state, the status reply is \fBMappingBusy\fP,
+and none of the modifiers are changed.
+.NH 2
+Controlling Button Mapping
+.XS
+\*(SN Controlling Button Mapping
+.XE
+.LP
+These requests are analogous to the core \fBGetPointerMapping\fP
+and \fBChangePointerMapping\fP requests. They allow a client to
+determine the current mapping of buttons on an extension device,
+and to change that mapping.
+.LP
+To get the current button mapping for an extension device, use
+\fBGetDeviceButtonMapping\fP.
+.sp 1.5
+GetDeviceButtonMapping
+.br
+.in .5i
+device: DEVICE
+.br
+nmap: CARD8
+.br
+.in -.5i
+=>
+.in +.5i
+map_return: LISTofCARD8
+.br
+.sp
+Errors: Device, Match
+.in -.5i
+.br
+.sp
+.LP
+The \fBGetDeviceButtonMapping\fP function returns the current mapping of
+the buttons on the specified device. Elements of the list are indexed
+starting from one. The length of the list indicates the number of
+physical buttons. The nominal mapping is the identity mapping map[i]=i.
+.LP
+\fBnmap\fP indicates the number of elements in the \fBmap_return\fP
+array. Only the first nmap entries will be copied by the library
+into the map_return array.
+.sp 2
+.LP
+To set the button mapping for an extension device, use
+\fBSetDeviceButtonMapping\fP.
+.sp 1.5
+SetDeviceButtonMapping
+.br
+.in .5i
+device: DEVICE
+.br
+map: LISTofCARD8
+.br
+nmap: CARD8
+.br
+.sp
+.in -.5i
+=>
+.in +.5i
+status: CARD8
+.br
+.sp
+Errors: Device, Match, Value
+.in -.5i
+.br
+.sp
+.LP
+The \fBSetDeviceButtonMapping\fP function sets the mapping of the specified
+device and causes the X server to generate a \fBDeviceMappingNotify\fP
+event on a status of \fBMappingSuccess\fP. Elements of the list are
+indexed starting from one. The length of the list,
+specified in \fBnmap\fP,
+must be the same as
+\fBGetDeviceButtonMapping\fP would return. Otherwise,
+\fBSetDeviceButtonMapping\fP generates a \fBValue\fP error. A zero element
+disables a buttons, and elements are not restricted in value by the
+number of physical buttons. However, no two elements can have the
+same nonzero value. Otherwise, this function generates a
+\fBValue\fP error. If any of the buttons to be altered are in the
+down state, the status reply is \fBMappingBusy\fP and the mapping is
+not changed.
+.NH 2
+Obtaining The State Of A Device
+.XS
+\*(SN Obtaining The State Of A Device
+.XE
+.LP
+To obtain vectors that describe the state of the keys, buttons and valuators
+of an extension device, use \fBQueryDeviceState\fP.
+.sp 1.5
+QueryDeviceState
+.br
+.in .5i
+device: DEVICE
+.br
+.in -.5i
+=>
+.in +.5i
+device-id: CARD8
+.br
+data: LISTofINPUTCLASS
+.br
+.sp
+.in -.5i
+where
+.in +.5i
+.br
+.TS
+l lw(4i).
+T{
+INPUTCLASS:
+T} T{
+{VALUATOR, BUTTON, KEY}
+T}
+.sp
+T{
+CLASS VALUATOR:
+T} T{
+[class: CARD8
+.br
+\ num_valuators: CARD8
+.br
+mode: CARD8
+.in +.5i
+.br
+#x01 device mode
+.in +.5i
+.br
+(0 = Relative, 1 = Absolute)
+.br
+.in -.5i
+#x02 proximity state
+.in +.5i
+.br
+(0 = InProximity, 1 = OutOfProximity)
+.in -1.0i
+.br
+\ valuators: LISTofINT32]
+T}
+.br
+.sp
+T{
+CLASS BUTTON:
+T} T{
+[class: CARD8
+.br
+\ num_buttons: CARD8
+.br
+\ buttons: LISTofCARD8]
+T}
+.br
+.sp
+T{
+CLASS KEY:
+T} T{
+[class: CARD8
+.br
+\ num_keys: CARD8
+.br
+\ keys: LISTofCARD8]
+T}
+.TE
+.br
+.sp
+Errors: Device
+.br
+.in -.5i
+.sp 1.5
+.LP
+The \fBQueryDeviceState\fP request returns the current logical state of the
+buttons, keys, and valuators on the specified input device.
+The \fIbuttons\fP and \fIkeys\fP arrays, byte N (from 0) contains the
+bits for key or button 8N to 8N+7 with the least significant bit in the
+byte representing key or button 8N.
+.LP
+If the device has valuators, a bit in the mode field indicates whether the
+device is reporting Absolute or Relative data. If it is reporting Absolute
+data, the valuators array will contain the current value of the valuators.
+If it is reporting Relative data, the valuators array will contain undefined
+data.
+.LP
+If the device reports proximity information, a bit in the mode field indicates
+whether the device is InProximity or OutOfProximity.
+.NH 1
+Events
+.XS
+\*(SN Events
+.XE
+.LP
+The input extension creates input events analogous to the core input events.
+These extension input events are generated by manipulating one of the
+extension input devices.
+.NH 2
+Button, Key, and Motion Events
+.XS
+\*(SN Button, Key, and Motion Events
+.XE
+.LP
+DeviceKeyPress
+.br
+DeviceKeyRelease
+.br
+DeviceButtonPress,
+.br
+DeviceButtonRelease
+.br
+DeviceMotionNotify
+.LP
+.in .5i
+device: CARD8
+.br
+root, event: WINDOW
+.br
+child: Window or None
+.br
+same-screen: BOOL
+.br
+root-x, root-y, event-x, event-y: INT16
+.br
+detail: <see below>
+.br
+state: SETofKEYBUTMASK
+.br
+time: TIMESTAMP
+.TE
+.in -.5i
+.LP
+These events are generated when a key, button, or valuator logically changes state.
+The generation of these logical changes may lag the physical changes,
+if device event processing is frozen. Note that \fBDeviceKeyPress\fP
+and \fBDeviceKeyRelease\fP are generated for all keys, even those mapped to modifier bits.
+The ``source'' of the event is the window the pointer is in.
+The window with respect to which the event is normally reported is found
+by looking up the hierarchy (starting with the source window)
+for the first window on which any client has selected interest in the event.
+The actual window used for reporting can be modified by active grabs and
+by the focus window.The window the event is reported with respect to is called
+the ``event'' window.
+.LP
+The root is the root window of the ``source'' window, and root-x and root-y
+are the pointer coordinates relative to root's origin at the time of the event.
+Event is the ``event'' window. If the event window is on the same screen as
+root, then event-x and event-y are the pointer coordinates relative to the
+event window's origin. Otherwise, event-x and event-y are zero. If the
+source window is an inferior of the event window, then child is set to
+the child of the event window that is an ancestor of (or is) the source window.
+Otherwise, it is set to None. The state component gives the logical state of
+the buttons on the core X pointer and modifier keys on the core X keyboard
+just before the event.
+The detail component type varies with the event type:
+.TS
+allbox;
+l l.
+T{
+Event
+T} T{
+Component
+T}
+T{
+DeviceKeyPress,
+.br
+DeviceKeyRelease
+T} T{
+KEYCODE
+T}
+T{
+DeviceButtonPress,
+.br
+DeviceButtonRelease
+T} T{
+BUTTON
+T}
+T{
+DeviceMotionNotify
+T} T{
+{ Normal , Hint }
+T}
+.TE
+.LP
+The granularity of motion events is not guaranteed, but a client selecting
+for motion events is guaranteed to get at least one event when a valuator
+changes. If \fBDeviceMotionHint\fP is selected, the server is free to send
+only one \fBDeviceMotionNotify\fP event (with detail \fBHint\fP) to the
+client for the event window, until either a key or button changes state,
+the pointer leaves the event window, or the client issues a
+\fBQueryDeviceState\fP or \fBGetDeviceMotionEvents\fP request.
+.NH 2
+DeviceValuator Event
+.XS
+\*(SN DeviceValuator Event
+.XE
+.LP
+DeviceValuator
+.LP
+.in .5i
+device: CARD8
+.br
+device_state: SETofKEYBUTMASK
+.br
+num_valuators: CARD8
+.br
+first_valuator: CARD8
+.br
+valuators: LISTofINT32
+.TE
+.in -.5i
+.LP
+DeviceValuator events are generated to contain valuator information for which
+there is insufficient space in DeviceKey, DeviceButton, DeviceMotion, and
+Proximity wire events. For events of these types, a second event of type
+DeviceValuator follows immediately. The library combines these events into
+a single event that a client can receive via XNextEvent. DeviceValuator
+events are not selected for by clients, they only exist to contain information
+that will not fit into some event selected by clients.
+.LP
+The device_state component gives the state of the
+buttons and modifiers on the device generating the event.
+.LP
+Extension motion devices may report motion data for a variable number of
+axes. The valuators array contains the values of all axes reported by the
+device. If more than 6 axes are reported, more than one DeviceValuator event
+will be sent by the server, and more than one DeviceKey, DeviceButton,
+DeviceMotion, or Proximity event will be reported by the library.
+Clients should examine the corresponding fields of the event reported by
+the library to determine the total number of axes reported, and the first axis
+reported in the current event. Axes are numbered beginning with zero.
+.LP
+For Button, Key and Motion events on a device reporting absolute motion data
+the current value of the device's valuators is reported. For devices that
+report relative data, Button and Key events may be followed by a DeviceValuator
+event that contains 0s in the num_valuators field. In this case, only the
+device_state component will have meaning.
+.NH 2
+Device Focus Events
+.XS
+\*(SN Device Focus Events
+.XE
+.LP
+DeviceFocusIn
+.br
+DeviceFocusOut
+.LP
+.in .5i
+device: CARD8
+.br
+time: TIMESTAMP
+.br
+event: WINDOW
+.br
+mode: { Normal, WhileGrabbed, Grab, Ungrab}
+.br
+detail: { Ancestor, Virtual, Inferior, Nonlinear, NonlinearVirtual, Pointer, PointerRoot, None}
+.br
+.in -.5i
+.LP
+These events are generated when the input focus changes and are reported to
+clients selecting \fBDeviceFocusChange\fP for the specified device and window.
+Events generated by \fBSetDeviceFocus\fP when the device is not grabbed
+have mode \fBNormal\fP. Events generated by \fBSetDeviceFocus\fP when the
+device is grabbed have mode \fBWhileGrabbed\fP. Events generated when a
+device grab actives have mode \fBGrab\fP, and events generated when a device
+grab deactivates have mode \fBUngrab\fP.
+.LP
+All \fBDeviceFocusOut\fP events caused by a window unmap are generated after
+any \fBUnmapNotify\fP event, but the ordering of \fBDeviceFocusOut\fP with
+respect to generated \fBEnterNotify\fP, \fBLeaveNotify\fP,
+\fBVisibilityNotify\fP and \fBExpose\fP events is not constrained.
+.LP
+\fBDeviceFocusIn\fP and \fBDeviceFocusOut\fP events are generated for
+focus changes of extension devices in the same manner as focus events for
+the core devices are generated.
+.NH 2
+Device State Notify Event
+.XS
+\*(SN Device State Notify Event
+.XE
+.LP
+DeviceStateNotify
+.LP
+.in .5i
+time: TIMESTAMP
+.br
+device: CARD8
+.br
+num_keys: CARD8
+.br
+num_buttons: CARD8
+.br
+num_valuators: CARD8
+.br
+classes_reported: CARD8 {SetOfDeviceMode | SetOfInputClass}
+.in +.5i
+.br
+SetOfDeviceMode:
+.in +.5i
+.br
+#x80 ProximityState
+.in +.5i
+.br
+0 = InProxmity, 1 = OutOfProximity
+.in -.5i
+.br
+#x40 Device Mode
+.in +.5i
+.br
+(0 = Relative, 1 = Absolute)
+.br
+.in -1.0i
+SetOfInputClass:
+.in +.5i
+.br
+#x04 reporting valuators
+.br
+#x02 reporting buttons
+.br
+#x01 reporting keys
+.in -1.0i
+.br
+buttons: LISTofCARD8
+.br
+keys: LISTofCARD8
+.br
+valuators: LISTofCARD32
+.br
+.TE
+.in -.5i
+.LP
+This event reports the state of the device just as in the
+\fBQueryDeviceState\fP request. This event is reported to clients selecting
+\fBDeviceStateNotify\fP for the device and window and is generated immediately
+after every \fBEnterNotify\fP and \fBDeviceFocusIn\fP. If the device has
+no more than 32 buttons, no more than 32 keys, and no more than 3 valuators,
+This event can report the state of the device. If the device has more
+than 32 buttons, the event will be immediately followed by a
+DeviceButtonStateNotify event. If the device has more than 32 keys, the
+event will be followed by a DeviceKeyStateNotify event. If the device has more
+than 3 valuators, the event will be followed by one or more DeviceValuator
+events.
+.NH 2
+Device KeyState and ButtonState Notify Events
+.XS
+\*(SN Device KeyState and ButtonState Notify Events
+.XE
+.LP
+DeviceKeyStateNotify
+.LP
+.in .5i
+device: CARD8
+.br
+keys: LISTofCARD8
+.in -.5i
+.LP
+DeviceButtonStateNotify
+.LP
+.in .5i
+device: CARD8
+.br
+buttons: LISTofCARD8
+.in -.5i
+.LP
+These events contain information about the state of keys and buttons on a
+device that will not fit into the DeviceStateNotify wire event. These events
+are not selected by clients, rather they may immediately follow a
+DeviceStateNotify wire event and be combined with it into a single
+DeviceStateNotify client event that a client may receive via XNextEvent.
+.NH 2
+DeviceMappingNotify Event
+.XS
+\*(SN DeviceMappingNotify Event
+.XE
+.LP
+DeviceMappingNotify
+.LP
+.in .5i
+time: TIMESTAMP
+.br
+device: CARD8
+.br
+request: CARD8
+.br
+first_keycode: CARD8
+.br
+count: CARD8
+.in -.5i
+.LP
+This event reports a change in the mapping of keys, modifiers, or buttons on
+an extension device. This event is reported to clients selecting
+\fBDeviceMappingNotify\fP for the device and window and is generated
+after every client \fBSetDeviceButtonMapping\fP, \fBChangeDeviceKeyMapping\fP,
+or \fBChangeDeviceModifierMapping\fP request.
+.NH 2
+ChangeDeviceNotify Event
+.XS
+\*(SN ChangeDeviceNotify Event
+.XE
+.LP
+ChangeDeviceNotify
+.LP
+.in .5i
+device: CARD8
+.br
+time: TIMESTAMP
+.br
+request: CARD8
+.in -.5i
+.LP
+This event reports a change in the physical device being used as the core
+X keyboard or X pointer device.
+\fBChangeDeviceNotify\fP events are reported to clients selecting
+\fBChangeDeviceNotify\fP for the device and window and is generated
+after every client \fBChangeKeyboardDevice\fP
+or \fBChangePointerDevice\fP request.
+.NH 2
+Proximity Events
+.XS
+\*(SN Proximity Events
+.XE
+.LP
+ProximityIn
+.br
+ProximityOut
+.LP
+.in .5i
+device: CARD8
+.br
+root, event: WINDOW
+.br
+child: Window or None
+.br
+same-screen: BOOL
+.br
+root-x, root-y, event-x, event-y: INT16
+.br
+state: SETofKEYBUTMASK
+.br
+time: TIMESTAMP
+.br
+device-state: SETofKEYBUTMASK
+.br
+axis-count: CARD8
+.br
+first-axis: CARD8
+.br
+axis-data: LISTofINT32
+.br
+.in -.5i
+.TE
+.LP
+These events are generated by some devices (such as graphics tablets or
+touchscreens) to indicate that a stylus has moved into or out of contact
+with a positional sensing surface.
+.LP
+The ``source'' of the event is the window the pointer is in.
+The window with respect to which the event is normally reported is found
+by looking up the hierarchy (starting with the source window)
+for the first window on which any client has selected interest in the event.
+The actual window used for reporting can be modified by active grabs and
+by the focus window.The window the event is reported with respect to is called
+the ``event'' window.
+.LP
+The root is the root window of the ``source'' window, and root-x and root-y
+are the pointer coordinates relative to root's origin at the time of the event.
+Event is the ``event'' window. If the event window is on the same screen as
+root, then event-x and event-y are the pointer coordinates relative to the
+event window's origin. Otherwise, event-x and event-y are zero. If the
+source window is an inferior of the event window, then child is set to
+the child of the event window that is an ancestor of (or is) the source window.
+Otherwise, it is set to None. The state component gives the logical state of
+the buttons on the core X pointer and modifier keys on the core X keyboard
+just before the event. The device-state component gives the state of the
+buttons and modifiers on the device generating the event.
+.bp
diff --git a/specs/Xmu/Xmu.ms b/specs/Xmu/Xmu.ms
new file mode 100644
index 0000000..44fff5d
--- /dev/null
+++ b/specs/Xmu/Xmu.ms
@@ -0,0 +1,2478 @@
+.sp 8
+.ce 2
+\s+2\fBXmu Library\fP\s-2
+.sp 6p
+X Version 11, Release 6.4
+.sp 1
+.ce 1
+``\fIDon't ask.\fP''
+.sp 2
+.LP
+Copyright \(co 1989 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.bp
+.NH 1
+Introduction
+.LP
+The Xmu Library is a collection of miscellaneous (some might say random)
+utility functions that have been useful in building various applications
+and widgets. This library is required by the Athena Widgets.
+.LP
+.NH 1
+Atom Functions
+.LP
+The use the functions and macros defined in this section, you should include
+the header file
+.Pn < X11/Xmu/Atoms.h >.
+.sp
+.FD 0
+XA_ATOM_PAIR(\fId\fP)
+XA_CHARACTER_POSITION(\fId\fP)
+XA_CLASS(\fId\fP)
+XA_CLIENT_WINDOW(\fId\fP)
+XA_CLIPBOARD(\fId\fP)
+XA_COMPOUND_TEXT(\fId\fP)
+XA_DECNET_ADDRESS(\fId\fP)
+XA_DELETE(\fId\fP)
+XA_FILENAME(\fId\fP)
+XA_HOSTNAME(\fId\fP)
+XA_IP_ADDRESS(\fId\fP)
+XA_LENGTH(\fId\fP)
+XA_LIST_LENGTH(\fId\fP)
+XA_NAME(\fId\fP)
+XA_NET_ADDRESS(\fId\fP)
+XA_NULL(\fId\fP)
+XA_OWNER_OS(\fId\fP)
+XA_SPAN(\fId\fP)
+XA_TARGETS(\fId\fP)
+XA_TEXT(\fId\fP)
+XA_TIMESTAMP(\fId\fP)
+XA_USER(\fId\fP)
+.FN
+.LP
+These macros take a display as argument and return an
+.PN Atom .
+The name of the
+atom is obtained from the macro name by removing the leading characters
+``XA_''. The
+.PN Atom
+value is cached, such that subsequent requests do not cause
+another round-trip to the server.
+.sp
+.FD 0
+AtomPtr XmuMakeAtom(\fIname\fP)
+.br
+ char* \fIname\fP;
+.FN
+.IP \fIname\fP 1i
+specifies the atom name
+.LP
+This function creates and initializes an opaque object, an
+.PN AtomPtr ,
+for an
+.PN Atom
+with the
+given name.
+.PN XmuInternAtom
+can be used to cache the Atom value for one or more displays.
+.sp
+.FD 0
+char *XmuNameOfAtom(\fIatom_ptr\fP)
+.br
+ AtomPtr \fIatom_ptr\fP;
+.FN
+.IP \fIatom_ptr\fP 1i
+specifies the AtomPtr
+.LP
+The function returns the name of an AtomPtr.
+.sp
+.FD 0
+Atom XmuInternAtom(\fId\fP, \fIatom_ptr\fP)
+.br
+ Display *\fId\fP;
+.br
+ AtomPtr \fIatom_ptr\fP;
+.FN
+.IP \fId\fP 1i
+specifies the connection to the X server
+.IP \fIatom_ptr\fP 1i
+specifies the AtomPtr
+.LP
+This function returns the
+.PN Atom
+for an
+.PN AtomPtr .
+The
+.PN Atom
+is cached,
+such that subsequent requests do not cause another round-trip to the server.
+.sp
+.FD 0
+char *XmuGetAtomName(\fId\fP, \fIatom\fP)
+.br
+ Display *\fId\fP;
+.br
+ Atom \fIatom\fP;
+.FN
+.IP \fId\fP 1i
+specifies the connection to the X server
+.IP \fIatom\fP 1i
+specifies the atom whose name is desired
+.LP
+This function returns the name of an
+.PN Atom .
+The result is cached, such that subsequent
+requests do not cause another round-trip to the server.
+.sp
+.FD 0
+void XmuInternStrings(\fId\fP, \fInames\fP, \fIcount\fP, \fIatoms\fP)
+.br
+ Display *\fId\fP;
+.br
+ String *\fInames\fP;
+.br
+ Cardinal \fIcount\fP;
+.br
+ Atom *\fIatoms\fP;
+.FN
+.IP \fId\fP 1i
+specifies the connection to the X server
+.IP \fInames\fP 1i
+specifies the strings to intern
+.IP \fIcount\fP 1i
+specifies the number of strings
+.IP \fIatoms\fP 1i
+returns the list of Atom values
+.LP
+This function converts a list of atom names into
+.PN Atom
+values. The results are cached, such
+that subsequent requests do not cause further round-trips to the server.
+The caller is responsible for preallocating the array pointed at by atoms.
+.LP
+.NH 1
+Error Handler Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/Error.h >.
+.sp
+.FD 0
+int XmuPrintDefaultErrorMessage(\fIdpy\fP, \fIevent\fP, \fIfp\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ XErrorEvent *\fIevent\fP;
+.br
+ FILE *\fIfp\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIevent\fP 1i
+specifies the error
+.IP \fIfp\fP 1i
+specifies where to print the error message
+.LP
+This function prints an error message, equivalent to Xlib's default error
+message for protocol errors. It returns a non-zero value
+if the caller should consider exiting, otherwise it returns 0.
+This function can be used when you need to
+write your own error handler, but need to print out an error from within
+that handler.
+.sp
+.FD 0
+int XmuSimpleErrorHandler(\fIdpy\fP, \fIerrorp\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ XErrorEvent *\fIerrorp\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIerrorp\fP 1i
+specifies the error
+.LP
+This function ignores errors for
+.PN BadWindow
+errors for
+.PN XQueryTree
+and
+.PN XGetWindowAttributes ,
+and ignores
+.PN BadDrawable
+errors for
+.PN XGetGeometry ;
+it returns 0 in those cases. Otherwise, it prints the default error message,
+and returns a non-zero value if the caller should consider exiting,
+and 0 if the caller should not exit.
+.LP
+.NH 1
+System Utility Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/SysUtil.h >.
+.sp
+.FD 0
+int XmuGetHostname(\fIbuf\fP, \fImaxlen\fP)
+.br
+ char *\fIbuf\fP;
+.br
+ int \fImaxlen\fP;
+.FN
+.IP \fIbuf\fP 1i
+returns the host name
+.IP \fImaxlen\fP 1i
+specifies the length of buf
+.LP
+This function stores the null terminated name of the local host in buf, and
+returns length of the name. This function hides operating system differences,
+such as whether to call gethostname or uname.
+.LP
+.NH 1
+Window Utility Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/WinUtil.h >.
+.sp
+.FD 0
+Screen *XmuScreenOfWindow(\fIdpy\fP, \fIw\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ Window \fIw\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIw\fP 1i
+specifies the window
+.LP
+This function returns the
+.PN Screen
+on which the specified window was created.
+.sp
+.FD 0
+Window XmuClientWindow(\fIdpy\fP, \fIwin\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ Window \fIwin\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIwin\fP 1i
+specifies the window
+.LP
+This function finds a window, at or below the specified window, which has a
+WM_STATE property. If such a window is found, it is returned, otherwise the
+argument window is returned.
+.sp
+.FD 0
+Bool XmuUpdateMapHints(\fIdpy\fP, \fIw\fP, \fIhints\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ Window \fIw\fP;
+.br
+ XSizeHints *\fIhints\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIwin\fP 1i
+specifies the window
+.IP \fIhints\fP 1i
+specifies the new hints, or NULL
+.LP
+This function clears the
+.PN PPosition
+and
+.PN PSize
+flags and sets the
+.PN USPosition
+and
+.PN USSize
+flags in the hints structure, and then stores the hints for the
+window using
+.PN XSetWMNormalHints
+and returns
+.PN True .
+If NULL is passed for the
+hints structure, then the current hints are read back from the window using
+.PN XGetWMNormalHints
+and are used instead, and
+.PN True
+is returned; otherwise
+.PN False
+is returned.
+.LP
+.NH 1
+Cursor Utility Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/CurUtil.h >.
+.sp
+.FD 0
+int XmuCursorNameToIndex(\fIname\fP)
+.br
+ char *\fIname\fP;
+.FN
+.IP \fIname\fP 1i
+specifies the name of the cursor
+.LP
+This function takes the name of a standard cursor and returns its index
+in the standard cursor font. The cursor names are formed by removing the
+``XC_'' prefix from the cursor defines listed in Appendix B of the Xlib
+manual.
+.LP
+.NH 1
+Graphics Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/Drawing.h >.
+.sp
+.FD 0
+void XmuDrawRoundedRectangle(\fIdpy\fP, \fIdraw\fP, \fIgc\fP, \fIx\fP, \fIy\fP, \fIw\fP, \fIh\fP, \fIew\fP, \fIeh\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ Drawable \fIdraw\fP;
+.br
+ GC \fIgc\fP;
+.br
+ int \fIx\fP, \fIy\fP, \fIw\fP, \fIh\fP, \fIew\fP, \fIeh\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIdraw\fP 1i
+specifies the drawable
+.IP \fIgc\fP 1i
+specifies the GC
+.IP \fIx\fP 1i
+specifies the upper left x coordinate
+.IP \fIy\fP 1i
+specifies the upper left y coordinate
+.IP \fIw\fP 1i
+specifies the rectangle width
+.IP \fIh\fP 1i
+specifies the rectangle height
+.IP \fIew\fP 1i
+specifies the corner width
+.IP \fIeh\fP 1i
+specifies the corner height
+.LP
+This function draws a rounded rectangle, where x, y, w, h are the dimensions
+of the overall rectangle, and ew and eh are the sizes of a bounding box that
+the corners are drawn inside of; ew should be no more than half of w, and eh
+should be no more than half of h. The current GC line attributes control
+all attributes of the line.
+.sp
+.FD 0
+void XmuFillRoundedRectangle(\fIdpy\fP, \fIdraw\fP, \fIgc\fP, \fIx\fP, \fIy\fP, \fIw\fP, \fIh\fP, \fIew\fP, \fIeh\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ Drawable \fIdraw\fP;
+.br
+ GC \fIgc\fP;
+.br
+ int \fIx\fP, \fIy\fP, \fIw\fP, \fIh\fP, \fIew\fP, \fIeh\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIdraw\fP 1i
+specifies the drawable
+.IP \fIgc\fP 1i
+specifies the GC
+.IP \fIx\fP 1i
+specifies the upper left x coordinate
+.IP \fIy\fP 1i
+specifies the upper left y coordinate
+.IP \fIw\fP 1i
+specifies the rectangle width
+.IP \fIh\fP 1i
+specifies the rectangle height
+.IP \fIew\fP 1i
+specifies the corner width
+.IP \fIeh\fP 1i
+specifies the corner height
+.LP
+This function draws a filled rounded rectangle, where x, y, w, h are the
+dimensions of the overall rectangle, and ew and eh are the sizes of a
+bounding box that the corners are drawn inside of; ew should be no more than
+half of w, and eh should be no more than half of h. The current GC fill
+settings control all attributes of the fill contents.
+.sp
+.FD 0
+XmuDrawLogo(\fIdpy\fP, \fIdrawable\fP, \fIgcFore\fP, \fIgcBack\fP, \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ Drawable \fIdrawable\fP;
+.br
+ GC \fIgcFore\fP, \fIgcBack\fP;
+.br
+ int \fIx\fP, \fIy\fP;
+.br
+ unsigned int \fIwidth\fP, \fIheight\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIdrawable\fP 1i
+specifies the drawable
+.IP \fIgcFore\fP 1i
+specifies the foreground GC
+.IP \fIgcBack\fP 1i
+specifies the background GC
+.IP \fIx\fP 1i
+specifies the upper left x coordinate
+.IP \fIy\fP 1i
+specifies the upper left y coordinate
+.IP \fIwidth\fP 1i
+specifies the logo width
+.IP \fIheight\fP 1i
+specifies the logo height
+.LP
+This function draws the ``official'' X Window System logo. The bounding box
+of the logo in the drawable is given by x, y, width, and height. The logo
+itself is filled using gcFore, and the rest of the rectangle is filled using
+gcBack.
+.sp
+.FD 0
+Pixmap XmuCreateStippledPixmap(\fIscreen\fP, \fIfore\fP, \fIback\fP, \fIdepth\fP)
+.br
+ Screen *\fIscreen\fP;
+.br
+ Pixel \fIfore\fP, \fIback\fP;
+.br
+ unsigned int \fIdepth\fP;
+.FN
+.IP \fIscreen\fP 1i
+specifies the screen the pixmap is created on
+.IP \fIfore\fP 1i
+specifies the foreground pixel value
+.IP \fIback\fP 1i
+specifies the background pixel value
+.IP \fIdepth\fP 1i
+specifies the depth of the pixmap
+.LP
+This function creates a two pixel by one pixel stippled pixmap of specified
+depth on the specified screen. The pixmap is cached so that multiple
+requests share the same pixmap. The pixmap should be freed with
+.PN XmuReleaseStippledPixmap
+to maintain correct reference counts.
+.sp
+.FD 0
+void XmuReleaseStippledPixmap(\fIscreen\fP, \fIpixmap\fP)
+.br
+ Screen *\fIscreen\fP;
+.br
+ Pixmap \fIpixmap\fP;
+.FN
+.IP \fIscreen\fP 1i
+specifies the screen the pixmap was created on
+.IP \fIpixmap\fP 1i
+specifies the pixmap to free
+.LP
+This function frees a pixmap created with
+.PN XmuCreateStippledPixmap .
+.sp
+.FD 0
+int XmuReadBitmapData(\fIfstream\fP, \fIwidth\fP, \fIheight\fP, \fIdatap\fP, \fIx_hot\fP, \fIy_hot\fP)
+ FILE *\fIfstream\fP;
+ unsigned int *\fIwidth\fP, *\fIheight\fP;
+ unsigned char **\fIdatap\fP;
+ int *\fIx_hot\fP, *\fIy_hot\fP;
+.FN
+.IP \fIstream\fP 1i
+specifies the stream to read from
+.IP \fIwidth\fP 1i
+returns the width of the bitmap
+.IP \fIheight\fP 1i
+returns the height of the bitmap
+.IP \fIdatap\fP 1i
+returns the parsed bitmap data
+.IP \fIx_hot\fP 1i
+returns the x coordinate of the hotspot
+.IP \fIy_hot\fP 1i
+returns the y coordinate of the hotspot
+.LP
+This function reads a standard bitmap file description from the specified
+stream, and returns the parsed data in a format suitable for passing to
+.PN XCreateBitmapFromData .
+The return value of the function has the same
+interpretation as the return value for
+.PN XReadBitmapFile .
+.sp
+.FD 0
+int XmuReadBitmapDataFromFile(\fIfilename\fP, \fIwidth\fP, \fIheight\fP, \fIdatap\fP, \fIx_hot\fP, \fIy_hot\fP)
+ char *\fIfilename\fP;
+ unsigned int *\fIwidth\fP, *\fIheight\fP;
+ unsigned char **\fIdatap\fP;
+ int *\fIx_hot\fP, *\fIy_hot\fP;
+.FN
+.IP \fIfilename\fP 1i
+specifies the file to read from
+.IP \fIwidth\fP 1i
+returns the width of the bitmap
+.IP \fIheight\fP 1i
+returns the height of the bitmap
+.IP \fIdatap\fP 1i
+returns the parsed bitmap data
+.IP \fIx_hot\fP 1i
+returns the x coordinate of the hotspot
+.IP \fIy_hot\fP 1i
+returns the y coordinate of the hotspot
+.LP
+This function reads a standard bitmap file description from the specified
+file, and returns the parsed data in a format suitable for passing to
+.PN XCreateBitmapFromData .
+The return value of the function has the same
+interpretation as the return value for
+.PN XReadBitmapFile .
+.sp
+.FD 0
+Pixmap XmuLocateBitmapFile(\fIscreen\fP, \fIname\fP, \fIsrcname\fP, \fIsrcnamelen\fP, \fIwidthp\fP, \fIheightp\fP, \fIxhotp\fP, \fIyhotp\fP)
+ Screen *\fIscreen\fP;
+ char *\fIname\fP;
+ char *\fIsrcname\fP;
+ int \fIsrcnamelen\fP;
+ int *\fIwidthp\fP, *\fIheightp\fP, *\fIxhotp\fP, *\fIyhotp\fP;
+.FN
+.IP \fIscreen\fP 1i
+specifies the screen the pixmap is created on
+.IP \fIname\fP 1i
+specifies the file to read from
+.IP \fIsrcname\fP 1i
+returns the full filename of the bitmap
+.IP \fIsrcnamelen\fP 1i
+specifies the length of the srcname buffer
+.IP \fIwidth\fP 1i
+returns the width of the bitmap
+.IP \fIheight\fP 1i
+returns the height of the bitmap
+.IP \fIxhotp\fP 1i
+returns the x coordinate of the hotspot
+.IP \fIyhotp\fP 1i
+returns the y coordinate of the hotspot
+.LP
+This function reads a file in standard bitmap file format, using
+.PN XReadBitmapFile ,
+and returns the created bitmap. The filename may be
+absolute, or relative to the global resource named bitmapFilePath with class
+BitmapFilePath. If the resource is not defined, the default value is the
+build symbol BITMAPDIR, which is typically "/usr/include/X11/bitmaps". If
+srcnamelen is greater than zero and srcname is not NULL, the null terminated
+filename will be copied into srcname. The size and hotspot of the bitmap are
+also returned.
+.sp
+.FD 0
+Pixmap XmuCreatePixmapFromBitmap(\fIdpy\fP, \fId\fP, \fIbitmap\fP, \fIwidth\fP, \fIheight\fP, \fIdepth\fP, \fIfore\fP, \fIback\fP)
+ Display *\fIdpy\fP;
+ Drawable \fId\fP;
+ Pixmap \fIbitmap\fP;
+ unsigned int \fIwidth\fP, \fIheight\fP;
+ unsigned int \fIdepth\fP;
+ unsigned long \fIfore\fP, \fIback\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fId\fP 1i
+specifies the screen the pixmap is created on
+.IP \fIbitmap\fP 1i
+specifies the bitmap source
+.IP \fIwidth\fP 1i
+specifies the width of the pixmap
+.IP \fIheight\fP 1i
+specifies the height of the pixmap
+.IP \fIdepth\fP 1i
+specifies the depth of the pixmap
+.IP \fIfore\fP 1i
+specifies the foreground pixel value
+.IP \fIback\fP 1i
+specifies the background pixel value
+.LP
+This function creates a pixmap of the specified width, height, and depth, on
+the same screen as the specified drawable, and then performs an
+.PN XCopyPlane
+from the specified bitmap to the pixmap,
+using the specified foreground and background pixel values.
+The created pixmap is returned.
+.LP
+.NH 1
+Selection Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/StdSel.h >.
+.sp
+.FD 0
+Boolean XmuConvertStandardSelection(\fIw\fP, \fItime\fP, \fIselection\fP, \fItarget\fP, \fItype\fP, \fIvalue\fP, \fIlength\fP, \fIformat\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Time \fItime\fP;
+.br
+ Atom *\fIselection\fP, *\fItarget\fP, *\fItype\fP;
+.br
+ caddr_t *\fIvalue\fP;
+.br
+ unsigned long *\fIlength\fP;
+.br
+ int *\fIformat\fP;
+.FN
+.IP \fIw\fP 1i
+specifies the widget which currently owns the selection
+.IP \fItime\fP 1i
+specifies the time at which the selection was established
+.IP \fIselection\fP 1i
+this argument is ignored
+.IP \fItarget\fP 1i
+specifies the target type of the selection
+.IP \fItype\fP 1i
+returns the property type of the converted value
+.IP \fIvalue\fP 1i
+returns the converted value
+.IP \fIlength\fP 1i
+returns the number of elements in the converted value
+.IP \fIformat\fP 1i
+returns the size in bits of the elements
+.LP
+This function converts the following standard selections: CLASS,
+CLIENT_WINDOW, DECNET_ADDRESS, HOSTNAME, IP_ADDRESS, NAME, OWNER_OS,
+TARGETS, TIMESTAMP, and USER. It returns
+.PN True
+if the conversion was successful, else it returns
+.PN False.
+.LP
+.NH 1
+Type Converter Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/Converters.h >.
+.sp
+.FD 0
+void XmuCvtFunctionToCallback(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValue *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+this argument is ignored
+.IP \fInum_args\fP 1i
+this argument is ignored
+.IP \fIfromVal\fP 1i
+the function to convert
+.IP \fItoVal\fP
+the place to store the converted value
+.LP
+This function converts a callback procedure to a callback list containing
+that procedure, with NULL closure data. To use this converter, include the
+following in your widget's ClassInitialize procedure:
+.LP
+XtAddConverter(XtRCallProc, XtRCallback, XmuCvtFunctionToCallback, NULL, 0);
+.sp
+.FD 0
+void XmuCvtStringToBackingStore(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValue *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+this argument is ignored
+.IP \fInum_args\fP 1i
+this argument must be a pointer to a Cardinal containing the value 0
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function converts a string to a backing-store integer as defined in
+.Pn < X11/X.h >.
+The string "notUseful" converts to
+.PN NotUseful ,
+"whenMapped" converts to
+.PN WhenMapped ,
+and "always" converts to
+.PN Always .
+The string "default" converts to the value
+.PN Always +
+.PN WhenMapped +
+.PN NotUseful .
+The case of the string does not matter.
+To use this converter, include the following
+in your widget's ClassInitialize procedure:
+.LP
+XtAddConverter(XtRString, XtRBackingStore, XmuCvtStringToBackingStore, NULL, 0);
+.sp
+.FD 0
+void XmuCvtStringToBitmap(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValuePtr \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+the sole argument specifies the Screen on which to create the bitmap
+.IP \fInum_args\fP 1i
+must be the value 1
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function creates a bitmap (a Pixmap of depth one) suitable for window
+manager icons. The string argument is the name of a file in standard bitmap
+file format. For the possible filename specifications, see
+.PN XmuLocateBitmapFile .
+To use this converter, include the following in your widget's
+ClassInitialize procedure:
+.LP
+static XtConvertArgRec screenConvertArg[] = {
+.br
+ {XtBaseOffset, (XtPointer)XtOffset(Widget, core.screen), sizeof(Screen *)}
+.br
+};
+.LP
+XtAddConverter(XtRString, XtRBitmap, XmuCvtStringToBitmap,
+.br
+ screenConvertArg, XtNumber(screenConvertArg));
+.sp
+.FD 0
+Boolean XmuCvtStringToColorCursor(\fIdpy\fP, \fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP, \fIdata\fP)
+.br
+ Display * \fIdpy\fP;
+.br
+ XrmValuePtr \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.br
+ XtPointer * \fIdata\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the display to use for conversion warnings
+.IP \fIargs\fP 1i
+specifies the required conversion arguments
+.IP \fInum_args\fP 1i
+specifies the number of required conversion arguments, which is 4
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.IP \fIdata\fP
+this argument is ignored
+.LP
+This function converts a string to a
+.PN Cursor
+with the foreground and background pixels specified by the conversion
+arguments. The string can either be a
+standard cursor name formed by removing the ``XC_'' prefix from any of the
+cursor defines listed in Appendix B of the Xlib Manual, a font name and
+glyph index in decimal of the form "FONT fontname index [[font] index]",
+or a bitmap filename acceptable to
+.PN XmuLocateBitmapFile .
+To use this converter, include
+the following in the widget ClassInitialize procedure:
+.LP
+static XtConvertArgRec colorCursorConvertArgs[] = {
+.br
+ {XtWidgetBaseOffset, (XtPointer) XtOffsetOf(WidgetRec, core.screen),
+ sizeof(Screen *)},
+ {XtResourceString, (XtPointer) XtNpointerColor, sizeof(Pixel)},
+ {XtResourceString, (XtPointer) XtNpointerColorBackground, sizeof(Pixel)},
+ {XtWidgetBaseOffset, (XtPointer) XtOffsetOf(WidgetRec, core.colormap),
+ sizeof(Colormap)}
+.br
+};
+.LP
+XtSetTypeConverter(XtRString, XtRColorCursor, XmuCvtStringToColorCursor,
+.br
+ colorCursorConvertArgs, XtNumber(colorCursorConvertArgs),
+.br
+ XtCacheByDisplay, NULL);
+The widget must recognize XtNpointerColor and XtNpointerColorBackground as
+resources, or specify other appropriate foreground and background resources.
+The widget's Realize and SetValues methods must cause the converter to be
+invoked with the appropriate arguments when one of the foreground,
+background, or cursor resources has changed, or when the window is created,
+and must assign the cursor to the window of the widget.
+.sp
+.FD 0
+void XmuCvtStringToCursor(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValuePtr \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+specifies the required conversion argument, the screen
+.IP \fInum_args\fP 1i
+specifies the number of required conversion arguments, which is 1
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function converts a string to a
+.PN Cursor .
+The string can either be a
+standard cursor name formed by removing the ``XC_'' prefix from any of the
+cursor defines listed in Appendix B of the Xlib Manual, a font name and
+glyph index in decimal of the form "FONT fontname index [[font] index]", or
+a bitmap filename acceptable to
+.PN XmuLocateBitmapFile .
+To use this converter, include
+the following in your widget's ClassInitialize procedure:
+.LP
+static XtConvertArgRec screenConvertArg[] = {
+.br
+ {XtBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen), sizeof(Screen *)}
+.br
+};
+.LP
+XtAddConverter(XtRString, XtRCursor, XmuCvtStringToCursor,
+.br
+ screenConvertArg, XtNumber(screenConvertArg));
+.sp
+.FD 0
+void XmuCvtStringToGravity(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValuePtr *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+this argument is ignored
+.IP \fInum_args\fP 1i
+this argument must be a pointer to a Cardinal containing the value 0
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function converts a string to an
+.PN XtGravity
+enumeration value. The string "forget" and a NULL value convert to
+.PN ForgetGravity ,
+"NorthWestGravity" converts to
+.PN NorthWestGravity ,
+the strings "NorthGravity" and "top" convert to
+.PN NorthGravity ,
+"NorthEastGravity" converts to
+.PN NorthEastGravity ,
+the strings "West" and "left" convert to
+.PN WestGravity ,
+"CenterGravity" converts to
+.PN CenterGravity ,
+"EastGravity" and "right" convert to
+.PN EastGravity ,
+"SouthWestGravity" converts to
+.PN SouthWestGravity ,
+"SouthGravity" and "bottom" convert to
+.PN SouthGravity ,
+"SouthEastGravity" converts to
+.PN SouthEastGravity ,
+"StaticGravity" converts to
+.PN StaticGravity ,
+and "UnmapGravity" converts to
+.PN UnmapGravity .
+The case of the string does not matter. To use this converter, include
+the following in your widget's class initialize procedure:
+.LP
+XtAddConverter(XtRString, XtRGravity, XmuCvtStringToGravity, NULL, 0);
+.sp
+.FD 0
+void XmuCvtStringToJustify(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValuePtr *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+this argument is ignored
+.IP \fInum_args\fP 1i
+this argument is ignored
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function converts a string to an
+.PN XtJustify
+enumeration value. The string "left" converts to
+.PN XtJustifyLeft ,
+"center" converts to
+.PN XtJustifyCenter ,
+and "right" converts to
+.PN XtJustifyRight .
+The case of the string does not matter. To use this converter,
+include the following in your widget's ClassInitialize procedure:
+.LP
+XtAddConverter(XtRString, XtRJustify, XmuCvtStringToJustify, NULL, 0);
+.sp
+.FD 0
+void XmuCvtStringToLong(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValuePtr \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+this argument is ignored
+.IP \fInum_args\fP 1i
+this argument must be a pointer to a Cardinal containing 0
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function converts a string to an integer of type long. It parses the
+string using
+.PN sscanf
+with a format of "%ld". To use this converter, include
+the following in your widget's ClassInitialize procedure:
+.LP
+XtAddConverter(XtRString, XtRLong, XmuCvtStringToLong, NULL, 0);
+.sp
+.FD 0
+void XmuCvtStringToOrientation(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValuePtr *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+this argument is ignored
+.IP \fInum_args\fP 1i
+this argument is ignored
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function converts a string to an
+.PN XtOrientation
+enumeration value. The string "horizontal" converts to
+.PN XtorientHorizontal
+and "vertical" converts to
+.PN XtorientVertical .
+The case of the string does not matter. To use this converter,
+include the following in your widget's ClassInitialize procedure:
+.LP
+XtAddConverter(XtRString, XtROrientation, XmuCvtStringToOrientation, NULL, 0);
+.sp
+.FD 0
+Boolean XmuCvtStringToShapeStyle(\fIdpy\fP, \fIargs\fP, \fInum_args\fP, \fIfrom\fP, \fItoVal\fP, data)
+.br
+ Display *\fIdpy\fP;
+.br
+ XrmValue *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValue *\fIfrom\fP;
+.br
+ XrmValue *\fItoVal\fP;
+.br
+ XtPointer *\fIdata\fP;
+.FN
+.IP \fIdpy\fP 1i
+the display to use for conversion warnings
+.IP \fIargs\fP 1i
+this argument is ignored
+.IP \fInum_args\fP 1i
+this argument is ignored
+.IP \fIfromVal\fP 1i
+the value to convert from
+.IP \fItoVal\fP
+the place to store the converted value
+.IP \fIdata\fP 1i
+this argument is ignored
+.LP
+This function converts a string to an integer shape style. The string
+"rectangle" converts to
+.PN XmuShapeRectangle ,
+"oval" converts to
+.PN XmuShapeOval ,
+"ellipse" converts to
+.PN XmuShapeEllipse ,
+and "roundedRectangle" converts to
+.PN XmuShapeRoundedRectangle .
+The case of the string does not matter. To use this converter,
+include the following in your widget's ClassInitialize procedure:
+.LP
+XtSetTypeConverter(XtRString, XtRShapeStyle, XmuCvtStringToShapeStyle,
+.br
+ NULL, 0, XtCacheNone, NULL);
+.sp
+.FD 0
+Boolean XmuReshapeWidget(w, \fIshape_style\fP, \fIcorner_width\fP, \fIcorner_height\fP)
+.br
+ Widget \fIw\fP;
+.br
+ int \fIshape_style\fP;
+.br
+ int \fIcorner_width\fP, \fIcorner_height\fP;
+.FN
+.IP \fIw\fP 1i
+specifies the widget to reshape
+.IP \fIshape_style\fP 1i
+specifies the new shape
+.IP \fIcorner_width\fP 1i
+specifies the width of the rounded rectangle corner
+.IP \fIcorner_height\fP 1i
+specified the height of the rounded rectangle corner
+.LP
+This function reshapes the specified widget, using the Shape extension, to a
+rectangle, oval, ellipse, or rounded rectangle, as specified by shape_style
+(
+.PN XmuShapeRectangle ,
+.PN XmuShapeOval ,
+.PN XmuShapeEllipse ,
+and
+.PN XmuShapeRoundedRectangle ,
+respectively).
+The shape is bounded by the outside edges of the rectangular extents of the
+widget. If the shape is a rounded rectangle, corner_width and corner_height
+specify the size of the bounding box that the corners are drawn inside of
+(see
+.PN XmuFillRoundedRectangle );
+otherwise, corner_width and corner_height are ignored.
+The origin of the widget within its parent remains unchanged.
+.sp
+.FD 0
+void XmuCvtStringToWidget(\fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP)
+.br
+ XrmValuePtr \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValuePtr \fIfromVal\fP;
+.br
+ XrmValuePtr \fItoVal\fP;
+.FN
+.IP \fIargs\fP 1i
+this sole argument is the parent Widget
+.IP \fInum_args\fP 1i
+this argument must be 1
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.LP
+This function converts a string to an immediate child widget of the parent
+widget passed as an argument. Note that this converter only works for
+child widgets that have already been created; there is no lazy evaluation.
+The string is first compared against the
+names of the normal and popup children, and if a match is found the
+corresponding child is returned. If no match is found, the string is
+compared against the classes of the normal and popup children, and if a
+match is found the corresponding child is returned. The case of the string
+is significant. To use this converter, include the following in your
+widget's ClassInitialize procedure:
+.LP
+static XtConvertArgRec parentCvtArg[] = {
+.br
+ {XtBaseOffset, (XtPointer)XtOffset(Widget, core.parent), sizeof(Widget)},
+.br
+};
+.LP
+XtAddConverter(XtRString, XtRWidget, XmuCvtStringToWidget,
+.br
+ parentCvtArg, XtNumber(parentCvtArg));
+.sp
+.FD 0
+Boolean XmuNewCvtStringToWidget(\fIdpy\fP, \fIargs\fP, \fInum_args\fP, \fIfromVal\fP, \fItoVal\fP, \fIdata\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ XrmValue * \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValue * \fIfromVal\fP;
+.br
+ XrmValue * \fItoVal\fP;
+.br
+ XtPointer *\fIdata\fP;
+.FN
+.IP \fIdpy\fP 1i
+the display to use for conversion warnings
+.IP \fIargs\fP 1i
+this sole argument is the parent Widget
+.IP \fInum_args\fP 1i
+this argument must be a pointer to a Cardinal containing the value 1
+.IP \fIfromVal\fP 1i
+specifies the string to convert
+.IP \fItoVal\fP
+returns the converted value
+.IP \fIdata\fP 1i
+this argument is ignored
+.LP
+This converter is identical in functionality to XmuCvtStringToWidget, except
+that it is a new-style converter, allowing the specification of a cache type
+at the time of registration.
+Most widgets will not cache the conversion results, as the application may
+dynamically create and destroy widgets, which would cause cached values to
+become illegal. To use this converter, include the following in the widget's
+class initialize procedure:
+.LP
+static XtConvertArgRec parentCvtArg[] = {
+.br
+ {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.parent),
+.br
+ sizeof(Widget)}
+.br
+};
+.LP
+XtSetTypeConverter(XtRString, XtRWidget, XmuNewCvtStringToWidget,
+.br
+ parentCvtArg, XtNumber(parentCvtArg), XtCacheNone, NULL);
+.LP
+.NH 1
+Character Set Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/CharSet.h >.
+.sp
+.FD 0
+void XmuCopyISOLatin1Lowered(\fIdst\fP, \fIsrc\fP)
+.br
+ char *\fIdst\fP, *\fIsrc\fP;
+.FN
+.IP \fIdst\fP 1i
+returns the string copy
+.IP \fIsrc\fP 1i
+specifies the string to copy
+.LP
+This function copies a null terminated string from src to dst (including the
+null), changing all Latin-1 uppercase letters to lowercase. The string is
+assumed to be encoded using ISO 8859-1.
+.sp
+.FD 0
+void XmuCopyISOLatin1Uppered(\fIdst\fP, \fIsrc\fP)
+.br
+ char *\fIdst\fP, *\fIsrc\fP;
+.FN
+.IP \fIdst\fP 1i
+returns the string copy
+.IP \fIsrc\fP 1i
+specifies the string to copy
+.LP
+This function copies a null terminated string from src to dst (including the
+null), changing all Latin-1 lowercase letters to uppercase. The string is
+assumed to be encoded using ISO 8859-1.
+.sp
+.FD 0
+int XmuCompareISOLatin1(\fIfirst\fP, \fIsecond\fP)
+.br
+ char *\fIfirst\fP, *\fIsecond\fP;
+.FN
+.IP \fIdst\fP 1i
+specifies a string to compare
+.IP \fIsrc\fP 1i
+specifies a string to compare
+.LP
+This function compares two null terminated Latin-1 strings, ignoring case
+differences, and returns an integer greater than, equal to, or less than 0,
+according to whether first is lexicographically greater than, equal to, or
+less than second. The two strings are assumed to be encoded using ISO
+8859-1.
+.sp
+.FD 0
+int XmuLookupLatin1(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is identical to
+.PN XLookupString ,
+and exists only for naming symmetry with other functions.
+.sp
+.FD 0
+int XmuLookupLatin2(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to an Latin-2 (ISO 8859-2) string, or to an ASCII control string.
+.sp
+.FD 0
+int XmuLookupLatin3(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to an Latin-3 (ISO 8859-3) string, or to an ASCII control string.
+.sp
+.FD 0
+int XmuLookupLatin4(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to an Latin-4 (ISO 8859-4) string, or to an ASCII control string.
+.sp
+.FD 0
+int XmuLookupKana(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to a string in an encoding consisting of Latin-1 (ISO 8859-1) and ASCII
+control in the Graphics Left half (values 0 to 127), and Katakana in the
+Graphics Right half (values 128 to 255), using the values from JIS
+X201-1976.
+.sp
+.FD 0
+int XmuLookupJISX0201(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to a string in the JIS X0201-1976 encoding, including ASCII control.
+.sp
+.FD 0
+int XmuLookupArabic(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to a Latin/Arabic (ISO 8859-6) string, or to an ASCII control string.
+.sp
+.FD 0
+int XmuLookupCyrillic(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to a Latin/Cyrillic (ISO 8859-5) string, or to an ASCII control string.
+.sp
+.FD 0
+int XmuLookupGreek(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to a Latin/Greek (ISO 8859-7) string, or to an ASCII control string.
+.sp
+.FD 0
+int XmuLookupHebrew(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event
+to a Latin/Hebrew (ISO 8859-8) string, or to an ASCII control string.
+.sp
+.FD 0
+int XmuLookupAPL(\fIevent\fP, \fIbuffer\fP, \fInbytes\fP, \fIkeysym\fP, \fIstatus\fP)
+.br
+ XKeyEvent *\fIevent\fP;
+.br
+ char *\fIbuffer\fP;
+.br
+ int \fInbytes\fP;
+.br
+ KeySym *\fIkeysym\fP;
+.br
+ XComposeStatus *\fIstatus\fP;
+.FN
+.IP \fIevent\fP 1i
+specifies the key event
+.IP \fIbuffer\fP 1i
+returns the translated characters
+.IP \fInbytes\fP 1i
+specifies the length of the buffer
+.IP \fIkeysym\fP 1i
+returns the computed KeySym, or None
+.IP \fIstatus\fP 1i
+specifies or returns the compose state
+.LP
+This function is similar to
+.PN XLookupString ,
+except that it maps a key event to an APL string.
+.LP
+.NH 1
+Compound Text Functions
+.LP
+The functions defined in this section are for parsing Compound Text strings,
+decomposing them into individual segments. Definitions needed to use these
+routines are in the include file
+.Pn < X11/Xmu/Xct.h >.
+A Compound Text string is represented as the following type:
+.LP
+ typedef unsigned char *XctString;
+.sp
+.FD 0
+XctData XctCreate(\fIstring\fP, \fIlength\fP, \fIflags\fP)
+.br
+ XctString \fIstring\fP;
+.br
+ int \fIlength\fP;
+.br
+ XctFlags \fIflags\fP;
+.FN
+.IP \fIstring\fP 1i
+the Compound Text string
+.IP \fIlength\fP 1i
+the number of bytes in string
+.IP \fIflags\fP 1i
+parsing control flags
+.LP
+This function creates an
+.PN XctData
+structure for parsing a Compound Text
+string. The string need not be null terminated. The following flags are
+defined to control parsing of the string:
+.LP
+.PN XctSingleSetSegments
+-- This means that returned segments should contain
+characters from only one set (C0, C1, GL, GR). When this is requested,
+.PN XctSegment
+is never returned by
+.PN XctNextItem ,
+instead
+.PN XctC0Segment ,
+.PN XctC1Segment ,
+.PN XctGlSegment ,
+and
+.PN XctGRSegment
+are returned. C0 and C1
+segments are always returned as singleton characters.
+.LP
+.PN XctProvideExtensions
+-- This means that if the Compound Text string is from a
+higher version than this code is implemented to, then syntactically correct
+but unknown control sequences should be returned as
+.PN XctExtension
+items by
+.PN XctNextItem .
+If this flag is not set, and the Compound Text string version
+indicates that extensions cannot be ignored, then each unknown control
+sequence will be reported as an
+.PN XctError .
+.LP
+.PN XctAcceptC0Extensions
+-- This means that if the Compound Text string is from
+a higher version than this code is implemented to, then unknown C0
+characters should be treated as if they were legal, and returned as C0
+characters (regardless of how
+.PN XctProvideExtensions
+is set) by
+.PN XctNextItem .
+If this flag is not set, then all unknown C0 characters are treated
+according to
+.PN XctProvideExtensions .
+.LP
+.PN XctAcceptC1Extensions
+-- This means that if the Compound Text string is from
+a higher version than this code is implemented to, then unknown C1
+characters should be treated as if they were legal, and returned as C1
+characters (regardless of how
+.PN XctProvideExtensions
+is set) by
+.PN XctNextItem .
+If this flag is not set, then all unknown C1 characters are treated
+according to
+.PN XctProvideExtensions .
+.LP
+.PN XctHideDirection
+-- This means that horizontal direction changes should be
+reported as
+.PN XctHorizontal
+items by
+.PN XctNextItem . If this flag is not set,
+then direction changes are not returned as items, but the current direction
+is still maintained and reported for other items. The current direction is
+given as an enumeration, with the values
+.PN XctUnspecified ,
+.PN XctLeftToRight ,
+and
+.PN XctRightToLeft .
+.LP
+.PN XctFreeString
+-- This means that
+.PN XctFree
+should free the Compound Text string that is passed to
+.PN XctCreate .
+If this flag is not set, the string is not freed.
+.LP
+.PN XctShiftMultiGRToGL
+-- This means that
+.PN XctNextItem
+should translate GR
+segments on-the-fly into GL segments for the GR sets: GB2312.1980-1,
+JISX0208.1983-1, and KSC5601.1987-1.
+.sp
+.FD 0
+void XctReset(\fIdata\fP)
+.br
+ XctData \fIdata\fP;
+.FN
+.IP \fIdata\fP 1i
+specifies the Compound Text structure
+.LP
+This function resets the
+.PN XctData
+structure to reparse the Compound Text string from the beginning.
+.sp
+.FD 0
+XctResult XctNextItem(\fIdata\fP)
+.br
+ XctData \fIdata\fP;
+.FN
+.IP \fIdata\fP 1i
+specifies the Compound Text structure
+.LP
+This function parses the next ``item'' from the Compound Text string. The
+return value indicates what kind of item is returned. The item itself, it's
+length, and the current contextual state, are reported as components of the
+.PN XctData
+structure.
+.PN XctResult
+is an enumeration, with the following values:
+.LP
+.PN XctSegment
+-- the item contains some mixture of C0, GL, GR, and C1 characters.
+.LP
+.PN XctC0Segment
+-- the item contains only C0 characters.
+.LP
+.PN XctGLSegment
+-- the item contains only GL characters.
+.LP
+.PN XctC1Segment
+-- the item contains only C1 characters.
+.LP
+.PN XctGRSegment
+-- the item contains only GR characters.
+.LP
+.PN XctExtendedSegment
+-- the item contains an extended segment.
+.LP
+.PN XctExtension
+-- the item is an unknown extension control sequence.
+.LP
+.PN XctHorizontal
+-- the item indicates a change in horizontal direction or
+depth. The new direction and depth are recorded in the
+.PN XctData
+structure.
+.LP
+.PN XctEndOfText
+-- The end of the Compound Text string has been reached.
+.LP
+.PN XctError
+-- the string contains a syntactic or semantic error; no further
+parsing should be performed.
+.LP
+The following state values are stored in the
+.PN XctData
+structure:
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+ XctString item; /* the action item */
+ int item_length; /* the length of item in bytes */
+ int char_size; /* the number of bytes per character in
+ * item, with zero meaning variable */
+ char *encoding; /* the XLFD encoding name for item */
+ XctHDirection horizontal; /* the direction of item */
+ int horz_depth; /* the current direction nesting depth */
+ char *GL; /* the "{I} F" string for the current GL */
+ char *GL_encoding; /* the XLFD encoding name for the current GL */
+ int GL_set_size; /* 94 or 96 */
+ int GL_char_size; /* the number of bytes per GL character */
+ char *GR; /* the "{I} F" string for the current GR */
+ char *GR_encoding; /* the XLFD encoding name the for current GR */
+ int GR_set_size; /* 94 or 96 */
+ int GR_char_size; /* the number of bytes per GR character */
+ char *GLGR_encoding; /* the XLFD encoding name for the current
+ * GL+GR, if known */
+.De
+.sp
+.FD 0
+void XctFree(\fIdata\fP)
+.br
+ XctData \fIdata\fP;
+.FN
+.IP \fIdata\fP 1i
+specifies the Compound Text structure
+.LP
+This function frees all data associated with the
+.PN XctData
+structure.
+.LP
+.NH 1
+CloseDisplay Hook Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/CloseHook.h >.
+.sp
+.FD 0
+CloseHook XmuAddCloseDisplayHook(\fIdpy\fP, \fIfunc\fP, \fIarg\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ int (*\fIfunc\fP)();
+.br
+ caddr_t \fIarg\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIfunc\fP 1i
+specifies the function to call at display close
+.IP \fIarg\fP 1i
+specifies arbitrary data to pass to func
+.LP
+This function adds a callback for the given display. When the display is
+closed, the given function will be called with the given display and
+argument as:
+.LP
+ (*func)(dpy, arg)
+.LP
+The function is declared to return an int even though the value is ignored,
+because some compilers have problems with functions returning void.
+.LP
+This routine returns NULL if it was unable to add the callback, otherwise it
+returns an opaque handle that can be used to remove or lookup the callback.
+.sp
+.FD 0
+Bool XmuRemoveCloseDisplayHook(\fIdpy\fP, \fIhandle\fP, \fIfunc\fP, \fIarg\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ CloseHook \fIhandle\fP;
+.br
+ int (*\fIfunc\fP)();
+.br
+ caddr_t \fIarg\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIhandle\fP 1i
+specifies the callback by id, or NULL
+.IP \fIfunc\fP 1i
+specifies the callback by function
+.IP \fIarg\fP 1i
+specifies the function data to match
+.LP
+This function deletes a callback that has been added with
+.PN XmuAddCloseDisplayHook .
+If handle is not NULL, it specifies the callback to
+remove, and the func and arg parameters are ignored. If handle is NULL, the
+first callback found to match the specified func and arg will be removed.
+Returns
+.PN True
+if a callback was removed, else returns
+.PN False .
+.sp
+.FD 0
+Bool XmuLookupCloseDisplayHook(\fIdpy\fP, \fIhandle\fP, \fIfunc\fP, \fIarg\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ CloseHook \fIhandle\fP;
+.br
+ int (*\fIfunc\fP)();
+.br
+ caddr_t \fIarg\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIhandle\fP 1i
+specifies the callback by id, or NULL
+.IP \fIfunc\fP 1i
+specifies the callback by function
+.IP \fIarg\fP 1i
+specifies the function data to match
+.LP
+This function determines if a callback is installed. If handle is not NULL,
+it specifies the callback to look for, and the func and arg parameters are
+ignored. If handle is NULL, the function will look for any callback for the
+specified func and arg. Returns
+.PN True
+if a matching callback exists, else returns
+.PN False .
+.LP
+.NH 1
+Display Queue Functions
+.LP
+To use the functions and types defined in this section, you should include the
+header file
+.Pn < X11/Xmu/DisplayQue.h >.
+It defines the following types:
+.LP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _XmuDisplayQueueEntry {
+ struct _XmuDisplayQueueEntry *prev, *next;
+ Display *display;
+ CloseHook closehook;
+ caddr_t data;
+} XmuDisplayQueueEntry;
+
+typedef struct _XmuDisplayQueue {
+ int nentries;
+ XmuDisplayQueueEntry *head, *tail;
+ int (*closefunc)();
+ int (*freefunc)();
+ caddr_t data;
+} XmuDisplayQueue;
+.De
+.sp
+.FD 0
+XmuDisplayQueue *XmuDQCreate(\fIclosefunc\fP, \fIfreefunc\fP, \fIdata\fP)
+.br
+ int (*\fIclosefunc\fP)();
+.br
+ int (*\fIfreefunc\fP)();
+.br
+ caddr_t \fIdata\fP;
+.FN
+.IP \fIclosefunc\fP 1i
+specifies the close function
+.IP \fIfreefunc\fP 1i
+specifies the free function
+.IP \fIdata\fP 1i
+specifies private data for the functions
+.LP
+This function creates and returns an empty
+.PN XmuDisplayQueue
+(which is really just a set of displays, but is called a queue for
+historical reasons). The queue is initially empty, but displays
+can be added using
+.PN XmuAddDisplay .
+The data value is simply stored in the queue for use by the closefunc
+and freefunc callbacks.
+Whenever a display in the queue is closed using
+.PN XCloseDisplay ,
+the closefunc (if non-NULL) is called with the queue and the display's
+.PN XmuDisplayQueueEntry
+as follows:
+.LP
+ (*closefunc)(queue, entry)
+.LP
+The freeproc (if non-NULL) is called whenever the last display in the
+queue is closed, as follows:
+.LP
+ (*freefunc)(queue)
+.LP
+The application is responsible for actually freeing the queue, by calling
+.PN XmuDQDestroy .
+.sp
+.FD 0
+XmuDisplayQueueEntry *XmuDQAddDisplay(\fIq\fP, \fIdpy\fP, \fIdata\fP)
+.br
+ XmuDisplayQueue *\fIq\fP;
+.br
+ Display *\fIdpy\fP;
+.br
+ caddr_t \fIdata\fP;
+.FN
+.IP \fIq\fP 1i
+specifies the queue
+.IP \fIdpy\fP 1i
+specifies the display to add
+.IP \fIdata\fP 1i
+specifies private data for the free function
+.LP
+This function adds the specified display to the queue. If successful,
+the queue entry is returned, otherwise NULL is returned.
+The data value is simply stored in the queue entry for use by the
+queue's freefunc callback. This function does not attempt to prevent
+duplicate entries in the queue; the caller should use
+.PN XmuDQLookupDisplay
+to determine if a display has already been added to a queue.
+.sp
+.FD 0
+XmuDisplayQueueEntry *XmuDQLookupDisplay(\fIq\fP, \fIdpy\fP)
+.br
+ XmuDisplayQueue *\fIq\fP;
+.br
+ Display *\fIdpy\fP;
+.FN
+.IP \fIq\fP 1i
+specifies the queue
+.IP \fIdpy\fP 1i
+specifies the display to lookup
+.LP
+This function returns the queue entry for the specified display, or NULL if
+the display is not in the queue.
+.sp
+.FD 0
+XmuDQNDisplays(\fIq\fP)
+.FN
+.LP
+This macro returns the number of displays in the specified queue.
+.sp
+.FD 0
+Bool XmuDQRemoveDisplay(\fIq\fP, \fIdpy\fP)
+.br
+ XmuDisplayQueue *\fIq\fP;
+.br
+ Display *\fIdpy\fP;
+.FN
+.IP \fIq\fP 1i
+specifies the queue
+.IP \fIdpy\fP 1i
+specifies the display to remove
+.LP
+This function removes the specified display from the specified queue.
+No callbacks are performed.
+If the display is not found in the queue,
+.PN False
+is returned, otherwise
+.PN True
+is returned.
+.sp
+.FD 0
+Bool XmuDQDestroy(\fIq\fP, \fIdocallbacks\fP)
+.br
+ XmuDisplayQueue *\fIq\fP;
+.br
+ Bool \fIdocallbacks\fP;
+.FN
+.IP \fIq\fP 1i
+specifies the queue to destroy
+.IP \fIdocallbacks\fP 1i
+specifies whether close functions should be called
+.LP
+This function releases all memory associated with the specified queue.
+If docallbacks is
+.PN True ,
+then the queue's closefunc callback (if non-NULL) is first called
+for each display in the queue, even though
+.PN XCloseDisplay
+is not called on the display.
+.LP
+.NH 1
+Toolkit Convenience Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/Initer.h >.
+.sp
+.FD 0
+void XmuAddInitializer(\fIfunc\fP, \fIdata\fP)
+.br
+ void (*\fIfunc\fP)();
+.br
+ caddr_t \fIdata\fP;
+.FN
+.IP \fIfunc\fP 1i
+specifies the procedure to register
+.IP \fIdata\fP 1i
+specifies private data for the procedure
+.LP
+This function registers a procedure, to be invoked the first time
+.PN XmuCallInitializers
+is called on a given application context. The procedure
+is called with the application context and the specified data:
+.LP
+ (*func)(app_con, data)
+.sp
+.FD 0
+void XmuCallInitializers(\fIapp_con\fP)
+.br
+ XtAppContext \fIapp_con\fP;
+.FN
+.IP \fIapp_con\fP 1i
+specifies the application context to initialize
+.LP
+This function calls each of the procedures that have been registered with
+.PN XmuAddInitializer ,
+if this is the first time the application context has been passed to
+.PN XmuCallInitializers .
+Otherwise, this function does nothing.
+.LP
+.NH 1
+Standard Colormap Functions
+.LP
+To use the functions defined in this section, you should include the header
+file
+.Pn < X11/Xmu/StdCmap.h >.
+.sp
+.FD 0
+Status XmuAllStandardColormaps(\fIdpy\fP)
+.br
+ Display *\fIdpy\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.LP
+To create all of the appropriate standard colormaps for every visual of
+every screen on a given display, use
+.PN XmuAllStandardColormaps .
+.LP
+This function defines and retains as permanent resources all standard
+colormaps which are meaningful for the visuals of each screen of the
+display. It returns 0 on failure, non-zero on success. If the property of
+any standard colormap is already defined, this function will redefine it.
+.LP
+This function is intended to be used by window managers or a special client
+at the start of a session.
+.LP
+The standard colormaps of a screen are defined by properties associated with
+the screen's root window. The property names of standard colormaps are
+predefined, and each property name except RGB_DEFAULT_MAP may describe at
+most one colormap.
+.LP
+The standard colormaps are: RGB_BEST_MAP, RGB_RED_MAP, RGB_GREEN_MAP,
+RGB_BLUE_MAP, RGB_DEFAULT_MAP, and RGB_GRAY_MAP. Therefore a screen may
+have at most 6 standard colormap properties defined.
+.LP
+A standard colormap is associated with a particular visual of the screen. A
+screen may have multiple visuals defined, including visuals of the same
+class at different depths. Note that a visual id might be repeated for more
+than one depth, so the visual id and the depth of a visual identify the
+visual. The characteristics of the visual will determine which standard
+colormaps are meaningful under that visual, and will determine how the
+standard colormap is defined. Because a standard colormap is associated
+with a specific visual, there must be a method of determining which visuals
+take precedence in defining standard colormaps.
+.LP
+The method used here is: for the visual of greatest depth, define all
+standard colormaps meaningful to that visual class, according to this order
+of (descending) precedence:
+.PN DirectColor ;
+.PN PseudoColor ;
+.PN TrueColor
+and
+.PN GrayScale ;
+and finally
+.PN StaticColor
+and
+.PN StaticGray .
+.LP
+This function allows success, on a per screen basis. For example, if a map
+on screen 1 fails, the maps on screen 0, created earlier, will remain.
+However, none on screen 1 will remain. If a map on screen 0 fails, none
+will remain.
+.LP
+See
+.PN XmuVisualStandardColormaps
+for which standard colormaps are meaningful under these classes of visuals.
+.sp
+.FD 0
+Status XmuVisualStandardColormaps(\fIdpy\fP, \fIscreen\fP, \fIvisualid\fP, \fIdepth\fP, \fIreplace\fP, \fIretain\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ int \fIscreen\fP;
+.br
+ VisualID \fIvisualid\fP;
+.br
+ unsigned int \fIdepth\fP;
+.br
+ Bool \fIreplace\fP;
+.br
+ Bool \fIretain\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIscreen\fP 1i
+specifies the screen of the display
+.IP \fIvisualid\fP 1i
+specifies the visual type
+.IP \fIdepth\fP 1i
+specifies the visual depth
+.IP \fIreplace\fP 1i
+specifies whether or not to replace
+.IP \fIretain\fP 1i
+specifies whether or not to retain
+.LP
+To create all of the appropriate standard colormaps for a given visual on a
+given screen, use
+.PN XmuVisualStandardColormaps .
+.LP
+This function defines all appropriate standard colormap properties for the
+given visual. If replace is
+.PN True ,
+any previous definition will be removed.
+If retain is
+.PN True ,
+new properties will be retained for the duration of the
+server session. This function returns 0 on failure, non-zero on success.
+On failure, no new properties will be defined, but old ones may have been
+removed if replace was True.
+.LP
+Not all standard colormaps are meaningful to all visual classes. This
+routine will check and define the following properties for the following
+classes, provided that the size of the colormap is not too small. For
+.PN DirectColor
+and
+.PN PseudoColor :
+RGB_DEFAULT_MAP, RGB_BEST_MAP, RGB_RED_MAP,
+RGB_GREEN_MAP, RGB_BLUE_MAP, and RGB_GRAY_MAP. For
+.PN TrueColor
+and
+.PN StaticColor :
+RGB_BEST_MAP. For
+.PN GrayScale
+and
+.PN StaticGray :
+RGB_GRAY_MAP.
+.sp
+.FD 0
+Status XmuLookupStandardColormap(\fIdpy\fP, \fIscreen\fP, \fIvisualid\fP, \fIdepth\fP, \fIproperty\fP, \fIreplace\fP, \fIretain\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ int \fIscreen\fP;
+.br
+ VisualID \fIvisualid\fP;
+.br
+ unsigned int \fIdepth\fP;
+.br
+ Atom \fIproperty\fP;
+.br
+ Bool \fIreplace\fP;
+.br
+ Bool \fIretain\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIscreen\fP 1i
+specifies the screen of the display
+.IP \fIvisualid\fP 1i
+specifies the visual type
+.IP \fIdepth\fP 1i
+specifies the visual depth
+.IP \fIproperty\fP 1i
+specifies the standard colormap property
+.IP \fIreplace\fP 1i
+specifies whether or not to replace
+.IP \fIretain\fP 1i
+specifies whether or not to retain
+.LP
+To create a standard colormap if one does not currently exist, or replace
+the currently existing standard colormap, use
+.PN XmuLookupStandardColormap .
+.LP
+Given a screen, a visual, and a property, this function will determine the
+best allocation for the property under the specified visual, and determine
+the whether to create a new colormap or to use the default colormap of the
+screen.
+.LP
+If replace is True, any previous definition of the property will be
+replaced. If retain is True, the property and the colormap will be made
+permanent for the duration of the server session. However, pre-existing
+property definitions which are not replaced cannot be made permanent by a
+call to this function; a request to retain resources pertains to newly
+created resources.
+.LP
+This function returns 0 on failure, non-zero on success. A request to
+create a standard colormap upon a visual which cannot support such a map is
+considered a failure. An example of this would be requesting any standard
+colormap property on a monochrome visual, or, requesting an RGB_BEST_MAP on
+a display whose colormap size is 16.
+.sp
+.FD 0
+Status XmuGetColormapAllocation(\fIvinfo\fP, \fIproperty\fP, \fIred_max\fP, \fIgreen_max\fP, \fIblue_max\fP)
+.br
+ XVisualInfo *\fIvinfo\fP;
+.br
+ Atom \fIproperty\fP;
+.br
+ unsigned long *\fIred_max\fP, *\fIgreen_max\fP, *\fIblue_max\fP;
+.FN
+.IP \fIvinfo\fP 1i
+specifies visual information for a chosen visual
+.IP \fIproperty\fP 1i
+specifies one of the standard colormap property names
+.IP \fIred_max\fP 1i
+returns maximum red value
+.IP \fIgreen_max\fP 1i
+returns maximum green value
+.IP \fIblue_max\fP 1i
+returns maximum blue value
+.LP
+To determine the best allocation of reds, greens, and blues in a standard
+colormap, use
+.PN XmuGetColormapAllocation .
+.LP
+.PN XmuGetColormapAllocation
+returns 0 on failure, non-zero on success. It is
+assumed that the visual is appropriate for the colormap property.
+.sp
+.FD 0
+XStandardColormap *XmuStandardColormap(\fIdpy\fP, \fIscreen\fP, \fIvisualid\fP, \fIdepth\fP, \fIproperty\fP,
+ \fIcmap\fP, \fIred_max\fP, \fIgreen_max\fP, \fIblue_max\fP)
+.br
+ Display \fIdpy\fP;
+.br
+ int \fIscreen\fP;
+.br
+ VisualID \fIvisualid\fP;
+.br
+ unsigned int \fIdepth\fP;
+.br
+ Atom \fIproperty\fP;
+.br
+ Colormap \fIcmap\fP;
+.br
+ unsigned long \fIred_max\fP, \fIgreen_max\fP, \fIblue_max\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIscreen\fP 1i
+specifies the screen of the display
+.IP \fIvisualid\fP 1i
+specifies the visual type
+.IP \fIdepth\fP 1i
+specifies the visual depth
+.IP \fIproperty\fP 1i
+specifies the standard colormap property
+.IP \fIcmap\fP 1i
+specifies the colormap ID, or None
+.IP \fIred_max\fP 1i
+specifies the red allocation
+.IP \fIgreen_max\fP 1i
+specifies the green allocation
+.IP \fIblue_max\fP 1i
+specifies the blue allocation
+.LP
+To create any one standard colormap, use
+.PN XmuStandardColormap .
+.LP
+This function creates a standard colormap for the given screen, visualid,
+and visual depth, with the given red, green, and blue maximum values, with
+the given standard property name. Upon success, it returns a pointer to an
+.PN XStandardColormap
+structure which describes the newly created colormap.
+Upon failure, it returns NULL.
+If cmap is the default colormap of the screen, the standard colormap
+will be defined on the default colormap; otherwise a new colormap is created.
+.LP
+Resources created by this function are not made permanent; that is the
+caller's responsibility.
+.sp
+.FD 0
+Status XmuCreateColormap(\fIdpy\fP, \fIcolormap\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ XStandardColormap *\fIcolormap\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection under which the map is created
+.IP \fIcolormap\fP 1i
+specifies the map to be created
+.LP
+To create any one colormap which is described by an
+.PN XStandardColormap
+structure, use
+.PN XmuCreateColormap .
+.LP
+This function returns 0 on failure, and non-zero on success. The base_pixel
+of the colormap is set on success. Resources created by this function are
+not made permanent. No argument error checking is provided; use at your own
+risk.
+.LP
+All colormaps are created with read-only allocations, with the exception of
+read-only allocations of colors which fail
+to return the expected pixel value, and these are individually defined as
+read/write allocations. This is done so that all the cells defined in the
+colormap are contiguous, for use in image processing. This typically
+happens with White and Black in the default map.
+.LP
+Colormaps of static visuals are considered to be successfully created if the
+map of the static visual matches the definition given in the standard
+colormap structure.
+.sp
+.FD 0
+void XmuDeleteStandardColormap(\fIdpy\fP, \fIscreen\fP, \fIproperty\fP)
+.br
+ Display *\fIdpy\fP;
+.br
+ int \fIscreen\fP;
+.br
+ Atom \fIproperty\fP;
+.FN
+.IP \fIdpy\fP 1i
+specifies the connection to the X server
+.IP \fIscreen\fP 1i
+specifies the screen of the display
+.IP \fIproperty\fP 1i
+specifies the standard colormap property
+.LP
+To remove any standard colormap property, use
+.PN XmuDeleteStandardColormap .
+This function will remove the specified property from the specified screen,
+releasing any resources used by the colormap(s) of the property, if
+possible.
+.LP
+.NH 1
+Widget Description Functions
+.LP
+The functions defined in this section are for building a description of
+the structure of and resources associated with a hierarchy of widget classes.
+This package is typically used by applications that wish to manipulate the
+widget set itself.
+.LP
+The definitions needed to use these interfaces are in the header file
+.Pn < X11/Xmu/WidgetNode.h >.
+The following function must be called before any of the others described
+below:
+.sp
+.FD 0
+void XmuWnInitializeNodes(\fInode_array\fP, \fInum_nodes\fP)
+.br
+ XmuWidgetNode *\fInode_array\fP;
+.br
+ int \fInum_nodes\fP;
+.FN
+.IP \fInode_array\fP 1i
+specifies a list of widget classes, in alphabetical order
+.IP \fInum_nodes\fP 1i
+specfies the number of widget classes in the node array
+.LP
+To determine the resources provided by a widget class or classes, use
+.sp
+.FD 0
+void XmuWnFetchResources(\fInode\fP, \fItoplevel\fP, \fItop_node\fP)
+.br
+ XmuWidgetNode *\fInode\fP;
+.br
+ Widget \fItoplevel\fP;
+.br
+ XmuWidgetNode *\fItop_node\fP;
+.FN
+.IP \fInode\fP 1i
+specifies the widget class for which resources should be obtained.
+.IP \fItoplevel\fP 1i
+specifies the widget that should be used for creating an instance of \fInode\fP
+from which resources are extracted. This is typically the value returned
+by \fBXtAppInitialize\fP.
+.IP \fItop_node\fP 1i
+specifies the ancestor of \fInode\fP that should be treated as the root
+of the widget inheritance tree (used in determining which ancestor contributed
+which resources).
+.LP
+Each widget class inherits the resources of its parent. To count the number
+of resources contributed by a particular widget class, use:
+.sp
+.FD 0
+int XmuWnCountOwnedResources(\fInode\fP, \fIowner_node\fP, \fIconstraints\fP)
+.br
+ XmuWidgetNode *\fInode\fP;
+.br
+ XmuWidgetNode *\fIowner_node\fP;
+.br
+ Bool \fIconstraints\fP;
+.FN
+.IP \fInode\fP 1i
+specifies the widget class whose resources are being examined.
+.IP \fIowner_node\fP 1i
+specifies the widget class of the ancestor of \fInode\fP whose contributions
+are being counted.
+.IP \fIconstraints\fP 1i
+specifies whether or not to count constraint resources or normal resources.
+.LP
+This routine returns the number of resources contributed (or ``owned'') by
+the specified widget class.
+.sp
+.FD 0
+XmuWidgetNode *XmuWnNameToNode(\fInode_list\fP, \fInum_nodes\fP, \fIname\fP)
+.br
+ XmuWidgetNode *\fInode_list\fP;
+ int \fInum_nodes\fP;
+ char *\fIname\fP;
+.FN
+.IP \fInode_list\fP 1i
+specifies a list of widget nodes
+.IP \fInum_nodes\fP 1i
+specifies the number of nodes in the list
+.IP \fIname\fP 1i
+specifies the name of the widget class in the node list to search for
+.LP
+This function returns the WidgetNode in the list that matches the given
+widget name or widget class name. If no match is found, it returns NULL.
+.LP
+.NH 1
+Participation in the Editres Protocol
+.LP
+To participate in the editres protocol, applications which are not based
+on the Athena widget set should include the header file
+.Pn < X11/Xmu/Editres.h >.
+.LP
+To participate in the editres protocol, Xt applications which do not rely
+on the Athena widget set should register the editres protocol handler on
+each shell widget in the application, specifying an event mask of 0,
+nonmaskable events, and client data as NULL:
+.LP
+XtAddEventHandler(shell, (EventMask) 0, True, _XEditResCheckMessages, NULL);
diff --git a/specs/Xserver/Xprt.book b/specs/Xserver/Xprt.book
new file mode 100644
index 0000000..9c81c1e
--- /dev/null
+++ b/specs/Xserver/Xprt.book
Binary files differ
diff --git a/specs/Xserver/Xprt.mif b/specs/Xserver/Xprt.mif
new file mode 100644
index 0000000..4dd6c4d
--- /dev/null
+++ b/specs/Xserver/Xprt.mif
@@ -0,0 +1,42787 @@
+<MIFFile 5.00> # Generated by FrameMaker xm5.0P3f
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+#
+<Units Uin>
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `PANTONE 485 CV'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 99.998474>
+ <ColorYellow 90.979004>
+ <ColorBlack 0.000000>
+ <ColorPantoneValue `485'>
+ > # end of Color
+ <Color
+ <ColorTag `Dark Blue Shading'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 16.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 30.000000>
+ > # end of Color
+ <Color
+ <ColorTag `Base Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 14.000000>
+ <ColorYellow 1.000000>
+ <ColorBlack 29.000000>
+ > # end of Color
+ <Color
+ <ColorTag `25% Grey'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 25.000000>
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+ <Condition
+ <CTag `Open Issue'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 4>
+ <CColor `Blue'>
+ > # end of Condition
+ <Condition
+ <CTag `Unimplemented'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 6>
+ <CColor `Magenta'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `#define'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `#define'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement PageTop>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 27.0 pt>
+ <PgfSpAfter 19.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `1Step'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Step'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `S:<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `2Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 30.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n+\>\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `2Sect'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Para'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 99>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat ` '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `3Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 30.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `3Sect'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 11.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 99>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FDouble>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `Base Blue'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `4Heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 17.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `H:<n\>.<n\>.<n\>.<n+\> \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `4Sect'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 11.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 99>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FSingle>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Author'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `1Heading'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 3.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BodyClose'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bullet'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `B:\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bullet2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `B:\xa5 \\t'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `BulletCont'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.94">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `'>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.19">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted_i'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `u\\t\xa5 '>
+ <PgfNumberFont `Bullet Symbol'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CBullet'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBodyCntr'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Bottom>
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeadingCntr'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Bottom>
+ <PgfCellMargins 0.0 pt 4.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `centeredcell'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Code Example'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `ComposeCellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CStep'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Definition'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Definition1'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `DefinitionBelowTerm'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `DefinitionPara'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.5">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 10>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-arrow'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.375">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-form'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.875">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-heading'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-literal'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-literal'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.875">
+ <PgfLIndent 0.875">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 1.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Encode-type'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Encode-form'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Equation'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `E:(EQ <n+\>)'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd Yes>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Extract'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.25">
+ <PgfLIndent 1.25">
+ <PgfRIndent 0.75">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Figure'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.1909">
+ <PgfLIndent 0.1909">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `Table Rule'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 16.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `F:FIGURE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Decl'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Function Intro'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Function Decl'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.65">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 16.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `header right'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Right>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Note'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered-decrement'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n-\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered0'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=0\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Programlisting'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 6>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Programlisting_i'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 6>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 42.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-arrow'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `ZapfDingbats'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `ZapfDingbats'>
+ <FEncoding `ZapfDingbats'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-errors'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Protocol-item'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Protocol-item'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.9">
+ <PgfRIndent 1.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 3>
+ <TabStop
+ <TSX 2.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefName'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `RefPurpose'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefNameDiv'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `RefName'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `PANTONE 485 CV'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefSect1Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 4.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefSect1Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `RefSect1Para'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement PageTop>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 11.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `RefSynopsisDiv'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Synopsis'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `PANTONE 485 CV'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `right footer'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Step'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.94">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `S:<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.94">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Structure Decl'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 7.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 14>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 7.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `SubTitle'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Author'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.16667">
+ <PgfLIndent 0.16667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 3.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.191">
+ <PgfLIndent 0.191">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `T:TABLE <n+\>. '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Term'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Varlistentry'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Term_i'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Varlistentry_i'>
+ <PgfAlignment LeftRight>
+ <PgfFIndent 1.75">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `\\t'>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Author'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 5.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 1.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner1'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TitleBanner2'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 4.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 0.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 80>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term'>
+ <PgfAlignment Left>
+ <PgfFIndent 1.75">
+ <PgfLIndent 1.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry_i'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term_i'>
+ <PgfAlignment Left>
+ <PgfFIndent 2.75">
+ <PgfLIndent 2.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Varlistentry_i_'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Term_i'>
+ <PgfAlignment Left>
+ <PgfFIndent 2.75">
+ <PgfLIndent 2.75">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `WritersNote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 14.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `XPTabLine3'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `XPTabLine3NoSpace'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 4>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.625">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+> # end of PgfCatalog
+<FontCatalog
+ <Font
+ <FTag `ArgInList'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Argument'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `BitLabel'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Bullet Symbol'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Callout'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Courier'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Definition term'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Emphasis'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `EnvironVar'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Field Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Figure Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Function'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Table'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Keycap Text'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Literal'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Message'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `New Term'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Node Label'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Path'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Program'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Protocol'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Run-In Heading'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Subscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Superscript'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Tree Cap'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Type Name'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `Variable Reference'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `WritersNote'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPArgument'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPEvent'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPFunction'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPMessage'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPRequest'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPValue'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <Font
+ <FTag `XPValueInText'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Compose Table'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeadingCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Float>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Medium'>
+ <TblBRuling `Medium'>
+ <TblRRuling `Medium'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 5>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Sequence Examples'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.39641">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 2.10255">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.79896">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 0.95443">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.108">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Very Thin'>
+ <TblXColumnRuling `Very Thin'>
+ <TblBodyRowRuling `Very Thin'>
+ <TblXRowRuling `Very Thin'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `Thin'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 2>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 0.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 3>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.75">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.10756">
+ <TblRIndent 0.0">
+ <TblAlignment Left>
+ <TblPlacement Anywhere>
+ <TblSpBefore 4.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 3>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `table3cols'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.46152">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.78092">
+ <TblColumnH
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellBodyCntr'>
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 4.0 pt 6.0 pt 2.0 pt>
+ <TblLIndent 0.5">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Float>
+ <TblSpBefore 2.0 pt>
+ <TblSpAfter 2.0 pt>
+ <TblBlockSize 2>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `'>
+ <TblRRuling `'>
+ <TblTRuling `'>
+ <TblColumnRuling `'>
+ <TblXColumnRuling `'>
+ <TblBodyRowRuling `'>
+ <TblXRowRuling `'>
+ <TblHFRowRuling `'>
+ <TblSeparatorRuling `'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 3.0 pt>
+ <TblInitNumColumns 3>
+ <TblInitNumHRows 0>
+ <TblInitNumBodyRows 5>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.58333">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 0.90278">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.76389">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 0.77778">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Double'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement None>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 4>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$dayname\>, <$monthname\> <$daynum01\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[1Heading]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[2Heading]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `protocol'>
+ <VariableDef `<Protocol\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `header1'>
+ <VariableDef `<header1\>'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table & Page'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section & Page'>
+ <XRefDef `Section\x11 <$paranum\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure & Page'>
+ <XRefDef `Figure\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Section'>
+ <XRefDef `section\x11 <$paranum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Figure'>
+ <XRefDef `Figure\x11 <$paranumonly\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Number'>
+ <XRefDef `<$paranum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Heading'>
+ <XRefDef `\xd2 <$paratext\>\xd3 '>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 126 27 877 644 >
+ <DWindowRect 102 1 921 747 >
+ <DViewScale 140.0%>
+ <DNextUnique 715800>
+ <DPageSize 8.5" 11.0">
+ <DMenuBar `'>
+ <DVoMenuBar `'>
+ <DStartPage 1>
+ <DPageNumStyle Arabic>
+ <DPagePointStyle Arabic>
+ <DTwoSides Yes>
+ <DParity FirstRight>
+ <DFrozenPages No>
+ <DPageRounding MakePageCountEven>
+ <DFNoteMaxH 4.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage>
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic>
+ <DFNoteAnchorPos FNSuperscript>
+ <DFNoteNumberPos FNBaseline>
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `. '>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha>
+ <DTblFNoteAnchorPos FNSuperscript>
+ <DTblFNoteNumberPos FNBaseline>
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `. '>
+ <DLinebreakChars `- \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.0">
+ <DChBarWidth 0.0 pt>
+ <DChBarPosition NearestEdge>
+ <DChBarColor `Black'>
+ <DAutoChBars No>
+ <DShowAllConditions No>
+ <DDisplayOverrides Yes>
+ <DPageScrolling Variable>
+ <DViewOnly No>
+ <DViewOnlyXRef GotoBehavior>
+ <DViewOnlySelect Yes>
+ <DViewOnlyWinBorders Yes>
+ <DViewOnlyWinMenubar Yes>
+ <DViewOnlyWinPopup Yes>
+ <DViewOnlyWinPalette No>
+ <DGridOn No>
+ <DPageGrid 0.25">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.0>
+ <DRulersOn Yes>
+ <DFullRulers Yes>
+ <DGraphicsOff No>
+ <DCurrentView 1>
+ <DBordersOn Yes>
+ <DSymbolsOn Yes>
+ <DLinkBoundariesOn No>
+ <DSmartQuotesOn No>
+ <DSmartSpacesOn Yes>
+ <DUpdateTextInsetsOnOpen Yes>
+ <DUpdateXRefsOnOpen Yes>
+ <DLanguage USEnglish>
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No>
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DPrintSkipBlankPages Yes>
+ <DPrintSeparations No>
+ <DGenerateAcrobatInfo No>
+ <DAcrobatParagraphBookmarks Yes>
+ <DAcrobatBookmarksIncludeTagNames No>
+> # end of Document
+<BookComponent
+ <FileName `<c\>xp_library.mifIOM.doc'>
+ <Unique 9>
+ <FileNameSuffix `IOM'>
+ <DeriveLinks No>
+ <DeriveType IOM>
+ <DeriveTag `Index'>
+> # end of BookComponent
+<BookComponent
+ <FileName `<c\>xp_library.mifIX.doc'>
+ <Unique 11>
+ <FileNameSuffix `IX'>
+ <DeriveLinks Yes>
+ <DeriveType IDX>
+ <DeriveTag `Index'>
+> # end of BookComponent
+<BookComponent
+ <FileName `<c\>xp_library.mifTC.doc'>
+ <Unique 13>
+ <FileNameSuffix `TC'>
+ <DeriveLinks No>
+ <DeriveType TOC>
+ <DeriveTag `1Heading'>
+ <DeriveTag `2Heading'>
+ <DeriveTag `3Heading'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+<OKWord `(*).'>
+<OKWord `????'>
+<OKWord `AllocColor'>
+<OKWord `BadMatch'>
+<OKWord `BadValue'>
+<OKWord `Bool'>
+<OKWord `Gilg'>
+<OKWord `InternAtom'>
+<OKWord `InvalidateTag'>
+<OKWord `MotionNotify'>
+<OKWord `Pixmap'>
+<OKWord `PrintGetPdmStartParams'>
+<OKWord `PrintSetContext'>
+<OKWord `QueryTag'>
+<OKWord `Reencoding'>
+<OKWord `XGetWindowAttributes'>
+<OKWord `XPBadContext'>
+<OKWord `XPBadSequence'>
+<OKWord `XPGetData'>
+<OKWord `XPSpool'>
+<OKWord `X_ChangeProperty'>
+<OKWord `X_FillPoly'>
+<OKWord `X_LbxChangeProperty'>
+<OKWord `X_LbxGetProperty'>
+<OKWord `X_LbxIncrementPixel'>
+<OKWord `X_LbxModifySequence'>
+<OKWord `X_LookupColor'>
+<OKWord `X_PolyArc'>
+<OKWord `X_PolyFillArc'>
+<OKWord `X_PolyFillRectangle'>
+<OKWord `X_PolyLine'>
+<OKWord `X_PolyPoint'>
+<OKWord `X_PolyRectangle'>
+<OKWord `X_PolySegment'>
+<OKWord `Xauthority'>
+<OKWord `Xlib'>
+<OKWord `XpEndJob'>
+<OKWord `XpGetDocumentData'>
+<OKWord `XpNotify'>
+<OKWord `XpStartJob'>
+<OKWord `Xp_DataAvailable'>
+<OKWord `Xp_StartJobEvent'>
+<OKWord `_,'>
+<OKWord `contextID'>
+<OKWord `document?Syntax'>
+<OKWord `int'>
+<OKWord `metrics'>
+<OKWord `modelB'>
+<OKWord `printerName'>
+<OKWord `raster.config'>
+<OKWord `reencode'>
+<OKWord `reencoded'>
+<OKWord `saveData'>
+<OKWord `save_data'>
+<OKWord `spooler'>
+<OKWord `unset'>
+<OKWord `unsets'>
+<OKWord `usr'>
+<OKWord `{}'>
+> # end of Dictionary
+<AFrames
+ <Frame
+ <ID 1>
+ <Unique 1929>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 2.18667" 8.72221" 3.62666" 2.49999">
+ <BRect 2.18667" 8.72221" 3.62666" 2.49999">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <ImportObject
+ <Unique 1930>
+ <Overprint No>
+=FrameImage
+&%v
+&Y\xA66A95000002070000015E000000080000000000000002000000020000030000FF73C3E56B00EA
+&71CDFFEA6E00E1F27900AD21BD631542CDAEEA6E00E1BFF27900B599DE5FFF9A82D24EFF94AD21BD
+&DE63F65F15FF57F442E1C8AF967D644B32BF7F4CC68BCA026031A47819496C3D2E54370E\x5#Kr3Z
+&0g9D,\x142A09484F3E26281F40634205\xSv%pQ^;XF\x1D5616216E5C6B4D691B65611218100D0B
+&74070020406080A0C0E00020406080A0C0E00020406080A0C0E00020406080A0C0E00020406080A0
+&C0E00020406080A0C0E00020406080A0C0E00020406080A0C0E00020406080A0C0E00020406080A0
+&C0E00020406080A0C0E00020406080A0C0E00020406080A0C0E00020406080A0C0E00020406080A0
+&C0E000FF73C3E56B00E56ABDFFE36600A7DA5A00AD21BD633842BDA0E36600A88EDA5A00A188D655
+&FF917BCE4AFF94AD21BDDE6322FB35FCFE3E42E1C8AF967D644B32BF7F4CD599DB45966EF2AB5983
+&A1786B8C7350716184A670916C9C747E6954684B81877964665E7B997C488BA963A48994768F7F5C
+&8E5660A3939F869E5B9B975358514E4CA7\xI @@@@@@@@````````\x8080808080808080A0
+&A0A0A0A0A0A0A0C0C0C0C0C0C0C0C0E0E0E0E0E0E0E0E00000000000000000\x @@@@@@@@
+&````````\x8080808080808080A0A0A0A0A0A0A0A0C0C0C0C0C0C0C0C0E0E0E0E0E0E0E0E000FF73
+&B9E16500E165AAFFDB5B0097D25100AD21BD63FF42AA90DB5B009780D25100B599DE5FFF9A82D24E
+&FF94AD21BDDE631717FF17FFFF42E1C8AF967D644B32BF7F4CE2B5E842966DFEAC5781A276698C72
+&4D705F84A76E916B9D727C685266487F877763645C79997A4589AA61A58994748F7F5A8E545EA393
+&A0849E599B9850554F4B4AA846808080808080808080808080808080808080808080808080808080
+&8080808080808080808080808080808080808080808080808080808080C0C0C0C0C0C0C0C0C0C0C0
+&C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+&C0C0C0C0C0C0C0C0C0C0C0C0C080FE0480FE048025040580FE0480CC0405801B0405040404801903
+&050480FE0380CB0305048019030505030404801903050480FE0380CB030504801903050503040480
+&1903050480FE0380CB03050480190305050304040303038017050480FE0580CC0504801605030303
+&05050504040303030580FE0480FC0403030305050404040303030504801403050480FE0380B40305
+&048014030504801403050403030305050304040303030504801403050480FE0380B4030504801403
+&0504801403050403030305050304040303030504801403050480FE0380B403050480140305048014
+&03050403030305050304040303030504801403050480FE0380B40305048014030504030303800E04
+&0303030504030303050503040403030305048014030504808C038006060303060603030606801003
+&06068007030606804E030606800803060680040306068007030606808D0305048014030504030303
+&04800C03050303030504030303050503040403030305048014030504808C03060680060306060303
+&060680100306068007030606804F0306068006030606800403060606800603060606808D03050480
+&1403050403030304800C03050303030504030303050503040403030305048014030504808C030606
+&800A0306068010030606068005030606068050030606800403060680040380030680050380030680
+&8D030504801403050403030304800C03050303030504030303050503040403030305048014030504
+&808C030606800A030606801003060606800503060606805103060603030306068004030606030606
+&8004030606030606808D030504801403050403030304800C03050303030504030303050504040403
+&03030504030303800E040303030504808C0306068006030606030306068003038003068008038003
+&06800303800306800303800306030303060603800306800403800306800403060606030606800303
+&8003068003030606030606801B03060603060680080306068007030606808D030504800703800304
+&800803050403030304800C030503030305040303030505030404030303050403030304800C030503
+&03030504808C03800606030306060303060603030306060303060680070306060306800303060306
+&06030303060603030606030306060603030306060303030606030306060303030606030306060603
+&0303060603030606030303060606800803800906800B0306060680090306068007030606808D0305
+&0480070304030305800803050403030304800C030503030305040303030505030404030303050403
+&030304800C03050303030504808C0306068006030606030306060303060680030306068006030606
+&03060603030606030606800603060603030606800303060680060306060303060680030306060303
+&0606800303060603030606800903800906800B0306060680090306068007030606808D0305048007
+&0304030305800803050403030304800C030503030305040303030505050404030303050403030304
+&800D050303030504808C030606800603060603030606030380070680060306060303060303060303
+&06060303038005060303060680030306060303038005060303060680030306060303800706030306
+&06801E03060603060680080306068007030606808D03050480070304050505800803050403030304
+&800C03050303030504030303050503040403030305048014030504808C0306068006030606030306
+&0603030606800C030606030380030603030606030306060303030606030306068003030606030306
+&060303030606030306068003030606030306068007030606801D0306060303030606800703060680
+&07030606808D030504801403050403030304800C0305030303050403030305050304040303030504
+&8014030504808C03060680060306060303060603030606800C030606030303060603030306060303
+&06060303030606030306068003030606030306060303030606030306068003030606030306068007
+&030606801C030606800403060680060306068007030606808D030504801403050403030304800C03
+&050303030504030303050503040403030305048014030504808C0306068006030606030306060303
+&03060603030306068006030606030303060603030306060303060603030606060303060680030306
+&06030306060303060606030303060603030606060303030606030303060603030606801B03060680
+&0603060680050306068007030606808D030504801403050403030304800C03050303030504030303
+&050503040403030305048014030504808C0306068006030606030306068003038004068007030606
+&80070306060303030606060306060303060680030306060303030606060306068003030606060306
+&068003038004060303030606801A030606800803060680040306068007030606808D030504801403
+&050403030304800C0305030303050403030305050304040303030504801403050480DC03060680D4
+&030504801403050403030304800C0305030303050403030305050304040303030504801403050480
+&D70306060303060680D5030504801403050403030304800D05030303050403030305050304040303
+&030504801403050480D80380030680D6030504801403050480140305040303030505030404030303
+&0504801403050480FE0380B403050480140305048014030504030303050503040403030305048014
+&03050480FE0380B40305048014030504801403050403030305050504800405048015050480FE0580
+&B5050480150504801505048004050F80050480FE0F80FB0F800404050F04040303030580FE0F80FA
+&0F100403030305050E0404030303050F0F80FE0E80F70E10100403030305050E0404030303050F0F
+&80FE0E80F70E10100403030305050E0404030303050F0F80FE0E80F70E10100403030305050E0404
+&030303050F0F80FE0E80F70E10100403030305050E0404030303050F0F80FE0E80F70E1010040303
+&0305050E0404030303050F0F80FE0E80F70E10100403030305050E0404030303050F0F80FE0E80F7
+&0E10100403030305050E0404030303050F0F80FE0E80F70E10100403030305050E0404030303050F
+&0F80090E8006110E0E11110E0E1111801B0E800311800E0E111180290E1111800E0E111180070E11
+&110E111180FE0E80380E111180040E1111800B0E111180130E10100403030305050E040403030305
+&0F0F80090E111180060E11110E0E1111801A0E11110E0E111111800C0E111180150E1180120E1111
+&800E0E111180070E11110E111180FE0E80380E111180040E1111800B0E111180130E101004030303
+&05050E0404030303050F0F80090E1111800A0E111180190E111180030E1111800C0E111180140E11
+&1180120E1111800F0E111180050E111180FE0E803C0E111180040E1111800B0E111180130E101004
+&03030305050E0404030303050F0F80090E1111800A0E111180190E111180120E111180140E111180
+&120E1111800F0E111180050E111180FE0E803C0E111180040E1111800B0E111180130E1010040303
+&0305050E0404030303050F0F80090E111180060E11110E0E111180030E80031180110E1111118009
+&0E80031180030E111180030E80031180050E8003110E0E8004110E0E0E80031180050E1111110E11
+&1180100E111180030E11110E0E0E111180030E8003110E0E0E11110E0E0E11110E0E0E111180FE0E
+&80210E111180040E111180030E80031180030E11110E0E11110E111111800B0E1010040303030505
+&0E0404030303050F0F80090E8006110E0E11110E0E11110E0E0E11110E0E111180110E8004118005
+&0E11110E0E11110E0E0E11110E0E0E11110E0E111180030E11110E0E11110E0E111180030E11110E
+&0E111180030E11110E0E11111180100E111180030E11110E0E0E11110E0E0E11110E0E11110E0E11
+&110E0E0E11110E0E0E111180FE0E80210E8008110E0E0E11110E0E11110E0E0E11110E0E1111110E
+&0E1111800A0E10100403030305050E0404030303050F0F80090E111180060E11110E0E11110E0E11
+&1180030E111180120E8004110E0E0E111180030E11110E0E11110E0E111180030E11110E0E111180
+&030E110E0E11110E0E0E111180030E11110E0E111180030E111180110E11110E0E111180030E1111
+&0E0E111180030E11110E11110E0E0E11110E0E0E111180FE0E80210E111180040E11110E0E111180
+&030E11110E0E11110E0E111180030E111180090E10100403030305050E0404030303050F0F80090E
+&111180060E11110E0E11110E0E80071180150E1111110E0E8007110E0E11110E0E8007110E0E1111
+&80060E11110E0E0E8007110E0E111180030E111180110E11110E0E111180030E11110E0E8007110E
+&0E11110E8003110E111180FE0E80220E111180040E11110E0E8007110E0E11110E0E111180030E11
+&1180090E10100403030305050E0404030303050F0F80090E111180060E11110E0E11110E0E111180
+&1C0E11110E0E111180070E11110E0E111180070E111180060E11110E0E0E111180070E111180030E
+&111180120E80031180040E11110E0E111180070E11110E110E0E110E111180FE0E80220E11118004
+&0E11110E0E111180070E11110E0E111180030E111180090E10100403030305050E0404030303050F
+&0F80090E111180060E11110E0E11110E0E111180150E111180040E11110E0E111180070E11110E0E
+&111180070E111180030E110E0E11110E0E0E111180070E111180030E111180120E80031180040E11
+&110E0E111180080E1111110E0E11111180FE0E80230E111180040E11110E0E111180070E11110E0E
+&111180030E111180090E10100403030305050E0404030303050F0F80090E111180060E11110E0E11
+&110E0E0E11110E0E0E1111800F0E1111110E0E0E111180030E11110E0E0E11110E0E11110E0E0E11
+&110E0E0E11110E0E0E11110E0E11110E0E111180030E11110E0E0E11110E0E0E11110E0E11111180
+&130E111180050E11110E0E0E11110E0E0E11110E0E0E111180030E111180FE0E80230E111180040E
+&11110E0E0E11110E0E0E11110E0E11110E0E1111110E0E1111800A0E10100403030305050E040403
+&0303050F0F80090E111180060E11110E0E111180030E80041180120E80041180050E8004110E0E0E
+&111180030E80041180040E80031180030E1111110E0E0E80041180040E1111110E111180130E1111
+&80050E111180030E80041180030E111180030E111180FE0E80230E111180040E111180030E800411
+&0E0E0E11110E0E11110E111111800B0E10100403030305050E0404030303050F0F80FE0E80E50E11
+&11800F0E10100403030305050E0404030303050F0F80FE0E80E50E1111800F0E1010040303030505
+&0E0404030303050F0F80FE0E80E50E1111800F0E10100403030305050E0404030303050F0F80FE0E
+&80F70E10100403030305050E0404030303050F0F80080E800911801E0E800B1180460E800C1180FE
+&0E80390E800B11801F0E10100403030305050E0404030303050F0F80FE0E80F70E10100403030305
+&050E0404030303050F0F80FE0E80F70E10100403030305050E0404030303050F0F80FE0E80F70E10
+&100403030305050E0404030303050F0F80FE0E80F70E1010040303030505100404030303050F0F80
+&FE1080F910040303030505100404030303050F80FE1080FA100403030305050B04040303030580FE
+&0B80FB0B040303030505090404030303050B80FE0980F9090C040303030505090404030303050B80
+&FE0980F9090C040303030505090404030303050B80FE0980F9090C04030303050509040403030305
+&0B801C09800A01802509800A01802509800A0180FE09806F090C040303030505090404030303050B
+&801B0901018008161313802309010180081613138023090101800816131380FE09806E090C040303
+&030505090404030303050B800C09800F01800A161313801309800F01800A161313801309800F0180
+&0A16131380FE09806D090C040303030505090404030303050B800C0901801B021380120901801B02
+&1380120901801B021380FE09806C090C040303030505010404030303050B800A09801C0113021380
+&1009801C01130213801009801C0113021380FE09806C090C040303030505140404030303050B800A
+&0901801A140213021380100901801A140213021380100901801A140213021380FE09806C090C0403
+&03030505140404030303050B800A0901801A140213021380100901801A140213021380100901801A
+&140213021380FE09806C090C040303030505140404030303050B800A0901801A1402130213801009
+&01801A140213021380100901801A140213021380FE09806C090C040303030505140404030303050B
+&800A0901801A140213021380100901801A140213021380100901801A140213021380FE09806C090C
+&040303030505140404030303050B800A0901801A140213021380100901801A140213021380100901
+&801A140213021380FE09806C090C040303030505140404030303050B800A0901801A140213021380
+&100901801A140213021380100901801A140213021380FE09806C090C040303030505140404030303
+&050B800A0901801A140213021380100901801A140213021380100901801A140213021380FE09806C
+&090C040303030505140404030303050B800A0901801A140213021380100901801A14021302138010
+&0901801A140213021380FE09806C090C040303030505140404030303050B800A0901801A14021302
+&1380100901801A140213021380100901801A140213021380FE09806C090C04030303050514040403
+&0303050B800A0901801A1402130213090909800A0D09090901801A1402130213090909800A0D0909
+&0901801A140213021380FE09806C090C040303030505140404030303050B800A0901801A14021302
+&13090909800A0D09090901801A1402130213090909800A0D09090901801A140213021380FE09806C
+&090C040303030505140404030303050B800A0901801A140213021380100901801A14021302138010
+&0901801A140213021380FE09806C090C040303030505140404030303050B800A0901801A14021302
+&1380100901801A140213021380100901801A140213021380FE09806C090C04030303050514040403
+&0303050B800A0901801A140213021380100901801A140213021380100901801A140213021380FE09
+&806C090C040303030505140404030303050B800A0901801A140213021380100901801A1402130213
+&80100901801A140213021380FE09806C090C040303030505140404030303050B800A0901801A1402
+&13021380100901801A140213021380100901801A140213021380FE09806C090C0403030305051404
+&04030303050B800A0901801A140213021380100901801A140213021380100901801A140213021380
+&FE09806C090C040303030505140404030303050B800A0901801A140213021380100901801A140213
+&021380100901801A140213021380FE09806C090C040303030505020404030303050B800A0901801B
+&0213131380100901801B0213131380100901801B0213131380FE09806C090C040303030505130404
+&030303050B800B09801D13801209801D13801209801D1380FE09806D090C04030303050509040403
+&0303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C0403030305050904
+&04030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C040303030505
+&090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C04030303
+&0505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C0403
+&03030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C
+&040303030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9
+&090C040303030505090404030303050B80FE0980F9090C040303030505090404030303050B803809
+&0D0D09090D0D09090D0D8025090D0D8008090D0D8004090D0D8007090D0D80FE098072090C040303
+&030505090404030303050B8038090D0D09090D0D09090D0D8026090D0D8006090D0D8004090D0D0D
+&8006090D0D0D80FE098072090C040303030505090404030303050B8038090D0D8005090D0D802709
+&0D0D8004090D0D80040980030D80050980030D80FE098072090C040303030505090404030303050B
+&8038090D0D8005090D0D8028090D0D0909090D0D8004090D0D090D0D8004090D0D090D0D80FE0980
+&72090C040303030505090404030303050B8007090D0D8003090D0D09090980040D0909090D0D090D
+&0D8018090D0D09090D0D09090D0D090D0D0D8025090D0D090D0D8008090D0D8007090D0D80FE0980
+&72090C040303030505090404030303050B8007090D0D8003090D0D09090D0D0909090D0D09090D0D
+&0D801A090D0D09090D0D09090D0D0D09090D0D8025090D0D0D8009090D0D8007090D0D80FE098072
+&090C040303030505090404030303050B8007090D0D8003090D0D09090D0D0D8005090D0D801B090D
+&0D09090D0D09090D0D8003090D0D8024090D0D0D8009090D0D8007090D0D80FE098072090C040303
+&030505090404030303050B8007090D0D8003090D0D09090980030D8003090D0D801B090D0D09090D
+&0D09090D0D8003090D0D8023090D0D090D0D8008090D0D8007090D0D80FE098072090C0403030305
+&05090404030303050B8007090D0D8003090D0D8004090D0D0D0909090D0D801B090D0D09090D0D09
+&090D0D8003090D0D8022090D0D0909090D0D8007090D0D8007090D0D80FE098072090C0403030305
+&05090404030303050B8007090D0D8003090D0D8005090D0D0D09090D0D801B090D0D09090D0D0909
+&0D0D8003090D0D8021090D0D8004090D0D8006090D0D8007090D0D80FE098072090C040303030505
+&0D0404030303050B8007090D0D0909090D0D0D09090D0D0909090D0D09090D0D801B090D0D09090D
+&0D09090D0D0D09090D0D8021090D0D8006090D0D8005090D0D8007090D0D80FE098072090C040303
+&030505090404030303050B80080980030D090D0D09090980040D0909090D0D801B090D0D09090D0D
+&09090D0D090D0D0D8021090D0D8008090D0D8004090D0D8007090D0D80FE098072090C0403030305
+&05090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C040303
+&030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C04
+&0303030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F909
+&0C0403030305050C0404030303050B80FE0C80FA0C0403030305050B04040303030580FE0B80FA0B
+&0C040303030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980
+&F9090C040303030505090404030303050B80FE0980F9090C040303030505080404030303050B8006
+&0980FE0880EE088003090C040303030505090404030303050B8006090880FE0980EC09078003090C
+&040303030505090404030303050B80060908800B090D0D8018090D0D8018090D0D80FE0980A80907
+&8003090C040303030505090404030303050B80060908800B090D0D8018090D0D8018090D0D80FE09
+&80A809078003090C040303030505090404030303050B80060908800A090D0D8018090D0D09090D0D
+&09090D0D09090D0D800C090D0D090D0D8008090D0D8004090D0D8007090D0D80FE09808A09078003
+&090C040303030505090404030303050B80060908800A090D0D8018090D0D09090D0D09090D0D0909
+&0D0D800C090D0D09090D0D8006090D0D8004090D0D0D8006090D0D0D80FE09808A09078003090C04
+&0303030505090404030303050B800609088009090D0D8018090D0D0909090D0D8005090D0D800B09
+&0D0D8003090D0D8004090D0D80040980030D80050980030D80FE09808A09078003090C0403030305
+&05090404030303050B800609088009090D0D8018090D0D0909090D0D8005090D0D800B090D0D8004
+&090D0D0909090D0D8004090D0D090D0D8004090D0D090D0D80FE09808A09078003090C0403030305
+&05090404030303050B800609088008090D0D8018090D0D8003090D0D09090D0D09090D0D090D0D0D
+&8006090D0D8006090D0D090D0D8008090D0D8007090D0D80FE09808A09078003090C040303030505
+&090404030303050B800609088008090D0D8018090D0D8003090D0D09090D0D09090D0D0D09090D0D
+&8005090D0D8007090D0D0D8009090D0D8007090D0D80FE09808A09078003090C0403030305050904
+&04030303050B800609088007090D0D8018090D0D8004090D0D09090D0D09090D0D8003090D0D8003
+&090D0D8008090D0D0D8009090D0D8007090D0D80FE09808A09078003090C04030303050509040403
+&0303050B800609088007090D0D8018090D0D8004090D0D09090D0D09090D0D8003090D0D8003090D
+&0D8007090D0D090D0D8008090D0D8007090D0D80FE09808A09078003090C04030303050509040403
+&0303050B800609088006090D0D8018090D0D8005090D0D09090D0D09090D0D8003090D0D0909090D
+&0D8007090D0D0909090D0D8007090D0D8007090D0D80FE09808A09078003090C0403030305050904
+&04030303050B800609088006090D0D8006090D0D8003090D0D8003090D0D8003090D0D8005090D0D
+&09090D0D09090D0D8003090D0D0909090D0D8006090D0D8004090D0D8006090D0D8007090D0D80FE
+&09808A09078003090C040303030505090404030303050B800609088005090D0D8007090D0D800309
+&0D0D8003090D0D0909090D0D8006090D0D09090D0D09090D0D0D09090D0D0909090D0D8006090D0D
+&8006090D0D8005090D0D8007090D0D80FE09808A09078003090C040303030505090404030303050B
+&800609088005090D0D8007090D0D8003090D0D8003090D0D0909090D0D8006090D0D09090D0D0909
+&0D0D090D0D0D8003090D0D8005090D0D8008090D0D8004090D0D8007090D0D80FE09808A09078003
+&090C040303030505090404030303050B800609088004090D0D8018090D0D8018090D0D80FE0980AF
+&09078003090C040303030505090404030303050B800609088004090D0D8018090D0D8018090D0D80
+&FE0980AF09078003090C040303030505090404030303050B8006090880FE0980EC09078003090C04
+&0303030505090404030303050B8006090880FE0980EC09078003090C040303030505070404030303
+&050B8006090880FE0780ED078003090C040303030505090404030303050B80FE0980F9090C040303
+&030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C04
+&03030305050B04040303030580FE0B80FB0B040303030505090404030303050B80FE0980F9090C04
+&0303030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F909
+&0C040303030505090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980
+&F9090C0403030305050C0404030303050B80040980FE0C80EF0C8004090C0403030305050C040403
+&0303050B80040980FE0C80EE0C0B8004090C0403030305050A0404030303050B8004090C0C80FE0A
+&80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C
+&0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404
+&030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C
+&0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B
+&8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305
+&050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B
+&8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80
+&EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C04
+&03030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A040403
+&0303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C
+&80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B80
+&04090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C040303030505
+&0A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B80
+&04090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80AB0A800A
+&0180850A800A0180A20A0B0B8004090C0403030305050A0404030303050B8004090C0C80140A8006
+&01808E0A0101800816131380830A0101800816131380A10A0B0B8004090C04030303050501040403
+&0303050B8004090C0C800B0A80080180051613807F0A800F01800A16131380730A800F01800A1613
+&1380A00A0B0B8004090C040303030505020404030303050B8004090C0C800A0A01800F1613807E0A
+&01801B021380720A01801B0213809F0A0B0B8004090C040303030505010404030303050B8004090C
+&0C80080A8012010200807B0A801C0113021380700A801C01130213809F0A0B0B8004090C04030303
+&0505140404030303050B8004090C0C80080A018010120202000C807A0A01801A140213021380700A
+&01801A1402130213809F0A0B0B8004090C040303030505140404030303050B8004090C0C80080A01
+&8010120202000C807A0A01801A140213021380700A01801A1402130213809F0A0B0B8004090C0403
+&03030505140404030303050B8004090C0C80080A018010120202000C807A0A01801A140213021380
+&700A01801A1402130213809F0A0B0B8004090C040303030505140404030303050B8004090C0C8008
+&0A018010120202000C807A0A01801A140213021380700A01801A1402130213809F0A0B0B8004090C
+&040303030505140404030303050B8004090C0C80080A018010120202000C807A0A01801A14021302
+&1380700A01801A1402130213809F0A0B0B8004090C040303030505140404030303050B8004090C0C
+&80080A0180101202020080060180740A01801A140213021380700A01801A1402130213809F0A0B0B
+&8004090C040303030505140404030303050B8004090C0C80080A01800A1280080180051613158073
+&0A01801A140213021380700A01801A1402130213809F0A0B0B8004090C0403030305051404040303
+&03050B8004090C0C80080A0180091201800F16131580720A01801A140213021380700A01801A1402
+&130213809F0A0B0B8004090C040303030505140404030303050B8004090C0C80080A018007128012
+&01020080720A01801A140213021380700A01801A1402130213809F0A0B0B8004090C040303030505
+&140404030303050B8004090C0C80080A01800712018010140202000C80710A01801A140213021380
+&700A01801A1402130213809F0A0B0B8004090C040303030505140404030303050B8004090C0C8008
+&0A0180071201148005008009140202000C80710A01801A140213021380700A01801A140213021380
+&9F0A0B0B8004090C040303030505140404030303050B8004090C0C80080A01800702011480040080
+&0A140202000C80710A01801A140213021380700A01801A1402130213809F0A0B0B8004090C040303
+&030505140404030303050B8004090C0C80090A8007000114800300800B140202000C80710A01801A
+&140213021380700A01801A1402130213809F0A0B0B8004090C040303030505140404030303050B80
+&04090C0C800A0A80060C0114800400800A140202000C80710A01801A140213021380700A01801A14
+&02130213809F0A0B0B8004090C040303030505140404030303050B8004090C0C80110A0114000014
+&0000008009140202000C80710A01801A140213021380700A01801A1402130213809F0A0B0B800409
+&0C040303030505020404030303050B8004090C0C80110A0114001414140000008008140202000C80
+&710A01801A140213021380700A01801A1402130213809F0A0B0B8004090C04030303050513040403
+&0303050B8004090C0C80110A018005140000008007140202000C80710A01801A140213021380700A
+&01801A1402130213809F0A0B0B8004090C040303030505020404030303050B8004090C0C80110A01
+&80061400008007140202000C80710A01801A140213021380700A01801A1402130213809F0A0B0B80
+&04090C040303030505130404030303050B8004090C0C80110A018010140202000C80710A01801B02
+&13131380700A01801B02131313809F0A0B0B8004090C0403030305050A0404030303050B8004090C
+&0C80110A018010140202000C80720A801D1380720A801D1380A00A0B0B8004090C0403030305050A
+&0404030303050B8004090C0C80110A0180110213000C80FE0A80C30A0B0B8004090C040303030505
+&0A0404030303050B8004090C0C80120A8012001580FE0A80C40A0B0B8004090C0403030305050A04
+&04030303050B8004090C0C80130A80110C80FE0A80C50A0B0B8004090C0403030305050A04040303
+&03050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80
+&FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004
+&090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A
+&0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004
+&090C0C80240A0D0D803C0A0D0D80FE0A80850A0B0B8004090C0403030305050A0404030303050B80
+&04090C0C80230A0D0D803E0A0D0D80FE0A80840A0B0B8004090C0403030305050A0404030303050B
+&8004090C0C80220A0D0D80400A0D0D80350A80050D808C0A0D80B80A0B0B8004090C040303030505
+&0A0404030303050B8004090C0C80220A0D0D80400A0D0D80330A0D0D0D80030A0D808B0A0D0D0D80
+&B70A0B0B8004090C0403030305050A0404030303050B8004090C0C80210A0D0D80420A0D0D80320A
+&0D0D80040A0D808C0A0D80B80A0B0B8004090C0403030305050A0404030303050B8004090C0C8021
+&0A0D0D80420A0D0D80310A0D0D80FE0A804E0A0B0B8004090C0403030305050A0404030303050B80
+&04090C0C80210A0D0D80080A80040D0A0D0D80030A80030D800F0A0D0D80030A0D0D0A0A0A0D0D0A
+&0D0D0D80080A0D0D80310A0D0D80930A0D0D80060A80040D80030A0D0D0A0D0D0D80060A80040D80
+&030A0D0D0A80030D80050A80030D80050A80050D80050A80030D80110A80030D80040A0D0D80030A
+&0D0D80040A80050D803C0A0B0B8004090C0403030305050A0404030303050B8004090C0C80210A0D
+&0D80070A0D0D0A0A0A0D0D80040A0D0D0A0A0D0D800D0A0D0D0D0A0A0A0D0D0D0A0A80030D0A0A0D
+&0D80070A0D0D80310A0D0D80900A80040D80050A0D80030A0D0D0A0A80030D0A0A0D0D80040A0D80
+&030A0D0D0A0A80030D0A0A0A0D0D80030A0D0D0A0A0D0D80030A0D0D80030A0D80040A0D0D0A0A0D
+&0D0A0A0A80090D0A0A0A0D0D0A0A0D0D0A0A0A0D0D0D0A0A0A0D0D0D80030A0D0D80030A0D803C0A
+&0B0B8004090C0403030305050A0404030303050B8004090C0C80210A0D0D80070A0D0D0A0A0A0D0D
+&80030A0D0D80030A0D0D800D0A0D0D80030A0D0D0A0A0A0D0D80030A0D0D80060A0D0D80310A0D0D
+&80930A0D0D800A0A0D0D0A0A0A0D0D80030A0D0D80080A0D0D0A0A0A0D0D80030A0D0D0A0A0A0D0D
+&80030A0D0D0A0A0A0D0D80080A0D0D80030A0D0D0A0A80090D0A0A0D0D80030A0D0D0A0A0A0D0D80
+&030A0D0D0A0A0A0D0D80040A0D803C0A0B0B8004090C0403030305050A0404030303050B8004090C
+&0C80210A0D0D80070A0D0D0A0A0A0D0D80030A0D0D80030A0D0D800D0A0D0D80030A0D0D0A0A0A0D
+&0D80030A0D0D80060A0D0D80310A0D0D80930A0D0D80060A80050D0A0A0A0D0D80030A0D0D80040A
+&80050D0A0A0A0D0D80030A0D0D0A0A0A80070D80030A80030D80050A80070D800D0A80070D0A0A0A
+&0D0D80030A0D0D0A0A0A0D0D80420A0B0B8004090C0403030305050A0404030303050B8004090C0C
+&80210A0D0D80080A80040D80040A0D0D80030A0D0D800D0A0D0D80030A0D0D0A0A0A0D0D80030A0D
+&0D80060A0D0D80310A0D0D80930A0D0D80050A0D0D0A0A0A0D0D0A0A0A0D0D80030A0D0D80030A0D
+&0D0A0A0A0D0D0A0A0A0D0D80030A0D0D0A0A0A0D0D800C0A0D0D0D80030A0D0D80130A0D0D80080A
+&0D0D80030A0D0D0A0A0A0D0D80420A0B0B8004090C0403030305050A0404030303050B8004090C0C
+&800D0A0D80090A0D80070A0D0D80070A0D0D80080A0D0D80030A0D0D800D0A0D0D80030A0D0D0A0A
+&0A0D0D80030A0D0D80060A0D0D80320A0D0D80040A0D808C0A0D0D80040A0D0D80030A0D0D0A0A0A
+&0D0D80030A0D0D0A0A0A0D0D80030A0D0D0A0A0A0D0D80030A0D0D0A0A0A0D0D800E0A0D0D0A0A0A
+&0D0D80130A0D0D80080A0D0D80030A0D0D0A0A0A0D0D80420A0B0B8004090C0403030305050A0404
+&030303050B8004090C0C800C0A0D0D0D80070A0D0D0D80070A0D0D80070A80060D80030A0D0D0A0A
+&0D0D800E0A0D0D0A0A0A80030D0A0A0D0D0D0A0A0D0D80060A0D0D80330A0D0D0D80030A0D808C0A
+&0D0D80040A0D0D0A0A0A0D0D0D0A0A0A0D0D0D0A0A0D0D80030A0D0D0A0A0A0D0D0D0A0A0A0D0D80
+&030A0D0D80030A0D0D80030A0D0A0A0A0D80040A0D0D80030A0D0D80030A0D800E0A0D0D80030A0D
+&0A0A0A0D0D0A0A0A80030D0A0A0A0D0D80030A0D803C0A0B0B8004090C0403030305050A04040303
+&03050B8004090C0C800C0A0D0D0D80070A0D0D0D80070A0D0D80060A0D0D80040A0D0D80030A8003
+&0D80100A80030D0A0D0D0A0A0A0D0D0A0D0D0D80070A0D0D80350A80040D808D0A0D0D80050A8003
+&0D0A0A0D0D0A0A0D0D0A0D0D0D80050A80030D0A0A0D0D0A80030D0A0A80030D80030A80040D8003
+&0A80060D80050A80040D80100A80040D80040A80030D0A0D0D80040A80040D803D0A0B0B8004090C
+&0403030305050A0404030303050B8004090C0C800D0A0D80090A0D80090A0D0D80050A0D0D80040A
+&0D0D80220A0D0D800A0A0D0D80C90A0D0D800F0A0D0D80A50A0B0B8004090C0403030305050A0404
+&030303050B8004090C0C80240A0D0D80040A0D0D80030A0D0D80230A0D0D80090A0D0D80C50A0D80
+&030A0D0D800F0A0D0D80A50A0B0B8004090C0403030305050A0404030303050B8004090C0C802C0A
+&80050D80230A80040D80D00A80040D800F0A80040D80A30A0B0B8004090C0403030305050A040403
+&0303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C
+&80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B80
+&04090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C040303030505
+&0A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B80
+&04090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB
+&0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403
+&030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A04040303
+&03050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80
+&FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004
+&090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A
+&0404030303050B8004090C0C80080A80180180FE0A80C90A0B0B8004090C0403030305050A040403
+&0303050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A04040303
+&03050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A0404030303
+&050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A040403030305
+&0B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A0404030303050B
+&8004090C0C80080A01141414000014001717141417171417171400008003140080FE0A80C90A0B0B
+&8004090C0403030305050A0404030303050B8004090C0C80080A018016140080FE0A80C90A0B0B80
+&04090C0403030305050A0404030303050B8004090C0C80080A018016140080FE0A80C90A0B0B8004
+&090C0403030305050A0404030303050B8004090C0C80080A01141414000014140000170017171400
+&00141700001414140080FE0A80C90A0B0B8004090C0403030305050A0404030303050B8004090C0C
+&80080A018016140080FE0A80C90A0B0B8004090C0403030305050A0404030303050B8004090C0C80
+&080A01141400001400171714001714001400001700008003140080FE0A80C90A0B0B8004090C0403
+&030305050A0404030303050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C040303
+&0305050A0404030303050B8004090C0C80080A011414000000140000171414001717000014000017
+&1714140080FE0A80C90A0B0B8004090C0403030305050A0404030303050B8004090C0C80080A0180
+&16140080FE0A80C90A0B0B8004090C0403030305050A0404030303050B8004090C0C80080A011414
+&0017171417000014001717001414171714001414140080FE0A80C90A0B0B8004090C040303030505
+&0A0404030303050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A
+&0404030303050B8004090C0C80080A01141400171700001700141700001400001717000000141400
+&80FE0A80C90A0B0B8004090C0403030305050A0404030303050B8004090C0C80080A018016140080
+&FE0A80C90A0B0B8004090C0403030305050A0404030303050B8004090C0C80080A01141400001400
+&171417170000148003171400001414140080FE0A80C90A0B0B8004090C0403030305050A04040303
+&03050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A0404030303
+&050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A040403030305
+&0B8004090C0C80080A0114141400001417171400000014001414171417001414140080FE0A80C90A
+&0B0B8004090C0403030305050A0404030303050B8004090C0C80080A018016140080FE0A80C90A0B
+&0B8004090C0403030305050A0404030303050B8004090C0C80080A01141400171717140017171400
+&00001414171717001414140080FE0A80C90A0B0B8004090C0403030305050A0404030303050B8004
+&090C0C80080A018016140080FE0A80C90A0B0B8004090C0403030305050A0404030303050B800409
+&0C0C80080A01141417141717001717141717140017170014008003140080FE0A80C90A0B0B800409
+&0C0403030305050A0404030303050B8004090C0C80080A018016140080FE0A80C90A0B0B8004090C
+&0403030305050A0404030303050B8004090C0C80080A0114140000141700140000800C140080FE0A
+&80C90A0B0B8004090C0403030305050A0404030303050B8004090C0C80080A018016140080FE0A80
+&C90A0B0B8004090C0403030305050A0404030303050B8004090C0C80080A018016140080FE0A80C9
+&0A0B0B8004090C0403030305050A0404030303050B8004090C0C80080A018016140080FE0A80C90A
+&0B0B8004090C0403030305050A0404030303050B8004090C0C80080A0180170080FE0A80C90A0B0B
+&8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305
+&050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B
+&8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80
+&EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C04
+&03030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A040403
+&0303050B8004090C0C80090A80030D0A0A80030D80030A80030D801D0A0D80FE0A80B00A0B0B8004
+&090C0403030305050A0404030303050B8004090C0C800A0A0D0D80030A0D0D80030A0D0D0A0A0D0D
+&801B0A0D0D0D80120A0D0D80FE0A809A0A0B0B8004090C0403030305050A0404030303050B800409
+&0C0C800B0A0D0D0A0A0D0D80040A0D80030A0D801C0A0D80130A0D0D80FE0A809A0A0B0B8004090C
+&0403030305050A0404030303050B8004090C0C800C0A0D0A0A0D80040A0D0D80030A0D0D80300A0D
+&0D80FE0A809A0A0B0B8004090C0403030305050A0404030303050B8004090C0C800C0A80030D8004
+&0A0D0D80030A0D0D0A0A0A0D0D0A0D0D0D80050A0D0D0A0A0D0D0D80050A0D0D80050A0D0D0A8003
+&0D80030A80070D80040A80030D80050A0D0D0A0A0D0D0D80030A80050D80FE0A80760A0B0B800409
+&0C0403030305050A0404030303050B8004090C0C800D0A0D0D80050A0D0D0A0D0D0A0D0D0A0A8003
+&0D0A0A0D0D80030A0D0D0D0A0D0A0D0D0A0A0A80040D80040A80030D0A0A0A0D0D80040A0D0D8007
+&0A0D0D0A0A0D0D80030A0D0D0D0A0D0A0D0D0A0A0A0D0D80030A0D80FE0A80760A0B0B8004090C04
+&03030305050A0404030303050B8004090C0C800C0A80030D80040A0D0D0A0D0D0A0D0D0A0A0A0D0D
+&80030A0D0D80030A0D0D0D80090A0D0D80050A0D0D80030A0D0D80040A0D0D80060A0D0D80030A0D
+&0D80030A0D0D0D80060A0D0D80FE0A807B0A0B0B8004090C0403030305050A0404030303050B8004
+&090C0C800C0A0D0A0A0D80040A0D0D80030A0D0D0A0A0A0D0D80030A0D0D80030A0D0D800A0A0D0D
+&80050A0D0D80030A0D0D80040A0D0D80060A80070D80030A0D0D80080A80030D80FE0A80780A0B0B
+&8004090C0403030305050A0404030303050B8004090C0C800B0A0D0D0A0A0D0D80030A0D0D80030A
+&0D0D0A0A0A0D0D80030A0D0D80030A0D0D800A0A0D0D80050A0D0D80030A0D0D80040A0D0D80060A
+&0D0D80090A0D0D800B0A0D0D0D80FE0A80760A0B0B8004090C0403030305050A0404030303050B80
+&04090C0C800B0A0D80030A0D80040A0D80030A0D80030A0D0D80030A0D0D80030A0D0D800A0A0D0D
+&80050A0D0D80030A0D0D80040A0D0D80060A0D0D80090A0D0D800D0A0D0D80FE0A80750A0B0B8004
+&090C0403030305050A0404030303050B8004090C0C800A0A0D0D80030A0D0D80030A0D0D0A0A0D0D
+&80030A0D0D0D0A0A0D0D80040A0D0D800A0A0D0D80050A0D0D80030A0D0D80040A0D0D80030A0D0A
+&0A0A0D0D80030A0D80030A0D0D80070A0D80040A0D0D80FE0A80750A0B0B8004090C040303030505
+&0A0404030303050B8004090C0C80090A80030D0A0A80030D80030A80030D80040A0D0D0A0D0D0D80
+&040A80040D80050A80070D0A0A80030D0A0A80030D80040A80040D80040A80040D80030A80040D80
+&050A80060D80FE0A80760A0B0B8004090C0403030305050A0404030303050B8004090C0C80200A0D
+&0D80FE0A80C80A0B0B8004090C0403030305050A0404030303050B8004090C0C80200A0D0D80FE0A
+&80C80A0B0B8004090C0403030305050A0404030303050B8004090C0C801F0A80040D80FE0A80C60A
+&0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C040303
+&0305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303
+&050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE
+&0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B800409
+&0C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A04
+&04030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B800409
+&0C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B
+&0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C04030303
+&05050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A040403030305
+&0B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A
+&80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C
+&0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404
+&030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C
+&0C80FE0A80EB0A0B0B8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B
+&8004090C0403030305050A0404030303050B8004090C0C80FE0A80EB0A0B0B8004090C0403030305
+&050B0404030303050B8004090C0C80FE0B80ED0B8004090C0403030305050B0404030303050B8004
+&090C80FE0B80EE0B8004090C040303030505090404030303050B80FE0980F9090C04030303050509
+&0404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C0403030305
+&05090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C040303
+&0305050C0404030303050B80FE0C80FA0C0403030305050B0480040580FE0B80FB0B048004050980
+&05040B80FE0980F9090C80040405090404030303050B80FE0980F9090C0403030305050904040303
+&03050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C040303030505090404
+&030303050B80FE0980F9090C040303030505090404030303050B80060980060D8007090D0D803009
+&0D0D8008090D0D8004090D0D09090D0D8007090D0D8007090D0D80FE098084090C04030303050509
+&0404030303050B8006090D0D800C090D0D0909090D802B090D0D0D8008090D0D8004090D0D09090D
+&0D8007090D0D8007090D0D80FE098084090C040303030505090404030303050B8006090D0D800C09
+&0D0D09090D0D802A0980030D8008090D0D8004090D0D800B090D0D8007090D0D80FE098084090C04
+&0303030505090404030303050B8006090D0D800C090D0D09090D0D8029090D0D090D0D8008090D0D
+&8004090D0D800B090D0D8007090D0D80FE098084090C040303030505090404030303050B80060980
+&050D8008090D0D0980040D09090980030D8003090D0D090D0D0D0980030D80030980040D800B090D
+&0D8008090D0D8004090D0D09090D0D8003090D0D0D090D0D8003090D0D0D090D0D80030980030D80
+&03090D0D0980030D80FE098071090C040303030505090404030303050B8006090D0D0D09090D0D80
+&07090D0D09090D0D8003090D0D09090D0D0909090D0D0D09090D0D0D09090D0D09090D0D0909090D
+&0D800A090D0D80080980080D09090D0D0909090D0D09090D0D0D0909090D0D09090D0D0D0909090D
+&0D09090D0D0909090D0D0D0909090D0D80FE098070090C040303030505090404030303050B800C09
+&0D0D8006090D0D09090D0D0909090D0D8003090D0D09090D0D0909090D0D0909090D0D09090D0D0D
+&800E090D0D8008090D0D8004090D0D09090D0D09090D0D8003090D0D09090D0D8003090D0D09090D
+&0D8003090D0D09090D0D8003090D0D80FE098070090C040303030505090404030303050B800C090D
+&0D8006090D0D09090D0D09090980070D09090D0D0909090D0D0909090D0D09090980030D800C090D
+&0D8008090D0D8004090D0D09090D0D09090D0D8003090D0D09090D0D8003090D0D090980070D0909
+&0D0D8003090D0D80FE098070090C040303030505090404030303050B800C090D0D8006090D0D0909
+&0D0D0909090D0D8007090D0D0909090D0D0909090D0D8004090D0D0D800B090D0D8008090D0D8004
+&090D0D09090D0D09090D0D8003090D0D09090D0D8003090D0D09090D0D8007090D0D8003090D0D80
+&FE098070090C040303030505090404030303050B8006090D0D8003090D0D8006090D0D09090D0D09
+&09090D0D8007090D0D0909090D0D0909090D0D8005090D0D0D800A090D0D8008090D0D8004090D0D
+&09090D0D09090D0D8003090D0D09090D0D8003090D0D09090D0D8007090D0D8003090D0D80FE0980
+&70090C040303030505090404030303050B8007090D0D09090D0D8007090D0D09090D0D8003090D0D
+&0909090D0D09090D0D0909090D0D0909090D0D09090D0D0909090D0D800A090D0D8008090D0D8004
+&090D0D09090D0D0909090D0D09090D0D0D0909090D0D09090D0D0D0909090D0D0909090D0D09090D
+&0D8003090D0D80FE098070090C040303030505090404030303050B80080980030D8008090D0D0909
+&090D0D0D09090980040D0909090D0D0909090D0D0909090D0D09090980040D800B090D0D8008090D
+&0D8004090D0D09090D0D8003090D0D0D090D0D8003090D0D0D090D0D80030980040D0909090D0D80
+&03090D0D80FE098070090C040303030505090404030303050B80FE0980F9090C0403030305050904
+&04030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C040303030505
+&090404030303050B80FE0980F9090C040303030505090404030303050B80FE0980F9090C04030303
+&05050C0404030303050B80FE0C80FA0C0403030305050404040303030580FE0480FC040303030505
+&030404801903050480FE0380CB0305048019030505030404801903050480FE0380CB030504801903
+&0505030404801903050480FE0380CB0305048019030505050404801A050480FE0580CC0504801C05
+&0480FE0580FE0580070500\x
+=EndInset
+
+ <ImportObFile `2.0 internal inset'>
+ <ShapeRect 0.08333" 0.08333" 3.45999" 2.33333">
+ <BRect 0.08333" 0.08333" 3.45999" 2.33333">
+ <BitMapDpi 150>
+ <FlipLR No>
+ > # end of ImportObject
+ > # end of Frame
+ <Frame
+ <ID 2>
+ <Unique 2114>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.75" 1.63889" 5.0" 2.7">
+ <BRect 1.75" 1.63889" 5.0" 2.7">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <PolyLine
+ <Unique 25>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.0">
+ <Point 0.5" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 27>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.25">
+ <Point 1.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 29>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.25">
+ <Point 0.5" 0.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 31>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.5">
+ <Point 1.25" 0.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 33>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.75" 0.5">
+ <Point 0.75" 0.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 35>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.25">
+ <Point 1.5" 1.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 37>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.5">
+ <Point 1.5" 1.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 39>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.75" 0.75">
+ <Point 1.5" 0.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 41>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 1.0">
+ <Point 1.75" 1.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 43>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.25" 1.25">
+ <Point 2.0" 1.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 45>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.5">
+ <Point 2.25" 1.5">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2126>
+ <Overprint No>
+ <TLOrigin 1.0" 0.84472">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ > # end of TextLine
+ <PolyLine
+ <Unique 48>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 0.75">
+ <Point 1.0" 1.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 50>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.25" 1.0">
+ <Point 1.25" 1.25">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2129>
+ <Overprint No>
+ <TLOrigin 1.125" 0.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ <String `usr'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2130>
+ <Overprint No>
+ <TLOrigin 1.375" 0.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `lib'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2131>
+ <Overprint No>
+ <TLOrigin 1.625" 0.75">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `X11'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2132>
+ <Overprint No>
+ <TLOrigin 1.875" 1.0">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `$LANG'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2133>
+ <Overprint No>
+ <TLOrigin 2.125" 1.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `print'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 57>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.75">
+ <Point 2.25" 1.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 59>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.75">
+ <Point 1.5" 2.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 61>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 2.0">
+ <Point 2.25" 2.0">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2137>
+ <Overprint No>
+ <TLOrigin 2.375" 1.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `attributes'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2138>
+ <Overprint No>
+ <TLOrigin 2.375" 1.75">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `ddx-config'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2139>
+ <Overprint No>
+ <TLOrigin 2.375" 2.0">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `models'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2144>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2145>
+ <Overprint No>
+ <TLOrigin 1.125" 2.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2146>
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 69>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.75" 2.0">
+ <Point 1.75" 2.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 71>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.75" 2.25">
+ <Point 2.5" 2.25">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2156>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 2.625" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `HPDJ1600C'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 74>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.75" 2.25">
+ <Point 1.75" 2.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 76>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.75" 2.5">
+ <Point 2.5" 2.5">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2159>
+ <Overprint No>
+ <TLOrigin 2.625" 2.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `modelB'>
+ > # end of TextLine
+ > # end of Frame
+ <Frame
+ <ID 3>
+ <Unique 2331>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.75" 1.26389" 5.0" 3.0">
+ <BRect 1.75" 1.26389" 5.0" 3.0">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <TextLine
+ <Unique 2336>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.24653" 0.66556">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2338>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.37153" 0.46958">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2339>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.87153" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2340>
+ <Overprint No>
+ <TLOrigin 0.875" 0.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2341>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.37153" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 85>
+ <GroupID 4>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.49653" 0.34458">
+ <Point 0.49653" 0.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 87>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.49653" 0.57083">
+ <Point 1.24653" 0.57083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2345>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.62153" 0.82083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2346>
+ <Overprint No>
+ <TLOrigin 1.125" 0.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2347>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.37153" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `models'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2348>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.37153" 2.46958">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2349>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.37153" 2.71958">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2350>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.37153" 2.46958">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 95>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.74653" 0.57083">
+ <Point 0.74653" 0.82083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 97>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.74653" 0.82083">
+ <Point 1.49653" 0.82083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2353>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.62153" 0.82083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `HPDJ1600C'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2354>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.62153" 1.07083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 101>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 1.07083">
+ <Point 1.74653" 1.07083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 103>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 0.82083">
+ <Point 0.99653" 1.07083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 105>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 1.09458">
+ <Point 0.99653" 1.34458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 107>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 2.84458">
+ <Point 1.74653" 2.84458">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2359>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.74653" 1.07083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2360>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.87153" 1.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `fonts'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2361>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.87153" 1.34458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 112>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 1.34458">
+ <Point 0.99653" 1.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 114>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 1.59458">
+ <Point 0.99653" 1.84458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 116>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 1.84458">
+ <Point 0.99653" 2.09458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 118>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 1.96958">
+ <Point 0.99653" 2.21958">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 120>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 1.84458">
+ <Point 1.24653" 2.09458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 122>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 1.34458">
+ <Point 1.99653" 1.34458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 124>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 1.34458">
+ <Point 1.24653" 1.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 126>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 1.59458">
+ <Point 1.99653" 1.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 128>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 1.59458">
+ <Point 1.24653" 1.84458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 130>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 1.84458">
+ <Point 1.99653" 1.84458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 132>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 1.09458">
+ <Point 1.24653" 1.34458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 134>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 2.09458">
+ <Point 1.99653" 2.09458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 136>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 2.34458">
+ <Point 1.99653" 2.34458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 138>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 2.59458">
+ <Point 1.99653" 2.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 140>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 2.09458">
+ <Point 1.24653" 2.34458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 142>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.24653" 2.34458">
+ <Point 1.24653" 2.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 144>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 2.21958">
+ <Point 0.99653" 2.46958">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 146>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 2.34458">
+ <Point 0.99653" 2.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 148>
+ <GroupID 4>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.99653" 2.59458">
+ <Point 0.99653" 2.84458">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2417>
+ <GroupID 4>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.74653" 2.84458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2418>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.87153" 2.84458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `model-config'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2419>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 1.99653" 1.34458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2420>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 2.12153" 1.34458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `fonts.alias'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2421>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 2.12153" 1.59458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `fonts.dir'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2422>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 2.12153" 1.84458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `helvBO24.pmf.Z'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2423>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 2.12153" 2.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `helvR24.pmf.Z'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2424>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 2.12153" 2.34458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `ncenI10.pmf.Z'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2425>
+ <GroupID 4>
+ <Overprint No>
+ <TLOrigin 2.12153" 2.59458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `ncenR10.pmf.Z'>
+ > # end of TextLine
+ <Group
+ <ID 4>
+ <Unique 2489>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ > # end of Group
+ <TextLine
+ <Unique 2491>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 0.49653" 0.34458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `/.../lib/X11/$LANG/print/'>
+ > # end of TextLine
+ > # end of Frame
+ <Frame
+ <ID 5>
+ <Unique 2288>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.75" 6.58889" 5.0" 2.0">
+ <BRect 1.75" 6.58889" 5.0" 2.0">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <PolyLine
+ <Unique 162>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.35125">
+ <Point 0.5" 0.60125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 164>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.60125">
+ <Point 0.5" 0.85125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 166>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 0.35125">
+ <Point 1.0" 0.35125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 168>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.60125">
+ <Point 1.25" 0.60125">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2293>
+ <Overprint No>
+ <TLOrigin 1.0" 0.44597">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <PolyLine
+ <Unique 171>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 0.10125">
+ <Point 0.25" 0.35125">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2295>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.125" 0.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2296>
+ <Overprint No>
+ <TLOrigin 1.625" 0.35125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2297>
+ <Overprint No>
+ <TLOrigin 0.875" 0.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2298>
+ <Overprint No>
+ <TLOrigin 1.125" 0.35125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `print'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 177>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.85125">
+ <Point 1.25" 0.85125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 179>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.85125">
+ <Point 0.5" 1.10125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 181>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 1.10125">
+ <Point 1.25" 1.10125">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2302>
+ <Overprint No>
+ <TLOrigin 1.375" 0.60125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `attributes'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2303>
+ <Overprint No>
+ <TLOrigin 1.375" 0.85125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `ddx-config'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2304>
+ <Overprint No>
+ <TLOrigin 1.375" 1.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `models'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2305>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2306>
+ <Overprint No>
+ <TLOrigin 1.125" 2.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2307>
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 189>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.75" 1.10125">
+ <Point 0.75" 1.35125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 191>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.75" 1.35125">
+ <Point 1.5" 1.35125">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2310>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.625" 1.35125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `HPDJ1600C'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2311>
+ <Overprint No>
+ <TLOrigin 1.625" 1.60125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 195>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 1.60125">
+ <Point 1.75" 1.60125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 197>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 1.35125">
+ <Point 1.0" 1.60125">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 199>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 1.625">
+ <Point 1.0" 1.875">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 201>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 1.875">
+ <Point 1.75" 1.875">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2316>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.75" 1.60125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2317>
+ <Overprint No>
+ <TLOrigin 1.875" 1.625">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `fonts'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2318>
+ <Overprint No>
+ <TLOrigin 1.875" 1.875">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `model-config'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2319>
+ <Overprint No>
+ <TLOrigin 0.25" 0.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `/.../lib/X11/$LANG/'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2320>
+ <Overprint No>
+ <TLOrigin 0.25" 0.24014">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2321>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 0.875" 0.125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2322>
+ <Overprint No>
+ <TLOrigin 0.875" 0.125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ > # end of Frame
+ <Frame
+ <ID 6>
+ <Unique 2436>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.75" 5.80555" 5.0" 2.0">
+ <BRect 1.75" 5.80555" 5.0" 2.0">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <PolyLine
+ <Unique 211>
+ <GroupID 7>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.76514" 0.57083">
+ <Point 0.76514" 0.82083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 213>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.51514" 0.57083">
+ <Point 1.26514" 0.57083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 215>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.76514" 0.82083">
+ <Point 1.51514" 0.82083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2441>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.26514" 0.66556">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <PolyLine
+ <Unique 218>
+ <GroupID 7>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.51514" 0.32083">
+ <Point 0.51514" 0.57083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2443>
+ <GroupID 7>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.39014" 0.46958">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2444>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.89014" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2445>
+ <Overprint No>
+ <TLOrigin 0.875" 0.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2446>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.39014" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `print'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2450>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.64014" 0.82083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `attributes'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2451>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.07083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2452>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.32083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2453>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2454>
+ <Overprint No>
+ <TLOrigin 1.125" 2.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2455>
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2458>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2459>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 232>
+ <GroupID 7>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 1.09458">
+ <Point 1.76514" 1.09458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 234>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 0.84458">
+ <Point 1.01514" 1.09458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 236>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 1.11833">
+ <Point 1.01514" 1.36833">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 238>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 1.36833">
+ <Point 1.76514" 1.36833">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2464>
+ <GroupID 7>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.76514" 1.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2465>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.11833">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `document'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2466>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.36833">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `job'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 243>
+ <GroupID 7>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 1.34458">
+ <Point 1.01514" 1.59458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 245>
+ <GroupID 7>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 1.59458">
+ <Point 1.76514" 1.59458">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2477>
+ <GroupID 7>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.89014" 1.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2480>
+ <GroupID 7>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.59458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `printer'>
+ > # end of TextLine
+ <Group
+ <ID 7>
+ <Unique 2481>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ > # end of Group
+ <TextLine
+ <Unique 2482>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 0.51514" 0.32083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `/.../lib/X11/$LANG/'>
+ > # end of TextLine
+ > # end of Frame
+ <Frame
+ <ID 8>
+ <Unique 2499>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.75" 1.94444" 5.0" 1.3">
+ <BRect 1.75" 1.94444" 5.0" 1.3">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <PolyLine
+ <Unique 252>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.76514" 0.57083">
+ <Point 0.76514" 0.82083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 254>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.51514" 0.57083">
+ <Point 1.26514" 0.57083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 256>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.76514" 0.82083">
+ <Point 1.51514" 0.82083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2503>
+ <Overprint No>
+ <TLOrigin 1.26514" 0.66556">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <PolyLine
+ <Unique 259>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.51514" 0.32083">
+ <Point 0.51514" 0.57083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2505>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.39014" 0.46958">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2506>
+ <Overprint No>
+ <TLOrigin 1.89014" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2507>
+ <Overprint No>
+ <TLOrigin 0.875" 0.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2508>
+ <Overprint No>
+ <TLOrigin 1.39014" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `print'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2509>
+ <Overprint No>
+ <TLOrigin 1.64014" 0.82083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `ddx-config'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2510>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.07083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2511>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.32083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2512>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2513>
+ <Overprint No>
+ <TLOrigin 1.125" 2.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2514>
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2515>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2516>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 273>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 1.09458">
+ <Point 1.76514" 1.09458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 275>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 0.84458">
+ <Point 1.01514" 1.09458">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2521>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.76514" 1.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2522>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.11833">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XP-RASTER'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2523>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.36833">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2526>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2527>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.59458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2529>
+ <Overprint No>
+ <TLOrigin 0.51514" 0.32083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `/.../lib/X11/$LANG/'>
+ > # end of TextLine
+ > # end of Frame
+ <Frame
+ <ID 9>
+ <Unique 2555>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.75" 4.99444" 5.0" 1.6">
+ <BRect 1.75" 4.99444" 5.0" 1.6">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <PolyLine
+ <Unique 284>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.76514" 0.57083">
+ <Point 0.76514" 0.82083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 286>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.51514" 0.57083">
+ <Point 1.26514" 0.57083">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 288>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.76514" 0.82083">
+ <Point 1.51514" 0.82083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2559>
+ <Overprint No>
+ <TLOrigin 1.26514" 0.66556">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <PolyLine
+ <Unique 291>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.51514" 0.32083">
+ <Point 0.51514" 0.57083">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2561>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.39014" 0.46958">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2562>
+ <Overprint No>
+ <TLOrigin 1.89014" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2563>
+ <Overprint No>
+ <TLOrigin 0.875" 0.10125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2564>
+ <Overprint No>
+ <TLOrigin 1.39014" 0.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `print'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2565>
+ <Overprint No>
+ <TLOrigin 1.64014" 0.82083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `ddx-config'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2566>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.07083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2567>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.32083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2568>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2569>
+ <Overprint No>
+ <TLOrigin 1.125" 2.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2570>
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2571>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2572>
+ <Overprint No>
+ <TLOrigin 1.64014" 1.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <PolyLine
+ <Unique 305>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 1.09458">
+ <Point 1.76514" 1.09458">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 307>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.01514" 0.84458">
+ <Point 1.01514" 1.09458">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2575>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 1.76514" 1.09458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2576>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.11833">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `XP-RASTER'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2577>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.36833">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2578>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.57083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2579>
+ <Overprint No>
+ <TLOrigin 1.89014" 1.59458">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2580>
+ <Overprint No>
+ <TLOrigin 0.51514" 0.32083">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `/.../lib/X11/$LANG/'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 315>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.25" 1.125">
+ <Point 1.25" 1.375">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 317>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.25" 1.375">
+ <Point 2.0" 1.375">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2596>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <TLOrigin 2.0" 1.375">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <TextLine
+ <Unique 2597>
+ <Overprint No>
+ <TLOrigin 2.125" 1.375">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ <String `raster.config'>
+ > # end of TextLine
+ > # end of Frame
+ <Frame
+ <ID 10>
+ <Unique 2021>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.75" 2.26389" 5.0" 2.7">
+ <BRect 1.75" 2.26389" 5.0" 2.7">
+ <FrameType Below>
+ <Float No>
+ <NSOffset 0.0">
+ <BLOffset 0.0">
+ <AnchorAlign Center>
+ <Cropped Yes>
+ <PolyLine
+ <Unique 322>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 0.0">
+ <Point 0.25" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 324>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 0.25">
+ <Point 1.0" 0.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 326>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.25">
+ <Point 0.5" 0.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 328>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.5" 0.5">
+ <Point 1.25" 0.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 330>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.75" 0.5">
+ <Point 0.75" 0.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 332>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.25">
+ <Point 1.5" 1.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 334>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.5">
+ <Point 1.5" 1.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 336>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.75" 0.75">
+ <Point 1.5" 0.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 338>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 1.0">
+ <Point 1.75" 1.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 340>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.25" 1.25">
+ <Point 2.0" 1.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 342>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.5">
+ <Point 2.25" 1.5">
+ > # end of PolyLine
+ <TextLine
+ <Unique 1983>
+ <Overprint No>
+ <TLOrigin 1.0" 0.84472">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ > # end of TextLine
+ <PolyLine
+ <Unique 345>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 0.75">
+ <Point 1.0" 1.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 347>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.25" 1.0">
+ <Point 1.25" 1.25">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2076>
+ <Overprint No>
+ <TLOrigin 1.125" 0.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FPostScriptName `Helvetica'>
+ <FLocked No>
+ > # end of Font
+ <String `usr'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2077>
+ <Overprint No>
+ <TLOrigin 1.375" 0.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `lib'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2078>
+ <Overprint No>
+ <TLOrigin 1.625" 0.75">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `X11'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2079>
+ <Overprint No>
+ <TLOrigin 1.875" 1.0">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `C'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2080>
+ <Overprint No>
+ <TLOrigin 2.125" 1.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `print'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 354>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.75">
+ <Point 2.25" 1.75">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 356>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 1.75">
+ <Point 1.5" 2.0">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 358>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 2.0">
+ <Point 2.25" 2.0">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2087>
+ <Overprint No>
+ <TLOrigin 2.375" 1.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `attributes'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2088>
+ <Overprint No>
+ <TLOrigin 2.375" 1.75">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `ddx-config'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2089>
+ <Overprint No>
+ <TLOrigin 2.375" 2.0">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `models'>
+ > # end of TextLine
+ <PolyLine
+ <Unique 363>
+ <DashedPattern
+ <DashedStyle Dashed>
+ <NumSegments 2>
+ <DashSegment 2.0 pt>
+ <DashSegment 4.0 pt>
+ > # end of DashedPattern
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 0.25">
+ <Point 0.25" 2.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 365>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 2.25">
+ <Point 1.0" 2.25">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 367>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 2.5">
+ <Point 1.0" 2.5">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 369>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.25" 2.25">
+ <Point 0.25" 2.5">
+ > # end of PolyLine
+ <TextLine
+ <Unique 2096>
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `directory B'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2097>
+ <Overprint No>
+ <TLOrigin 1.125" 2.5">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `directory C'>
+ > # end of TextLine
+ <TextLine
+ <Unique 2098>
+ <Overprint No>
+ <TLOrigin 1.125" 2.25">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ > # end of Frame
+> # end of AFrames
+<Tbls
+ <Tbl
+ <TblID 11>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.56944">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfBlockSize 1>
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblInitNumBodyRows 20>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2982>
+ <TblColumnWidth 2.58333">
+ <TblColumnWidth 0.90278">
+ <TblColumnWidth 0.76389">
+ <TblH
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2984>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Attribute'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2986>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Configuration'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2988>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `DDX Driver'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblH
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2990>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `document-attributes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2992>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2994>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2996>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `job-attributes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2998>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3000>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3002>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `locale'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3004>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3006>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3008>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `multiple-documents-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3010>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 3012>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 12>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.56944">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfBlockSize 1>
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblInitNumBodyRows 20>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2692>
+ <TblColumnWidth 2.66667">
+ <TblColumnWidth 0.90278">
+ <TblColumnWidth 0.76389">
+ <TblH
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2694>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Attribute'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2696>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Configuration'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2698>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `DDX Driver'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblH
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2700>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientations-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2702>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2704>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2706>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `descriptor'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2708>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2710>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2712>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `document-attributes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2714>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2716>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2718>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2720>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2722>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <Conditional
+ <InCondition `Comment'>
+ > # end of Conditional
+ <RowMaxHeight 14.0">
+ <RowHeight 0.0">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2724>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-ready'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2726>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2728>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2730>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `input-trays-medium'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2732>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2734>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2736>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `job-attributes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2738>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2740>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2742>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2744>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2746>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2748>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `plexes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2750>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2752>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2754>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-model'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2756>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2758>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2760>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-name'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2762>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2764>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2766>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-resolutions-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2768>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2770>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfSpAfter 5.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <Conditional
+ <InCondition `Comment'>
+ > # end of Conditional
+ <RowMaxHeight 14.0">
+ <RowHeight 0.0">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2772>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-document-format-generated'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2774>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2776>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2778>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-ddx-config-file-name'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2780>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2782>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2784>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-ddx-identifier'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2786>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2788>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2790>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-embedded-formats-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2792>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2794>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2796>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2798>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2800>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2802>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2804>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2806>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2808>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-page-attributes-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2810>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2812>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2814>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-raw-formats-supported'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2816>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2818>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2820>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-proviso'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2822>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2824>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2826>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-spooler-command'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2828>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2830>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 13>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.56944">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfBlockSize 1>
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblInitNumBodyRows 20>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2621>
+ <TblColumnWidth 2.58333">
+ <TblColumnWidth 0.90278">
+ <TblColumnWidth 0.76389">
+ <TblH
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2623>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Attribute'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2625>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Configuration'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2627>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `DDX Driver'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblH
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2629>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `job-name'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2631>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2633>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2635>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `job-owner'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2637>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2639>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2641>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `notification-profile'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2643>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2645>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2647>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-state'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2649>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2651>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2653>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-spooler-command-options'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2655>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2657>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2659>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `xp-spooler-command-results'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2661>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2663>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 14>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.56944">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfBlockSize 1>
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblInitNumBodyRows 20>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2511>
+ <TblColumnWidth 2.58333">
+ <TblColumnWidth 0.90278">
+ <TblColumnWidth 0.76389">
+ <TblH
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2513>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Attribute'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2515>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Configuration'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2517>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `DDX Driver'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblH
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2519>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientation'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2521>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2523>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2525>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `copy-count'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2527>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2529>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2531>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `default-printer-resolution'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2533>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2535>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2537>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2539>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2541>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2543>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2545>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2547>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2549>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `document-format'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2551>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2553>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2555>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `plex'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2557>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2559>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2561>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2563>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2565>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+ <Tbl
+ <TblID 15>
+ <TblTag `Format A'>
+ <TblFormat
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 2.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.92446">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 0.56944">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.874">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ > # end of TblColumnBody
+ <TblColumnF
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfBlockSize 1>
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ > # end of TblTitlePgf1
+ <TblInitNumBodyRows 20>
+ > # end of TblFormat
+ <TblNumColumns 3>
+ <Unique 2434>
+ <TblColumnWidth 2.58333">
+ <TblColumnWidth 0.90278">
+ <TblColumnWidth 0.76389">
+ <TblH
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.30556">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2436>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Attribute'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2438>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Configuration'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2440>
+ <PgfTag `CellHeading'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `DDX Driver'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblH
+ <TblBody
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2442>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientation'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2444>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2446>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2448>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `default-printer-resolution'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2450>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2452>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2454>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2456>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2458>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2460>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2462>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2464>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2466>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `plex'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2468>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2470>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ <Row
+ <RowMaxHeight 14.0">
+ <RowHeight 0.27778">
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2472>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2474>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ <Cell
+ <CellContent
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2476>
+ <PgfTag `CellBody'>
+ <Pgf
+ <PgfAlignment Center>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 9.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `X'>
+ >
+ > # end of Para
+ > # end of CellContent
+ > # end of Cell
+ > # end of Row
+ > # end of TblBody
+ > # end of Tbl
+> # end of Tbls
+<Page
+ <Unique 713331>
+ <PageType LeftMasterPage>
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 16>
+ <Unique 713332>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.0" 0.1569">
+ <BRect 1.0" 10.334" 6.0" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 17>
+ <Unique 713333>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 837>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.0" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 18>
+ <Unique 713335>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.0" 0.211">
+ <BRect 1.0" 0.5" 6.0" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 19>
+ <Unique 713336>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 20>
+ <Unique 713337>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.125">
+ <BRect 1.0" 1.0" 6.5" 9.125">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 845>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+> # end of Page
+<Page
+ <Unique 713364>
+ <PageType RightMasterPage>
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 21>
+ <Unique 713369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 849>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 22>
+ <Unique 713371>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 853>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 23>
+ <Unique 713506>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 479>
+ <PageType OtherMasterPage>
+ <PageTag `First'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 24>
+ <Unique 480>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 860>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 25>
+ <Unique 482>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 864>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 26>
+ <Unique 484>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 513>
+ <PageType OtherMasterPage>
+ <PageTag `cover'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 27>
+ <Unique 514>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 871>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.0" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 28>
+ <Unique 516>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 10.334" 6.5" 0.1569">
+ <BRect 1.0" 10.334" 6.5" 0.1569">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <PolyLine
+ <Unique 875>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.5" 10.25">
+ <Point 7.5" 10.25">
+ > # end of PolyLine
+ <TextRect
+ <ID 29>
+ <Unique 518>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.211">
+ <BRect 1.0" 0.5" 6.5" 0.211">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713401>
+ <PageType ReferencePage>
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 713402>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <TLOrigin 1.0" 0.625">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713403>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.69444" 2.52778" 0.27778">
+ <BRect 1.0" 0.69444" 2.52778" 0.27778">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 882>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.16667">
+ <Point 1.83333" 0.16667">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 713405>
+ <Overprint No>
+ <TLOrigin 1.02845" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+ <Frame
+ <Unique 713406>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.76745" 2.52778" 0.09722">
+ <BRect 1.0" 1.76745" 2.52778" 0.09722">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ <PolyLine
+ <Unique 886>
+ <Pen 0>
+ <PenWidth 0.25 pt>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.08333" 0.0534">
+ <Point 1.83333" 0.0534">
+ > # end of PolyLine
+ > # end of Frame
+> # end of Page
+<Page
+ <Unique 713409>
+ <PageType ReferencePage>
+ <PageTag `TOC'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 30>
+ <Unique 713410>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713411>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Table of Contents Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713416>
+ <PageType ReferencePage>
+ <PageTag `IX'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 31>
+ <Unique 713417>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 5.5" 1.625">
+ <BRect 1.5" 4.0" 5.5" 1.625">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713418>
+ <Overprint No>
+ <TLOrigin 1.5" 3.88623">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Index Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713427>
+ <PageType ReferencePage>
+ <PageTag `LOF'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 32>
+ <Unique 713428>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713429>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `List of Figures Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713432>
+ <PageType ReferencePage>
+ <PageTag `LOT'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 33>
+ <Unique 713433>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.5" 4.0" 6.0" 3.0">
+ <BRect 1.5" 4.0" 6.0" 3.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextLine
+ <Unique 713434>
+ <Overprint No>
+ <TLOrigin 1.5" 3.8629">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `List of Tables Specification'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 10368>
+ <PageType BodyPage>
+ <PageNum `1'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 34>
+ <Unique 10369>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 35>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713316>
+ <PageType BodyPage>
+ <PageNum `2'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 35>
+ <Unique 713317>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 36>
+ > # end of TextRect
+ <PolyLine
+ <Unique 910>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 1.75" 5.375">
+ <Point 1.75" 5.625">
+ > # end of PolyLine
+ <TextLine
+ <Unique 1981>
+ <Overprint No>
+ <TLOrigin 2.5" 5.875">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 1982>
+ <Overprint No>
+ <TLOrigin 2.625" 5.875">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 1984>
+ <Overprint No>
+ <TLOrigin 2.75" 6.375">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 1985>
+ <Overprint No>
+ <TLOrigin 2.875" 6.375">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 1986>
+ <Overprint No>
+ <TLOrigin 3.0" 6.625">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 1987>
+ <Overprint No>
+ <TLOrigin 3.125" 6.875">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 1988>
+ <Overprint No>
+ <TLOrigin 3.25" 7.125">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 1999>
+ <Overprint No>
+ <TLOrigin 3.25" 7.375">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+ <TextLine
+ <Unique 2000>
+ <Overprint No>
+ <TLOrigin 3.25" 7.625">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 713319>
+ <PageType BodyPage>
+ <PageNum `3'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 36>
+ <Unique 713320>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 37>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713322>
+ <PageType BodyPage>
+ <PageNum `4'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 37>
+ <Unique 713323>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 38>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713325>
+ <PageType BodyPage>
+ <PageNum `5'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 38>
+ <Unique 713326>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 39>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713328>
+ <PageType BodyPage>
+ <PageNum `6'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 39>
+ <Unique 713329>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 40>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713436>
+ <PageType BodyPage>
+ <PageNum `7'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 40>
+ <Unique 713437>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 41>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713439>
+ <PageType BodyPage>
+ <PageNum `8'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 41>
+ <Unique 713440>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 42>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 713654>
+ <PageType BodyPage>
+ <PageNum `9'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 42>
+ <Unique 713655>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 43>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 491>
+ <PageType BodyPage>
+ <PageNum `10'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 43>
+ <Unique 492>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 44>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 574>
+ <PageType BodyPage>
+ <PageNum `11'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 44>
+ <Unique 575>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 45>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1719>
+ <PageType BodyPage>
+ <PageNum `12'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 45>
+ <Unique 1720>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 46>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1996>
+ <PageType BodyPage>
+ <PageNum `13'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 46>
+ <Unique 1997>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 47>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1999>
+ <PageType BodyPage>
+ <PageNum `14'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 47>
+ <Unique 2000>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 48>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2015>
+ <PageType BodyPage>
+ <PageNum `15'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 48>
+ <Unique 2016>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 49>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2615>
+ <PageType BodyPage>
+ <PageNum `16'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 49>
+ <Unique 2616>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 50>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2618>
+ <PageType BodyPage>
+ <PageNum `17'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 50>
+ <Unique 2619>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 51>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2621>
+ <PageType BodyPage>
+ <PageNum `18'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 51>
+ <Unique 2622>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 52>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2624>
+ <PageType BodyPage>
+ <PageNum `19'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 52>
+ <Unique 2625>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 53>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2627>
+ <PageType BodyPage>
+ <PageNum `20'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 53>
+ <Unique 2628>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 54>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2630>
+ <PageType BodyPage>
+ <PageNum `21'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 54>
+ <Unique 2631>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 55>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2633>
+ <PageType BodyPage>
+ <PageNum `22'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 55>
+ <Unique 2634>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 56>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2636>
+ <PageType BodyPage>
+ <PageNum `23'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 56>
+ <Unique 2637>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 57>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2639>
+ <PageType BodyPage>
+ <PageNum `24'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 57>
+ <Unique 2640>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 58>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2642>
+ <PageType BodyPage>
+ <PageNum `25'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 58>
+ <Unique 2643>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 59>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2645>
+ <PageType BodyPage>
+ <PageNum `26'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 59>
+ <Unique 2646>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 60>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2648>
+ <PageType BodyPage>
+ <PageNum `27'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 60>
+ <Unique 2649>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 61>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2651>
+ <PageType BodyPage>
+ <PageNum `28'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 61>
+ <Unique 2652>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 62>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2654>
+ <PageType BodyPage>
+ <PageNum `29'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 62>
+ <Unique 2655>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 63>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2657>
+ <PageType BodyPage>
+ <PageNum `30'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 63>
+ <Unique 2658>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 64>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2660>
+ <PageType BodyPage>
+ <PageNum `31'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 64>
+ <Unique 2661>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 65>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2663>
+ <PageType BodyPage>
+ <PageNum `32'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 65>
+ <Unique 2664>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 66>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2666>
+ <PageType BodyPage>
+ <PageNum `33'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 66>
+ <Unique 2667>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 67>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2669>
+ <PageType BodyPage>
+ <PageNum `34'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 67>
+ <Unique 2670>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 68>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2672>
+ <PageType BodyPage>
+ <PageNum `35'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 68>
+ <Unique 2673>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 69>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2675>
+ <PageType BodyPage>
+ <PageNum `36'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 69>
+ <Unique 2676>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 70>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1341>
+ <PageType BodyPage>
+ <PageNum `37'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 70>
+ <Unique 1342>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 71>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1691>
+ <PageType BodyPage>
+ <PageNum `38'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 71>
+ <Unique 1692>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 72>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1694>
+ <PageType BodyPage>
+ <PageNum `39'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 72>
+ <Unique 1695>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 73>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1697>
+ <PageType BodyPage>
+ <PageNum `40'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 73>
+ <Unique 1698>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 74>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1700>
+ <PageType BodyPage>
+ <PageNum `41'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 74>
+ <Unique 1701>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 75>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 1703>
+ <PageType BodyPage>
+ <PageNum `42'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Right'>
+ <TextRect
+ <ID 75>
+ <Unique 1704>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 76>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2166>
+ <PageType BodyPage>
+ <PageNum `43'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 76>
+ <Unique 2167>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 77>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2346>
+ <PageType BodyPage>
+ <PageNum `44'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 77>
+ <Unique 2347>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.125" 6.5" 9.0">
+ <BRect 1.0" 1.125" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 2013>
+ <PageType HiddenPage>
+ <PageTag `HIDDEN'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 78>
+ <Unique 2014>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.0" 9.0">
+ <BRect 1.0" 1.0" 6.0" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713349>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.0">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 16>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 713341>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Current Date (Long)'>
+ <Unique 713344>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 713347>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713350>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 17>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713351>
+ <PgfTag `header right'>
+ <Pgf
+ <PgfAlignment Left>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 18>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FLocked No>
+ > # end of Font
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 444>
+ > # end of Variable
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FLocked No>
+ > # end of Font
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 501>
+ > # end of Variable
+ <Variable
+ <VariableName `protocol'>
+ <Unique 447>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713477>
+ <Pgf
+ <PgfTag `left footer'>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 19>
+ <String `Release 6.4'>
+ <Char Tab>
+ <Char Tab>
+ <String `X Version 11'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713362>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 20>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713374>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 21>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713381>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 22>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713510>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 23>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 713559>
+ > # end of Variable
+ <Variable
+ <VariableName `Running H/F 1'>
+ <Unique 504>
+ > # end of Variable
+ <Char Tab>
+ <Variable
+ <VariableName `Current Page #'>
+ <Unique 715799>
+ > # end of Variable
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 485>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 24>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 489>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 25>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 496>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 26>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 491>
+ > # end of Variable
+ <Char Tab>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 519>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 27>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 523>
+ <PgfTag `right footer'>
+ <ParaLine
+ <TextRectID 28>
+ <String `X Version 11'>
+ <Char Tab>
+ <String `Release 6.4'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 527>
+ <PgfTag `Heading1'>
+ <Pgf
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 29>
+ <Variable
+ <VariableName `protocol'>
+ <Unique 525>
+ > # end of Variable
+ <Char Tab>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `TOC'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713412>
+ <Pgf
+ <PgfTag `1HeadingTOC'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.5">
+ <PgfSpBefore 5.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 2>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfLeading 2.0 pt>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 0.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 30>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713413>
+ <Pgf
+ <PgfTag `2HeadingTOC'>
+ <PgfFIndent 0.5">
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713414>
+ <Pgf
+ <PgfTag `3HeadingTOC'>
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.5">
+ <PgfSpBefore 0.0 pt>
+ <PgfBlockSize 1>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.5">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `IX'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713419>
+ <Pgf
+ <PgfTag `Level2IX'>
+ <PgfFIndent 0.125">
+ <PgfLIndent 0.375">
+ <PgfLeading 1.0 pt>
+ <PgfNumTabs 0>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 31>
+ <String `Level2IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713420>
+ <Pgf
+ <PgfTag `Level1IX'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String `Level1IX'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713421>
+ <Pgf
+ <PgfTag `SpecIX'>
+ <PgfLIndent 0.0">
+ <PgfLeading 2.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String ` 1, 2'>
+ <Char EnDash>
+ <String `3'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713422>
+ <Pgf
+ <PgfTag `SortSpecIX'>
+ > # end of Pgf
+ <ParaLine
+ <String `<$symbols\><$numerics\><$alphabetics\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713423>
+ <Pgf
+ <PgfTag `GroupTitlesIX'>
+ <PgfSpBefore 11.0 pt>
+ <PgfWithNext Yes>
+ > # end of Pgf
+ <ParaLine
+ <String `Symbols[\\ ];Numerics[0];A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713424>
+ <Pgf
+ <PgfTag `IndexIX'>
+ <PgfSpBefore 0.0 pt>
+ <PgfWithNext No>
+ > # end of Pgf
+ <ParaLine
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713425>
+ <Pgf
+ <PgfTag `Paragraph'>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOF'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713430>
+ <Pgf
+ <PgfTag `FigureLOF'>
+ <PgfLIndent 1.0">
+ <PgfSpBefore 2.0 pt>
+ <PgfBlockSize 2>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Right>
+ <TSLeaderStr `.'>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 32>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `LOT'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713435>
+ <Pgf
+ <PgfTag `TableTitleLOT'>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 33>
+ <String `<$paranum\>'>
+ <Char Tab>
+ <String `<$paratext\>'>
+ <Char Tab>
+ <String `<$pagenum\>'>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 675>
+ <PgfTag `1Heading'>
+ <PgfNumString `1\t'>
+ <ParaLine
+ <TextRectID 34>
+ <String `Introduction'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2323>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This document describes the implementation of the X Print Server distributed with Release 6.4 of the X '>
+ >
+ <ParaLine
+ <String `Window System. The intended reader is the system administrator who needs to configure the X Print Server '>
+ >
+ <ParaLine
+ <String `for a particular set of printers and a particular spooling subsystem.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2324>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The syntax and format of the configuration files read by the X Print Server are described.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2325>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `This document is not an X Consortium standard.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2322>
+ <PgfTag `1Heading'>
+ <PgfNumString `2\t'>
+ <ParaLine
+ <TextRectID 35>
+ <String `X Print Configuration Databases'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1553>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Configuration files provide the raw information that is used by the X Print Service components. Strictly '>
+ >
+ <ParaLine
+ <String `speaking, the configuration files, print dialog manager, and DDX drivers of the print server form a matched '>
+ >
+ <ParaLine
+ <String `set. The configuration files, though, have been designed to be as flexible as possible.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1557>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Most of the configuration files are in the form of an XRM resource file. This provides maximum flexibility. '>
+ >
+ <ParaLine
+ <String `The hierarchi'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `c'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `al nature of the data base avoids name clashes, and wild cards can be used to identify charac'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `teristics that apply to many printers. Also, additional attributes can be added later.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1558>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `This section documents the configuration directories and files used by the X Print Service. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1559>
+ <PgfTag `Body'>
+ <ParaLine
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `$X'>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `PCONFIGDIR'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is an environment variable read by the X print server which defines the root of the config'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `uration directory hierarchy. If '>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `$XPCONFIGDIR'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is not defined, the server will default to '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `<'>
+ <Font
+ <FTag `Filename'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `XRoot\>/lib/X11'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `, where '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `<XRoot\>'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is the root of the X11 install tree. Configuration values are deter'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `mined by performing these steps:'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1560>
+ <PgfTag `Numbered'>
+ <PgfNumString `1.\t'>
+ <ParaLine
+ <String `Search '>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `$X'>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `PCONFIGDIR'>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `/'>
+ <Font
+ <FTag `Filename'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `C/print'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to obtain default values from a configuration file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1561>
+ <PgfTag `Numbered'>
+ <PgfNumString `2.\t'>
+ <ParaLine
+ <String `If the configuration file is not found, server-defined defaults will be used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1562>
+ <PgfTag `Numbered'>
+ <PgfNumString `3.\t'>
+ <ParaLine
+ <String `For locales other than C, search '>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `$X'>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `PCONFIGDIR'>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `/'>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `$LANG'>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `/print'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and use the configuration file '>
+ >
+ <ParaLine
+ <String `values to augment the defaults determined above.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1563>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `One exception to this is the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file. This file indicates which printers will be managed by the X '>
+ >
+ <ParaLine
+ <String `Print Server. The path and name of this file is indicated by the '>
+ <Font
+ <FTag `Option'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `-XpFile'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` command line option defined by '>
+ >
+ <ParaLine
+ <String `the X Print Server. '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `If the command line option is not present, the X Server will default to '>
+ <Font
+ <FTag `EnvironVar'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `$XPCON'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `FIGDIR'>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `/C/print/Xprinters'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `. T'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `his file is optional.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1565>
+ <PgfTag `Body'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `+16892'>
+ <MCurrPage `2'>
+ <Unique 1910>
+ > # end of Marker
+ <String `There are several types of configuration files stored in several subdirectories:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1566>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `A file that indicates which printers will be managed by the X Print Server. It is referred to as the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1567>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Printer attribute files that define the capabilities of the printer model. The name of the file is typi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `cally all uppercase, and consists of the manufacturer and the model of printer. Examples of file '>
+ >
+ <ParaLine
+ <String `names are: '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `HPDJ1600C'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `IBM-4039-16l'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `SUN-NP20'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1568>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Printer attribute files that define the capabilities of printers installed on a particular X Print Server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1569>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Job and document attribute files that specify initial values for the print operation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1570>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Optional DDX driver configuration files. The format of each file is internal to the corresponding '>
+ >
+ <ParaLine
+ <String `DDX driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1571>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Most of the configuration files documented in this section are encoded in COMPOUND_TEXT, as defined '>
+ >
+ <ParaLine
+ <String `by the X Window System. The only exception is the optional DDX driver configuration files. These files are '>
+ >
+ <ParaLine
+ <String `defined at the discretion of the driver developer.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1573>
+ <PgfTag `2Heading'>
+ <Pgf
+ <PgfPlacement PageTop>
+ > # end of Pgf
+ <PgfNumString `2.1\t'>
+ <ParaLine
+ <TextRectID 36>
+ <Marker
+ <MType 9>
+ <MText `22038: 2Heading: 1.1 Configuration Directories'>
+ <MCurrPage `3'>
+ <Unique 2268>
+ > # end of Marker
+ <String `Configuration Directories'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1580>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.1.1 \t'>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `+40970'>
+ <MCurrPage `3'>
+ <Unique 1921>
+ > # end of Marker
+ <String `Print Configuration Directory'>
+ <Marker
+ <MType 2>
+ <MText `directories:print configuration;print configuration directory'>
+ <MCurrPage `3'>
+ <Unique 2206>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2008>
+ <PgfTag `Body'>
+ <ParaLine
+ <AFrame 10>
+ >
+ > # end of Para
+ <Para
+ <Unique 2102>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-1.\t'>
+ <ParaLine
+ <String `Example Print Configuration Directory'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1974>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The X Print Service configuration directory is assumed to be '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `/usr/lib/X11/C/print'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` for the purposes '>
+ >
+ <ParaLine
+ <String `of this discussion. During actual use, the configuration files will be distributed throughout the configuration '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `hierarchy,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` as described in the '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `22038: 2Heading: 1.1 Configuration Directories'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 942177>
+ <Unique 1588>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Configuration Directories'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` section.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1590>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `At the top level of the locale-specific '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `print'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory, three subdirectories are defined. The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `ddx-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `directory contains configuration information specific to X Print Server DDX drivers. The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `models'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory '>
+ >
+ <ParaLine
+ <String `defines default attributes and internal font metrics for various models of printers. The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` direc'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tory defines attributes for the various X Printers defined on the host system. The following sections describe '>
+ >
+ <ParaLine
+ <String `these directories in more detail.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1591>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.1.2 \t'>
+ <ParaLine
+ <TextRectID 37>
+ <String `Printer Model Configuration Directories'>
+ <Marker
+ <MType 2>
+ <MText `directories:printer model configuration;printer model configuration directory'>
+ <MCurrPage `4'>
+ <Unique 2207>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1597>
+ <PgfTag `Body'>
+ <ParaLine
+ <AFrame 2>
+ >
+ > # end of Para
+ <Para
+ <Unique 2163>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-2.\t'>
+ <ParaLine
+ <String `Example X Printer '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `models'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` Directory'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2111>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `models'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory contains subdirectories that define configuration information for various models of '>
+ >
+ <ParaLine
+ <String `printers.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` E'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ach subdirectory corresponds to a specific printer model or a specific class of printer models. The '>
+ >
+ <ParaLine
+ <String `names of these model directories define valid values for the '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute in the '>
+ >
+ <ParaLine
+ <String `printer attributes file. See the '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `25786: 3Heading: 3.3.2 Printer Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 942951>
+ <Unique 1599>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` section.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2277>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `It is recommended that only uppercase characters be used for the names of model configuration directories. '>
+ >
+ <ParaLine
+ <String `This will help avoid namespace collisions between model names and printer names when they are used as '>
+ >
+ <ParaLine
+ <String `qualifiers in the attribute files. See the '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `25786: 3Heading: 3.3.2 Printer Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 943865>
+ <Unique 2279>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `35172: 3Heading: 3.3.3 Document Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 944890>
+ <Unique 2282>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Document Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and the '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `14440: 3Heading: 3.3.5 Job Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 945911>
+ <Unique 2285>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Job Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `sections for information on the format of these files.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2323>
+ <PgfTag `Body'>
+ <ParaLine
+ <AFrame 5>
+ >
+ > # end of Para
+ <Para
+ <Unique 2322>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-3.\t'>
+ <ParaLine
+ <String `Example Printer Model Configuration Directory'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2260>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The printer model configuration directory contains a '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file and a '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory. The '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file defines a set of default attributes for a specific printer model or a specific class of '>
+ >
+ <ParaLine
+ <String `printer models. See '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `31715: 2Sect: 4.3.3 Printer Model Attributes File'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 946686>
+ <Unique 2216>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Model Attributes File'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <String ` for details on the format of this file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1623>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory defines font metrics for the printer\xd5 s internal fonts.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` If any fonts are defined under a '>
+ >
+ <ParaLine
+ <String `locale-specific subdirectory, they obscure all fonts defined under the default C locale subdirectory.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1632>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 38>
+ <AFrame 3>
+ >
+ > # end of Para
+ <Para
+ <Unique 2429>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-4.\t'>
+ <ParaLine
+ <String `Example X Printer Internal Fonts Directory'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2328>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory is read by the X Print Server. See '>
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `34746: 1Heading: 2 Fonts'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 947579>
+ <Unique 2839>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Fonts'>
+ <String `\xd3 on page'>
+ <Char HardSpace>
+ <String `13'>
+ <XRefEnd >
+ <String ` for more information.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1633>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.1.3 \t'>
+ <ParaLine
+ <String `Printing Attributes Configuration Directory'>
+ <Marker
+ <MType 2>
+ <MText `directories:printing attributes configuration;printing attributes configuration directory'>
+ <MCurrPage `5'>
+ <Unique 2209>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1639>
+ <PgfTag `Body'>
+ <ParaLine
+ <AFrame 6>
+ >
+ > # end of Para
+ <Para
+ <Unique 2486>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-5.\t'>
+ <ParaLine
+ <String `Printing Attributes Configuration Directory'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2325>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The files in the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory contain initial values for the X Print Service attributes. These '>
+ >
+ <ParaLine
+ <String `attributes define print setup options ('>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `job'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `) and provide printer capabilities ('>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `). See '>
+ >
+ <ParaLine
+ <String `the '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `38912: 1Sect: 7.6 Printer Attributes File'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 948430>
+ <Unique 2327>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Attributes File'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `23471: 2Sect: 4.3.2 Printer Attributes File'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 949853>
+ <Unique 2330>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Document Attributes File'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and the '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `14722: 1Sect: 7.8 Job Attributes File'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 950765>
+ <Unique 2333>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Job Attributes File'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` sections for informa'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion on the format of these files.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2340>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2336>
+ <PgfTag `3Heading'>
+ <PgfNumString `2.1.4 \t'>
+ <ParaLine
+ <TextRectID 39>
+ <String `DDX Driver Configuration Directories'>
+ <Marker
+ <MType 2>
+ <MText `directories:DDX driver configuration;DDX driver configuration directory'>
+ <MCurrPage `6'>
+ <Unique 2335>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2337>
+ <Pgf
+ <PgfTag `Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1655>
+ <PgfTag `Body'>
+ <ParaLine
+ <AFrame 8>
+ >
+ > # end of Para
+ <Para
+ <Unique 2548>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-6.\t'>
+ <ParaLine
+ <String `Example '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `ddx-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` Directory'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2496>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `ddx-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory contains DDX driver configuration directories. A DDX driver may or may not '>
+ >
+ <ParaLine
+ <String `require one of these directories. The contents of each directory is specific to the corresponding driver. The '>
+ >
+ <ParaLine
+ <String `name of the directory is the same as the driver name provided by the DDX driver to the X Print Server, and '>
+ >
+ <ParaLine
+ <String `is also used as the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-ddx-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1659>
+ <PgfTag `Body'>
+ <ParaLine
+ <XRef
+ <XRefName `Number'>
+ <XRefSrcText `39926: FigureTitle: Figure\x11 4-2. Example DDX Driver Configuration Directory'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 951415>
+ <Unique 1657>
+ > # end of XRef
+ <String `Figure'>
+ <Char HardSpace>
+ <String `0-7.'>
+ <XRefEnd >
+ <String ` shows an example of the DDX driver configuration directory for the raster driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1666>
+ <PgfTag `Body'>
+ <ParaLine
+ <AFrame 9>
+ >
+ > # end of Para
+ <Para
+ <Unique 2588>
+ <Pgf
+ <PgfTag `FigureTitle'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 99>
+ <PgfLineSpacing Proportional>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `C:Figure\x11 <n\>< \>< \>-<n+\>< \>< \>.\\t'>
+ <PgfNumberFont `Figure Number'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.75">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Figure\x11 0-7.\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `39926: FigureTitle: Figure\x11 4-2. Example DDX Driver Configuration Directory'>
+ <MCurrPage `6'>
+ <Unique 2587>
+ > # end of Marker
+ <String `Example DDX Driver Configuration Directory'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2552>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Driver configuration files in this directory may be assigned on a per-printer basis by using the '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-ddx-'>
+ >
+ <ParaLine
+ <String `config-file-name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. Whether or not this attribute is utilized is determined by each indi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `vidual driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1668>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.2\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `27030: 1Sect: 7.5 X*printers File'>
+ <MCurrPage `6'>
+ <Unique 1667>
+ > # end of Marker
+ <Marker
+ <MType 9>
+ <MText `Xprinters file'>
+ <MCurrPage `6'>
+ <Unique 2211>
+ > # end of Marker
+ <String `Xprinters File'>
+ <Marker
+ <MType 2>
+ <MText `Xprinters file;files:Xprinters'>
+ <MCurrPage `6'>
+ <Unique 2218>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1669>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1670>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters file:'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `Identifies the printers to be managed by an X Print Server'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1672>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1673>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file is read by an X Print Server during initialization to determine which printers it will '>
+ >
+ <ParaLine
+ <String `manage.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1674>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Lines in the file consist of a keyword followed by a value. Keyword recognition is case-sensitive. Any data '>
+ >
+ <ParaLine
+ <String `following the comment character \xd2 '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `#'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd3 on a given line is ignored.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1675>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <TextRectID 40>
+ <String `The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file is encoded in COMPOUND_TEXT as defined by the X Window System.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1676>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `KEYWORDS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1677>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `Augment_Printer_List'>
+ <MCurrPage `7'>
+ <Unique 2212>
+ > # end of Marker
+ <String `Augment_Printer_List'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1678>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `This keyword is used to generate a list of printer names that will be added to the list of '>
+ >
+ <ParaLine
+ <String `printers the server will manage. If this line is not specified, or if the Xprinters file does not '>
+ >
+ <ParaLine
+ <String `exist, the server will generate a list of printers by utilizing the output of '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `lpstat(1)'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1679>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Predefined values for the '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Augment_Printer_List'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` keyword are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1680>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `%default'>
+ <MCurrPage `7'>
+ <Unique 2213>
+ > # end of Marker
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <String `%default'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2700>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Explictly invoke the default behavior, i.e. augment the list of printers by utilizing the out'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `put of '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `lpstat(1)'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1682>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `%none%'>
+ <MCurrPage `7'>
+ <Unique 2214>
+ > # end of Marker
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <String `%none%'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2701>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Do not augment the list of printers. This provides a way to override the default behavior of '>
+ >
+ <ParaLine
+ <String `calling '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `lpstat(1)'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` when no '>
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Augment_Printer_List'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` line is present.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1684>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In addition, the value may be specified as a POSIX shell command pipeline that generates a list of printers '>
+ >
+ <ParaLine
+ <String `on '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `stdout'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. This generated list is added to the list of printers managed by the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1685>
+ <PgfTag `Definition1'>
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `Printer'>
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `A whitespace delimited list of one or more printer names to add to the list of printers man'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `aged by the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1687>
+ <PgfTag `Definition1'>
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FWeight `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `Map'>
+ <Char Tab>
+ <String `Att'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ributes configuration files utilize a printer qualifier, defined by the X Print Server, that '>
+ >
+ <ParaLine
+ <String `is the printer name by default, provided the characters comprising the printer name con'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `form to the restricted set of characters allowed for the printer qualifier, that is, the set of '>
+ >
+ <ParaLine
+ <String `characters allowed for Xrm resource names. The '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Map'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` keyword is provided to allow speci'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `fication of a printer qualifier when a default printer qualifier is not generated by the server, '>
+ >
+ <ParaLine
+ <String `or if an override of the default qualifier is desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1689>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Map'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` value is in the form '>
+ <Font
+ <FTag `Replaceable'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `<printer name\> <printer qualifier\>,'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` for example:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1690>
+ <PgfTag `Programlisting_i'>
+ <Pgf
+ <PgfFIndent 1.0">
+ <PgfLIndent 1.0">
+ <PgfSpBefore 6.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Map k\x9a nig koenig'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1691>
+ <PgfTag `RefSect1Title'>
+ <ParaLine
+ <TextRectID 41>
+ <String `EXAMPLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1692>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1693>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `#'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1694>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# Xprinters sample configuration file'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1695>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `#'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1696>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# The Xprinters file is read by an X Print Server during initialization in'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `# order to determine which printers it will manage. The actual file name and'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `# path is given to the X Print Server via the -XpFile command '>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `# line option.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1697>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1698>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1699>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1700>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# Use lpstat to augment the list of printers managed by the'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1701>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# server. (This is the default behavior if the Xprinters file is'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1702>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# not specified, or if an \xd2 Augment_Printer_List\xd3 line is not specified.)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1703>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1704>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `Augment_Printer_List %default%'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1705>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1706>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1707>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# Use the specified command pipeline to augment the list of printers'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1708>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# managed by the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1709>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1710>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `#Augment_Printer_List lpstat -a | cut -d \xd2 \xd2 -f 1 #equivalent to default'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1711>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1712>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1713>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# Do not augment the list of printers managed by the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1714>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1715>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `#Augment_Printer_List %none%'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1716>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1717>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1718>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# Add individual printers to the list of printers managed by the'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1719>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1720>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1721>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `#Printer laser_1 laser_2 laser_c4'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1722>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `#Printer deskJet_1 deskJet_2'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1723>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `#Printer xpress'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1724>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1725>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1726>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `# Provide printer qualifiers for non-conforming printer names'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1727>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `########################################################################'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1728>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ > # end of Pgf
+ <ParaLine
+ <String `Map k\x9a nig koenig'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1730>
+ <PgfTag `RefSect1Title'>
+ <Pgf
+ <PgfPlacement Anywhere>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2343>
+ <PgfTag `RefSect1Title'>
+ <Pgf
+ <PgfPlacement Anywhere>
+ > # end of Pgf
+ <ParaLine
+ <String `SEE ALSO'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1731>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `Command'>
+ <FLocked No>
+ > # end of Font
+ <String `lpstat(1)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1733>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.3\t'>
+ <ParaLine
+ <TextRectID 42>
+ <Marker
+ <MType 9>
+ <MText `31715: 2Sect: 4.3.3 Printer Model Attributes File'>
+ <MCurrPage `9'>
+ <Unique 1732>
+ > # end of Marker
+ <String `Printer Model Attributes File'>
+ <Marker
+ <MType 2>
+ <MText `printer model attributes file'>
+ <MCurrPage `9'>
+ <Unique 2219>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `files:printer model attributes'>
+ <MCurrPage `9'>
+ <Unique 2220>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1734>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1735>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Printer model attributes file'>
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `:'>
+ <Char Tab>
+ <Char Tab>
+ <String `Printer model capabilities'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1737>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1738>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The printer model attributes file consists of printer attributes for a specific printer model or a specific class of '>
+ >
+ <ParaLine
+ <String `printer models. This file is delivered by a printer vendor or DDX printer driver developer in order to provide '>
+ >
+ <ParaLine
+ <String `default configuration information for a printer.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1739>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Valid attributes are based on a subset of the POSIX 1387.4 Printer Object attribute definitions'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` ('>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `note:'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` the X '>
+ >
+ <ParaLine
+ <String `Print Service is '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `not'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` an implementation of POSIX 1387.4). S'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ee the '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `25786: 3Heading: 3.3.2 Printer Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 952274>
+ <Unique 1741>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` section for the com'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `plete list.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1746>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The printer model attributes file is encoded in COMPOUND_TEXT as defined by the X Window System.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1747>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Attribute names must be qualified using either the '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or an asterisk ('>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `). For exam'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ple, if '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `HPDJ1600C'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is the '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then to initialize the '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plexes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `attribute to '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `simplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, use: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `HPDJ1600C.plexes-supported: simplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. For the asterisk, use: '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `*.plexes-supported: simplex'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the same attribute is specified using each method, the '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-'>
+ >
+ <ParaLine
+ <String `model-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` qualified entry takes precedence.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1748>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `EXAMPLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1749>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `! This is the configuration file for the HP DeskJet 1600C printer.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1750>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `! It is designed for use with the CDEnext Sample Implementation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1751>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `! PCL, raster drivers, and print dialog manager.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1752>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1753>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.printer-model: '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `H'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ewlett-Packard DeskJet 1600C'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1754>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.descriptor: '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `H'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `ewlett-Packard DeskJet 1600C'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1755>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.printer-resolutions-supported: 300'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1756>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.content-orientations-supported: portrait landscape'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1757>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.document-formats-supported: {PCL 5}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1758>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.plexes-supported: simple'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `x'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1759>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `H'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `PDJ1600C.xp-ddx-identifier: XP-PCL'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1760>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.xp-embedded-formats-supported: {PCL 5} {HPGL 2}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1761>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.dt-pdm-command: dtpdm'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1762>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1763>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `! na-letter, iso-a4, na-legal, na-number-10-envelope, more?'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1764>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `! assumes 1/4\xd3 unprintable margins for all media'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1765>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.medium-source-sizes-supported: \\'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1766>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `{\xd4 \xd5 \\'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1767>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` '>
+ <Char Tab>
+ <String `{na-letter FALSE {6.35 209.55 6.35 273.05}} '>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <String `\\'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1768>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` {iso-a4 FALSE'>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <String ` {6.35 203.65 6.35 290.65}} \\'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1769>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` {na-legal FALSE {6.35 209.55 6.35 349.25}} \\'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1770>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` {na-number-10-envelope FALSE {6.35 222.25 6.35 98.425}} \\'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1771>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1772>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2868>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SEE ALSO'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2872>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `25786: 3Heading: 3.3.2 Printer Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 952875>
+ <Unique 2870>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1786>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.4\t'>
+ <ParaLine
+ <TextRectID 43>
+ <Marker
+ <MType 9>
+ <MText `38912: 1Sect: 7.6 Printer Attributes File'>
+ <MCurrPage `10'>
+ <Unique 1785>
+ > # end of Marker
+ <String `Printer Attributes File'>
+ <Marker
+ <MType 2>
+ <MText `files:printer attributes;printer attributes file'>
+ <MCurrPage `10'>
+ <Unique 2221>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1787>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1788>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `printer attributes file'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `:'>
+ <Char Tab>
+ <String `Printer configuration'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1790>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1791>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The printer attributes file identifies capabilities and defaults for an X printer on the host system. This file is '>
+ >
+ <ParaLine
+ <String `defined by the system administrator. Definitions in this file override attributes defined in the Printer Model '>
+ >
+ <ParaLine
+ <String `Attributes file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1792>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Valid attributes are based on a subset of the POSIX 1387.4 Printer Object attribute definitions. See the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `25786: 3Heading: 3.3.2 Printer Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 953628>
+ <Unique 1794>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` section for the complete list.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1799>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The printer attributes file is encoded in COMPOUND_TEXT as defined by the X Window System.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1800>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Attribute names must be qualified by using one of the following (listed in order of precedence):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1801>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer qualifier'>
+ <MCurrPage `10'>
+ <Unique 2222>
+ > # end of Marker
+ <String `printer qualifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1802>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Set this attribute for the printer indicated by the printer qualifier. The set of valid printer '>
+ >
+ <ParaLine
+ <String `qualifiers is defined as the list of printer qualifiers managed by the X Print Server (the '>
+ >
+ <ParaLine
+ <String `server typically generates this list by reading the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1803>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `dj_1.document-formats-ready: {PCL 5}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1804>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-model-identifier'>
+ <MCurrPage `10'>
+ <Unique 2223>
+ > # end of Marker
+ <String `xp-model-identifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2718>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Set this attribute for all printers of a specific model:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1806>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <Char Tab>
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `HPDJ1600C.document-formats-ready: {PCL 5}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1808>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Set this attribute for all printers:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1809>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <Char Tab>
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `*.document-formats-ready: {PCL 5}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1810>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `EXAMPLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1811>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*.xp-model-identifier: HPLJ4SI'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1812>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1813>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPDJ1600C.input-trays-medium: { main na-letter }'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1814>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1815>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `deskJet_1.descriptor: '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `D'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `eskJet 1600C in Bob\xd5 s Cubicle'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1816>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `deskJet_1.xp-model-identifier: HPDJ1600C'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1817>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1818>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `laser_1.descriptor: '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `4'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `si in Brock\xd5 s Bay'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1819>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `laser_1.input-trays-medium: {top na-letter} {bottom na-legal} \\'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1820>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String ` {large-capacity na-letter}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1821>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `laser_2.descriptor: '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `l'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `aserjet in test area'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1822>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `laser_2.plexes-supported: simplex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1823>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `laser_2.input-trays-medium: {top iso-a4} {bottom iso-a4}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1824>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1825>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SEE ALSO'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1829>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `31715: 2Sect: 4.3.3 Printer Model Attributes File'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 954217>
+ <Unique 1827>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Model Attributes File'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1836>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading'>
+ <XRefSrcText `25786: 3Heading: 3.3.2 Printer Attributes'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 954878>
+ <Unique 1831>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `Printer Attributes'>
+ <String `\xd3 '>
+ <XRefEnd >
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` section.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1838>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.5\t'>
+ <ParaLine
+ <TextRectID 44>
+ <Marker
+ <MType 9>
+ <MText `14722: 1Sect: 7.8 Job Attributes File'>
+ <MCurrPage `11'>
+ <Unique 1837>
+ > # end of Marker
+ <String `Job Attributes File'>
+ <Marker
+ <MType 2>
+ <MText `files:job attributes;job attributes file'>
+ <MCurrPage `11'>
+ <Unique 2224>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1839>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1840>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `job attributes file'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `:Print job initial values'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1842>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1843>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The job attributes file is encoded in COMPOUND_TEXT as defined by the X Window System.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1844>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Attribute names must be qualified by using one of the following (listed in order of precedence):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1845>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer qualifier'>
+ <MCurrPage `11'>
+ <Unique 2225>
+ > # end of Marker
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <String `printer qualifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1846>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Set this attribute for the printer indicated by the printer qualifier. The set of valid printer '>
+ >
+ <ParaLine
+ <String `qualifiers is defined as the list of printer qualifiers managed by the X Print Server (the '>
+ >
+ <ParaLine
+ <String `server typically generates this list by reading the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1847>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `laser_1.job-name: Payroll Reports'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1848>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-model-identifier'>
+ <MCurrPage `11'>
+ <Unique 2226>
+ > # end of Marker
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1849>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Set this attribute for all printers of a specific model:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1850>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `HPDJ1600C.job-name: Payroll Reports'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1851>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfSpAfter 11.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 11.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 5>
+ <FColor `PANTONE 485 CV'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `*'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1852>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Set this attribute for all printers:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1853>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `*.job-name: Payroll Reports'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1854>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `EXAMPLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1855>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ <String `! defaults'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1856>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ <String `*.job-name: '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1857>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ <String `*.notification-profile: {}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1858>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1859>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ <String `! Printer laser_1 prints paychecks - always send email on '>
+ >
+ <ParaLine
+ <String `completion'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1860>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ <String `laser_1.notification-profile: {{event-report-job-completed} '>
+ >
+ <ParaLine
+ <String `electronic-mail}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1861>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ <String `laser_1.job-name: Payroll Reports '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1862>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1864>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.6\t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `23471: 2Sect: 4.3.2 Printer Attributes File'>
+ <MCurrPage `11'>
+ <Unique 1863>
+ > # end of Marker
+ <String `Document Attributes File'>
+ <Marker
+ <MType 2>
+ <MText `files:document attributes;document attributes file'>
+ <MCurrPage `11'>
+ <Unique 2227>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2906>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2907>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `document attributes file:'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <Char Tab>
+ <String `Print document initial values'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2914>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1869>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The document attributes file is encoded in COMPOUND_TEXT as defined by the X Window System.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1870>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Attribute names must be qualified by using one of the following (listed in order of precedence):'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2344>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2345>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1871>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 45>
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer qualifier'>
+ <MCurrPage `12'>
+ <Unique 2228>
+ > # end of Marker
+ <String `printer qualifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1872>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Set this attribute for the printer indicated by the printer qualifier. The set of valid printer '>
+ >
+ <ParaLine
+ <String `qualifiers is defined as the list of printer qualifiers managed by the X Print Server (the '>
+ >
+ <ParaLine
+ <String `server typically generates this list by reading the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1873>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `dj_1.plex: duplex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1874>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Definition term'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-model-identifier'>
+ <MCurrPage `12'>
+ <Unique 2229>
+ > # end of Marker
+ <String `xp-model-identifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1875>
+ <PgfTag `DefinitionBelowTerm'>
+ <ParaLine
+ <String `Set this attribute for all printers of a specific model.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1876>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `HPDJ1600C.plex: duplex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1878>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `*Set this attribute for all printers.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1879>
+ <PgfTag `DefinitionPara'>
+ <ParaLine
+ <String `Example: '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `*.plex: duplex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1880>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `EXAMPLE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1881>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*.default-input-tray: top'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1882>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*.default-printer-resolution: 300'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1883>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*.plex: duplex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1884>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*.content-orientation: portrait'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1885>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*.copy-count: 1'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1886>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*.document-format: {PCL 5}'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1887>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `HPLJ4SI.default-printer-resolution: 600'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1888>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `printer_1.default-input-tray: large-capacity'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1889>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `deskJet_1.plex: simplex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1891>
+ <PgfTag `2Heading'>
+ <PgfNumString `2.7\t'>
+ <ParaLine
+ <String `DDX Driver Configuration Files'>
+ <Marker
+ <MType 2>
+ <MText `files:DDX driver configuration;DDX driver configuration files'>
+ <MCurrPage `12'>
+ <Unique 2230>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1892>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1893>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `DDX configuration file'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `:'>
+ <Char Tab>
+ <String `DDX driver defined configuration'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2925>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1896>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The DDX configuration file is defined at the discretion of the DDX driver developer. The format of the infor'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `mation defined in the file is internal to the DDX driver. The developer may choose to publish the format of '>
+ >
+ <ParaLine
+ <String `this file to allow for customization by system administrators.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1897>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `EXAMPLES'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1898>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The Raster driver supplied with the X Print Service utilizes a DDX configuration file. Here is an example of '>
+ >
+ <ParaLine
+ <String `how it is defined:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1899>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `! Raster DDX print driver configuration file'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1900>
+ <PgfTag `Programlisting_i'>
+ <ParaLine
+ <String `*PageCommand: command -o option'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1901>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1902>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SEE ALSO'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2786>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <XRef
+ <XRefName `Heading & Page'>
+ <XRefSrcText `29756: 1Heading: 3 X Printer Driver Interface'>
+ <XRefSrcIsElem No>
+ <XRefSrcFile `'>
+ <XRefLastUpdate 878830322 955649>
+ <Unique 1904>
+ > # end of XRef
+ <String `\xd2 '>
+ <String `X Printer Driver Interface'>
+ <String `\xd3 on page'>
+ <Char HardSpace>
+ <String `15'>
+ <XRefEnd >
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1964>
+ <PgfTag `1Heading'>
+ <PgfNumString `3\t'>
+ <ParaLine
+ <TextRectID 46>
+ <Marker
+ <MType 9>
+ <MText `34746: 1Heading: 2 Fonts'>
+ <MCurrPage `13'>
+ <Unique 2836>
+ > # end of Marker
+ <String `Fonts'>
+ <Marker
+ <MType 2>
+ <MText `fonts'>
+ <MCurrPage `13'>
+ <Unique 2231>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2007>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Fonts play an important role in the printing environment. The basic tenet of the DtPrint X Server is to act '>
+ >
+ <ParaLine
+ <String `like a regular X server. X programmers will find the interface familiar.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1968>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Fonts provide the ability to render text. They may come from several sources:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1971>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Fonts built into the printer (both bitmapped and scalable)'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1972>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Bitmapped fonts on the server\xd5 s local disk'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1973>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Scalable and bitmapped fonts in a format compatible with the printer'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1974>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Fonts from a font server'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1975>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `From a printing application\xd5 s point of view, the LoadFont, QueryFont, and ListFonts requests work as usual '>
+ >
+ <ParaLine
+ <String `after the creation and setting of a print context. If the document-formats-supported attribute contains multi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ple document formats, then the client must set the document-format attribute prior to performing any font '>
+ >
+ <ParaLine
+ <String `requests. All fonts must be on the font path for the print context. In the sample implementation, that font '>
+ >
+ <ParaLine
+ <String `path'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` is'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` identical to the server\xd5 s font path. That is to say, in the sample implementation there is one server-'>
+ >
+ <ParaLine
+ <String `wide font path. ListFonts returns a list of fonts available along the font path. The X Logical Font Description '>
+ >
+ <ParaLine
+ <String `(XLFD) 1.5 standard is supported.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1976>
+ <PgfTag `4Sect'>
+ <ParaLine
+ <String `Font Path Handling'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1977>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `In the sample print server there is one server-wide font path. At server initialization '>
+ >
+ <ParaLine
+ <String `time the font path element corresponding to each printer model configured into the server '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `is a'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `dded at the '>
+ >
+ <ParaLine
+ <String `front of the server\xd5 s font path. This means that the font path elements for the printer internal fonts '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `p'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `recede '>
+ >
+ <ParaLine
+ <String `the font path elements for other font types. The font renderer for the printer internal font path elements '>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `i'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `nspect'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` the client performing any font-related request, and '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `r'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `espond'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` differently based on whether or not the '>
+ >
+ <ParaLine
+ <String `client has set a print context, and if so, then depending on the model of printer specified in the print context. '>
+ >
+ <ParaLine
+ <String `If the client has not set a print context, or if the client\xd5 s print context specifies a printer model other than that '>
+ >
+ <ParaLine
+ <String `associated with the particular font path element, then the renderer will not find or return any fonts. If the cli'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ent has set a print context and the printer specified by that print context matches the model associated with '>
+ >
+ <ParaLine
+ <String `the font path element, then the renderer '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `r'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `espond'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to the font request with information derived from the '>
+ >
+ <ParaLine
+ <String `\xd2 .pmf\xd3 and other files (e.g. fonts.alias) in the fonts directory within that printer model\xd5 s configuration direc'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tory.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1978>
+ <PgfTag `4Sect'>
+ <ParaLine
+ <String `Fonts built into the printer (both bitmapped and scalable). '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1979>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Users will generally prefer to use '>
+ >
+ <ParaLine
+ <String `internal fonts for performance reasons: they already reside in the printer and do not have to be downloaded. '>
+ >
+ <ParaLine
+ <String `The configuration directory for each printer containing internal fonts has a subdirectory named \xd2 fonts\xd3 . This '>
+ >
+ <ParaLine
+ <String `directory contains \xd2 .pmf\xd3 files defining the metrics for all glyphs in the font. The \xd2 .pmf\xd3 file format is analo'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `gous to that of a \xd2 .pcf\xd3 file with the glyphs omitted. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 1980>
+ <PgfTag `4Sect'>
+ <ParaLine
+ <String `PCF bitmapped fonts on the server\xd5 s local disk.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1981>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The print server treats these fonts like ordinary X '>
+ >
+ <ParaLine
+ <String `fonts. In response to a LoadFont request, the server will scale the font as required and, in the case of the PCL '>
+ >
+ <ParaLine
+ <String `driver, will convert the font into a format appropriate to the printer and download the font. '>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `QueryFont will return an X Font Structure containing metrics for the font'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 1982>
+ <PgfTag `4Sect'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `F'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `onts from an X font server'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1983>
+ <PgfTag `Body'>
+ <ParaLine
+ <String ` These fonts are analogous to having PCF fonts on disk. The difference is '>
+ >
+ <ParaLine
+ <String `that these scale inside the font server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1985>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DEPENDENCIES'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1986>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Print properties rely on X standard mechanisms:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1987>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Xlib'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1988>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `X protocol'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1989>
+ <PgfTag `Bullet2'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Font server technology'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1990>
+ <PgfTag `2Heading'>
+ <PgfNumString `3.1\t'>
+ <ParaLine
+ <TextRectID 47>
+ <String `Systems Administration Considerations'>
+ <Marker
+ <MType 2>
+ <MText `system administration considerations'>
+ <MCurrPage `14'>
+ <Unique 2232>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1991>
+ <PgfTag `3Heading'>
+ <PgfNumString `3.1.1 \t'>
+ <ParaLine
+ <String `Related Information'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1992>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `FILES'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1993>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The print driver\xd5 s configuration directory stores the metrics for the printer\xd5 s internal fonts. It contains the '>
+ >
+ <ParaLine
+ <String `font metrics in '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `pmf'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` files. The '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `pmf'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` files are identical to pcf files, but with glyphs removed. A '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `fonts.dir'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is an '>
+ >
+ <ParaLine
+ <String `index to the fonts. A '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `fonts.alias '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `file provides font names consistent with the X Logical Font Description '>
+ >
+ <ParaLine
+ <String `(XLFD) Version 1.5. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2014>
+ <PgfTag `1Heading'>
+ <PgfNumString `4\t'>
+ <ParaLine
+ <TextRectID 48>
+ <Marker
+ <MType 9>
+ <MText `29756: 1Heading: 3 X Printer Driver Interface'>
+ <MCurrPage `15'>
+ <Unique 2928>
+ > # end of Marker
+ <String `X Printer Driver Interface'>
+ <Marker
+ <MType 2>
+ <MText `X printer driver interface'>
+ <MCurrPage `15'>
+ <Unique 2233>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `interface, X printer driver'>
+ <MCurrPage `15'>
+ <Unique 2234>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2021>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.1\t'>
+ <ParaLine
+ <String `Xp Print Driver Overview'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2023>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `This section describes the interfaces used to integrate the print drivers into a server with the Xp extension. '>
+ >
+ <ParaLine
+ <String `This section includes descriptions of the functions a driver is required to implement in order to cooperate '>
+ >
+ <ParaLine
+ <String `with the Xp extension, and descriptions of some utility functions available for the convenience of driver '>
+ >
+ <ParaLine
+ <String `writers.'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String ` Not covered here are normal DDX driver interfaces for core X functionality.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2025>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The X Print server is simply an X server with the Xp extension. The drivers effectively provide a mapping '>
+ >
+ <ParaLine
+ <String `from most X protocol rendering operations to a form understandable by a particular class of printer. The '>
+ >
+ <ParaLine
+ <String `drivers are much like the hardware-specific display drivers in any other X server, but need to have some '>
+ >
+ <ParaLine
+ <String `slightly different and extended capabilities in order to cooperate with the Xp extension, and with the config'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `uration capabilities exposed via the Print Dialog Manager and its associated setup dialogs.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2027>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The print drivers are tightly coupled with the X server itself, and the initial sample print server will be based '>
+ >
+ <ParaLine
+ <String `on the X11-R6 server as supplied by the X Consortium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2029>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.2\t'>
+ <ParaLine
+ <String `X Print Driver Initialization '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2030>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.2.1 \t'>
+ <ParaLine
+ <String `Information Available during Initialization'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2031>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The driver has the following practical sources of information during its initialization:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2032>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Command line arguments - The driver\xd5 s initialization routine is passed argc and argv corresponding '>
+ >
+ <ParaLine
+ <String `to the arguments passed on the command line to the server.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2033>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Information in the ScreenRec - The driver\xd5 s initialization routine is passed a pointer to a ScreenRec '>
+ >
+ <ParaLine
+ <String `containing potentially useful information. In particular the width, height, mmWidth, and mmHeight '>
+ >
+ <ParaLine
+ <String `fields are filled in with the maximum potential dimensions prior to the calling of the driver\xd5 s initial'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ization routine. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2034>
+ <PgfTag `Bullet'>
+ <PgfNumString `\xa5 \t'>
+ <ParaLine
+ <String `Driver-specific configuration files - The driver can attempt to read information from on-disk files it '>
+ >
+ <ParaLine
+ <String `may expect to be in place on the system.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2035>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.2.2 \t'>
+ <ParaLine
+ <String `Xp Extension Initialization Interface'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2036>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The Xp extension is a bit abnormal relative to other X server extensions. In particular, it is possible to have '>
+ >
+ <ParaLine
+ <String `this extension be applicable on a subset of the screens of a given server. This enables a workstation with an '>
+ >
+ <ParaLine
+ <String `attached printer to utilize a single process for both the X display and the Xp functions. Another somewhat '>
+ >
+ <ParaLine
+ <String `unusual aspect of this extension is that the implementation of its functionality is highly device dependent, '>
+ >
+ <ParaLine
+ <String `and thus each driver must support a set of entry points beyond those provided by normal DDX-compatible '>
+ >
+ <ParaLine
+ <String `drivers. To these ends the driver\xd5 s initialization routine (i.e. the function which might be called from '>
+ >
+ <ParaLine
+ <String `dix:addScreen) must call a function to provide a pointer to the driver\xd5 s InitContext function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2037>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.2.3 \t'>
+ <ParaLine
+ <TextRectID 49>
+ <Marker
+ <MType 2>
+ <MText `XpRegisterInitFunc'>
+ <MCurrPage `16'>
+ <Unique 2235>
+ > # end of Marker
+ <String `XpRegisterInitFunc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2038>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2039>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Provides the printer-independent print server code with a pointer to the driver\xd5 s routine to be called when a '>
+ >
+ <ParaLine
+ <String `print context is being initialized for a printer associated with this driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2040>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2041>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2043>
+ <PgfTag `Definition'>
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `XpRegisterInitFunc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ <Char Tab>
+ <String `:Register an InitContext function with the device-independent print '>
+ >
+ <ParaLine
+ <String `server code.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2044>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfLIndent 0.5">
+ <PgfRIndent 0.0">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2045>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2046>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpRegisterInitFunc(ScreenPtr pScreen, int(*InitContext)(),'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String ` char *driverName);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2047>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2048>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pScreen'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2049>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to a ScreenRec indicating a screen which is prepared to '>
+ >
+ <ParaLine
+ <String `support the Xp extension.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2050>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `initContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2051>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the function to be called when a print context is '>
+ >
+ <ParaLine
+ <String `initialized.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2052>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `driverName'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2053>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the name of the driver. The names defined in the CDE sample are: '>
+ >
+ <ParaLine
+ <String `XP-RASTER, XP-PCL, and XP-P'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `OSTSCRIPT.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2054>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2055>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2056>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2057>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpRegisterInitFunc provides to the printer-independent portion of the X print server a pointer to the '>
+ >
+ <ParaLine
+ <String `routine to be called during the creation and initialization of a print context associated with a printer which '>
+ >
+ <ParaLine
+ <String `this driver supports. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2058>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.3\t'>
+ <ParaLine
+ <String `Attribute Concepts'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2059>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Much of the functionality of the Xp system is controlled via the setting of various '>
+ <Font
+ <FTag `Literal'>
+ <FFamily `Courier'>
+ <FWeight `Regular'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The '>
+ >
+ <ParaLine
+ <String `attributes both describe the capabilities of the printer, and allow the user and/or the application to control '>
+ >
+ <ParaLine
+ <String `many aspects of the printed output. Most of the attributes are defined in the ISO 10175 and POSIX 1387.4 '>
+ >
+ <ParaLine
+ <String `standards, and are broken into a few different pools.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2060>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.1 \t'>
+ <ParaLine
+ <String `Server Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:server;server attributes'>
+ <MCurrPage `16'>
+ <Unique 2236>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2061>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `These attributes are '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `read-only to t'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `he driver. They are created and initialized when the server is initialized, '>
+ >
+ <ParaLine
+ <String `and remain unchanged until the server recycles or is restarted.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3013>
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 8.0 pt>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Table 0-1: '>
+ <ParaLine
+ <TextRectID 50>
+ <ATbl 11>
+ <String `Server Attribute Usage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3014>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `document-attributes-supported;server attributes:document-attributes-supported'>
+ <MCurrPage `17'>
+ <Unique 2237>
+ > # end of Marker
+ <String `document-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3015>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of document attributes supported by the X Print Server. This list is returned as '>
+ >
+ <ParaLine
+ <String `a set of whitespace-delimited attribute names.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3016>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The list of document attributes includes only attributes that are handled by the X '>
+ >
+ <ParaLine
+ <String `Print Server. The full set of supported document attributes for a given printer is '>
+ >
+ <ParaLine
+ <String `determined by the printer DDX driver. The driver augments the value of this server '>
+ >
+ <ParaLine
+ <String `attribute, and presents the full set of supported document attributes as the value of '>
+ >
+ <ParaLine
+ <String `the Printer object '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-attributes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute. As such, applications '>
+ >
+ <ParaLine
+ <String `can only query the Printer attribute and not this Server attribute in order to determine '>
+ >
+ <ParaLine
+ <String `which document attributes can be used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3017>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `job-attributes-supported;server attributes:job-attributes-supported'>
+ <MCurrPage `17'>
+ <Unique 2238>
+ > # end of Marker
+ <String `job-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3018>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of the job attributes supported by the X Print Server. This list is comprised of '>
+ >
+ <ParaLine
+ <String `a set of whitespace-delimited attribute names.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3019>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The list of job attributes shall include only attributes that are handled by the X Print '>
+ >
+ <ParaLine
+ <String `Server. The full set of supported job attributes for a given printer is determined by '>
+ >
+ <ParaLine
+ <String `the printer DDX driver. The driver augments the value of this server attribute, and '>
+ >
+ <ParaLine
+ <String `presents the full set of supported job attributes as the value of the Printer object '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `job-'>
+ >
+ <ParaLine
+ <String `attributes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute. As such, applications can only query the Printer '>
+ >
+ <ParaLine
+ <String `attribute and not this Server attribute in order to determine which job attributes can '>
+ >
+ <ParaLine
+ <String `be used.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3020>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `locale;server attributes:locale'>
+ <MCurrPage `17'>
+ <Unique 2239>
+ > # end of Marker
+ <String `locale'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3021>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value of this attribute is the locale in which the X Print Server is running.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `WritersNote'>
+ <FLocked No>
+ > # end of Font
+ <String `Check this description for use in sample implementation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3022>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3023>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `multiple-documents-supported;server attributes:multiple-documents-supported'>
+ <MCurrPage `17'>
+ <Unique 2240>
+ > # end of Marker
+ <String `multiple-documents-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 3024>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The sample implementation does not support multiple documents, so this value will '>
+ >
+ <ParaLine
+ <String `always be '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `False'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in the sample implementation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2979>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2062>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.2 \t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `25786: 3Heading: 3.3.2 Printer Attributes'>
+ <MCurrPage `17'>
+ <Unique 2270>
+ > # end of Marker
+ <String `Printer Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:printer;printer attributes'>
+ <MCurrPage `17'>
+ <Unique 2241>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2063>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `These attributes can only be written by the print driver. An application can only read these values, as they are '>
+ >
+ <ParaLine
+ <String `a description of the capabilities of the printer and driver combination. These attributes include a description '>
+ >
+ <ParaLine
+ <String `of the available and supported media types, and the supported page description language'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `s'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` among others.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2831>
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 8.0 pt>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Table 0-2: '>
+ <ParaLine
+ <TextRectID 51>
+ <ATbl 12>
+ <String `Printer Attribute Usage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2832>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `content-orientations-supported'>
+ <MCurrPage `18'>
+ <Unique 2242>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `printer attributes:content-orientations-supported'>
+ <MCurrPage `18'>
+ <Unique 2243>
+ > # end of Marker
+ <String `content-orientations-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2833>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described in the protocol document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2837>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientations-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by '>
+ >
+ <ParaLine
+ <String `the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2838>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `descriptor;printer attributes:descriptor'>
+ <MCurrPage `18'>
+ <Unique 2244>
+ > # end of Marker
+ <String `descriptor'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2839>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `No default is provided for this attribute. No validation of the attribute value is '>
+ >
+ <ParaLine
+ <String `performed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2840>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `descriptor'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the system '>
+ >
+ <ParaLine
+ <String `administrator in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2841>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `document-attributes-supported'>
+ <MCurrPage `18'>
+ <Unique 2245>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `printer attributes:document-attributes-supported'>
+ <MCurrPage `18'>
+ <Unique 2246>
+ > # end of Marker
+ <String `document-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2842>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-attributes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is determined by the '>
+ >
+ <ParaLine
+ <String `print DDX driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2843>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 52>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `document-formats-supported;printer attributes:document-formats-supported'>
+ <MCurrPage `19'>
+ <Unique 2247>
+ > # end of Marker
+ <String `document-formats-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2844>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Valid values in the sample implementation are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{ PCL 5 }'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{ PostScript 2 }'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2845>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The actual set of valid document-format values varies based on the DDX.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2849>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by '>
+ >
+ <ParaLine
+ <String `the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2853>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+23590'>
+ <MCurrPage `19'>
+ <Unique 2947>
+ > # end of Marker
+ <String `i'>
+ <Marker
+ <MType 2>
+ <MText `input-trays-medium'>
+ <MCurrPage `19'>
+ <Unique 2248>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `printer attributes:input-trays-medium'>
+ <MCurrPage `19'>
+ <Unique 2249>
+ > # end of Marker
+ <String `nput-trays-medium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2854>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined to be an empty list. Validation for this '>
+ >
+ <ParaLine
+ <String `attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2858>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `input-trays-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically specified by the '>
+ >
+ <ParaLine
+ <String `system administrator in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes file. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2859>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `job-attributes-supported;printer attributes:job-attributes-supported'>
+ <MCurrPage `19'>
+ <Unique 2250>
+ > # end of Marker
+ <String `job-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2860>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `job-attributes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is determined by the print '>
+ >
+ <ParaLine
+ <String `DDX driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2861>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `medium-source-sizes-supported;printer attributes:medium-source-sizes-supported'>
+ <MCurrPage `19'>
+ <Unique 2251>
+ > # end of Marker
+ <String `medium-source-sizes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2862>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The X Print Service requires that each position be specified as an integer. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2863>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is explicitly set with an omitted input tray, a single medium size of'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `na-letter'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, short edge feed direction, and a reproducible area based on 1/4 inch '>
+ >
+ <ParaLine
+ <String `margins. Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the '>
+ >
+ <ParaLine
+ <String `protocol document. '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `Syntax errors may cause the entire value to be considered '>
+ >
+ <ParaLine
+ <String `invalid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2867>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by '>
+ >
+ <ParaLine
+ <String `the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2868>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `plexes-supported;printer attributes:plexes-supported'>
+ <MCurrPage `19'>
+ <Unique 2252>
+ > # end of Marker
+ <String `plexes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2869>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2873>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plexes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the printer '>
+ >
+ <ParaLine
+ <String `vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2874>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer-model;printer attributes:printer-model'>
+ <MCurrPage `19'>
+ <Unique 2253>
+ > # end of Marker
+ <String `printer-model'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2875>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-model'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the printer vendor '>
+ >
+ <ParaLine
+ <String `in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2876>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer-name;printer attributes:printer-name'>
+ <MCurrPage `19'>
+ <Unique 2254>
+ > # end of Marker
+ <String `printer-name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2877>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute uniquely identifies a printer on a given X Print Server.'>
+ <Font
+ <FTag `WritersNote'>
+ <FLocked No>
+ > # end of Font
+ <String ` Needs to be '>
+ >
+ <ParaLine
+ <String `edited for this sample implementation document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2878>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `printer-resolutions-supported;printer attributes:printer-resolutions-supported'>
+ <MCurrPage `19'>
+ <Unique 2255>
+ > # end of Marker
+ <String `printer-resolutions-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2879>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2883>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-resolutions-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by '>
+ >
+ <ParaLine
+ <String `the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2888>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 53>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `+16206'>
+ <MCurrPage `20'>
+ <Unique 2960>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `xp-ddx-config-file-name;printer attributes:xp-ddx-config-file-name'>
+ <MCurrPage `20'>
+ <Unique 2256>
+ > # end of Marker
+ <String `xp-ddx-config-file-name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2889>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The name of a DDX driver-defined configuration file. Whether or not this attribute is '>
+ >
+ <ParaLine
+ <String `utilized is determined by each individual driver. The file name is taken relative to the '>
+ >
+ <ParaLine
+ <String `DDX configuration directory for the driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2890>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `A default value may be assumed depending on the individual driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2891>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-ddx-config-file-name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the '>
+ >
+ <ParaLine
+ <String `printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2892>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-ddx-identifier;printer attributes:xp-ddx-identifiers'>
+ <MCurrPage `20'>
+ <Unique 2257>
+ > # end of Marker
+ <String `xp-ddx-identifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2893>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute identifies which printer DDX driver should be used for this printer. '>
+ >
+ <ParaLine
+ <String `The value is a driver name provided by the DDX driver to the server, and is '>
+ >
+ <ParaLine
+ <String `determined by the printer driver developer.Valid values in the sample '>
+ >
+ <ParaLine
+ <String `implementation are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XP-PCL'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XP-POSTSCRIPT'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XP-RASTER'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2894>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value in the sample implementing is implicitly taken to be '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XP-'>
+ >
+ <ParaLine
+ <String `POSTSCRIPT'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` by the X Print Server. Validation for this attribute is as described for '>
+ >
+ <ParaLine
+ <String `single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2898>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-ddx-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the printer '>
+ >
+ <ParaLine
+ <String `vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2899>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-embedded-formats-supported;printer attributes:xp-embedded-formats-supported'>
+ <MCurrPage `20'>
+ <Unique 2258>
+ > # end of Marker
+ <String `xp-embedded-formats-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2900>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `For the sample implementation, valid values may include '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{EPS}'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{PostScript 2}'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{PCL 5}'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{HPGL 2}'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2901>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The actual set of valid document-format values varies based on the DDX.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2905>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-embedded-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set '>
+ >
+ <ParaLine
+ <String `by the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2906>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-listfonts-modes-supported;printer attributes:xp-listfonts-modes-supported'>
+ <MCurrPage `20'>
+ <Unique 2259>
+ > # end of Marker
+ <String `xp-listfonts-modes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2907>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Valid listfonts mode values in the sample implementation are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-internal-'>
+ >
+ <ParaLine
+ <String `printer-fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-list-glyph-fonts'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2908>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2912>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by '>
+ >
+ <ParaLine
+ <String `the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2913>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-model-identifier;printer attributes:xp-model-identifier'>
+ <MCurrPage `20'>
+ <Unique 2260>
+ > # end of Marker
+ <String `xp-model-identifier'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2914>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The X Print Service allows specification of DPA Printer object attribute definitions '>
+ >
+ <ParaLine
+ <String `across two configuration files: the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes/printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file and the'>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String ` models/*/model-'>
+ >
+ <ParaLine
+ <String `config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file. The '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is defined to provide an association between '>
+ >
+ <ParaLine
+ <String `these two files.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2915>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value is specified in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes/printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file. This '>
+ >
+ <ParaLine
+ <String `value corresponds to the name of a model subdirectory under the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `models'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `configuration directory. The X Print Service obtains initial printer attributes from the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file in the named model subdirectory. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2916>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <TextRectID 54>
+ <String `The value consists of the manufacturer and model of the printer. It is recommended '>
+ >
+ <ParaLine
+ <String `that the value consist of only uppercase characters, since either the model identifier '>
+ >
+ <ParaLine
+ <String `or the printer name (typically lowercase) may function as a qualifier for attribute '>
+ >
+ <ParaLine
+ <String `definitions within the configuration files. Valid characters for the value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-'>
+ >
+ <ParaLine
+ <String `identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` are'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `a'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `-'>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `z'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `A'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `-'>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Z'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `0'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `-'>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `9'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `_'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `-'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2917>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `There is no default value for this attribute. Validation for this attribute is as described '>
+ >
+ <ParaLine
+ <String `for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If a '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file cannot '>
+ >
+ <ParaLine
+ <String `be found based on the value, the value is considered invalid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2921>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-model-identifier'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically specified by the '>
+ >
+ <ParaLine
+ <String `system administrator in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes file. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2922>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-page-attributes-supported;printer attributes:xp-page-attributes-supported'>
+ <MCurrPage `21'>
+ <Unique 2261>
+ > # end of Marker
+ <String `xp-page-attributes-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2923>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-page-attributes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is determined by the print '>
+ >
+ <ParaLine
+ <String `DDX driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2924>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-raw-formats-supported;printer attributes:xp-raw-formats-supported'>
+ <MCurrPage `21'>
+ <Unique 2262>
+ > # end of Marker
+ <String `xp-raw-formats-supported'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2925>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation entails syntax checking only.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2926>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-raw-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the '>
+ >
+ <ParaLine
+ <String `printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2927>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-setup-proviso;printer attributes:xp-setup-proviso'>
+ <MCurrPage `21'>
+ <Unique 2263>
+ > # end of Marker
+ <String `xp-setup-proviso'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2928>
+ <PgfTag `Varlistentry'>
+ <Pgf
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `WritersNote'>
+ <FLocked No>
+ > # end of Font
+ <String `Hadn\xd5 t marked up any information to include in sample '>
+ >
+ <ParaLine
+ <String `implementations doc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2929>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute indicates whether or not a required attribute or set of attributes must be '>
+ >
+ <ParaLine
+ <String `set (typically via user interaction with Print Dialog Manager) prior to commencing '>
+ >
+ <ParaLine
+ <String `the print job. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2930>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Valid values for this attribute are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-mandatory'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-optional'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If '>
+ >
+ <ParaLine
+ <String `this attribute is not specified, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-optional'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is assumed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2931>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-proviso'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically set by the printer '>
+ >
+ <ParaLine
+ <String `vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2932>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-spooler-command;printer attributes:xp-spooler-command'>
+ <MCurrPage `21'>
+ <Unique 2264>
+ > # end of Marker
+ <String `xp-spooler-command'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2933>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `This attribute can be used to override the default spooling operation performed by '>
+ >
+ <ParaLine
+ <String `the X Print Server. The value consists of a command plus any command line '>
+ >
+ <ParaLine
+ <String `options. The resulting print file is passed to the command via stdin.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2934>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The command line may contain references to a predefined set of variables, that will '>
+ >
+ <ParaLine
+ <String `be expanded by the server. The variables are:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2935>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `%printer-name%'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2936>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The name of the printer'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2937>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `%copy-count%'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2938>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `copy-count'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2939>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `%job-name%'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2940>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `job-name'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2941>
+ <PgfTag `Term_i'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <String `%options%'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2942>
+ <PgfTag `Varlistentry_i'>
+ <ParaLine
+ <String `The value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-spooler-command-options'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2943>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-spooler-command'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically not specified.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2064>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.3 \t'>
+ <ParaLine
+ <TextRectID 55>
+ <Marker
+ <MType 9>
+ <MText `35172: 3Heading: 3.3.3 Document Attributes'>
+ <MCurrPage `22'>
+ <Unique 2273>
+ > # end of Marker
+ <String `Document Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:document;document attributes'>
+ <MCurrPage `22'>
+ <Unique 2265>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2065>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `These attributes describe such things as the media to use for the document, the \xd2 plex\xd3 to use, and the orien'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tation (i.e. portrait or landscape). These attributes can be read and written by both the application and the '>
+ >
+ <ParaLine
+ <String `driver. Default values for these attributes are set by the driver (possibly using the provided utility routines) '>
+ >
+ <ParaLine
+ <String `when a new print context is initialized. The user or application can modify these attributes to communicate '>
+ >
+ <ParaLine
+ <String `such choices to the driver. It is the driver\xd5 s responsibility to communicate these attributes to the specific '>
+ >
+ <ParaLine
+ <String `printer, presumably by embedding the appropriate page description language strings in the output. Changes '>
+ >
+ <ParaLine
+ <String `in these attributes may cause the driver to perform operations such as resizing a window referenced by a sub'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `sequent '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to fit the specified media size or orientation.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2510>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The following table shows where querying and / or setting a document attribute value is supported within the '>
+ >
+ <ParaLine
+ <String `X Print Service.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2566>
+ <Pgf
+ <PgfTag `Para'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <ATbl 14>
+ >
+ > # end of Para
+ <Para
+ <Unique 2567>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `content-orientation;document attributes:content-orientation'>
+ <MCurrPage `22'>
+ <Unique 2266>
+ > # end of Marker
+ <String `content-orientation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2568>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver to be the first entry in '>
+ >
+ <ParaLine
+ <String `the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientations-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. Validation for this '>
+ >
+ <ParaLine
+ <String `attribute is as described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The '>
+ >
+ <ParaLine
+ <String `value must appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientations-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value to be '>
+ >
+ <ParaLine
+ <String `considered valid. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2572>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `copy-count;document attributes:copy-count'>
+ <MCurrPage `22'>
+ <Unique 2267>
+ > # end of Marker
+ <String `copy-count'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2573>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char Tab>
+ <String `Specifies the number of copies of this document to print.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2574>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfFIndent 1.75">
+ <PgfLIndent 1.75">
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 7.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `WritersNote'>
+ <FLocked No>
+ > # end of Font
+ <String `No information indicated for this attribute in sample implementation '>
+ >
+ <ParaLine
+ <String `in original edit.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2575>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly taken to be '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `1'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` by the X Print Server. Validation for this '>
+ >
+ <ParaLine
+ <String `attribute is as described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The '>
+ >
+ <ParaLine
+ <String `value must be a positive integer.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2579>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-printer-resolution;document attributes:default-printer-resolution'>
+ <MCurrPage `22'>
+ <Unique 2268>
+ > # end of Marker
+ <String `default-printer-resolution'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2580>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver to be the first entry in '>
+ >
+ <ParaLine
+ <String `the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-resolutions-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. Validation for this '>
+ >
+ <ParaLine
+ <String `attribute is as described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The '>
+ >
+ <ParaLine
+ <String `value must appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `printer-resolutions-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value to be '>
+ >
+ <ParaLine
+ <String `considered valid. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2584>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 56>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-input-tray;document attributes:deault-input-tray'>
+ <MCurrPage `23'>
+ <Unique 2269>
+ > # end of Marker
+ <String `default-input-tray'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2585>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `No default is assumed for this attribute, since the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute takes '>
+ >
+ <ParaLine
+ <String `precedence. Validation for this attribute is as described for single valued attributes in '>
+ >
+ <ParaLine
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The input tray must be included in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-'>
+ >
+ <ParaLine
+ <String `supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute value ('>
+ <Font
+ <FTag `Emphasis'>
+ <FLocked No>
+ > # end of Font
+ <String `note:'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if an entry in '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-'>
+ >
+ <ParaLine
+ <String `supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` omits the input tray specifier, then the input tray value specified for '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be considered valid, provided of course that it is listed as '>
+ >
+ <ParaLine
+ <String `one of the valid values above).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2589>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-medium;document attributes:default-medium'>
+ <MCurrPage `23'>
+ <Unique 2270>
+ > # end of Marker
+ <String `default-medium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2590>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver, provided the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-'>
+ >
+ <ParaLine
+ <String `input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is unspecified. The default will correspond to the first medium '>
+ >
+ <ParaLine
+ <String `size found in the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The value must appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute '>
+ >
+ <ParaLine
+ <String `value to be considered valid. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2594>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `document-format;document attributes:document-format'>
+ <MCurrPage `23'>
+ <Unique 2271>
+ > # end of Marker
+ <String `document-format'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2595>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Valid values in the sample implementation are '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{ PCL 5 }'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `{ PostScript 2 }'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2596>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is determined by the DDX, and is explicitly set in the printer pool. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The value must appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer '>
+ >
+ <ParaLine
+ <String `attribute value to be considered valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2600>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `plex;document attributes:plex'>
+ <MCurrPage `23'>
+ <Unique 2272>
+ > # end of Marker
+ <String `plex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2601>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver to be the first entry in '>
+ >
+ <ParaLine
+ <String `the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plexes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. Validation for this attribute is as '>
+ >
+ <ParaLine
+ <String `described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The value must '>
+ >
+ <ParaLine
+ <String `appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plexes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value to be considered valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2605>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-listfonts-modes;document attributes:xp-listfonts-modes'>
+ <MCurrPage `23'>
+ <Unique 2273>
+ > # end of Marker
+ <String `xp-listfonts-modes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2606>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver to be the all of the '>
+ >
+ <ParaLine
+ <String `listfonts modes specified in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Each listfonts mode value must appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes-'>
+ >
+ <ParaLine
+ <String `supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value to be considered valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2507>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2066>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.4 \t'>
+ <ParaLine
+ <String `Page Attributes'>
+ <Marker
+ <MType 2>
+ <MText `attributes:page;page attributes'>
+ <MCurrPage `23'>
+ <Unique 2274>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2067>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `These are a subset of the document attributes which can be varied on a page-by-page basis. This allows, for '>
+ >
+ <ParaLine
+ <String `example, an application to print a particular page in landscape orientation in the middle of a document which '>
+ >
+ <ParaLine
+ <String `is otherwise in portrait orientation. These attributes can be read and written by both the application and the '>
+ >
+ <ParaLine
+ <String `driver. It is the driver\xd5 s responsibility to communicate these attributes to the specific printer, typically by '>
+ >
+ <ParaLine
+ <String `embedding the appropriate page description language strings in the output. Changes in these attributes may '>
+ >
+ <ParaLine
+ <String `cause the driver to perform operations such as resizing a window to fit the specified media size or orientation '>
+ >
+ <ParaLine
+ <String `when '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is executed. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2432>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Validation of page attributes is the same as for document attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2433>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 57>
+ <String `The following table shows where querying and / or setting a page attribute value is supported within the X '>
+ >
+ <ParaLine
+ <String `Print Service.'>
+ <ATbl 15>
+ >
+ > # end of Para
+ <Para
+ <Unique 2477>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `content-orientation;page attributes:content orientation'>
+ <MCurrPage `24'>
+ <Unique 2275>
+ > # end of Marker
+ <String `content-orientation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2478>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Specifies the orientation to be used for this page. Valid values are:'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-portrait'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `reverse-landscape'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2479>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-printer-resolution;page attributes:default printer resolution'>
+ <MCurrPage `24'>
+ <Unique 2276>
+ > # end of Marker
+ <String `default-printer-resolution'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2480>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Specifies the resolution in dots per inch to be used for this page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2481>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-input-tray;page attributes:default-input-tray'>
+ <MCurrPage `24'>
+ <Unique 2277>
+ > # end of Marker
+ <String `default-input-tray'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2482>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `No default is assumed for this attribute, since the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute takes '>
+ >
+ <ParaLine
+ <String `precedence. Validation for this attribute is as described for single valued attributes in '>
+ >
+ <ParaLine
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The input tray must be included in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-'>
+ >
+ <ParaLine
+ <String `supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute value ('>
+ <Font
+ <FTag `Emphasis'>
+ <FLocked No>
+ > # end of Font
+ <String `note:'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if an entry in '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-'>
+ >
+ <ParaLine
+ <String `supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` omits the input tray specifier, then the input tray value specified for '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` will be considered valid, provided of course that it is listed as '>
+ >
+ <ParaLine
+ <String `one of the valid values above).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2486>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `default-medium;page attributes:default-medium'>
+ <MCurrPage `24'>
+ <Unique 2278>
+ > # end of Marker
+ <String `default-medium'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2487>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver, provided the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-'>
+ >
+ <ParaLine
+ <String `input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is unspecified. The default will correspond to the first medium '>
+ >
+ <ParaLine
+ <String `size found in the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The value must appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute '>
+ >
+ <ParaLine
+ <String `value to be considered valid. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2491>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `plex;page attributes:plex'>
+ <MCurrPage `24'>
+ <Unique 2279>
+ > # end of Marker
+ <String `plex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2492>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver to be the first entry in '>
+ >
+ <ParaLine
+ <String `the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plexes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. Validation for this attribute is as '>
+ >
+ <ParaLine
+ <String `described for single valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The value must '>
+ >
+ <ParaLine
+ <String `appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `plexes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value to be considered valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2496>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-listfonts-modes;page attributes:xp-listfonts-modes'>
+ <MCurrPage `24'>
+ <Unique 2280>
+ > # end of Marker
+ <String `xp-listfonts-modes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2497>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly determined by the DDX driver to be the all of the '>
+ >
+ <ParaLine
+ <String `listfonts modes specified in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` printer attribute. '>
+ >
+ <ParaLine
+ <String `Validation for this attribute is as described for multi-valued attributes in '>
+ <Font
+ <FTag `CITESECT'>
+ <FLocked No>
+ > # end of Font
+ <String `the protocol '>
+ >
+ <ParaLine
+ <String `document'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. Each listfonts mode value must appear in the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-listfonts-modes-'>
+ >
+ <ParaLine
+ <String `supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value to be considered valid.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2068>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.3.5 \t'>
+ <ParaLine
+ <Marker
+ <MType 9>
+ <MText `14440: 3Heading: 3.3.5 Job Attributes'>
+ <MCurrPage `24'>
+ <Unique 2326>
+ > # end of Marker
+ <String `Job Attributes'>
+ <Marker
+ <MType 2>
+ <MText `job attributes;attributes:job'>
+ <MCurrPage `24'>
+ <Unique 2281>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2069>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `These control the functioning of the spooler itself, allowing the specification of items such as the banner '>
+ >
+ <ParaLine
+ <String `page contents. These attributes can be read and written by both the application and the driver, however the '>
+ >
+ <ParaLine
+ <String `driver should be able to be blissfully unaware of these attributes if the driver chooses to utilize the '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSub'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <TextRectID 58>
+ <String `mitJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` call documented below. These attributes are ignored if the client specifies the '>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `save_data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` field to '>
+ >
+ <ParaLine
+ <String `be '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XPGetData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` in its call to '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2620>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The following table shows where querying and/or setting a job attribute value is supported within the X Print '>
+ >
+ <ParaLine
+ <String `Service.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2664>
+ <PgfTag `TableTitle'>
+ <Pgf
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 8.0 pt>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 8.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfNumFormat `C:Table <n\>< \>< \>< \>-<n+\>< \>: '>
+ <PgfNumberFont `Label'>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <PgfNumString `Table 0-3: '>
+ <ParaLine
+ <ATbl 13>
+ <String `Job Attribute Usage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2665>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `job-name;job attributes:job-name'>
+ <MCurrPage `25'>
+ <Unique 2282>
+ > # end of Marker
+ <String `job-name'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2666>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `No default is provided for this attribute. No validation of the attribute value is '>
+ >
+ <ParaLine
+ <String `performed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2667>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `job-owner;job attributes:job-owner'>
+ <MCurrPage `25'>
+ <Unique 2283>
+ > # end of Marker
+ <String `job-owner'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2668>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `This attribute identifies the human owner of the print job.'>
+ <Font
+ <FTag `WritersNote'>
+ <FLocked No>
+ > # end of Font
+ <String ` Anything else or '>
+ >
+ <ParaLine
+ <String `anything different here?'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2669>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `notification-profile;job attributes:notification-profile'>
+ <MCurrPage `25'>
+ <Unique 2284>
+ > # end of Marker
+ <String `notification-profile'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2670>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The default value is implicitly taken to indicate that no message be sent. No '>
+ >
+ <ParaLine
+ <String `validation of the attribute value is performed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2671>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-setup-state;job attributes:xp-setup-state'>
+ <MCurrPage `25'>
+ <Unique 2285>
+ > # end of Marker
+ <String `xp-setup-state'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2672>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `The initial value of '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-state'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is typically not specified in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `job'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes '>
+ >
+ <ParaLine
+ <String `configuration file. If '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-state'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is unspecified, the default value is '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-setup-'>
+ >
+ <ParaLine
+ <String `incomplete'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2673>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-spooler-command-options;job attributes:xp-spooler-command-options'>
+ <MCurrPage `25'>
+ <Unique 2286>
+ > # end of Marker
+ <String `xp-spooler-command-options'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2674>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `No default is provided for this attribute. No validation of the attribute value is '>
+ >
+ <ParaLine
+ <String `performed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2675>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 2>
+ <MText `xp-spooler-command-results;job attributes:xp-xpooler-command-results'>
+ <MCurrPage `25'>
+ <Unique 2287>
+ > # end of Marker
+ <String `xp-spooler-command-results'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2676>
+ <PgfTag `Varlistentry'>
+ <Pgf
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-BoldItalic'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `WritersNote'>
+ <FLocked No>
+ > # end of Font
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Nothing was marked for the sample implementation document...'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2677>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `A free form text string that will contain the spooler command output that would '>
+ >
+ <ParaLine
+ <String `otherwise appear on a terminal (e.g. stderr and stdout). This text may be useful to '>
+ >
+ <ParaLine
+ <String `present to the user to allow tracking of the resulting spooler job. Applications should '>
+ >
+ <ParaLine
+ <String `retrieve this value following receipt of the '>
+ <Font
+ <FTag `Type'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XPEndJobNotify'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` event.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2070>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.4\t'>
+ <ParaLine
+ <String `Attribute Store and Spooler Interface Functions'>
+ <Marker
+ <MType 2>
+ <MText `attribute store and spooler interface functions;functions:attribute store and spooler interface'>
+ <MCurrPage `25'>
+ <Unique 2288>
+ > # end of Marker
+ <Marker
+ <MType 2>
+ <MText `store and spooler functions'>
+ <MCurrPage `25'>
+ <Unique 2289>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2071>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The functions described in this section are intended as conveniences for the drivers in implementing their '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `GetAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `SetAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, and '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `EndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` functions. The DDX drivers are '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `not required'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` to use the '>
+ >
+ <ParaLine
+ <String `functions described in this section, but it is '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `strongly recommended'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` that they do so. These functions insulate '>
+ >
+ <ParaLine
+ <String `the driver from the underlying print spooling system, and are intended to allow drivers developed for the ini'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tial sample server to function in environments where more capable printing systems (e.g. Palladium) are in '>
+ >
+ <ParaLine
+ <TextRectID 59>
+ <String `place. These functions do not attempt to mirror the API afforded by the Palladium system, but should pro'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `vide sufficient capabilities to allow a driver access to all attributes accessible via a Palladium based-system. '>
+ >
+ <ParaLine
+ <String `A driver which chooses not to use these functions is unlikely to integrate smoothly into a Palladium-based '>
+ >
+ <ParaLine
+ <String `environment. Note that the Attribute Store functions do no error checking of Printer, Document, or Page '>
+ >
+ <ParaLine
+ <String `attributes, as such checking is left entirely in the hands of the driver. Driver writers are advised to write their '>
+ >
+ <ParaLine
+ <String `context initialization code such that it gets the attributes, and edits them prior to responding to the first '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `GetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request from a client. A store of Job attributes is maintained and error-checked internally '>
+ >
+ <ParaLine
+ <String `by the attribute store.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2072>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `From a driver\xd5 s perspective the Attribute Store consists of four distinct collections of attributes: Printer '>
+ >
+ <ParaLine
+ <String `Attributes, Document Attributes, Job Attributes, and PageAttributes. The driver has write access to all of '>
+ >
+ <ParaLine
+ <String `these attributes, even though the protocol specifies that the Printer Attributes are read-only. This write access '>
+ >
+ <ParaLine
+ <String `allows the driver to modify the attributes to describe the capabilities it possesses more accurately. For exam'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ple, immediately after initialization of the Attribute Store the Printer Attributes may contain an entry stating '>
+ >
+ <ParaLine
+ <String `that the document-formats-supported include both PCL and PostScript (e.g. for a HP-DeskJet 1600C). If the '>
+ >
+ <ParaLine
+ <String `driver only supports a single document-format then the driver should change the document-formats-sup'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ported attribute to reflect the fact that it only supports its single document-format. There are separate '>
+ >
+ <ParaLine
+ <String `attribute stores maintained on a per-print-context basis. All strings are in the form accepted by '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XrmGet'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `StringDatabase'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `().'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2073>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.1 \t'>
+ <ParaLine
+ <String `XpInitAttributes'>
+ <Marker
+ <MType 2>
+ <MText `XpInitAttributes'>
+ <MCurrPage `26'>
+ <Unique 2290>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2074>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2075>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `Causes the Attribute Store to be initialized. In the initial sample implementation, this causes the Attribute '>
+ >
+ <ParaLine
+ <String `Store to read the initial attribute values from the on-disk configuration files if they have not been read previ'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ously. The driver typically calls this routine in the function invoked by '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `InitPrintContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. The '>
+ >
+ <ParaLine
+ <String `attributes are expected to carry forward unchanged between jobs within the same print context, but the clos'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ing and re-initializing of a client\xd5 s print context should result in freshly initialized attributes. To effect this, a '>
+ >
+ <ParaLine
+ <String `driver should call '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpInitAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` once and only once for each '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `InitPrintContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request. '>
+ >
+ <ParaLine
+ <String `After the Attribute Store is initialized for a client, any changes made to the attribute store for the client '>
+ >
+ <ParaLine
+ <String `should remain intact until the print context is destroyed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2076>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2077>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2078>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2079>
+ <PgfTag `RefName'>
+ <ParaLine
+ <String `XpInitAttributes - Initialize the attributes for a particular print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2080>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfPlacementStyle Normal>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2081>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2082>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpInitAttributes(PrintContextPtr pContext);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2083>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2084>
+ <PgfTag `Definition'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ <Char Tab>
+ <Font
+ <FTag `'>
+ <FFamily `Times'>
+ <FPostScriptName `Times-Roman'>
+ <FLocked No>
+ > # end of Font
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2086>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2087>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2088>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <TextRectID 60>
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2089>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpInitAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` initializes the attribute store associated with a particular print context. It is expected '>
+ >
+ <ParaLine
+ <String `that a driver will call this function upon receipt of an '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `InitContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` request. A driver must call '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpIni'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to calling either '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetOneAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpAugmentAt'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` or '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` for a given context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2090>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.2 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpGetOneAttribute'>
+ <MCurrPage `27'>
+ <Unique 2291>
+ > # end of Marker
+ <String `XpGetOneAttribute'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2091>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2092>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Retrieves the current value of a specified attribute from the Attribute Store. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2093>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2094>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2096>
+ <PgfTag `RefName'>
+ <ParaLine
+ <String `XpGetOneAttribute - Get the current value of the specified attribute for a given print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2098>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2099>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `char *XpGetOneAttribute(PrintContextPtr pContext, XpAttrType pool,'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `char *attributeName);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2100>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2101>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2102>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attribute value is '>
+ >
+ <ParaLine
+ <String `desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2103>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2104>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. Possible values are '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr, XPServerAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2105>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attributeName'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2106>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the name of the attribute for which the value is desired. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2107>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2108>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `A pointer to a character string containing the value of the specified attribute, or NULL if the attribute does '>
+ >
+ <ParaLine
+ <String `not exist in the attribute store. '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `The returned string must not be freed.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2109>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2110>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpGetOneAttribute function returns a string containing the value of the specified attribute as a string.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2111>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.3 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpGetAttributes'>
+ <MCurrPage `27'>
+ <Unique 2292>
+ > # end of Marker
+ <String `XpGetAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2112>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2113>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Retrieves the current contents of the specified set of attributes in its entirety from the Attribute Store. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2114>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2115>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2116>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2117>
+ <PgfTag `RefName'>
+ <ParaLine
+ <String `XpGetAttributes - Obtain the current contents of the specified attribute set for a given print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2118>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfPlacementStyle Normal>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2119>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <TextRectID 61>
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2120>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `char *XpGetAttributes(PrintContextPtr pContext, XpAttrType pool);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2121>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2122>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2123>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2124>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2125>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. Possible values are '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr, XPServerAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2126>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2127>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `A pointer to a character string containing the current set of attributes for the print context. It is the caller\xd5 s '>
+ >
+ <ParaLine
+ <String `responsibility to free the string when it is no longer needed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2128>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2129>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpGetAttributes function returns a string containing the current attribute names and values. It is '>
+ >
+ <ParaLine
+ <String `expected that drivers will use this function in order to implement the GetAttributes function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2130>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.4 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpGetMediumDimensions'>
+ <MCurrPage `28'>
+ <Unique 2293>
+ > # end of Marker
+ <String `XpGetMediumDimensions'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2131>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2132>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Retrieves the dimensions of the medium currently selected for the document associated with a particular '>
+ >
+ <ParaLine
+ <String `print context from the Attribute Store.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2133>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2134>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2135>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2136>
+ <PgfTag `RefName'>
+ <ParaLine
+ <String `XpGetMediumDimensions - Obtain the dimensions of the medium for a document associated with a '>
+ >
+ <ParaLine
+ <String `particular print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2137>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfPlacementStyle Normal>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2138>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2139>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpGetMediumDimensions(PrintContextPtr pContext, CARD16 *width, '>
+ >
+ <ParaLine
+ <String `CARD16 *height);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2140>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2141>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2142>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2143>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `width'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2144>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Returns the width of the medium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2145>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `height'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2146>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Returns the height of the medium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2147>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2148>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2149>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2150>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <TextRectID 62>
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2151>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpGetMediumDimensions function provides a convenient means for the driver to determine the overall '>
+ >
+ <ParaLine
+ <String `dimensions of the medium specified for the current (or first) page of the document in the job associated with '>
+ >
+ <ParaLine
+ <String `the specified print context. The medium dimensions returned are computed from the value of the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute, or if it is not specified, from the '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `input-'>
+ >
+ <ParaLine
+ <String `trays-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes. If neither of these attribute sets is valid, then XpGetMediumDimensions '>
+ >
+ <ParaLine
+ <String `returns values corresponding to '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `the first entry in the list of '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FChangeBar No>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-supported'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` The '>
+ >
+ <ParaLine
+ <String `returned dimensions are in pixel units, through the use of the '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientation'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-'>
+ >
+ <ParaLine
+ <String `resolution'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` document attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2152>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.5 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpGetReproductionArea'>
+ <MCurrPage `29'>
+ <Unique 2294>
+ > # end of Marker
+ <String `XpGetReproductionArea'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2153>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2154>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Retrieves from the Attribute Store the net reproducible area for the document associated with a particular '>
+ >
+ <ParaLine
+ <String `print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2155>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2156>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2157>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2158>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `XpGetReproductionArea - Obtain the dimensions and position of the reproducible area for a document '>
+ >
+ <ParaLine
+ <String `associated with a particular print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2159>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2160>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2161>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpGetReproductionArea(PrintContextPtr pContext, xRectangle *pRect);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2162>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2163>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2164>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2165>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pRect'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2166>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to a rectangle which will return the reproducible area.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2167>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2168>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2169>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2170>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpGetReproductionArea function provides a convenient means for the driver to determine the dimen'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `sions of the reproducible area for the current (or first) page of the document in the job associated with the '>
+ >
+ <ParaLine
+ <String `specified print context. The reproducible area differs from the medi'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `um d'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `imensions in that the reproducible '>
+ >
+ <ParaLine
+ <String `area has had subtracted from it any regions of the medi'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `um w'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `hich cannot be printed on, and all regions which '>
+ >
+ <ParaLine
+ <String `the printer mechanism cannot mark. The returned dimensions are in units of pixels, through the use of the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `content-orientation'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-resolution'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` document attributes. The relevant medium is '>
+ >
+ <ParaLine
+ <String `determined from the contents of either the '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute, or if that is not defined the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `default-input-tray'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` and '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `input-trays-medium'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes. The '>
+ <Font
+ <FTag `Token'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `medium-source-sizes-'>
+ >
+ <ParaLine
+ <String `supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is used to determine the reproducible area for this medium. If insufficient information '>
+ >
+ <ParaLine
+ <String `is available from the attributes then the values returned will correspond to North American Letter media with '>
+ >
+ <ParaLine
+ <String `a '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `one-quarter-inch n'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `on-reproducible border.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2171>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2172>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.6 \t'>
+ <ParaLine
+ <TextRectID 63>
+ <Marker
+ <MType 2>
+ <MText `XpAugmentAttributes'>
+ <MCurrPage `30'>
+ <Unique 2295>
+ > # end of Marker
+ <String `XpAugmentAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2173>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2174>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Augments the values of the specified attribute class. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2175>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2176>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2177>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2178>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `XpAugmentAttributes - Augment the value of a particular attribute class for a given print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2179>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2180>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2181>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpAugmentAttributes(PrintContextPtr pContext, XpAttrType pool,'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `char *attributes);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2182>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2183>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2184>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2185>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2186>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. Possible values are '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2187>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2188>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the names and values of the attributes. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2189>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2190>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2191>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2192>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpAugmentAttributes function adds the supplied attributes to the specified attribute class. If a supplied '>
+ >
+ <ParaLine
+ <String `attribute already exists, then its new value is taken from the supplied list of attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2194>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.7 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpSetAttributes'>
+ <MCurrPage `30'>
+ <Unique 2296>
+ > # end of Marker
+ <String `XpSetAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2195>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2196>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Stores a new set of attributes for a particular class of attributes.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2197>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2198>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2199>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2200>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `XpSetAttributes - Set new attributes and values for a given print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2201>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2202>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2203>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpSetAttributes(PrintContextPtr pContext, XpAttrType pool, char '>
+ >
+ <ParaLine
+ <String `*attributes);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2204>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2205>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2206>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are to be set.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2207>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 64>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2208>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. This is one of '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr, XPServerAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2209>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2210>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A string of all the attributes and values for the specified class.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2211>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2212>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2213>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2214>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpSetPrintAttributes function accepts a string containing the new attribute names and values. It is '>
+ >
+ <ParaLine
+ <String `expected that drivers will use this function in order to implement the SetAttributes function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2215>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.8 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpSubmitJob'>
+ <MCurrPage `31'>
+ <Unique 2297>
+ > # end of Marker
+ <String `XpSubmitJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2216>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2217>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Requests that a particular job file be submitted to the spooler with an associated set of job attributes. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2218>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2219>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2220>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2221>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `XpSubmitJob - Submit a file to the print spooler.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2223>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2224>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpSubmitJob(char *fileName, PrintContextPtr pContext);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2225>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2226>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `fileName'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2227>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the name of the file to be submitted for printing.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2228>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2229>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the print context associated with the print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2230>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2231>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2232>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2233>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String ` '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSubmitJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` takes whatever steps are necessary to submit the specified file to the underlying spooling '>
+ >
+ <ParaLine
+ <String `system with the specified job attributes. It is expected that drivers will call this function from within their '>
+ >
+ <ParaLine
+ <String `EndJob functions. In the initial sample implementation this function invokes the lp command to spool the '>
+ >
+ <ParaLine
+ <String `job'>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2234>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.4.9 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpFreeAttributes'>
+ <MCurrPage `31'>
+ <Unique 2298>
+ > # end of Marker
+ <String `XpFreeAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2235>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2236>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Frees the storage associated with the attributes for a specified XpContext. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2237>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <TextRectID 65>
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2238>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2239>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2240>
+ <PgfTag `RefName'>
+ <ParaLine
+ <String `XpFreeAttributes - Free the memory associated with the attributes for a particular XpContext.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2241>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfPlacementStyle Normal>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2242>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2243>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `void XpFreeAttributes(PrintContextPtr pContext);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2244>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2245>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2246>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the print context associated with the print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2247>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2248>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `None.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2249>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2250>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpFreeAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` frees the memory associated with the attributes for the specified print context. '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpFreeAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should be called from the driver\xd5 s '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `DestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2252>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.5\t'>
+ <ParaLine
+ <String `Xp Extension Functions'>
+ <Marker
+ <MType 2>
+ <MText `Xp extension functions;functions:Xp extension'>
+ <MCurrPage `32'>
+ <Unique 2299>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2253>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `A print driver '>
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `must'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` implement the following set of functions which provide the underpinnings for the exten'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `sion requests defined by the Xp extension. The InitContext call is the function which was passed to XpReg'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `isterInitFunc, while the other functions are called via function pointers stored in each PrintContext. A '>
+ >
+ <ParaLine
+ <String `pointer to a PrintContext is passed to each of these routines, and has the following structure:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2254>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String `typedef struct _xpprintfuncs { '>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int versionNumber;'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*StartJob)(); /* pPrintContext, saveData */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*EndJob)(); /* pPrintContext, cancel */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*StartDoc)(); /* pPrintContext */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*EndDoc)(); /* pPrintContext, cancel */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*StartPage)(); /* pPrintContext, pWin */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*EndPage)(); /* pPrintContext, pWin, cancel */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*PutDocumentData)(); /* pPrintContext, pWin, pData,len_data, pFmt,'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String ` pOpt */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*GetDocumentData)(); /* pPrintContext, client, maxBufferSize */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <Char Tab>
+ <Char Tab>
+ <String `int (*DestroyContext)(); /* pPrintContext */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `char *(*GetAttributes)(); /* pPrintContext, class */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `char *(*GetOneAttribute)(); /* pPrintContext, class, attribute */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*SetAttributes)(); /* pPrintContext, class, pData */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*AugmentAttributes)(); /* pPrintContext, class, pData */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `int (*GetMediumDimensions(); /* pPrintContext, pWidth, pHeight */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Char Tab>
+ <String `int (*GetReproducibleArea(); /* pPrintContext, pRect */'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <Char Tab>
+ <String `} XpDriverFuncs, *XpDriverFuncsPtr;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2255>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2256>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String `typedef struct _XpContext {'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2257>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String ` XID contextID;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2258>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String ` char *printerName;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2259>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String ` int screenNum;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2260>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String ` struct _XpClient *clientHead; /* list of clients */'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2261>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 66>
+ <String ` CARD32 state;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2262>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String ` VisualID pageWin;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2263>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String ` DevUnion *devPrivates;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2264>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String ` XpDriverFuncs funcs;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2265>
+ <PgfTag `Programlisting'>
+ <Pgf
+ <PgfFIndent 0.5">
+ <PgfLIndent 0.5">
+ > # end of Pgf
+ <ParaLine
+ <String `} XpContextRec, *XpContextPtr;'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2266>
+ <PgfTag `Programlisting'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2267>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `When the driver\xd5 s InitContext function is called it is free to inspect the printerName field of the XpContext, '>
+ >
+ <ParaLine
+ <String `and is required to fill in all of the function pointers in the embedded XpDriversFuncs structure.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2268>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.1 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `InitContext'>
+ <MCurrPage `33'>
+ <Unique 2300>
+ > # end of Marker
+ <String `InitContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2269>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2270>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Provides pointers to functions implementing the various printing related operations for the specified context. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2271>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2272>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2273>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2274>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `InitContext - Initialize the contents of the supplied XpContext.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2275>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2276>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int InitContext(PrintContextPtr pContext);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2277>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2278>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2279>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `in w'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `hich the print data '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `will be '>
+ >
+ <ParaLine
+ <String `generated.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2280>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2281>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, or a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2283>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2284>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `InitContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function supplies the driver with the name of the printer to be used in subsequent print '>
+ >
+ <ParaLine
+ <String `jobs in the specified print context. The driver is expected to fill in the function pointers within the XpCon'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `text, and to initialize the attribute store for the print context at the time this function is called. This enables an '>
+ >
+ <ParaLine
+ <String `application to then query the printer attributes and receive accurate information. The driver should also ini'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tialize any per-context data it wishes to maintain.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2286>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.2 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `DestroyContext'>
+ <MCurrPage `33'>
+ <Unique 2301>
+ > # end of Marker
+ <String `DestroyContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2287>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2288>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Notifies the driver that the context is no longer in use, and any associated data should be freed. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2289>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2290>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2291>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2292>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `DestroyPrintContext - Release any driver resources allocated for the specified print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2293>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <TextRectID 67>
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2294>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int DestroyContext(PrintContextPtr pContext);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2295>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2296>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2297>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context which is being destroyed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2298>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2299>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, or a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2301>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2302>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `DestroyContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function provides the driver an opportunity to clean up any state or resources it has '>
+ >
+ <ParaLine
+ <String `allocated in support of the specified print context. '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpFreeAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` should be called from this func'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tion if the attribute storage facilities have been used to create the attributes store for this context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2304>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.3 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `StartJob'>
+ <MCurrPage `34'>
+ <Unique 2302>
+ > # end of Marker
+ <String `StartJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2305>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2306>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Implements the driver level functionality of the XpStartJob extension request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2307>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2308>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2309>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2310>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `StartJob - Begin a new print job associated with a particular window.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2312>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2313>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int StartJob(PrintContextPtr pContext, XPSaveData sendData);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2314>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2315>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2316>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the print job is starting.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2317>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `sendData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2318>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies whether the resulting print data is to be sent to a client, and if so, '>
+ >
+ <ParaLine
+ <String `the driver must be prepared to call XpWriteClientData when there is print '>
+ >
+ <ParaLine
+ <String `output data available to be sent.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2319>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2320>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no errors are encountered, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2321>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2322>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function will typically check for and delete any previously created print data associated '>
+ >
+ <ParaLine
+ <String `with the print context, and will create storage space for the new print job. The '>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `sendData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` parameter indi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `cates that a client will receive the data, rather than having the data submitted to the spooling system. The '>
+ >
+ <ParaLine
+ <String `driver is then required to call XpSendClientData() when there is print data available. The driver may assume '>
+ >
+ <ParaLine
+ <String `that there will be no changes to the Job attributes for this context after the StartJob function has been called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2323>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.4 \t'>
+ <ParaLine
+ <TextRectID 68>
+ <Marker
+ <MType 2>
+ <MText `EndJob'>
+ <MCurrPage `35'>
+ <Unique 2303>
+ > # end of Marker
+ <String `EndJob'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2324>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2325>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Implements the driver level functionality of the XpEndJob extension request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2326>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2327>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2328>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2329>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `EndJob - Ends the print job associated with a particular window, and submits the job to the printer.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2331>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2332>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int EndJob(PrintContextPtr pContext, Boolean cancel);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2333>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2334>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2335>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the print job is ending.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2336>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2337>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A TRUE value indicates that the job is to be canceled, and any remaining '>
+ >
+ <ParaLine
+ <String `print data discarded rather than submitted to the spooler or returned to the '>
+ >
+ <ParaLine
+ <String `client.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2338>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2339>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no errors are encountered, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2340>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2341>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `EndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function typically submits the job to the spooler. If '>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is TRUE then any remaining print '>
+ >
+ <ParaLine
+ <String `data is discarded, and if necessary the print job is canceled. If print data has been sent to a client via XpSend'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ClientData(), then XpSendClientData should be called with the \xd2 status\xd3 parameter set to either END or '>
+ >
+ <ParaLine
+ <String `CANCEL, depending on the value of the '>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` flag. At that point the driver should be able to properly '>
+ >
+ <ParaLine
+ <String `accept a StartJob request on the same print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2342>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.5 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `StartDoc'>
+ <MCurrPage `35'>
+ <Unique 2304>
+ > # end of Marker
+ <String `StartDoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2343>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2344>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Implements the driver level functionality of the XpStartDoc extension request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2345>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2346>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2347>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2348>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `StartDoc - Begins a new document within the print job associated with a window.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2350>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2351>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int StartDoc(PrintContextPtr pContext, XPDocumentType type);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2352>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2353>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2354>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which a new document is starting.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2355>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 69>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2356>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the type of the document. Possible values are XPDocRaw or '>
+ >
+ <ParaLine
+ <String `XPDocNormal. A value of XPDocRaw indicates that the data is to be '>
+ >
+ <ParaLine
+ <String `passed through unmodified by the print server, and only PutDocumentData '>
+ >
+ <ParaLine
+ <String `calls will be accepted after such a StartDoc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2358>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2359>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no errors are encountered, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2360>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2361>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function is primarily a place holder for any necessary functionality needed when and if the '>
+ >
+ <ParaLine
+ <String `Xp Service is implemented on top of a print spooling system which supports multiple documents in a job, '>
+ >
+ <ParaLine
+ <String `such as one compliant with POSIX 1387.4. The driver is guaranteed to receive a '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` call with '>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `equal to '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDocNorma'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `l prior to receiving a '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. If the driver receives a '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` call with '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `type'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` equal to '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` it can assume it will not receive a '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to the '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `EndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` for that '>
+ >
+ <ParaLine
+ <String `document. The driver may assume that there will be no changes to the document attributes for the specified '>
+ >
+ <ParaLine
+ <String `context after this function has been called.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2362>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.6 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `EndDoc'>
+ <MCurrPage `36'>
+ <Unique 2305>
+ > # end of Marker
+ <String `EndDoc'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2363>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2364>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Implements the driver level functionality of the XpEndDoc extension request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2365>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2366>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2367>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2368>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `EndDoc - Ends a document within the print job associated with a print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2370>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2371>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int EndDoc(PrintContextPtr pContext, Boolean cancel);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2372>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2373>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2374>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which a document is ending.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2375>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2376>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Indicates whether the current document is to be canceled, and any '>
+ >
+ <ParaLine
+ <String `remaining (i.e. buffered) data for this document discarded.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2377>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2378>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no errors are encountered, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2379>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2380>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `EndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function is essentially a place holder for any necessary functionality needed when and if the '>
+ >
+ <ParaLine
+ <String `Xp Service is implemented on top of a print spooling system capable of supporting multiple documents in a '>
+ >
+ <ParaLine
+ <String `single job, such as one compliant with POSIX 1387.4. A driver is guaranteed to receive an '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `EndDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` prior to '>
+ >
+ <ParaLine
+ <String `an '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `EndJob'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2381>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.7 \t'>
+ <ParaLine
+ <TextRectID 70>
+ <Marker
+ <MType 2>
+ <MText `StartPage'>
+ <MCurrPage `37'>
+ <Unique 2306>
+ > # end of Marker
+ <String `StartPage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2382>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2383>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Implements the driver level functionality of the XpStartPage extension request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2384>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2385>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2386>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2387>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `StartPage - Begins a new page within the print job, and associates the print context with a window.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2389>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2390>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int StartPage(PrintContextPtr pContext, Window pWin);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2391>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2392>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2393>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which a new page is starting.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2394>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pWin'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2395>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the window to be used as the top-most window in the '>
+ >
+ <ParaLine
+ <String `printed page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2396>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2397>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no errors are encountered, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2398>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2399>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function discards any previously created data for any previous page, allocates any storage '>
+ >
+ <ParaLine
+ <String `which may be necessary for a new page, '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `resizes the window to match the size of the medium, '>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `clears the win'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `dow and all descendent windows to their backgrounds, and adds any necessary page header data to the con'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tents of this page. Such header data is generally determined by the values of the page attributes. The driver '>
+ >
+ <ParaLine
+ <String `may assume that there will be no changes to the Page attributes for the specified context after this call.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2400>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.8 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `EndPage'>
+ <MCurrPage `37'>
+ <Unique 2307>
+ > # end of Marker
+ <String `EndPage'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2401>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2402>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Implements the driver level functionality of the XpEndPage extension request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2403>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2404>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2405>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2406>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `EndPage - Ends a page within the print job associated with a window.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2408>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2409>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int EndPage(PrintContextPtr pContext, Window pWin, Boolean cancel);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2410>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2411>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2412>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which a new page is starting.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2413>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pWin'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2414>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the top-most window for the page.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2415>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 71>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2416>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A value of TRUE indicates that any remaining page data should be '>
+ >
+ <ParaLine
+ <String `discarded rather than being submitted as part of the current document.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2417>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2418>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no errors are encountered, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2419>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2420>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `EndPage'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function adds any necessary trailing information for the page, and adds the page data to the '>
+ >
+ <ParaLine
+ <String `print job associated with the print context. The trailer data is determined by the values of the page attributes. '>
+ >
+ <ParaLine
+ <String `If '>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `cancel'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is TRUE, then any buffered page data should be discarded rather than being included in the cur'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `rent document and job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2421>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.9 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `PutDocumentData'>
+ <MCurrPage `38'>
+ <Unique 2308>
+ > # end of Marker
+ <String `PutDocumentData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2422>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2423>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Implements the driver level functionality of the XpPutDocumentData extension request.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2424>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2425>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2426>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2427>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `PutDocumentData - Adds application supplied data to the print document associated with a print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2429>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2430>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `PutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `('>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `PrintContextPtr pContext;'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Window pWin;'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `char *pData;'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `int len_data;'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `char *pFmt,'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `char *pOpt);'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2431>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2432>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2433>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context defining the print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2434>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pWin'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2435>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the window into which the data is to be placed.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2436>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2437>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Points to the data to be added to the print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2438>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `len_data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2439>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the length in bytes of the data to be added to the print job.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2440>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pFmt'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2441>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Points to a string describing the format of the data (e.g. PCL5).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2442>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pOpt'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2443>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Points to a string describing driver-specific options for the data.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2444>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2445>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no errors are encountered, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2446>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <TextRectID 72>
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2447>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `PutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function provides a means for an application to supply printer device dependent '>
+ >
+ <ParaLine
+ <String `data of its own creation. The data is added to the document associated with the specified print context. The '>
+ >
+ <ParaLine
+ <String `driver may, if it desires, modify or interpret the data based on the specified format, options, and known '>
+ >
+ <ParaLine
+ <String `printer characteristics. As an example, a driver may choose to support DeviceData formats other than those '>
+ >
+ <ParaLine
+ <String `which are supported by the printer itself by translating the data into a format understood by the printer. If the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `PutDocumentData'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is sent following a '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `('>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `printContext, '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocNormal)'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, then the '>
+ >
+ <ParaLine
+ <String `driver is expected to provide any generally needed page description language header data necessary to '>
+ >
+ <ParaLine
+ <String `embed the supplied data within the boundaries of the specified window. However, if the '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `PutDocument'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `Data'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is sent after a '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `StartDoc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `('>
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `printContext'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `Constant'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XPDocRaw'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), then the driver is expected to pass the data '>
+ >
+ <ParaLine
+ <String `straight through to the spooler with no additions or modifications.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2448>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `The window given to the PutDocumentData function specifies the size and location of the embedded data. It '>
+ >
+ <ParaLine
+ <String `may not be possible for the driver to clip the embedded data to take into account other windows which '>
+ >
+ <ParaLine
+ <String `occlude the given window.'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ >
+ > # end of Para
+ <Para
+ <Unique 2449>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.10 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `GetDocumentData'>
+ <MCurrPage `39'>
+ <Unique 2309>
+ > # end of Marker
+ <String `GetDocumentData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2450>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2451>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Informs the driver which client should receive the generated document data for the print job associated with '>
+ >
+ <ParaLine
+ <String `the specified print context. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2452>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2453>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2454>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2455>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `GetDocumentData - Establish which client should receive data generated by print jobs in a print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2457>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2458>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int GetDocumentData(PrintContextPtr pContext, ClientPtr client, int '>
+ >
+ <ParaLine
+ <String `maxBufferSize);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2459>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2460>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2461>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the '>
+ <Font
+ <FTag `'>
+ <FChangeBar Yes>
+ <FLocked No>
+ > # end of Font
+ <String `print data is d'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `esired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2462>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2463>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the client which is to receive all generated document data for the '>
+ >
+ <ParaLine
+ <String `job associated with the specified print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2464>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `maxBufferSize'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2465>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the maximum amount of data the client wishes to receive in a '>
+ >
+ <ParaLine
+ <String `single reply.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2466>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2467>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Success if the driver was able to set its state in preparation for returning the document data, else a code indi'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `cating the problem (e.g. BadAlloc).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2468>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2469>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The GetDocumentData function allows the driver to prepare for sending document data for a job to the spec'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `ified client. If the receiving client is unable to read back the generated data quickly enough to keep up with '>
+ >
+ <ParaLine
+ <String `the rate of data generation the driver is free to suspend the processing of further requests from clients making '>
+ >
+ <ParaLine
+ <String `rendering requests within a print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2470>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.11 \t'>
+ <ParaLine
+ <TextRectID 73>
+ <Marker
+ <MType 2>
+ <MText `GetAttributes'>
+ <MCurrPage `40'>
+ <Unique 2310>
+ > # end of Marker
+ <String `GetAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2471>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2472>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Returns the current contents of the specified set of attributes. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2473>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2474>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2475>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2476>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `GetAttributes - Obtain the current contents of the specified attribute set for a given print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2478>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2479>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `char *GetAttributes(PrintContextPtr pContext, XpAttrType pool);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2480>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2481>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2482>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2483>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2484>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. This is one of '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr, XPServerAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2485>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2486>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `A pointer to a character string containing the current set of attributes for the print context. It is the caller\xd5 s '>
+ >
+ <ParaLine
+ <String `responsibility to free the string when it is no longer needed. GetAttributes returns a NULL pointer in the '>
+ >
+ <ParaLine
+ <String `case of an allocation error (i.e. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), and returns a pointer to an empty string if the requested '>
+ >
+ <ParaLine
+ <String `attribute store is empty.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2487>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2488>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The GetAttributes function returns a string containing the current attribute names and values for the speci'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `fied attribute class. It is expected that drivers will use the '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function to implement this '>
+ >
+ <ParaLine
+ <String `function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2489>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.12 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `GetOneAttribute'>
+ <MCurrPage `40'>
+ <Unique 2311>
+ > # end of Marker
+ <String `GetOneAttribute'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2490>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2491>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Returns the value of the specified attribute within a particular attribute pool for a print context. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2492>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2493>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2494>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2495>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `GetOneAttribute - Obtain the current value of a particular attribute.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2497>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2498>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `char *GetOneAttributes(PrintContextPtr pContext, XpAttrType pool, char '>
+ >
+ <ParaLine
+ <String `*attr);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2499>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2500>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2501>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2502>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 74>
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2503>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. Possible values are '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr, XPServerAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2504>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attr'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2505>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the attribute for which the value is desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2506>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2507>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `A pointer to a character string containing the value of the attribute for the print context. The caller must not '>
+ >
+ <ParaLine
+ <String `free the returned string. GetOneAttribute returns a NULL pointer in the case of an allocation error (i.e. '>
+ >
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `), and returns a pointer to an empty string if the requested attribute is not defined.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2508>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2509>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The GetOneAttribute function returns a string containing the values for the specified attribute class and '>
+ >
+ <ParaLine
+ <String `attribute within the specified print context. It is expected that drivers will use the '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetOneAttribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `function to implement this function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2511>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.13 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `AugmentAttributes'>
+ <MCurrPage `41'>
+ <Unique 2312>
+ > # end of Marker
+ <String `AugmentAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2512>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2513>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Augments the contents of the specified set of attributes. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2514>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2515>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2516>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2517>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `AugmentAttributes - Augment the contents of the specified attribute set for a given print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2519>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2520>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int AugmentAttributes(PrintContextPtr pContext, XpAttrType pool, char '>
+ >
+ <ParaLine
+ <String `*attributes);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2521>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2522>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2523>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are to be '>
+ >
+ <ParaLine
+ <String `augmented.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2524>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2525>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. Possible values are '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2526>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2527>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the names and values of some attributes for the above-specified '>
+ >
+ <ParaLine
+ <String `class.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2528>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2529>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no error is detected, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAt'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2530>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2531>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `AugmentAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function adds the specified attributes to the store of the specified attribute '>
+ >
+ <ParaLine
+ <String `class. If a supplied attribute already exists in the store, then the value supplied in this call will become the '>
+ >
+ <ParaLine
+ <String `value of that attribute.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2532>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.5.14 \t'>
+ <ParaLine
+ <TextRectID 75>
+ <Marker
+ <MType 2>
+ <MText `SetAttributes'>
+ <MCurrPage `42'>
+ <Unique 2313>
+ > # end of Marker
+ <String `SetAttributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2533>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2534>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Sets the contents of the specified set of attributes. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2535>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2536>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2537>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2538>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `SetAttributes - Set the contents of the specified attribute set for a given print context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2539>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2540>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2541>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int SetAttributes(PrintContextPtr pContext, XpAttrType pool, char '>
+ >
+ <ParaLine
+ <String `*attributes);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2542>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2543>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2544>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2545>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pool'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2546>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the pool of the attribute which is desired. Possible values are '>
+ >
+ <ParaLine
+ <String `XPJobAttr, XPDocAttr, XPPrinterAttr, XPPageAttr.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2547>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2548>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the names and values of all the attributes for the above-specified '>
+ >
+ <ParaLine
+ <String `class.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2549>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2550>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no error is detected, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAt'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2551>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2552>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The SetAttributes function replaces the existing attributes and values (if any) with those contained in the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FFamily `Courier'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FLocked No>
+ > # end of Font
+ <String `attributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `. It is expected that drivers will use the '>
+ <Font
+ <FTag `Function'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpSetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function to implement this '>
+ >
+ <ParaLine
+ <String `function.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2553>
+ <PgfTag `2Heading'>
+ <PgfNumString `4.6\t'>
+ <ParaLine
+ <String `Xp Utility and Convenience Functions'>
+ <Marker
+ <MType 2>
+ <MText `Xp utility and convenience functions;functions:Xp utility and convenience'>
+ <MCurrPage `42'>
+ <Unique 2314>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2554>
+ <PgfTag `Body'>
+ <ParaLine
+ <String `The functions described in this section are intended as conveniences for the drivers.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2555>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.6.1 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpSendData'>
+ <MCurrPage `42'>
+ <Unique 2315>
+ > # end of Marker
+ <String `XpSendData'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2556>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2557>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Send printer data to any client which has performed an XpGetDocumentData call for a specific print context. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2558>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2559>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2560>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2561>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `XpSendData - Send print data to any interested client.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2562>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 76>
+ >
+ > # end of Para
+ <Para
+ <Unique 2563>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2564>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int XpSendData(PrintContextPtr pContext, ClientPtr client, char *data, '>
+ >
+ <ParaLine
+ <String `int len_data);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2565>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2566>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `pContext'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2567>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies a pointer to the print context for which the attributes are desired.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2568>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `client'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2569>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A pointer to the client which is to receive the data.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2570>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2571>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A pointer to the print data to be sent to the interested client.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2572>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `len_data'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2573>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies the length in bytes of the print data.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2574>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2575>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no error is detected, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `, '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAt'>
+ <Char SoftHyphen>
+ >
+ <ParaLine
+ <String `tribute'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2576>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2317>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpSendData function sends the supplied data to the specified client. The client should be that which has '>
+ >
+ <ParaLine
+ <String `performed an XpGetDocumentData call for the specific print context. The returned value indicates any error '>
+ >
+ <ParaLine
+ <String `which occurred during the sending of the data. This function takes care of formatting the data into'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `GetDocumentDataReply structures including byte-swapping reply header information.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2318>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.6.2 \t'>
+ <ParaLine
+ <Marker
+ <MType 2>
+ <MText `XpAllocateContextPrivateIndex'>
+ <MCurrPage `43'>
+ <Unique 2322>
+ > # end of Marker
+ <String `XpAllocateContextPrivateIndex'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2319>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2580>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Allocate a context-private index for use by the driver. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2581>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2582>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2583>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2584>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `XpAllocateContextPrivateIndex - Allocate a context-private index for use by the driver.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2586>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2587>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int XpAllocateContextPrivateIndex();'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2588>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2589>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2590>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `An index value which can be used in a subsequent call to XpAllocateContextPrivate.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2591>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2592>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpAllocateContextPrivateIndex function returns an index into the context devPrivates array for use by '>
+ >
+ <ParaLine
+ <String `the caller. This index may be passed to XpAllocateContextPrivate to have the printer-independent portion of '>
+ >
+ <ParaLine
+ <String `the server automatically allocate a fixed amount of memory with each context.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2593>
+ <PgfTag `3Heading'>
+ <PgfNumString `4.6.3 \t'>
+ <ParaLine
+ <TextRectID 77>
+ <Marker
+ <MType 2>
+ <MText `XpAllocateContextPrivate'>
+ <MCurrPage `44'>
+ <Unique 2323>
+ > # end of Marker
+ <String `XpAllocateContextPrivate'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2594>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Short Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2595>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `Inform the printer-independent code of the amount of memory to be allocated with each context for use by '>
+ >
+ <ParaLine
+ <String `the caller. '>
+ >
+ > # end of Para
+ <Para
+ <Unique 2596>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `Long Description'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2597>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `NAME'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2598>
+ <PgfTag `RefName'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2599>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `XpAllocateContextPrivate - Allocate an amount of memory with each context for use by the caller.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2600>
+ <Pgf
+ <PgfTag `RefPurpose'>
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfLineSpacing Proportional>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2601>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `SYNOPSIS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2602>
+ <Pgf
+ <PgfTag `Function'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfLIndent 0.75">
+ <PgfRunInDefaultPunct `\\t '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 2.375">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ > # end of Pgf
+ <ParaLine
+ <String `int XpAllocateContextPrivate(int index, int amount);'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2603>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `ARGUMENTS'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2604>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `index'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2605>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Specifies an index returned by XpAllocateContextPrivateIndex.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2606>
+ <PgfTag `Term_i'>
+ <Pgf
+ <PgfFIndent 0.75">
+ <PgfLIndent 0.75">
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Oblique'>
+ <FPostScriptName `Courier-Oblique'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `Parameter'>
+ <FLocked No>
+ > # end of Font
+ <String `amount'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2607>
+ <PgfTag `Varlistentry_i'>
+ <Pgf
+ <PgfFIndent 2.25">
+ <PgfLIndent 2.25">
+ <PgfSpAfter 10.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `The amount of memory to be allocated with each context for use by the '>
+ >
+ <ParaLine
+ <String `caller.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2608>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `RETURN VALUE'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2609>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `Success'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` if no error is detected, otherwise a value indicating the error (e.g. '>
+ <Font
+ <FTag `ErrorName'>
+ <FFamily `Courier'>
+ <FWeight `Bold'>
+ <FPostScriptName `Courier-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `BadAlloc'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `).'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2610>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <String `DESCRIPTION'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2611>
+ <PgfTag `BodyClose'>
+ <ParaLine
+ <String `The XpAllocateContextPrivate function informs the printer-independent portion of the server how much '>
+ >
+ <ParaLine
+ <String `memory to allocate with each context for the use of the caller.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2612>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 2019>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 1226>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 3263>
+ <Pgf
+ <PgfTag `Para'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfBlockSize 3>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <PgfMinWordSpace 100>
+ <PgfMaxWordSpace 100>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `HIDDEN'>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 2966>
+ <PgfTag `Term'>
+ <ParaLine
+ <TextRectID 78>
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Conditional
+ <InCondition `Comment'>
+ > # end of Conditional
+ <Marker
+ <MType 10>
+ <MText `-16206'>
+ <MCurrPage `HIDDEN'>
+ <Unique 2965>
+ > # end of Marker
+ <String `xp-document-format-generated'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2967>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `This is the document format in which the printer ddx driver will generate '>
+ >
+ <ParaLine
+ <String `the resulting print document. Depending upon the printer ddx driver '>
+ >
+ <ParaLine
+ <String `implementation, the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-document-format-generated'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute value '>
+ >
+ <ParaLine
+ <String `returned by the '>
+ <Font
+ <FTag `Function'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `XpGetAttributes'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` function may vary based on the current '>
+ >
+ <ParaLine
+ <String `value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-format'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` document attribute.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2968>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <String `Valid values for the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-document-format-generated'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute are the '>
+ >
+ <ParaLine
+ <String `document format structures as defined for the value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-'>
+ >
+ <ParaLine
+ <String `formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2969>
+ <PgfTag `Varlistentry'>
+ <PgfEndCond Yes>
+ <PgfCondFullPgf Yes>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `xp-document-format-generated'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is '>
+ >
+ <ParaLine
+ <String `typically set by the printer vendor in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `model-config'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file.'>
+ <Marker
+ <MType 10>
+ <MText `=16206'>
+ <MCurrPage `HIDDEN'>
+ <Unique 2970>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2953>
+ <PgfTag `Term'>
+ <ParaLine
+ <Font
+ <FTag `Constant'>
+ <FLocked No>
+ > # end of Font
+ <Marker
+ <MType 10>
+ <MText `-23590'>
+ <MCurrPage `HIDDEN'>
+ <Unique 2952>
+ > # end of Marker
+ <String `document-formats-ready'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2954>
+ <PgfTag `Varlistentry'>
+ <ParaLine
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `A list of document formats that the printer supports without operator '>
+ >
+ <ParaLine
+ <String `intervention. The values are the same as the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-supported'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `attribute.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 2955>
+ <PgfTag `Varlistentry'>
+ <PgfEndCond Yes>
+ <PgfCondFullPgf Yes>
+ <ParaLine
+ <String `The initial value of the '>
+ <Font
+ <FTag `Constant'>
+ <FWeight `Bold'>
+ <FPostScriptName `Times-Bold'>
+ <FLocked No>
+ > # end of Font
+ <String `document-formats-ready'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attribute is typically '>
+ >
+ <ParaLine
+ <String `specified by the system administrator in the '>
+ <Font
+ <FTag `Filename'>
+ <FLocked No>
+ > # end of Font
+ <String `printer'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` attributes file. '>
+ <Marker
+ <MType 10>
+ <MText `=23590'>
+ <MCurrPage `HIDDEN'>
+ <Unique 2956>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1927>
+ <PgfTag `2Sect'>
+ <PgfNumString ` '>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-40970'>
+ <MCurrPage `HIDDEN'>
+ <Unique 1926>
+ > # end of Marker
+ <String `Directory Containing the Xprinters File'>
+ >
+ > # end of Para
+ <Para
+ <Unique 1931>
+ <Pgf
+ <PgfTag `Para'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfSpBefore 10.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfWithNext No>
+ <PgfBlockSize 3>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Fixed>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ > # end of Pgf
+ <ParaLine
+ <AFrame 1>
+ >
+ > # end of Para
+ <Para
+ <Unique 1932>
+ <PgfEndCond Yes>
+ <PgfCondFullPgf Yes>
+ <ParaLine
+ <String `The '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file is located in the the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `<XRoot\>/lib/X11'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory, outside of the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `print'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `subdirectory where the remaining X Print Service configuration files are located. This is consistent with '>
+ >
+ <ParaLine
+ <String `other X server device initialization files. The \xd2 '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `*'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `\xd3 used when referring to this file in the documentation is '>
+ >
+ <ParaLine
+ <String `the display number of the server. For example, the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file name for a server invoked using '>
+ <Font
+ <FTag `Command'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X :0'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` '>
+ >
+ <ParaLine
+ <String `would be '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `X0printers'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String `.'>
+ <Marker
+ <MType 10>
+ <MText `=40970'>
+ <MCurrPage `HIDDEN'>
+ <Unique 1933>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 1916>
+ <PgfTag `RefSect1Para'>
+ <Pgf
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 10.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <PgfEndCond Yes>
+ <PgfCondFullPgf Yes>
+ <ParaLine
+ <Marker
+ <MType 10>
+ <MText `-16892'>
+ <MCurrPage `HIDDEN'>
+ <Unique 1915>
+ > # end of Marker
+ <String `One exception to this is the '>
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `Xprinters'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` file. This file is always located in the '>
+ >
+ <ParaLine
+ <Font
+ <FTag `Filename'>
+ <FFamily `Courier'>
+ <FPostScriptName `Courier'>
+ <FLocked No>
+ > # end of Font
+ <String `<XRoot\>/lib/X11'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` directory.'>
+ <Marker
+ <MType 10>
+ <MText `=16892'>
+ <MCurrPage `HIDDEN'>
+ <Unique 1917>
+ > # end of Marker
+ >
+ > # end of Para
+ <Para
+ <Unique 2015>
+ <PgfTag `Body'>
+ <ParaLine
+ <Unconditional >
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/Xserver/XprtIX.doc b/specs/Xserver/XprtIX.doc
new file mode 100644
index 0000000..02d8550
--- /dev/null
+++ b/specs/Xserver/XprtIX.doc
Binary files differ
diff --git a/specs/Xserver/XprtTOC.doc b/specs/Xserver/XprtTOC.doc
new file mode 100644
index 0000000..96bb82d
--- /dev/null
+++ b/specs/Xserver/XprtTOC.doc
Binary files differ
diff --git a/specs/Xserver/Xprt_cov.mif b/specs/Xserver/Xprt_cov.mif
new file mode 100644
index 0000000..25081af
--- /dev/null
+++ b/specs/Xserver/Xprt_cov.mif
@@ -0,0 +1,3054 @@
+<MIFFile 5.00> # Generated by FrameMaker xm5.0P3f
+# Options:
+# Paragraph Text
+# Paragraph Tags
+# Paragraph Formats
+# Font Information
+# Markers
+# Anchored Frames
+# Tables
+# Graphics and TextRect Layout
+# Master Page Items
+# Condition Catalog
+# Table Catalogs
+# Font Catalog
+# Paragraph Catalog
+# Document Template
+# Document Dictionary
+# Variables
+#
+<Units Uin>
+<ColorCatalog
+ <Color
+ <ColorTag `Black'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 100.000000>
+ <ColorAttribute ColorIsBlack>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `White'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsWhite>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Red'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsRed>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Green'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsGreen>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Blue'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsBlue>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Cyan'>
+ <ColorCyan 100.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsCyan>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Magenta'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 100.000000>
+ <ColorYellow 0.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsMagenta>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+ <Color
+ <ColorTag `Yellow'>
+ <ColorCyan 0.000000>
+ <ColorMagenta 0.000000>
+ <ColorYellow 100.000000>
+ <ColorBlack 0.000000>
+ <ColorAttribute ColorIsYellow>
+ <ColorAttribute ColorIsReserved>
+ > # end of Color
+> # end of ColorCatalog
+<ConditionCatalog
+ <Condition
+ <CTag `Comment'>
+ <CState CHidden>
+ <CStyle CUnderline>
+ <CSeparation 2>
+ <CColor `Red'>
+ > # end of Condition
+> # end of ConditionCatalog
+<PgfCatalog
+ <Pgf
+ <PgfTag `Body'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Bulleted'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `\xa5 \\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellBody'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `CellHeading'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Footnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 14.0 pt>
+ <PgfSpAfter 6.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 14.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Heading2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 12.0 pt>
+ <PgfSpAfter 3.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `HeadingRunIn'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle RunIn>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 6.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Indented'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 6>
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n+\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Numbered1'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Numbered'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.25">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Courier'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Courier'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `<n=1\>.\\t'>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 7>
+ <TabStop
+ <TSX 0.25">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 1.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 2.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 3.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 4.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 5.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.0">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate No>
+ <HyphenMaxLines 1>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 100>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 100>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableFootnote'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.25">
+ <PgfLIndent 0.41667">
+ <PgfRIndent 0.25">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 1>
+ <TabStop
+ <TSX 0.41667">
+ <TSType Left>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `TableTitle'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum Yes>
+ <PgfNumFormat `T:Table <n+\>: '>
+ <PgfNumberFont `'>
+ <PgfNumAtEnd No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 90>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 110>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 112.0 pt>
+ <PgfSpAfter 12.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 18.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 6.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title2'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 16.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <Pgf
+ <PgfTag `Title3'>
+ <PgfUseNextTag Yes>
+ <PgfNextTag `Body'>
+ <PgfAlignment Center>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext Yes>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 4.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 0>
+ <PgfHyphenate No>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+> # end of PgfCatalog
+<FontCatalog
+ <Font
+ <FTag `Emphasis'>
+ <FAngle `Italic'>
+ <FLocked No>
+ > # end of Font
+ <Font
+ <FTag `EquationVariables'>
+ <FAngle `Oblique'>
+ <FLocked No>
+ > # end of Font
+> # end of FontCatalog
+<RulingCatalog
+ <Ruling
+ <RulingTag `Thin'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Medium'>
+ <RulingPenWidth 2.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Double'>
+ <RulingPenWidth 0.5 pt>
+ <RulingGap 2.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 2>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Thick'>
+ <RulingPenWidth 3.0 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+ <Ruling
+ <RulingTag `Very Thin'>
+ <RulingPenWidth 0.25 pt>
+ <RulingGap 0.0 pt>
+ <RulingSeparation 0>
+ <RulingColor `Black'>
+ <RulingPen 0>
+ <RulingLines 1>
+ > # end of Ruling
+> # end of RulingCatalog
+<TblCatalog
+ <TblFormat
+ <TblTag `Format B'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Center>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `'>
+ <TblBRuling `Thin'>
+ <TblRRuling `'>
+ <TblTRuling `Medium'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Medium'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement InHeader>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+ <TblFormat
+ <TblTag `Format A'>
+ <TblColumn
+ <TblColumnNum 0>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 1>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 2>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 3>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblColumn
+ <TblColumnNum 4>
+ <TblColumnWidth 1.0">
+ <TblColumnH
+ <PgfTag `CellHeading'>
+ > # end of TblColumnH
+ <TblColumnBody
+ <PgfTag `CellBody'>
+ > # end of TblColumnBody
+ <TblColumnF
+ <Pgf
+ <PgfTag `CellFooting'>
+ <PgfAlignment Center>
+ <PgfHyphenate No>
+ <PgfCellAlignment Middle>
+ <PgfCellMargins 0.0 pt 2.0 pt 0.0 pt 2.0 pt>
+ > # end of Pgf
+ > # end of TblColumnF
+ > # end of TblColumn
+ <TblCellMargins 6.0 pt 6.0 pt 6.0 pt 4.0 pt>
+ <TblLIndent 0.0">
+ <TblRIndent 0.0">
+ <TblAlignment Left>
+ <TblPlacement Anywhere>
+ <TblSpBefore 12.0 pt>
+ <TblSpAfter 12.0 pt>
+ <TblBlockSize 1>
+ <TblHFFill 15>
+ <TblHFSeparation 0>
+ <TblHFColor `Black'>
+ <TblBodyFill 15>
+ <TblBodySeparation 0>
+ <TblBodyColor `Black'>
+ <TblShadeByColumn No>
+ <TblLocked No>
+ <TblShadePeriod 2>
+ <TblXFill 15>
+ <TblXSeparation 0>
+ <TblXColor `Black'>
+ <TblAltShadePeriod 2>
+ <TblLRuling `Thin'>
+ <TblBRuling `Thin'>
+ <TblRRuling `Thin'>
+ <TblTRuling `Thin'>
+ <TblColumnRuling `Thin'>
+ <TblXColumnRuling `Thin'>
+ <TblBodyRowRuling `Thin'>
+ <TblXRowRuling `Thin'>
+ <TblHFRowRuling `Thin'>
+ <TblSeparatorRuling `Double'>
+ <TblXColumnNum 1>
+ <TblRulingPeriod 4>
+ <TblLastBRuling No>
+ <TblTitlePlacement InHeader>
+ <TblTitlePgf1
+ <PgfTag `TableTitle'>
+ > # end of TblTitlePgf1
+ <TblTitleGap 6.0 pt>
+ <TblInitNumColumns 5>
+ <TblInitNumHRows 1>
+ <TblInitNumBodyRows 8>
+ <TblInitNumFRows 0>
+ <TblNumByColumn No>
+ > # end of TblFormat
+> # end of TblCatalog
+<Views
+ <View
+ <ViewNumber 1>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 2>
+ <ViewCutout `White'>
+ <ViewInvisible `Red'>
+ <ViewInvisible `Green'>
+ <ViewInvisible `Blue'>
+ <ViewInvisible `Cyan'>
+ <ViewInvisible `Magenta'>
+ > # end of View
+ <View
+ <ViewNumber 3>
+ <ViewInvisible `Black'>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 4>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 5>
+ <ViewCutout `White'>
+ > # end of View
+ <View
+ <ViewNumber 6>
+ <ViewCutout `White'>
+ > # end of View
+> # end of Views
+<VariableFormats
+ <VariableFormat
+ <VariableName `Page Count'>
+ <VariableDef `<$lastpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\> <$hour\>:<$minute00\> <$ampm\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Modification Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Long)'>
+ <VariableDef `<$monthname\> <$daynum\>, <$year\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Creation Date (Short)'>
+ <VariableDef `<$monthnum\>/<$daynum\>/<$shortyear\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Long)'>
+ <VariableDef `<$fullfilename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Filename (Short)'>
+ <VariableDef `<$filename\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 1'>
+ <VariableDef `<$paratext[Title]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 2'>
+ <VariableDef `<$paratext[Heading1]\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Current Page #'>
+ <VariableDef `<$curpagenum\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 3'>
+ <VariableDef `<$marker1\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Running H/F 4'>
+ <VariableDef `<$marker2\>'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Continuation'>
+ <VariableDef ` (Continued)'>
+ > # end of VariableFormat
+ <VariableFormat
+ <VariableName `Table Sheet'>
+ <VariableDef ` (Sheet <$tblsheetnum\> of <$tblsheetcount\>)'>
+ > # end of VariableFormat
+> # end of VariableFormats
+<XRefFormats
+ <XRefFormat
+ <XRefName `Heading & Page'>
+ <XRefDef `\xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Page'>
+ <XRefDef `page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `See Heading & Page'>
+ <XRefDef `See \xd2 <$paratext\>\xd3 on page\x11 <$pagenum\>.'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table & Page'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table All'>
+ <XRefDef `Table\x11 <$paranumonly\>, \xd2 <$paratext\>,\xd3 on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+ <XRefFormat
+ <XRefName `Table Number & Page'>
+ <XRefDef `Table\x11 <$paranumonly\> on page\x11 <$pagenum\>'>
+ > # end of XRefFormat
+> # end of XRefFormats
+<Document
+ <DViewRect 316 31 687 857 >
+ <DWindowRect 292 5 731 960 >
+ <DViewScale 140.0%>
+ <DNextUnique 713207>
+ <DPageSize 8.5" 11.0">
+ <DMenuBar `'>
+ <DVoMenuBar `'>
+ <DStartPage 1>
+ <DPageNumStyle LCRoman>
+ <DPagePointStyle Arabic>
+ <DTwoSides Yes>
+ <DParity FirstRight>
+ <DFrozenPages No>
+ <DPageRounding MakePageCountEven>
+ <DFNoteMaxH 2.0">
+ <FNoteStartNum 1>
+ <DFNoteRestart PerPage>
+ <DFNoteTag `Footnote'>
+ <DFNoteLabels `*\xa0 \xe0 '>
+ <DFNoteNumStyle Arabic>
+ <DFNoteAnchorPos FNSuperscript>
+ <DFNoteNumberPos FNBaseline>
+ <DFNoteAnchorPrefix `'>
+ <DFNoteAnchorSuffix `'>
+ <DFNoteNumberPrefix `'>
+ <DFNoteNumberSuffix `.\\t'>
+ <DTblFNoteTag `TableFootnote'>
+ <DTblFNoteLabels `*\xa0 \xe0 '>
+ <DTblFNoteNumStyle LCAlpha>
+ <DTblFNoteAnchorPos FNSuperscript>
+ <DTblFNoteNumberPos FNBaseline>
+ <DTblFNoteAnchorPrefix `'>
+ <DTblFNoteAnchorSuffix `'>
+ <DTblFNoteNumberPrefix `'>
+ <DTblFNoteNumberSuffix `.\\t'>
+ <DLinebreakChars `/ - \xd0 \xd1 '>
+ <DPunctuationChars `:;,.\xc9 !?'>
+ <DChBarGap 0.25">
+ <DChBarWidth 2.0 pt>
+ <DChBarPosition LeftOfCol>
+ <DChBarColor `Black'>
+ <DAutoChBars No>
+ <DShowAllConditions No>
+ <DDisplayOverrides Yes>
+ <DPageScrolling Variable>
+ <DViewOnly No>
+ <DViewOnlyXRef GotoBehavior>
+ <DViewOnlySelect Yes>
+ <DViewOnlyWinBorders Yes>
+ <DViewOnlyWinMenubar Yes>
+ <DViewOnlyWinPopup Yes>
+ <DViewOnlyWinPalette No>
+ <DGridOn No>
+ <DPageGrid 0.5">
+ <DSnapGrid 0.125">
+ <DSnapRotation 0.25>
+ <DRulersOn Yes>
+ <DFullRulers Yes>
+ <DGraphicsOff No>
+ <DCurrentView 1>
+ <DBordersOn Yes>
+ <DSymbolsOn Yes>
+ <DLinkBoundariesOn No>
+ <DSmartQuotesOn No>
+ <DSmartSpacesOn No>
+ <DUpdateTextInsetsOnOpen Yes>
+ <DUpdateXRefsOnOpen Yes>
+ <DLanguage USEnglish>
+ <DSuperscriptSize 80.0%>
+ <DSubscriptSize 80.0%>
+ <DSmallCapsSize 80.0%>
+ <DSuperscriptShift 40.0%>
+ <DSubscriptShift 25.0%>
+ <DMathAlphaCharFontFamily `Times'>
+ <DMathSmallIntegral 14.0 pt>
+ <DMathMediumIntegral 18.0 pt>
+ <DMathLargeIntegral 24.0 pt>
+ <DMathSmallSigma 14.0 pt>
+ <DMathMediumSigma 18.0 pt>
+ <DMathLargeSigma 24.0 pt>
+ <DMathSmallLevel1 9.0 pt>
+ <DMathMediumLevel1 12.0 pt>
+ <DMathLargeLevel1 14.0 pt>
+ <DMathSmallLevel2 7.0 pt>
+ <DMathMediumLevel2 9.0 pt>
+ <DMathLargeLevel2 12.0 pt>
+ <DMathSmallLevel3 5.0 pt>
+ <DMathMediumLevel3 6.0 pt>
+ <DMathLargeLevel3 8.0 pt>
+ <DMathSmallHoriz 0.0 pt>
+ <DMathMediumHoriz 0.0 pt>
+ <DMathLargeHoriz 0.0 pt>
+ <DMathSmallVert 0.0 pt>
+ <DMathMediumVert 0.0 pt>
+ <DMathLargeVert 0.0 pt>
+ <DMathShowCustom No>
+ <DMathFunctions `'>
+ <DMathNumbers `'>
+ <DMathVariables `EquationVariables'>
+ <DMathStrings `'>
+ <DMathGreek `'>
+ <DMathCatalog >
+ <DPrintSkipBlankPages Yes>
+ <DPrintSeparations No>
+ <DGenerateAcrobatInfo No>
+ <DAcrobatParagraphBookmarks Yes>
+ <DAcrobatBookmarksIncludeTagNames No>
+> # end of Document
+<BookComponent
+ <FileName `<c\>anncovTOC.doc'>
+ <Unique 7>
+ <FileNameSuffix `TOC'>
+ <DeriveLinks No>
+ <DeriveType TOC>
+ <DeriveTag `Heading'>
+ <DeriveTag `Heading2'>
+> # end of BookComponent
+<InitialAutoNums
+> # end of InitialAutoNums
+<Dictionary
+> # end of Dictionary
+<AFrames
+> # end of AFrames
+<Page
+ <Unique 77>
+ <PageType LeftMasterPage>
+ <PageTag `Left'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 1>
+ <Unique 78>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 2>
+ <Unique 79>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 3>
+ <Unique 80>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 10348>
+ <PageType RightMasterPage>
+ <PageTag `Right'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextRect
+ <ID 4>
+ <Unique 10352>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 0.5" 6.5" 0.13889">
+ <BRect 1.0" 0.5" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 5>
+ <Unique 10353>
+ <Overprint No>
+ <ShapeRect 1.0" 10.3983" 6.5" 0.13889">
+ <BRect 1.0" 10.3983" 6.5" 0.13889">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+ <TextRect
+ <ID 6>
+ <Unique 10354>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 10355>
+ <PageType ReferencePage>
+ <PageTag `Reference'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <TextLine
+ <Unique 10356>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <TLOrigin 1.0" 0.4489">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <Font
+ <FTag `'>
+ <FFamily `Helvetica'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Helvetica-Bold'>
+ <FSize 12.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of Font
+ <String `Footnote'>
+ > # end of TextLine
+ <TextLine
+ <Unique 10357>
+ <Overprint No>
+ <TLOrigin 1.0" 1.70441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Single Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 10358>
+ <Pen 15>
+ <Fill 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 0.54167" 2.5" 0.20833">
+ <BRect 1.0" 0.54167" 2.5" 0.20833">
+ <FrameType NotAnchored>
+ <Tag `Footnote'>
+ <PolyLine
+ <Unique 39>
+ <Pen 0>
+ <PenWidth 0.5 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <HeadCap Square>
+ <TailCap Square>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.125" 0.02778">
+ <Point 2.125" 0.02778">
+ > # end of PolyLine
+ > # end of Frame
+ <TextLine
+ <Unique 10360>
+ <Overprint No>
+ <TLOrigin 1.0" 2.45441">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `Double Line'>
+ > # end of TextLine
+ <Frame
+ <Unique 10361>
+ <Pen 15>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 2.58333" 6.5" 0.16667">
+ <BRect 1.0" 2.58333" 6.5" 0.16667">
+ <FrameType NotAnchored>
+ <Tag `Double Line'>
+ <PolyLine
+ <Unique 43>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ <PolyLine
+ <Unique 45>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.05556">
+ <Point 6.5" 0.05556">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 10364>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.86111" 6.5" 0.13889">
+ <BRect 1.0" 1.86111" 6.5" 0.13889">
+ <FrameType NotAnchored>
+ <Tag `Single Line'>
+ <PolyLine
+ <Unique 48>
+ <Pen 0>
+ <Separation 0>
+ <ObColor `Black'>
+ <Overprint No>
+ <NumPoints 2>
+ <Point 0.0" 0.01389">
+ <Point 6.5" 0.01389">
+ > # end of PolyLine
+ > # end of Frame
+ <Frame
+ <Unique 10366>
+ <Pen 15>
+ <Separation 0>
+ <ObColor `Black'>
+ <Angle 360.0>
+ <Overprint No>
+ <ShapeRect 1.0" 1.25" 2.5" 0.08333">
+ <BRect 1.0" 1.25" 2.5" 0.08333">
+ <FrameType NotAnchored>
+ <Tag `TableFootnote'>
+ > # end of Frame
+ <TextLine
+ <Unique 10367>
+ <Overprint No>
+ <TLOrigin 0.96836" 1.11233">
+ <TLAlignment Left>
+ <TLLanguage USEnglish>
+ <String `TableFootnote'>
+ > # end of TextLine
+> # end of Page
+<Page
+ <Unique 10368>
+ <PageType BodyPage>
+ <PageNum `i'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 7>
+ <Unique 10369>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 8>
+ > # end of TextRect
+> # end of Page
+<Page
+ <Unique 73>
+ <PageType BodyPage>
+ <PageNum `ii'>
+ <PageTag `'>
+ <PageSize 8.5" 11.0">
+ <PageOrientation Portrait>
+ <PageAngle 0.0>
+ <PageBackground `Default'>
+ <TextRect
+ <ID 8>
+ <Unique 74>
+ <Pen 15>
+ <Fill 7>
+ <PenWidth 1.0 pt>
+ <Separation 0>
+ <ObColor `Black'>
+ <DashedPattern
+ <DashedStyle Solid>
+ > # end of DashedPattern
+ <RunaroundGap 6.0 pt>
+ <RunaroundType None>
+ <Overprint No>
+ <ShapeRect 1.0" 1.0" 6.5" 9.0">
+ <BRect 1.0" 1.0" 6.5" 9.0">
+ <TRNumColumns 1>
+ <TRColumnGap 0.25">
+ <TRColumnBalance No>
+ <TRSideheadWidth 1.5">
+ <TRSideheadGap 0.25">
+ <TRSideheadPlacement Left>
+ <TRNext 0>
+ > # end of TextRect
+> # end of Page
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 81>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfUseNextTag No>
+ <PgfNextTag `'>
+ <PgfAlignment Left>
+ <PgfFIndent 0.0">
+ <PgfLIndent 0.0">
+ <PgfRIndent 0.0">
+ <PgfFIndentRelative No>
+ <PgfFIndentOffset 0.0">
+ <PgfTopSeparator `'>
+ <PgfTopSepAtIndent No>
+ <PgfTopSepOffset 0.0">
+ <PgfBotSeparator `'>
+ <PgfBotSepAtIndent No>
+ <PgfBotSepOffset 0.0">
+ <PgfPlacement Anywhere>
+ <PgfPlacementStyle Normal>
+ <PgfRunInDefaultPunct `. '>
+ <PgfSpBefore 0.0 pt>
+ <PgfSpAfter 0.0 pt>
+ <PgfWithPrev No>
+ <PgfWithNext No>
+ <PgfBlockSize 1>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLineSpacing Proportional>
+ <PgfLeading 2.0 pt>
+ <PgfAutoNum No>
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <HyphenMinPrefix 3>
+ <HyphenMinSuffix 3>
+ <HyphenMinWord 5>
+ <PgfLetterSpace No>
+ <PgfMinWordSpace 75>
+ <PgfOptWordSpace 100>
+ <PgfMaxWordSpace 125>
+ <PgfLanguage USEnglish>
+ <PgfCellAlignment Top>
+ <PgfCellMargins 0.0 pt 0.0 pt 0.0 pt 0.0 pt>
+ <PgfCellLMarginFixed No>
+ <PgfCellTMarginFixed No>
+ <PgfCellRMarginFixed No>
+ <PgfCellBMarginFixed No>
+ <PgfLocked No>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 1>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 82>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 2>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 83>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 3>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10342>
+ <Pgf
+ <PgfTag `Header'>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfNumTabs 2>
+ <TabStop
+ <TSX 3.25">
+ <TSType Center>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <TabStop
+ <TSX 6.5">
+ <TSType Right>
+ <TSLeaderStr ` '>
+ > # end of TabStop
+ <PgfHyphenate Yes>
+ <HyphenMaxLines 2>
+ <PgfMinWordSpace 75>
+ <PgfMaxWordSpace 125>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 4>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10343>
+ <Pgf
+ <PgfTag `Footer'>
+ <PgfAlignment Right>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 5>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 10344>
+ <PgfTag `Body'>
+ <ParaLine
+ <TextRectID 6>
+ >
+ > # end of Para
+> # end of TextFlow
+<TextFlow
+ <TFTag `A'>
+ <TFAutoConnect Yes>
+ <Notes
+ > # end of Notes
+ <Para
+ <Unique 713194>
+ <PgfTag `Title'>
+ <ParaLine
+ <TextRectID 7>
+ >
+ > # end of Para
+ <Para
+ <Unique 713206>
+ <PgfTag `Title'>
+ <ParaLine
+ <String `X Print Service Sample Implementation'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713195>
+ <PgfTag `Title2'>
+ <Pgf
+ <PgfSpBefore 13.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `Version 1.0'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713196>
+ <PgfTag `Title3'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Bold'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Bold'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `X Window System'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Version 11 Release 6.4'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713198>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 56>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 57>
+ <PgfTag `Title3'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 58>
+ <PgfTag `Title3'>
+ <Pgf
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern Yes>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ <PgfLeading 3.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <String `A. Deininger, T. Gilg, J. Miller, H. Phinney, C. Prince'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Hewlett-Packard Company'>
+ >
+ > # end of Para
+ <Para
+ <Unique 713199>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 713200>
+ <PgfTag `Body'>
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 79>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfPlacement PageTop>
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ <TextRectID 8>
+ >
+ > # end of Para
+ <Para
+ <Unique 82>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 83>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 85>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ > # end of Pgf
+ <ParaLine
+ >
+ > # end of Para
+ <Para
+ <Unique 84>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 24.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Copyright (c) 1996 Hewlett-Packard Company'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 International Business Machines, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Sun Microsystems, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Novell, Inc.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Digital Equipment Corp.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Fujitsu Limited'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 Hitachi, Ltd.'>
+ <Char HardReturn>
+ >
+ <ParaLine
+ <String `Copyright (c) 1996 X Consortium, Inc.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 62>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated '>
+ >
+ <ParaLine
+ <String `documentation files (the "Software"), to deal in the Software without restriction, including without limitation the '>
+ >
+ <ParaLine
+ <String `rights to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the Software, and to permit '>
+ >
+ <ParaLine
+ <String `persons to whom the Software is furnished to do so, subject to the following conditions:'>
+ >
+ > # end of Para
+ <Para
+ <Unique 63>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `The above copyright notice and this permission notice shall be included in all copies or substantial portions of the '>
+ >
+ <ParaLine
+ <String `Software.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 64>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, '>
+ >
+ <ParaLine
+ <String `INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A '>
+ >
+ <ParaLine
+ <String `PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE '>
+ >
+ <ParaLine
+ <String `LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF '>
+ >
+ <ParaLine
+ <String `CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE '>
+ >
+ <ParaLine
+ <String `SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 65>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <String `Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to '>
+ >
+ <ParaLine
+ <String `promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.'>
+ >
+ > # end of Para
+ <Para
+ <Unique 85>
+ <PgfTag `Body'>
+ <Pgf
+ <PgfSpBefore 12.0 pt>
+ <PgfFont
+ <FTag `'>
+ <FFamily `Times'>
+ <FVar `Regular'>
+ <FWeight `Regular'>
+ <FAngle `Regular'>
+ <FPostScriptName `Times-Roman'>
+ <FSize 10.0 pt>
+ <FUnderlining FNoUnderlining>
+ <FOverline No>
+ <FStrike No>
+ <FChangeBar No>
+ <FOutline No>
+ <FShadow No>
+ <FPairKern No>
+ <FCase FAsTyped>
+ <FPosition FNormal>
+ <FDX 0.0%>
+ <FDY 0.0%>
+ <FDW 0.0%>
+ <FLocked No>
+ <FSeparation 0>
+ <FColor `Black'>
+ > # end of PgfFont
+ > # end of Pgf
+ <ParaLine
+ <Font
+ <FTag `'>
+ <FAngle `Italic'>
+ <FPostScriptName `Times-Italic'>
+ <FLocked No>
+ > # end of Font
+ <String `X Window System'>
+ <Font
+ <FTag `'>
+ <FLocked No>
+ > # end of Font
+ <String ` is a trademark of X Consortium, Inc.'>
+ >
+ > # end of Para
+> # end of TextFlow
+# End of MIFFile
diff --git a/specs/Xserver/analysis.tex b/specs/Xserver/analysis.tex
new file mode 100644
index 0000000..07a4391
--- /dev/null
+++ b/specs/Xserver/analysis.tex
@@ -0,0 +1,1526 @@
+\documentstyle[computer]{article}
+\setlength{\parindent}{0 pt}
+\setlength{\parskip}{6pt}
+
+\begin{document}
+
+\title{Analysis of the X Protocol for Security Concerns\\Draft Version 2}
+\author{David P. Wiggins\\X Consortium, Inc.}
+\date{May 10, 1996}
+\maketitle
+
+\begin{abstract}
+
+This paper attempts to list all instances of certain types of security
+problems in the X Protocol. Issues with authorization are not
+addressed. We assume that a malicious client has already succeeded in
+connecting, and try to assess what harm it can then do. We propose
+modifications to the semantics of the X Protocol to reduce these
+risks.
+
+\end{abstract}
+% suppress page number on title page
+\thispagestyle{empty}
+
+\eject
+
+Copyright \copyright 1996 X Consortium, Inc. All Rights Reserved.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+\eject
+
+\section{Definition of Threats}
+
+We analyze the X protocol for the following threats.
+
+\begin{description}
+
+\item[Theft] occurs when a client gains access to information owned by
+another client without explicit permission from that other client.
+For this analysis, we take a broad view of ownership: any information
+that exists in the server due to the actions of a client is considered
+owned by that client. Furthermore, the client that has input focus
+owns keyboard events, and the client that owns the window that the
+pointer is in owns mouse events. This view may reveal certain
+instances of ``theft'' that we don't care to stop, but we think it is
+better to identify all potential candidates up front and cull the list
+later than to do a partial analysis now and plan on reanalyzing for
+remaining holes later.
+
+\item[Denial of service] occurs when a client causes another client or
+the user to lose the ability to perform some operation.
+
+\item[Spoofing] occurs when a client attempts to mimic another client
+with the hope that the user will interact with it as if it really were
+the mimicked client. A wide variety of requests may be used in a
+spoofing attack; we will only point out a few likely candidates.
+
+\item[Destruction] occurs when a client causes another client to lose
+information in a way that the client or user is likely to notice.
+(This does not count expected forms of destruction, e.g., exposures.)
+
+\item[Alteration] occurs when a client causes another client to lose
+information in a way that the client or user is unlikely to
+notice. e.g., changing one pixel in a drawable.
+
+\end{description}
+
+The line between alteration and destruction is subjective. Security
+literature does often distinguish between them, though not always
+explicitly. Alteration is often considered more insidious because its
+effects may not be realized until long after it has occurred. In the
+intervening time, each time the altered data is used, it can cause
+more damage.
+
+
+
+\section{General security concerns and remedies}
+
+The following sections discuss security problems intrinsic to the X
+Protocol. A statement of each problem is usually followed by
+potential remedies. A few words here about possible remedies will
+help frame the specific ones described below.
+
+If a client attempts a threatening operation, the server may take one
+of the following actions, listed roughly in order of severity:
+
+1. Execute the request normally. This is the right choice when we
+decide that a particlar threat is not serious enough to worry about.
+
+2. Execute the request in some modified form, e.g., substitute
+different values for some of the request fields, or edit the reply.
+
+3. Arrange to ask the user what to do, given some subset of the other
+choices in this list. This must be used sparingly because of the
+performance impact.
+
+4. Treat the request as a no-op. If the client will probably not
+notice, or if it seems likely that the intent was benign, this is a
+good choice.
+
+5. Send a protocol error to the client. If the client will be
+confused enough by the other options that it will probably crash or
+become useless anyway, or if it seems likely that the intent was
+malicious, this is a good choice.
+
+6. Kill the client. This might be the right action if there is no
+doubt that the client is hostile.
+
+In most cases we present the one option that seems most appropriate to
+counter the threat, taking into account the seriousness of the threat,
+the implementation difficulty, and the impact on applications. Our
+initial bias is to err on the side of stronger security, with the
+accompanying tighter restrictions. As we uncover important operations
+and applications that the new restrictions interfere with, we can apply
+selective loosening to allow the desired functionality.
+
+In some cases we will suggest returning an Access error where the X
+protocol does not explicitly allow one. These new Access errors arise
+when a client can only perform a (non-empty) subset of the defined
+operations on a resource. The disallowed operations cause Access
+errors. The resiource at issue is usually a root window.
+
+
+
+\subsection{Access to Server Resources}
+
+The X protocol allows clients to manipulate resources (objects)
+belonging to other clients or to the server. Any request that
+specifies a resource ID is vulnerable to some of the above threats.
+Such requests also provide a way for a client to guess resource IDs of
+other clients. A client can make educated guesses for possible
+resource IDs, and if the request succeeds, it knows it has determined
+a valid resource ID. We call this ``resource ID guessing'' in the
+list below.
+
+One likely defense against these problems is to have the server send
+an appropriate protocol error to deny the existence of any resource
+specified by a client that doesn't belong to that client. A variation
+on this policy lets cooperating groups of clients access each other's
+resources, but not those of other groups. The Broadway project will
+initially use a less general form of this idea by having two groups,
+trusted and untrusted. Trusted clients can do everything that X
+clients can do today. They will be protected from untrusted clients
+in ways described below. Untrusted clients will not be protected from
+each other. Though this will be the initial design, we need to make
+sure there is a growth path to multiple (more than two) groups.
+
+Most of the time, applications never access server resources that
+aren't their own, so the impact of disallowing such accesses should be
+minimal. There are a few notable exceptions, most of which will be
+discussed under the relevant protocol requests. They are: ICCCM
+selection transfer, Motif drag and drop, and server-global resources
+like the root window and default colormap. Another major exception is
+the window manager, which routinely manipulates windows of other
+applications. The solution for window managers is to always run them
+as trusted applications.
+
+The implementation difficulty of limiting access to resources should
+not be large. All resource accesses eventually funnel down to one of
+two functions in dix/resource.c: LookupIDByType() and
+LookupIDByClass(). A few lines of checking at the top of these
+functions will form the heart of this defense. There is a small
+problem because these functions are not told which client is doing the
+lookup, but that can be solved either by adding a client parameter
+(probably as a new function to preserve compatibility), or by using
+the server global requestingClient.
+
+ISSUE: are we really going to be able to get away with hiding trusted
+resources, or will things like Motif drag and drop force us to expose
+them? (Either way, the operations that untrusted clients can do to
+trusted resources will have to be limited.) Is there something in Xt
+or the ICCCM that breaks if you hide resources?
+
+\subsection{Denial of Service}
+
+\subsubsection{Memory Exhaustion}
+
+Any request that causes the server to consume resources (particularly
+memory) can be used in a denial of service attack. A client can use
+such requests repeatedly until the server runs out of memory. When
+that happens, the server will either crash or be forced to send Alloc
+errors. The most obvious candidates are resource creation requests,
+e.g., CreatePixmap, but in reality a large percentage of requests
+cause memory allocation, if only temporarily, depending on the server
+implementation. For this reason, the list of requests subject to this
+form of denial of service will be necessarily incomplete.
+
+To address this form of denial of service, the server could set
+per-client quotas on memory consumption. When the limit is surpassed,
+the server could return Alloc errors. The application impact is
+minimal as long as the application stays within quota. The
+implementation difficulty is another story.
+
+Conceptually, it seems easy: simply have a way to set the limit, and
+on every memory (de)allocation operation, update the client's current
+usage, and return an error if the client is over the limit. The first
+problem is something we've already touched on: the allocator functions
+aren't told which client the allocation belongs to. Unlike resource
+lookups, allocations are done in too many places to consider a new
+interface that passes the client, so using the global requestingClient
+is practically mandatory.
+
+The problems run deeper. The logical thing for the allocator to do if
+the client is over its limit is to return NULL, indicating allocation
+failure. Unfortunately, there are many places in the server that will
+react badly if this happens. Most of these places, but not all, are
+``protected'' by setting the global variable Must_have_memory to True
+around the delicate code. We could help the problem by skipping the
+limit check if Must_have_memory is True. The best solution would be
+to bullet-proof the server against allocation failures, but that is
+beyond the scope of Broadway. Another consideration is that the
+additional checking may have a measurable performance impact, since
+the server does frequent allocations.
+
+A third problem is that there is no portable way to determine the size
+of a chunk of allocated memory given just a pointer to the chunk, and
+that's all you have inside Xrealloc() and Xfree(). The server could
+compensate by recording the sizes itself somewhere, but that would be
+wasteful of memory, since the malloc implementation also must be
+recording block sizes. On top of that, the redundant bookkeeping
+would hurt performance. One solution is to use a custom malloc that
+has the needed support, but that too seems beyond the scope of
+Broadway.
+
+Considering all of this, we think it is advisable to defer solving the
+memory exhaustion problem to a future release. Keep this in mind when
+you see quotas mentioned as a defense in the list below.
+
+\subsubsection{CPU Monopolization}
+
+Another general way that a client can cause denial of service is to
+flood the server with requests. The server will spend a large
+percentage of its time servicing those requests, possibly starving
+other clients and certainly hurting performance. Every request can be
+used for flooding, so we will not bother to list flooding on every
+request. A variation on this attack is to flood the server with new
+connection attempts.
+
+To reduce the effectiveness of flooding, the server could use a
+different scheduling algorithm that throttles clients that are
+monopolizing the server, or it could simply favor trusted clients over
+untrusted ones. Applications cannot depend on a particular scheduling
+algorithm anyway, so changing it should not affect them. The
+Synchronization extension specifies a way to set client priorities,
+and a simple priority scheduler already exists in the server to
+support it, so this should be simple to add.
+
+
+
+\section{Security concerns with specific window attributes}
+
+\subsection{Background-pixmap}
+
+Clients can use windows with the background-pixmap attribute set to
+None (hereafter ``background none windows'') to obtain images of other
+windows. A background none window never paints its own background, so
+whatever happened to be on the screen when the window was mapped can
+be read from the background none window with GetImage. This may well
+contain data from other windows. The CreateWindow and
+ChangeWindowAttributes requests can set the background-pixmap
+attribute set to None, and many window operations can cause data from
+other windows to be left in a background none window, including
+ReparentWindow, MapWindow, MapSubwindows, ConfigureWindow, and
+CirculateWindow.
+
+Background none windows can also be used to cause apparent alteration.
+A client can create a window with background none and draw to it. The
+drawing will appear to the user to be in the windows below the
+background none window.
+
+To remedy these problems, the server could substitute a well-defined
+background when a client specifies None. Ideally the substituted
+background would look different enough from other windows that the
+user wouldn't be confused. A tile depicting some appropriate
+international symbol might be reasonable. We believe that there are
+few applications that actually rely on background none semantics, and
+those that do will be easy for the user to identify because of the
+distinctive tile. Implementation should not be a problem either.
+Luckily, the window background cannot be retrieved through the X
+protocol, so we won't have to maintain any illusions about its value.
+
+ISSUE: Some vendors have extensions to let you query the window
+background. Do we need to accomodate that?
+
+ISSUE: Will this lead to unacceptable application breakage? Could the
+server be smarter, only painting with the well-defined background when
+the window actually contains bits from trusted windows?
+
+\subsection{ParentRelative and CopyFromParent}
+
+Several window attributes can take on special values that cause them
+to reference (ParentRelative) or copy (CopyFromParent) the same
+attribute from the window's parent. This fits our definition of theft.
+The window attributes are class, background-pixmap, border-pixmap, and
+colormap. All of these can be set with CreateWindow; all but class
+can be set with ChangeWindowAttributes.
+
+These forms of theft aren't particularly serious, so sending an error
+doesn't seem appropriate. Substitution of different attribute values
+seems to be the only reasonable option, and even that is likely to
+cause trouble for clients. Untrusted clients are already going to be
+prevented from creating windows that are children of trusted clients
+(see CreateWindow below). We recommend that nothing more be done to
+counter this threat.
+
+
+\subsection{Override-redirect}
+
+Windows with the override-redirect bit set to True are generally
+ignored by the window manager. A client can map an override-redirect
+window that covers most or all of the screen, causing denial of
+service since other applications won't be visible.
+
+To prevent this, the server could prevent more than a certain
+percentage (configurable) the of screen area from being covered by
+override-redirect windows of untrusted clients.
+
+Override-redirect windows also make some spoofing attacks easier since
+the client can more carefully control the presentation of the window
+to mimic another client. Defenses against spoofing will be
+given under MapWindow.
+
+\section{Security concerns with specific requests}
+
+To reduce the space needed to discuss 120 requests, most of the
+following sections use a stylized format. A threat is given, followed
+by an imperative statement. The implied subject is an untrusted
+client, and the object is usually a trusted client. Following that,
+another statement starting with ``Defense:'' recommends a
+countermeasure for the preceding threat(s).
+
+Resources owned by the server, such as the root window and the default
+colormap, are considered to be owned by a trusted client.
+
+
+\subsection{CreateWindow}
+
+Alteration: create a window as a child of another client's window,
+altering its list of children.
+
+Defense: send Window error. Specifying the root window as the parent will
+have to be allowed, though.
+
+Theft: create an InputOnly window or a window with background none on
+top of other clients' windows, select for keyboard/mouse input on that
+window, and steal the input. The input can be resent using SendEvent
+or an input synthesis extension so that the snooped application
+continues to function, though this won't work convincingly with the
+background none case because the drawing will be clipped.
+
+Defense: send an error if a top-level InputOnly window is created (or
+reparented to the root). Countermeasures for background none and
+SendEvent are discussed elsewhere.
+
+ISSUE: The Motif drag and drop protocol creates and maps such a window
+(at $-$100,$-$100, size 10x10) to ``cache frequently needed data on
+window properties to reduce roundtrip server requests.'' Proposed
+solution: we could only send an error if the window is visible, which
+would require checking in, MapWindow, ConfigureWindow, and
+ReparentWindow.
+
+Theft: resource ID guessing (parent, background-pixmap, border-pixmap,
+colormap, and cursor).
+
+Defense: send Window, Pixmap, Colormap, or Cursor error.
+
+Denial of service: create windows until the server runs out of memory.
+
+Defense: quotas.
+
+Also see section 3.
+
+
+\subsection{ChangeWindowAttributes}
+
+Alteration: change the attributes of another client's window.
+
+Theft: select for events on another client's window.
+
+Defense for both of the above: send Window error.
+
+ISSUE: The Motif drop protocol states that ``the initiator should
+select for DestroyNotify on the destination window such that it is
+aware of a potential receiver crash.'' This will be a problem if the
+initiator is an untrusted window and the destination is trusted. Can
+the server, perhaps with the help of the security manager, recognize
+that a drop is in progress and allow the DestroyNotify event selection
+in this limited case?
+
+ISSUE: The Motif pre-register drag protocol probably requires the
+initiator to select for Enter/LeaveNotify on all top-level windows.
+Same problem as the previous issue.
+
+Theft: resource ID guessing (background-pixmap, border-pixmap,
+colormap, and cursor).
+
+Defense: send Pixmap, Colormap, or Cursor error.
+
+Also see section 3.
+
+
+\subsection{GetWindowAttributes}
+
+Theft: get the attributes of another client's window.
+
+Theft: resource ID guessing (window).
+
+Defense for both of the above: send Window error.
+
+
+\subsection{DestroyWindow, DestroySubwindows}
+
+Destruction: destroy another client's window.
+
+Theft: resource ID guessing (window).
+
+Defense for both of the above: send Window error.
+
+
+\subsection{ChangeSaveSet}
+
+Alteration: cause another client's windows to be reparented to the
+root when this client disconnects (only if the other client's windows
+are subwindows of this client's windows).
+
+Defense: process the request normally. The trusted client gives away
+some of its protection by creating a subwindow of an untrusted window.
+
+Theft: resource ID guessing (window).
+
+Defense: send Window error.
+
+
+\subsection{MapWindow}
+
+Spoofing: map a window that is designed to resemble a window of
+another client. Additional requests will probably be needed to
+complete the illusion.
+
+Defense:
+
+We consider spoofing to be a significant danger only if the user is
+convinced to interact with the spoof window. The defense centers on
+providing enough information to enable the user to know where
+keyboard, mouse, and extension device input is going. To accomplish
+this, the server will cooperate with the security manager, an external
+process. The server will provide the following facilities to the
+security manager:
+
+1. A way to create a single window that is unobscurable by any window
+of any other client, trusted or untrusted. It needs to be
+unobscurable so that it is spoof-proof.
+
+ISSUE: is a weaker form of unobscurability better? Should the window be
+obscurable by trusted windows, for example?
+
+ISSUE: does unobscurable mean that it is a child of the root that is
+always on top in the stacking order?
+
+2. A way to determine if a given window ID belongs to an untrusted
+client.
+
+The security manager will need to select for the existing events
+FocusIn, FocusOut, EnterNotify, LeaveNotify, DeviceFocusIn, and
+DeviceFocusOut on all windows to track what window(s) the user's input
+is going to. Using the above server facilities, it can reliably
+display the trusted/untrusted status of all clients currently
+receiving input.
+
+ISSUE: is it too much to ask the security manager to select for all
+these events on every window? Do we need to provide new events that
+you select for *on the device* that tell where the device is focused?
+
+None of this should have any application impact.
+
+The unobscurable window may be tricky to implement. There is already
+some machinery in the server to make an unobscurable window for the
+screen saver, which may help but may also get in the way now that we
+have to deal with two unobscurable windows.
+
+
+
+\subsection{Window Operations}
+
+Specifically, ReparentWindow, MapWindow, MapSubwindows, UnmapWindow,
+UnmapSubwindows, ConfigureWindow, and CirculateWindow.
+
+Alteration: manipulate another client's window.
+
+Theft: resource ID guessing (window, sibling).
+
+Defense for both of the above: send a Window error unless it is a root
+window, in which case we should send an Access error.
+
+
+
+\subsection{GetGeometry}
+
+Theft: get the geometry of another client's drawable.
+
+Theft: resource ID guessing (drawable).
+
+Defense for both of the above: send Drawable error. However, root
+windows will be allowed.
+
+
+
+\subsection{QueryTree}
+
+Theft: resource ID guessing (window).
+
+Defense: send Window error.
+
+Theft: discover window IDs that belong to other clients.
+
+Defense: For the child windows, censor the reply by removing window
+IDs that belong to trusted clients. Allow the root window to be
+returned. For the parent window, if it belongs to a trusted client,
+return the closest ancestor window that belongs to an untrusted
+client, or if such a window does not exist, return the root window for
+the parent window.
+
+ISSUE: will some applications be confused if we filter out the window
+manager frame window(s), or other windows between the queried window
+and the root window?
+
+ISSUE: the Motif drag protocol (both preregister and dynamic) needs to
+be able to locate other top-level windows for potential drop sites.
+See also section 2.1.
+
+
+\subsection{InternAtom}
+
+Theft: discover atom values of atoms interned by other clients.
+This lets you determine if a specific set of atoms has been
+interned, which may lead to other inferences.
+
+Defense: This is a minor form of theft. Blocking it will interfere
+with many types of inter-client communication. We propose to do
+nothing about this threat.
+
+Denial of service: intern atoms until the server runs out of memory.
+
+Defense: quotas.
+
+
+
+\subsection{GetAtomName}
+
+Theft: discover atom names of atoms interned by other clients.
+This lets you determine if a specific set of atoms has been
+interned, which may lead to other inferences.
+
+Defense: This is a minor form of theft. We propose to do nothing
+about this threat.
+
+
+
+\subsection{ChangeProperty}
+
+Alteration: change a property on another client's window or one that
+was stored by another client.
+
+Theft: resource ID guessing (window).
+
+Defense for both of the above: send Window error.
+
+ISSUE: Selection transfer requires the selection owner to change a
+property on the requestor's window. Does the security manager get us
+out of this? Does the server notice the property name and window
+passed in ConvertSelection and temporarily allow that window property
+to be written?
+
+ISSUE: should certain root window properties be writable?
+
+Denial of service: store additional property data until the server
+runs out of memory.
+
+Defense: quotas.
+
+
+
+\subsection{DeleteProperty}
+
+Destruction: delete a property stored by another client.
+
+Theft: resource ID guessing (window).
+
+Defense for both of the above: send Window error.
+
+
+
+\subsection{GetProperty}
+
+Theft: get a property stored by another client.
+
+Theft: resource ID guessing (window).
+
+Defense for both of the above: send Window error.
+
+ISSUE: should certain root window properties be readable? Proposed
+answer: yes, some configurable list. Do those properties need to be
+polyinstantiated?
+
+ISSUE: Motif drag and drop needs to be able to read the following
+properties: WM_STATE to identify top-level windows, _MOTIF_DRAG_WINDOW
+on the root window, _MOTIF_DRAG_TARGETS on the window given in the
+_MOTIF_DRAG_WINDOW property, and _MOTIF_DRAG_RECEIVER_INFO on windows
+with drop sites. Additionally, some properties are needed that do not
+have fixed names.
+
+
+\subsection{RotateProperties}
+
+Alteration: rotate properties stored by another client.
+
+Theft: resource ID guessing (window).
+
+Defense for both of the above: send Window error.
+
+
+
+\subsection{ListProperties}
+
+Theft: list properties stored by another client.
+
+Theft: resource ID guessing (window).
+
+Defense for both of the above: send Window error.
+
+ISSUE: should certain root window properties be listable?
+
+
+
+\subsection{SetSelectionOwner}
+
+Theft: Steal ownership of a selection.
+
+Denial of service: do this repeatedly so that no other client can own
+the selection.
+
+Defense for both of the above: have a configurable list of selections
+that untrusted clients can own. For other selections, treat this
+request as a no-op.
+
+ISSUE: how does the security manager get involved here? Is it the one
+that has the configurable list of selections instead of the server?
+
+Theft: resource ID guessing (window).
+
+Defense: send Window error.
+
+
+
+\subsection{GetSelectionOwner}
+
+Theft: discover the ID of another client's window via the owner field
+of the reply.
+
+Defense: if the selection is on the configurable list mentioned above,
+return the root window ID, else return None.
+
+ISSUE: how does the security manager get involved here?
+
+
+
+\subsection{ConvertSelection}
+
+Theft: this initiates a selection transfer (see the ICCCM) which sends
+the selection contents from the selection owner, which may be another
+client, to the requesting client.
+
+Defense: since in many cases ConvertSelection is done in direct
+response to user interaction, it is probably best not to force it to
+fail, either silently or with an error. The server should rely on the
+security manager to assist in handling the selection transfer.
+
+Theft: resource ID guessing (requestor).
+
+Defense: send Window error.
+
+
+
+\subsection{SendEvent}
+
+A client can use SendEvent to cause events of any type to be sent to
+windows of other clients. Similarly, a client could SendEvent to one
+of its own windows with propogate set to True and arrange for the
+event to be propogated up to a window it does not own. Clients can
+detect events generated by SendEvent, but we cannot assume that they
+will.
+
+Defense: ignore this request unless the event being sent is a
+ClientMessage event, which should be sent normally so that selection
+transfer, Motif drag and drop, and certain input methods have a chance
+at working.
+
+ISSUE: does allowing all ClientMessages open up too big a hole?
+
+Theft: resource ID guessing (window).
+
+Defense: send Window error.
+
+
+
+\subsection{Keyboard and Pointer Grabs}
+
+Specifically, GrabKeyboard, GrabPointer, GrabKey, and GrabButton.
+
+Denial of service/Theft: take over the keyboard and pointer. This
+could be viewed as denial of service since it prevents other clients
+from getting keyboard or mouse input, or it could be viewed as theft
+since the user input may not have been intended for the grabbing
+client.
+
+Defense: provide a way to break grabs via some keystroke combination,
+and have a status area that shows which client is getting input.
+(See MapWindow.)
+
+Theft: resource ID guessing (grab-window, confine-to, cursor).
+
+Defense: send Window or Cursor error.
+
+
+
+\subsection{ChangeActivePointerGrab}
+
+Theft: resource ID guessing (cursor).
+
+Defense: send Cursor error.
+
+
+
+\subsection{GrabServer}
+
+Denial of service: a client can grab the server and not let go,
+locking out all other clients.
+
+Defense: provide a way to break grabs via some keystroke combination.
+
+
+
+\subsection{QueryPointer}
+
+Theft: A client can steal pointer motion and position, button input,
+modifier key state, and possibly a window of another client with this
+request.
+
+Defense: if the querying client doesn't have the pointer grabbed, and
+the pointer is not in one of its windows, the information can be
+zeroed.
+
+Theft: resource ID guessing (window).
+
+Defense: send Window error.
+
+
+
+\subsection{GetMotionEvents}
+
+Theft: steal pointer motion input that went to other clients.
+
+Defense: ideally, the server would return only pointer input that was
+not delivered to any trusted client. The implementation effort to do
+that probably outweighs the marginal benefits. Instead, we will
+always return an empty list of motion events to untrusted clients.
+
+Theft: resource ID guessing (window).
+
+Defense: send Window error.
+
+
+
+\subsection{TranslateCoordinates}
+
+Theft: discover information about other clients' windows: position,
+screen, and possibly the ID of one of their subwindows.
+
+Defense: send an error if src-window or dst-window do not belong
+to the requesting client.
+
+Theft: resource ID guessing (src-window, dst-window).
+
+Defense: send Window error.
+
+
+
+\subsection{WarpPointer}
+
+A client can cause pointer motion to occur in another client's window.
+
+Denial of service: repeated pointer warping prevents the user from
+using the mouse normally.
+
+Defense for both of the above: if the querying client doesn't have the
+pointer grabbed, and the pointer is not in one of its windows, treat
+the request as a no-op.
+
+Theft: resource ID guessing (src-window, dst-window).
+
+Defense: send Window error.
+
+
+
+\subsection{SetInputFocus}
+
+Theft: a client can use this request to make one of its own windows
+have the input focus (keyboard focus). The user may be unaware that
+keystrokes are now going to a different window.
+
+Denial of service: repeatedly setting input focus prevents normal use
+of the keyboard.
+
+Defense for both of the above: only allow untrusted clients to
+SetInputFocus if input focus is currently held by another untrusted
+client.
+
+ISSUE: this will break clients using the Globally Active Input model
+described in section 4.1.7 of the ICCCM.
+
+Theft: resource ID guessing (focus).
+
+Defense: send Window error.
+
+
+
+\subsection{GetInputFocus}
+
+Theft: the reply may contain the ID of another client's window.
+
+Defense: return a focus window of None if a trusted client currently
+has the input focus.
+
+
+
+\subsection{QueryKeymap}
+
+Theft: poll the keyboard with this to see which keys are being pressed.
+
+Defense: zero the returned bit vector if a trusted client currently
+has the input focus.
+
+
+
+\subsection{Font Requests}
+
+Specifically, OpenFont, QueryFont, ListFonts, ListFontsWithInfo, and
+QueryTextExtents.
+
+Theft: discover font name, glyph, and metric information about fonts
+that were provided by another client (by setting the font path).
+Whether it is theft to retrieve information about fonts from the
+server's initial font path depends on whether or not you believe those
+fonts, by their existence in the initial font path, are intended to be
+globally accessible by all clients.
+
+Defense:
+
+Maintain two separate font paths, one for trusted clients and one for
+untrusted clients. They are both initialized to the default font path
+at server reset. Subsequently, changes to one do not affect the
+other. Since untrusted clients will not see font path elements added
+by trusted clients, they will not be able to access any fonts provided
+by those font path elements.
+
+Theft: resource ID guessing (font) (QueryFont and QueryTextExtents only).
+
+Defense: send Font error.
+
+Denial of service: open fonts until the server runs out of memory
+(OpenFont only).
+
+Defense: quotas.
+
+
+\subsection{CloseFont}
+
+Destruction: close another client's font.
+
+Defense: send Font error.
+
+
+
+\subsection{SetFontPath}
+
+Denial of service: change the font path so that other clients cannot
+find their fonts.
+
+Alteration: change the font path so that other clients get different
+fonts than they expected.
+
+Defense for both of the above: separate font paths for trusted and
+untrusted clients, as described in the Font Requests section.
+
+ISSUE: the printing project considered per-client font paths and
+concluded that it was very difficult to do. We should look at this
+aspect of the print server design to see if we can reuse the same
+scheme. We should also try to reconstruct what was so difficult about
+this; it doesn't seem that hard on the surface.
+
+
+
+\subsection{GetFontPath}
+
+Theft: retrieve font path elements that were set by other clients.
+
+Use knowledge from font path elements to mount other attacks,
+e.g., attack a font server found in the font path.
+
+Defense for both of the above: separate font paths for trusted and
+untrusted clients, as described in the Font Requests section.
+
+
+
+\subsection{CreatePixmap}
+
+Theft: resource ID guessing (drawable).
+
+Defense: send Drawable error.
+
+Denial of service: create pixmaps until the server runs out of memory.
+
+Defense: quotas.
+
+
+
+\subsection{FreePixmap}
+
+Destruction: destroy another client's pixmap.
+
+Defense: send Pixmap error.
+
+
+\subsection{CreateGC}
+
+Theft: resource ID guessing (drawable, tile, stipple, font, clip-mask).
+
+Defense: send Drawable, Pixmap, or Font error.
+
+Denial of service: create GCs until the server runs out of memory.
+
+Defense: quotas.
+
+
+
+\subsection{CopyGC}
+
+Theft: copy GC values of another client's GC.
+
+Alteration: copy GC values to another client's GC.
+
+Defense for both of the above: send GC error.
+
+
+
+\subsection{ChangeGC, SetDashes, SetClipRectangles}
+
+Alteration: change values of another client's GC.
+
+Theft: resource ID guessing (gc, tile, stipple, font, clip-mask)
+(last four for ChangeGC only).
+
+Defense for both of the above: send GC error.
+
+
+
+\subsection{FreeGC}
+
+Destruction: destroy another client's GC.
+
+Defense: send GC error.
+
+
+
+\subsection{Drawing Requests}
+
+Specifically, ClearArea, CopyArea, CopyPlane, PolyPoint,
+PolyLine, PolySegment, PolyRectangle, PolyArc, FillPoly,
+PolyFillRectangle, PolyFillArc, PutImage, PolyText8, PolyText16,
+ImageText8, and ImageText16.
+
+Alteration: draw to another client's drawable.
+
+Theft: resource ID guessing:
+ ClearArea - window;
+ CopyArea, CopyPlane - src-drawable, dst-drawable, gc;
+ all others - drawable, gc.
+
+Defense for both of the above: send appropriate error.
+
+ISSUE: The Motif preregister drag protocol requires clients to draw
+into windows of other clients for drag-over/under effects.
+
+Spoofing: draw to a window to make it resemble a window of
+another client.
+
+Defense: see MapWindow.
+
+
+
+\subsection{GetImage}
+
+Theft: get the image of another client's drawable.
+
+Theft: resource ID guessing (drawable).
+
+Defense: send Drawable error.
+
+Theft: get the image of your own window, which may contain pieces of
+other overlapping windows.
+
+Defense: censor returned images by blotting out areas that contain
+data from trusted windows.
+
+
+
+\subsection{CreateColormap}
+
+Theft: resource ID guessing (window).
+
+Defense: send Colormap error.
+
+Denial of service: create colormaps with this request until the server
+runs out of memory.
+
+Defense: quotas.
+
+
+
+\subsection{FreeColormap}
+
+Destruction: destroy another client's colormap.
+
+Defense: send Colormap error.
+
+
+
+\subsection{CopyColormapAndFree}
+
+Theft: resource ID guessing (src-map).
+
+Defense: send Colormap error. However, default colormaps will be
+allowed.
+
+ISSUE: must untrusted applications be allowed to use standard colormaps?
+(Same issue for ListInstalledColormaps, Color Allocation Requests,
+FreeColors, StoreColors, StoreNamedColor, QueryColors, and LookupColor.)
+
+Denial of service: create colormaps with this request until the server
+runs out of memory.
+
+Defense: quotas.
+
+
+
+\subsection{InstallColormap, UninstallColormap}
+
+Theft: resource ID guessing.
+
+Defense: send Colormap error.
+
+Denial of service: (un)install any colormap, potentially preventing
+windows from displaying correct colors.
+
+Defense: treat this request as a no-op. Section 4.1.8 of the ICCCM
+states that (un)installing colormaps is the responsibility of the window
+manager alone.
+
+ISSUE: the ICCCM also allows clients to do colormap installs if the
+client has the pointer grabbed. Do we need to allow that too?
+
+
+
+\subsection{ListInstalledColormaps}
+
+Theft: resource ID guessing (window).
+
+Defense: send Colormap error.
+
+Theft: discover the resource ID of another client's colormap
+from the reply.
+
+Defense: remove the returned colormap IDs; only let through default
+colormaps and colormaps of untrusted clients.
+
+
+
+\subsection{Color Allocation Requests}
+
+Specifically, AllocColor, AllocNamedColor, AllocColorCells, and
+AllocColorPlanes.
+
+Alteration/Denial of service: allocate colors in another client's
+colormap. It is denial of service if the owning client's color
+allocations fail because there are no cells available. Otherwise it
+is just alteration.
+
+Theft: resource ID guessing (cmap).
+
+Defense for both of the above: send Colormap error. However, default
+colormaps will be allowed.
+
+
+
+\subsection{FreeColors}
+
+Theft: resource ID guessing (cmap).
+
+Defense: send Colormap error. However, default colormaps will be
+allowed.
+
+
+
+\subsection{StoreColors, StoreNamedColor}
+
+Alteration: change the colors in another client's colormap.
+
+Theft: resource ID guessing (cmap).
+
+Defense for both of the above: send Colormap error. However, default
+colormaps will be allowed.
+
+
+
+\subsection{QueryColors, LookupColor}
+
+Theft: retrieve information about the colors in another client's
+colormap.
+
+Theft: resource ID guessing (cmap).
+
+Defense for both of the above: send Colormap error. However, default
+colormaps will be allowed.
+
+
+
+\subsection{CreateCursor, CreateGlyphCursor}
+
+Theft: resource ID guessing (source, mask or source-font, mask-font).
+
+Defense: send Pixmap or Font error. However, the default font will be
+allowed.
+
+Denial of service: create cursors until the server runs out of memory.
+
+Defense: quotas.
+
+
+
+\subsection{FreeCursor}
+
+Destruction: free another client's cursor.
+
+Defense: send Cursor error.
+
+
+
+\subsection{RecolorCursor}
+
+Alteration: recolor another client's cursor.
+
+Theft: resource ID guessing (cursor).
+
+Defense for both of the above: send Cursor error.
+
+
+
+\subsection{QueryBestSize}
+
+Theft: resource ID guessing (drawable).
+
+Defense: send Drawable error.
+
+
+
+\subsection{ListExtensions, QueryExtension}
+
+Determine the extensions supported by the server, and use the list to
+choose extension-specific attacks to attempt.
+
+Defense: extensions will have a way to tell the server whether it is
+safe for untrusted clients to use them. These requests will only
+return information about extensions that claim to be safe.
+
+
+
+\subsection{Keyboard configuration requests}
+
+Specifically, ChangeKeyboardControl, ChangeKeyboardMapping,
+and SetModifierMapping.
+
+Alteration: change the keyboard parameters that were established by
+another client.
+
+Denial of service: with ChangeKeyboardControl, disable auto-repeat,
+key click, or the bell. With ChangeKeyboardMapping or
+SetModifierMapping, change the key mappings so that the keyboard is
+difficult or impossible to use.
+
+Defense for both of the above: treat these requests as a no-op.
+
+
+
+\subsection{Keyboard query requests}
+
+Specifically, GetKeyboardControl, GetKeyboardMapping, and
+GetModifierMapping.
+
+Theft: get keyboard information that was established by another
+client.
+
+Defense: This is a minor form of theft. We propose to do nothing
+about this threat.
+
+
+
+\subsection{ChangePointerControl, SetPointerMapping}
+
+Alteration: change the pointer parameters that were established by
+another client.
+
+Denial of service: set the pointer parameters so that the pointer is
+difficult or impossible to use.
+
+Defense for both of the above: treat these requests as a no-op.
+
+
+
+\subsection{GetPointerControl, GetPointerMapping}
+
+Theft: get pointer parameters that were established by another client.
+
+Defense: This is a minor form of theft. We propose to do nothing
+about this threat.
+
+
+
+\subsection{SetScreenSaver}
+
+Alteration: change the screen saver parameters that were established
+by another client.
+
+Denial of service: set the screen saver parameters so that the screen
+saver is always on or always off.
+
+Defense for both of the above: treat these requests as a no-op.
+
+
+
+\subsection{GetScreenSaver}
+
+Theft: get screen saver parameters that were established by another
+client.
+
+Defense: This is a minor form of theft. We propose to do nothing
+about this threat.
+
+
+
+\subsection{ForceScreenSaver}
+
+Denial of service: repeatedly activate the screen saver so that the
+user cannot see the screen as it would look when the screen saver
+is off.
+
+Denial of service: repeatedly reset the screen saver, preventing it
+from activating.
+
+Defense for both of the above: treat these requests as a no-op.
+
+
+
+\subsection{ChangeHost}
+
+Most servers already have some restrictions on which clients can use
+this request, so whether the following list applies is implementation
+dependent.
+
+Denial of service: remove a host from the list, preventing clients
+from connecting from that host.
+
+Add a host to the list. Clients from that host may then launch
+other attacks of any type.
+
+Defense for both of the above: return Access error.
+
+
+\subsection{ListHosts}
+
+Theft: steal host identities and possibly even user identities that
+are allowed to connect.
+
+Launch attacks of any type against the stolen host/user identities.
+
+Defense for both of the above: return only untrusted hosts.
+
+
+
+\subsection{SetAccessControl}
+
+Most servers already have some restrictions on which clients can use
+this request, so whether the following list applies is implementation
+dependent.
+
+Alteration: change the access control value established by some other
+client.
+
+Disable access control, allowing clients to connect who would normally
+not be able to connect. Those clients may then launch other attacks
+of any type.
+
+Defense for both of the above: return Access error.
+
+
+
+\subsection{SetCloseDownMode}
+
+Denial of service: set the close-down mode to RetainPermanent or
+RetainTemporary, then disconnect. The server cannot reuse the
+resource-id-base of the disconnected client, or the memory used by the
+retained resources, unless another client issues an appropriate
+KillClient to cancel the retainment. The server has a limited number
+of resource-id-bases, and when they are exhausted, it will be unable
+to accept new client connections.
+
+Defense: treat this request as a no-op.
+
+
+\subsection{KillClient}
+
+Destruction/Denial of service: kill another currently connected
+client.
+
+Destruction: kill a client that has terminated with close-down mode
+of RetainTemporary or RetainPermanent, destroying all its retained
+resources.
+
+Destruction: specify AllTemporary as the resource, destroying all
+resources of clients that have terminated with close-down mode
+RetainTemporary.
+
+Defense for all of the above: return Value error.
+
+
+
+\subsection{Clean Requests}
+
+Other than denial of service caused by flooding, these requests have
+no known security concerns: AllowEvents, UngrabPointer, UngrabButton,
+UngrabKeyboard, UngrabKey, UngrabServer, NoOperation, and Bell.
+
+
+
+\section{Events}
+
+The only threat posed by events is theft. Selecting for events on
+another client's resources is always theft. We restrict further
+analysis by assuming that the client only selects for events on its
+own resources, then asking whether the events provide information
+about other clients.
+
+
+
+\subsection{KeymapNotify}
+
+Theft: the state of the keyboard can be seen when the client does not
+have the input focus. This is possible because a KeymapNotify is
+sent to a window after every EnterNotify even if the window does not
+have input focus.
+
+Defense: zero the returned bit vector if a trusted client currently
+has the input focus.
+
+
+
+\subsection{Expose}
+
+Theft: discover where other clients' windows overlap your own. For
+instance, map a full-screen window, lower it, then raise it. The
+resulting exposes tell you where other windows are.
+
+Defense: about the only thing you could do here is force backing store
+to be used on untrusted windows, but that would probably use too much
+server memory. We propose to do nothing about this threat.
+
+
+
+\subsection{GraphicsExposure}
+
+Theft: discover where other clients' windows overlap your own.
+For instance, use CopyArea to copy the entire window's area exactly
+on top of itself. The resulting GraphicsExposures tell you where
+the window was obscured.
+
+Defense: see Expose above. We propose to do nothing about this
+threat.
+
+
+\subsection{VisibilityNotify}
+
+Theft: this event provides crude positional information about other
+clients, though the receiver cannot tell which other clients.
+
+Defense: The information content of this event is very low. We
+propose to do nothing about this threat.
+
+
+
+\subsection{ReparentNotify}
+
+Theft: the parent window may belong to some other client (probably
+the window manager).
+
+Defense: If the parent window belongs to a trusted client, return the
+closest ancestor window that belongs to an untrusted client, or if
+such a window does not exist, return the root window for the parent
+window.
+
+ISSUE: what is the application impact?
+
+
+\subsection{ConfigureNotify}
+
+Theft: the above-sibling window may belong to some other client.
+
+Defense: return None for the above-sibling window if it belongs to a
+trusted client.
+
+ISSUE: what is the application impact?
+
+
+\subsection{ConfigureRequest}
+
+Theft: the sibling window may belong to some other client.
+
+Defense: return None for the sibling window if it belongs to a trusted
+client.
+
+ISSUE: what is the application impact?
+
+
+\subsection{SelectionClear}
+
+Theft: the owner window may belong to some other client.
+
+Defense: return None for the owner window if it belongs to a trusted
+client.
+
+
+
+\subsection{SelectionRequest}
+
+Theft: the requestor window may belong to some other client.
+
+Defense: Blocking this event or censoring the window would prevent
+selection transfers from untrusted clients to trusted clients from
+working. We propose to do nothing in the server about this threat.
+The security manager may reduce the exposure of trusted window IDs
+by becoming the owner of all selections.
+
+
+
+\subsection{MappingNotify}
+
+Theft: discover keyboard, pointer, or modifier mapping information
+set by another client.
+
+Defense: Any tampering with this event will cause clients to have an
+inconsistent view of the keyboard or pointer button configuration,
+which is likely to confuse the user. We propose to do nothing about
+this threat.
+
+
+\section{Errors}
+
+There appear to be no threats related to procotol errors.
+
+
+
+\section{Future Work}
+
+The next steps are resolve the items marked ISSUE and to decide if the
+defenses proposed are reasonable. Discussion on the security@x.org
+mailing list, prototyping, and/or starting the implementation should
+help answer these questions.
+
+
+
+\section{References}
+
+Bellcore, ``Framework Generic Requirements for X Window System Security,''
+Technical Advisory FA-STS-001324, Issue 1, August 1992.
+
+Dardailler, Daniel, ``Motif Drag And Drop Protocol,'' unpublished
+design notes.
+
+Kahn, Brian L., ``Safe Use of X WINDOW SYSTEM protocol Across a
+Firewall'', unpublished draft, The MITRE Corporation, 1995.
+
+Rosenthal, David S. H., ``LINX - a Less INsecure X server,'' Sun Microsystems,
+29th April 1989.
+
+Rosenthal, David and Marks, Stuart W., ``Inter-Client Communication
+Conventions Manual Version 2.0,''
+\file{ftp://ftp.x.org/pub/R6.1/xc/doc/hardcopy/ICCCM/icccm.PS.Z}
+
+Scheifler, Robert W., ``X Window System Protocol,''
+\file{ftp://ftp.x.org/pub/R6.1/xc/doc/hardcopy/XProtocol/proto.PS.Z}
+
+Treese, G. Winfield and Wolman, Alec, ``X Through the Firewall, and
+Other Application Relays,'' Digital Equipment Corporation Cambridge
+Research Lab, Technical Report Series, CRL 93/10, May 3, 1993.
+
+\end{document}
diff --git a/specs/Xserver/appgroup.ms b/specs/Xserver/appgroup.ms
new file mode 100644
index 0000000..20d8965
--- /dev/null
+++ b/specs/Xserver/appgroup.ms
@@ -0,0 +1,188 @@
+.\" $Xorg: appgroup.ms,v 1.3 2000/08/17 19:42:41 cpqbld Exp $
+.EF 'AppGroup Extension Definition'- % -'October, 1996'
+.OF 'AppGroup Extension Definition'- % -'October, 1996'
+.EH '''
+.OH '''
+.TL
+Description of the Application Group Extension
+Implementation for the X11 Sample Server
+.AU
+Kaleb S. KEITHLEY
+.AI
+X Consortium
+.LP
+.bp
+\&
+.sp 15
+Copyright \(co 1996 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.bp
+.LP
+The following document explains the server side of the Application
+Group Extension.
+.LP
+WindowsNT is a trademark of Microsoft, Inc. Macintosh and Apple
+are trademarks of Apple Computer, Inc. X Window System is a
+trademark of X Consortium, Inc.
+.LP
+To understand this document and the accompanying source code, you
+should know the C language, should be familiar with X server
+internals, and should also have a general knowledge of the X
+Window System.
+.NH 1
+AppGroup Server Public Functions
+.LP
+The AppGroup extension adds seven new functions that are called
+from elsewhere in the server. They are: XagExtensionInit,
+XagDefaultColormap, XagRootVisual, XagLeader, XagIsControlledRoot,
+XagConnectionInfo, XagCallClientStateChange.
+.LP
+XagExtensionInit is the extension initialization function called
+from InitExtension in mi/miinitext.c. Note that an new resource
+type, RT_APPGROUP, is created, specifying the destructor function
+XagAppGroupFree.
+.LP
+XagDefaultColormap returns the colormap ID that was specified in
+the creation of the AppGroup. Any time CopyFromParent is specified
+for a top-level window's colormap, i.e. in a CreateWindow or
+ChangeWindowAttributes request, this function is called to see
+if there is an AppGroup specific colormap to use. If there is
+one, its ID is returned, otherwise None is returned.
+.LP
+XagRootVisual returns the visual ID that was specified in the
+creation of the Appgroup. Like XagDefaultColormap, when CopyFromParent
+is specified for a top-level window's visual in a CreateWindow
+request, this function is called to see if there is an AppGroup
+specific visual to use. If there is one, its ID is returned,
+otherwise 0 (zero) is returned.
+.LP
+XagLeader returns the ClientPtr of the client that is the AppGroup
+Leader. Normally when an application maps or configures a top-level
+window a MapRequest or ConfigureRequest event is delivered to the
+client, e.g. a window manager, that has selected SubstructureRedirect
+on the root window. However, when the application is part of an
+AppGroup, the MapRequest and ConfigureRequest events are delivered
+to the AppGroup Leader instead.
+.LP
+XagIsControlledRoot returns a boolean: True if the window is a
+top-level window of a client in an AppGroup, False otherwise.
+In a combined server, i.e. one that provides both UI and printing,
+the application may create and map windows on the "printing"
+screens; thus it becomes necessary to discriminate between the
+AppGroup's root window and other root windows. If an AppGroup
+member creates and maps a [top-level] window then the window's
+parent [the root window] is tested to determine whether to send
+MapRequest or ConfigureRequest events to the AppGroup Leader to
+to some other client.
+.LP
+In the trivial case XagIsControlledRoot returns True if the parent
+window has no parent itself, i.e. it is a root window. In the case
+where the application is embedded, indicated by the singleScreen
+attribute being True, the parent's drawable ID is compared to the
+AppGroup's root window ID, and if it is the same, True is returned.
+If neither case is true, then False is returned.
+.LP
+XagConnectionInfo returns an abreviated version of the connection
+setup information. When an embedded AppGroup is created the server
+returns only the information about the [UI] screen that the
+application is embedded within in the connection setup in order to
+prevent the application from creating windows on other screens;
+thus attempting to guarantee that any window that should be embedded
+can be reparented into the AppGroup Leader's window hierarchy.
+.LP
+XagCallClientStateChange is called to invoke the extension's client
+state change callback additional times as necessary -- currently
+only once, after the auth data becomes available between
+ClientStateInitial and ClientStateConnected. Client state change
+callbacks were introduced in the Record extension, which specifies
+when the callbacks are invoked. Unfortunately the points at which
+they are called are not necessarily the best as far as the AppGroup
+Extension is concerned. Adding an additional state and calling all
+the callbacks works too, however this seemed unnecessary overkill.
+.NH 1
+AppGroup Server Private APIs
+.LP
+The AppGroup extension adds the following functions which are
+private to the extension: ProcXagDispatch and SProcXagDispatch,
+ProcXagQueryVersion and SProcXagQueryVersion, ProcXagCreate and
+SProcXagCreate, ProcXagDestroy and SProcXagDestroy,
+ProcGetAttr and SProcGetAttr, ProcXagQuery and SProcXagQuery,
+ProcXagCreateAssoc and SProcXagCreateAssoc, ProcXagDestroyAssoc
+and SProcXagDestroyAssoc, XagResetProc, and XagAppGroupFree.
+.LP
+The ProcXagDispatch, SProcXagDispatch, and XagResetProc functions
+should be familiar to anyone familiar with X server internals and
+I won't elaborate on them here. Similarly the wrapper functions:
+SProcXagQueryVersion, SProcXagCreate, SProcXagDestroy, SProcXagGetAttr,
+SProcXagQuery, SProcXagCreateAssoc, and SProcXagDestroyAssoc, as
+wrappers which handle swapping integer data into the host's byte
+order will not be explained in any detail.
+.LP
+ProcXagQueryVersion returns the major and minor versions of the
+AppGroup extension supported by the server.
+.LP
+ProcXagCreate creates an AppGroup. A new record in a linked list
+of AppGroups is allocated and initialized. The attributes from the
+request are validated and copied to the AppGroup record. If necessary
+an abbreviated version of the connection setup information is compiled
+and also stored in the AppGroup record. The first time an AppGroup
+is created a client-state-change callback is registered and a
+reference count is incremented.
+.LP
+ProcXagDestroy destroys an AppGroup an AppGroup by calling
+FreeResource specifying the AppGroup ID. This will result in
+the destructor function XagAppGroupFree being called. The
+reference count is decremented and when it reaches zero the
+client-state-change callback is deleted.
+.LP
+ProcXagGetAttr returns the AppGroup Attributes to the requesting
+client.
+.LP
+ProcXagQuery returns the AppGroup ID of an arbitrary resource to
+the requesting client.
+.LP
+ProcXagCreateAssoc creates an association between an X window ID
+and system-specific data. In native X this functionality is
+unnecessary but for various personal computers, e.g. Macintosh,
+OS/2, and MS-Windows it is necessary to associate an X window ID
+with the system's native window identifier so that when the
+AppGroup Leader issues a ReparentWindow request the personal
+computer X server can lookup the system-specific window ID and
+make the necessary function call(s) with it.
+.LP
+ProcXagDestroyAssoc destroys the association created with
+ProcXagCreateAssoc.
+.LP
+XagResetProc removes the client-state-change callback, sets the
+reference count to zero, and frees all the AppGroup records in
+the linked list by calling XagAppGroupFree.
+.LP
+XagAppGroupFree calls CloseDownClient for each client in an
+AppGroup if the AppGroup has a leader, unlinks the AppGroup
+record from the linked list, frees allocated memory referenced
+by the record, and finally frees the record itself.
+.NH 1
+Known Problems in this release.
+.LP
+In a combined UI/Print server the connection setup returned to an
+embedded application will not have information about the print
+screens.
+.LP
+The LBX proxy caches connection setup information and will return
+incorrect connection setup information to an embedded client.
diff --git a/specs/Xserver/ddx.tbl.ms b/specs/Xserver/ddx.tbl.ms
new file mode 100644
index 0000000..53bc80c
--- /dev/null
+++ b/specs/Xserver/ddx.tbl.ms
@@ -0,0 +1,5186 @@
+.\" $Xorg: ddx.tbl.ms,v 1.3 2000/08/17 19:42:41 cpqbld Exp $
+.EF 'Porting Layer Definition'- % -'April 8, 1994'
+.OF 'Porting Layer Definition'- % -'April 8, 1994'
+.EH '''
+.OH '''
+.TL
+Definition of the Porting Layer
+for the X v11 Sample Server
+.AU
+Susan Angebranndt
+.AU
+Raymond Drewry
+.AU
+Philip Karlton
+.AU
+Todd Newman
+.AI
+Digital Equipment Corporation
+.sp
+minor revisions by
+.AU
+Bob Scheifler
+.AI
+Massachusetts Institute of Technology
+.sp
+Revised for Release 4 and Release 5 by
+.AU
+Keith Packard
+.AI
+MIT X Consortium
+.sp
+Revised for Release 6 by
+.AU
+David P. Wiggins
+.AI
+X Consortium
+.LP
+.bp
+\&
+.sp 15
+Copyright \(co 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.bp
+.LP
+The following document explains the
+structure of the X Window System display server and the interfaces among the larger pieces.
+It is intended as a reference for programmers who are implementing an X Display Server
+on their workstation hardware.
+It is included with the X Window System source tape,
+along with the document "Strategies for Porting the X v11 Sample Server."
+The order in which you should read these documents is:
+
+.IP 1)
+Read the first section
+of the "Strategies for Porting" document (Overview of Porting Process).
+
+.IP 2)
+Skim over this document (the Definition document).
+
+.IP 3)
+Skim over the remainder of the Strategies document.
+
+.IP 4)
+Start planning and working, referring to the Strategies
+and Definition documents.
+
+You may also want to look at the following documents:
+.IP \(bu 5
+"The X Window System"
+for an overview of X.
+.IP \(bu 5
+"Xlib - C Language X Interface"
+for a view of what the client programmer sees.
+.IP \(bu 5
+"X Window System Protocol"
+for a terse description of the byte stream protocol
+between the client and server.
+.LP
+LK201 and DEC are trademarks of Digital Equipment Corporation.
+Macintosh and Apple are trademarks of Apple Computer, Inc.
+PostScript is a trademark of Adobe Systems, Inc.
+Ethernet is a trademark of Xerox Corporation.
+X Window System is a trademark of X Consortium, Inc.
+Cray is a trademark of Cray Research, Inc.
+
+.LP
+To understand this document and the accompanying source
+code, you should know the C language.
+You should be familiar with 2D graphics and windowing
+concepts such as clipping, bitmaps,
+fonts, etc.
+You should have a general knowledge of the X Window System.
+To implement the server code on your hardware,
+you need to know a lot about
+your hardware, its graphic display device(s),
+and (possibly) its networking and multitasking facilities.
+
+This document depends a lot on the source code,
+so you should have a listing of the code handy.
+.LP
+Some source on the distribution tape is directly compilable
+on your machine.
+Some of it will require
+modification.
+Other parts may have to be completely written from scratch.
+.LP
+The tape also includes source for a sample implementation of a display
+server which runs on a variety of color and monochrome displays which you
+will find useful for implementing any type of X server.
+
+
+.NH 1
+The X Window System
+.XS
+The X Window System
+.XE
+.LP
+The X Window System, or simply "X," is a
+windowing system that provides high-performance, high-level,
+device-independent graphics.
+
+X is a windowing system designed for bitmapped graphic displays.
+The display can have a
+simple, monochrome display or it can have a color display with up to 32 bits
+per pixel with a special graphics processor doing the work. (In this
+document, monochrome means a black and white display with one bit per pixel.
+Even though the usual meaning of monochrome is more general, this special
+case is so common that we decided to reserve the word for this purpose.)
+
+X is designed for a networking environment where
+users can run applications on machines other than their own workstations.
+Sometimes, the connection is over an Ethernet network with a protocol such as TCP/IP;
+but, any "reliable" byte stream is allowable.
+A high-bandwidth byte stream is preferable; RS-232 at
+9600 baud would be slow without compression techniques.
+
+X by itself allows great freedom of design.
+For instance, it does not include any user interface standard.
+Its intent is to "provide mechanism, not policy."
+By making it general, it can be the foundation for a wide
+variety of interactive software.
+
+For a more detailed overview, see the document "The X Window System."
+For details on the byte stream protocol, see "X Window System protocol."
+
+.NH 1
+OVERVIEW OF THE SERVER
+.XS
+OVERVIEW OF THE SERVER
+.XE
+.LP
+The display server
+manages windows and simple graphics requests
+for the user on behalf of different client applications.
+The client applications can be running on any machine on the network.
+The server mainly does three things:
+.IP \(bu 5
+Responds to protocol requests from existing clients
+(mostly graphic and text drawing commands)
+.IP \(bu 5
+Sends device input (keystrokes and mouse actions) and other events to existing clients
+.IP \(bu 5
+Maintains client connections
+
+.LP
+The server code is organized into four major pieces:
+
+.IP \(bu 5
+Device Independent (DIX) layer - code
+shared among all implementations
+.IP \(bu 5
+Operating System (OS) layer - code
+that is different for each operating system
+but is shared among all graphic
+devices for this operating system
+.IP \(bu 5
+Device Dependent (DDX) layer - code that is (potentially)
+different for each combination of operating
+system and graphic device
+.IP \(bu 5
+Extension Interface - a standard way to add
+features to the X server
+
+.LP
+The "porting layer" consists of the OS and DDX layers; these are
+actually parallel and neither one is on top of the other.
+The DIX layer is intended to be portable
+without change to target systems and is not
+detailed here, although several routines
+in DIX that are called by DDX are
+documented.
+Extensions incorporate new functionality into the server; and require
+additional functionality over a simple DDX.
+.LP
+The following sections outline the functions of the layers.
+Section 3 briefly tells what you need to know about the DIX layer.
+The OS layer is explained in Section 4.
+Section 5 gives the theory of operation and procedural interface for the
+DDX layer.
+Section 6 describes the functions which exist for the extension writer.
+
+.NH 2
+Notes On Resources and Large Structs
+.XS
+Notes On Resources and Large Structs
+.XE
+.LP
+X resources are C structs inside the server.
+Client applications create and manipulate these objects
+according to the rules of the X byte stream protocol.
+Client applications refer to resources with resource IDs,
+which are 32-bit integers that are sent over the network.
+Within the server, of course, they are just C structs, and we refer to them
+by pointers.
+
+The DDX layer has several kinds of resources:
+.IP \(bu 5
+Window
+.IP \(bu 5
+Pixmap
+.IP \(bu 5
+Screen
+.IP \(bu 5
+Device
+.IP \(bu 5
+Colormap
+.IP \(bu 5
+Font
+.IP \(bu 5
+Cursor
+.IP \(bu 5
+Graphics Contexts
+.LP
+The type names of the more
+important server
+structs usually end in "Rec," such as "DeviceRec;"
+the pointer types usually end in "Ptr," such as "DevicePtr."
+
+The structs and
+important defined constants are declared
+in .h files that have names that suggest the name of the object.
+For instance, there are two .h files for windows,
+window.h and windowstr.h.
+window.h defines only what needs to be defined in order to use windows
+without peeking inside of them;
+windowstr.h defines the structs with all of their components in great detail
+for those who need it.
+.LP
+Three kinds of fields are in these structs:
+.IP \(bu 5
+Attribute fields - struct fields that contain values like normal structs
+.IP \(bu 5
+Pointers to procedures, or structures of procedures, that operate on the
+object
+.IP \(bu 5
+A private field (or two) used by your DDX code to keep private data
+(probably a pointer
+to another data structure), or an array of private fields, which is
+sized as the server initializes.
+.LP
+DIX calls through
+the struct's procedure pointers to do its tasks.
+These procedures are set either directly or indirectly by DDX procedures.
+Most of
+the procedures described in the remainder of this
+document are accessed through one of these structs.
+For example, the procedure to create a pixmap
+is attached to a ScreenRec and might be called by using the expression
+.nf
+
+ (* pScreen->CreatePixmap)(pScreen, width, height, depth).
+
+.fi
+All procedure pointers must be set to some routine unless noted otherwise;
+a null pointer will have unfortunate consequences.
+
+Procedure routines will be indicated in the documentation by this convention:
+.nf
+
+ void pScreen->MyScreenRoutine(arg, arg, ...)
+
+.fi
+as opposed to a free routine, not in a data structure:
+.nf
+
+ void MyFreeRoutine(arg, arg, ...)
+
+.fi
+
+The attribute fields are mostly set by DIX; DDX should not modify them
+unless noted otherwise.
+
+.NH 1
+DIX LAYER
+.XS
+DIX LAYER
+.XE
+.LP
+The DIX layer is the machine and device independent part of X.
+The source should be common to all operating systems and devices.
+The port process should not include changes to this part, therefore internal interfaces to DIX
+modules are not discussed, except for public interfaces to the DDX and the OS layers.
+
+In the process of getting your server to work, if
+you think that DIX must be modified for purposes other than bug fixes,
+you may be doing something wrong.
+Keep looking for a more compatible solution.
+When the next release of the X server code is available,
+you should be able to just drop in the new DIX code and compile it.
+If you change DIX,
+you will have to remember what changes you made and will have
+to change the new sources before you can update to the new version.
+
+The heart of the DIX code is a loop called the dispatch loop.
+Each time the processor goes around the loop, it sends off accumulated input events
+from the input devices to the clients, and it processes requests from the clients.
+This loop is the most organized way for the server to
+process the asynchronous requests that
+it needs to process.
+Most of these operations are performed by OS and DDX routines that you must supply.
+
+.NH 1
+OS LAYER
+.XS
+OS LAYER
+.XE
+.LP
+This part of the source consists of a few routines that you have to rewrite
+for each operating system.
+These OS functions maintain the client connections and schedule work
+to be done for clients.
+They also provide an interface to font files,
+font name to file name translation, and
+low level memory management.
+
+.nf
+ void OsInit()
+.fi
+OsInit initializes your OS code, performing whatever tasks need to be done.
+Frequently there is not much to be done.
+The sample server implementation is in Xserver/os/osinit.c.
+
+.NH 2
+Scheduling and Request Delivery
+.XS
+Scheduling and Request Delivery
+.XE
+.LP
+The main dispatch loop in DIX creates the illusion of multitasking between
+different windows, while the server is itself but a single process.
+The dispatch loop breaks up the work for each client into small digestible parts.
+Some parts are requests from a client, such as individual graphic commands.
+Some parts are events delivered to the client, such as keystrokes from the user.
+The processing of events and requests for different
+clients can be interleaved with one another so true multitasking
+is not needed in the server.
+
+You must supply some of the pieces for proper scheduling between clients.
+.nf
+
+ int WaitForSomething(pClientReady)
+ int *pClientReady;
+.fi
+.LP
+WaitForSomething is the scheduler procedure you must write that will
+suspend your server process until something needs to be done.
+This call should
+make the server suspend until one or more of the following occurs:
+.IP \(bu 5
+There is an input event from the user or hardware (see SetInputCheck())
+.IP \(bu 5
+There are requests waiting from known clients, in which case
+you should return a count of clients stored in pClientReady
+.IP \(bu 5
+A new client tries to connect, in which case you should create the
+client and then continue waiting
+.LP
+Before WaitForSomething() computes the masks to pass to select, it needs to
+see if there is anything to do on the work queue; if so, it must call a DIX
+routine called ProcessWorkQueue.
+.nf
+ extern WorkQueuePtr workQueue;
+
+ if (workQueue)
+ ProcessWorkQueue ();
+.fi
+.LP
+If WaitForSomething() decides it is about to do something that might block
+(in the sample server, before it calls select()) it must call a DIX
+routine called BlockHandler().
+.nf
+
+ void BlockHandler(pTimeout, pReadmask)
+ pointer pTimeout;
+ pointer pReadmask;
+.fi
+The types of the arguments are for agreement between the OS and DDX
+implementations, but the pTimeout is a pointer to the information
+determining how long the block is allowed to last, and the
+pReadmask is a pointer to the information describing the descriptors
+that will be waited on.
+.LP
+In the sample server, pTimeout is a struct timeval **, and pReadmask is
+the address of the select() mask for reading.
+.LP
+The DIX BlockHandler() iterates through the Screens, for each one calling
+its BlockHandler. A BlockHandler is declared thus:
+.nf
+
+ void xxxBlockHandler(nscreen, pbdata, pptv, pReadmask)
+ int nscreen;
+ pointer pbdata;
+ struct timeval ** pptv;
+ pointer pReadmask;
+.fi
+The arguments are the index of the Screen, the blockData field
+of the Screen, and the arguments to the DIX BlockHandler().
+.LP
+Immediately after WaitForSomething returns from the
+block, even if it didn't actually block, it must call the DIX routine
+WakeupHandler().
+.nf
+
+ void WakeupHandler(result, pReadmask)
+ int result;
+ pointer pReadmask;
+.fi
+.LP
+Once again, the types are not specified by DIX. The result is the
+success indicator for the thing that (may have) blocked,
+and the pReadmask is a mask of the descriptors that came active.
+In the sample server, result is the result from select(), and pReadmask is
+the address of the select() mask for reading.
+.LP
+The DIX WakeupHandler() calls each Screen's
+WakeupHandler. A WakeupHandler is declared thus:
+.nf
+
+ void xxxWakeupHandler(nscreen, pbdata, err, pReadmask)
+ int nscreen;
+ pointer pbdata;
+ unsigned long result;
+ pointer pReadmask;
+.fi
+The arguments are the index of the Screen, the blockData field
+of the Screen, and the arguments to the DIX WakeupHandler().
+.LP
+In addition to the per-screen BlockHandlers, any module may register
+block and wakeup handlers (only together) using:
+.nf
+
+ Bool RegisterBlockAndWakeupHandlers (blockHandler, wakeupHandler, blockData)
+ BlockHandlerProcPtr blockHandler;
+ WakeupHandlerProcPtr wakeupHandler;
+ pointer blockData;
+.fi
+A FALSE return code indicates that the registration failed for lack of
+memory. To remove a registered Block handler at other than server reset time
+(when they are all removed automatically), use:
+.nf
+
+ RemoveBlockAndWakeupHandlers (blockHandler, wakeupHandler, blockData)
+ BlockHandlerProcPtr blockHandler;
+ WakeupHandlerProcPtr wakeupHandler;
+ pointer blockData;
+.fi
+All three arguments must match the values passed to
+RegisterBlockAndWakeupHandlers.
+.LP
+These registered block handlers are called after the per-screen handlers:
+.nf
+
+ void (*BlockHandler) (blockData, pptv, pReadmask)
+ pointer blockData;
+ OSTimePtr pptv;
+ pointer pReadmask;
+.fi
+.LP
+Any wakeup handlers registered with RegisterBlockAndWakeupHandlers will
+be called before the Screen handlers:
+.nf
+
+ void (*WakeupHandler) (blockData, err, pReadmask)
+ pointer blockData;
+ int err;
+ pointer pReadmask;
+.fi
+.LP
+The WaitForSomething on the sample server also has a built
+in screen saver that darkens the screen if no input happens for a period of time.
+The sample server implementation is in Xserver/os/WaitFor.c.
+.LP
+Note that WaitForSomething() may be called when you already have several
+outstanding things (events, requests, or new clients) queued up.
+For instance, your server may have just done a large graphics request,
+and it may have been a long time since WaitForSomething() was last called.
+If many clients have lots of requests queued up, DIX will only service
+some of them for a given client
+before going on to the next client (see isItTimeToYield, below).
+Therefore, WaitForSomething() will have to report that these same clients
+still have requests queued up the next time around.
+.LP
+An implementation should return information on as
+many outstanding things as it can.
+For instance, if your implementation always checks for client data first and does not
+report any input events until there is no client data left,
+your mouse and keyboard might get locked out by an application that constantly
+barrages the server with graphics drawing requests.
+.LP
+A list of indexes (client->index) for clients with data ready to be read or
+processed should be returned in pClientReady, and the count of indexes
+returned as the result value of the call.
+These are not clients that have full requests ready, but any clients who have
+any data ready to be read or processed.
+The DIX dispatcher
+will process requests from each client in turn by calling
+ReadRequestFromClient(), below.
+.LP
+WaitForSomething() must create new clients as they are requested (by
+whatever mechanism at the transport level). A new client is created
+by calling the DIX routine:
+.nf
+
+ ClientPtr NextAvailableClient(ospriv)
+ pointer ospriv;
+.fi
+This routine returns NULL if a new client cannot be allocated (e.g. maximum
+number of clients reached). The ospriv argument will be stored into the OS
+private field (pClient->osPrivate), to store OS private information about the
+client. In the sample server, the osPrivate field contains the
+number of the socket for this client. See also "New Client Connections."
+NextAvailableClient() will call InsertFakeRequest(), so you must be
+prepared for this.
+.LP
+If there are outstanding input events,
+you should make sure that the two SetInputCheck() locations are unequal.
+The DIX dispatcher will call your implementation of ProcessInputEvents()
+until the SetInputCheck() locations are equal.
+.LP
+The sample server contains an implementation of WaitForSomething().
+The
+following two routines indicate to WaitForSomething() what devices should
+be waited for. fd is an OS dependent type; in the sample server
+it is an open file descriptor.
+.nf
+
+ int AddEnabledDevice(fd)
+ int fd;
+
+ int RemoveEnabledDevice(fd)
+ int fd;
+.fi
+These two routines are
+usually called by DDX from the initialize cases of the
+Input Procedures that are stored in the DeviceRec (the
+routine passed to AddInputDevice()).
+The sample server implementation of AddEnabledDevice
+and RemoveEnabledDevice are in Xserver/os/connection.c.
+.NH 2
+New Client Connections
+.XS
+New Client Connections
+.XE
+.LP
+The process whereby a new client-server connection starts up is
+very dependent upon what your byte stream mechanism.
+This section describes byte stream initiation using examples from the TCP/IP
+implementation on the sample server.
+.LP
+The first thing that happens is a client initiates a connection with the server.
+How a client knows to do this depends upon your network facilities and the
+Xlib implementation.
+In a typical scenario, a user named Fred
+on his X workstation is logged onto a Cray
+supercomputer running a command shell in an X window. Fred can type shell
+commands and have the Cray respond as though the X server were a dumb terminal.
+Fred types in a command to run an X client application that was linked with Xlib.
+Xlib looks at the shell environment variable DISPLAY, which has the
+value "fredsbittube:0.0."
+The host name of Fred's workstation is "fredsbittube," and the 0s are
+for multiple screens and multiple X server processes.
+(Precisely what
+happens on your system depends upon how X and Xlib are implemented.)
+.LP
+The client application calls a TCP routine on the
+Cray to open a TCP connection for X
+to communicate with the network node "fredsbittube."
+The TCP software on the Cray does this by looking up the TCP
+address of "fredsbittube" and sending an open request to TCP port 6000
+on fredsbittube.
+.LP
+All X servers on TCP listen for new clients on port 6000 by default;
+this is known as a "well-known port" in IP terminology.
+.LP
+The server receives this request from its port 6000
+and checks where it came from to see if it is on the server's list
+of "trustworthy" hosts to talk to.
+Then, it opens another port for communications with the client.
+This is the byte stream that all X communications will go over.
+.LP
+Actually, it is a bit more complicated than that.
+Each X server process running on the host machine is called a "display."
+Each display can have more than one screen that it manages.
+"corporatehydra:3.2" represents screen 2 on display 3 on
+the multi-screened network node corporatehydra.
+The open request would be sent on well-known port number 6003.
+.LP
+Once the byte stream is set up, what goes on does not depend very much
+upon whether or not it is TCP.
+The client sends an xConnClientPrefix struct (see Xproto.h) that has the
+version numbers for the version of Xlib it is running, some byte-ordering information,
+and two character strings used for authorization.
+If the server does not like the authorization strings
+or the version numbers do not match within the rules,
+or if anything else is wrong, it sends a failure
+response with a reason string.
+.LP
+If the information never comes, or comes much too slowly, the connection
+should be broken off. You must implement the connection timeout. The
+sample server implements this by keeping a timestamp for each still-connecting
+client and, each time just before it attempts to accept new connections, it
+closes any connection that are too old.
+The connection timeout can be set from the command line.
+.LP
+You must implement whatever authorization schemes you want to support.
+The sample server on the distribution tape supports a simple authorization
+scheme. The only interface seen by DIX is:
+.nf
+
+ char *
+ ClientAuthorized(client, proto_n, auth_proto, string_n, auth_string)
+ ClientPtr client;
+ unsigned int proto_n;
+ char *auth_proto;
+ unsigned int string_n;
+ char *auth_string;
+.fi
+.LP
+DIX will only call this once per client, once it has read the full initial
+connection data from the client. If the connection should be
+accepted ClientAuthorized() should return NULL, and otherwise should
+return an error message string.
+.LP
+Accepting new connections happens internally to WaitForSomething().
+WaitForSomething() must call the DIX routine NextAvailableClient()
+to create a client object.
+Processing of the initial connection data will be handled by DIX.
+Your OS layer must be able to map from a client
+to whatever information your OS code needs to communicate
+on the given byte stream to the client.
+DIX uses this ClientPtr to refer to
+the client from now on. The sample server uses the osPrivate field in
+the ClientPtr to store the file descriptor for the socket, the
+input and output buffers, and authorization information.
+.LP
+To initialize the methods you choose to allow clients to connect to
+your server, main() calls the routine
+.nf
+
+ void CreateWellKnownSockets()
+.fi
+.LP
+This routine is called only once, and not called when the server
+is reset. To recreate any sockets during server resets, the following
+routine is called from the main loop:
+.nf
+
+ void ResetWellKnownSockets()
+.fi
+Sample implementations of both of these routines are found in
+Xserver/os/connection.c.
+.LP
+For more details, see the section called "Connection Setup" in the X protocol specification.
+
+.NH 2
+Reading Data from Clients
+.XS
+Reading Data from Clients
+.XE
+.LP
+Requests from the client are read in as a byte stream by the OS layer.
+They may be in the form of several blocks of bytes delivered in sequence; requests may
+be broken up over block boundaries or there may be many requests per block.
+Each request carries with it length information.
+It is the responsibility of the following routine to break it up into request blocks.
+.nf
+
+ int ReadRequestFromClient(who)
+ ClientPtr who;
+.fi
+.LP
+You must write
+the routine ReadRequestFromClient() to get one request from the byte stream
+belonging to client "who."
+You must swap the third and fourth bytes (the second 16-bit word) according to the
+byte-swap rules of
+the protocol to determine the length of the
+request.
+This length is measured in 32-bit words, not in bytes. Therefore, the
+theoretical maximum request is 256K.
+(However, the maximum length allowed is dependent upon the server's input
+buffer. This size is sent to the client upon connection. The maximum
+size is the constant MAX_REQUEST_SIZE in Xserver/include/os.h)
+The rest of the request you return is
+assumed NOT to be correctly swapped for internal
+use, because that is the responsibility of DIX.
+.LP
+The 'who' argument is the ClientPtr returned from WaitForSomething.
+The return value indicating status should be set to the (positive) byte count if the read is successful,
+0 if the read was blocked, or a negative error code if an error happened.
+.LP
+You must then store a pointer to
+the bytes of the request in the client request buffer field;
+who->requestBuffer. This can simply be a pointer into your buffer;
+DIX may modify it in place but will not otherwise cause damage.
+Of course, the request must be contiguous; you must
+shuffle it around in your buffers if not.
+
+The sample server implementation is in Xserver/os/io.c.
+
+.XS
+Inserting Data for Clients
+.XE
+.LP
+DIX can insert data into the client stream, and can cause a "replay" of
+the current request.
+.nf
+
+ Bool InsertFakeRequest(client, data, count)
+ ClientPtr client;
+ char *data;
+ int count;
+
+ int ResetCurrentRequest(client)
+ ClientPtr client;
+.fi
+.LP
+InsertFakeRequest() must insert the specified number of bytes of data
+into the head of the input buffer for the client. This may be a
+complete request, or it might be a partial request. For example,
+NextAvailableCient() will insert a partial request in order to read
+the initial connection data sent by the client. The routine returns FALSE
+if memory could not be allocated. ResetCurrentRequest()
+should "back up" the input buffer so that the currently executing request
+will be reexecuted. DIX may have altered some values (e.g. the overall
+request length), so you must recheck to see if you still have a complete
+request. ResetCurrentRequest() should always cause a yield (isItTimeToYield).
+
+.NH 2
+Sending Events, Errors And Replies To Clients
+.XS
+Sending Events, Errors And Replies To Clients
+.XE
+.LP
+.nf
+
+ int WriteToClient(who, n, buf)
+ ClientPtr who;
+ int n;
+ char *buf;
+.fi
+WriteToClient should write n bytes starting at buf to the
+ClientPtr "who".
+It returns the number of bytes written, but for simplicity,
+the number returned must be either the same value as the number
+requested, or -1, signaling an error.
+The sample server implementation is in Xserver/os/io.c.
+.LP
+.nf
+ void SendErrorToClient(client, majorCode, minorCode, resId, errorCode)
+ ClientPtr client;
+ unsigned int majorCode;
+ unsigned int minorCode;
+ XID resId;
+ int errorCode;
+.fi
+SendErrorToClient can be used to send errors back to clients,
+although in most cases your request function should simply return
+the error code, having set client->errorValue to the appropriate
+error value to return to the client, and DIX will call this
+function with the correct opcodes for you.
+.LP
+.nf
+
+ void FlushAllOutput()
+
+ void FlushIfCriticalOutputPending()
+
+ void SetCriticalOutputPending()
+.fi
+These three routines may be implemented to support buffered or delayed
+writes to clients, but at the very least, the stubs must exist.
+FlushAllOutput() unconditionally flushes all output to clients;
+FlushIfCriticalOutputPending() flushes output only if
+SetCriticalOutputPending() has be called since the last time output
+was flushed.
+The sample server implementation is in Xserver/os/io.c and
+actually ignores requests to flush output on a per-client basis
+if it knows that there
+are requests in that client's input queue.
+.NH 2
+Font Support
+.XS
+Font Support
+.XE
+.LP
+In the sample server, fonts are encoded in disk files or fetched from the
+font server.
+For disk fonts, there is one file per font, with a file name like
+"fixed.pcf". Font server fonts are read over the network using the
+X Font Server Protocol. The disk directories containing disk fonts and
+the names of the font servers are listed together in the current "font path."
+
+In principle, you can put all your fonts in ROM or in RAM in your server.
+You can put them all in one library file on disk.
+You could generate them on the fly from stroke descriptions. By placing the
+appropriate code in the Font Library, you will automatically export fonts in
+that format both through the X server and the Font server.
+
+With the incorporation of font-server based fonts and the Speedo donation
+from Bitstream, the font interfaces have been moved into a separate
+library, now called the Font Library (../fonts/lib). These routines are
+shared between the X server and the Font server, so instead of this document
+specifying what you must implement, simply refer to the font
+library interface specification for the details. All of the interface code to the Font
+library is contained in dix/dixfonts.c
+.NH 2
+Memory Management
+.XS
+Memory Management
+.XE
+.LP
+Memory management is based on functions in the C runtime library.
+Xalloc(), Xrealloc(), and Xfree() work just like malloc(), realloc(),
+and free(), except that you can pass a null pointer to Xrealloc() to
+have it allocate anew or pass a null pointer to Xfree() and nothing
+will happen. The versions in the sample server also do some checking
+that is useful for debugging. Consult a C runtime library reference
+manual for more details.
+
+The macros ALLOCATE_LOCAL and DEALLOCATE_LOCAL are provided in
+Xserver/include/os.h. These are useful if your compiler supports
+alloca() (or some method of allocating memory from the stack); and are
+defined appropriately on systems which support it.
+
+Treat memory allocation carefully in your implementation. Memory
+leaks can be very hard to find and are frustrating to a user. An X
+server could be running for days or weeks without being reset, just
+like a regular terminal. If you leak a few dozen k per day, that will
+add up and will cause problems for users that leave their workstations
+on.
+
+.NH 2
+Client Scheduling
+.XS
+Client Scheduling
+.XE
+.LP
+The X server
+has the ability to schedule clients much like an operating system would,
+suspending and restarting them without regard for the state of their input
+buffers. This functionality allows the X server to suspend one client and
+continue processing requests from other clients while waiting for a
+long-term network activity (like loading a font) before continuing with the
+first client.
+.nf
+ Bool isItTimeToYield;
+.fi
+.LP
+isItTimeToYield is a global variable you can set
+if you want to tell
+DIX to end the client's "time slice" and start paying attention to the next client.
+After the current request is finished, DIX will move to the next client.
+.LP
+In the sample
+server, ReadRequestFromClient() sets isItTimeToYield after
+10 requests packets in a row are read from the same client.
+.LP
+This scheduling algorithm can have a serious effect upon performance when two
+clients are drawing into their windows simultaneously.
+If it allows one client to run until its request
+queue is empty by ignoring isItTimeToYield, the client's queue may
+in fact never empty and other clients will be blocked out.
+On the other hand, if it switchs between different clients too quickly,
+performance may suffer due to too much switching between contexts.
+For example, if a graphics processor needs to be set up with drawing modes
+before drawing, and two different clients are drawing with
+different modes into two different windows, you may
+switch your graphics processor modes so often that performance is impacted.
+.LP
+See the Strategies document for
+heuristics on setting isItTimeToYield.
+.LP
+The following functions provide the ability to suspend request
+processing on a particular client, resuming it at some later time:
+.nf
+
+ int IgnoreClient (who)
+ ClientPtr who;
+
+ int AttendClient (who)
+ ClientPtr who;
+.fi
+Ignore client is responsible for pretending that the given client doesn't
+exist. WaitForSomething should not return this client as ready for reading
+and should not return if only this client is ready. AttendClient undoes
+whatever IgnoreClient did, setting it up for input again.
+.LP
+Three functions support "process control" for X clients:
+.nf
+
+ Bool ClientSleep (client, function, closure)
+ ClientPtr client;
+ Bool (*function)();
+ pointer closure;
+
+.fi
+.LP
+This suspends the current client (the calling routine is responsible for
+making its way back to Dispatch()). No more X requests will be processed
+for this client until ClientWakeup is called.
+.nf
+
+ Bool ClientSignal (client)
+ ClientPtr client;
+
+.fi
+.LP
+This function causes a call to the (*function) parameter passed to
+ClientSleep to be queued on the work queue. This does not automatically
+"wakeup" the client, but the function called is free to do so by calling:
+.nf
+
+ ClientWakeup (client)
+ ClientPtr client;
+
+.fi
+.LP
+This re-enables X request processing for the specified client.
+.NH 2
+Other OS Functions
+.XS
+Other OS Functions
+.XE
+.LP
+.nf
+ void
+ ErrorF(char *f, ...)
+
+ void
+ FatalError(char *f, ...)
+
+ void
+ Error(str)
+ char *str;
+.fi
+.LP
+You should write these three routines to provide for diagnostic output
+from the dix and ddx layers, although implementing them to produce no
+output will not affect the correctness of your server. ErrorF() and
+FatalError() take a printf() type of format specification in the first
+argument and an implementation-dependent number of arguments following
+that. Normally, the formats passed to ErrorF() and FatalError()
+should be terminated with a newline. Error() provides an os interface
+for printing out the string passed as an argument followed by a
+meaningful explanation of the last system error. Normally the string
+does not contain a newline, and it is only called by the ddx layer.
+In the sample implementation, Error() uses the perror() function.
+.LP
+After printing the message arguments, FatalError() must be implemented
+such that the server will call AbortDDX() to give the ddx layer
+a chance to reset the hardware, and then
+terminate the server; it must not return.
+.LP
+The sample server implementation for these routines
+is in Xserver/os/util.c.
+.NH 2
+Idiom Support
+.XS
+Idiom Support
+.XE
+.LP
+The DBE specification introduces the notion of idioms, which are
+groups of X requests which can be executed more efficiently when taken
+as a whole compared to being performed individually and sequentially.
+This following server internal support to allows DBE
+implementations, as well as other parts of the server,
+to do idiom processing.
+.LP
+.nf
+
+ xReqPtr PeekNextRequest(xReqPtr req, ClientPtr client, Bool readmore)
+.fi
+.LP
+If req is NULL, the return value will be a pointer to the start of the
+complete request that follows the one currently being executed for the
+client. If req is not NULL, the function assumes that req is a
+pointer to a request in the client's request buffer, and the return
+value will be a pointer to the the start of the complete request that
+follows req. If the complete request is not available, the function
+returns NULL; pointers to partial requests will never be returned. If
+(and only if) readmore is TRUE, PeekNextRequest should try to read an
+additional request from the client if one is not already available in
+the client's request buffer. If PeekNextRequest reads more data into
+the request buffer, it should not move or change the existing data.
+.LP
+.nf
+
+ void SkipRequests(xReqPtr req, ClientPtr client, int numskipped)
+.fi
+.LP
+The requests for the client up to and including the one specified by
+req will be skipped. numskipped must be the number of requests being
+skipped. Normal request processing will resume with the request that
+follows req. The caller must not have modified the contents of the
+request buffer in any way (e.g., by doing byte swapping in place).
+.LP
+Additionally, two macros in os.h operate on the xReq
+pointer returned by PeekNextRequest:
+.LP
+.nf
+
+ int ReqLen(xReqPtr req, ClientPtr client)
+.fi
+.LP
+The value of ReqLen is the request length in bytes of the given xReq.
+.LP
+.nf
+
+ otherReqTypePtr CastxReq(xReq *req, otherReqTypePtr)
+.fi
+.LP
+The value of CastxReq is the conversion of the given request pointer
+to an otherReqTypePtr (which should be a pointer to a protocol
+structure type). Only those fields which come after the length field
+of otherReqType may be accessed via the returned pointer.
+.LP
+Thus the first two fields of a request, reqType and data, can be
+accessed directly using the xReq * returned by PeekNextRequest. The
+next field, the length, can be accessed with ReqLen. Fields beyond
+that can be accessed with CastxReq. This complexity was necessary
+because of the reencoding of core protocol that can happen due to the
+BigRequests extension.
+.NH 1
+DDX LAYER
+.XS
+DDX LAYER
+.XE
+.LP
+This section describes the
+interface between DIX and DDX.
+While there may be an OS-dependent driver interface between DDX
+and the physical device, that interface is left to the DDX
+implementor and is not specified here.
+.LP
+The DDX layer does most of its work through procedures that are
+pointed to by different structs.
+As previously described, the behavior of these resources is largely determined by
+these procedure pointers.
+Most of these routines are for graphic display on the screen or support functions thereof.
+The rest are for user input from input devices.
+
+.NH 2
+INPUT
+.XS
+INPUT
+.XE
+.LP
+In this document "input" refers to input from the user,
+such as mouse, keyboard, and
+bar code readers.
+X input devices are of several types: keyboard, pointing device, and
+many others. The core server has support for extension devices as
+described by the X Input Extension document; the interfaces used by
+that extension are described elsewhere. The core devices are actually
+implemented as two collections of devices, the mouse is a ButtonDevice,
+a ValuatorDevice and a PtrFeedbackDevice while the keyboard is a KeyDevice,
+a FocusDevice and a KbdFeedbackDevice. Each part implements a portion of
+the functionality of the device. This abstraction is hidden from view for
+core devices by DIX.
+
+You, the DDX programmer, are
+responsible for some of the routines in this section.
+Others are DIX routines that you should call to do the things you need to do in these DDX routines.
+Pay attention to which is which.
+
+.NH 3
+Input Device Data Structures
+.XS
+Input Device Data Structures
+.XE
+.LP
+DIX keeps a global directory of devices in a central data structure
+called InputInfo.
+For each device there is a device structure called a DeviceRec.
+DIX can locate any DeviceRec through InputInfo.
+In addition, it has a special pointer to identify the main pointing device
+and a special pointer to identify the main keyboard.
+.LP
+The DeviceRec (Xserver/include/input.h) is a device-independent
+structure that contains the state of an input device.
+A DevicePtr is simply a pointer to a DeviceRec.
+.LP
+An xEvent describes an event the server reports to a client.
+Defined in Xproto.h, it is a huge struct of union of structs that have fields for
+all kinds of events.
+All of the variants overlap, so that the struct is actually very small in memory.
+
+.NH 3
+Processing Events
+.XS
+Processing Events
+.XE
+.LP
+The main DDX input interface is the following routine:
+.nf
+
+ void ProcessInputEvents()
+.fi
+You must write this routine to deliver input events from the user.
+DIX calls it when input is pending (see next section), and possibly
+even when it is not.
+You should write it to get events from each device and deliver
+the events to DIX.
+To deliver the events to DIX, DDX should call the following
+routine:
+.nf
+
+ void DevicePtr->processInputProc(pEvent, device, count)
+ xEventPtr events;
+ DeviceIntPtr device;
+ int count;
+.fi
+This is the "input proc" for the device, a DIX procedure.
+DIX will fill in this procedure pointer to one of its own routines by
+the time ProcessInputEvents() is called the first time.
+Call this input proc routine as many times as needed to
+deliver as many events as should be delivered.
+DIX will buffer them up and send them out as needed. Count is set
+to the number of event records which make up one atomic device event and
+is always 1 for the core devices (see the X Input Extension for descriptions
+of devices which may use count > 1).
+
+For example, your ProcessInputEvents() routine might check the mouse and the
+keyboard.
+If the keyboard had several keystrokes queued up, it could just call
+the keyboard's processInputProc as many times as needed to flush its internal queue.
+
+event is an xEvent struct you pass to the input proc.
+When the input proc returns, it is finished with the event rec, and you can fill
+in new values and call the input proc again with it.
+
+You should deliver the events in the same order that they were generated.
+
+For keyboard and pointing devices the xEvent variant should be keyButtonPointer.
+Fill in the following fields in the xEvent record:
+.nf
+
+ type is one of the following: KeyPress, KeyRelease, ButtonPress,
+ ButtonRelease, or MotionNotify
+ detail for KeyPress or KeyRelease fields, this should be the
+ key number (not the ASCII code); otherwise unused
+ time is the time that the event happened (32-bits, in milliseconds, arbitrary origin)
+ rootX is the x coordinate of cursor
+ rootY is the y coordinate of cursor
+
+.fi
+The rest of the fields are filled in by DIX.
+.LP
+The time stamp is maintained by your code in the DDX layer, and it is your responsibility to
+stamp all events correctly.
+.LP
+The x and y coordinates of the pointing device and the time must be filled in for all event types
+including keyboard events.
+.LP
+The pointing device must report all button press and release events.
+In addition, it should report a MotionNotify event every time it gets called
+if the pointing device has moved since the last notify.
+Intermediate pointing device moves are stored in a special GetMotionEvents buffer,
+because most client programs are not interested in them.
+
+There are quite a collection of sample implementations of this routine,
+one for each supported device.
+
+.NH 3
+Telling DIX When Input is Pending
+.XS
+Telling DIX When Input is Pending
+.XE
+.LP
+In the server's dispatch loop, DIX checks to see
+if there is any device input pending whenever WaitForSomething() returns.
+If the check says that input is pending, DIX calls the
+DDX routine ProcessInputEvents().
+.LP
+This check for pending input must be very quick; a procedure call
+is too slow.
+The code that does the check is a hardwired IF
+statement in DIX code that simply compares the values
+pointed to by two pointers.
+If the values are different, then it assumes that input is pending and
+ProcessInputEvents() is called by DIX.
+.LP
+You must pass pointers to DIX to tell it what values to compare.
+The following procedure
+is used to set these pointers:
+.nf
+
+ void SetInputCheck(p1, p2)
+ long *p1, *p2;
+.fi
+.LP
+You should call it sometime during initialization to indicate to DIX the
+correct locations to check.
+You should
+pay special attention to the size of what they actually point to,
+because the locations are assumed to be longs.
+
+These two pointers are initialized by DIX
+to point to arbitrary values that
+are different.
+In other words, if you forget to call this routine during initialization,
+the worst thing that will happen is that
+ProcessInputEvents will be called when
+there are no events to process.
+
+p1 and p2 might
+point at the head and tail of some shared
+memory queue.
+Another use would be to have one point at a constant 0, with the
+other pointing at some mask containing 1s
+for each input device that has
+something pending.
+
+The DDX layer of the sample server calls SetInputCheck()
+once when the
+server's private internal queue is initialized.
+It passes pointers to the queue's head and tail. See Xserver/mi/mieq.c.
+
+.nf
+ int TimeSinceLastInputEvent()
+.fi
+DDX must time stamp all hardware input
+events. But DIX sometimes needs to know the
+time and the OS layer needs to know the time since the last hardware
+input event in
+order for the screen saver to work. TimeSinceLastInputEvent() returns
+the this time in milliseconds.
+
+.NH 3
+Controlling Input Devices
+.XS
+Controlling Input Devices
+.XE
+.LP
+You must write four routines to do various device-specific
+things with the keyboard and pointing device.
+They can have any name you wish because
+you pass the procedure pointers to DIX routines.
+
+.nf
+
+ int pInternalDevice->valuator->GetMotionProc(pdevice, coords, start, stop, pScreen)
+ DeviceIntPtr pdevice;
+ xTimecoord * coords;
+ unsigned long start;
+ unsigned long stop;
+ ScreenPtr pScreen;
+.fi
+You write this DDX routine to fill in coords with all the motion
+events that have times (32-bit count of milliseconds) between time
+start and time stop. It should return the number of motion events
+returned. If there is no motion events support, this routine should
+do nothing and return zero. The maximum number of coords to return is
+set in InitPointerDeviceStruct(), below.
+
+When the user drags the pointing device, the cursor position
+theoretically sweeps through an infinite number of points. Normally,
+a client that is concerned with points other than the starting and
+ending points will receive a pointer-move event only as often as the
+server generates them. (Move events do not queue up; each new one
+replaces the last in the queue.) A server, if desired, can implement
+a scheme to save these intermediate events in a motion buffer. A
+client application, like a paint program, may then request that these
+events be delivered to it through the GetMotionProc routine.
+.nf
+
+ void pInternalDevice->bell->BellProc(percent, pDevice, ctrl, unknown)
+ int percent;
+ DeviceIntPtr pDevice;
+ pointer ctrl;
+ int class;
+.fi
+You need to write this routine to ring the bell on the keyboard.
+loud is a number from 0 to 100, with 100 being the loudest.
+Class is either BellFeedbackClass or KbdFeedbackClass (from XI.h).
+.nf
+
+ void pInternalDevice->somedevice->CtrlProc(device, ctrl)
+ DevicePtr device;
+ SomethingCtrl *ctrl;
+
+.fi
+.LP
+You write two versions of this procedure, one for the keyboard and one for the pointing device.
+DIX calls it to inform DDX when a client has requested changes in the current
+settings for the particular device.
+For a keyboard, this might be the repeat threshold and rate.
+For a pointing device, this might be a scaling factor (coarse or fine) for position reporting.
+See input.h for the ctrl structures.
+
+.NH 3
+Input Initialization
+.XS
+Input Initialization
+.XE
+.LP
+Input initialization is a bit complicated.
+It all starts with InitInput(), a routine that you write to call
+AddInputDevice() twice
+(once for pointing device and once for keyboard.)
+You also want to call RegisterKeyboardDevice() and RegisterPointerDevice()
+on them.
+
+When you Add the devices, a routine you supply for each device
+gets called to initialize them.
+Your individual initialize routines must call InitKeyboardDeviceStruct()
+or InitPointerDeviceStruct(), depending upon which it is.
+In other words, you indicate twice that the keyboard is the keyboard and
+the pointer is the pointer.
+.nf
+
+ void InitInput(argc, argv)
+ int argc;
+ char **argv;
+.fi
+.LP
+InitInput is a DDX routine you must write to initialize the
+input subsystem in DDX.
+It must call AddInputDevice() for each device that might generate events.
+In addition, you must register the main keyboard and pointing devices by
+calling RegisterPointerDevice() and RegisterKeyboardDevice().
+.nf
+
+ DevicePtr AddInputDevice(deviceProc, autoStart)
+ DeviceProc deviceProc;
+ Bool autoStart;
+.fi
+.LP
+AddInputDevice is a DIX routine you call to create a device object.
+deviceProc is a DDX routine that is called by DIX to do various operations.
+AutoStart should be TRUE for devices that need to be turned on at
+initialization time with a special call, as opposed to waiting for some
+client application to
+turn them on.
+This routine returns NULL if sufficient memory cannot be allocated to
+install the device.
+
+Note also that except for the main keyboard and pointing device,
+an extension is needed to provide for a client interface to a device.
+.nf
+
+ void RegisterPointerDevice(device)
+ DevicePtr device;
+.fi
+.LP
+RegisterPointerDevice is a DIX routine that your DDX code calls that
+makes that device the main pointing device.
+This routine is called once upon initialization and cannot be called again.
+.nf
+
+ void RegisterKeyboardDevice(device)
+ DevicePtr device;
+.fi
+.LP
+RegisterKeyboardDevice makes the given device the main keyboard.
+This routine is called once upon initialization and cannot be called again.
+
+The following DIX
+procedures return the specified DevicePtr. They may or may not be useful
+to DDX implementors.
+.nf
+
+ DevicePtr LookupKeyboardDevice()
+.fi
+.LP
+LookupKeyboardDevice returns pointer for current main keyboard device.
+.nf
+
+ DevicePtr LookupPointerDevice()
+.fi
+.LP
+LookupPointerDevice returns pointer for current main pointing device.
+
+.LP
+A DeviceProc (the kind passed to AddInputDevice()) in the following form:
+.nf
+
+ Bool pInternalDevice->DeviceProc(device, action);
+ DeviceIntPtr device;
+ int action;
+.fi
+.LP
+You must write a DeviceProc for each device.
+device points to the device record.
+action tells what action to take;
+it will be one of these defined constants (defined in input.h):
+.IP \(bu 5
+DEVICE_INIT -
+At DEVICE_INIT time, the device should initialize itself by calling
+InitPointerDeviceStruct(), InitKeyboardDeviceStruct(), or a similar
+routine (see below)
+and "opening" the device if necessary.
+If you return a non-zero (i.e., != Success) value from the DEVICE_INIT
+call, that device will be considered unavailable. If either the main keyboard
+or main pointing device cannot be initialized, the DIX code will refuse
+to continue booting up.
+.IP \(bu 5
+DEVICE_ON - If the DeviceProc is called with DEVICE_ON, then it is
+allowed to start
+putting events into the client stream by calling through the ProcessInputProc
+in the device.
+.IP \(bu 5
+DEVICE_OFF - If the DeviceProc is called with DEVICE_OFF, no further
+events from that
+device should be given to the DIX layer.
+The device will appear to be dead to the user.
+.IP \(bu 5
+DEVICE_CLOSE - At DEVICE_CLOSE (terminate or reset) time, the device should
+be totally closed down.
+.nf
+
+ void InitPointerDeviceStruct(device, map, mapLength,
+ GetMotionEvents, ControlProc, numMotionEvents)
+ DevicePtr device;
+ CARD8 *map;
+ int mapLength;
+ ValuatorMotionProcPtr ControlProc;
+ PtrCtrlProcPtr GetMotionEvents;
+ int numMotionEvents;
+.fi
+InitPointerDeviceStruct is a DIX routine you call at DEVICE_INIT time to declare
+some operating routines and data structures for a pointing device.
+map and mapLength are as described in the X Window
+System protocol specification.
+ControlProc and GetMotionEvents are DDX routines, see above.
+
+numMotionEvents is for the motion-buffer-size for the GetMotionEvents
+request.
+A typical length for a motion buffer would be 100 events.
+A server that does not implement this capability should set
+numMotionEvents to zero.
+.nf
+
+ void InitKeyboardDeviceStruct(device, pKeySyms, pModifiers, Bell, ControlProc)
+ DevicePtr device;
+ KeySymsPtr pKeySyms;
+ CARD8 *pModifiers;
+ BellProcPtr Bell;
+ KbdCtrlProcPtr ControlProc;
+
+.fi
+You call this DIX routine when a keyboard device is initialized and
+its device procedure is called with
+DEVICE_INIT.
+The formats of the keysyms and modifier maps are defined in
+Xserver/include/input.h.
+They describe the layout of keys on the keyboards, and the glyphs
+associated with them. ( See the next section for information on
+setting up the modifier map and the keysym map.)
+ControlProc and Bell are DDX routines, see above.
+
+.NH 3
+Keyboard Mapping and Keycodes
+.XS
+Keyboard Mapping and Keycodes
+.XE
+.LP
+When you send a keyboard event, you send a report that a given key has
+either been pressed or has been released. There must be a keycode for
+each key that identifies the key; the keycode-to-key mapping can be
+any mapping you desire, because you specify the mapping in a table you
+set up for DIX. However, you are restricted by the protocol
+specification to keycode values in the range 8 to 255 inclusive.
+
+The keycode mapping information that you set up consists of the following:
+.IP \(bu 5
+A minimum and maximum keycode number
+.IP \(bu 5
+An array of sets of keysyms for each key, that is of length
+maxkeycode - minkeycode + 1.
+Each element of this array is a list of codes for symbols that are on that key.
+There is no limit to the number of symbols that can be on a key.
+.LP
+Once the map is set up, DIX keeps and
+maintains the client's changes to it.
+
+The X protocol defines standard names to indicate the symbol(s)
+printed on each keycap. (See X11/keysym.h)
+
+Legal modifier keys must generate both up and down transitions. When
+a client tries to change a modifier key (for instance, to make "A" the
+"Control" key), DIX calls the following routine, which should retuurn
+TRUE if the key can be used as a modifier on the given device:
+.nf
+
+ Bool LegalModifier(key, pDev)
+ unsigned int key;
+ DevicePtr pDev;
+.fi
+.NH 2
+Screens
+.XS
+Screens
+.XE
+.LP
+Different computer graphics
+displays have different capabilities.
+Some are simple monochrome
+frame buffers that are just lying
+there in memory, waiting to be written into.
+Others are color displays with many bits per pixel using some color lookup table.
+Still others have high-speed graphic processors that prefer to do all of the work
+themselves,
+including maintaining their own high-level, graphic data structures.
+
+.NH 3
+Screen Hardware Requirements
+.XS
+Screen Hardware Requirements
+.XE
+.LP
+The only requirement on screens is that you be able to both read
+and write locations in the frame buffer.
+All screens must have a depth of 32 or less (unless you use
+an X extension to allow a greater depth).
+All screens must fit into one of the classes listed in the section
+in this document on Visuals and Depths.
+.LP
+X uses the pixel as its fundamental unit of distance on the screen.
+Therefore, most programs will measure everything in pixels.
+.LP
+The sample server assumes square pixels.
+Serious WYSIWYG (what you see is what you get) applications for
+publishing and drawing programs will adjust for
+different screen resolutions automatically.
+Considerable work
+is involved in compensating for non-square pixels (a bit in the DDX
+code for the sample server but quite a bit in the client applications).
+
+.NH 3
+Data Structures
+.XS
+Data Structures
+.XE
+.LP
+X supports multiple screens that are connected to the same
+server. Therefore, all the per-screen information is bundled into one data
+structure of attributes and procedures, which is the ScreenRec (see
+Xserver/include/scrnintstr.h).
+The procedure entry points in a ScreenRec operate on
+regions, colormaps, cursors, and fonts, because these resources
+can differ in format from one screen to another.
+
+Windows are areas on the screen that can be drawn into by graphic
+routines. "Pixmaps" are off-screen graphic areas that can be drawn
+into. They are both considered drawables and are described in the
+section on Drawables. All graphic operations work on drawables, and
+operations are available to copy patches from one drawable to another.
+
+The pixel image data in all drawables is in a format that is private
+to DDX. In fact, each instance of a drawable is associated with a
+given screen. Presumably, the pixel image data for pixmaps is chosen
+to be conveniently understood by the hardware. All screens in a
+single server must be able to handle all pixmaps depths declared in
+the connection setup information.
+.LP
+Pixmap images are transferred to the server in one of two ways:
+XYPixmap or ZPimap. XYPixmaps are a series of bitmaps, one for each
+bit plane of the image, using the bitmap padding rules from the
+connection setup. ZPixmaps are a series of bits, nibbles, bytes or
+words, one for each pixel, using the format rules (padding and so on)
+for the appropriate depth.
+.LP
+All screens in a given server must agree on a set of pixmap image
+formats (PixmapFormat) to support (depth, number of bits per pixel,
+etc.).
+.LP
+There is no color interpretation of bits in the pixmap. Pixmaps
+do not contain pixel values. The interpretation is made only when
+the bits are transferred onto the screen.
+.LP
+The screenInfo structure (in scrnintstr.h) is a global data structure
+that has a pointer to an array of ScreenRecs, one for each screen on
+the server. (These constitute the one and only description of each
+screen in the server.) Each screen has an identifying index (0, 1, 2, ...).
+In addition, the screenInfo struct contains global server-wide
+details, such as the bit- and byte- order in all bit images, and the
+list of pixmap image formats that are supported. The X protocol
+insists that these must be the same for all screens on the server.
+
+.NH 3
+Output Initialization
+.XS
+Output Initialization
+.XE
+.LP
+.nf
+
+ InitOutput(pScreenInfo, argc, argv)
+ ScreenInfo *pScreenInfo;
+ int argc;
+ char **argv;
+.fi
+Upon initialization, your DDX routine InitOutput() is called by DIX.
+It is passed a pointer to screenInfo to initialize. It is also passed
+the argc and argv from main() for your server for the command-line
+arguments. These arguments may indicate what or how many screen
+device(s) to use or in what way to use them. For instance, your
+server command line may allow a "-D" flag followed by the name of the
+screen device to use.
+
+Your InitOutput() routine should initialize each screen you wish to
+use by calling AddScreen(), and then it should initialize the pixmap
+formats that you support by storing values directly into the
+screenInfo data structure. You should also set certain
+implementation-dependent numbers and procedures in your screenInfo,
+which determines the pixmap and scanline padding rules for all screens
+in the server.
+.nf
+
+ int AddScreen(scrInitProc, argc, argv)
+ Bool (*scrInitProc)();
+ int argc;
+ char **argv;
+.fi
+You should call AddScreen(), a DIX procedure, in InitOutput() once for
+each screen to add it to the screenInfo database. The first argument
+is an initialization procedure for the screen that you supply. The
+second and third are the argc and argv from main(). It returns the
+screen number of the screen installed, or -1 if there is either
+insufficient memory to add the screen, or (*scrInitProc) returned
+FALSE.
+
+The scrInitProc should be of the following form:
+.nf
+
+ Bool scrInitProc(iScreen, pScreen, argc, argv)
+ int iScreen;
+ ScreenPtr pScreen;
+ int argc;
+ char **argv;
+.fi
+iScreen is the index for this screen; 0 for the first one initialized,
+1 for the second, etc. pScreen is the pointer to the screen's new
+ScreenRec. argc and argv are as before. Your screen initialize
+procedure should return TRUE upon success or FALSE if the screen
+cannot be initialized (for instance, if the screen hardware does not
+exist on this machine).
+
+This procedure must determine what actual device it is supposed to initialize.
+If you have a different procedure for each screen, then it is no problem.
+If you have the same procedure for multiple screens, it may have trouble
+figuring out which screen to initialize each time around, especially if
+InitOutput() does not initialize all of the screens.
+It is probably easiest to have one procedure for each screen.
+
+The initialization procedure should fill in all the screen procedures
+for that screen (windowing functions, region functions, etc.) and certain
+screen attributes for that screen.
+
+.NH 3
+Region Routines in the ScreenRec
+.XS
+Region Routines in the ScreenRec
+.XE
+.LP
+A region is a dynamically allocated data structure that describes an
+irregularly shaped piece of real estate in XY pixel space. You can
+think of it as a set of pixels on the screen to be operated upon with
+set operations such as AND and OR.
+.LP
+A region is frequently implemented as a list of rectangles or bitmaps
+that enclose the selected pixels. Region operators control the
+"clipping policy," or the operations that work on regions. (The
+sample server uses YX-banded rectangles. Unless you have something
+already implemented for your graphics system, you should keep that
+implementation.) The procedure pointers to the region operators are
+located in the ScreenRec data structure. The definition of a region
+can be found in the file Xserver/include/regionstr.h. The region code
+is found in Xserver/mi/miregion.c. DDX implementations using other
+region formats will need to supply different versions of the region
+operators.
+
+Since the list of rectangles is unbounded in size, part of the region
+data structure is usually a large, dynamically allocated chunk of
+memory. As your region operators calculate logical combinations of
+regions, these blocks may need to be reallocated by your region
+software. For instance, in the sample server, a RegionRec has some
+header information and a pointer to a dynamically allocated rectangle
+list. Periodically, the rectangle list needs to be expanded with
+Xrealloc(), whereupon the new pointer is remembered in the RegionRec.
+
+Most of the region operations come in two forms: a function pointer in
+the Screen structure, and a macro. The server can be compiled so that
+the macros make direct calls to the appropriate functions (instead of
+indirecting through a screen function pointer), or it can be compiled
+so that the macros are identical to the function pointer forms.
+Making direct calls is faster on many architectures.
+.nf
+
+ RegionPtr pScreen->RegionCreate( rect, size)
+ BoxPtr rect;
+ int size;
+
+ macro: RegionPtr REGION_CREATE(pScreen, rect, size)
+
+.fi
+RegionCreate creates a region that describes ONE rectangle. The
+caller can avoid unnecessary reallocation and copying by declaring the
+probable maximum number of rectangles that this region will need to
+describe itself. Your region routines, though, cannot fail just
+because the region grows beyond this size. The caller of this routine
+can pass almost anything as the size; the value is merely a good guess
+as to the maximum size until it is proven wrong by subsequent use.
+Your region procedures are then on their own in estimating how big the
+region will get. Your implementation might ignore size, if
+applicable.
+.nf
+
+ void pScreen->RegionInit (pRegion, rect, size)
+ RegionPtr pRegion;
+ BoxPtr rect;
+ int size;
+
+ macro: REGION_INIT(pScreen, pRegion, rect, size)
+
+.fi
+Given an existing raw region structure (such as an local variable), this
+routine fills in the appropriate fields to make this region as usable as
+one returned from RegionCreate. This avoids the additional dynamic memory
+allocation overhead for the region structure itself.
+.nf
+
+ Bool pScreen->RegionCopy(dstrgn, srcrgn)
+ RegionPtr dstrgn, srcrgn;
+
+ macro: Bool REGION_COPY(pScreen, dstrgn, srcrgn)
+
+.fi
+RegionCopy copies the description of one region, srcrgn, to another
+already-created region,
+dstrgn; returning TRUE if the copy succeeded, and FALSE otherwise.
+.nf
+
+ void pScreen->RegionDestroy( pRegion)
+ RegionPtr pRegion;
+
+ macro: REGION_DESTROY(pScreen, pRegion)
+
+.fi
+RegionDestroy destroys a region and frees all allocated memory.
+.nf
+
+ void pScreen->RegionUninit (pRegion)
+ RegionPtr pRegion;
+
+ macro: REGION_UNINIT(pScreen, pRegion)
+
+.fi
+Frees everything except the region structure itself, useful when the
+region was originally passed to RegionInit instead of received from
+RegionCreate. When this call returns, pRegion must not be reused until
+it has been RegionInit'ed again.
+.nf
+
+ Bool pScreen->Intersect(newReg, reg1, reg2)
+ RegionPtr newReg, reg1, reg2;
+
+ macro: Bool REGION_INTERSECT(pScreen, newReg, reg1, reg2)
+
+ Bool pScreen->Union(newReg, reg1, reg2)
+ RegionPtr newReg, reg1, reg2;
+
+ macro: Bool REGION_UNION(pScreen, newReg, reg1, reg2)
+
+ Bool pScreen->Subtract(newReg, regMinuend, regSubtrahend)
+ RegionPtr newReg, regMinuend, regSubtrahend;
+
+ macro: Bool REGION_UNION(pScreen, newReg, regMinuend, regSubtrahend)
+
+ Bool pScreen->Inverse(newReg, pReg, pBox)
+ RegionPtr newReg, pReg;
+ BoxPtr pBox;
+
+ macro: Bool REGION_INVERSE(pScreen, newReg, pReg, pBox)
+
+.fi
+The above four calls all do basic logical operations on regions. They
+set the new region (which already exists) to describe the logical
+intersection, union, set difference, or inverse of the region(s) that
+were passed in. Your routines must be able to handle a situation
+where the newReg is the same region as one of the other region
+arguments.
+
+The subtract function removes the Subtrahend from the Minuend and
+puts the result in newReg.
+
+The inverse function returns a region that is the pBox minus the
+region passed in. (A true "inverse" would make a region that extends
+to infinity in all directions but has holes in the middle.) It is
+undefined for situations where the region extends beyond the box.
+
+Each routine must return the value TRUE for success.
+.nf
+
+ void pScreen->RegionReset(pRegion, pBox)
+ RegionPtr pRegion;
+ BoxPtr pBox;
+
+ macro: REGION_RESET(pScreen, pRegion, pBox)
+
+.fi
+RegionReset sets the region to describe
+one rectangle and reallocates it to a size of one rectangle, if applicable.
+.nf
+
+ void pScreen->TranslateRegion(pRegion, x, y)
+ RegionPtr pRegion;
+ int x, y;
+
+ macro: REGION_TRANSLATE(pScreen, pRegion, x, y)
+
+.fi
+TranslateRegion simply moves a region +x in the x direction and +y in the y
+direction.
+.nf
+
+ int pScreen->RectIn(pRegion, pBox)
+ RegionPtr pRegion;
+ BoxPtr pBox;
+
+ macro: int RECT_IN_REGION(pScreen, pRegion, pBox)
+
+.fi
+RectIn returns one of the defined constants rgnIN, rgnOUT, or rgnPART,
+depending upon whether the box is entirely inside the region, entirely
+outside of the region, or partly in and partly out of the region.
+These constants are defined in Xserver/include/region.h.
+.nf
+
+ Bool pScreen->PointInRegion(pRegion, x, y, pBox)
+ RegionPtr pRegion;
+ int x, y;
+ BoxPtr pBox;
+
+ macro: Bool POINT_IN_REGION(pScreen, pRegion, x, y, pBox)
+
+.fi
+PointInRegion returns true if the point x, y is in the region. In
+addition, it fills the rectangle pBox with coordinates of a rectangle
+that is entirely inside of pRegion and encloses the point. In the mi
+implementation, it is the largest such rectangle. (Due to the sample
+server implementation, this comes cheaply.)
+
+This routine used by DIX when tracking the pointing device and
+deciding whether to report mouse events or change the cursor. For
+instance, DIX needs to change the cursor when it moves from one window
+to another. Due to overlapping windows, the shape to check may be
+irregular. A PointInRegion() call for every pointing device movement
+may be too expensive. The pBox is a kind of wake-up box; DIX need not
+call PointInRegion() again until the cursor wanders outside of the
+returned box.
+.nf
+
+ Bool pScreen->RegionNotEmpty(pRegion)
+ RegionPtr pRegion;
+
+ macro: Bool REGION_NOTEMPTY(pScreen, pRegion)
+
+.fi
+RegionNotEmpty is a boolean function that returns
+true or false depending upon whether the region encloses any pixels.
+.nf
+
+ void pScreen->RegionEmpty(pRegion)
+ RegionPtr pRegion;
+
+ macro: REGION_EMPTY(pScreen, pRegion)
+
+.fi
+RegionEmpty sets the region to be empty.
+.nf
+
+ BoxPtr pScreen->RegionExtents(pRegion)
+ RegionPtr pRegion;
+
+ macro: REGION_EXTENTS(pScreen, pRegion)
+
+.fi
+RegionExtents returns a rectangle that is the smallest
+possible superset of the entire region.
+The caller will not modify this rectangle, so it can be the one
+in your region struct.
+.nf
+
+ Bool pScreen->RegionAppend (pDstRgn, pRegion)
+ RegionPtr pDstRgn;
+ RegionPtr pRegion;
+
+ macro: Bool REGION_APPEND(pScreen, pDstRgn, pRegion)
+
+ Bool pScreen->RegionValidate (pRegion, pOverlap)
+ RegionPtr pRegion;
+ Bool *pOverlap;
+
+ macro: Bool REGION_VALIDATE(pScreen, pRegion, pOverlap)
+
+.fi
+These functions provide an optimization for clip list generation and
+must be used in conjunction. The combined effect is to produce the
+union of a collection of regions, by using RegionAppend several times,
+and finally calling RegionValidate which takes the intermediate
+representation (which needn't be a valid region) and produces the
+desired union. pOverlap is set to TRUE if any of the original
+regions overlap; FALSE otherwise.
+.nf
+
+ RegionPtr pScreen->BitmapToRegion (pPixmap)
+ PixmapPtr pPixmap;
+
+ macro: RegionPtr BITMAP_TO_REGION(pScreen, pPixmap)
+
+.fi
+Given a depth-1 pixmap, this routine must create a valid region which
+includes all the areas of the pixmap filled with 1's and excludes the
+areas filled with 0's. This routine returns NULL if out of memory.
+.nf
+
+ RegionPtr pScreen->RectsToRegion (nrects, pRects, ordering)
+ int nrects;
+ xRectangle *pRects;
+ int ordering;
+
+ macro: RegionPtr RECTS_TO_REGION(pScreen, nrects, pRects, ordering)
+
+.fi
+Given a client-supplied list of rectangles, produces a region which includes
+the union of all the rectangles. Ordering may be used as a hint which
+describes how the rectangles are sorted. As the hint is provided by a
+client, it must not be required to be correct, but the results when it is
+not correct are not defined (core dump is not an option here).
+.nf
+
+ void pScreen->SendGraphicsExpose(client,pRegion,drawable,major,minor)
+ ClientPtr client;
+ RegionPtr pRegion;
+ XID drawable;
+ int major;
+ int minor;
+
+.fi
+SendGraphicsExpose dispatches a list of GraphicsExposure events which
+span the region to the specified client. If the region is empty, or
+a NULL pointer, a NoExpose event is sent instead.
+.NH 3
+Cursor Routines for a Screen
+.XS
+Cursor Routines for a Screen
+.XE
+.LP
+A cursor is the visual form tied to the pointing device. The default
+cursor is an "X" shape, but the cursor can have any shape. When a
+client creates a window, it declares what shape the cursor will be
+when it strays into that window on the screen.
+
+For each possible shape the cursor assumes, there is a CursorRec data
+structure. This data structure contains a pointer to a CursorBits
+data structure which contains a bitmap for the image of the cursor and
+a bitmap for a mask behind the cursor, in addition, the CursorRec data
+structure contains foreground and background colors for the cursor.
+The CursorBits data structure is shared among multiple CursorRec
+structures which use the same font and glyph to describe both source
+and mask. The cursor image is applied to the screen by applying the
+mask first, clearing 1 bits in its form to the background color, and
+then overwriting on the source image, in the foreground color. (One
+bits of the source image that fall on top of zero bits of the mask
+image are undefined.) This way, a cursor can have transparent parts,
+and opaque parts in two colors. X allows any cursor size, but some
+hardware cursor schemes allow a maximum of N pixels by M pixels.
+Therefore, you are allowed to transform the cursor to a smaller size,
+but be sure to include the hot-spot.
+
+CursorBits in Xserver/include/cursorstr.h is a device-independent
+structure containing a device-independent representation of the bits
+for the source and mask. (This is possible because the bitmap
+representation is the same for all screens.)
+
+When a cursor is created, it is "realized" for each screen. At
+realization time, each screen has the chance to convert the bits into
+some other representation that may be more convenient (for instance,
+putting the cursor into off-screen memory) and set up its
+device-private area in either the CursorRec data structure or
+CursorBits data structure as appropriate to possibly point to whatever
+data structures are needed. It is more memory-conservative to share
+realizations by using the CursorBits private field, but this makes the
+assumption that the realization is independent of the colors used
+(which is typically true). For instance, the following are the device
+private entries for a particular screen and cursor:
+.nf
+
+ pCursor->devPriv[pScreen->myNum]
+ pCursor->bits->devPriv[pScreen->myNum]
+
+.fi
+This is done because the change from one cursor shape to another must
+be fast and responsive; the cursor image should be able to flutter as
+fast as the user moves it across the screen.
+
+You must implement the following routines for your hardware:
+.nf
+
+ Bool pScreen->RealizeCursor( pScr, pCurs)
+ ScreenPtr pScr;
+ CursorPtr pCurs;
+
+ Bool pScreen->UnrealizeCursor( pScr, pCurs)
+ ScreenPtr pScr;
+ CursorPtr pCurs;
+
+.fi
+RealizeCursor and UnrealizeCursor should realize (allocate and
+calculate all data needed) and unrealize (free the dynamically
+allocated data) a given cursor when DIX needs them. They are called
+whenever a device-independent cursor is created or destroyed. The
+source and mask bits pointed to by fields in pCurs are undefined for
+bits beyond the right edge of the cursor. This is so because the bits
+are in Bitmap format, which may have pad bits on the right edge. You
+should inhibit UnrealizeCursor() if the cursor is currently in use;
+this happens when the system is reset.
+.nf
+
+ Bool pScreen->DisplayCursor( pScr, pCurs)
+ ScreenPtr pScr;
+ CursorPtr pCurs;
+
+.fi
+DisplayCursor should change the cursor on the given screen to the one
+passed in. It is called by DIX when the user moves the pointing
+device into a different window with a different cursor. The hotspot
+in the cursor should be aligned with the current cursor position.
+.nf
+
+ void pScreen->RecolorCursor( pScr, pCurs, displayed)
+ ScreenPtr pScr;
+ CursorPtr pCurs;
+ Bool displayed;
+.fi
+.LP
+RecolorCursor notifies DDX that the colors in pCurs have changed and
+indicates whether this is the cursor currently being displayed. If it
+is, the cursor hardware state may have to be updated. Whether
+displayed or not, state created at RealizeCursor time may have to be
+updated. A generic version, miRecolorCursor, may be used that
+does an unrealize, a realize, and possibly a display (in micursor.c);
+however this constrains UnrealizeCursor and RealizeCursor to always return
+TRUE as no error indication is returned here.
+.nf
+
+ void pScreen->ConstrainCursor( pScr, pBox)
+ ScreenPtr pScr;
+ BoxPtr pBox;
+
+.fi
+ConstrainCursor should cause the cursor to restrict its motion to the
+rectangle pBox. DIX code is capable of enforcing this constraint by
+forcefully moving the cursor if it strays out of the rectangle, but
+ConstrainCursor offers a way to send a hint to the driver or hardware
+if such support is available. This can prevent the cursor from
+wandering out of the box, then jumping back, as DIX forces it back.
+.nf
+
+ void pScreen->PointerNonInterestBox( pScr, pBox)
+ ScreenPtr pScr;
+ BoxPtr pBox;
+
+.fi
+PointerNonInterestBox is DIX's way of telling the pointing device code
+not to report motion events while the cursor is inside a given
+rectangle on the given screen. It is optional and, if not
+implemented, it should do nothing. This routine is called only when
+the client has declared that it is not interested in motion events in
+a given window. The rectangle you get may be a subset of that window.
+It saves DIX code the time required to discard uninteresting mouse
+motion events. This is only a hint, which may speed performance.
+Nothing in DIX currently calls PointerNonInterestBox.
+.nf
+
+ void pScreen->CursorLimits( pScr, pCurs, pHotBox, pTopLeftBox)
+ ScreenPtr pScr;
+ CursorPtr pCurs;
+ BoxPtr pHotBox;
+ BoxPtr pTopLeftBox; /* return value */
+
+.fi
+.LP
+CursorLimits should calculate the box that the cursor hot spot is
+physically capable of moving within, as a function of the screen pScr,
+the device-independent cursor pCurs, and a box that DIX hypothetically
+would want the hot spot confined within, pHotBox. This routine is for
+informing DIX only; it alters no state within DDX.
+.nf
+
+ Bool pScreen->SetCursorPosition( pScr, newx, newy, generateEvent)
+ ScreenPtr pScr;
+ int newx;
+ int newy;
+ Bool generateEvent;
+
+.fi
+.LP
+SetCursorPosition should artificially move the cursor as though the
+user had jerked the pointing device very quickly. This is called in
+response to the WarpPointer request from the client, and at other
+times. If generateEvent is True, the device should decide whether or
+not to call ProcessInputEvents() and then it must call
+DevicePtr->processInputProc. Its effects are, of course, limited in
+value for absolute pointing devices such as a tablet.
+.nf
+
+ void NewCurrentScreen(newScreen, x, y)
+ ScreenPtr newScreen;
+ int x,y;
+
+.fi
+.LP
+If your ddx provides some mechanism for the user to magically move the
+pointer between multiple screens, you need to inform DIX when this
+occurs. You should call NewCurrentScreen to accomplish this, specifying
+the new screen and the new x and y coordinates of the pointer on that screen.
+
+.NH 3
+Visuals, Depths and Pixmap Formats for Screens
+.XS
+Visuals, Depths and Pixmap Formats for Screens
+.XE
+.LP
+The "depth" of a image is the number of bits that are used per pixel to display it.
+
+The "bits per pixel" of a pixmap image that is sent over the client
+byte stream is a number that is either 4, 8, 16, 24 or 32. It is the
+number of bits used per pixel in Z format. For instance, a pixmap
+image that has a depth of six is best sent in Z format as 8 bits per
+pixel.
+
+A "pixmap image format" or a "pixmap format" is a description of the
+format of a pixmap image as it is sent over the byte stream. For each
+depth available on a server, there is one and only one pixmap format.
+This pixmap image format gives the bits per pixel and the scanline
+padding unit. (For instance, are pixel rows padded to bytes, 16-bit
+words, or 32-bit words?)
+
+For each screen, you must decide upon what depth(s) it supports. You
+should only count the number of bits used for the actual image. Some
+displays store additional bits to indicate what window this pixel is
+in, how close this object is to a viewer, transparency, and other
+data; do not count these bits.
+
+A "display class" tells whether the display is monochrome or color,
+whether there is a lookup table, and how the lookup table works.
+
+A "visual" is a combination of depth, display class, and a description
+of how the pixel values result in a color on the screen. Each visual
+has a set of masks and offsets that are used to separate a pixel value
+into its red, green, and blue components and a count of the number of
+colormap entries. Some of these fields are only meaningful when the
+class dictates so. Each visual also has a screen ID telling which
+screen it is usable on. Note that the depth does not imply the number
+of map_entries; for instance, a display can have 8 bits per pixel but
+only 254 colormap entries for use by applications (the other two being
+reserved by hardware for the cursor).
+
+Each visual is identified by a 32-bit visual ID which the client uses
+to choose what visual is desired on a given window. Clients can be
+using more than one visual on the same screen at the same time.
+.LP
+The class of a display describes how this translation takes place.
+There are three ways to do the translation.
+.IP \(bu 5
+Pseudo - The pixel value, as a whole, is looked up
+in a table of length map_entries to
+determine the color to display.
+.IP \(bu 5
+True - The
+pixel value is broken up into red, green, and blue fields, each of which
+are looked up in separate red, green, and blue lookup tables,
+each of length map_entries.
+.IP \(bu 5
+Gray - The pixel value is looked up in a table of length map_entries to
+determine a gray level to display.
+.LP
+In addition, the lookup table can be static (resulting colors are fixed for each
+pixel value)
+or dynamic (lookup entries are under control of the client program).
+This leads to a total of six classes:
+
+.IP \(bu 5
+Static Gray - The pixel value (of however many bits) determines directly the
+level of gray
+that the pixel assumes.
+.IP \(bu 5
+Gray Scale - The pixel value is fed through a lookup table to arrive at the level
+of gray to display
+for the given pixel.
+.IP \(bu 5
+Static Color - The pixel value is fed through a fixed lookup table that yields the
+color to display
+for that pixel.
+.IP \(bu 5
+PseudoColor - The whole pixel value is fed through a programmable lookup
+table that has one
+color (including red, green, and blue intensities) for each possible pixel value,
+and that color is displayed.
+.IP \(bu 5
+True Color - Each pixel value consists of one or more bits
+that directly determine each primary color intensity after being fed through
+a fixed table.
+.IP \(bu 5
+Direct Color - Each pixel value consists of one or more bits for each primary color.
+Each primary color value is individually looked up in a table for that primary
+color, yielding
+an intensity for that primary color.
+For each pixel, the red value is looked up in the
+red table, the green value in the green table, and
+the blue value in the blue table.
+.LP
+Here are some examples:
+.IP
+A simple monochrome 1 bit per pixel display is Static Gray.
+
+A display that has 2 bits per pixel for a choice
+between the colors of black, white, green and violet is Static Color.
+
+A display that has three bits per pixel, where
+each bit turns on or off one of the red, green or
+blue guns, is in the True Color class.
+
+If you take the last example and scramble the
+correspondence between pixel values and colors
+it becomes a Static Color display.
+
+A display has 8 bits per pixel. The 8 bits select one entry out of 256 entries
+in a lookup table, each entry consisting of 24 bits (8bits each for red, green,
+and blue).
+The display can show any 256 of 16 million colors on the screen at once.
+This is a pseudocolor display.
+The client application gets to fill the lookup table in this class of display.
+
+Imagine the same hardware from the last example.
+Your server software allows the user, on the
+command line that starts up the server
+program,
+to fill the lookup table to his liking once and for all.
+From then on, the server software would not change the lookup table
+until it exits.
+For instance, the default might be a lookup table with a reasonable sample of
+colors from throughout the color space.
+But the user could specify that the table be filled with 256 steps of gray scale
+because he knew ahead of time he would be manipulating a lot of black-and-white
+scanned photographs
+and not very many color things.
+Clients would be presented with this unchangeable lookup table.
+Although the hardware qualifies as a PseudoColor display,
+the facade presented to the X client is that this is a Static Color display.
+
+You have to decide what kind of display you have or want
+to pretend you have.
+When you initialize the screen(s), this class value must be set in the
+VisualRec data structure along with other display characteristics like the
+depth and other numbers.
+
+The allowable DepthRec's and VisualRec's are pointed to by fields in the ScreenRec.
+These are set up when InitOutput() is called; you should Xalloc() appropriate blocks
+or use static variables initialized to the correct values.
+
+.NH 3
+Colormaps for Screens
+.XS
+Colormaps for Screens
+.XE
+.LP
+A colormap is a device-independent
+mapping between pixel values and colors displayed on the screen.
+
+Different windows on the same screen can have different
+colormaps at the same time.
+At any given time, the most recently installed
+colormap(s) will be in use in the server
+so that its (their) windows' colors will be guaranteed to be correct.
+Other windows may be off-color.
+Although this may seem to be chaotic, in practice most clients
+use the default colormap for the screen.
+
+The default colormap for a screen is initialized when the screen is initialized.
+It always remains in existence and is not owned by any regular client. It
+is owned by client 0 (the server itself).
+Many clients will simply use this default colormap for their drawing.
+Depending upon the class of the screen, the entries in this colormap may
+be modifiable by client applications.
+
+.NH 4
+Colormap Routines
+.XS
+Colormap Routines
+.XE
+.LP
+You need to implement the following routines to handle the device-dependent
+aspects of color maps. You will end up placing pointers to these procedures
+in your ScreenRec data structure(s). The sample server implementations of
+many of these routines are in both cfbcmap.c and mfbcmap.c; since mfb does
+not do very much with color, the cfb versions are typically more useful
+prototypes.
+.nf
+
+ Bool pScreen->CreateColormap(pColormap)
+ ColormapPtr pColormap;
+
+.fi
+.LP
+This routine is called by the DIX CreateColormap routine after it has allocated
+all the data for the new colormap and just before it returns to the dispatcher.
+It is the DDX layer's chance to initialize the colormap, particularly if it is
+a static map. See the following
+section for more details on initializing colormaps.
+The routine returns FALSE if creation failed, such as due to memory
+limitations.
+Notice that the colormap has a devPriv field from which you can hang any
+colormap specific storage you need. Since each colormap might need special
+information, we attached the field to the colormap and not the visual.
+.nf
+
+ void pScreen->DestroyColormap(pColormap)
+ ColormapPtr pColormap;
+
+.fi
+.LP
+This routine is called by the DIX FreeColormap routine after it has uninstalled
+the colormap and notified all interested parties, and before it has freed
+any of the colormap storage.
+It is the DDX layer's chance to free any data it added to the colormap.
+.nf
+
+ void pScreen->InstallColormap(pColormap)
+ ColormapPtr pColormap;
+
+.fi
+.LP
+InstallColormap should
+fill a lookup table on the screen with which the colormap is associated with
+the colors in pColormap.
+If there is only one hardware lookup table for the screen, then all colors on
+the screen may change simultaneously.
+
+In the more general case of multiple hardware lookup tables,
+this may cause some other colormap to be
+uninstalled, meaning that windows that subscribed to the colormap
+that was uninstalled may end up being off-color.
+See the note, below, about uninstalling maps.
+.nf
+
+ void pScreen->UninstallColormap(pColormap)
+ ColormapPtr pColormap;
+
+.fi
+.LP
+UninstallColormap should
+remove pColormap from screen pColormap->pScreen.
+Some other map, such as the default map if possible,
+should be installed in place of pColormap if applicable.
+If
+pColormap is the default map, do nothing.
+If any client has requested ColormapNotify events, the DDX layer must notify the client.
+(The routine WalkTree() is
+be used to find such windows. The DIX routines TellNoMap(),
+TellNewMap() and TellGainedMap() are provided to be used as
+the procedure parameter to WalkTree. These procedures are in
+Xserver/dix/colormap.c.)
+.nf
+
+ int pScreen->ListInstalledColormaps(pScreen, pCmapList)
+ ScreenPtr pScreen;
+ XID *pCmapList;
+
+
+.fi
+.LP
+ListInstalledColormaps fills the pCMapList in with the resource ids
+of the installed maps and returns a count of installed maps.
+pCmapList will point to an array of size MaxInstalledMaps that was allocated
+by the caller.
+.nf
+
+ void pScreen->StoreColors (pmap, ndef, pdefs)
+ ColormapPtr pmap;
+ int ndef;
+ xColorItem *pdefs;
+
+.fi
+.LP
+StoreColors changes some of the entries in the colormap pmap.
+The number of entries to change are ndef, and pdefs points to the information
+describing what to change.
+Note that partial changes of entries in the colormap are allowed.
+Only the colors
+indicated in the flags field of each xColorItem need to be changed.
+However, all three color fields will be sent with the proper value for the
+benefit of screens that may not be able to set part of a colormap value.
+If the screen is a static class, this routine does nothing.
+The structure of colormap entries is nontrivial; see colormapst.h
+and the definition of xColorItem in Xproto.h for
+more details.
+.nf
+
+ void pScreen->ResolveColor(pRed, pGreen, pBlue, pVisual)
+ unsigned short *pRed, *pGreen, *pBlue;
+ VisualPtr pVisual;
+
+
+.fi
+.LP
+Given a requested color, ResolveColor returns the nearest color that this hardware is
+capable of displaying on this visual.
+In other words, this rounds off each value, in place, to the number of bits
+per primary color that your screen can use.
+Remember that each screen has one of these routines.
+The level of roundoff should be what you would expect from the value
+you put in the bits_per_rgb field of the pVisual.
+
+Each value is an unsigned value ranging from 0 to 65535.
+The bits least likely to be used are the lowest ones.
+.LP
+For example, if you had a pseudocolor display
+with any number of bits per pixel
+that had a lookup table supplying 6 bits for each color gun
+(a total of 256K different colors), you would
+round off each value to 6 bits. Please don't simply truncate these values
+to the upper 6 bits, scale the result so that the maximum value seen
+by the client will be 65535 for each primary. This makes color values
+more portable between different depth displays (a 6-bit truncated white
+will not look white on an 8-bit display).
+.NH 4
+Initializing a Colormap
+.XS
+Initializing a Colormap
+.XE
+.LP
+When a client requests a new colormap and when the server creates the default
+colormap, the procedure CreateColormap in the DIX layer is invoked.
+That procedure allocates memory for the colormap and related storage such as
+the lists of which client owns which pixels.
+It then sets a bit, BeingCreated, in the flags field of the ColormapRec
+and calls the DDX layer's CreateColormap routine.
+This is your chance to initialize the colormap.
+If the colormap is static, which you can tell by looking at the class field,
+you will want to fill in each color cell to match the hardwares notion of the
+color for that pixel.
+If the colormap is the default for the screen, which you can tell by looking
+at the IsDefault bit in the flags field, you should allocate BlackPixel
+and WhitePixel to match the values you set in the pScreen structure.
+(Of course, you picked those values to begin with.)
+.LP
+You can also wait and use AllocColor() to allocate blackPixel
+and whitePixel after the default colormap has been created.
+If the default colormap is static and you initialized it in
+pScreen->CreateColormap, then use can use AllocColor afterwards
+to choose pixel values with the closest rgb values to those
+desired for blackPixel and whitePixel.
+If the default colormap is dynamic and uninitialized, then
+the rgb values you request will be obeyed, and AllocColor will
+again choose pixel values for you.
+These pixel values can then be stored into the screen.
+.LP
+There are two ways to fill in the colormap.
+The simplest way is to use the DIX function AllocColor.
+.nf
+
+int AllocColor (pmap, pred, pgreen, pblue, pPix, client)
+ ColormapPtr pmap;
+ unsigned short *pred, *pgreen, *pblue;
+ Pixel *pPix;
+ int client;
+
+.fi
+This takes three pointers to 16 bit color values and a pointer to a suggested
+pixel value. The pixel value is either an index into one colormap or a
+combination of three indices depending on the type of pmap.
+If your colormap starts out empty, and you don't deliberately pick the same
+value twice, you will always get your suggested pixel.
+The truly nervous could check that the value returned in *pPix is the one
+AllocColor was called with.
+If you don't care which pixel is used, or would like them sequentially
+allocated from entry 0, set *pPix to 0. This will find the first free
+pixel and use that.
+.LP
+AllocColor will take care of all the bookkeeping and will
+call StoreColors to get the colormap rgb values initialized.
+The hardware colormap will be changed whenever this colormap
+is installed.
+.LP
+If for some reason AllocColor doesn't do what you want, you can do your
+own bookkeeping and call StoreColors yourself. This is much more difficult
+and shouldn't be necessary for most devices.
+
+.NH 3
+Fonts for Screens
+.XS
+Fonts for Screens
+.XE
+.LP
+A font is a set of bitmaps that depict the symbols in a character set.
+Each font is for only one typeface in a given size, in other words,
+just one bitmap for each character. Parallel fonts may be available
+in a variety of sizes and variations, including "bold" and "italic."
+X supports fonts for 8-bit and 16-bit character codes (for oriental
+languages that have more than 256 characters in the font). Glyphs are
+bitmaps for individual characters.
+
+The source comes with some useful font files in an ASCII, plain-text
+format that should be comprehensible on a wide variety of operating
+systems. The text format, referred to as BDF, is a slight extension
+of the current Adobe 2.1 Bitmap Distribution Format (Adobe Systems,
+Inc.).
+
+A short paper in PostScript format is included with the sample server
+that defines BDF. It includes helpful pictures, which is why it is
+done in PostScript and is not included in this document.
+
+Your implementation should include some sort of font compiler to read
+these files and generate binary files that are directly usable by your
+server implementation. The sample server comes with the source for a
+font compiler.
+
+It is important the font properties contained in the BDF files are
+preserved across any font compilation. In particular, copyright
+information cannot be casually tossed aside without legal
+ramifications. Other properties will be important to some
+sophisticated applications.
+
+All clients get font information from the server. Therefore, your
+server can support any fonts it wants to. It should probably support
+at least the fonts supplied with the X11 tape. In principle, you can
+convert fonts from other sources or dream up your own fonts for use on
+your server.
+
+.NH 4
+Portable Compiled Format
+.XS
+Portable Compiled Format
+.XE
+.LP
+A font compiler is supplied with the sample server. It has
+compile-time switches to convert the BDF files into a portable binary
+form, called Portable Compiled Format or PCF. This allows for an
+arbitrary data format inside the file, and by describing the details
+of the format in the header of the file, any PCF file can be read by
+any PCF reading client. By selecting the format which matches the
+required internal format for your renderer, the PCF reader can avoid
+reformatting the data each time it is read in. The font compiler
+should be quite portable.
+
+The fonts included with the tape are stored in fonts/bdf. The
+font compiler is found in fonts/tools/bdftopcf.
+.NH 4
+Font Realization
+.XS
+Font Realization
+.XE
+.LP
+Each screen configured into the server
+has an opportunity at font-load time
+to "realize" a font into some internal format if necessary.
+This happens every time the font is loaded into memory.
+
+A font (FontRec in Xserver/include/dixfontstr.h) is
+a device-independent structure containing a device-independent
+representation of the font. When a font is created, it is "realized"
+for each screen. At this point, the screen has the chance to convert
+the font into some other format. The DDX layer can also put information
+in the devPrivate storage.
+.nf
+
+ Bool pScreen->RealizeFont(pScr, pFont)
+ ScreenPtr pScr;
+ FontPtr pFont;
+
+ Bool pScreen->UnrealizeFont(pScr, pFont)
+ ScreenPtr pScr;
+ FontPtr pFont;
+
+.fi
+RealizeFont and UnrealizeFont should calculate and allocate these extra data structures and
+dispose of them when no longer needed.
+These are called in response to OpenFont and CloseFont requests from
+the client.
+The sample server implementation is in mfbfont.c (which does very little).
+
+.NH 3
+Other Screen Routines
+.XS
+Other Screen Routines
+.XE
+.LP
+You must supply several other screen-specific routines for
+your X server implementation.
+Some of these are described in other sections:
+.IP \(bu 5
+GetImage() is described in the Drawing Primitives section.
+.IP \(bu 5
+GetSpans() is described in the Pixblit routine section.
+.IP \(bu 5
+Several window and pixmap manipulation procedures are
+described in the Window section under Drawables.
+.IP \(bu 5
+The CreateGC() routine is described under Graphics Contexts.
+.LP
+.nf
+
+ void pScreen->QueryBestSize(kind, pWidth, pHeight)
+ int kind;
+ unsigned short *pWidth, *pHeight;
+ ScreenPtr pScreen;
+
+.fi
+QueryBestSize() returns the best sizes for cursors, tiles, and stipples
+in response to client requests.
+kind is one of the defined constants CursorShape, TileShape, or StippleShape
+(defined in X.h).
+For CursorShape, return the maximum width and
+height for cursors that you can handle.
+For TileShape and StippleShape, start with the suggested values in pWidth
+and pHeight and modify them in place to be optimal values that are
+greater than or equal to the suggested values.
+The sample server implementation is in Xserver/mfb/mfbmisc.c.
+.nf
+
+ pScreen->SourceValidate(pDrawable, x, y, width, height)
+ DrawablePtr pDrawable;
+ int x, y, width, height;
+
+.fi
+SourceValidate should be called by CopyArea/CopyPlane primitives when
+the source drawable is not the same as the destination, and the
+SourceValidate function pointer in the screen is non-null. If you know that
+you will never need SourceValidate, you can avoid this check. Currently,
+SourceValidate is used by the mi software cursor code to remove the cursor
+from the screen when the source rectangle overlaps the cursor position.
+x,y,width,height describe the source rectangle (source relative, that is)
+for the copy operation.
+.nf
+
+ Bool pScreen->SaveScreen(pScreen, on)
+ ScreenPtr pScreen;
+ int on;
+
+.fi
+SaveScreen() is used for Screen Saver support (see WaitForSomething()).
+pScreen is the screen to save.
+.nf
+
+ Bool pScreen->CloseScreen(pScreen)
+ ScreenPtr pScreen;
+
+.fi
+When the server is reset, it calls this routine for each screen.
+.nf
+
+ Bool pScreen->CreateScreenResources(pScreen)
+ ScreenPtr pScreen;
+
+.fi
+If this routine is not NULL, it will be called once per screen per
+server initialization/reset after all modules have had a chance to
+register their devPrivates on all structures that support them (see
+the section on devPrivates below). If you need to create any
+resources that have dynamic devPrivates as part of your screen
+initialization, you should do so in this function instead of in the
+screen init function passed to AddScreen to guarantee that the
+resources have a complete set of devPrivates. This routine returns
+TRUE if successful.
+.NH 2
+Drawables
+.XS
+Drawables
+.XE
+.LP
+A drawable is a descriptor of a surface that graphics are drawn into, either
+a window on the screen or a pixmap in memory.
+
+Each drawable has a type, class,
+ScreenPtr for the screen it is associated with, depth, position, size,
+and serial number.
+The type is one of the defined constants DRAWABLE_PIXMAP,
+DRAWABLE_WINDOW and UNDRAWABLE_WINDOW.
+(An undrawable window is used for window class InputOnly.)
+The serial number is guaranteed to be unique across drawables, and
+is used in determining
+the validity of the clipping information in a GC.
+The screen selects the set of procedures used to manipulate and draw into the
+drawable. Position is used (currently) only by windows; pixmaps must
+set these fields to 0,0 as this reduces the amount of conditional code
+executed throughout the mi code. Size indicates the actual client-specified
+size of the drawable.
+There are, in fact, no other fields that a window drawable and pixmap
+drawable have in common besides those mentioned here.
+
+Both PixmapRecs and WindowRecs are structs that start with a drawable
+and continue on with more fields. Pixmaps have devPrivate pointers
+which usually point to the pixmap data but could conceivably be
+used for anything that DDX wants. Both windows and pixmaps have an
+array of devPrivates unions, one entry of which will probably be used
+for DDX specific data. Entries in this array are allocated using
+Allocate{Window|Pixmap}PrivateIndex() (see Wrappers and devPrivates
+below). This is done because different graphics hardware has
+different requirements for management; if the graphics is always
+handled by a processor with an independent address space, there is no
+point having a pointer to the bit image itself.
+
+The definition of a drawable and a pixmap can be found in the file
+Xserver/include/pixmapstr.h.
+The definition of a window can be found in the file Xserver/include/windowstr.h.
+
+.NH 3
+Pixmaps
+.XS
+Pixmaps
+.XE
+.LP
+A pixmap is a three-dimensional array of bits stored somewhere offscreen,
+rather than in the visible portion of the screen's display frame buffer. It
+can be used as a source or destination in graphics operations. There is no
+implied interpretation of the pixel values in a pixmap, because it has no
+associated visual or colormap. There is only a depth that indicates the
+number of significant bits per pixel. Also, there is no implied physical
+size for each pixel; all graphic units are in numbers of pixels. Therefore,
+a pixmap alone does not constitute a complete image; it represents only a
+rectangular array of pixel values.
+
+Note that the pixmap data structure is reference-counted.
+
+The server implementation is free to put the pixmap data
+anywhere it sees fit, according to its graphics hardware setup. Many
+implementations will simply have the data dynamically allocated in the
+server's address space. More sophisticated implementations may put the
+data in undisplayed framebuffer storage.
+
+In addition to dynamic devPrivates (see the section on devPrivates
+below), the pixmap data structure has two fields that are private to
+the device. Although you can use them for anything you want, they
+have intended purposes. devKind is intended to be a device specific
+indication of the pixmap location (host memory, off-screen, etc.). In
+the sample server, since all pixmaps are in memory, devKind stores the
+width of the pixmap in bitmap scanline units. devPrivate is probably
+a pointer to the bits in the pixmap.
+
+A bitmap is a pixmap that is one bit deep.
+.nf
+
+ PixmapPtr pScreen->CreatePixmap(pScreen, width, height, depth)
+ ScreenPtr pScreen;
+ int width, height, depth;
+
+.fi
+This ScreenRec procedure must create a pixmap of the size
+requested.
+It must allocate a PixmapRec and fill in all of the fields.
+The reference count field must be set to 1.
+If width or height are zero, no space should be allocated
+for the pixmap data, and if the implementation is using the
+devPrivate field as a pointer to the pixmap data, it should be
+set to NULL.
+If successful, it returns a pointer to the new pixmap; if not, it returns NULL.
+See Xserver/mfb/mfbpixmap.c for the sample server implementation.
+.nf
+
+ Bool pScreen->DestroyPixmap(pPixmap)
+ PixmapPtr pPixmap;
+
+.fi
+This ScreenRec procedure must "destroy" a pixmap.
+It should decrement the reference count and, if zero, it
+must deallocate the PixmapRec and all attached devPrivate blocks.
+If successful, it returns TRUE.
+See Xserver/mfb/mfbpixmap.c for the sample server implementation.
+.nf
+
+ Bool
+ pScreen->ModifyPixmapHeader(pPixmap, width, height, depth, bitsPerPixel, devKind, pPixData)
+ PixmapPtr pPixmap;
+ int width;
+ int height;
+ int depth;
+ int bitsPerPixel;
+ int devKind;
+ pointer pPixData;
+
+.fi
+This routine takes a pixmap header (the PixmapRec plus all the dynamic
+devPrivates) and initializes the fields of the PixmapRec to the
+parameters of the same name. pPixmap must have been created via
+pScreen->CreatePixmap with a zero width or height to avoid
+allocating space for the pixmap data. pPixData is assumed to be the
+pixmap data; it will be stored in an implementation-dependent place
+(usually pPixmap->devPrivate.ptr). This routine returns
+TRUE if successful. See Xserver/mi/miscrinit.c for the sample
+server implementation.
+.nf
+
+ PixmapPtr
+ GetScratchPixmapHeader(pScreen, width, height, depth, bitsPerPixel, devKind, pPixData)
+ ScreenPtr pScreen;
+ int width;
+ int height;
+ int depth;
+ int bitsPerPixel;
+ int devKind;
+ pointer pPixData;
+
+ void FreeScratchPixmapHeader(pPixmap)
+ PixmapPtr pPixmap;
+
+.fi
+DDX should use these two DIX routines when it has a buffer of raw
+image data that it wants to manipulate as a pixmap temporarily,
+usually so that some other part of the server can be leveraged to
+perform some operation on the data. The data should be passed in
+pPixData, and will be stored in an implementation-dependent place
+(usually pPixmap->devPrivate.ptr). The other
+fields go into the corresponding PixmapRec fields.
+If successful, GetScratchPixmapHeader returns a valid PixmapPtr which can
+be used anywhere the server expects a pixmap, else
+it returns NULL. The pixmap should be released when no longer needed
+(usually within the same function that allocated it)
+with FreeScratchPixmapHeader.
+.NH 3
+Windows
+.XS
+Windows
+.XE
+.LP
+A window is a visible, or potentially visible, rectangle on the screen.
+DIX windowing functions maintain an internal n-ary tree data structure, which
+represents the current relationships of the mapped windows.
+Windows that are contained in another window are children of that window and
+are clipped to the boundaries of the parent.
+The root window in the tree is the window for the entire screen.
+Sibling windows constitute a doubly-linked list; the parent window has a pointer
+to the head and tail of this list.
+Each child also has a pointer to its parent.
+
+The border of a window is drawn by a DDX procedure when DIX requests that it
+be drawn. The contents of the window is drawn by the client through
+requests to the server.
+
+Window painting is orchestrated through an expose event system.
+When a region is exposed,
+DIX generates an expose event, telling the client to repaint the window and
+passing the region that is the minimal area needed to be repainted.
+
+As a favor to clients, the server may retain
+the output to the hidden parts of windows
+in off-screen memory; this is called "backing store".
+When a part of such a window becomes exposed, it
+can quickly move pixels into place instead of
+triggering an expose event and waiting for a client on the other
+end of the network to respond.
+Even if the network response is insignificant, the time to
+intelligently paint a section of a window is usually more than
+the time to just copy already-painted sections.
+At best, the repainting involves blanking out the area to a background color,
+which will take about the
+same amount of time.
+In this way, backing store can dramatically increase the
+performance of window moves.
+
+On the other hand, backing store can be quite complex, because
+all graphics drawn to hidden areas must be intercepted and redirected
+to the off-screen window sections.
+Not only can this be complicated for the server programmer,
+but it can also impact window painting performance.
+The backing store implementation can choose, at any time, to
+forget pieces of backing that are written into, relying instead upon
+expose events to repaint for simplicity.
+
+In X, the decision to use the backing-store scheme is made
+by you, the server implementor.
+X provides hooks for implementing backing store, therefore
+the decision to use this strategy can be made on the fly.
+For example, you may use backing store only for certain windows
+that the user requests or you may use backing store
+until memory runs out, at which time you
+start dropping pieces of backing as needed to make more room.
+
+When a window operation is requested by the client,
+such as a window being created or moved,
+a new state is computed.
+During this transition, DIX informs DDX what rectangles in what windows are about to
+become obscured and what rectangles in what windows have become exposed.
+This provides a hook for the implementation of backing store.
+If DDX is unable to restore exposed regions, DIX generates expose
+events to the client.
+It is then the client's responsibility to paint the
+window parts that were exposed but not restored.
+
+If a window is resized, pixels sometimes need to be
+moved, depending upon
+the application.
+The client can request "Gravity" so that
+certain blocks of the window are
+moved as a result of a resize.
+For instance, if the window has controls or other items
+that always hang on the edge of the
+window, and that edge is moved as a result of the resize,
+then those pixels should be moved
+to avoid having the client repaint it.
+If the client needs to repaint it anyway, such an operation takes
+time, so it is desirable
+for the server to approximate the appearance of the window as best
+it can while waiting for the client
+to do it perfectly.
+Gravity is used for that, also.
+
+The window has several fields used in drawing
+operations:
+.IP \(bu 5
+clipList - This region, in conjunction with
+the client clip region in the gc, is used to clip output.
+clipList has the window's children subtracted from it, in addition to pieces of sibling windows
+that overlap this window. To get the list with the
+children included (subwindow-mode is IncludeInferiors),
+the routine NotClippedByChildren(pWin) returns the unclipped region.
+.IP \(bu 5
+borderClip is the region used by CopyWindow and
+includes the area of the window, its children, and the border, but with the
+overlapping areas of sibling children removed.
+.LP
+Most of the other fields are for DIX use only.
+
+.NH 4
+Window Procedures in the ScreenRec
+.XS
+Window Procedures in the ScreenRec
+.XE
+.LP
+You should implement
+all of the following procedures and store pointers to them in the screen record.
+
+The device-independent portion of the server "owns" the window tree.
+However, clever hardware might want to know the relationship of
+mapped windows. There are pointers to procedures
+in the ScreenRec data structure that are called to give the hardware
+a chance to update its internal state. These are helpers and
+hints to DDX only;
+they do not change the window tree, which is only changed by DIX.
+.nf
+
+ Bool pScreen->CreateWindow(pWin)
+ WindowPtr pWin;
+
+.fi
+This routine is a hook for when DIX creates a window.
+It should fill in the "Window Procedures in the WindowRec" below
+and also allocate the devPrivate block for it.
+
+See Xserver/mfb/mfbwindow.c for the sample server implementation.
+.nf
+
+ Bool pScreen->DestroyWindow(pWin);
+ WindowPtr pWin;
+
+.fi
+This routine is a hook for when DIX destroys a window.
+It should deallocate the devPrivate block for it and any other blocks that need
+to be freed, besides doing other cleanup actions.
+
+See Xserver/mfb/mfbwindow.c for the sample server implementation.
+.nf
+
+ Bool pScreen->PositionWindow(pWin, x, y);
+ WindowPtr pWin;
+ int x, y;
+
+.fi
+This routine is a hook for when DIX moves or resizes a window.
+It should do whatever private operations need to be done when a window is moved or resized.
+For instance, if DDX keeps a pixmap tile used for drawing the background
+or border, and it keeps the tile rotated such that it is longword
+aligned to longword locations in the frame buffer, then you should rotate your tiles here.
+The actual graphics involved in moving the pixels on the screen and drawing the
+border are handled by CopyWindow(), below.
+.LP
+See Xserver/mfb/mfbwindow.c for the sample server implementation.
+.nf
+
+ Bool pScreen->RealizeWindow(pWin);
+ WindowPtr pWin;
+
+ Bool pScreen->UnrealizeWindow(pWin);
+ WindowPtr pWin;
+
+.fi
+These routines are hooks for when DIX maps (makes visible) and unmaps
+(makes invisible) a window. It should do whatever private operations
+need to be done when these happen, such as allocating or deallocating
+structures that are only needed for visible windows. RealizeWindow
+does NOT draw the window border, background or contents;
+UnrealizeWindow does NOT erase the window or generate exposure events
+for underlying windows; this is taken care of by DIX. DIX does,
+however, call PaintWindowBackground() and PaintWindowBorder() to
+perform some of these.
+.nf
+
+ Bool pScreen->ChangeWindowAttributes(pWin, vmask)
+ WindowPtr pWin;
+ unsigned long vmask;
+
+.fi
+ChangeWindowAttributes is called whenever DIX changes window
+attributes, such as the size, front-to-back ordering, title, or
+anything of lesser severity that affects the window itself. The
+sample server implements this routine. It computes accelerators for
+quickly putting up background and border tiles. (See description of
+the set of routines stored in the WindowRec.)
+.nf
+
+ int pScreen->ValidateTree(pParent, pChild, kind)
+ WindowPtr pParent, pChild;
+ VTKind kind;
+
+.fi
+ValidateTree calculates the clipping region for the parent window and
+all of its children. This routine must be provided. The sample server
+has a machine-independent version in Xserver/mi/mivaltree.c. This is
+a very difficult routine to replace.
+.nf
+
+ void pScreen->PostValidateTree(pParent, pChild, kind)
+ WindowPtr pParent, pChild;
+ VTKind kind;
+
+.fi
+If this routine is not NULL, DIX calls it shortly after calling
+ValidateTree, passing it the same arguments. This is useful for
+managing multi-layered framebuffers.
+The sample server sets this to NULL.
+.nf
+
+ void pScreen->WindowExposures(pWin, pRegion, pBSRegion)
+ WindowPtr pWin;
+ RegionPtr pRegion;
+ RegionPtr pBSRegion;
+
+.fi
+The WindowExposures() routine
+paints the border and generates exposure events for the window.
+pRegion is an unoccluded region of the window, and pBSRegion is an
+occluded region that has backing store.
+Since exposure events include a rectangle describing what was exposed,
+this routine may have to send back a series of exposure events, one for
+each rectangle of the region.
+The count field in the expose event is a hint to the
+client as to the number of
+regions that are after this one.
+This routine must be provided. The sample
+server has a machine-independent version in Xserver/mi/miexpose.c.
+.nf
+
+ void pScreen->ClipNotify (pWin, dx, dy)
+ WindowPtr pWin;
+ int dx, dy;
+
+.fi
+Whenever the cliplist for a window is changed, this function is called to
+perform whatever hardware manipulations might be necessary. When called,
+the clip list and border clip regions in the window are set to the new
+values. dx,dy are the distance that the window has been moved (if at all).
+.NH 4
+Window Painting Procedures
+.XS
+Window Painting Procedures
+.XE
+.LP
+In addition to the procedures listed above, there are four routines which
+manipulate the actual window image directly.
+In the sample server, mi implementations will work for
+most purposes and mfb/cfb routines speed up situations, such
+as solid backgrounds/borders or tiles that are 8, 16 or 32 pixels square.
+
+These three routines are used for systems that implement a backing-store scheme for it to
+know when to stash away areas of pixels and to restore or reposition them.
+.nf
+
+ void pScreen->ClearToBackground(pWin, x, y, w, h, generateExposures);
+ WindowPtr pWin;
+ int x, y, w, h;
+ Bool generateExposures;
+
+.fi
+This routine is called on a window in response to a ClearToBackground request
+from the client.
+This request has two different but related functions, depending upon generateExposures.
+
+If generateExposures is true, the client is declaring that the given rectangle
+on the window is incorrectly painted and needs to be repainted.
+The sample server implementation calculates the exposure region
+and hands it to the DIX procedure HandleExposures(), which
+calls the WindowExposures() routine, below, for the window
+and all of its child windows.
+
+If generateExposures is false, the client is trying to simply erase part
+of the window to the background fill style.
+ClearToBackground should write the background color or tile to the
+rectangle in question (probably using PaintWindowBackground).
+If w or h is zero, it clears all the way to the right or lower edge of the window.
+
+The sample server implementation is in Xserver/mi/miwindow.c.
+.nf
+
+ void pScreen->PaintWindowBackground(pWin, region, kind)
+ WindowPtr pWin;
+ RegionPtr region;
+ int kind; /* must be PW_BACKGROUND */
+
+ void pScreen->PaintWindowBorder(pWin, region, kind)
+ WindowPtr pWin;
+ RegionPtr region;
+ int kind; /* must be PW_BORDER */
+
+.fi
+These two routines are for painting pieces of the window background or border.
+They both actually paint the area designated by region.
+The kind parameter is a defined constant that is always PW_BACKGROUND
+or PW_BORDER, as shown.
+Therefore, you can use the same routine for both.
+The defined constant tells the routine whether to use the window's
+border fill style or its background fill style to paint the given region.
+Both fill styles consist of a union which holds a tile pointer and a pixel
+value, along with a separate variable which indicates which entry is valid.
+For PW_BORDER, borderIsPixel != 0 indicates that the border PixUnion
+contains a pixel value, else a tile. For PW_BACKGROUND there are four
+values, contained in backgroundState; None, ParentRelative, BackgroundPixmap
+and BackgroundPixel. None indicates that the region should be left
+unfilled, while ParentRelative indicates that the background of the parent is
+inherited (see the Protocol document for the exact semantics).
+.nf
+
+ void pScreen->CopyWindow(pWin, oldpt, oldRegion);
+ WindowPtr pWin;
+ DDXPointRec oldpt;
+ RegionPtr oldRegion;
+
+.fi
+CopyWindow is called when a window is moved, and graphically moves to
+pixels of a window on the screen. It should not change any other
+state within DDX (see PositionWindow(), above).
+
+oldpt is the old location of the upper-left corner. oldRegion is the
+old region it is coming from. The new location and new region is
+stored in the WindowRec. oldRegion might modified in place by this
+routine (the sample implementation does this).
+
+CopyArea could be used, except that this operation has more
+complications. First of all, you do not want to copy a rectangle onto
+a rectangle. The original window may be obscured by other windows,
+and the new window location may be similarly obscured. Second, some
+hardware supports multiple windows with multiple depths, and your
+routine needs to take care of that.
+
+The pixels in oldRegion (with reference point oldpt) are copied to the
+window's new region (pWin->borderClip). pWin->borderClip is gotten
+directly from the window, rather than passing it as a parameter.
+
+The sample server implementation is in Xserver/mfb/mfbwindow.c.
+
+.NH 4
+Screen Operations for Backing Store
+.XS
+Screen Operations for Backing Store
+.XE
+.LP
+Each ScreenRec has six functions which provide the backing store
+interface. For screens not supporting backing store, these pointers
+may be nul. Servers that implement some backing store scheme
+must fill in the procedure pointers for the procedures below,
+and must maintain the backStorage field in each window struct.
+The sample implementation is in mi/mibstore.c.
+.nf
+
+ void pScreen->SaveDoomedAreas(pWin, pRegion, dx, dy)
+ WindowPtr pWin;
+ RegionPtr pRegion;
+ int dx, dy;
+
+.fi
+This routine saves the newly obscured region, pRegion, in backing store.
+dx, dy indicate how far the window is being moved, useful as the obscured
+region is relative to the window as it will appear in the new location,
+rather then relative to the bits as the are on the screen when the function
+is invoked.
+.nf
+
+ RegionPtr pScreen->RestoreAreas(pWin, pRegion)
+ WindowPtr pWin;
+ RegionPtr pRegion;
+
+.fi
+This looks at the exposed region of the window, pRegion, and tries to
+restore to the screen the parts that have been saved. It removes the
+restored parts from the backing storage (because they are now on the screen)
+and subtracts the areas from the exposed region. The returned region is the
+area of the window which should have expose events generated for and can be
+either a new region, pWin->exposed, or NULL. The region left in
+pRegion is set to the area of the window which should be painted with
+the window background.
+.nf
+
+ RegionPtr pScreen->TranslateBackingStore(pWin, dx, dy, oldClip, oldx, oldy)
+ WindowPtr pWin;
+ int dx, dy;
+ RegionPtr oldClip;
+ int oldx, oldy;
+
+.fi
+This is called when the window is moved or resized so that the backing
+store can be translated if necessary. oldClip is the old cliplist for
+the window, which is used to save doomed areas if the window is moved
+underneath its parent as a result of bitgravity. The returned region
+represents occluded areas of the window for which the backing store
+contents are invalid.
+.nf
+
+ void pScreen->ExposeCopy(pSrc, pDst, pGC, prgnExposed, srcx, srcy, dstx, dsty, plane)
+ WindowPtr pSrc;
+ DrawablePtr pDst;
+ GCPtr pGC;
+ RegionPtr prgnExposed;
+ int srcx;
+ int srcy;
+ int dstx;
+ int dsty;
+ unsigned long plane;
+
+.fi
+Copies a region from the backing store of pSrc to pDst.
+.nf
+
+ RegionPtr pScreen->ClearBackingStore(pWindow, x, y, w, h, generateExposures)
+ WindowPtr pWindow;
+ int x;
+ int y;
+ int w;
+ int h;
+ Bool generateExposures;
+
+.fi
+Clear the given area of the backing pixmap with the background of
+the window. If generateExposures is TRUE, generate
+exposure events for the area. Note that if the area has any
+part outside the saved portions of the window, we do not allow the
+count in the expose events to be 0, since there will be more
+expose events to come.
+.nf
+
+ void pScreen->DrawGuarantee(pWindow, pGC, guarantee)
+ WindowPtr pWindow;
+ GCPtr pGC;
+ int guarantee;
+
+.fi
+This informs the backing store layer that you are about to validate
+a gc with a window, and that subsequent output to the window
+is (or is not) guaranteed to be already clipped to the visible
+regions of the window.
+
+.NH 4
+Screen Operations for Multi-Layered Framebuffers
+.XS
+Screen Operations for Multi-Layered Framebuffers
+.XE
+.LP
+The following screen functions are useful if you have a framebuffer with
+multiple sets of independent bit planes, e.g. overlays or underlays in
+addition to the "main" planes. If you have a simple single-layer
+framebuffer, you should probably use the mi versions of these routines
+in mi/miwindow.c. This can be easily accomplished by calling miScreenInit.
+.nf
+
+ void pScreen->MarkWindow(pWin)
+ WindowPtr pWin;
+
+.fi
+This formerly dix function MarkWindow has moved to ddx and is accessed
+via this screen function. This function should store something,
+usually a pointer to a device-dependent structure, in pWin->valdata so
+that ValidateTree has the information it needs to validate the window.
+.nf
+
+ Bool pScreen->MarkOverlappedWindows(parent, firstChild, ppLayerWin)
+ WindowPtr parent;
+ WindowPtr firstChild;
+ WindowPtr * ppLayerWin;
+
+.fi
+This formerly dix function MarkWindow has moved to ddx and is accessed
+via this screen function. In the process, it has grown another
+parameter: ppLayerWin, which is filled in with a pointer to the window
+at which save under marking and ValidateTree should begin. In the
+single-layered framebuffer case, pLayerWin == pWin.
+.nf
+
+ Bool pScreen->ChangeSaveUnder(pLayerWin, firstChild)
+ WindowPtr pLayerWin;
+ WindowPtr firstChild;
+
+.fi
+The dix functions ChangeSaveUnder and CheckSaveUnder have moved to ddx and
+are accessed via this screen function. pLayerWin should be the window
+returned in the ppLayerWin parameter of MarkOverlappedWindows. The function
+may turn on backing store for windows that might be covered, and may partially
+turn off backing store for windows. It returns TRUE if PostChangeSaveUnder
+needs to be called to finish turning off backing store.
+.nf
+
+ void pScreen->PostChangeSaveUnder(pLayerWin, firstChild)
+ WindowPtr pLayerWin;
+ WindowPtr firstChild;
+
+.fi
+The dix function DoChangeSaveUnder has moved to ddx and is accessed via
+this screen function. This function completes the job of turning off
+backing store that was started by ChangeSaveUnder.
+.nf
+
+ void pScreen->MoveWindow(pWin, x, y, pSib, kind)
+ WindowPtr pWin;
+ int x;
+ int y;
+ WindowPtr pSib;
+ VTKind kind;
+
+.fi
+The formerly dix function MoveWindow has moved to ddx and is accessed via
+this screen function. The new position of the window is given by
+x,y. kind is VTMove if the window is only moving, or VTOther if
+the border is also changing.
+.nf
+
+ void pScreen->ResizeWindow(pWin, x, y, w, h, pSib)
+ WindowPtr pWin;
+ int x;
+ int y;
+ unsigned int w;
+ unsigned int h;
+ WindowPtr pSib;
+
+.fi
+The formerly dix function SlideAndSizeWindow has moved to ddx and is accessed via
+this screen function. The new position is given by x,y. The new size
+is given by w,h.
+.nf
+
+ WindowPtr pScreen->GetLayerWindow(pWin)
+ WindowPtr pWin
+
+.fi
+This is a new function which returns a child of the layer parent of pWin.
+.nf
+
+ void pScreen->HandleExposures(pWin)
+ WindowPtr pWin;
+
+.fi
+The formerly dix function HandleExposures has moved to ddx and is accessed via
+this screen function. This function is called after ValidateTree and
+uses the information contained in valdata to send exposures to windows.
+.nf
+
+ void pScreen->ReparentWindow(pWin, pPriorParent)
+ WindowPtr pWin;
+ WindowPtr pPriorParent;
+
+.fi
+This function will be called when a window is reparented. At the time of
+the call, pWin will already be spliced into its new position in the
+window tree, and pPriorParent is its previous parent. This function
+can be NULL.
+.nf
+
+ void pScreen->SetShape(pWin)
+ WindowPtr pWin;
+
+.fi
+The formerly dix function SetShape has moved to ddx and is accessed via
+this screen function. The window's new shape will have already been
+stored in the window when this function is called.
+.nf
+
+ void pScreen->ChangeBorderWidth(pWin, width)
+ WindowPtr pWin;
+ unsigned int width;
+
+.fi
+The formerly dix function ChangeBorderWidth has moved to ddx and is accessed via
+this screen function. The new border width is given by width.
+.nf
+
+ void pScreen->MarkUnrealizedWindow(pChild, pWin, fromConfigure)
+ WindowPtr pChild;
+ WindowPtr pWin;
+ Bool fromConfigure;
+
+.fi
+This function is called for windows that are being unrealized as part of
+an UnrealizeTree. pChild is the window being unrealized, pWin is an
+ancestor, and the fromConfigure value is simply propogated from UnrealizeTree.
+.NH 2
+Graphics Contexts and Validation
+.XS
+Graphics Contexts and Validation
+.XE
+.LP
+This graphics context (GC) contains state variables such as foreground and
+background pixel value (color), the current line style and width,
+the current tile or stipple for pattern generation, the current font for text
+generation, and other similar attributes.
+
+In many graphics systems, the equivalent of the graphics context and the
+drawable are combined as one entity.
+The main distinction between the two kinds of status is that a drawable
+describes a writing surface and the writings that may have already been done
+on it, whereas a graphics context describes the drawing process.
+A drawable is like a chalkboard.
+A GC is like a piece of chalk.
+
+Unlike many similar systems, there is no "current pen location."
+Every graphic operation is accompanied by the coordinates where it is to happen.
+
+The GC also includes two vectors of procedure pointers, the first
+operate on the GC itself and are called GC funcs. The second, called
+GC ops,
+contains the functions that carry out the fundamental graphic operations
+such as drawing lines, polygons, arcs, text, and copying bitmaps.
+The DDX graphic software can, if it
+wants to be smart, change these two vectors of procedure pointers
+to take advantage of hardware/firmware in the server machine, which can do
+a better job under certain circumstances. To reduce the amount of memory
+consumed by each GC, it is wise to create a few "boilerplate" GC ops vectors
+which can be shared by every GC which matches the constraints for that set.
+Also, it is usually reasonable to have every GC created by a particular
+module to share a common set of GC funcs. Samples of this sort of
+sharing can be seen in cfb/cfbgc.c and mfb/mfbgc.c.
+
+The DDX software is notified any time the client (or DIX) uses a changed GC.
+For instance, if the hardware has special support for drawing fixed-width
+fonts, DDX can intercept changes to the current font in a GC just before
+drawing is done. It can plug into either a fixed-width procedure that makes
+the hardware draw characters, or a variable-width procedure that carefully
+lays out glyphs by hand in software, depending upon the new font that is
+selected.
+
+A definition of these structures can be found in the file
+Xserver/include/gcstruct.h.
+
+Also included in each GC is an array of devPrivates which portions of the
+DDX can use for any reason. Entries in this array are allocated with
+AllocateGCPrivateIndex() (see Wrappers and Privates below).
+
+The DIX routines available for manipulating GCs are
+CreateGC, ChangeGC, CopyGC, SetClipRects, SetDashes, and FreeGC.
+.nf
+
+ GCPtr CreateGC(pDrawable, mask, pval, pStatus)
+ DrawablePtr pDrawable;
+ BITS32 mask;
+ XID *pval;
+ int *pStatus;
+
+ int ChangeGC(pGC, mask, pval)
+ GCPtr pGC;
+ BITS32 mask;
+ XID *pval;
+
+ int CopyGC(pgcSrc, pgcDst, mask)
+ GCPtr pgcSrc;
+ GCPtr pgcDst;
+ BITS32 mask;
+
+ int SetClipRects(pGC, xOrigin, yOrigin, nrects, prects, ordering)
+ GCPtr pGC;
+ int xOrigin, yOrigin;
+ int nrects;
+ xRectangle *prects;
+ int ordering;
+
+ SetDashes(pGC, offset, ndash, pdash)
+ GCPtr pGC;
+ unsigned offset;
+ unsigned ndash;
+ unsigned char *pdash;
+
+ int FreeGC(pGC, gid)
+ GCPtr pGC;
+ GContext gid;
+
+.fi
+
+As a convenience, each Screen structure contains an array of
+GCs that are preallocated, one at each depth the screen supports.
+These are particularly useful in the mi code. Two DIX routines
+must be used to get these GCs:
+.nf
+
+ GCPtr GetScratchGC(depth, pScreen)
+ int depth;
+ ScreenPtr pScreen;
+
+ FreeScratchGC(pGC)
+ GCPtr pGC;
+
+.fi
+Always use these two routines, don't try to extract the scratch
+GC yourself -- someone else might be using it, so a new one must
+be created on the fly.
+
+If you need a GC for a very long time, say until the server is restarted,
+you should not take one from the pool used by GetScratchGC, but should
+get your own using CreateGC or CreateScratchGC.
+This leaves the ones in the pool free for routines that only need it for
+a little while and don't want to pay a heavy cost to get it.
+.nf
+
+ GCPtr CreateScratchGC(pScreen, depth)
+ ScreenPtr pScreen;
+ int depth;
+
+.fi
+NULL is returned if the GC cannot be created.
+The GC returned can be freed with FreeScratchGC.
+
+.NH 3
+Details of operation
+.XS
+Details of operation
+.XE
+.LP
+At screen initialization, a screen must supply a GC creation procedure.
+At GC creation, the screen must fill in GC funcs and GC ops vectors
+(Xserver/include/gcstruct.h). For any particular GC, the func vector
+must remain constant, while the op vector may vary. This invariant is to
+ensure that Wrappers work correctly.
+
+When a client request is processed that results in a change
+to the GC, the device-independent state of the GC is updated.
+This includes a record of the state that changed.
+Then the ChangeGC GC func is called.
+This is useful for graphics subsystems that are able to process
+state changes in parallel with the server CPU.
+DDX may opt not to take any action at GC-modify time.
+This is more efficient if multiple GC-modify requests occur
+between draws using a given GC.
+
+Validation occurs at the first draw operation that specifies the GC after
+that GC was modified. DIX calls then the ValidateGC GC func. DDX should
+then update its internal state. DDX internal state may be stored as one or
+more of the following: 1) device private block on the GC; 2) hardware
+state; 3) changes to the GC ops.
+
+The GC contains a serial number, which is loaded with a number fetched from
+the window that was drawn into the last time the GC was used. The serial
+number in the drawable is changed when the drawable's
+clipList or absCorner changes. Thus, by
+comparing the GC serial number with the drawable serial number, DIX can
+force a validate if the drawable has been changed since the last time it
+was used with this GC.
+
+In addition, the drawable serial number is always guaranteed to have the
+most significant bit set to 0. Thus, the DDX layer can set the most
+significant bit of the serial number to 1 in a GC to force a validate the next time
+the GC is used. DIX also uses this technique to indicate that a change has
+been made to the GC by way of a SetGC, a SetDashes or a SetClip request.
+
+.NH 3
+GC Handling Routines
+.XS
+GC Handling Routines
+.XE
+.LP
+The ScreenRec data structure has a pointer for
+CreateGC().
+.nf
+
+ Bool pScreen->CreateGC(pGC)
+ GCPtr pGC;
+.fi
+This routine must fill in the fields of
+a dynamically allocated GC that is passed in.
+It does NOT allocate the GC record itself or fill
+in the defaults; DIX does that.
+
+This must fill in both the GC funcs and ops; none of the drawing
+functions will be called before the GC has been validated,
+but the others (dealing with allocating of clip regions,
+changing and destroying the GC, etc.) might be.
+
+The GC funcs vector contains pointers to 7
+routines and a devPrivate field:
+.nf
+
+ pGC->funcs->ChangeGC(pGC, changes)
+ GCPtr pGC;
+ unsigned long changes;
+
+.fi
+This GC func is called immediately after a field in the GC is changed.
+changes is a bit mask indicating the changed fields of the GC in this
+request.
+
+The ChangeGC routine is useful if you have a system where
+state-changes to the GC can be swallowed immediately by your graphics
+system, and a validate is not necessary.
+
+.nf
+
+ pGC->funcs->ValidateGC(pGC, changes, pDraw)
+ GCPtr pGC;
+ unsigned long changes;
+ DrawablePtr pDraw;
+
+.fi
+ValidateGC is called by DIX just before the GC will be used when one
+of many possible changes to the GC or the graphics system has
+happened. It can modify a devPrivates field of the GC or its
+contents, change the op vector, or change hardware according to the
+values in the GC. It may not change the device-independent portion of
+the GC itself.
+
+In almost all cases, your ValidateGC() procedure should take the
+regions that drawing needs to be clipped to and combine them into a
+composite clip region, which you keep a pointer to in the private part
+of the GC. In this way, your drawing primitive routines (and whatever
+is below them) can easily determine what to clip and where. You
+should combine the regions clientClip (the region that the client
+desires to clip output to) and the region returned by
+NotClippedByChildren(), in DIX. An example is in Xserver/mfb/mfbgc.c.
+
+Some kinds of extension software may cause this routine to be called
+more than originally intended; you should not rely on algorithms that
+will break under such circumstances.
+
+See the Strategies document for more information on creatively using
+this routine.
+
+.nf
+
+ pGC->funcs->CopyGC(pGCSrc, mask, pGCDst)
+ GCPtr pGCSrc;
+ unsigned long mask;
+ GCPtr pGCDst;
+
+.fi
+This routine is called by DIX when a GC is being copied to another GC.
+This is for situations where dynamically allocated chunks of memory
+are hanging off a GC devPrivates field which need to be transferred to
+the destination GC.
+.nf
+
+ pGC->funcs->DestroyGC(pGC)
+ GCPtr pGC;
+
+.fi
+This routine is called before the GC is destroyed for the
+entity interested in this GC to clean up after itself.
+This routine is responsible for freeing any auxiliary storage allocated.
+
+.NH 3
+GC Clip Region Routines
+.XS
+GC Clip Region Routines
+.XE
+.LP
+The GC clientClip field requires three procedures to manage it. These
+procedures are in the GC funcs vector. The underlying principle is that dix
+knows nothing about the internals of the clipping information, (except when
+it has come from the client), and so calls ddX whenever it needs to copy,
+set, or destroy such information. It could have been possible for dix not
+to allow ddX to touch the field in the GC, and require it to keep its own
+copy in devPriv, but since clip masks can be very large, this seems like a
+bad idea. Thus, the server allows ddX to do whatever it wants to the
+clientClip field of the GC, but requires it to do all manipulation itself.
+.nf
+
+ void pGC->funcs->ChangeClip(pGC, type, pValue, nrects)
+ GCPtr pGC;
+ int type;
+ char *pValue;
+ int nrects;
+
+.fi
+This routine is called whenever the client changes the client clip
+region. The pGC points to the GC involved, the type tells what form
+the region has been sent in. If type is CT_NONE, then there is no
+client clip. If type is CT_UNSORTED, CT_YBANDED or CT_YXBANDED, then
+pValue pointer to a list of rectangles, nrects long. If type is
+CT_REGION, then pValue pointer to a RegionRec from the mi region code.
+If type is CT_PIXMAP pValue is a pointer to a pixmap. (The defines
+for CT_NONE, etc. are in Xserver/include/gc.h.) This routine is
+responsible for incrementing any necessary reference counts (e.g. for
+a pixmap clip mask) for the new clipmask and freeing anything that
+used to be in the GC's clipMask field. The lists of rectangles passed
+in can be freed with Xfree(), the regions can be destroyed with the
+RegionDestroy field in the screen, and pixmaps can be destroyed by
+calling the screen's DestroyPixmap function. DIX and MI code expect
+what they pass in to this to be freed or otherwise inaccessible, and
+will never look inside what's been put in the GC. This is a good
+place to be wary of storage leaks.
+.LP
+In the sample server, this routine transforms either the bitmap or the
+rectangle list into a region, so that future routines will have a more
+predictable starting point to work from. (The validate routine must
+take this client clip region and merge it with other regions to arrive
+at a composite clip region before any drawing is done.)
+.nf
+
+ void pGC->funcs->DestroyClip(pGC)
+ GCPtr pGC;
+
+.fi
+This routine is called whenever the client clip region must be destroyed.
+The pGC points to the GC involved. This call should set the clipType
+field of the GC to CT_NONE.
+In the sample server, the pointer to the client clip region is set to NULL
+by this routine after destroying the region, so that other software
+(including ChangeClip() above) will recognize that there is no client clip region.
+.nf
+
+ void pGC->funcs->CopyClip(pgcDst, pgcSrc)
+ GCPtr pgcDst, pgcSrc;
+
+.fi
+This routine makes a copy of the clipMask and clipType from pgcSrc
+into pgcDst. It is responsible for destroying any previous clipMask
+in pgcDst. The clip mask in the source can be the same as the
+clip mask in the dst (clients do the strangest things), so care must
+be taken when destroying things. This call is required because dix
+does not know how to copy the clip mask from pgcSrc.
+
+.NH 2
+Drawing Primitives
+.XS
+Drawing Primitives
+.XE
+.LP
+The X protocol (rules for the byte stream that goes between client and server)
+does all graphics using primitive
+operations, which are called Drawing Primitives.
+These include line drawing, area filling, arcs, and text drawing.
+Your implementation must supply 16 routines
+to perform these on your hardware.
+(The number 16 is arbitrary.)
+
+More specifically, 16 procedure pointers are in each
+GC op vector.
+At any given time, ALL of them MUST point to a valid procedure that
+attempts to do the operation assigned, although
+the procedure pointers may change and may
+point to different procedures to carry out the same operation.
+A simple server will leave them all pointing to the same 16 routines, while
+a more optimized implementation will switch each from one
+procedure to another, depending upon what is most optimal
+for the current GC and drawable.
+
+The sample server contains a considerable chunk of code called the
+mi (machine independent)
+routines, which serve as drawing primitive routines.
+Many server implementations will be able to use these as-is,
+because they work for arbitrary depths.
+They make no assumptions about the formats of pixmaps
+and frame buffers, since they call a set of routines
+known as the "Pixblit Routines" (see next section).
+They do assume that the way to draw is
+through these low-level routines that apply pixel values rows at a time.
+If your hardware or firmware gives more performance when
+things are done differently, you will want to take this fact into account
+and rewrite some or all of the drawing primitives to fit your needs.
+
+.NH 3
+GC Components
+.XS
+GC Components
+.XE
+.LP
+This section describes the fields in the GC that affect each drawing primitive.
+The only primitive that is not affected is GetImage, which does not use a GC
+because its destination is a protocol-style bit image.
+Since each drawing primitive mirrors exactly the X protocol request of the
+same name, you should refer to the X protocol specification document
+for more details.
+
+ALL of these routines MUST CLIP to the
+appropriate regions in the drawable.
+Since there are many regions to clip to simultaneously,
+your ValidateGC routine should combine these into a unified
+clip region to which your drawing routines can quickly refer.
+This is exactly what the cfb and mfb routines supplied with the sample server
+do.
+The mi implementation passes responsibility for clipping while drawing
+down to the Pixblit routines.
+
+Also, all of them must adhere to the current plane mask.
+The plane mask has one bit for every bit plane in the drawable;
+only planes with 1 bits in the mask are affected by any drawing operation.
+
+All functions except for ImageText calls must obey the alu function.
+This is usually Copy, but could be any of the allowable 16 raster-ops.
+
+All of the functions, except for CopyArea, might use the current
+foreground and background pixel values.
+Each pixel value is 32 bits.
+These correspond to foreground and background colors, but you have
+to run them through the colormap to find out what color the pixel values
+represent. Do not worry about the color, just apply the pixel value.
+
+The routines that draw lines (PolyLine, PolySegment, PolyRect, and PolyArc)
+use the line width, line style, cap style, and join style.
+Line width is in pixels.
+The line style specifies whether it is solid or dashed, and what kind of dash.
+The cap style specifies whether Rounded, Butt, etc.
+The join style specifies whether joins between joined lines are Miter, Round or Beveled.
+When lines cross as part of the same polyline, they are assumed to be drawn once.
+(See the X protocol specification for more details.)
+
+Zero-width lines are NOT meant to be really zero width; this is the client's way
+of telling you that you can optimize line drawing with little regard to
+the end caps and joins.
+They are called "thin" lines and are meant to be one pixel wide.
+These are frequently done in hardware or in a streamlined assembly language
+routine.
+
+Lines with widths greater than zero, though, must all be drawn with the same
+algorithm, because client software assumes that every jag on every
+line at an angle will come at the same place.
+Two lines that should have
+one pixel in the space between them
+(because of their distance apart and their widths) should have such a one-pixel line
+of space between them if drawn, regardless of angle.
+
+The solid area fill routines (FillPolygon, PolyFillRect, PolyFillArc)
+all use the fill rule, which specifies subtle interpretations of
+what points are inside and what are outside of a given polygon.
+The PolyFillArc routine also uses the arc mode, which specifies
+whether to fill pie segments or single-edge slices of an ellipse.
+
+The line drawing, area fill, and PolyText routines must all
+apply the correct "fill style."
+This can be either a solid foreground color, a transparent stipple,
+an opaque stipple, or a tile.
+Stipples are bitmaps where the 1 bits represent that the foreground color is written,
+and 0 bits represent that either the pixel is left alone (transparent) or that
+the background color is written (opaque).
+A tile is a pixmap of the full depth of the GC that is applied in its full glory to all areas.
+The stipple and tile patterns can be any rectangular size, although some implementations
+will be faster for certain sizes such as 8x8 or 32x32.
+The mi implementation passes this responsibility down to the Pixblit routines.
+
+See the X protocol document for full details.
+The description of the CreateGC request has a very good, detailed description of these
+attributes.
+
+.NH 3
+The Primitives
+.XS
+The Primitives
+.XE
+.LP
+The Drawing Primitives are as follows:
+
+.nf
+
+ RegionPtr pGC->ops->CopyArea(src, dst, pGC, srcx, srcy, w, h, dstx, dsty)
+ DrawablePtr dst, src;
+ GCPtr pGC;
+ int srcx, srcy, w, h, dstx, dsty;
+
+.fi
+CopyArea copies a rectangle of pixels from one drawable to another of
+the same depth. To effect scrolling, this must be able to copy from
+any drawable to itself, overlapped. No squeezing or stretching is done
+because the source and destination are the same size. However,
+everything is still clipped to the clip regions of the destination
+drawable.
+
+If pGC->graphicsExposures is True, any portions of the destination which
+were not valid in the source (either occluded by covering windows, or
+outside the bounds of the drawable) should be collected together and
+returned as a region (if this resultant region is empty, NULL can be
+returned instead). Furthermore, the invalid bits of the source are
+not copied to the destination and (when the destination is a window)
+are filled with the background tile. The sample routine
+miHandleExposures generates the appropriate return value and fills the
+invalid area using pScreen->PaintWindowBackground.
+
+For instance, imagine a window that is partially obscured by other
+windows in front of it. As text is scrolled on your window, the pixels
+that are scrolled out from under obscuring windows will not be
+available on the screen to copy to the right places, and so an exposure
+event must be sent for the client to correctly repaint them. Of
+course, if you implement some sort of backing store, you could do this
+without resorting to exposure events.
+
+An example implementation is mfbCopyArea() in Xserver/mfb/mfbbitblt.c.
+.nf
+
+ RegionPtr pGC->ops->CopyPlane(src, dst, pGC, srcx, srcy, w, h, dstx, dsty, plane)
+ DrawablePtr dst, src;
+ GCPtr pGC;
+ int srcx, srcy, w, h, dstx, dsty;
+ unsigned long plane;
+
+.fi
+CopyPlane must copy one plane of a rectangle from the source drawable
+onto the destination drawable. Because this routine only copies one
+bit out of each pixel, it can copy between drawables of different
+depths. This is the only way of copying between drawables of
+different depths, except for copying bitmaps to pixmaps and applying
+foreground and background colors to it. All other conditions of
+CopyArea apply to CopyPlane too.
+
+An example implementation is mfbCopyPlane() in
+Xserver/mfb/mfbbitblt.c.
+.nf
+
+ void pGC->ops->PolyPoint(dst, pGC, mode, n, pPoint)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int mode;
+ int n;
+ DDXPointPtr pPoint;
+
+.fi
+PolyPoint draws a set of one-pixel dots (foreground color)
+at the locations given in the array.
+mode is one of the defined constants Origin (absolute coordinates) or Previous
+(each coordinate is relative to the last).
+Note that this does not use the background color or any tiles or stipples.
+
+Example implementations are mfbPolyPoint() in Xserver/mfb/mfbpolypnt.c and
+miPolyPoint in Xserver/mi/mipolypnt.c.
+.nf
+
+ void pGC->ops->Polylines(dst, pGC, mode, n, pPoint)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int mode;
+ int n;
+ DDXPointPtr pPoint;
+
+.fi
+Similar to PolyPoint, Polylines draws lines between the locations given in the array.
+Zero-width lines are NOT meant to be really zero width; this is the client's way of
+telling you that you can maximally optimize line drawing with little regard to
+the end caps and joins.
+mode is one of the defined constants Previous or Origin, depending upon
+whether the points are each relative to the last or are absolute.
+
+Example implementations are miWideLine() and miWideDash() in
+mi/miwideline.c and miZeroLine() in mi/mizerline.c.
+.nf
+
+ void pGC->ops->PolySegment(dst, pGC, n, pPoint)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int n;
+ xSegment *pSegments;
+
+.fi
+PolySegments draws unconnected
+lines between pairs of points in the array; the array must be of
+even size; no interconnecting lines are drawn.
+
+An example implementation is miPolySegment() in mipolyseg.c.
+.nf
+
+ void pGC->ops->PolyRectangle(dst, pGC, n, pRect)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int n;
+ xRectangle *pRect;
+
+.fi
+PolyRectangle draws outlines of rectangles for each rectangle in the array.
+
+An example implementation is miPolyRectangle() in Xserver/mi/mipolyrect.c.
+.nf
+
+ void pGC->ops->PolyArc(dst, pGC, n, pArc)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int n;
+ xArc*pArc;
+
+.fi
+PolyArc draws connected conic arcs according to the descriptions in the array.
+See the protocol specification for more details.
+
+Example implementations are miZeroPolyArc in Xserver/mi/mizerarc. and
+miPolyArc() in Xserver/mi/miarc.c.
+.nf
+
+ void pGC->ops->FillPolygon(dst, pGC, shape, mode, count, pPoint)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int shape;
+ int mode;
+ int count;
+ DDXPointPtr pPoint;
+
+.fi
+FillPolygon fills a polygon specified by the points in the array
+with the appropriate fill style.
+If necessary, an extra border line is assumed between the starting and ending lines.
+The shape can be used as a hint
+to optimize filling; it indicates whether it is convex (all interior angles
+less than 180), nonconvex (some interior angles greater than 180 but
+border does not cross itself), or complex (border crosses itself).
+You can choose appropriate algorithms or hardware based upon mode.
+mode is one of the defined constants Previous or Origin, depending upon
+whether the points are each relative to the last or are absolute.
+
+An example implementation is miFillPolygon() in Xserver/mi/mipoly.c.
+.nf
+
+ void pGC->ops->PolyFillRect(dst, pGC, n, pRect)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int n;
+ xRectangle *pRect;
+
+.fi
+PolyFillRect fills multiple rectangles.
+
+Example implementations are mfbPolyFillRect() in Xserver/mfb/mfbfillrct.c and
+miPolyFillRect() in Xserver/mi/mifillrct.c.
+.nf
+
+ void pGC->ops->PolyFillArc(dst, pGC, n, pArc)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int n;
+ xArc *pArc;
+
+.fi
+PolyFillArc fills a shape for each arc in the
+list that is bounded by the arc and one or two
+line segments with the current fill style.
+
+An example implementation is miPolyFillArc() in Xserver/mi/mifillarc.c.
+.nf
+
+ void pGC->ops->PutImage(dst, pGC, depth, x, y, w, h, leftPad, format, pBinImage)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int x, y, w, h;
+ int format;
+ char *pBinImage;
+
+.fi
+PutImage copies a pixmap image into the drawable. The pixmap image
+must be in X protocol format (either Bitmap, XYPixmap, or ZPixmap),
+and format tells the format. (See the X protocol specification for
+details on these formats). You must be able to accept all three
+formats, because the client gets to decide which format to send.
+Either the drawable and the pixmap image have the same depth, or the
+source pixmap image must be a Bitmap. If a Bitmap, the foreground and
+background colors will be applied to the destination.
+
+An example implementation is miPutImage() in Xserver/mfb/mibitblt.c.
+.nf
+
+ void pScreen->GetImage(src, x, y, w, h, format, planeMask, pBinImage)
+ DrawablePtr src;
+ int x, y, w, h;
+ unsigned int format;
+ unsigned long planeMask;
+ char *pBinImage;
+
+.fi
+GetImage copies the bits from the source drawable into
+the destination pointer. The bits are written into the buffer
+according to the server-defined pixmap padding rules.
+pBinImage is guaranteed to be big enough to hold all
+the bits that must be written.
+
+This routine does not correspond exactly to the X protocol GetImage
+request, since DIX has to break the reply up into buffers of a size
+requested by the transport layer. If format is ZPixmap, the bits are
+written in the ZFormat for the depth of the drawable; if there is a 0
+bit in the planeMask for a particular plane, all pixels must have the
+bit in that plane equal to 0. If format is XYPixmap, planemask is
+guaranteed to have a single bit set; the bits should be written in
+Bitmap format, which is the format for a single plane of an XYPixmap.
+
+An example implementation is miGetImage() in Xserver/mi/mibitblt.c.
+.nf
+
+ void pGC->ops->ImageText8(pDraw, pGC, x, y, count, chars)
+ DrawablePtr pDraw;
+ GCPtr pGC;
+ int x, y;
+ int count;
+ char *chars;
+
+.fi
+ImageText8 draws text. The text is drawn in the foreground color; the
+background color fills the remainder of the character rectangles. The
+coordinates specify the baseline and start of the text.
+
+An example implementation is miImageText8() in Xserver/mi/mipolytext.c.
+.nf
+
+ int pGC->ops->PolyText8(pDraw, pGC, x, y, count, chars)
+ DrawablePtr pDraw;
+ GCPtr pGC;
+ int x, y;
+ int count;
+ char *chars;
+
+.fi
+PolyText8 works like ImageText8, except it draws with
+the current fill style for special effects such as
+shaded text.
+See the X protocol specification for more details.
+
+An example implementation is miPolyText8() in Xserver/mi/mipolytext.c.
+.nf
+
+ int pGC->ops->PolyText16(pDraw, pGC, x, y, count, chars)
+ DrawablePtr pDraw;
+ GCPtr pGC;
+ int x, y;
+ int count;
+ unsigned short *chars;
+
+ void pGC->ops->ImageText16(pDraw, pGC, x, y, count, chars)
+ DrawablePtr pDraw;
+ GCPtr pGC;
+ int x, y;
+ int count;
+ unsigned short *chars;
+
+.fi
+These two routines are the same as the "8" versions,
+except that they are for 16-bit character codes (useful
+for oriental writing systems).
+
+The primary difference is in the way the character information is
+looked up. The 8-bit and the 16-bit versions obviously have different
+kinds of character values to look up; the main goal of the lookup is
+to provide a pointer to the CharInfo structs for the characters to
+draw and to pass these pointers to the Glyph routines. Given a
+CharInfo struct, lower-level software can draw the glyph desired with
+little concern for other characteristics of the font.
+
+16-bit character fonts have a row-and-column scheme, where the 2bytes
+of the character code constitute the row and column in a square matrix
+of CharInfo structs. Each font has row and column minimum and maximum
+values; the CharInfo structures form a two-dimensional matrix.
+
+Example implementations are miPolyText16() and
+miImageText16() in Xserver/mi/mipolytext.c.
+
+See the X protocol specification for more details on these graphic operations.
+.LP
+There is a hook in the GC ops, called LineHelper, that used to be used in the
+sample implementation by the code for wide lines. It no longer servers any
+purpose in the sample servers, but still exists, #ifdef'ed by NEED_LINEHELPER,
+in case someone needs it.
+.NH 2
+Pixblit Procedures
+.XS
+Pixblit Procedures
+.XE
+.LP
+The Drawing Primitive functions must be defined for your server.
+One possible way to do this is to use the mi routines from the sample server.
+If you choose to use the mi routines (even part of them!) you must implement
+these Pixblit routines.
+These routines read and write pixel values
+and deal directly with the image data.
+
+The Pixblit routines for the sample server are part of the "mfb"
+routines (for Monochrome Frame Buffer), and "cfb" routines (for Color
+Frame Buffer). As with the mi routines, the mfb and cfb routines are
+portable but are not as portable as the mi routines.
+
+The mfb routines only work for monochrome frame buffers, the simplest
+type of display. Furthermore, they only work for screens that
+organize their bits in rows of pixels on the screen. (See the
+Strategies document for more details on porting mfb.) The cfb
+routines work for packed-pixel displays from 2 to 32 bits in depth,
+although they have a bit of code which has been tuned to run on 8-bit
+(1 pixel per byte) displays.
+
+In other words, if you have a "normal" frame buffer type display, you
+can probably use either the mfb or cfb code, and the mi code. If you
+have a stranger hardware, you will have to supply your own Pixblit
+routines, but you can use the mi routines on top of them. If you have
+better ways of doing some of the Drawing Primitive functions, then you
+may want to supply some of your own Drawing Primitive routines. (Even
+people who write their own Drawing Primitives save at least some of
+the mi code for certain special cases that their hardware or library
+or fancy algorithm does not handle.)
+
+The client, DIX, and the machine-independent routines do not carry the
+final responsibility of clipping. They all depend upon the Pixblit
+routines to do their clipping for them. The rule is, if you touch the
+frame buffer, you clip.
+
+(The higher level routines may decide to clip at a high level, but
+this is only for increased performance and cannot substitute for
+bottom-level clipping. For instance, the mi routines, DIX, or the
+client may decide to check all character strings to be drawn and chop
+off all characters that would not be displayed. If so, it must retain
+the character on the edge that is partly displayed so that the Pixblit
+routines can clip off precisely at the right place.)
+
+To make this easier, all of the reasons to clip can be combined into
+one region in your ValidateGC procedure. You take this composite clip
+region with you into the Pixblit routines. (The sample server does
+this.)
+
+Also, FillSpans() has to apply tile and stipple patterns. The
+patterns are all aligned to the window origin so that when two people
+write patches that are contiguous, they will merge nicely. (Really,
+they are aligned to the patOrg point in the GC. This defaults to (0,
+0) but can be set by the client to anything.)
+
+However, the mi routines can translate (relocate) the points from
+window-relative to screen-relative if desired. If you set the
+miTranslate field in the GC (set it in the CreateGC or ValidateGC
+routine), then the mi output routines will translate all coordinates.
+If it is false, then the coordinates will be passed window-relative.
+Screens with no hardware translation will probably set miTranslate to
+TRUE, so that geometry (e.g. polygons, rectangles) can be translated,
+rather than having the resulting list of scanlines translated; this is
+good because the list vertices in a drawing request will generally be
+much smaller than the list of scanlines it produces. Similarly,
+hardware that does translation can set miTranslate to FALSE, and avoid
+the extra addition per vertex, which can be (but is not always)
+important for getting the highest possible performance. (Contrast the
+behavior of GetSpans, which is not expected to be called as often, and
+so has different constraints.) The miTranslate field is settable in
+each GC, if , for example, you are mixing several kinds of
+destinations (offscreen pixmaps, main memory pixmaps, backing store,
+and windows), all of which have different requirements, on one screen.
+
+As with other drawing routines, there are fields in the GC to direct
+higher code to the correct routine to execute for each function. In
+this way, you can optimize for special cases, for example, drawing
+solids versus drawing stipples.
+
+The Pixblit routines are broken up into three sets. The Span routines
+simply fill in rows of pixels. The Glyph routines fill in character
+glyphs. The PushPixels routine is a three-input bitblt for more
+sophisticated image creation.
+
+It turns out that the Glyph and PushPixels routines actually have a
+machine-independent implementation that depends upon the Span
+routines. If you are really pressed for time, you can use these
+versions, although they are quite slow.
+
+.NH 3
+Span Routines
+.XS
+Span Routines
+.XE
+.LP
+For these routines, all graphic operations have been reduced to "spans."
+A span is a horizontal row of pixels.
+If you can design these routines which write into and read from
+rows of pixels at a time, you can use the mi routines.
+
+Each routine takes
+a destination drawable to draw into, a GC to use while drawing,
+the number of spans to do, and two pointers to arrays that indicate the list
+of starting points and the list of widths of spans.
+.nf
+
+ void pGC->ops->FillSpans(dst, pGC, nSpans, pPoints, pWidths, sorted)
+ DrawablePtr dst;
+ GCPtr pGC;
+ int nSpans;
+ DDXPointPtr pPoints;
+ int *pWidths;
+ int sorted;
+
+.fi
+FillSpans should fill horizontal rows of pixels with
+the appropriate patterns, stipples, etc.,
+based on the values in the GC.
+The starting points are in the array at pPoints; the widths are in pWidths.
+If sorted is true, the scan lines are in increasing y order, in which case
+you may be able to make assumptions and optimizations.
+.LP
+GC components: alu, clipOrg, clientClip, and fillStyle.
+.LP
+GC mode-dependent components: fgPixel (for fillStyle Solid); tile, patOrg
+(for fillStyle Tile); stipple, patOrg, fgPixel (for fillStyle Stipple);
+and stipple, patOrg, fgPixel and bgPixel (for fillStyle OpaqueStipple).
+
+.nf
+
+ void pGC->ops->SetSpans(pDrawable, pGC, pSrc, ppt, pWidths, nSpans, sorted)
+ DrawablePtr pDrawable;
+ GCPtr pGC;
+ char *pSrc;
+ DDXPointPtr pPoints;
+ int *pWidths;
+ int nSpans;
+ int sorted;
+
+.fi
+For each span, this routine should copy pWidths bits from pSrc to
+pDrawable at pPoints using the raster-op from the GC.
+If sorted is true, the scan lines are in increasing y order.
+The pixels in pSrc are
+padded according to the screen's padding rules.
+These
+can be used to support
+interesting extension libraries, for example, shaded primitives. It does not
+use the tile and stipple.
+.LP
+GC components: alu, clipOrg, and clientClip
+.LP
+
+The above functions are expected to handle all modifiers in the current
+GC. Therefore, it is expedient to have
+different routines to quickly handle common special cases
+and reload the procedure pointers
+at validate time, as with the other output functions.
+.nf
+
+ void pScreen->GetSpans(pDrawable, wMax, pPoints, pWidths, nSpans)
+ DrawablePtr pDrawable;
+ int wMax;
+ DDXPointPtr pPoints;
+ int *pWidths;
+ int nSpans;
+ char *pDst;
+
+.fi
+For each span, GetSpans gets bits from the drawable starting at pPoints
+and continuing for pWidths bits.
+Each scanline returned will be server-scanline padded.
+The routine can return NULL if memory cannot be allocated to hold the
+result.
+
+GetSpans never translates -- for a window, the coordinates are already
+screen-relative. Consider the case of hardware that doesn't do
+translation: the mi code that calls ddX will translate each shape
+(rectangle, polygon,. etc.) before scan-converting it, which requires
+many fewer additions that having GetSpans translate each span does.
+Conversely, consider hardware that does translate: it can set its
+translation point to (0, 0) and get each span, and the only penalty is
+the small number of additions required to translate each shape being
+scan-converted by the calling code. Contrast the behavior of
+FillSpans and SetSpans (discussed above under miTranslate), which are
+expected to be used more often.
+
+Thus, the penalty to hardware that does hardware translation is
+negligible, and code that wants to call GetSpans() is greatly
+simplified, both for extensions and the machine-independent core
+implementation.
+
+.NH 4
+Glyph Routines
+.XS
+Glyph Routines
+.XE
+.LP
+The Glyph routines draw individual character glyphs for text drawing requests.
+
+You have a choice in implementing these routines. You can use the mi
+versions; they depend ultimately upon the span routines. Although
+text drawing will work, it will be very slow.
+
+.nf
+
+ void pGC->ops->PolyGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
+ DrawablePtr pDrawable;
+ GCPtr pGC;
+ int x , y;
+ unsigned int nglyph;
+ CharInfoRec **ppci; /* array of character info */
+ pointer unused; /* unused since R5 */
+
+.fi
+.LP
+GC components: alu, clipOrg, clientClip, font, and fillStyle.
+.LP
+GC mode-dependent components: fgPixel (for fillStyle Solid); tile, patOrg
+(for fillStyle Tile); stipple, patOrg, fgPixel (for fillStyle Stipple);
+and stipple, patOrg, fgPixel and bgPixel (for fillStyle OpaqueStipple).
+.nf
+
+ void pGC->ops->ImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase)
+ DrawablePtr pDrawable;
+ GCPtr pGC;
+ int x , y;
+ unsigned int nglyph;
+ CharInfoRec **ppci; /* array of character info */
+ pointer unused; /* unused since R5 */
+
+.fi
+.LP
+GC components: clipOrg, clientClip, font, fgPixel, bgPixel
+.LP
+These routines must copy the glyphs defined by the bitmaps in
+pglyphBase and the font metrics in ppci to the DrawablePtr, pDrawable.
+The poly routine follows all fill, stipple, and tile rules. The image
+routine simply blasts the glyph onto the glyph's rectangle, in
+foreground and background colors.
+
+More precisely, the Image routine fills the character rectangle with
+the background color, and then the glyph is applied in the foreground
+color. The glyph can extend outside of the character rectangle.
+ImageGlyph() is used for terminal emulators and informal text purposes
+such as button labels.
+
+The exact specification for the Poly routine is that the glyph is
+painted with the current fill style. The character rectangle is
+irrelevant for this operation. PolyText, at a higher level, includes
+facilities for font changes within strings and such; it is to be used
+for WYSIWYG word processing and similar systems.
+
+Both of these routines must clip themselves to the overall clipping region.
+
+Example implementations in mi are miPolyGlyphBlt() and
+miImageGlyphBlt() in Xserver/mi/miglblt.c.
+
+.NH 4
+PushPixels routine
+.XS
+PushPixels routine
+.XE
+.LP
+The PushPixels routine writes the current fill style onto the drawable
+in a certain shape defined by a bitmap. PushPixels is equivalent to
+using a second stipple. You can thing of it as pushing the fillStyle
+through a stencil. PushPixels is not used by any of the mi rendering code,
+but is used by the mi software cursor code.
+.LP
+.nf
+.ta 1i 3i
+ Suppose the stencil is: 00111100
+ and the stipple is: 10101010
+ PushPixels result: 00101000
+.fi
+.LP
+You have a choice in implementing this routine.
+You can use the mi version which depends ultimately upon FillSpans().
+Although it will work, it will be slow.
+.LP
+.nf
+
+ void pGC->ops->PushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg)
+ GCPtr pGC;
+ PixmapPtr pBitMap;
+ DrawablePtr pDrawable;
+ int dx, dy, xOrg, yOrg;
+
+.fi
+.LP
+GC components: alu, clipOrg, clientClip, and fillStyle.
+.LP
+GC mode-dependent components: fgPixel (for fillStyle Solid); tile, patOrg
+(for fillStyle Tile); stipple, patOrg, fgPixel (for fillStyle Stipple);
+and stipple, patOrg, fgPixel and bgPixel (for fillStyle OpaqueStipple).
+
+PushPixels applys the foreground color, tile, or stipple from the pGC
+through a stencil onto pDrawable. pBitMap points to a stencil (of
+which we use an area dx wide by dy high), which is oriented over the
+drawable at xOrg, yOrg. Where there is a 1 bit in the bitmap, the
+destination is set according to the current fill style. Where there
+is a 0 bit in the bitmap, the destination is left the way it is.
+
+This routine must clip to the overall clipping region.
+
+An Example implementation is miPushPixels() in Xserver/mi/mipushpxl.c.
+
+.NH 2
+Shutdown Procedures
+.XS
+Shutdown Procedures
+.XE
+.LP
+.nf
+ void AbortDDX()
+ void ddxGiveUp()
+.fi
+.LP
+Some hardware may require special work to be done before the server
+exits so that it is not left in an intermediate state. As explained
+in the OS layer, FatalError() will call AbortDDX() just before
+terminating the server. In addition, ddxGiveUp() will be called just
+before terminating the server on a "clean" death. What AbortDDX() and
+ddxGiveUP do is left unspecified, only that stubs must exist in the
+ddx layer. It is up to local implementors as to what they should
+accomplish before termination.
+
+.NH 3
+Command Line Procedures
+.XS
+Command Line Procedures
+.XE
+.LP
+.nf
+ int ddxProcessArgument(argc, argv, i)
+ int argc;
+ char *argv[];
+ int i;
+
+ void
+ ddxUseMsg()
+
+.fi
+.LP
+You should write these routines to deal with device-dependent command line
+arguments. The routine ddxProcessArgument() is called with the command line,
+and the current index into argv; you should return zero if the argument
+is not a device-dependent one, and otherwise return a count of the number
+of elements of argv that are part of this one argument. For a typical
+option (e.g., "-realtime"), you should return the value one. This
+routine gets called before checks are made against device-independent
+arguments, so it is possible to peek at all arguments or to override
+device-independent argument processing. You can document the
+device-dependent arguments in ddxUseMsg(), which will be
+called from UseMsg() after printing out the device-independent arguments.
+
+.bp
+.NH 2
+Wrappers and devPrivates
+.XS
+Wrappers and devPrivates
+.XE
+.LP
+Two new extensibility concepts have been developed for release 4, Wrappers
+and devPrivates. These replace the R3 GCInterest queues, which were not a
+general enough mechanism for many extensions and only provided hooks into a
+single data structure.
+.NH 3
+devPrivates
+.XS
+devPrivates
+.XE
+.LP
+devPrivates are arrays of values attached to various data structures
+(Screens, GCs, Windows, and Pixmaps currently). These arrays are sized dynamically at
+server startup (and reset) time as various modules allocate portions of
+them. They can be used for any purpose; each array entry is actually a
+union, DevUnion, of common useful types (pointer, long and unsigned long).
+devPrivates must be allocated on startup and whenever the server resets. To
+make this easier, the global variable "serverGeneration" is incremented each
+time devPrivates should be allocated, but before the initialization process
+begins, typical usage would be:
+.nf
+static int privateGeneration = 0;
+
+ if (privateGeneration != serverGeneration)
+ {
+ allocate devPrivates here.
+
+ privateGeneration = serverGeneration;
+ }
+.fi
+.NH 4
+Screen devPrivates
+.XS
+Screen devPrivates
+.XE
+.LP
+An index into every screen devPrivates array is allocated with
+.nf
+ int AllocateScreenPrivateIndex()
+.fi
+This call can occur at any time, each existing devPrivates array is resized
+to accommodate the new entry. This routine returns -1 indicating an
+allocation failure. Otherwise, the return value can be used to index the
+array of devPrivates on any screen:
+.nf
+ private = (PrivatePointer) pScreen->devPrivates[screenPrivateIndex].ptr;
+.fi
+The pointer in each screen is not initialized by
+AllocateScreenPrivateIndex().
+.NH 4
+Window devPrivates
+.XS
+Window devPrivates
+.XE
+.LP
+An index into every window devPrivates array is allocated with
+.nf
+ int AllocateWindowPrivateIndex ()
+.fi
+AllocateWindowPrivateIndex() never returns an error. This call must be
+associated with a call which causes a chunk of memory to be automatically
+allocated and attached to the devPrivate entry on every screen which the
+module will need to use the index:
+.nf
+ Bool AllocateWindowPrivate (pScreen, index, amount)
+ ScreenPtr pScreen;
+ int index;
+ unsigned amount;
+.fi
+If this space is not always needed for every object, use 0 as the amount.
+In this case, the pointer field of the entry in the devPrivates array is
+initialized to NULL. This call exists so that DIX may preallocate all of
+the space required for an object with one call; this reduces memory
+fragmentation considerably. AllocateWindowPrivate returns FALSE on
+allocation failure. Both of these calls must occur before any window
+structures are allocated; the server is careful to avoid window creation
+until all modules are initialized, but do not call this after
+initialization. A typical allocation sequence for WindowPrivates would be:
+.nf
+ privateInitialize (pScreen)
+ ScreenPtr pScreen;
+ {
+ if (privateGeneration != serverGeneration)
+ {
+ windowPrivateIndex = AllocateWindowPrivateIndex();
+ privateGeneration = serverGeneration;
+ }
+
+ return (AllocateWindowPrivate(pScreen, windowPrivateIndex,
+ sizeof(windowPrivateStructure)));
+ }
+.fi
+.NH 4
+GC and Pixmap devPrivates
+.XS
+GC and Pixmap devPrivates
+.XE
+.LP
+The calls for GCs and Pixmaps mirror the Window calls exactly; they have the
+same requirements and limitations:
+.nf
+ int AllocateGCPrivateIndex ()
+
+ Bool AllocateGCPrivate (pScreen, index, amount)
+ ScreenPtr pScreen;
+ int index;
+ unsigned amount;
+
+ int AllocatePixmapPrivateIndex ()
+
+ Bool AllocatePixmapPrivate (pScreen, index, amount)
+ ScreenPtr pScreen;
+ int index;
+ unsigned amount;
+.fi
+.NH 3
+Wrappers
+.XS
+Wrappers
+.XE
+.LP
+Wrappers are not a body of code, nor an interface spec. They are, instead,
+a technique for hooking a new module into an existing calling sequence.
+There are limitations on other portions of the server implementation which
+make using wrappers possible; limits on when specific fields of data
+structures may be modified. They are intended as a replacement for
+GCInterest queues, which were not general enough to support existing
+modules; in particular software cursors and backing store both needed more
+control over the activity. The general mechanism for using wrappers is:
+.nf
+privateWrapperFunction (object, ...)
+ ObjectPtr object;
+{
+ pre-wrapped-function-stuff ...
+
+ object->functionVector = (void *) object->devPrivates[privateIndex].ptr;
+ (*object->functionVector) (object, ...);
+ /*
+ * this next line is occasionally required by the rules governing
+ * wrapper functions. Always using it will not cause problems.
+ * Not using it when necessary can cause severe troubles.
+ */
+ object->devPrivates[privateIndex].ptr = (pointer) object->functionVector;
+ object->functionVector = privateWrapperFunction;
+
+ post-wrapped-function-stuff ...
+}
+
+privateInitialize (object)
+ ObjectPtr object;
+{
+ object->devPrivates[privateIndex].ptr = (pointer) object->functionVector;
+ object->functionVector = privateWrapperFunction;
+}
+.fi
+Thus the privateWrapperFunction provides hooks for performing work both
+before and after the wrapped function has been called; the process of
+resetting the functionVector is called "unwrapping" while the process of
+fetching the wrapped function and replacing it with the wrapping function
+is called "wrapping". It should be clear that GCInterest queues could
+be emulated using wrappers. In general, any function vectors contained in
+objects can be wrapped, but only vectors in GCs and Screens have been tested.
+.LP
+Wrapping screen functions is quite easy; each vector is individually
+wrapped. Screen functions are not supposed to change after initialization,
+so rewrapping is technically not necessary, but causes no problems.
+.LP
+Wrapping GC functions is a bit more complicated. GC's have two sets of
+function vectors, one hanging from gc->ops and the other from gc->funcs.
+Wrappers should modify only those values, not the internal values as they
+may be shared by more than one GC (and, in the case of funcs, are probably
+shared by all gcs). To wrap the ops, wrap the funcs and, in each func
+wrapper, unwrap the ops and funcs, call down, and re-wrap. In each op
+wrapper, unwrap both the funcs and ops, call down and rewrap afterwards. The
+rule is: if you wrap funcs+ops, you must always unwrap both before down
+calling. If you wrap ops, you must always pull the ops value out of the GC
+in the func wrapper and save it. If you wrap funcs, you needn't pull the
+funcs value out of the GC to rewrap as the func values are required to be
+constant. In this way, the wrapped validation routine can change the op
+vector and not have it lost when your wrapper routine rewraps the GC. This
+occurs when the wrapped op revalidates the GC with new entries (many mi
+routines do this for opaque stipples or double dashes). The corollary to
+this rule is: Never change the func vector after CreateGC.
+.LP
+.NH 2
+Work Queue
+.XS
+Work Queue
+.XE
+.LP
+To queue work for execution when all clients are in a stable state (i.e.
+just before calling select() in WaitForSomething), call:
+.nf
+ Bool QueueWorkProc(function,client,closure)
+ Bool (*function)();
+ ClientPtr client;
+ pointer closure;
+.fi
+.LP
+When the server is about to suspend itself, the given function will be
+executed:
+.nf
+ (*function) (client, closure)
+.fi
+.LP
+Neither client nor closure are actually used inside the work queue routines.
+.NH 1
+Extension Interfaces
+.XS
+Extension Interfaces
+.XE
+.LP
+This section describes the functions which exist in DDX for extension
+writers to use.
+.NH 2
+Extension initialization
+.LP
+This function should be called from your extensionInitProc which
+should be called by InitExtensions.
+.nf
+
+ ExtensionEntry *AddExtension(name, NumEvents,NumErrors,
+ MainProc, SwappedMainProc, CloseDownProc, MinorOpcodeProc)
+
+ char *name; /*Null terminate string; case matters*/
+ int NumEvents;
+ int NumErrors;
+ int (* MainProc)(ClientPtr);/*Called if client matches server order*/
+ int (* SwappedMainProc)(ClientPtr);/*Called if client differs from server*/
+ void (* CloseDownProc)(ExtensionEntry *);
+ unsigned short (*MinorOpcodeProc)(ClientPtr);
+
+.fi
+name is the name used by clients to refer to the extension. NumEvents is the
+number of event types used by the extension, NumErrors is the number of
+error codes needed by the extension. MainProc is called whenever a client
+accesses the major opcode assigned to the extension. SwappedMainProc is
+identical, except the client using the extension has reversed byte-sex.
+CloseDownProc is called at server reset time to deallocate any private
+storage used by the extension. MinorOpcodeProc is used by DIX to place the
+appropriate value into errors. The DIX routine StandardMinorOpcode can be
+used here which takes the minor opcode from the normal place in the request
+(i.e. just after the major opcode).
+.NH 2
+Resource type allocation.
+.LP
+These functions should also be called from your extensionInitProc to
+allocate all of the various resource classes and types required for
+the extension. Each time the server resets, these types must be reallocated
+as the old allocations will have been discarded.
+Resource types are integer values starting at 1. Get
+a resource type by calling
+.nf
+
+ RESTYPE CreateNewResourceType(deleteFunc)
+
+.fi
+deleteFunc will be called to destroy all resources with this
+type.
+
+Resource classes are masks starting at 1 << 31 which can
+be or'ed with any resource type to provide attributes for the
+type. To allocate a new class bit, call
+.nf
+
+ RESTYPE CreateNewResourceClass()
+
+.fi
+There are two ways of looking up resources, by type or
+by class. Classes are non-exclusive subsets of the space of
+all resources, so you can lookup the union of multiple classes.
+(RC_ANY is the union of all classes).
+.LP
+Note that the appropriate class bits must be or'ed into the value returned
+by CreateNewResourceType when calling resource lookup functions.
+.LP
+If you need to create a ``private'' resource ID for internal use, you
+can call FakeClientID.
+.nf
+
+ XID FakeClientID(client)
+ int client;
+
+.fi
+This allocates from ID space reserved for the server.
+.LP
+To associate a resource value with an ID, use AddResource.
+.nf
+
+ Bool AddResource(id, type, value)
+ XID id;
+ RESTYPE type;
+ pointer value;
+
+.fi
+The type should be the full type of the resource, including any class
+bits. If AddResource fails to allocate memory to store the resource,
+it will call the deleteFunc for the type, and then return False.
+.LP
+To free a resource, use one of the following.
+.nf
+
+ void FreeResource(id, skipDeleteFuncType)
+ XID id;
+ RESTYPE skipDeleteFuncType;
+
+ void FreeResourceByType(id, type, skipFree)
+ XID id;
+ RESTYPE type;
+ Bool skipFree;
+
+.nf
+FreeResource frees all resources matching the given id, regardless of
+type; the type's deleteFunc will be called on each matching resource,
+except that skipDeleteFuncType can be set to a single type for which
+the deleteFunc should not be called (otherwise pass RT_NONE).
+FreeResourceByType frees a specific resource matching a given id
+and type; if skipFree is true, then the deleteFunc is not called.
+.LP
+To look up a resource, use one of the following.
+.nf
+
+ pointer LookupIDByType(id, rtype)
+ XID id;
+ RESTYPE rtype;
+
+ pointer LookupIDByClass(id, classes)
+ XID id;
+ RESTYPE classes;
+
+.fi
+LookupIDByType finds a resource with the given id and exact type.
+LookupIDByClass finds a resource with the given id whose type is
+included in any one of the specified classes.
+.NH 2
+Macros and Other Helpers
+.LP
+There are a number of macros in Xserver/include/dix.h which
+are useful to the extension writer. Ones of particular interest
+are: REQUEST, REQUEST_SIZE_MATCH, REQUEST_AT_LEAST_SIZE,
+REQUEST_FIXED_SIZE, LEGAL_NEW_RESOURCE, LOOKUP_DRAWABLE, VERIFY_GC, and
+VALIDATE_DRAWABLE_AND_GC. Useful byte swapping macros can be found
+in Xserver/include/misc.h: lswapl, lswaps, LengthRestB, LengthRestS,
+LengthRestL, SwapRestS, SwapRestL, swapl, swaps, cpswapl, and cpswaps.
+.bp
+.NH 1
+Callback Manager
+.XS
+Callback Manager
+.XE
+.LP
+To satisfy a growing number of requests for the introduction of ad hoc
+notification style hooks in the server, a generic callback manager was
+introduced in R6. A callback list object can be introduced for each
+new hook that is desired, and other modules in the server can register
+interest in the new callback list. The following functions support
+these operations.
+.LP
+Before getting bogged down in the interface details, an typical usage
+example should establish the framework. Let's look at the
+ClientStateCallback in dix/dispatch.c. The purpose of this particular
+callback is to notify intereseted parties when a client's state
+(initial, running, gone) changes. The callback is "created" in this
+case by simply declaring a variable:
+
+ CallbackListPtr ClientStateCallback;
+
+Whenever the client's state changes, the following code appears, which notifies
+all intereseted parties of the change:
+
+ if (ClientStateCallback) CallCallbacks(&ClientStateCallback, (pointer)client);
+
+Interested parties subscribe to the ClientStateCallback list by saying:
+
+ AddCallback(&ClientStateCallback, func, data);
+
+When CallCallbacks is invoked on the list, func will be called thusly:
+
+ (*func)(&ClientStateCallback, data, client)
+
+Now for the details.
+.nf
+
+ Bool CreateCallbackList(pcbl, cbfuncs)
+ CallbackListPtr *pcbl;
+ CallbackFuncsPtr cbfuncs;
+
+.fi
+CreateCallbackList creates a callback list. We envision that this
+function will be rarely used because the callback list is created
+automatically (if it doesn't already exist) when the first call to
+AddCallback is made on the list. The only reason to explicitly create
+the callback list with this function is if you want to override the
+implementation of some of the other operations on the list by passing
+your own cbfuncs. You also lose something by explicit creation: you
+introduce an order dependency during server startup because the list
+must be created before any modules subscribe to it. Returns TRUE if
+successful.
+.nf
+
+ Bool AddCallback(pcbl, callback, subscriber_data)
+ CallbackListPtr *pcbl;
+ CallbackProcPtr callback;
+ pointer subscriber_data;
+
+.fi
+Adds the (callback, subscriber_data) pair to the given callback list. Creates the callback
+list if it doesn't exist. Returns TRUE if successful.
+.nf
+
+ Bool DeleteCallback(pcbl, callback, subscriber_data)
+ CallbackListPtr *pcbl;
+ CallbackProcPtr callback;
+ pointer subscriber_data;
+
+.fi
+Removes the (callback, data) pair to the given callback list if present.
+Returns TRUE if (callback, data) was found.
+.nf
+
+ void CallCallbacks(pcbl, call_data)
+ CallbackListPtr *pcbl;
+ pointer call_data;
+
+.fi
+For each callback currently registered on the given callback list, call
+it as follows:
+
+ (*callback)(pcbl, subscriber_data, call_data);
+
+.nf
+
+ void DeleteCallbackList(pcbl)
+ CallbackListPtr *pcbl;
+
+.fi
+Destroys the given callback list.
+.bp
+.NH 1
+Summary of Routines
+.XS
+Summary of Routines
+.XE
+.LP
+This is a summary of the routines discussed in this document.
+The procedure names are in alphabetical order.
+The Struct is the structure it is attached to; if blank, this
+procedure is not attached to a struct and must be named as shown.
+The sample server provides implementations in the following
+categories. Notice that many of the graphics routines have both
+mi and mfb implementations.
+.TS
+l l.
+dix portable to all systems; do not attempt to rewrite (Xserver/dix)
+os routine provided in Xserver/os or Xserver/include/os.h
+ddx frame buffer dependent (examples in Xserver/mfb,Xserver/cfb)
+mi routine provided in Xserver/mi
+hd hardware dependent (examples in many Xserver/hw directories)
+none not implemented in sample implementation
+.TE
+.TS
+expand;
+c c c
+l c l.
+Procedure Port Struct
+_
+ALLOCATE_LOCAL os
+AbortDDX hd
+AddCallback dix
+AddEnabledDevice os
+AddInputDevice dix
+AddScreen dix
+Bell hd Device
+ChangeClip mi GC func
+ChangeGC GC func
+ChangeWindowAttributes ddx Screen
+ClearToBackground ddx Window
+ClientAuthorized os
+ClientSignal dix
+ClientSleep dix
+ClientWakeup dix
+ClipNotify ddx Screen
+CloseScreen hd
+ConstrainCursor hd Screen
+CopyArea mi GC op
+CopyGCDest ddx GC func
+CopyGCSource none GC func
+CopyPlane mi GC op
+CopyWindow ddx Window
+CreateGC ddx Screen
+CreateCallbackList dix
+CreatePixmap ddx Screen
+CreateScreenResources ddx Screen
+CreateWellKnowSockets os
+CreateWindow ddx Screen
+CursorLimits hd Screen
+DEALLOCATE_LOCAL os
+DeleteCallback dix
+DeleteCallbackList dix
+DestroyClip ddx GC func
+DestroyGC ddx GC func
+DestroyPixmap ddx Screen
+DestroyWindow ddx Screen
+DisplayCursor hd Screen
+Error os
+ErrorF os
+.TE
+.bp
+.TS
+expand;
+c c c
+l c l.
+Procedure Port Struct
+_
+FatalError os
+FillPolygon mi GC op
+FillSpans ddx GC op
+FlushAllOutput os
+FlushIfCriticalOutputPending os
+FreeScratchPixmapHeader dix
+GetImage mi Screen
+GetMotionEvents hd Device
+GetScratchPixmapHeader dix
+GetSpans ddx Screen
+GetStaticColormap ddx Screen
+ImageGlyphBlt mi GC op
+ImageText16 mi GC op
+ImageText8 mi GC op
+InitInput hd
+InitKeyboardDeviceStruct dix
+InitOutput hd
+InitPointerDeviceStruct dix
+InsertFakeRequest os
+InstallColormap ddx Screen
+Intersect mi Screen
+Inverse mi Screen
+LegalModifier hd
+LineHelper mi GC op
+ListInstalledColormaps ddx Screen
+LookupKeyboardDevice dix
+LookupPointerDevice dix
+ModifyPixmapheader mi Screen
+NextAvailableClient dix
+OsInit os
+PaintWindowBackground mi Window
+PaintWindowBorder mi Window
+PointerNonInterestBox hd Screen
+PointInRegion mi Screen
+PolyArc mi GC op
+PolyFillArc mi GC op
+PolyFillRect mi GC op
+PolyGlyphBlt mi GC op
+Polylines mi GC op
+PolyPoint mi GC op
+PolyRectangle mi GC op
+PolySegment mi GC op
+PolyText16 mi GC op
+PolyText8 mi GC op
+PositionWindow ddx Screen
+ProcessInputEvents hd
+PushPixels mi GC op
+PutImage mi GC op
+QueryBestSize hd Screen
+ReadRequestFromClient os
+RealizeCursor hd Screen
+.TE
+.bp
+.TS
+expand;
+c c c
+l c l.
+Procedure Port Struct
+_
+RealizeFont ddx Screen
+RealizeWindow ddx Screen
+RecolorCursor hd Screen
+RectIn mi Screen
+RegionCopy mi Screen
+RegionCreate mi Screen
+RegionDestroy mi Screen
+RegionEmpty mi Screen
+RegionExtents mi Screen
+RegionNotEmpty mi Screen
+RegionReset mi Screen
+ResolveColor ddx Screen
+RegisterKeyboardDevice dix
+RegisterPointerDevice dix
+RemoveEnabledDevice os
+ResetCurrentRequest os
+RestoreAreas none BackingStore
+SaveDoomedAreas none BackingStore
+SaveScreen ddx Screen
+SetCriticalOutputPending os
+SetCursorPosition hd Screen
+SetInputCheck dix
+SetSpans ddx GC op
+StoreColors ddx Screen
+Subtract mi Screen
+TimeSinceLastInputEvent hd
+TranslateBackingStore none BackingStore
+TranslateRegion mi Screen
+UninstallColormap ddx Screen
+Union mi Screen
+UnrealizeCursor hd Screen
+UnrealizeFont ddx Screen
+UnrealizeWindow ddx Screen
+ValidateGC ddx GC func
+ValidateTree mi Screen
+WaitForSomething os
+WindowExposures mi Window
+WriteToClient os
+Xalloc os
+Xfree os
+Xrealloc os
+.TE
+
+.TC
diff --git a/specs/Xserver/fontlib.ms b/specs/Xserver/fontlib.ms
new file mode 100644
index 0000000..f4f3b07
--- /dev/null
+++ b/specs/Xserver/fontlib.ms
@@ -0,0 +1,403 @@
+.\" Copyright 1993 Network Computing Devices
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that the above copyright notice appear in all copies and that both that
+.\" copyright notice and this permission notice appear in supporting
+.\" documentation, and that the name of Network Computing Devices
+.\" not be used in advertising or
+.\" publicity pertaining to distribution of the software without specific,
+.\" written prior permission. Network Computing Devices makes
+.\" no representations about the
+.\" suitability of this software for any purpose. It is provided "as is"
+.\" without express or implied warranty.
+.\"
+.\" Copyright 1993, 1994 X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" ``Software''), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be
+.\" included in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.ps 12
+.nr PS 12
+.de Cs
+.IP
+.nf
+.ft C
+..
+.de Ce
+.ft P
+.fi
+..
+.\" $Xorg: fontlib.ms,v 1.3 2000/08/17 19:42:42 cpqbld Exp $
+.EF 'Font Library Interface'- % -'July 27, 1991'
+.OF 'Font Library Interface'- % -'July 27, 1991'
+.EH ''''
+.OH ''''
+.TL
+The X Font Library
+.AU
+Keith Packard
+.AI
+MIT X Consortium
+.AU
+David Lemke
+.AI
+Network Computing Devices
+.LP
+This document describes the data structures and interfaces for using the X
+Font library. It is intended as a reference for programmers building X
+and Font servers. You may want to refer to the following documents:
+.IP \(bu 5
+"Definition of the Porting Layer for the X v11 Sample Server" for a
+discussion on how this library interacts with the X server
+.IP \(bu 5
+"Font Server Implementation Overview" which discusses the design of the font
+server.
+.IP \(bu 5
+"Bitmap Distribution Format" which covers the contents of the bitmap font
+files which this library reads; although the library is capable of reading
+other formats as well, including non-bitmap fonts.
+.IP \(bu 5
+"The X Font Service Protocol" for a description of the constraints placed on
+the design by including support for this font service mechanism.
+.LP
+This document assumes the reader is familiar with the X server design, the
+X protocol as it relates to fonts and the C programming language. As with
+most MIT produced documentation, this relies heavily on the source code, so
+have a listing handy.
+.NH 1
+Requirements for the Font library
+.LP
+To avoid miles of duplicate code in the X server, the font server and the
+various font manipulation tools, the font library should provide interfaces
+appropriate for all of these tasks. In particular, the X server and font
+server should be able to both use the library to access disk based fonts,
+and to communicate with a font server. By providing a general library, we
+hoped to avoid duplicating code between the X server and font server.
+.LP
+Another requirement is that the X server (or even a font server) be able to
+continue servicing requests from other clients while awaiting a response
+from the font server on behalf of one client. This is the strongest
+requirement placed on the font library, and has warped the design in curious
+ways. Because both the X server and font server are single threaded, the
+font library must not suspend internally, rather it returns an indication of
+suspension to the application which continues processing other things, until
+the font data is ready, at which time it restarts the suspended request.
+.LP
+Because the code for reading and manipulating bitmap font data is used by
+the font applications "mkfontdir" and "bdftopcf", the font library includes
+bitmap-font specific interfaces which those applications use, instead of the
+more general interfaces used by the X and font servers, which are unaware of
+the source of the font data. These routines will be refered to as the
+bitmap font access methods.
+.NH 1
+General Font Library Interface details.
+.LP
+To avoid collision between the #define name space for errors, the Font
+library defines a new set of return values:
+.Cs
+#define AllocError 80
+#define StillWorking 81
+#define FontNameAlias 82
+#define BadFontName 83
+#define Suspended 84
+#define Successful 85
+#define BadFontPath 86
+#define BadCharRange 87
+#define BadFontFormat 88
+#define FPEResetFailed 89
+.Ce
+.LP
+Whenever a routine returns \fBSuspended\fP, the font library will notify the
+caller (via the ClientSignal interface described below) who should then
+reinvoke the same routine again with the same arguments.
+.NH 1
+Font Path Elements
+.LP
+At the center of the general font access methods used by X and fs is the
+Font Path Element data structure. Like most structures in the X server,
+this contains a collection of data and some function pointers for
+manipulating this data:
+.Cs
+/* External view of font paths */
+typedef struct _FontPathElement {
+ int name_length;
+ char *name;
+ int type;
+ int refcount;
+ pointer private;
+} FontPathElementRec, *FontPathElementPtr;
+
+typedef struct _FPEFunctions {
+ int (*name_check) ( /* name */ );
+ int (*init_fpe) ( /* fpe */ );
+ int (*reset_fpe) ( /* fpe */ );
+ int (*free_fpe) ( /* fpe */ );
+ int (*open_font) ( /* client, fpe, flags,
+ name, namelen, format,
+ fid, ppfont, alias */ );
+ int (*close_font) ( /* pfont */ );
+ int (*list_fonts) ( /* client, fpe, pattern,
+ patlen, maxnames, paths */ );
+ int (*start_list_fonts_with_info) (
+ /* client, fpe, name, namelen,
+ maxnames, data */ );
+ int (*list_next_font_with_info) (
+ /* client, fpe, name, namelen,
+ info, num, data */ );
+ int (*wakeup_fpe) ( /* fpe, mask */ );
+ int (*client_died) ( /* client, fpe */ );
+} FPEFunctionsRec, FPEFunctions;
+.Ce
+.LP
+The function pointers are split out from the data structure to save memory;
+additionally, this avoids any complications when initializing the data
+structure as there would not be any way to discover the appropriate function
+to call (a chicken and egg problem).
+.LP
+When a font path type is initialized, it passes the function pointers to the
+server which are then stored in an FPEFunctionsRec. Each function is
+described below in turn.
+.NH 2
+(*name_check)
+.LP
+Each new font path member is passed to this function; if the return value
+is Successful, then the FPE recognises the format of the string. This does
+not guarantee that the FPE will be able to successfully use this member.
+For example, the disk-based font directory file "fonts.dir" may be
+corrupted, this will not be detected until the font path is initialized.
+This routine never returns \fBSuspended\fP.
+.NH 2
+(*init_fpe)
+.LP
+Initialize a new font path element. This function prepares a new font path
+element for other requests: the disk font routine reads the "fonts.dir" and
+"fonts.alias" files into the internal format, while the font server routine
+connects to the requested font server and prepares for using it. This
+routine returns Successful if everything went OK, otherwise the return value
+indicates the source of the problem. This routine never returns \fBSuspended\fP.
+.NH 2
+(*reset_fpe)
+.LP
+When the X font path is reset, and some of the new members are also in the
+old font path, this function is called to reinitialize those FPEs. This
+routine returns Successful if everything went OK. It returns FPEResetFailed
+if (for some reason) the reset failed, and the caller should remove the old
+FPE and simply create a new one in its place. This is used by the
+disk-based fonts routine as resetting the internal directory structures
+would be more complicated than simply having destroying the old and creating
+a new.
+.NH 2
+(*free_fpe)
+.LP
+When the server is finished with an FPE, this function is called to dispose
+of any internal state. It should return Successful, unless something
+terrible happens.
+.NH 2
+(*open_font)
+.LP
+This routine requests that a font be opened. The client argument is used
+by the font library only in connection with suspending/restarting the
+request. The flags argument specifies some behaviour for the library and can
+be any of:
+.Cs
+/* OpenFont flags */
+#define FontLoadInfo 0x0001
+#define FontLoadProps 0x0002
+#define FontLoadMetrics 0x0004
+#define FontLoadBitmaps 0x0008
+#define FontLoadAll 0x000f
+#define FontOpenSync 0x0010
+.Ce
+.LP
+The various fields specify which portions of the font should be loaded at
+this time. When FontOpenSync is specified, this routine will not return
+until all of the requested portions are loaded. Otherwise, this routine may
+return \fBSuspended\fP. When the presented font name is actually an alias
+for some other font name, FontName Alias is returned, and the actual font
+name is stored in the location pointed to by the \fIalias\fP argument as a
+null-terminated string.
+.NH 2
+(*close_font)
+.LP
+When the server is finished with a font, this routine disposes of any
+internal state and frees the font data structure.
+.NH 2
+(*list_fonts)
+.LP
+The \fIpaths\fP argument is a data structure which will be filled with all
+of the font names from this directory which match the specified pattern. At
+most \fImaxnames\fP will be added. This routine may return \fBSuspended\fP.
+.NH 2
+(*start_list_fonts_with_info)
+.LP
+This routine sets any internal state for a verbose listing of all fonts
+matching the specified pattern. This routine may return \fBSuspended\fP.
+.NH 2
+(*list_next_font_with_info)
+.LP
+To avoid storing huge amounts of data, the interface for ListFontsWithInfo
+allows the server to get one reply at a time and forward that to the
+client. When the font name returned is actually an alias for some other
+font, \fBFontNameAlias\fP will be returned. The actual font name is return
+instead, and the font alias which matched the pattern is returned in the
+location pointed to by data as a null-terminated string. The caller can
+then get the information by recursively listing that font name with a
+maxnames of 1. When \fBSuccessful\fP is returned, the matching font name is
+returned, and a FontInfoPtr is stored in the location pointed to by
+\fIdata\fP. \fIData\fP must be initialized with a pointer to a FontInfoRec
+allocated by the caller. When the pointer pointed to by \fIdata\fP is not
+left pointing at that storage, the caller mustn't free the associated
+property data. This routine may return \fBSuspended\fP.
+.NH 2
+(*wakeup_fpe)
+.LP
+Whenever an FPE function has returned Suspended, this routine is called
+whenever the application wakes up from waiting for input (from select(2)).
+This mask argument should be the value returned from select(2).
+.NH 2
+(*client_died)
+.LP
+When an FPE function has returned \fBSuspended\fP and the associated client
+is being destroyed, this function allows the font library to dispose of any
+state associated with that client.
+.NH 1
+Fonts
+.LP
+The data structure which actually contains the font information has changed
+significantly since previous releases; it now attempts to hide the actual
+storage format for the data from the application, providing accessor
+functions to get at the data. This allows a range of internal details for
+different font sources. The structure is split into two pieces, so that
+ListFontsWithInfo can share information from the font when it has been
+loaded. The FontInfo structure, then, contains only information germane to
+LFWI.
+.Cs
+typedef struct _FontInfo {
+ unsigned short firstCol; /* range of glyphs for this font */
+ unsigned short lastCol;
+ unsigned short firstRow;
+ unsigned short lastRow;
+ unsigned short defaultCh; /* default character index */
+ unsigned int noOverlap:1; /* no combination of glyphs overlap */
+ unsigned int terminalFont:1; /* Character cell font */
+ unsigned int constantMetrics:1; /* all metrics are the same */
+ unsigned int constantWidth:1; /* all character widths are the same*/
+ unsigned int inkInside:1; /* all ink inside character cell */
+ unsigned int inkMetrics:1; /* font has ink metrics */
+ unsigned int allExist:1; /* no missing chars in range */
+ unsigned int drawDirection:2; /* left-to-right/right-to-left*/
+ unsigned int cachable:1; /* font needn't be opened each time*/
+ unsigned int anamorphic:1; /* font is strangely scaled */
+ short maxOverlap; /* maximum overlap amount */
+ short pad; /* unused */
+ xCharInfo maxbounds; /* glyph metrics maximums */
+ xCharInfo minbounds; /* glyph metrics minimums */
+ xCharInfo ink_maxbounds; /* ink metrics maximums */
+ xCharInfo ink_minbounds; /* ink metrics minimums */
+ short fontAscent; /* font ascent amount */
+ short fontDescent; /* font descent amount */
+ int nprops; /* number of font properties */
+ FontPropPtr props; /* font properties */
+ char *isStringProp; /* boolean array */
+} FontInfoRec, *FontInfoPtr;
+.Ce
+.LP
+The font structure, then, contains a font info record, the format of the
+bits in each bitmap and the functions which access the font records (which
+are stored in an opaque format hung off of fontPrivate).
+.Cs
+typedef struct _Font {
+ int refcnt;
+ FontInfoRec info;
+ char bit; /* bit order: LSBFirst/MSBFirst */
+ char byte; /* byte order: LSBFirst/MSBFirst */
+ char glyph; /* glyph pad: 1, 2, 4 or 8 */
+ char scan; /* glyph scan unit: 1, 2 or 4 */
+ fsBitmapFormat format; /* FS-style format (packed) */
+ int (*get_glyphs) ( /* font, count, chars, encoding, count, glyphs */ );
+ int (*get_metrics) ( /* font, count, chars, encoding, count, glyphs */ );
+ int (*get_bitmaps) (/* client, font, flags, format,
+ flags, nranges, ranges, data_sizep,
+ num_glyphsp, offsetsp, glyph_datap,
+ free_datap */ );
+ int (*get_extents) (/* client, font, flags, nranges,
+ ranges, nextentsp, extentsp */);
+ void (*unload_font) ( /* font */ );
+ FontPathElementPtr fpe; /* FPE associated with this font */
+ pointer svrPrivate; /* X/FS private data */
+ pointer fontPrivate; /* private to font */
+ pointer fpePrivate; /* private to FPE */
+ int maxPrivate; /* devPrivates (see below) */
+ pointer *devPrivates; /* ... */
+} FontRec, *FontPtr;
+.Ce
+.LP
+Yes, there are several different private pointers in the Font structure; they
+were added haphazardly until the devPrivate pointers were added. Future
+releases may remove some (or all) of the specific pointers, leaving only the
+devPrivates mechanism.
+.LP
+There are two similar interfaces implemented - get_glyphs/get_metrics and
+get_bitmaps/get_extents. Too little time caused the font-server specific
+interfaces to be placed in the font library (and portions duplicated in each
+renderer) instead of having them integrated into the font server itself.
+This may change. The X server uses only get_glyphs/get_metrics, and those
+will not change dramatically. Each of the routines is described below
+.NH 2
+(*get_glyphs)
+.LP
+This routine returns CharInfoPtrs for each of the requested characters in
+the font. If the character does not exist in the font, the default
+character will be returned, unless no default character exists in which case
+that character is skipped. Thus, the number of glyphs returned will not
+always be the same as the number of characters passed in.
+.NH 2
+(*get_metrics)
+.LP
+This is similar to (*get_glyphs) except that pointers to xCharInfo
+structures are returned, and, if the font has ink metrics, those are
+returned instead of the bitmap metrics.
+.NH 2
+(*get-bitmaps)
+.LP
+This packs the glyph image data in the requested format and returns it. The
+ranges/nranges argument specify the set of glyphs from the font to pack
+together.
+.NH 2
+(*get_extents)
+.LP
+This returns the metrics for the specified font from the specified ranges.
+.LP
+.NH 2
+(*unload_font)
+.LP
+This is called from the FPE routine (*close_font), and so should not ever be
+called from the application.
+.NH 2
+maxPrivate
+.LP
+When initializing a new font structure, maxPrivate should be set to -1
+so that the FontSetPrivate() macro works properly with an index of 0.
+Initializing maxPrivate to 0 can cause problems if the server tries to set
+something at index 0.
diff --git a/specs/Xserver/secint.tex b/specs/Xserver/secint.tex
new file mode 100644
index 0000000..0aba115
--- /dev/null
+++ b/specs/Xserver/secint.tex
@@ -0,0 +1,217 @@
+\documentstyle[computer]{article}
+\setlength{\parindent}{0 pt}
+\setlength{\parskip}{6pt}
+
+\begin{document}
+
+\title{Security Extension Server Design\\Draft Version 3.0}
+\author{David P. Wiggins\\X Consortium, Inc.}
+\maketitle
+
+\begin{abstract}
+This paper describes the implementation strategy used to implement
+various pieces of the SECURITY Extension.
+\end{abstract}
+% suppress page number on title page
+\thispagestyle{empty}
+
+\eject
+
+Copyright \copyright 1996 X Consortium, Inc. All Rights Reserved.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+\eject
+
+\section{GenerateAuthorization Request}
+
+The major steps taken to execute this request are as follows.
+
+Sanity check arguments. The interesting one is the group, which must
+be checked by some other module(s), initially just the embedding
+extension. Use a new callback for this. The callback functions will
+be passed a small structure containing the group ID and a Boolean
+value which is initially false. If any of the callbacks recognize the
+ID, they should set the boolean to true. If after the callbacks have
+been called the boolean is false, return an error, since nobody
+recognized it.
+
+Use the existing Xkey library function XkeyGenerateAuthorization to
+generate the new authorization.
+
+Use the existing os layer function AddAuthorization to add the new
+authorization to the server's internal database.
+
+Use the existing os layer function AuthorizationToID to retrieve the
+authorization ID that the os layer assigned to the new authorization.
+
+Change the os layer to use authorization IDs allocated from the
+server's ID range via FakeClientID(0) instead of using a simple
+incrementing integer. This lets us use the resource database to
+attach additional information to an authorization without needing any
+changes to os data structures.
+
+Add the authorization ID as a server resource. The structure for an
+authorization resource will contain the timeout, trust-level, and
+group sent in the request, a reference count of how many clients are
+connected with this authorization, a timer pointer, and time-remaining
+counter.
+
+Return the authorization ID and generated auth data to the client.
+
+
+\section{Client connection}
+
+The Security extension needs to be aware of new client connections
+primarily so that it copy the trust-level of the authorization that
+was used to the client structure. The trust-level is needed in the
+client structure because it will be accessed frequently to make access
+control decisions for the client. We will use the existing
+ClientStateCallback to catch new client connections.
+
+We also need to copy the authorization ID into the client structure.
+The authorization ID is already stored in an os private hung from the
+client, and we will add a new os function AuthorizationIDOfClient to
+retrieve it. However, when a client disconnects, this os private is
+already gone before ClientStateCallbacks are called. We need the
+authorization ID at client disconnect time for reasons described
+below.
+
+Now that we know what needs to be done and why, let's walk through
+the sequnce of events.
+
+When a new client connects, get the authorization ID with
+AuthorizationIDOfClient, store it in the client, then pass that ID to
+LookupIDByType to find the authorization. If we get a non-NULL
+pointer back, this is a generated authorization, not one of the
+predefined ones in the server's authority file. In this case,
+increment the authorization's reference count. If the reference count
+is now 1, cancel the timer for this authorization using the trivial
+new os layer function TimerCancel. Lastly, copy the trust-level of
+this authorization into the client structure so that it can be reached
+quickly for future access control decisions.
+
+The embedding extension can determine the group to use for a new
+client in the same way that we determined the trust level: get the
+authorization ID, look it up, and if that succeeds, pluck the group
+out of the returned authorization structure.
+
+\section{Client disconnection}
+
+Use the existing ClientStateCallback to catch client disconnections.
+If the client was using a generated authorization, decrement its
+reference count. If the reference count is now zero, use the existing
+os layer function TimerSet to start a timer to count down the timeout
+period for this authorization. Record the timer ID for this
+authorization. When the timer fires, the authorization should be
+freed, removing all traces of it from the server.
+
+There is a slight complication regarding the timeout because the timer
+interface in the server allows for 32 bits worth of milliseconds,
+while the timeout specified in GenerateAuthorization has 32 bits worth
+of seconds. To handle this, if the specified time is more than the
+timer interface can handle, the maximum possible timeout will be set,
+and time-remaining counter for this authorization will be used to
+track the leftover part. When the timer fires, it should first check
+to see if there is any leftover time to wait. If there is, it should
+set another timer to the minimum of (the maximum possible timeout) and
+the time remaining, and not do the revocation yet.
+
+\section{Resource ID security}
+
+To implement the restriction that untrusted clients cannot access
+resources of trusted clients, we add two new functions to dix:
+SecurityLookupIDByType and SecurityLookupIDByClass. Hereafter we will
+use SecurityLookupID to refer to both functions. In addition to the
+parameters of the existing LookupID functions, these functions also
+take a pointer to the client doing the lookup, and an access mode that
+conveys a high-level idea of what the client intends to do with the
+resource (currently just read, write, destroy, and unknown). Passing
+NullClient for the client turns off access checks. SecurityLookupID
+can return NULL for two reasons: the resource doesn't exist, or it
+does but the client isn't allowed to access it. The caller cannot
+tell the difference. Most places in dix call these new lookup
+functions instead of the old LookupID, which continue to do no access
+checking. Extension ``Proc'' functions should probably use
+SecurityLookupID, not LookupID. Ddxen can continue to use LookupID.
+
+Inside SecurityLookupID, the function client$->$CheckAccess is called
+passing the client, resource id, resource type/class, resource value,
+and access mode. CheckAccess returns the resource value if access is
+allowed, else it returns NULL. The entire resource ID security policy
+of the Security extension can be replaced by plugging in your own
+access decision function here. This in combination with the access
+mode parameter should be enough to implement a more traditional DAC
+(discretionary access control) policy.
+
+Since we need client and access mode information to do access
+controlled resource lookups, we add (and use) several other macros and
+functions that parallel existing ones with the addition of the missing
+information. The list includes SECURITY\_VERIFY\_GC,
+SECURITY\_VERIFY\_DRAWABLE, SECURITY\_VERIFY\_GEOMETRABLE,
+SecurityLookupWindow, SecurityLookupDrawable, and dixChangeGC. The
+dixChangeGC interface is worth mentioning because in addition to a
+client parameter, we introduce a pointer-to-union parameter that
+should let us eliminate the warnings that some compilers give when you
+assign small integers to pointers, as the DoChangeGC interface
+required. For more details, see the comment preceding dixChangeGC in
+dix/gc.c.
+
+If XCSECURITY is not defined (the Security extension is not being
+built), the server uses essentially the same code as before for
+resource lookups.
+
+\section{Extension security}
+
+A new field in the ExtensionEntry structure, Bool secure, tells
+whether the extension is considered secure. It is initialized to
+FALSE by AddExtension. The following new dix function can be used to
+set the secure field:
+
+void DeclareExtensionSecurity(char *extname, Bool secure)
+
+The name of the extension and the desired value of the secure field
+are passed. If an extension is secure, a call to this function with
+secure = TRUE will typically appear right after the call to
+AddExtension. DeclareExtensionSecurity should be called during server
+reset. It should not be called after the first client has connected.
+Passing the name of an extension that has not been initialized has no
+effect (the secure value will not be remembered in case the extension
+is later initialized).
+
+For untrusted clients, ProcListExtensions omits extensions that have
+secure = FALSE, and ProcQueryExtension reports that such extensions
+don't exist.
+
+To prevent untrusted clients from using extensions by guessing their
+major opcode, one of two new Proc vectors are used by untusted
+clients, UntrusedProcVector and SwappedUntrustedProcVector. These
+have the same contents as ProcVector and SwappedProcVector
+respectively for the first 128 entries. Entries 128 through 255 are
+initialized to ProcBadRequest. If DeclareExtensionSecurity is called
+with secure = TRUE, that extension's dispatch function is plugged
+into the appropriate entry so that the extension can be used. If
+DeclareExtensionSecurity is called with secure = FALSE, the
+appropriate entry is reset to ProcBadRequest.
+
+Now we can explain why DeclareExtensionSecurity should not be called
+after the first client connects. In some cases, the Record extension
+gives clients a private copy of the proc vector, which it then changes
+to intercept certain requests. Changing entries in UntrusedProcVector
+and SwappedUntrustedProcVector will have no effect on these copied
+proc vectors. If we get to the point of needing an extension request
+to control which extensions are secure, we'll need to invent a way to
+get those copied proc vectors changed.
+
+\end{document}
diff --git a/specs/Xt/CH01 b/specs/Xt/CH01
new file mode 100644
index 0000000..7cc1db0
--- /dev/null
+++ b/specs/Xt/CH01
@@ -0,0 +1,2471 @@
+.\" $Xorg: CH01,v 1.3 2000/08/17 19:42:42 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 1\fP\s-1
+
+\s+1\fBIntrinsics and Widgets\fP\s-1
+.sp 2
+.if \n(GS .nr nh*hl 1
+.nr H1 1
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+\fBChapter 1 \(em Intrinsics and Widgets\fP
+.XE
+The \*(xI are a programming library tailored to the special requirements
+of user interface construction within a network window system,
+specifically the X Window System.
+The \*(xI and a widget set make up an \*(tk.
+
+.NH 2
+Intrinsics
+.XS
+\fB\*(SN Intrinsics\fP
+.XE
+.LP
+The \*(xI provide the base mechanism necessary to build
+a wide variety of interoperating widget sets and application environments.
+The Intrinsics are a layer on top of Xlib, the
+C Library X Interface. They extend the
+fundamental abstractions provided by the X Window System while still
+remaining independent of any particular user interface policy or
+style.
+.LP
+The Intrinsics use object-oriented programming techniques to supply a
+consistent architecture for constructing and composing user interface
+components, known as widgets. This
+allows programmers to extend a widget set in new ways, either by
+deriving new widgets from existing ones (subclassing) or by writing
+entirely new widgets following the established conventions.
+.LP
+When the \*(xI were first conceived, the root of the object
+hierarchy was a widget class named
+Core.
+.IN "Core"
+In Release 4 of the
+\*(xI, three nonwidget superclasses were added above Core.
+These superclasses are described in Chapter 12. The name of the class
+now at the root of the Intrinsics class hierarchy is
+Object.
+.IN "Object"
+The remainder of this
+specification refers uniformly to \fIwidgets\fP and \fICore\fP
+as if they were the
+base class for all \*(xI operations. The argument descriptions
+for each Intrinsics procedure and Chapter 12 describe which operations
+are defined for the nonwidget superclasses of Core. The reader may
+determine by context whether a specific reference to \fIwidget\fP
+actually means ``widget'' or ``object.''
+
+.NH 2
+Languages
+.XS
+\fB\*(SN Languages\fP
+.XE
+.LP
+The Intrinsics are intended to be used for two programming purposes.
+Programmers writing widgets will be using most of the facilities
+provided by the
+Intrinsics to construct user interface components from the simple, such
+as buttons and scrollbars, to the complex, such as control panels and
+property sheets. Application programmers will use a much smaller subset of
+the Intrinsics procedures in combination with one or more sets of widgets to
+construct and present complete user interfaces on an X display. The
+Intrinsics
+programming interfaces primarily
+intended for application use are designed to be callable from most
+procedural programming languages. Therefore, most arguments are passed by
+reference rather than by value. The interfaces primarily
+intended for widget programmers are expected to be used principally
+from the C language. In these cases, the usual C programming
+conventions apply. In this specification, the term \fIclient\fP refers to
+any module, widget, or application that calls an Intrinsics procedure.
+.LP
+Applications that use the \*(xI mechanisms
+must include the header files
+.Pn < X11/Intrinsic.h >
+and
+.Pn < X11/StringDefs.h >,
+or their equivalent,
+and they may also include
+.Pn < X11/Xatoms.h >
+and
+.Pn < X11/Shell.h >.
+In addition, widget implementations should include
+.Pn < X11/IntrinsicP.h >
+instead of
+.Pn < X11/Intrinsic.h >.
+.LP
+The applications must also include the additional header files for
+each widget class that they are to use (for example,
+.Pn < X11/Xaw/Label.h >
+or
+.Pn < X11/Xaw/Scrollbar.h >).
+On a POSIX-based system,
+the \*(xI object library file is named
+.PN libXt.a
+and is usually referenced as \-lXt when linking the application.
+
+.NH 2
+Procedures and Macros
+.LP
+.XS
+\fB\*(SN Procedures and Macros\fP
+.XE
+All functions defined in this specification except those specified below
+may be implemented as C macros with arguments. C applications may use
+``#undef'' to remove a macro definition and ensure that the actual function
+is referenced. Any such macro will expand to a single expression that
+has the same precedence as a function call and that evaluates each
+of its arguments exactly once, fully protected by parentheses, so that
+arbitrary expressions may be used as arguments.
+.LP
+The following symbols are macros that do not have function
+equivalents and that may expand their arguments in a manner other
+than that described above:
+.PN XtCheckSubclass ,
+.PN XtNew ,
+.PN XtNumber ,
+.PN XtOffsetOf ,
+.PN XtOffset ,
+and
+.PN XtSetArg .
+
+.NH 2
+Widgets
+.LP
+.XS
+\fB\*(SN Widgets\fP
+.XE
+.LP
+The fundamental abstraction and data type of the \*(tk is the widget,
+which is a combination of an X window and its associated
+input and display semantics
+and which is dynamically allocated and contains state information.
+Some widgets display information (for example, text or graphics),
+and others are merely containers for other widgets (for example, a menu box).
+Some widgets are output-only and do not react to pointer or keyboard input,
+and others change their display in response to input
+and can invoke functions that an application has attached to them.
+.LP
+Every widget belongs to exactly one widget class, which is statically
+allocated and initialized and which contains the operations allowable on
+widgets of that class.
+Logically, a widget class is the procedures and data associated
+with all widgets belonging to that class.
+These procedures and data can be inherited by
+subclasses.
+Physically, a widget class is a pointer to a structure.
+The contents of this structure are constant for all widgets of the widget
+class but will vary from class to class.
+(Here, ``constant'' means the class structure is initialized at compile time
+and never changed, except for a one-time class initialization
+and in-place compilation of resource lists,
+which takes place when the first widget of the class or subclass is created.)
+For further information,
+see Section 2.5.
+.LP
+The distribution of the declarations and code for a new widget class
+among a public .h file for application programmer use, a private .h file
+for widget programmer use,
+and the implementation .c file is described in Section 1.6.
+The predefined widget classes adhere to these conventions.
+.LP
+A widget instance is composed of two parts:
+.IP \(bu 5
+A data structure which contains instance-specific values.
+.IP \(bu 5
+A class structure which contains information that is applicable to
+all widgets of that class.
+.LP
+Much of the input/output of a widget (for example, fonts, colors, sizes,
+or border widths) is customizable by users.
+.LP
+This chapter discusses the base widget classes,
+Core, Composite, and Constraint, and
+ends with a discussion of widget classing.
+
+.NH 3
+Core Widgets
+.XS
+\*(SN Core Widgets
+.XE
+.LP
+.IN "Core" "" "@DEF"
+The
+Core
+widget class contains the definitions of fields common to all widgets.
+All widgets classes are subclasses of the
+Core class,
+which is defined by the
+.PN CoreClassPart
+and
+.PN CorePart
+structures.
+
+.NH 4
+CoreClassPart Structure
+.XS
+\*(SN CoreClassPart Structure
+.XE
+.LP
+All widget classes contain the fields defined in the
+.PN CoreClassPart
+structure.
+.LP
+.IN "CoreClassPart" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3.5i
+.ta .5i 3.5i
+typedef struct {
+ WidgetClass superclass; See Section 1.6
+ String class_name; See Chapter 9
+ Cardinal widget_size; See Section 1.6
+ XtProc class_initialize; See Section 1.6
+ XtWidgetClassProc class_part_initialize; See Section 1.6
+ XtEnum class_inited; See Section 1.6
+ XtInitProc initialize; See Section 2.5
+ XtArgsProc initialize_hook; See Section 2.5
+ XtRealizeProc realize; See Section 2.6
+ XtActionList actions; See Chapter 10
+ Cardinal num_actions; See Chapter 10
+ XtResourceList resources; See Chapter 9
+ Cardinal num_resources; See Chapter 9
+ XrmClass xrm_class; Private to resource manager
+ Boolean compress_motion; See Section 7.9
+ XtEnum compress_exposure; See Section 7.9
+ Boolean compress_enterleave; See Section 7.9
+ Boolean visible_interest; See Section 7.10
+ XtWidgetProc destroy; See Section 2.8
+ XtWidgetProc resize; See Chapter 6
+ XtExposeProc expose; See Section 7.10
+ XtSetValuesFunc set_values; See Section 9.7
+ XtArgsFunc set_values_hook; See Section 9.7
+ XtAlmostProc set_values_almost; See Section 9.7
+ XtArgsProc get_values_hook; See Section 9.7
+ XtAcceptFocusProc accept_focus; See Section 7.3
+ XtVersionType version; See Section 1.6
+ XtPointer callback_private; Private to callbacks
+ String tm_table; See Chapter 10
+ XtGeometryHandler query_geometry; See Chapter 6
+ XtStringProc display_accelerator; See Chapter 10
+ XtPointer extension; See Section 1.6
+} CoreClassPart;
+.De
+.LP
+.eM
+All widget classes have the Core class fields as their first component.
+The prototypical
+.PN WidgetClass
+and
+.PN CoreWidgetClass
+are defined with only this set of fields.
+.LP
+.IN "Core" "" "@DEF@"
+.IN "WidgetClass" "" "@DEF@"
+.IN "CoreWidgetClass" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ CoreClassPart core_class;
+} WidgetClassRec, *WidgetClass, CoreClassRec, *CoreWidgetClass;
+.De
+.LP
+.eM
+Various routines can cast widget class pointers, as needed,
+to specific widget class types.
+.LP
+The single occurrences of the class record and pointer for
+creating instances of Core are
+.LP
+In
+.PN IntrinsicP.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+extern WidgetClassRec widgetClassRec;
+#define coreClassRec widgetClassRec
+.De
+.LP
+.eM
+In
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+extern WidgetClass widgetClass, coreWidgetClass;
+.De
+.LP
+.eM
+The opaque types
+.PN Widget
+and
+.PN WidgetClass
+and the opaque variable
+.PN widgetClass
+are defined for generic actions on widgets.
+In order to make these types opaque and ensure that the compiler
+does not allow applications to access private data, the \*(xI use
+incomplete structure definitions in
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _WidgetClassRec *WidgetClass, *CoreWidgetClass;
+.De
+.eM
+
+.NH 4
+CorePart Structure
+.XS
+\*(SN CorePart Structure
+.XE
+.LP
+All widget instances contain the fields defined in the
+.PN CorePart
+structure.
+.LP
+.IN "CorePart" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _CorePart {
+ Widget self; Described below
+ WidgetClass widget_class; See Section 1.6
+ Widget parent; See Section 2.5
+ Boolean being_destroyed; See Section 2.8
+ XtCallbackList destroy_callbacks; See Section 2.8
+ XtPointer constraints; See Section 3.6
+ Position x; See Chapter 6
+ Position y; See Chapter 6
+ Dimension width; See Chapter 6
+ Dimension height; See Chapter 6
+ Dimension border_width; See Chapter 6
+ Boolean managed; See Chapter 3
+ Boolean sensitive; See Section 7.7
+ Boolean ancestor_sensitive; See Section 7.7
+ XtTranslations accelerators; See Chapter 10
+ Pixel border_pixel; See Section 2.6
+ Pixmap border_pixmap; See Section 2.6
+ WidgetList popup_list; See Chapter 5
+ Cardinal num_popups; See Chapter 5
+ String name; See Chapter 9
+ Screen *screen; See Section 2.6
+ Colormap colormap; See Section 2.6
+ Window window; See Section 2.6
+ Cardinal depth; See Section 2.6
+ Pixel background_pixel; See Section 2.6
+ Pixmap background_pixmap; See Section 2.6
+ Boolean visible; See Section 7.10
+ Boolean mapped_when_managed; See Chapter 3
+} CorePart;
+.De
+.LP
+.eM
+All widget instances have the Core fields as their first component.
+The prototypical type
+.PN Widget
+is defined with only this set of fields.
+.LP
+.IN "Widget" "" "@DEF@"
+.IN "CoreWidget" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ CorePart core;
+} WidgetRec, *Widget, CoreRec, *CoreWidget;
+.De
+.LP
+.eM
+Various routines can cast widget pointers, as needed,
+to specific widget types.
+.LP
+In order to make these types opaque and ensure that the compiler
+does not allow applications to access private data, the \*(xI use
+incomplete structure definitions in
+.PN Intrinsic.h .
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _WidgetRec *Widget, *CoreWidget;
+.De
+.eM
+
+.NH 4
+Core Resources
+.LP
+.XS
+\fB\*(SN Core Resources\fP
+.XE
+.LP
+.IN "CoreWidget" "Resources"
+The resource names, classes, and representation types specified in the
+.PN coreClassRec
+resource list are
+.LP
+.TS
+lw(1.5i) lw(1.5i) lw(2.5i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNaccelerators XtCAccelerators XtRAcceleratorTable
+XtNbackground XtCBackground XtRPixel
+XtNbackgroundPixmap XtCPixmap XtRPixmap
+XtNborderColor XtCBorderColor XtRPixel
+XtNborderPixmap XtCPixmap XtRPixmap
+XtNcolormap XtCColormap XtRColormap
+XtNdepth XtCDepth XtRInt
+XtNmappedWhenManaged XtCMappedWhenManaged XtRBoolean
+XtNscreen XtCScreen XtRScreen
+XtNtranslations XtCTranslations XtRTranslationTable
+.sp 6p
+_
+.TE
+.LP
+Additional resources are defined for all widgets via the
+.PN objectClassRec
+and
+.PN rectObjClassRec
+resource lists; see Sections 12.2 and 12.3 for details.
+
+.NH 4
+CorePart Default Values
+.XS
+\*(SN CorePart Default Values
+.XE
+.LP
+The default values for the Core fields, which are filled in by the \*(xI,
+from the resource lists, and by the initialize procedures, are
+.LP
+.TS
+lw(1.5i) lw(4.25i) .
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+self Address of the widget structure (may not be changed).
+T{
+widget_class
+T} T{
+\fIwidget_class\fP argument to
+.PN XtCreateWidget
+(may not be changed).
+T}
+T{
+parent
+T} T{
+\fIparent\fP argument to
+.PN XtCreateWidget
+(may not be changed).
+T}
+being_destroyed Parent's \fIbeing_destroyed\fP value.
+destroy_callbacks NULL
+constraints NULL
+x 0
+y 0
+width 0
+height 0
+border_width 1
+T{
+managed
+T} T{
+.PN False
+T}
+T{
+sensitive
+T} T{
+.PN True
+T}
+ancestor_sensitive T{
+logical AND of parent's \fIsensitive\fP and
+\fIancestor_sensitive\fP values.
+T}
+accelerators NULL
+T{
+border_pixel
+T} T{
+.PN XtDefaultForeground
+T}
+border_pixmap T{
+.PN XtUnspecifiedPixmap
+T}
+popup_list NULL
+num_popups 0
+T{
+name
+T} T{
+\fIname\fP argument to
+.PN XtCreateWidget
+(may not be changed).
+T}
+T{
+screen
+T} T{
+Parent's \fIscreen\fP; top-level widget gets screen from display specifier
+.br
+(may not be changed).
+T}
+colormap Parent's \fIcolormap\fP value.
+window NULL
+depth Parent's \fIdepth\fP; top-level widget gets root window depth.
+T{
+background_pixel
+T} T{
+.PN XtDefaultBackground
+T}
+background_pixmap T{
+.PN XtUnspecifiedPixmap
+T}
+T{
+visible
+T} T{
+.PN True
+T}
+T{
+mapped_when_managed
+T} T{
+.PN True
+T}
+.sp 6p
+_
+.TE
+.LP
+.IN XtUnspecifiedPixmap "" "@DEF@"
+.PN XtUnspecifiedPixmap
+is a symbolic constant guaranteed to be unequal to
+any valid Pixmap id,
+.PN None ,
+and
+.PN ParentRelative .
+
+.NH 3
+Composite Widgets
+.XS
+\*(SN Composite Widgets
+.XE
+.LP
+.IN "Composite" "" "@DEF@"
+The Composite
+widget class is a subclass of the
+Core
+widget class (see Chapter 3).
+Composite widgets are intended to be containers for other widgets.
+The additional data used by composite widgets are defined by the
+.PN CompositeClassPart
+and
+.PN CompositePart
+structures.
+
+.NH 4
+CompositeClassPart Structure
+.XS
+\*(SN CompositeClassPart Structure
+.XE
+.LP
+In addition to the
+Core
+class fields,
+widgets of the Composite class have the following class fields.
+.LP
+.IN "CompositeClassPart" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3.5i
+.ta .5i 3.5i
+typedef struct {
+ XtGeometryHandler geometry_manager; See Chapter 6
+ XtWidgetProc change_managed; See Chapter 3
+ XtWidgetProc insert_child; See Chapter 3
+ XtWidgetProc delete_child; See Chapter 3
+ XtPointer extension; See Section 1.6
+} CompositeClassPart;
+.De
+.LP
+.eM
+The extension record defined for
+.PN CompositeClassPart
+with \fIrecord_type\fP
+equal to
+.PN \s-1NULLQUARK\s+1
+is
+.PN CompositeClassExtensionRec .
+.LP
+.IN "CompositeClassExtensionRec" "" "@DEF@"
+.IN "CompositeClassExtension" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3.5i
+.ta .5i 3.5i
+typedef struct {
+ XtPointer next_extension; See Section 1.6.12
+ XrmQuark record_type; See Section 1.6.12
+ long version; See Section 1.6.12
+ Cardinal record_size; See Section 1.6.12
+ Boolean accepts_objects; See Section 2.5.2
+ Boolean allows_change_managed_set; See Section 3.4.3
+} CompositeClassExtensionRec, *CompositeClassExtension;
+.De
+.LP
+.eM
+Composite
+classes have the Composite class fields immediately following the
+Core class fields.
+.LP
+.IN "CompositeWidgetClass" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+} CompositeClassRec, *CompositeWidgetClass;
+.De
+.LP
+.eM
+The single occurrences of the class record and pointer for creating
+instances of Composite are
+.LP
+In
+.PN IntrinsicP.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+extern CompositeClassRec compositeClassRec;
+.De
+.LP
+.eM
+In
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+extern WidgetClass compositeWidgetClass;
+.De
+.LP
+.eM
+The opaque types
+.PN CompositeWidget
+and
+.PN CompositeWidgetClass
+and the opaque variable
+.PN compositeWidgetClass
+are defined for generic operations on widgets whose class
+is Composite or a subclass of Composite.
+The symbolic constant for the
+.PN CompositeClassExtension
+version identifier is
+.PN XtCompositeExtensionVersion
+(see Section 1.6.12).
+.PN Intrinsic.h
+uses an incomplete structure
+definition to ensure that the compiler catches attempts to access
+private data.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _CompositeClassRec *CompositeWidgetClass;
+.De
+.eM
+
+.NH 4
+CompositePart Structure
+.XS
+\*(SN CompositePart Structure
+.XE
+.LP
+In addition to the
+Core instance
+fields,
+widgets of the Composite class have the following
+instance fields defined in the
+.PN CompositePart
+structure.
+.LP
+.IN "CompositePart" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ WidgetList children; See Chapter 3
+ Cardinal num_children; See Chapter 3
+ Cardinal num_slots; See Chapter 3
+ XtOrderProc insert_position; See Section 3.2
+} CompositePart;
+.De
+.LP
+.eM
+Composite
+widgets have the Composite instance fields immediately following the Core
+instance fields.
+.LP
+.IN "CompositeWidget" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+} CompositeRec, *CompositeWidget;
+.De
+.LP
+.eM
+.PN Intrinsic.h
+uses an incomplete structure definition to ensure that the
+compiler catches attempts to access private data.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _CompositeRec *CompositeWidget;
+.De
+.eM
+
+.NH 4
+Composite Resources
+.XS
+\fB\*(SN Composite Resources\fP
+.XE
+.LP
+.IN "CompositeWidget" "Resources"
+The resource names, classes, and representation types
+that are specified in
+the
+.PN compositeClassRec
+resource list are
+.LP
+.TS
+lw(1.5i) lw(1.5i) lw(2i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNchildren XtCReadOnly XtRWidgetList
+XtNinsertPosition XtCInsertPosition XtRFunction
+XtNnumChildren XtCReadOnly XtRCardinal
+.sp 6p
+_
+.TE
+
+.NH 4
+CompositePart Default Values
+.XS
+\*(SN CompositePart Default Values
+.XE
+.LP
+The default values for the Composite fields,
+which are filled in from the
+Composite
+resource list and by the
+Composite
+initialize procedure, are
+.LP
+.TS
+l l .
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+children NULL
+num_children 0
+num_slots 0
+insert_position Internal function to insert at end
+.sp 6p
+_
+.TE
+.LP
+The \fIchildren\fP, \fInum_children\fP,
+and \fIinsert_position\fP fields are declared
+as resources;
+.IN XtNinsertPosition
+XtNinsertPosition
+is a settable resource,
+.IN XtNchildren
+XtNchildren
+and
+.IN XtNnumChildren
+XtNnumChildren
+may be read by any client but should only be modified by the composite
+widget class procedures.
+
+.NH 3
+Constraint Widgets
+.XS
+\*(SN Constraint Widgets
+.XE
+.LP
+.IN "Constraint" "" "@DEF@"
+The Constraint
+widget class is a subclass of the
+Composite
+widget class (see Section 3.6). Constraint
+widgets maintain additional state
+data for each child; for example, client-defined constraints on the child's
+geometry.
+The additional data used by constraint widgets are defined by the
+.PN ConstraintClassPart
+and
+.PN ConstraintPart
+structures.
+
+.NH 4
+ConstraintClassPart Structure
+.XS
+\*(SN ConstraintClassPart Structure
+.XE
+.LP
+In addition to the
+Core
+and
+Composite
+class fields,
+widgets of the Constraint class
+have the following class fields.
+.LP
+.IN "ConstraintClassPart" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XtResourceList resources; See Chapter 9
+ Cardinal num_resources; See Chapter 9
+ Cardinal constraint_size; See Section 3.6
+ XtInitProc initialize; See Section 3.6
+ XtWidgetProc destroy; See Section 3.6
+ XtSetValuesFunc set_values; See Section 9.7.2
+ XtPointer extension; See Section 1.6
+} ConstraintClassPart;
+.De
+.LP
+.eM
+The extension record defined for
+.PN ConstraintClassPart
+with \fIrecord_type\fP equal to
+.PN \s-1NULLQUARK\s+1
+is
+.PN ConstraintClassExtensionRec .
+.LP
+.IN "ConstraintClassExtensionRec" "" "@DEF@"
+.IN "ConstraintClassExtension" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XtPointer next_extension; See Section 1.6.12
+ XrmQuark record_type; See Section 1.6.12
+ long version; See Section 1.6.12
+ Cardinal record_size; See Section 1.6.12
+ XtArgsProc get_values_hook; See Section 9.7.1
+} ConstraintClassExtensionRec, *ConstraintClassExtension;
+.De
+.LP
+.eM
+Constraint
+classes have the Constraint class fields immediately following the
+Composite class fields.
+.LP
+.IN "ConstraintWidgetClass" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _ConstraintClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ConstraintClassPart constraint_class;
+} ConstraintClassRec, *ConstraintWidgetClass;
+.De
+.LP
+.eM
+The single occurrences of the class record and pointer for creating
+instances of Constraint are
+.LP
+In
+.PN IntrinsicP.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+extern ConstraintClassRec constraintClassRec;
+.De
+.LP
+.eM
+In
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+extern WidgetClass constraintWidgetClass;
+.De
+.LP
+.eM
+The opaque types
+.PN ConstraintWidget
+and
+.PN ConstraintWidgetClass
+and the opaque variable
+.PN constraintWidgetClass
+are defined for generic operations on widgets
+whose class is Constraint or a subclass
+of Constraint.
+The symbolic constant for the
+.PN ConstraintClassExtension
+version identifier is
+.PN XtConstraintExtensionVersion
+(see Section 1.6.12).
+.PN Intrinsic.h
+uses an incomplete structure definition to ensure that the
+compiler catches attempts to access private data.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _ConstraintClassRec *ConstraintWidgetClass;
+.De
+.eM
+
+.NH 4
+ConstraintPart Structure
+.XS
+\*(SN ConstraintPart Structure
+.XE
+.LP
+In addition to the
+Core
+and
+Composite instance
+fields,
+widgets of the Constraint class have the following unused
+instance fields defined in the
+.PN ConstraintPart
+structure
+.LP
+.IN "ConstraintPart" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int empty;
+} ConstraintPart;
+.De
+.LP
+.eM
+Constraint
+widgets have the Constraint instance fields immediately following the
+Composite instance fields.
+.LP
+.IN "ConstraintWidget" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ConstraintPart constraint;
+} ConstraintRec, *ConstraintWidget;
+.De
+.LP
+.eM
+.PN Intrinsic.h
+uses an incomplete structure definition to ensure that the
+compiler catches attempts to access private data.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _ConstraintRec *ConstraintWidget;
+.De
+.eM
+
+.NH 4
+Constraint Resources
+.XS
+\fB\*(SN Constraint Resources\fP
+.XE
+.LP
+The
+.PN constraintClassRec
+\fIcore_class\fP and \fIconstraint_class resources\fP fields are NULL,
+and the \fInum_resources\fP fields are zero;
+no additional resources beyond those declared by
+the superclasses
+are defined for
+Constraint.
+
+.NH 2
+Implementation-Specific Types
+.XS
+\fB\*(SN Implementation-Specific Types\fP
+.XE
+.LP
+To increase the portability of widget and application source code
+between different system environments, the \*(xI define several
+types whose precise representation is explicitly dependent upon,
+and chosen by, each individual implementation of the \*(xI.
+.LP
+These implementation-defined types are
+.IN "Boolean" "" "@DEF@"
+.IP \fBBoolean\fP 11
+A datum that contains a zero or nonzero value.
+Unless explicitly stated, clients should not assume
+that the nonzero value is equal to the symbolic
+value
+.PN True .
+.IN "Cardinal" "" "@DEF@"
+.IP \fBCardinal\fP 11
+An unsigned integer datum with a minimum range of [0..2^16-1].
+.IN "Dimension" "" "@DEF@"
+.IP \fBDimension\fP 11
+An unsigned integer datum with a minimum range of [0..2^16-1].
+.IN "Position" "" "@DEF@"
+.IP \fBPosition\fP 11
+A signed integer datum with a minimum range of [-2^15..2^15-1].
+.IN "XtPointer" "" "@DEF@"
+.IP \fBXtPointer\fP 11
+A datum large enough to contain the largest of a char*, int*, function
+pointer, structure pointer, or long value. A pointer
+to any type or function, or a long value may be converted
+to an
+.PN XtPointer
+and back again and the result will
+compare equal to the original value. In ANSI C
+environments it is expected that
+.PN XtPointer
+will be
+defined as void*.
+.IN "XtArgVal" "" "@DEF@"
+.IP \fBXtArgVal\fP 11
+A datum large enough to contain an
+.PN XtPointer ,
+.PN Cardinal ,
+.PN Dimension ,
+or
+.PN Position
+value.
+.IN "XtEnum" "" "@DEF@"
+.IP \fBXtEnum\fP 11
+An integer datum large enough to encode at least 128 distinct
+values, two of which are the symbolic values
+.PN True
+and
+.PN False .
+The symbolic values
+.PN \s-1TRUE\s+1
+and
+.PN \s-1FALSE\s+1
+are
+also defined to be equal to
+.PN True
+and
+.PN False ,
+respectively.
+.LP
+In addition to these specific types, the precise order of the
+fields within the structure declarations for any of the instance
+part records
+.PN ObjectPart ,
+.PN RectObjPart ,
+.PN CorePart ,
+.PN CompositePart ,
+.PN ShellPart ,
+.PN WMShellPart ,
+.PN TopLevelShellPart ,
+and
+.PN ApplicationShellPart
+is implementation-defined. These
+structures may also have additional private
+fields internal to the implementation.
+The
+.PN ObjectPart ,
+.PN RectObjPart ,
+and
+.PN CorePart
+structures must be defined so that any member with the same name
+appears at the same offset in
+.PN ObjectRec ,
+.PN RectObjRec ,
+and
+.PN CoreRec
+.Pn ( WidgetRec ).
+No other relations between the offsets of any two
+fields may be assumed.
+
+.NH 2
+Widget Classing
+.LP
+.XS
+\fB\*(SN Widget Classing\fP
+.XE
+.IN "widget_class" "" "@DEF@"
+The \fIwidget_class\fP field of a widget points to its widget class structure,
+which contains information that is constant across all widgets of that class.
+As a consequence,
+widgets usually do not implement directly callable procedures;
+rather, they implement procedures, called methods, that are available through
+their widget class structure.
+These methods are invoked by generic procedures that envelop common actions
+around the methods implemented by the widget class.
+Such procedures are applicable to all widgets
+of that class and also to widgets whose classes are subclasses of that class.
+.LP
+All widget classes are a subclass of
+Core
+and can be subclassed further.
+Subclassing reduces the amount of code and declarations
+necessary to make a
+new widget class that is similar to an existing class.
+For example, you do not have to describe every resource your widget uses in an
+.PN XtResourceList .
+Instead, you describe only the resources your widget has
+that its superclass does not.
+Subclasses usually inherit many of their superclasses' procedures
+(for example, the expose procedure or geometry handler).
+.LP
+Subclassing, however, can be taken too far.
+If you create a subclass that inherits none of the procedures of its
+superclass,
+you should consider whether you have chosen the most
+appropriate superclass.
+.LP
+To make good use of subclassing,
+widget declarations and naming conventions are highly stylized.
+A widget consists of three files:
+.IP \(bu 5
+A public .h file, used by client widgets or applications.
+.IP \(bu 5
+A private .h file, used by widgets whose classes
+are subclasses of the widget class.
+.IP \(bu 5
+A .c file, which implements the widget.
+
+.NH 3
+Widget Naming Conventions
+.XS
+\fB\*(SN Widget Naming Conventions\fP
+.XE
+.LP
+The \*(xI provide a vehicle by which programmers can create
+new widgets and organize a collection of widgets into an application.
+To ensure that applications need not deal with as many styles of capitalization
+and spelling as the number of widget classes it uses,
+the following guidelines should be followed when writing new widgets:
+.IP \(bu 5
+Use the X library naming conventions that are applicable.
+For example, a record component name is all lowercase
+and uses underscores (_) for compound words (for example, background_pixmap).
+Type and procedure names start with uppercase and use capitalization for
+compound words (for example,
+.PN ArgList
+or
+.PN XtSetValues ).
+.IP \(bu 5
+A resource name is spelled identically to the field name
+except that compound names use capitalization rather than underscore.
+To let the compiler catch spelling errors,
+each resource name should have a symbolic identifier prefixed with
+``XtN''.
+For example,
+the \fIbackground_pixmap\fP field has the corresponding identifier
+XtNbackgroundPixmap,
+which is defined as the string ``backgroundPixmap''.
+Many predefined names are listed in
+.Pn < X11/StringDefs.h >.
+Before you invent a new name,
+you should make sure there is not already a name that you can use.
+.IP \(bu 5
+A resource class string starts with a capital letter
+and uses capitalization for compound names (for example,``BorderWidth'').
+Each resource class string should have a symbolic identifier prefixed with
+``XtC''
+(for example, XtCBorderWidth).
+Many predefined classes are listed in
+.Pn < X11/StringDefs.h >.
+.IP \(bu 5
+A resource representation string is spelled identically to the type name
+(for example, ``TranslationTable'').
+Each representation string should have a symbolic identifier prefixed with
+``XtR''
+(for example, XtRTranslationTable).
+Many predefined representation types are listed in
+.Pn < X11/StringDefs.h >.
+.IP \(bu 5
+New widget classes start with a capital and use uppercase for compound
+words.
+Given a new class name AbcXyz, you should derive several names:
+.RS
+.IP \- 5
+Additional widget instance structure part name AbcXyzPart.
+.IP \- 5
+Complete widget instance structure names AbcXyzRec and _AbcXyzRec.
+.IP \- 5
+Widget instance structure pointer type name AbcXyzWidget.
+.IP \- 5
+Additional class structure part name AbcXyzClassPart.
+.IP \- 5
+Complete class structure names AbcXyzClassRec and _AbcXyzClassRec.
+.IP \- 5
+Class structure pointer type name AbcXyzWidgetClass.
+.IP \- 5
+Class structure variable abcXyzClassRec.
+.IP \- 5
+Class structure pointer variable abcXyzWidgetClass.
+.RE
+.IP \(bu 5
+Action procedures available to translation specifications should follow the
+same naming conventions as procedures.
+That is,
+they start with a capital letter, and compound names use uppercase
+(for example, ``Highlight'' and ``NotifyClient'').
+.LP
+The symbolic identifiers XtN..., XtC..., and XtR...
+may be implemented
+as macros, as global symbols, or as a mixture of the two. The
+(implicit) type of the identifier is
+.PN String .
+The pointer value itself
+is not significant; clients must not assume that inequality of two
+identifiers implies inequality of the resource name, class, or
+representation string. Clients should also note that although global
+symbols permit savings in literal storage in some environments, they
+also introduce the possibility of multiple definition conflicts when
+applications attempt to use independently developed widgets
+simultaneously.
+
+.NH 3
+Widget Subclassing in Public .h Files
+.XS
+\*(SN Widget Subclassing in Public .h Files
+.XE
+.LP
+The public .h file for a widget class is imported by clients
+and contains
+.IP \(bu 5
+A reference to the public .h file for the superclass.
+.IP \(bu 5
+Symbolic identifiers for
+the names and classes of the new resources that this widget adds
+to its superclass.
+The definitions should
+have a single space between the definition name and the value and no
+trailing space or comment in order to reduce the possibility of
+compiler warnings from similar declarations in multiple classes.
+.IP \(bu 5
+Type declarations for any new resource data types defined by the class.
+.IP \(bu 5
+The class record pointer variable used to create widget instances.
+.IP \(bu 5
+The C type that corresponds to widget instances of this class.
+.IP \(bu 5
+Entry points for new class methods.
+.LP
+For example, the following is the public .h file for a possible
+implementation of a Label widget:
+.LP
+.Ds
+.TA .5i 1.75i
+.ta .5i 1.75i
+#ifndef LABEL_H
+#define LABEL_H
+
+/* New resources */
+#define XtNjustify "justify"
+#define XtNforeground "foreground"
+#define XtNlabel "label"
+#define XtNfont "font"
+#define XtNinternalWidth "internalWidth"
+#define XtNinternalHeight "internalHeight"
+
+/* Class record pointer */
+extern WidgetClass labelWidgetClass;
+
+/* C Widget type definition */
+typedef struct _LabelRec *LabelWidget;
+
+/* New class method entry points */
+extern void LabelSetText();
+ /* Widget w */
+ /* String text */
+
+extern String LabelGetText();
+ /* Widget w */
+
+#endif LABEL_H
+.De
+.LP
+The conditional inclusion of the text allows the application
+to include header files for different widgets without being concerned
+that they already may be included as a superclass of another widget.
+.LP
+To accommodate operating systems with file name length restrictions,
+the name of the public .h file is the first ten characters of the
+widget class.
+For example,
+the public .h file for the
+Constraint
+widget class is
+.PN Constraint.h .
+
+.NH 3
+Widget Subclassing in Private .h Files
+.XS
+\*(SN Widget Subclassing in Private .h Files
+.XE
+.LP
+The private .h file for a widget is imported by widget classes that are
+subclasses of the widget and contains
+.IP \(bu 5
+A reference to the public .h file for the class.
+.IP \(bu 5
+A reference to the private .h file for the superclass.
+.IP \(bu 5
+Symbolic identifiers for any new resource representation types defined
+by the class. The definitions should have a single space between the
+definition name and the value and no trailing space or comment.
+.IP \(bu 5
+A structure part definition for
+the new fields that the widget instance adds to its superclass's
+widget structure.
+.IP \(bu 5
+The complete widget instance structure definition for this widget.
+.IP \(bu 5
+A structure part definition for
+the new fields that this widget class adds to its superclass's
+constraint
+structure if the widget class is a subclass of
+Constraint.
+.IP \(bu 5
+The complete
+constraint
+structure definition if the widget class is a subclass of
+Constraint.
+.IP \(bu 5
+Type definitions for any new procedure types used by class methods
+declared in the widget class part.
+.IP \(bu 5
+A structure part definition for
+the new fields that this widget class adds to its superclass's widget class
+structure.
+.IP \(bu 5
+The complete widget class structure definition for this widget.
+.IP \(bu 5
+The complete widget class extension structure definition
+for this widget, if any.
+.IP \(bu 5
+The symbolic constant identifying the class extension version, if any.
+.IP \(bu 5
+The name of the global class structure variable containing the generic
+class structure for this class.
+.IP \(bu 5
+An inherit constant for each new procedure in the widget class part structure.
+.LP
+For example, the following is the private .h file for a possible Label widget:
+.LP
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+#ifndef LABELP_H
+#define LABELP_H
+
+#include <X11/Label.h>
+
+/* New representation types used by the Label widget */
+#define XtRJustify "Justify"
+
+/* New fields for the Label widget record */
+typedef struct {
+/* Settable resources */
+ Pixel foreground;
+ XFontStruct *font;
+ String label; /* text to display */
+ XtJustify justify;
+ Dimension internal_width; /* # pixels horizontal border */
+ Dimension internal_height; /* # pixels vertical border */
+
+/* Data derived from resources */
+ GC normal_GC;
+ GC gray_GC;
+ Pixmap gray_pixmap;
+ Position label_x;
+ Position label_y;
+ Dimension label_width;
+ Dimension label_height;
+ Cardinal label_len;
+ Boolean display_sensitive;
+} LabelPart;
+.De
+.sp
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+/* Full instance record declaration */
+typedef struct _LabelRec {
+ CorePart core;
+ LabelPart label;
+} LabelRec;
+
+/* Types for Label class methods */
+typedef void (*LabelSetTextProc)();
+ /* Widget w */
+ /* String text */
+
+typedef String (*LabelGetTextProc)();
+ /* Widget w */
+
+/* New fields for the Label widget class record */
+typedef struct {
+ LabelSetTextProc set_text;
+ LabelGetTextProc get_text;
+ XtPointer extension;
+} LabelClassPart;
+
+/* Full class record declaration */
+typedef struct _LabelClassRec {
+ CoreClassPart core_class;
+ LabelClassPart label_class;
+} LabelClassRec;
+
+/* Class record variable */
+extern LabelClassRec labelClassRec;
+
+#define LabelInheritSetText((LabelSetTextProc)_XtInherit)
+#define LabelInheritGetText((LabelGetTextProc)_XtInherit)
+#endif LABELP_H
+.De
+.LP
+To accommodate operating systems with file name length restrictions,
+the name of the private .h file is the first nine characters of the
+widget class followed by a capital P.
+For example,
+the private .h file for the
+Constraint
+widget class is
+.PN ConstrainP.h .
+
+.NH 3
+Widget Subclassing in .c Files
+.XS
+\*(SN Widget Subclassing in .c Files
+.XE
+.LP
+The .c file for a widget contains the structure initializer
+for the class record variable,
+which contains the following parts:
+.IP \(bu 5
+Class information (for example, \fIsuperclass\fP, \fIclass_name\fP,
+\fIwidget_size\fP,
+\fIclass_initialize\fP, and \fIclass_inited\fP).
+.IP \(bu 5
+Data constants (for example, \fIresources\fP and \fInum_resources\fP,
+\fIactions\fP and \fInum_actions\fP, \fIvisible_interest\fP,
+\fIcompress_motion\fP,
+\fIcompress_exposure\fP, and \fIversion\fP).
+.IP \(bu 5
+Widget operations (for example, \fIinitialize\fP, \fIrealize\fP, \fIdestroy\fP,
+\fIresize\fP, \fIexpose\fP, \fIset_values\fP, \fIaccept_focus\fP,
+and any new operations specific to
+the widget).
+.LP
+.IN "superclass" "" "@DEF@"
+The \fIsuperclass\fP field points to the superclass
+global class
+record, declared in the superclass private .h file.
+For direct subclasses of the generic core widget,
+\fIsuperclass\fP should be initialized to the address of the
+.PN widgetClassRec
+structure.
+The superclass is used for class chaining operations and for
+inheriting or enveloping a superclass's operations
+(see Sections 1.6.7, 1.6.9, and 1.6.10).
+.LP
+.IN "class_name" "" "@DEF@"
+The \fIclass_name\fP field contains the text name for this class,
+which is used by
+the resource manager.
+For example, the Label widget has the string ``Label''.
+More than one widget class can share the same text class name.
+This string must be permanently allocated prior to or during the
+execution of the class initialization procedure and must not be
+subsequently deallocated.
+
+.LP
+.IN "widget_size" "" "@DEF@"
+The \fIwidget_size\fP field is the size of the corresponding widget
+instance structure
+(not the size of the class structure).
+.LP
+.IN "version" "" "@DEF@"
+The \fIversion\fP field indicates the toolkit
+implementation version number and is used for
+runtime consistency checking of the \*(tk and widgets in an application.
+Widget writers must set it to the
+implementation-defined symbolic value
+.PN XtVersion
+in the widget class structure initialization.
+Those widget writers who believe that their widget binaries are compatible
+with other implementations of the \*(xI can put the special value
+.PN XtVersionDontCheck
+in the \fIversion\fP field to disable version checking for those widgets.
+If a widget needs to compile alternative code for different
+revisions of the \*(xI interface definition, it may use the symbol
+.PN XtSpecificationRelease ,
+as described in Chapter 13.
+Use of
+.PN XtVersion
+allows the \*(xI implementation to recognize widget binaries
+that were compiled with older implementations.
+.LP
+The \fIextension\fP field is for future upward compatibility.
+If the widget programmer adds fields to class parts,
+all subclass structure layouts change,
+requiring complete recompilation.
+To allow clients to avoid recompilation,
+an extension field at the end of each class part can point to a record
+that contains any additional class information required.
+.LP
+All other fields are described in their respective sections.
+.LP
+The .c file also contains the declaration of the global class
+structure pointer variable used to create instances of the class.
+The following is an abbreviated version of the .c file
+for a Label widget.
+The resources table is described in Chapter 9.
+.LP
+.Ds
+.TA .5i 1.5i 3i
+.ta .5i 1.5i 3i
+
+/* Resources specific to Label */
+static XtResource resources[] = {
+ {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
+ XtOffset(LabelWidget, label.foreground), XtRString,
+ XtDefaultForeground},
+ {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *),
+ XtOffset(LabelWidget, label.font),XtRString,
+ XtDefaultFont},
+ {XtNlabel, XtCLabel, XtRString, sizeof(String),
+ XtOffset(LabelWidget, label.label), XtRString, NULL},
+ .
+ .
+ .
+}
+
+/* Forward declarations of procedures */
+static void ClassInitialize();
+static void Initialize();
+static void Realize();
+static void SetText();
+static void GetText();
+ .
+ .
+ .
+.De
+.sp
+.Ds
+.TA .5i 2i 3i
+.ta .5i 2i 3i
+/* Class record constant */
+LabelClassRec labelClassRec = {
+ {
+ /* core_class fields */
+ /* superclass */ (WidgetClass)&coreClassRec,
+ /* class_name */ "Label",
+ /* widget_size */ sizeof(LabelRec),
+ /* class_initialize */ ClassInitialize,
+ /* class_part_initialize */ NULL,
+ /* class_inited */ False,
+ /* initialize */ Initialize,
+ /* initialize_hook */ NULL,
+ /* realize */ Realize,
+ /* actions */ NULL,
+ /* num_actions */ 0,
+ /* resources */ resources,
+ /* num_resources */ XtNumber(resources),
+ /* xrm_class */ NULLQUARK,
+ /* compress_motion */ True,
+ /* compress_exposure */ True,
+ /* compress_enterleave */ True,
+ /* visible_interest */ False,
+ /* destroy */ NULL,
+ /* resize */ Resize,
+ /* expose */ Redisplay,
+ /* set_values */ SetValues,
+ /* set_values_hook */ NULL,
+ /* set_values_almost */ XtInheritSetValuesAlmost,
+ /* get_values_hook */ NULL,
+ /* accept_focus */ NULL,
+ /* version */ XtVersion,
+ /* callback_offsets */ NULL,
+ /* tm_table */ NULL,
+ /* query_geometry */ XtInheritQueryGeometry,
+ /* display_accelerator */ NULL,
+ /* extension */ NULL
+ },
+ {
+ /* Label_class fields */
+ /* get_text */ GetText,
+ /* set_text */ SetText,
+ /* extension */ NULL
+ }
+};
+
+/* Class record pointer */
+WidgetClass labelWidgetClass = (WidgetClass) &labelClassRec;
+
+/* New method access routines */
+void LabelSetText(w, text)
+ Widget w;
+ String text;
+{
+ Label WidgetClass lwc = (Label WidgetClass)XtClass(w);
+ XtCheckSubclass(w, labelWidgetClass, NULL);
+ *(lwc->label_class.set_text)(w, text)
+}
+/* Private procedures */
+ .
+ .
+ .
+.De
+
+.NH 3
+Widget Class and Superclass Look Up
+.XS
+\*(SN Widget Class and Superclass Look Up
+.XE
+.LP
+To obtain the class of a widget, use
+.PN XtClass .
+.IN "XtClass" "" "@DEF@"
+.LP
+.sM
+.FD 0
+WidgetClass XtClass(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.LP
+.eM
+The
+.PN XtClass
+function returns a pointer to the widget's class structure.
+.sp
+.LP
+To obtain the superclass of a widget, use
+.PN XtSuperclass .
+.IN "XtSuperclass" "" "@DEF@"
+.LP
+.sM
+.FD 0
+WidgetClass XtSuperclass(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.LP
+.eM
+The
+.PN XtSuperclass
+function returns a pointer to the widget's superclass class structure.
+
+.NH 3
+Widget Subclass Verification
+.XS
+\*(SN Widget Subclass Verification
+.XE
+.LP
+To check the subclass to which a widget belongs, use
+.PN XtIsSubclass .
+.IN "XtIsSubclass" "" "@DEF@"
+.LP
+.sM
+.FD 0
+Boolean XtIsSubclass(\fIw\fP, \fIwidget_class\fP)
+.br
+ Widget \fIw\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget or object instance whose class is to be checked. \*(oI
+.IP \fIwidget_class\fP 1i
+Specifies the widget class for which to test. \*(oC
+.LP
+.eM
+The
+.PN XtIsSubclass
+function returns
+.PN True
+if the class of the specified widget is equal to
+or is a subclass of the specified class.
+The widget's class can be any number of subclasses down the chain
+and need not be an immediate subclass of the specified class.
+Composite widgets that need to restrict the class of the items they
+contain can use
+.PN XtIsSubclass
+to find out if a widget belongs to the desired class of objects.
+.sp
+.LP
+To test if a given widget belongs to a subclass of an \*(xI-defined
+class, the \*(xI define macros or functions equivalent to
+.PN XtIsSubclass
+for each of the built-in classes. These procedures are
+.PN XtIsObject ,
+.PN XtIsRectObj ,
+.PN XtIsWidget ,
+.PN XtIsComposite ,
+.PN XtIsConstraint ,
+.PN XtIsShell ,
+.PN XtIsOverrideShell ,
+.PN XtIsWMShell ,
+.PN XtIsVendorShell ,
+.PN XtIsTransientShell ,
+.PN XtIsTopLevelShell ,
+.PN XtIsApplicationShell ,
+and
+.PN XtIsSessionShell .
+.IN "XtIsObject" "" "@DEF@"
+.IN "XtIsRectObj" "" "@DEF@"
+.IN "XtIsWidget" "" "@DEF@"
+.IN "XtIsComposite" "" "@DEF@"
+.IN "XtIsConstraint" "" "@DEF@"
+.IN "XtIsShell" "" "@DEF@"
+.IN "XtIsOverrideShell" "" "@DEF@"
+.IN "XtIsWMShell" "" "@DEF@"
+.IN "XtIsVendorShell" "" "@DEF@"
+.IN "XtIsTransientShell" "" "@DEF@"
+.IN "XtIsTopLevelShell" "" "@DEF@"
+.IN "XtIsApplicationShell" "" "@DEF@"
+.IN "XtIsSessionShell" "" "@DEF@"
+.LP
+All these macros and functions have the same argument description.
+.LP
+.sM
+.FD 0
+Boolean XtIs\fI<class>\fP (\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget or object instance whose class is to be checked. \*(oI
+.LP
+.eM
+These procedures may be faster than calling
+.PN XtIsSubclass
+directly for the built-in classes.
+.sp
+.LP
+To check a widget's class
+and to generate a debugging error message, use
+.PN XtCheckSubclass ,
+defined in
+.Pn < X11/IntrinsicP.h >:
+.IN "XtCheckSubclass" "" "@DEF@"
+.LP
+.sM
+.FD 0
+void XtCheckSubclass(\fIw\fP, \fIwidget_class\fP, \fImessage\fP)
+.br
+ Widget \fIw\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ String \fImessage\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget or object whose class is to be checked. \*(oI
+.IP \fIwidget_class\fP 1i
+Specifies the widget class for which to test. \*(oC
+.ds Me used
+.IP \fImessage\fP 1i
+Specifies the message to be used.
+.LP
+.eM
+The
+.PN XtCheckSubclass
+macro determines if the class of the specified widget is equal to
+or is a subclass of the specified class.
+The widget's class can be any number of subclasses down the chain
+and need not be an immediate subclass of the specified class.
+If the specified widget's class is not a subclass,
+.PN XtCheckSubclass
+constructs an error message from the supplied message,
+the widget's actual class, and the expected class and calls
+.PN XtErrorMsg .
+.PN XtCheckSubclass
+should be used at the entry point of exported routines to ensure
+that the client has passed in a valid widget class for the exported operation.
+.LP
+.PN XtCheckSubclass
+is only executed when the module has been compiled with the compiler symbol
+DEBUG defined; otherwise, it is defined as the empty string
+and generates no code.
+
+.NH 3
+Superclass Chaining
+.XS
+\*(SN Superclass Chaining
+.XE
+.LP
+.IN "Chaining" "superclass"
+.IN "Chaining" "Subclass"
+.IN "Superclass Chaining" "" "@DEF@
+.IN "Subclass Chaining" "" "@DEF@
+.IN "Inheritance"
+While most fields in a widget class structure are self-contained,
+some fields are linked to their corresponding fields in their superclass
+structures.
+With a linked field,
+the \*(xI access the field's value only after accessing its corresponding
+superclass value (called downward superclass chaining) or
+before accessing its corresponding superclass value (called upward superclass
+chaining). The self-contained fields are
+.sp
+.ta 2i
+In all widget classes: \fIclass_name\fP
+.br
+ \fIclass_initialize\fP
+.br
+ \fIwidget_size\fP
+.br
+ \fIrealize\fP
+.br
+ \fIvisible_interest\fP
+.br
+ \fIresize\fP
+.br
+ \fIexpose\fP
+.br
+ \fIaccept_focus\fP
+.br
+ \fIcompress_motion\fP
+.br
+ \fIcompress_exposure\fP
+.br
+ \fIcompress_enterleave\fP
+.br
+ \fIset_values_almost\fP
+.br
+ \fItm_table\fP
+.br
+ \fIversion\fP
+.br
+ \fIallocate\fP
+.br
+ \fIdeallocate\fP
+.sp
+In Composite widget classes: \fIgeometry_manager\fP
+.br
+ \fIchange_managed\fP
+.br
+ \fIinsert_child\fP
+.br
+ \fIdelete_child\fP
+.br
+ \fIaccepts_objects\fP
+.br
+ \fIallows_change_managed_set\fP
+.sp
+In Constraint widget classes: \fIconstraint_size\fP
+.sp
+In Shell widget classes: \fIroot_geometry_manager\fP
+.sp
+.LP
+With downward superclass chaining,
+the invocation of an operation first accesses the field from the
+Object,
+RectObj,
+and
+Core
+class structures, then from the subclass structure, and so on down the class chain to
+that widget's class structure. These superclass-to-subclass fields are
+.sp
+.ta 1i
+.br
+ \fIclass_part_initialize\fP
+.br
+ \fIget_values_hook\fP
+.br
+ \fIinitialize\fP
+.br
+ \fIinitialize_hook\fP
+.br
+ \fIset_values\fP
+.br
+ \fIset_values_hook\fP
+.br
+ \fIresources\fP
+.sp
+.LP
+In addition, for subclasses of
+Constraint,
+the following fields of the
+.PN ConstraintClassPart
+and
+.PN ConstraintClassExtensionRec
+structures are chained from the
+Constraint
+class down to the subclass:
+.ta 1i
+.br
+ \fIresources\fP
+.br
+ \fIinitialize\fP
+.br
+ \fIset_values\fP
+.br
+ \fIget_values_hook\fP
+.sp
+.LP
+With upward superclass chaining,
+the invocation of an operation first accesses the field from the widget
+class structure, then from the superclass structure,
+and so on up the class chain to the
+Core,
+RectObj,
+and
+Object
+class structures.
+The subclass-to-superclass fields are
+.sp
+.ta 1i
+.br
+ \fIdestroy\fP
+.br
+ \fIactions\fP
+.sp
+.LP
+For subclasses of
+Constraint,
+the following field of
+.PN ConstraintClassPart
+is chained from the subclass up to the
+Constraint class:
+.sp
+.ta 1i
+.br
+ \fIdestroy\fP
+
+.NH 3
+Class Initialization: class_initialize and class_part_initialize Procedures
+.XS
+\*(SN Class Initialization: class_initialize and class_part_initialize Procedures
+.XE
+.LP
+.IN "Class Initialization"
+.IN "Initialization"
+Many class records can be initialized completely at compile or link time.
+In some cases, however,
+a class may need to register type converters or perform other sorts of
+once-only runtime initialization.
+.LP
+Because the C language does not have initialization procedures
+that are invoked automatically when a program starts up,
+a widget class can declare a class_initialize procedure
+that will be automatically called exactly once by the \*(xI.
+A class initialization procedure pointer is of type
+.PN XtProc :
+.IN "class_initialize procedure" "" "@DEF@"
+.IN "XtProc" "" "@DEF@"
+.LP
+.sM
+.FD 0
+typedef void (*XtProc)(void);
+.FN
+.LP
+.eM
+A widget class indicates that it has no class initialization procedure by
+specifying NULL in the \fIclass_initialize\fP field.
+.LP
+In addition to the class initialization that is done exactly once,
+some classes perform initialization for fields in their parts
+of the class record.
+These are performed not just for the particular class,
+but for subclasses as well, and are
+done in the class's class part initialization procedure,
+a pointer to which is stored in the \fIclass_part_initialize\fP field.
+The class_part_initialize procedure pointer is of type
+.PN XtWidgetClassProc .
+.IN "XtWidgetClassProc" "" "@DEF@"
+.LP
+.sM
+.FD 0
+typedef void (*XtWidgetClassProc)(WidgetClass);
+.br
+ WidgetClass \fIwidget_class\fP;
+.FN
+.IP \fIwidget_class\fP 1i
+Points to the class structure for the class being initialized.
+.LP
+.eM
+During class initialization,
+the class part initialization procedures for the class and all its superclasses
+are called in superclass-to-subclass order on the class record.
+These procedures have the responsibility of doing any dynamic initializations
+necessary to their class's part of the record.
+The most common is the resolution of any inherited methods defined in the
+class.
+For example,
+if a widget class C has superclasses
+Core,
+Composite,
+A, and B, the class record for C first is passed to
+Core 's
+class_part_initialize procedure.
+This resolves any inherited Core methods and compiles the textual
+representations of the resource list and action table that are defined in the
+class record.
+Next, Composite's
+class_part_initialize procedure is called to initialize the
+composite part of C's class record.
+Finally, the class_part_initialize procedures for A, B, and C, in that order,
+are called.
+For further information,
+see Section 1.6.9.
+Classes that do not define any new class fields
+or that need no extra processing for them can specify NULL
+in the \fIclass_part_initialize\fP field.
+.LP
+All widget classes, whether they have a class initialization procedure or not,
+must start with their \fIclass_inited\fP field
+.PN False .
+.LP
+The first time a widget of a class is created,
+.PN XtCreateWidget
+ensures that the widget class and all superclasses are initialized, in
+superclass-to-subclass order, by checking each \fIclass_inited\fP field and,
+if it is
+.PN False ,
+by calling the class_initialize and the class_part_initialize procedures
+for the class and all its superclasses.
+The \*(xI then set the \fIclass_inited\fP field to a nonzero value.
+After the one-time initialization,
+a class structure is constant.
+.LP
+The following example provides the class initialization procedure for a Label class.
+.LP
+.Ds
+.TA .5i 2i
+.ta .5i 2i
+static void ClassInitialize()
+{
+ XtSetTypeConverter(XtRString, XtRJustify, CvtStringToJustify,
+ NULL, 0, XtCacheNone, NULL);
+}
+.De
+
+.NH 3
+Initializing a Widget Class
+.XS
+\fB\*(SN Initializing a Widget Class\fP
+.XE
+.IN "Widget" "class initialization"
+.LP
+A class is initialized when the first widget of that class or any
+subclass is created.
+To initialize a widget class without creating any widgets, use
+.PN XtInitializeWidgetClass .
+.IN "XtInitializeWidgetClass" "" "@DEF@"
+.LP
+.sM
+.FD 0
+void XtInitializeWidgetClass(\fIobject_class\fP)
+.br
+ WidgetClass \fIobject_class\fP;
+.br
+.FN
+.IP \fIobject_class\fP 1i
+Specifies the object class to initialize. May be
+.PN objectClass
+or any subclass thereof.
+.LP
+.eM
+If the specified widget class is already initialized,
+.PN XtInitializeWidgetClass
+returns immediately.
+.LP
+If the class initialization procedure registers type converters,
+these type converters are not available until the first object
+of the class or subclass is created or
+.PN XtInitializeWidgetClass
+is called
+(see Section 9.6).
+
+.NH 3
+Inheritance of Superclass Operations
+.XS
+\*(SN Inheritance of Superclass Operations
+.XE
+.LP
+A widget class is free to use any of its superclass's self-contained
+operations rather than implementing its own code.
+The most frequently inherited operations are
+.IP
+expose
+.IP
+realize
+.IP
+insert_child
+.IP
+delete_child
+.IP
+geometry_manager
+.IP
+set_values_almost
+.LP
+To inherit an operation \fIxyz\fP,
+specify the constant
+.PN XtInherit \fIXyz\fP
+in your class record.
+.LP
+Every class that declares a new procedure in its widget class part must
+provide for inheriting the procedure in its class_part_initialize
+procedure.
+The chained operations declared in Core
+and Constraint
+records are never inherited.
+Widget classes that do nothing beyond what their superclass does
+specify NULL for chained procedures
+in their class records.
+.LP
+Inheriting works by comparing the value of the field with a known, special
+value and by copying in the superclass's value for that field if a match
+occurs.
+This special value, called the inheritance constant,
+is usually the \*(xI internal value
+.PN _XtInherit
+cast to the appropriate type.
+.PN _XtInherit
+is a procedure that issues an error message if it is actually called.
+.LP
+For example,
+.PN CompositeP.h
+contains these definitions:
+.LP
+.Ds
+.TA .25i 1.5i 3i
+.ta .25i 1.5i 3i
+#define XtInheritGeometryManager ((XtGeometryHandler) _XtInherit)
+#define XtInheritChangeManaged ((XtWidgetProc) _XtInherit)
+#define XtInheritInsertChild ((XtArgsProc) _XtInherit)
+#define XtInheritDeleteChild ((XtWidgetProc) _XtInherit)
+.De
+.LP
+Composite's class_part_initialize procedure begins as follows:
+.LP
+.Ds
+.TA .2i 1.5i 3i
+.ta .2i 1.5i 3i
+static void CompositeClassPartInitialize(widgetClass)
+ WidgetClass widgetClass;
+{
+ CompositeWidgetClass wc = (CompositeWidgetClass)widgetClass;
+ CompositeWidgetClass super = (CompositeWidgetClass)wc->core_class.superclass;
+
+ if (wc->composite_class.geometry_manager == XtInheritGeometryManager) {
+ wc->composite_class.geometry_manager = super->composite_class.geometry_manager;
+ }
+
+ if (wc->composite_class.change_managed == XtInheritChangeManaged) {
+ wc->composite_class.change_managed = super->composite_class.change_managed;
+ }
+ .
+ .
+ .
+.De
+.LP
+Nonprocedure fields may be inherited in the same manner as procedure
+fields. The class may declare any reserved value it wishes for
+the inheritance constant for its new fields. The following inheritance
+constants are defined:
+.LP
+For Object:
+.IP
+.PN XtInheritAllocate
+.IP
+.PN XtInheritDeallocate
+.LP
+For Core:
+.IP
+.PN XtInheritRealize
+.IP
+.PN XtInheritResize
+.IP
+.PN XtInheritExpose
+.IP
+.PN XtInheritSetValuesAlmost
+.IP
+.PN XtInheritAcceptFocus
+.IP
+.PN XtInheritQueryGeometry
+.IP
+.PN XtInheritTranslations
+.IP
+.PN XtInheritDisplayAccelerator
+.LP
+For Composite:
+.IP
+.PN XtInheritGeometryManager
+.IP
+.PN XtInheritChangeManaged
+.IP
+.PN XtInheritInsertChild
+.IP
+.PN XtInheritDeleteChild
+.LP
+For Shell:
+.IP
+.PN XtInheritRootGeometryManager
+
+.NH 3
+Invocation of Superclass Operations
+.XS
+\*(SN Invocation of Superclass Operations
+.XE
+.LP
+A widget sometimes needs to call a superclass operation
+that is not chained.
+For example,
+a widget's expose procedure might call its superclass's \fIexpose\fP
+and then perform a little more work on its own.
+For example, a Composite
+class with predefined managed children can implement insert_child
+by first calling its superclass's \fIinsert_child\fP
+.IN "insert_child procedure"
+and then calling
+.PN XtManageChild
+to add the child to the managed set.
+.LP
+.NT
+A class method should not use
+.PN XtSuperclass
+but should instead call the class method of its own specific superclass
+directly through the superclass record.
+That is, it should use its own class pointers only,
+not the widget's class pointers,
+as the widget's class may be a subclass of the
+class whose implementation is being referenced.
+.NE
+This technique is referred to as \fIenveloping\fP the superclass's operation.
+
+.NH 3
+Class Extension Records
+.XS
+\*(SN Class Extension Records
+.XE
+.IN "Widget" "class extension records"
+.LP
+It may be necessary at times to add new fields to already existing
+widget class structures. To permit this to be done without requiring
+recompilation of all subclasses, the last field in a class part structure
+should be an extension pointer. If no extension fields for a class
+have yet been defined, subclasses should initialize the value of the
+extension pointer to NULL.
+.LP
+If extension fields exist, as is the case with the
+Composite,
+Constraint,
+and
+Shell
+classes, subclasses can provide values for these fields by setting the
+\fIextension\fP pointer for the appropriate part in their class structure to
+point to a statically declared extension record containing the
+additional fields.
+Setting the \fIextension\fP field is never mandatory; code that uses fields
+in the extension record must always check the \fIextension\fP field and take
+some appropriate default action if it is NULL.
+.LP
+In order to permit multiple subclasses and libraries to chain extension
+records from a single \fIextension\fP field, extension records should be
+declared as a linked list, and each extension record definition should
+contain the following four fields at the beginning of the structure
+declaration:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+struct {
+ XtPointer next_extension;
+ XrmQuark record_type;
+ long version;
+ Cardinal record_size;
+};
+.De
+.IP \fInext_extension\fP 1.25i
+Specifies the next record in the list, or NULL.
+.IP \fIrecord_type\fP 1.25i
+Specifies the particular structure declaration to which
+each extension record instance conforms.
+.IP \fIversion\fP 1.25i
+Specifies a version id symbolic constant supplied by
+the definer of the structure.
+.IP \fIrecord_size\fP 1.25i
+Specifies the total number of bytes allocated for the
+extension record.
+.LP
+.eM
+The \fIrecord_type\fP field identifies the contents of the extension record
+and is used by the definer of the record to locate its particular
+extension record in the list. The
+\fIrecord_type\fP field is normally assigned the
+result of
+.PN XrmStringToQuark
+for a registered string constant. The
+\*(xI reserve all record type strings beginning with the two
+characters ``XT'' for future standard uses. The value
+.PN \s-1NULLQUARK\s+1
+may also be used
+by the class part owner in extension records attached to its own class
+part extension field to identify the extension record unique to that
+particular class.
+.LP
+The \fIversion\fP field is an owner-defined constant that may be used to
+identify binary files that have been compiled with alternate
+definitions of the remainder of the extension record data structure. The private
+header file for a widget class should provide a symbolic constant for
+subclasses to use to initialize this field.
+The \fIrecord_size\fP field value includes the four common header fields and
+should normally be initialized with
+.PN sizeof ().
+.LP
+Any value stored in the class part extension fields of
+.PN CompositeClassPart ,
+.PN ConstraintClassPart ,
+or
+.PN ShellClassPart
+must point to an extension record conforming to this definition.
+.LP
+The \*(xI provide a utility function for widget writers to locate a
+particular class extension record in a linked list, given a widget class
+and the offset of the \fIextension\fP field in the class record.
+.LP
+To locate a class extension record, use
+.PN XtGetClassExtension .
+.IN "XtGetClassExtension" "" "@DEF@"
+.LP
+.sM
+.FD 0
+XtPointer XtGetClassExtension(\fIobject_class\fP, \fIbyte_offset\fP, \
+\fItype\fP, \fIversion\fP, \fIrecord_size\fP)
+.br
+ WidgetClass \fIobject_class\fP;
+.br
+ Cardinal \fIbyte_offset\fP;
+.br
+ XrmQuark \fItype\fP;
+.br
+ long \fIversion\fP;
+.br
+ Cardinal \fIrecord_size\fP;
+.FN
+.IP \fIobject_class\fP 1i
+Specifies the object class containing the extension list to be searched.
+.IP \fIbyte_offset\fP 1i
+Specifies the offset in bytes from the base of the
+class record of the extension field to be searched.
+.IP \fItype\fP 1i
+Specifies the record_type of the class extension to be located.
+.IP \fIversion\fP 1i
+Specifies the minimum acceptable version of the class
+extension required for a match.
+.IP \fIrecord_size\fP 1i
+Specifies the minimum acceptable length of the class
+extension record required for a match, or 0.
+.LP
+.eM
+The list of extension records at the specified offset in the specified
+object class will be searched for a match on the specified type,
+a version greater than or equal to the specified version, and a record
+size greater than or equal the specified record_size if it is nonzero.
+.PN XtGetClassExtension
+returns a pointer to a matching extension record or NULL if no match
+is found. The returned extension record must not be modified or
+freed by the caller if the caller is not the extension owner.
+.bp
diff --git a/specs/Xt/CH02 b/specs/Xt/CH02
new file mode 100644
index 0000000..41cdf67
--- /dev/null
+++ b/specs/Xt/CH02
@@ -0,0 +1,3165 @@
+.\" $Xorg: CH02,v 1.3 2000/08/17 19:42:42 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 2\fP\s-1
+
+\s+1\fBWidget Instantiation\fP\s-1
+.sp 2
+.nr H1 2
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 2 \(em Widget Instantiation
+.XE
+A hierarchy of widget instances constitutes a widget tree.
+The shell widget returned by
+.PN XtAppCreateShell
+is the root of the widget tree instance.
+The widgets with one or more children are the intermediate nodes of that tree,
+and the widgets with no children of any kind are the leaves of the widget tree.
+With the exception of pop-up children (see Chapter 5),
+this widget tree instance defines the associated X Window tree.
+.LP
+Widgets can be either composite or primitive.
+Both kinds of widgets can contain children,
+but the \*(xI provide a set of management mechanisms for constructing
+and interfacing between composite widgets, their children, and
+other clients.
+.LP
+Composite widgets, that is, members of the class
+.PN compositeWidgetClass ,
+are containers for an arbitrary,
+but widget implementation-defined, collection of children,
+which may be instantiated by the composite widget itself,
+by other clients, or by a combination of the two.
+Composite widgets also contain methods for managing the geometry (layout)
+of any child widget.
+Under unusual circumstances,
+a composite widget may have zero children,
+but it usually has at least one.
+By contrast,
+primitive widgets that contain children typically instantiate
+specific children of known classes themselves and do not expect external
+clients to do so.
+Primitive widgets also do not have general geometry management methods.
+.LP
+In addition,
+the \*(xI recursively perform many operations
+(for example, realization and destruction)
+on composite widgets and all their children.
+Primitive widgets that have children must be prepared
+to perform the recursive operations themselves on behalf of their children.
+.LP
+A widget tree is manipulated by several \*(xI functions.
+For example,
+.PN XtRealizeWidget
+traverses the tree downward and recursively realizes all
+pop-up widgets and children of composite widgets.
+.PN XtDestroyWidget
+traverses the tree downward and destroys all pop-up widgets
+and children of composite widgets.
+The functions that fetch and modify resources traverse the tree upward
+and determine the inheritance of resources from a widget's ancestors.
+.PN XtMakeGeometryRequest
+traverses the tree up one level and calls the geometry manager
+that is responsible for a widget child's geometry.
+.LP
+To facilitate upward traversal of the widget tree,
+each widget has a pointer to its parent widget.
+The
+Shell
+widget that
+.PN XtAppCreateShell
+returns has a \fIparent\fP pointer of NULL.
+.LP
+To facilitate downward traversal of the widget tree,
+the \fIchildren\fP field of
+each composite widget is a pointer to an array of child widgets,
+which includes all normal children created,
+not just the subset of children that are managed by the composite widget's
+geometry manager.
+Primitive widgets
+that instantiate children are entirely responsible for all operations
+that require downward traversal below themselves.
+In addition,
+every widget has a pointer to an array of pop-up children.
+
+.NH 2
+Initializing the \*(tk
+.XS
+\fB\*(SN Initializing the \*(tk\fP
+.XE
+.LP
+Before an application can call any \*(xI function
+other than
+.PN XtSetLanguageProc
+and
+.PN XtToolkitThreadInitialize ,
+it must initialize the \*(xI by using
+.IP \(bu 5
+.PN XtToolkitInitialize ,
+which initializes the \*(xI internals
+.IP \(bu 5
+.PN XtCreateApplicationContext ,
+which initializes the per-application state
+.IP \(bu 5
+.PN XtDisplayInitialize
+or
+.PN XtOpenDisplay ,
+which initializes the per-display state
+.IP \(bu 5
+.PN XtAppCreateShell ,
+which creates the root of a widget tree
+.LP
+Or an application can call the convenience procedure
+.PN XtOpenApplication ,
+which combines the functions of the preceding procedures.
+An application wishing to use the ANSI C locale mechanism should call
+.PN XtSetLanguageProc
+prior to calling
+.PN XtDisplayInitialize ,
+.PN XtOpenDisplay ,
+.PN XtOpenApplication ,
+or
+.PN XtAppInitialize .
+.LP
+Multiple instances of \*(tk applications may be implemented
+in a single address space.
+Each instance needs to be able to read
+input and dispatch events independently of any other instance.
+Further, an application instance may need multiple display connections
+to have widgets on multiple displays.
+From the application's point of view, multiple display connections
+usually are treated together as a single unit
+for purposes of event dispatching.
+.IN "application context" "" "@DEF@"
+To accommodate both requirements,
+the \*(xI define application contexts,
+each of which provides the information needed to distinguish one application
+instance from another.
+The major component of an application context is a list of one or more X
+.PN Display
+pointers for that application.
+The \*(xI handle all display connections within a single application
+context simultaneously, handling input in a round-robin fashion.
+The application context type
+.PN XtAppContext
+.IN "XtAppContext" "" "@DEF@"
+is opaque to clients.
+.sp
+.LP
+To initialize the \*(xI internals, use
+.PN XtToolkitInitialize .
+.LP
+.IN "XtToolkitInitialize" "" "@DEF@"
+.sM
+.FD 0
+void XtToolkitInitialize()
+.FN
+.LP
+.eM
+If
+.PN XtToolkitInitialize
+was previously called, it returns immediately.
+When
+.PN XtToolkitThreadInitialize
+is called before
+.PN XtToolkitInitialize ,
+the latter is protected against
+simultaneous activation by multiple threads.
+.sp
+.LP
+To create an application context, use
+.PN XtCreateApplicationContext .
+.LP
+.IN "XtCreateApplicationContext" "" "@DEF@"
+.sM
+.FD 0
+XtAppContext XtCreateApplicationContext()
+.FN
+.LP
+.eM
+The
+.PN XtCreateApplicationContext
+function returns an application context,
+which is an opaque type.
+Every application must have at least one application context.
+.sp
+.LP
+To destroy an application context and close any
+remaining display connections in it, use
+.PN XtDestroyApplicationContext .
+.LP
+.IN "XtDestroyApplicationContext" "" "@DEF@"
+.sM
+.FD 0
+void XtDestroyApplicationContext(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.LP
+.eM
+The
+.PN XtDestroyApplicationContext
+function destroys the specified application context.
+If called from within an event dispatch (for example, in a callback procedure),
+.PN XtDestroyApplicationContext
+does not destroy the application context until the dispatch is complete.
+.sp
+.LP
+To get the application context in which a given widget was created, use
+.PN XtWidgetToApplicationContext .
+.LP
+.IN "XtWidgetToApplicationContext" "" "@DEF@"
+.sM
+.FD 0
+XtAppContext XtWidgetToApplicationContext(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which you want the application context. \*(oI
+.LP
+.eM
+The
+.PN XtWidgetToApplicationContext
+function returns the application context for the specified widget.
+.sp
+.LP
+To initialize a display and add it to an application context, use
+.PN XtDisplayInitialize .
+.LP
+.IN "XtDisplayInitialize" "" "@DEF@"
+.sM
+.FD 0
+void XtDisplayInitialize(\fIapp_context\fP, \fIdisplay\fP, \
+\fIapplication_name\fP, \fIapplication_class\fP,
+.br
+ \fIoptions\fP, \fInum_options\fP, \fIargc\fP, \fIargv\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ Display *\fIdisplay\fP;
+.br
+ String \fIapplication_name\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescRec *\fIoptions\fP;
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc\fP;
+.br
+ String *\fIargv\fP;
+.FN
+.IP \fIapp_context\fP 1.4i
+Specifies the application context.
+.IP \fIdisplay\fP 1.4i
+Specifies a previously opened display connection. Note that a single
+display connection can be in at most one application context.
+.IP \fIapplication_name\fP 1.4i
+Specifies the name of the application instance.
+.IP \fIapplication_class\fP 1.4i
+Specifies the class name of this application,
+which is usually the generic name for all instances of this application.
+.IP \fIoptions\fP 1.4i
+Specifies how to parse the command line for any application-specific resources.
+The \fIoptions\fP argument is passed as a parameter to
+.PN XrmParseCommand .
+For further information,
+see Section 15.9 in \fI\*(xL\fP and Section 2.4 of this specification.
+.IP \fInum_options\fP 1.4i
+Specifies the number of entries in the options list.
+.IP \fIargc\fP 1.4i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv\fP 1.4i
+Specifies the list of command line parameters.
+.LP
+.eM
+The
+.PN XtDisplayInitialize
+function retrieves the language string to be
+used for the specified display (see Section 11.11),
+calls the language procedure (if set) with that language string,
+builds the resource database for the default screen, calls the Xlib
+.PN XrmParseCommand
+function to parse the command line,
+and performs other per-display initialization.
+After
+.PN XrmParseCommand
+has been called,
+\fIargc\fP and \fIargv\fP contain only those parameters that
+were not in the standard option table or in the table specified by the
+\fIoptions\fP argument.
+If the modified \fIargc\fP is not zero,
+most applications simply print out the modified \fIargv\fP along with a message
+listing the allowable options.
+On POSIX-based systems,
+the application name is usually the final component of \fIargv\fP[0].
+If the synchronous resource is
+.PN True ,
+.PN XtDisplayInitialize
+calls the Xlib
+.PN XSynchronize
+function to put Xlib into synchronous mode for this display connection
+and any others currently open in the application context.
+See Sections 2.3 and 2.4 for details on the \fIapplication_name\fP,
+\fIapplication_class\fP, \fIoptions\fP, and \fInum_options\fP arguments.
+.LP
+.PN XtDisplayInitialize
+calls
+.PN XrmSetDatabase
+to associate the resource database of the default screen with the
+display before returning.
+
+.KS
+.LP
+To open a display, initialize it, and then
+add it to an application context, use
+.PN XtOpenDisplay .
+.LP
+.IN "XtOpenDisplay" "" "@DEF@"
+.sM
+.FD 0
+Display *XtOpenDisplay(\fIapp_context\fP, \fIdisplay_string\fP, \
+\fIapplication_name\fP, \fIapplication_class\fP,
+.br
+ \fIoptions\fP, \fInum_options\fP, \fIargc\fP, \fIargv\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fIdisplay_string\fP;
+.br
+ String \fIapplication_name\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescRec *\fIoptions\fP;
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc\fP;
+.br
+ String *\fIargv\fP;
+.FN
+.IP \fIapp_context\fP 1.4i
+Specifies the application context.
+.IP \fIdisplay_string\fP 1.4i
+Specifies the display string, or NULL.
+.IP \fIapplication_name\fP 1.4i
+Specifies the name of the application instance, or NULL.
+.IP \fIapplication_class\fP 1.4i
+Specifies the class name of this application,
+which is usually the generic name for all instances of this application.
+.IP \fIoptions\fP 1.4i
+Specifies how to parse the command line for any application-specific resources.
+The options argument is passed as a parameter to
+.PN XrmParseCommand .
+.IP \fInum_options\fP 1.4i
+Specifies the number of entries in the options list.
+.IP \fIargc\fP 1.4i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv\fP 1.4i
+Specifies the list of command line parameters.
+.KE
+.LP
+.eM
+The
+.PN XtOpenDisplay
+function calls
+.PN XOpenDisplay
+with the specified \fIdisplay_string\fP.
+If \fIdisplay_string\fP is NULL,
+.PN XtOpenDisplay
+uses the current value of the \-display option specified in \fIargv\fP.
+If no display is specified in \fIargv\fP,
+the user's default display is retrieved from the environment.
+On POSIX-based systems,
+this is the value of the
+.PN \s-1DISPLAY\s+1
+environment variable.
+.LP
+If this succeeds,
+.PN XtOpenDisplay
+then calls
+.PN XtDisplayInitialize
+and passes it the opened display and
+the value of the \-name option specified in \fIargv\fP as the application name.
+If no \-name option is specified
+and \fIapplication_name\fP is
+non-NULL, \fIapplication_name\fP is passed to
+.PN XtDisplayInitialize .
+If \fIapplication_name\fP is NULL and if the environment variable
+.PN \s-1RESOURCE_NAME\s+1
+is set, the value of
+.PN \s-1RESOURCE_NAME\s+1
+is used. Otherwise, the application
+name is the name used to invoke the program. On implementations that
+conform to ANSI C Hosted Environment support, the application name will
+be \fIargv\fP[0] less any directory and file type components, that is, the
+final component of \fIargv\fP[0], if specified. If \fIargv\fP[0] does not exist or
+is the empty string, the application name is ``main''.
+.PN XtOpenDisplay
+returns the newly opened display or NULL if it failed.
+.LP
+See Section 7.12 for information regarding the use of
+.PN XtOpenDisplay
+in multiple threads.
+.sp
+.LP
+To close a display and remove it from an application context, use
+.PN XtCloseDisplay .
+.LP
+.IN "XtCloseDisplay" "" "@DEF@"
+.sM
+.FD 0
+void XtCloseDisplay(\fIdisplay\fP)
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display.
+.LP
+.eM
+The
+.PN XtCloseDisplay
+function calls
+.PN XCloseDisplay
+with the specified \fIdisplay\fP as soon as it is safe to do so.
+If called from within an event dispatch (for example, a callback procedure),
+.PN XtCloseDisplay
+does not close the display until the dispatch is complete.
+Note that applications need only call
+.PN XtCloseDisplay
+if they are to continue executing after closing the display;
+otherwise, they should call
+.PN XtDestroyApplicationContext .
+.LP
+See Section 7.12 for information regarding the use of
+.PN XtCloseDisplay
+in multiple threads.
+
+.NH 2
+Establishing the Locale
+.XS
+\fB\*(SN Establishing the Locale\fP
+.XE
+.LP
+Resource databases are specified to be created in the current process
+locale. During display initialization prior to creating the
+per-screen resource database, the \*(xI will call out to a specified
+application procedure to set the locale according to options found on
+the command line or in the per-display resource specifications.
+.LP
+The callout procedure provided by the application is of type
+.PN XtLanguageProc .
+.LP
+.IN "XtLanguageProc" "" "@DEF@"
+.sM
+.FD 0
+typedef String (*XtLanguageProc)(Display*, String, XtPointer);
+.br
+ Display *\fIdisplay\fP;
+.br
+ String \fIlanguage\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Passes the display.
+.IP \fIlanguage\fP
+Passes the initial language value obtained from the command line
+or server per-display resource specifications.
+.IP \fIclient_data\fP
+Passes the additional client data specified in the call to
+.PN XtSetLanguageProc .
+.LP
+.eM
+The language procedure allows an application to set the locale to
+the value of the language resource determined by
+.PN XtDisplayInitialize .
+The function returns a new language string that
+will be subsequently used by
+.PN XtDisplayInitialize
+to establish the path for loading resource files. The returned
+string will be copied by the \*(xI into new memory.
+.LP
+Initially, no language procedure is set by the \*(xI.
+To set the language procedure for use by
+.PN XtDisplayInitialize ,
+use
+.PN XtSetLanguageProc .
+.LP
+.IN XtSetLanguageProc "" "@DEF@"
+.IN "language procedure" "" "@DEF@
+.sM
+.FD 0
+XtLanguageProc XtSetLanguageProc(\fIapp_context\fP, \fIproc\fP, \fIclient_data\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtLanguageProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context in which the language procedure is
+to be used, or NULL.
+.IP \fIproc\fP 1i
+Specifies the language procedure.
+.IP \fIclient_data\fP 1i
+Specifies additional client data to be passed to the language
+procedure when it is called.
+.LP
+.eM
+.PN XtSetLanguageProc
+sets the language procedure that will be called from
+.PN XtDisplayInitialize
+for all subsequent Displays initialized in the specified application
+context. If \fIapp_context\fP is NULL, the specified language
+procedure is registered in all application contexts created by the
+calling process, including any future application contexts that may
+be created. If \fIproc\fP is NULL, a default language procedure is
+registered.
+.PN XtSetLanguageProc
+returns the previously registered language procedure.
+If a language procedure has not yet been registered, the return value
+is unspecified, but if this return value is used in a subsequent call to
+.PN XtSetLanguageProc ,
+it will cause the default language procedure to be registered.
+.LP
+The default language procedure does the following:
+.IP \(bu 5
+Sets the locale according to the environment. On ANSI C-based
+systems this is done by calling
+.PN setlocale (
+.PN LC_ALL ,
+\fIlanguage\fP ).
+If an error is encountered, a warning message is issued with
+.PN XtWarning .
+.IP \(bu 5
+Calls
+.PN XSupportsLocale
+to verify that the current locale is supported.
+If the locale is not supported, a warning message is issued with
+.PN XtWarning
+and the locale is set to ``C''.
+.IP \(bu 5
+Calls
+.PN XSetLocaleModifiers
+specifying the empty string.
+.IP \(bu 5
+Returns the value of the current locale. On ANSI C-based systems this
+is the return value from a final call to
+.PN setlocale (
+.PN LC_ALL ,
+NULL ).
+.LP
+A client wishing to use this mechanism to establish locale can do so
+by calling
+.PN XtSetLanguageProc
+prior to
+.PN XtDisplayInitialize ,
+as in the following example.
+.LP
+.Ds 0
+.TA .5i
+ Widget top;
+ XtSetLanguageProc(NULL, NULL, NULL);
+ top = XtOpenApplication(...);
+ ...
+.De
+
+.NH 2
+Loading the Resource Database
+.XS
+\fB\*(SN Loading the Resource Database\fP
+.XE
+.LP
+The
+.PN XtDisplayInitialize
+function first determines the language
+string to be used for the specified display. It then
+creates a resource database for the default screen of the display by
+combining the following sources in order, with the entries in the
+first named source having highest precedence:
+
+.IP \(bu 5
+Application command line (\fIargc\fP, \fIargv\fP).
+.IP \(bu 5
+Per-host user environment resource file on the local host.
+.IP \(bu 5
+Per-screen resource specifications from the server.
+.IP \(bu 5
+Per-display resource specifications from the server or from
+.br
+the user preference file on the local host.
+.IP \(bu 5
+Application-specific user resource file on the local host.
+.IP \(bu 5
+Application-specific class resource file on the local host.
+
+.LP
+When the resource database for a particular screen on the display
+is needed (either internally, or when
+.PN XtScreenDatabase
+is called),
+it is created in the following manner using the sources listed
+above in the same order:
+
+.IP \(bu 5
+A temporary database, the ``server resource database'', is
+created from the string returned by
+.PN XResourceManagerString
+or, if
+.PN XResourceManagerString
+returns NULL, the contents of a resource file in the user's home
+directory. On POSIX-based systems, the usual name for this user
+preference resource file is $HOME/\fB.Xdefaults\fP.
+.IN ".Xdefaults" "" "@DEF@"
+
+.IP \(bu 5
+If a language procedure has been set,
+.PN XtDisplayInitialize
+first searches the command line for the option ``-xnlLanguage'', or
+for a -xrm option that specifies the xnlLanguage/XnlLanguage resource,
+as specified by Section 2.4.
+If such a resource is found, the value is assumed to be
+entirely in XPCS, the X Portable Character Set. If neither option is
+specified on the command line,
+.PN XtDisplayInitialize
+queries the server resource database (which is assumed to be entirely
+in XPCS) for the resource
+\fIname\fP\fB.xnlLanguage\fP, class \fIClass\fP\fB.XnlLanguage\fP
+where \fIname\fP
+.IN "xnlLanguage" "" "@DEF@"
+.IN "Resources" "xnlLanguage"
+and \fIClass\fP are the \fIapplication_name\fP and
+\fIapplication_class\fP specified to
+.PN XtDisplayInitialize .
+The language procedure is then invoked with
+the resource value if found, else the empty string. The
+string returned from the language procedure is saved for all future
+references in the \*(xI that require the per-display language string.
+
+.IP \(bu 5
+The screen resource database is initialized by parsing the command
+line in the manner specified by Section 2.4.
+
+.IP \(bu 5
+If a language procedure has not been set,
+the initial database is then queried for the resource
+\fIname\fP\fB.xnlLanguage\fP, class \fIClass\fP\fB.XnlLanguage\fP
+as specified above.
+If this database query fails, the server resource database is
+queried; if this query also fails, the language is determined from
+the environment; on POSIX-based systems, this is done by retrieving the
+value of the
+.PN \s-1LANG\s+1
+environment variable. If no language string is
+found, the empty string is used.
+This language string is saved for all future references in the \*(xI
+that require the per-display language string.
+
+.IP \(bu 5
+After determining the language string, the user's environment resource
+file is then merged into the initial resource database if the file exists.
+This file is user-, host-, and process-specific and is expected to
+contain user preferences that are to override those specifications in
+the per-display and per-screen resources.
+On POSIX-based systems, the user's environment resource file name is
+specified by the value of the
+.PN \s-1XENVIRONMENT\s+1
+environment variable.
+If this environment variable does not exist, the user's home directory
+is searched for a file named
+.PN \&.Xdefaults-\fIhost\fP ,
+where \fIhost\fP is the host name of the machine on which the
+application is running.
+
+.IP \(bu 5
+The per-screen resource specifications are then merged into the screen
+resource database, if they exist. These specifications are the string
+returned by
+.PN XScreenResourceString
+for the respective screen and are owned entirely by the user.
+
+.IP \(bu 5
+Next, the server resource database created earlier is merged into the
+screen resource database. The server property, and corresponding user
+preference file, are owned and constructed entirely by the user.
+
+.IP \(bu 5
+The application-specific user resource file from the local host is
+then merged into the screen resource database.
+This file contains user customizations and is stored
+in a directory owned by the user.
+Either the user or the application or both can store resource specifications
+in the file. Each should be prepared to find and respect entries made
+by the other.
+The file name is found by calling
+.PN XrmSetDatabase
+with the current screen resource database, after preserving the
+original display-associated database, then calling
+.PN XtResolvePathname
+with the parameters
+(\fIdisplay\fP, NULL, NULL, NULL, \fIpath\fP, NULL, 0, NULL),
+where \fIpath\fP is defined in an operating-system-specific way.
+On POSIX-based systems, \fIpath\fP is defined to be the value
+of the environment variable
+.PN \s-1XUSERFILESEARCHPATH\s+1
+if this is defined. If
+.PN \s-1XUSERFILESEARCHPATH\s+1
+is not defined, an implementation-dependent default value is used.
+This default value is constrained in the following manner:
+
+.RS
+.IP \- 3
+If the environment variable
+.PN \s-1XAPPLRESDIR\s+1
+is not defined, the default
+.PN \s-1XUSERFILESEARCHPATH\s+1
+must contain at least six entries. These entries must contain
+.IN "XUSERFILESEARCHPATH" "" "@DEF@"
+.IN "XAPPLRESDIR" "" "@DEF@"
+.IN "$HOME"
+$HOME as the directory prefix, plus the following substitutions:
+
+.nf
+.ta .3i 1.5i 2i
+1. %C, %N, %L or %C, %N, %l, %t, %c
+2. %C, %N, %l
+3. %C, %N
+4. %N, %L or %N, %l, %t, %c
+5. %N, %l
+6. %N
+.fi
+
+The order of these six entries within the path must be as given above.
+The order and use of substitutions within a given entry are
+implementation-dependent.
+
+.IP \- 3
+If
+.PN \s-1XAPPLRESDIR\s+1
+is defined, the default
+.PN \s-1XUSERFILESEARCHPATH\s+1
+must contain at least seven entries. These entries must contain the
+following directory prefixes and substitutions:
+
+.ne 1.1
+.nf
+.ta .3i 1.6i 2.2i 3.3i 3.7i
+1. $XAPPLRESDIR with %C, %N, %L or %C, %N, %l, %t, %c
+2. $XAPPLRESDIR with %C, %N, %l
+3. $XAPPLRESDIR with %C, %N
+4. $XAPPLRESDIR with %N, %L or %N, %l, %t, %c
+5. $XAPPLRESDIR with %N, %l
+6. $XAPPLRESDIR with %N
+7. $HOME with %N
+.fi
+
+The order of these seven entries within the path must be as given above.
+The order and use of substitutions within a given entry are
+implementation-dependent.
+.RE
+
+.IP \(bu 5
+Last, the application-specific class resource file from the local
+host is merged into the screen resource database.
+This file is owned by the application and is usually installed in
+a system directory when the application is installed.
+It may contain sitewide customizations specified by the system manager.
+The name of the application class resource file is found by calling
+.PN XtResolvePathname
+with the parameters
+(\fIdisplay\fP, ``app-defaults'', NULL, NULL, NULL, NULL, 0, NULL).
+This file is expected to be provided by the developer of the application
+and may be required for the application to function properly.
+A simple application that wants to be assured of having a minimal
+set of resources in the absence of its class resource file can declare
+fallback resource specifications with
+.PN XtAppSetFallbackResources .
+Note that the customization substitution string is retrieved
+dynamically by
+.PN XtResolvePathname
+so that the resolved file name of the application class resource file
+can be affected by any of the earlier sources for the screen resource
+database, even though the contents of the class resource file have
+lowest precedence. After calling
+.PN XtResolvePathname ,
+the original display-associated database is restored.
+.sp
+.LP
+To obtain the resource database for a particular screen, use
+.PN XtScreenDatabase .
+.LP
+.IN "XtScreenDatabase" "" "@DEF@"
+.sM
+.FD 0
+XrmDatabase XtScreenDatabase(\fIscreen\fP)
+.br
+ Screen *\fIscreen\fP;
+.FN
+.IP \fIscreen\fP 1i
+Specifies the screen whose resource database is to be returned.
+.LP
+.eM
+The
+.PN XtScreenDatabase
+function returns the fully merged resource database as specified above,
+associated with the specified screen. If the specified \fIscreen\fP
+does not belong to a
+.PN Display
+initialized by
+.PN XtDisplayInitialize ,
+the results are undefined.
+.sp
+.LP
+To obtain the default resource database associated with a particular display, use
+.PN XtDatabase .
+.LP
+.IN "XtDatabase" "" "@DEF@"
+.sM
+.FD 0
+XrmDatabase XtDatabase(\fIdisplay\fP)
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display.
+.LP
+.eM
+The
+.PN XtDatabase
+function is equivalent to
+.PN XrmGetDatabase .
+It returns the database associated with the specified display, or
+NULL if a database has not been set.
+.sp
+.LP
+To specify a default set of resource values that will be used to
+initialize the resource database if no application-specific class
+resource file is found (the last of the six sources listed above),
+use
+.PN XtAppSetFallbackResources .
+.LP
+.IN "XtAppSetFallbackResources" "" "@DEF@"
+.sM
+.FD 0
+void XtAppSetFallbackResources(\fIapp_context\fP, \fIspecification_list\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String *\fIspecification_list\fP;
+.FN
+.IP \fIapp_context\fP 1.25i
+Specifies the application context in which
+the fallback specifications will be used.
+.IP \fIspecification_list\fP 1.25i
+Specifies a NULL-terminated list of
+resource specifications to preload
+the database, or NULL.
+.LP
+.eM
+Each entry in \fIspecification_list\fP points to a string in the format of
+.PN XrmPutLineResource .
+Following a call to
+.PN XtAppSetFallbackResources ,
+when a resource database is being created for a particular screen and
+the \*(xI are not able
+to find or read an application-specific class resource file according to the
+rules given above and if \fIspecification_list\fP is not NULL, the
+resource specifications in \fIspecification_list\fP will be merged
+into the screen resource database in place of the application-specific
+class resource file.
+.PN XtAppSetFallbackResources
+is not
+required to copy \fIspecification_list\fP; the caller must ensure that the
+contents of the list and of the strings addressed by the list remain
+valid until all displays are initialized or until
+.PN XtAppSetFallbackResources
+is called again. The value NULL for
+\fIspecification_list\fP removes any previous fallback resource specification
+for the application context. The intended use for fallback resources
+is to provide a minimal
+number of resources that will make the application usable (or at
+least terminate with helpful diagnostic messages) when some problem
+exists in finding and loading the application defaults file.
+
+.NH 2
+Parsing the Command Line
+.XS
+\fB\*(SN Parsing the Command Line\fP
+.XE
+.LP
+The
+.PN XtOpenDisplay
+function first parses the command line for the following options:
+.IP \-display 1i
+Specifies the display name for
+.PN XOpenDisplay .
+.IP \-name 1i
+Sets the resource name prefix,
+which overrides the application name passed to
+.PN XtOpenDisplay .
+.IP \-xnllanguage 1i
+Specifies the initial language string for establishing locale
+and for finding application class resource files.
+.LP
+.PN XtDisplayInitialize
+has a table of standard command line options that are passed to
+.PN XrmParseCommand
+for adding resources to the resource database,
+and it takes as a parameter additional
+application-specific resource abbreviations.
+.IN "XrmOptionDescRec" "" "@DEF@"
+The format of this table is described in Section 15.9 in \fI\*(xL\fP.
+.LP
+.sM
+.Ds 0
+.TA .5i 2.75i
+.ta .5i 2.75i
+typedef enum {
+ XrmoptionNoArg, /* Value is specified in OptionDescRec.value */
+ XrmoptionIsArg, /* Value is the option string itself */
+ XrmoptionStickyArg, /* Value is characters immediately following option */
+ XrmoptionSepArg, /* Value is next argument in argv */
+ XrmoptionResArg, /* Use the next argument as input to XrmPutLineResource*/
+ XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
+ XrmoptionSkipNArgs, /* Ignore this option and the next */
+ /* OptionDescRec.value arguments in argv */
+ XrmoptionSkipLine /* Ignore this option and the rest of argv */
+} XrmOptionKind;
+
+typedef struct {
+ char *option; /* Option name in argv */
+ char *specifier; /* Resource name (without application name) */
+ XrmOptionKind argKind; /* Location of the resource value */
+ XPointer value; /* Value to provide if XrmoptionNoArg */
+} XrmOptionDescRec, *XrmOptionDescList;
+
+.De
+.LP
+.eM
+The standard table contains the following entries:
+.TS H
+l l l l .
+_
+.sp 6p
+.TH
+Option String Resource Name Argument Kind Resource Value
+.sp 6p
+_
+.sp 6p
+\-background *background SepArg next argument
+\-bd *borderColor SepArg next argument
+\-bg *background SepArg next argument
+\-borderwidth .borderWidth SepArg next argument
+\-bordercolor *borderColor SepArg next argument
+\-bw .borderWidth SepArg next argument
+\-display .display SepArg next argument
+\-fg *foreground SepArg next argument
+\-fn *font SepArg next argument
+\-font *font SepArg next argument
+\-foreground *foreground SepArg next argument
+\-geometry .geometry SepArg next argument
+\-iconic .iconic NoArg ``true''
+\-name .name SepArg next argument
+\-reverse .reverseVideo NoArg ``on''
+\-rv .reverseVideo NoArg ``on''
++rv .reverseVideo NoArg ``off''
+\-selectionTimeout .selectionTimeout SepArg next argument
+\-synchronous .synchronous NoArg ``on''
++synchronous .synchronous NoArg ``off''
+\-title .title SepArg next argument
+\-xnllanguage .xnlLanguage SepArg next argument
+\-xrm next argument ResArg next argument
+\-xtsessionID .sessionID SepArg next argument
+.sp 6p
+_
+.TE
+.LP
+Note that any unique abbreviation for an option name in the standard table
+or in the application table is accepted.
+.LP
+If reverseVideo is
+.PN True ,
+the values of
+.PN XtDefaultForeground
+and
+.PN XtDefaultBackground
+are exchanged for all screens on the Display.
+.LP
+.IN "synchronous" "" "@DEF@"
+.IN "Resources" "synchronous"
+The value of the synchronous resource specifies whether or not
+Xlib is put into synchronous mode. If a value is found in the resource
+database during display initialization,
+.PN XtDisplayInitialize
+makes a call to
+.PN XSynchronize
+for all display
+connections currently open in the application context. Therefore,
+when multiple displays are initialized in the same application
+context, the most recent value specified for the synchronous resource
+is used for all displays in the application context.
+.LP
+.IN "selectionTimeout" "" "@DEF@"
+.IN "Resources" "selectionTimeout"
+The value of the selectionTimeout resource applies to all displays
+opened in the same application context. When multiple displays are
+initialized in the same application context, the most recent value
+specified is used for all displays in the application context.
+.LP
+The \-xrm option provides a method of setting any resource in an application.
+The next argument should be a quoted string identical in format to a line in
+the user resource file.
+For example,
+to give a red background to all command buttons in an application named
+.PN xmh ,
+you can start it up as
+.LP
+.Ds
+xmh \-xrm 'xmh*Command.background: red'
+.DE
+.LP
+When it parses the command line,
+.PN XtDisplayInitialize
+merges the application option table with the standard option table
+before calling the Xlib
+.PN XrmParseCommand
+function.
+An entry in the application table with the same name as an entry
+in the standard table overrides the standard table entry.
+If an option name is a prefix of another option name,
+both names are kept in the merged table.
+The \*(xI reserve all option names
+beginning with the characters ``-xt'' for future standard uses.
+
+.NH 2
+Creating Widgets
+.XS
+\fB\*(SN Creating Widgets\fP
+.XE
+.LP
+The creation of widget instances is a three-phase process:
+.IP 1. 5
+The widgets are allocated and initialized with resources
+and are optionally added to the managed subset of their parent.
+.IP 2. 5
+All composite widgets are notified of their managed children
+in a bottom-up traversal of the widget tree.
+.IP 3. 5
+The widgets create X windows, which then are mapped.
+.LP
+.EQ
+delim $$
+.EN
+To start the first phase,
+the application calls
+.PN XtCreateWidget
+for all its widgets and adds some (usually, most or all) of its widgets
+to their respective parents' managed set by calling
+.PN XtManageChild .
+To avoid an $O( n sup 2 )$ creation process where each composite widget
+lays itself out each time a widget is created and managed,
+parent widgets are not notified of changes in their managed set
+during this phase.
+.EQ
+delim off
+.EN
+.LP
+After all widgets have been created,
+the application calls
+.PN XtRealizeWidget
+with the top-level widget to execute the second and third phases.
+.PN XtRealizeWidget
+first recursively traverses the widget tree in a postorder (bottom-up)
+traversal and then notifies each composite widget with one
+or more managed children by means of its change_managed procedure.
+.LP
+Notifying a parent about its managed set involves geometry layout and
+possibly geometry negotiation.
+A parent deals with constraints on its size imposed from above
+(for example, when a user specifies the application window size)
+and suggestions made from below (for example,
+when a primitive child computes its preferred size).
+One difference between the two can cause geometry changes to ripple
+in both directions through the widget tree.
+The parent may force some of its children to change size and position
+and may issue geometry requests to its own parent in order to better
+accommodate all its children.
+You cannot predict where anything will go on the screen
+until this process finishes.
+.LP
+Consequently, in the first and second phases,
+no X windows are actually created, because it is likely
+that they will get moved around after creation.
+This avoids unnecessary requests to the X server.
+.LP
+Finally,
+.PN XtRealizeWidget
+starts the third phase by making a preorder (top-down) traversal
+of the widget tree, allocates an X window to each widget by means of
+its realize procedure, and finally maps the widgets that are managed.
+
+.NH 3
+Creating and Merging Argument Lists
+.XS
+\fB\*(SN Creating and Merging Argument Lists\fP
+.XE
+.LP
+Many \*(xI functions may be passed pairs of resource names and
+values.
+These are passed as an arglist, a pointer to an array of
+.PN Arg
+structures, which contains
+.IN "ArgList" "" "@DEF@"
+.IN "Arg" "" "@DEF@"
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ String name;
+ XtArgVal value;
+} Arg, *ArgList;
+.De
+.LP
+.eM
+where
+.PN XtArgVal
+is as defined in Section 1.5.
+.LP
+If the size of the resource is less than or equal to the size of an
+.PN XtArgVal ,
+the resource value is stored directly in \fIvalue\fP;
+otherwise, a pointer to it is stored in \fIvalue\fP.
+.LP
+To set values in an
+.PN ArgList ,
+use
+.PN XtSetArg .
+.LP
+.IN "XtSetArg" "" "@DEF@"
+.sM
+.FD 0
+void XtSetArg(\fIarg\fP, \fIname\fP, \fIvalue\fP)
+.br
+ Arg \fIarg\fP;
+.br
+ String \fIname\fP;
+.br
+ XtArgVal \fIvalue\fP;
+.FN
+.IP \fIarg\fP 1i
+Specifies the \fIname/value\fP pair to set.
+.IP \fIname\fP 1i
+Specifies the name of the resource.
+.IP \fIvalue\fP 1i
+Specifies the value of the resource if it will fit in an
+.PN XtArgVal ,
+else the address.
+.LP
+.eM
+The
+.PN XtSetArg
+function is usually used in a highly stylized manner to
+minimize the probability of making a mistake; for example:
+.LP
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+Arg args[20];
+int n;
+
+n = 0;
+XtSetArg(args[n], XtNheight, 100); n++;
+XtSetArg(args[n], XtNwidth, 200); n++;
+XtSetValues(widget, args, n);
+.De
+.LP
+Alternatively, an application can statically declare the argument list
+and use
+.PN XtNumber :
+.LP
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+static Args args[] = {
+ {XtNheight, (XtArgVal) 100},
+ {XtNwidth, (XtArgVal) 200},
+};
+XtSetValues(Widget, args, XtNumber(args));
+.De
+.LP
+Note that you should not use expressions with side effects such as
+auto-increment or auto-decrement
+within the first argument to
+.PN XtSetArg .
+.PN XtSetArg
+can be implemented as a macro that evaluates the first argument twice.
+.sp
+.LP
+To merge two
+arglist arrays, use
+.PN XtMergeArgLists .
+.LP
+.IN "XtMergeArgLists" "" "@DEF@"
+.sM
+.FD 0
+ArgList XtMergeArgLists(\fIargs1\fP, \fInum_args1\fP, \fIargs2\fP, \
+\fInum_args2\fP)
+.br
+ ArgList \fIargs1\fP;
+.br
+ Cardinal \fInum_args1\fP;
+.br
+ ArgList \fIargs2\fP;
+.br
+ Cardinal \fInum_args2\fP;
+.FN
+.IP \fIargs1\fP 1i
+Specifies the first argument list.
+.IP \fInum_args1\fP 1i
+Specifies the number of entries in the first argument list.
+.IP \fIargs2\fP 1i
+Specifies the second argument list.
+.IP \fInum_args2\fP 1i
+Specifies the number of entries in the second argument list.
+.LP
+.eM
+The
+.PN XtMergeArgLists
+function allocates enough storage to hold the combined
+arglist arrays and copies them into it.
+Note that it does not check for duplicate entries.
+The length of the returned list is the sum of the lengths of the
+specified lists.
+When it is no longer needed,
+free the returned storage by using
+.PN XtFree .
+.sp
+.LP
+.IN "varargs" "" "@DEF@"
+All \*(xI interfaces that require
+.PN ArgList
+arguments have analogs
+conforming to the ANSI C variable argument list
+(traditionally called ``varargs'')
+calling convention. The name of the analog is formed by prefixing
+``Va'' to the name of the corresponding
+.PN ArgList
+procedure; e.g.,
+.PN XtVaCreateWidget .
+Each procedure named \fBXtVa\fP\fIsomething\fP takes as its
+last arguments, in place of the corresponding
+.PN ArgList /
+.PN Cardinal
+parameters, a variable parameter list of resource name and
+value pairs where each name is of type
+.PN String
+and each value is of type
+.PN XtArgVal .
+The end of the list is identified by a \fIname\fP entry
+containing NULL. Developers writing in the C language wishing to pass
+resource name and value pairs to any of these interfaces may use the
+.PN ArgList
+and varargs forms interchangeably.
+.LP
+Two special names are defined for use only in varargs lists:
+.PN XtVaTypedArg
+and
+.PN XtVaNestedList .
+.sp
+.LP
+.IN "XtVaTypedArg" "" "@DEF@"
+.sM
+.Ds 0
+#define XtVaTypedArg "XtVaTypedArg"
+.De
+.LP
+.eM
+If the name
+.PN XtVaTypedArg
+is specified in place of a resource
+name, then the following four arguments are interpreted as a
+\fIname/type/value/size\fP tuple \fIwhere\fP name is of type
+.PN String ,
+\fItype\fP is of type
+.PN String ,
+\fIvalue\fP is of type
+.PN XtArgVal ,
+and \fIsize\fP is of type int. When a varargs list containing
+.PN XtVaTypedArg
+is processed, a resource type
+conversion (see Section 9.6) is performed if necessary to convert the
+value into the format required by the associated resource. If \fItype\fP is
+XtRString, then \fIvalue\fP contains a pointer to the string and \fIsize\fP
+contains the number of bytes allocated, including the trailing null
+byte. If \fItype\fP is not XtRString, then \fIif\fP size is
+less than or equal to
+\fBsizeof\fP(\fBXtArgVal\fP), the value should be the data cast to the type
+.PN XtArgVal ,
+otherwise \fIvalue\fP is a pointer to the data. If the type
+conversion fails for any reason, a warning message is issued and the
+list entry is skipped.
+.sp
+.LP
+.IN "XtVaNestedList" "" "@DEF@"
+.sM
+.Ds 0
+#define XtVaNestedList "XtVaNestedList"
+.De
+.LP
+.eM
+If the name
+.PN XtVaNestedList
+is specified in place of a resource name,
+then the following argument is interpreted as an
+.PN XtVarArgsList
+value, which specifies another
+varargs list that is logically inserted into the original list at the
+point of declaration. The end of the nested list is identified with a
+name entry containing NULL. Varargs lists may nest to any depth.
+.sp
+.LP
+To dynamically allocate a varargs list for use with
+.PN XtVaNestedList
+in multiple calls, use
+.PN XtVaCreateArgsList .
+.IN "XtVaCreateArgsList" "" "@DEF@"
+.sp
+.LP
+.sM
+.Ds 0
+typedef XtPointer XtVarArgsList;
+.De
+.LP
+.FD 0
+XtVarArgsList XtVaCreateArgsList(\fIunused\fP, ...)
+.br
+ XtPointer \fIunused\fP;
+.FN
+.IP \fIunused\fP 1i
+This argument is not currently used and must be specified as NULL.
+.IP ... 1i
+Specifies a variable parameter list of resource
+name and value pairs.
+.LP
+.eM
+The
+.PN XtVaCreateArgsList
+function allocates memory and copies its arguments into a
+single list pointer, which may be used with
+.PN XtVaNestedList .
+The end of
+both lists is identified by a \fIname\fP entry containing NULL. Any entries
+of type
+.PN XtVaTypedArg
+are copied as specified without applying
+conversions. Data passed by reference (including Strings) are not
+copied, only the pointers themselves; the caller must ensure that the
+data remain valid for the lifetime of the created varargs list. The
+list should be freed using
+.PN XtFree
+when no longer needed.
+.LP
+Use of resource files and of the resource database is generally
+encouraged over lengthy arglist or varargs lists whenever possible in
+order to permit modification without recompilation.
+
+.NH 3
+Creating a Widget Instance
+.XS
+\fB\*(SN Creating a Widget Instance\fP
+.XE
+.LP
+To create an instance of a widget, use
+.PN XtCreateWidget .
+.LP
+.IN "XtCreateWidget" "" "@DEF@"
+.sM
+.FD 0
+Widget XtCreateWidget(\fIname\fP, \fIobject_class\fP, \fIparent\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIobject_class\fP;
+.br
+ Widget \fIparent\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the resource instance name for the created widget,
+which is used for retrieving resources
+and, for that reason, should not be the same as any other widget
+that is a child of the same parent.
+.IP \fIobject_class\fP 1i
+Specifies the widget class pointer for the created object. \*(oC
+.IP \fIparent\fP 1i
+Specifies the parent widget. \*(oI
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtCreateWidget
+function performs all the boilerplate operations of widget
+creation, doing the following in order:
+.IP \(bu 5
+Checks to see if the class_initialize procedure has been called for this class
+and for all superclasses and, if not, calls those necessary in a
+superclass-to-subclass order.
+.IP \(bu 5
+If the specified class is not
+.PN coreWidgetClass
+or a subclass thereof,
+and the parent's class is a subclass of
+.PN compositeWidgetClass
+and either no extension record in
+the parent's composite class part extension field exists with the
+\fIrecord_type\fP
+.PN \s-1NULLQUARK\s+1
+or the \fIaccepts_objects\fP field in the extension
+record is
+.PN False ,
+.PN XtCreateWidget
+issues a fatal error; see Section 3.1 and Chapter 12.
+.IP \(bu 5
+If the specified class contains an extension record in the object class
+part \fIextension\fP field with \fIrecord_type\fP
+.PN \s-1NULLQUARK\s+1
+and the \fIallocate\fP field is not NULL,
+the procedure is invoked to allocate memory
+for the widget instance. If the parent is a member of the class
+.PN constraintWidgetClass ,
+the procedure also allocates memory for the
+parent's constraints and stores the address of this memory into the
+\fIconstraints\fP field. If no allocate procedure is found, the \*(xI
+allocate memory for the widget and, when applicable, the constraints,
+and initializes the \fIconstraints\fP field.
+.IP \(bu 5
+Initializes the Core nonresource data fields
+\fIself\fP, \fIparent\fP, \fIwidget_class\fP, \fIbeing_destroyed\fP,
+\fIname\fP, \fImanaged\fP, \fIwindow\fP, \fIvisible\fP,
+\fIpopup_list\fP, and \fInum_popups\fP.
+.IP \(bu 5
+Initializes the resource fields (for example, \fIbackground_pixel\fP)
+by using the
+.PN CoreClassPart
+resource lists specified for this class and all superclasses.
+.IP \(bu 5
+If the parent is a member of the class
+.PN constraintWidgetClass ,
+initializes the resource fields of the constraints record
+by using the
+.PN ConstraintClassPart
+resource lists specified for the parent's class
+and all superclasses up to
+.PN constraintWidgetClass .
+.IP \(bu 5
+Calls the initialize procedures for the widget starting at the
+Object
+initialize procedure on down to the widget's initialize procedure.
+.IP \(bu 5
+If the parent is a member of the class
+.PN constraintWidgetClass ,
+calls the
+.PN ConstraintClassPart
+initialize procedures,
+starting at
+.PN constraintWidgetClass
+on down to the parent's
+.PN ConstraintClassPart
+initialize procedure.
+.IP \(bu 5
+If the parent is a member of the class
+.PN compositeWidgetClass ,
+puts the widget into its parent's children list by calling its parent's
+insert_child procedure.
+For further information,
+see Section 3.1.
+.sp
+.LP
+To create an instance of a widget using varargs lists, use
+.PN XtVaCreateWidget .
+.LP
+.IN "XtVaCreateWidget" "" "@DEF@"
+.sM
+.FD 0
+Widget XtVaCreateWidget(\fIname\fP, \fIobject_class\fP, \fIparent\fP, ...)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIobject_class\fP;
+.br
+ Widget \fIparent\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the resource name for the created widget.
+.IP \fIobject_class\fP 1i
+Specifies the widget class pointer for the created object. \*(oC
+.IP \fIparent\fP 1i
+Specifies the parent widget. \*(oI
+.IP ... 1i
+Specifies the variable argument list to override any other
+resource specifications.
+.LP
+.eM
+The
+.PN XtVaCreateWidget
+procedure is identical in function to
+.PN XtCreateWidget
+with the \fIargs\fP and \fInum_args\fP parameters replaced by a varargs list,
+as described
+in Section 2.5.1.
+
+.NH 3
+Creating an Application Shell Instance
+.XS
+\fB\*(SN Creating an Application Shell Instance\fP
+.XE
+.LP
+An application can have multiple top-level widgets, each of which
+specifies a unique widget tree
+that can potentially be on different screens or displays.
+An application uses
+.PN XtAppCreateShell
+to create independent widget trees.
+.LP
+.IN "XtAppCreateShell" "" "@DEF@"
+.sM
+.FD 0
+Widget XtAppCreateShell(\fIname\fP, \
+\fIapplication_class\fP, \fIwidget_class\fP, \fIdisplay\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ String \fIname\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Display *\fIdisplay\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIname\fP 1.25i
+Specifies the instance name of the shell widget.
+If \fIname\fP is NULL,
+the application name passed to
+.PN XtDisplayInitialize
+is used.
+.IP \fIapplication_class\fP 1.25i
+Specifies the resource class string to be used in
+place of the widget \fIclass_name\fP string when
+\fIwidget_class\fP is
+.PN applicationShellWidgetClass
+or a subclass thereof.
+.IP \fIwidget_class\fP 1.25i
+Specifies the widget class for the top-level widget (e.g.,
+.PN applicationShellWidgetClass ).
+.IP \fIdisplay\fP 1.25i
+Specifies the display for the default screen
+and for the resource database used to retrieve
+the shell widget resources.
+.IP \fIargs\fP 1.25i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1.25i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtAppCreateShell
+function
+creates a new shell widget instance as the root of a widget tree.
+The screen resource for this widget is determined by first scanning
+\fIargs\fP for the XtNscreen argument. If no XtNscreen argument is
+found, the resource database associated with the default screen of
+the specified display is queried for the resource \fIname\fP.screen,
+class \fIClass\fP.Screen where \fIClass\fP is the specified
+\fIapplication_class\fP if \fIwidget_class\fP is
+.PN applicationShellWidgetClass
+or a subclass thereof. If \fIwidget_class\fP is not
+.PN application\%Shell\%Widget\%Class
+or a subclass, \fIClass\fP is the \fIclass_name\fP
+field from the
+.PN CoreClassPart
+of the specified \fIwidget_class\fP.
+If this query fails, the default
+screen of the specified display is used. Once the screen is determined,
+the resource database associated with that screen is used to retrieve
+all remaining resources for the shell widget not specified in
+\fIargs\fP. The widget name and \fIClass\fP as determined above are
+used as the leftmost (i.e., root) components in all fully qualified
+resource names for objects within this widget tree.
+
+.LP
+If the specified widget class is a subclass of WMShell, the name and
+\fIClass\fP as determined above will be stored into the
+.PN \s-1WM_CLASS\s+1
+property on the widget's window when it becomes realized.
+If the specified \fIwidget_class\fP is
+.PN applicationShellWidgetClass
+or a subclass thereof, the
+.PN \s-1WM_COMMAND\s+1
+property will also be set from the values of the XtNargv and
+XtNargc resources.
+
+.LP
+To create multiple top-level shells within a single (logical)
+application,
+you can use one of two methods:
+.IP \(bu 5
+Designate one shell as the real top-level shell and
+create the others as pop-up children of it by using
+.PN XtCreatePopupShell .
+.IP \(bu 5
+Have all shells as pop-up children of an unrealized top-level shell.
+.LP
+The first method,
+which is best used when there is a clear choice for what is the main window,
+leads to resource specifications like the following:
+.LP
+.Ds
+.TA 2i
+.ta 2i
+xmail.geometry:... (the main window)
+xmail.read.geometry:... (the read window)
+xmail.compose.geometry:... (the compose window)
+.De
+.LP
+The second method,
+which is best if there is no main window,
+leads to resource specifications like the following:
+.LP
+.Ds
+.TA 2i
+.ta 2i
+xmail.headers.geometry:... (the headers window)
+xmail.read.geometry:... (the read window)
+xmail.compose.geometry:... (the compose window)
+.De
+.sp
+.LP
+To create a top-level widget that is the root of a widget tree using
+varargs lists, use
+.PN XtVaAppCreateShell .
+.LP
+.IN "XtVaAppCreateShell" "" "@DEF@"
+.sM
+.FD 0
+Widget XtVaAppCreateShell(\fIname\fP, \fIapplication_class\fP, \
+\fIwidget_class\fP, \fIdisplay\fP, ...)
+.br
+ String \fIname\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIname\fP 1.5i
+Specifies the instance name of the shell widget.
+If \fIname\fP is NULL,
+the application name passed to
+.PN XtDisplayInitialize
+is used.
+.IP \fIapplication_class\fP 1.5i
+Specifies the resource class string to be used in
+place of the widget \fIclass_name\fP string when
+\fIwidget_class\fP is
+.PN applicationShellWidgetClass
+or a subclass thereof.
+.IP \fIwidget_class\fP 1.5i
+Specifies the widget class for the top-level widget.
+.IP \fIdisplay\fP 1.5i
+Specifies the display for the default screen
+and for the resource database used to retrieve
+the shell widget resources.
+.IP ... 1.5i
+Specifies the variable argument list to override any other
+resource specifications.
+.LP
+.eM
+The
+.PN XtVaAppCreateShell
+procedure is identical in function to
+.PN XtAppCreateShell
+with the \fIargs\fP and \fInum_args\fP parameters replaced by a varargs list, as
+described in Section 2.5.1.
+
+.NH 3
+Convenience Procedure to Initialize an Application
+.XS
+\fB\*(SN Convenience Procedure to Initialize an Application\fP
+.XE
+.LP
+To initialize the \*(xI internals, create an application context,
+open and initialize a display, and create the initial root shell
+instance, an application may use
+.PN XtOpenApplication
+or
+.PN XtVaOpenApplication .
+.LP
+.IN "XtOpenApplication" "" "@DEF@"
+.sM
+.FD 0
+Widget XtOpenApplication(\fIapp_context_return\fP, \fIapplication_class\fP, \
+\fIoptions\fP, \fInum_options\fP,
+.br
+ \fIargc_in_out\fP, \fIargv_in_out\fP, \
+\fIfallback_resources\fP, \fIwidget_class\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ XtAppContext *\fIapp_context_return\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescList \fIoptions\fP;
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc_in_out\fP;
+.br
+ String *\fIargv_in_out\fP;
+.br
+ String *\fIfallback_resources\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIapp_context_return\fP 1.5i
+Returns the application context, if non-NULL.
+.IP \fIapplication_class\fP 1.5i
+Specifies the class name of the application.
+.IP \fIoptions\fP 1.5i
+Specifies the command line options table.
+.IP \fInum_options\fP 1.5i
+Specifies the number of entries in \fIoptions\fP.
+.IP \fIargc_in_out\fP 1.5i
+Specifies a pointer to the number of command line arguments.
+.IP \fIargv_in_out\fP 1.5i
+Specifies a pointer to the command line arguments.
+.IP \fIfallback_resources\fP 1.5i
+Specifies resource values to be used if the application class resource
+file cannot be opened or read, or NULL.
+.IP \fIwidget_class\fP 1.5i
+Specifies the class of the widget to be created. Must be shellWidgetClass
+or a subclass.
+.br
+.IP \fIargs\fP 1.5i
+Specifies the argument list to override any
+other resource specifications for the created shell widget.
+.IP \fInum_args\fP 1.5i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtOpenApplication
+function calls
+.PN XtToolkitInitialize
+followed by
+.PN XtCreateApplicationContext ,
+then calls
+.PN XtOpenDisplay
+with \fIdisplay_string\fP NULL and
+\fIapplication_name\fP NULL, and finally calls
+.PN XtAppCreateShell
+with \fIname\fP NULL, the specified \fIwidget_class\fP,
+an argument list and count,
+and returns the created shell.
+The recommended \fIwidget_class\fP is
+.PN sessionShellWidgetClass .
+The argument list and count are created by merging
+the specified \fIargs\fP and \fInum_args\fP with a list
+containing the specified \fIargc\fP and \fIargv\fP.
+The modified \fIargc\fP and \fIargv\fP returned by
+.PN XtDisplayInitialize
+are returned in \fIargc_in_out\fP and \fIargv_in_out\fP. If
+\fIapp_context_return\fP is not NULL, the created application context is
+also returned. If the display specified by the command line cannot be
+opened, an error message is issued and
+.PN XtOpenApplication
+terminates the application. If \fIfallback_resources\fP is non-NULL,
+.PN XtAppSetFallbackResources
+is called with the value prior to calling
+.PN XtOpenDisplay .
+.sp
+.LP
+.IN "XtVaOpenApplication" "" "@DEF@"
+.sM
+.FD 0
+Widget XtVaOpenApplication(\fIapp_context_return\fP, \fIapplication_class\fP, \
+\fIoptions\fP, \fInum_options\fP,
+.br
+ \fIargc_in_out\fP, \fIargv_in_out\fP, \
+\fIfallback_resources\fP, \fIwidget_class\fP, ...)
+.br
+ XtAppContext *\fIapp_context_return\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescList \fIoptions\fP;
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc_in_out\fP;
+.br
+ String *\fIargv_in_out\fP;
+.br
+ String *\fIfallback_resources\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.FN
+.IP \fIapp_context_return\fP 1.5i
+Returns the application context, if non-NULL.
+.IP \fIapplication_class\fP 1.5i
+Specifies the class name of the application.
+.IP \fIoptions\fP 1.5i
+Specifies the command line options table.
+.IP \fInum_options\fP 1.5i
+Specifies the number of entries in \fIoptions\fP.
+.IP \fIargc_in_out\fP 1.5i
+Specifies a pointer to the number of command line arguments.
+.IP \fIargv_in_out\fP 1.5i
+Specifies the command line arguments array.
+.IP \fIfallback_resources\fP 1.5i
+Specifies resource values to be used if the application class
+resource file cannot be opened, or NULL.
+.IP \fIwidget_class\fP 1.5i
+Specifies the class of the widget to be created. Must be shellWidgetClass
+or a subclass.
+.IP ... 1.5i
+Specifies the variable argument list to override any other
+resource specifications for the created shell.
+.LP
+.eM
+The
+.PN XtVaOpenApplication
+procedure is identical in function to
+.PN XtOpenApplication
+with the \fIargs\fP and \fInum_args\fP parameters replaced by a varargs list,
+as described
+in Section 2.5.1.
+
+.NH 3
+Widget Instance Allocation: The allocate Procedure
+.XS
+\*(SN Widget Instance Allocation: The allocate Procedure
+.XE
+.IN "Widget Allocation"
+.LP
+A widget class may optionally provide an instance allocation procedure
+in the
+.PN ObjectClassExtension
+record.
+.LP
+When the call to create a widget includes a varargs list containing
+.PN XtVaTypedArg ,
+these arguments will be passed to the allocation procedure in an
+.PN XtTypedArgList .
+.LP
+.IN "XtTypedArgList" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ String name;
+ String type;
+ XtArgVal value;
+ int size;
+} XtTypedArg, *XtTypedArgList;
+.De
+.LP
+.eM
+.IN "allocate procedure" "" "@DEF@"
+The allocate procedure pointer in the
+.PN ObjectClassExtension
+record is of type
+.PN XtAllocateProc .
+.LP
+.IN "XtAllocateProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtAllocateProc)(WidgetClass, Cardinal*, Cardinal*, ArgList, \
+Cardinal*,
+ XtTypedArgList, Cardinal*, \
+Widget*, XtPointer*);
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Cardinal* \fIconstraint_size\fP;
+.br
+ Cardinal* \fImore_bytes\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal* \fInum_args\fP;
+.br
+ XtTypedArgList \fItyped_args\fP,
+.br
+ Cardinal* \fInum_typed_args\fP;
+.br
+ Widget* \fInew_return\fP;
+.br
+ XtPointer* \fImore_bytes_return\fP;
+.FN
+.IP \fIwidget_class\fP 1.5i
+Specifies the widget class of the instance to allocate.
+.IP \fIconstraint_size\fP 1.5i
+Specifies the size of the constraint record to allocate, or 0.
+.IP \fImore_bytes\fP 1.5i
+Specifies the number of auxiliary bytes of memory to allocate.
+.IP \fIargs\fP 1.5i
+Specifies the argument list as given in the call to create the widget.
+.IP \fInum_args\fP 1.5i
+Specifies the number of arguments.
+.IP \fItyped_args\fP 1.5i
+Specifies the list of typed arguments given in the call to create the widget.
+.IP \fInum_typed_args\fP 1.5i
+Specifies the number of typed arguments.
+.IP \fInew_return\fP 1.5i
+Returns a pointer to the newly allocated instance, or NULL in case of error.
+.IP \fImore_bytes_return\fP 1.5i
+Returns the auxiliary memory if it was requested, or NULL
+if requested and an error occurred; otherwise, unchanged.
+.LP
+.eM
+At widget allocation time, if an extension record with \fIrecord_type\fP
+equal to
+.PN \s-1NULLQUARK\s+1
+is located through the object class part \fIextension\fP field
+and the \fIallocate\fP field is not NULL, the
+.PN XtAllocateProc
+will be invoked to allocate memory for the widget. If no ObjectClassPart
+extension record is declared with \fIrecord_type equal\fP to
+.PN \s-1NULLQUARK\s+1 ,
+then
+.PN XtInheritAllocate
+and
+.PN XtInheritDeallocate
+are assumed.
+If no
+.PN XtAllocateProc
+is found, the \*(xI will allocate memory for the widget.
+.LP
+An
+.PN XtAllocateProc
+must perform the following:
+.IP \(bu 5
+Allocate memory for the widget instance and return it in \fInew_return\fP.
+The memory must be at least \fIwc->core_class.widget_size\fP bytes in length,
+double-word aligned.
+.IP \(bu 5
+Initialize the \fIcore.constraints\fP field in the instance record to NULL
+or to point to a constraint record. If \fIconstraint_size\fP
+is not 0, the procedure must allocate memory for the constraint record.
+The memory must be double-word aligned.
+.IP \(bu 5
+If \fImore_bytes\fP is not 0, then the address of a block of memory
+at least \fImore_bytes\fP in size, double-word aligned, must be
+returned in the \fImore_bytes_return\fP parameter,
+or NULL to indicate an error.
+.LP
+A class allocation procedure that envelops the allocation procedure of a
+superclass must rely on the enveloped procedure to perform the instance
+and constraint allocation.
+Allocation procedures should refrain from initializing fields in the
+widget record except to store pointers to newly allocated additional memory.
+Under no circumstances should an allocation procedure that envelopes
+its superclass allocation procedure modify fields in the
+instance part of any superclass.
+
+.NH 3
+Widget Instance Initialization: The initialize Procedure
+.XS
+\*(SN Widget Instance Initialization: The initialize Procedure
+.XE
+.IN "Initialization"
+.IN "Chaining"
+.IN "Superclass Chaining"
+.IN "Inheritance"
+.LP
+The initialize procedure pointer in a widget class is of type
+.PN XtInitProc .
+.LP
+.IN "XtInitProc" "" "@DEF@"
+.IN "initialize procedure" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtInitProc)(Widget, Widget, ArgList, Cardinal*);
+.br
+ Widget \fIrequest\fP;
+.br
+ Widget \fInew\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.FN
+.IP \fIrequest\fP 1i
+Specifies a copy of the widget with resource values as requested by the
+argument list, the resource database, and the widget defaults.
+.IP \fInew\fP 1i
+Specifies the widget with the new values, both resource and nonresource,
+that are actually allowed.
+.IP \fIargs\fP 1i
+Specifies the argument list passed by the client, for
+computing derived resource values.
+If the client created the widget using a varargs form, any resources
+specified via
+.PN XtVaTypedArg
+are converted to the widget representation and the list is transformed
+into the
+.PN ArgList
+format.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+An initialization procedure performs the following:
+.IP \(bu 5
+Allocates space for and copies any resources referenced by address
+that the client is allowed to free or modify
+after the widget has been created.
+For example,
+if a widget has a field that is a
+.PN String ,
+it may choose not to
+depend on the characters at that address remaining constant
+but dynamically allocate space for the string and copy it to the new space.
+Widgets that do not copy one or more resources referenced
+by address should clearly so state in their user documentation.
+.NT
+It is not necessary to allocate space for or to copy callback lists.
+.NE
+.IP \(bu 5
+Computes values for unspecified resource fields.
+For example, if \fIwidth\fP and \fIheight\fP are zero,
+the widget should compute an appropriate width and height
+based on its other resources.
+.NT
+A widget may directly assign only
+its own \fIwidth\fP and \fIheight\fP within the initialize, initialize_hook,
+set_values, and
+set_values_hook procedures; see Chapter 6.
+.NE
+.IP \(bu 5
+Computes values for uninitialized nonresource fields that are derived from
+resource fields.
+For example, graphics contexts (GCs) that the widget uses are derived from
+resources like background, foreground, and font.
+.LP
+An initialization procedure also can check certain fields for
+internal consistency.
+For example, it makes no sense to specify a colormap for a depth
+that does not support that colormap.
+.LP
+Initialization procedures are called in superclass-to-subclass order
+after all fields specified in the resource lists have been
+initialized. The initialize procedure does not need to examine
+\fIargs\fP and \fInum_args\fP
+if all public resources are declared in the resource list.
+Most of the initialization code for a specific widget class deals with fields
+defined in that class and not with fields defined in its superclasses.
+.LP
+If a subclass does not need an initialization procedure
+because it does not need to perform any of the above operations,
+it can specify NULL for the \fIinitialize\fP field in the class record.
+.LP
+Sometimes a subclass may want to overwrite values filled in by its
+superclass.
+In particular, size calculations of a superclass often are
+incorrect for a subclass, and in this case,
+the subclass must modify or recalculate fields declared
+and computed by its superclass.
+.LP
+As an example,
+a subclass can visually surround its superclass display.
+In this case, the width and height calculated by the superclass initialize
+procedure are too small and need to be incremented by the size of the surround.
+The subclass needs to know if its superclass's size was calculated by the
+superclass or was specified explicitly.
+All widgets must place themselves into whatever size is explicitly given,
+but they should compute a reasonable size if no size is requested.
+.LP
+The \fIrequest\fP and \fInew\fP arguments provide the necessary information for
+a subclass to determine the difference between an explicitly specified field
+and a field computed by a superclass.
+The \fIrequest\fP widget is a copy of the widget as initialized by the
+arglist and resource database.
+The \fInew\fP widget starts with the values in the request,
+but it has been updated by all superclass initialization procedures called
+so far.
+A subclass initialize procedure can compare these two to resolve
+any potential conflicts.
+.LP
+In the above example,
+the subclass with the visual surround can see
+if the \fIwidth\fP and \fIheight\fP in the \fIrequest\fP widget are zero.
+If so,
+it adds its surround size to the \fIwidth\fP and \fIheight\fP
+fields in the \fInew\fP widget.
+If not, it must make do with the size originally specified.
+.LP
+The \fInew\fP widget will become the actual widget instance record.
+Therefore,
+the initialization procedure should do all its work on the \fInew\fP widget;
+the \fIrequest\fP widget should never be modified.
+If the initialize procedure
+needs to call any routines that operate on a widget,
+it should specify \fInew\fP as the widget instance.
+
+.NH 3
+Constraint Instance Initialization: The ConstraintClassPart initialize Procedure
+.XS
+\*(SN Constraint Instance Initialization: The ConstraintClassPart initialize Procedure
+.XE
+.IN "Initialization"
+.IN "XtInitProc"
+.IN "initialize procedure"
+.IN "Chaining"
+.IN "Superclass Chaining"
+.IN "Inheritance"
+.LP
+The constraint initialization procedure pointer, found in the
+.PN ConstraintClassPart
+\fIinitialize\fP field of the widget class record, is of type
+.PN XtInitProc .
+The values passed to the parent constraint initialization procedures
+are the same as those passed to the child's class widget initialization
+procedures.
+.LP
+The \fIconstraints\fP field of the \fIrequest\fP widget points to a copy of the
+constraints record as initialized by the arglist and resource database.
+.LP
+The constraint initialization procedure should compute any constraint fields
+derived from constraint resources.
+It can make further changes to the \fInew\fP widget to make the widget
+and any other constraint fields
+conform to the specified constraints, for example,
+changing the widget's size or position.
+.LP
+If a constraint class does not need a constraint initialization procedure,
+it can specify NULL for the \fIinitialize\fP field of the
+.PN ConstraintClassPart
+in the class record.
+
+.NH 3
+Nonwidget Data Initialization: The initialize_hook Procedure
+.XS
+\*(SN Nonwidget Data Initialization: The initialize_hook Procedure
+.XE
+.IN "Initialization"
+.LP
+.NT
+The initialize_hook procedure is obsolete, as the same information
+is now available to the initialize procedure. The procedure has been
+retained for those widgets that used it in previous releases.
+.NE
+.LP
+The initialize_hook procedure pointer is of type
+.PN XtArgsProc :
+.LP
+.IN "initialize_hook procedure" "" "@DEF@"
+.IN "XtArgsProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtArgsProc)(Widget, ArgList, Cardinal*);
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIargs\fP 1i
+Specifies the argument list passed by the client.
+If the client created the widget using a varargs form, any resources
+specified via
+.PN XtVaTypedArg
+are converted to the widget representation and the list is transformed
+into the
+.PN ArgList
+format.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+If this procedure is not NULL,
+it is called immediately after the corresponding initialize
+procedure or in its place if the \fIinitialize\fP field is NULL.
+.LP
+The initialize_hook procedure allows a widget instance to initialize
+nonresource data using information from the specified argument list
+as if it were a resource.
+
+.NH 2
+Realizing Widgets
+.XS
+\fB\*(SN Realizing Widgets\fP
+.XE
+.LP
+To realize a widget instance, use
+.PN XtRealizeWidget .
+.LP
+.IN "XtRealizeWidget" "" "@DEF@"
+.sM
+.FD 0
+void XtRealizeWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.eM
+.LP
+If the widget is already realized,
+.PN XtRealizeWidget
+simply returns.
+Otherwise it performs the following:
+.IP \(bu 5
+Binds all action names in the widget's
+translation table to procedures (see Section 10.1.2).
+.IP \(bu 5
+Makes a postorder traversal of the widget tree rooted
+at the specified widget and calls each non-NULL change_managed procedure
+of all composite widgets that have one or more managed children.
+.IP \(bu 5
+Constructs an
+.PN XSetWindowAttributes
+structure filled in with information derived from the
+Core
+widget fields and calls the realize procedure for the widget,
+which adds any widget-specific attributes and creates the X window.
+.IP \(bu 5
+If the widget is
+not a subclass of
+.PN compositeWidgetClass ,
+.PN XtRealizeWidget
+returns; otherwise it continues and performs the following:
+.RS
+.IP \- 5
+Descends recursively to each of the widget's
+managed children and calls the realize procedures.
+Primitive widgets that instantiate children are responsible for realizing
+those children themselves.
+.IP \- 5
+Maps all of the managed children windows that have \fImapped_when_managed\fP
+.PN True .
+If a widget is managed but \fImapped_when_managed\fP is
+.PN False ,
+the widget is allocated visual space but is not displayed.
+.RE
+.LP
+If the widget is a top-level shell widget (that is, it has no parent), and
+\fImapped_when_managed\fP is
+.PN True ,
+.PN XtRealizeWidget
+maps the widget window.
+.LP
+.PN XtCreateWidget ,
+.PN XtVaCreateWidget ,
+.PN XtRealizeWidget ,
+.PN XtManageChildren ,
+.PN XtUnmanage\%Children ,
+.PN XtUnrealizeWidget ,
+.PN XtSetMappedWhenManaged ,
+and
+.PN XtDestroy\%Widget
+maintain the following invariants:
+.IP \(bu 5
+If a composite widget is realized, then all its managed children are realized.
+.IP \(bu 5
+If a composite widget is realized, then all its managed children that have
+\fImapped_when_managed\fP
+.PN True
+are mapped.
+.LP
+All \*(xI functions and all widget routines should accept
+either realized or unrealized widgets.
+When calling the realize or change_managed
+procedures for children of a composite
+widget,
+.PN XtRealizeWidget
+calls the procedures in reverse order of
+appearance in the
+.PN CompositePart
+\fIchildren\fP list. By default, this
+ordering of the realize procedures will
+result in the stacking order of any newly created subwindows being
+top-to-bottom in the order of appearance on the list, and the most
+recently created child will be at the bottom.
+.sp
+.LP
+To check whether or not a widget has been realized, use
+.PN XtIsRealized .
+.LP
+.IN "XtIsRealized" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtIsRealized(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.LP
+.eM
+The
+.PN XtIsRealized
+function returns
+.PN True
+if the widget has been realized,
+that is, if the widget has a nonzero window ID.
+If the specified object is not a widget, the state of the nearest
+widget ancestor is returned.
+.LP
+Some widget procedures (for example, set_values) might wish to
+operate differently
+after the widget has been realized.
+
+.NH 3
+Widget Instance Window Creation: The realize Procedure
+.XS
+\*(SN Widget Instance Window Creation: The realize Procedure
+.XE
+.LP
+The realize procedure pointer in a widget class is of type
+.PN XtRealizeProc .
+.LP
+.IN "XtRealizeProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtRealizeProc)(Widget, XtValueMask*, XSetWindowAttributes*);
+.br
+ Widget \fIw\fP;
+.br
+ XtValueMask *\fIvalue_mask\fP;
+.br
+ XSetWindowAttributes *\fIattributes\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIvalue_mask\fP 1i
+Specifies which fields in the \fIattributes\fP structure are used.
+.IP \fIattributes\fP 1i
+Specifies the window attributes to use in the
+.PN XCreateWindow
+call.
+.LP
+.eM
+The realize procedure must create the widget's window.
+.LP
+Before calling the class realize procedure, the generic
+.PN XtRealizeWidget
+function fills in a mask and a corresponding
+.PN XSetWindowAttributes
+structure.
+It sets the following fields in \fIattributes\fP and
+corresponding bits in \fIvalue_mask\fP
+based on information in the widget
+core
+structure:
+.IP \(bu 5
+The \fIbackground_pixmap\fP (or \fIbackground_pixel\fP if \fIbackground_pixmap\fP is
+.PN XtUnspecifiedPixmap )
+is filled in from the corresponding field.
+.IP \(bu 5
+The \fIborder_pixmap\fP (or \fIborder_pixel\fP if \fIborder_pixmap\fP is
+.PN XtUnspecifiedPixmap )
+is filled in from the corresponding field.
+.IP \(bu 5
+The \fIcolormap\fP is filled in from the corresponding field.
+.IP \(bu 5
+The \fIevent_mask\fP is filled in based on the event handlers registered,
+the event translations specified, whether the \fIexpose\fP field is non-NULL,
+and whether \fIvisible_interest\fP is
+.PN True .
+.IP \(bu 5
+The \fIbit_gravity\fP is set to
+.PN NorthWestGravity
+if the \fIexpose\fP field is NULL.
+.LP
+These or any other fields in attributes and the corresponding bits in
+\fIvalue_mask\fP can be set by the realize procedure.
+.LP
+Note that because realize is not a chained operation,
+the widget class realize procedure must update the
+.PN XSetWindowAttributes
+structure with all the appropriate fields from
+non-Core
+superclasses.
+.LP
+.IN "Inheritance"
+A widget class can inherit its realize procedure from its superclass
+during class initialization.
+The realize procedure defined for
+.PN coreWidgetClass
+calls
+.PN XtCreateWindow
+with the passed \fIvalue_mask\fP and \fIattributes\fP
+and with \fIwindow_class\fP and \fIvisual\fP set to
+.PN CopyFromParent .
+Both
+.PN compositeWidgetClass
+and
+.PN constraintWidgetClass
+inherit this realize procedure, and most new widget subclasses
+can do the same (see Section 1.6.10).
+.LP
+The most common noninherited realize procedures set \fIbit_gravity\fP in the mask
+and attributes to the appropriate value and then create the window.
+For example, depending on its justification, Label might set \fIbit_gravity\fP to
+.PN WestGravity ,
+.PN CenterGravity ,
+or
+.PN EastGravity .
+Consequently, shrinking it would just move the bits appropriately,
+and no
+exposure
+event is needed for repainting.
+.LP
+If a composite widget's children should be realized in an order other
+than that specified
+(to control the stacking order, for example),
+it should call
+.PN XtRealizeWidget
+on its children itself in the appropriate order from within its own
+realize procedure.
+.LP
+Widgets that have children and whose class is not a subclass of
+.PN compositeWidgetClass
+are responsible for calling
+.PN XtRealizeWidget
+on their children, usually from within the realize procedure.
+.LP
+Realize procedures cannot manage or unmanage their descendants.
+
+.NH 3
+Window Creation Convenience Routine
+.XS
+\*(SN Window Creation Convenience Routine
+.XE
+.LP
+Rather than call the Xlib
+.PN XCreateWindow
+.IN "realize procedure"
+function explicitly, a realize procedure should normally call the \*(xI analog
+.PN XtCreateWindow ,
+which simplifies the creation of windows for widgets.
+.LP
+.IN "XtCreateWindow" "" "@DEF@"
+.sM
+.FD 0
+void XtCreateWindow(\fIw\fP, \fIwindow_class\fP, \fIvisual\fP, \
+\fIvalue_mask\fP, \fIattributes\fP)
+.br
+ Widget \fIw\fP;
+.br
+ unsigned int \fIwindow_class\fP;
+.br
+ Visual *\fIvisual\fP;
+.br
+ XtValueMask \fIvalue_mask\fP;
+.br
+ XSetWindowAttributes *\fIattributes\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that defines the additional window attributed. \*(cI
+.IP \fIwindow_class\fP 1i
+Specifies the Xlib window class (for example,
+.PN InputOutput ,
+.PN InputOnly ,
+or
+.PN CopyFromParent ).
+.IP \fIvisual\fP 1i
+Specifies the visual type (usually
+.PN CopyFromParent ).
+.ds Vm attribute fields to use
+.IP \fIvalue_mask\fP 1i
+Specifies which fields in the \fIattributes\fP structure are used.
+.IP \fIattributes\fP 1i
+Specifies the window attributes to use in the
+.PN XCreateWindow
+call.
+.LP
+.eM
+The
+.PN XtCreateWindow
+function calls the Xlib
+.PN XCreateWindow
+function with values from the widget structure and the passed parameters.
+Then, it assigns the created window to the widget's \fIwindow\fP field.
+.LP
+.PN XtCreateWindow
+evaluates the following fields of the widget core
+structure: \fIdepth\fP, \fIscreen\fP, \fIparent->core.window\fP, \fIx\fP,
+\fIy\fP, \fIwidth\fP, \fIheight\fP, and
+\fIborder_width\fP.
+
+.NH 2
+Obtaining Window Information from a Widget
+.XS
+\fB\*(SN Obtaining Window Information from a Widget\fP
+.XE
+.LP
+The
+Core
+widget class definition contains the screen and window ids.
+The \fIwindow\fP field may be NULL for a while
+(see Sections 2.5 and 2.6).
+.LP
+The display pointer, the parent widget, screen pointer,
+and window of a widget are available to the widget writer by means of macros
+and to the application writer by means of functions.
+.LP
+.IN "XtDisplay" "" "@DEF@"
+.sM
+.FD 0
+Display *XtDisplay(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+.PN XtDisplay
+returns the display pointer for the specified widget.
+.sp
+.LP
+.IN "XtParent" "" "@DEF@"
+.sM
+.FD 0
+Widget XtParent(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.LP
+.eM
+.PN XtParent
+returns the parent object for the specified widget. The returned object
+will be of class Object or a subclass.
+.sp
+.LP
+.IN "XtScreen" "" "@DEF@"
+.sM
+.FD 0
+Screen *XtScreen(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+.PN XtScreen
+returns the screen pointer for the specified widget.
+.sp
+.LP
+.IN "XtWindow" "" "@DEF@"
+.sM
+.FD 0
+Window XtWindow(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+.PN XtWindow
+returns the window of the specified widget.
+.sp
+.LP
+The display pointer, screen pointer, and window of a widget or
+of the closest widget ancestor of a nonwidget object are available
+by means of
+.PN XtDisplayOfObject ,
+.PN XtScreenOfObject ,
+and
+.PN XtWindowOfObject .
+.IN "XtDisplayOfObject" "" "@DEF@"
+.sp
+.LP
+.sM
+.FD 0
+Display *XtDisplayOfObject(\fIobject\fP)
+.br
+ Widget \fIobject\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object. \*(oI
+.LP
+.eM
+.PN XtDisplayOfObject
+is identical in function to
+.PN XtDisplay
+if the object is a widget; otherwise
+.PN XtDisplayOfObject
+returns the display
+pointer for the nearest ancestor of \fIobject\fP that is of class
+Widget or a subclass thereof.
+.LP
+.IN "XtScreenOfObject" "" "@DEF@"
+.sM
+.FD 0
+Screen *XtScreenOfObject(\fIobject\fP)
+.br
+ Widget \fIobject\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object. \*(oI
+.LP
+.eM
+.PN XtScreenOfObject
+is identical in function to
+.PN XtScreen
+if the object is a widget; otherwise
+.PN XtScreenOfObject
+returns the screen pointer
+for the nearest ancestor of \fIobject\fP that is of class
+Widget or a subclass thereof.
+.LP
+.IN "XtWindowOfObject" "" "@DEF@"
+.sM
+.FD 0
+Window XtWindowOfObject(\fIobject\fP)
+.br
+ Widget \fIobject\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object. \*(oI
+.LP
+.eM
+.PN XtWindowOfObject
+is identical in function to
+.PN XtWindow
+if the object is a widget; otherwise
+.PN XtWindowOfObject
+returns the window for the nearest ancestor of \fIobject\fP that is of class
+Widget or a subclass thereof.
+.sp
+.LP
+To retrieve the instance name of an object, use
+.PN XtName .
+.LP
+.IN "XtName" "" "@DEF@"
+.sM
+.FD 0
+String XtName(\fIobject\fP)
+.br
+ Widget \fIobject\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object whose name is desired. \*(oI
+.LP
+.eM
+.PN XtName
+returns a pointer to the instance name of the specified object.
+The storage is owned by the \*(xI and must not be modified. The
+name is not qualified by the names of any of the object's ancestors.
+.LP
+Several window attributes are locally cached in the widget instance.
+Thus, they can be set by the resource manager and
+.PN XtSetValues
+as well as used by routines that derive structures from these values
+(for example, \fIdepth\fP for deriving pixmaps,
+\fIbackground_pixel\fP for deriving GCs, and so on) or in the
+.PN XtCreateWindow
+call.
+.LP
+The \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP, and \fIborder_width\fP
+window attributes are available to
+geometry managers.
+These fields are maintained synchronously inside the \*(xI.
+When an
+.PN XConfigureWindow
+is issued by the \*(xI on the widget's window (on request of its parent),
+these values are updated immediately rather than some time later
+when the server generates a
+.PN ConfigureNotify
+event.
+(In fact, most widgets do not select
+.PN SubstructureNotify
+events.)
+This ensures that all geometry calculations are based on the internally
+consistent toolkit world rather than on either
+an inconsistent world updated by asynchronous
+.PN ConfigureNotify
+events or a consistent, but slow, world in which geometry managers
+ask the server
+for window sizes whenever they need to lay out their managed children
+(see Chapter 6).
+
+.NH 3
+Unrealizing Widgets
+.XS
+\fB\*(SN Unrealizing Widgets\fP
+.XE
+.LP
+To destroy the windows associated with a widget and its
+non-pop-up descendants, use
+.PN XtUnrealizeWidget .
+.LP
+.IN "XtUnrealizeWidget" "" "@DEF@"
+.sM
+.FD 0
+void XtUnrealizeWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+If the widget is currently unrealized,
+.PN XtUnrealizeWidget
+simply returns. Otherwise it performs the following:
+.IP \(bu 5
+Unmanages the widget if the widget is managed.
+.IP \(bu 5
+Makes a postorder (child-to-parent) traversal of the widget tree
+rooted at the specified widget and, for each widget that has
+declared a callback list resource named ``unrealizeCallback'', executes the
+procedures on the
+.IN XtNunrealizeCallback
+XtNunrealizeCallback
+list.
+.IN "unrealizeCallback" "" "@DEF@"
+.IP \(bu 5
+Destroys the widget's window and any subwindows by calling
+.PN XDestroyWindow
+with the specified widget's \fIwindow\fP field.
+.LP
+Any events in the queue or which arrive following a call to
+.PN XtUnrealizeWidget
+will be dispatched as if the window(s) of the
+unrealized widget(s) had never existed.
+
+.NH 2
+Destroying Widgets
+.XS
+\fB\*(SN Destroying Widgets\fP
+.XE
+.LP
+The \*(xI provide support
+.IP \(bu 5
+To destroy all the pop-up children of the widget being destroyed
+and destroy all children of composite widgets.
+.IP \(bu 5
+To remove (and unmap) the widget from its parent.
+.IP \(bu 5
+To call the callback procedures that have been registered to trigger
+when the widget is destroyed.
+.IP \(bu 5
+To minimize the number of things a widget has to deallocate when destroyed.
+.IP \(bu 5
+To minimize the number of
+.PN XDestroyWindow
+calls when destroying a widget tree.
+.sp
+.LP
+To destroy a widget instance, use
+.PN XtDestroyWidget .
+.LP
+.IN "XtDestroyWidget" "" "@DEF@"
+.sM
+.FD 0
+void XtDestroyWidget(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.LP
+.eM
+The
+.PN XtDestroyWidget
+function provides the only method of destroying a widget,
+including widgets that need to destroy themselves.
+It can be called at any time,
+including from an application callback routine of the widget being destroyed.
+This requires a two-phase destroy process in order to avoid dangling
+references to destroyed widgets.
+.LP
+In phase 1,
+.PN XtDestroyWidget
+performs the following:
+.IP \(bu 5
+If the \fIbeing_destroyed\fP field of the widget is
+.PN True ,
+it returns immediately.
+.IP \(bu 5
+Recursively descends the widget tree and
+sets the \fIbeing_destroyed\fP field to
+.PN True
+for the widget and all normal and pop-up children.
+.IP \(bu 5
+Adds the widget to a list of widgets (the destroy list) that should be
+destroyed when it is safe to do so.
+.LP
+Entries on the destroy list satisfy the invariant that
+if w2 occurs after w1 on the destroy list, then w2 is not a descendent,
+either normal or pop-up, of w1.
+.LP
+Phase 2 occurs when all procedures that should execute as a result of
+the current event have been called, including all procedures registered with
+the event and translation managers,
+that is, when the current invocation of
+.PN XtDispatchEvent
+is about to return, or immediately if not in
+.PN XtDispatchEvent .
+.LP
+In phase 2,
+.PN XtDestroyWidget
+performs the following on each entry in the destroy list in the order
+specified:
+.IP \(bu 5
+If the widget is not a pop-up child and the widget's parent is a subclass of
+.PN composite\%WidgetClass ,
+and if the parent is not being destroyed,
+it calls
+.PN XtUnmanageChild
+on the widget and then calls the widget's parent's delete_child procedure
+(see Section 3.3).
+.IP \(bu 5
+Calls the destroy callback procedures registered on the widget
+and all normal and pop-up descendants in postorder (it calls child
+callbacks before parent callbacks).
+.LP
+The
+.PN XtDestroyWidget
+function then makes second traversal of the widget and all normal
+and pop-up descendants to perform the following three items on each
+widget in postorder:
+.IP \(bu 5
+If the widget is not a pop-up child and the widget's parent is a subclass of
+.PN constraint\%WidgetClass ,
+it calls the
+.PN ConstraintClassPart
+destroy procedure for the parent,
+then for the parent's superclass,
+until finally it calls the
+.PN ConstraintClassPart
+destroy procedure for
+.PN constraintWidgetClass .
+.IP \(bu 5
+Calls the
+.PN CoreClassPart
+destroy procedure declared in the widget class,
+then the destroy procedure declared in its superclass,
+until finally it calls the destroy procedure declared in the Object
+class record. Callback lists are deallocated.
+.IP \(bu 5
+If the widget class object class part contains an
+.PN ObjectClassExtension
+record with the record_type
+.PN \s-1NULLQUARK\s+1
+and the \fIdeallocate\fP field is not NULL,
+calls the deallocate procedure to deallocate the instance and if one
+exists, the constraint record. Otherwise, the \*(xI will deallocate
+the widget instance record and if one exists, the constraint record.
+.IP \(bu 5
+Calls
+.PN XDestroyWindow
+if the specified widget is realized (that is, has an X window).
+The server recursively destroys all normal descendant windows.
+(Windows of realized pop-up Shell children, and their
+descendants, are destroyed by a shell class destroy procedure.)
+
+.NH 3
+Adding and Removing Destroy Callbacks
+.XS
+\fB\*(SN Adding and Removing Destroy Callbacks\fP
+.XE
+.LP
+When an application needs to perform additional processing during the
+destruction of a widget,
+it should register a destroy callback procedure for the widget.
+The destroy callback procedures use the mechanism described in Chapter 8.
+.IN "Destroy Callbacks"
+The destroy callback list is identified by the resource name
+XtNdestroyCallback.
+.LP
+For example, the following adds an application-supplied destroy callback
+procedure \fIClientDestroy\fP with client data to a widget by calling
+.PN XtAddCallback .
+.IN "XtAddCallback"
+.Ds
+XtAddCallback(\fIw\fP, XtNdestroyCallback, \fIClientDestroy\fP, \fIclient_data\fP)
+.De
+.LP
+Similarly, the following removes the application-supplied destroy callback
+procedure \fIClientDestroy\fP by calling
+.PN XtRemoveCallback .
+.IN "XtRemoveCallback"
+.Ds
+XtRemoveCallback(\fIw\fP, XtNdestroyCallback, \fIClientDestroy\fP, \fIclient_data\fP)
+.De
+.LP
+The \fIClientDestroy\fP argument is of type
+.PN XtCallbackProc ;
+see Section 8.1.
+
+.NH 3
+Dynamic Data Deallocation: The destroy Procedure
+.XS
+\*(SN Dynamic Data Deallocation: The destroy Procedure
+.XE
+.LP
+.IN "destroy procedure" "" "@DEF@"
+The destroy procedure pointers in the
+.PN ObjectClassPart ,
+.PN RectObjClassPart ,
+and
+.PN CoreClassPart
+structures are of type
+.PN XtWidgetProc .
+.LP
+.IN "XtWidgetProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtWidgetProc)(Widget);
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget being destroyed.
+.LP
+.eM
+The destroy procedures are called in subclass-to-superclass order.
+Therefore, a widget's destroy procedure should deallocate only storage
+that is specific to the subclass and should ignore the storage
+allocated by any of its superclasses.
+The destroy procedure should deallocate only resources that have been
+explicitly created by the subclass.
+Any resource that was obtained from the resource database
+or passed in an argument list was not created by the widget
+and therefore should not be destroyed by it.
+If a widget does not need to deallocate any storage,
+the destroy procedure entry in its class record can be NULL.
+.LP
+Deallocating storage includes, but is not limited to,
+the following steps:
+.IP \(bu 5
+Calling
+.PN XtFree
+on dynamic storage allocated with
+.PN XtMalloc ,
+.PN XtCalloc ,
+and so on.
+.IP \(bu 5
+Calling
+.PN XFreePixmap
+on pixmaps created with direct X calls.
+.IP \(bu 5
+Calling
+.PN XtReleaseGC
+on GCs allocated with
+.PN XtGetGC .
+.IP \(bu 5
+Calling
+.PN XFreeGC
+on GCs allocated with direct X calls.
+.IP \(bu 5
+Calling
+.PN XtRemoveEventHandler
+on event handlers added to other widgets.
+.IP \(bu 5
+Calling
+.PN XtRemoveTimeOut
+on timers created with
+.PN XtAppAddTimeOut .
+.IP \(bu 5
+Calling
+.PN XtDestroyWidget
+for each child if the widget has children
+and is not a subclass of
+.PN compositeWidgetClass .
+.LP
+During destroy phase 2 for each widget, the \*(xI remove the widget
+from the modal cascade, unregister all event handlers, remove all key,
+keyboard, button, and pointer grabs and remove all callback procedures
+registered on the widget. Any outstanding selection transfers will time out.
+
+.NH 3
+Dynamic Constraint Data Deallocation: The ConstraintClassPart destroy Procedure
+.XS
+\*(SN Dynamic Constraint Data Deallocation: The ConstraintClassPart destroy Procedure
+.XE
+.LP
+The constraint destroy procedure identified in the
+.PN ConstraintClassPart
+structure is called for a widget whose parent is a subclass of
+.PN constraintWidgetClass .
+This constraint destroy procedure pointer is of type
+.PN XtWidgetProc .
+The constraint destroy procedures are called in subclass-to-superclass order,
+starting at the class of the widget's parent and ending at
+.PN constraint\%WidgetClass .
+Therefore, a parent's constraint destroy procedure should deallocate only
+storage that is specific to the constraint subclass
+and not storage allocated by any of its superclasses.
+.LP
+If a parent does not need to deallocate any constraint storage,
+the constraint destroy procedure entry
+in its class record can be NULL.
+
+.NH 3
+Widget Instance Deallocation: The deallocate Procedure
+.XS
+\*(SN Widget Instance Deallocation: The deallocate Procedure
+.XE
+.LP
+.IN "deallocate procedure" "" "@DEF@"
+The deallocate procedure pointer in the
+.PN ObjectClassExtension
+record is of type
+.PN XtDeallocateProc .
+.LP
+.IN "XtDeallocateProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtDeallocateProc)(Widget, XtPointer);
+.br
+ Widget \fIwidget\fP;
+.br
+ XtPointer \fImore_bytes\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget being destroyed.
+.IP \fImore_bytes\fP 1i
+Specifies the auxiliary memory received from the corresponding allocator
+along with the widget, or NULL.
+.LP
+.eM
+When a widget is destroyed, if an
+.PN ObjectClassExtension
+record exists in the object class part \fIextension\fP field
+with \fIrecord_type\fP
+.PN \s-1NULLQUARK\s+1
+and the \fIdeallocate\fP field is not NULL, the
+.PN XtDeallocateProc
+will be called.
+If no ObjectClassPart extension record is declared with \fIrecord_type\fP
+equal to
+.PN \s-1NULLQUARK\s+1 ,
+then
+.PN XtInheritAllocate
+and
+.PN XtInheritDeallocate
+are assumed.
+The responsibilities of the deallocate procedure are to deallocate the
+memory specified by \fImore_bytes\fP if it is not NULL,
+to deallocate the constraints record as specified by the
+widget's \fIcore.constraints\fP field if it is
+not NULL, and to deallocate the widget instance itself.
+.LP
+If no
+.PN XtDeallocateProc
+is found, it is assumed that the \*(xI
+originally allocated the memory and is responsible for freeing it.
+
+.NH 2
+Exiting from an Application
+.XS
+\fB\*(SN Exiting from an Application\fP
+.XE
+.LP
+All \*(tk applications should terminate
+by calling
+.PN XtDestroyApplicationContext
+and then exiting
+using the
+standard method for their operating system (typically, by calling
+.PN exit
+for POSIX-based systems).
+The quickest way to make the windows disappear while exiting is to call
+.PN XtUnmapWidget
+on each top-level shell widget.
+The \*(xI have no resources beyond those in the program image,
+and the X server will free its resources when its connection
+to the application is broken.
+.LP
+Depending upon the widget set in use, it may be necessary to explicitly
+destroy individual widgets or widget trees with
+.PN XtDestroyWidget
+before calling
+.PN XtDestroyApplicationContext
+in order to ensure that any
+required widget cleanup is properly executed. The application developer
+must refer to the widget documentation to learn if a widget needs to
+perform cleanup beyond that performed automatically by the
+operating system. If the client is a session participant
+(see Section 4.2), then the client may wish to resign from the session
+before exiting. See Section 4.2.4 for details.
+.bp
diff --git a/specs/Xt/CH03 b/specs/Xt/CH03
new file mode 100644
index 0000000..f96a797
--- /dev/null
+++ b/specs/Xt/CH03
@@ -0,0 +1,1031 @@
+.\" $Xorg: CH03,v 1.3 2000/08/17 19:42:44 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 3\fP\s-1
+
+\s+1\fBComposite Widgets and Their Children\fP\s-1
+.sp 2
+.nr H1 3
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 3 \(em Composite Widgets and Their Children
+.XE
+.IN "Composite widgets"
+Composite widgets (widgets whose class is a subclass of
+.PN compositeWidgetClass )
+can have an arbitrary number of children.
+Consequently, they are responsible for much more than primitive widgets.
+Their responsibilities (either implemented directly by the widget class
+or indirectly by \*(xI functions) include:
+.IP \(bu 5
+Overall management of children from creation to destruction.
+.IP \(bu 5
+Destruction of descendants when the composite widget is destroyed.
+.IP \(bu 5
+Physical arrangement (geometry management) of a displayable subset of
+children (that is, the managed children).
+.IP \(bu 5
+Mapping and unmapping of a subset of the managed children.
+.LP
+Overall management is handled by the generic procedures
+.PN XtCreateWidget
+and
+.PN XtDestroyWidget .
+.PN XtCreateWidget
+adds children to their parent by calling the parent's insert_child
+procedure.
+.PN XtDestroyWidget
+removes children from their parent by calling the parent's delete_child
+procedure and ensures that all children of a destroyed composite widget
+also get destroyed.
+.LP
+Only a subset of the total number of children is actually managed by
+the geometry manager and hence possibly visible.
+For example, a composite editor widget
+supporting multiple editing buffers might allocate one child
+widget for each file buffer,
+but it might display only a small number of the existing buffers.
+Widgets that are in this displayable subset are called managed widgets
+and enter into geometry manager calculations.
+The other children are called unmanaged widgets
+and, by definition, are not mapped by the \*(xI.
+.LP
+Children are added to and removed from their parent's managed set by using
+.PN XtManageChild ,
+.PN XtManageChildren ,
+.PN XtUnmanageChild ,
+.PN XtUnmanageChildren ,
+and
+.PN XtChangeManagedSet ,
+which notify the parent to recalculate the physical layout of its children
+by calling the parent's change_managed procedure.
+The
+.PN XtCreateManagedWidget
+convenience function calls
+.PN XtCreateWidget
+and
+.PN XtManageChild
+on the result.
+.LP
+Most managed children are mapped,
+but some widgets can be in a state where they take up physical space
+but do not show anything.
+Managed widgets are not mapped automatically
+if their \fImap_when_managed\fP field is
+.PN False .
+The default is
+.PN True
+and is changed by using
+.PN XtSetMappedWhenManaged .
+.LP
+Each composite widget class declares a geometry manager,
+which is responsible for figuring out where the managed children
+should appear within the composite widget's window.
+Geometry management techniques fall into four classes:
+.IP "Fixed boxes" 1.6i
+Fixed boxes have a fixed number of children created by the parent.
+All these children are managed,
+and none ever makes geometry manager requests.
+.IP "Homogeneous boxes" 1.6i
+Homogeneous boxes treat all children equally and apply the same geometry
+constraints to each child.
+Many clients insert and delete widgets freely.
+.IP "Heterogeneous boxes" 1.6i
+Heterogeneous boxes have a specific location where each child is placed.
+This location usually is not specified in pixels,
+because the window may be resized, but is expressed rather
+in terms of the relationship between a child
+and the parent or between the child and other specific children.
+The class of heterogeneous boxes is usually a subclass of
+Constraint.
+.IP "Shell boxes" 1.6i
+Shell boxes typically have only one child,
+and the child's size is usually
+exactly the size of the shell.
+The geometry manager must communicate with the window manager, if it exists,
+and the box must also accept
+.PN ConfigureNotify
+events when the window size is changed by the window manager.
+
+.NH 2
+Addition of Children to a Composite Widget: The insert_child Procedure
+.XS
+\*(SN Addition of Children to a Composite Widget: The insert_child Procedure
+.XE
+.LP
+.IN "insert_child procedure"
+To add a child to
+the parent's list of children, the
+.PN XtCreateWidget
+function calls the parent's class routine insert_child.
+The insert_child procedure pointer in a composite widget is of type
+.PN XtWidgetProc .
+.LP
+.IN "insert_child procedure" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtWidgetProc)(Widget);
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Passes the newly created child.
+.LP
+.eM
+Most composite widgets inherit their superclass's operation.
+The insert_child routine in
+.PN CompositeWidgetClass calls the insert_position procedure
+and inserts the child at the specified position
+in the \fIchildren\fP list, expanding it if necessary.
+.LP
+Some composite widgets define their own insert_child routine
+so that they can order their children in some convenient way,
+create companion controller widgets for a new widget,
+or limit the number or class of their child widgets.
+A composite widget class that wishes
+to allow nonwidget children (see Chapter 12) must specify a
+.PN CompositeClassExtension
+extension record as described
+in Section 1.4.2.1 and set the \fIaccepts_objects\fP field in this record to
+.PN True .
+If the
+.PN CompositeClassExtension
+record is not specified or the
+\fIaccepts_objects\fP field is
+.PN False ,
+the composite widget can assume that all its children are of a subclass of Core
+without an explicit subclass test in the insert_child procedure.
+.LP
+If there is not enough room to insert a new child in the \fIchildren\fP array
+(that is, \fInum_children\fP is equal to \fInum_slots\fP),
+the insert_child procedure must first reallocate the array
+and update \fInum_slots\fP.
+The insert_child procedure then places the child at the appropriate position
+in the array and increments the \fInum_children\fP field.
+
+.NH 2
+Insertion Order of Children: The insert_position Procedure
+.XS
+\fB\*(SN Insertion Order of Children: The insert_position Procedure\fP
+.XE
+.LP
+Instances of composite widgets sometimes need to specify more about the order in which
+their children are kept.
+For example,
+an application may want a set of command buttons in some logical order
+grouped by function,
+and it may want buttons that represent file names to be kept
+in alphabetical order without constraining the order in which the
+buttons are created.
+.LP
+An application controls the presentation order of a set of children by
+supplying an
+.IN XtNinsertPosition
+XtNinsertPosition
+resource.
+The insert_position procedure pointer in a composite widget instance is of type
+.PN XtOrderProc .
+.LP
+.IN "XtOrderProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Cardinal (*XtOrderProc)(Widget);
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Passes the newly created widget.
+.LP
+.eM
+Composite widgets that allow clients to order their children (usually
+homogeneous boxes) can call their widget instance's insert_position
+procedure from the class's insert_child procedure to determine where a new
+child should go in its \fIchildren\fP array.
+Thus, a client using a composite class can apply different sorting criteria
+to widget instances of the class, passing in a different insert_position
+procedure resource when it creates each composite widget instance.
+.LP
+The return value of the insert_position procedure
+indicates how many children should go before the widget.
+Returning zero indicates that the widget should go before all other children,
+and returning \fInum_children\fP indicates that it should go after all other children.
+The default insert_position function returns \fInum_children\fP
+and can be overridden by a specific composite widget's resource list
+or by the argument list provided when the composite widget is created.
+
+.NH 2
+Deletion of Children: The delete_child Procedure
+.XS
+\*(SN Deletion of Children: The delete_child Procedure
+.XE
+.LP
+.IN "delete_child procedure"
+.LP
+To remove the child from the parent's \fIchildren\fP list, the
+.PN XtDestroyWidget
+function eventually causes a call to the Composite parent's class delete_child
+procedure.
+The delete_child procedure pointer is of type
+.PN XtWidgetProc .
+.LP
+.IN "delete_child procedure" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtWidgetProc)(Widget);
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP
+Passes the child being deleted.
+.LP
+.eM
+Most widgets inherit the delete_child procedure from their superclass.
+Composite widgets that create companion widgets define their own
+delete_child procedure to remove these companion widgets.
+
+.NH 2
+Adding and Removing Children from the Managed Set
+.XS
+\fB\*(SN Adding and Removing Children from the Managed Set\fP
+.XE
+.LP
+The \*(xI provide a set of generic routines to permit the addition of
+widgets to or the removal of widgets from a composite widget's managed set.
+.IN "change_managed procedure"
+These generic routines eventually call the composite widget's change_managed
+procedure if the procedure pointer is non-NULL.
+The change_managed procedure pointer is of type
+.PN XtWidgetProc .
+The widget argument specifies the composite widget whose managed child
+set has been modified.
+
+.NH 3
+Managing Children
+.XS
+\fB\*(SN Managing Children\fP
+.XE
+.LP
+To add a list of widgets to the geometry-managed (and hence displayable)
+subset of their Composite parent, use
+.PN XtManageChildren .
+.LP
+.IN "XtManageChildren" "" "@DEF@"
+.sM
+.FD 0
+typedef Widget *WidgetList;
+.sp
+void XtManageChildren(\fIchildren\fP, \fInum_children\fP)
+.br
+ WidgetList \fIchildren\fP;
+.br
+ Cardinal \fInum_children\fP;
+.FN
+.IP \fIchildren\fP 1i
+Specifies a list of child widgets. Each child must be of class
+RectObj or any subclass thereof.
+.IP \fInum_children\fP 1i
+Specifies the number of children in the list.
+.LP
+.eM
+The
+.PN XtManageChildren
+function performs the following:
+.IP \(bu 5
+Issues an error if the children do not all have the same parent or
+if the parent's class is not a subclass of
+.PN compositeWidgetClass .
+.IP \(bu 5
+Returns immediately if the common parent is being destroyed;
+otherwise, for each unique child on the list,
+.PN XtManageChildren
+ignores the child if it already is managed or is being destroyed,
+and marks it if not.
+.IP \(bu 5
+If the parent is realized and after all children have been marked,
+it makes some of the newly managed children viewable:
+.RS
+.IP \- 5
+Calls the change_managed routine of the widgets' parent.
+.IP \- 5
+Calls
+.PN XtRealizeWidget
+on each previously unmanaged child that is unrealized.
+.IP \- 5
+Maps each previously unmanaged child that has \fImap_when_managed\fP
+.PN True .
+.RE
+.LP
+Managing children is independent of the ordering of children and
+independent of creating and deleting children.
+The layout routine of the parent
+should consider children whose \fImanaged\fP field is
+.PN True
+and should ignore all other children.
+Note that some composite widgets, especially fixed boxes, call
+.PN XtManageChild
+from their insert_child procedure.
+.LP
+If the parent widget is realized,
+its change_managed procedure is called to notify it
+that its set of managed children has changed.
+The parent can reposition and resize any of its children.
+It moves each child as needed by calling
+.PN XtMoveWidget ,
+which first updates the \fIx\fP and \fIy\fP fields and which then calls
+.PN XMoveWindow .
+.LP
+If the composite widget wishes to change the size or border width of any of
+its children, it calls
+.PN XtResizeWidget ,
+which first updates the
+\fIwidth\fP, \fIheight\fP, and \fIborder_width\fP
+fields and then calls
+.PN XConfigureWindow .
+Simultaneous repositioning and resizing may be done with
+.PN XtConfigureWidget ;
+see Section 6.6.
+.sp
+.LP
+To add a single child to its parent widget's set of managed children, use
+.PN XtManageChild .
+.LP
+.IN "XtManageChild" "" "@DEF@"
+.sM
+.FD 0
+void XtManageChild(\fIchild\fP)
+.br
+ Widget \fIchild\fP;
+.FN
+.IP \fIchild\fP 1i
+Specifies the child. \*(rI
+.LP
+.eM
+The
+.PN XtManageChild
+function constructs a
+.PN WidgetList
+of length 1 and calls
+.PN XtManageChildren .
+.sp
+.LP
+To create and manage a child widget in a single procedure, use
+.PN XtCreateManagedWidget
+or
+.PN XtVaCreateManagedWidget .
+.LP
+.IN "XtCreateManagedWidget" "" "@DEF@"
+.sM
+.FD 0
+Widget XtCreateManagedWidget(\fIname\fP, \fIwidget_class\fP, \fIparent\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Widget \fIparent\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the resource instance name for the created widget.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class pointer for the created widget. \*(rC
+.IP \fIparent\fP 1i
+Specifies the parent widget. Must be of class Composite or any
+subclass thereof.
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtCreateManagedWidget
+function is a convenience routine that calls
+.PN XtCreateWidget
+and
+.PN XtManageChild .
+.sp
+.LP
+.IN "XtVaCreateManagedWidget" "" "@DEF@"
+.sM
+.FD 0
+Widget XtVaCreateManagedWidget(\fIname\fP, \fIwidget_class\fP, \fIparent\fP, ...)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Widget \fIparent\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the resource instance name for the created widget.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class pointer for the created widget. \*(rC
+.IP \fIparent\fP 1i
+Specifies the parent widget. Must be of class Composite or any
+subclass thereof.
+.IP ... 1i
+Specifies the variable argument list to override any other
+resource specifications.
+.LP
+.eM
+.PN XtVaCreateManagedWidget
+is identical in function to
+.PN XtCreateManagedWidget
+with the \fIargs\fP and \fInum_args\fP parameters replaced
+by a varargs list, as described in Section 2.5.1.
+
+.NH 3
+Unmanaging Children
+.XS
+\fB\*(SN Unmanaging Children\fP
+.XE
+.LP
+To remove a list of children from a parent widget's managed list, use
+.PN XtUnmanageChildren .
+.LP
+.IN "XtUnmanageChildren" "" "@DEF@"
+.sM
+.FD 0
+void XtUnmanageChildren(\fIchildren\fP, \fInum_children\fP)
+.br
+ WidgetList \fIchildren\fP;
+.br
+ Cardinal \fInum_children\fP;
+.FN
+.IP \fIchildren\fP 1i
+Specifies a list of child widgets. Each child must be of class
+RectObj or any subclass thereof.
+.IP \fInum_children\fP 1i
+Specifies the number of children.
+.LP
+.eM
+The
+.PN XtUnmanageChildren
+function performs the following:
+.IP \(bu 5
+Returns immediately if the common parent is being destroyed.
+.IP \(bu 5
+Issues an error if the children do not all have the same parent
+or if the parent is not a subclass of
+.PN compositeWidgetClass .
+.IP \(bu 5
+For each unique child on the list,
+.PN XtUnmanageChildren
+ignores the child if it is unmanaged; otherwise it performs the following:
+.RS
+.IP \- 5
+Marks the child as unmanaged.
+.IP \- 5
+If the child is realized and the \fImap_when_managed\fP field is
+.PN True ,
+it is unmapped.
+.RE
+.IP \(bu 5
+If the parent is realized and if any children have become unmanaged,
+calls the change_managed routine of the widgets' parent.
+.LP
+.PN XtUnmanageChildren
+does not destroy the child widgets.
+Removing widgets from a parent's managed set is often a temporary banishment,
+and some time later the client may manage the children again.
+To destroy widgets entirely,
+.PN XtDestroyWidget
+should be called instead;
+see Section 2.9.
+.sp
+.LP
+To remove a single child from its parent widget's managed set, use
+.PN XtUnmanageChild .
+.LP
+.IN "XtUnmanageChild" "" "@DEF@"
+.sM
+.FD 0
+void XtUnmanageChild(\fIchild\fP)
+.br
+ Widget \fIchild\fP;
+.FN
+.IP \fIchild\fP 1i
+Specifies the child. \*(rI
+.LP
+.eM
+The
+.PN XtUnmanageChild
+function constructs a widget list
+of length 1 and calls
+.PN XtUnmanageChildren .
+.LP
+These functions are low-level routines that are used by generic
+composite widget building routines.
+In addition, composite widgets can provide widget-specific,
+high-level convenience procedures.
+
+.NH 3
+Bundling Changes to the Managed Set
+.XS
+\fB\*(SN Bundling Changes to the Managed Set\fP
+.XE
+.LP
+A client may simultaneously unmanage and manage children
+with a single call to the \*(xI. In this same call the
+client may provide a callback procedure that can modify the
+geometries of one or more children. The composite widget class
+defines whether this single client call results in separate invocations
+of the change_managed method, one to unmanage and the other to
+manage, or in just a single invocation.
+.\" .LP
+.\" The composite widget class specifies how its change_managed method
+.\" should be invoked by declaring a
+.\" .PN CompositeClassExtension
+.\" structure as described in section 1.4.2.1. If the
+.\" \fIallows_change_managed_set\fP field in the
+.\" .PN CompositeClassExtension
+.\" record is
+.\" .PN False ,
+.\" the change_managed method will be invoked twice; once before any
+.\" geometry changes are requested by the client callback and once
+.\" after. If the \fIallows_change_managed_set\fP field is
+.\" .PN True ,
+.\" the change_managed method will be invoked just once after the
+.\" specified children have been marked as unmanaged or managed and
+.\" the client's callback has been invoked.
+.\" If no
+.\" .PN CompositeClassExtension
+.\" record is found in the extension field of the
+.\" composite class part with record type
+.\" .PN \s-1NULLQUARK\s+1
+.\" and version greater
+.\" than 1 and if
+.\" .PN XtInheritChangeManaged
+.\" was specified in the class record during class initialization, the
+.\" value of the \fIallows_change_managed_set\fP
+.\" field will be inherited from the superclass.
+.LP
+To simultaneously remove from and add to the geometry-managed
+set of children of a composite parent, use
+.PN XtChangeManagedSet .
+.LP
+.IN "XtChangeManagedSet" "" "@DEF@"
+.sM
+.FD 0
+void XtChangeManagedSet(\fIunmanage_children\fP, \fInum_unmanage_children\fP,
+ \fIdo_change_proc\fP, \fIclient_data\fP,
+ \fImanage_children\fP, \fInum_manage_children\fP)
+.br
+ WidgetList \fIunmanage_children\fP;
+.br
+ Cardinal \fInum_unmanage_children\fP;
+.br
+ XtDoChangeProc \fIdo_change_proc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ WidgetList \fImanage_children\fP;
+.br
+ Cardinal \fInum_manage_children\fP;
+.FN
+.IP \fIunmanage_children\fP 1.8i
+Specifies the list of widget children to initially remove from the managed set.
+.IP \fInum_unmanage_children\fP 1.8i
+Specifies the number of entries in the \fIunmanage_children\fP list.
+.IP \fIdo_change_proc\fP 1.8i
+Specifies a procedure to invoke between unmanaging
+and managing the children, or NULL.
+.IP \fIclient_data\fP 1.8i
+Specifies client data to be passed to the do_change_proc.
+.IP \fImanage_children\fP 1.8i
+Specifies the list of widget children to finally add to the managed set.
+.IP \fInum_manage_children\fP 1.8i
+Specifies the number of entries in the \fImanage_children\fP list.
+.LP
+.eM
+The
+.PN XtChangeManagedSet
+function performs the following:
+.IP \(bu 5
+Returns immediately if \fInum_unmanage_children\fP and
+\fInum_manage_children\fP are both 0.
+.IP \(bu 5
+Issues a warning and returns if the widgets specified in the
+\fImanage_children\fP and
+the \fIunmanage_children\fP lists do not all have the same parent or if
+that parent is not a subclass of
+.PN compositeWidgetClass .
+.IP \(bu 5
+Returns immediately if the common parent is being destroyed.
+.IP \(bu 5
+If \fIdo_change_proc\fP is not NULL and the parent's
+.PN CompositeClassExtension
+\fIallows_change_managed_set\fP field is
+.PN False ,
+then
+.PN XtChangeManagedSet
+performs the following:
+.RS
+.IP \- 5
+Calls
+.PN XtUnmanageChildren
+(\fIunmanage_children\fP, \fInum_unmanage_children\fP).
+.IP \- 5
+Calls the \fIdo_change_proc\fP.
+.IP \- 5
+Calls
+.PN XtManageChildren
+(\fImanage_children\fP, \fInum_manage_children\fP).
+.RE
+.IP \(bu 5
+Otherwise, the following is performed:
+.RS
+.IP \- 5
+For each child on the \fIunmanage_children\fP list; if the child is
+already unmanaged it is ignored, otherwise it is marked as unmanaged,
+and if it is realized and its \fImap_when_managed\fP field is
+.PN True ,
+it is unmapped.
+.IP \- 5
+If \fIdo_change_proc\fP is non-NULL, the procedure is invoked.
+.IP \- 5
+For each child on the \fImanage_children\fP list; if the child is already
+managed or is being destroyed, it is ignored; otherwise it is
+marked as managed.
+.IP \- 5
+If the parent is realized and after all children have been marked,
+the change_managed method of the parent is invoked, and subsequently
+some of the newly managed children are made viewable by calling
+.PN XtRealizeWidget
+on each previously unmanaged child that is unrealized and
+mapping each previously unmanaged child that has \fImap_when_managed\fP
+.PN True .
+.RE
+.LP
+If no
+.PN CompositeClassExtension
+record is found in the parent's composite class part \fIextension\fP field
+with record type
+.PN \s-1NULLQUARK\s+1
+and version greater than 1, and if
+.PN XtInheritChangeManaged
+was specified in the parent's class record during class initialization,
+the value of the \fIallows_change_managed_set\fP
+field is inherited from the superclass. The value inherited from
+.PN compositeWidgetClass
+for the \fIallows_change_managed_set\fP field is
+.PN False .
+.LP
+It is not an error to include a child in both the \fIunmanage_children\fP
+and the \fImanage_children\fP lists. The effect of such a call is that
+the child remains managed following the call, but the \fIdo_change_proc\fP is
+able to affect the child while it is in an unmanaged state.
+.sp
+.LP
+The \fIdo_change_proc\fP is of type
+.PN XtDoChangeProc .
+.LP
+.IN "XtDoChangeProc" "" "@DEF"
+.sM
+.FD 0
+typedef void (*XtDoChangeProc)(Widget, WidgetList, Cardinal*, WidgetList, Cardinal*, XtPointer);
+.br
+ Widget \fIcomposite_parent\fP;
+.br
+ WidgetList \fIunmange_children\fP;
+.br
+ Cardinal *\fInum_unmanage_children\fP;
+.br
+ WidgetList \fImanage_children\fP;
+.br
+ Cardinal *\fInum_manage_children\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIcomposite_parent\fP 1.8i
+Passes the composite parent whose managed set is being altered.
+.IP \fIunmanage_children\fP 1.8i
+Passes the list of children just removed from the managed set.
+.IP \fInum_unmanage_children\fP 1.8i
+Passes the number of entries in the \fIunmanage_children\fP list.
+.IP \fImanage_children\fP 1.8i
+Passes the list of children about to be added to the managed set.
+.IP \fInum_manage_children\fP 1.8i
+Passes the number of entries in the \fImanage_children\fP list.
+.IP \fIclient_data\fP 1.8i
+Passes the client data passed to
+.PN XtChangeManagedSet .
+.LP
+.eM
+The \fIdo_change_proc\fP procedure is used by the caller of
+.PN XtChangeManagedSet
+to make changes to one or more children at the point when the
+managed set contains the fewest entries. These changes may
+involve geometry requests, and in this case the caller of
+.PN XtChangeManagedSet
+may take advantage of the fact that the \*(xI internally grant
+geometry requests made by unmanaged children without invoking
+the parent's geometry manager. To achieve this advantage, if
+the \fIdo_change_proc\fP procedure
+changes the geometry of a child or of a descendant of a child, then
+that child should be included in the \fIunmanage_children\fP and
+\fImanage_children\fP lists.
+
+.NH 3
+Determining if a Widget Is Managed
+.XS
+\fB\*(SN Determining if a Widget Is Managed\fP
+.XE
+.LP
+To determine the managed state of a given child widget, use
+.PN XtIsManaged .
+.LP
+.IN "XtIsManaged" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtIsManaged(\fIw\fP)
+.br
+ Widget \fIw\fP\^;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.LP
+.eM
+The
+.PN XtIsManaged
+function returns
+.PN True
+if the specified widget is of class RectObj or any subclass thereof
+and is managed, or
+.PN False
+otherwise.
+
+.NH 2
+Controlling When Widgets Get Mapped
+.XS
+\fB\*(SN Controlling When Widgets Get Mapped\fP
+.XE
+.LP
+A widget is normally mapped if it is managed.
+However,
+this behavior can be overridden by setting the XtNmappedWhenManaged resource
+for the widget when it is created
+or by setting the \fImap_when_managed\fP field to
+.PN False .
+.sp
+.LP
+To change the value of a given widget's \fImap_when_managed\fP field, use
+.PN XtSetMappedWhenManaged .
+.LP
+.IN "XtSetMappedWhenManaged" "" "@DEF@"
+.sM
+.FD 0
+void XtSetMappedWhenManaged(\fIw\fP, \fImap_when_managed\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fImap_when_managed\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.IP \fImap_when_managed\fP 1i
+Specifies a Boolean value that indicates the new value
+that is stored into the widget's \fImap_when_managed\fP
+field.
+.LP
+.eM
+If the widget is realized and managed,
+and if \fImap_when_managed\fP is
+.PN True ,
+.PN XtSetMappedWhenManaged
+maps the window.
+If the widget is realized and managed,
+and if \fImap_when_managed\fP is
+.PN False ,
+it unmaps the window.
+.PN XtSetMappedWhenManaged
+is a convenience function that is equivalent to (but slightly faster than)
+calling
+.PN XtSetValues
+and setting the new value for the XtNmappedWhenManaged resource
+then mapping the widget as appropriate.
+As an alternative to using
+.PN XtSetMappedWhenManaged
+to control mapping,
+a client may set \fImapped_when_managed\fP to
+.PN False
+and use
+.PN XtMapWidget
+and
+.PN XtUnmapWidget
+explicitly.
+.sp
+.LP
+To map a widget explicitly, use
+.PN XtMapWidget .
+.LP
+.IN "XtMapWidget" "" "@DEF@"
+.sM
+.FD 0
+XtMapWidget(\fIw\fP)
+.br
+ Widget \fIw\fP\^;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+To unmap a widget explicitly, use
+.PN XtUnmapWidget .
+.LP
+.IN "XtUnmapWidget" "" "@DEF@"
+.sM
+.FD 0
+XtUnmapWidget(\fIw\fP)
+.br
+ Widget \fIw\fP\^;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+
+.NH 2
+Constrained Composite Widgets
+.XS
+\*(SN Constrained Composite Widgets
+.XE
+.LP
+The Constraint
+widget class is a subclass of
+.PN compositeWidgetClass .
+The name is derived from the fact that constraint widgets
+may manage the geometry
+of their children based on constraints associated with each child.
+These constraints can be as simple as the maximum width and height
+the parent will allow the child to occupy or can be as complicated as
+how other children should change if this child is moved or resized.
+Constraint
+widgets let a parent define constraints as resources that are supplied for their children.
+For example, if the
+Constraint
+parent defines the maximum sizes for its children,
+these new size resources are retrieved for each child as if they were
+resources that were defined by the child widget's class.
+Accordingly,
+constraint resources may be included in the argument list or resource file just
+like any other resource for the child.
+.LP
+Constraint
+widgets have all the responsibilities of normal composite widgets
+and, in addition, must process and act upon the constraint information
+associated with each of their children.
+.LP
+To make it easy for widgets and the \*(xI to keep track of the
+constraints associated with a child,
+every widget has a \fIconstraints\fP field,
+which is the address of a parent-specific structure that contains
+constraint information about the child.
+If a child's parent does not belong to a subclass of
+.PN constraintWidgetClass ,
+then the child's \fIconstraints\fP field is NULL.
+.LP
+Subclasses of
+Constraint
+can add constraint data to the constraint record defined by their superclass.
+To allow this, widget writers should define the constraint
+records in their private .h file by using the same conventions as used for
+widget records.
+For example, a widget class that needs to maintain a maximum
+width and height for each child might define its constraint record as
+follows:
+.LP
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ Dimension max_width, max_height;
+} MaxConstraintPart;
+
+typedef struct {
+ MaxConstraintPart max;
+} MaxConstraintRecord, *MaxConstraint;
+.De
+.LP
+A subclass of this widget class that also needs to maintain a minimum size would
+define its constraint record as follows:
+.LP
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ Dimension min_width, min_height;
+} MinConstraintPart;
+
+typedef struct {
+ MaxConstraintPart max;
+ MinConstraintPart min;
+} MaxMinConstraintRecord, *MaxMinConstraint;
+.De
+.LP
+Constraints are allocated, initialized, deallocated, and otherwise maintained
+insofar as possible by the \*(xI.
+The Constraint class record part has several entries that facilitate this.
+All entries in
+.PN ConstraintClassPart
+are fields and procedures that are defined and implemented by the parent,
+but they are called whenever actions are performed on the parent's children.
+.LP
+The
+.PN XtCreateWidget
+function uses the \fIconstraint_size\fP field in the parent's class record
+to allocate a constraint record when a child is created.
+.PN XtCreateWidget
+also uses the constraint resources to fill in resource fields in the
+constraint record associated with a child.
+It then calls the constraint initialize procedure so that the parent
+can compute constraint fields that are derived from constraint resources
+and can possibly move or resize the child to conform to the given constraints.
+.LP
+When the
+.PN XtGetValues
+and
+.PN XtSetValues
+functions are executed
+on a child, they use the constraint resources to get the values or
+set the values of constraints associated with that child.
+.PN XtSetValues
+then calls the constraint set_values procedures so that the parent can
+recompute derived constraint fields and move or resize the child
+as appropriate.
+If a
+Constraint
+widget class or any of its superclasses have declared a
+.PN ConstraintClassExtension
+record in the
+.PN ConstraintClassPart
+\fIextension\fP
+fields with a record type of
+.PN \s-1NULLQUARK\s+1
+and the \fIget_values_hook\fP field in
+.IN "get_values_hook procedure"
+.IN "Constraint" "get_values_hook"
+the extension record is non-NULL,
+.PN XtGetValues
+calls the get_values_hook
+procedure(s) to allow the parent to return derived constraint fields.
+.LP
+The
+.PN XtDestroyWidget
+function calls the constraint destroy procedure to deallocate any
+dynamic storage associated with a constraint record.
+The constraint record itself must not be deallocated by the constraint
+destroy procedure;
+.PN XtDestroyWidget
+does this automatically.
+.bp
diff --git a/specs/Xt/CH04 b/specs/Xt/CH04
new file mode 100644
index 0000000..0291aa3
--- /dev/null
+++ b/specs/Xt/CH04
@@ -0,0 +1,1998 @@
+.\" $Xorg: CH04,v 1.3 2000/08/17 19:42:44 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 4\fP\s-1
+
+\s+1\fBShell Widgets\fP\s-1
+.sp 2
+.nr H1 4
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 4 \(em Shell Widgets
+.XE
+.IN "Shell" "" "@DEF@"
+.LP
+Shell widgets hold an application's top-level widgets to allow them to
+communicate with the window manager and session manager.
+Shells have been designed to be as nearly invisible as possible.
+Clients have to create them,
+but they should never have to worry about their sizes.
+.LP
+If a shell widget is resized from the outside (typically by a window manager),
+the shell widget also resizes its managed child widget automatically.
+Similarly, if the shell's child widget needs to change size,
+it can make a geometry request to the shell,
+and the shell negotiates the size change with the outer environment.
+Clients should never attempt to change the size of their shells directly.
+.LP
+The five types of public shells are:
+.TS
+lw(1.5i) lw(4.25i).
+T{
+.PN OverrideShell
+T} T{
+Used for shell windows that completely bypass the window manager
+(for example, pop-up menu shells).
+T}
+.sp
+T{
+.PN TransientShell
+T} T{
+Used for shell windows that have the
+.PN \s-1WM_TRANSIENT_FOR\s+1
+property set. The effect of this property is dependent upon the
+window manager being used.
+T}
+.sp
+T{
+.PN TopLevelShell
+T} T{
+Used for normal top-level windows
+(for example, any additional top-level widgets an application needs).
+T}
+.sp
+T{
+.PN ApplicationShell
+T} T{
+Formerly used for the single main top-level window that
+the window manager identifies as an application instance and
+made obsolete by SessionShell.
+T}
+.IN "ApplicationShell" "" "@DEF@"
+.sp
+T{
+.PN SessionShell
+T} T{
+Used for the single main top-level window that
+the window manager identifies as an application instance and
+that interacts with the session manager.
+T}
+.IN "SessionShell" "" "@DEF@"
+.TE
+
+.NH 2
+Shell Widget Definitions
+.XS
+\*(SN Shell Widget Definitions
+.XE
+.LP
+Widgets negotiate their size and position with their parent widget,
+that is, the widget that directly contains them.
+Widgets at the top of the hierarchy do not have parent widgets.
+Instead, they must deal with the outside world.
+To provide for this,
+each top-level widget is encapsulated in a special widget, called a
+shell widget.
+.LP
+Shell
+widgets, whose class is a subclass of the
+Composite class,
+encapsulate other widgets and can allow a widget to avoid the
+geometry clipping imposed by the parent-child window relationship.
+They also can provide a layer of communication with the window manager.
+.LP
+The eight different types of shells are:
+.TS
+lw(1.5i) lw(4.5i).
+T{
+.PN Shell
+T} T{
+The base class for shell widgets; provides the
+fields needed for all types of shells.
+Shell
+is a direct subclass of
+.PN compositeWidgetClass .
+T}
+.sp 6p
+T{
+.PN OverrideShell
+T} T{
+A subclass of Shell; used for shell windows that completely
+bypass the window manager.
+T}
+.sp 6p
+T{
+.PN WMShell
+T} T{
+A subclass of Shell; contains fields needed by the
+common window manager protocol.
+T}
+.sp 6p
+T{
+.PN VendorShell
+T} T{
+A subclass of WMShell; contains fields used by
+vendor-specific window managers.
+T}
+.sp 6p
+T{
+.PN TransientShell
+T} T{
+A subclass of VendorShell; used for shell windows that
+desire the
+.PN \s-1WM_TRANSIENT_FOR\s+1
+property.
+T}
+.sp 6p
+T{
+.PN TopLevelShell
+T} T{
+A subclass of VendorShell; used for normal top-level windows.
+T}
+.sp 6p
+T{
+.PN ApplicationShell
+T} T{
+A subclass of TopLevelShell; may be used for an application's additional
+root windows.
+T}
+.sp 6p
+T{
+.PN SessionShell
+T} T{
+A subclass of ApplicationShell; used for an application's
+main root window.
+T}
+.TE
+.LP
+Note that the classes
+Shell,
+WMShell,
+and
+VendorShell
+are internal and should not be instantiated or subclassed.
+Only
+OverrrideShell,
+TransientShell,
+TopLevelShell,
+ApplicationShell,
+and
+SessionShell
+are intended for public use.
+
+.NH 3
+ShellClassPart Definitions
+.XS
+\*(SN ShellClassPart Definitions
+.XE
+.LP
+Only the
+Shell
+class has additional class fields, which are all contained in the
+.PN ShellClassExtensionRec .
+None of the other Shell classes have any additional class fields:
+.LP
+.KS
+.sM
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ XtPointer extension;
+} ShellClassPart, OverrideShellClassPart,
+WMShellClassPart, VendorShellClassPart, TransientShellClassPart,
+TopLevelShellClassPart, ApplicationShellClassPart, SessionShellClassPart;
+.De
+.LP
+.eM
+.KE
+The full Shell class record definitions are:
+.IN "ShellClassExtension" "" "@DEF@"
+.IN "ShellClassExtensionRec" "" "@DEF@"
+.LP
+.KS
+.sM
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _ShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+} ShellClassRec;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ XtPointer next_extension; See Section 1.6.12
+ XrmQuark record_type; See Section 1.6.12
+ long version; See Section 1.6.12
+ Cardinal record_size; See Section 1.6.12
+ XtGeometryHandler root_geometry_manager; See below
+} ShellClassExtensionRec, *ShellClassExtension;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _OverrideShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+ OverrideShellClassPart override_shell_class;
+} OverrideShellClassRec;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _WMShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+ WMShellClassPart wm_shell_class;
+} WMShellClassRec;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _VendorShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+ WMShellClassPart wm_shell_class;
+ VendorShellClassPart vendor_shell_class;
+} VendorShellClassRec;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _TransientShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+ WMShellClassPart wm_shell_class;
+ VendorShellClassPart vendor_shell_class;
+ TransientShellClassPart transient_shell_class;
+} TransientShellClassRec;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _TopLevelShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+ WMShellClassPart wm_shell_class;
+ VendorShellClassPart vendor_shell_class;
+ TopLevelShellClassPart top_level_shell_class;
+} TopLevelShellClassRec;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _ApplicationShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+ WMShellClassPart wm_shell_class;
+ VendorShellClassPart vendor_shell_class;
+ TopLevelShellClassPart top_level_shell_class;
+ ApplicationShellClassPart application_shell_class;
+} ApplicationShellClassRec;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct _SessionShellClassRec {
+ CoreClassPart core_class;
+ CompositeClassPart composite_class;
+ ShellClassPart shell_class;
+ WMShellClassPart wm_shell_class;
+ VendorShellClassPart vendor_shell_class;
+ TopLevelShellClassPart top_level_shell_class;
+ ApplicationShellClassPart application_shell_class;
+ SessionShellClassPart session_shell_class;
+} SessionShellClassRec;
+.De
+.LP
+.eM
+.KE
+.KS
+The single occurrences of the class records and pointers for creating
+instances of shells are:
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+extern ShellClassRec shellClassRec;
+extern OverrideShellClassRec overrideShellClassRec;
+extern WMShellClassRec wmShellClassRec;
+extern VendorShellClassRec vendorShellClassRec;
+extern TransientShellClassRec transientShellClassRec;
+extern TopLevelShellClassRec topLevelShellClassRec;
+extern ApplicationShellClassRec applicationShellClassRec;
+extern SessionShellClassRec sessionShellClassRec;
+.sp
+extern WidgetClass shellWidgetClass;
+extern WidgetClass overrideShellWidgetClass;
+extern WidgetClass wmShellWidgetClass;
+extern WidgetClass vendorShellWidgetClass;
+extern WidgetClass transientShellWidgetClass;
+extern WidgetClass topLevelShellWidgetClass;
+extern WidgetClass applicationShellWidgetClass;
+extern WidgetClass sessionShellWidgetClass;
+.De
+.LP
+.eM
+.KE
+.KS
+The following opaque types and opaque variables are defined
+for generic operations on widgets whose class is a subclass of
+Shell.
+.TS
+lw(2.75i) lw(2.75i).
+_
+.sp 6p
+Types Variables
+.sp 6p
+_
+.sp 6p
+T{
+.PN ShellWidget
+T} T{
+.PN shellWidgetClass
+T}
+T{
+.PN OverrideShellWidget
+T} T{
+.PN overrideShellWidgetClass
+T}
+T{
+.PN WMShellWidget
+T} T{
+.PN wmShellWidgetClass
+T}
+T{
+.PN VendorShellWidget
+T} T{
+.PN vendorShellWidgetClass
+T}
+T{
+.PN TransientShellWidget
+T} T{
+.PN transientShellWidgetClass
+T}
+T{
+.PN TopLevelShellWidget
+T} T{
+.PN topLevelShellWidgetClass
+T}
+T{
+.PN ApplicationShellWidget
+T} T{
+.PN applicationShellWidgetClass
+T}
+T{
+.PN SessionShellWidget
+T} T{
+.PN sessionShellWidgetClass
+T}
+.PN ShellWidgetClass
+.PN OverrideShellWidgetClass
+.PN WMShellWidgetClass
+.PN VendorShellWidgetClass
+.PN TransientShellWidgetClass
+.PN TopLevelShellWidgetClass
+.PN ApplicationShellWidgetClass
+.PN SessionShellWidgetClass
+.sp 6p
+_
+.TE
+.KE
+.LP
+The declarations for all Intrinsics-defined shells except
+VendorShell appear in
+.PN Shell.h
+and
+.PN ShellP.h .
+VendorShell has separate public and private .h files which are included by
+.PN Shell.h
+and
+.PN ShellP.h .
+.LP
+.PN Shell.h
+uses incomplete structure definitions to ensure that the
+compiler catches attempts to access private data in any of the Shell
+instance or class data structures.
+.LP
+The symbolic constant for the
+.PN ShellClassExtension
+version identifier is
+.PN XtShellExtensionVersion
+(see Section 1.6.12).
+.IN "XtShellExtensionVersion" "" "@DEF@"
+.LP
+.IN "Shell" "root_geometry_manager"
+.IN "root_geometry_manager procedure"
+The root_geometry_manager procedure acts as
+the parent geometry manager for geometry requests made by shell
+widgets. When a shell widget calls either
+.PN XtMakeGeometryRequest
+or
+.PN XtMakeResizeRequest ,
+the root_geometry_manager procedure is invoked to
+negotiate the new geometry with the window manager. If the window
+manager permits the new geometry, the root_geometry_manager
+procedure should
+return
+.PN XtGeometryYes ;
+if the window manager denies the geometry
+request or does not change the window geometry within some timeout
+interval (equal to \fIwm_timeout\fP in the case of WMShells), the
+.IN "Shell" "wm_timeout" "@DEF@"
+.IN "wm_timeout" "" "@DEF@"
+root_geometry_manager procedure should return
+.PN XtGeometryNo .
+If the window manager makes some alternative geometry change, the
+root_geometry_manager procedure may return either
+.PN XtGeometryNo
+and handle the new geometry as a resize or
+.PN XtGeometryAlmost
+in anticipation that the shell will accept the compromise. If the
+compromise is not accepted, the new size must then be handled as a
+resize. Subclasses of
+Shell
+that wish to provide their own
+root_geometry_manager procedures are strongly encouraged to use enveloping to
+invoke their superclass's root_geometry_manager procedure under most
+situations, as the window manager interaction may be very complex.
+.LP
+If no
+.PN ShellClassPart
+extension record is declared with \fIrecord_type\fP
+equal to
+.PN \s-1NULLQUARK\s+1 ,
+then
+.PN XtInheritRootGeometryManager
+is assumed.
+
+.NH 3
+ShellPart Definition
+.XS
+\*(SN ShellPart Definition
+.XE
+.LP
+The various shell widgets have the following additional instance
+fields defined in
+their widget records:
+.LP
+.IN "ShellPart" "" "@DEF@"
+.KS
+.sM
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ String geometry;
+ XtCreatePopupChildProc create_popup_child_proc;
+ XtGrabKind grab_kind;
+ Boolean spring_loaded;
+ Boolean popped_up;
+ Boolean allow_shell_resize;
+ Boolean client_specified;
+ Boolean save_under;
+ Boolean override_redirect;
+ XtCallbackList popup_callback;
+ XtCallbackList popdown_callback;
+ Visual * visual;
+} ShellPart;
+.De
+.KE
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ int empty;
+} OverrideShellPart;
+.De
+.Ds 0
+.TA .5i 1i 1.5i 2.5i
+.ta .5i 1i 1.5i 2.5i
+typedef struct {
+ String title;
+ int wm_timeout;
+ Boolean wait_for_wm;
+ Boolean transient;
+ Boolean urgency;
+ Widget client_leader;
+ String window_role;
+ struct _OldXSizeHints {
+ long flags;
+ int x, y;
+ int width, height;
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+ struct {
+ int x;
+ int y;
+ } min_aspect, max_aspect;
+ } size_hints;
+ XWMHints wm_hints;
+ int base_width, base_height, win_gravity;
+ Atom title_encoding;
+} WMShellPart;
+.De
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ int vendor_specific;
+} VendorShellPart;
+.De
+.KE
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ Widget transient_for;
+} TransientShellPart;
+
+typedef struct {
+ String icon_name;
+ Boolean iconic;
+ Atom icon_name_encoding;
+} TopLevelShellPart;
+.De
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ char * class;
+ XrmClass xrm_class;
+ int argc;
+ char ** argv;
+} ApplicationShellPart;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ SmcConn connection;
+ String session_id;
+ String * restart_command;
+ String * clone_command;
+ String * discard_command;
+ String * resign_command;
+ String * shutdown_command;
+ String * environment;
+ String current_dir;
+ String program_path;
+ unsigned char restart_style;
+ Boolean join_session;
+ XtCallbackList save_callbacks;
+ XtCallbackList interact_callbacks;
+ XtCallbackList cancel_callbacks;
+ XtCallbackList save_complete_callbacks;
+ XtCallbackList die_callbacks;
+ XtCallbackList error_callbacks;
+} SessionShellPart;
+.De
+.LP
+.eM
+.KE
+.KS
+The full shell widget instance record definitions are:
+.LP
+.IN "ShellWidget" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+} ShellRec, *ShellWidget;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+ OverrideShellPart override;
+} OverrideShellRec, *OverrideShellWidget;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+ WMShellPart wm;
+} WMShellRec, *WMShellWidget;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+ WMShellPart wm;
+ VendorShellPart vendor;
+} VendorShellRec, *VendorShellWidget;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+ WMShellPart wm;
+ VendorShellPart vendor;
+ TransientShellPart transient;
+} TransientShellRec, *TransientShellWidget;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+ WMShellPart wm;
+ VendorShellPart vendor;
+ TopLevelShellPart topLevel;
+} TopLevelShellRec, *TopLevelShellWidget;
+.De
+.KE
+.KS
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+.IN "ApplicationShellWidget" "" "@DEF@"
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+ WMShellPart wm;
+ VendorShellPart vendor;
+ TopLevelShellPart topLevel;
+ ApplicationShellPart application;
+} ApplicationShellRec, *ApplicationShellWidget;
+.De
+.KE
+.KS
+.IN "SessionShellWidget" "" "@DEF@"
+.Ds 0
+.TA .5i 2.5i 4.5i
+.ta .5i 2.5i 4.5i
+typedef struct {
+ CorePart core;
+ CompositePart composite;
+ ShellPart shell;
+ WMShellPart wm;
+ VendorShellPart vendor;
+ TopLevelShellPart topLevel;
+ ApplicationShellPart application;
+ SessionShellPart session;
+} SessionShellRec, *SessionShellWidget;
+.De
+.LP
+.eM
+.KE
+
+.NH 3
+Shell Resources
+.XS
+\fB\*(SN Shell Resources\fP
+.XE
+.LP
+.IN "ShellWidget" "Resources"
+The resource names, classes, and representation types specified in
+the
+.PN shellClassRec
+resource list are:
+.LP
+.TS
+lw(1.7i) lw(1.7i) lw(1.2i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNallowShellResize XtCAllowShellResize XtRBoolean
+XtNcreatePopupChildProc XtCCreatePopupChildProc XtRFunction
+XtNgeometry XtCGeometry XtRString
+XtNoverrideRedirect XtCOverrideRedirect XtRBoolean
+XtNpopdownCallback XtCCallback XtRCallback
+XtNpopupCallback XtCCallback XtRCallback
+XtNsaveUnder XtCSaveUnder XtRBoolean
+XtNvisual XtCVisual XtRVisual
+.sp 6p
+_
+.TE
+.LP
+OverrideShell
+declares no additional resources beyond those defined by
+Shell.
+.LP
+The resource names, classes, and representation types specified in
+the
+.PN wmShellClassRec
+.IN "WMShell" "resources"
+resource list are:
+.LP
+.TS
+lw(2.1i) lw(2.1i) lw(1.2i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNbaseHeight XtCBaseHeight XtRInt
+XtNbaseWidth XtCBaseWidth XtRInt
+XtNclientLeader XtCClientLeader XtRWidget
+XtNheightInc XtCHeightInc XtRInt
+XtNiconMask XtCIconMask XtRBitmap
+XtNiconPixmap XtCIconPixmap XtRBitmap
+XtNiconWindow XtCIconWindow XtRWindow
+XtNiconX XtCIconX XtRInt
+XtNiconY XtCIconY XtRInt
+XtNinitialState XtCInitialState XtRInitialState
+XtNinput XtCInput XtRBool
+XtNmaxAspectX XtCMaxAspectX XtRInt
+XtNmaxAspectY XtCMaxAspectY XtRInt
+XtNmaxHeight XtCMaxHeight XtRInt
+XtNmaxWidth XtCMaxWidth XtRInt
+XtNminAspectX XtCMinAspectX XtRInt
+XtNminAspectY XtCMinAspectY XtRInt
+XtNminHeight XtCMinHeight XtRInt
+XtNminWidth XtCMinWidth XtRInt
+XtNtitle XtCTitle XtRString
+XtNtitleEncoding XtCTitleEncoding XtRAtom
+XtNtransient XtCTransient XtRBoolean
+XtNwaitforwm, XtNwaitForWm XtCWaitforwm, XtCWaitForWm XtRBoolean
+XtNwidthInc XtCWidthInc XtRInt
+XtNwindowRole XtCWindowRole XtRString
+XtNwinGravity XtCWinGravity XtRGravity
+XtNwindowGroup XtCWindowGroup XtRWindow
+XtNwmTimeout XtCWmTimeout XtRInt
+XtNurgency XtCUrgency XtRBoolean
+.sp 6p
+_
+.TE
+.LP
+The class resource list for
+VendorShell
+is implementation-defined.
+.LP
+The resource names, classes, and representation types that are specified in the
+.PN transient\%ShellClassRec
+.IN "TransientShell" "resources"
+resource list are:
+.LP
+.TS
+lw(1.7i) lw(1.7i) lw(1.2i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNtransientFor XtCTransientFor XtRWidget
+.sp 6p
+_
+.TE
+.LP
+The resource names, classes, and representation types that are specified in the
+.PN topLevelShellClassRec
+.IN "TopLevelShell" "resources"
+resource list are:
+.LP
+.TS
+lw(1.7i) lw(1.7i) lw(1.2i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNiconName XtCIconName XtRString
+XtNiconNameEncoding XtCIconNameEncoding XtRAtom
+XtNiconic XtCIconic XtRBoolean
+.sp 6p
+_
+.TE
+.LP
+The resource names, classes, and representation types that are specified in the
+.PN application\%ShellClassRec
+resource list are:
+.LP
+.TS
+lw(1.7i) lw(1.7i) lw(1.2i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNargc XtCArgc XtRInt
+XtNargv XtCArgv XtRStringArray
+.sp 6p
+_
+.TE
+.LP
+.KS
+The resource names, classes, and representation types that are specified
+in the
+.PN sessionShellClassRec
+resource list are:
+.LP
+.TS
+lw(1.7i) lw(1.7i) lw(1.2i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+XtNcancelCallback XtCCallback XtRCallback
+XtNcloneCommand XtCCloneCommand XtRCommandArgArray
+XtNconnection XtCConnection XtRSmcConn
+XtNcurrentDirectory XtCCurrentDirectory XtRDirectoryString
+XtNdieCallback XtCCallback XtRCallback
+XtNdiscardCommand XtCDiscardCommand XtRCommandArgArray
+XtNenvironment XtCEnvironment XtREnvironmentArray
+XtNerrorCallback XtCCallback XtRCallback
+XtNinteractCallback XtCCallback XtRCallback
+XtNjoinSession XtCJoinSession XtRBoolean
+XtNprogramPath XtCProgramPath XtRString
+XtNresignCommand XtCResignCommand XtRCommandArgArray
+XtNrestartCommand XtCRestartCommand XtRCommandArgArray
+XtNrestartStyle XtCRestartStyle XtRRestartStyle
+XtNsaveCallback XtCCallback XtRCallback
+XtNsaveCompleteCallback XtCCallback XtRCallback
+XtNsessionID XtCSessionID XtRString
+XtNshutdownCommand XtCShutdownCommand XtRCommandArgArray
+.sp 6p
+_
+.TE
+.KE
+.NH 3
+ShellPart Default Values
+.XS
+\fB\*(SN ShellPart Default Values\fP
+.XE
+.LP
+The default values for fields common to all classes of public shells
+(filled in by the
+Shell
+resource lists and the
+Shell
+initialize procedures) are:
+.TS
+lw(1.75i) lw(3i).
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+geometry NULL
+create_popup_child_proc NULL
+grab_kind (none)
+spring_loaded (none)
+popped_up T{
+.PN False
+T}
+allow_shell_resize T{
+.PN False
+T}
+client_specified (internal)
+save_under T{
+.PN True
+for
+OverrideShell
+and
+TransientShell,
+.PN False
+otherwise
+T}
+override_redirect T{
+.PN True
+for
+OverrideShell,
+.PN False
+otherwise
+T}
+popup_callback NULL
+popdown_callback NULL
+visual T{
+.PN CopyFromParent
+T}
+.sp 6p
+_
+.TE
+.LP
+The \fIgeometry\fP field specifies the size and position
+and is usually given only on a command line or in a defaults file.
+If the \fIgeometry\fP field is non-NULL when
+a widget of class WMShell
+is realized, the geometry specification is parsed using
+.PN XWMGeometry
+with a default geometry
+string constructed from the values of \fIx\fP, \fIy\fP, \fIwidth\fP,
+\fIheight\fP, \fIwidth_inc\fP,
+and \fIheight_inc\fP and the size and position flags in the window manager
+size hints are set. If the geometry specifies an x or y position,
+then
+.PN USPosition
+is set. If the geometry specifies a width or height, then
+.PN USSize
+is set. Any fields in the geometry specification
+override the corresponding values in the
+Core \fIx\fP, \fIy\fP, \fIwidth\fP, and \fIheight\fP fields.
+If \fIgeometry\fP is NULL or contains only a partial specification, then the
+Core \fIx\fP, \fIy\fP, \fIwidth\fP, and \fIheight\fP fields are used and
+.PN PPosition
+and
+.PN PSize
+are set as appropriate.
+The geometry string is not copied by any of the \*(xI
+Shell classes; a client specifying the string in an arglist
+or varargs list must ensure
+that the value remains valid until the shell widget is realized.
+For further information on the geometry string, see Section 16.4
+in \fI\*(xL\fP.
+.LP
+The \fIcreate_popup_child_proc\fP procedure is called by the
+.PN XtPopup
+procedure and may remain NULL.
+The \fIgrab_kind\fP, \fIspring_loaded\fP,
+and \fIpopped_up\fP fields maintain widget
+state information as described under
+.PN XtPopup ,
+.PN XtMenuPopup ,
+.PN XtPopdown ,
+and
+.PN XtMenuPopdown .
+.IN "allowShellResize" "" "@DEF@"
+The \fIallow_shell_resize\fP field controls whether the widget contained
+by the shell is allowed to try to resize itself.
+If allow_shell_resize is
+.PN False ,
+any geometry requests made by the child will always return
+.PN XtGeometryNo
+without interacting with the window manager.
+Setting \fIsave_under\fP
+.PN True
+instructs the server to attempt
+to save the contents of windows obscured by the shell when it is mapped
+and to restore those contents automatically when the shell is unmapped.
+It is useful for pop-up menus.
+Setting \fIoverride_redirect\fP
+.PN True
+determines
+whether the window manager can intercede when the shell window
+is mapped.
+For further information on override_redirect,
+see Section 3.2 in \fI\*(xL\fP and Sections 4.1.10 and 4.2.2 in the
+\fI\*(xC\fP.
+The pop-up and pop-down callbacks are called during
+.PN XtPopup
+and
+.PN XtPopdown .
+The default value of the \fIvisual\fP resource is the symbolic value
+.PN CopyFromParent .
+The \*(xI do not need to query the parent's visual type when the
+default value is used; if a client using
+.PN XtGetValues
+to examine the visual type receives the value
+.PN CopyFromParent ,
+it must then use
+.PN XGetWindowAttributes
+if it needs the actual visual type.
+
+.LP
+The default values for Shell fields in
+WMShell
+and its subclasses are:
+.LP
+.IN "XtUnspecifiedShellInt" "" "@DEF@"
+.IN "XtUnspecifiedWindow"
+.TS
+lw(1i) lw(4i).
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+title T{
+Icon name, if specified, otherwise the application's name
+T}
+wm_timeout Five seconds, in units of milliseconds
+wait_for_wm T{
+.PN True
+T}
+transient T{
+.PN True
+for
+TransientShell,
+.PN False
+otherwise
+T}
+urgency T{
+.PN False
+T}
+client_leader NULL
+window_role NULL
+min_width \fBXtUnspecifiedShellInt\fP
+min_height \fBXtUnspecifiedShellInt\fP
+max_width \fBXtUnspecifiedShellInt\fP
+max_height \fBXtUnspecifiedShellInt\fP
+width_inc \fBXtUnspecifiedShellInt\fP
+height_inc \fBXtUnspecifiedShellInt\fP
+min_aspect_x \fBXtUnspecifiedShellInt\fP
+min_aspect_y \fBXtUnspecifiedShellInt\fP
+max_aspect_x \fBXtUnspecifiedShellInt\fP
+max_aspect_y \fBXtUnspecifiedShellInt\fP
+input T{
+.PN False
+T}
+initial_state Normal
+icon_pixmap None
+icon_window None
+icon_x \fBXtUnspecifiedShellInt\fP
+icon_y \fBXtUnspecifiedShellInt\fP
+icon_mask None
+window_group \fBXtUnspecifiedWindow\fP
+base_width \fBXtUnspecifiedShellInt\fP
+base_height \fBXtUnspecifiedShellInt\fP
+win_gravity \fBXtUnspecifiedShellInt\fP
+title_encoding See text
+.sp 6p
+_
+.TE
+.LP
+The \fItitle\fP and
+\fItitle_encoding\fP fields are stored in the
+.PN \s-1WM_NAME\s+1
+property on the shell's window by the WMShell realize procedure.
+If the \fItitle_encoding\fP field is
+.PN None ,
+the \fItitle\fP string is assumed to be in the encoding of the current
+locale and the encoding of the
+.PN \s-1WM_NAME\s+1
+property is set to
+.PN XStdICCTextStyle .
+If a language procedure has not been set
+the default value of \fItitle_encoding\fP is
+\fB\s-1XA_STRING\s+1\fP, otherwise the default value is
+.PN None .
+The \fIwm_timeout\fP field specifies, in milliseconds,
+the amount of time a shell is to wait for
+confirmation of a geometry request to the window manager.
+If none comes back within that time,
+the shell assumes the window manager is not functioning properly
+and sets \fIwait_for_wm\fP to
+.PN False
+(later events may reset this value).
+When \fIwait_for_wm\fP is
+.PN False ,
+the shell does not wait for a response, but relies on asynchronous
+notification.
+If \fItransient\fP is
+.PN True ,
+the
+.PN \s-1WM_TRANSIENT_FOR\s+1
+property
+will be stored on the shell window with a value as specified below.
+The interpretation of this property is specific to the window manager
+under which the application is run; see the \fI\*(xC\fP for more details.
+.LP
+The realize and set_values procedures of WMShell store the
+.PN \s-1WM_CLIENT_LEADER\s+1
+property on the shell window.
+When \fIclient_leader\fP is not NULL and the client leader widget is
+realized, the property will be created with the value of the window of the
+client leader widget.
+When \fIclient_leader\fP is NULL and the shell widget has a NULL parent,
+the widget's window is used as the value of the
+property.
+When \fIclient_leader\fP is NULL and the shell widget has a non-NULL parent,
+a search is made for the closest shell ancestor
+with a non-NULL \fIclient_leader\fP,
+and if none is found the shell ancestor with a NULL parent is the result.
+If the resulting widget is realized, the property is created
+with the value of the widget's window.
+.LP
+When the value of \fIwindow_role\fP is not NULL, the
+realize and set_values procedures store the
+.PN \s-1WM_WINDOW_ROLE\s+1
+property on the shell's window with the value of the resource.
+.LP
+All other resources specify fields in the window manager hints
+and the window manager size hints.
+The realize and set_values procedures of
+WMShell
+set the corresponding flag bits in the
+hints if any of the fields contain nondefault values. In addition, if
+a flag bit is set that refers to a field with the value
+.PN XtUnspecifiedShellInt ,
+the value of the field is modified as follows:
+.br
+.sp
+.TS
+lw(2i) lw(3i).
+_
+.sp 6p
+Field Replacement
+.sp 6p
+_
+.sp 6p
+base_width, base_height 0
+width_inc, height_inc 1
+max_width, max_height 32767
+min_width, min_height 1
+min_aspect_x, min_aspect_y -1
+max_aspect_x, max_aspect_y -1
+icon_x, icon_y -1
+win_gravity T{
+Value returned by
+.PN XWMGeometry
+if called,
+else \fBNorthWestGravity\fP
+T}
+.sp 6p
+_
+.TE
+
+.IN "XWMGeometry"
+.LP
+If the shell widget has a non-NULL parent, then the
+realize and set_values procedures replace the value
+.PN XtUnspecifiedWindow
+.IN "XtUnspecifiedWindow" "" "@DEF@"
+in the \fIwindow_group\fP field with the window id of the root widget
+of the widget tree if the
+root widget is realized. The symbolic constant
+.PN XtUnspecifiedWindowGroup
+.IN "XtUnspecifiedWindowGroup" "" "@DEF@"
+may be used to indicate that the \fIwindow_group\fP hint flag bit is not
+to be set. If \fItransient\fP is
+.PN True ,
+the shell's class is not a subclass of
+TransientShell,
+and \fIwindow_group\fP is not
+.PN XtUnspecifiedWindowGroup ,
+the WMShell realize and set_values procedures then store the
+.PN \s-1WM_TRANSIENT_FOR\s+1
+property with the value of \fIwindow_group\fP.
+.LP
+.KS
+Transient
+shells have the following additional resource:
+.TS
+l l.
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+transient_for NULL
+.sp 6p
+_
+.TE
+.KE
+.LP
+The realize and set_values procedures of
+TransientShell
+store the
+.PN \s-1WM_TRANSIENT_FOR\s+1
+property on the shell window if \fItransient\fP is
+.PN True .
+If \fItransient_for\fP is non-NULL and the widget specified by
+\fItransient_for\fP is realized, then its window is used as the value of the
+.PN \s-1WM_TRANSIENT_FOR\s+1
+property; otherwise, the value of \fIwindow_group\fP is used.
+.LP
+.PN TopLevel
+shells have the the following additional resources:
+.TS
+l l.
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+icon_name Shell widget's name
+iconic T{
+.PN False
+T}
+icon_name_encoding See text
+.sp 6p
+_
+.TE
+.LP
+The \fIicon_name\fP
+and \fIicon_name_encoding\fP fields are stored in the
+.PN \s-1WM_ICON_NAME\s+1
+property on the shell's window by the TopLevelShell realize
+procedure.
+If the \fIicon_name_encoding\fP field is
+.PN None ,
+the \fIicon_name\fP string is assumed to be in the encoding of the
+current locale and the encoding of the
+.PN \s-1WM_ICON_NAME\s+1
+property is set to
+.PN XStdICCTextStyle .
+If a language procedure has not been set,
+the default value of \fIicon_name_encoding\fP is
+\fB\s-1XA_STRING\s+1\fP, otherwise the default value is
+.PN None .
+The \fIiconic\fP field may be used by a client to request
+that the window manager iconify or deiconify the shell; the
+TopLevelShell
+set_values procedure will send the appropriate
+.PN \s-1WM_CHANGE_STATE\s+1
+message (as specified by the \fI\*(xC\fP)
+if this resource is changed from
+.PN False
+to
+.PN True
+and will call
+.PN XtPopup
+specifying \fIgrab_kind\fP as
+.PN XtGrabNone
+if \fIiconic\fP is changed from
+.PN True
+to
+.PN False .
+The XtNiconic resource is also an alternative way to set
+the XtNinitialState resource
+to indicate that a shell should be initially displayed as an icon; the
+TopLevelShell
+initialize procedure will set \fIinitial_state\fP to
+.PN IconicState
+if \fIiconic\fP is
+.PN True .
+.LP
+Application
+shells have the following additional resources:
+.br
+.ne 4
+.TS
+l l.
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+argc 0
+argv NULL
+.sp 6p
+_
+.TE
+.LP
+The \fIargc\fP and \fIargv\fP fields are used to initialize
+the standard property
+.PN \s-1WM_COMMAND\s+1 .
+See the \fI\*(xC\fP for more information.
+.LP
+The default values for the SessionShell instance fields,
+which are filled in from the resource lists and by the
+initialize procedure, are
+.TS
+l l.
+_
+.sp 6p
+Field Default Value
+.sp 6p
+_
+.sp 6p
+cancel_callbacks NULL
+clone_command See text
+connection NULL
+current_dir NULL
+die_callbacks NULL
+discard_command NULL
+environment NULL
+error_callbacks NULL
+interact_callbacks NULL
+join_session T{
+.PN True
+T}
+program_path See text
+resign_command NULL
+restart_command See text
+restart_style T{
+.PN SmRestartIfRunning
+T}
+save_callbacks NULL
+save_complete_callbacks NULL
+session_id NULL
+shutdown_command NULL
+.sp 6p
+_
+.TE
+.LP
+The \fIconnection\fP field contains the session connection object or NULL
+if a session connection is not being managed by this widget.
+.LP
+The \fIsession_id\fP is an identification assigned to the session
+participant by the session manager.
+The \fIsession_id\fP will be passed to the session
+manager as the client identifier of the previous session.
+When a connection is established with the session manager,
+the client id assigned by the session manager is stored
+in the \fIsession_id\fP field.
+When not NULL, the \fIsession_id\fP of the Session shell widget that
+is at the root of the widget tree of the client leader widget will be
+used to create the
+.PN \s-1SM_CLIENT_ID\s+1
+property on the client leader's window.
+.LP
+If \fIjoin_session\fP is
+.PN False ,
+the widget will not attempt to establish a
+connection to the session manager at shell creation time.
+See Sections 4.2.1 and 4.2.4
+for more information on the functionality of this resource.
+.LP
+The \fIrestart_command\fP, \fIclone_command\fP, \fIdiscard_command\fP,
+\fIresign_command\fP, \fIshutdown_command\fP, \fIenvironment\fP,
+\fIcurrent_dir\fP, \fIprogram_path\fP, and
+\fIrestart_style\fP fields contain standard session properties.
+.LP
+When a session connection is established or newly managed by the shell,
+the shell initialize and set_values methods check the values of the
+\fIrestart_command\fP, \fIclone_command\fP, and \fIprogram_path\fP
+resources. At that time, if \fIrestart_command\fP is NULL, the value
+of the \fIargv\fP resource will be copied to \fIrestart_command\fP.
+Whether or not \fIrestart_command\fP was NULL,
+if \*Q\fR-xtsessionID\fP\*U \*Q\fR<session id>\*U does not
+already appear in the \fIrestart_command\fP, it will be added by the
+initialize and set_values methods at the beginning of the command arguments;
+if the \*Q\fR-xtsessionID\fP\*U argument already appears with an incorrect
+\fRsession id\fP in the following argument, that argument
+will be replaced with the current \fRsession id\fP.
+.LP
+After this, the shell initialize and set_values procedures check the
+\fIclone_command\fP. If \fIclone_command\fP is NULL,
+\fIrestart_command\fP will be copied to \fIclone_command\fP,
+except the \*Q\fR-xtsessionID\fP\*U and following argument will not be copied.
+.LP
+Finally, the shell initialize and set_values procedures check the
+\fIprogram_path\fP. If \fIprogram_path\fP is NULL, the
+first element of \fIrestart_command\fP is copied to \fIprogram_path\fP.
+.LP
+The possible values of \fIrestart_style\fP are
+.PN SmRestartIfRunning ,
+.PN SmRestartAnyway ,
+.PN SmRestartImmediately ,
+and
+.PN SmRestartNever .
+A resource converter is registered for this resource;
+for the strings that it recognizes,
+see Section 9.6.1.
+.LP
+The resource type EnvironmentArray is a NULL-terminated array of
+pointers to strings;
+each string has the format "name=value".
+The `=' character may not appear in the name,
+and the string is terminated by a null character.
+
+.NH 2
+Session Participation
+.XS
+\fB\*(SN Session Participation\fP
+.XE
+.LP
+Applications can participate in a user's session, exchanging messages
+with the session manager as described in the \fIX Session Management
+Protocol\fP and the \fIX Session Management Library\fP.
+.LP
+When a widget of
+.PN sessionShellWidgetClass
+or a subclass is created, the widget provides support for the application
+as a session participant and continues to provide support until the
+widget is destroyed.
+
+.NH 3
+Joining a Session
+.XS
+\fB\*(SN Joining a Session\fP
+.XE
+.LP
+When a Session shell is created,
+if \fIconnection\fP is NULL,
+and if \fIjoin_session\fP is
+.PN True ,
+and if \fIargv\fP or \fIrestart_command\fP is not NULL,
+and if in POSIX environments the
+.PN \s-1SESSION_MANAGER\s+1
+environment variable is defined,
+the shell will attempt to establish a new connection with the session manager.
+.LP
+To transfer management of an existing session connection from an
+application to the shell at widget creation time, pass the existing
+session connection ID as the \fIconnection\fP resource value
+when creating the Session shell,
+and if the other creation-time conditions on session participation are met,
+the widget will maintain the connection with the session manager.
+The application must ensure that only one
+Session shell manages the connection.
+.LP
+In the Session shell set_values procedure,
+if \fIjoin_session\fP changes from
+.PN False
+to
+.PN True
+and \fIconnection\fP is NULL and when in POSIX environments the
+.PN \s-1SESSION_MANAGER\s+1
+environment variable is defined,
+the shell will attempt to open a connection to the session manager.
+If \fIconnection\fP changes from NULL to non-NULL, the
+Session shell
+will take over management of that session connection and will set
+\fIjoin_session\fP to
+.PN True .
+If \fIjoin_session\fP changes from
+.PN False
+to
+.PN True
+and \fIconnection\fP is not NULL, the
+Session shell will take over management of the session connection.
+.LP
+When a successful connection has been established, \fIconnection\fP
+contains the session connection ID for the session participant.
+When the shell begins to manage the connection, it will call
+.PN XtAppAddInput
+to register the handler which watches for protocol messages
+from the session manager.
+When the attempt to connect fails, a warning message is issued
+and \fIconnection\fP is set to NULL.
+.LP
+While the connection is being managed, if a
+.PN SaveYourself ,
+.PN SaveYourselfPhase2 ,
+.PN Interact ,
+.PN ShutdownCancelled ,
+.PN SaveComplete ,
+or
+.PN Die
+message is received from the session manager, the Session shell will
+call out to application callback procedures registered
+on the respective callback list of the Session shell and will
+send
+.PN SaveYourselfPhase2Request ,
+.PN InteractRequest ,
+.PN InteractDone ,
+.PN SaveYourselfDone ,
+and
+.PN ConnectionClosed
+messages as appropriate.
+Initially, all of the client's session properties are undefined.
+When any of the session property resource values are defined or change,
+the Session shell initialize and set_values procedures
+will update the client's session property value by a
+.PN SetProperties
+or a
+.PN DeleteProperties
+message, as appropriate.
+The session ProcessID and UserID properties are always set by the shell
+when it is possible to determine the value of these properties.
+
+.NH 3
+Saving Application State
+.XS
+\fB\*(SN Saving Application State\fP
+.XE
+.LP
+The session manager instigates an application checkpoint by sending a
+.PN SaveYourself
+request.
+Applications are responsible for saving their state in response to the
+request.
+.LP
+When the
+.PN SaveYourself
+request arrives, the procedures registered on the
+Session shell's save callback list are called.
+If the application does not register any save callback procedures on
+the save callback list, the shell will report to the session manager
+that the application failed to save its state.
+Each procedure on the save callback list receives a token
+in the \fIcall_data\fP parameter.
+.sp
+.LP
+.KS
+The checkpoint token in the \fIcall_data\fP parameter is of type
+.PN XtCheckpointToken .
+.LP
+.IN "XtCheckpointToken" "" "@DEF@"
+.IN "XtCheckpointTokenRec" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 2i 4i
+.ta .5i 2i 4i
+typedef struct {
+ int save_type;
+ int interact_style;
+ Boolean shutdown;
+ Boolean fast;
+ Boolean cancel_shutdown
+ int phase;
+ int interact_dialog_type; /* return */
+ Boolean request_cancel; /* return */
+ Boolean request_next_phase; /* return */
+ Boolean save_success; /* return */
+} XtCheckpointTokenRec, *XtCheckpointToken;
+.De
+.LP
+.eM
+.KE
+The \fIsave_type\fP, \fIinteract_style\fP, \fIshutdown\fP, and \fIfast\fP
+fields of the token contain the parameters of the
+.PN SaveYourself
+message.
+The possible values of \fIsave_type\fP are
+.PN SmSaveLocal ,
+.PN SmSaveGlobal ,
+and
+.PN SmSaveBoth ;
+these indicate the type of information to be saved.
+The possible values of \fIinteract_style\fP are
+.PN SmInteractStyleNone ,
+.PN SmInteractStyleErrors ,
+and
+.PN SmInteractStyleAny ;
+these indicate whether user interaction would be permitted
+and, if so, what kind of interaction.
+If \fIshutdown\fP is
+.PN True ,
+the checkpoint is being performed in preparation for the end of the session.
+If \fIfast\fP is
+.PN True ,
+the client should perform the checkpoint as quickly as possible.
+If \fIcancel_shutdown\fP is
+.PN True ,
+a
+.PN ShutdownCancelled
+message has been received for the current save operation. (See Section 4.4.4.)
+The \fIphase\fP is used by manager clients, such as a window manager,
+to distinguish between the first and second phase of a save operation.
+The \fIphase\fP will be either 1 or 2.
+The remaining fields in the checkpoint token structure are provided for
+the application to communicate with the shell.
+.LP
+Upon entry to the first application save callback procedure, the return
+fields in the token have the following initial values:
+\fIinteract_dialog_type\fP is
+.PN SmDialogNormal ;
+\fIrequest_cancel\fP is
+.PN False ;
+\fIrequest_next_phase\fP is
+.PN False ;
+and \fIsave_success\fP is
+.PN True .
+When a token is returned with any of the four return fields containing
+a noninitial value, and when the field is applicable, subsequent tokens
+passed to the application during the current save operation
+will always contain the noninitial value.
+.LP
+The purpose of the token's \fIsave_success\fP field is to
+indicate the outcome of the entire operation to the
+session manager and ultimately, to the user.
+Returning
+.PN False
+indicates some portion of the application state
+could not be successfully saved. If any token is returned
+to the shell with \fIsave_success\fP
+.PN False ,
+tokens subsequently received
+by the application for the current save operation will show
+\fIsave_success\fP as
+.PN False .
+When the shell sends the final status of the checkpoint to the
+session manager, it will indicate failure to save application state
+if any token was returned with \fIsave_success\fP
+.PN False .
+.LP
+Session participants that manage and save the state of other clients
+should structure their save or interact callbacks to
+set \fIrequest_next_phase\fP to
+.PN True
+when phase is 1, which will cause the shell to send the
+.PN SaveYourselfPhase2Request
+when the first phase is complete. When the
+.PN SaveYourselfPhase2
+message is received, the shell will invoke the save callbacks a
+second time with \fIphase\fP equal to 2.
+Manager clients should save the state of other clients
+when the callbacks are invoked the second time and \fIphase\fP equal to 2.
+.LP
+The application may request additional tokens while a checkpoint is under way,
+and these additional tokens must be returned by an explicit call.
+.sp
+.LP
+.KS
+To request an additional token for a save callback response that has a
+deferred outcome, use
+.PN XtSessionGetToken .
+.LP
+.IN "XtSessionGetToken" "" "@DEF@"
+.sM
+.FD 0
+XtCheckpointToken XtSessionGetToken(\fIwidget\fP)
+.br
+ Widget \fIwidget\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the Session shell widget which manages session participation.
+.LP
+.eM
+The
+.PN XtSessionGetToken
+function will return NULL if no checkpoint operation is currently under way.
+.KE
+.sp
+.LP
+.KS
+To indicate the completion of checkpoint processing including user
+interaction, the application must signal the Session shell
+by returning all tokens.
+(See Sections 4.2.2.2 and 4.2.2.4).
+To return a token, use
+.PN XtSessionReturnToken .
+.LP
+.IN "XtSessionReturnToken" "" "@DEF@"
+.sM
+.FD 0
+void XtSessionReturnToken(\fItoken\fP)
+.br
+ XtCheckpointToken \fItoken\fP;
+.FN
+.IP \fItoken\fP 1i
+Specifies a token that was received as the \fIcall_data\fP by a procedure
+on the interact callback list or a token that was received by a call to
+.PN XtSessionGetToken .
+.LP
+.eM
+.KE
+.LP
+Tokens passed as \fIcall_data\fP to save callbacks are implicitly
+returned when the save callback procedure returns.
+A save callback procedure should not call
+.PN XtSessionReturnToken
+on the token passed in its \fIcall_data\fP.
+
+.NH 4
+Requesting Interaction
+.XS
+\fB\*(SN Requesting Interaction\fP
+.XE
+.LP
+When the token \fIinteract_style\fP allows user interaction,
+the application may
+interact with the user during the checkpoint, but must wait for permission
+to interact.
+Applications request permission to interact with the user during the
+checkpointing operation by registering a procedure on the Session
+shell's interact callback list. When all save callback procedures have
+returned, and each time a token that was granted by a call to
+.PN XtSessionGetToken
+is returned, the Session shell examines the interact callback list.
+If interaction is permitted and the interact callback list is not empty,
+the shell will send an
+.PN InteractRequest
+to the session manager when an interact request is not already outstanding
+for the application.
+.LP
+The type of interaction dialog that will be requested is specified by
+the \fIinteract_dialog_type\fP field in the checkpoint token.
+The possible values for \fIinteract_dialog_type\fP are
+.PN SmDialogError
+and
+.PN SmDialogNormal .
+If a token is returned with \fIinteract_dialog_type\fP containing
+.PN SmDialogError ,
+the interact request and any subsequent interact requests will be for
+an error dialog; otherwise, the request will be for a normal dialog with
+the user.
+.LP
+When a token is returned with \fIsave_success\fP
+.PN False
+or \fIinteract_dialog_type\fP
+.PN SmDialogError ,
+tokens subsequently passed to callbacks during the same active
+.PN SaveYourself
+response will reflect these changed values, indicating that
+an error condition has occurred during the checkpoint.
+.LP
+The \fIrequest_cancel\fP field is a return value for interact callbacks only.
+Upon return from a procedure on the save callback list, the value
+of the token's \fIrequest_cancel\fP field is not examined by the shell.
+This is also true of tokens received through a call to
+.PN XtSessionGetToken .
+
+.NH 4
+Interacting with the User during a Checkpoint
+.XS
+\fB\*(SN Interacting with the User during a Checkpoint\fP
+.XE
+.LP
+When the session manager grants the application's request for user interaction,
+the Session shell receives an
+.PN Interact
+message.
+The procedures registered on the interact callback list are executed,
+but not as if executing a typical callback list.
+These procedures are individually executed in
+sequence, with a checkpoint token functioning as the sequencing mechanism.
+Each step in the sequence begins by removing a procedure
+from the interact callback list
+and executing it with a token passed in the \fIcall_data\fP.
+The interact callback will typically pop up a dialog box and return.
+When the user interaction and associated application checkpointing has
+completed, the application must return the token by calling
+.PN XtSessionReturnToken .
+Returning the token completes the current step and triggers the next step
+in the sequence.
+.LP
+During interaction the client may request cancellation of a shutdown.
+When a token passed as \fIcall_data\fP to an interact procedure is returned,
+if \fIshutdown\fP is
+.PN True
+and \fIcancel_shutdown\fP is
+.PN False ,
+\fIrequest_cancel\fP indicates whether the
+application requests that the pending shutdown be cancelled.
+If \fIrequest_cancel\fP is
+.PN True ,
+the field will also be
+.PN True
+in any tokens subsequently granted during the checkpoint operation.
+When a token is returned requesting cancellation of
+the session shutdown, pending interact procedures will still be
+called by the Session shell.
+When all interact procedures have been removed from the interact callback
+list, executed, and the final interact token returned to the shell, an
+.PN InteractDone
+message is sent to the session manager, indicating whether
+a pending session shutdown is requested to be cancelled.
+
+.NH 4
+Responding to a Shutdown Cancellation
+.XS
+\fB\*(SN Responding to a Shutdown Cancellation\fP
+.XE
+.LP
+Callbacks registered on the cancel callback list are invoked when the
+Session shell processes a
+.PN ShutdownCancelled
+message from the session manager. This may occur during the
+processing of save callbacks, while waiting for interact permission,
+during user interaction, or after the save operation is complete and
+the application is expecting a
+.PN SaveComplete
+or a
+.PN Die
+message.
+The \fIcall_data\fP for these callbacks is NULL.
+.LP
+When the shell notices that a pending shutdown has been cancelled,
+the token \fIcancel_shutdown\fP field will be
+.PN True
+in tokens subsequently given to the application.
+.LP
+Receiving notice of a shutdown cancellation does not cancel the
+pending execution of save callbacks or interact callbacks.
+After the cancel callbacks execute, if \fIinteract_style\fP is not
+.PN SmInteractStyleNone
+and the interact list is not empty,
+the procedures on the interact callback list will be executed
+and passed a token with \fIinteract_style\fP
+.PN SmInteractStyleNone .
+The application should not interact with the user, and the Session shell
+will not send an
+.PN InteractDone
+message.
+
+.NH 4
+Completing a Save
+.XS
+\fB\*(SN Completing a Save\fP
+.XE
+.LP
+When there is no user interaction, the shell regards the application
+as having finished saving state when all callback procedures
+on the save callback list have returned, and any additional tokens
+passed out by
+.PN XtSessionGetToken
+have been returned by corresponding calls to
+.PN XtSessionReturnToken .
+If the save operation involved user interaction,
+the above completion conditions apply, and in addition, all requests for
+interaction have been granted or cancelled,
+and all tokens passed to interact callbacks have been returned
+through calls to
+.PN XtSessionReturnToken .
+If the save operation involved a manager client that requested the
+second phase, the above conditions apply to both the first and second
+phase of the save operation.
+.br
+.LP
+When the application has finished saving state,
+the Session shell will report the result to the session manager by
+sending the
+.PN SaveYourselfDone
+message.
+If the session is continuing, the shell will receive the
+.PN SaveComplete
+message when all applications have completed saving state.
+This message indicates that applications may again allow changes
+to their state. The shell will execute the save_complete callbacks.
+The \fIcall_data\fP for these callbacks is NULL.
+
+.NH 3
+Responding to a Shutdown
+.XS
+\fB\*(SN Responding to a Shutdown\fP
+.XE
+.LP
+Callbacks registered on the die callback list are invoked when the
+session manager sends a
+.PN Die
+message.
+The callbacks on this list should do whatever is appropriate to quit
+the application.
+Before executing procedures on the die callback list,
+the Session shell will close the connection to the session manager
+and will remove the handler that watches for protocol messages.
+The \fIcall_data\fP for these callbacks is NULL.
+
+.NH 3
+Resigning from a Session
+.XS
+\fB\*(SN Resigning from a Session\fP
+.XE
+.LP
+When the Session shell widget is destroyed, the destroy method will
+close the connection to the session manager by sending a
+.PN ConnectionClosed
+protocol message and will remove the input callback
+that was watching for session protocol messages.
+.LP
+When
+.PN XtSetValues
+is used to set \fIjoin_session\fP to
+.PN False ,
+the set_values method of the Session shell will close the
+connection to the session manager if one exists by sending a
+.PN ConnectionClosed
+message, and \fIconnection\fP will be set to NULL.
+.LP
+Applications that exit in response to user actions and that do not
+wait for phase 2 destroy to complete on
+the Session shell should set \fIjoin_session\fP to
+.PN False
+before exiting.
+.LP
+When
+.PN XtSetValues
+is used to set \fIconnection\fP to NULL,
+the Session shell will stop managing the connection, if one exists.
+However, that session connection will not be closed.
+.LP
+Applications that wish to ensure continuation of a session connection
+beyond the destruction of the shell should first retrieve the
+\fIconnection\fP resource value,
+then set the \fIconnection\fP resource to NULL,
+and then they may safely destroy the widget without losing control
+of the session connection.
+.LP
+The error callback list will be called if an unrecoverable
+communications error occurs while the shell is managing the connection.
+The shell will close the connection, set \fIconnection\fP to NULL,
+remove the input callback, and
+call the procedures registered on the error callback list.
+The \fIcall_data\fP for these callbacks is NULL.
+.bp
diff --git a/specs/Xt/CH05 b/specs/Xt/CH05
new file mode 100644
index 0000000..4f15bea
--- /dev/null
+++ b/specs/Xt/CH05
@@ -0,0 +1,783 @@
+.\" $Xorg: CH05,v 1.3 2000/08/17 19:42:44 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 5\fP\s-1
+
+\s+1\fBPop-Up Widgets\fP\s-1
+.sp 2
+.nr H1 5
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 5 \(em Pop-Up Widgets
+.XE
+Pop-up widgets are used to create windows outside of the
+window hierarchy defined by the widget tree.
+Each pop-up child has a window that is a descendant of the root window,
+so that the pop-up window is not clipped by the pop-up widget's parent window.
+.\"One thing that all pop-ups in common is that they break
+.\"the widget/window hierarchy.
+.\"Pop-ups windows are not geometry constrained by their parent widget.
+.\"Instead, they are window children of the root.
+Therefore, pop-ups are created and attached differently to their widget parent
+than normal widget children.
+.LP
+A parent of a pop-up widget does not actively manage its pop-up children;
+in fact, it usually does not operate upon them in any way.
+The \fIpopup_list\fP field in the
+.PN CorePart
+structure contains the list of its pop-up children.
+This pop-up list exists mainly to provide the proper place in the widget
+hierarchy for the pop-up to get resources and to provide a place for
+.PN XtDestroyWidget
+to look for all extant children.
+.LP
+A
+composite
+widget can have both normal and pop-up children.
+A pop-up can be popped up from almost anywhere, not just by its parent.
+The term \fIchild\fP always refers to a normal, geometry-managed widget
+on the composite widget's list of children, and the term
+\fIpop-up child\fP always refers to a
+widget on the pop-up list.
+.IN "pop-up" "" "@DEF@"
+.IN "pop-up" "list"
+.IN "pop-up" "child"
+
+.NH 2
+Pop-Up Widget Types
+.LP
+.XS
+\fB\*(SN Pop-Up Widget Types\fP
+.XE
+There are three kinds of pop-up widgets:
+.IP \(bu 5
+Modeless pop-ups
+.IP
+A modeless pop-up (for example, a dialog box that does not prevent
+continued interaction with the rest of the application)
+can usually be manipulated by the window manager
+and looks like any other application window from the
+user's point of view.
+The application main window itself is a special case of a modeless pop-up.
+.IP \(bu 5
+Modal pop-ups
+.IP
+A modal pop-up (for example, a dialog box that requires user input to
+continue)
+can sometimes be manipulated by the window manager,
+and except for events that occur in the dialog box,
+it disables user-event distribution to the rest of the application.
+.IP \(bu 5
+Spring-loaded pop-ups
+.IP
+A spring-loaded pop-up (for example, a menu)
+can seldom be manipulated by the window manager,
+and except for events that occur in the pop-up or its descendants,
+it disables user-event distribution to all other applications.
+.LP
+Modal pop-ups and spring-loaded pop-ups are very similar and should be coded as
+if they were the same.
+In fact, the same widget (for example, a ButtonBox or Menu widget) can be used both
+as a modal pop-up and as a spring-loaded pop-up within the same application.
+The main difference is that spring-loaded pop-ups are brought up
+with the pointer and, because of the grab that the pointer button causes,
+require different processing by the \*(xI.
+Furthermore, all user input remap events occurring outside the spring-loaded
+pop-up (e.g., in a descendant) are also delivered to the spring-loaded
+pop-up after they have been dispatched to the appropriate descendant, so
+that, for example, button-up can take down a spring-loaded pop-up no
+matter where the
+button-up occurs.
+.LP
+Any kind of pop-up, in turn, can pop up other widgets.
+Modal and spring-loaded pop-ups can constrain user events to
+the most recent such pop-up or allow user events to be dispatched
+to any of the modal or spring-loaded pop-ups
+currently mapped.
+.LP
+Regardless of their type,
+all pop-up widget classes are responsible for communicating with the
+X window manager and therefore are subclasses of
+one of the
+Shell
+widget classes.
+
+.NH 2
+Creating a Pop-Up Shell
+.XS
+\fB\*(SN Creating a Pop-Up Shell\fP
+.XE
+.LP
+.IN "pop-up" "shell"
+.IN "pop-up" "child"
+For a widget to be popped up,
+it must be the child of a pop-up shell widget.
+None of the \*(xI-supplied shells will
+simultaneously manage more than one child.
+Both the shell and child taken together are referred to as the pop-up.
+When you need to use a pop-up,
+you always refer to the pop-up by the pop-up shell,
+not the child.
+.sp
+.LP
+To create a pop-up shell, use
+.PN XtCreatePopupShell .
+.LP
+.IN "XtCreatePopupShell" "" "@DEF@"
+.sM
+.FD 0
+Widget XtCreatePopupShell(\fIname\fP, \fIwidget_class\fP, \fIparent\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Widget \fIparent\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the instance name for the created shell widget.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class pointer for the created shell widget.
+.IP \fIparent\fP 1i
+Specifies the parent widget. \*(cI
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtCreatePopupShell
+function ensures that the specified class is a subclass of
+Shell
+and, rather than using insert_child to attach the widget to the parent's
+.IN "insert_child procedure"
+\fIchildren\fP list,
+attaches the shell to the parent's \fIpopup_list\fP directly.
+.LP
+The screen resource for this widget is determined by first scanning
+\fIargs\fP for the XtNscreen argument. If no XtNscreen argument is
+found, the resource database associated with the parent's screen
+is queried for the resource \fIname\fP.screen, class
+\fIClass\fP.Screen where \fIClass\fP is the \fIclass_name\fP
+field from the
+.PN CoreClassPart
+of the specified \fIwidget_class\fP.
+If this query fails, the parent's screen is used.
+Once the screen is determined,
+the resource database associated with that screen is used to retrieve
+all remaining resources for the widget not specified in
+\fIargs\fP.
+
+.LP
+A spring-loaded pop-up invoked from a translation table via
+.PN XtMenuPopup
+must already exist
+at the time that the translation is invoked,
+so the translation manager can find the shell by name.
+Pop-ups invoked in other ways can be created when
+the pop-up actually is needed.
+This delayed creation of the shell is particularly useful when you pop up
+an unspecified number of pop-ups.
+You can look to see if an appropriate unused shell (that is, not
+currently popped up) exists and create a new shell if needed.
+.sp
+.LP
+To create a pop-up shell using varargs lists, use
+.PN XtVaCreatePopupShell .
+.LP
+.IN "XtVaCreatePopupShell" "" "@DEF@"
+.sM
+.FD 0
+Widget XtVaCreatePopupShell(\fIname\fP, \fIwidget_class\fP, \fIparent\fP, ...)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ Widget \fIparent\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the instance name for the created shell widget.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class pointer for the created shell widget.
+.IP \fIparent\fP 1i
+Specifies the parent widget. \*(cI
+.IP ... 1i
+Specifies the variable argument list to override any other
+resource specifications.
+.LP
+.eM
+.PN XtVaCreatePopupShell
+is identical in function to
+.PN XtCreatePopupShell
+with \fIthe\fP args and \fInum_args\fP parameters replaced by a varargs list as
+described in Section 2.5.1.
+
+.NH 2
+Creating Pop-Up Children
+.XS
+\fB\*(SN Creating Pop-Up Children\fP
+.XE
+.LP
+Once a pop-up shell is created,
+the single child of the pop-up shell can be created
+either statically or dynamically.
+.LP
+At startup,
+an application can create the child of the pop-up shell,
+which is appropriate for pop-up children composed of a fixed set
+of widgets.
+The application can change the state of the subparts of
+the pop-up child as the application state changes.
+For example, if an application creates a static menu,
+it can call
+.PN XtSetSensitive
+(or, in general,
+.PN XtSetValues )
+on any of the buttons that make up the menu.
+Creating the pop-up child early means that pop-up time is minimized,
+especially if the application calls
+.PN XtRealizeWidget
+on the pop-up shell at startup.
+When the menu is needed,
+all the widgets that make up the menu already exist and need only be mapped.
+The menu should pop up as quickly as the X server can respond.
+.LP
+Alternatively,
+an application can postpone the creation of the child until it is needed,
+which minimizes application startup time and allows the pop-up child to
+reconfigure itself each time it is popped up.
+In this case,
+the pop-up child creation routine might poll the application
+to find out if it should change the sensitivity of any of its subparts.
+.LP
+Pop-up child creation does not map the pop-up,
+even if you create the child and call
+.PN XtRealizeWidget
+on the pop-up shell.
+.LP
+All shells have pop-up and pop-down callbacks,
+which provide the opportunity either to make last-minute changes to a
+pop-up child before it is popped up or to change it after it is popped down.
+Note that excessive use of pop-up callbacks can make
+popping up occur more slowly.
+
+.NH 2
+Mapping a Pop-Up Widget
+.XS
+\fB\*(SN Mapping a Pop-Up Widget\fP
+.XE
+.LP
+Pop-ups can be popped up through several mechanisms:
+.IP \(bu 5
+A call to
+.PN XtPopup
+or
+.PN XtPopupSpringLoaded .
+.IP \(bu 5
+One of the supplied callback procedures
+.PN XtCallbackNone ,
+.PN XtCallbackNonexclusive ,
+or
+.PN XtCallbackExclusive .
+.IP \(bu 5
+The standard translation action
+.PN XtMenuPopup .
+.LP
+Some of these routines take an argument of type
+.PN XtGrabKind ,
+which is defined as
+.sp
+.sM
+.Ds 0
+typedef enum {XtGrabNone, XtGrabNonexclusive, XtGrabExclusive} XtGrabKind;
+.De
+.sp
+.eM
+.LP
+The create_popup_child_proc procedure pointer
+in the shell widget instance record is of type
+.PN XtCreatePopupChildProc .
+.LP
+.IN "create_popup_child_proc"
+.IN "Shell" "create_popup_child_proc"
+.IN "XtCreatePopupChildProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtCreatePopupChildProc)(Widget);
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the shell widget being popped up.
+.LP
+.eM
+To map a pop-up from within an application, use
+.PN XtPopup .
+.LP
+.IN "XtPopup" "" "@DEF@"
+.sM
+.FD 0
+void XtPopup(\fIpopup_shell\fP, \fIgrab_kind\fP)
+.br
+ Widget \fIpopup_shell\fP;
+.br
+ XtGrabKind \fIgrab_kind\fP;
+.FN
+.IP \fIpopup_shell\fP 1i
+Specifies the shell widget.
+.IP \fIgrab_kind\fP 1i
+Specifies the way in which user events should be constrained.
+.LP
+.eM
+The
+.PN XtPopup
+function performs the following:
+.IP \(bu 5
+Calls
+.PN XtCheckSubclass
+to ensure \fIpopup_shell\fP's class is a subclass of
+.PN shellWidgetClass .
+.IP \(bu 5
+Raises the window and returns if the shell's \fIpopped_up\fP field is already
+.PN True .
+.IP \(bu 5
+Calls the callback procedures on the shell's \fIpopup_callback\fP list,
+specifying a pointer to the value of \fIgrab_kind\fP as the \fIcall_data\fP
+argument.
+.IP \(bu 5
+Sets the shell \fIpopped_up\fP field to
+.PN True ,
+the shell \fIspring_loaded\fP field to
+.PN False ,
+and the shell \fIgrab_kind\fP field from \fIgrab_kind\fP.
+.IP \(bu 5
+If the shell's \fIcreate_popup_child_proc\fP field is non-NULL,
+.PN XtPopup
+calls it with \fIpopup_shell\fP as the parameter.
+.IP \(bu 5
+If \fIgrab_kind\fP is either
+.PN XtGrabNonexclusive
+or
+.PN XtGrabExclusive ,
+it calls
+.LP
+.Ds
+XtAddGrab(\fIpopup_shell\fP, (\fIgrab_kind\fP == XtGrabExclusive), False)
+.De
+.IP \(bu 5
+Calls
+.PN XtRealizeWidget
+with \fIpopup_shell\fP specified.
+.IP \(bu 5
+Calls
+.PN XMapRaised
+with the window of \fIpopup_shell\fP.
+.sp
+.LP
+To map a spring-loaded pop-up from within an application, use
+.PN XtPopupSpringLoaded .
+.LP
+.IN "XtPopupSpringLoaded" "" @DEF@"
+.sM
+.FD 0
+void XtPopupSpringLoaded(\fIpopup_shell\fP)
+.br
+ Widget \fIpopup_shell\fP;
+.FN
+.IP \fIpopup_shell\fP 1i
+Specifies the shell widget to be popped up.
+.LP
+.eM
+The
+.PN XtPopupSpringLoaded
+function performs exactly as
+.PN XtPopup
+except that it sets the shell \fIspring_loaded\fP field to
+.PN True
+and always calls
+.PN XtAddGrab
+with \fIexclusive\fP
+.PN True
+and \fIspring-loaded\fP
+.PN True .
+.sp
+.LP
+To map a pop-up from a given widget's callback list,
+you also can register one of the
+.PN XtCallbackNone ,
+.PN XtCallbackNonexclusive ,
+or
+.PN XtCallbackExclusive
+convenience routines as callbacks, using the pop-up shell widget as the
+client data.
+.LP
+.IN "XtCallbackNone" "" "@DEF@"
+.sM
+.FD 0
+void XtCallbackNone(\fIw\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIclient_data\fP 1i
+Specifies the pop-up shell.
+.IP \fIcall_data\fP 1i
+Specifies the callback data argument,
+which is not used by this procedure.
+.sp
+.LP
+.IN "XtCallbackNonexclusive" "" "@DEF@"
+.FD 0
+void XtCallbackNonexclusive(\fIw\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIclient_data\fP 1i
+Specifies the pop-up shell.
+.IP \fIcall_data\fP 1i
+Specifies the callback data argument,
+which is not used by this procedure.
+.sp
+.LP
+.IN "XtCallbackExclusive" "" "@DEF@"
+.FD 0
+void XtCallbackExclusive(\fIw\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIclient_data\fP 1i
+Specifies the pop-up shell.
+.IP \fIcall_data\fP 1i
+Specifies the callback data argument,
+which is not used by this procedure.
+.LP
+.eM
+The
+.PN XtCallbackNone ,
+.PN XtCallbackNonexclusive ,
+and
+.PN XtCallbackExclusive
+functions call
+.PN XtPopup
+with the shell specified by the \fIclient_data\fP argument
+and \fIgrab_kind\fP set as the name specifies.
+.PN XtCallbackNone ,
+.PN XtCallbackNonexclusive ,
+and
+.PN XtCallbackExclusive
+specify
+.PN XtGrabNone ,
+.PN XtGrabNonexclusive ,
+and
+.PN XtGrabExclusive ,
+respectively.
+Each function then sets the widget that executed the callback list
+to be insensitive by calling
+.PN XtSetSensitive .
+Using these functions in callbacks is not required.
+In particular,
+an application must provide customized code for
+callbacks that create pop-up shells dynamically or that must do more than
+desensitizing the button.
+.sp
+.LP
+Within a translation table,
+to pop up a menu when a key or pointer button is pressed or when the pointer
+is moved into a widget, use
+.PN XtMenuPopup ,
+or its synonym,
+.PN MenuPopup .
+From a translation writer's point of view,
+the definition for this translation action is
+.LP
+.IN "MenuPopup" "" "@DEF@"
+.IN "XtMenuPopup" "" "@DEF@"
+.sM
+.FD 0
+void XtMenuPopup(\fIshell_name\fP)
+.br
+ String \fIshell_name\fP;
+.FN
+.IP \fIshell_name\fP 1i
+Specifies the name of the shell widget to pop up.
+.LP
+.eM
+.PN XtMenuPopup
+is known to the translation manager,
+which registers the corresponding built-in action procedure
+.PN XtMenuPopupAction
+using
+.PN XtRegisterGrabAction
+specifying \fIowner_events\fP
+.PN True ,
+\fIevent_mask\fP
+.PN ButtonPressMask
+\fB|\fP
+.PN ButtonReleaseMask ,
+and \fIpointer_mode\fP and \fIkeyboard_mode\fP
+.PN GrabModeAsync .
+.LP
+If
+.PN XtMenuPopup
+is invoked on
+.PN ButtonPress ,
+it calls
+.PN XtPopupSpringLoaded
+on the specified shell widget.
+If
+.PN XtMenuPopup
+is invoked on
+.PN KeyPress
+or
+.PN EnterWindow ,
+it calls
+.PN XtPopup
+on the specified shell widget with \fIgrab_kind\fP set to
+.PN XtGrabNonexclusive .
+Otherwise, the translation manager generates a
+warning message and ignores the action.
+.LP
+.PN XtMenuPopup
+tries to find the shell by searching the widget tree starting at
+the widget in which it is invoked.
+If it finds a shell with the specified name in the pop-up children of
+that widget, it pops up the shell with the appropriate parameters.
+Otherwise, it moves up the parent chain to find a pop-up child with the
+specified name.
+If
+.PN XtMenuPopup
+gets to the application top-level shell widget and has not
+found a matching shell, it generates a warning and returns immediately.
+
+.NH 2
+Unmapping a Pop-Up Widget
+.XS
+\fB\*(SN Unmapping a Pop-Up Widget\fP
+.XE
+.LP
+Pop-ups can be popped down through several mechanisms:
+.IP \(bu 5
+A call to
+.PN XtPopdown
+.IP \(bu 5
+The supplied callback procedure
+.PN XtCallbackPopdown
+.IP \(bu 5
+The standard translation action
+.PN XtMenuPopdown
+.sp
+.LP
+To unmap a pop-up from within an application, use
+.PN XtPopdown .
+.LP
+.IN "XtPopdown" "" "@DEF@"
+.sM
+.FD 0
+void XtPopdown(\fIpopup_shell\fP)
+.br
+ Widget \fIpopup_shell\fP;
+.FN
+.IP \fIpopup_shell\fP 1i
+Specifies the shell widget to pop down.
+.LP
+.eM
+The
+.PN XtPopdown
+function performs the following:
+.IP \(bu 5
+Calls
+.PN XtCheckSubclass
+.\".PN XtCheckSubclass(popup_shell, popupShellWidgetClass)
+to ensure \fIpopup_shell\fP's class is a subclass of
+.PN shellWidgetClass .
+.IP \(bu 5
+Checks that the \fIpopped_up\fP field of \fIpopup_shell\fP is
+.PN True ;
+otherwise, it returns immediately.
+.IP \(bu 5
+Unmaps \fIpopup_shell\fP's window and, if \fIoverride_redirect\fP is
+.PN False ,
+sends a synthetic
+.PN UnmapNotify
+event as specified by the \fI\*(xC\fP.
+.IP \(bu 5
+If \fIpopup_shell\fP's \fIgrab_kind\fP is either
+.PN XtGrabNonexclusive
+or
+.PN XtGrabExclusive ,
+it calls
+.PN XtRemoveGrab .
+.\".PN XtRemoveGrab(popup_shell)
+.IP \(bu 5
+Sets \fIpopup_shell\fP's \fIpopped_up\fP field to
+.PN False .
+.IP \(bu 5
+Calls the callback procedures on the shell's \fIpopdown_callback\fP list,
+specifying a pointer to the value of the shell's \fIgrab_kind\fP field
+as the \fIcall_data\fP argument.
+.sp
+.LP
+To pop down a pop-up from a callback list, you may use the callback
+.PN XtCallbackPopdown .
+.LP
+.IN "XtCallbackPopdown" "" "@DEF@"
+.sM
+.FD 0
+void XtCallbackPopdown(\fIw\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIclient_data\fP 1i
+Specifies a pointer to the
+.PN XtPopdownID
+structure.
+.IP \fIcall_data\fP 1i
+Specifies the callback data argument,
+which is not used by this procedure.
+.LP
+.eM
+The
+.PN XtCallbackPopdown
+function casts the \fIclient_data\fP parameter to a pointer of type
+.PN XtPopdownID .
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ Widget shell_widget;
+ Widget enable_widget;
+} XtPopdownIDRec, *XtPopdownID;
+.De
+.LP
+.eM
+The \fIshell_widget\fP is the pop-up shell to pop down,
+and the \fIenable_widget\fP is usually the widget that was used to pop it up
+in one of the pop-up callback convenience procedures.
+.LP
+.PN XtCallbackPopdown
+calls
+.PN XtPopdown
+with the specified \fIshell_widget\fP
+and then calls
+.PN XtSetSensitive
+to resensitize \fIenable_widget\fP.
+.sp
+.LP
+Within a translation table,
+to pop down a spring-loaded menu when a key or pointer button is
+released or when the
+pointer is moved into a widget, use
+.PN XtMenuPopdown
+or its synonym,
+.PN MenuPopdown .
+From a translation writer's point of view,
+the definition for this translation action is
+.LP
+.IN "XtMenuPopdown" "" "@DEF@"
+.IN "MenuPopdown" "" "@DEF@"
+.sM
+.FD 0
+void XtMenuPopdown(\fIshell_name\fP)
+.br
+ String \fIshell_name\fP;
+.FN
+.IP \fIshell_name\fP 1i
+Specifies the name of the shell widget to pop down.
+.LP
+.eM
+If a shell name is not given,
+.PN XtMenuPopdown
+calls
+.PN XtPopdown
+with the widget for which the translation is specified.
+If \fIshell_name\fP is specified in the translation table,
+.PN XtMenuPopdown
+tries to find the shell by looking up the widget tree starting at the
+widget in which it is invoked.
+If it finds a shell with the specified name in the pop-up children
+of that widget, it pops down the shell;
+otherwise, it moves up the parent chain to find a pop-up child with the
+specified name.
+If
+.PN XtMenuPopdown
+gets to the application top-level shell widget
+and cannot find a matching shell,
+it generates a warning and returns immediately.
+.bp
diff --git a/specs/Xt/CH06 b/specs/Xt/CH06
new file mode 100644
index 0000000..34c2861
--- /dev/null
+++ b/specs/Xt/CH06
@@ -0,0 +1,1110 @@
+.\" $Xorg: CH06,v 1.3 2000/08/17 19:42:45 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 6\fP\s-1
+
+\s+1\fBGeometry Management\fP\s-1
+.sp 2
+.nr H1 6
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 6 \(em Geometry Management
+.XE
+.LP
+.IN "geometry_manager procedure"
+.IN "Geometry Management"
+.IN "Configure Window"
+A widget does not directly control its size and location;
+rather, its parent is responsible for controlling them.
+Although the position of children is usually left up to their parent,
+the widgets themselves often have the best idea of their optimal sizes
+and, possibly, preferred locations.
+.LP
+To resolve physical layout conflicts between sibling widgets and between
+a widget and its parent, the \*(xI provide the geometry management mechanism.
+Almost all
+composite
+widgets have a geometry manager specified in the \fIgeometry_manager\fP field
+in the widget class record that is responsible for the size, position, and
+stacking order of the widget's children.
+The only exception is fixed boxes,
+which create their children themselves and can ensure that
+their children will never make a geometry request.
+
+.NH 2
+Initiating Geometry Changes
+.LP
+.XS
+\*(SN Initiating Geometry Changes
+.XE
+Parents, children, and clients each initiate geometry changes differently.
+Because a parent has absolute control of its children's geometry,
+it changes the geometry directly by calling
+.PN XtMove\%Widget ,
+.PN XtResizeWidget ,
+or
+.PN XtConfigureWidget .
+A child must ask its parent for a geometry change by calling
+.PN XtMakeGeometryRequest
+or
+.PN XtMakeResizeRequest .
+An application or other client code initiates a geometry change by calling
+.PN XtSetValues
+on the appropriate geometry fields,
+thereby giving the widget the opportunity to modify or reject the client
+request before it gets propagated to the parent and the opportunity
+to respond appropriately to the parent's reply.
+.LP
+When a widget that needs to change its size, position, border width,
+or stacking depth asks its parent's geometry manager to make the desired
+changes,
+the geometry manager can allow the request, disallow the request, or
+suggest a compromise.
+.LP
+When the geometry manager is asked to change the geometry of a child,
+the geometry manager may also rearrange and resize any or all
+of the other children that it controls.
+The geometry manager can move children around freely using
+.PN XtMoveWidget .
+When it resizes a child (that is, changes the width, height, or
+border width) other than the one making the request,
+it should do so by calling
+.PN XtResizeWidget .
+The requesting child may be given special treatment; see Section 6.5.
+It can simultaneously move and resize a child with a single call to
+.PN XtConfigureWidget .
+.LP
+Often, geometry managers find that they can satisfy a request only if
+they can reconfigure a widget that they are not in control of; in particular,
+the
+composite
+widget may want to change its own size.
+In this case,
+the geometry manager makes a request to its parent's geometry manager.
+Geometry requests can cascade this way to arbitrary depth.
+.LP
+Because such cascaded arbitration of widget geometry can involve extended
+negotiation,
+windows are not actually allocated to widgets at application
+startup until all widgets are satisfied with their geometry;
+see Sections 2.5 and 2.6.
+.NT Notes
+.IP 1. 5
+The \*(xI treatment of stacking requests is deficient in several areas.
+Stacking requests for unrealized widgets are granted but will have no effect.
+In addition, there is no way to do an
+.PN XtSetValues
+that will generate a stacking geometry request.
+.IP 2. 5
+After a successful geometry request (one that returned
+.PN XtGeometryYes ),
+a widget does not know whether its resize procedure has been called.
+Widgets should have resize procedures that can be called more than once
+without ill effects.
+.NE
+
+.NH 2
+General Geometry Manager Requests
+.XS
+\*(SN General Geometry Manager Requests
+.XE
+.LP
+When making a geometry request, the child specifies an
+.PN XtWidgetGeometry
+structure.
+.LP
+.IN "XtGeometryMask"
+.KS
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef unsigned long XtGeometryMask;
+
+typedef struct {
+ XtGeometryMask request_mode;
+ Position x, y;
+ Dimension width, height;
+ Dimension border_width;
+ Widget sibling;
+ int stack_mode;
+} XtWidgetGeometry;
+.De
+.eM
+.KE
+.LP
+To make a general geometry manager request from a widget, use
+.PN XtMakeGeometryRequest .
+.LP
+.IN "XtMakeGeometryRequest" "" "@DEF@"
+.sM
+.FD 0
+XtGeometryResult XtMakeGeometryRequest(\fIw\fP, \fIrequest\fP, \
+\fIreply_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtWidgetGeometry *\fIrequest\fP;
+.br
+ XtWidgetGeometry *\fIreply_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget making the request. \*(rI
+.IP \fIrequest\fP 1i
+Specifies the desired widget geometry (size, position, border width,
+and stacking order).
+.IP \fIreply_return\fP 1i
+Returns the allowed widget size, or may be NULL
+if the requesting widget is not interested in handling
+.PN XtGeometryAlmost .
+.LP
+.eM
+Depending on the condition,
+.PN XtMakeGeometryRequest
+performs the following:
+.IP \(bu 5
+If the widget is unmanaged or the widget's parent is not realized,
+it makes the changes and returns
+.PN XtGeometryYes .
+.IP \(bu 5
+If the parent's class is not a subclass of
+.PN compositeWidgetClass
+or the parent's \fIgeometry_manager\fP field is NULL,
+it issues an error.
+.IP \(bu 5
+If the widget's \fIbeing_destroyed\fP field is
+.PN True ,
+it returns
+.PN XtGeometryNo .
+.IP \(bu 5
+If the widget \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP, and
+\fIborder_width\fP fields are
+all equal to the requested values,
+it returns
+.PN XtGeometryYes ;
+otherwise, it calls the parent's geometry_manager procedure
+with the given parameters.
+.IP \(bu 5
+If the parent's geometry manager returns
+.PN XtGeometryYes
+and if
+.PN XtCWQueryOnly
+is not set in \fIrequest->request_mode\fP
+and if the widget is realized,
+.PN XtMakeGeometryRequest
+calls the
+.PN XConfigureWindow
+Xlib function to reconfigure the widget's window (set its size, location,
+and stacking order as appropriate).
+.IP \(bu 5
+If the geometry manager returns
+.PN XtGeometryDone ,
+the change has been approved and actually has been done.
+In this case,
+.PN XtMakeGeometryRequest
+does no configuring and returns
+.PN XtGeometryYes .
+.PN XtMakeGeometryRequest
+never returns
+.PN XtGeometryDone .
+.IP \(bu 5
+Otherwise,
+.PN XtMakeGeometryRequest
+just returns the resulting value from the parent's geometry manager.
+.LP
+Children of primitive widgets are always unmanaged; therefore,
+.PN XtMakeGeometryRequest
+always returns
+.PN XtGeometryYes
+when called by a child of a primitive widget.
+.LP
+The return codes from geometry managers are
+.IN "XtGeometryResult"
+.LP
+.KS
+.sM
+.Ds 0
+.TA .5i 1.75i
+.ta .5i 1.75i
+typedef enum {
+ XtGeometryYes,
+ XtGeometryNo,
+ XtGeometryAlmost,
+ XtGeometryDone
+} XtGeometryResult;
+.De
+.eM
+.KE
+.LP
+The \fIrequest_mode\fP definitions are from
+.Pn < X11/X.h >.
+.LP
+.sM
+.TS
+lw(.5i) lw(2.5i) lw(.75i).
+T{
+#define
+T} T{
+.PN CWX
+T} T{
+(1<<0)
+T}
+T{
+#define
+T} T{
+.PN CWY
+T} T{
+(1<<1)
+T}
+T{
+#define
+T} T{
+.PN CWWidth
+T} T{
+(1<<2)
+T}
+T{
+#define
+T} T{
+.PN CWHeight
+T} T{
+(1<<3)
+T}
+T{
+#define
+T} T{
+.PN CWBorderWidth
+T} T{
+(1<<4)
+T}
+T{
+#define
+T} T{
+.PN CWSibling
+T} T{
+(1<<5)
+T}
+T{
+#define
+T} T{
+.PN CWStackMode
+T} T{
+(1<<6)
+T}
+.TE
+.LP
+.eM
+The \*(xI also support the following value.
+.LP
+.sM
+.TS
+lw(.5i) lw(2.5i) lw(.75i).
+T{
+#define
+T} T{
+.PN XtCWQueryOnly
+T} T{
+(1<<7)
+T}
+.TE
+.LP
+.eM
+.PN XtCWQueryOnly
+indicates that the corresponding geometry request is only a query
+as to what would happen if this geometry request were made
+and that no widgets should actually be changed.
+.LP
+.PN XtMakeGeometryRequest ,
+like the
+.PN XConfigureWindow
+Xlib function, uses \fIrequest_mode\fP to determine which fields in the
+.PN XtWidgetGeometry
+structure the caller wants to specify.
+.LP
+The \fIstack_mode\fP definitions are from
+.Pn < X11/X.h >:
+.LP
+.sM
+.TS
+lw(.5i) lw(2.5i) lw(.75i).
+T{
+#define
+T} T{
+.PN Above
+T} T{
+0
+T}
+T{
+#define
+T} T{
+.PN Below
+T} T{
+1
+T}
+T{
+#define
+T} T{
+.PN TopIf
+T} T{
+2
+T}
+T{
+#define
+T} T{
+.PN BottomIf
+T} T{
+3
+T}
+T{
+#define
+T} T{
+.PN Opposite
+T} T{
+4
+T}
+.TE
+.LP
+.eM
+The \*(xI also support the following value.
+.LP
+.sM
+.TS
+lw(.5i) lw(2.5i) lw(.75i).
+T{
+#define
+T} T{
+.PN XtSMDontChange
+T} T{
+5
+T}
+.TE
+.LP
+.eM
+For definition and behavior of
+.PN Above ,
+.PN Below ,
+.PN TopIf ,
+.PN BottomIf ,
+and
+.PN Opposite ,
+see Section 3.7 in \fI\*(xL\fP.
+.PN XtSMDontChange
+indicates that the widget wants its current stacking order preserved.
+
+.NH 2
+Resize Requests
+.XS
+\*(SN Resize Requests
+.XE
+.LP
+To make a simple resize request from a widget, you can use
+.PN XtMakeResizeRequest
+as an alternative to
+.PN XtMakeGeometryRequest .
+.LP
+.IN "XtMakeResizeRequest" "" "@DEF@"
+.sM
+.FD 0
+XtGeometryResult XtMakeResizeRequest(\fIw\fP, \fIwidth\fP, \fIheight\fP, \
+\fIwidth_return\fP, \fIheight_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Dimension \fIwidth\fP, \fIheight\fP;
+.br
+ Dimension *\fIwidth_return\fP, *\fIheight_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget making the request. \*(rI
+.IP \fIwidth\fP 1i
+Specify the desired widget width and height.
+.br
+.ns
+.IP \fIheight\fP 1i
+.IP \fIwidth_return\fP 1i
+Return the allowed widget width and height.
+.br
+.ns
+.IP \fIheight_return\fP 1i
+.LP
+.eM
+The
+.PN XtMakeResizeRequest
+function, a simple interface to
+.PN XtMakeGeometryRequest ,
+creates an
+.PN XtWidgetGeometry
+structure and specifies that width and height should change
+by setting \fIrequest_mode\fP to
+.PN CWWidth
+\fB|\fP
+.PN CWHeight .
+The geometry manager is free to modify any of the other window attributes
+(position or stacking order) to satisfy the resize request.
+If the return value is
+.PN XtGeometryAlmost ,
+\fIwidth_return\fP and \fIheight_return\fP contain a compromise width and height.
+If these are acceptable,
+the widget should immediately call
+.PN XtMakeResizeRequest
+again and request that the compromise width and height be applied.
+If the widget is not interested in
+.PN XtGeometryAlmost
+replies,
+it can pass NULL for \fIwidth_return\fP and \fIheight_return\fP.
+
+.NH 2
+Potential Geometry Changes
+.XS
+\*(SN Potential Geometry Changes
+.XE
+.LP
+Sometimes a geometry manager cannot respond to
+a geometry request from a child without first making a geometry request
+to the widget's own parent (the original requestor's grandparent).
+If the request to the grandparent would allow the parent to satisfy the
+original request,
+the geometry manager can make the intermediate geometry request
+as if it were the originator.
+On the other hand,
+if the geometry manager already has determined that the original request
+cannot be completely satisfied (for example, if it always denies
+position changes),
+it needs to tell the grandparent to respond to the intermediate request
+without actually changing the geometry
+because it does not know if the child will accept the compromise.
+To accomplish this, the geometry manager uses
+.PN XtCWQueryOnly
+in the intermediate request.
+.LP
+When
+.PN XtCWQueryOnly
+is used, the geometry manager needs to cache
+enough information to exactly reconstruct the intermediate request.
+If the grandparent's response to the intermediate query was
+.PN XtGeometryAlmost ,
+the geometry manager needs to cache the entire
+reply geometry in the event the child accepts the parent's compromise.
+.LP
+If the grandparent's response was
+.PN XtGeometryAlmost ,
+it may also be necessary to cache the entire reply geometry from
+the grandparent when
+.PN XtCWQueryOnly
+is not used.
+If the geometry manager is still able to satisfy the original request,
+it may immediately accept the grandparent's compromise
+and then act on the child's request.
+If the grandparent's compromise geometry is insufficient to allow
+the child's request and if the geometry manager is willing to offer
+a different compromise to the child,
+the grandparent's compromise should not be accepted until the child
+has accepted the new compromise.
+.LP
+Note that a compromise geometry returned with
+.PN XtGeometryAlmost
+is guaranteed only for the next call to the same widget;
+therefore, a cache of size 1 is sufficient.
+
+.NH 2
+Child Geometry Management: The geometry_manager Procedure
+.XS
+\*(SN Child Geometry Management: The geometry_manager Procedure
+.XE
+.LP
+The geometry_manager procedure pointer in a composite widget class is of type
+.PN XtGeometryHandler .
+.LP
+.IN "XtGeometryHandler" "" "@DEF@"
+.sM
+.FD 0
+typedef XtGeometryResult (*XtGeometryHandler)(Widget, XtWidgetGeometry*, \
+XtWidgetGeometry*);
+.br
+ Widget \fIw\fP;
+.br
+ XtWidgetGeometry *\fIrequest\fP;
+.br
+ XtWidgetGeometry *\fIgeometry_return\fP;
+.FN
+.IP \fIw\fP 1.2i
+Passes the widget making the request.
+.IP \fIrequest\fP 1.2i
+Passes the new geometry the child desires.
+.IP \fIgeometry_return\fP 1.2i
+Passes a geometry structure in which the geometry manager may store a
+compromise.
+.LP
+.eM
+A class can inherit its superclass's geometry manager during class
+initialization.
+.LP
+A bit set to zero in the request's \fIrequest_mode\fP
+field means that the child widget
+does not care about the value of the corresponding field,
+so the geometry manager can change this field as it wishes.
+A bit set to 1 means that the child wants that geometry element set
+to the value in the corresponding field.
+.LP
+If the geometry manager can satisfy all changes requested
+and if
+.PN XtCWQueryOnly
+is not specified,
+it updates the widget's \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP,
+and \fIborder_width\fP fields
+appropriately.
+Then, it returns
+.PN XtGeometryYes ,
+and the values pointed to by the \fIgeometry_return\fP argument are undefined.
+The widget's window is moved and resized automatically by
+.PN XtMakeGeometryRequest .
+.LP
+Homogeneous composite widgets often find it convenient to treat the widget
+making the request the same as any other widget, including reconfiguring
+it using
+.PN XtConfigureWidget
+or
+.PN XtResizeWidget
+as part of its layout process, unless
+.PN XtCWQueryOnly
+is specified.
+If it does this,
+it should return
+.PN XtGeometryDone
+to inform
+.PN XtMakeGeometryRequest
+that it does not need to do the configuration itself.
+.NT
+To remain
+compatible with layout techniques used in older widgets (before
+.PN XtGeometryDone
+was added to the \*(xI), a geometry manager should avoid using
+.PN XtResizeWidget
+or
+.PN XtConfigureWidget
+on the child making
+the request because the layout process of the child may be in an
+intermediate state in which it is not prepared to handle a call to its
+resize procedure. A self-contained widget set may choose this
+alternative geometry management scheme, however, provided that it
+clearly warns widget developers of the compatibility consequences.
+.NE
+.LP
+Although
+.PN XtMakeGeometryRequest
+resizes the widget's window
+(if the geometry
+manager returns
+.PN XtGeometryYes ),
+it does not call the widget class's resize procedure.
+The requesting widget must perform whatever
+resizing calculations are needed explicitly.
+.LP
+If the geometry manager disallows the request,
+the widget cannot change its geometry.
+The values pointed to by \fIgeometry_return\fP are undefined,
+and the geometry manager returns
+.PN XtGeometryNo .
+.LP
+Sometimes the geometry manager cannot satisfy the request exactly
+but may be able to satisfy a similar request.
+That is,
+it could satisfy only a subset of the requests (for example,
+size but not position) or a lesser request
+(for example, it cannot make the child as big as the
+request but it can make the child bigger than its current size).
+In such cases,
+the geometry manager fills in the structure pointed to by
+\fIgeometry_return\fP with the actual changes
+it is willing to make, including an appropriate \fIrequest_mode\fP mask, and returns
+.PN XtGeometryAlmost .
+If a bit in \fIgeometry_return->request_mode\fP is zero,
+the geometry manager agrees not to change the corresponding value
+if \fIgeometry_return\fP is used immediately
+in a new request.
+If a bit is 1,
+the geometry manager does change that element to the corresponding
+value in \fIgeometry_return\fP.
+More bits may be set in \fIgeometry_return->request_mode\fP
+than in the original request if
+the geometry manager intends to change other fields should the
+child accept the compromise.
+.LP
+When
+.PN XtGeometryAlmost
+is returned,
+the widget must decide if the compromise suggested in \fIgeometry_return\fP
+is acceptable.
+If it is, the widget must not change its geometry directly;
+rather, it must make another call to
+.PN XtMakeGeometryRequest .
+.LP
+If the next geometry request from this child uses the
+\fIgeometry_return\fP values filled in by the geometry manager with an
+.PN XtGeometryAlmost
+return and if there have been no intervening geometry requests on
+either its parent or any of its other children,
+the geometry manager must grant the request, if possible.
+That is, if the child asks immediately with the returned geometry,
+it should get an answer of
+.PN XtGeometryYes .
+However,
+dynamic behavior in
+the user's window manager may affect the final outcome.
+.LP
+To return
+.PN XtGeometryYes ,
+the geometry manager frequently rearranges the position of other managed
+children by calling
+.PN XtMoveWidget .
+However, a few geometry managers may sometimes change the
+size of other managed children by calling
+.PN XtResizeWidget
+or
+.PN XtConfigureWidget .
+If
+.PN XtCWQueryOnly
+is specified,
+the geometry manager must return data describing
+how it would react to this geometry
+request without actually moving or resizing any widgets.
+.LP
+Geometry managers must not assume that the \fIrequest\fP
+and \fIgeometry_return\fP arguments point to independent storage.
+The caller is permitted to use the same field for both,
+and the geometry manager must allocate its own temporary storage,
+if necessary.
+
+.NH 2
+Widget Placement and Sizing
+.XS
+\*(SN Widget Placement and Sizing
+.XE
+.LP
+To move a sibling widget of the child making the geometry request,
+the parent uses
+.PN XtMoveWidget .
+.LP
+.IN "XtMoveWidget" "" "@DEF@"
+.sM
+.FD 0
+void XtMoveWidget(\fIw\fP, \fIx\fP, \fIy\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Position \fIx\fP;
+.br
+ Position \fIy\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(rI
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the new widget x and y coordinates.
+.LP
+.eM
+The
+.PN XtMoveWidget
+function returns immediately if the specified geometry fields
+are the same as the old values.
+Otherwise,
+.PN XtMoveWidget
+writes the new \fIx\fP and \fIy\fP values into the object
+and, if the object is a widget and is realized, issues an Xlib
+.PN XMoveWindow
+call on the widget's window.
+.sp
+.LP
+To resize a sibling widget of the child making the geometry request,
+the parent uses
+.PN XtResizeWidget .
+.LP
+.IN "XtResizeWidget" "" "@DEF@"
+.sM
+.FD 0
+void XtResizeWidget(\fIw\fP, \fIwidth\fP, \fIheight\fP, \fIborder_width\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Dimension \fIwidth\fP;
+.br
+ Dimension \fIheight\fP;
+.br
+ Dimension \fIborder_width\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(rI
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+.br
+.ns
+.IP \fIborder_width\fP 1i
+Specify the new widget size.
+.LP
+.eM
+The
+.PN XtResizeWidget
+function returns immediately if the specified geometry fields
+are the same as the old values.
+Otherwise,
+.PN XtResizeWidget
+writes the new \fIwidth\fP, \fIheight\fP, and \fIborder_width\fP values into
+the object and, if the object is a widget and is realized, issues an
+.PN XConfigureWindow
+call on the widget's window.
+.LP
+If the new width or height is different from the old values,
+.PN XtResizeWidget
+calls the object's resize procedure to notify it of the size change.
+.sp
+.LP
+To move and resize the sibling widget of the child making the geometry request,
+the parent uses
+.PN XtConfigureWidget .
+.LP
+.IN "XtConfigureWidget" "" "@DEF@"
+.sM
+.FD 0
+void XtConfigureWidget(\fIw\fP, \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP, \
+\fIborder_width\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Position \fIx\fP;
+.br
+ Position \fIy\fP;
+.br
+ Dimension \fIwidth\fP;
+.br
+ Dimension \fIheight\fP;
+.br
+ Dimension \fIborder_width\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(rI
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the new widget x and y coordinates.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+.br
+.ns
+.IP \fIborder_width\fP 1i
+Specify the new widget size.
+.LP
+.eM
+The
+.PN XtConfigureWidget
+function returns immediately if the specified new geometry fields
+are all equal to the current values.
+Otherwise,
+.PN XtConfigureWidget
+writes the new \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP,
+and \fIborder_width\fP values
+into the object and, if the object is a widget and is realized, makes an Xlib
+.PN XConfigureWindow
+call on the widget's window.
+.LP
+If the new width or height is different from its old value,
+.PN XtConfigureWidget
+calls the object's resize procedure to notify it of the size change;
+otherwise, it simply returns.
+.sp
+.LP
+To resize a child widget that already has the new values of its width,
+height, and border width, the parent uses
+.PN XtResizeWindow .
+.LP
+.IN "XtResizeWindow" "" "@DEF@"
+.sM
+.FD 0
+void XtResizeWindow(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+The
+.PN XtResizeWindow
+function calls the
+.PN XConfigureWindow
+Xlib function to make the window of the specified widget match its width,
+height, and border width.
+This request is done unconditionally because there is no
+inexpensive way to tell if these
+values match the current values.
+Note that the widget's resize procedure is not called.
+.LP
+There are very few times to use
+.PN XtResizeWindow ;
+instead, the parent should use
+.PN XtResizeWidget .
+
+.NH 2
+Preferred Geometry
+.XS
+\*(SN Preferred Geometry
+.XE
+.LP
+Some parents may be willing to adjust their layouts to accommodate the
+preferred geometries of their children.
+They can use
+.PN XtQueryGeometry
+to obtain the preferred geometry
+and, as they see fit, can use or ignore any portion of the response.
+.sp
+.LP
+To query a child widget's preferred geometry, use
+.PN XtQueryGeometry .
+.LP
+.IN "XtQueryGeometry" "" "@DEF@"
+.sM
+.FD 0
+XtGeometryResult XtQueryGeometry(\fIw\fP, \fIintended\fP, \
+\fIpreferred_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtWidgetGeometry *\fIintended\fP;
+.br
+ XtWidgetGeometry *\fIpreferred_return\fP;
+.FN
+.IP \fIw\fP 1.1i
+Specifies the widget. \*(rI
+.IP \fIintended\fP 1.1i
+Specifies the new geometry the parent plans to give to the child, or
+NULL.
+.IP \fIpreferred_return\fP 1.1i
+Returns the child widget's preferred geometry.
+.LP
+.eM
+To discover a child's preferred geometry,
+the child's parent stores the new
+geometry in the corresponding fields of
+the intended structure, sets the corresponding bits in \fIintended.request_mode\fP,
+and calls
+.PN XtQueryGeometry .
+The parent should set only those fields that are important to it so
+that the child can determine whether it may be able to attempt changes to
+other fields.
+.LP
+.PN XtQueryGeometry
+clears all bits in the \fIpreferred_return->request_mode\fP
+field and checks the
+\fIquery_geometry\fP field of the specified widget's class record.
+If \fIquery_geometry\fP is not NULL,
+.PN XtQueryGeometry
+calls the query_geometry procedure and passes as arguments the
+specified widget, \fIintended\fP, and \fIpreferred_return\fP structures.
+If the \fIintended\fP argument is NULL,
+.PN XtQueryGeometry
+replaces it with a pointer to an
+.PN XtWidgetGeometry
+structure with \fIrequest_mode\fP equal to zero before calling the
+query_geometry procedure.
+.NT
+If
+.PN XtQueryGeometry
+is called from within a geometry_manager
+procedure for the widget that issued
+.PN XtMakeGeometryRequest
+or
+.PN XtMakeResizeRequest ,
+the results
+are not guaranteed to be consistent with the requested changes. The
+change request passed to the geometry manager takes precedence over
+the preferred geometry.
+.NE
+.sp
+.LP
+The query_geometry procedure pointer is of type
+.PN XtGeometryHandler .
+.LP
+.IN "query_geometry procedure" "" "@DEF@"
+.sM
+.FD 0
+typedef XtGeometryResult (*XtGeometryHandler)(Widget, XtWidgetGeometry*, \
+XtWidgetGeometry*);
+.br
+ Widget \fIw\fP;
+.br
+ XtWidgetGeometry *\fIrequest\fP;
+.br
+ XtWidgetGeometry *\fIpreferred_return\fP;
+.FN
+.IP \fIw\fP 1.2i
+Passes the child widget whose preferred geometry is required.
+.IP \fIrequest\fP 1.2i
+Passes the geometry changes that the parent plans to make.
+.IP \fIpreferred_return\fP 1.2i
+Passes a structure in which the child returns its preferred geometry.
+.LP
+.eM
+.IN "query_geometry procedure"
+The query_geometry procedure is expected to examine the bits set in
+\fIrequest->request_mode\fP, evaluate the preferred geometry of the widget,
+and store the result in \fIpreferred_return\fP
+(setting the bits in \fIpreferred_return->request_mode\fP corresponding
+to those geometry fields that it cares about).
+If the proposed geometry change is acceptable without modification,
+the query_geometry procedure should return
+.PN XtGeometryYes .
+If at least one field in \fIpreferred_return\fP
+with a bit set in \fIpreferred_return->request_mode\fP
+is different
+from the corresponding field in \fIrequest\fP
+or if a bit was set in \fIpreferred_return->request_mode\fP
+that was not set in the request,
+the query_geometry procedure should return
+.PN XtGeometryAlmost .
+If the preferred geometry is identical to the current geometry,
+the query_geometry procedure should return
+.PN XtGeometryNo .
+.NT
+The query_geometry procedure may assume
+that no
+.PN XtMakeResizeRequest
+or
+.PN XtMakeGeometryRequest
+is in progress
+for the specified widget; that is, it is not required to construct
+a reply consistent with the requested geometry if such a request
+were actually outstanding.
+.NE
+.LP
+After calling the query_geometry procedure
+or if the \fIquery_geometry\fP field is NULL,
+.PN XtQueryGeometry
+examines all the unset bits in \fIpreferred_return->request_mode\fP
+and sets the corresponding fields in \fIpreferred_return\fP
+to the current values from the widget instance.
+If
+.PN CWStackMode
+is not set,
+the \fIstack_mode\fP field is set to
+.PN XtSMDontChange .
+.PN XtQueryGeometry
+returns the value returned by the query_geometry procedure or
+.PN XtGeometryYes
+if the \fIquery_geometry\fP field is NULL.
+.LP
+Therefore, the caller can interpret a return of
+.PN XtGeometryYes
+as not needing to evaluate the contents of the reply and, more important,
+not needing to modify its layout plans.
+A return of
+.PN XtGeometryAlmost
+means either that both the parent and the child expressed interest
+in at least one common field and the child's preference does not match
+the parent's intentions or that the child expressed interest in a field that
+the parent might need to consider.
+A return value of
+.PN XtGeometryNo
+means that both the parent and the child expressed interest in a field and
+that the child suggests that the field's current value in the widget instance
+is its preferred value.
+In addition, whether or not the caller ignores the return value or the
+reply mask, it is guaranteed that the \fIpreferred_return\fP structure contains complete
+geometry information for the child.
+.LP
+Parents are expected to call
+.PN XtQueryGeometry
+in their layout routine and wherever else the information is significant
+after change_managed has been called.
+The first time it is invoked,
+the changed_managed procedure may assume that the child's current geometry
+is its preferred geometry.
+Thus, the child is still responsible for storing values
+into its own geometry during its initialize procedure.
+
+.NH 2
+Size Change Management: The resize Procedure
+.XS
+\*(SN Size Change Management: The resize Procedure
+.XE
+.LP
+A child can be resized by its parent at any time.
+Widgets usually need to know when they have changed size
+so that they can lay out their displayed data again to match the new size.
+When a parent resizes a child, it calls
+.PN XtResizeWidget ,
+which updates the geometry fields in the widget,
+configures the window if the widget is realized,
+and calls the child's resize procedure to notify the child.
+The resize procedure pointer is of type
+.PN XtWidgetProc .
+.IN "resize procedure" "" "@DEF@"
+.LP
+If a class need not recalculate anything when a widget is resized,
+it can specify NULL for the \fIresize\fP field in its class record.
+This is an unusual case and should occur only for widgets
+with very trivial display semantics.
+The resize procedure takes a widget as its only argument.
+The \fIx\fP, \fIy\fP, \fIwidth\fP, \fIheight\fP,
+and \fIborder_width\fP fields of the widget contain the new values.
+The resize procedure should recalculate the layout of internal data
+as needed.
+(For example, a centered Label in a window that changes size
+should recalculate the starting position of the text.)
+The widget must obey resize as a command and must not treat it as a request.
+A widget must not issue an
+.PN XtMakeGeometryRequest
+or
+.PN XtMakeResizeRequest
+call from its resize procedure.
+.bp
diff --git a/specs/Xt/CH07 b/specs/Xt/CH07
new file mode 100644
index 0000000..07b3674
--- /dev/null
+++ b/specs/Xt/CH07
@@ -0,0 +1,3555 @@
+.\" $Xorg: CH07,v 1.4 2000/08/17 19:42:45 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 7\fP\s-1
+
+\s+1\fBEvent Management\fP\s-1
+.sp 2
+.nr H1 7
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 7 \(em Event Management
+.XE
+While Xlib allows the reading and processing of events anywhere in an application,
+widgets in the \*(tk neither directly read events
+nor grab the server or pointer.
+Widgets register procedures that are to be called
+when an event or class of events occurs in that widget.
+.LP
+A typical application consists of startup code followed by an event loop
+that reads events and dispatches them by calling
+the procedures that widgets have registered.
+The default event loop provided by the \*(xI is
+.PN XtAppMainLoop .
+.LP
+The event manager is a collection of functions to perform the following tasks:
+.IP \(bu 5
+Add or remove event sources other than X server events (in particular,
+timer interrupts, file input, or POSIX signals).
+.IP \(bu 5
+Query the status of event sources.
+.IP \(bu 5
+Add or remove procedures to be called when an event occurs for a particular
+widget.
+.IP \(bu 5
+Enable and
+disable the dispatching of user-initiated events (keyboard and pointer events)
+for a particular widget.
+.IP \(bu 5
+Constrain the dispatching of events to a cascade of pop-up widgets.
+.IP \(bu 5
+Register procedures to be called when specific events arrive.
+.IP \(bu 5
+Register procedures to be called when the \*(xI will block.
+.IP \(bu 5
+Enable safe operation in a multi-threaded environment.
+.LP
+Most widgets do not need to call any of the event handler functions explicitly.
+The normal interface to X events is through the higher-level
+translation manager,
+which maps sequences of X events, with modifiers, into procedure calls.
+Applications rarely use any of the event manager routines besides
+.PN XtAppMainLoop .
+
+.NH 2
+Adding and Deleting Additional Event Sources
+.XS
+\fB\*(SN Adding and Deleting Additional Event Sources\fP
+.XE
+.LP
+While most applications are driven only by X events,
+some applications need to incorporate other sources of input
+into the \*(xI event-handling mechanism.
+The event manager provides routines to integrate notification of timer events
+and file data pending into this mechanism.
+.LP
+The next section describes functions that provide input gathering from files.
+The application registers the files with the \*(xI read routine.
+When input is pending on one of the files,
+the registered callback procedures are invoked.
+
+.NH 3
+Adding and Removing Input Sources
+.XS
+\fB\*(SN Adding and Removing Input Sources\fP
+.XE
+.LP
+To register a new file as an input source for a given application context, use
+.PN XtAppAddInput .
+.LP
+.IN "XtAppAddInput" "" "@DEF@"
+.sM
+.FD 0
+XtInputId XtAppAddInput(\fIapp_context\fP, \fIsource\fP, \fIcondition\fP, \
+\fIproc\fP, \fIclient_data\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ int \fIsource\fP;
+.br
+ XtPointer \fIcondition\fP;
+.br
+ XtInputCallbackProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application.
+.IP \fIsource\fP 1i
+Specifies the source file descriptor on a POSIX-based system
+or other operating-system-dependent device specification.
+.IP \fIcondition\fP 1i
+Specifies the mask that indicates a read, write, or exception condition
+or some other operating-system-dependent condition.
+.IP \fIproc\fP 1i
+Specifies the procedure to be called when the condition is found.
+.IP \fIclient_data\fP 1i
+Specifies an argument passed to the specified procedure
+when it is called.
+.LP
+.eM
+The
+.PN XtAppAddInput
+function registers with the \*(xI read routine a new source of events,
+which is usually file input but can also be file output.
+Note that \fIfile\fP should be loosely interpreted to mean any sink
+or source of data.
+.PN XtAppAddInput
+also specifies the conditions under which the source can generate events.
+When an event is pending on this source,
+the callback procedure is called.
+.LP
+The legal values for the \fIcondition\fP argument are operating-system-dependent.
+On a POSIX-based system,
+\fIsource\fP is a file number and the condition is some union of the following:
+.IN "XtInputReadMask" "" "@DEF@"
+.IP \fBXtInputReadMask\fR 1.5i
+Specifies that \fIproc\fP is to be called when \fIsource\fP has data to be read.
+.IN "XtInputWriteMask" "" "@DEF@"
+.IP \fBXtInputWriteMask\fR 1.5i
+Specifies that \fIproc\fP is to be called when \fIsource\fP is ready
+for writing.
+.IN "XtInputExceptMask" "" "@DEF@"
+.IP \fBXtInputExceptMask\fR 1.5i
+Specifies that \fIproc\fP is to be called when \fIsource\fP has
+exception data.
+.LP
+Callback procedure pointers used to handle file events are of
+type
+.PN XtInputCallbackProc .
+.LP
+.IN "XtInputCallbackProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtInputCallbackProc)(XtPointer, int*, XtInputId*);
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ int *\fIsource\fP;
+.br
+ XtInputId *\fIid\fP;
+.FN
+.IP \fIclient_data\fP 1i
+Passes the client data argument that was registered for this procedure in
+.PN XtApp\%AddInput .
+.IP \fIsource\fP 1i
+Passes the source file descriptor generating the event.
+.IP \fIid\fP 1i
+Passes the id returned from the corresponding
+.PN XtAppAddInput
+call.
+.LP
+.eM
+See Section 7.12 for information regarding the use of
+.PN XtAppAddInput
+in multiple threads.
+.sp
+.LP
+To discontinue a source of input, use
+.PN XtRemoveInput .
+.LP
+.IN "XtRemoveInput" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveInput(\fIid\fP)
+.br
+ XtInputId \fIid\fP;
+.FN
+.IP \fIid\fP 1i
+Specifies the id returned from the corresponding
+.PN XtAppAddInput
+call.
+.LP
+.eM
+The
+.PN XtRemoveInput
+function causes the \*(xI read routine to stop watching for events
+from the file source specified by \fIid\fP.
+.LP
+See Section 7.12 for information regarding the use of
+.PN XtRemoveInput
+in multiple threads.
+
+.NH 3
+Adding and Removing Blocking Notifications
+.XS
+\fB\*(SN Adding and Removing Blocking Notifications\fP
+.XE
+.LP
+Occasionally it is desirable for an application to receive notification
+when the \*(xI event manager detects no pending input from file sources
+and no pending input from X server event sources and is about to block
+in an operating system call.
+.sp
+.LP
+To register a hook that is called immediately prior to event blocking, use
+.PN XtAppAddBlockHook .
+.LP
+.IN "XtAppAddBlockHook" "" "@DEF@"
+.sM
+.FD 0
+XtBlockHookId XtAppAddBlockHook(\fIapp_context\fP, \fIproc\fP, \
+\fIclient_data\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtBlockHookProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application.
+.IP \fIproc\fP 1i
+Specifies the procedure to be called before blocking.
+.IP \fIclient_data\fP 1i
+Specifies an argument passed to the specified procedure when it is called.
+.LP
+.eM
+The
+.PN XtAppAddBlockHook
+function registers the specified procedure and returns an identifier for it.
+The hook procedure \fIproc\fP is called at any time in the future when
+the \*(xI are about to block pending some input.
+.LP
+The procedure pointers used to provide notification of event blocking
+are of type
+.PN XtBlockHookProc .
+.LP
+.IN "XtBlockHookProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtBlockHookProc)(XtPointer);
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIclient_data\fP 1i
+Passes the client data argument that was registered for this procedure in
+.PN XtApp\%AddBlockHook .
+.LP
+.eM
+To discontinue the use of a procedure for blocking notification, use
+.PN XtRemoveBlockHook .
+.LP
+.IN "XtRemoveBlockHook" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveBlockHook(\fIid\fP)
+.br
+ XtBlockHookId \fIid\fP;
+.FN
+.IP \fIid\fP 1i
+Specifies the identifier returned from the corresponding call to
+.PN XtAppAddBlockHook .
+.LP
+.eM
+The
+.PN XtRemoveBlockHook
+function removes the specified procedure from the list of procedures
+that are called by the \*(xI read routine before blocking on event sources.
+
+.NH 3
+Adding and Removing Timeouts
+.XS
+\fB\*(SN Adding and Removing Timeouts\fP
+.XE
+.LP
+The timeout facility notifies the application or the widget
+through a callback procedure that a specified time interval has elapsed.
+Timeout values are uniquely identified by an interval id.
+.sp
+.LP
+To register a timeout callback, use
+.PN XtAppAddTimeOut .
+.LP
+.IN "XtAppAddTimeOut" "" "@DEF@"
+.sM
+.FD 0
+XtIntervalId XtAppAddTimeOut(\fIapp_context\fP, \fIinterval\fP, \fIproc\fP, \
+\fIclient_data\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ unsigned long \fIinterval\fP;
+.br
+ XtTimerCallbackProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context for which the timer is to be set.
+.IP \fIinterval\fP 1i
+Specifies the time interval in milliseconds.
+.IP \fIproc\fP 1i
+Specifies the procedure to be called when the time expires.
+.IP \fIclient_data\fP 1i
+Specifies an argument passed to the specified procedure
+when it is called.
+.LP
+.eM
+The
+.PN XtAppAddTimeOut
+function creates a timeout and returns an identifier for it.
+The timeout value is set to \fIinterval\fP.
+The callback procedure \fIproc\fP is called when
+.PN XtAppNextEvent
+or
+.PN XtAppProcessEvent
+is next called after the time interval elapses,
+and then the timeout is removed.
+.LP
+Callback procedure pointers used with timeouts are of
+type
+.PN XtTimerCallbackProc .
+.LP
+.IN "XtTimerCallbackProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtTimerCallbackProc)(XtPointer, XtIntervalId*);
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtIntervalId *\fItimer\fP;
+.FN
+.IP \fIclient_data\fP 1i
+Passes the client data argument that was registered for this procedure in
+.PN XtApp\%AddTimeOut .
+.IP \fItimer\fP 1i
+Passes the id returned from the corresponding
+.PN XtAppAddTimeOut
+call.
+.LP
+.eM
+See Section 7.12 for information regarding the use of
+.PN XtAppAddTimeOut
+in multiple threads.
+.sp
+.LP
+To clear a timeout value, use
+.PN XtRemoveTimeOut .
+.LP
+.IN "XtRemoveTimeOut" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveTimeOut(\fItimer\fP)
+.br
+ XtIntervalId \fItimer\fP;
+.FN
+.IP \fItimer\fP 1i
+Specifies the id for the timeout request to be cleared.
+.LP
+.eM
+The
+.PN XtRemoveTimeOut
+function removes the pending timeout.
+Note that timeouts are automatically removed once they trigger.
+.LP
+Please refer to Section 7.12 for information regarding the use of
+.PN XtRemoveTimeOut
+in multiple threads.
+
+.NH 3
+Adding and Removing Signal Callbacks
+.XS
+\fB\*(SN Adding and Removing Signal Callbacks\fP
+.XE
+.LP
+The signal facility notifies the application or the widget through a
+callback procedure that a signal or other external asynchronous event
+has occurred. The registered callback procedures are uniquely identified
+by a signal id.
+.sp
+.LP
+Prior to establishing a signal handler, the application or widget should
+call
+.PN XtAppAddSignal
+and store the resulting identifier in a place accessible to the signal
+handler. When a signal arrives, the signal handler should call
+.PN XtNoticeSignal
+to notify the \*(xI that a signal has occured. To register a signal
+callback use
+.PN XtAppAddSignal .
+.LP
+.IN "XtAppAddSignal" "" "@DEF@"
+.sM
+.FD 0
+XtSignalId XtAppAddSignal(\fIapp_context\fP, \fIproc\fP, \fIclient_data\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtSignalCallbackProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application.
+.IP \fIproc\fP 1i
+Specifies the procedure to be called when the signal is noticed.
+.IP \fIclient_data\fP 1i
+Specifies an argument passed to the specified procedure when it is called.
+.LP
+.eM
+The callback procedure pointers used to handle signal events are of type
+.PN XtSignalCallbackProc .
+.LP
+.IN "XtSignalCallbackProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtSignalCallbackProc)(XtPointer, XtSignalId*);
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtSignalId *\fIid\fP;
+.FN
+.IP \fIclient_data\fP 1i
+Passes the client data argument that was registered for this procedure in
+.PN XtAppAddSignal .
+.IP \fIid\fP 1i
+Passes the id returned from the corresponding
+.PN XtAppAddSignal
+call.
+.LP
+.eM
+To notify the \*(xI that a signal has occured, use
+.PN XtNoticeSignal .
+.LP
+.IN "XtNoticeSignal" "" "@DEF@"
+.sp
+.sM
+.FD 0
+void XtNoticeSignal(\fIid\fP)
+.br
+ XtSignalId \fIid\fP;
+.FN
+.IP \fIid\fP 1i
+Specifies the id returned from the corresponding
+.PN XtAppAddSignal
+call.
+.LP
+.eM
+On a POSIX-based system,
+.PN XtNoticeSignal
+is the only \*(xI function that can safely be called from a signal handler.
+If
+.PN XtNoticeSignal
+is invoked multiple times before the \*(xI are able to invoke the
+registered callback, the callback is only called once.
+Logically, the \*(xI maintain ``pending'' flag for each registered callback.
+This flag is initially
+.PN False
+and is set to
+.PN True
+by
+.PN XtNoticeSignal .
+When
+.PN XtAppNextEvent
+or
+.PN XtAppProcessEvent
+(with a mask including
+.PN XtIMSignal )
+is called, all registered callbacks with ``pending''
+.PN True
+are invoked and the flags are reset to
+.PN False .
+.LP
+If the signal handler wants to track how many times the signal has been
+raised, it can keep its own private counter. Typically the handler would
+not do any other work; the callback does the actual processing for the
+signal. The \*(xI never block signals from being raised, so if a given
+signal can be raised multiple times before the \*(xI can invoke the
+callback for that signal, the callback must be designed to deal with
+this. In another case, a signal might be raised just after the \*(xI
+sets the pending flag to
+.PN False
+but before the callback can get control, in which case the pending flag
+will still be
+.PN True
+after the callback returns, and the \*(xI will invoke the callback
+again, even though all of the signal raises have been handled. The
+callback must also be prepared to handle this case.
+.LP
+To remove a registered signal callback, call
+.PN XtRemoveSignal .
+.LP
+.IN "XtRemoveSignal" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveSignal(\fIid\fP)
+.br
+ XtSignalId \fIid\fP;
+.FN
+.IP \fIid\fP 1i
+Specifies the id returned by the corresponding call to
+.PN XtAppAddSignal .
+.LP
+.eM
+The client should typically disable the source of the signal before calling
+.PN XtRemoveSignal .
+If the signal could have been raised again before the source was disabled
+and the client wants to process it, then after disabling the source but
+before calling
+.PN XtRemoveSignal
+the client can test for signals with
+.PN XtAppPending
+and process them by calling
+.PN XtAppProcessEvent
+with the mask
+.PN XtIMSignal .
+
+.NH 2
+Constraining Events to a Cascade of Widgets
+.XS
+\fB\*(SN Constraining Events to a Cascade of Widgets\fP
+.XE
+.LP
+.IN "Grabbing Input"
+.IN "Input Grabbing"
+Modal widgets are widgets that, except for the input directed to them,
+lock out user input to the application.
+.LP
+When a modal menu or modal dialog box is popped up using
+.PN XtPopup ,
+user events (keyboard and pointer events) that occur outside the modal
+widget should be delivered to the modal widget or ignored.
+In no case will user events be delivered to a widget outside
+the modal widget.
+.LP
+Menus can pop up submenus, and dialog boxes can pop up further dialog
+boxes to create a pop-up cascade.
+In this case,
+user events may be delivered to one of several modal widgets in the cascade.
+.LP
+Display-related events should be delivered outside the modal cascade so that
+exposure events and the like keep the application's display up-to-date.
+Any event that occurs within the cascade is delivered as usual.
+The user events delivered to the most recent spring-loaded shell
+in the cascade when they occur outside the cascade are called remap events
+and are
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+and
+.PN ButtonRelease .
+The user events ignored when they occur outside the cascade are
+.PN MotionNotify
+and
+.PN EnterNotify .
+All other events are delivered normally.
+In particular, note that this is one
+way in which widgets can receive
+.PN LeaveNotify
+events without first receiving
+.PN EnterNotify
+events; they should be prepared to deal with
+this, typically by ignoring any unmatched
+.PN LeaveNotify
+events.
+.LP
+.PN XtPopup
+uses the
+.PN XtAddGrab
+and
+.PN XtRemoveGrab
+functions to constrain user events to a modal cascade
+and subsequently to remove a grab when the modal widget is popped down.
+
+.sp
+.LP
+To constrain or redirect user input to a modal widget, use
+.PN XtAddGrab .
+.LP
+.IN "XtAddGrab" "" "@DEF@"
+.sM
+.FD 0
+void XtAddGrab(\fIw\fP, \fIexclusive\fP, \fIspring_loaded\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIexclusive\fP;
+.br
+ Boolean \fIspring_loaded\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget to add to the modal cascade. \*(cI
+.IP \fIexclusive\fP 1i
+Specifies whether user events should be dispatched exclusively to this widget
+or also to previous widgets in the cascade.
+.IP \fIspring_loaded\fP 1i
+Specifies whether this widget was popped up because the user pressed
+a pointer button.
+.LP
+.eM
+The
+.PN XtAddGrab
+function appends the widget to the modal cascade
+and checks that \fIexclusive\fP is
+.PN True
+if \fIspring_loaded\fP is
+.PN True .
+If this condition is not met,
+.PN XtAddGrab
+generates a warning message.
+.LP
+The modal cascade is used by
+.PN XtDispatchEvent
+when it tries to dispatch a user event.
+When at least one modal widget is in the widget cascade,
+.PN XtDispatchEvent
+first determines if the event should be delivered.
+It starts at the most recent cascade entry and follows the cascade up to and
+including the most recent cascade entry added with the \fIexclusive\fP parameter
+.PN True .
+.LP
+This subset of the modal cascade along with all descendants of these widgets
+comprise the active subset.
+User events that occur outside the widgets in this subset are ignored
+or remapped.
+Modal menus with submenus generally add a submenu widget to the cascade
+with \fIexclusive\fP
+.PN False .
+Modal dialog boxes that need to restrict user input to the most deeply nested
+dialog box add a subdialog widget to the cascade with \fIexclusive\fP
+.PN True .
+User events that occur within the active subset are delivered to the
+appropriate widget, which is usually a child or further descendant of the modal
+widget.
+.LP
+Regardless of where in the application they occur,
+remap events are always delivered to the most recent widget in the active
+subset of the cascade registered with \fIspring_loaded\fP
+.PN True ,
+if any such widget exists.
+If the event
+occurred in the active subset of the cascade but outside the
+spring-loaded widget, it is delivered normally before being
+delivered also to the spring-loaded widget.
+Regardless of where it is dispatched, the \*(xI do not modify
+the contents of the event.
+.sp
+.LP
+To remove the redirection of user input to a modal widget, use
+.PN XtRemoveGrab .
+.LP
+.IN "XtRemoveGrab" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveGrab(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget to remove from the modal cascade.
+.LP
+.eM
+The
+.PN XtRemoveGrab
+function removes widgets from the modal cascade starting
+at the most recent widget up to and including the specified widget.
+It issues a warning if the specified widget is not on the modal cascade.
+
+.NH 3
+Requesting Key and Button Grabs
+.XS
+\fB\*(SN Requesting Key and Button Grabs\fP
+.XE
+.LP
+The \*(xI provide a set of key and button grab interfaces that
+are parallel to those provided by Xlib and that allow the \*(xI
+to modify event dispatching when necessary. \*(tk applications and
+widgets that need to passively grab keys or buttons or actively grab
+the keyboard or pointer should use the
+following \*(xI routines rather than the corresponding Xlib
+routines.
+.sp
+.LP
+To passively grab a single key of the keyboard, use
+.PN XtGrabKey .
+.LP
+.IN "XtGrabKey" "" "@DEF@"
+.sM
+.FD 0
+void XtGrabKey(\fIwidget\fP, \fIkeycode\fP, \fImodifiers\fP, \
+\fIowner_events\fP, \fIpointer_mode\fP, \fIkeyboard_mode\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ KeyCode \fIkeycode\fP;
+.br
+ Modifiers \fImodifiers\fP;
+.br
+ Boolean \fIowner_events\fP;
+.br
+ int \fIpointer_mode\fP, \fIkeyboard_mode\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget in whose window the key is to be grabbed. \*(cI
+.sp 6p
+.IP \fIkeycode\fP
+.br
+.ns
+.IP \fImodifiers\fP
+.br
+.ns
+.IP \fIowner_events\fP
+.br
+.ns
+.IP \fIpointer_mode\fP
+.br
+.ns
+.IP \fIkeyboard_mode\fP 1i
+Specify arguments to
+.PN XGrabKey ;
+see Section 12.2 in \fI\*(xL\fP.
+.LP
+.eM
+.PN XtGrabKey
+calls
+.PN XGrabKey
+specifying the widget's window as the grab
+window if the widget is realized. The remaining arguments are exactly
+as for
+.PN XGrabKey .
+If the widget is not realized, or is later unrealized, the call to
+.PN XGrabKey
+is performed (again) when
+the widget is realized and its window becomes mapped. In the future,
+if
+.PN XtDispatchEvent
+is called with a
+.PN KeyPress
+event matching the specified keycode and modifiers (which may be
+.PN AnyKey
+or
+.PN AnyModifier ,
+respectively) for the
+widget's window, the \*(xI will call
+.PN XtUngrabKeyboard
+with the timestamp from the
+.PN KeyPress
+event if either of the following conditions is true:
+.IP \(bu 3
+There is a modal cascade and the widget is not in
+the active subset of the cascade and the keyboard was not previously
+grabbed, or
+.IP \(bu 3
+.PN XFilterEvent
+returns
+.PN True .
+
+.sp
+.LP
+To cancel a passive key grab, use
+.PN XtUngrabKey .
+.LP
+.IN "XtUngrabKey" "" "@DEF@"
+.sM
+.FD 0
+void XtUngrabKey(\fIwidget\fP, \fIkeycode\fP\fI, modifiers\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ KeyCode \fIkeycode\fP;
+.br
+ Modifiers \fImodifiers\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget in whose window the key was grabbed.
+.sp 6p
+.IP \fIkeycode\fP
+.br
+.ns
+.IP \fImodifiers\fP 1i
+Specify arguments to
+.PN XUngrabKey ;
+see Section 12.2 in \fI\*(xL\fP.
+.LP
+.eM
+The
+.PN XtUngrabKey
+procedure calls
+.PN XUngrabKey
+specifying the widget's
+window as the ungrab window if the widget is realized. The remaining
+arguments are exactly as for
+.PN XUngrabKey .
+If the widget is not realized,
+.PN XtUngrabKey
+removes a deferred
+.PN XtGrabKey
+request, if any, for the specified widget, keycode, and modifiers.
+.sp
+.LP
+To actively grab the keyboard, use
+.PN XtGrabKeyboard .
+.LP
+.IN "XtGrabKeyboard" "" "@DEF@"
+.sM
+.FD 0
+int XtGrabKeyboard(\fIwidget\fP, \fIowner_events\fP, \fIpointer_mode\fP, \
+\fIkeyboard_mode\fP, \fItime\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ Boolean \fIowner_events\fP;
+.br
+ int \fIpointer_mode\fP, \fIkeyboard_mode\fP;
+.br
+ Time \fItime\fP;
+.br
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget for whose window the keyboard is to be grabbed.
+\*(cI
+.sp 6p
+.IP \fIowner_events\fP
+.br
+.ns
+.IP \fIpointer_mode\fP
+.br
+.ns
+.IP \fIkeyboard_mode\fP
+.br
+.ns
+.IP \fItime\fP 1i
+Specify arguments to
+.PN XGrabKeyboard ;
+see Section 12.2 in \fI\*(xL\fP.
+.LP
+.eM
+If the specified widget is realized,
+.PN XtGrabKeyboard
+calls
+.PN XGrabKeyboard
+specifying the widget's window as the grab window. The remaining
+arguments and return value are exactly as for
+.PN XGrabKeyboard .
+If the widget is not realized,
+.PN XtGrabKeyboard
+immediately returns
+.PN GrabNotViewable .
+No future automatic ungrab is implied by
+.PN XtGrabKeyboard .
+.sp
+.LP
+To cancel an active keyboard grab, use
+.PN XtUngrabKeyboard .
+.LP
+.IN "XtUngrabKeyboard" "" "@DEF@"
+.sM
+.FD 0
+void XtUngrabKeyboard(\fIwidget\fP, \fItime\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget that has the active keyboard grab.
+.IP \fItime\fP 1i
+Specifies the additional argument to
+.PN XUngrabKeyboard ;
+see Section 12.2 in \fI\*(xL\fP.
+.LP
+.eM
+.PN XtUngrabKeyboard
+calls
+.PN XUngrabKeyboard
+with the specified time.
+.sp
+.LP
+To passively grab a single pointer button, use
+.PN XtGrabButton .
+.LP
+.IN "XtGrabButton" "" "@DEF@"
+.sM
+.FD 0
+void XtGrabButton(\fIwidget\fP, \fIbutton\fP, \fImodifiers\fP, \
+\fIowner_events\fP, \fIevent_mask\fP, \fIpointer_mode\fP,
+ \fIkeyboard_mode\fP, \fIconfine_to\fP, \fIcursor\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ int \fIbutton\fP;
+.br
+ Modifiers \fImodifiers\fP;
+.br
+ Boolean \fIowner_events\fP;
+.br
+ unsigned int \fIevent_mask\fP;
+.br
+ int \fIpointer_mode\fP, \fIkeyboard_mode\fP;
+.br
+ Window \fIconfine_to\fP;
+.br
+ Cursor \fIcursor\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget in whose window the button is to be grabbed. \*(cI
+.sp 6p
+.IP \fIbutton\fP
+.br
+.ns
+.IP \fImodifiers\fP
+.br
+.ns
+.IP \fIowner_events\fP
+.br
+.ns
+.IP \fIevent_mask\fP
+.br
+.ns
+.IP \fIpointer_mode\fP
+.br
+.ns
+.IP \fIkeyboard_mode\fP
+.br
+.ns
+.IP \fIconfine_to\fP
+.br
+.ns
+.IP \fIcursor\fP 1i
+Specify arguments to
+.PN XGrabButton ;
+see Section 12.1 in \fI\*(xL\fP.
+.LP
+.eM
+.PN XtGrabButton
+calls
+.PN XGrabButton
+specifying the widget's window as the
+grab window if the widget is realized. The remaining arguments are
+exactly as for
+.PN XGrabButton .
+If the widget is not realized, or is later unrealized, the call to
+.PN XGrabButton
+is performed (again)
+when the widget is realized and its window becomes mapped. In the
+future, if
+.PN XtDispatchEvent
+is called with a
+.PN ButtonPress
+event matching the specified button and modifiers (which may be
+.PN AnyButton
+or
+.PN AnyModifier ,
+respectively)
+for the widget's window, the \*(xI will call
+.PN XtUngrabPointer
+with the timestamp from the
+.PN ButtonPress
+event if either of the following conditions is true:
+.IP \(bu 3
+There is a modal cascade and the
+widget is not in the active subset of the cascade and the pointer was
+not previously grabbed, or
+.IP \(bu 3
+.PN XFilterEvent
+returns
+.PN True .
+
+.sp
+.LP
+To cancel a passive button grab, use
+.PN XtUngrabButton .
+.LP
+.IN "XtUngrabButton" "" "@DEF@"
+.sM
+.FD 0
+void XtUngrabButton(\fIwidget\fP, \fIbutton\fP, \fImodifiers\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ unsigned int \fIbutton\fP;
+.br
+ Modifiers \fImodifiers\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget in whose window the button was grabbed.
+.IP \fIbutton\fP
+.br
+.ns
+.IP \fImodifiers\fP 1i
+Specify arguments to
+.PN XUngrabButton ;
+see Section 12.1 in \fI\*(xL\fP.
+.LP
+.eM
+The
+.PN XtUngrabButton
+procedure calls
+.PN XUngrabButton
+specifying the
+widget's window as the ungrab window if the widget is realized. The
+remaining arguments are exactly as for
+.PN XUngrabButton .
+If the widget is not realized,
+.PN XtUngrabButton
+removes a deferred
+.PN XtGrabButton
+request, if any, for the specified widget, button, and modifiers.
+.sp
+.LP
+To actively grab the pointer, use
+.PN XtGrabPointer .
+.LP
+.IN "XtGrabPointer" "" "@DEF@"
+.sM
+.FD 0
+int XtGrabPointer(\fIwidget\fP, \fIowner_events\fP, \fIevent_mask\fP, \
+\fIpointer_mode\fP, \fIkeyboard_mode\fP,
+ \fIconfine_to\fP, \fIcursor\fP, \fItime\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ Boolean \fIowner_events\fP;
+.br
+ unsigned int \fIevent_mask\fP;
+.br
+ int \fIpointer_mode\fP, \fIkeyboard_mode\fP;
+.br
+ Window \fIconfine_to\fP;
+.br
+ Cursor \fIcursor\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget for whose window the pointer is to be grabbed. \*(cI
+.sp 6p
+.IP \fIowner_events\fP
+.br
+.ns
+.IP \fIevent_mask\fP
+.br
+.ns
+.IP \fIpointer_mode\fP
+.br
+.ns
+.IP \fIkeyboard_mode\fP
+.br
+.ns
+.IP \fIconfine_to\fP
+.br
+.ns
+.IP \fIcursor\fP
+.br
+.ns
+.IP \fItime\fP 1i
+Specify arguments to
+.PN XGrabPointer ;
+see Section 12.1 in \fI\*(xL\fP.
+.LP
+.eM
+If the specified widget is realized,
+.PN XtGrabPointer
+calls
+.PN XGrabPointer ,
+specifying the widget's window as the grab window. The remaining
+arguments and return value are exactly as for
+.PN XGrabPointer .
+If the widget is not realized,
+.PN XtGrabPointer
+immediately returns
+.PN GrabNotViewable .
+No future automatic ungrab is implied by
+.PN XtGrabPointer .
+.sp
+.LP
+To cancel an active pointer grab, use
+.PN XtUngrabPointer .
+.LP
+.IN "XtUngrabPointer" "" "@DEF@"
+.sM
+.FD 0
+void XtUngrabPointer(\fIwidget\fP, \fItime\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget that has the active pointer grab.
+.IP \fItime\fP 1i
+Specifies the time argument to
+.PN XUngrabPointer ;
+see Section 12.1 in \fI\*(xL\fP.
+.LP
+.eM
+.PN XtUngrabPointer
+calls
+.PN XUngrabPointer
+with the specified time.
+
+.NH 2
+Focusing Events on a Child
+.XS
+\fB\*(SN Focusing Events on a Child\fP
+.XE
+.LP
+To redirect keyboard input to a normal descendant of a
+widget without calling
+.PN XSetInputFocus ,
+use
+.PN XtSetKeyboardFocus .
+.LP
+.IN "XtSetKeyboardFocus" "" "@DEF@"
+.sM
+.FD 0
+void XtSetKeyboardFocus(\fIsubtree\fP\, \fIdescendant\fP)
+.br
+ Widget \fIsubtree\fP, \fIdescendant\fP;
+.FN
+.IP \fIsubtree\fP 1i
+Specifies the subtree of the hierarchy for which the keyboard focus is
+to be set. \*(cI
+.IP \fIdescendant\fP 1i
+Specifies either the normal (non-pop-up) descendant of \fIsubtree\fP to which
+keyboard events are logically directed, or
+.PN None .
+It is not an error to specify
+.PN None
+when no input focus was previously set. \*(oI
+.LP
+.eM
+.PN XtSetKeyboardFocus
+causes
+.PN XtDispatchEvent
+to remap keyboard events occurring within the specified subtree
+and dispatch them to the specified descendant widget or to an ancestor.
+If the descendant's class is not a subclass of Core, the descendant is
+replaced by its closest windowed ancestor.
+.LP
+When there is no modal cascade, keyboard events can be dispatched
+to a widget in one of five ways. Assume the server delivered the
+event to the window for widget E (because of X input focus, key or
+keyboard grabs, or pointer position).
+.IP \(bu 3
+If neither E nor any of E's ancestors have redirected the keyboard
+focus, or if the event activated a grab for E as specified by a call
+to
+.PN XtGrabKey
+with any value of \fIowner_events\fP, or
+if the keyboard is actively grabbed by E with \fIowner_events\fP
+.PN False
+via
+.PN XtGrabKeyboard
+or
+.PN XtGrabKey
+on a previous key press, the event is dispatched to E.
+.IP \(bu 3
+Beginning with the ancestor of E closest to the root that has
+redirected the keyboard focus or E if no such ancestor exists, if
+the target of that focus redirection has in turn redirected the
+keyboard focus, recursively follow this focus chain to find a widget
+F that has not redirected focus.
+.RS
+.IP \- 3
+If E is the final focus target widget F or a descendant of F, the
+event is dispatched to E.
+.IP \- 3
+If E is not F, an ancestor of F, or a descendant of F, and the event
+activated a grab for E as specified by a call to
+.PN XtGrabKey
+for E,
+.PN XtUngrabKeyboard
+is called.
+.IP \- 3
+If E is an ancestor of F, and the event is a key press, and either
+.RS
+.IP + 3
+E has grabbed the key with
+.PN XtGrabKey
+and \fIowner_events\fP
+.PN False ,
+or
+.IP + 3
+E has grabbed the key with
+.PN XtGrabKey
+and \fIowner_events\fP
+.PN True ,
+and the coordinates of the event are outside the rectangle specified
+by E's geometry,
+.RE
+then the event is dispatched to E.
+.IP \- 3
+Otherwise, define A as the closest common ancestor of E and F:
+.RS
+.IP + 3
+If there is an active keyboard grab for any widget via either
+.PN XtGrabKeyboard
+or
+.PN XtGrabKey
+on a previous key press, or
+if no widget between F and A (noninclusive) has grabbed
+the key and modifier combination with
+.PN XtGrabKey
+and any value of \fIowner_events\fP, the event is dispatched to F.
+.IP + 3
+Else, the event is dispatched to the ancestor of F closest to A
+that has grabbed the key and modifier combination with
+.PN XtGrabKey .
+.RE
+.RE
+.LP
+When there is a modal cascade, if the final destination widget as
+identified above is in the active subset of the cascade, the event is
+dispatched; otherwise the event is remapped to a spring-loaded shell
+or discarded.
+Regardless of where it is dispatched, the \*(xI do not modify
+the contents of the event.
+.LP
+When \fIsubtree\fP or one of its descendants acquires the X input focus
+or the pointer moves into the subtree such that keyboard events would
+now be delivered to the subtree, a
+.PN FocusIn
+event is generated for the descendant if
+.PN FocusChange
+events have been selected by the descendant.
+Similarly, when \fIsubtree\fP loses the X input focus
+or the keyboard focus for one of its ancestors, a
+.PN FocusOut
+event is generated for descendant if
+.PN FocusChange
+events have been selected by the descendant.
+.sp
+.LP
+A widget tree may also actively manage the X server input focus. To
+do so, a widget class specifies an accept_focus procedure.
+.LP
+.IN "accept_focus procedure"
+The accept_focus procedure pointer is of type
+.PN XtAcceptFocusProc .
+.LP
+.IN "XtAcceptFocusProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Boolean (*XtAcceptFocusProc)(Widget, Time*);
+.br
+ Widget \fIw\fP;
+.br
+ Time *\fItime\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fItime\fP 1i
+Specifies the X time of the event causing the accept focus.
+.LP
+.eM
+Widgets that need the input focus can call
+.PN XSetInputFocus
+explicitly, pursuant to the restrictions of the \fI\*(xC\fP.
+To allow outside agents, such as the parent,
+to cause a widget to take the input focus,
+every widget exports an accept_focus procedure.
+The widget returns a value indicating
+whether it actually took the focus or not,
+so that the parent can give the focus to another widget.
+Widgets that need to know when they lose the input focus must use
+the Xlib focus notification mechanism explicitly
+(typically by specifying translations for
+.PN FocusIn
+and
+.PN FocusOut
+events).
+Widgets classes that never want the input focus should set the
+\fIaccept_focus\fP field to NULL.
+.sp
+.LP
+To call a widget's accept_focus procedure, use
+.PN XtCallAcceptFocus .
+.LP
+.IN "XtCallAcceptFocus" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtCallAcceptFocus(\fIw\fP, \fItime\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Time *\fItime\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.IP \fItime\fP 1i
+Specifies the X time of the event that is causing the focus change.
+.LP
+.eM
+The
+.PN XtCallAcceptFocus
+function calls the specified widget's accept_focus procedure,
+passing it the specified widget and time, and returns what the accept_focus
+procedure returns.
+If \fIaccept_focus\fP is NULL,
+.PN XtCallAcceptFocus
+returns
+.PN False .
+
+.NH 3
+Events for Drawables That Are Not a Widget's Window
+.XS
+\fB\*(SN Events for Drawables That Are Not a Widget's Window\fP
+.XE
+.LP
+Sometimes an application must handle events for drawables that are not
+associated with widgets in its widget tree. Examples include handling
+.PN GraphicsExpose
+and
+.PN NoExpose
+events on Pixmaps, and handling
+.PN PropertyNotify
+events on the root window.
+.LP
+To register a drawable with the \*(xI event dispatching, use
+.PN XtRegisterDrawable .
+.LP
+.IN "XtRegisterDrawable" "" "@DEF@"
+.sM
+.FD 0
+void XtRegisterDrawable(\fIdisplay\fP, \fIdrawable\fP, \fIwidget\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ Drawable \fIdrawable\fP;
+.br
+ Widget \fIwidget\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the drawable's display.
+.IP \fIdrawable\fP 1i
+Specifies the drawable to register.
+.IP \fIwidget\fP 1i
+Specifies the widget to register the drawable for.
+.LP
+.eM
+.PN XtRegisterDrawable
+associates the specified drawable with the specified widget
+so that future calls to
+.PN XtWindowToWidget
+with the drawable will return the widget.
+The default event dispatcher will dispatch future events that
+arrive for the drawable to the widget in the same manner as
+events that contain the widget's window.
+.LP
+If the drawable is already registered with another widget, or if the
+drawable is the window of a widget in the client's widget tree, the
+results of calling
+.PN XtRegisterDrawable
+are undefined.
+
+.LP
+To unregister a drawable with the Intrinsics event dispatching, use
+.PN XtUnregisterDrawable .
+.LP
+.IN "XtUnregisterDrawable" "" "@DEF@"
+.sM
+.FD 0
+void XtUnregisterDrawable(\fIdisplay\fP, \fIdrawable\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ Drawable \fIdrawable\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the drawable's display.
+.IP \fIdrawable\fP 1i
+Specifies the drawable to unregister.
+.LP
+.eM
+.PN XtUnregisterDrawable
+removes an association created with
+.PN XtRegisterDrawable .
+If the drawable is the window of a widget in the client's widget tree
+the results of calling
+.PN XtUnregisterDrawable
+are undefined.
+
+.NH 2
+Querying Event Sources
+.XS
+\fB\*(SN Querying Event Sources\fP
+.XE
+.LP
+The event manager provides several functions to examine and read events
+(including file and timer events) that are in the queue.
+The next three functions are \*(xI equivalents of the
+.PN XPending ,
+.PN XPeekEvent ,
+and
+.PN XNextEvent
+Xlib calls.
+.sp
+.LP
+.IN "Events"
+To determine if there are any events on the input queue for a given application,
+use
+.PN XtAppPending .
+.LP
+.IN "XtAppPending" "" "@DEF@"
+.sM
+.FD 0
+XtInputMask XtAppPending(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application to check.
+.LP
+.eM
+The
+.PN XtAppPending
+function returns a nonzero value if there are
+events pending from the X server, timer pending, other input sources
+pending, or signal sources pending. The
+value returned is a bit mask that is the OR of
+.PN XtIMXEvent ,
+.PN XtIMTimer ,
+.PN XtIMAlternateInput ,
+and
+.PN XtIMSignal
+(see
+.PN XtAppProcessEvent ).
+If there are no events pending,
+.PN XtAppPending
+flushes the output buffers of each Display in the application context
+and returns zero.
+.sp
+.LP
+To return the event from the head of a given application's input queue
+without removing input from the queue, use
+.PN XtAppPeekEvent .
+.LP
+.IN "XtAppPeekEvent" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtAppPeekEvent(\fIapp_context\fP, \fIevent_return\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XEvent *\fIevent_return\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application.
+.IP \fIevent_return\fP 1i
+Returns the event information to the specified event structure.
+.LP
+.eM
+If there is an X event in the queue,
+.PN XtAppPeekEvent
+copies it into \fIevent_return\fP and returns
+.PN True .
+If no X input is on the queue,
+.PN XtAppPeekEvent
+flushes the output buffers of each Display in the application context
+and blocks until some input is available
+(possibly calling some timeout callbacks in the interim).
+If the next available input is an X event,
+.PN XtAppPeekEvent
+fills in \fIevent_return\fP and returns
+.PN True .
+Otherwise, the input is for an input source
+registered with
+.PN XtAppAddInput ,
+and
+.PN XtAppPeekEvent
+returns
+.PN False .
+.FS
+The sample implementations provides XtAppPeekEvent as described. Timeout callbacks
+are called while blocking for input. If some input for an input source is
+available,
+.PN XtAppPeekEvent
+will return
+.PN True
+without returning an event.
+.FE
+.sp
+.LP
+To remove and return the event
+from the head of a given application's X event queue,
+use
+.PN XtAppNextEvent .
+.LP
+.IN "XtAppNextEvent" "" "@DEF@"
+.sM
+.FD 0
+void XtAppNextEvent(\fIapp_context\fP, \fIevent_return\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XEvent *\fIevent_return\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application.
+.IP \fIevent_return\fP 1i
+Returns the event information to the specified event structure.
+.LP
+.eM
+If the X event queue is empty,
+.PN XtAppNextEvent
+flushes the X output buffers of each Display in the application context
+and waits for an X event while looking at the other input sources
+and timeout values and calling any callback procedures triggered by them.
+This wait time can be used for background processing;
+see Section 7.8.
+
+.NH 2
+Dispatching Events
+.XS
+\fB\*(SN Dispatching Events\fP
+.XE
+.LP
+The \*(xI provide functions that dispatch events
+to widgets or other application code.
+Every client interested in X events on a widget uses
+.PN XtAddEventHandler
+to register which events it is
+interested in and a procedure (event handler) to be called
+when the event happens in that window.
+The translation manager automatically registers event handlers for widgets
+that use translation tables; see Chapter 10.
+.sp
+.LP
+Applications that need direct control of the processing of different types
+of input should use
+.PN XtAppProcessEvent .
+.LP
+.IN "XtAppProcessEvent" "" "@DEF@"
+.sM
+.FD 0
+void XtAppProcessEvent(\fIapp_context\fP, \fImask\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtInputMask \fImask\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the
+application for which to process input.
+.IP \fImask\fP 1i
+Specifies what types of events to process.
+The mask is the bitwise inclusive OR of any combination of
+.PN XtIMXEvent ,
+.PN XtIMTimer ,
+.PN XtIMAlternateInput ,
+and
+.PN XtIMSignal .
+As a convenience,
+.PN Intrinsic.h
+defines the symbolic name
+.PN XtIMAll
+to be the bitwise inclusive OR of these four event types.
+.LP
+.eM
+The
+.PN XtAppProcessEvent
+function processes one timer, input source, signal source, or X event.
+If there is no event or input of the appropriate type to process, then
+.PN XtAppProcessEvent
+blocks until there is.
+If there is more than one type of input available to process,
+it is undefined which will get processed.
+Usually, this procedure is not called by client applications; see
+.PN XtAppMainLoop .
+.PN XtAppProcessEvent
+processes timer events by calling any appropriate timer callbacks,
+input sources by calling any appropriate input callbacks,
+signal source by calling any appropriate signal callbacks,
+and X events by
+calling
+.PN XtDispatchEvent .
+.LP
+When an X event is received,
+it is passed to
+.PN XtDispatchEvent ,
+which calls the appropriate event handlers
+and passes them the widget, the event, and client-specific data
+registered with each procedure.
+If no handlers for that event are registered,
+the event is ignored and the dispatcher simply returns.
+
+.sp
+.LP
+To dispatch an event returned by
+.PN XtAppNextEvent ,
+retrieved directly from the Xlib queue, or synthetically constructed,
+to any registered event filters or event handlers, call
+.PN XtDispatchEvent .
+.LP
+.IN "XtDispatchEvent" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtDispatchEvent(\fIevent\fP)
+.br
+ XEvent *\fIevent\fP;
+.FN
+.IP \fIevent\fP 1i
+Specifies a pointer to the event structure to be dispatched
+to the appropriate event handlers.
+.LP
+.eM
+The
+.PN XtDispatchEvent
+function first calls
+.PN XFilterEvent
+with the \fIevent\fP and the window of the widget to which the
+\*(xI intend to dispatch the event, or the event window if
+the \*(xI would not dispatch the event to any handlers.
+If
+.PN XFilterEvent
+returns
+.PN True
+and the event activated a server grab as identified
+by a previous call to
+.PN XtGrabKey
+or
+.PN XtGrabButton ,
+.PN XtDispatchEvent
+calls
+.PN XtUngrabKeyboard
+or
+.PN XtUngrabPointer
+with the timestamp from the event and immediately returns
+.PN True .
+If
+.PN XFilterEvent
+returns
+.PN True
+and a grab was not activated,
+.PN XtDispatchEvent
+just immediately returns
+.PN True .
+Otherwise,
+.PN XtDispatchEvent
+sends the event to the event handler functions that
+have been previously registered with the dispatch routine.
+.PN XtDispatchEvent
+returns
+.PN True
+if
+.PN XFilterEvent
+returned
+.PN True ,
+or if the event was dispatched to some handler, and
+.PN False
+if it found no handler to which to dispatch the event.
+.PN XtDispatchEvent
+records the last timestamp in any event that
+contains a timestamp (see
+.PN XtLastTimestampProcessed ),
+regardless of whether it was filtered or dispatched.
+If a modal cascade is active with \fIspring_loaded\fP
+.PN True ,
+and if the event is a remap event as defined by
+.PN XtAddGrab ,
+.PN XtDispatchEvent
+may dispatch the event a second time. If it does so,
+.PN XtDispatchEvent
+will call
+.PN XFilterEvent
+again with the window of the spring-loaded widget prior to the second
+dispatch, and if
+.PN XFilterEvent
+returns
+.PN True ,
+the second dispatch will not be performed.
+
+.NH 2
+The Application Input Loop
+.XS
+\fB\*(SN The Application Input Loop\fP
+.XE
+.LP
+To process all input from a given application in a continuous loop,
+use the convenience procedure
+.PN XtAppMainLoop .
+.LP
+.IN "XtAppMainLoop" "" "@DEF@"
+.sM
+.FD 0
+void XtAppMainLoop(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application.
+.LP
+.eM
+The
+.PN XtAppMainLoop
+function first reads the next incoming X event by calling
+.PN XtAppNextEvent
+and then dispatches the event to the appropriate registered procedure
+by calling
+.PN XtDispatchEvent .
+This constitutes the main loop of \*(tk applications.
+There is nothing special about
+.PN XtAppMainLoop ;
+it simply calls
+.PN XtAppNextEvent
+and then
+.PN XtDispatchEvent
+in a conditional loop.
+At the bottom of the loop, it checks to see if the specified
+application context's destroy flag is set.
+If the flag is set, the loop breaks.
+The whole loop is enclosed between a matching
+.PN XtAppLock
+and
+.PN XtAppUnlock .
+.LP
+Applications can provide their own version of this loop,
+which tests some global termination flag or tests that the number
+of top-level widgets is larger than zero before circling back to the call to
+.PN XtAppNextEvent .
+
+.NH 2
+Setting and Checking the Sensitivity State of a Widget
+.XS
+\fB\*(SN Setting and Checking the Sensitivity State of a Widget\fP
+.XE
+.LP
+Many widgets have a mode in which they assume a different appearance
+(for example, are grayed out or stippled), do not respond to user events,
+and become dormant.
+.LP
+When dormant,
+a widget is considered to be insensitive.
+If a widget is insensitive,
+the event manager does not dispatch any events to the widget
+with an event type of
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN MotionNotify ,
+.PN EnterNotify ,
+.PN LeaveNotify ,
+.PN FocusIn ,
+or
+.PN FocusOut .
+.LP
+A widget can be insensitive because its \fIsensitive\fP field is
+.PN False
+or because one of its ancestors is insensitive and thus the widget's
+\fIancestor_sensitive\fP field also is
+.PN False .
+A widget can but does not need to distinguish these two cases visually.
+.NT
+Pop-up shells will have
+\fIancestor_sensitive\fP
+.PN False
+if the parent was insensitive when the shell
+was created. Since
+.PN XtSetSensitive
+on the parent will not
+modify the resource of the pop-up child, clients are advised to include
+a resource specification of the form
+``*TransientShell.ancestorSensitive: True''
+in the application defaults resource file or to
+otherwise ensure that the parent is
+sensitive when creating pop-up shells.
+.NE
+.sp
+.LP
+To set the sensitivity state of a widget, use
+.PN XtSetSensitive .
+.LP
+.IN "XtSetSensitive" "" "@DEF@"
+.sM
+.FD 0
+void XtSetSensitive(\fIw\fP, \fIsensitive\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Boolean \fIsensitive\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(rI
+.IP \fIsensitive\fP 1i
+Specifies whether the widget should receive
+keyboard, pointer, and focus events.
+.LP
+.eM
+The
+.PN XtSetSensitive
+function first calls
+.PN XtSetValues
+on the current widget with an argument list specifying the
+XtNsensitive resource and the new value.
+If \fIsensitive\fP is
+.PN False
+and the widget's class is a subclass of
+Composite,
+.PN XtSetSensitive
+recursively propagates the new value
+down the child tree by calling
+.PN XtSetValues
+on each child to set \fIancestor_sensitive\fP to
+.PN False .
+If \fIsensitive\fP is
+.PN True
+and the widget's class is a subclass of
+Composite
+and the widget's \fIancestor_sensitive\fP field is
+.PN True ,
+.PN XtSetSensitive
+sets the \fIancestor_sensitive\fP of each child to
+.PN True
+and then recursively calls
+.PN XtSetValues
+on each normal descendant that is now sensitive to set
+\fIancestor_sensitive\fP to
+.PN True .
+.LP
+.PN XtSetSensitive
+calls
+.PN XtSetValues
+to change the \fIsensitive\fP and \fIancestor_sensitive\fP fields
+of each affected widget.
+Therefore, when one of these changes,
+the widget's set_values procedure should
+take whatever display actions are needed
+(for example, graying out or stippling the widget).
+.LP
+.PN XtSetSensitive
+maintains the invariant that, if the parent has either \fIsensitive\fP
+or \fIancestor_sensitive\fP
+.PN False ,
+then all children have \fIancestor_sensitive\fP
+.PN False .
+.sp
+.LP
+To check the current sensitivity state of a widget,
+use
+.PN XtIsSensitive .
+.LP
+.IN "XtIsSensitive" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtIsSensitive(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the object. \*(oI
+.LP
+.eM
+The
+.PN XtIsSensitive
+function returns
+.PN True
+or
+.PN False
+to indicate whether user input events are being dispatched.
+If object's class is a subclass of RectObj and
+both \fIsensitive\fP and \fIancestor_sensitive\fP are
+.PN True ,
+.PN XtIsSensitive
+returns
+.PN True ;
+otherwise, it returns
+.PN False .
+
+.NH 2
+Adding Background Work Procedures
+.XS
+\fB\*(SN Adding Background Work Procedures\fP
+.XE
+.LP
+The \*(xI have some limited support for background processing.
+Because most applications spend most of their time waiting for input,
+you can register an idle-time work procedure
+that is called when the toolkit would otherwise block in
+.PN XtAppNextEvent
+or
+.PN XtAppProcessEvent .
+Work procedure pointers are of type
+.PN XtWorkProc .
+.LP
+.IN "XtWorkProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Boolean (*XtWorkProc)(XtPointer);
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIclient_data\fP 1i
+Passes the client data specified when the work procedure was registered.
+.LP
+.eM
+This procedure should return
+.PN True
+when it is done to indicate that it
+should be removed.
+If the procedure returns
+.PN False ,
+it will remain registered and called again when the
+application is next idle.
+Work procedures should be very judicious about how much they do.
+If they run for more than a small part of a second,
+interactive feel is likely to suffer.
+.sp
+.LP
+To register a work procedure for a given application, use
+.PN XtAppAddWorkProc .
+.LP
+.IN "XtAppAddWorkProc" "" "@DEF@"
+.sM
+.FD 0
+XtWorkProcId XtAppAddWorkProc(\fIapp_context\fP, \fIproc\fP, \fIclient_data\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtWorkProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that identifies the application.
+.IP \fIproc\fP 1i
+Specifies the procedure to be called when the application is idle.
+.IP \fIclient_data\fP 1i
+Specifies the argument passed to the specified procedure
+when it is called.
+.LP
+.eM
+The
+.PN XtAppAddWorkProc
+function adds the specified work procedure for the application identified
+by \fIapp_context\fP
+and returns an opaque unique identifier for this work procedure.
+Multiple work procedures can be registered,
+and the most recently added one is always the one that is called.
+However, if a work procedure adds another work procedure,
+the newly added one has lower priority than the current one.
+.sp
+.LP
+To remove a work procedure, either return
+.PN True
+from the procedure when it is called or use
+.PN XtRemoveWorkProc
+outside of the procedure.
+.LP
+.IN "XtRemoveWorkProc" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveWorkProc(\fIid\fP)
+.br
+ XtWorkProcId \fIid\fP;
+.FN
+.IP \fIid\fP 1i
+Specifies which work procedure to remove.
+.LP
+.eM
+The
+.PN XtRemoveWorkProc
+function explicitly removes the specified background work procedure.
+
+.NH 2
+X Event Filters
+.XS
+\*(SN X Event Filters
+.XE
+.LP
+The event manager provides filters that can be applied to
+specific X events.
+The filters, which screen out events that are redundant or are temporarily
+unwanted, handle
+pointer motion compression,
+enter/leave compression, and
+exposure compression.
+
+.NH 3
+Pointer Motion Compression
+.XS
+\*(SN Pointer Motion Compression
+.XE
+.LP
+Widgets can have a hard time keeping up with a rapid stream of
+pointer motion events. Furthermore,
+they usually do not care about every motion event. To throw out
+redundant motion events, the widget class field \fIcompress_motion\fP should be
+.PN True .
+.IN "compress_motion field"
+When a request for an event would return a motion event,
+the \*(xI check if there are any other motion events
+for the same widget immediately
+following the current one and, if so, skip all but the last of them.
+
+.NH 3
+Enter/Leave Compression
+.XS
+\*(SN Enter/Leave Compression
+.XE
+.LP
+To throw out pairs of enter and leave events that have no intervening events,
+as can happen when the user moves the pointer across a widget
+without stopping in it,
+the widget class field \fIcompress_enterleave\fP should be
+.PN True .
+.IN "compress_enterleave field"
+These enter and leave events are not delivered to the client
+if they are found together in the input queue.
+
+.NH 3
+Exposure Compression
+.XS
+\*(SN Exposure Compression
+.XE
+.LP
+.IN "compress_expose field"
+Many widgets prefer to process a series of exposure events as a
+single expose region rather than as individual rectangles. Widgets
+with complex displays might use the expose region as a clip list
+in a graphics context, and widgets with simple displays might
+ignore the region entirely and redisplay their whole window or
+might get the bounding box from the region and redisplay only that
+rectangle.
+.LP
+In either case, these widgets do not care about getting partial exposure events.
+The \fIcompress_exposure\fP field in the widget class
+structure specifies the type and number of exposure events that are
+dispatched to the widget's expose procedure. This field must be
+initialized to one of the following values:
+.sp
+.sM
+.Ds 0
+.TA 3i
+.ta 3i
+#define XtExposeNoCompress ((XtEnum)False)
+#define XtExposeCompressSeries ((XtEnum)True)
+#define XtExposeCompressMultiple <implementation-defined>
+#define XtExposeCompressMaximal <implementation-defined>
+.De
+.LP
+.eM
+optionally ORed with any combination of the following flags (all with
+implementation-defined values):
+.PN XtExposeGraphicsExpose ,
+.PN XtExposeGraphicsExposeMerged ,
+.PN XtExposeNoExpose ,
+and
+.PN XtExposeNoRegion .
+
+.LP
+If the \fIcompress_exposure\fP field in the widget class structure does not
+specify
+.PN XtExposeNoCompress ,
+the event manager calls the widget's expose procedure only
+once for a series of exposure events.
+In this case, all
+.PN Expose
+or
+.PN GraphicsExpose
+events are accumulated into a region.
+When the final event is received,
+the event manager replaces the rectangle in the event with the
+bounding box for the region
+and calls the widget's expose procedure,
+passing the modified exposure event and (unless
+.PN XtExposeNoRegion
+is specified) the region.
+For more information on regions, see Section 16.5 in \fI\*(xL\fP.)
+.LP
+The values have the following interpretation:
+.sp
+.LP
+.PN XtExposeNoCompress
+.IN "XtExposeNoCompress" "" "@DEF@"
+.IP
+No exposure compression is performed; every selected event is
+individually dispatched to the expose procedure with a \fIregion\fP
+argument of NULL.
+.sp
+.LP
+.PN XtExposeCompressSeries
+.IN "XtExposeCompressSeries" "" "@DEF@"
+.IP
+Each series of exposure events is coalesced into a single event,
+which is dispatched
+when an exposure event with count equal to zero is reached.
+.sp
+.LP
+.PN XtExposeCompressMultiple
+.IN "XtExposeCompressMultiple" "" "@DEF@"
+.IP
+Consecutive series of exposure events are coalesced into a single
+event, which is dispatched
+when an exposure event with count equal to zero is reached and either
+the event queue is empty or the next event is not an exposure event
+for the same widget.
+.sp
+.LP
+.PN XtExposeCompressMaximal
+.IN "XtExposeCompressMaximal" "" "@DEF"
+.IP
+All expose series currently in the queue for the widget
+are coalesced into a single
+event without regard to intervening nonexposure events. If a
+partial series is in the end of the queue, the \*(xI will
+block until the end of the series is received.
+.sp
+.LP
+The additional flags have the following meaning:
+.sp
+.LP
+.PN XtExposeGraphicsExpose
+.IN "XtExposeGraphicsExpose" "" "@DEF@"
+.IP
+Specifies that
+.PN GraphicsExpose
+events are also to be dispatched to
+the expose procedure.
+.PN GraphicsExpose
+events are compressed, if specified, in the same manner as
+.PN Expose
+events.
+.sp
+.LP
+.PN XtExposeGraphicsExposeMerged
+.IN "XtExposeGraphicsExposeMerged" "" "@DEF@"
+.IP
+Specifies in the case of
+.PN XtExposeCompressMultiple
+and
+.PN XtExposeCompressMaximal
+that series of
+.PN GraphicsExpose
+and
+.PN Expose
+events are to be compressed together, with the final event type
+determining the type of the event passed to the expose procedure.
+If this flag is not set, then only series of the same event type
+as the event at the head of the queue are coalesced. This flag
+also implies
+.PN XtExposeGraphicsExpose .
+.sp
+.LP
+.PN XtExposeNoExpose
+.IN "XtExposeNoExpose" "" "@DEF@"
+.IP
+Specifies that
+.PN NoExpose
+events are also to be dispatched to the expose procedure.
+.PN NoExpose
+events are never coalesced with
+other exposure events or with each other.
+.sp
+.LP
+.PN XtExposeNoRegion
+.IN "XtExposeNoRegion" "" "@DEF"
+.IP
+Specifies that the final region argument passed to the expose
+procedure is NULL. The rectangle in the event will still
+contain bounding box information for the entire series of
+compressed exposure events. This option saves processing time when the
+region is not needed by the widget.
+
+.NH 2
+Widget Exposure and Visibility
+.XS
+\*(SN Widget Exposure and Visibility
+.XE
+.LP
+Every primitive widget and some composite widgets display data on the screen
+by means of direct Xlib calls.
+Widgets cannot simply write to the screen and forget what they have done.
+They must keep enough state to redisplay the window or parts
+of it if a portion is obscured and then reexposed.
+
+.NH 3
+Redisplay of a Widget: The expose Procedure
+.XS
+\*(SN Redisplay of a Widget: The expose Procedure
+.XE
+.IN "expose procedure"
+.LP
+The expose procedure pointer in a widget class is of type
+.PN XtExposeProc .
+.LP
+.IN "XtExposeProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtExposeProc)(Widget, XEvent*, Region);
+.br
+ Widget \fIw\fP;
+.br
+ XEvent *\fIevent\fP;
+.br
+ Region \fIregion\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget instance requiring redisplay.
+.IP \fIevent\fP 1i
+Specifies the exposure event giving the rectangle requiring redisplay.
+.IP \fIregion\fP 1i
+Specifies the union of all rectangles in this exposure sequence.
+.LP
+.eM
+The redisplay of a widget upon exposure is the responsibility of the
+expose procedure in the widget's class record.
+If a widget has no display semantics,
+it can specify NULL for the \fIexpose\fP field.
+Many composite widgets serve only as containers for their children
+and have no expose procedure.
+.NT
+If the \fIexpose\fP procedure is NULL,
+.PN XtRealizeWidget
+fills in a default bit gravity of
+.PN NorthWestGravity
+before it calls the widget's realize procedure.
+.NE
+.LP
+If the widget's \fIcompress_exposure\fP class field specifies
+.PN XtExposeNoCompress
+or
+.PN XtExposeNoRegion ,
+or if the event type is
+.PN NoExpose
+(see Section 7.9.3),
+\fIregion\fP is NULL. If
+.PN XtExposeNoCompress
+is not specified and the event type is not
+.PN NoExpose ,
+the event is the final event in the compressed series
+but \fIx\fP, \fIy\fP, \fIwidth\fP, and \fIheight\fP contain
+the bounding box for all the compressed events.
+The region is created and destroyed by the \*(xI, but
+the widget is permitted to modify the region contents.
+.LP
+A small simple widget (for example, Label) can ignore the bounding box
+information in the event and redisplay the entire window.
+A more complicated widget (for example, Text) can use the bounding box
+information to minimize the amount of calculation and redisplay it does.
+A very complex widget uses the region as a clip list in a GC and
+ignores the event information.
+The expose procedure is not chained and is therefore
+responsible for exposure of all superclass data
+as well as its own.
+.LP
+However,
+it often is possible to anticipate the display needs of several levels
+of subclassing.
+For example, rather than implement separate display procedures for
+the widgets Label, Pushbutton, and Toggle,
+you could write a single display routine in Label that uses display state
+fields like
+.LP
+.DS
+Boolean invert;
+Boolean highlight;
+Dimension highlight_width;
+.DE
+Label would have \fIinvert\fP and \fIhighlight\fP always
+.PN False
+and \fIhighlight_width\fP zero.
+Pushbutton would dynamically set \fIhighlight\fP and \fIhighlight_width\fP,
+but it would leave \fIinvert\fP always
+.PN False .
+Finally, Toggle would dynamically set all three.
+In this case,
+the expose procedures for Pushbutton and Toggle inherit
+their superclass's expose procedure;
+see Section 1.6.10.
+
+.NH 3
+Widget Visibility
+.XS
+\*(SN Widget Visibility
+.XE
+.LP
+Some widgets may use substantial computing resources to produce the
+data they will display.
+However, this effort is wasted if the widget is not actually visible
+on the screen, that is, if the widget is obscured by another application
+or is iconified.
+.LP
+.IN "Visibility"
+The \fIvisible\fP field in the
+core
+widget structure provides a hint to the widget that it need not compute
+display data.
+This field is guaranteed to be
+.PN True
+by the time an
+exposure
+event is processed if any part of the widget is visible,
+but is
+.PN False
+if the widget is fully obscured.
+.LP
+Widgets can use or ignore the \fIvisible\fP hint.
+If they ignore it,
+they should have \fIvisible_interest\fP in their widget class record set
+.PN False .
+In such cases,
+the \fIvisible\fP field is initialized
+.PN True
+and never changes.
+If \fIvisible_interest\fP is
+.PN True ,
+the event manager asks for
+.PN VisibilityNotify
+events for the widget and sets \fIvisible\fP to
+.PN True
+on
+.PN VisibilityUnobscured
+or
+.PN VisibilityPartiallyObscured
+.IN VisibilityNotify
+events and
+.PN False
+on
+.PN VisibilityFullyObscured
+events.
+
+.NH 2
+X Event Handlers
+.XS
+\*(SN X Event Handlers
+.XE
+.LP
+Event handlers are procedures called when specified events
+occur in a widget.
+Most widgets need not use event handlers explicitly.
+Instead, they use the \*(xI translation manager.
+Event handler procedure pointers are of the type
+.PN XtEventHandler .
+.LP
+.IN "XtEventHandler" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtEventHandler)(Widget, XtPointer, XEvent*, Boolean*);
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XEvent *\fIevent\fP;
+.br
+ Boolean *\fIcontinue_to_dispatch\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which the event arrived.
+.IP \fIclient_data\fP 1i
+Specifies any client-specific information registered with the event handler.
+.IP \fIevent\fP 1i
+Specifies the triggering event.
+.IP \fIcontinue_to_dispatch\fP 1i
+Specifies whether the remaining event
+handlers registered for the current event
+should be called.
+.LP
+.eM
+After receiving an event and before calling any event handlers, the
+Boolean pointed to by \fIcontinue_to_dispatch\fP is initialized to
+.PN True .
+When an event handler is called, it may decide that further processing
+of the event is not desirable and may store
+.PN False
+in this Boolean, in
+which case any handlers remaining to be called for the event are
+ignored.
+.LP
+The circumstances under which the \*(xI may add event handlers
+to a widget are currently implementation-dependent. Clients must
+therefore be aware that storing
+.PN False
+into the \fIcontinue_to_dispatch\fP argument can lead to portability problems.
+
+.NH 3
+Event Handlers That Select Events
+.XS
+\*(SN Event Handlers That Select Events
+.XE
+.LP
+To register an event handler procedure with the dispatch mechanism, use
+.PN XtAddEventHandler .
+.LP
+.IN "XtAddEventHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtAddEventHandler(\fIw\fP, \fIevent_mask\fP, \fInonmaskable\fP, \
+\fIproc\fP, \fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ EventMask \fIevent_mask\fP;
+.br
+ Boolean \fInonmaskable\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which this event handler is being registered. \*(cI
+.IP \fIevent_mask\fP 1i
+Specifies the event mask for which to call this procedure.
+.IP \fInonmaskable\fP 1i
+Specifies whether this procedure should be
+called on the nonmaskable events
+.Pn ( GraphicsExpose ,
+.PN NoExpose ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+.PN ClientMessage ,
+and
+.PN MappingNotify ).
+.IP \fIproc\fP 1i
+Specifies the procedure to be called.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the event handler.
+.LP
+.eM
+The
+.PN XtAddEventHandler
+function registers a procedure with the dispatch mechanism that is
+to be called when an event that matches the mask occurs on the specified
+widget.
+Each widget has a single registered event handler list, which will
+contain any procedure/client_data pair exactly once regardless of
+the manner in which it is registered.
+If the procedure is already registered with the same \fIclient_data\fP
+value,
+the specified mask augments the existing mask.
+If the widget is realized,
+.PN XtAddEventHandler
+calls
+.PN XSelectInput ,
+if necessary.
+The order in which this procedure is called relative to other handlers
+registered for the same event is not defined.
+.sp
+.LP
+To remove a previously registered event handler, use
+.PN XtRemoveEventHandler .
+.LP
+.IN "XtRemoveEventHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveEventHandler(\fIw\fP, \fIevent_mask\fP, \fInonmaskable\fP, \
+\fIproc\fP, \fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ EventMask \fIevent_mask\fP;
+.br
+ Boolean \fInonmaskable\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which this procedure is registered. \*(cI
+.IP \fIevent_mask\fP 1i
+Specifies the event mask for which to unregister this procedure.
+.IP \fInonmaskable\fP 1i
+Specifies whether this procedure should be
+removed on the nonmaskable events
+.Pn ( GraphicsExpose ,
+.PN NoExpose ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+.PN ClientMessage ,
+and
+.PN MappingNotify ).
+.IP \fIproc\fP 1i
+Specifies the procedure to be removed.
+.IP \fIclient_data\fP 1i
+Specifies the registered client data.
+.LP
+.eM
+The
+.PN XtRemoveEventHandler
+function unregisters an event handler registered with
+.PN XtAddEventHandler
+or
+.PN XtInsertEventHandler
+for the specified events.
+The request is ignored if \fIclient_data\fP does not match the value given
+when the handler was registered.
+If the widget is realized and no other event handler requires the event,
+.PN XtRemoveEventHandler
+calls
+.PN XSelectInput .
+If the specified procedure has not been registered
+or if it has been registered with a different value of \fIclient_data\fP,
+.PN XtRemoveEventHandler
+returns without reporting an error.
+.LP
+To stop a procedure registered with
+.PN XtAddEventHandler
+or
+.PN XtInsertEventHandler
+from receiving all selected events, call
+.PN XtRemoveEventHandler
+with an \fIevent_mask\fP of
+.PN XtAllEvents
+and \fInonmaskable\fP
+.PN True .
+The procedure will continue to receive any events
+that have been specified in calls to
+.PN XtAddRawEventHandler
+or
+.PN XtInsertRawEventHandler .
+.sp
+.LP
+To register an event handler procedure that receives events before or
+after all previously registered event handlers, use
+.PN XtInsertEventHandler .
+.LP
+.IN "XtListPosition" "" "@DEF@"
+.IN "XtInsertEventHandler" "" "@DEF@"
+.sM
+.Ds 0
+typedef enum {XtListHead, XtListTail} XtListPosition;
+.De
+.LP
+.FD 0
+void XtInsertEventHandler(\fIw\fP, \fIevent_mask\fP, \fInonmaskable\fP, \
+\fIproc\fP, \fIclient_data\fP, \fIposition\fP)
+.br
+ Widget \fIw\fP;
+.br
+ EventMask \fIevent_mask\fP;
+.br
+ Boolean \fInonmaskable\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtListPosition \fIposition\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which this event handler is being registered. \*(cI
+.IP \fIevent_mask\fP 1i
+Specifies the event mask for which to call this procedure.
+.IP \fInonmaskable\fP 1i
+Specifies whether this procedure should be
+called on the nonmaskable events
+.Pn ( GraphicsExpose ,
+.PN NoExpose ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+.PN ClientMessage ,
+and
+.PN MappingNotify ).
+.IP \fIproc\fP 1i
+Specifies the procedure to be called.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the client's event handler.
+.IP \fIposition\fP 1i
+Specifies when the event handler is to be called
+relative to other previously registered handlers.
+.LP
+.eM
+.PN XtInsertEventHandler
+is identical to
+.PN XtAddEventHandler
+with the additional \fIposition\fP argument. If \fIposition\fP is
+.PN XtListHead ,
+the event
+handler is registered so that it is called before any event
+handlers that were previously registered for the same widget. If
+\fIposition\fP is
+.PN XtListTail ,
+the event handler is registered to be called
+after any previously registered event handlers. If the procedure is
+already registered with the same \fIclient_data\fP value, the specified mask
+augments the existing mask and the procedure is repositioned in
+the list.
+
+.NH 3
+Event Handlers That Do Not Select Events
+.XS
+\*(SN Event Handlers That Do Not Select Events
+.XE
+.LP
+On occasion,
+clients need to register an event handler procedure with the
+dispatch mechanism without explicitly
+causing the X server to select for that event.
+To do this, use
+.PN XtAddRawEventHandler .
+.LP
+.IN "XtAddRawEventHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtAddRawEventHandler(\fIw\fP, \fIevent_mask\fP, \fInonmaskable\fP, \
+\fIproc\fP, \fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ EventMask \fIevent_mask\fP;
+.br
+ Boolean \fInonmaskable\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which this event handler is being registered. \*(cI
+.IP \fIevent_mask\fP 1i
+Specifies the event mask for which to call this procedure.
+.IP \fInonmaskable\fP 1i
+Specifies whether this procedure should be
+called on the nonmaskable events
+.Pn ( GraphicsExpose ,
+.PN NoExpose ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+.PN ClientMessage ,
+and
+.PN MappingNotify ).
+.IP \fIproc\fP 1i
+Specifies the procedure to be called.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the client's event handler.
+.LP
+.eM
+The
+.PN XtAddRawEventHandler
+function is similar to
+.PN XtAddEventHandler
+except that it does not affect the widget's event mask and never causes an
+.PN XSelectInput
+for its events.
+Note that the widget might already have those mask bits set
+because of other nonraw event handlers registered on it.
+If the procedure is already registered with the same \fIclient_data\fP,
+the specified mask augments the existing mask.
+The order in which this procedure is called relative to other handlers
+registered for the same event is not defined.
+.sp
+.LP
+To remove a previously registered raw event handler, use
+.PN XtRemoveRawEventHandler .
+.LP
+.IN "XtRemoveRawEventHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveRawEventHandler(\fIw\fP, \fIevent_mask\fP, \fInonmaskable\fP, \
+\fIproc\fP, \fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ EventMask \fIevent_mask\fP;
+.br
+ Boolean \fInonmaskable\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which this procedure is registered. \*(cI
+.IP \fIevent_mask\fP 1i
+Specifies the event mask for which to unregister this procedure.
+.IP \fInonmaskable\fP 1i
+Specifies whether this procedure should be
+removed on the nonmaskable events
+.Pn ( GraphicsExpose ,
+.PN NoExpose ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+.PN ClientMessage ,
+and
+.PN MappingNotify ).
+.IP \fIproc\fP 1i
+Specifies the procedure to be registered.
+.IP \fIclient_data\fP 1i
+Specifies the registered client data.
+.LP
+.eM
+The
+.PN XtRemoveRawEventHandler
+function unregisters an event handler registered with
+.PN XtAddRawEventHandler
+or
+.PN XtInsertRawEventHandler
+for the specified events without changing
+the window event mask.
+The request is ignored if \fIclient_data\fP does not match the value given
+when the handler was registered.
+If the specified procedure has not been registered
+or if it has been registered with a different value of \fIclient_data\fP,
+.PN XtRemoveRawEventHandler
+returns without reporting an error.
+.LP
+To stop a procedure
+registered with
+.PN XtAddRawEventHandler
+or
+.PN XtInsertRawEventHandler
+from receiving all nonselected events, call
+.PN XtRemoveRawEventHandler
+with an \fIevent_mask\fP of
+.PN XtAllEvents
+and \fInonmaskable\fP
+.PN True .
+The procedure
+will continue to receive any events that have been specified in calls to
+.PN XtAddEventHandler
+or
+.PN XtInsertEventHandler .
+.sp
+.LP
+To register an event handler procedure that receives events before or
+after all previously registered event handlers without selecting for
+the events, use
+.PN XtInsertRawEventHandler .
+.LP
+.IN "XtInsertRawEventHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtInsertRawEventHandler(\fIw\fP, \fIevent_mask\fP, \fInonmaskable\fP, \
+\fIproc\fP, \fIclient_data\fP, \fIposition\fP)
+.br
+ Widget \fIw\fP;
+.br
+ EventMask \fIevent_mask\fP;
+.br
+ Boolean \fInonmaskable\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtListPosition \fIposition\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget for which this event handler is being registered. \*(cI
+.IP \fIevent_mask\fP 1i
+Specifies the event mask for which to call this procedure.
+.IP \fInonmaskable\fP 1i
+Specifies whether this procedure should be
+called on the nonmaskable events
+.Pn ( GraphicsExpose ,
+.PN NoExpose ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+.PN ClientMessage ,
+and
+.PN MappingNotify ).
+.IP \fIproc\fP 1i
+Specifies the procedure to be registered.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the client's event handler.
+.IP \fIposition\fP 1i
+Specifies when the event handler is to be called
+relative to other previously registered handlers.
+.LP
+.eM
+The
+.PN XtInsertRawEventHandler
+function is similar to
+.PN XtInsertEventHandler
+except that it does not modify the widget's event
+mask and never causes an
+.PN XSelectInput
+for the specified events. If
+the procedure is already registered with the same \fIclient_data\fP
+value, the
+specified mask augments the existing mask and the procedure is
+repositioned in the list.
+
+.NH 3
+Current Event Mask
+.XS
+\*(SN Current Event Mask
+.XE
+.LP
+To retrieve the event mask for a given widget, use
+.PN XtBuildEventMask .
+.LP
+.IN "XtBuildEventMask" "" "@DEF@"
+.sM
+.FD 0
+EventMask XtBuildEventMask(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(cI
+.LP
+.eM
+The
+.PN XtBuildEventMask
+function returns the event mask representing the logical OR
+of all event masks for event handlers registered on the widget with
+.PN XtAddEventHandler
+and
+.PN XtInsertEventHandler
+and all event translations, including accelerators,
+installed on the widget.
+This is the same event mask stored into the
+.PN XSetWindowAttributes
+structure by
+.PN XtRealizeWidget
+and sent to the server when event handlers and translations are installed or
+removed on the realized widget.
+
+.NH 3
+Event Handlers for X11 Protocol Extensions
+.XS
+\fB\*(SN Event Handlers for X11 Protocol Extensions\fP
+.XE
+.LP
+To register an event handler procedure with the \*(xI dispatch
+mechanism according to an event type, use
+.PN XtInsertEventTypeHandler .
+.LP
+.IN "XtInsertEventTypeHandler" "" "@DEF"
+.sM
+.FD 0
+void XtInsertEventTypeHandler(\fIwidget\fP, \fIevent_type\fP, \
+\fIselect_data\fP, \fIproc\fP, \fIclient_data\fP, \fIposition\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ int \fIevent_type\fP;
+.br
+ XtPointer \fIselect_data\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtListPosition \fIposition\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget for which this event handler is being registered. \*(cI
+.IP \fIevent_type\fP 1i
+Specifies the event type for which to call this event handler.
+.IP \fIselect_data\fP 1i
+Specifies data used to request events of the specified type from the server,
+or NULL.
+.IP \fIproc\fP 1i
+Specifies the event handler to be called.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the event handler.
+.IP \fIposition\fP 1i
+Specifies when the event handler is to be called relative to other
+previously registered handlers.
+.LP
+.eM
+.PN XtInsertEventTypeHandler
+registers a procedure with the
+dispatch mechanism that is to be called when an event that matches the
+specified \fIevent_type\fP is dispatched to the specified \fIwidget\fP.
+.LP
+If \fIevent_type\fP specifies one of the core X protocol events, then
+\fIselect_data\fP must be a pointer to a value of type
+.PN EventMask ,
+indicating
+the event mask to be used to select for the desired event. This event
+mask is included in the value returned by
+.PN XtBuildEventMask .
+If the widget is realized,
+.PN XtInsertEventTypeHandler
+calls
+.PN XSelectInput
+if necessary. Specifying NULL for \fIselect_data\fP is equivalent to
+specifying a pointer to an event mask containing 0. This is similar
+to the
+.PN XtInsertRawEventHandler
+function.
+.LP
+If \fIevent_type\fP specifies an extension event type, then the semantics of
+the data pointed to by \fIselect_data\fP are defined by the extension
+selector registered for the specified event type.
+.LP
+In either case the \*(xI are not required to copy the data
+pointed to by \fIselect_data\fP, so the caller must ensure that it remains
+valid as long as the event handler remains registered with this value
+of \fIselect_data\fP.
+.LP
+The \fIposition\fP argument allows the client to control the order of
+invocation of event handlers registered for the same event type. If
+the client does not care about the order, it should normally specify
+.PN XtListTail ,
+which registers this event handler after any previously
+registered handlers for this event type.
+.LP
+Each widget has a single registered event handler list, which will
+contain any procedure/client_data pair exactly once if it is
+registered with
+.PN XtInsertEventTypeHandler ,
+regardless of the manner
+in which it is registered and regardless of the value(s)
+of \fIselect_data\fP. If the procedure is already registered with the
+same \fIclient_data\fP value, the specified mask augments the existing
+mask and the procedure is repositioned in the list.
+.sp
+.LP
+To remove an event handler registered with
+.PN XtInsertEventTypeHandler ,
+use
+.PN XtRemoveEventTypeHandler .
+.LP
+.IN "XtRemoveEventTypeHandler" "" "@DEF"
+.sM
+.FD 0
+void XtRemoveEventTypeHandler(\fIwidget\fP, \fIevent_type\fP, \
+\fIselect_data\fP, \fIproc\fP, \fIclient_data\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ int \fIevent_type\fP;
+.br
+ XtPointer \fIselect_data\fP;
+.br
+ XtEventHandler \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget for which the event handler was registered. \*(cI
+.IP \fIevent_type\fP 1i
+Specifies the event type for which the handler was registered.
+.IP \fIselect_data\fP 1i
+Specifies data used to deselect events of the specified type
+from the server, or NULL.
+.IP \fIproc\fP 1i
+Specifies the event handler to be removed.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data with which the procedure was registered.
+.LP
+.eM
+The
+.PN XtRemoveEventTypeHandler
+function unregisters an event handler
+registered with
+.PN XtInsertEventTypeHandler
+for the specified event type.
+The request is ignored if \fIclient_data\fP does not match the value given
+when the handler was registered.
+.LP
+If \fIevent_type\fP specifies one of the core X protocol events,
+\fIselect_data\fP must be a pointer to a value of type
+.PN EventMask, indicating the event
+mask to be used to deselect for the appropriate event. If the widget
+is realized,
+.PN XtRemoveEventTypeHandler
+calls
+.PN XSelectInput
+if necessary.
+Specifying NULL for \fIselect_data\fP is equivalent to specifying a pointer
+to an event mask containing 0. This is similar to the
+.PN XtRemoveRawEventHandler
+function.
+.LP
+If \fIevent_type\fP specifies an extension event type, then the semantics of
+the data pointed to by \fIselect_data\fP are defined by the extension
+selector registered for the specified event type.
+.sp
+.LP
+To register a procedure to select extension events for a widget, use
+.PN XtRegisterExtensionSelector .
+.LP
+.IN "XtRegisterExtensionSelector" "" "@DEF@"
+.sM
+.FD 0
+void XtRegisterExtensionSelector(\fIdisplay\fP, \fImin_event_type\fP, \
+\fImax_event_type\fP, \fIproc\fP,
+ \fIclient_data\fP)
+.br
+ Display \fI*display\fP;
+.br
+ int \fImin_event_type\fP;
+.br
+ int \fImax_event_type\fP;
+.br
+ XtExtensionSelectProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIdisplay\fP 1.5i
+Specifies the display for which the extension selector is to be registered.
+.IP \fImin_event_type\fP
+.IP \fImax_event_type\fP 1.5i
+Specifies the range of event types for the extension.
+.IP \fIproc\fP 1.5i
+Specifies the extension selector procedure.
+.IP \fIclient_data\fP 1.5i
+Specifies additional data to be passed to the extension selector.
+.LP
+.eM
+The
+.PN XtRegisterExtensionSelector
+function registers a procedure to arrange
+for the delivery of extension events to widgets.
+.LP
+If \fImin_event_type\fP and \fImax_event_type\fP match the parameters
+to a previous call to
+.PN XtRegisterExtensionSelector
+for the same \fIdisplay\fP, then \fIproc\fP and \fIclient_data\fP
+replace the previously
+registered values. If the range specified by \fImin_event_type\fP
+and \fImax_event_type\fP overlaps the range of the parameters to a
+previous call for the same display in any other way, an error results.
+.LP
+When a widget is realized,
+after the \fIcore.realize\fP method is called,
+the \*(xI check to see if any event
+handler specifies an event type within the range of a registered
+extension selector. If so, the \*(xI call each such selector.
+If an event type handler is added or removed, the \*(xI check to
+see if the event type falls within the range of a registered extension
+selector, and if it does, calls the selector. In either case the \*(xI
+pass a list of all the widget's event types that are within the
+selector's range. The corresponding select data are also passed. The
+selector is responsible for enabling the delivery of extension events
+required by the widget.
+.sp
+.LP
+An extension selector is of type
+.PN XtExtensionSelectProc .
+.LP
+.IN "XtExtensionSelectProc" "" "@DEF"
+.sM
+.FD 0
+typedef void (*XtExtensionSelectProc)(Widget, int *, XtPointer *, int, \
+XtPointer);
+.br
+ Widget \fIwidget\fP;
+.br
+ int *\fIevent_types\fP;
+.br
+ XtPointer *\fIselect_data\fP;
+.br
+ int \fIcount\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget that is being realized or is having
+an event handler added or removed.
+.IP \fIevent_types\fP 1i
+Specifies a list of event types that the widget has
+registered event handlers for.
+.IP \fIselect_data\fP 1i
+Specifies a list of the select_data parameters specified in
+.PN XtInsertEventTypeHandler .
+.IP \fIcount\fP 1i
+Specifies the number of entries in the \fIevent_types\fP and \fIselect_data\fP
+lists.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data with which the procedure was registered.
+.LP
+.eM
+The \fIevent_types\fP and \fIselect_data\fP lists will always have the
+same number of elements, specified by \fIcount\fP.
+Each event type/select data pair represents one call to
+.PN XtInsertEventTypeHandler .
+.sp
+.LP
+To register a procedure to dispatch events of a specific type within
+.PN XtDispatchEvent ,
+use
+.PN XtSetEventDispatcher .
+.LP
+.IN "XtSetEventDispatcher" "" "@DEF@"
+.sM
+.FD 0
+XtEventDispatchProc XtSetEventDispatcher(\fIdisplay\fP, \fIevent_type\fP, \
+\fIproc\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ int \fIevent_type\fP;
+.br
+ XtEventDispatchProc \fIproc\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display for which the event dispatcher is to be registered.
+.IP \fIevent_type\fP 1i
+Specifies the event type for which the dispatcher should be invoked.
+.IP \fIproc\fP 1i
+Specifies the event dispatcher procedure.
+.LP
+.eM
+The
+.PN XtSetEventDispatcher
+function registers the event dispatcher procedure specified by \fIproc\fP
+for events with the type \fIevent_type\fP. The previously registered
+dispatcher (or the default dispatcher if there was no previously registered
+dispatcher) is returned. If \fIproc\fP is NULL, the default procedure is
+restored for the specified type.
+.LP
+In the future, when
+.PN XtDispatchEvent
+is called with an event type of \fIevent_type\fP, the specified \fIproc\fP
+(or the default dispatcher) is invoked to determine a widget
+to which to dispatch the event.
+.LP
+The default dispatcher handles the \*(xI modal cascade and keyboard
+focus mechanisms, handles the semantics of \fIcompress_enterleave\fP
+and \fIcompress_motion\fP, and discards all extension events.
+.sp
+.LP
+An event dispatcher procedure pointer is of type
+.PN XtEventDispatchProc .
+.LP
+.IN "XtEventDispatchProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Boolean (*XtEventDispatchProc)(XEvent*)
+.br
+ XEvent *\fIevent\fP;
+.FN
+.IP \fIevent\fP 1i
+Passes the event to be dispatched.
+.LP
+.eM
+The event dispatcher procedure should determine whether this event is of
+a type that should be dispatched to a widget.
+.LP
+If the event should be dispatched to a widget, the event dispatcher
+procedure should determine the appropriate widget to receive the
+event, call
+.PN XFilterEvent
+with the window of this widget, or
+.PN None
+if the event is to be discarded, and if
+.PN XFilterEvent
+returns
+.PN False ,
+dispatch the event to the widget using
+.PN XtDispatchEventToWidget .
+The procedure should return
+.PN True
+if either
+.PN XFilterEvent
+or
+.PN XtDispatchEventToWidget
+returned
+.PN True
+and
+.PN False
+otherwise.
+.LP
+If the event should not be dispatched to a widget, the event
+dispatcher procedure should attempt to dispatch the event elsewhere as
+appropriate and return
+.PN True
+if it successfully dispatched the event and
+.PN False
+otherwise.
+.sp
+.LP
+Some dispatchers for extension events may wish to forward events
+according to the Intrinsics' keyboard focus mechanism. To determine
+which widget is the end result of keyboard event forwarding, use
+.PN XtGetKeyboardFocusWidget .
+.LP
+.IN "XtGetKeyboardFocusWidget" "" "@DEF@"
+.sM
+.FD 0
+Widget XtGetKeyboardFocusWidget(\fIwidget\fP)
+.br
+ Widget \fIwidget\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget to get forwarding information for.
+.LP
+.eM
+The
+.PN XtGetKeyboardFocusWidget
+function returns the widget that would be the end result of keyboard
+event forwarding for a keyboard event for the specified widget.
+.sp
+.LP
+To dispatch an event to a specified widget, use
+.PN XtDispatchEventToWidget .
+.LP
+.IN "XtDispatchEventToWidget" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtDispatchEventToWidget(\fIwidget\fP, \fIevent\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ XEvent *\fIevent\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget to which to dispatch the event.
+.IP \fIevent\fP 1i
+Specifies a pointer to the event to be dispatched.
+.LP
+.eM
+The
+.PN XtDispatchEventToWidget
+function scans the list of registered event handlers for the
+specified widget and calls each handler that has been registered
+for the specified event type, subject to the \fIcontinue_to_dispatch\fP
+value returned by each handler.
+The \*(xI behave as if event handlers were registered at the head
+of the list for
+.PN Expose ,
+.PN NoExpose ,
+.PN GraphicsExpose ,
+and
+.PN VisibilityNotify
+events to invoke the widget's expose procedure according to the exposure
+compression rules and to update the widget's \fIvisible\fP field
+if \fIvisible_interest\fP is
+.PN True .
+These internal event handlers never set \fIcontinue_to_dispatch\fP to
+.PN False .
+.LP
+.PN XtDispatchEventToWidget
+returns
+.PN True
+if any event handler was called and
+.PN False
+otherwise.
+
+.NH 2
+Using the \*(xI in a Multi-Threaded Environment
+.XS
+\*(SN Using the \*(xI in a Multi-Threaded Environment
+.XE
+.LP
+The \*(xI may be used in environments that offer multiple threads
+of execution within the context of a single process. A multi-threaded
+application using the \*(xI must explicitly initialize the toolkit
+for mutually exclusive access by calling
+.PN XtToolkitThreadInitialize .
+
+.NH 3
+Initializing a Multi-Threaded \*(xI Application
+.XS
+\fB\*(SN Initializing a Multi-Threaded \*(xI Application\fP
+.XE
+.LP
+To test and initialize \*(xI support for mutually exclusive thread
+access, call
+.PN XtToolkitThreadInitialize .
+.LP
+.IN "XtToolkitThreadInitialize" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtToolkitThreadInitialize()
+.FN
+.LP
+.eM
+.PN XtToolkitThreadInitialize
+returns \fBTrue\fP if the \*(xI support mutually exclusive thread
+access, otherwise it returns \fBFalse\fP. \fBXtToolkitThreadInitialize\fP
+must be called before
+.PN XtCreateApplicationContext ,
+.PN XtAppInitialize ,
+.PN XtOpenApplication ,
+or
+.PN XtSetLanguageProc
+is called. \fBXtToolkitThreadInitialize\fP may be called more than once;
+however, the application writer must ensure that it is not called
+simultaneously by two or more threads.
+
+.NH 3
+Locking \*(tk Data Structures
+.XS
+\fB\*(SN Locking \*(tk Data Structures\fP
+.XE
+.LP
+The \*(xI employs two levels of locking: application context and
+process. Locking an application context ensures mutually exclusive
+access by a thread to the state associated with the application context,
+including all displays and widgets associated with it. Locking a
+process ensures mutually exclusive access by a thread to \*(xI process
+global data.
+.LP
+A client may acquire a lock multiple times and the effect is cumulative.
+The client must ensure that the lock is released an equal number of times in
+order for the lock to be acquired by another thread.
+.LP
+Most application writers will have little need to use locking as the
+\*(xI performs the necessary locking internally.
+Resource converters are an exception.
+They require the application context or process to be locked
+before the application can safely call them directly, for example:
+.LP
+.KS
+.Ds
+.TA .5i 2i
+.ta .5i 2i
+ ...
+ XtAppLock(app_context);
+ XtCvtStringToPixel(dpy, args, num_args, fromVal, toVal, closure_ret);
+ XtAppUnlock(app_context);
+ ...
+.De
+.KE
+.LP
+When the application relies upon
+.PN XtConvertAndStore
+or a converter to provide the storage for the results of a
+conversion, the application should acquire the process lock before
+calling out and hold the lock until the results have been copied.
+.LP
+Application writers who write their own
+utility functions, such as one which retrieves the being_destroyed field from
+a widget instance, must lock the application context before accessing
+widget internal data. For example:
+.LP
+.KS
+.Ds
+.TA .5i 2i
+.ta .5i 2i
+#include <X11/CoreP.h>
+Boolean BeingDestroyed (widget)
+ Widget widget;
+{
+ Boolean ret;
+ XtAppLock(XtWidgetToApplicationContext(widget));
+ ret = widget->core.being_destroyed;
+ XtAppUnlock(XtWidgetToApplicationContext(widget));
+ return ret;
+}
+.De
+.KE
+A client that wishes to atomically call two or more \*(xI functions
+must lock the application context. For example:
+.LP
+.KS
+.Ds
+.TA .5i 2i
+.ta .5i 2i
+ ...
+ XtAppLock(XtWidgetToApplicationContext(widget));
+ XtUnmanageChild (widget1);
+ XtManageChild (widget2);
+ XtAppUnlock(XtWidgetToApplicationContext(widget));
+ ...
+.De
+.KE
+
+.NH 4
+Locking the Application Context
+.XS
+\fB\*(SN Locking the Application Context\fP
+.XE
+.LP
+To ensure mutual exclusion of application context, display, or
+widget internal state, use
+.PN XtAppLock.
+.LP
+.IN "XtAppLock" "" "@DEF@"
+.sM
+.FD 0
+void XtAppLock(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context to lock.
+.LP
+.eM
+\fBXtAppLock\fP blocks until it is able to acquire the lock. Locking the
+application context also ensures that only the thread holding the lock
+makes Xlib calls from within Xt. An application that makes its own
+direct Xlib calls must either lock the application context around every
+call or enable thread locking in Xlib.
+.LP
+To unlock a locked application context, use
+.PN XtAppUnlock.
+.LP
+.IN "XtAppUnlock" "" "@DEF@"
+.sM
+.FD 0
+void XtAppUnlock(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context that was previously locked.
+.LP
+.eM
+
+.NH 4
+Locking the Process
+.XS
+\*(SN Locking the Process
+.XE
+.LP
+To ensure mutual exclusion of \*(tk process global data, a
+widget writer must use
+.PN XtProcessLock.
+.LP
+.IN "XtProcessLock" "" "@DEF@"
+.sM
+.FD 0
+void XtProcessLock()
+.FN
+.LP
+.eM
+\fBXtProcessLock\fP blocks until it is able to acquire the lock.
+Widget writers may use XtProcessLock to guarantee mutually exclusive
+access to widget static data.
+.LP
+To unlock a locked process, use
+.PN XtProcessUnlock .
+.LP
+.IN "XtProcessUnlock" "" "@DEF@"
+.sM
+.FD 0
+void XtProcessUnlock()
+.FN
+.LP
+.eM
+To lock both an application context and the process at the same
+time, call
+.PN XtAppLock
+first and then
+.PN XtProcessLock .
+To release both locks, call
+.PN XtProcessUnlock
+first and then
+.PN XtAppUnlock .
+The order is important to avoid deadlock.
+
+.NH 3
+Event Management in a Multi-Threaded Environment
+.XS
+\fB\*(SN Event Management in a Multi-Threaded Environment\fP
+.XE
+.LP
+In a nonthreaded environment an application writer could reasonably
+assume that it is safe to exit the application from a quit callback.
+This assumption may no longer hold true in a multi-threaded environment;
+therefore it is desirable to provide a mechanism to terminate an
+event-processing loop without necessarily terminating its thread.
+.LP
+To indicate that the event loop should terminate after the current
+event dispatch has completed, use
+.PN XtAppSetExitFlag .
+.LP
+.IN "XtAppSetExitFlag" "" "@DEF@"
+.sM
+.FD 0
+void XtAppSetExitFlag(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.LP
+.eM
+.PN XtAppMainLoop
+tests the value of the flag and will return if the flag is \fBTrue\fP.
+.LP
+Application writers who implement their own main loop may test the
+value of the exit flag with
+.PN XtAppGetExitFlag .
+.LP
+.IN "XtAppGetExitFlag" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtAppGetExitFlag(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.LP
+.eM
+.PN XtAppGetExitFlag
+will normally return \fBFalse\fP, indicating that event processing
+may continue. When
+.PN XtAppGetExitFlag
+returns \fBTrue\fP, the loop must terminate and return to the caller,
+which might then destroy the application context.
+.LP
+Application writers should be aware that, if a thread is blocked in
+.PN XtAppNextEvent ,
+.PN XtAppPeekEvent ,
+or
+.PN XtAppProcessEvent
+and another thread in the same application context opens a new display,
+adds an alternate input, or a timeout, any new source(s) will not
+normally be "noticed" by the blocked thread. Any new sources are
+"noticed" the next time one of these functions is called.
+.LP
+The \*(xI manage access to events on a last-in, first-out basis. If
+multiple threads in the same application context block in
+.PN XtAppNextEvent ,
+.PN XtAppPeekEvent ,
+or
+.PN XtAppProcessEvent ,
+the last thread to call one of these functions is the first
+thread to return.
+.bp
diff --git a/specs/Xt/CH08 b/specs/Xt/CH08
new file mode 100644
index 0000000..6dfb529
--- /dev/null
+++ b/specs/Xt/CH08
@@ -0,0 +1,452 @@
+.\" $Xorg: CH08,v 1.3 2000/08/17 19:42:46 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 8\fP\s-1
+
+\s+1\fBCallbacks\fP\s-1
+.sp 2
+.nr H1 8
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 8 \(em Callbacks
+.XE
+.IN "Destroy Callbacks"
+Applications and other widgets often need to register a procedure
+with a widget that gets called under certain prespecified conditions.
+For example,
+when a widget is destroyed,
+every procedure on the widget's \fIdestroy_callbacks\fP
+list is called to notify clients of the widget's impending doom.
+.LP
+Every widget has an XtNdestroyCallbacks callback list resource.
+Widgets can define additional callback lists as they see fit.
+For example, the Pushbutton widget has a callback
+list to notify clients when the button has been activated.
+.LP
+Except where otherwise noted, it is the intent that all Intrinsics
+functions may be called at any time, including from within callback
+procedures, action routines, and event handlers.
+
+.NH 2
+Using Callback Procedure and Callback List Definitions
+.XS
+\fB\*(SN Using Callback Procedure and Callback List Definitions\fP
+.XE
+.IN "XtCallbackList"
+.IN "XtCallbackProc"
+.LP
+Callback procedure pointers for use in callback lists are of type
+.PN XtCallbackProc .
+.LP
+.IN "XtCallbackProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtCallbackProc)(Widget, XtPointer, XtPointer);
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget owning the list in which the callback is registered.
+.IP \fIclient_data\fP 1i
+Specifies additional data supplied by the client when the procedure
+was registered.
+.IP \fIcall_data\fP 1i
+Specifies any callback-specific data the widget wants to pass to the client.
+For example, when Scrollbar executes its XtNthumbChanged callback list,
+it passes the new position of the thumb.
+.LP
+.eM
+The \fIclient_data\fP argument provides a way for the
+client registering the callback procedure also to register client-specific data,
+for example, a pointer to additional information about the widget,
+a reason for invoking the callback, and so on.
+The \fIclient_data\fP value may be NULL
+if all necessary information is in the widget.
+The \fIcall_data\fP argument is a convenience to avoid having simple
+cases where the client could otherwise always call
+.PN XtGetValues
+or a widget-specific function to retrieve data from the widget.
+Widgets should generally avoid putting complex state information
+in \fIcall_data\fP.
+The client can use the more general data retrieval methods, if necessary.
+.LP
+Whenever a client wants to pass a callback list as an argument in an
+.PN XtCreateWidget ,
+.PN XtSetValues ,
+or
+.PN XtGetValues
+call, it should specify the address
+of a NULL-terminated array of type
+.PN XtCallbackList .
+.IN "XtCallbackList" "" "@DEF@"
+.IN "XtCallbackRec" "" "@DEF@"
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XtCallbackProc callback;
+ XtPointer closure;
+} XtCallbackRec, *XtCallbackList;
+.De
+.LP
+.eM
+For example, the callback list for procedures A and B with client data
+clientDataA and clientDataB, respectively, is
+.LP
+.KS
+.Ds 5
+.TA .5i 3i
+.ta .5i 3i
+static XtCallbackRec callbacks[] = {
+ {A, (XtPointer) clientDataA},
+ {B, (XtPointer) clientDataB},
+ {(XtCallbackProc) NULL, (XtPointer) NULL}
+};
+.De
+.KE
+.LP
+Although callback lists are passed by address in arglists
+and varargs lists,
+the \*(xI recognize callback lists
+through the widget resource list and will copy the contents
+when necessary.
+Widget initialize and set_values procedures
+should not allocate memory for the callback list contents.
+The \*(xI automatically do this,
+potentially using a different structure for their
+internal representation.
+
+.NH 2
+Identifying Callback Lists
+.XS
+\fB\*(SN Identifying Callback Lists\fP
+.XE
+.LP
+Whenever a widget contains a callback list for use by clients,
+it also exports in its public .h file the resource name of the callback list.
+Applications and client widgets never access callback list fields directly.
+Instead, they always identify the desired callback list by using the exported
+resource name.
+All the callback manipulation functions described in this chapter
+except
+.PN XtCallCallbackList
+check
+to see that the requested callback list is indeed implemented by the widget.
+.LP
+For the \*(xI to find and correctly handle callback lists,
+they must be declared with a resource type of
+.PN XtRCallback .
+The internal representation of a callback list is
+implementation-dependent; widgets may make no assumptions about the
+value stored in this resource if it is non-NULL. Except to compare
+the value to NULL (which is equivalent to
+.PN XtCallbackStatus
+.PN XtCallbackHasNone ),
+access to callback list resources must be made
+through other \*(xI procedures.
+
+.NH 2
+Adding Callback Procedures
+.XS
+\fB\*(SN Adding Callback Procedures\fP
+.XE
+.LP
+To add a callback procedure to a widget's callback list, use
+.PN XtAddCallback .
+.LP
+.IN "XtAddCallback" "" "@DEF@"
+.sM
+.FD 0
+void XtAddCallback(\fIw\fP, \fIcallback_name, \fP\fIcallback\fP, \
+\fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.br
+ XtCallbackProc \fIcallback\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.IP \fIcallback_name\fP 1i
+Specifies the callback list to which the procedure is to be appended.
+.IP \fIcallback\fP 1i
+Specifies the callback procedure.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the specified procedure
+when it is invoked,
+or NULL.
+.LP
+.eM
+A callback will be invoked as many times as it occurs in the callback list.
+.sp
+.LP
+To add a list of callback procedures to a given widget's callback list, use
+.PN XtAddCallbacks .
+.LP
+.IN "XtAddCallbacks" "" "@DEF@"
+.sM
+.FD 0
+void XtAddCallbacks(\fIw\fP, \fIcallback_name, \fP\fIcallbacks\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.br
+ XtCallbackList \fIcallbacks\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.IP \fIcallback_name\fP 1i
+Specifies the callback list to which the procedures are to be appended.
+.IP \fIcallbacks\fP 1i
+Specifies the null-terminated list of callback procedures and corresponding
+client data.
+.LP
+.eM
+.NH 2
+Removing Callback Procedures
+.XS
+\fB\*(SN Removing Callback Procedures\fP
+.XE
+.LP
+To delete a callback procedure from a widget's callback list, use
+.PN XtRemoveCallback .
+.LP
+.IN "XtRemoveCallback" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveCallback(\fIw\fP, \fIcallback_name\fP, \fIcallback\fP, \
+\fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.br
+ XtCallbackProc \fIcallback\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.IP \fIcallback_name\fP 1i
+Specifies the callback list from which the procedure is to be deleted.
+.IP \fIcallback\fP 1i
+Specifies the callback procedure.
+.IP \fIclient_data\fP 1i
+Specifies the client data to match with the registered callback entry.
+.LP
+.eM
+The
+.PN XtRemoveCallback
+function removes a callback only if both the procedure and the client
+data match.
+.sp
+.LP
+To delete a list of callback procedures from a given widget's callback list, use
+.PN XtRemoveCallbacks .
+.LP
+.IN "XtRemoveCallbacks" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveCallbacks(\fIw\fP, \fIcallback_name\fP, \fIcallbacks\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.br
+ XtCallbackList \fIcallbacks\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.IP \fIcallback_name\fP 1i
+Specifies the callback list from which the procedures are to be deleted.
+.IP \fIcallbacks\fP 1i
+Specifies the null-terminated list of callback procedures and corresponding
+client data.
+.LP
+.eM
+To delete all callback procedures from a given widget's callback list
+and free all storage associated with the callback list, use
+.PN XtRemoveAllCallbacks .
+.LP
+.IN "XtRemoveAllCallbacks" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveAllCallbacks(\fIw\fP, \fIcallback_name\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.IP \fIcallback_name\fP 1i
+Specifies the callback list to be cleared.
+.LP
+.eM
+.NH 2
+Executing Callback Procedures
+.XS
+\*(SN Executing Callback Procedures
+.XE
+.LP
+To execute the procedures in a given widget's callback list,
+specifying the callback list by resource name, use
+.PN XtCallCallbacks .
+.LP
+.IN "XtCallCallbacks" "" "@DEF@"
+.sM
+.FD 0
+void XtCallCallbacks(\fIw\fP, \fIcallback_name\fP, \fIcall_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.IP \fIcallback_name\fP 1i
+Specifies the callback list to be executed.
+.IP \fIcall_data\fP 1i
+Specifies a callback-list-specific data value to pass to each of the callback
+procedure in the list, or NULL.
+.LP
+.eM
+.LP
+.PN XtCallCallbacks
+calls each of the callback procedures in the list
+named by \fIcallback_name\fP in the specified widget, passing the client
+data registered with the procedure and \fIcall-data\fP.
+.sp
+.LP
+To execute the procedures in a callback list, specifying the callback
+list by address, use
+.PN XtCallCallbackList .
+.LP
+.IN "XtCallCallbackList" "" "@DEF@"
+.sM
+.FD 0
+void XtCallCallbackList(\fIwidget\fP, \fIcallbacks\fP, \fIcall_data\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ XtCallbackList \fIcallbacks\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget instance that contains the callback list. \*(oI
+.IP \fIcallbacks\fP 1i
+Specifies the callback list to be executed.
+.IP \fIcall_data\fP 1i
+Specifies a callback-list-specific data value to pass
+to each of the callback procedures in the list, or NULL.
+.LP
+.eM
+The \fIcallbacks\fP parameter must specify the contents of a widget or
+object resource declared with representation type
+.PN XtRCallback .
+If \fIcallbacks\fP is NULL,
+.PN XtCallCallbackList
+returns immediately; otherwise it calls each of the callback
+procedures in the list, passing the client data and \fIcall_data\fP.
+
+.NH 2
+Checking the Status of a Callback List
+.XS
+\*(SN Checking the Status of a Callback List
+.XE
+.LP
+To find out the status of a given widget's callback list, use
+.PN XtHasCallbacks .
+.LP
+.IN "XtHasCallbacks" "" "@DEF@"
+.sp
+.sM
+.FD 0
+typedef enum {XtCallbackNoList, XtCallbackHasNone, XtCallbackHasSome} \
+XtCallbackStatus;
+.sp
+XtCallbackStatus XtHasCallbacks(\fIw\fP, \fIcallback_name\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIcallback_name\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(oI
+.IP \fIcallback_name\fP 1i
+Specifies the callback list to be checked.
+.LP
+.eM
+The
+.PN XtHasCallbacks
+function first checks to see if the widget has a callback list identified
+by \fIcallback_name\fP.
+If the callback list does not exist,
+.PN XtHasCallbacks
+returns
+.PN XtCallbackNoList .
+If the callback list exists but is empty,
+it returns
+.PN XtCallbackHasNone .
+If the callback list exists and has at least one callback registered,
+it returns
+.PN XtCallbackHasSome .
+.bp
diff --git a/specs/Xt/CH09 b/specs/Xt/CH09
new file mode 100644
index 0000000..9538651
--- /dev/null
+++ b/specs/Xt/CH09
@@ -0,0 +1,3211 @@
+.\" $Xorg: CH09,v 1.3 2000/08/17 19:42:46 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 9\fP\s-1
+
+\s+1\fBResource Management\fP\s-1
+.sp 2
+.nr H1 9
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 9 \(em Resource Management
+.XE
+A resource is a field in the widget record with a corresponding
+resource entry in the \fIresources\fP list of the widget or any of its
+superclasses.
+This means that the field is
+settable by
+.PN XtCreateWidget
+(by naming the field in the argument list), by an
+entry in a resource file (by using either the name or class), and by
+.PN XtSetValues .
+In addition, it is readable by
+.PN XtGetValues .
+Not all fields in a widget record are resources.
+Some are for bookkeeping use by the
+generic routines (like \fImanaged\fP and \fIbeing_destroyed\fP).
+Others can be for local bookkeeping,
+and still others are derived from resources
+(many graphics contexts and pixmaps).
+.LP
+Widgets typically need to obtain a large set of resources at widget
+creation time.
+Some of the resources come from the argument list supplied in the call to
+.PN XtCreateWidget ,
+some from the resource database,
+and some from the internal defaults specified by the widget.
+Resources are obtained first from the argument list,
+then from the resource database for all resources not specified
+in the argument list,
+and last, from the internal default, if needed.
+
+.NH 2
+Resource Lists
+.XS
+\*(SN Resource Lists
+.XE
+.LP
+.IN "Resource Management"
+A resource entry specifies a field in the widget,
+the textual name and class of the field that argument lists
+and external resource files use to refer to the field,
+and a default value that the field should get if no value is specified.
+The declaration for the
+.PN XtResource
+structure is
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ String resource_name;
+ String resource_class;
+ String resource_type;
+ Cardinal resource_size;
+ Cardinal resource_offset;
+ String default_type;
+ XtPointer default_addr;
+} XtResource, *XtResourceList;
+.De
+.IN "XtResourceList"
+.eM
+
+.LP
+When the resource list is specified as the
+.PN CoreClassPart ,
+.PN ObjectClassPart ,
+.PN RectObjClassPart ,
+or
+.PN ConstraintClassPart
+\fIresources\fP field, the strings pointed to by \fIresource_name\fP,
+\fIresource_class\fP, \fIresource_type\fP, and \fIdefault_type\fP must
+be permanently allocated prior to or during the execution of the class
+initialization procedure and must not be subsequently deallocated.
+
+.LP
+The \fIresource_name\fP field contains the name used by clients to access the field
+in the widget.
+By convention, it starts with a lowercase letter
+and is spelled exactly like the field name,
+except all underscores (_) are deleted and the next letter is replaced by its
+uppercase counterpart.
+For example, the resource name for background_pixel becomes backgroundPixel.
+Resource names beginning with the two-character
+sequence ``xt'', and resource classes beginning with the two-character
+sequence ``Xt'' are reserved to the \*(xI for future standard and
+implementation-dependent uses.
+Widget header files typically contain a symbolic name for each resource name.
+All resource names, classes, and types used by the \*(xI are named in
+.Pn < X11/StringDefs.h >.
+The \*(xI's symbolic resource names begin with
+``XtN''
+and are followed by the string name (for example, XtNbackgroundPixel
+for backgroundPixel).
+
+.LP
+The \fIresource_class\fP field contains the class string used in resource
+specification files to identify the field.
+A resource class provides two functions:
+.IP \(bu 5
+It isolates an application from different representations that widgets
+can use for a similar resource.
+.IP \(bu 5
+It lets you specify values for several actual resources with a single name.
+A resource class should be chosen to span a group of closely related fields.
+.LP
+For example,
+a widget can have several pixel resources: background, foreground,
+border, block cursor, pointer cursor, and so on.
+Typically, the background defaults to white
+and everything else to black.
+The resource class for each of these resources in the resource list
+should be chosen so that it takes the minimal number of entries
+in the resource database to make the background ivory
+and everything else darkblue.
+.LP
+In this case, the background pixel should have a resource class of
+``Background''
+and all the other pixel entries a resource class of
+``Foreground''.
+Then, the resource file needs only two lines to
+change all pixels to ivory or darkblue:
+.LP
+.Ds 5
+.TA .5i 1.5i
+.ta .5i 1.5i
+*Background: ivory
+*Foreground: darkblue
+.De
+.LP
+Similarly, a widget may have several font resources (such as normal and bold),
+but all fonts should have the class Font.
+Thus, changing all fonts simply requires only a single line in the
+default resource file:
+.LP
+.Ds 5
+.TA .5i 3i
+.ta .5i 3i
+*Font: 6x13
+.De
+.LP
+By convention,
+resource classes are always spelled starting with a capital letter
+to distinguish them from resource names.
+Their symbolic names are preceded with
+``XtC''
+(for example, XtCBackground).
+.LP
+The \fIresource_type\fP field gives the physical representation type of the resource
+and also encodes information about the specific usage of the field.
+By convention, it starts with an uppercase letter and is
+spelled identically to the type name of the field.
+The resource type is used when resources are fetched to
+convert from the resource database format (usually
+.PN String )
+or the format of the resource default value
+(almost anything, but often
+.PN String )
+to the desired
+physical representation (see Section 9.6).
+The \*(xI define the following resource types:
+.TS H
+lw(2.5i) lw(2.5i).
+_
+.sp 6p
+Resource Type Structure or Field Type
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+T{
+.PN XtRAcceleratorTable
+T} XtAccelerators
+T{
+.PN XtRAtom
+T} Atom
+T{
+.PN XtRBitmap
+T} Pixmap, depth=1
+T{
+.PN XtRBoolean
+T} Boolean
+T{
+.PN XtRBool
+T} Bool
+T{
+.PN XtRCallback
+T} XtCallbackList
+T{
+.PN XtRCardinal
+T} Cardinal
+T{
+.PN XtRColor
+T} XColor
+T{
+.PN XtRColormap
+T} Colormap
+T{
+.PN XtRCommandArgArray
+T} String*
+T{
+.PN XtRCursor
+T} Cursor
+T{
+.PN XtRDimension
+T} Dimension
+T{
+.PN XtRDirectoryString
+T} String
+T{
+.PN XtRDisplay
+T} Display*
+T{
+.PN XtREnum
+T} XtEnum
+T{
+.PN XtREnvironmentArray
+T} String*
+T{
+.PN XtRFile
+T} FILE*
+T{
+.PN XtRFloat
+T} float
+T{
+.PN XtRFont
+T} Font
+T{
+.PN XtRFontSet
+T} XFontSet
+T{
+.PN XtRFontStruct
+T} XFontStruct*
+T{
+.PN XtRFunction
+T} (*)()
+T{
+.PN XtRGeometry
+T} T{
+char*, format as defined by
+.PN XParseGeometry
+T}
+T{
+.PN XtRGravity
+T} int
+T{
+.PN XtRInitialState
+T} int
+T{
+.PN XtRInt
+T} int
+T{
+.PN XtRLongBoolean
+T} long
+T{
+.PN XtRObject
+T} Object
+T{
+.PN XtRPixel
+T} Pixel
+T{
+.PN XtRPixmap
+T} Pixmap
+T{
+.PN XtRPointer
+T} XtPointer
+T{
+.PN XtRPosition
+T} Position
+T{
+.PN XtRRestartStyle
+T} unsigned char
+T{
+.PN XtRScreen
+T} Screen*
+T{
+.PN XtRShort
+T} short
+T{
+.PN XtRSmcConn
+T} XtPointer
+T{
+.PN XtRString
+T} String
+T{
+.PN XtRStringArray
+T} String*
+T{
+.PN XtRStringTable
+T} String*
+T{
+.PN XtRTranslationTable
+T} XtTranslations
+T{
+.PN XtRUnsignedChar
+T} unsigned char
+T{
+.PN XtRVisual
+T} Visual*
+T{
+.PN XtRWidget
+T} Widget
+T{
+.PN XtRWidgetClass
+T} WidgetClass
+T{
+.PN XtRWidgetList
+T} WidgetList
+T{
+.PN XtRWindow
+T} Window
+.sp 6p
+_
+.TE
+.sp
+.LP
+.Pn < X11/StringDefs.h >
+also defines the following resource types as a
+convenience for widgets, although they do not have any corresponding
+data type assigned:
+.PN XtREditMode ,
+.PN XtRJustify ,
+and
+.PN XtROrientation .
+.LP
+The \fIresource_size\fP field is the size of the physical representation in bytes;
+you should specify it as
+.PN sizeof (\fItype\fP)
+so that the
+compiler fills in the value.
+The \fIresource_offset\fP field is the offset in bytes of the field
+within the widget.
+You should use the
+.PN XtOffsetOf
+macro to retrieve this value.
+The \fIdefault_type\fP field is the representation type of the default
+resource value.
+If \fIdefault_type\fP is different from \fIresource_type\fP and the default value
+is needed,
+the resource manager invokes a conversion procedure from \fIdefault_type\fP
+to \fIresource_type\fP.
+Whenever possible,
+the default type should be identical to the resource type in order
+to minimize widget creation time.
+However, there are sometimes no values of the type that the program
+can easily specify.
+In this case,
+it should be a value for which the converter is guaranteed to work (for example,
+.PN XtDefaultForeground
+for a pixel resource).
+The \fIdefault_addr\fP field specifies the address of the default resource value.
+As a special case, if \fIdefault_type\fP is
+.PN XtRString ,
+then the value in the \fIdefault_addr\fP field is the pointer to
+the string rather than a pointer to the pointer.
+The default is used if a resource is not specified in the argument list
+or in the resource database or if the conversion from the representation
+type stored in the resource database fails,
+which can happen for various reasons (for example, a misspelled entry in a
+resource file).
+.LP
+Two special representation types
+(XtRImmediate
+and
+XtRCallProc)
+are usable only as default resource types.
+XtRImmediate
+indicates that the value in the \fIdefault_addr\fP field is the actual value of
+the resource rather than the address of the value.
+The value must be in the correct representation type for the resource,
+coerced to an
+.PN XtPointer .
+No conversion is possible, since there is no source representation type.
+XtRCallProc
+indicates that the value in the \fIdefault_addr\fP field is a procedure
+pointer.
+This procedure is automatically invoked with the widget,
+\fIresource_offset\fP, and a pointer to an
+.PN XrmValue
+in which to store the result.
+XtRCallProc
+procedure pointers are of type
+.PN XtResourceDefaultProc .
+.LP
+.sM
+.FD 0
+typedef void (*XtResourceDefaultProc)(Widget, int, XrmValue*);
+.br
+ Widget \fIw\fP;
+.br
+ int \fIoffset\fP;
+.br
+ XrmValue *\fIvalue\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget whose resource value is to be obtained.
+.IP \fIoffset\fP 1i
+Specifies the offset of the field in the widget record.
+.IP \fIvalue\fP 1i
+Specifies the resource value descriptor to return.
+.LP
+.eM
+The
+.PN XtResourceDefaultProc
+procedure should fill in the \fIvalue->addr\fP field with a pointer
+to the resource value in its correct representation type.
+.sp
+.LP
+To get the resource list structure for a particular class, use
+.PN XtGetResourceList .
+.LP
+.IN "XtGetResourceList" "" "@DEF@"
+.sM
+.FD 0
+void XtGetResourceList(\fIclass\fP, \fIresources_return\fP, \fInum_resources_return\fP);
+.br
+ WidgetClass \fIclass\fP;
+.br
+ XtResourceList *\fIresources_return\fP;
+.br
+ Cardinal *\fInum_resources_return\fP;
+.FN
+.IP \fIclass\fP 1.5i
+Specifies the object class to be queried. It must be
+.PN objectClass
+or any subclass thereof.
+.IP \fIresources_return\fP 1.5i
+Returns the resource list.
+.IP \fInum_resources_return\fP 1.5i
+Returns the number of entries in the resource list.
+.LP
+.eM
+If
+.PN XtGetResourceList
+is called before the class is initialized,
+it returns the resource list as specified in the class record.
+If it is called after the class has been initialized,
+.PN XtGetResourceList
+returns a merged resource list that includes the resources
+for all superclasses.
+The list returned by
+.PN XtGetResourceList
+should be freed using
+.PN XtFree
+when it is no longer needed.
+.sp
+.LP
+To get the constraint resource list structure for a particular widget
+class, use
+.PN XtGetConstraintResourceList .
+.LP
+.IN "XtGetConstraintResourceList" "" "@DEF@"
+.sM
+.FD 0
+void XtGetConstraintResourceList(\fIclass\fP, \fIresources_return\fP, \
+\fInum_resources_return\fP)
+.br
+ WidgetClass \fIclass\fP;
+.br
+ XtResourceList *\fIresources_return\fP;
+.br
+ Cardinal *\fInum_resources_return\fP;
+.FN
+.IP \fIclass\fP 1.5i
+Specifies the object class to be queried. It must be
+.PN objectClass
+or any subclass thereof.
+.IP \fIresources_return\fP 1.5i
+Returns the constraint resource list.
+.IP \fInum_resources_return\fP 1.5i
+Returns the number of entries in the constraint resource list.
+.LP
+.eM
+If
+.PN XtGetConstraintResourceList
+is called before the widget class is
+initialized, the resource list as specified in the widget
+class Constraint part is returned. If
+.PN XtGetConstraintResourceList
+is called after the widget class has been initialized, the merged
+resource list for the class and all Constraint superclasses is
+returned. If the
+specified class is not a subclass of
+.PN constraintWidgetClass ,
+*\fIresources_return\fP is set to NULL
+and *\fInum_resources_return\fP is set to zero.
+The list returned by
+.PN XtGetConstraintResourceList
+should be freed using
+.PN XtFree
+when it is no longer needed.
+.sp
+.LP
+The routines
+.PN XtSetValues
+and
+.PN XtGetValues
+also use the resource list to set and get widget state;
+see Sections 9.7.1 and 9.7.2.
+.LP
+Here is an abbreviated version of a possible resource list for a Label widget:
+.LP
+.Ds
+.TA .5i 1.5i 3i
+.ta .5i 1.5i 3i
+/* Resources specific to Label */
+static XtResource resources[] = {
+{XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
+ XtOffsetOf(LabelRec, label.foreground), XtRString, XtDefaultForeground},
+{XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct*),
+ XtOffsetOf(LabelRec, label.font), XtRString, XtDefaultFont},
+{XtNlabel, XtCLabel, XtRString, sizeof(String),
+ XtOffsetOf(LabelRec, label.label), XtRString, NULL},
+ .
+ .
+ .
+}
+.De
+.LP
+The complete resource name for a field of a widget instance is the
+concatenation of the application shell name (from
+.PN XtAppCreateShell ),
+the instance names of all the widget's parents up to the
+top of the widget tree,
+the instance name of the widget itself,
+and the resource name of the specified field of the widget.
+Similarly,
+the full resource class of a field of a widget instance is the
+concatenation of the application class (from
+.PN XtAppCreateShell ),
+the widget class names of all the widget's parents up to the
+top of the widget tree,
+the widget class name of the widget itself,
+and the resource class of the specified field of the widget.
+
+.NH 2
+Byte Offset Calculations
+.XS
+\*(SN Byte Offset Calculations
+.XE
+.LP
+To determine the byte offset of a field within a structure type, use
+.PN XtOffsetOf .
+.LP
+.IN "XtOffsetOf" "" "@DEF@"
+.sM
+.FD 0
+Cardinal XtOffsetOf(\fIstructure_type\fP, \fIfield_name\fP)
+.br
+ \fIType structure_type\fP;
+.br
+ \fIField field_name\fP;
+.FN
+.IP \fIstructure_type\fP 1i
+Specifies a type that is declared as a structure.
+.IP \fIfield_name\fP 1i
+Specifies the name of a member within the structure.
+.LP
+.eM
+The
+.PN XtOffsetOf
+macro expands to a constant expression that gives the
+offset in bytes to the specified structure member from the beginning
+of the structure. It is normally used to statically initialize
+resource lists and is more portable than
+.PN XtOffset ,
+which serves the same function.
+
+.LP
+To determine the byte offset of a field within a structure pointer type, use
+.PN XtOffset .
+.LP
+.IN "XtOffset" "" "@DEF@"
+.sM
+.FD 0
+Cardinal XtOffset(\fIpointer_type\fP, \fIfield_name\fP)
+.br
+ \fIType pointer_type\fP;
+.br
+ \fIField field_name\fP;
+.FN
+.IP \fIpointer_type\fP 1i
+Specifies a type that is declared as a pointer to a structure.
+.IP \fIfield_name\fP 1i
+Specifies the name of a member within the structure.
+.LP
+.eM
+The
+.PN XtOffset
+macro expands to a constant expression that gives the
+offset in bytes to the specified structure member from the beginning
+of the structure. It may be used to statically initialize
+resource lists.
+.PN XtOffset
+is less portable than
+.PN XtOffsetOf .
+
+.NH 2
+Superclass-to-Subclass Chaining of Resource Lists
+.XS
+\*(SN Superclass-to-Subclass Chaining of Resource Lists
+.XE
+.LP
+.IN "Inheritance"
+.IN "Superclass Chaining"
+.IN "Chaining"
+The
+.PN XtCreateWidget
+function gets resources as a superclass-to-subclass chained operation.
+That is, the resources specified in the
+.PN objectClass
+resource list are fetched,
+then those in
+.PN rectObjClass ,
+and so on down to the resources specified
+for this widget's class. Within a class, resources are fetched in the order
+they are declared.
+.LP
+In general, if a widget resource field is declared in a superclass,
+that field is included in the superclass's resource list and need not be
+included in the subclass's resource list.
+For example, the
+Core
+class contains a resource entry for \fIbackground_pixel\fP.
+Consequently,
+the implementation of Label need not also have a resource entry
+for \fIbackground_pixel\fP.
+However, a subclass,
+by specifying a resource entry for that field in its own resource list,
+can override the resource entry for any field declared in a superclass.
+This is most often done to override the defaults provided in the
+superclass with new ones.
+At class initialization time,
+resource lists for that class are scanned from the superclass down
+to the class to look for resources with the same offset.
+A matching resource in a subclass will be reordered to override
+the superclass entry.
+If reordering is necessary, a copy of the superclass resource list is made to
+avoid affecting other subclasses of the superclass.
+.LP
+.IN "class_initialize procedure"
+.IN "Widget" "class initialization"
+Also at class initialization time, the \*(xI produce an
+internal representation of the resource list to optimize access time
+when creating widgets. In order to save memory, the \*(xI may
+overwrite the storage allocated for the resource list in the class
+record; therefore, widgets must allocate resource lists in writable
+storage and must not access the list contents directly after the
+class_initialize procedure has returned.
+
+.NH 2
+Subresources
+.XS
+\*(SN Subresources
+.XE
+.LP
+A widget does not do anything to retrieve its own resources;
+instead,
+.PN XtCreateWidget
+does this automatically before calling the class initialize procedure.
+.LP
+Some widgets have subparts that are not widgets but for which the widget
+would like to fetch resources.
+Such widgets call
+.PN XtGetSubresources
+to accomplish this.
+.LP
+.IN "XtGetSubresources" "" "@DEF@"
+.sM
+.FD 0
+void XtGetSubresources(\fIw\fP, \fIbase\fP, \fIname\fP, \fIclass\fP, \
+\fIresources\fP, \fInum_resources\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIbase\fP;
+.br
+ String \fIname\fP;
+.br
+ String \fIclass\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the object used to qualify the subpart resource name and
+class. \*(oI
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure into which the
+resources will be written.
+.IP \fIname\fP 1i
+Specifies the name of the subpart.
+.IP \fIclass\fP 1i
+Specifies the class of the subpart.
+.IP \fIresources\fP 1i
+Specifies the resource list for the subpart.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtGetSubresources
+function constructs a name and class list from the application name and class,
+the names and classes of all the object's ancestors, and the object itself.
+Then it appends to this list the \fIname\fP and \fIclass\fP pair passed in.
+The resources are fetched from the argument list, the resource database,
+or the default values in the resource list.
+Then they are copied into the subpart record.
+If \fIargs\fP is NULL,
+\fInum_args\fP must be zero.
+However, if \fInum_args\fP is zero,
+the argument list is not referenced.
+.LP
+.PN XtGetSubresources
+may overwrite the specified resource list with an
+equivalent representation in an internal format, which optimizes access
+time if the list is used repeatedly. The resource list must be
+allocated in writable storage, and the caller must not modify the list
+contents after the call if the same list is to be used again.
+Resources fetched by
+.PN XtGetSubresources
+are reference-counted as
+if they were referenced by the specified object. Subresources might
+therefore be freed from the conversion cache and destroyed
+when the object is destroyed, but not before then.
+.sp
+.LP
+To fetch resources for widget subparts using varargs lists, use
+.PN XtVaGetSubresources .
+.LP
+.IN "XtVaGetSubresources" "" "@DEF@"
+.sM
+.FD 0
+void XtVaGetSubresources(\fIw\fP, \fIbase\fP, \fIname\fP, \fIclass\fP, \
+\fIresources\fP, \fInum_resources\fP, ...)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIbase\fP;
+.br
+ String \fIname\fP;
+.br
+ String \fIclass\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the object used to qualify the subpart resource name and
+class. \*(oI
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure into which the
+resources will be written.
+.IP \fIname\fP 1i
+Specifies the name of the subpart.
+.IP \fIclass\fP 1i
+Specifies the class of the subpart.
+.IP \fIresources\fP 1i
+Specifies the resource list for the subpart.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP ... 1i
+Specifies the variable argument list to override any other
+resource specifications.
+.LP
+.eM
+.PN XtVaGetSubresources
+is identical in function to
+.PN XtGetSubresources
+with the \fIargs\fP and \fInum_args\fP parameters replaced by a varargs list, as
+described in Section 2.5.1.
+
+.NH 2
+Obtaining Application Resources
+.XS
+\fB\*(SN Obtaining Application Resources\fP
+.XE
+.LP
+To retrieve resources that are not specific to a widget
+but apply to the overall application, use
+.PN XtGetApplicationResources .
+.LP
+.IN "XtGetApplicationResources" "" "@DEF@"
+.sM
+.FD 0
+void XtGetApplicationResources(\fIw\fP, \fIbase\fP, \fIresources\fP, \
+\fInum_resources\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIbase\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the object that identifies the resource database to search
+(the database is that associated with the display for this object). \*(oI
+.IP \fIbase\fP 1i
+Specifies the base address into which
+the resource values will be written.
+.IP \fIresources\fP 1i
+Specifies the resource list.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtGetApplicationResources
+function first uses the passed object,
+which is usually an application shell widget,
+to construct a resource name and class list.
+The full name and class of the specified object (that is, including its
+ancestors, if any) is logically added to the
+front of each resource name and class.
+Then it retrieves the resources from the argument list,
+the resource database, or the resource list default values.
+After adding base to each address,
+.PN XtGetApplicationResources
+copies the resources into the addresses
+obtained by adding \fIbase\fP to each \fIoffset\fP in the resource list.
+If \fIargs\fP is NULL,
+\fInum_args\fP must be zero.
+However, if \fInum_args\fP is zero,
+the argument list is not referenced.
+The portable way to specify application resources is to declare them
+as members of a structure and pass the address of the structure
+as the \fIbase\fP argument.
+.LP
+.PN XtGetApplicationResources
+may overwrite the specified resource list
+with an equivalent representation in an internal format, which
+optimizes access time if the list is used repeatedly. The resource
+list must be allocated in writable storage, and the caller must not
+modify the list contents after the call if the same list is to be
+used again. Any per-display resources fetched by
+.PN XtGetApplicationResources
+will not be freed from the resource cache until the display is closed.
+.sp
+.LP
+To retrieve resources for the overall application using varargs lists, use
+.PN XtVaGetApplicationResources .
+.LP
+.IN "XtVaGetApplicationResources" "" "@DEF@"
+.sM
+.FD 0
+void XtVaGetApplicationResources(\fIw\fP, \fIbase\fP, \fIresources\fP, \
+\fInum_resources\fP, ...)
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIbase\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the object that identifies the resource database to search
+(the database is that associated with the display for this object). \*(oI
+.IP \fIbase\fP 1i
+Specifies the base address into which
+the resource values will be written.
+.IP \fIresources\fP 1i
+Specifies the resource list for the subpart.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP ... 1i
+Specifies the variable argument list to override any other
+resource specifications.
+.LP
+.eM
+.PN XtVaGetApplicationResources
+is identical in function to
+.PN XtGetApplicationResources
+with the \fIargs\fP and \fInum_args\fP parameters
+replaced by a varargs list, as described in Section 2.5.1.
+
+.NH 2
+Resource Conversions
+.XS
+\*(SN Resource Conversions
+.XE
+.LP
+The \*(xI provide a mechanism for registering representation converters that
+are automatically invoked by the resource-fetching routines.
+The \*(xI additionally provide and register several commonly used converters.
+This resource conversion mechanism serves several purposes:
+.IP \(bu 5
+It permits user and application resource files to contain textual
+representations of nontextual values.
+.IP \(bu 5
+It allows textual or other representations of default resource values that
+are dependent on the display, screen, or colormap, and thus must be
+computed at runtime.
+.IP \(bu 5
+It caches conversion source and result data.
+Conversions that require much computation or space
+(for example, string-to-translation-table)
+or that require round-trips to the server
+(for example, string-to-font or string-to-color) are performed only once.
+
+.NH 3
+Predefined Resource Converters
+.XS
+\*(SN Predefined Resource Converters
+.XE
+.LP
+The \*(xI define all the representations used in the
+Object,
+RectObj,
+Core,
+Composite,
+Constraint,
+and
+Shell
+widget classes.
+The \*(xI register the following resource converters that accept
+input values of representation type
+.PN XtRString .
+.LP
+.TS
+lw(1.7i) lw(2.4i) lw(1.5i) .
+_
+.sp 6p
+Target Representation Converter Name Additional Args
+.sp 6p
+_
+.sp 6p
+T{
+.PN XtRAcceleratorTable
+T} T{
+.PN XtCvtStringToAcceleratorTable
+T}
+T{
+.PN XtRAtom
+T} T{
+.PN XtCvtStringToAtom
+T} Display*
+T{
+.PN XtRBoolean
+T} T{
+.PN XtCvtStringToBoolean
+T}
+T{
+.PN XtRBool
+T} T{
+.PN XtCvtStringToBool
+T}
+T{
+.PN XtRCommandArgArray
+T} T{
+.PN XtCvtStringToCommandArgArray
+T}
+T{
+.PN XtRCursor
+T} T{
+.PN XtCvtStringToCursor
+T} Display*
+T{
+.PN XtRDimension
+T} T{
+.PN XtCvtStringToDimension
+T}
+T{
+.PN XtRDirectoryString
+T} T{
+.PN XtCvtStringToDirectoryString
+T}
+T{
+.PN XtRDisplay
+T} T{
+.PN XtCvtStringToDisplay
+T}
+T{
+.PN XtRFile
+T} T{
+.PN XtCvtStringToFile
+T}
+T{
+.PN XtRFloat
+T} T{
+.PN XtCvtStringToFloat
+T}
+T{
+.PN XtRFont
+T} T{
+.PN XtCvtStringToFont
+T} Display*
+T{
+.PN XtRFontSet
+T} T{
+.PN XtCvtStringToFontSet
+T} Display*, String \fIlocale\fP
+T{
+.PN XtRFontStruct
+T} T{
+.PN XtCvtStringToFontStruct
+T} Display*
+T{
+.PN XtRGravity
+T} T{
+.PN XtCvtStringToGravity
+T}
+T{
+.PN XtRInitialState
+T} T{
+.PN XtCvtStringToInitialState
+T}
+T{
+.PN XtRInt
+T} T{
+.PN XtCvtStringToInt
+T}
+T{
+.PN XtRPixel
+T} T{
+.PN XtCvtStringToPixel
+T} T{
+.PN colorConvertArgs
+T}
+T{
+.PN XtRPosition
+T} T{
+.PN XtCvtStringToPosition
+T}
+T{
+.PN XtRRestartStyle
+T} T{
+.PN XtCvtStringToRestartStyle
+T}
+T{
+.PN XtRShort
+T} T{
+.PN XtCvtStringToShort
+T}
+T{
+.PN XtRTranslationTable
+T} T{
+.PN XtCvtStringToTranslationTable
+T}
+T{
+.PN XtRUnsignedChar
+T} T{
+.PN XtCvtStringToUnsignedChar
+T}
+T{
+.PN XtRVisual
+T} T{
+.PN XtCvtStringToVisual
+T} Screen*, Cardinal \fIdepth\fP
+.sp 6p
+_
+.TE
+
+.LP
+The String-to-Pixel conversion has two predefined constants that are
+guaranteed to work and contrast with each other:
+.PN XtDefaultForeground
+and
+.PN XtDefaultBackground .
+.IN "XtDefaultBackground" "" "@DEF@"
+.IN "XtDefaultForeground" "" "@DEF@"
+They evaluate to the black and white pixel values of the widget's screen,
+respectively.
+.IN "Resources" "reverseVideo"
+If the application resource reverseVideo is
+.PN True ,
+they evaluate to the white and black pixel values of the widget's screen,
+respectively.
+Similarly, the String-to-Font and String-to-FontStruct converters recognize
+the constant
+.PN XtDefaultFont
+.IN "XtDefaultFont" "" "@DEF@"
+.IN "Resources" "xtDefaultFont"
+and evaluate this in the following manner:
+.IP \(bu 5
+Query the resource database for the resource whose full name
+is ``xtDefaultFont'', class ``XtDefaultFont'' (that is, no widget
+name/class prefixes), and use a type
+.PN XtRString
+value returned as the font name or a type
+.PN XtRFont
+or
+.PN XtRFontStruct
+value directly as the resource value.
+.IP \(bu 5
+If the resource database does not contain a value for xtDefaultFont,
+class XtDefaultFont, or if the returned font name cannot be
+successfully opened, an implementation-defined font in ISO8859-1
+character set encoding is opened. (One possible algorithm is to
+perform an
+.PN XListFonts
+using a wildcard font name and use the first
+font in the list. This wildcard font name should be as broad as
+possible to maximize the probability of locating a useable font;
+for example, "-*-*-*-R-*-*-*-120-*-*-*-*-ISO8859-1".)
+.IP \(bu 5
+If no suitable ISO8859-1 font can be found, issue a warning message
+and return
+.PN False .
+.LP
+The String-to-FontSet converter recognizes the constant
+.PN XtDefaultFontSet
+.IN "XtDefaultFontSet" "" "@DEF@"
+.IN "Resources" "xtDefaultFontSet"
+and evaluate this in the following manner:
+.IP \(bu 5
+Query the resource database for the resource whose full name
+is ``xtDefaultFontSet'', class ``XtDefaultFontSet'' (that is, no widget
+name/class prefixes), and use a type
+.PN XtRString
+value returned as the base font name list or a type
+.PN XtRFontSet
+value directly as the resource value.
+.IP \(bu 5
+If the resource database does not contain a value for xtDefaultFontSet,
+class XtDefaultFontSet, or if a font set cannot be
+successfully created from this resource,
+an implementation-defined font set is created.
+(One possible algorithm is to
+perform an
+.PN XCreateFontSet
+using a wildcard base font name.
+This wildcard base font name should be as broad as
+possible to maximize the probability of locating a useable font;
+for example, "-*-*-*-R-*-*-*-120-*-*-*-*".)
+.IP \(bu 5
+If no suitable font set can be created, issue a warning message
+and return
+.PN False .
+.LP
+If a font set is created but \fImissing_charset_list\fP is not
+empty, a warning is issued and the partial font set is returned.
+The \*(xI register the String-to-FontSet converter with
+a conversion argument list that extracts the current process
+locale at the time the converter is invoked. This ensures
+that the converter is invoked again if the same conversion
+is required in a different locale.
+.LP
+The String-to-Gravity conversion accepts string values that are the
+names of window and bit gravities and their numerical equivalents,
+as defined in \fI\*(xL\fP:
+.PN ForgetGravity ,
+.PN UnmapGravity ,
+.PN NorthWestGravity ,
+.PN NorthGravity ,
+.PN NorthEastGravity ,
+.PN WestGravity ,
+.PN CenterGravity ,
+.PN EastGravity ,
+.PN SouthWestGravity ,
+.PN SouthGravity ,
+.PN SouthEastGravity ,
+and
+.PN StaticGravity .
+Alphabetic case is not significant in the conversion.
+.LP
+The String-to-CommandArgArray conversion parses a String into an
+array of strings.
+White space characters separate elements of the command line.
+The converter recognizes the backslash character ``\\'' as an escape
+character to allow the following white space character to be part of the
+array element.
+.LP
+.IN "XtCurrentDirectory" "" "@DEF@"
+The String-to-DirectoryString conversion recognizes the
+string ``XtCurrentDirectory'' and returns the result of a call
+to the operating system to get the current directory.
+.LP
+The String-to-RestartStyle conversion accepts the values
+.PN RestartIfRunning ,
+.PN RestartAnyway ,
+.PN RestartImmediately ,
+and
+.PN RestartNever
+as defined by the \fIX Session Management Protocol\fP.
+.LP
+The String-to-InitialState conversion accepts the values
+.PN NormalState
+or
+.PN IconicState
+as defined by the \fI\*(xC\fP.
+.LP
+The String-to-Visual conversion calls
+.PN XMatchVisualInfo
+using the
+\fIscreen\fP and \fIdepth\fP fields from the core part and returns the first
+matching Visual on the list. The widget resource list must be certain
+to specify any resource of type
+.PN XtRVisual
+after the depth resource.
+The allowed string values are the visual class names defined in \fI\*(xP\fP,
+Section 8;
+.PN StaticGray ,
+.PN StaticColor ,
+.PN TrueColor ,
+.PN GrayScale ,
+.PN PseudoColor ,
+and
+.PN DirectColor .
+
+.LP
+The \*(xI register the following resource converter that accepts
+an input value of representation type
+.PN XtRColor .
+.LP
+.TS
+lw(1.5i) lw(2.25i) lw(1.5i) .
+_
+.sp 6p
+Target Representation Converter Name Additional Args
+.sp 6p
+_
+.sp 6p
+T{
+.PN XtRPixel
+T} T{
+.PN XtCvtColorToPixel
+T}
+.sp 6p
+_
+.TE
+
+.LP
+The \*(xI register the following resource converters that accept
+input values of representation type
+.PN XtRInt .
+.LP
+.TS
+lw(1.5i) lw(2.25i) lw(1.5i) .
+_
+.sp 6p
+Target Representation Converter Name Additional Args
+.sp 6p
+_
+.sp 6p
+T{
+.PN XtRBoolean
+T} T{
+.PN XtCvtIntToBoolean
+T}
+T{
+.PN XtRBool
+T} T{
+.PN XtCvtIntToBool
+T}
+T{
+.PN XtRColor
+T} T{
+.PN XtCvtIntToColor
+T} T{
+.PN colorConvertArgs
+T}
+T{
+.PN XtRDimension
+T} T{
+.PN XtCvtIntToDimension
+T}
+T{
+.PN XtRFloat
+T} T{
+.PN XtCvtIntToFloat
+T}
+T{
+.PN XtRFont
+T} T{
+.PN XtCvtIntToFont
+T}
+T{
+.PN XtRPixel
+T} T{
+.PN XtCvtIntToPixel
+T}
+T{
+.PN XtRPixmap
+T} T{
+.PN XtCvtIntToPixmap
+T}
+T{
+.PN XtRPosition
+T} T{
+.PN XtCvtIntToPosition
+T}
+T{
+.PN XtRShort
+T} T{
+.PN XtCvtIntToShort
+T}
+T{
+.PN XtRUnsignedChar
+T} T{
+.PN XtCvtIntToUnsignedChar
+T}
+.sp 6p
+_
+.TE
+
+.LP
+The \*(xI register the following resource converter that accepts
+an input value of representation type
+.PN XtRPixel .
+.LP
+.TS
+lw(1.5i) lw(2.25i) lw(1.5i) .
+_
+.sp 6p
+Target Representation Converter Name Additional Args
+.sp 6p
+_
+.sp 6p
+T{
+.PN XtRColor
+T} T{
+.PN XtCvtPixelToColor
+T}
+.sp 6p
+_
+.TE
+
+.NH 3
+New Resource Converters
+.XS
+\*(SN New Resource Converters
+.XE
+.LP
+Type converters use pointers to
+.PN XrmValue
+structures (defined in
+.Pn < X11/Xresource.h >;
+see Section 15.4 in \fI\*(xL\fP)
+for input and output values.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ unsigned int size;
+ XPointer addr;
+} XrmValue, *XrmValuePtr;
+.De
+.LP
+.eM
+The \fIaddr\fP field specifies the address of the data, and the \fIsize\fP
+field gives the total number of significant bytes in the data.
+For values of type
+.PN String ,
+\fIaddr\fP is the address of the first character and \fIsize\fP
+includes the NULL-terminating byte.
+.LP
+A resource converter procedure pointer is of type
+.PN XtTypeConverter .
+.LP
+.IN "XtTypeConverter" "" "@DEF@"
+.sM
+.FD 0
+typedef Boolean (*XtTypeConverter)(Display*, XrmValue*, Cardinal*,
+ XrmValue*, XrmValue*, XtPointer*);
+.br
+ Display *\fIdisplay\fP;
+.br
+ XrmValue *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValue *\fIfrom\fP;
+.br
+ XrmValue *\fIto\fP;
+.br
+ XtPointer *\fIconverter_data\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display connection with which this conversion is associated.
+.IP \fIargs\fP 1i
+Specifies a list of additional
+.PN XrmValue
+arguments to the converter if additional context is needed
+to perform the conversion, or NULL.
+For example, the String-to-Font converter needs the widget's \fIdisplay\fP,
+and the String-to-Pixel converter needs the widget's \fIscreen\fP and \fIcolormap\fP.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIargs\fP.
+.IP \fIfrom\fP 1i
+Specifies the value to convert.
+.IP \fIto\fP 1i
+Specifies a descriptor for a location into which to store the converted value.
+.IP \fIconverter_data\fP 1i
+Specifies a location into which the converter may
+store converter-specific data associated
+with this conversion.
+.LP
+.eM
+The \fIdisplay\fP argument is normally used only when generating error
+messages, to identify the application context (with the function
+.PN XtDisplayToApplicationContext ).
+.LP
+The \fIto\fP argument specifies the size and location into which the
+converter should store the converted value. If the \fIaddr\fP field is NULL,
+the converter should allocate appropriate storage and store the size
+and location into the \fIto\fP descriptor. If the type converter allocates
+the storage, it remains under the ownership of the converter and must
+not be modified by the caller. The type converter is permitted to use
+static storage for this purpose, and therefore the caller must
+immediately copy the data upon return from the converter. If the
+\fIaddr\fP field is not NULL, the converter must check the \fIsize\fP field to
+ensure that sufficient space has been allocated before storing the
+converted value. If insufficient space is specified, the converter
+should update the \fIsize\fP field with the number of bytes required and
+return
+.PN False
+without modifying the data at the specified location.
+If sufficient space was allocated by the caller, the converter should
+update the \fIsize\fP field with the number of bytes actually occupied by the
+converted value. For converted values of type
+.PN XtRString ,
+the size should
+include the NULL-terminating byte, if any.
+The converter may store any value in the location specified
+in \fIconverter_data\fP; this value will be passed to the destructor, if any,
+when the resource is freed by the \*(xI.
+.LP
+The converter must return
+.PN True
+if the conversion was successful and
+.PN False
+otherwise. If the conversion cannot be performed because of an
+improper source value, a warning message should also be issued with
+.PN XtAppWarningMsg .
+
+.LP
+Most type converters just take the data described by the specified \fIfrom\fP
+argument and return data by writing into the location specified in
+the \fIto\fP argument.
+A few need other information, which is available in \fIargs\fP.
+A type converter can invoke another type converter,
+which allows differing sources that may convert into a common intermediate
+result to make maximum use of the type converter cache.
+.LP
+Note that if an address is written into \fIto->addr\fP, it cannot be that
+of a local variable of the converter because the data will not be
+valid after the converter returns. Static variables may be used,
+as in the following example.
+If the converter modifies the resource database,
+the changes affect any in-progress widget creation,
+.PN XtGetApplicationResources ,
+or
+.PN XtGetSubresources
+in an implementation-defined manner; however, insertion of new entries
+or changes to existing entries is allowed and will not directly cause
+an error.
+
+.LP
+The following is an example of a converter that takes a
+.PN string
+and converts it to a
+.PN Pixel .
+Note that the \fIdisplay\fP parameter is
+used only to generate error messages; the
+.PN Screen
+conversion argument is
+still required to inform the \*(xI that the converted value is
+a function of the particular display (and colormap).
+.LP
+.Ds 0
+.TA .3i .7i 1i 1.3i 1.7i 2i 4i
+.ta .3i .7i 1i 1.3i 1.7i 2i 4i
+
+#define done(type, value) \\
+ { \\
+ if (toVal->addr != NULL) { \\
+ if (toVal->size < sizeof(type)) { \\
+ toVal->size = sizeof(type); \\
+ return False; \\
+ } \\
+ *(type*)(toVal->addr) = (value); \\
+ } \\
+ else { \\
+ static type static_val; \\
+ static_val = (value); \\
+ toVal->addr = (XPointer)&static_val; \\
+ } \\
+ toVal->size = sizeof(type); \\
+ return True; \\
+ }
+
+static Boolean CvtStringToPixel(dpy, args, num_args, fromVal, toVal, converter_data)
+ Display *dpy;
+ XrmValue *args;
+ Cardinal *num_args;
+ XrmValue *fromVal;
+ XrmValue *toVal;
+ XtPointer *converter_data;
+{
+ static XColor screenColor;
+ XColor exactColor;
+ Screen *screen;
+ Colormap colormap;
+ Status status;
+
+ if (*num_args != 2)
+ XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+ "wrongParameters", "cvtStringToPixel", "XtToolkitError",
+ "String to pixel conversion needs screen and colormap arguments",
+ (String *)NULL, (Cardinal *)NULL);
+
+ screen = *((Screen**) args[0].addr);
+ colormap = *((Colormap *) args[1].addr);
+
+ if (CompareISOLatin1(str, XtDefaultBackground) == 0) {
+ *closure_ret = False;
+ done(Pixel, WhitePixelOfScreen(screen));
+ }
+ if (CompareISOLatin1(str, XtDefaultForeground) == 0) {
+ *closure_ret = False;
+ done(Pixel, BlackPixelOfScreen(screen));
+ }
+
+
+ status = XAllocNamedColor(DisplayOfScreen(screen), colormap, (char*)fromVal->addr,
+ &screenColor, &exactColor);
+
+ if (status == 0) {
+ String params[1];
+ Cardinal num_params = 1;
+ params[0] = (String)fromVal->addr;
+ XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+ "noColormap", "cvtStringToPixel", "XtToolkitError",
+ "Cannot allocate colormap entry for \\"%s\\"", params,\
+ &num_params);
+ *converter_data = (char *) False;
+ return False;
+ } else {
+ *converter_data = (char *) True;
+ done(Pixel, &screenColor.pixel);
+ }
+}
+.De
+.LP
+All type converters should define some set of conversion values for which they
+are guaranteed to succeed so these can be used in the resource defaults.
+This issue arises only with conversions, such as fonts and colors,
+where there is no string representation that all server implementations
+will necessarily recognize.
+For resources like these,
+the converter should define a symbolic constant
+in the same manner as
+.PN XtDefaultForeground ,
+.PN XtDefaultBackground ,
+and
+.PN XtDefaultFont .
+.sp
+.LP
+To allow the \*(xI to deallocate resources produced by type
+converters, a resource destructor procedure may also be provided.
+.LP
+A resource destructor procedure pointer is of type
+.PN XtDestructor .
+.LP
+.IN "XtDestructor" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtDestructor) (XtAppContext, XrmValue*, XtPointer, XrmValue*, \
+Cardinal*);
+.br
+ XtAppContext \fIapp\fP;
+.br
+ XrmValue *\fIto\fP;
+.br
+ XtPointer \fIconverter_data\fP;
+.br
+ XrmValue *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.FN
+.IP \fIapp\fP 1i
+Specifies an application context in which the resource is being freed.
+.IP \fIto\fP 1i
+Specifies a descriptor for the resource produced by the type converter.
+.IP \fIconverter_data\fP 1i
+Specifies the converter-specific data returned by the type converter.
+.IP \fIargs\fP 1i
+Specifies the additional converter arguments as passed
+to the type converter when the conversion was performed.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIargs\fP.
+.LP
+.eM
+The destructor procedure is responsible for freeing the resource
+specified by the \fIto\fP argument, including any auxiliary storage
+associated with that resource, but not the memory directly addressed
+by the size and location in the \fIto\fP argument or the memory specified
+by \fIargs\fP.
+
+.NH 3
+Issuing Conversion Warnings
+.XS
+\*(SN Issuing Conversion Warnings
+.XE
+.LP
+The
+.PN XtDisplayStringConversionWarning
+procedure is a convenience routine for resource type converters
+that convert from string values.
+.LP
+.IN "XtDisplayStringConversionWarning" "" "@DEF@"
+.sM
+.FD 0
+void XtDisplayStringConversionWarning(\fIdisplay\fP, \fIfrom_value\fP, \
+\fIto_type\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ String \fIfrom_value\fP, \fIto_type\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display connection with which the conversion is associated.
+.IP \fIfrom_value\fP 1i
+Specifies the string that could not be converted.
+.IP \fIto_type\fP 1i
+Specifies the target representation type requested.
+.LP
+.eM
+The
+.PN XtDisplayStringConversionWarning
+procedure issues a warning message using
+.PN XtAppWarningMsg
+with \fIname\fP ``conversionError'',
+\fItype\fP ``string'', \fIclass\fP ``XtToolkitError'', and the default message
+``Cannot convert "\fIfrom_value\fP" to type \fIto_type\fP''.
+.LP
+To issue other types of warning or error messages, the type converter
+should use
+.PN XtAppWarningMsg
+or
+.PN XtAppErrorMsg .
+.sp
+.LP
+To retrieve the application context associated with a given
+display connection, use
+.PN XtDisplayToApplicationContext .
+.LP
+.IN "XtDisplayToApplicationContext" "" "@DEF@"
+.sM
+.FD 0
+XtAppContext XtDisplayToApplicationContext( \fIdisplay\fP )
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies an open and initialized display connection.
+.LP
+.eM
+The
+.PN XtDisplayToApplicationContext
+function returns the application
+context in which the specified \fIdisplay\fP was initialized. If the
+display is not known to the \*(xI, an error message is issued.
+
+.NH 3
+Registering a New Resource Converter
+.XS
+\fB\*(SN Registering a New Resource Converter\fP
+.XE
+.LP
+When registering a resource converter, the client must specify the
+manner in which the conversion cache is to be used when there are multiple
+calls to the converter. Conversion cache control is specified
+via an
+.PN XtCacheType
+.LP
+.IN "XtCacheType" "" "@DEF@"
+argument.
+.sM
+.Ds 0
+typedef int XtCacheType;
+.De
+.LP
+.eM
+An
+.PN XtCacheType
+field may contain one of the following values:
+.br
+.sp
+.LP
+.PN XtCacheNone
+.IN "XtCacheNone" "" "@DEF@"
+.IP
+Specifies that the results of a previous conversion
+may not be reused to satisfy any other resource
+requests; the specified converter will be called
+each time the converted value is required.
+.br
+.sp
+.LP
+.PN XtCacheAll
+.IN "XtCacheAll" "" "@DEF@"
+.IP
+Specifies that the results of a previous conversion
+should be reused for any resource request that depends
+upon the same source value and conversion arguments.
+.br
+.sp
+.LP
+.PN XtCacheByDisplay
+.IN "XtCacheByDisplay" "" "@DEF@"
+.IP
+Specifies that the results of a previous conversion
+should be used as for
+.PN XtCacheAll
+but the destructor will be called, if specified, if
+.PN XtCloseDisplay
+is called
+for the display connection associated with the converted value, and
+the value will be removed from the conversion cache.
+.LP
+The qualifier
+.PN XtCacheRefCount
+.IN "XtCacheRefCount" "" "@DEF@"
+may be ORed with any of the above values. If
+.PN XtCacheRefCount
+is specified, calls to
+.PN XtCreateWidget ,
+.PN XtCreateManagedWidget ,
+.PN XtGetApplicationResources ,
+and
+.PN XtGetSubresources
+that use the converted value will be counted. When a widget using the
+converted value is destroyed, the count is decremented, and, if the
+count reaches zero, the destructor procedure will be called and the
+converted value will be removed from the conversion cache.
+
+.LP
+To register a type converter for all application contexts in a
+process, use
+.PN XtSetTypeConverter ,
+and to register a type converter in a single application context, use
+.PN XtAppSetTypeConverter .
+.LP
+.IN "XtSetTypeConverter" "" "@DEF@"
+.sM
+.FD 0
+void XtSetTypeConverter(\fIfrom_type\fP, \fIto_type\fP, \fIconverter\fP, \
+\fIconvert_args\fP, \fInum_args\fP,
+ \fIcache_type\fP, \fIdestructor\fP)
+.br
+ String \fIfrom_type\fP;
+.br
+ String \fIto_type\fP;
+.br
+ XtTypeConverter \fIconverter\fP;
+.br
+ XtConvertArgList \fIconvert_args\fP;
+.br
+ Cardinal \fInum_args\fP;
+.br
+ XtCacheType \fIcache_type\fP;
+.br
+ XtDestructor \fIdestructor\fP;
+.FN
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIconverter\fP 1i
+Specifies the resource type converter procedure.
+.IP \fIconvert_args\fP 1i
+Specifies additional conversion arguments, or NULL.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIconvert_args\fP.
+.IP \fIcache_type\fP 1i
+Specifies whether or not resources produced by this
+converter are sharable or display-specific and when
+they should be freed.
+.IP \fIdestructor\fP 1i
+Specifies a destroy procedure for resources produced by
+this conversion, or NULL if no additional action is
+required to deallocate resources produced by the converter.
+.LP
+.IN "XtAppSetTypeConverter" "" "@DEF@"
+.FD 0
+void XtAppSetTypeConverter(\fIapp_context\fP, \fIfrom_type\fP, \fIto_type\fP, \
+\fIconverter\fP, \fIconvert_args\fP,
+ \fInum_args\fP, \fIcache_type\fP, \fIdestructor\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fIfrom_type\fP;
+.br
+ String \fIto_type\fP;
+.br
+ XtTypeConverter \fIconverter\fP;
+.br
+ XtConvertArgList \fIconvert_args\fP;
+.br
+ Cardinal \fInum_args\fP;
+.br
+ XtCacheType \fIcache_type\fP;
+.br
+ XtDestructor \fIdestructor\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIconverter\fP 1i
+Specifies the resource type converter procedure.
+.IP \fIconvert_args\fP 1i
+Specifies additional conversion arguments, or NULL.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIconvert_args\fP.
+.IP \fIcache_type\fP 1i
+Specifies whether or not resources produced by this
+converter are sharable or display-specific and when
+they should be freed.
+.IP \fIdestructor\fP 1i
+Specifies a destroy procedure for resources produced by
+this conversion, or NULL if no additional action is
+required to deallocate resources produced by the converter.
+.LP
+.eM
+.PN XtSetTypeConverter
+registers the specified type converter and
+destructor in all application contexts created by the calling process,
+including any future application contexts that may be created.
+.PN XtAppSetTypeConverter
+registers the specified type converter in the
+single application context specified. If the same \fIfrom_type\fP and
+\fIto_type\fP are specified in multiple calls to either function, the most
+recent overrides the previous ones.
+.sp
+.LP
+For the few type converters that need additional arguments,
+the \*(xI conversion mechanism provides a method of specifying
+how these arguments should be computed.
+The enumerated type
+.PN XtAddressMode
+and the structure
+.PN XtConvertArgRec
+specify how each argument is derived.
+These are defined in
+.Pn < X11/Intrinsic.h >.
+.LP
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef enum {
+ /* address mode parameter representation */
+ XtAddress, /* address */
+ XtBaseOffset, /* offset */
+ XtImmediate, /* constant */
+ XtResourceString, /* resource name string */
+ XtResourceQuark, /* resource name quark */
+ XtWidgetBaseOffset, /* offset */
+ XtProcedureArg /* procedure to call */
+} XtAddressMode;
+.sp
+typedef struct {
+ XtAddressMode address_mode;
+ XtPointer address_id;
+ Cardinal size;
+} XtConvertArgRec, *XtConvertArgList;
+.De
+.eM
+.LP
+The \fIsize\fP field specifies the length of the data in bytes.
+The \fIaddress_mode\fP field specifies how the \fIaddress_id\fP field should be
+interpreted.
+.PN XtAddress
+.IN "XtAddress" "" "@DEF@"
+causes \fIaddress_id\fP to be interpreted as the address of the data.
+.PN XtBaseOffset
+.IN "XtBaseOffset" "" "@DEF@"
+causes \fIaddress_id\fP to be interpreted as the offset from the widget base.
+.PN XtImmediate
+.IN "XtImmediate" "" "@DEF@"
+causes \fIaddress_id\fP to be interpreted as a constant.
+.PN XtResourceString
+.IN "XtResourceString" "" "@DEF@"
+causes \fIaddress_id\fP to be interpreted as the name of a resource
+that is to be converted into an offset from the widget base.
+.PN XtResourceQuark
+.IN "XtResourceQuark" "" "@DEF@"
+causes \fIaddress_id\fP to be interpreted as the result of an
+.PN XrmStringToQuark
+conversion on the name of a resource,
+which is to be converted into an offset from the widget base.
+.PN XtWidgetBaseOffset
+.IN "XtWidgetBaseOffset" "" "@DEF@"
+is similar to
+.PN XtBaseOffset
+except that it
+searches for the closest windowed ancestor if the object is not
+of a subclass of
+Core
+(see Chapter 12).
+.PN XtProcedureArg
+.IN "XtProcedureArg" "" "@DEF@"
+specifies that \fIaddress_id\fP is a pointer to a procedure to
+be invoked to return the conversion argument. If
+.PN XtProcedureArg
+is specified, \fIaddress_id\fP must contain
+the address of a function of type
+.PN XtConvertArgProc .
+.LP
+.IN "XtConvertArgProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtConvertArgProc)(Widget, Cardinal*, XrmValue*);
+.br
+ Widget \fIobject\fP;
+.br
+ Cardinal *\fIsize\fP;
+.br
+ XrmValue *\fIvalue\fP;
+.FN
+.IP \fIobject\fP 1i
+Passes the object for which the resource is being
+converted, or NULL if the converter was invoked by
+.PN XtCallConverter
+or
+.PN XtDirectConvert .
+.IP \fIsize\fP 1i
+Passes a pointer to the \fIsize\fP field from the
+.PN XtConvertArgRec .
+.IP \fIvalue\fP 1i
+Passes a pointer to a descriptor into which the procedure
+must store the conversion argument.
+.LP
+.eM
+When invoked, the
+.PN XtConvertArgProc
+procedure must derive a conversion
+argument and store the address and size of the argument in the location
+pointed to by \fIvalue\fP.
+.LP
+In order to permit reentrancy, the
+.PN XtConvertArgProc
+should return the address of storage whose lifetime is no shorter than the
+lifetime of \fIobject\fP. If \fIobject\fP is NULL, the lifetime of the conversion
+argument must be no shorter than the lifetime of the resource with
+which the conversion argument is associated. The \*(xI do not
+guarantee to copy this storage but do guarantee not to reference it if
+the resource is removed from the conversion cache.
+.LP
+The following example illustrates how to register the CvtStringToPixel
+routine given earlier:
+.LP
+.Ds
+.TA .2i 3i
+.ta .2i 3i
+static XtConvertArgRec colorConvertArgs[] = {
+ {XtWidgetBaseOffset, (XtPointer)XtOffset(Widget, core.screen), sizeof(Screen*)},
+ {XtWidgetBaseOffset, (XtPointer)XtOffset(Widget, core.colormap),sizeof(Colormap)}
+};
+
+XtSetTypeConverter(XtRString, XtRPixel, CvtStringToPixel,
+ colorConvertArgs, XtNumber(colorConvertArgs), XtCacheByDisplay, NULL);
+.De
+.LP
+The conversion argument descriptors
+.PN colorConvertArgs
+and
+.PN screenConvertArg
+are predefined by the \*(xI. Both take the
+values from the closest windowed ancestor if the object is not of a
+subclass of
+Core.
+The
+.PN screenConvertArg
+descriptor puts the widget's \fIscreen\fP field into \fIargs\fP[0]. The
+.PN colorConvertArgs
+descriptor puts the widget's \fIscreen\fP field into \fIargs\fP[0],
+and the widget's \fIcolormap\fP field into \fIargs\fP[1].
+.LP
+Conversion routines should not just put a descriptor for the address of the
+base of the widget into \fIargs\fP[0], and use that in the routine.
+They should pass in the actual values on which the conversion depends.
+By keeping the dependencies of the conversion procedure specific,
+it is more likely that subsequent conversions will find what they need
+in the conversion cache.
+This way the cache is smaller and has fewer and more widely applicable entries.
+.LP
+If any conversion arguments of type
+.PN XtBaseOffset ,
+.PN XtResourceString ,
+.PN XtResourceQuark ,
+and
+.PN XtWidgetBaseOffset
+are specified for conversions performed by
+.PN XtGetApplicationResources ,
+.PN XtGetSubresources ,
+.PN XtVaGetApplicationResources ,
+or
+.PN XtVaGetSubresources ,
+the arguments are
+computed with respect to the specified widget, not the base address or
+resource list specified in the call.
+.LP
+If the
+.PN XtConvertArgProc
+modifies the resource database,
+the changes affect any in-progress widget creation,
+.PN XtGetApplicationResources ,
+or
+.PN XtGetSubresources
+in an implementation-defined manner; however, insertion of new entries
+or changes to existing entries are allowed and will not directly cause
+an error.
+
+.NH 3
+Resource Converter Invocation
+.XS
+\fB\*(SN Resource Converter Invocation\fP
+.XE
+.LP
+All resource-fetching routines (for example,
+.PN XtGetSubresources ,
+.PN XtGetApplicationResources ,
+and so on) call resource converters if the resource database or
+varargs list specifies a value
+that has a different representation from the desired representation or if the
+widget's default resource value representation is different from the desired
+representation.
+.sp
+.LP
+To invoke explicit resource conversions, use
+.PN XtConvertAndStore
+or
+.PN XtCallConverter .
+.LP
+.sM
+.Ds 0
+typedef XtPointer XtCacheRef;
+.De
+.IN "XtCallConverter" "" "@DEF@"
+.FD 0
+Boolean XtCallConverter(\fIdisplay\fP, \fIconverter\fP, \
+\fIconversion_args\fP, \fInum_args\fP, \fIfrom\fP, \fIto_in_out\fP,
+ \fIcache_ref_return\fP)
+.br
+ Display* \fIdisplay\fP;
+.br
+ XtTypeConverter \fIconverter\fP;
+.br
+ XrmValuePtr \fIconversion_args\fP;
+.br
+ Cardinal \fInum_args\fP;
+.br
+ XrmValuePtr \fIfrom\fP;
+.br
+ XrmValuePtr \fIto_in_out\fP;
+.br
+ XtCacheRef *\fIcache_ref_return\fP;
+.FN
+.IP \fIdisplay\fP 1.5i
+Specifies the display with which the conversion is to be associated.
+.IP \fIconverter\fP 1.5i
+Specifies the conversion procedure to be called.
+.IP \fIconversion_args\fP 1.5i
+Specifies the additional conversion arguments needed
+to perform the conversion, or NULL.
+.IP \fInum_args\fP 1.5i
+Specifies the number of entries in \fIconversion_args\fP.
+.IP \fIfrom\fP 1.5i
+Specifies a descriptor for the source value.
+.IP \fIto_in_out\fP 1.5i
+Returns the converted value.
+.IP \fIcache_ref_return\fP 1.5i
+Returns a conversion cache id.
+.LP
+.eM
+The
+.PN XtCallConverter
+function looks up the
+specified type converter in the application context associated with
+the display and, if the converter was not registered or was registered
+with cache type
+.PN XtCacheAll
+or
+.PN XtCacheByDisplay ,
+looks in the conversion cache to see if this conversion procedure
+has been called with the specified conversion arguments. If so, it
+checks the success status of the prior call, and if
+the conversion failed,
+.PN XtCallConverter
+returns
+.PN False
+immediately;
+otherwise it checks the size specified in the \fIto\fP argument, and, if it is
+greater than or equal to the size stored in the cache, copies the
+information stored in the cache into the location specified by
+\fIto->addr\fP, stores the cache size into \fIto->size\fP, and returns
+.PN True .
+If the size specified in the \fIto\fP argument is smaller than the size stored
+in the cache,
+.PN XtCallConverter
+copies the cache size into \fIto->size\fP and returns
+.PN False .
+If the converter was registered with cache type
+.PN XtCacheNone
+or no value was found in the conversion cache,
+.PN XtCallConverter
+calls the converter, and if it was not registered with cache type
+.PN XtCacheNone ,
+enters the result in the cache.
+.PN XtCallConverter
+then returns what the converter returned.
+.LP
+The \fIcache_ref_return\fP field specifies storage allocated by the caller in which
+an opaque value will be stored. If the type converter has been
+registered with the
+.PN XtCacheRefCount
+modifier and if the value returned
+in \fIcache_ref_return\fP is non-NULL, then the caller should store the
+\fIcache_ref_return\fP value in order to decrement the reference count when
+the converted value is no longer required. The \fIcache_ref_return\fP
+argument should be
+NULL if the caller is unwilling or unable to store the
+value.
+.sp
+.LP
+To explicitly decrement the reference counts for resources obtained
+from
+.PN XtCallConverter ,
+use
+.PN XtAppReleaseCacheRefs .
+.LP
+.IN "XtAppReleaseCacheRefs" "" "@DEF@"
+.sM
+.FD 0
+void XtAppReleaseCacheRefs(\fIapp_context\fP, \fIrefs\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtCacheRef *\fIrefs\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIrefs\fP 1i
+Specifies the list of cache references to be released.
+.LP
+.eM
+.PN XtAppReleaseCacheRefs
+decrements the reference count for the
+conversion entries identified by the \fIrefs\fP argument.
+This argument is a
+pointer to a NULL-terminated list of
+.PN XtCacheRef
+values. If any reference
+count reaches zero, the destructor, if any, will be called and
+the resource removed from the conversion cache.
+.sp
+.LP
+As a convenience to clients needing to explicitly decrement reference
+counts via a callback function, the \*(xI define two callback
+procedures,
+.PN XtCallbackReleaseCacheRef
+and
+.PN XtCallbackReleaseCacheRefList .
+.LP
+.IN "XtCallbackReleaseCacheRef" "" "@DEF@"
+.sM
+.FD 0
+void XtCallbackReleaseCacheRef(\fIobject\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object with which the resource is associated.
+.IP \fIclient_data\fP 1i
+Specifies the conversion cache entry to be released.
+.IP \fIcall_data\fP 1i
+Is ignored.
+.LP
+.eM
+This callback procedure may be added to a callback list to release a
+previously returned
+.PN XtCacheRef
+value. When adding the callback, the
+callback \fIclient_data\fP argument must be specified as the value of the
+.PN XtCacheRef
+data cast to type
+.PN XtPointer .
+.LP
+.IN "XtCallbackReleaseCacheRefList" "" "@DEF@"
+.sM
+.FD 0
+void XtCallbackReleaseCacheRefList(\fIobject\fP, \fIclient_data\fP, \fIcall_data\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtPointer \fIcall_data\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object with which the resources are associated.
+.IP \fIclient_data\fP 1i
+Specifies the conversion cache entries to be released.
+.IP \fIcall_data\fP 1i
+Is ignored.
+.LP
+.eM
+This callback procedure may be added to a callback list to release a
+list of previously returned
+.PN XtCacheRef
+values. When adding the
+callback, the callback \fIclient_data\fP argument must be specified as a
+pointer to a NULL-terminated list of
+.PN XtCacheRef
+values.
+.sp
+.LP
+To lookup and call a resource converter, copy the resulting value,
+and free a cached resource when a widget is destroyed, use
+.PN XtConvertAndStore .
+.LP
+.IN "XtConvertAndStore" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtConvertAndStore(\fIobject\fP, \fIfrom_type\fP, \fIfrom\fP, \
+\fIto_type\fP, \fIto_in_out\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ String \fIfrom_type\fP;
+.br
+ XrmValuePtr \fIfrom\fP;
+.br
+ String \fIto_type\fP;
+.br
+ XrmValuePtr \fIto_in_out\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object to use for additional arguments, if any are needed,
+and the destroy callback list. \*(oI
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fIfrom\fP 1i
+Specifies the value to be converted.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIto_in_out\fP 1i
+Specifies a descriptor for storage into which the converted value
+will be returned.
+.LP
+.eM
+The
+.PN XtConvertAndStore
+function looks up the type converter registered
+to convert \fIfrom_type\fP to \fIto_type\fP, computes any additional arguments
+needed, and then calls
+.PN XtCallConverter
+(or
+.PN XtDirectConvert
+if an old-style converter was registered with
+.PN XtAddConverter
+or
+.PN XtAppAddConverter ;
+see Appendix C) with the \fIfrom\fP and \fIto_in_out\fP arguments. The
+\fIto_in_out\fP argument specifies the size and location into which the
+converted value will be stored and is passed directly to the
+converter. If the location is specified as NULL, it will be replaced
+with a pointer to private storage and the size will be returned in the
+descriptor. The caller is expected to copy this private storage
+immediately and must not modify it in any way. If a non-NULL location
+is specified, the caller must allocate sufficient storage to hold the
+converted value and must also specify the size of that storage in the
+descriptor.
+The \fIsize\fP field will be modified on return to indicate the actual
+size of the converted data.
+If the conversion succeeds,
+.PN XtConvertAndStore
+returns
+.PN True ;
+otherwise, it returns
+.PN False .
+.LP
+.PN XtConvertAndStore
+adds
+.PN XtCallbackReleaseCacheRef
+.IN "destroyCallback"
+to the destroyCallback list of the specified object if the conversion
+returns an
+.PN XtCacheRef
+value. The resulting resource should not be referenced
+after the object has been destroyed.
+.LP
+.PN XtCreateWidget
+performs processing equivalent to
+.PN XtConvertAndStore
+when initializing the object instance. Because there is extra memory
+overhead required to implement reference counting, clients may
+distinguish those objects that are never destroyed before the
+application exits from those that may be destroyed and whose
+resources should be deallocated.
+.LP
+To specify whether reference counting is to be enabled for the
+resources of a particular object when the object is created, the
+client can specify a value for the
+.PN Boolean
+resource
+XtNinitialResourcesPersistent,
+.IN "XtNinitialResourcesPersistent" "" "@DEF@"
+class
+XtCInitialResourcesPersistent.
+.LP
+When
+.PN XtCreateWidget
+is called, if this resource is not specified as
+.PN False
+in either the arglist or the resource database, then the
+resources referenced by this object are not reference-counted, regardless of
+how the type converter may have been registered. The effective
+default value is
+.PN True ;
+thus clients that expect to destroy one or
+more objects and want resources deallocated must explicitly specify
+.PN False
+for
+.IN XtNinitialResourcesPersistent
+XtNinitialResourcesPersistent.
+.LP
+The resources are still freed and destructors called when
+.PN XtCloseDisplay
+is called if the conversion was registered as
+.PN XtCacheByDisplay .
+
+.NH 2
+Reading and Writing Widget State
+.XS
+\fB\*(SN Reading and Writing Widget State\fP
+.XE
+.LP
+Any resource field in a widget can be read or written by a client.
+On a write operation,
+the widget decides what changes it will actually allow and updates all
+derived fields appropriately.
+
+.NH 3
+Obtaining Widget State
+.XS
+\fB\*(SN Obtaining Widget State\fP
+.XE
+.LP
+To retrieve the current values of resources associated with a
+widget instance, use
+.PN XtGetValues .
+.LP
+.IN "XtGetValues" "" "@DEF@"
+.sM
+.FD 0
+void XtGetValues(\fIobject\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object whose resource values are to be returned. \*(oI
+.IP \fIargs\fP 1i
+Specifies the argument list of name/address pairs that contain the
+resource names and the addresses into which the resource values are to
+be stored.
+The resource names are widget-dependent.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtGetValues
+function starts with the resources specified for the Object class
+and proceeds down the subclass chain to the class of the object.
+The \fIvalue\fP field of a passed argument list must contain the
+address into which to copy the contents of the corresponding
+object instance field. If the field is a pointer type, the lifetime
+of the pointed-to data is defined by the object class. For the
+\*(xI-defined resources, the following lifetimes apply:
+.IP \(bu 3
+Not valid following any operation that modifies the resource:
+.RS
+.IP \- 3
+XtNchildren resource of composite widgets.
+.IP \- 3
+All resources of representation type XtRCallback.
+.RE
+.IP \(bu 3
+Remain valid at least until the widget is destroyed:
+.RS
+.IP \- 3
+XtNaccelerators, XtNtranslations.
+.RE
+.IP \(bu 3
+Remain valid until the Display is closed:
+.RS
+.IP \- 3
+XtNscreen.
+.RE
+.LP
+It is the caller's responsibility
+to allocate and deallocate storage for the copied data
+according to the size of the
+resource representation type used within the object.
+.LP
+If the class of the object's parent is a subclass of
+.PN constraintWidgetClass ,
+.PN XtGetValues
+then fetches the values for any constraint resources requested.
+It starts with the constraint resources specified for
+.PN constraintWidgetClass
+and proceeds down the subclass chain to the parent's constraint resources.
+If the argument list contains a resource name that is not found in any of the
+resource lists searched,
+the value at the corresponding address is not modified.
+.IN "get_values_hook procedure"
+If any get_values_hook procedures in the
+object's class or superclass records are non-NULL,
+they are called in superclass-to-subclass order after
+all the resource values have been fetched by
+.PN XtGetValues .
+Finally, if the object's parent is a
+subclass of
+.PN constraintWidgetClass ,
+and if any of the parent's class or
+superclass records have declared
+.PN ConstraintClassExtension
+records in
+the Constraint class part \fIextension\fP field with a record type of
+.PN \s-1NULLQUARK\s+1 ,
+and if the \fIget_values_hook\fP field in the extension record is non-NULL,
+.PN XtGetValues
+calls the get_values_hook procedures in superclass-to-subclass order.
+This permits a Constraint parent to provide
+nonresource data via
+.PN XtGetValues .
+.LP
+Get_values_hook procedures may modify the data stored at the
+location addressed by the \fIvalue\fP field, including (but not
+limited to) making a copy of data whose resource representation is a
+pointer. None of the \*(xI-defined object classes copy
+data in this manner. Any operation that modifies the queried
+object resource may invalidate the pointed-to data.
+
+.sp
+.LP
+To retrieve the current values of resources associated with a widget
+instance using varargs lists, use
+.PN XtVaGetValues .
+.LP
+.IN "XtVaGetValues" "" "@DEF@"
+.sM
+.FD 0
+void XtVaGetValues(\fIobject\fP, ...)
+.br
+ Widget \fIobject\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object whose resource values are to be returned. \*(oI
+.IP ... 1i
+Specifies the variable argument list for the resources to
+be returned.
+.LP
+.eM
+.PN XtVaGetValues
+is identical in function to
+.PN XtGetValues
+with the \fIargs\fP
+and \fInum_args\fP parameters replaced by a varargs list, as described in
+Section 2.5.1. All value entries in the list must specify pointers to
+storage allocated by the caller to which the resource value will be
+copied. It is the caller's responsibility to ensure that sufficient
+storage is allocated. If
+.PN XtVaTypedArg
+is specified, the \fItype\fP argument
+specifies the representation desired by the caller and \fIthe\fP size argument
+specifies the number of bytes allocated to store the result of the
+conversion. If the size is insufficient, a warning message is issued
+and the list entry is skipped.
+
+.NH 4
+Widget Subpart Resource Data: The get_values_hook Procedure
+.XS
+\*(SN Widget Subpart Resource Data: The get_values_hook Procedure
+.XE
+.LP
+Widgets that have subparts can return resource values from them through
+.PN XtGetValues
+by supplying a get_values_hook procedure.
+The get_values_hook procedure pointer is of type
+.PN XtArgsProc .
+.LP
+.IN "get_values_hook procedure" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtArgsProc)(Widget, ArgList, Cardinal*);
+.br
+ Widget \fIw\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget whose subpart resource values are to be retrieved.
+.IP \fIargs\fP 1i
+Specifies the argument list that was passed to
+.PN XtGetValues
+or the transformed varargs list passed to
+.PN XtVaGetValues .
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The widget with subpart resources should call
+.PN XtGetSubvalues
+in the get_values_hook procedure
+and pass in its subresource list and the \fIargs\fP and \fInum_args\fP parameters.
+
+.NH 4
+Widget Subpart State
+.XS
+\*(SN Widget Subpart State
+.XE
+.LP
+To retrieve the current values of subpart resource data associated with a
+widget instance, use
+.PN XtGetSubvalues .
+For a discussion of subpart resources,
+see Section 9.4.
+.LP
+.IN "XtGetSubvalues" "" "@DEF@"
+.sM
+.FD 0
+void XtGetSubvalues(\fIbase\fP, \fIresources\fP, \fInum_resources\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ XtPointer \fIbase\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure for which the
+resources should be retrieved.
+.IP \fIresources\fP 1i
+Specifies the subpart resource list.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP \fIargs\fP 1i
+Specifies the argument list of name/address pairs that contain the
+resource names and the addresses into which the resource values are to
+be stored.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtGetSubvalues
+function obtains resource values from the structure identified by \fIbase\fP.
+The \fIvalue\fP field in each argument entry must contain the address into
+which to store the corresponding resource value. It is the caller's
+responsibility to allocate and deallocate this storage according to
+the size of the resource representation type used within the subpart.
+If the argument list contains a resource name that is not found in the
+resource list, the value at the corresponding address is not modified.
+
+.sp
+.LP
+To retrieve the current values of subpart resources associated with
+a widget instance using varargs lists, use
+.PN XtVaGetSubvalues .
+.LP
+.IN "XtVaGetSubvalues" "" "@DEF@"
+.sM
+.FD 0
+void XtVaGetSubvalues(\fIbase\fP, \fIresources\fP, \fInum_resources\fP, ...)
+.br
+ XtPointer \fIbase\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.FN
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure for which the
+resources should be retrieved.
+.IP \fIresources\fP 1i
+Specifies the subpart resource list.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP ... 1i
+Specifies a variable argument list of name/address pairs that
+contain the resource names and the addresses into which the resource
+values are to be stored.
+.LP
+.eM
+.PN XtVaGetSubvalues
+is identical in function to
+.PN XtGetSubvalues
+with the
+\fIargs\fP and \fInum_args\fP parameters replaced by a varargs list, as described
+in Section 2.5.1.
+.PN XtVaTypedArg
+is not supported for
+.PN XtVaGetSubvalues .
+If
+.PN XtVaTypedArg
+is specified in the list, a warning message is issued
+and the entry is then ignored.
+
+.NH 3
+Setting Widget State
+.XS
+\fB\*(SN Setting Widget State\fP
+.XE
+.LP
+To modify the current values of resources associated with a widget
+instance, use
+.PN XtSetValues .
+.LP
+.IN "XtSetValues" "" "@DEF@"
+.sM
+.FD 0
+void XtSetValues(\fIobject\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object whose resources are to be modified. \*(oI
+.IP \fIargs\fP 1i
+Specifies the argument list of name/value pairs that contain the
+resources to be modified and their new values.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtSetValues
+function starts with the resources specified for the
+Object
+class fields and proceeds down the subclass chain to the object.
+At each stage, it replaces the \fIobject\fP resource fields with any values
+specified in the argument list.
+.PN XtSetValues
+then calls the set_values procedures for the object in superclass-to-subclass
+order.
+.IN "set_values_hook procedure"
+If the object has any non-NULL \fIset_values_hook\fP fields,
+these are called immediately after the
+corresponding set_values procedure.
+This procedure permits subclasses to set subpart data via
+.PN XtSetValues .
+.LP
+If the class of the object's parent is a subclass of
+.PN constraintWidgetClass ,
+.PN XtSetValues
+also updates the object's constraints.
+It starts with the constraint resources specified for
+.PN constraintWidgetClass
+and proceeds down the subclass chain to the parent's class.
+At each stage, it replaces the constraint resource fields with any
+values specified in the argument list.
+It then calls the constraint set_values procedures from
+.PN constraintWidgetClass
+down to the parent's class.
+The constraint set_values procedures are called with widget arguments,
+as for all set_values procedures, not just the constraint records,
+so that they can make adjustments to the desired values based
+on full information about the widget. Any arguments specified that
+do not match a resource list entry are silently ignored.
+.LP
+If the object is of a subclass of
+RectObj,
+.PN XtSetValues
+determines if a geometry request is needed by comparing the old object to
+the new object.
+If any geometry changes are required,
+.PN XtSetValues
+restores the original geometry and makes the request on behalf of the widget.
+If the geometry manager returns
+.PN XtGeometryYes ,
+.PN XtSetValues
+calls the object's resize procedure.
+If the geometry manager returns
+.PN XtGeometryDone ,
+.PN XtSetValues
+continues, as the object's resize procedure should have been called
+by the geometry manager.
+If the geometry manager returns
+.PN XtGeometryNo ,
+.PN XtSetValues
+ignores the geometry request and continues.
+If the geometry manager returns
+.PN XtGeometryAlmost ,
+.PN XtSetValues
+calls the set_values_almost procedure,
+which determines what should be done.
+.PN XtSetValues
+then repeats this process,
+deciding once more whether the geometry manager should be called.
+.LP
+Finally, if any of the set_values procedures returned
+.PN True ,
+and the widget is realized,
+.PN XtSetValues
+causes the widget's expose procedure to be invoked by calling
+.PN XClearArea
+on the widget's window.
+.sp
+.LP
+To modify the current values of resources associated with a widget
+instance using varargs lists, use
+.PN XtVaSetValues .
+.LP
+.IN "XtVaSetValues" "" "@DEF@"
+.sM
+.FD 0
+void XtVaSetValues(\fIobject\fP, ...)
+.br
+ Widget \fIobject\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies the object whose resources are to be modified. \*(oI
+.IP ... 1i
+Specifies the variable argument list of name/value pairs that
+contain the resources to be modified and their new values.
+.LP
+.eM
+.PN XtVaSetValues
+is identical in function to
+.PN XtSetValues
+with the \fIargs\fP and \fInum_args\fP parameters replaced by a varargs list, as
+described in Section 2.5.1.
+
+.NH 4
+Widget State: The set_values Procedure
+.XS
+\*(SN Widget State: The set_values Procedure
+.XE
+.LP
+The set_values procedure pointer in a widget class is of type
+.PN XtSetValuesFunc .
+.LP
+.IN "XtSetValuesFunc" "" "@DEF@"
+.IN "set_values procedure" "" "@DEF@"
+.sM
+.FD 0
+typedef Boolean (*XtSetValuesFunc)(Widget, Widget, Widget, ArgList, Cardinal*);
+.br
+ Widget \fIcurrent\fP;
+.br
+ Widget \fIrequest\fP;
+.br
+ Widget \fInew\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.FN
+.IP \fIcurrent\fP 1i
+Specifies a copy of the widget as it was before the
+.PN XtSetValues
+call.
+.IP \fIrequest\fP 1i
+Specifies a copy of the widget with all values changed as asked for by the
+.PN XtSetValues
+call before any class set_values procedures have been called.
+.IP \fInew\fP 1i
+Specifies the widget with the new values that are actually allowed.
+.IP \fIargs\fP 1i
+Specifies the argument list passed to
+.PN XtSetValues
+or the transformed argument list passed to
+.PN XtVaSetValues .
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The set_values procedure should recompute any field
+derived from resources that are changed
+(for example, many GCs depend on foreground and background pixels).
+If no recomputation is necessary, and if none of the resources specific to a
+subclass require the window to be redisplayed when their values are changed,
+you can specify NULL for the \fIset_values\fP field in the class record.
+.LP
+Like the initialize procedure,
+set_values mostly deals only with the fields defined in the subclass,
+but it has to resolve conflicts with its superclass,
+especially conflicts over width and height.
+.LP
+Sometimes a subclass may want to overwrite values filled in by its
+superclass.
+In particular, size calculations of a superclass are often
+incorrect for a subclass, and, in this case,
+the subclass must modify or recalculate fields declared
+and computed by its superclass.
+.LP
+As an example,
+a subclass can visually surround its superclass display.
+In this case, the width and height calculated by the superclass set_values
+procedure are too small and need to be incremented by the size of the surround.
+The subclass needs to know if its superclass's size was calculated by the
+superclass or was specified explicitly.
+All widgets must place themselves into whatever size is explicitly given,
+but they should compute a reasonable size if no size is requested.
+How does a subclass know the difference between a specified size
+and a size computed by a superclass?
+.LP
+The \fIrequest\fP and \fInew\fP parameters provide the necessary information.
+The \fIrequest\fP widget is a copy of the widget, updated as originally requested.
+The \fInew\fP widget starts with the values in the request,
+but it has additionally been updated by all superclass set_values
+procedures called so far.
+A subclass set_values procedure can compare these two to resolve
+any potential conflicts.
+The set_values procedure need not refer to the \fIrequest\fP widget
+unless it must resolve conflicts between the \fIcurrent\fP and \fInew\fP widgets.
+Any changes the widget needs to make, including geometry changes,
+should be made in the \fInew\fP widget.
+.LP
+In the above example,
+the subclass with the visual surround can see
+if the \fIwidth\fP and \fIheight\fP in the \fIrequest\fP widget are zero.
+If so,
+it adds its surround size to the \fIwidth\fP and
+\fIheight\fP fields in the \fInew\fP widget.
+If not, it must make do with the size originally specified.
+In this case, zero is a special value defined by the class to permit
+the application to invoke this behavior.
+.LP
+The \fInew\fP widget is the actual widget instance record.
+Therefore,
+the set_values procedure should do all its work on the \fInew\fP widget;
+the \fIrequest\fP widget should never be modified.
+If the set_values procedure needs to call any routines that operate on
+a widget, it should specify \fInew\fP as the widget instance.
+.LP
+Before calling the set_values procedures, the \*(xI modify the
+resources of the \fIrequest\fP widget according to the contents of the arglist;
+if the widget names all its resources in the class resource list, it is
+never necessary to examine the contents of \fIargs\fP.
+.LP
+Finally, the set_values procedure must return a Boolean that indicates whether
+the widget needs to be redisplayed.
+Note that a change in the geometry fields alone does not require
+the set_values procedure to return
+.PN True ;
+the X server will eventually generate an
+.PN Expose
+event, if necessary.
+After calling all the set_values procedures,
+.PN XtSetValues
+forces a redisplay by calling
+.PN XClearArea
+if any of the set_values procedures returned
+.PN True .
+Therefore, a set_values procedure should not try to do its own redisplaying.
+.LP
+Set_values procedures should not do any work in response to changes in
+geometry because
+.PN XtSetValues
+eventually will perform a geometry request, and that request might be denied.
+If the widget actually changes size in response to a
+call to
+.PN XtSetValues ,
+its resize procedure is called.
+Widgets should do any geometry-related work in their resize procedure.
+.LP
+Note that it is permissible to call
+.PN XtSetValues
+before a widget is realized.
+Therefore, the set_values procedure must not assume that the widget is realized.
+
+.NH 4
+Widget State: The set_values_almost Procedure
+.XS
+\*(SN Widget State: The set_values_almost Procedure
+.XE
+.LP
+The set_values_almost procedure pointer in the widget class record is of type
+.PN XtAlmostProc .
+.LP
+.IN "set_values_almost procedure" "" "@DEF@"
+.IN "XtAlmostProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtAlmostProc)(Widget, Widget, XtWidgetGeometry*, \
+XtWidgetGeometry*);
+.br
+ Widget \fIold\fP;
+.br
+ Widget \fInew\fP;
+.br
+ XtWidgetGeometry *\fIrequest\fP;
+.br
+ XtWidgetGeometry *\fIreply\fP;
+.FN
+.IP \fIold\fP 1i
+Specifies a copy of the object as it was before the
+.PN XtSetValues
+call.
+.IP \fInew\fP 1i
+Specifies the object instance record.
+.IP \fIrequest\fP 1i
+Specifies the original geometry request that was sent to the geometry
+manager that caused
+.PN XtGeometryAlmost
+to be returned.
+.IP \fIreply\fP 1i
+Specifies the compromise geometry that was returned by the geometry
+manager with
+.PN XtGeometryAlmost .
+.LP
+.eM
+Most classes inherit the set_values_almost procedure from their superclass by
+specifying
+.PN XtInheritSetValuesAlmost
+in the class initialization.
+The
+set_values_almost procedure in
+.PN rectObjClass
+accepts the compromise suggested.
+.LP
+The set_values_almost procedure is called when a client tries to set a widget's
+geometry by means of a call to
+.PN XtSetValues
+and the geometry manager cannot
+satisfy the request but instead returns
+.PN XtGeometryNo
+or
+.PN XtGeometryAlmost
+and a compromise geometry.
+The \fInew\fP object is the actual instance record. The \fIx\fP, \fIy\fP,
+\fIwidth\fP, \fIheight\fP,
+and \fIborder_width\fP fields contain the original values as they were
+before the
+.PN XtSetValues
+call, and all other fields contain the new
+values. The \fIrequest\fP parameter contains the new geometry request that
+was made to the parent. The \fIreply\fP parameter contains
+\fIreply->request_mode\fP equal to zero if the parent returned
+.PN XtGeometryNo
+and contains the parent's compromise geometry otherwise. The
+set_values_almost procedure takes the original geometry and the
+compromise geometry and determines if the compromise is
+acceptable or whether
+to try a different compromise.
+It returns its results in the \fIrequest\fP parameter,
+which is then sent back to the geometry manager for another try.
+To accept the compromise, the procedure must copy the contents
+of the \fIreply\fP geometry into the \fIrequest\fP geometry; to attempt an
+alternative geometry, the procedure may modify any part of the \fIrequest\fP
+argument; to terminate the geometry negotiation and retain the
+original geometry, the procedure must set \fIrequest->request_mode\fP to
+zero. The geometry fields of the \fIold\fP and \fInew\fP instances must not be modified
+directly.
+
+.NH 4
+Widget State: The ConstraintClassPart set_values Procedure
+.XS
+\*(SN Widget State: The ConstraintClassPart set_values Procedure
+.XE
+.IN "set_values procedure"
+.LP
+The constraint set_values procedure pointer is of type
+.PN XtSetValuesFunc .
+The values passed to the parent's constraint set_values procedure
+are the same as those passed to the child's class
+set_values procedure.
+A class can specify NULL for the \fIset_values\fP field of the
+.PN ConstraintPart
+if it need not compute anything.
+.LP
+The constraint set_values procedure should recompute any constraint fields
+derived from constraint resources that are changed.
+Furthermore, it may modify other widget fields as appropriate.
+For example, if a constraint for the maximum height of a widget is changed
+to a value smaller than the widget's current height,
+the constraint set_values procedure may reset the \fIheight\fP field in the
+widget.
+
+.NH 4
+Widget Subpart State
+.XS
+\*(SN Widget Subpart State
+.XE
+.LP
+To set the current values of subpart resources associated with a
+widget instance, use
+.PN XtSetSubvalues .
+For a discussion of subpart resources,
+see Section 9.4.
+.LP
+.IN "XtSetSubvalues" "" "@DEF@"
+.sM
+.FD 0
+void XtSetSubvalues(\fIbase\fP, \fIresources\fP, \fInum_resources\fP, \
+\fIargs\fP, \fInum_args\fP)
+.br
+ XtPointer \fIbase\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure into which the
+resources should be written.
+.IP \fIresources\fP 1i
+Specifies the subpart resource list.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP \fIargs\fP 1i
+Specifies the argument list of name/value pairs that contain the
+resources to be modified and their new values.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtSetSubvalues
+function updates the resource fields of the structure identified by
+\fIbase\fP. Any specified arguments that do not match an entry in the
+resource list are silently ignored.
+.sp
+.LP
+To set the current values of subpart resources associated with
+a widget instance using varargs lists, use
+.PN XtVaSetSubvalues .
+.LP
+.IN "XtVaSetSubvalues" "" "@DEF@"
+.sM
+.FD 0
+void XtVaSetSubvalues(\fIbase\fP, \fIresources\fP, \fInum_resources\fP, ...)
+.br
+ XtPointer \fIbase\fP;
+.br
+ XtResourceList \fIresources\fP;
+.br
+ Cardinal \fInum_resources\fP;
+.FN
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure into which the
+resources should be written.
+.IP \fIresources\fP 1i
+Specifies the subpart resource list.
+.IP \fInum_resources\fP 1i
+Specifies the number of entries in the resource list.
+.IP ... 1i
+Specifies the variable argument list of name/value pairs that
+contain the resources to be modified and their new values.
+.LP
+.eM
+.PN XtVaSetSubvalues
+is identical in function to
+.PN XtSetSubvalues
+with the \fIargs\fP and \fInum_args\fP parameters replaced by a varargs list, as
+described in Section 2.5.1.
+.PN XtVaTypedArg
+is not supported for
+.PN XtVaSetSubvalues .
+If an entry containing
+.PN XtVaTypedArg
+is specified in the list, a warning message is issued
+and the entry is ignored.
+
+.NH 4
+Widget Subpart Resource Data: The set_values_hook Procedure
+.XS
+\*(SN Widget Subpart Resource Data: The set_values_hook Procedure
+.XE
+.IN "set_values_hook procedure"
+.NT
+The set_values_hook procedure is obsolete, as the same information
+is now available to the set_values procedure. The procedure has been
+retained for those widgets that used it in versions prior to Release 4.
+.NE
+.LP
+Widgets that have a subpart can set the subpart resource values through
+.PN XtSetValues
+by supplying a set_values_hook procedure.
+The set_values_hook procedure pointer in a widget class is of type
+.PN XtArgsFunc .
+.LP
+.IN "set_values_hook procedure" "" "@DEF@"
+.IN "XtArgsFunc" "" "@DEF@"
+.sM
+.FD 0
+typedef Boolean (*XtArgsFunc)(Widget, Arglist, Cardinal*);
+.br
+ Widget \fIw\fP;
+.br
+ Arglist \fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget whose subpart resource values are to be changed.
+.IP \fIargs\fP 1i
+Specifies the argument list that was passed to
+.PN XtSetValues
+or the transformed varargs list passed to
+.PN XtVaSetValues .
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The widget with subpart resources may call
+.PN XtSetValues
+from the set_values_hook procedure
+and pass in its subresource list and the
+\fIargs\fP and \fInum_args\fP parameters.
+.bp
diff --git a/specs/Xt/CH10 b/specs/Xt/CH10
new file mode 100644
index 0000000..b7c0139
--- /dev/null
+++ b/specs/Xt/CH10
@@ -0,0 +1,1521 @@
+.\" $Xorg: CH10,v 1.3 2000/08/17 19:42:46 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 10\fP\s-1
+
+\s+1\fBTranslation Management\s-1
+.sp 2
+.nr H1 10
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 10 \(em Translation Management
+.XE
+Except under unusual circumstances,
+widgets do not hardwire the mapping of user events into widget behavior
+by using the event manager.
+Instead, they provide a default mapping of events into behavior
+that you can override.
+.LP
+The translation manager provides an interface to specify and manage the
+mapping of X event sequences into widget-supplied functionality,
+for example, calling procedure \fIAbc\fP when the \fIy\fP key
+is pressed.
+.LP
+The translation manager uses two kinds of tables to perform translations:
+.IP \(bu 5
+The action tables, which are in the widget class structure,
+specify the mapping of externally available procedure name strings
+to the corresponding procedure implemented by the widget class.
+.IP \(bu 5
+A translation table, which is in the widget class structure,
+specifies the mapping of event sequences to procedure name strings.
+.LP
+You can override the translation table in the class structure
+for a specific widget instance by supplying a different translation table
+for the widget instance. The resources
+XtNtranslations and XtNbaseTranslations are used to modify the class
+default translation table; see Section 10.3.
+
+.NH 2
+Action Tables
+.XS
+\fB\*(SN Action Tables\fP
+.XE
+.LP
+All widget class records contain an action table,
+an array of
+.PN XtActionsRec
+entries.
+In addition,
+an application can register its own action tables with the translation manager
+so that the translation tables it provides to widget instances can access
+application functionality directly.
+The translation action procedure pointer is of type
+.PN XtActionProc .
+.LP
+.IN "action_proc procedure" "" "@DEF@"
+.IN "XtActionProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtActionProc)(Widget, XEvent*, String*, Cardinal*);
+.br
+ Widget \fIw\fP;
+.br
+ XEvent *\fIevent\fP;
+.br
+ String *\fIparams\fP;
+.br
+ Cardinal *\fInum_params\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that caused the action to be called.
+.IP \fIevent\fP 1i
+Specifies the event that caused the action to be called.
+If the action is called after a sequence of events,
+then the last event in the sequence is used.
+.IP \fIparams\fP 1i
+Specifies a pointer to the list of strings that were specified
+in the translation table as arguments to the action, or NULL.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.IN "XtActionsRec"
+.IN "XtActionList"
+.LP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _XtActionsRec {
+ String string;
+ XtActionProc proc;
+} XtActionsRec, *XtActionList;
+.De
+.LP
+.eM
+The \fIstring\fP field is the name used in translation tables to access
+the procedure.
+The \fIproc\fP field is a pointer to a procedure that implements
+the functionality.
+.LP
+When the action list is specified as the
+.PN CoreClassPart
+\fIactions\fP field, the string pointed to by \fIstring\fP must be
+permanently allocated prior to or during the execution of the class
+initialization procedure and must not be subsequently deallocated.
+.LP
+Action procedures should not assume that the widget in which they
+are invoked is realized; an accelerator specification can cause
+an action procedure to be called for a widget that does not yet
+have a window. Widget writers should also note which of a widget's
+callback lists are invoked from action procedures and warn clients
+not to assume the widget is realized in those callbacks.
+.LP
+For example, a Pushbutton widget has procedures to take the following actions:
+.IP \(bu 5
+Set the button to indicate it is activated.
+.IP \(bu 5
+Unset the button back to its normal mode.
+.IP \(bu 5
+Highlight the button borders.
+.IP \(bu 5
+Unhighlight the button borders.
+.IP \(bu 5
+Notify any callbacks that the button has been activated.
+.LP
+The action table for the Pushbutton widget class makes these functions
+available to translation tables written for Pushbutton or any subclass.
+The string entry is the name used in translation tables.
+The procedure entry (usually spelled identically to the string)
+is the name of the C procedure that implements that function:
+.LP
+.IN "Action Table"
+.Ds
+.TA .5i 1.5i
+.ta .5i 1.5i
+XtActionsRec actionTable[] = {
+ {"Set", Set},
+ {"Unset", Unset},
+ {"Highlight", Highlight},
+ {"Unhighlight", Unhighlight}
+ {"Notify", Notify},
+};
+.De
+.LP
+The \*(xI reserve all action names and parameters starting with
+the characters ``Xt'' for future standard enhancements. Users,
+applications, and widgets should not declare action names or pass
+parameters starting with these characters except to invoke specified
+built-in \*(xI functions.
+
+.NH 3
+Action Table Registration
+.XS
+\fB\*(SN Action Table Registration\fP
+.XE
+.LP
+.IN "actions"
+The \fIactions\fP and \fInum_actions\fP fields of
+.PN CoreClassPart
+specify the actions implemented by a widget class. These are
+automatically registered with the \*(xI when the class is initialized
+and must be allocated in writable storage prior to Core class_part
+initialization, and never deallocated. To save memory and optimize
+access, the \*(xI may overwrite the storage in order to compile the
+list into an internal representation.
+.sp
+.LP
+To declare an action table within an application
+and register it with the translation manager, use
+.PN XtAppAddActions .
+.LP
+.IN "XtAppAddActions" "" "@DEF@"
+.sM
+.FD 0
+void XtAppAddActions(\fIapp_context\fP, \fIactions\fP, \fInum_actions\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtActionList \fIactions\fP;
+.br
+ Cardinal \fInum_actions\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIactions\fP 1i
+Specifies the action table to register.
+.IP \fInum_actions\fP 1i
+Specifies the number of entries in this action table.
+.LP
+.eM
+If more than one action is registered with the same name,
+the most recently registered action is used.
+If duplicate actions exist in an action table,
+the first is used.
+The \*(xI register an action table containing
+.PN XtMenuPopup
+and
+.PN XtMenuPopdown
+as part of
+.PN XtCreateApplicationContext .
+
+.NH 3
+Action Names to Procedure Translations
+.XS
+\fB\*(SN Action Names to Procedure Translations\fP
+.XE
+.LP
+The translation manager uses a simple algorithm to resolve the name of
+a procedure specified in a translation table into the
+actual procedure specified
+in an action table.
+When the widget
+is realized, the translation manager
+performs a search for the name in the following tables, in order:
+.IP \(bu 5
+The widget's class and all superclass action tables, in subclass-to-superclass
+order.
+.IP \(bu 5
+The parent's class and all superclass action tables, in subclass-to-superclass
+order, then on up the ancestor tree.
+.IP \(bu 5
+The action tables registered with
+.PN XtAppAddActions
+and
+.PN XtAddActions
+from the most recently added table to the oldest table.
+.LP
+As soon as it finds a name,
+the translation manager stops the search.
+If it cannot find a name,
+the translation manager generates a warning message.
+
+.NH 3
+Action Hook Registration
+.XS
+\fB\*(SN Action Hook Registration\fP
+.XE
+.LP
+An application can specify a procedure that will be called just before
+every action routine is dispatched by the translation manager. To do
+so, the application supplies a procedure pointer of type
+.PN XtActionHookProc .
+.LP
+.IN "XtActionHookProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtActionHookProc)(Widget, XtPointer, String, XEvent*, \
+String*, Cardinal*);
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ String \fIaction_name\fP;
+.br
+ XEvent* \fIevent\fP;
+.br
+ String* \fIparams\fP;
+.br
+ Cardinal* \fInum_params\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget whose action is about to be dispatched.
+.IP \fIclient_data\fP 1i
+Specifies the application-specific closure that was passed to
+.PN XtAppAddActionHook.
+.IP \fIaction_name\fP 1i
+Specifies the name of the action to be dispatched.
+.IP \fIevent\fP 1i
+Specifies the event argument that will be passed to the action routine.
+.IP \fIparams\fP 1i
+Specifies the action parameters that will be passed to the action routine.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.LP
+.eM
+Action hooks should not modify any of the data pointed to by the
+arguments other than the \fIclient_data\fP argument.
+.sp
+.LP
+To add an action hook, use
+.PN XtAppAddActionHook .
+.LP
+.IN "XtAppAddActionHook" "" "@DEF@"
+.sM
+.FD 0
+XtActionHookId XtAppAddActionHook(\fIapp\fP, \fIproc\fP, \fIclient_data\fP)
+.br
+ XtAppContext \fIapp\fP;
+.br
+ XtActionHookProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIapp\fP 1i
+Specifies the application context.
+.IP \fIproc\fP 1i
+Specifies the action hook procedure.
+.IP \fIclient_data\fP 1i
+Specifies application-specific data to be passed to the action hook.
+.LP
+.eM
+.PN XtAppAddActionHook
+adds the specified procedure to the front of a list
+maintained in the application context. In the future, when an action
+routine is about to be invoked for any widget in this application
+context, either through the translation manager or via
+.PN XtCallActionProc ,
+the action hook procedures will be called in reverse
+order of registration just prior to invoking the action routine.
+.LP
+Action hook procedures are removed automatically and the
+.PN XtActionHookId is
+destroyed when the application context in which
+they were added is destroyed.
+.sp
+.LP
+To remove an action hook procedure without destroying the application
+context, use
+.PN XtRemoveActionHook .
+.LP
+.IN "XtRemoveActionHook" "" "@DEF@"
+.sM
+.FD 0
+void XtRemoveActionHook(\fIid\fP)
+.br
+ XtActionHookId \fIid\fP;
+.FN
+.IP \fIid\fP 1i
+Specifies the action hook id returned by
+.PN XtAppAddActionHook .
+.LP
+.eM
+.PN XtRemoveActionHook
+removes the specified action hook procedure from
+the list in which it was registered.
+
+.NH 2
+Translation Tables
+.XS
+\fB\*(SN Translation Tables\fP
+.XE
+.LP
+All widget instance records contain a translation table,
+which is a resource with a default value specified elsewhere in the
+class record.
+A translation table specifies what action procedures are invoked for
+an event or a sequence of events.
+A translation table
+is a string containing a list of translations from an event sequence
+into one or more action procedure calls.
+The translations are separated from one another by newline characters
+(ASCII LF).
+The complete syntax of translation tables is specified in Appendix B.
+.LP
+As an example, the default behavior of Pushbutton is
+.IP \(bu 5
+Highlight on enter window.
+.IP \(bu 5
+Unhighlight on exit window.
+.IP \(bu 5
+Invert on left button down.
+.IP \(bu 5
+Call callbacks and reinvert on left button up.
+.LP
+The following illustrates Pushbutton's default translation table:
+.LP
+.IN "Translation tables"
+.Ds
+.TA .5i 1.5i
+.ta .5i 1.5i
+static String defaultTranslations =
+ "<EnterWindow>: Highlight()\\n\\
+ <LeaveWindow>: Unhighlight()\\n\\
+ <Btn1Down>: Set()\\n\\
+ <Btn1Up>: Notify() Unset()";
+.De
+.LP
+The \fItm_table\fP field of the
+.PN CoreClassPart
+should be filled in at class initialization time with
+the string containing the class's default translations.
+If a class wants to inherit its superclass's translations,
+it can store the special value
+.PN XtInheritTranslations
+into \fItm_table\fP.
+In Core's class part initialization procedure,
+the \*(xI compile this translation table into an efficient internal form.
+Then, at widget creation time,
+this default translation table is
+combined with the XtNtranslations
+and XtNbaseTranslations resources; see Section 10.3.
+.LP
+The resource conversion mechanism automatically compiles
+string translation tables that are specified in the resource database.
+If a client uses translation tables that are not retrieved via a
+resource conversion,
+it must compile them itself using
+.PN XtParseTranslationTable .
+.LP
+The \*(xI use the compiled form of the translation table to register the
+necessary events with the event manager.
+Widgets need do nothing other than specify the action and translation tables
+for events to be processed by the translation manager.
+
+.NH 3
+Event Sequences
+.XS
+\fB\*(SN Event Sequences\fP
+.XE
+.LP
+An event sequence is a comma-separated list of X event descriptions
+that describes a specific sequence of X events to map to a set of
+program actions.
+Each X event description consists of three parts:
+The X event type, a prefix consisting of the X modifier bits, and
+an event-specific suffix.
+.LP
+Various abbreviations are supported to make translation tables easier
+to read. The events must match incoming events in left-to-right order
+to trigger the action sequence.
+
+.NH 3
+Action Sequences
+.XS
+\fB\*(SN Action Sequences\fP
+.XE
+.LP
+Action sequences specify what program or widget actions to take in response to
+incoming X events. An action sequence consists of space-separated
+action procedure call specifications.
+Each action procedure call consists of the name of an action procedure and a
+parenthesized list of zero or more comma-separated
+string parameters to pass to that procedure.
+The actions are invoked in left-to-right order as specified in the
+action sequence.
+
+.NH 3
+Multi-Click Time
+.XS
+\fB\*(SN Multi-Click Time\fP
+.XE
+.LP
+Translation table entries may specify actions that are taken when two
+or more identical events occur consecutively within a short time
+interval, called the multi-click time. The multi-click time value may
+be specified as an application resource with name ``multiClickTime'' and
+.IN "multiClickTime" "" "@DEF@"
+.IN "Resources" "multiClickTime"
+class ``MultiClickTime'' and may also be modified dynamically by the
+application. The multi-click time is unique for each Display value and
+is retrieved from the resource database by
+.PN XtDisplayInitialize .
+If no value is specified, the initial value is 200 milliseconds.
+.sp
+.LP
+To set the multi-click time dynamically, use
+.PN XtSetMultiClickTime .
+.LP
+.IN "XtSetMultiClickTime" "" "@DEF@"
+.sM
+.FD 0
+void XtSetMultiClickTime(\fIdisplay\fP, \fItime\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ int \fItime\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display connection.
+.IP \fItime\fP 1i
+Specifies the multi-click time in milliseconds.
+.LP
+.eM
+.PN XtSetMultiClickTime
+sets the time interval used by the translation
+manager to determine when multiple events are interpreted as a
+repeated event. When a repeat count is specified in a translation
+entry, the interval between the timestamps in each pair of repeated
+events (e.g., between two
+.PN ButtonPress
+events) must be less than the
+multi-click time in order for the translation actions to be taken.
+.sp
+.LP
+To read the multi-click time, use
+.PN XtGetMultiClickTime .
+.LP
+.IN "XtGetMultiClickTime" "" "@DEF@"
+.sM
+.FD 0
+int XtGetMultiClickTime(\fIdisplay\fP)
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display connection.
+.LP
+.eM
+.PN XtGetMultiClickTime
+returns the time in milliseconds that the
+translation manager uses to determine if multiple events are to be
+interpreted as a repeated event for purposes of matching a translation
+entry containing a repeat count.
+
+.NH 2
+Translation Table Management
+.XS
+\fB\*(SN Translation Table Management\fP
+.XE
+.LP
+Sometimes an application needs to merge
+its own translations with a widget's translations.
+For example, a window manager provides functions to move a window.
+The window manager wishes to bind this operation to a specific
+pointer button in the title bar without the possibility of user
+override and bind it to other buttons that may be overridden by the user.
+.LP
+To accomplish this,
+the window manager should first create the title bar
+and then should merge the two translation tables into
+the title bar's translations.
+One translation table contains the translations that the window manager
+wants only if the user has not specified a translation for a particular event
+or event sequence (i.e., those that may be overridden).
+The other translation table contains the translations that the
+window manager wants regardless of what the user has specified.
+.LP
+Three \*(xI functions support this merging:
+.TS
+lw(2i) lw(3.75i).
+T{
+.PN XtParseTranslationTable
+T} T{
+Compiles a translation table.
+T}
+.sp
+T{
+.PN XtAugmentTranslations
+T} T{
+Merges a compiled translation table into a widget's
+compiled translation table, ignoring any new translations that
+conflict with existing translations.
+T}
+.sp
+T{
+.PN XtOverrideTranslations
+T} T{
+Merges a compiled translation table into a widget's
+compiled translation table, replacing any existing translations that
+conflict with new translations.
+T}
+.TE
+.sp
+.LP
+To compile a translation table, use
+.PN XtParseTranslationTable .
+.LP
+.IN "XtParseTranslationTable" "" "@DEF@"
+.sM
+.FD 0
+XtTranslations XtParseTranslationTable(\fItable\fP)
+.br
+ String \fItable\fP;
+.FN
+.IP \fItable\fP 1i
+Specifies the translation table to compile.
+.LP
+.eM
+The
+.PN XtParseTranslationTable
+function compiles the translation table, provided in the format given
+in Appendix B, into an opaque internal representation
+of type
+.PN XtTranslations .
+Note that if an empty translation table is required for any purpose,
+one can be obtained by calling
+.PN XtParseTranslationTable
+and passing an empty string.
+.sp
+.LP
+To merge additional translations into an existing translation table, use
+.PN XtAugmentTranslations .
+.LP
+.IN "XtAugmentTranslations" "" "@DEF@"
+.sM
+.FD 0
+void XtAugmentTranslations(\fIw\fP, \fItranslations\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTranslations \fItranslations\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget into which the new translations are to be merged. \*(cI
+.IP \fItranslations\fP 1i
+Specifies the compiled translation table to merge in.
+.LP
+.eM
+The
+.PN XtAugmentTranslations
+function merges the new translations into the existing widget
+translations, ignoring any
+.PN #replace ,
+.PN #augment ,
+or
+.PN #override
+directive that may have been specified
+in the translation string. The translation table specified by
+\fItranslations\fP is not altered by this process.
+.PN XtAugmentTranslations
+logically appends the string representation of the new translations to
+the string representation of the widget's current translations and reparses
+the result with no warning messages about duplicate left-hand sides, then
+stores the result back into the widget instance; i.e.,
+if the new translations contain an event or event sequence that
+already exists in the widget's translations,
+the new translation is ignored.
+.sp
+.LP
+To overwrite existing translations with new translations, use
+.PN XtOverrideTranslations .
+.LP
+.IN "XtOverrideTranslations" "" "@DEF@"
+.sM
+.FD 0
+void XtOverrideTranslations(\fIw\fP, \fItranslations\fP)
+.br
+ Widget \fIw\fP;
+.br
+ XtTranslations \fItranslations\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget into which the new translations are to be merged. \*(cI
+.IP \fItranslations\fP 1i
+Specifies the compiled translation table to merge in.
+.LP
+.eM
+The
+.PN XtOverrideTranslations
+function merges the new translations into the existing widget
+translations, ignoring any
+.PN #replace ,
+.PN #augment ,
+or
+.PN #override
+directive that may have been
+specified in the translation string. The translation table
+specified by \fItranslations\fP is not altered by this process.
+.PN XtOverrideTranslations
+logically appends the string representation of the widget's current
+translations to the string representation of the new translations and
+reparses the result with no warning messages about duplicate left-hand
+sides, then stores the result back into the widget instance; i.e.,
+if the new translations contain an event or event sequence that
+already exists in the widget's translations,
+the new translation overrides the widget's translation.
+.LP
+To replace a widget's translations completely, use
+.PN XtSetValues
+on the XtNtranslations resource and specify a compiled translation table
+as the value.
+.sp
+.LP
+To make it possible for users to easily modify translation tables in their
+resource files,
+the string-to-translation-table resource type converter
+allows the string to specify whether the table should replace,
+augment, or override any
+existing translation table in the widget.
+To specify this,
+a pound sign (#) is given as the first character of the table
+followed by one of the keywords ``replace'', ``augment'', or
+``override'' to indicate
+whether to replace, augment, or override the existing table.
+The replace or merge
+operation is performed during the
+Core
+instance initialization.
+Each merge operation produces a new
+translation resource value; if the original tables were shared by
+other widgets, they are unaffected. If no directive is
+specified, ``#replace'' is assumed.
+.LP
+At instance initialization
+the XtNtranslations resource is first fetched. Then, if it was
+not specified or did not contain ``#replace'', the
+resource database is searched for the resource XtNbaseTranslations.
+If XtNbaseTranslations is found, it is merged into the widget class
+translation table. Then the widget \fItranslations\fP field is
+merged into the result or into the class translation table if
+XtNbaseTranslations was not found. This final table is then
+stored into the widget \fItranslations\fP field. If the XtNtranslations
+resource specified ``#replace'', no merge is done.
+If neither XtNbaseTranslations or XtNtranslations are specified,
+the class translation table is copied into the widget instance.
+.sp
+.LP
+To completely remove existing translations, use
+.PN XtUninstallTranslations .
+.LP
+.IN "XtUninstallTranslations" "" "@DEF@"
+.sM
+.FD 0
+void XtUninstallTranslations(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget from which the translations are to be removed. \*(cI
+.LP
+.eM
+The
+.PN XtUninstallTranslations
+function causes the entire translation table for the widget to be removed.
+
+.NH 2
+Using Accelerators
+.XS
+\fB\*(SN Using Accelerators\fP
+.XE
+.LP
+It is often desirable to be able to bind events in one widget to actions in
+another.
+In particular,
+it is often useful to be able to invoke menu actions from the keyboard.
+The \*(xI provide a facility, called accelerators, that lets you
+accomplish this.
+.IN "Accelerator" "" "@DEF@"
+An accelerator table is a translation table that is bound with its
+actions in the context of a particular widget, the \fIsource\fP widget.
+The accelerator table can then be installed on one or more \fIdestination\fP widgets.
+When an event sequence in the destination widget would cause an
+accelerator action to be taken, and if the source widget is sensitive,
+the actions are executed as though triggered by the same event sequence
+in the accelerator source
+widget. The event is
+passed to the action procedure without modification. The action
+procedures used within accelerators must not assume that the source
+widget is realized nor that any fields of the event are in reference
+to the source widget's window if the widget is realized.
+.LP
+Each widget instance contains that widget's exported accelerator table
+as a resource.
+Each class of widget exports a method that takes a
+displayable string representation of the accelerators
+so that widgets can display their current accelerators.
+The representation is the accelerator table in canonical
+translation table form (see Appendix B).
+The display_accelerator procedure pointer is of type
+.PN XtStringProc .
+.LP
+.IN "display_accelerator procedure" "" "@DEF@"
+.IN "XtStringProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtStringProc)(Widget, String);
+.br
+ Widget \fIw\fP;
+.br
+ String \fIstring\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the source widget that supplied the accelerators.
+.IP \fIstring\fP 1i
+Specifies the string representation of the accelerators for this widget.
+.LP
+.eM
+Accelerators can be specified in resource files,
+and the string representation is the same as for a translation table.
+However,
+the interpretation of the
+.PN #augment
+and
+.PN #override
+directives applies to
+what will happen when the accelerator is installed;
+that is, whether or not the accelerator translations will override the
+translations in the destination widget.
+The default is
+.PN #augment ,
+which means that the accelerator translations have lower priority
+than the destination translations.
+The
+.PN #replace
+directive is ignored for accelerator tables.
+.sp
+.LP
+To parse an accelerator table, use
+.PN XtParseAcceleratorTable .
+.LP
+.IN "XtParseAcceleratorTable" "" "@DEF@"
+.sM
+.FD 0
+XtAccelerators XtParseAcceleratorTable(\fIsource\fP)
+.br
+ String \fIsource\fP;
+.FN
+.IP \fIsource\fP 1i
+Specifies the accelerator table to compile.
+.LP
+.eM
+The
+.PN XtParseAcceleratorTable
+function compiles the accelerator table into an opaque internal representation.
+The client
+should set the XtNaccelerators resource of
+each widget that is to be activated by these translations
+to the returned value.
+.sp
+.LP
+To install accelerators from a widget on another widget, use
+.PN XtInstallAccelerators .
+.LP
+.IN "XtInstallAccelerators" "" "@DEF@"
+.sM
+.FD 0
+void XtInstallAccelerators(\fIdestination\fP, \fIsource\fP)
+.br
+ Widget \fIdestination\fP;
+.br
+ Widget \fIsource\fP;
+.FN
+.IP \fIdestination\fP 1i
+Specifies the widget on which the accelerators are to be installed. \*(cI
+.IP \fIsource\fP 1i
+Specifies the widget from which the accelerators are to come. \*(cI
+.LP
+.eM
+The
+.PN XtInstallAccelerators
+function installs the \fIaccelerators\fP resource value from
+\fIsource\fP onto \fIdestination\fP
+by merging the source accelerators into the destination translations.
+If the source \fIdisplay_accelerator\fP field is non-NULL,
+.PN XtInstallAccelerators
+calls it with the source widget and a string representation
+of the accelerator table,
+which indicates that its accelerators have been installed
+and that it should display them appropriately.
+The string representation of the accelerator table is its
+canonical translation table representation.
+.sp
+.LP
+As a convenience for installing all accelerators from a widget and all its
+descendants onto one destination, use
+.PN XtInstallAllAccelerators .
+.LP
+.IN "XtInstallAllAccelerators" "" "@DEF@"
+.sM
+.FD 0
+void XtInstallAllAccelerators(\fIdestination\fP, \fIsource\fP)
+.br
+ Widget \fIdestination\fP;
+.br
+ Widget \fIsource\fP;
+.FN
+.IP \fIdestination\fP 1i
+Specifies the widget on which the accelerators are to be installed. \*(cI
+.IP \fIsource\fP 1i
+Specifies the root widget of the widget tree
+from which the accelerators are to come. \*(cI
+.LP
+.eM
+The
+.PN XtInstallAllAccelerators
+function recursively descends the widget tree rooted at \fIsource\fP
+and installs the accelerators resource value
+of each widget encountered onto \fIdestination\fP.
+A common use is to call
+.PN XtInstallAllAccelerators
+and pass the application main window as the source.
+
+.NH 2
+KeyCode-to-KeySym Conversions
+.XS
+\*(SN KeyCode-to-KeySym Conversions
+.XE
+.LP
+The translation manager provides support for automatically translating
+KeyCodes in incoming key events into KeySyms.
+KeyCode-to-KeySym translator procedure pointers are of type
+.PN XtKeyProc .
+.LP
+.IN "XtKeyProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtKeyProc)(Display*, KeyCode, Modifiers, Modifiers*, \
+KeySym*);
+.br
+ Display *\fIdisplay\fP;
+.br
+ KeyCode \fIkeycode\fP;
+.br
+ Modifiers \fImodifiers\fP;
+.br
+ Modifiers *\fImodifiers_return\fP;
+.br
+ KeySym *\fIkeysym_return\fP;
+.FN
+.IP \fIdisplay\fP 1.1i
+Specifies the display that the KeyCode is from.
+.IP \fIkeycode\fP 1.1i
+Specifies the KeyCode to translate.
+.IP \fImodifiers\fP 1.1i
+Specifies the modifiers to the KeyCode.
+.IP \fImodifiers_return\fP 1.1i
+Specifies a location in which to store
+a mask that indicates the subset of all
+modifiers that are examined by the key translator for the specified keycode.
+.IP \fIkeysym_return\fP 1.1i
+Specifies a location in which to store the resulting KeySym.
+.LP
+.eM
+This procedure takes a KeyCode and modifiers and produces a KeySym.
+For any given key translator function and keyboard encoding,
+\fImodifiers_return\fP will be a constant per KeyCode that indicates
+the subset of all modifiers that are examined by the key translator
+for that KeyCode.
+.LP
+The KeyCode-to-KeySym translator procedure
+must be implemented such that multiple calls with the same
+\fIdisplay\fP, \fIkeycode\fP, and \fImodifiers\fP return the same
+result until either a new case converter, an
+.PN XtCaseProc ,
+is installed or a
+.PN MappingNotify
+event is received.
+
+.sp
+.LP
+The \*(xI maintain tables internally to map KeyCodes to KeySyms
+for each open display. Translator procedures and other clients may
+share a single copy of this table to perform the same mapping.
+.LP
+To return a pointer to the KeySym-to-KeyCode mapping table for a
+particular display, use
+.PN XtGetKeysymTable .
+.LP
+.IN "XtGetKeysymTable" "" "@DEF@"
+.sM
+.FD 0
+KeySym *XtGetKeysymTable(\fIdisplay\fP, \fImin_keycode_return\fP, \
+\fIkeysyms_per_keycode_return\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ KeyCode *\fImin_keycode_return\fP;
+.br
+ int *\fIkeysyms_per_keycode_return\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display whose table is required.
+.IP \fImin_keycode_return\fP 1i
+Returns the minimum KeyCode valid for the display.
+.IP \fIkeysyms_per_keycode_return\fP 1i
+Returns the number of KeySyms stored for each KeyCode.
+.LP
+.eM
+.PN XtGetKeysymTable
+returns a pointer to the \*(xI' copy of the
+server's KeyCode-to-KeySym table. This table must not be modified.
+There are \fIkeysyms_per_keycode_return\fP KeySyms associated with each
+KeyCode, located in the table with indices starting at index
+.IP
+ (test_keycode - min_keycode_return) * keysyms_per_keycode_return
+.LP
+for KeyCode \fItest_keycode\fP. Any entries that have no KeySyms associated
+with them contain the value
+.PN NoSymbol .
+Clients should not cache the KeySym table but should call
+.PN XtGetKeysymTable
+each time the value is
+needed, as the table may change prior to dispatching each event.
+.LP
+For more information on this table, see Section 12.7 in \fI\*(xL\fP.
+.sp
+.LP
+To register a key translator, use
+.PN XtSetKeyTranslator .
+.LP
+.IN "XtSetKeyTranslator" "" "@DEF@"
+.sM
+.FD 0
+void XtSetKeyTranslator(\fIdisplay\fP, \fIproc\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ XtKeyProc \fIproc\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display from which to translate the events.
+.IP \fIproc\fP 1i
+Specifies the procedure to perform key translations.
+.LP
+.eM
+The
+.PN XtSetKeyTranslator
+function sets the specified procedure as the current key translator.
+The default translator is
+.PN XtTranslateKey ,
+an
+.PN XtKeyProc
+that uses the Shift, Lock, numlock, and group modifiers
+with the interpretations defined in \fI\*(xP\fP, Section 5.
+It is provided so that new translators can call it to get default
+KeyCode-to-KeySym translations and so that the default translator
+can be reinstalled.
+.sp
+.LP
+To invoke the currently registered KeyCode-to-KeySym translator,
+use
+.PN XtTranslateKeycode .
+.LP
+.IN "XtTranslateKeycode" "" "@DEF@"
+.sM
+.FD 0
+void XtTranslateKeycode(\fIdisplay\fP, \fIkeycode\fP, \fImodifiers\fP, \
+\fImodifiers_return\fP, \fIkeysym_return\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ KeyCode \fIkeycode\fP;
+.br
+ Modifiers \fImodifiers\fP;
+.br
+ Modifiers *\fImodifiers_return\fP;
+.br
+ KeySym *\fIkeysym_return\fP;
+.FN
+.IP \fIdisplay\fP 1.1i
+Specifies the display that the KeyCode is from.
+.IP \fIkeycode\fP 1.1i
+Specifies the KeyCode to translate.
+.IP \fImodifiers\fP 1.1i
+Specifies the modifiers to the KeyCode.
+.IP \fImodifiers_return\fP 1.1i
+Returns a mask that indicates the modifiers actually used
+to generate the KeySym.
+.IP \fIkeysym_return\fP 1.1i
+Returns the resulting KeySym.
+.LP
+.eM
+The
+.PN XtTranslateKeycode
+function passes the specified arguments
+directly to the currently registered KeyCode-to-KeySym translator.
+.sp
+.LP
+To handle capitalization of nonstandard KeySyms, the \*(xI allow
+clients to register case conversion routines.
+Case converter procedure pointers are of type
+.PN XtCaseProc .
+.LP
+.IN "XtCaseProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtCaseProc)(Display*, KeySym, KeySym*, KeySym*);
+.br
+ Display *\fIdisplay\fP;
+.br
+ KeySym \fIkeysym\fP;
+.br
+ KeySym *\fIlower_return\fP;
+.br
+ KeySym *\fIupper_return\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display connection for which the conversion is required.
+.IP \fIkeysym\fP 1i
+Specifies the KeySym to convert.
+.IP \fIlower_return\fP 1i
+Specifies a location into which to store the lowercase equivalent for
+the KeySym.
+.IP \fIupper_return\fP 1i
+Specifies a location into which to store the uppercase equivalent for
+the KeySym.
+.LP
+.eM
+If there is no case distinction,
+this procedure should store the KeySym into both return values.
+.sp
+.LP
+To register a case converter, use
+.PN XtRegisterCaseConverter .
+.LP
+.IN "XtRegisterCaseConverter" "" "@DEF@"
+.sM
+.FD 0
+void XtRegisterCaseConverter(\fIdisplay\fP, \fIproc\fP, \fIstart\fP, \fIstop\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ XtCaseProc \fIproc\fP;
+.br
+ KeySym \fIstart\fP;
+.br
+ KeySym \fIstop\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display from which the key events are to come.
+.IP \fIproc\fP 1i
+Specifies the
+.PN XtCaseProc
+to do the conversions.
+.IP \fIstart\fP 1i
+Specifies the first KeySym for which this converter is valid.
+.IP \fIstop\fP 1i
+Specifies the last KeySym for which this converter is valid.
+.LP
+.eM
+The
+.PN XtRegisterCaseConverter
+registers the specified case converter.
+The \fIstart\fP and \fIstop\fP arguments provide the inclusive range of KeySyms
+for which this converter is to be called.
+The new converter overrides any previous converters for KeySyms in that range.
+No interface exists to remove converters;
+you need to register an identity converter.
+When a new converter is registered,
+the \*(xI refresh the keyboard state if necessary.
+The default converter understands case conversion for all
+Latin KeySyms defined in \fI\*(xP\fP, Appendix A.
+.sp
+.LP
+To determine uppercase and lowercase equivalents for a KeySym, use
+.PN XtConvertCase .
+.LP
+.IN "XtConvertCase" "" "@DEF@"
+.sM
+.FD 0
+void XtConvertCase(\fIdisplay\fP, \fIkeysym\fP, \fIlower_return\fP, \
+\fIupper_return\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ KeySym \fIkeysym\fP;
+.br
+ KeySym *\fIlower_return\fP;
+.br
+ KeySym *\fIupper_return\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display that the KeySym came from.
+.IP \fIkeysym\fP 1i
+Specifies the KeySym to convert.
+.IP \fIlower_return\fP 1i
+Returns the lowercase equivalent of the KeySym.
+.IP \fIupper_return\fP 1i
+Returns the uppercase equivalent of the KeySym.
+.LP
+.eM
+The
+.PN XtConvertCase
+function calls the appropriate converter and returns the results.
+A user-supplied
+.PN XtKeyProc
+may need to use this function.
+
+.NH 2
+Obtaining a KeySym in an Action Procedure
+.XS
+\fB\*(SN Obtaining a KeySym in an Action Procedure\fP
+.XE
+.LP
+When an action procedure is invoked on a
+.PN KeyPress
+or
+.PN KeyRelease
+event, it often has a need to retrieve the KeySym and modifiers
+corresponding to the event that caused it to be invoked. In order to
+avoid repeating the processing that was just performed by the
+\*(xI to match the translation entry, the KeySym and modifiers
+are stored for the duration of the action procedure and are made
+available to the client.
+.LP
+To retrieve the KeySym and modifiers that matched the final event
+specification in the translation table entry, use
+.PN XtGetActionKeysym .
+.LP
+.IN "XtGetActionKeysym" "" "@DEF@"
+.sM
+.FD 0
+KeySym XtGetActionKeysym(\fIevent\fP, \fImodifiers_return\fP)
+.br
+ XEvent *\fIevent\fP;
+.br
+ Modifiers *\fImodifiers_return\fP;
+.FN
+.IP \fIevent\fP 1.25i
+Specifies the event pointer passed to the action procedure by the \*(xI.
+.IP \fImodifiers_return\fP 1.25i
+Returns the modifiers that caused the match, if non-NULL.
+.LP
+.eM
+If
+.PN XtGetActionKeysym
+is called after an action procedure has been
+invoked by the \*(xI and before that action procedure returns, and
+if the event pointer has the same value as the event pointer passed to
+that action routine, and if the event is a
+.PN KeyPress
+or
+.PN KeyRelease
+event, then
+.PN XtGetActionKeysym
+returns the KeySym that matched the final
+event specification in the translation table and, if \fImodifiers_return\fP
+is non-NULL, the modifier state actually used to generate this KeySym;
+otherwise, if the event is a
+.PN KeyPress
+or
+.PN KeyRelease
+event, then
+.PN XtGetActionKeysym
+calls
+.PN XtTranslateKeycode
+and returns the results;
+else it returns
+.PN NoSymbol
+and does not examine \fImodifiers_return\fP.
+.LP
+Note that if an action procedure invoked by the \*(xI
+invokes a subsequent action procedure (and so on) via
+.PN XtCallActionProc ,
+the nested action procedure may also call
+.PN XtGetActionKeysym
+to retrieve the \*(xI' KeySym and modifiers.
+
+.NH 2
+KeySym-to-KeyCode Conversions
+.XS
+\*(SN KeySym-to-KeyCode Conversions
+.XE
+.LP
+To return the list of KeyCodes that map to a particular KeySym in
+the keyboard mapping table maintained by the \*(xI, use
+.PN XtKeysymToKeycodeList .
+.LP
+.IN "XtKeysymToKeycodeList" "" "@DEF@"
+.sM
+.FD 0
+void XtKeysymToKeycodeList(\fIdisplay\fP, \fIkeysym\fP, \fIkeycodes_return\fP, \
+\fIkeycount_return\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ KeySym \fIkeysym\fP;
+.br
+ KeyCode **\fIkeycodes_return\fP;
+.br
+ Cardinal *\fIkeycount_return\fP;
+.FN
+.IP \fIdisplay\fP 1.25i
+Specifies the display whose table is required.
+.IP \fIkeysym\fP 1.25i
+Specifies the KeySym for which to search.
+.IP \fIkeycodes_return\fP 1.25i
+Returns a list of KeyCodes that have \fIkeysym\fP
+associated with them, or NULL if \fIkeycount_return\fP is 0.
+.IP \fIkeycount_return\fP 1.25i
+Returns the number of KeyCodes in the keycode list.
+.LP
+.eM
+The
+.PN XtKeysymToKeycodeList
+procedure returns all the KeyCodes that have \fIkeysym\fP
+in their entry for the keyboard mapping table associated with \fIdisplay\fP.
+For each entry in the
+table, the first four KeySyms (groups 1 and 2) are interpreted as
+specified by \fI\*(xP\fP, Section 5. If no KeyCodes map to the
+specified KeySym, \fIkeycount_return\fP is zero and *\fIkeycodes_return\fP is NULL.
+.LP
+The caller should free the storage pointed to by \fIkeycodes_return\fP using
+.PN XtFree
+when it is no longer useful. If the caller needs to examine
+the KeyCode-to-KeySym table for a particular KeyCode, it should call
+.PN XtGetKeysymTable .
+
+.NH 2
+Registering Button and Key Grabs for Actions
+.XS
+\fB\*(SN Registering Button and Key Grabs for Actions\fP
+.XE
+.LP
+To register button and key grabs for a widget's window according to the
+event bindings in the widget's translation table, use
+.PN XtRegisterGrabAction .
+.LP
+.IN "XtRegisterGrabAction" "" "@DEF@"
+.sM
+.FD 0
+void XtRegisterGrabAction(\fIaction_proc\fP, \fIowner_events\fP, \
+\fIevent_mask\fP, \fIpointer_mode\fP, \fIkeyboard_mode\fP)
+.br
+ XtActionProc \fIaction_proc\fP;
+.br
+ Boolean \fIowner_events\fP;
+.br
+ unsigned int \fIevent_mask\fP;
+.br
+ int \fIpointer_mode\fP, \fIkeyboard_mode\fP;
+.FN
+.IP \fIaction_proc\fP 1i
+Specifies the action procedure to search for in translation tables.
+.sp
+.IP \fIowner_events\fP
+.br
+.ns
+.IP \fIevent_mask\fP
+.br
+.ns
+.IP \fIpointer_mode\fP
+.br
+.ns
+.IP \fIkeyboard_mode\fP 1i
+Specify arguments to
+.PN XtGrabButton
+or
+.PN XtGrabKey .
+.LP
+.eM
+.PN XtRegisterGrabAction
+adds the specified \fIaction_proc\fP to a list known to
+the translation manager. When a widget is realized, or when the
+translations of a realized widget or the accelerators installed on a
+realized widget are modified, its translation table and any installed
+accelerators are scanned for action procedures on this list.
+If any are invoked on
+.PN ButtonPress
+or
+.PN KeyPress
+events as the only or final event
+in a sequence, the \*(xI will call
+.PN XtGrabButton
+or
+.PN XtGrabKey
+for the widget with every button or KeyCode which maps to the
+event detail field, passing the specified \fIowner_events\fP, \fIevent_mask\fP,
+\fIpointer_mode\fP, and \fIkeyboard_mode\fP. For
+.PN ButtonPress
+events, the modifiers
+specified in the grab are determined directly from the translation
+specification and \fIconfine_to\fP and \fIcursor\fP are specified as
+.PN None .
+For
+.PN KeyPress
+events, if the translation table entry specifies colon (:) in
+the modifier list, the modifiers are determined by calling the key
+translator procedure registered for the display and calling
+.PN XtGrabKey
+for every combination of standard modifiers which map the KeyCode to
+the specified event detail KeySym, and ORing any modifiers specified in
+the translation table entry, and \fIevent_mask\fP is ignored. If the
+translation table entry does not specify colon in the modifier list,
+the modifiers specified in the grab are those specified in the
+translation table entry only. For both
+.PN ButtonPress
+and
+.PN KeyPress
+events, don't-care modifiers are ignored unless the translation entry
+explicitly specifies ``Any'' in the \fImodifiers\fP field.
+.LP
+If the specified \fIaction_proc\fP is already registered for the calling
+process, the new values will replace the previously specified values
+for any widgets that become realized following the call, but existing
+grabs are not altered on currently realized widgets.
+.LP
+When translations or installed accelerators are modified for a
+realized widget, any previous key or button grabs registered
+as a result of the old bindings are released if they do not appear in
+the new bindings and are not explicitly grabbed by the client with
+.PN XtGrabKey
+or
+.PN XtGrabButton .
+
+.NH 2
+Invoking Actions Directly
+.XS
+\fB\*(SN Invoking Actions Directly\fP
+.XE
+.LP
+Normally action procedures are invoked by the \*(xI when an
+event or event sequence arrives for a widget. To
+invoke an action procedure directly, without generating
+(or synthesizing) events, use
+.PN XtCallActionProc .
+.LP
+.IN "XtCallActionProc" "" "@DEF@"
+.sM
+.FD 0
+void XtCallActionProc(\fIwidget\fP, \fIaction\fP, \fIevent\fP, \fIparams\fP, \
+\fInum_params\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ String \fIaction\fP;
+.br
+ XEvent *\fIevent\fP;
+.br
+ String *\fIparams\fP;
+.br
+ Cardinal \fInum_params\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget in which the action is to be invoked. \*(cI
+.IP \fIaction\fP 1i
+Specifies the name of the action routine.
+.IP \fIevent\fP 1i
+Specifies the contents of the \fIevent\fP passed to the action routine.
+.IP \fIparams\fP 1i
+Specifies the contents of the \fIparams\fP passed to the action routine.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.LP
+.eM
+.PN XtCallActionProc
+searches for the named action routine in the same
+manner and order as translation tables are bound, as described in
+Section 10.1.2, except that application action tables are searched, if
+necessary, as of the time of the call to
+.PN XtCallActionProc .
+If found,
+the action routine is invoked with the specified widget, event pointer,
+and parameters. It is the responsibility of the caller to ensure that
+the contents of the \fIevent\fP, \fIparams\fP, and \fInum_params\fP arguments are
+appropriate for the specified action routine and, if necessary, that
+the specified widget is realized or sensitive. If the named action
+routine cannot be found,
+.PN XtCallActionProc
+generates a warning message and returns.
+
+.NH 2
+Obtaining a Widget's Action List
+.XS
+\*(SN Obtaining a Widget's Action List
+.XE
+.LP
+Occasionally a subclass will require the pointers to one or more of
+its superclass's action procedures. This would be needed, for
+example, in order to envelop the superclass's action. To retrieve
+the list of action procedures registered in the superclass's
+\fIactions\fP field, use
+.PN XtGetActionList .
+.LP
+.IN "XtGetActionList" "" "@DEF@"
+.sM
+.FD 0
+void XtGetActionList(\fIwidget_class\fP, \fIactions_return\fP, \
+\fInum_actions_return\fP)
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ XtActionList *\fIactions_return\fP;
+.br
+ Cardinal *\fInum_actions_return\fP;
+.FN
+.IP \fIwidget_class\fP 1.5i
+Specifies the widget class whose actions are to be returned.
+.IP \fIactions_return\fP 1.5i
+Returns the action list.
+.IP \fInum_actions_return\fP 1.5i
+Returns the number of action procedures declared by the class.
+.LP
+.eM
+.PN XtGetActionList
+returns the action table defined by the specified
+widget class. This table does not include actions defined by the
+superclasses. If \fIwidget_class\fP is not initialized, or is not
+.PN coreWidgetClass
+or a subclass thereof, or if the class does not define any actions,
+*\fIactions_return\fP will be NULL and *\fInum_actions_return\fP
+will be zero.
+If *\fIactions_return\fP is non-NULL the client is responsible for freeing
+the table using
+.PN XtFree
+when it is no longer needed.
+.bp
diff --git a/specs/Xt/CH11 b/specs/Xt/CH11
new file mode 100644
index 0000000..55b8d92
--- /dev/null
+++ b/specs/Xt/CH11
@@ -0,0 +1,3566 @@
+.\" $Xorg: CH11,v 1.3 2000/08/17 19:42:47 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 11\fP\s-1
+
+\s+1\fBUtility Functions\fP\s-1
+.sp 2
+.nr H1 11
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 11 \(em Utility Functions
+.XE
+The \*(xI provide a number of utility functions that you can use to
+.IP \(bu 5
+Determine the number of elements in an array.
+.IP \(bu 5
+Translate strings to widget instances.
+.IP \(bu 5
+Manage memory usage.
+.IP \(bu 5
+Share graphics contexts.
+.IP \(bu 5
+Manipulate selections.
+.IP \(bu 5
+Merge exposure events into a region.
+.IP \(bu 5
+Translate widget coordinates.
+.IP \(bu 5
+Locate a widget given a window id.
+.IP \(bu 5
+Handle errors.
+.IP \(bu 5
+Set the WM_COLORMAP_WINDOWS property.
+.IP \(bu 5
+Locate files by name with string substitutions.
+.IP \(bu 5
+Register callback functions for external agents.
+.IP \(bu 5
+Locate all the displays of an application context.
+
+.NH 2
+Determining the Number of Elements in an Array
+.XS
+\fB\*(SN Determining the Number of Elements in an Array\fP
+.XE
+.LP
+To determine the number of elements in a fixed-size array, use
+.PN XtNumber .
+.LP
+.IN "XtNumber" "" "@DEF@"
+.sM
+.FD 0
+Cardinal XtNumber(\fIarray\fP)
+.br
+ \fIArrayType array\fP;
+.FN
+.IP \fIarray\fP 1i
+Specifies a fixed-size array of arbitrary type.
+.LP
+.eM
+The
+.PN XtNumber
+macro returns the number of elements allocated to the array.
+
+.NH 2
+Translating Strings to Widget Instances
+.XS
+\fB\*(SN Translating Strings to Widget Instances\fP
+.XE
+.LP
+To translate a widget name to a widget instance, use
+.PN XtNameToWidget .
+.LP
+.IN "XtNameToWidget" "" "@DEF@"
+.sM
+.FD 0
+Widget XtNameToWidget(\fIreference\fP, \fInames\fP)
+.br
+ Widget \fIreference\fP;
+.br
+ String \fInames\fP;
+.FN
+.IP \fIreference\fP 1i
+Specifies the widget from which the search is to start. \*(cI
+.IP \fInames\fP 1i
+Specifies the partially qualified name of the desired widget.
+.LP
+.eM
+The
+.PN XtNameToWidget
+function searches for a descendant of the \fIreference\fP
+widget whose name matches the specified names. The \fInames\fP parameter
+specifies a simple object name or a series of simple object name
+components separated by periods or asterisks.
+.PN XtNameToWidget
+returns the descendant with the shortest name matching the specification
+according to the following rules, where child is either a pop-up child
+or a normal child if the widget's class is a subclass of
+Composite :
+.IP \(bu 5
+Enumerate the object subtree rooted at the reference widget in
+breadth-first order, qualifying the name of each object with the
+names of all its ancestors up to, but not including, the reference
+widget. The ordering between children of a common parent is
+not defined.
+.IP \(bu 5
+Return the first object in the enumeration that matches the
+specified name, where each component of \fInames\fP matches exactly the
+corresponding component of the qualified object name and asterisk
+matches any series of components, including none.
+.IP \(bu 5
+If no match is found, return NULL.
+.LP
+Since breadth-first traversal is specified, the descendant with the
+shortest matching name (i.e., the fewest number of components), if any,
+will always be returned. However, since the order of enumeration of
+children is undefined and since the \*(xI do not require that all
+children of a widget have unique names,
+.PN XtNameToWidget
+may return any
+child that matches if there are multiple objects in the subtree with
+the same name. Consecutive separators (periods or asterisks)
+including at least one asterisk are treated as a single asterisk.
+Consecutive periods are treated as a single period.
+
+.NH 2
+Managing Memory Usage
+.XS
+\fB\*(SN Managing Memory Usage\fP
+.XE
+.LP
+The \*(xI memory management functions provide uniform checking for
+null pointers and error reporting on memory allocation errors.
+These functions are completely compatible with their standard C language
+runtime counterparts
+.PN malloc ,
+.PN calloc ,
+.PN realloc ,
+and
+.PN free
+with the following added functionality:
+.IP \(bu 5
+.PN XtMalloc ,
+.PN XtCalloc ,
+and
+.PN XtRealloc
+give an error if there is not enough memory.
+.IP \(bu 5
+.PN XtFree
+simply returns if passed a NULL pointer.
+.IP \(bu 5
+.PN XtRealloc
+simply allocates new storage if passed a NULL pointer.
+.LP
+See the standard C library documentation on
+.PN malloc ,
+.PN calloc ,
+.PN realloc ,
+and
+.PN free
+for more information.
+.sp
+.LP
+To allocate storage, use
+.PN XtMalloc .
+.LP
+.IN "XtMalloc" "" "@DEF@"
+.sM
+.FD 0
+char *XtMalloc(\fIsize\fP)
+.br
+ Cardinal \fIsize\fP;
+.FN
+.IP \fIsize\fP 1i
+Specifies the number of bytes desired.
+.LP
+.eM
+The
+.PN XtMalloc
+function returns a pointer to a block of storage of at least
+the specified \fIsize\fP bytes.
+If there is insufficient memory to allocate the new block,
+.PN XtMalloc
+calls
+.PN XtErrorMsg .
+.sp
+.LP
+To allocate and initialize an array, use
+.PN XtCalloc .
+.LP
+.IN "XtCalloc" "" "@DEF@"
+.sM
+.FD 0
+char *XtCalloc(\fInum\fP, \fIsize\fP)
+.br
+ Cardinal \fInum\fP;
+.br
+ Cardinal \fIsize\fP;
+.FN
+.IP \fInum\fP 1i
+Specifies the number of array elements to allocate.
+.IP \fIsize\fP 1i
+Specifies the size of each array element in bytes.
+.LP
+.eM
+The
+.PN XtCalloc
+function allocates space for the specified number of array elements
+of the specified size and initializes the space to zero.
+If there is insufficient memory to allocate the new block,
+.PN XtCalloc
+calls
+.PN XtErrorMsg .
+.PN XtCalloc
+returns the address of the allocated storage.
+.sp
+.LP
+To change the size of an allocated block of storage, use
+.PN XtRealloc .
+.LP
+.IN "XtRealloc" "" "@DEF@"
+.sM
+.FD 0
+char *XtRealloc(\fIptr\fP, \fInum\fP)
+.br
+ char *\fIptr\fP;
+.br
+ Cardinal \fInum\fP;
+.FN
+.IP \fIptr\fP 1i
+Specifies a pointer to the old storage allocated with
+.PN XtMalloc ,
+.PN XtCalloc ,
+or
+.PN XtRealloc ,
+or NULL.
+.IP \fInum\fP 1i
+Specifies number of bytes desired in new storage.
+.LP
+.eM
+The
+.PN XtRealloc
+function changes the size of a block of storage, possibly moving it.
+Then it copies the old contents (or as much as will fit) into the new block
+and frees the old block.
+If there is insufficient memory to allocate the new block,
+.PN XtRealloc
+calls
+.PN XtErrorMsg .
+If \fIptr\fP is NULL,
+.PN XtRealloc
+simply calls
+.PN XtMalloc .
+.PN XtRealloc
+then returns the address of the new block.
+.sp
+.LP
+To free an allocated block of storage, use
+.PN XtFree .
+.LP
+.IN "XtFree" "" "@DEF@"
+.sM
+.FD 0
+void XtFree(\fIptr\fP)
+.br
+ char *\fIptr\fP;
+.FN
+.IP \fIptr\fP 1i
+Specifies a pointer to a block of storage allocated with
+.PN XtMalloc ,
+.PN XtCalloc ,
+or
+.PN XtRealloc ,
+or NULL.
+.LP
+.eM
+The
+.PN XtFree
+function returns storage, allowing it to be reused.
+If \fIptr\fP is NULL,
+.PN XtFree
+returns immediately.
+.sp
+.LP
+To allocate storage for a new instance of a type, use
+.PN XtNew .
+.LP
+.IN "XtNew" "" "@DEF@"
+.sM
+.FD 0
+\fItype\fP *XtNew(\fItype\fP)
+.br
+ \fItype t\fP;
+.FN
+.IP \fItype\fP 1i
+Specifies a previously declared type.
+.LP
+.eM
+.PN XtNew
+returns a pointer to the allocated storage.
+If there is insufficient memory to allocate the new block,
+.PN XtNew
+calls
+.PN XtErrorMsg .
+.PN XtNew
+is a convenience macro that calls
+.PN XtMalloc
+with the following arguments specified:
+.LP
+.Ds
+.TA .5i
+.ta .5i
+((type *) XtMalloc((unsigned) sizeof(type)))
+.De
+.LP
+The storage allocated by
+.PN XtNew
+should be freed using
+.PN XtFree .
+.sp
+.LP
+To copy an instance of a string, use
+.PN XtNewString .
+.LP
+.IN "XtNewString" "" "@DEF@"
+.sM
+.FD 0
+String XtNewString(\fIstring\fP)
+.br
+ String \fIstring\fP;
+.FN
+.IP \fIstring\fP 1i
+Specifies a previously declared string.
+.LP
+.eM
+.PN XtNewString
+returns a pointer to the allocated storage.
+If there is insufficient memory to allocate the new block,
+.PN XtNewString
+calls
+.PN XtErrorMsg .
+.PN XtNewString
+is a convenience macro that calls
+.PN XtMalloc
+with the following arguments specified:
+.LP
+.Ds
+.TA .5i
+.ta .5i
+(strcpy(XtMalloc((unsigned)strlen(str) + 1), str))
+.De
+.LP
+The storage allocated by
+.PN XtNewString
+should be freed using
+.PN XtFree .
+
+.NH 2
+Sharing Graphics Contexts
+.XS
+\fB\*(SN Sharing Graphics Contexts\fP
+.XE
+.LP
+The \*(xI provide a mechanism whereby cooperating objects can share a
+graphics context (GC), thereby reducing both the number of GCs
+created and the total number of server calls in any given application.
+The mechanism is a simple caching scheme
+and allows for clients to declare both modifiable and nonmodifiable
+fields of the shared GCs.
+.LP
+To obtain a shareable GC with modifiable fields, use
+.PN XtAllocateGC .
+.LP
+.IN "XtAllocateGC" "" "@DEF@"
+.sM
+.FD 0
+GC XtAllocateGC(\fIwidget\fP, \fIdepth\fP, \fIvalue_mask\fP, \fIvalues\fP, \
+\fIdynamic_mask\fP, \fIunused_mask\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ Cardinal \fIdepth\fP;
+.br
+ XtGCMask \fIvalue_mask\fP;
+.br
+ XGCValues *\fIvalues\fP;
+.br
+ XtGCMask \fIdynamic_mask\fP;
+.br
+ XtGCMask \fIunused_mask\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies an object, giving the screen for which the
+returned GC is valid. \*(oI
+.IP \fIdepth\fP 1i
+Specifies the depth for which the returned GC is valid, or 0.
+.IP \fIvalue_mask\fP 1i
+Specifies fields of the GC that are initialized from \fIvalues\fP.
+.IP \fIvalues\fP 1i
+Specifies the values for the initialized fields.
+.IP \fIdynamic_mask\fP 1i
+Specifies fields of the GC that will be modified by the caller.
+.IP \fIunused_mask\fP 1i
+Specifies fields of the GC that will not be needed by the caller.
+.LP
+.eM
+The
+.PN XtAllocateGC
+function returns a shareable GC that may be
+modified by the client. The \fIscreen\fP field of the specified
+widget or of the nearest widget ancestor of the specified
+object and the specified \fIdepth\fP argument supply
+the root and drawable depths for which the GC is to be
+valid. If \fIdepth\fP is zero, the depth is taken from the
+\fIdepth\fP field of the specified widget or of the nearest
+widget ancestor of the specified object.
+.LP
+The \fIvalue_mask\fP argument specifies fields of the GC
+that are initialized with the respective member of the
+\fIvalues\fP structure. The \fIdynamic_mask\fP argument specifies fields
+that the caller intends to modify during program execution.
+The caller must ensure that the corresponding GC field is set
+prior to each use of the GC. The \fIunused_mask\fP argument
+specifies fields of the GC that are of no interest to the
+caller. The caller may make no assumptions about the contents
+of any fields specified in \fIunused_mask\fP. The caller may assume
+that at all times all fields not specified in either
+\fIdynamic_mask\fP or \fIunused_mask\fP have their default value if not
+specified in \fIvalue_mask\fP or the value specified by \fIvalues\fP.
+If a field is specified in both \fIvalue_mask\fP and \fIdynamic_mask\fP,
+the effect is as if it were specified only in \fIdynamic_mask\fP
+and then immediately set to the value in \fIvalues\fP. If a field
+is set in \fIunused_mask\fP and also in either \fIvalue_mask\fP or
+\fIdynamic_mask\fP, the specification in \fIunused_mask\fP is ignored.
+.LP
+.PN XtAllocateGC
+tries to minimize the number of unique GCs
+created by comparing the arguments with those of previous
+calls and returning an existing GC when there are no
+conflicts.
+.PN XtAllocateGC
+may modify and return an existing GC if it was allocated with a
+nonzero \fIunused_mask\fP.
+.sp
+.LP
+To obtain a shareable GC with no modifiable fields, use
+.PN XtGetGC .
+.LP
+.IN "XtGetGC" "" "@DEF@"
+.sM
+.FD 0
+GC XtGetGC(\fIobject\fP, \fIvalue_mask\fP, \fIvalues\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ XtGCMask \fIvalue_mask\fP;
+.br
+ XGCValues *\fIvalues\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies an object, giving the screen and depth for which the
+returned GC is valid. \*(oI
+.IP \fIvalue_mask\fP 1i
+Specifies which fields of the \fIvalues\fP structure are specified.
+.IP \fIvalues\fP 1i
+Specifies the actual values for this GC.
+.LP
+.eM
+The
+.PN XtGetGC
+function returns a shareable, read-only GC.
+The parameters to this function are the same as those for
+.PN XCreateGC
+except that an Object is passed instead of a Display.
+.PN XtGetGC
+is equivalent to
+.PN XtAllocateGC
+with \fIdepth\fP, \fIdynamic_mask\fP, and \fIunused_mask\fP all zero.
+.LP
+.PN XtGetGC
+shares only GCs in which all values in the GC returned by
+.PN XCreateGC
+are the same.
+In particular, it does not use the \fIvalue_mask\fP provided to
+determine which fields of the GC a widget considers relevant.
+The \fIvalue_mask\fP is used only to tell the server which fields should be
+filled in from \fIvalues\fP and which it should fill in with default values.
+.sp
+.LP
+To deallocate a shared GC when it is no longer needed, use
+.PN XtReleaseGC .
+.LP
+.IN "XtReleaseGC" "" "@DEF@"
+.sM
+.FD 0
+void XtReleaseGC(\fIobject\fP, \fIgc\fP)
+.br
+ Widget \fIobject\fP;
+.br
+ GC \fIgc\fP;
+.FN
+.IP \fIobject\fP 1i
+Specifies any object on the Display for which the GC was created. \*(oI
+.IP \fIgc\fP 1i
+Specifies the shared GC obtained with either
+.PN XtAllocateGC
+or
+.PN XtGetGC .
+.LP
+.eM
+References to shareable GCs are counted and a free request is generated to the
+server when the last user of a given GC releases it.
+
+.NH 2
+Managing Selections
+.XS
+\*(SN Managing Selections
+.XE
+.LP
+Arbitrary widgets in multiple applications can communicate
+with each other by means of the \*(xI global selection mechanism,
+which conforms to the specifications in the \fI\*(xC\fP.
+The \*(xI supply functions for providing and receiving selection data in
+one logical piece (atomic transfers)
+or in smaller logical segments (incremental transfers).
+.LP
+The incremental interface is provided for a selection owner or
+selection requestor that cannot or prefers not to pass the selection
+value to and from the \*(xI in a single call. For instance,
+either an application that is running on a machine with limited memory
+may not be able to store the entire selection value in memory or a
+selection owner may already have the selection value available in
+discrete chunks, and it would be more efficient not to have to
+allocate additional storage to copy the pieces contiguously. Any
+owner or requestor that prefers to deal with the selection value in
+segments can use the incremental interfaces to do so.
+The transfer between the selection owner or requestor and the \*(xI is not
+required to match the underlying
+transport protocol between the application and the X server;
+the \*(xI will break too large a selection
+into smaller pieces for transport if necessary
+and will coalesce a selection transmitted incrementally if the value
+was requested atomically.
+
+.NH 3
+Setting and Getting the Selection Timeout Value
+.XS
+\fB\*(SN Setting and Getting the Selection Timeout Value\fP
+.XE
+.LP
+To set the \*(xI selection timeout, use
+.PN XtAppSetSelectionTimeout .
+.LP
+.IN "XtAppSetSelectionTimeout" "" "@DEF@"
+.sM
+.FD 0
+void XtAppSetSelectionTimeout(\fIapp_context\fP, \fItimeout\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ unsigned long \fItimeout\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fItimeout\fP 1i
+Specifies the selection timeout in milliseconds.
+.eM
+.LP
+To get the current selection timeout value, use
+.PN XtAppGetSelectionTimeout .
+.LP
+.IN "XtAppGetSelectionTimeout" "" "@DEF@"
+.sM
+.FD 0
+unsigned long XtAppGetSelectionTimeout(\fIapp_context\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.LP
+.eM
+The
+.PN XtAppGetSelectionTimeout
+function returns the current selection timeout value in milliseconds.
+The selection timeout is the time within which the two communicating
+applications must respond to one another.
+The initial timeout value is set by the
+selectionTimeout
+.IN "selectionTimeout"
+application resource as retrieved by
+.PN XtDisplayInitialize .
+If
+selectionTimeout
+is not specified,
+the default is five seconds.
+
+.NH 3
+Using Atomic Transfers
+.XS
+\*(SN Using Atomic Transfers
+.XE
+.LP
+When using atomic transfers, the owner will completely
+process one selection request at a time.
+The owner may consider each request individually,
+since there is no possibility for overlap
+between evaluation of two requests.
+
+.NH 4
+Atomic Transfer Procedures
+.XS
+\*(SN Atomic Transfer Procedures
+.XE
+.IN "Selections" "atomic"
+.LP
+The following procedures are used by the selection owner when
+providing selection data in a single unit.
+.LP
+The procedure pointer specified by the owner to supply the selection
+data to the \*(xI is of type
+.PN XtConvertSelectionProc .
+.LP
+.IN "XtConvertSelectionProc" "" "@DEF@"
+.sM
+.FD 0
+typedef Boolean (*XtConvertSelectionProc)(Widget, Atom*, Atom*, Atom*,
+.br
+ XtPointer*, unsigned long*, int*);
+.br
+ Widget \fIw\fP;
+.br
+ Atom *\fIselection\fP;
+.br
+ Atom *\fItarget\fP;
+.br
+ Atom *\fItype_return\fP;
+.br
+ XtPointer *\fIvalue_return\fP;
+.br
+ unsigned long *\fIlength_return\fP;
+.br
+ int *\fIformat_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that currently owns this selection.
+.IP \fIselection\fP 1i
+Specifies the atom naming the selection requested
+(for example,
+.PN XA_PRIMARY
+or
+.PN XA_SECONDARY ).
+.IP \fItarget\fP 1i
+Specifies the target type of the selection that has been requested,
+which indicates the desired information about the selection
+(for example, File Name, Text, Window).
+.IP \fItype_return\fP 1i
+Specifies a pointer to an atom into which the property type of the
+converted value of the selection is to be stored.
+For instance, either File Name or Text might have property type
+.PN XA_STRING .
+.IP \fIvalue_return\fP 1i
+Specifies a pointer into which a pointer to the converted value of the
+selection is to be stored.
+The selection owner is responsible for allocating this storage.
+If the selection owner has provided an
+.PN XtSelectionDoneProc
+for the selection,
+this storage is owned by the selection owner;
+otherwise, it is owned by the \*(xI selection mechanism,
+which frees it by calling
+.PN XtFree
+when it is done with it.
+.IP \fIlength_return\fP 1i
+Specifies a pointer into which the number of elements in \fIvalue_return\fP,
+each of size indicated by \fIformat_return\fP, is to be stored.
+.IP \fIformat_return\fP 1i
+Specifies a pointer into which the size in bits of the data elements
+of the selection value is to be stored.
+.LP
+.eM
+This procedure is called by the \*(xI selection mechanism
+to get the value of a selection as a given type
+from the current selection owner.
+It returns
+.PN True
+if the owner successfully converted the selection to the target type or
+.PN False
+otherwise.
+If the procedure returns
+.PN False ,
+the values of the return arguments are undefined.
+Each
+.PN XtConvertSelectionProc
+should respond to target value
+.PN TARGETS
+by returning a value containing the list of the targets
+into which it is
+prepared to convert the selection.
+The value returned in
+\fIformat_return\fP must be one of 8, 16, or 32 to allow the server to
+byte-swap the data if necessary.
+.LP
+.IN "Selections" "MULTIPLE"
+.IN "Selections" "TIMESTAMP"
+This procedure does not need to worry about responding to the
+MULTIPLE or the TIMESTAMP target values (see Section 2.6.2 in the \fI\*(xC\fP).
+A selection request with
+the MULTIPLE target type is transparently transformed into a
+series of calls to this procedure, one for each target type, and a
+selection request with the TIMESTAMP target value is answered
+automatically by the \*(xI using the time specified in the
+call to
+.PN XtOwnSelection
+or
+.PN XtOwnSelectionIncremental .
+.sp
+.LP
+To retrieve the
+.PN SelectionRequest
+event that triggered the
+.PN XtConvertSelectionProc
+procedure, use
+.PN XtGetSelectionRequest .
+.LP
+.IN "XtGetSelectionRequest" "" "@DEF@"
+.sM
+.FD 0
+XSelectionRequestEvent *XtGetSelectionRequest(\fIw\fP, \fIselection\fP, \
+\fIrequest_id\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ XtRequestId \fIrequest_id\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that currently owns this selection. \*(cI
+.IP \fIselection\fP 1i
+Specifies the selection being processed.
+.IP \fIrequest_id\fP 1i
+Specifies the requestor id in the case of incremental
+selections, or NULL in the case of atomic transfers.
+.LP
+.eM
+.PN XtGetSelectionRequest
+may be called only from within an
+.PN XtConvertSelectionProc
+procedure and returns a pointer to the
+.PN SelectionRequest
+event that caused the conversion procedure to be invoked.
+\fIRequest_id\fP specifies a unique id for the individual request in the
+case that multiple incremental transfers are outstanding. For atomic
+transfers, \fIrequest_id\fP must be specified as NULL. If no
+.PN SelectionRequest
+event is being processed for the specified
+\fIwidget\fP, \fIselection\fP, and \fIrequest_id\fP,
+.PN XtGetSelectionRequest
+returns NULL.
+.sp
+.LP
+The procedure pointer specified by the owner when it desires
+notification upon losing ownership is of type
+.PN XtLoseSelectionProc .
+.LP
+.IN "XtLoseSelectionProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtLoseSelectionProc)(Widget, Atom*);
+.br
+ Widget \fIw\fP;
+.br
+ Atom *\fIselection\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that has lost selection ownership.
+.IP \fIselection\fP 1i
+Specifies the atom naming the selection.
+.LP
+.eM
+This procedure is called by the \*(xI selection mechanism
+to inform the specified widget that it has lost the given selection.
+Note that this procedure does not ask the widget to relinquish the
+selection ownership; it is merely informative.
+.sp
+.LP
+The procedure pointer specified by the owner when it desires
+notification of receipt of the data or when it manages the storage
+containing the data is of type
+.PN XtSelectionDoneProc .
+.LP
+.IN "XtSelectionDoneProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtSelectionDoneProc)(Widget, Atom*, Atom*);
+.br
+ Widget \fIw\fP;
+.br
+ Atom *\fIselection\fP;
+.br
+ Atom *\fItarget\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that owns the converted selection.
+.IP \fIselection\fP 1i
+Specifies the atom naming the selection that was converted.
+.IP \fItarget\fP 1i
+Specifies the target type to which the conversion was done.
+.LP
+.eM
+This procedure is called by the \*(xI selection mechanism
+to inform the selection owner that a selection requestor has successfully
+retrieved a selection value.
+If the selection owner has registered an
+.PN XtSelectionDoneProc ,
+it should expect it to be called once for each conversion that it performs,
+after the converted value has been successfully transferred
+to the requestor.
+If the selection owner has registered an
+.PN XtSelectionDoneProc ,
+it also owns the storage containing the converted
+selection value.
+
+.NH 4
+Getting the Selection Value
+.XS
+\*(SN Getting the Selection Value
+.XE
+.LP
+The procedure pointer specified by the requestor to receive the
+selection data from the \*(xI is of type
+.PN XtSelectionCallbackProc .
+.LP
+.IN "XtSelectionCallbackProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtSelectionCallbackProc)(Widget, XtPointer, Atom*, Atom*, \
+XtPointer, unsigned long*, int*);
+.br
+ Widget \fIw\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ Atom *\fIselection\fP;
+.br
+ Atom *\fItype\fP;
+.br
+ XtPointer \fIvalue\fP;
+.br
+ unsigned long *\fIlength\fP;
+.br
+ int *\fIformat\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that requested the selection value.
+.IP \fIclient_data\fP 1i
+Specifies a value passed in by the widget when it requested the
+selection.
+.IP \fIselection\fP 1i
+Specifies the name of the selection that was requested.
+.IP \fItype\fP 1i
+Specifies the representation type of the selection value (for example,
+.PN XA_STRING ).
+Note that it is not the target that was requested (which the client
+must remember for itself), but the type that
+is used to represent the target.
+The special symbolic constant
+.PN XT_CONVERT_FAIL
+is used to indicate that the selection conversion failed because the
+selection owner did not respond within the \*(xI selection timeout
+interval.
+.IP \fIvalue\fP 1i
+Specifies a pointer to the selection value.
+The requesting client owns this storage and is responsible for freeing it
+by calling
+.PN XtFree
+when it is done with it.
+.IP \fIlength\fP 1i
+Specifies the number of elements in \fIvalue\fP.
+.IP \fIformat\fP 1i
+Specifies the size in bits of the data in each element of \fIvalue\fP.
+.LP
+.eM
+This procedure is called by the \*(xI selection mechanism to deliver the
+requested selection to the requestor.
+.LP
+If the
+.PN SelectionNotify
+event returns a property of
+.PN None ,
+meaning the conversion has been refused because there is no owner for the
+specified selection or the owner cannot convert the selection to the
+requested target for any reason, the procedure is called with a value
+of NULL and a length of zero.
+.sp
+.LP
+To obtain the selection value in a single logical unit, use
+.PN XtGetSelectionValue
+or
+.PN XtGetSelectionValues .
+.LP
+.IN "XtGetSelectionValue" "" "@DEF@"
+.sM
+.FD 0
+void XtGetSelectionValue(\fIw\fP, \fIselection\fP, \fItarget\fP, \
+\fIcallback\fP, \fIclient_data\fP, \fItime\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Atom \fItarget\fP;
+.br
+ XtSelectionCallbackProc \fIcallback\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the particular selection desired; for example,
+.PN XA_PRIMARY .
+.IP \fItarget\fP 1i
+Specifies the type of information needed about the selection.
+.IP \fIcallback\fP 1i
+Specifies the procedure to be called when the selection value
+has been obtained.
+Note that this is how the selection value is communicated back to the client.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the specified procedure
+when it is called.
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the selection request was
+initiated.
+This should be the timestamp of the event that triggered this request;
+the value
+.PN CurrentTime
+is not acceptable.
+.LP
+.eM
+The
+.PN XtGetSelectionValue
+function requests the value of the selection converted to
+the target type.
+The specified callback is called at some time after
+.PN XtGetSelectionValue
+is called, when the selection value is received from the X server.
+It may be called before or after
+.PN XtGetSelectionValue
+returns.
+For more information about \fIselection\fP, \fItarget\fP, and
+\fItime\fP, see Section 2.6 in the \fI\*(xC\fP.
+.sp
+.LP
+.IN "XtGetSelectionValues" "" "@DEF@"
+.sM
+.FD 0
+void XtGetSelectionValues(\fIw\fP, \fIselection\fP, \fItargets\fP, \
+\fIcount\fP, \fIcallback\fP, \fIclient_data\fP, \fItime\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Atom *\fItargets\fP;
+.br
+ int \fIcount\fP;
+.br
+ XtSelectionCallbackProc \fIcallback\fP;
+.br
+ XtPointer *\fIclient_data\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the particular selection desired (that is, primary or secondary).
+.IP \fItargets\fP 1i
+Specifies the types of information needed about the selection.
+.IP \fIcount\fP 1i
+Specifies the length of the \fItargets\fP and \fIclient_data\fP lists.
+.IP \fIcallback\fP 1i
+Specifies the callback procedure
+to be called with each selection value obtained.
+Note that this is how the selection values are communicated back to the
+client.
+.IP \fIclient_data\fP 1i
+Specifies a list of additional data values, one for each target type,
+that are passed to the callback procedure when it is called for that target.
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the selection request was
+initiated.
+This should be the timestamp of the event that triggered this request;
+the value
+.PN CurrentTime
+is not acceptable.
+.LP
+.eM
+The
+.PN XtGetSelectionValues
+function is similar to multiple calls to
+.PN XtGetSelectionValue
+except that it guarantees that no other client can assert ownership
+between requests and therefore that all the conversions will refer to
+the same selection value. The callback is invoked once for each
+target value with the corresponding client data.
+For more information about \fIselection\fP, \fItarget\fP, and
+\fItime\fP, see Section 2.6 in the \fI\*(xC\fP.
+
+.NH 4
+Setting the Selection Owner
+.XS
+\*(SN Setting the Selection Owner
+.XE
+.LP
+To set the selection owner and indicate that the selection value will
+be provided in one piece, use
+.PN XtOwnSelection .
+.LP
+.IN "XtOwnSelection" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtOwnSelection(\fIw\fP, \fIselection\fP, \fItime\fP, \
+\fIconvert_proc\fP, \fIlose_selection\fP, \fIdone_proc\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Time \fItime\fP;
+.br
+ XtConvertSelectionProc \fIconvert_proc\fP;
+.br
+ XtLoseSelectionProc \fIlose_selection\fP;
+.br
+ XtSelectionDoneProc \fIdone_proc\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that wishes to become the owner. \*(cI
+.IP \fIselection\fP 1i
+Specifies the name of the selection (for example,
+.PN XA_PRIMARY ).
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the ownership request was
+initiated.
+This should be the timestamp of the event that triggered ownership;
+the value
+.PN CurrentTime
+is not acceptable.
+.IP \fIconvert_proc\fP 1i
+Specifies the procedure to be called whenever a client requests the
+current value of the selection.
+.IP \fIlose_selection\fP 1i
+Specifies the procedure to be called whenever the widget has
+lost selection ownership, or NULL if the owner is not interested in being
+called back.
+.IP \fIdone_proc\fP 1i
+Specifies the procedure called
+after the requestor has received the selection value, or NULL if the
+owner is not
+interested in being called back.
+.LP
+.eM
+The
+.PN XtOwnSelection
+function informs the \*(xI selection mechanism that a
+widget wishes to own a selection.
+It returns
+.PN True
+if the widget successfully becomes the owner and
+.PN False
+otherwise.
+The widget may fail to become the owner if some other widget
+has asserted ownership at a time later than this widget.
+The widget can lose selection ownership either
+because some other widget asserted later ownership of the selection
+or because the widget voluntarily gave up ownership of the selection.
+The lose_selection procedure is not called
+if the widget fails to obtain selection ownership in the first place.
+.LP
+If a done_proc is specified, the client owns the storage allocated
+for passing the value to the \*(xI. If \fIdone_proc\fP is NULL,
+the convert_proc must allocate storage using
+.PN XtMalloc ,
+.PN XtRealloc ,
+or
+.PN XtCalloc ,
+and the value specified is freed by the
+\*(xI when the transfer is complete.
+.sp
+.LP
+Usually, a selection owner maintains ownership indefinitely until some
+other widget requests ownership, at which time
+the \*(xI selection mechanism informs the previous owner that it
+has lost ownership of the selection.
+However, in response to some user actions
+(for example, when a user deletes the information selected),
+the application may wish to explicitly inform the \*(xI
+by using
+.PN XtDisownSelection
+that it no longer is to be the selection owner.
+.LP
+.IN "XtDisownSelection" "" "@DEF@"
+.sM
+.FD 0
+void XtDisownSelection(\fIw\fP, \fIselection\fP, \fItime\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that wishes to relinquish ownership.
+.IP \fIselection\fP 1i
+Specifies the atom naming the selection being given up.
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the request to
+relinquish selection ownership was initiated.
+.LP
+.eM
+The
+.PN XtDisownSelection
+function informs the \*(xI selection mechanism that
+the specified widget is to lose ownership of the selection.
+If the widget does not currently own the selection, either
+because it lost the selection
+or because it never had the selection to begin with,
+.PN XtDisownSelection
+does nothing.
+.LP
+After a widget has called
+.PN XtDisownSelection ,
+its convert procedure is not called even if a request arrives later
+with a timestamp during the period that this widget owned the selection.
+However, its done procedure is called if a conversion that started
+before the call to
+.PN XtDisownSelection
+finishes after the call to
+.PN XtDisownSelection .
+
+.NH 3
+Using Incremental Transfers
+.XS
+\*(SN Using Incremental Transfers
+.XE
+.LP
+When using the incremental interface, an owner may have to process
+more than one selection request for the same selection, converted to
+the same target, at the same time. The incremental functions take a
+\fIrequest_id\fP argument, which is an identifier that is guaranteed to be
+unique among all incremental requests that are active concurrently.
+.LP
+For example, consider the following:
+.IP \(bu 5
+Upon receiving a request for the selection value, the owner sends
+the first segment.
+.IP \(bu 5
+While waiting to be called to provide the next segment value but
+before sending it, the owner receives another request from a
+different requestor for the same selection value.
+.IP \(bu 5
+To distinguish between the requests, the owner uses the request_id
+value. This allows the owner to distinguish between the first
+requestor, which is asking for the second segment, and the second
+requestor, which is asking for the first segment.
+
+.NH 4
+Incremental Transfer Procedures
+.XS
+\*(SN Incremental Transfer Procedures
+.XE
+.IN "Selections" "incremental"
+.LP
+The following procedures are used by selection owners who wish to
+provide the selection data in multiple segments.
+.LP
+The procedure pointer specified by the incremental owner to supply the
+selection data to the \*(xI is of type
+.PN XtConvertSelectionIncrProc .
+.LP
+.sM
+.Ds 0
+typedef XtPointer XtRequestId;
+.De
+.IN "XtRequestId" "" "@DEF@"
+.IN "XtConvertSelectionIncrProc" "" "@DEF@"
+.FD 0
+typedef Boolean (*XtConvertSelectionIncrProc)(Widget, Atom*, Atom*, \
+Atom*, XtPointer*,
+ unsigned long*, int*, unsigned long*, \
+XtPointer, XtRequestId*);
+.br
+ Widget \fIw\fP;
+.br
+ Atom *\fIselection\fP;
+.br
+ Atom *\fItarget\fP;
+.br
+ Atom *\fItype_return\fP;
+.br
+ XtPointer *\fIvalue_return\fP;
+.br
+ unsigned long *\fIlength_return\fP;
+.br
+ int *\fIformat_return\fP;
+.br
+ unsigned long *\fImax_length\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ XtRequestId *\fIrequest_id\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that currently owns this selection.
+.IP \fIselection\fP 1i
+Specifies the atom that names the selection requested.
+.IP \fItarget\fP 1i
+Specifies the type of information required about the selection.
+.IP \fItype_return\fP 1i
+Specifies a pointer to an atom into which the property
+type of the converted value of the selection is to be
+stored.
+.IP \fIvalue_return\fP 1i
+Specifies a pointer into which a pointer to the
+converted value of the selection is to be stored.
+The selection owner is responsible for allocating this storage.
+.IP \fIlength_return\fP 1i
+Specifies a pointer into which the number of elements
+in \fIvalue_return\fP, each of size indicated by
+\fIformat_return\fP, is to be stored.
+.IP \fIformat_return\fP 1i
+Specifies a pointer into which the size in bits of the
+data elements of the selection value is to be stored so that the
+server may byte-swap the data if necessary.
+.IP \fImax_length\fP 1i
+Specifies the maximum number of bytes which may be
+transferred at any one time.
+.IP \fIclient_data\fP 1i
+Specifies the value passed in by the widget when it
+took ownership of the selection.
+.IP \fIrequest_id\fP 1i
+Specifies an opaque identification for a specific request.
+.LP
+.eM
+This procedure is called repeatedly by the \*(xI selection mechanism to get
+the next incremental chunk of data from a selection owner who has
+called
+.PN XtOwnSelectionIncremental .
+It must return
+.PN True
+if the procedure has succeeded in converting the selection data or
+.PN False
+otherwise.
+On the first call with a particular request id, the owner must begin
+a new incremental transfer for the requested selection and target. On
+subsequent calls with the same request id, the owner may assume that
+the previously supplied value is no longer needed by the \*(xI;
+that is, a fixed transfer area may be allocated and returned in \fIvalue_return\fP
+for each segment to be transferred. This procedure should store a
+non-NULL value in \fIvalue_return\fP and zero in \fIlength_return\fP to indicate that the
+entire selection has been delivered. After returning this final
+segment, the request id may be reused by the \*(xI to begin a
+new transfer.
+.LP
+To retrieve the
+.PN SelectionRequest
+event that triggered the selection conversion procedure, use
+.PN XtGetSelectionRequest ,
+described in Section 11.5.2.1.
+.sp
+.LP
+The procedure pointer specified by the incremental selection owner
+when it desires notification upon no longer having ownership is of
+type
+.PN XtLoseSelectionIncrProc .
+.LP
+.IN "XtLoseSelectionIncrProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtLoseSelectionIncrProc)(Widget, Atom*, XtPointer);
+.br
+ Widget \fIw\fP;
+.br
+ Atom *\fIselection\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that has lost the selection ownership.
+.IP \fIselection\fP 1i
+Specifies the atom that names the selection.
+.IP \fIclient_data\fP 1i
+Specifies the value passed in by the widget when it
+took ownership of the selection.
+.LP
+.eM
+This procedure, which is optional, is called by the \*(xI to
+inform the selection owner that it no longer owns the selection.
+.sp
+.LP
+The procedure pointer specified by the incremental selection owner
+when it desires notification of receipt of the data or when it manages
+the storage containing the data is of type
+.PN XtSelectionDoneIncrProc .
+.LP
+.IN "XtSelectionDoneIncrProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtSelectionDoneIncrProc)(Widget, Atom*, Atom*, \
+XtRequestId*, XtPointer);
+.br
+ Widget \fIw\fP;
+.br
+ Atom *\fIselection\fP;
+.br
+ Atom *\fItarget\fP;
+.br
+ XtRequestId *\fIrequest_id\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that owns the selection.
+.IP \fIselection\fP 1i
+Specifies the atom that names the selection being transferred.
+.IP \fItarget\fP 1i
+Specifies the target type to which the conversion was done.
+.IP \fIrequest_id\fP 1i
+Specifies an opaque identification for a specific request.
+.IP \fIclient_data\fP 1i
+Specified the value passed in by the widget when it
+took ownership of the selection.
+.LP
+.eM
+This procedure, which is optional, is called by the \*(xI after
+the requestor has retrieved the final (zero-length) segment of the
+incremental transfer to indicate that the entire transfer is complete.
+If this procedure is not specified, the \*(xI will free only the
+final value returned by the selection owner using
+.PN XtFree .
+.sp
+.LP
+The procedure pointer specified by the incremental selection owner to
+notify it if a transfer should be terminated prematurely is of type
+.PN XtCancelConvertSelectionProc .
+.LP
+.IN "XtCancelConvertSelectionProc" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtCancelConvertSelectionProc)(Widget, Atom*, Atom*, \
+XtRequestId*, XtPointer);
+.br
+ Widget \fIw\fP;
+.br
+ Atom *\fIselection\fP;
+.br
+ Atom *\fItarget\fP;
+.br
+ XtRequestId *\fIrequest_id\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget that owns the selection.
+.IP \fIselection\fP 1i
+Specifies the atom that names the selection being transferred.
+.IP \fItarget\fP 1i
+Specifies the target type to which the conversion was done.
+.IP \fIrequest_id\fP 1i
+Specifies an opaque identification for a specific request.
+.IP \fIclient_data\fP 1i
+Specifies the value passed in by the widget when it took ownership of
+the selection.
+.LP
+.eM
+This procedure is called by the \*(xI when it has been determined
+by means of a timeout or other mechanism that any remaining segments
+of the selection no longer need to be transferred. Upon receiving
+this callback, the selection request is considered complete and the
+owner can free the memory and any other resources that have been
+allocated for the transfer.
+
+.NH 4
+Getting the Selection Value Incrementally
+.XS
+\*(SN Getting the Selection Value Incrementally
+.XE
+.LP
+To obtain the value of the selection using incremental transfers, use
+.PN XtGetSelectionValueIncremental
+or
+.PN XtGetSelectionValuesIncremental .
+.LP
+.IN "XtGetSelectionValueIncremental" "" "@DEF@"
+.sM
+.FD 0
+void XtGetSelectionValueIncremental(\fIw\fP, \fIselection\fP, \fItarget\fP, \
+\fIselection_callback\fP, \fIclient_data\fP, \fItime\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Atom \fItarget\fP;
+.br
+ XtSelectionCallbackProc \fIselection_callback\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the particular selection desired.
+.IP \fItarget\fP 1i
+Specifies the type of information needed
+about the selection.
+.IP \fIselection_callback\fP 1i
+Specifies the callback procedure to be
+called to receive each data segment.
+.IP \fIclient_data\fP 1i
+Specifies client-specific data to be passed to
+the specified callback procedure when it is invoked.
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the
+selection request was initiated. This should be the
+timestamp of the event that triggered this request;
+the value
+.PN CurrentTime
+is not acceptable.
+.LP
+.eM
+The
+.PN XtGetSelectionValueIncremental
+function is similar to
+.PN XtGetSelectionValue
+except that the selection_callback procedure will
+be called repeatedly upon delivery of multiple segments of the
+selection value. The end of the selection value is indicated when
+\fIselection_callback\fP is called with a non-NULL value of length zero,
+which must still be freed by the client. If the
+transfer of the selection is aborted in the middle of a transfer
+(for example, because of a timeout), the selection_callback procedure is
+called with a type value equal to the symbolic constant
+.PN XT_CONVERT_FAIL
+so that the requestor can dispose
+of the partial selection value it has collected up until that point.
+Upon receiving
+.PN XT_CONVERT_FAIL ,
+the requesting client must determine
+for itself whether or not a partially completed data transfer is meaningful.
+For more information about \fIselection\fP, \fItarget\fP, and
+\fItime\fP, see Section 2.6 in the \fI\*(xC\fP.
+.LP
+.IN "XtGetSelectionValuesIncremental" "" "@DEF@"
+.sM
+.FD 0
+void XtGetSelectionValuesIncremental(\fIw\fP, \fIselection\fP, \fItargets\fP, \
+\fIcount\fP, \fIselection_callback\fP, \fIclient_data\fP, \fItime\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Atom *\fItargets\fP;
+.br
+ int \fIcount\fP;
+.br
+ XtSelectionCallbackProc \fIselection_callback\fP;
+.br
+ XtPointer *\fIclient_data\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the particular selection desired.
+.IP \fItargets\fP 1i
+Specifies the types of information needed about
+the selection.
+.IP \fIcount\fP 1i
+Specifies the length of the \fItargets\fP and \fIclient_data\fP lists.
+.IP \fIselection_callback\fP 1i
+Specifies the callback procedure to be called
+to receive each selection value.
+.IP \fIclient_data\fP 1i
+Specifies a list of client data (one for each target
+type) values that are passed to the callback procedure when
+it is invoked for the corresponding target.
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the
+selection request was initiated. This should be the
+timestamp of the event that triggered this request;
+the value
+.PN CurrentTime
+is not acceptable.
+.LP
+.eM
+The
+.PN XtGetSelectionValuesIncremental
+function is similar to
+.PN XtGetSelectionValueIncremental
+except that it takes a list of targets and client data.
+.PN XtGetSelectionValuesIncremental
+is equivalent to calling
+.PN XtGetSelectionValueIncremental
+successively for each \fItarget/client_data\fP pair except that
+.PN XtGetSelectionValuesIncremental
+does guarantee that all the conversions will use the same selection
+value because the ownership of the selection cannot change in the
+middle of the list, as would be possible when calling
+.PN XtGetSelectionValueIncremental
+repeatedly.
+For more information about \fIselection\fP, \fItarget\fP, and
+\fItime\fP, see Section 2.6 in the \fI\*(xC\fP.
+
+.NH 4
+Setting the Selection Owner for Incremental Transfers
+.XS
+\*(SN Setting the Selection Owner for Incremental Transfers
+.XE
+.LP
+To set the selection owner when using incremental transfers, use
+.PN XtOwnSelectionIncremental .
+.LP
+.IN "XtOwnSelectionIncremental" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtOwnSelectionIncremental(\fIw\fP, \fIselection\fP, \fItime\fP, \
+\fIconvert_callback\fP, \fIlose_callback\fP,
+ \fIdone_callback\fP, \
+\fIcancel_callback\fP, \fIclient_data\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Time \fItime\fP;
+.br
+ XtConvertSelectionIncrProc \fIconvert_callback\fP;
+.br
+ XtLoseSelectionIncrProc \fIlose_callback\fP;
+.br
+ XtSelectionDoneIncrProc \fIdone_callback\fP;
+.br
+ XtCancelConvertSelectionProc \fIcancel_callback\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIw\fP 1.25i
+Specifies the widget that wishes to become the owner. \*(cI
+.IP \fIselection\fP 1.25i
+Specifies the atom that names the selection.
+.IP \fItime\fP 1.25i
+Specifies the timestamp that indicates when the
+selection ownership request was initiated. This should be
+the timestamp of the event that triggered ownership; the value
+.PN CurrentTime
+is not acceptable.
+.IP \fIconvert_callback\fP 1.25i
+Specifies the procedure to be called whenever
+the current value of the selection is requested.
+.IP \fIlose_callback\fP 1.25i
+Specifies the procedure to be called whenever
+the widget has lost selection ownership, or NULL if the
+owner is not interested in being notified.
+.IP \fIdone_callback\fP 1.25i
+Specifies the procedure called after the
+requestor has received the entire selection, or NULL if
+the owner is not interested in being notified.
+.IP \fIcancel_callback\fP 1.25i
+Specifies the callback procedure to be called
+when a selection request aborts because a timeout expires,
+or NULL if the owner is not interested in being notified.
+.IP \fIclient_data\fP 1.25i
+Specifies the argument to be passed to each of
+the callback procedures when they are called.
+.LP
+.eM
+The
+.PN XtOwnSelectionIncremental
+procedure informs the \*(xI
+incremental selection mechanism that the specified widget wishes to
+own the selection. It returns
+.PN True
+if the specified widget successfully becomes the selection owner or
+.PN False
+otherwise.
+For more information about \fIselection\fP, \fItarget\fP, and
+\fItime\fP, see Section 2.6 in the \fI\*(xC\fP.
+.LP
+If a done_callback procedure is specified, the client owns the storage allocated
+for passing the value to the \*(xI. If \fIdone_callback\fP is NULL,
+the convert_callback procedure must allocate storage using
+.PN XtMalloc ,
+.PN XtRealloc ,
+or
+.PN XtCalloc ,
+and the final value specified is freed by the
+\*(xI when the transfer is complete. After a selection transfer
+has started, only one of the done_callback or cancel_callback
+procedures is invoked to indicate completion of the transfer.
+.LP
+The lose_callback procedure does not indicate completion of any in-progress
+transfers; it is invoked at the time a
+.PN SelectionClear
+event is dispatched regardless of any active transfers, which are still
+expected to continue.
+.LP
+A widget that becomes the selection owner using
+.PN XtOwnSelectionIncremental
+may use
+.PN XtDisownSelection
+to relinquish selection ownership.
+
+.NH 3
+Setting and Retrieving Selection Target Parameters
+.XS
+\*(SN Setting and Retrieving Selection Target Parameters
+.XE
+.LP
+To specify target parameters for a selection request with a single target,
+use
+.PN XtSetSelectionParameters .
+.LP
+.IN "XtSetSelectionParameters" "" "@DEF@"
+.sM
+.FD 0
+void XtSetSelectionParameters(\fIrequestor\fP, \fIselection\fP, \fItype\fP, \
+\fIvalue\fP, \fIlength\fP, \fIformat\fP)
+.br
+ Widget \fIrequestor\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Atom \fItype\fP;
+.br
+ XtPointer \fIvalue\fP;
+.br
+ unsigned long \fIlength\fP;
+.br
+ int \fIformat\fP;
+.FN
+.IP \fIrequestor\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the atom that names the selection.
+.IP \fItype\fP 1i
+Specifies the type of the property in which the parameters are passed.
+.IP \fIvalue\fP 1i
+Specifies a pointer to the parameters.
+.IP \fIlength\fP 1i
+Specifies the number of elements containing data in \fIvalue\fP,
+each element of a size indicated by \fIformat\fP.
+.IP \fIformat\fP 1i
+Specifies the size in bits of the data in the elements of \fIvalue\fP.
+.LP
+The specified parameters are copied and stored in a new property
+of the specified type and format on the requestor's window. To initiate
+a selection request with a target and these parameters, a subsequent
+call to
+.PN XtGetSelectionValue
+or to
+.PN XtGetSelectionValueIncremental
+specifying the same requestor widget and selection atom will generate a
+.PN ConvertSelection
+request referring to the property containing the parameters. If
+.PN XtSetSelectionParameters
+is called more than once with the same widget and selection without
+a call to specify a request, the most recently specified parameters
+are used in the subsequent request.
+.LP
+.eM
+The possible values of \fIformat\fP are 8, 16, or 32. If the format is 8,
+the elements of \fIvalue\fP are assumed to be sizeof(char);
+if 16, sizeof(short); if 32, sizeof(long).
+.LP
+To generate a MULTIPLE
+target request with parameters for any of the multiple targets of the
+selection request, precede individual calls to
+.PN XtGetSelectionValue
+and
+.PN XtGetSelectionValueIncremental
+with corresponding individual calls to
+.PN XtSetSelectionParameters ,
+and enclose these all within
+.PN XtCreateSelectionRequest
+and
+.PN XtSendSelectionRequest.
+.PN XtGetSelectionValues
+and
+.PN XtGetSelectionValuesIncremental
+cannot be used to make selection requests with parameterized targets.
+.sp
+.LP
+To retrieve any target parameters needed to perform a selection conversion,
+the selection owner calls
+.PN XtGetSelectionParameters .
+.LP
+.IN "XtGetSelectionParameters" "" "@DEF@"
+.sM
+.FD 0
+void XtGetSelectionParameters(\fIowner\fP, \fIselection\fP, \
+\fIrequest_id\fP, \fItype_return\fP, \fIvalue_return\fP,
+ \fIlength_return\fP, \
+\fIformat_return\fP)
+.br
+ Widget \fIowner\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ XtRequestId \fIrequest_id\fP;
+.br
+ Atom *\fItype_return\fP;
+.br
+ XtPointer *\fIvalue_return\fP;
+.br
+ unsigned long *\fIlength_return\fP;
+.br
+ int *\fIformat_return\fP;
+.FN
+.IP \fIowner\fP 1i
+Specifies the widget that owns the specified selection.
+.IP \fIselection\fP 1i
+Specifies the selection being processed.
+.IP \fIrequest_id\fP 1i
+Specifies the requestor id in the case of incremental selections,
+or NULL in the case of atomic transfers.
+.IP \fItype_return\fP 1i
+Specifies a pointer to an atom in which the property type
+of the parameters is stored.
+.IP \fIvalue_return\fP 1i
+Specifies a pointer into which a pointer to the parameters is to be stored.
+A NULL is stored if no parameters accompany the request.
+.IP \fIlength_return\fP 1i
+Specifies a pointer into which the number of data elements
+in \fIvalue_return\fP of size indicated by \fIformat_return\fP are stored.
+.IP \fIformat_return\fP 1i
+Specifies a pointer into which the size in bits of the parameter data
+in the elements of \fIvalue\fP is stored.
+.LP
+.eM
+.PN XtGetSelectionParameters
+may be called only from within an
+.PN XtConvertSelectionProc
+or from within the first call to an
+.PN XtConvertSelectionIncrProc
+with a new request_id.
+.LP
+It is the responsibility of the caller to free the returned parameters using
+.PN XtFree
+when the parameters are no longer needed.
+
+.NH 3
+Generating MULTIPLE Requests
+.XS
+\*(SN Generating MULTIPLE Requests
+.XE
+.LP
+To have the \*(xI bundle multiple calls to make selection requests into
+a single request using a \s-1MULTIPLE\s+1 target, use
+.PN XtCreateSelectionRequest
+and
+.PN XtSendSelectionRequest .
+.LP
+.IN "XtCreateSelectionRequest" "" "@DEF@"
+.sM
+.FD 0
+void XtCreateSelectionRequest(\fIrequestor\fP, \fIselection\fP)
+.br
+ Widget \fIrequestor\fP;
+.br
+ Atom \fIselection\fP;
+.FN
+.IP \fIrequestor\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the particular selection desired.
+.LP
+.eM
+When
+.PN XtCreateSelectionRequest
+is called, subsequent calls to
+.PN XtGetSelectionValue ,
+.PN XtGetSelectionValueIncremental ,
+.PN XtGetSelectionValues ,
+and
+.PN XtGetSelectionValuesIncremental ,
+with the requestor and selection as specified to
+.PN XtCreateSelectionRequest ,
+are bundled into a single selection request with
+multiple targets. The request is made by calling
+.PN XtSendSelectionRequest .
+.LP
+.IN "XtSendSelectionRequest" "" "@DEF@"
+.sM
+.FD 0
+void XtSendSelectionRequest(\fIrequestor\fP, \fIselection\fP, \fItime\fP)
+.br
+ Widget \fIrequestor\fP;
+.br
+ Atom \fIselection\fP;
+.br
+ Time \fItime\fP;
+.FN
+.IP \fIrequestor\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the particular selection desired.
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the selection request was
+initiated. The value
+.PN CurrentTime
+is not acceptable.
+.LP
+.eM
+When
+.PN XtSendSelectionRequest
+is called with a value of \fIrequestor\fP and \fIselection\fP matching
+a previous call to
+.PN XtCreateSelectionRequest ,
+a selection request is sent to the selection owner.
+If a single target request is queued, that request is made.
+If multiple targets are queued, they are bundled into a single request
+with a target of MULTIPLE using the specified timestamp.
+As the values are returned, the callbacks specified in
+.PN XtGetSelectionValue ,
+.PN XtGetSelectionValueIncremental ,
+.PN XtGetSelectionValues ,
+and
+.PN XtGetSelectionValueIncremental
+are invoked.
+.LP
+Multi-threaded applications should lock the application context before
+calling
+.PN XtCreateSelectionRequest
+and release the lock after calling
+.PN XtSendSelectionRequest
+to ensure that the thread assembling the request is safe from interference
+by another thread assembling a different request naming the same widget
+and selection.
+.sp
+.LP
+To relinquish the composition of a MULTIPLE request without sending it, use
+.PN XtCancelSelectionRequest .
+.LP
+.IN "XtCancelSelectionRequest" "" "@DEF@"
+.sM
+.FD 0
+void XtCancelSelectionRequest(\fIrequestor\fP, \fIselection\fP)
+.br
+ Widget \fIrequestor\fP;
+.br
+ Atom \fIselection\fP;
+.FN
+.IP \fIrequestor\fP 1i
+Specifies the widget making the request. \*(cI
+.IP \fIselection\fP 1i
+Specifies the particular selection desired.
+.LP
+.eM
+When
+.PN XtCancelSelectionRequest
+is called, any requests queued since the last call to
+.PN XtCreateSelectionRequest
+for the same widget and selection are discarded
+and any resources reserved are released.
+A subsequent call to
+.PN XtSendSelectionRequest
+will not result in any request being made.
+Subsequent calls to
+.PN XtGetSelectionValue ,
+.PN XtGetSelectionValues ,
+.PN XtGetSelectionValueIncremental ,
+or
+.PN XtGetSelectionValuesIncremental
+will not be deferred.
+
+.NH 3
+Auxiliary Selection Properties
+.XS
+\*(SN Auxiliary Selection Properties
+.XE
+.LP
+Certain uses of parameterized selections require clients to name
+other window properties within a selection parameter. To permit
+reuse of temporary property names in these circumstances and
+thereby reduce the number of unique atoms created in the server,
+the \*(xI provides two interfaces for acquiring temporary property names.
+.LP
+To acquire a temporary property name atom for use in a selection
+request, the client may call
+.PN XtReservePropertyAtom .
+.LP
+.IN "XtReservePropertyAtom" "" "@DEF@"
+.sM
+.FD 0
+Atom XtReservePropertyAtom(\fIw\fP)
+.br
+ Widget \fIw\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget making a selection request.
+.LP
+.eM
+.PN XtReservePropertyAtom
+returns an atom that may be used as a property name during selection
+requests involving the specified widget.
+As long as the atom remains reserved, it is unique with respect to all
+other reserved atoms for the widget.
+.LP
+To return a temporary property name atom for reuse and to delete
+the property named by that atom, use
+.PN XtReleasePropertyAtom .
+.LP
+.IN "XtReleasePropertyAtom" "" "@DEF@"
+.sM
+.FD 0
+void XtReleasePropertyAtom(\fIw\fP, \fIatom\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Atom \fIatom\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget used to reserve the property name atom.
+.IP \fIatom\fP 1i
+Specifies the property name atom returned by
+.PN XtReservePropertyAtom
+that is to be released for reuse.
+.LP
+.eM
+.PN XtReleasePropertyAtom
+marks the specified property name atom as
+no longer in use and ensures that any property having that name
+on the specified widget's window is deleted. If \fIatom\fP does not
+specify a value returned by
+.PN XtReservePropertyAtom
+for the specified widget, the results are undefined.
+
+.NH 3
+Retrieving the Most Recent Timestamp
+.XS
+\*(SN Retrieving the Most Recent Timestamp
+.XE
+.LP
+To retrieve the timestamp from the most recent call to
+.PN XtDispatchEvent
+that contained a timestamp, use
+.PN XtLastTimestampProcessed .
+.LP
+.IN "XtLastTimestampProcessed" "" "@DEF@"
+.sM
+.FD 0
+Time XtLastTimestampProcessed(\fIdisplay\fP)
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies an open display connection.
+.LP
+.eM
+If no
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN MotionNotify ,
+.PN EnterNotify ,
+.PN LeaveNotify ,
+.PN PropertyNotify ,
+or
+.PN SelectionClear
+event has yet been passed to
+.PN XtDispatchEvent
+for the specified display,
+.PN XtLastTimestampProcessed
+returns zero.
+
+.NH 3
+Retrieving the Most Recent Event
+.XS
+\*(SN Retrieving the Most Recent Event
+.XE
+.LP
+To retrieve the event from the most recent call to
+.PN XtDispatchEvent
+for a specific display, use
+.PN XtLastEventProcessed .
+.LP
+.IN "XtLastEventProcessed" "" "@DEF@"
+.sM
+.FD 0
+XEvent *XtLastEventProcessed(\fIdisplay\fP)
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display connection from which to retrieve the event.
+.LP
+.eM
+Returns the last event passed to
+.PN XtDispatchEvent
+for the specified display. Returns NULL if there is no such event.
+The client must not modify the contents of the returned event.
+
+.NH 2
+Merging Exposure Events into a Region
+.XS
+\*(SN Merging Exposure Events into a Region
+.XE
+.LP
+The \*(xI provide an
+.PN XtAddExposureToRegion
+utility function that merges
+.PN Expose
+and
+.PN GraphicsExpose
+events into a region for clients to process at once
+rather than processing individual rectangles.
+For further information about regions,
+see Section 16.5 in \fI\*(xL\fP.
+.sp
+.LP
+To merge
+.PN Expose
+and
+.PN GraphicsExpose
+events into a region, use
+.PN XtAddExposureToRegion .
+.LP
+.IN "XtAddExposureToRegion" "" "@DEF@"
+.sM
+.FD 0
+void XtAddExposureToRegion(\fIevent\fP, \fIregion\fP)
+.br
+ XEvent *\fIevent\fP;
+.br
+ Region \fIregion\fP;
+.FN
+.IP \fIevent\fP 1i
+Specifies a pointer to the
+.PN Expose
+or
+.PN GraphicsExpose
+event.
+.IP \fIregion\fP 1i
+Specifies the region object (as defined in
+.Pn < X11/Xutil.h >).
+.LP
+.eM
+The
+.PN XtAddExposureToRegion
+function computes the union of the rectangle defined by the exposure
+event and the specified region.
+Then it stores the results back in \fIregion\fP.
+If the event argument is not an
+.PN Expose
+or
+.PN GraphicsExpose
+event,
+.PN XtAddExposureToRegion
+returns without an error and without modifying \fIregion\fP.
+.LP
+This function is used by the exposure compression mechanism;
+see Section 7.9.3.
+
+.NH 2
+Translating Widget Coordinates
+.XS
+\fB\*(SN Translating Widget Coordinates\fP
+.XE
+.LP
+To translate an x-y coordinate pair from widget coordinates to root
+window absolute coordinates, use
+.PN XtTranslateCoords .
+.LP
+.IN "XtTranslateCoords" "" "@DEF@"
+.sM
+.FD 0
+void XtTranslateCoords(\fIw\fP, \fIx\fP, \fIy\fP, \fIrootx_return\fP, \
+\fIrooty_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ Position \fIx\fP, \fIy\fP;
+.br
+ Position *\fIrootx_return\fP, *\fIrooty_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget. \*(rI
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the widget-relative x and y coordinates.
+.IP \fIrootx_return\fP 1i
+.br
+.ns
+.IP \fIrooty_return\fP 1i
+Return the root-relative x and y coordinates.
+.LP
+.eM
+While
+.PN XtTranslateCoords
+is similar to the Xlib
+.PN XTranslateCoordinates
+function, it does not generate a server request because all the required
+information already is in the widget's data structures.
+
+.NH 2
+Translating a Window to a Widget
+.XS
+\fB\*(SN Translating a Window to a Widget\fP
+.XE
+.LP
+To translate a given window and display pointer into a widget instance, use
+.PN XtWindowToWidget .
+.LP
+.IN "XtWindowToWidget" "" "@DEF@"
+.sM
+.FD 0
+Widget XtWindowToWidget(\fIdisplay\fP, \fIwindow\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ Window \fIwindow\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the display on which the window is defined.
+.IP \fIwindow\fP 1i
+Specifies the drawable for which you want the widget.
+.LP
+.eM
+If there is a realized widget whose window is the specified drawable on
+the specified \fIdisplay\fP,
+.PN XtWindowToWidget
+returns that widget.
+If not and if the drawable has been associated with a widget through
+.PN XtRegisterDrawable ,
+.PN XtWindowToWidget
+returns the widget associated with the drawable. In other cases it
+returns NULL.
+
+.NH 2
+Handling Errors
+.XS
+\fB\*(SN Handling Errors\fP
+.XE
+.LP
+The \*(xI allow a client to register procedures that are called
+whenever a fatal or nonfatal error occurs.
+These facilities are intended for both error reporting and logging
+and for error correction or recovery.
+.LP
+Two levels of interface are provided:
+.IP \(bu 5
+A high-level interface that takes an error
+name and class and retrieves the error message text from
+an error resource database.
+.IP \(bu 5
+A low-level interface that takes a simple string to display.
+.LP
+The high-level functions construct a string to pass to the lower-level
+interface.
+The strings may be specified in application code and are
+overridden by the contents of an external systemwide file,
+the ``error database file''. The location and name of this file are
+implementation-dependent.
+.NT
+The application-context-specific error handling is not
+implemented on many systems, although the interfaces are
+always present.
+Most implementations will have just one set of error handlers
+for all application contexts within a process.
+If they are set for different application contexts,
+the ones registered last will prevail.
+.NE
+.sp
+.LP
+To obtain the error database (for example, to merge with
+an application- or widget-specific database), use
+.PN XtAppGetErrorDatabase .
+.LP
+.IN "XtAppGetErrorDatabase" "" "@DEF@"
+.sM
+.FD 0
+XrmDatabase *XtAppGetErrorDatabase(\^\fIapp_context\fP\^)
+.br
+ XtAppContext \fIapp_context\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.LP
+.eM
+The
+.PN XtAppGetErrorDatabase
+function returns the address of the error database.
+The \*(xI do a lazy binding of the error database and do not merge in the
+database file until the first call to
+.PN XtAppGetErrorDatabaseText .
+.LP
+For a complete listing of all errors and warnings
+that can be generated by the \*(xI, see Appendix D.
+.sp
+.LP
+The high-level error and warning handler procedure pointers are of type
+.PN XtErrorMsgHandler .
+.LP
+.IN "XtErrorMsgHandler" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtErrorMsgHandler)(String, String, String, String, \
+String*, Cardinal*);
+.br
+ String \fIname\fP;
+.br
+ String \fItype\fP;
+.br
+ String \fIclass\fP;
+.br
+ String \fIdefaultp\fP;
+.br
+ String *\fIparams\fP;
+.br
+ Cardinal *\fInum_params\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the name to be concatenated with the specified type to form
+the resource name of the error message.
+.IP \fItype\fP 1i
+Specifies the type to be concatenated with the name to form the
+resource name of the error message.
+.IP \fIclass\fP 1i
+Specifies the resource class of the error message.
+.IP \fIdefaultp\fP 1i
+Specifies the default message to use if no error database entry is found.
+.IP \fIparams\fP 1i
+Specifies a pointer to a list of parameters to be substituted in the message.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.LP
+.eM
+The specified name can be a general kind of error,
+like ``invalidParameters'' or ``invalidWindow'',
+and the specified type gives extra information
+such as the name of the routine in which the error was detected.
+Standard
+.PN printf
+notation is used to substitute the parameters into the message.
+.sp
+.LP
+An error message handler can obtain the error database text for an
+error or a warning by calling
+.PN XtAppGetErrorDatabaseText .
+.LP
+.IN "XtAppGetErrorDatabaseText" "" "@DEF@"
+.sM
+.FD 0
+void XtAppGetErrorDatabaseText(\fIapp_context\fP, \fIname\fP, \fItype\fP, \fIclass\fP, \fIdefault\fP, \fIbuffer_return\fP, \fInbytes\fP, \fIdatabase\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fIname\fP, \fItype\fP, \fIclass\fP;
+.br
+ String \fIdefault\fP;
+.br
+ String \fIbuffer_return\fP;
+.br
+ int \fInbytes\fP;
+.br
+ XrmDatabase \fIdatabase\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIname\fP 1i
+.br
+.ns
+.IP \fItype\fP 1i
+Specify the name and type concatenated to form the resource name
+of the error message.
+.IP \fIclass\fP 1i
+Specifies the resource class of the error message.
+.IP \fIdefault\fP 1i
+Specifies the default message to use if an error database entry is not found.
+.IP \fIbuffer_return\fP 1i
+Specifies the buffer into which the error message is to be returned.
+.IP \fInbytes\fP 1i
+Specifies the size of the buffer in bytes.
+.IP \fIdatabase\fP 1i
+Specifies the name of the alternative database to be used,
+or NULL if the application context's error database is to be used.
+.LP
+.eM
+The
+.PN XtAppGetErrorDatabaseText
+returns the appropriate message from the error database
+or returns the specified default message if one is not found in the
+error database.
+To form the full resource name and class when querying the database,
+the \fIname\fP and \fItype\fP are concatenated with a single ``.''
+between them and the \fIclass\fP is concatenated with itself with a
+single ``.'' if it does not already contain a ``.''.
+.sp
+.LP
+To return the application name and class as passed to
+.PN XtDisplayInitialize
+for a particular Display, use
+.PN XtGetApplicationNameAndClass .
+.LP
+.IN "XtGetApplicationNameAndClass" "" "@DEF@"
+.sM
+.FD 0
+void XtGetApplicationNameAndClass(\fIdisplay\fP, \fIname_return\fP, \
+\fIclass_return\fP)
+.br
+ Display* \fIdisplay\fP;
+.br
+ String* \fIname_return\fP;
+.br
+ String* \fIclass_return\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies an open display connection that has been initialized with
+.PN XtDisplayInitialize .
+.IP \fIname_return\fP 1i
+Returns the application name.
+.IP \fIclass_return\fP 1i
+Returns the application class.
+.LP
+.eM
+.PN XtGetApplicationNameAndClass
+returns the application name and class passed to
+.PN XtDisplayInitialize
+for the specified display. If the display was
+never initialized or has been closed, the result is undefined. The
+returned strings are owned by the \*(xI and must not be modified
+or freed by the caller.
+.sp
+.LP
+To register a procedure to be called on fatal error conditions, use
+.PN XtAppSetErrorMsgHandler .
+.LP
+.IN "XtAppSetErrorMsgHandler" "" "@DEF@"
+.sM
+.FD 0
+XtErrorMsgHandler XtAppSetErrorMsgHandler(\fIapp_context\fP, \fImsg_handler\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtErrorMsgHandler \fImsg_handler\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fImsg_handler\fP 1i
+Specifies the new fatal error procedure, which should not return.
+.LP
+.eM
+.PN XtAppSetErrorMsgHandler
+returns a pointer to the previously
+installed high-level fatal error handler.
+The default high-level fatal error handler provided by the \*(xI is named
+.PN _XtDefaultErrorMsg
+.IN "_XtDefaultErrorMsg" "" "@DEF"
+and constructs a string from the error resource database and calls
+.PN XtError .
+Fatal error message handlers should not return.
+If one does,
+subsequent \*(xI behavior is undefined.
+.sp
+.LP
+To call the high-level error handler, use
+.PN XtAppErrorMsg .
+.LP
+.IN "XtAppErrorMsg" "" "@DEF@"
+.sM
+.FD 0
+void XtAppErrorMsg(\fIapp_context\fP, \fIname\fP, \fItype\fP, \fIclass\fP, \
+\fIdefault\fP, \ \fIparams\fP, \fInum_params\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fIname\fP;
+.br
+ String \fItype\fP;
+.br
+ String \fIclass\fP;
+.br
+ String \fIdefault\fP;
+.br
+ String *\fIparams\fP;
+.br
+ Cardinal *\fInum_params\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIname\fP 1i
+Specifies the general kind of error.
+.IP \fItype\fP 1i
+Specifies the detailed name of the error.
+.IP \fIclass\fP 1i
+Specifies the resource class.
+.IP \fIdefault\fP 1i
+Specifies the default message to use if an error database entry is not found.
+.IP \fIparams\fP 1i
+Specifies a pointer to a list of values to be stored in the message.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.LP
+.eM
+The \*(xI internal errors all have class
+``XtToolkitError''.
+.sp
+.LP
+To register a procedure to be called on nonfatal error conditions, use
+.PN XtAppSetWarningMsgHandler .
+.LP
+.IN "XtAppSetWarningMsgHandler" "" "@DEF@"
+.sM
+.FD 0
+XtErrorMsgHandler XtAppSetWarningMsgHandler(\fIapp_context\fP, \fImsg_handler\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtErrorMsgHandler \fImsg_handler\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fImsg_handler\fP 1i
+Specifies the new nonfatal error procedure, which usually returns.
+.LP
+.eM
+.PN XtAppSetWarningMsgHandler
+returns a pointer to the previously
+installed high-level warning handler.
+The default high-level warning handler provided by the \*(xI is named
+.PN _XtDefaultWarningMsg
+.IN "_XtDefaultWarningMsg" "" "@DEF@"
+and constructs a string
+from the error resource database and calls
+.PN XtWarning .
+.sp
+.LP
+To call the installed high-level warning handler, use
+.PN XtAppWarningMsg .
+.LP
+.IN "XtAppWarningMsg" "" "@DEF@"
+.sM
+.FD 0
+void XtAppWarningMsg(\fIapp_context\fP, \fIname\fP, \fItype\fP, \fIclass\fP, \fIdefault\fP, \fIparams\fP, \fInum_params\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fIname\fP;
+.br
+ String \fItype\fP;
+.br
+ String \fIclass\fP;
+.br
+ String \fIdefault\fP;
+.br
+ String *\fIparams\fP;
+.br
+ Cardinal *\fInum_params\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIname\fP 1i
+Specifies the general kind of error.
+.IP \fItype\fP 1i
+Specifies the detailed name of the error.
+.IP \fIclass\fP 1i
+Specifies the resource class.
+.IP \fIdefault\fP 1i
+Specifies the default message to use if an error database entry is not found.
+.IP \fIparams\fP 1i
+Specifies a pointer to a list of values to be stored in the message.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.LP
+.eM
+The \*(xI internal warnings all have class
+``XtToolkitError''.
+.sp
+.LP
+The low-level error and warning handler procedure pointers are of type
+.PN XtErrorHandler .
+.LP
+.IN "XtErrorHandler" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtErrorHandler)(String);
+.br
+ String \fImessage\fP;
+.FN
+.IP \fImessage\fP 1i
+Specifies the error message.
+.LP
+.eM
+The error handler should display the message string in some appropriate fashion.
+.sp
+.LP
+To register a procedure to be called on fatal error conditions, use
+.PN XtAppSetErrorHandler .
+.LP
+.IN "XtAppSetErrorHandler" "" "@DEF@"
+.sM
+.FD 0
+XtErrorHandler XtAppSetErrorHandler(\fIapp_context\fP, \fIhandler\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtErrorHandler \fIhandler\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIhandler\fP 1i
+Specifies the new fatal error procedure, which should not return.
+.LP
+.eM
+.PN XtAppSetErrorHandler
+returns a pointer to the previously installed
+low-level fatal error handler.
+The default low-level error handler provided by the \*(xI is
+.PN _XtDefaultError .
+.IN "_XtDefaultError" "" "@DEF@"
+On POSIX-based systems,
+it prints the message to standard error and terminates the application.
+Fatal error message handlers should not return.
+If one does,
+subsequent \*(xI behavior is undefined.
+.sp
+.LP
+To call the installed fatal error procedure, use
+.PN XtAppError .
+.LP
+.IN "XtAppError" "" "@DEF@"
+.sM
+.FD 0
+void XtAppError(\fIapp_context\fP, \fImessage\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fImessage\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fImessage\fP 1i
+Specifies the message to be reported.
+.LP
+.eM
+Most programs should use
+.PN XtAppErrorMsg ,
+not
+.PN XtAppError ,
+to provide for customization and internationalization of error messages.
+.sp
+.LP
+To register a procedure to be called on nonfatal error conditions, use
+.PN XtAppSetWarningHandler .
+.LP
+.IN "XtAppSetWarningHandler" "" "@DEF@"
+.sM
+.FD 0
+XtErrorHandler XtAppSetWarningHandler(\fIapp_context\fP, \fIhandler\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ XtErrorHandler \fIhandler\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIhandler\fP 1i
+Specifies the new nonfatal error procedure, which usually returns.
+.LP
+.eM
+.PN XtAppSetWarningHandler
+returns a pointer to the previously installed
+low-level warning handler.
+The default low-level warning handler provided by the \*(xI is
+.PN _XtDefaultWarning .
+.IN "_XtDefaultWarning" "" "@DEF@"
+On POSIX-based systems,
+it prints the message to standard error and returns to the caller.
+.sp
+.LP
+To call the installed nonfatal error procedure, use
+.PN XtAppWarning .
+.LP
+.IN "XtAppWarning" "" "@DEF@"
+.sM
+.FD 0
+void XtAppWarning(\fIapp_context\fP, \fImessage\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fImessage\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fImessage\fP 1i
+Specifies the nonfatal error message to be reported.
+.LP
+.eM
+Most programs should use
+.PN XtAppWarningMsg ,
+not
+.PN XtAppWarning ,
+to provide for customization and internationalization of warning messages.
+
+.NH 2
+Setting WM_COLORMAP_WINDOWS
+.XS
+\fB\*(SN Setting WM_COLORMAP_WINDOWS\fP
+.XE
+.LP
+A client may set the value of the \s-1WM_COLORMAP_WINDOWS\s+1
+.IN "WM_COLORMAP_WINDOWS" "" "@DEF@"
+property on a widget's window by calling
+.PN XtSetWMColormapWindows .
+.LP
+.IN "XtSetWMColormapWindows" "" "@DEF@"
+.sM
+.FD 0
+void XtSetWMColormapWindows(\fIwidget\fP, \fIlist\fP, \fIcount\fP)
+.br
+ Widget \fIwidget\fP;
+.br
+ Widget* \fIlist\fP;
+.br
+ Cardinal \fIcount\fP;
+.FN
+.IP \fIwidget\fP 1i
+Specifies the widget on whose window the \s-1WM_COLORMAP_WINDOWS\s+1
+property is stored. \*(cI
+.IP \fIlist\fP 1i
+Specifies a list of widgets whose windows are potentially to be
+listed in the \s-1WM_COLORMAP_WINDOWS\s+1 property.
+.IP \fIcount\fP 1i
+Specifies the number of widgets in \fIlist\fP.
+.LP
+.eM
+.PN XtSetWMColormapWindows
+returns immediately if \fIwidget\fP is not realized or if \fIcount\fP is 0.
+Otherwise,
+.PN XtSetWMColormapWindows
+constructs an ordered list of windows
+by examining each widget in \fIlist\fP in turn and
+ignoring the widget if it is not realized, or
+adding the widget's window to the window list if the widget is realized
+and if its colormap resource is different from the colormap
+resources of all widgets whose windows are already on the window list.
+.LP
+Finally,
+.PN XtSetWMColormapWindows
+stores the resulting window list in the \s-1WM_COLORMAP_WINDOWS\s+1
+property on the specified widget's window.
+Refer to Section 4.1.8 in the \fI\*(xC\fP for details of
+the semantics of the \s-1WM_COLORMAP_WINDOWS\s+1 property.
+
+.NH 2
+Finding File Names
+.XS
+\fB\*(SN Finding File Names\fP
+.XE
+.LP
+The \*(xI provide procedures to look for a file by name, allowing
+string substitutions in a list of file specifications. Two
+routines are provided for this:
+.PN XtFindFile
+and
+.PN XtResolvePathname .
+.PN XtFindFile
+uses an arbitrary set of client-specified substitutions, and
+.PN XtResolvePathname
+uses a set of standard substitutions corresponding
+to the \fIX/Open Portability Guide\fP language localization conventions.
+Most applications should use
+.PN XtResolvePathname .
+.LP
+A string substitution is defined by a list of
+.PN Substitution
+.IN "Substitution" "" "@DEF@"
+entries.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ char match;
+ String substitution;
+} SubstitutionRec, *Substitution;
+.De
+.eM
+.LP
+File name evaluation is handled in an operating-system-dependent
+fashion by an
+.PN XtFilePredicate
+.IN "XtFilePredicate" "" "@DEF@"
+procedure.
+.LP
+.sM
+.FD 0
+typedef Boolean (*XtFilePredicate)(String);
+.br
+ String \fIfilename\fP;
+.FN
+.IP \fIfilename\fP 1i
+Specifies a potential filename.
+.LP
+.eM
+A file predicate procedure is called with a string that is
+potentially a file name. It should return
+.PN True
+if this string specifies a file that is appropriate for the intended use and
+.PN False
+otherwise.
+.sp
+.LP
+To search for a file using substitutions in a path list, use
+.PN XtFindFile .
+.LP
+.IN "XtFindFile" "" "@DEF@"
+.sM
+.FD 0
+String XtFindFile(\fIpath\fP, \fIsubstitutions\fP, \fInum_substitutions\fP, \
+\fIpredicate\fP)
+.br
+ String \fIpath\fP;
+.br
+ Substitution \fIsubstitutions\fP;
+.br
+ Cardinal \fInum_substitutions\fP;
+.br
+ XtFilePredicate \fIpredicate\fP;
+.FN
+.IP \fIpath\fP 1.2i
+Specifies a path of file names, including substitution characters.
+.IP \fIsubstitutions\fP 1.2i
+Specifies a list of substitutions to make into the path.
+.IP \fInum_substitutions\fP 1.2i
+Specifies the number of substitutions passed in.
+.IP \fIpredicate\fP 1.2i
+Specifies a procedure called to judge each potential file name, or NULL.
+.LP
+.eM
+The \fIpath\fP parameter specifies a string that consists of a series of
+potential file names delimited by colons. Within each name, the
+percent character specifies a string substitution selected by the
+following character. The character sequence ``%:'' specifies an
+embedded colon that is not a delimiter; the sequence is replaced by a
+single colon. The character sequence ``%%'' specifies a percent
+character that does not introduce a substitution; the sequence is
+replaced by a single percent character. If a percent character is
+followed by any other character,
+.PN XtFindFile
+looks through the
+specified \fIsubstitutions\fP for that character in the \fImatch\fP field
+and, if found,
+replaces the percent and match characters with the string in the
+corresponding \fIsubstitution\fP field. A \fIsubstitution\fP field entry of NULL
+is equivalent to a pointer to an empty string. If the operating
+system does not interpret multiple embedded name separators in the
+path (i.e., ``/'' in POSIX) the same way as a single separator,
+.PN XtFindFile
+will collapse multiple separators into a single one after performing
+all string substitutions. Except for collapsing embedded separators,
+the contents of the string substitutions are not interpreted by
+.PN XtFindFile
+and may therefore contain any operating-system-dependent
+characters, including additional name separators. Each resulting
+string is passed to the predicate procedure until a string is found for
+which the procedure returns
+.PN True ;
+this string is the return value for
+.PN XtFindFile .
+If no string yields a
+.PN True
+return from the predicate,
+.PN XtFindFile
+returns NULL.
+.LP
+If the \fIpredicate\fP parameter is NULL, an internal procedure that checks
+if the file exists, is readable, and is not a directory is used.
+.LP
+It is the responsibility of the caller to free the returned string using
+.PN XtFree
+when it is no longer needed.
+.sp
+.LP
+To search for a file using standard substitutions in a path list, use
+.PN XtResolvePathname .
+.LP
+.IN "XtResolvePathname" "" "@DEF@"
+.sM
+.FD 0
+String XtResolvePathname(\fIdisplay\fP, \fItype\fP, \fIfilename\fP, \fIsuffix\fP, \
+\fIpath\fP, \fIsubstitutions\fP, \fInum_substitutions\fP, \fIpredicate\fP)
+.br
+ Display *\fIdisplay\fP;
+.br
+ String \fItype\fP, \fIfilename\fP, \fIsuffix\fP, \fIpath\fP;
+.br
+ Substitution \fIsubstitutions\fP;
+.br
+ Cardinal \fInum_substitutions\fP;
+.br
+ XtFilePredicate \fIpredicate\fP;
+.FN
+.IP \fIdisplay\fP 1.2i
+Specifies the display to use to find the language for language substitutions.
+.IP \fItype\fP
+.br
+.ns
+.IP \fIfilename\fP
+.br
+.ns
+.IP \fIsuffix\fP 1.2i
+Specify values to substitute into the path.
+.IP \fIpath\fP 1.2i
+Specifies the list of file specifications, or NULL.
+.IP \fIsubstitutions\fP 1.2i
+Specifies a list of additional substitutions to make into the path, or NULL.
+.IP \fInum_substitutions\fP 1.2i
+Specifies the number of entries in \fIsubstitutions\fP.
+.IP \fIpredicate\fP 1.2i
+Specifies a procedure called to judge each potential file name, or NULL.
+.LP
+.eM
+The substitutions specified by
+.PN XtResolvePathname
+are determined from the value of the language string retrieved by
+.PN XtDisplayInitialize
+for the specified display.
+To set the
+language for all applications specify ``*xnlLanguage: \fIlang\fP'' in the
+resource database.
+.IN "xnlLanguage"
+The format and content of the language string are
+implementation-defined. One suggested syntax is to compose
+the language string of three parts; a ``language part'', a
+``territory part'' and a ``codeset part''. The manner in which
+this composition is accomplished is implementation-defined,
+and the \*(xI make no interpretation of the parts other
+than to use them in substitutions as described below.
+.LP
+.PN XtResolvePathname
+calls
+.PN XtFindFile
+with the following substitutions
+in addition to any passed by the caller and returns the value returned by
+.PN XtFindFile :
+.IP %N 5
+The value of the \fIfilename\fP parameter, or the application's
+class name if \fIfilename\fP is NULL.
+.IP %T 5
+The value of the \fItype\fP parameter.
+.IP %S 5
+The value of the \fIsuffix\fP parameter.
+.IP %L 5
+The language string associated with the specified display.
+.IP %l 5
+The language part of the display's language string.
+.IP %t 5
+The territory part of the display's language string.
+.IP %c 5
+The codeset part of the display's language string.
+.IP %C 5
+The customization string retrieved from the resource
+database associated with \fIdisplay\fP.
+.IP %D 5
+The value of the implementation-specific default path.
+.LP
+If a path is passed to
+.PN XtResolvePathname ,
+it is passed along to
+.PN XtFindFile .
+If the \fIpath\fP argument is NULL, the value of the
+.PN \s-1XFILESEARCHPATH\s+1
+.IN "XFILESEARCHPATH" "" "@DEF@"
+environment variable is passed to
+.PN XtFindFile .
+If
+.PN \s-1XFILESEARCHPATH\s+1
+is not defined, an implementation-specific default path is used
+that contains at least six entries. These entries
+must contain the following substitutions:
+
+.nf
+.ta .3i 2i 2.5i
+1. %C, %N, %S, %T, %L or %C, %N, %S, %T, %l, %t, %c
+2. %C, %N, %S, %T, %l
+3. %C, %N, %S, %T
+4. %N, %S, %T, %L or %N, %S, %T, %l, %t, %c
+5. %N, %S, %T, %l
+6. %N, %S, %T
+.fi
+
+The order of these six entries within the path must be as given above.
+The order and use of substitutions within a given entry
+are implementation-dependent.
+If the path begins
+with a colon, it is preceded by %N%S. If the path includes two
+adjacent colons, \fB%N%S\fP is inserted between them.
+.LP
+The \fItype\fP parameter is intended to be a category of files, usually
+being translated into a directory in the pathname. Possible values
+might include ``app-defaults'', ``help'', and ``bitmap''.
+.LP
+The \fIsuffix\fP parameter is intended to be appended to the file name.
+Possible values might include ``.txt'', ``.dat'', and ``.bm''.
+.LP
+A suggested value for the default path on POSIX-based systems is
+.IP
+/usr/lib/X11/%L/%T/%N%C%S:/usr/lib/X11/%l/%T/%N%C%S:\\
+.br
+/usr/lib/X11/%T/%N%C%S:/usr/lib/X11/%L/%T/%N%S:\\
+.br
+/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S
+
+.LP
+Using this example, if the user has specified a language, it is
+used as a subdirectory of /usr/lib/X11 that is searched for other
+files. If the desired file is not found there, the lookup is
+tried again using just the language part of the specification. If the
+file is not there, it is looked for in /usr/lib/X11. The \fItype\fP
+parameter is used as a subdirectory of the language directory or of
+/usr/lib/X11, and \fIsuffix\fP is appended to the file name.
+.LP
+The %D substitution allows the addition of path
+elements to the implementation-specific default path, typically to
+allow additional directories to be searched without preventing
+resources in the system directories from being found. For example, a
+user installing resource files under a directory called ``ourdir''
+might set
+.PN \s-1XFILESEARCHPATH\s+1
+to
+.IP
+%D:ourdir/%T/%N%C:ourdir/%T/%N
+.LP
+The customization string is obtained by querying the resource database
+currently associated with the display (the database returned by
+.PN XrmGetDatabase )
+for the resource \fIapplication_name\fP.customization, class
+\fIapplication_class\fP.Customization, where \fIapplication_name\fP
+and \fIapplication_class\fP are the values returned by
+.PN XtGetApplicationNameAndClass .
+If no value is specified in the database, the empty string is used.
+.LP
+It is the responsibility of the caller to free the returned string using
+.PN XtFree
+when it is no longer needed.
+
+.NH 2
+Hooks for External Agents
+.XS
+\fB\*(SN Hooks for External Agents\fP
+.XE
+.LP
+Applications may register
+functions that are called at a particular control points in the \*(xI.
+These functions are intended to be used to provide notification
+of an \*Q\*(tk event\*U, such as widget creation, to an external agent,
+such as an interactive resource editor, drag-and-drop server, or
+an aid for physically challenged users.
+The control points containing such registration hooks are identified
+in a \*Qhook registration\*U object.
+.LP
+To retrieve the hook registration widget, use
+.PN XtHooksOfDisplay .
+.LP
+.IN "XtHooksOfDisplay" "" "@DEF@"
+.sM
+.FD 0
+Widget XtHooksOfDisplay(\fIdisplay\fP)
+.br
+ Display *\fIdisplay\fP;
+.FN
+.IP \fIdisplay\fP 1i
+Specifies the desired display.
+.LP
+.eM
+The class of this object is a private, implementation-dependent
+subclass of
+.PN Object .
+The hook object has no parent. The resources of this object are
+the callback lists for hooks and the read-only resources for getting
+a list of parentless shells. All of the callback lists are initially
+empty. When a display is closed, the hook object associated with it
+is destroyed.
+.LP
+The following procedures can be called with the hook registration object
+as an argument:
+.sp
+.IP
+.PN XtAddCallback ,
+.PN XtAddCallbacks ,
+.PN XtRemoveCallback ,
+.PN XtRemoveCallbacks ,
+.PN XtRemoveAllCallbacks ,
+.PN XtCallCallbacks ,
+.PN XtHasCallbacks ,
+.PN XtCallCallbackList
+.IP
+.PN XtClass ,
+.PN XtSuperclass ,
+.PN XtIsSubclass ,
+.PN XtCheckSubclass ,
+.PN XtIsObject ,
+.PN XtIsRectObj ,
+.PN XtIsWidget ,
+.PN XtIsComposite ,
+.PN XtIsConstraint ,
+.PN XtIsShell ,
+.PN XtIsOverrideShell ,
+.PN XtIsWMShell ,
+.PN XtIsVendorShell ,
+.PN XtIsTransientShell ,
+.PN XtIsToplevelShell ,
+.PN XtIsApplicationShell ,
+.PN XtIsSessionShell
+.IP
+.PN XtWidgetToApplicationContext
+.IP
+.PN XtName ,
+.PN XtParent ,
+.PN XtDisplayOfObject ,
+.PN XtScreenOfObject
+.IP
+.PN XtSetValues ,
+.PN XtGetValues ,
+.PN XtVaSetValues ,
+.PN XtVaGetValues
+.sp
+.LP
+
+.NH 3
+Hook Object Resources
+.XS
+\fB\*(SN Hook Object Resources\fP
+.XE
+.LP
+The resource names, classes, and representation types that are specified
+in the hook object resource list are:
+.KS
+.TS
+lw(1.5i) lw(1.5i) lw(2.5i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNcreateHook XtCCallback XtRCallback
+XtNchangeHook XtCCallback XtRCallback
+XtNconfigureHook XtCCallback XtRCallback
+XtNgeometryHook XtCCallback XtRCallback
+XtNdestroyHook XtCCallback XtRCallback
+XtNshells XtCReadOnly XtRWidgetList
+XtNnumShells XtCReadOnly XtRCardinal
+.sp 6p
+_
+.TE
+.KE
+.LP
+Descriptions of each of these resources:
+.LP
+The XtNcreateHook callback list is called from:
+.PN XtCreateWidget ,
+.PN XtCreateManagedWidget ,
+.PN XtCreatePopupShell ,
+.PN XtAppCreateShell ,
+and their corresponding varargs versions.
+.LP
+The \fIcall_data\fP parameter in a createHook callback may be
+cast to type
+.PN XtCreateHookData .
+.LP
+.IN "XtCreateHookData" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ String type;
+ Widget widget;
+ ArgList args;
+ Cardinal num_args;
+} XtCreateHookDataRec, *XtCreateHookData;
+.De
+.eM
+.LP
+The \fItype\fP is set to
+.PN XtHcreate ,
+\fIwidget\fP is the newly created widget, and \fIargs\fP and \fInum_args\fP
+are the arguments passed to the create function. The callbacks are
+called before returning from the create function.
+.LP
+The XtNchangeHook callback list is called from:
+.IP
+.PN XtSetValues ,
+.PN XtVaSetValues
+.IP
+.PN XtManageChild ,
+.PN XtManageChildren ,
+.PN XtUnmanageChild ,
+.PN XtUnmanageChildren
+.IP
+.PN XtRealizeWidget ,
+.PN XtUnrealizeWidget
+.IP
+.PN XtAddCallback ,
+.PN XtRemoveCallback ,
+.PN XtAddCallbacks,
+.PN XtRemoveCallbacks ,
+.PN XtRemoveAllCallbacks
+.IP
+.PN XtAugmentTranslations ,
+.PN XtOverrideTranslations ,
+.PN XtUninstallTranslations
+.IP
+.PN XtSetKeyboardFocus ,
+.PN XtSetWMColormapWindows
+.IP
+.PN XtSetMappedWhenManaged ,
+.PN XtMapWidget ,
+.PN XtUnmapWidget
+.IP
+.PN XtPopup ,
+.PN XtPopupSpringLoaded ,
+.PN XtPopdown
+.LP
+.sp
+.LP
+The \fIcall_data\fP parameter in a changeHook callback may
+be cast to type
+.PN XtChangeHookData .
+.IN "XtChangeHookData" "" "@DFEF@"
+.LP
+.KS
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ String type;
+ Widget widget;
+ XtPointer event_data;
+ Cardinal num_event_data;
+} XtChangeHookDataRec, *XtChangeHookData;
+.De
+.eM
+.KE
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtSetValues
+or
+.PN XtVaSetValues ,
+\fItype\fP is set to
+.PN XtHsetValues ,
+\fIwidget\fP is the new widget passed to the set_values procedure, and
+\fIevent_data\fP may be cast to type
+.PN XtChangeHookSetValuesData .
+.IN "XtChangeHookSetValuesData" "" "@DEF@"
+.LP
+.KS
+.sM
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+ Widget old, req;
+ ArgList args;
+ Cardinal num_args;
+} XtChangeHookSetValuesDataRec, *XtChangeHookSetValuesData;
+.De
+.eM
+.KE
+.LP
+The \fIold\fP, \fIreq\fP, \fIargs\fP, and \fInum_args\fP are the
+parameters passed to the set_values procedure. The callbacks are called
+after the set_values and constraint set_values procedures have been called.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtManageChild
+or
+.PN XtManageChildren ,
+\fItype\fP is set to
+.PN XtHmanageChildren ,
+\fIwidget\fP is the parent, \fIevent_data\fP may be cast to type
+WidgetList and is the list of children being managed, and
+\fInum_event_data\fP is the length of the widget list.
+The callbacks are called after the children have been managed.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtUnmanageChild
+or
+.PN XtUnmanageChildren ,
+\fItype\fP is set to
+.PN XtHunmanageChildren ,
+\fIwidget\fP is the parent, \fIevent_data\fP may be cast to type
+WidgetList and is a list of the children being unmanaged, and
+\fInum_event_data\fP is the length of the widget list.
+The callbacks are called after the children have been unmanaged.
+.LP
+The changeHook callbacks are called twice as a result of a call to
+.PN XtChangeManagedSet ,
+once after unmanaging and again after managing.
+When the callbacks are called the first time, \fItype\fP is set to
+.PN XtHunmanageSet ,
+\fIwidget\fP is the parent, \fIevent_data\fP may be cast to type
+WidgetList and is a list of the children being unmanaged, and
+\fInum_event_data\fP is the length of the widget list.
+When the callbacks are called the second time, the \fItype\fP is set to
+.PN XtHmanageSet ,
+\fIwidget\fP is the parent, \fIevent_data\fP may be cast to type
+WidgetList and is a list of the children being managed, and
+\fInum_event_data\fP is the length of the widget list.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtRealizeWidget ,
+the \fItype\fP is set to
+.PN XtHrealizeWidget
+and \fIwidget\fP is the widget being realized.
+The callbacks are called after the widget has been realized.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtUnrealizeWidget ,
+the \fItype\fP is set to
+.PN XtHunrealizeWidget ,
+and \fIwidget\fP is the widget being unrealized.
+The callbacks are called after the widget has been unrealized.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtAddCallback ,
+\fItype\fP is set to
+.PN XtHaddCallback ,
+\fIwidget\fP is the widget to which the callback is being added, and
+\fIevent_data\fP may be cast to type String and is the name of the
+callback being added.
+The callbacks are called after the callback has been added to the widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtAddCallbacks ,
+the \fItype\fP is set to
+.PN XtHaddCallbacks ,
+\fIwidget\fP is the widget to which the callbacks are being added, and
+\fIevent_data\fP may be cast to type String and is the name of the
+callbacks being added.
+The callbacks are called after the callbacks have been added to the widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtRemoveCallback ,
+the \fItype\fP is set to
+.PN XtHremoveCallback ,
+\fIwidget\fP is the widget from which the callback is being removed, and
+\fIevent_data\fP may be cast to type String and is the name of
+the callback being removed. The callbacks are called after the callback
+has been removed from the widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtRemoveCallbacks ,
+the \fItype\fP is set to
+.PN XtHremoveCallbacks ,
+\fIwidget\fP is the widget from which the callbacks are being removed, and
+\fIevent_data\fP may be cast to type String and is the name of the
+callbacks being removed. The callbacks are called after the callbacks
+have been removed from the widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtRemoveAllCallbacks ,
+the \fItype\fP is set to
+.PN XtHremoveAllCallbacks
+and \fIwidget\fP is the widget from which the callbacks are being removed.
+The callbacks are called after the callbacks have been removed from the
+widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtAugmentTranslations ,
+the \fItype\fP is set to
+.PN XtHaugmentTranslations
+and \fIwidget\fP is the widget whose translations are being modified.
+The callbacks are called after the widget's translations have been
+modified.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtOverrideTranslations ,
+the \fItype\fP is set to
+.PN XtHoverrideTranslations
+and \fIwidget\fP is the widget whose translations are being modified.
+The callbacks are called after the widget's translations have been
+modified.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtUninstallTranslations ,
+The \fItype\fP is
+.PN XtHuninstallTranslations
+and \fIwidget\fP is the widget whose translations are being uninstalled.
+The callbacks are called after the widget's translations have been
+uninstalled.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtSetKeyboardFocus ,
+the \fItype\fP is set to
+.PN XtHsetKeyboardFocus
+and \fIevent_data\fP may be cast to type Widget and is the value of
+the descendant argument passed to \fBXtSetKeyboardFocus\fP. The
+callbacks are called before returning from \fBXtSetKeyboardFocus\fP.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtSetWMColormapWindows ,
+\fItype\fP is set to
+.PN XtHsetWMColormapWindows ,
+\fIevent_data\fP may be cast to type WidgetList and is the value of
+the list argument passed to \fBXtSetWMColormapWindows\fP, and
+\fInum_event_data\fP is the length of the list. The callbacks are
+called before returning from \fBXtSetWMColormapWindows\fP.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtSetMappedWhenManaged ,
+the \fItype\fP is set to
+.PN XtHsetMappedWhenManaged
+and \fIevent_data\fP may be cast to type Boolean and is the value of
+the mapped_when_managed argument passed to \fBXtSetMappedWhenManaged\fP.
+The callbacks are called after setting the widget's mapped_when_managed
+field and before realizing or unrealizing the widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtMapWidget ,
+the \fItype \fP is set to
+.PN XtHmapWidget
+and \fIwidget\fP is the widget being mapped.
+The callbacks are called after mapping the widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtUnmapWidget ,
+the \fItype \fP is set to
+.PN XtHunmapWidget
+and \fIwidget\fP is the widget being unmapped.
+The callbacks are called after unmapping the widget.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtPopup ,
+the \fItype\fP is set to
+.PN XtHpopup ,
+\fIwidget\fP is the widget being popped up, and \fIevent_data\fP may
+be cast to type XtGrabKind and is the value of the grab_kind argument
+passed to \fBXtPopup\fP.
+The callbacks are called before returning from \fBXtPopup\fP.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtPopupSpringLoaded ,
+the \fItype\fP is set to
+.PN XtHpopupSpringLoaded
+and \fIwidget\fP is the widget being popped up.
+The callbacks are called
+before returning from \fBXtPopupSpringLoaded\fP.
+.LP
+When the changeHook callbacks are called as a result of a call to
+.PN XtPopdown ,
+the \fItype\fP is set to
+.PN XtHpopdown
+and \fIwidget\fP is the widget being popped down.
+The callbacks are called
+before returning from \fBXtPopdown\fP.
+.LP
+A widget set that exports interfaces that change application state
+without employing the \*(xI library should invoke the change hook
+itself. This is done by:
+.sp
+.Ds
+.TA .5i 2i
+.ta .5i 2i
+ XtCallCallbacks(XtHooksOfDisplay(dpy), XtNchangeHook, call_data);
+.De
+.sp
+.LP
+The XtNconfigureHook callback list is called any time the \*(xI
+move, resize, or configure a widget and when
+.PN XtResizeWindow
+is called.
+.LP
+The \fIcall_data\fP parameter may be cast to type
+.PN XtConfigureHookData.
+.LP
+.IN "XtConfigureHookData" "" "@DEF@"
+.KS
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ String type;
+ Widget widget;
+ XtGeometryMask changeMask;
+ XWindowChanges changes;
+} XtConfigureHookDataRec, *XtConfigureHookData;
+.De
+.eM
+.KE
+.sp
+.LP
+When the configureHook callbacks are called, the \fItype\fP is
+.PN XtHconfigure ,
+\fIwidget\fP is the widget being configured, and \fIchangeMask\fP and
+\fIchanges\fP reflect the changes made to the widget. The callbacks
+are called after changes have been made to the widget.
+.LP
+The XtNgeometryHook callback list is called from
+.PN XtMakeGeometryRequest
+and
+.PN XtMakeResizeRequest
+once before and once after geometry negotiation occurs.
+.LP
+The \fIcall_data\fP parameter may be cast to type
+.PN XtGeometryHookData .
+.LP
+.IN "XtGeometryHookData" "" "@DFEF@"
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ String type;
+ Widget widget;
+ XtWidgetGeometry* request;
+ XtWidgetGeometry* reply;
+ XtGeometryResult result;
+} XtGeometryHookDataRec, *XtGeometryHookData;
+.De
+.eM
+.sp
+.LP
+When the geometryHook callbacks are called prior to geometry negotiation,
+the \fItype\fP is
+.PN XtHpreGeometry ,
+\fIwidget\fP is the widget for which the request is being made, and
+\fIrequest\fP is the requested geometry.
+When the geometryHook callbacks
+are called after geometry negotiation, the \fItype\fP is
+.PN XtHpostGeometry ,
+\fIwidget\fP is the widget for which the request was made, \fIrequest\fP
+is the requested geometry, \fIreply\fP is the resulting geometry granted,
+and \fIresult\fP is the value returned from the geometry negotiation.
+.LP
+The XtNdestroyHook callback list is called when a widget is destroyed.
+The \fIcall_data parameter\fP may be cast to type
+.PN XtDestroyHookData .
+.LP
+.IN "XtDestroyHookData" "" "@DFEF@"
+.sp
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ String type;
+ Widget widget;
+} XtDestroyHookDataRec, *XtDestroyHookData;
+.De
+.eM
+.sp
+.LP
+When the destroyHook callbacks are called as a result of a call to
+.PN XtDestroyWidget ,
+the \fItype\fP is
+.PN XtHdestroy
+and \fIwidget\fP is the widget being destroyed. The callbacks are
+called upon completion of phase one destroy for a widget.
+.LP
+The XtNshells and XtnumShells are read-only resources that report a
+list of all parentless shell widgets associated with a display.
+.LP
+Clients who use these hooks must exercise caution in calling \*(xI
+functions in order to avoid recursion.
+
+.NH 3
+Querying Open Displays
+.XS
+\fB\*(SN Querying Open Displays\fP
+.XE
+.LP
+To retrieve a list of the Displays associated with an application context,
+use
+.PN XtGetDisplays .
+.LP
+.IN "XtGetDisplays" "" "@DEF@"
+.sM
+.FD 0
+void XtGetDisplays(\fIapp_context\fP, \fIdpy_return\fP, \fInum_dpy_return\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ Display ***\fIdpy_return\fP;
+.br
+ Cardinal *\fInum_dpy_return\fP;
+.FN
+.IP \fIapp_context\fP 1.5i
+Specifies the application context.
+.IP \fIdpy_return\fP 1.5i
+Returns a list of open Display connections in the specified application
+context.
+.IP \fInum_dpy_return\fP 1.5i
+Returns the count of open Display connections in \fIdpy_return\fP.
+.LP
+.eM
+\fBXtGetDisplays\fP may be used by an external agent to query the
+list of open displays that belong to an application context. To free
+the list of displays, use
+.PN XtFree .
+.bp
diff --git a/specs/Xt/CH12 b/specs/Xt/CH12
new file mode 100644
index 0000000..34e8ec7
--- /dev/null
+++ b/specs/Xt/CH12
@@ -0,0 +1,1067 @@
+.\" $Xorg: CH12,v 1.3 2000/08/17 19:42:47 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 12\fP\s-1
+
+\s+1\fBNonwidget Objects\fP\s-1
+.sp 2
+.nr H1 12
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 12 \(em Nonwidget Objects
+.XE
+.LP
+Although widget writers are free to treat
+Core
+as the base class of
+the widget hierarchy, there are actually three classes above it.
+These classes are
+Object,
+RectObj
+(Rectangle Object), and (\fIunnamed\fP),
+and members of these classes
+are referred to generically as \fIobjects\fP. By convention, the term
+\fIwidget\fP refers only to objects that are a subclass of
+Core,
+and the term \fInonwidget\fP refers to objects that are not a subclass of
+Core.
+In the preceding portion of this specification, the interface
+descriptions indicate explicitly whether the generic \fIwidget\fP argument
+is restricted to particular subclasses of Object. Sections 12.2.5,
+12.3.5, and 12.5 summarize the permissible classes of the arguments to, and
+return values from, each of the \*(xI routines.
+
+.NH 2
+Data Structures
+.XS
+\*(SN Data Structures
+.XE
+.LP
+In order not to conflict with previous widget code, the data
+structures used by nonwidget objects do not follow all the same
+conventions as those for widgets. In particular, the class records
+are not composed of parts but instead are complete data structures
+with filler for the widget fields they do not use. This
+allows the static class initializers for existing widgets to remain
+unchanged.
+
+.NH 2
+Object Objects
+.XS
+\fB\*(SN Object Objects\fP
+.XE
+.LP
+.IN "Object" "" "@DEF@"
+The
+Object
+object contains the definitions of fields common to all
+objects. It encapsulates the mechanisms for resource management.
+All objects and widgets are members of subclasses of
+Object,
+which is defined by the
+.PN ObjectClassPart
+and
+.PN ObjectPart
+structures.
+
+.NH 3
+ObjectClassPart Structure
+.XS
+\*(SN ObjectClassPart Structure
+.XE
+.LP
+The common fields for all object classes are defined in the
+.PN ObjectClassPart
+structure. All fields have the same purpose,
+function, and restrictions as the corresponding fields in
+.PN CoreClassPart ;
+fields whose
+names are obj\fI\s+1n\s-1\fP for some integer \s+1\fIn\fP\s-1 are not
+used for Object,
+but exist to pad the data structure so that it matches Core's class
+record. The class record initialization must fill all
+obj\fI\s+1n\s-1\fP fields with NULL or zero as appropriate to the type.
+.LP
+.IN "ObjectClassPart" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _ObjectClassPart {
+ WidgetClass superclass;
+ String class_name;
+ Cardinal widget_size;
+ XtProc class_initialize;
+ XtWidgetClassProc class_part_initialize;
+ XtEnum class_inited;
+ XtInitProc initialize;
+ XtArgsProc initialize_hook;
+ XtProc obj1;
+ XtPointer obj2;
+ Cardinal obj3;
+ XtResourceList resources;
+ Cardinal num_resources;
+ XrmClass xrm_class;
+ Boolean obj4;
+ XtEnum obj5;
+ Boolean obj6;
+ Boolean obj7;
+ XtWidgetProc destroy;
+ XtProc obj8;
+ XtProc obj9;
+ XtSetValuesFunc set_values;
+ XtArgsFunc set_values_hook;
+ XtProc obj10;
+ XtArgsProc get_values_hook;
+ XtProc obj11;
+ XtVersionType version;
+ XtPointer callback_private;
+ String obj12;
+ XtProc obj13;
+ XtProc obj14;
+ XtPointer extension;
+} ObjectClassPart;
+.De
+.LP
+.eM
+The extension record defined for
+.PN ObjectClassPart
+with a \fIrecord_type\fP equal to
+.PN \s-1NULLQUARK\s+1
+is
+.PN ObjectClassExtensionRec .
+.LP
+.IN "ObjectClassExtensionRec" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ XtPointer next_extension; See Section 1.6.12
+ XrmQuark record_type; See Section 1.6.12
+ long version; See Section 1.6.12
+ Cardinal record_size; See Section 1.6.12
+ XtAllocateProc allocate; See Section 2.5.5.
+ XtDeallocateProc deallocate; See Section 2.8.4.
+} ObjectClassExtensionRec, *ObjectClassExtension;
+.De
+.LP
+.eM
+The prototypical
+.PN ObjectClass
+consists of just the
+.PN ObjectClassPart .
+.LP
+.IN "ObjectClassRec" "" "@DEF@"
+.IN "ObjectClass" "" "@DEF@"
+.IN "objectClass" "" "@DEF@"
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _ObjectClassRec {
+ ObjectClassPart object_class;
+} ObjectClassRec, *ObjectClass;
+.De
+.LP
+.eM
+The predefined class record and pointer for
+.PN ObjectClassRec
+are
+.LP
+In
+.PN IntrinsicP.h :
+.sM
+.Ds 0
+extern ObjectClassRec objectClassRec;
+.De
+.LP
+.eM
+In
+.PN Intrinsic.h :
+.sM
+.Ds 0
+extern WidgetClass objectClass;
+.De
+.LP
+.eM
+The opaque types
+.PN Object
+and
+.PN ObjectClass
+and the opaque variable
+.PN objectClass
+are defined for generic actions on objects.
+The symbolic constant for the
+.PN ObjectClassExtension
+version identifier is
+.PN XtObjectExtensionVersion
+(see Section 1.6.12).
+.PN Intrinsic.h
+uses an incomplete structure definition to ensure that the
+compiler catches attempts to access private data:
+.LP
+.sM
+.Ds 0
+typedef struct _ObjectClassRec* ObjectClass;
+.De
+.LP
+.eM
+
+.NH 3
+ObjectPart Structure
+.XS
+\*(SN ObjectPart Structure
+.XE
+.LP
+The common fields for all object instances are defined in the
+.PN ObjectPart
+structure. All fields have the same meaning as the
+corresponding fields in
+.PN CorePart .
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.IN "ObjectPart" "" "@DEF@"
+typedef struct _ObjectPart {
+ Widget self;
+ WidgetClass widget_class;
+ Widget parent;
+ Boolean being_destroyed;
+ XtCallbackList destroy_callbacks;
+ XtPointer constraints;
+} ObjectPart;
+.De
+.LP
+.eM
+All object instances have the
+Object
+fields as their first component. The prototypical type
+.PN Object
+is defined with only this set of fields.
+Various routines can cast object pointers, as needed, to specific
+object types.
+.LP
+In
+.PN IntrinsicP.h :
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct _ObjectRec {
+ ObjectPart object;
+} ObjectRec, *Object;
+.De
+.LP
+.eM
+.IN "ObjectRec" "" "@DEF@"
+In
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+typedef struct _ObjectRec *Object;
+.De
+.LP
+.eM
+
+.NH 3
+Object Resources
+.XS
+\fB\*(SN Object Resources\fP
+.XE
+.LP
+The resource names, classes, and representation types specified in the
+.PN objectClassRec
+resource list are:
+.LP
+.TS
+lw(1.5i) lw(1.5i) lw(2.5i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNdestroyCallback XtCCallback XtRCallback
+.sp 6p
+_
+.TE
+
+.NH 3
+ObjectPart Default Values
+.XS
+\fB\*(SN ObjectPart Default Values\fP
+.XE
+.LP
+All fields in
+.PN ObjectPart
+have the same default values as the corresponding fields in
+.PN CorePart .
+
+.NH 3
+Object Arguments to \*(xI Routines
+.XS
+\*(SN Object Arguments to \*(xI Routines
+.XE
+.LP
+The WidgetClass arguments to the following procedures may be
+.PN objectClass
+or any subclass:
+.sp
+.IP
+.PN XtInitializeWidgetClass ,
+.PN XtCreateWidget ,
+.PN XtVaCreateWidget
+.IP
+.PN XtIsSubclass ,
+.PN XtCheckSubclass
+.IP
+.PN XtGetResourceList ,
+.PN XtGetConstraintResourceList
+.sp
+.LP
+The Widget arguments to the following procedures may be of class
+Object
+or any subclass:
+.sp
+.IP
+.PN XtCreateWidget ,
+.PN XtVaCreateWidget
+.IP
+.PN XtAddCallback ,
+.PN XtAddCallbacks ,
+.PN XtRemoveCallback ,
+.PN XtRemoveCallbacks ,
+.PN XtRemoveAllCallbacks ,
+.PN XtCallCallbacks ,
+.PN XtHasCallbacks ,
+.PN XtCallCallbackList
+.IP
+.PN XtClass ,
+.PN XtSuperclass ,
+.PN XtIsSubclass ,
+.PN XtCheckSubclass ,
+.PN XtIsObject ,
+.PN XtIsRectObj ,
+.PN XtIsWidget ,
+.PN XtIsComposite ,
+.PN XtIsConstraint ,
+.PN XtIsShell ,
+.PN XtIsOverrideShell ,
+.PN XtIsWMShell ,
+.PN XtIsVendorShell ,
+.PN XtIsTransientShell ,
+.PN XtIsToplevelShell ,
+.PN XtIsApplicationShell ,
+.PN XtIsSessionShell
+.IP
+.PN XtIsManaged ,
+.PN XtIsSensitive
+.br
+(both will return
+.PN False
+if argument is not a subclass of
+RectObj)
+.IP
+.PN XtIsRealized
+.br
+(returns the state of the nearest windowed ancestor
+if class of argument is not a subclass of
+Core)
+.IP
+.PN XtWidgetToApplicationContext
+.IP
+.PN XtDestroyWidget
+.IP
+.PN XtParent ,
+.PN XtDisplayOfObject ,
+.PN XtScreenOfObject ,
+.PN XtWindowOfObject
+.IP
+.PN XtSetKeyboardFocus
+(descendant)
+.IP
+.PN XtGetGC ,
+.PN XtReleaseGC
+.IP
+.PN XtName
+.IP
+.PN XtSetValues ,
+.PN XtGetValues ,
+.PN XtVaSetValues ,
+.PN XtVaGetValues
+.IP
+.PN XtGetSubresources ,
+.PN XtGetApplicationResources ,
+.PN XtVaGetSubresources ,
+.PN XtVaGetApplicationResources
+.IP
+.PN XtConvert ,
+.PN XtConvertAndStore
+.sp
+.LP
+The return value of the following procedures will be of class
+Object
+or a subclass:
+.sp
+.IP
+.PN XtCreateWidget ,
+.PN XtVaCreateWidget
+.IP
+.PN XtParent
+.IP
+.PN XtNameToWidget
+.sp
+.LP
+The return value of the following procedures will be
+.PN objectClass
+or a subclass:
+.sp
+.IP
+.PN XtClass ,
+.PN XtSuperclass
+
+.NH 3
+Use of Objects
+.XS
+\fB\*(SN Use of Objects\fP
+.XE
+.LP
+The
+Object
+class exists to enable programmers to use the \*(xI'
+classing and resource-handling mechanisms for things smaller
+and simpler than widgets.
+Objects make obsolete many common uses of subresources as described in
+Sections 9.4, 9.7.2.4, and 9.7.2.5.
+.LP
+Composite
+widget classes that wish to accept nonwidget children must
+set the \fIaccepts_objects\fP field in the
+.PN CompositeClassExtension
+structure to
+.PN True .
+.PN XtCreateWidget
+will otherwise generate an error message on an attempt to create a
+nonwidget child.
+.LP
+Of the classes defined by the \*(xI,
+ApplicationShell
+and
+SessionShell
+accept nonwidget children, and the class of any nonwidget child
+must not be
+.PN rectObjClass
+or any subclass. The intent of allowing
+Object
+children of
+ApplicationShell
+and
+SessionShell
+is to provide clients a simple mechanism
+for establishing the resource-naming root of an object hierarchy.
+
+.NH 2
+Rectangle Objects
+.XS
+\fB\*(SN Rectangle Objects\fP
+.XE
+.LP
+The class of rectangle objects is a subclass of
+Object
+that represents
+rectangular areas. It encapsulates the mechanisms for geometry
+management and is called RectObj
+.IN "RectObj" "" "@DEF@"
+to avoid conflict with the Xlib
+.PN Rectangle
+data type.
+
+.NH 3
+RectObjClassPart Structure
+.XS
+\*(SN RectObjClassPart Structure
+.XE
+.LP
+As with the
+.PN ObjectClassPart
+structure, all fields in the
+.PN RectObjClassPart
+structure have the same
+purpose and function as the corresponding fields in
+.PN CoreClassPart ;
+fields whose names are rect\fI\s+1n\s-1\fP for some integer
+\fI\s+1n\s-1\fP are not used for
+RectObj, but exist to pad the data structure so that it matches
+Core's
+class record. The class record initialization must fill all
+rect\fI\s+1n\s-1\fP fields with NULL or zero as appropriate to the type.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.IN "RectObjClassPart" "" "@DEF@"
+typedef struct _RectObjClassPart {
+ WidgetClass superclass;
+ String class_name;
+ Cardinal widget_size;
+ XtProc class_initialize;
+ XtWidgetClassProc class_part_initialize;
+ XtEnum class_inited;
+ XtInitProc initialize;
+ XtArgsProc initialize_hook;
+ XtProc rect1;
+ XtPointer rect2;
+ Cardinal rect3;
+ XtResourceList resources;
+ Cardinal num_resources;
+ XrmClass xrm_class;
+ Boolean rect4;
+ XtEnum rect5;
+ Boolean rect6;
+ Boolean rect7;
+ XtWidgetProc destroy;
+ XtWidgetProc resize;
+ XtExposeProc expose;
+ XtSetValuesFunc set_values;
+ XtArgsFunc set_values_hook;
+ XtAlmostProc set_values_almost;
+ XtArgsProc get_values_hook;
+ XtProc rect9;
+ XtVersionType version;
+ XtPointer callback_private;
+ String rect10;
+ XtGeometryHandler query_geometry;
+ XtProc rect11;
+ XtPointer extension ;
+} RectObjClassPart;
+.De
+.LP
+.eM
+The
+RectObj
+class record consists of just the
+.PN RectObjClassPart .
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.IN "RectObjClassRec" "" "@DEF@"
+.IN "RectObjClass" "" "@DEF@"
+typedef struct _RectObjClassRec {
+ RectObjClassPart rect_class;
+} RectObjClassRec, *RectObjClass;
+.De
+.LP
+.eM
+The predefined class record and pointer for
+.PN RectObjClassRec
+are
+.LP
+In
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+extern RectObjClassRec rectObjClassRec;
+.De
+.LP
+.eM
+In
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+extern WidgetClass rectObjClass;
+.De
+.LP
+.eM
+The opaque types
+.PN RectObj
+and
+.PN RectObjClass
+and the opaque variable
+.PN rectObjClass
+are defined for generic actions on objects
+whose class is RectObj or a subclass of
+RectObj.
+.PN Intrinsic.h
+uses an incomplete structure definition to ensure that the compiler
+catches attempts to access private data:
+.LP
+.sM
+.Ds 0
+typedef struct _RectObjClassRec* RectObjClass;
+.De
+.LP
+.eM
+
+.NH 3
+RectObjPart Structure
+.XS
+\*(SN RectObjPart Structure
+.XE
+.LP
+In addition to the
+.PN ObjectPart
+fields,
+RectObj
+objects have the following fields defined in the
+.PN RectObjPart
+structure. All fields have the same meaning as the corresponding field in
+.PN CorePart .
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.IN "RectObjPart" "" "@DEF@"
+typedef struct _RectObjPart {
+ Position x, y;
+ Dimension width, height;
+ Dimension border_width;
+ Boolean managed;
+ Boolean sensitive;
+ Boolean ancestor_sensitive;
+} RectObjPart;
+.De
+.LP
+.eM
+RectObj
+objects have the RectObj fields immediately following the Object fields.
+.LP
+.sM
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+.IN "RectObjRec" "" "@DEF@"
+typedef struct _RectObjRec {
+ ObjectPart object;
+ RectObjPart rectangle;
+} RectObjRec, *RectObj;
+.De
+.LP
+.eM
+In
+.PN Intrinsic.h :
+.LP
+.sM
+.Ds 0
+typedef struct _RectObjRec* RectObj;
+.De
+.LP
+.eM
+
+.NH 3
+RectObj Resources
+.XS
+\fB\*(SN RectObj Resources\fP
+.XE
+.LP
+The resource names, classes, and representation types that are specified in the
+.PN rectObjClassRec
+resource list are:
+.TS
+lw(1.5i) lw(1.5i) lw(2.5i) .
+_
+.sp 6p
+Name Class Representation
+.sp 6p
+_
+.sp 6p
+XtNancestorSensitive XtCSensitive XtRBoolean
+XtNborderWidth XtCBorderWidth XtRDimension
+XtNheight XtCHeight XtRDimension
+XtNsensitive XtCSensitive XtRBoolean
+XtNwidth XtCWidth XtRDimension
+XtNx XtCPosition XtRPosition
+XtNy XtCPosition XtRPosition
+.sp 6p
+_
+.TE
+
+.NH 3
+RectObjPart Default Values
+.XS
+\fB\*(SN RectObjPart Default Values\fP
+.XE
+.LP
+All fields in
+.PN RectObjPart
+have the same default values as the corresponding fields in
+.PN CorePart .
+
+.NH 3
+Widget Arguments to \*(xI Routines
+.XS
+\fB\*(SN Widget Arguments to \*(xI Routines\fP
+.XE
+.LP
+The WidgetClass arguments to the following procedures may be
+.PN rectObjClass
+or any subclass:
+.sp
+.IP
+.PN XtCreateManagedWidget ,
+.PN XtVaCreateManagedWidget
+.sp
+.LP
+The Widget arguments to the following procedures may be of class
+RectObj
+or any subclass:
+.sp
+.IP
+.PN XtConfigureWidget ,
+.PN XtMoveWidget ,
+.PN XtResizeWidget
+.IP
+.PN XtMakeGeometryRequest ,
+.PN XtMakeResizeRequest
+.IP
+.PN XtManageChildren ,
+.PN XtManageChild ,
+.PN XtUnmanageChildren ,
+.PN XtUnmanageChild ,
+.PN XtChangeManagedSet
+.IP
+.PN XtQueryGeometry
+.IP
+.PN XtSetSensitive
+.IP
+.PN XtTranslateCoords
+.sp
+.LP
+The return value of the following procedures will be of class
+RectObj
+or a subclass:
+.sp
+.IP
+.PN XtCreateManagedWidget ,
+.PN XtVaCreateManagedWidget
+
+.NH 3
+Use of Rectangle Objects
+.XS
+\*(SN Use of Rectangle Objects
+.XE
+.LP
+RectObj
+can be subclassed to provide widgetlike objects (sometimes
+called gadgets) that do not use windows and do not have those
+features that are seldom used in simple widgets. This can save memory
+resources both in the server and in applications
+but requires additional support code in the parent.
+In the following
+discussion, \fIrectobj\fP refers only to objects
+whose class is RectObj or a subclass of
+RectObj,
+but not Core or a subclass of
+Core.
+.LP
+Composite
+widget classes that wish to accept rectobj children must set
+the \fIaccepts_objects\fP field in the
+.PN CompositeClassExtension
+extension structure to
+.PN True .
+.PN XtCreateWidget
+or
+.PN XtCreateManagedWidget
+will otherwise generate an error if called to create a nonwidget child.
+If the composite widget supports only children of class
+RectObj
+or a subclass (i.e., not of the general Object class), it
+must declare an insert_child procedure and check the subclass of each
+new child in that procedure. None of the classes defined by the
+\*(xI accept rectobj children.
+.LP
+If gadgets are defined in an object set, the parent is responsible for
+much more than the parent of a widget. The parent must request and handle
+input events that occur for the gadget and is responsible for making
+sure that when it receives an exposure event the gadget children get
+drawn correctly.
+Rectobj children may
+have expose procedures
+specified in their class records, but the parent is free to
+ignore them, instead drawing the contents of the child itself. This
+can potentially save graphics context switching. The precise contents
+of the exposure event and region arguments to the RectObj expose
+procedure are not specified by the \*(xI; a particular rectangle object is
+free to define the coordinate system origin (self-relative or
+parent-relative) and whether or not the rectangle or region is assumed to
+have been intersected with the visible region of the object.
+.LP
+In general, it is expected that a composite widget that accepts
+nonwidget children will document those children it is able to handle,
+since a gadget cannot be viewed as a completely self-contained entity,
+as can a widget. Since a particular composite widget class is usually
+designed to handle nonwidget children of only a limited set of classes, it should
+check the classes of newly added children in its insert_child
+procedure to make sure that it can deal with them.
+.LP
+The \*(xI will clear areas of a parent window obscured by
+rectobj children, causing exposure events, under the following
+circumstances:
+.IP \(bu 5
+A rectobj child is managed or unmanaged.
+.IP \(bu 5
+In a call to
+.PN XtSetValues
+on a rectobj child, one or more of the set_values procedures returns
+.PN True .
+.IP \(bu 5
+In a call to
+.PN XtConfigureWidget
+on a rectobj child, areas will
+be cleared corresponding to both the old and the new child
+geometries, including the border, if the geometry changes.
+.IP \(bu 5
+In a call to
+.PN XtMoveWidget
+on a rectobj child, areas will be
+cleared corresponding to both the old and the new child
+geometries, including the border, if the geometry changes.
+.IP \(bu 5
+In a call to
+.PN XtResizeWidget
+on a rectobj child, a single
+rectangle will be cleared corresponding to the larger of the
+old and the new child geometries if they are different.
+.IP \(bu 5
+In a call to
+.PN XtMakeGeometryRequest
+(or
+.PN XtMakeResizeRequest )
+on a rectobj child with
+.PN XtQueryOnly
+not set, if the manager returns
+.PN XtGeometryYes ,
+two rectangles will be cleared corresponding to both the old and
+the new child geometries.
+.LP
+Stacking order is not supported for rectobj children. Composite widgets with
+rectobj children are free to define any semantics desired if the child
+geometries overlap, including making this an error.
+.LP
+When a rectobj is playing the role of a widget, developers must be
+reminded to avoid making assumptions about the object passed in the
+Widget argument to a callback procedure.
+
+.NH 2
+Undeclared Class
+.XS
+\*(SN Undeclared Class
+.XE
+.LP
+The \*(xI define an unnamed class between
+RectObj
+and
+Core
+for possible future use by the X Consortium. The only assumptions that
+may be made about the unnamed class are
+.IP \(bu 5
+The \fIcore_class.superclass\fP field of
+.PN coreWidgetClassRec
+contains a pointer to the unnamed class record.
+.IP \(bu 5
+A pointer to the unnamed class record when dereferenced as an
+.PN ObjectClass
+will contain a pointer to
+.PN rectObjClassRec
+in its \fIobject_class.superclass\fP field.
+.LP
+Except for the above, the contents of the class record for this class
+and the result of an attempt to subclass or to create a widget of this
+unnamed class are undefined.
+
+.NH 2
+Widget Arguments to \*(xI Routines
+.XS
+\*(SN Widget Arguments to \*(xI Routines
+.XE
+.LP
+The WidgetClass arguments to the following procedures must be of class
+Shell
+or a subclass:
+.sp
+.IP
+.PN XtCreatePopupShell ,
+.PN XtVaCreatePopupShell ,
+.PN XtAppCreateShell ,
+.PN XtVaAppCreateShell ,
+.PN XtOpenApplication ,
+.PN XtVaOpenApplication
+.sp
+.LP
+The Widget arguments to the following procedures must be of class
+Core
+or any subclass:
+.sp
+.IP
+.PN XtCreatePopupShell ,
+.PN XtVaCreatePopupShell
+.IP
+.PN XtAddEventHandler ,
+.PN XtAddRawEventHandler ,
+.PN XtRemoveEventHandler ,
+.br
+.PN XtRemoveRawEventHandler ,
+.PN XtInsertEventHandler ,
+.PN XtInsertRawEventHandler
+.br
+.PN XtInsertEventTypeHandler ,
+.PN XtRemoveEventTypeHandler ,
+.IP
+.PN XtRegisterDrawable
+.PN XtDispatchEventToWidget
+.IP
+.PN XtAddGrab ,
+.PN XtRemoveGrab ,
+.PN XtGrabKey ,
+.PN XtGrabKeyboard ,
+.PN XtUngrabKey ,
+.PN XtUngrabKeyboard ,
+.PN XtGrabButton ,
+.PN XtGrabPointer ,
+.PN XtUngrabButton ,
+.br
+.PN XtUngrabPointer
+.IP
+.PN XtBuildEventMask
+.IP
+.PN XtCreateWindow ,
+.PN XtDisplay ,
+.PN XtScreen ,
+.PN XtWindow
+.IP
+.PN XtNameToWidget
+.IP
+.PN XtGetSelectionValue ,
+.PN XtGetSelectionValues ,
+.PN XtOwnSelection ,
+.PN XtDisownSelection ,
+.PN XtOwnSelectionIncremental ,
+.PN XtGetSelectionValueIncremental ,
+.PN XtGetSelectionValuesIncremental ,
+.br
+.PN XtGetSelectionRequest
+.IP
+.PN XtInstallAccelerators ,
+.PN XtInstallAllAccelerators
+(both destination and source)
+.IP
+.PN XtAugmentTranslations ,
+.PN XtOverrideTranslations ,
+.PN XtUninstallTranslations ,
+.br
+.PN XtCallActionProc
+.IP
+.PN XtMapWidget ,
+.PN XtUnmapWidget
+.IP
+.PN XtRealizeWidget ,
+.PN XtUnrealizeWidget
+.IP
+.PN XtSetMappedWhenManaged
+.IP
+.PN XtCallAcceptFocus ,
+.PN XtSetKeyboardFocus
+(subtree)
+.IP
+.PN XtResizeWindow
+.IP
+.PN XtSetWMColormapWindows
+.sp
+.LP
+The Widget arguments to the following procedures must be of class
+Composite
+or any subclass:
+.sp
+.IP
+.PN XtCreateManagedWidget ,
+.PN XtVaCreateManagedWidget
+.sp
+.LP
+The Widget arguments to the following procedures must be of a subclass of
+Shell:
+.sp
+.IP
+.PN XtPopdown ,
+.PN XtCallbackPopdown ,
+.PN XtPopup ,
+.PN XtCallbackNone ,
+.PN XtCallbackNonexclusive ,
+.PN XtCallbackExclusive ,
+.PN XtPopupSpringLoaded
+.sp
+.LP
+The return value of the following procedure will be of class
+Core
+or a subclass:
+.sp
+.IP
+.PN XtWindowToWidget
+.sp
+.LP
+The return value of the following procedures will be of a subclass of
+Shell:
+.sp
+.IP
+.PN XtAppCreateShell ,
+.PN XtVaAppCreateShell ,
+.PN XtAppInitialize ,
+.PN XtVaAppInitialize ,
+.PN XtCreatePopupShell ,
+.PN XtVaCreatePopupShell
+.bp
diff --git a/specs/Xt/CH13 b/specs/Xt/CH13
new file mode 100644
index 0000000..401f3d4
--- /dev/null
+++ b/specs/Xt/CH13
@@ -0,0 +1,805 @@
+.\" $Xorg: CH13,v 1.3 2000/08/17 19:42:47 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+\&
+.sp 1
+.ce 3
+\s+1\fBChapter 13\fP\s-1
+
+\s+1\fBEvolution of the \*(xI\fP\s-1
+.sp 2
+.nr H1 13
+.nr H2 0
+.nr H3 0
+.nr H4 0
+.nr H5 0
+.LP
+.XS
+Chapter 13 \(em Evolution of the \*(xI
+.XE
+.LP
+The interfaces described by this specification have undergone several
+sets of revisions in the course of adoption as an X Consortium
+standard specification. Having now been adopted by the Consortium as
+a standard part of the X Window System, it is expected that this and
+future revisions will retain
+backward compatibility in the sense that fully conforming
+implementations of these specifications may be produced that provide
+source compatibility with widgets and applications written to
+previous Consortium standard revisions.
+.LP
+The \*(xI do not place any special requirement on widget
+programmers to retain source or binary compatibility for their widgets
+as they evolve, but several conventions have been established to
+assist those developers who want to provide such compatibility.
+.LP
+In particular, widget programmers may wish to conform to the convention
+described in Section 1.6.12 when defining class extension records.
+
+.NH 2
+Determining Specification Revision Level
+.XS
+\fB\*(SN Determining Specification Revision Level\fP
+.XE
+.LP
+Widget and application developers who wish to maintain a common source
+pool that will build properly with implementations of the \*(xI
+at different revision levels of these specifications but that take
+advantage of newer features added in later revisions may use the
+symbolic macro
+.PN XtSpecificationRelease .
+.LP
+.Ds 0
+#define XtSpecificationRelease 6
+.De
+.IN "XtSpecificationRelease" "" "@DEF@"
+.LP
+As the symbol
+.PN XtSpecificationRelease
+was new to Release 4, widgets and
+applications desiring to build against earlier implementations should
+test for the presence of this symbol and assume only Release 3
+interfaces if the definition is not present.
+
+.NH 2
+Release 3 to Release 4 Compatibility
+.XS
+\fB\*(SN Release 3 to Release 4 Compatibility\fP
+.XE
+.LP
+At the data structure level, Release 4 retains binary compatibility
+with Release 3 (the first X Consortium standard release) for all data
+structures except
+.PN WMShellPart,
+.PN TopLevelShellPart ,
+and
+.PN TransientShellPart .
+Release 4 changed the argument type to most procedures that now take
+arguments of type
+.PN XtPointer
+and structure members that are now of type
+.PN XtPointer
+in order to avoid potential ANSI C conformance problems. It is
+expected that most implementations will be binary compatible with the
+previous definition.
+.LP
+Two fields in
+.PN CoreClassPart
+were changed from
+.PN Boolean
+to
+.PN XtEnum
+to allow implementations additional freedom in specifying the
+representations of each. This change should require no source
+modification.
+
+.NH 3
+Additional Arguments
+.XS
+\*(SN Additional Arguments
+.XE
+.LP
+Arguments were added to the procedure definitions for
+.PN XtInitProc ,
+.PN XtSetValuesFunc ,
+and
+.PN XtEventHandler
+to provide more information and to
+allow event handlers to abort further dispatching of the current event
+(caution is advised!). The added arguments to
+.PN XtInitProc
+and
+.PN XtSetValuesFunc
+make the initialize_hook and set_values_hook methods
+obsolete, but the hooks have been retained for those widgets that used
+them in Release 3.
+
+.NH 3
+set_values_almost Procedures
+.XS
+\*(SN set_values_almost Procedures
+.XE
+.LP
+The use of the arguments by a set_values_almost procedure was poorly
+described in Release 3 and was inconsistent with other conventions.
+.LP
+The current specification for the manner in which a set_values_almost
+procedure returns information to the \*(xI is not compatible with
+the Release 3 specification, and all widget implementations should
+verify that any set_values_almost procedures conform to the current
+interface.
+.LP
+No known implementation of the \*(xI correctly implemented the
+Release 3 interface, so it is expected that the impact of this
+specification change is small.
+
+.NH 3
+Query Geometry
+.XS
+\*(SN Query Geometry
+.XE
+.LP
+A composite widget layout routine that calls
+.PN XtQueryGeometry
+is now expected to store the complete new geometry in the intended structure;
+previously the specification said ``store the changes it intends to
+make''. Only by storing the complete geometry does the child have
+any way to know what other parts of the geometry may still be
+flexible. Existing widgets should not be affected by this, except
+to take advantage of the new information.
+
+.NH 3
+unrealizeCallback Callback List
+.XS
+\*(SN unrealizeCallback Callback List
+.XE
+.LP
+In order to provide a mechanism for widgets to be notified when they
+become unrealized through a call to
+.PN XtUnrealizeWidget ,
+the callback
+list name ``unrealizeCallback'' has been defined by the \*(xI. A
+widget class that requires notification on unrealize may declare a
+callback list resource by this name. No class is required to declare
+this resource, but any class that did so in a prior revision may find
+it necessary to modify the resource name if it does not wish to use the new
+semantics.
+
+.NH 3
+Subclasses of WMShell
+.XS
+\*(SN Subclasses of WMShell
+.XE
+.LP
+The formal adoption of the \fI\*(xC\fP as
+an X Consortium standard has meant the addition of four fields to
+.PN WMShellPart
+and one field to
+.PN TopLevelShellPart .
+In deference to some
+widget libraries that had developed their own additional conventions
+to provide binary compatibility, these five new fields were added at
+the end of the respective data structures.
+.LP
+To provide more convenience for TransientShells, a field was added
+to the previously empty
+.PN TransientShellPart .
+On some architectures the size of the part structure will not
+have changed as a result of this.
+.LP
+Any widget implementation whose class is a subclass of
+TopLevelShell
+or
+TransientShell
+must at minimum be
+recompiled with the new data structure declarations. Because
+.PN WMShellPart
+no longer contains a contiguous
+.PN XSizeHints
+data structure,
+a subclass that expected to do a single structure assignment of an
+.PN XSizeHints
+structure to the \fIsize_hints\fP field of
+.PN WMShellPart
+must be revised, though the old fields remain at the same positions within
+.PN WMShellPart .
+
+.NH 3
+Resource Type Converters
+.XS
+\*(SN Resource Type Converters
+.XE
+.LP
+A new interface declaration for resource type converters was defined
+to provide more information to converters, to support conversion
+cache cleanup with resource reference counting, and to allow
+additional procedures to be declared to free resources. The old
+interfaces remain (in the compatibility section), and a new set of
+procedures was defined that work only with the new type converter
+interface.
+.LP
+In the now obsolete old type converter interface, converters are
+reminded that they must return the size of the converted value as well
+as its address. The example indicated this, but the description of
+.PN XtConverter
+was incomplete.
+
+.NH 3
+KeySym Case Conversion Procedure
+.XS
+\*(SN KeySym Case Conversion Procedure
+.XE
+.LP
+The specification for the
+.PN XtCaseProc
+function type has been changed
+to match the Release 3 implementation, which included necessary
+additional information required by the function (a pointer to the
+display connection), and corrects the argument type of the source
+KeySym parameter. No known implementation of the \*(xI
+implemented the previously documented interface.
+
+.NH 3
+Nonwidget Objects
+.XS
+\*(SN Nonwidget Objects
+.XE
+.LP
+Formal support for nonwidget objects is new to Release 4. A
+prototype implementation was latent in at least one Release 3
+implementation of the \*(xI, but the specification has changed
+somewhat. The most significant change is the requirement for a
+composite widget to declare the
+.PN CompositeClassExtension
+record with the \fIaccepts_objects\fP field set to
+.PN True
+in order to permit a client to create a nonwidget child.
+.LP
+The addition of this extension field ensures that composite widgets
+written under Release 3 will not encounter unexpected errors if an
+application attempts to create a nonwidget child. In Release 4 there
+is no requirement that all composite widgets implement the extra
+functionality required to manage windowless children, so the
+\fIaccept_objects\fP field allows a composite widget to declare that it
+is not prepared to do so.
+
+.NH 2
+Release 4 to Release 5 Compatibility
+.XS
+\fB\*(SN Release 4 to Release 5 Compatibility\fP
+.XE
+.LP
+At the data structure level, Release 5 retains complete binary
+compatibility with Release 4. The specification of the
+.PN ObjectPart ,
+.PN RectObjPart ,
+.PN CorePart ,
+.PN CompositePart ,
+.PN ShellPart ,
+.PN WMShellPart ,
+.PN TopLevelShellPart ,
+and
+.PN ApplicationShellPart
+instance records was made less strict to permit implementations to
+add internal fields to these structures. Any implementation that
+chooses to do so would, of course, force a recompilation.
+The Xlib specification for
+.PN XrmValue
+and
+.PN XrmOptionDescRec
+was updated to use a new type,
+.PN XPointer ,
+for the \fIaddr\fP and \fIvalue\fP fields, respectively, to avoid
+ANSI C conformance problems. The definition of
+.PN XPointer
+is binary compatible with the previous implementation.
+
+.NH 3
+baseTranslations Resource
+.XS
+\fB\*(SN baseTranslations Resource\fP
+.XE
+
+.LP
+A new pseudo-resource, XtNbaseTranslations, was defined to permit
+application developers to specify translation tables in application
+defaults files while still giving end users the ability to augment
+or override individual event sequences. This change will affect
+only those applications that wish to take advantage of the new
+functionality or those widgets that may have previously defined
+a resource named ``baseTranslations''.
+.LP
+Applications wishing to take advantage of the new functionality
+would change their application defaults file, e.g., from
+.Ds
+ app.widget.translations: \fIvalue\fP
+.DE
+to
+.Ds
+ app.widget.baseTranslations: \fIvalue\fP
+.DE
+If it is important to the application to preserve complete
+compatibility of the defaults file between different versions
+of the application running under Release 4 and Release 5,
+the full translations can be replicated in both the ``translations''
+and the ``baseTranslations'' resource.
+
+.NH 3
+Resource File Search Path
+.XS
+\fB\*(SN Resource File Search Path\fP
+.XE
+
+.LP
+The current specification allows implementations greater flexibility
+in defining the directory structure used to hold the application class
+and per-user application defaults files. Previous specifications
+required the substitution strings to appear in the default path in a
+certain order, preventing sites from collecting all the files for
+a specific application together in one directory. The Release 5
+specification allows the default path to specify the substitution
+strings in any order within a single path entry. Users will need to
+pay close attention to the documentation for the specific
+implementation to know where to find these files and how to specify
+their own
+.PN \s-1XFILESEARCHPATH\s+1
+and
+.PN \s-1XUSERFILESEARCHPATH\s+1
+values when overriding the system defaults.
+
+.NH 3
+Customization Resource
+.XS
+\fB\*(SN Customization Resource\fP
+.XE
+
+.LP
+.PN XtResolvePathname
+supports a new substitution string, %C, for specifying separate
+application class resource files according to arbitrary user-specified
+categories. The primary motivation for this addition was separate
+monochrome and color application class defaults files. The
+substitution value is obtained by querying the current resource
+database for the application resource name ``customization'', class
+``Customization''. Any application that previously used this
+resource name and class will need to be aware of the possibly
+conflicting semantics.
+
+.NH 3
+Per-Screen Resource Database
+.XS
+\fB\*(SN Per-Screen Resource Database\fP
+.XE
+
+.LP
+To allow a user to specify separate preferences for each screen of a
+display, a per-screen resource specification string has been added and
+multiple resource databases are created; one for each screen. This
+will affect any application that modified the (formerly unique)
+resource database associated with the display subsequent to the \*(xI
+database initialization. Such applications will need to be aware
+of the particular screen on which each shell widget is to be created.
+.LP
+Although the wording of the specification changed substantially in the
+description of the process by which the resource database(s) is
+initialized, the net effect is the same as in prior releases with the
+exception of the added per-screen resource specification and the new
+customization substitution string in
+.PN XtResolvePathname .
+
+.NH 3
+Internationalization of Applications
+.XS
+\fB\*(SN Internationalization of Applications\fP
+.XE
+
+.LP
+Internationalization as defined by ANSI is a technology that
+allows support of an application in a single locale. In
+adding support for internationalization to the \*(xI
+the restrictions of this model have been followed.
+In particular, the new \*(xI interfaces are designed not to
+preclude an application from using other alternatives.
+For this reason, no \*(xI routine makes a call to establish the
+locale. However, a convenience routine to establish the
+locale at initialize time has been provided, in the form
+of a default procedure that must be explicitly installed
+if the application desires ANSI C locale behavior.
+.LP
+As many objects in X, particularly resource databases, now inherit
+the global locale when they are created, applications wishing to use
+the ANSI C locale model should use the new function
+.PN XtSetLanguageProc
+to do so.
+.LP
+The internationalization additions also define event filters
+as a part of the Xlib Input Method specifications. The
+\*(xI enable the use of event filters through additions to
+.PN XtDispatchEvent .
+Applications that may not be dispatching all events through
+.PN XtDispatchEvent
+should be reviewed in the context of this new input method mechanism.
+.LP
+In order to permit internationalization of error messages, the name
+and path of the error database file are now allowed to be
+implementation-dependent.
+No adequate standard mechanism has yet been suggested to
+allow the \*(xI to locate the database from localization information
+supplied by the client.
+.LP
+The previous specification for the syntax of the language string
+specified by
+.PN xnlLanguage
+has been dropped to avoid potential conflicts with other standards.
+The language string syntax is now implementation-defined.
+The example syntax cited is consistent with the previous
+specification.
+
+.NH 3
+Permanently Allocated Strings
+.XS
+\*(SN Permanently Allocated Strings
+.XE
+
+.LP
+In order to permit additional memory savings, an Xlib interface was
+added to allow the resource manager to avoid copying certain string
+constants. The \*(xI specification was updated to explicitly require
+the Object \fIclass_name\fP, \fIresource_name\fP, \fIresource_class\fP,
+\fIresource_type\fP, \fIdefault_type\fP in resource tables, Core \fIactions\fP
+\fIstring\fP field, and Constraint \fIresource_name\fP, \fIresource_class\fP,
+\fIresource_type\fP, and \fIdefault_type\fP resource fields to be
+permanently allocated. This explicit requirement is expected to
+affect only applications that may create and destroy classes
+on the fly.
+
+.NH 3
+Arguments to Existing Functions
+.XS
+\fB\*(SN Arguments to Existing Functions\fP
+.XE
+
+.LP
+The \fIargs\fP argument to
+.PN XtAppInitialize ,
+.PN XtVaAppInitialize ,
+.PN XtOpenDisplay ,
+.PN XtDisplayInitialize ,
+and
+.PN XtInitialize
+were changed from
+.PN Cardinal *
+to int* to conform to pre-existing convention and avoid otherwise
+annoying typecasting in ANSI C environments.
+
+.NH 2
+Release 5 to Release 6 Compatibility
+.XS
+\fB\*(SN Release 5 to Release 6 Compatibility\fP
+.XE
+.LP
+At the data structure level, Release 6 retains binary compatibility
+with Release 5 for all data structures except
+.PN WMShellPart .
+Three resources were added to the specification.
+The known implementations had unused space in the data structure,
+therefore on some architectures and implementations,
+the size of the part structure will not have changed as a result of this.
+
+.NH 3
+Widget Internals
+.XS
+\*(SN Widget Internals
+.XE
+.LP
+Two new widget methods for instance allocation and deallocation were added
+to the Object class. These new methods
+allow widgets to be treated as C++ objects in the C++ environment
+when an appropriate allocation method is specified or inherited
+by the widget class.
+.LP
+The textual descriptions of the processes of widget creation and
+widget destruction have been edited to provide clarification to widget
+writers. Widgets writers may have reason to rely on the specific order of
+the stages of widget creation and destruction; with that motivation,
+the specification now more exactly describes the process.
+.LP
+As a convenience, an interface to locate a widget class extension
+record on a linked list,
+.PN XtGetClassExtension ,
+has been added.
+.LP
+A new option to allow bundled changes to the managed set of a Composite
+widget is introduced in the Composite class extension record.
+Widgets that define a change_managed procedure that can accommodate
+additions and deletions to the managed set of children in a single
+invocation should set allows_change_managed_set to \fBTrue\fP in the
+extension record.
+.LP
+The wording of the process followed by
+.PN XtUnmanageChildren
+has changed slightly to better handle changes to the managed set
+during phase 2 destroy processing.
+.LP
+A new exposure event compression flag,
+.PN XtExposeNoRegion ,
+was added. Many widgets specify exposure compression, but either
+ignore the actual damage region passed to the core expose procedure or
+use only the cumulative bounding box data available in the event.
+Widgets with expose procedures that do not make use of exact
+exposure region information can indicate that the \*(xI need not
+compute the region.
+
+.NH 3
+General Application Development
+.XS
+\*(SN General Application Development
+.XE
+.LP
+.PN XtOpenApplication
+is a new convenience procedure to initialize the toolkit, create an
+application context, open an X display connection, and create the
+root of the widget instance tree. It is identical to the interface
+it replaces,
+.PN XtAppInitialize ,
+in all respects except that it takes an additional argument specifying
+the widget class of the root shell to create.
+This interface is now the recommended one so that clients may easily
+become session participants.
+The old convenience procedures appear in the compatibility section.
+.LP
+The toolkit initialization function
+.PN XtToolkitInitialize
+may be called multiple times without penalty.
+.LP
+In order to optimize changes in geometry to a set of geometry-managed
+children, a new interface,
+.PN XtChangeManagedSet ,
+has been added.
+
+.NH 3
+Communication with Window and Session Managers
+.XS
+\*(SN Communication with Window and Session Managers
+.XE
+.LP
+The revision of the \fI\*(xC\fP as an X Consortium standard has resulted
+in the addition of three fields to the specification of
+.PN WMShellPart .
+These are \fIurgency\fP, \fIclient_leader\fP, and \fIwindow_role\fP.
+.LP
+The adoption of the \fIX Session Management Protocol\fP as an X Consortium
+standard has resulted in the addition of a new shell widget,
+.PN SessionShell ,
+and an accompanying subclass verification interface,
+.PN XtIsSessionShell .
+This widget provides support for communication between an application
+and a session manager, as well as a window manager.
+In order to preserve compatibility with existing subclasses of
+.PN ApplicationShell ,
+the
+.PN ApplicationShell
+was subclassed to create the new widget class.
+The session protocol requires a modal response to certain checkpointing
+operations by participating applications. The
+.PN SessionShell
+structures
+the application's notification of and responses to messages from the session
+manager by use of various callback lists and by use of the new interfaces
+.PN XtSessionGetToken
+and
+.PN XtSessionReturnToken .
+There is also a new command line argument, -xtsessionID, which facilitates
+the session manager in restarting applications based on the \*(xI.
+.LP
+The resource name and class strings defined by the \*(xI shell
+widgets in
+.Pn < X11/Shell.h >
+are now listed in Appendix E. The addition of a new symbol
+for the
+.PN WMShell
+\fIwait_for_wm\fP resource was made to bring the external symbol
+and the string it represents into agreement. The actual resource name
+string in
+.PN WMShell
+has not changed.
+The resource representation type of the XtNwinGravity resource of the
+.PN WMShell
+was changed to XtRGravity in order to register a type
+converter so that window gravity resource values could be specified by name.
+
+.NH 3
+Geometry Management
+.XS
+\*(SN Geometry Management
+.XE
+.LP
+A clarification to the specification was made to indicate that geometry
+requests may include current values along with the requested changes.
+
+.NH 3
+Event Management
+.XS
+\*(SN Event Management
+.XE
+.LP
+In Release 6, support is provided for registering selectors
+and event handlers for events generated by X protocol extensions
+and for dispatching those events to the appropriate widget.
+The new event handler registration interfaces are
+.PN XtInsertEventTypeHandler
+and
+.PN XtRemoveEventTypeHandler .
+Since the mechanism to indicate selection of extension events is specific
+to the extension being used, the \*(xI introduces
+.PN XtRegisterExtensionSelector ,
+which allows the application to select for the events of interest.
+In order to change the dispatching algorithm to accommodate extension events
+as well as core X protocol events,
+the \*(xI event dispatcher may now be replaced or enveloped
+by the application with
+.PN XtSetEventDispatcher .
+The dispatcher may wish to call
+.PN XtGetKeyboardFocusWidget
+to determine the widget with the current \*(xI keyboard focus.
+A dispatcher, after determining the destination widget, may use
+.PN XtDispatchEventToWidget
+to cause the event to be dispatched to the event handlers registered
+by a specific widget.
+.LP
+To permit the dispatching of events
+for nonwidget drawables, such as pixmaps that are not associated
+with a widget's window,
+.PN XtRegisterDrawable
+and
+.PN XtUnregisterDrawable
+have been added to the library. A related update was made to
+the description of
+.PN XtWindowToWidget .
+.LP
+The library is now thread-safe, allowing one thread at a time to
+enter the library and protecting global data as necessary from concurrent use.
+Threaded toolkit applications are supported by the
+new interfaces
+.PN XtToolkitThreadInitialize ,
+.PN XtAppLock ,
+.PN XtAppUnlock ,
+.PN XtAppSetExitFlag ,
+and
+.PN XtAppGetExitFlag .
+Widget writers may also use
+.PN XtProcessLock
+and
+.PN XtProcessUnlock .
+.LP
+Safe handling of POSIX signals and other asynchronous notifications
+is now provided by use of
+.PN XtAppAddSignal ,
+.PN XtNoticeSignal ,
+and
+.PN XtRemoveSignal .
+.LP
+The application can receive notification of an impending block
+in the \*(xI event manager by registering interest through
+.PN XtAppAddBlockHook
+and
+.PN XtRemoveBlockHook .
+.LP
+.PN XtLastEventProcessed
+returns the most recent event passed to
+.PN XtDispatchEvent
+for a specified display.
+
+.NH 3
+Resource Management
+.XS
+\*(SN Resource Management
+.XE
+.LP
+Resource converters are registered by the \*(xI for window gravity
+and for three new resource types associated with session participation:
+RestartStyle, CommandArgArray and DirectoryString.
+.LP
+The file search path syntax has been extended to make it easier to
+include the default search path, which controls resource
+database construction, by using the new substitution string, %D.
+
+.NH 3
+Translation Management
+.XS
+\*(SN Translation Management
+.XE
+.LP
+The default key translator now recognizes the NumLock modifier.
+If NumLock is on and the second keysym is a keypad keysym
+(a standard keysym named with a ``KP'' prefix or a
+vendor-specific keysym in the hexadecimal range 0x11000000 to 0x1100FFFF),
+then the default key translator will
+use the first keysym if Shift and/or ShiftLock is on and will
+use the second keysym if neither is on. Otherwise, it will
+ignore NumLock and apply the normal protocol semantics.
+
+.NH 3
+Selections
+.XS
+\*(SN Selections
+.XE
+.LP
+The targets of selection requests may be parameterized, as described
+by the revised \fI\*(xC\fP.
+When such requests are made,
+.PN XtSetSelectionParameters
+is used by the requestor to specify the target parameters and
+.PN XtGetSelectionParameters
+is used by the selection owner to retrieve the parameters.
+When a parameterized target is specified in the context of a bundled
+request for multiple targets,
+.PN XtCreateSelectionRequest ,
+.PN XtCancelSelectionRequest ,
+and
+.PN XtSendSelectionRequest
+are used to envelop the assembly of the request.
+When the parameters themselves are the names of properties,
+the \*(xI provides support for the economical use of property atom names;
+see
+.PN XtReservePropertyAtom
+and
+.PN XtReleasePropertyAtom .
+
+.NH 3
+External Agent Hooks
+.XS
+\*(SN External Agent Hooks
+.XE
+.LP
+External agent hooks were added for the benefit of applications
+that instrument other applications for purposes of accessibility,
+testing, and customization. The external agent and the application
+communicate by a shared protocol which is transparent to the application.
+The hook callbacks permit the external agent to register interest
+in groups or classes of toolkit activity and to be notified of the
+type and details of the activity as it occurs. The new interfaces
+related to this effort are
+.PN XtHooksOfDisplay ,
+which returns the hook registration widget, and
+.PN XtGetDisplays ,
+which returns a list of the X displays associated with an application context.
+.bp
diff --git a/specs/Xt/Xtk.intr.front b/specs/Xt/Xtk.intr.front
new file mode 100644
index 0000000..0deb6dd
--- /dev/null
+++ b/specs/Xt/Xtk.intr.front
@@ -0,0 +1,334 @@
+.\" $Xorg: Xtk.intr.front,v 1.3 2000/08/17 19:42:48 cpqbld Exp $
+.\" MIT header page and copyright notice
+.\" MIT page header and footers
+.\"
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.sp 8
+.ce 4
+\s+2\fB\*(xT\fP\s-2
+
+\s+1\fBX Window System\fP\s-1
+
+\s+1\fBX Version 11, Release \*(Rn\fP\s-1
+
+
+First Revision - April, 1994
+.sp 5
+.ce 4
+\s-1Joel McCormack
+.sp 6p
+Digital Equipment Corporation
+Western Software Laboratory
+.sp 2
+.ce 4
+Paul Asente
+.sp 6p
+Digital Equipment Corporation
+Western Software Laboratory
+.sp 2
+.ce 4
+Ralph R. Swick
+.sp 6p
+Digital Equipment Corporation
+External Research Group
+MIT X Consortium
+.sp 2
+.ce 3
+version 6 edited by Donna Converse
+.sp 6p
+X Consortium, Inc.\s+1
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+X Window System is a trademark of X Consortium, Inc.
+.LP
+Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+.LP
+Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+Digital Equipment Corporation, Maynard, Massachusetts.
+.LP
+Permission to use, copy, modify and distribute this documentation for any
+purpose and without fee is hereby granted, provided that the above copyright
+notice appears in all copies and that both that copyright notice and this
+permission notice appear in supporting documentation, and that the name of
+Digital not be used in in advertising or publicity pertaining
+to distribution of the software without specific, written prior permission.
+Digital makes no representations about the suitability of the
+software described herein for any purpose.
+It is provided ``as is'' without express or implied warranty.
+.ps 11
+.nr PS 11
+.bp 11
+.EF ''\fB \\\\n(PN \fP''
+.OF ''\fB \\\\n(PN \fP''
+.af PN i
+.XS ix
+Acknowledgments
+.XE
+\&
+.sp 1
+.ce 3
+\s+1\fBAcknowledgments\fP\s-1
+.sp 2
+.na
+.LP
+The design of the X11 Intrinsics was done primarily
+by Joel McCormack of Digital WSL.
+Major contributions to the design and implementation also
+were done by Charles Haynes, Mike Chow, and Paul Asente of Digital WSL.
+Additional contributors to the design and/or implementation were:
+.LP
+.Ds
+.ta 3i
+Loretta Guarino-Reid (Digital WSL) Rich Hyde (Digital WSL)
+Susan Angebranndt (Digital WSL) Terry Weissman (Digital WSL)
+Mary Larson (Digital UEG) Mark Manasse (Digital SRC)
+Jim Gettys (Digital SRC) Leo Treggiari (Digital SDT)
+Ralph Swick (Project Athena and Digital ERP) Mark Ackerman (Project Athena)
+Ron Newman (Project Athena) Bob Scheifler (MIT LCS)
+.De
+.LP
+The contributors to the X10 toolkit also deserve mention.
+Although the X11 Intrinsics present an entirely different programming style,
+they borrow heavily from the implicit and explicit concepts in the X10
+toolkit.
+.LP
+The design and implementation of the X10 Intrinsics were done by:
+.LP
+.Ds
+Terry Weissman (Digital WSL)
+Smokey Wallace (Digital WSL)
+Phil Karlton (Digital WSL)
+Charles Haynes (Digital WSL)
+Frank Hall (HP)
+.De
+.LP
+The design and implementation of the X10 toolkit's sample widgets were
+by the above, as well as by:
+.LP
+.Ds
+Ram Rao (Digital UEG)
+Mary Larson (Digital UEG)
+Mike Gancarz (Digital UEG)
+Kathleen Langone (Digital UEG)
+.De
+These widgets provided a checklist of requirements that we
+had to address in the X11 Intrinsics.
+.LP
+Thanks go to Al Mento of Digital's UEG Documentation Group for
+formatting and generally improving this document
+and to John Ousterhout of Berkeley for extensively reviewing
+early drafts of it.
+.LP
+Finally, a special thanks to Mike Chow,
+whose extensive performance analysis of the X10 toolkit provided
+the justification to redesign it entirely for X11.
+.LP
+.sp
+.Ds 0
+Joel McCormack
+Western Software Laboratory
+Digital Equipment Corporation
+
+March 1988
+.De
+.bp
+.LP
+The current design of the \*(xI has benefited greatly from the
+input of several dedicated reviewers in the membership of the
+X Consortium.
+In addition to those already mentioned,
+the following individuals have dedicated significant time
+to suggesting improvements to the \*(xI:
+.LP
+.Ds
+.ta 3i
+Steve Pitschke (Stellar) C. Doug Blewett (AT&T)
+Bob Miller (HP) David Schiferl (Tektronix)
+Fred Taft (HP) Michael Squires (Sequent)
+Marcel Meth (AT&T) Jim Fulton (MIT)
+Mike Collins (Digital) Kerry Kimbrough (Texas Instruments)
+Scott McGregor (Digital) Phil Karlton (Digital)
+Julian Payne (ESS) Jacques Davy (Bull)
+Gabriel Beged-Dov (HP) Glenn Widener (Tektronix)
+.De
+.LP
+Thanks go to each of them for the countless hours spent
+reviewing drafts and code.
+.LP
+.sp
+.Ds 0
+Ralph R. Swick
+External Research Group
+Digital Equipment Corporation
+MIT Project Athena
+
+June 1988
+.De
+.sp
+.LP
+From Release 3 to Release 4, several new members joined the design
+team. We greatly appreciate the thoughtful comments, suggestions,
+lengthy discussions, and in some cases implementation code contributed by each
+of the following:
+.LP
+.Ds
+.ta 3i
+Don Alecci (AT&T) Ellis Cohen (OSF)
+Donna Converse (MIT) Clive Feather (IXI)
+Nayeem Islam (Sun) Dana Laursen (HP)
+Keith Packard (MIT) Chris Peterson (MIT)
+Richard Probst (Sun) Larry Cable (Sun)
+.De
+.sp
+.LP
+In Release 5, the effort to define the internationalization additions was
+headed by Bill McMahon of Hewlett Packard and Frank Rojas of IBM. This
+has been an educational process for many of us, and Bill and Frank's
+tutelage has carried us through. Vania Joloboff of the OSF also contributed
+to the internationalization additions. The implementation efforts of
+Bill, Gabe Beged-Dov, and especially Donna Converse for this release
+are also gratefully acknowledged.
+.sp
+.Ds 0
+Ralph R. Swick
+
+December 1989
+and
+July 1991
+.De
+.bp
+.LP
+The Release 6 Intrinsics is a result of the collaborative
+efforts of participants in the X Consortium's \fBintrinsics\fP
+working group.
+A few individuals contributed substantial design proposals,
+participated in lengthy discussions, reviewed final specifications,
+and in most cases, were also responsible for sections of the implementation.
+They deserve recognition and thanks for their major contributions:
+.LP
+.Ds
+.ta 3i
+Paul Asente (Adobe) Larry Cable (SunSoft)
+Ellis Cohen (OSF) Daniel Dardailler (OSF)
+Vania Joloboff (OSF) Kaleb Keithley (X Consortium)
+Courtney Loomis (HP) Douglas Rand (OSF)
+Bob Scheifler (X Consortium) Ajay Vohra (SunSoft)
+.De
+.LP
+Many others analyzed designs, offered useful comments and suggestions,
+and participated in a significant subset of the process.
+The following people deserve thanks for their contributions:
+Andy Bovingdon, Sam Chang, Chris Craig,
+George Erwin-Grotsky, Keith Edwards, Clive Feather, Stephen Gildea,
+Dan Heller, Steve Humphrey, David Kaelbling,
+Jaime Lau, Rob Lembree, Stuart Marks, Beth Mynatt,
+Tom Paquin, Chris Peterson, Kamesh Ramakrishna, Tom Rodriguez,
+Jim VanGilder, Will Walker, and Mike Wexler.
+.LP
+I am especially grateful to two of my colleagues: Ralph Swick for
+expert editorial guidance, and Kaleb Keithley for leadership in
+the implementation and the specification work.
+.sp
+.Ds 0
+Donna Converse
+X Consortium
+April 1994
+.De
+.bp
+.XS xii
+About This Manual
+.XE
+\&
+.sp 1
+.ce 3
+\s+1\fBAbout This Manual\fP\s-1
+.sp 2
+.na
+.LP
+\fI\*(xT\fP is intended to be read by both application programmers who will
+use one or more of the many widget sets built with the \*(xI
+and by widget programmers who will use the \*(xI to build widgets
+for one of the widget sets.
+Not all the information in this manual, however, applies to both audiences.
+That is, because the application programmer is likely to use only a number of
+the \*(xI functions in writing an application and because the widget programmer
+is likely to use many more, if not all, of the \*(xI functions in building
+a widget,
+an attempt has been made to highlight those areas of information that are
+deemed to be of special interest for the application programmer.
+(It is assumed the widget programmer will have to be familiar with all
+the information.)
+Therefore, all entries in the table of contents that are printed in \fBbold\fP
+indicate the information that should be of special interest to an
+application programmer.
+.LP
+It is also assumed that, as application programmers become
+more familiar with the concepts discussed in this manual,
+they will find it more convenient to implement
+portions of their applications as special-purpose or custom widgets.
+It is possible, nonetheless, to use widgets without knowing how to build them.
+.SH
+Conventions Used in this Manual
+.LP
+This document uses the following conventions:
+.IP \(bu 5
+Global symbols are printed in
+.PN this
+.PN special
+.PN font .
+These can be either function names,
+symbols defined in include files, data types, or structure names.
+Arguments to functions, procedures, or macros are printed in \fIitalics\fP.
+.IP \(bu 5
+Each function is introduced by a general discussion that
+distinguishes it from other functions.
+The function declaration itself follows,
+and each argument is specifically explained.
+General discussion of the function, if any is required,
+follows the arguments.
+.IP \(bu 5
+To eliminate any ambiguity between those arguments that you pass and those that
+a function returns to you,
+the explanations for all arguments that you pass start with the word
+\fIspecifies\fP or, in the case of multiple arguments, the word \fIspecify\fP.
+The explanations for all arguments that are returned to you start with the
+word \fIreturns\fP or, in the case of multiple arguments, the word \fIreturn\^\fP.
+.bp 1
+.af PN 1
+.EH '\fBX Toolkit Intrinsics\fP''\fBX11 Release \*(Rn\fP'
+.OH '\fBX Toolkit Intrinsics\fP''\fBX11 Release \*(Rn\fP'
diff --git a/specs/Xt/appA b/specs/Xt/appA
new file mode 100644
index 0000000..57a1890
--- /dev/null
+++ b/specs/Xt/appA
@@ -0,0 +1,107 @@
+.\" $Xorg: appA,v 1.3 2000/08/17 19:42:48 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix A\fP\s-1
+
+\s+1\fBResource File Format\fP\s-1
+.sp 2
+.LP
+.XS
+\fBAppendix A \(em Resource File Format\fP
+.XE
+A resource file contains text representing the default resource values for an
+application or set of applications.
+.LP
+The format of resource files is defined by \fI\*(xL\fP and is reproduced here
+for convenience only.
+.LP
+The format of a resource specification is
+.TS
+l l .
+ResourceLine = Comment | IncludeFile | ResourceSpec | <empty line>
+Comment = ``!'' {<any character except null or newline>}
+IncludeFile = ``#'' WhiteSpace ``include'' WhiteSpace FileName WhiteSpace
+FileName = <valid filename for operating system>
+ResourceSpec = WhiteSpace ResourceName WhiteSpace ``:'' WhiteSpace Value
+ResourceName = [Binding] {Component Binding} ComponentName
+Binding = ``.'' | ``*''
+WhiteSpace = {<space> | <horizontal tab>}
+Component = ``?'' | ComponentName
+ComponentName = NameChar {NameChar}
+NameChar = ``a''-``z'' | ``A''-``Z'' | ``0''-``9'' | ``_'' | ``-''
+Value = {<any character except null or unescaped newline>}
+.TE
+.LP
+Elements separated by vertical bar (|) are alternatives.
+Curly braces ({\&.\&.\&.}) indicate zero or more repetitions
+of the enclosed elements.
+Square brackets ([\&.\&.\&.]) indicate that the enclosed element is optional.
+Quotes (``\&.\&.\&.'') are used around literal characters.
+.LP
+If the last character on a line is a backslash (\\),
+that line is assumed to continue on the next line.
+.LP
+To allow a Value to begin with whitespace,
+the two-character sequence ``\\\^\fIspace\fP'' (backslash followed by space)
+is recognized and replaced by a space character,
+and the two-character sequence ``\\\^\fItab\fP''
+(backslash followed by horizontal tab)
+is recognized and replaced by a horizontal tab character.
+
+To allow a Value to contain embedded newline characters,
+the two-character sequence ``\\\^n'' is recognized and replaced by a
+newline character.
+To allow a Value to be broken across multiple lines in a text file,
+the two-character sequence ``\\\^\fInewline\fP''
+(backslash followed by newline) is
+recognized and removed from the value.
+
+To allow a Value to contain arbitrary character codes,
+the four-character sequence ``\\\^\fInnn\fP'',
+where each \fIn\fP is a digit character in the range of ``0''\-``7'',
+is recognized and replaced with a single byte that contains
+the octal value specified by the sequence.
+Finally, the two-character sequence ``\\\\'' is recognized
+and replaced with a single backslash.
diff --git a/specs/Xt/appB b/specs/Xt/appB
new file mode 100644
index 0000000..3eb9ccc
--- /dev/null
+++ b/specs/Xt/appB
@@ -0,0 +1,783 @@
+.\" $Xorg: appB,v 1.3 2000/08/17 19:42:48 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix B\fP\s-1
+
+\s+1\fBTranslation Table Syntax\fP\s-1
+.sp 2
+.LP
+.XS
+\fBAppendix B \(em Translation Table Syntax\fP
+.XE
+.IN "Translation tables"
+.SH
+Notation
+.LP
+Syntax is specified in EBNF notation with the following conventions:
+.TS
+l l.
+[ a ] Means either nothing or ``a''
+{ a } Means zero or more occurrences of ``a''
+( a | b ) Means either ``a'' or ``b''
+\\\\n Is the newline character
+.TE
+.LP
+All terminals are enclosed in double quotation marks (`` '').
+Informal descriptions are enclosed in angle brackets (< >).
+.SH
+Syntax
+.LP
+The syntax of a translation table is
+.TS
+l l .
+translationTable = [ directive ] { production }
+directive = ( ``#replace'' | ``#override'' | ``#augment'' ) ``\\\\n''
+production = lhs ``:'' rhs ``\\\\n''
+lhs = ( event | keyseq ) { ``,'' (event | keyseq) }
+keyseq = ``"'' keychar {keychar} ``"''
+keychar = [ ``^'' | ``$'' | ``\\\\'' ] <ISO Latin 1 character>
+event = [modifier_list] ``<''event_type``>'' [ ``('' count[``+''] ``)'' ] {detail}
+modifier_list = ( [``!''] [``:''] {modifier} ) | ``None''
+modifier = [``~''] modifier_name
+count = (``1'' | ``2'' | ``3'' | ``4'' | ...)
+modifier_name = ``@'' <keysym> | <see ModifierNames table below>
+event_type = <see Event Types table below>
+detail = <event specific details>
+rhs = { name ``('' [params] ``)'' }
+name = namechar { namechar }
+namechar = { ``a''-``z'' | ``A''-``Z'' | ``0''-``9'' | ``_'' | ``-'' }
+params = string {``,'' string}
+string = quoted_string | unquoted_string
+quoted_string = ``"'' {<Latin 1 character> | escape_char} [``\\\\\\\\'' ] ``"''
+escape_char = ``\\\\"''
+unquoted_string = {<Latin 1 character except space, tab, ``,'', ``\\\\n'', ``)''>}
+.TE
+
+.LP
+The \fIparams\fP field is parsed into a list of
+.PN String
+values that will be passed to the named action procedure. A
+\fIquoted string\fP may contain an embedded quotation mark if the
+quotation mark is preceded by a single backslash (\\). The
+three-character sequence ``\\\\"'' is interpreted as ``single backslash
+followed by end-of-string''.
+
+.SH
+Modifier Names
+.LP
+The modifier field is used to specify standard X keyboard and button
+modifier mask bits.
+Modifiers are legal on event types
+.PN KeyPress ,
+.PN KeyRelease ,
+.PN ButtonPress ,
+.PN ButtonRelease ,
+.PN MotionNotify ,
+.PN EnterNotify ,
+.PN LeaveNotify ,
+and their abbreviations.
+An error is generated when a translation table
+that contains modifiers for any other events is parsed.
+.IP \(bu 5
+If the modifier list has no entries and is not ``None'',
+it means ``don't care'' on all modifiers.
+.IP \(bu 5
+If an exclamation point (!) is specified at the beginning
+of the modifier list,
+it means that the listed modifiers must be in the correct state
+and no other modifiers can be asserted.
+.IP \(bu 5
+If any modifiers are specified
+and an exclamation point (!) is not specified,
+it means that the listed modifiers must be in the
+correct state and ``don't care'' about any other modifiers.
+.IP \(bu 5
+If a modifier is preceded by a tilde (~),
+it means that that modifier must not be asserted.
+.IP \(bu 5
+If ``None'' is specified, it means no modifiers can be asserted.
+.IP \(bu 5
+If a colon (:) is specified at the beginning of the modifier list,
+it directs the \*(xI to apply any standard modifiers in the
+event to map the event keycode into a KeySym.
+The default standard modifiers are Shift and Lock,
+with the interpretation as defined in \fI\*(xP\fP, Section 5.
+The resulting KeySym must exactly match the specified
+KeySym, and the nonstandard modifiers in the event must match the
+modifier list.
+For example, ``:<Key>a'' is distinct from ``:<Key>A'',
+and ``:Shift<Key>A'' is distinct from ``:<Key>A''.
+.IP \(bu 5
+If both an exclamation point (!) and a colon (:) are specified at
+the beginning of the modifier list, it means that the listed
+modifiers must be in the correct state and that no other modifiers
+except the standard modifiers can be asserted. Any standard
+modifiers in the event are applied as for colon (:) above.
+.IP \(bu 5
+If a colon (:) is not specified,
+no standard modifiers are applied.
+Then, for example, ``<Key>A'' and ``<Key>a'' are equivalent.
+.LP
+In key sequences,
+a circumflex (^) is an abbreviation for the Control modifier,
+a dollar sign ($) is an abbreviation for Meta,
+and a backslash (\\) can be used to quote any
+character, in particular a double quote ("), a circumflex (^),
+a dollar sign ($), and another backslash (\\).
+Briefly:
+.LP
+.Ds 0
+.TA 2.5i
+.ta 2.5i
+No modifiers: None <event> detail
+Any modifiers: <event> detail
+Only these modifiers: ! mod1 mod2 <event> detail
+These modifiers and any others: mod1 mod2 <event> detail
+.De
+.LP
+The use of ``None'' for a modifier list is identical to the use
+of an exclamation point with no modifers.
+.LP
+.TS H
+lw(1i) lw(1i) lw(3i).
+_
+.sp 6p
+Modifier Abbreviation Meaning
+.sp 6p
+_
+.sp 6p
+.R
+.TH
+Ctrl c Control modifier bit
+Shift s Shift modifier bit
+Lock l Lock modifier bit
+Meta m Meta key modifier
+Hyper h Hyper key modifier
+Super su Super key modifier
+Alt a Alt key modifier
+Mod1 Mod1 modifier bit
+Mod2 Mod2 modifier bit
+Mod3 Mod3 modifier bit
+Mod4 Mod4 modifier bit
+Mod5 Mod5 modifier bit
+Button1 Button1 modifier bit
+Button2 Button2 modifier bit
+Button3 Button3 modifier bit
+Button4 Button4 modifier bit
+Button5 Button5 modifier bit
+None No modifiers
+Any Any modifier combination
+.sp 6p
+_
+.TE
+.LP
+.IN "key modifier"
+A key modifier is any modifier bit one of whose corresponding KeyCodes
+contains the corresponding left or right KeySym.
+For example,
+``m'' or ``Meta'' means any modifier bit mapping to a KeyCode
+whose KeySym list contains XK_Meta_L or XK_Meta_R.
+Note that this interpretation is for each display,
+not global or even for each application context.
+The Control, Shift, and Lock modifier names refer
+explicitly to the corresponding modifier bits;
+there is no additional interpretation of KeySyms for these modifiers.
+.LP
+Because it is possible to associate arbitrary KeySyms with modifiers, the set of
+key modifiers is extensible. The ``@'' <keysym> syntax means any
+modifier bit whose corresponding KeyCode contains the specified KeySym name.
+.LP
+A modifier_list/KeySym combination in a translation matches a
+modifiers/KeyCode combination in an event in the following ways:
+.IP 1. 5
+If a colon (:) is used, the \*(xI call the display's
+.PN XtKeyProc
+with the KeyCode and modifiers.
+To match, (\fImodifiers\fP & ~\fImodifiers_return\fP) must equal \fImodifier_list\fP, and
+\fIkeysym_return\fP must equal the given KeySym.
+.IP 2. 5
+If (:) is not used, the \*(xI mask off all don't-care bits from the
+modifiers.
+This value must be equal to \fImodifier_list\fP.
+Then, for each possible combination of
+don't-care modifiers in the modifier list, the \*(xI call the display's
+.PN XtKeyProc
+with the KeyCode and that combination ORed with the cared-about modifier bits
+from the event.
+\fIKeysym_return\fP must match the KeySym in the translation.
+.SH
+Event Types
+.LP
+The event-type field describes XEvent types.
+In addition to the standard
+Xlib symbolic event type names, the following event type synonyms
+are defined:
+.TS H
+lw(1.5i) lw(3i).
+_
+.sp 6p
+Type Meaning
+.sp 6p
+_
+.sp 6p
+.TH
+Key T{
+.PN KeyPress
+T}
+KeyDown T{
+.PN KeyPress
+T}
+KeyUp T{
+.PN KeyRelease
+T}
+BtnDown T{
+.PN ButtonPress
+T}
+BtnUp T{
+.PN ButtonRelease
+T}
+Motion T{
+.PN MotionNotify
+T}
+PtrMoved T{
+.PN MotionNotify
+T}
+MouseMoved T{
+.PN MotionNotify
+T}
+Enter T{
+.PN EnterNotify
+T}
+EnterWindow T{
+.PN EnterNotify
+T}
+Leave T{
+.PN LeaveNotify
+T}
+LeaveWindow T{
+.PN LeaveNotify
+T}
+FocusIn T{
+.PN FocusIn
+T}
+FocusOut T{
+.PN FocusOut
+T}
+Keymap T{
+.PN KeymapNotify
+T}
+Expose T{
+.PN Expose
+T}
+GrExp T{
+.PN GraphicsExpose
+T}
+NoExp T{
+.PN NoExpose
+T}
+Visible T{
+.PN VisibilityNotify
+T}
+Create T{
+.PN CreateNotify
+T}
+Destroy T{
+.PN DestroyNotify
+T}
+Unmap T{
+.PN UnmapNotify
+T}
+Map T{
+.PN MapNotify
+T}
+MapReq T{
+.PN MapRequest
+T}
+Reparent T{
+.PN ReparentNotify
+T}
+Configure T{
+.PN ConfigureNotify
+T}
+ConfigureReq T{
+.PN ConfigureRequest
+T}
+Grav T{
+.PN GravityNotify
+T}
+ResReq T{
+.PN ResizeRequest
+T}
+Circ T{
+.PN CirculateNotify
+T}
+CircReq T{
+.PN CirculateRequest
+T}
+Prop T{
+.PN PropertyNotify
+T}
+SelClr T{
+.PN SelectionClear
+T}
+SelReq T{
+.PN SelectionRequest
+T}
+Select T{
+.PN SelectionNotify
+T}
+Clrmap T{
+.PN ColormapNotify
+T}
+Message T{
+.PN ClientMessage
+T}
+Mapping T{
+.PN MappingNotify
+T}
+.sp 6p
+_
+.TE
+The supported abbreviations are:
+.TS H
+lw(1.5i) lw(1.25i) lw(1.75i).
+_
+.sp 6p
+Abbreviation Event Type Including
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Ctrl T{
+.PN KeyPress
+T} with Control modifier
+Meta T{
+.PN KeyPress
+T} with Meta modifier
+Shift T{
+.PN KeyPress
+T} with Shift modifier
+Btn1Down T{
+.PN ButtonPress
+T} with Button1 detail
+Btn1Up T{
+.PN ButtonRelease
+T} with Button1 detail
+Btn2Down T{
+.PN ButtonPress
+T} with Button2 detail
+Btn2Up T{
+.PN ButtonRelease
+T} with Button2 detail
+Btn3Down T{
+.PN ButtonPress
+T} with Button3 detail
+Btn3Up T{
+.PN ButtonRelease
+T} with Button3 detail
+Btn4Down T{
+.PN ButtonPress
+T} with Button4 detail
+Btn4Up T{
+.PN ButtonRelease
+T} with Button4 detail
+Btn5Down T{
+.PN ButtonPress
+T} with Button5 detail
+Btn5Up T{
+.PN ButtonRelease
+T} with Button5 detail
+BtnMotion T{
+.PN MotionNotify
+T} with any button modifier
+Btn1Motion T{
+.PN MotionNotify
+T} with Button1 modifier
+Btn2Motion T{
+.PN MotionNotify
+T} with Button2 modifier
+Btn3Motion T{
+.PN MotionNotify
+T} with Button3 modifier
+Btn4Motion T{
+.PN MotionNotify
+T} with Button4 modifier
+Btn5Motion T{
+.PN MotionNotify
+T} with Button5 modifier
+.sp 6p
+_
+.TE
+.sp
+.LP
+The detail field is event-specific and normally corresponds to the
+detail field of the corresponding event as described
+by \fI\*(xP\fP, Section 11. The detail field is supported
+for the following event types:
+.LP
+.TS H
+l l .
+_
+.sp 6p
+Event Event Field
+.sp 6p
+_
+.TH
+.sp 6p
+KeyPress KeySym from event \fIdetail\fP (keycode)
+KeyRelease KeySym from event \fIdetail\fP (keycode)
+ButtonPress button from event \fIdetail\fP
+ButtonRelease button from event \fIdetail\fP
+MotionNotify event \fIdetail\fP
+EnterNotify event \fImode\fP
+LeaveNotify event \fImode\fP
+FocusIn event \fImode\fP
+FocusOut event \fImode\fP
+PropertyNotify \fIatom\fP
+SelectionClear \fIselection\fP
+SelectionRequest \fIselection\fP
+SelectionNotify \fIselection\fP
+ClientMessage \fItype\fP
+MappingNotify \fIrequest\fP
+.sp 6p
+_
+.TE
+.LP
+If the event type is
+.PN KeyPress
+or
+.PN KeyRelease ,
+the detail field
+specifies a KeySym name in standard format which is matched against
+the event as described above, for example, <Key>A.
+.LP
+For the
+.PN PropertyNotify ,
+.PN SelectionClear ,
+.PN SelectionRequest ,
+.PN SelectionNotify ,
+and
+.PN ClientMessage
+events the detail field is specified
+as an atom name; for example, <Message>WM_PROTOCOLS. For the
+.PN MotionNotify ,
+.PN EnterNotify ,
+.PN LeaveNotify ,
+.PN FocusIn ,
+.PN FocusOut ,
+and
+.PN MappingNotify
+events, either the symbolic constants as defined by
+\fI\*(xP\fP, Section 11,
+or the numeric values may be specified.
+.LP
+If no detail field is specified, then any value in the event detail is
+accepted as a match.
+.LP
+A KeySym can be specified as any of the standard KeySym names,
+a hexadecimal number prefixed with ``0x'' or ``0X'',
+an octal number prefixed with ``0'', or a decimal number.
+A KeySym expressed as a single digit is interpreted as the
+corresponding Latin 1 KeySym, for example, ``0'' is the KeySym XK_0.
+Other single character KeySyms are treated as literal constants from Latin 1,
+for example, ``!'' is treated as 0x21.
+Standard KeySym names are as defined in
+.Pn < X11/keysymdef.h >
+with the ``XK_'' prefix removed.
+.LP
+.SH
+Canonical Representation
+.LP
+Every translation table has a unique, canonical text representation. This
+representation is passed to a widget's
+.PN display_accelerator
+procedure to describe the accelerators installed on that widget.
+The canonical representation of a translation table is (see also
+``Syntax'')
+.TS
+l l .
+translationTable = { production }
+production = lhs ``:'' rhs ``\\\\n''
+lhs = event { ``,'' event }
+event = [modifier_list] ``<''event_type``>'' [ ``('' count[``+''] ``)'' ] {detail}
+modifier_list = [``!''] [``:''] {modifier}
+modifier = [``~''] modifier_name
+count = (``1'' | ``2'' | ``3'' | ``4'' | ...)
+modifier_name = ``@'' <keysym> | <see canonical modifier names below>
+event_type = <see canonical event types below>
+detail = <event-specific details>
+rhs = { name ``('' [params] ``)'' }
+name = namechar { namechar }
+namechar = { ``a''-``z'' | ``A''-``Z'' | ``0''-``9'' | ``_'' | ``-'' }
+params = string {``,'' string}
+string = quoted_string
+quoted_string = ``"'' {<Latin 1 character> | escape_char} [``\\\\\\\\'' ] ``"''
+escape_char = ``\\\\"''
+.TE
+.LP
+The canonical modifier names are
+.LP
+.Ds
+.TA 1i 2.5i
+.ta 1i 2.5i
+Ctrl Mod1 Button1
+Shift Mod2 Button2
+Lock Mod3 Button3
+ Mod4 Button4
+ Mod5 Button5
+.De
+.LP
+The canonical event types are
+.IP
+.TS
+l l.
+T{
+.PN KeyPress
+T} T{
+.PN KeyRelease
+T}
+T{
+.PN ButtonPress
+T} T{
+.PN ButtonRelease
+T}
+T{
+.PN MotionNotify
+T} T{
+.PN EnterNotify
+T}
+T{
+.PN LeaveNotify
+T} T{
+.PN FocusIn
+T}
+T{
+.PN FocusOut
+T} T{
+.PN KeymapNotify
+T}
+T{
+.PN Expose
+T} T{
+.PN GraphicsExpose,
+T}
+T{
+.PN NoExpose
+T} T{
+.PN VisibilityNotify
+T}
+T{
+.PN CreateNotify
+T} T{
+.PN DestroyNotify
+T}
+T{
+.PN UnmapNotify
+T} T{
+.PN MapNotify
+T}
+T{
+.PN MapRequest
+T} T{
+.PN ReparentNotify
+T}
+T{
+.PN ConfigureNotify
+T} T{
+.PN ConfigureRequest
+T}
+T{
+.PN GravityNotify
+T} T{
+.PN ResizeRequest
+T}
+T{
+.PN CirculateNotify
+T} T{
+.PN CirculateRequest
+T}
+T{
+.PN PropertyNotify
+T} T{
+.PN SelectionClear
+T}
+T{
+.PN SelectionRequest
+T} T{
+.PN SelectionNotify
+T}
+T{
+.PN ColormapNotify
+T} T{
+.PN ClientMessage
+T}
+.TE
+.LP
+
+.SH
+Examples
+.LP
+.IP \(bu 5
+Always put more specific events in the table before more general ones:
+.LP
+.Ds
+Shift <Btn1Down> : twas()\\n\\
+<Btn1Down> : brillig()
+.De
+.LP
+.IP \(bu 5
+For double-click on Button1 Up with Shift, use this specification:
+.IP
+.Ds
+Shift<Btn1Up>(2) : and()
+.DE
+.IP
+This is equivalent to the following line with appropriate timers set
+between events:
+.IP
+.Ds
+Shift<Btn1Down>,Shift<Btn1Up>,Shift<Btn1Down>,Shift<Btn1Up> : and()
+.De
+.IP \(bu 5
+For double-click on Button1 Down with Shift, use this specification:
+.IP
+.Ds
+Shift<Btn1Down>(2) : the()
+.De
+.IP
+This is equivalent to the following line with appropriate timers set
+between events:
+.IP
+.Ds
+Shift<Btn1Down>,Shift<Btn1Up>,Shift<Btn1Down> : the()
+.De
+.IP \(bu 5
+Mouse motion is always discarded when it occurs between events in a table
+where no motion event is specified:
+.IP
+.Ds
+<Btn1Down>,<Btn1Up> : slithy()
+.De
+.IP
+This is taken, even if the pointer moves a bit between the down and
+up events.
+Similarly, any motion event specified in a translation matches any number
+of motion events.
+If the motion event causes an action procedure to be invoked,
+the procedure is invoked after each motion event.
+.IP \(bu 5
+If an event sequence consists of a sequence of events that is also a
+noninitial subsequence of another translation,
+it is not taken if it occurs in the context of the longer sequence.
+This occurs mostly in sequences like the following:
+.IP
+.Ds
+<Btn1Down>,<Btn1Up> : toves()\\n\\
+<Btn1Up> : did()
+.De
+.IP
+The second translation is taken only if the button release is not
+preceded by a button press or if there are intervening events between the
+press and the release.
+Be particularly aware of this when using the repeat notation, above,
+with buttons and keys,
+because their expansion includes additional events;
+and when specifying motion events, because they are implicitly included
+between any two other events.
+In particular,
+pointer motion and double-click translations cannot coexist in the same
+translation table.
+.IP \(bu 5
+For single click on Button1 Up with Shift and Meta, use this specification:
+.IP
+.Ds
+Shift Meta <Btn1Down>, Shift Meta<Btn1Up>: gyre()
+.De
+.IP \(bu 5
+For multiple clicks greater or equal to a minimum number,
+a plus sign (+) may be appended to the final (rightmost)
+count in an event sequence. The actions will be invoked
+on the \fIcount\fP-th click and each subsequent one arriving
+within the multi-click time interval. For example:
+.IP
+.Ds
+Shift <Btn1Up>(2+) : and()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with any modifiers, use this specification:
+.IP
+.Ds
+<Enter> : gimble()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with no modifiers, use this specification:
+.IP
+.Ds
+None <Enter> : in()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with Button1 Down and Button2 Up and ``don't care'' about
+the other modifiers, use this specification:
+.IP
+.Ds
+Button1 ~Button2 <Enter> : the()
+.De
+.IP \(bu 5
+To indicate
+.PN EnterNotify
+with Button1 down and Button2 down exclusively, use this specification:
+.IP
+.Ds
+! Button1 Button2 <Enter> : wabe()
+.De
+.IP
+You do not need to use a tilde (~) with an exclamation point (!).
diff --git a/specs/Xt/appC b/specs/Xt/appC
new file mode 100644
index 0000000..6f31fd7
--- /dev/null
+++ b/specs/Xt/appC
@@ -0,0 +1,1204 @@
+.\" $Xorg: appC,v 1.3 2000/08/17 19:42:48 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix C\fP\s-1
+
+\s+1\fBCompatibility Functions\fP\s-1
+.sp 2
+.LP
+.XS
+\fBAppendix C \(em Compatibility Functions\fP
+.XE
+.FS
+This appendix is part of the formal Intrinsics Specification.
+.FE
+.LP
+In prototype versions of the \*(tk
+each widget class
+implemented an Xt<\^\fIWidget\fP\^>Create (for example,
+.PN XtLabelCreate )
+function, in which most of the code was identical from widget to widget.
+In the \*(xI, a single generic
+.PN XtCreateWidget
+performs most of the common work and then calls the initialize procedure
+implemented for the particular widget class.
+.LP
+Each Composite class also implemented the procedures
+Xt<\^\fIWidget\fP\^>Add and an Xt<\^\fIWidget\fP\^>Delete (for example,
+.PN XtButtonBoxAddButton
+and
+.PN XtButtonBoxDeleteButton ).
+In the \*(xI, the Composite generic procedures
+.PN XtManageChildren
+and
+.PN XtUnmanageChildren
+perform error checking and screening out of certain children.
+Then they call the change_managed procedure
+implemented for the widget's Composite class.
+If the widget's parent has not yet been realized,
+the call to the change_managed procedure is delayed until realization time.
+.LP
+Old-style calls can be implemented in the \*(tk by defining
+one-line procedures or macros that invoke a generic routine. For example,
+you could define the macro
+.PN XtLabelCreate
+as:
+.IP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+#define XtLabelCreate(\fIname\fP, \fIparent\fP, \fIargs\fP, \fInum_args\fP) \\
+ ((LabelWidget) XtCreateWidget(\fIname\fP, \fIlabelWidgetClass\fP, \
+\fIparent\fP, \fIargs\fP, \fInum_args\fP))
+.De
+.sp
+.LP
+Pop-up shells in some of the prototypes automatically performed an
+.PN XtManageChild
+on their child within their insert_child procedure.
+.IN "insert_child procedure"
+Creators of pop-up children need to call
+.PN XtManageChild
+themselves.
+.sp
+.LP
+.PN XtAppInitialize
+and
+.PN XtVaAppInitialize
+have been replaced by
+.PN XtOpenApplication
+and
+.PN XtVaOpenApplication .
+.LP
+To initialize the \*(xI internals, create an application context,
+open and initialize a display, and create the initial application shell
+instance, an application may use
+.PN XtAppInitialize
+or
+.PN XtVaAppInitialize .
+.LP
+.IN "XtAppInitialize" "" "@DEF@"
+.sM
+.FD 0
+Widget XtAppInitialize(\fIapp_context_return\fP, \fIapplication_class\fP, \
+\fIoptions\fP, \fInum_options\fP,
+.br
+ \fIargc_in_out\fP, \fIargv_in_out\fP, \
+\fIfallback_resources\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ XtAppContext *\fIapp_context_return\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescList \fIoptions\fP;
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc_in_out\fP;
+.br
+ String *\fIargv_in_out\fP;
+.br
+ String *\fIfallback_resources\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIapp_context_return\fP 1.5i
+Returns the application context, if non-NULL.
+.IP \fIapplication_class\fP 1.5i
+Specifies the class name of the application.
+.IP \fIoptions\fP 1.5i
+Specifies the command line options table.
+.IP \fInum_options\fP 1.5i
+Specifies the number of entries in \fIoptions\fP.
+.IP \fIargc_in_out\fP 1.5i
+Specifies a pointer to the number of command line arguments.
+.IP \fIargv_in_out\fP 1.5i
+Specifies a pointer to the command line arguments.
+.IP \fIfallback_resources\fP 1.5i
+Specifies resource values to be used if the application class resource
+file cannot be opened or read, or NULL.
+.IP \fIargs\fP 1.5i
+Specifies the argument list to override any
+other resource specifications for the created shell widget.
+.IP \fInum_args\fP 1.5i
+Specifies the number of entries in the argument list.
+.LP
+.eM
+The
+.PN XtAppInitialize
+function calls
+.PN XtToolkitInitialize
+followed by
+.PN XtCreateApplicationContext ,
+then calls
+.PN XtOpenDisplay
+with \fIdisplay_string\fP NULL and
+\fIapplication_name\fP NULL, and finally calls
+.PN XtAppCreateShell
+with \fIapplication_name\fP NULL, \fIwidget_class\fP
+.PN application\%Shell\%Widget\%Class ,
+and the specified \fIargs\fP and \fInum_args\fP
+and returns the created shell. The modified \fIargc\fP and \fIargv\fP returned by
+.PN XtDisplayInitialize
+are returned in \fIargc_in_out\fP and \fIargv_in_out\fP. If
+\fIapp_context_return\fP is not NULL, the created application context is
+also returned. If the display specified by the command line cannot be
+opened, an error message is issued and
+.PN XtAppInitialize
+terminates the application. If \fIfallback_resources\fP is non-NULL,
+.PN XtAppSetFallbackResources
+is called with the value prior to calling
+.PN XtOpenDisplay .
+.sp
+.LP
+.IN "XtVaAppInitialize" "" "@DEF@"
+.sM
+.FD 0
+Widget XtVaAppInitialize(\fIapp_context_return\fP, \fIapplication_class\fP, \
+\fIoptions\fP, \fInum_options\fP,
+.br
+ \fIargc_in_out\fP, \fIargv_in_out\fP, \
+\fIfallback_resources\fP, ...)
+.br
+ XtAppContext *\fIapp_context_return\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescList \fIoptions\fP;
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc_in_out\fP;
+.br
+ String *\fIargv_in_out\fP;
+.br
+ String *\fIfallback_resources\fP;
+.FN
+.IP \fIapp_context_return\fP 1.5i
+Returns the application context, if non-NULL.
+.IP \fIapplication_class\fP 1.5i
+Specifies the class name of the application.
+.IP \fIoptions\fP 1.5i
+Specifies the command line options table.
+.IP \fInum_options\fP 1.5i
+Specifies the number of entries in \fIoptions\fP.
+.IP \fIargc_in_out\fP 1.5i
+Specifies a pointer to the number of command line arguments.
+.IP \fIargv_in_out\fP 1.5i
+Specifies the command line arguments array.
+.IP \fIfallback_resources\fP 1.5i
+Specifies resource values to be used if the application class
+resource file cannot be opened, or NULL.
+.IP ... 1.5i
+Specifies the variable argument list to override any other
+resource specifications for the created shell.
+.LP
+.eM
+The
+.PN XtVaAppInitialize
+procedure is identical in function to
+.PN XtAppInitialize
+with the \fIargs\fP and \fInum_args\fP parameters replaced by a varargs list,
+as described
+in Section 2.5.1.
+.sp
+.LP
+As a convenience to people converting from earlier versions of the toolkit
+without application contexts, the following routines exist:
+.PN XtInitialize ,
+.PN XtMainLoop ,
+.PN XtNextEvent ,
+.PN XtProcessEvent ,
+.PN XtPeekEvent ,
+.PN XtPending ,
+.PN XtAddInput ,
+.PN XtAddTimeOut ,
+.PN XtAddWorkProc ,
+.PN XtCreateApplicationShell ,
+.PN XtAddActions ,
+.PN XtSetSelectionTimeout ,
+and
+.PN XtGetSelectionTimeout .
+.LP
+.IN "XtInitialize" "" "@DEF@"
+.sM
+.FD 0
+Widget XtInitialize(\fIshell_name\fP, \fIapplication_class\fP, \fIoptions\fP, \
+\fInum_options\fP, \fIargc\fP, \fIargv\fP)
+.br
+ String \fIshell_name\fP;
+.br
+ String \fIapplication_class\fP;
+.br
+ XrmOptionDescRec \fIoptions\fP[];
+.br
+ Cardinal \fInum_options\fP;
+.br
+ int *\fIargc\fP;
+.br
+ String \fIargv\fP[];
+.FN
+.IP \fIshell_name\fP 1i
+This parameter is ignored; therefore, you can specify NULL.
+.IP \fIapplication_class\fP 1i
+Specifies the class name of this application.
+.IP \fIoptions\fP 1i
+Specifies how to parse the command line for any application-specific resources.
+The \fIoptions\fP argument is passed as a parameter to
+.PN XrmParseCommand .
+.IP \fInum_options\fP 1i
+Specifies the number of entries in the options list.
+.IP \fIargc\fP 1i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv\fP 1i
+Specifies the command line parameters.
+.LP
+.eM
+.PN XtInitialize
+calls
+.PN XtToolkitInitialize
+to initialize the toolkit internals,
+creates a default application context for use by the other convenience
+routines, calls
+.PN XtOpenDisplay
+with \fIdisplay_string\fP NULL and \fIapplication_name\fP NULL, and
+finally calls
+.PN XtAppCreateShell
+with \fIapplication_name\fP NULL and
+returns the created shell.
+The semantics of calling
+.PN XtInitialize
+more than once are undefined.
+This routine has been replaced by
+.PN XtOpenApplication .
+.sp
+.IN "XtMainLoop" "" "@DEF@"
+.sM
+.FD 0
+void XtMainLoop(void)
+.FN
+.LP
+.eM
+.PN XtMainLoop
+first reads the next alternate input, timer, or X event by calling
+.PN XtNextEvent .
+Then it dispatches this to the appropriate registered procedure by calling
+.PN XtDispatchEvent .
+This routine has been replaced by
+.PN XtAppMainLoop .
+.sp
+.IN "XtNextEvent" "" "@DEF@"
+.sM
+.FD 0
+void XtNextEvent(\fIevent_return\fP)
+.br
+ XEvent *\fIevent_return\fP;
+.FN
+.IP \fIevent_return\fP 1i
+Returns the event information to the specified event structure.
+.LP
+.eM
+If no input is on the X input queue for the default application context,
+.PN XtNextEvent
+flushes the X output buffer
+and waits for an event while looking at the alternate input sources
+and timeout values and calling any callback procedures triggered by them.
+This routine has been replaced by
+.PN XtAppNextEvent .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.IN "XtProcessEvent" "" "@DEF@"
+.sM
+.FD 0
+void XtProcessEvent(\fImask\fP)
+.br
+ XtInputMask \fImask\fP;
+.FN
+.IP \fImask\fP 1i
+Specifies the type of input to process.
+.LP
+.eM
+.PN XtProcessEvent
+processes one X event, timeout, or alternate input source
+(depending on the value of \fImask\fP), blocking if necessary.
+It has been replaced by
+.PN XtAppProcessEvent .
+.PN XtInitialize
+must be called before using this function.
+.sp
+.IN "XtPeekEvent" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtPeekEvent(\fIevent_return\fP)
+.br
+ XEvent *\fIevent_return\fP;
+.FN
+.IP \fIevent_return\fP 1i
+Returns the event information to the specified event structure.
+.LP
+.eM
+If there is an event in the queue for the default application context,
+.PN XtPeekEvent
+fills in the event and returns a nonzero value.
+If no X input is on the queue,
+.PN XtPeekEvent
+flushes the output buffer and blocks until input is available, possibly
+calling some timeout callbacks in the process.
+If the input is an event,
+.PN XtPeekEvent
+fills in the event and returns a nonzero value.
+Otherwise, the input is for an alternate input source, and
+.PN XtPeekEvent
+returns zero.
+This routine has been replaced by
+.PN XtAppPeekEvent .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.IN "XtPending" "" "@DEF@"
+.sM
+.FD 0
+Boolean XtPending()
+.FN
+.LP
+.eM
+.PN XtPending
+returns a nonzero value if there are
+events pending from the X server or alternate input sources in the default
+application context.
+If there are no events pending,
+it flushes the output buffer and returns a zero value.
+It has been replaced by
+.PN XtAppPending .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.IN "XtAddInput" "" "@DEF@"
+.sM
+.FD 0
+XtInputId XtAddInput(\fIsource\fP, \fIcondition\fP, \fIproc\fP, \
+\fIclient_data\fP)
+.br
+ int \fIsource\fP;
+.br
+ XtPointer \fIcondition\fP;
+.br
+ XtInputCallbackProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIsource\fP 1i
+Specifies the source file descriptor on a POSIX-based system
+or other operating-system-dependent device specification.
+.IP \fIcondition\fP 1i
+Specifies the mask that indicates either a read, write, or exception condition
+or some operating-system-dependent condition.
+.IP \fIproc\fP 1i
+Specifies the procedure called when input is available.
+.IP \fIclient_data\fP 1i
+Specifies the parameter to be passed to \fIproc\fP when input is available.
+.LP
+.eM
+The
+.PN XtAddInput
+function registers in the default application context a new
+source of events,
+which is usually file input but can also be file output.
+(The word \fIfile\fP should be loosely interpreted to mean any sink
+or source of data.)
+.PN XtAddInput
+also specifies the conditions under which the source can generate events.
+When input is pending on this source in the default application context,
+the callback procedure is called.
+This routine has been replaced by
+.PN XtAppAddInput .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.IN "XtAddTimeOut" "" "@DEF@"
+.sM
+.FD 0
+XtIntervalId XtAddTimeOut(\fIinterval\fP, \fIproc\fP, \fIclient_data\fP)
+.br
+ unsigned long \fIinterval\fP;
+.br
+ XtTimerCallbackProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIinterval\fP 1i
+Specifies the time interval in milliseconds.
+.IP \fIproc\fP 1i
+Specifies the procedure to be called when time expires.
+.IP \fIclient_data\fP 1i
+Specifies the parameter to be passed to \fIproc\fP when it is called.
+.LP
+.eM
+The
+.PN XtAddTimeOut
+function creates a timeout in the default application context
+and returns an identifier for it.
+The timeout value is set to \fIinterval\fP.
+The callback procedure will be called after
+the time interval elapses, after which the timeout is removed.
+This routine has been replaced by
+.PN XtAppAddTimeOut .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.IN "XtAddWorkProc" "" "@DEF@"
+.sM
+.FD 0
+XtWorkProcId XtAddWorkProc(\fIproc\fP, \fIclient_data\fP)
+.br
+ XtWorkProc \fIproc\fP;
+.br
+ XtPointer \fIclient_data\fP;
+.FN
+.IP \fIproc\fP 1i
+Procedure to call to do the work.
+.IP \fIclient_data\fP 1i
+Client data to pass to \fIproc\fP when it is called.
+.LP
+.eM
+This routine registers a work procedure in the default application context. It has
+been replaced by
+.PN XtAppAddWorkProc .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.IN "XtCreateApplicationShell" "" "@DEF@"
+.sM
+.FD 0
+Widget XtCreateApplicationShell(\fIname\fP, \fIwidget_class\fP, \fIargs\fP, \
+\fInum_args\fP)
+.br
+ String \fIname\fP;
+.br
+ WidgetClass \fIwidget_class\fP;
+.br
+ ArgList \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIname\fP 1i
+This parameter is ignored; therefore, you can specify NULL.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class pointer for the created application shell widget.
+This will usually be
+.PN topLevelShellWidgetClass
+or a subclass thereof.
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIargs\fP.
+.LP
+.eM
+The procedure
+.PN XtCreateApplicationShell
+calls
+.PN XtAppCreateShell
+with \fIapplication_name\fP NULL, the application class passed to
+.PN XtInitialize ,
+and the default application context created by
+.PN XtInitialize .
+This routine has been replaced by
+.PN XtAppCreateShell .
+.sp
+.LP
+An old-format resource type converter procedure pointer is of type
+.PN XtConverter .
+.LP
+.IN "XtConverter" "" "@DEF@"
+.sM
+.FD 0
+typedef void (*XtConverter)(XrmValue*, Cardinal*, XrmValue*, XrmValue*);
+.br
+ XrmValue *\fIargs\fP;
+.br
+ Cardinal *\fInum_args\fP;
+.br
+ XrmValue *\fIfrom\fP;
+.br
+ XrmValue *\fIto\fP;
+.FN
+.IP \fIargs\fP 1i
+Specifies a list of additional
+.PN XrmValue
+arguments to the converter if additional context is needed
+to perform the conversion, or NULL.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIargs\fP.
+.IP \fIfrom\fP 1i
+Specifies the value to convert.
+.IP \fIto\fP 1i
+Specifies the descriptor to use to return the converted value.
+.LP
+.eM
+Type converters should perform the following actions:
+.IP \(bu 5
+Check to see that the number of arguments passed is correct.
+.IP \(bu 5
+Attempt the type conversion.
+.IP \(bu 5
+If successful, return the size and pointer to the data in the \fIto\fP argument;
+otherwise, call
+.PN XtWarningMsg
+and return without modifying the \fIto\fP argument.
+.LP
+Most type converters just take the data described by the specified \fIfrom\fP
+argument and return data by writing into the specified \fIto\fP argument.
+A few need other information, which is available in the specified
+argument list.
+A type converter can invoke another type converter,
+which allows differing sources that may convert into a common intermediate
+result to make maximum use of the type converter cache.
+.LP
+Note that the address returned in \fIto->addr\fP cannot be that of a local variable of
+the converter because this is not valid after the converter returns.
+It should be a pointer to a static variable.
+.LP
+The procedure type
+.PN XtConverter
+has been replaced by
+.PN XtTypeConverter .
+.sp
+.LP
+The
+.PN XtStringConversionWarning
+.IN "XtStringConversionWarning" "" "@DEF@"
+function is a convenience routine for old-format resource converters
+that convert from strings.
+.LP
+.sM
+.FD 0
+void XtStringConversionWarning(\fIsrc\fP, \fIdst_type\fP)
+.br
+ String \fIsrc\fP, \fIdst_type\fP;
+.FN
+.IP \fIsrc\fP 1i
+Specifies the string that could not be converted.
+.IP \fIdst_type\fP 1i
+Specifies the name of the type to which the string could not be converted.
+.LP
+.eM
+The
+.PN XtStringConversionWarning
+function issues a warning message with name ``conversionError'',
+type ``string'', class ``XtToolkitError, and the default message string
+``Cannot convert "\fIsrc\fP" to type \fIdst_type\fP''. This routine
+has been superseded by
+.PN XtDisplayStringConversionWarning .
+.sp
+.LP
+To register an old-format converter, use
+.PN XtAddConverter
+.IN "XtAddConverter" "" "@DEF@"
+or
+.PN XtAppAddConverter .
+.IN "XtAppAddConverter" "" "@DEF@"
+.LP
+.sM
+.FD 0
+void XtAddConverter(\fIfrom_type\fP, \fIto_type\fP, \fIconverter\fP, \
+\fIconvert_args\fP, \fInum_args\fP)
+.br
+ String \fIfrom_type\fP;
+.br
+ String \fIto_type\fP;
+.br
+ XtConverter \fIconverter\fP;
+.br
+ XtConvertArgList \fIconvert_args\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIconverter\fP 1i
+Specifies the type converter procedure.
+.IP \fIconvert_args\fP 1i
+Specifies how to compute the additional arguments to the converter, or NULL.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIconvert_args\fP.
+.sp
+.LP
+.eM
+.PN XtAddConverter
+is equivalent in function to
+.PN XtSetTypeConverter
+with \fIcache_type\fP equal to
+.PN XtCacheAll
+for old-format type converters. It has been superseded by
+.PN XtSetTypeConverter .
+.sp
+.sM
+.FD 0
+void XtAppAddConverter(\fIapp_context\fP, \fIfrom_type\fP, \fIto_type\fP, \
+\fIconverter\fP, \fIconvert_args\fP, \fInum_args\fP)
+.br
+ XtAppContext \fIapp_context\fP;
+.br
+ String \fIfrom_type\fP;
+.br
+ String \fIto_type\fP;
+.br
+ XtConverter \fIconverter\fP;
+.br
+ XtConvertArgList \fIconvert_args\fP;
+.br
+ Cardinal \fInum_args\fP;
+.FN
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIconverter\fP 1i
+Specifies the type converter procedure.
+.IP \fIconvert_args\fP 1i
+Specifies how to compute the additional arguments to the converter, or NULL.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIconvert_args\fP.
+.LP
+.eM
+.PN XtAppAddConverter
+is equivalent in function to
+.PN XtAppSetTypeConverter
+with \fIcache_type\fP equal to
+.PN XtCacheAll
+for old-format type converters. It has been superseded by
+.PN XtAppSetTypeConverter .
+.sp
+.LP
+To invoke resource conversions, a client may use
+.PN XtConvert
+or, for old-format converters only,
+.PN XtDirectConvert .
+.LP
+.IN "XtConvert" "" "@DEF@"
+.sM
+.FD 0
+void XtConvert(\fIw\fP, \fIfrom_type\fP, \fIfrom\fP, \fIto_type\fP, \
+\fIto_return\fP)
+.br
+ Widget \fIw\fP;
+.br
+ String \fIfrom_type\fP;
+.br
+ XrmValuePtr \fIfrom\fP;
+.br
+ String \fIto_type\fP;
+.br
+ XrmValuePtr \fIto_return\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies the widget to use for additional arguments, if any are
+needed.
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fIfrom\fP 1i
+Specifies the value to be converted.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIto_return\fP 1i
+Returns the converted value.
+.LP
+.IN "XtDirectConvert" "" "@DEF@"
+.FD 0
+void XtDirectConvert(\fIconverter\fP, \fIargs\fP, \fInum_args\fP, \fIfrom\fP, \
+\fIto_return\fP)
+.br
+ XtConverter \fIconverter\fP;
+.br
+ XrmValuePtr \fIargs\fP;
+.br
+ Cardinal \fInum_args\fP;
+.br
+ XrmValuePtr \fIfrom\fP;
+.br
+ XrmValuePtr \fIto_return\fP;
+.FN
+.IP \fIconverter\fP 1i
+Specifies the conversion procedure to be called.
+.IP \fIargs\fP 1i
+Specifies the argument list that contains the additional arguments
+needed to perform the conversion (often NULL).
+.IP \fInum_args\fP 1i
+Specifies the number of entries in \fIargs\fP.
+.IP \fIfrom\fP 1i
+Specifies the value to be converted.
+.IP \fIto_return\fP 1i
+Returns the converted value.
+.LP
+.eM
+The
+.PN XtConvert
+function looks up the type converter registered to convert \fIfrom_type\fP
+to \fIto_type\fP, computes any additional arguments needed, and then calls
+.PN XtDirectConvert
+or
+.PN XtCallConverter .
+The
+.PN XtDirectConvert
+function looks in the converter cache to see if this conversion procedure
+has been called with the specified arguments.
+If so, it returns a descriptor for information stored in the cache;
+otherwise, it calls the converter and enters the result in the cache.
+.LP
+Before calling the specified converter,
+.PN XtDirectConvert
+sets the return value size to zero and the return value address to NULL.
+To determine if the conversion was successful,
+the client should check \fIto_return.addr\fP for non-NULL.
+The data returned by
+.PN XtConvert
+must be copied immediately by the caller,
+as it may point to static data in the type converter.
+.LP
+.PN XtConvert
+has been replaced by
+.PN XtConvertAndStore ,
+and
+.PN XtDirectConvert
+has been superseded by
+.PN XtCallConverter .
+.sp
+.LP
+To deallocate a shared GC when it is no longer needed, use
+.PN XtDestroyGC .
+.LP
+.IN "XtDestroyGC" "" "@DEF@"
+.sM
+.FD 0
+void XtDestroyGC(\fIw\fP, \fIgc\fP)
+.br
+ Widget \fIw\fP;
+.br
+ GC \fIgc\fP;
+.FN
+.IP \fIw\fP 1i
+Specifies any object on the display for which the shared GC was
+created. \*(oI
+.IP \fIgc\fP 1i
+Specifies the shared GC to be deallocated.
+.LP
+.eM
+References to sharable GCs are counted and a free request is generated to the
+server when the last user of a given GC destroys it.
+Note that some earlier versions of
+.PN XtDestroyGC
+had only a \fIgc\fP argument.
+Therefore, this function is not very portable,
+and you are encouraged to use
+.PN XtReleaseGC
+instead.
+.sp
+.LP
+To declare an action table in the default application context
+and register it with the translation manager, use
+.PN XtAddActions .
+.LP
+.IN "XtAddActions" "" "@DEF@"
+.sM
+.FD 0
+void XtAddActions(\fIactions\fP, \fInum_actions\fP)
+.br
+ XtActionList \fIactions\fP;
+.br
+ Cardinal \fInum_actions\fP;
+.FN
+.IP \fIactions\fP 1i
+Specifies the action table to register.
+.IP \fInum_actions\fP 1i
+Specifies the number of entries in \fIactions\fP.
+.LP
+.eM
+If more than one action is registered with the same name,
+the most recently registered action is used.
+If duplicate actions exist in an action table,
+the first is used.
+The \*(xI register an action table for
+.PN XtMenuPopup
+and
+.PN XtMenuPopdown
+as part of \*(tk initialization.
+This routine has been replaced by
+.PN XtAppAddActions .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.LP
+To set the \*(xI selection timeout in the default application context, use
+.PN XtSetSelectionTimeout .
+.LP
+.IN "XtSetSelectionTimeout" "" "@DEF@"
+.sM
+.FD 0
+void XtSetSelectionTimeout(\fItimeout\fP)
+.br
+ unsigned long \fItimeout\fP;
+.FN
+.IP \fItimeout\fP 1i
+Specifies the selection timeout in milliseconds.
+This routine has been replaced by
+.PN XtAppSetSelectionTimeout .
+.PN XtInitialize
+must be called before using this routine.
+.LP
+.eM
+.sp
+.LP
+To get the current selection timeout value in the default application
+context, use
+.PN XtGetSelectionTimeout .
+.LP
+.IN "XtGetSelectionTimeout" "" "@DEF@"
+.sM
+.FD 0
+unsigned long XtGetSelectionTimeout()
+.FN
+.LP
+.eM
+The selection timeout is the time within which the two communicating
+applications must respond to one another.
+If one of them does not respond within this interval,
+the \*(xI abort the selection request.
+.LP
+This routine has been replaced by
+.PN XtAppGetSelectionTimeout .
+.PN XtInitialize
+must be called before using this routine.
+.sp
+.LP
+To obtain the global error database (for example, to merge with
+an application- or widget-specific database), use
+.PN XtGetErrorDatabase .
+.LP
+.IN "XtGetErrorDatabase" "" "@DEF@"
+.sM
+.FD 0
+XrmDatabase *XtGetErrorDatabase()
+.FN
+.LP
+.eM
+The
+.PN XtGetErrorDatabase
+function returns the address of the error database.
+The \*(xI do a lazy binding of the error database and do not merge in the
+database file until the first call to
+.PN XtGetErrorDatbaseText .
+This routine has been replaced by
+.PN XtAppGetErrorDatabase .
+.sp
+.LP
+An error message handler can obtain the error database text for an
+error or a warning by calling
+.PN XtGetErrorDatabaseText .
+.LP
+.IN "XtGetErrorDatabaseText" "" "@DEF@"
+.sM
+.FD 0
+void XtGetErrorDatabaseText(\fIname\fP, \fItype\fP, \fIclass\fP, \
+\fIdefault\fP, \fIbuffer_return\fP, \fInbytes\fP)
+.br
+ String \fIname\fP, \fItype\fP, \fIclass\fP;
+.br
+ String \fIdefault\fP;
+.br
+ String \fIbuffer_return\fP;
+.br
+ int \fInbytes\fP;
+.FN
+.IP \fIname\fP 1i
+.br
+.ns
+.IP \fItype\fP 1i
+Specify the name and type that are concatenated to form the resource name
+of the error message.
+.IP \fIclass\fP 1i
+Specifies the resource class of the error message.
+.IP \fIdefault\fP 1i
+Specifies the default message to use if an error database entry is not found.
+.IP \fIbuffer_return\fP 1i
+Specifies the buffer into which the error message is to be returned.
+.IP \fInbytes\fP 1i
+Specifies the size of the buffer in bytes.
+.LP
+.eM
+The
+.PN XtGetErrorDatabaseText
+returns the appropriate message from the error database
+associated with the default application context
+or returns the specified default message if one is not found in the
+error database.
+To form the full resource name and class when querying the database,
+the \fIname\fP and \fItype\fP are concatenated with a single ``.''
+between them and the \fIclass\fP is concatenated with itself with a
+single ``.'' if it does not already contain a ``.''.
+This routine has been superseded by
+.PN XtAppGetErrorDatabaseText .
+.sp
+.LP
+To register a procedure to be called on fatal error conditions, use
+.PN XtSetErrorMsgHandler .
+.LP
+.IN "XtSetErrorMsgHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtSetErrorMsgHandler(\fImsg_handler\fP)
+.br
+ XtErrorMsgHandler \fImsg_handler\fP;
+.FN
+.IP \fImsg_handler\fP 1i
+Specifies the new fatal error procedure, which should not return.
+.LP
+.eM
+The default error handler provided by the \*(xI constructs a
+string from the error resource database and calls
+.PN XtError .
+Fatal error message handlers should not return.
+If one does,
+subsequent \*(xI behavior is undefined.
+This routine has been superseded by
+.PN XtAppSetErrorMsgHandler .
+.sp
+.LP
+To call the high-level error handler, use
+.PN XtErrorMsg .
+.LP
+.IN "XtErrorMsg" "" "@DEF@"
+.sM
+.FD 0
+void XtErrorMsg(\fIname\fP, \fItype\fP, \fIclass\fP, \fIdefault\fP, \
+\fIparams\fP, \fInum_params\fP)
+.br
+ String \fIname\fP;
+.br
+ String \fItype\fP;
+.br
+ String \fIclass\fP;
+.br
+ String \fIdefault\fP;
+.br
+ String *\fIparams\fP;
+.br
+ Cardinal *\fInum_params\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the general kind of error.
+.IP \fItype\fP 1i
+Specifies the detailed name of the error.
+.IP \fIclass\fP 1i
+Specifies the resource class.
+.IP \fIdefault\fP 1i
+Specifies the default message to use if an error database entry is not found.
+.IP \fIparams\fP 1i
+Specifies a pointer to a list of values to be stored in the message.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.LP
+.eM
+This routine has been superseded by
+.PN XtAppErrorMsg .
+.sp
+.LP
+To register a procedure to be called on nonfatal error conditions, use
+.PN XtSetWarningMsgHandler .
+.LP
+.IN "XtSetWarningMsgHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtSetWarningMsgHandler(\fImsg_handler\fP)
+.br
+ XtErrorMsgHandler \fImsg_handler\fP;
+.FN
+.IP \fImsg_handler\fP 1i
+Specifies the new nonfatal error procedure, which usually returns.
+.LP
+.eM
+The default warning handler provided by the \*(xI constructs a string
+from the error resource database and calls
+.PN XtWarning .
+This routine has been superseded by
+.PN XtAppSetWarningMsgHandler .
+.sp
+.LP
+To call the installed high-level warning handler, use
+.PN XtWarningMsg .
+.LP
+.IN "XtWarningMsg" "" "@DEF@"
+.sM
+.FD 0
+void XtWarningMsg(\fIname\fP, \fItype\fP, \fIclass\fP, \fIdefault\fP, \
+\fIparams\fP, \fInum_params\fP)
+.br
+ String \fIname\fP;
+.br
+ String \fItype\fP;
+.br
+ String \fIclass\fP;
+.br
+ String \fIdefault\fP;
+.br
+ String *\fIparams\fP;
+.br
+ Cardinal *\fInum_params\fP;
+.FN
+.IP \fIname\fP 1i
+Specifies the general kind of error.
+.IP \fItype\fP 1i
+Specifies the detailed name of the error.
+.IP \fIclass\fP 1i
+Specifies the resource class.
+.IP \fIdefault\fP 1i
+Specifies the default message to use if an error database entry is not found.
+.IP \fIparams\fP 1i
+Specifies a pointer to a list of values to be stored in the message.
+.IP \fInum_params\fP 1i
+Specifies the number of entries in \fIparams\fP.
+.LP
+.eM
+This routine has been superseded by
+.PN XtAppWarningMsg .
+.sp
+.LP
+To register a procedure to be called on fatal error conditions, use
+.PN XtSetErrorHandler .
+.LP
+.IN "XtSetErrorHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtSetErrorHandler(\fIhandler\fP)
+.br
+ XtErrorHandler \fIhandler\fP;
+.FN
+.IP \fIhandler\fP 1i
+Specifies the new fatal error procedure, which should not return.
+.LP
+.eM
+The default error handler provided by the \*(xI is
+.PN _XtError .
+On POSIX-based systems,
+it prints the message to standard error and terminates the application.
+Fatal error message handlers should not return.
+If one does,
+subsequent \*(tk behavior is undefined.
+This routine has been superseded by
+.PN XtAppSetErrorHandler .
+.sp
+.LP
+To call the installed fatal error procedure, use
+.PN XtError .
+.LP
+.IN "XtError" "" "@DEF@"
+.sM
+.FD 0
+void XtError(\fImessage\fP)
+.br
+ String \fImessage\fP;
+.FN
+.IP \fImessage\fP 1i
+Specifies the message to be reported.
+.LP
+.eM
+Most programs should use
+.PN XtAppErrorMsg ,
+not
+.PN XtError ,
+to provide for customization and internationalization of error
+messages. This routine has been superseded by
+.PN XtAppError .
+.sp
+.LP
+To register a procedure to be called on nonfatal error conditions, use
+.PN XtSetWarningHandler .
+.LP
+.IN "XtSetWarningHandler" "" "@DEF@"
+.sM
+.FD 0
+void XtSetWarningHandler(\fIhandler\fP)
+.br
+ XtErrorHandler \fIhandler\fP;
+.FN
+.IP \fIhandler\fP 1i
+Specifies the new nonfatal error procedure, which usually returns.
+.LP
+.eM
+The default warning handler provided by the \*(xI is
+.PN _XtWarning .
+On POSIX-based systems,
+it prints the message to standard error and returns to the caller.
+This routine has been superseded by
+.PN XtAppSetWarningHandler .
+.sp
+.LP
+To call the installed nonfatal error procedure, use
+.PN XtWarning .
+.LP
+.IN "XtWarning" "" "@DEF@"
+.sM
+.FD 0
+void XtWarning(\fImessage\fP)
+.br
+ String \fImessage\fP;
+.FN
+.IP \fImessage\fP 1i
+Specifies the nonfatal error message to be reported.
+.LP
+.eM
+Most programs should use
+.PN XtAppWarningMsg ,
+not
+.PN XtWarning ,
+to provide for customization and internationalization of warning messages.
+This routine has been superseded by
+.PN XtAppWarning .
diff --git a/specs/Xt/appD b/specs/Xt/appD
new file mode 100644
index 0000000..5322ff9
--- /dev/null
+++ b/specs/Xt/appD
@@ -0,0 +1,602 @@
+.\" $Xorg: appD,v 1.3 2000/08/17 19:42:48 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix D\fP\s-1
+
+\s+1\fBIntrinsics Error Messages\fP\s-1
+.sp 2
+.LP
+.XS
+\fBAppendix D \(em Intrinsics Error Messages\fP
+.XE
+.LP
+All \*(xI errors and warnings have class
+``XtToolkitError''.
+The following two tables summarize the common errors and warnings that can be
+generated by the \*(xI.
+Additional implementation-dependent messages are permitted.
+.SH
+Error Messages
+.LP
+.ps 9
+.nr PS 9
+.TS
+lw(1.3i) lw(1.4i) lw(2.9i).
+_
+.sp 6p
+Name Type Default Message
+.sp 6p
+_
+.sp 6p
+allocError calloc T{
+Cannot perform calloc
+T}
+allocError malloc T{
+Cannot perform malloc
+T}
+allocError realloc T{
+Cannot perform realloc
+T}
+internalError xtMakeGeometryRequest T{
+internal error; ShellClassExtension is NULL
+T}
+invalidArgCount xtGetValues T{
+Argument count > 0 on NULL argument list in XtGetValues
+T}
+invalidArgCount xtSetValues T{
+Argument count > 0 on NULL argument list in XtSetValues
+T}
+invalidClass applicationShellInsertChild T{
+ApplicationShell does not accept RectObj children; ignored
+T}
+invalidClass constraintSetValue T{
+Subclass of Constraint required in CallConstraintSetValues
+T}
+invalidClass xtAppCreateShell T{
+XtAppCreateShell requires non-NULL widget class
+T}
+invalidClass xtCreatePopupShell T{
+XtCreatePopupShell requires non-NULL widget class
+T}
+invalidClass xtCreateWidget T{
+XtCreateWidget requires non-NULL widget class
+T}
+invalidClass xtPopdown T{
+XtPopdown requires a subclass of shellWidgetClass
+T}
+invalidClass xtPopup T{
+XtPopup requires a subclass of shellWidgetClass
+T}
+invalidDimension xtCreateWindow T{
+Widget %s has zero width and/or height
+T}
+invalidDimension shellRealize T{
+Shell widget %s has zero width and/or height
+T}
+invalidDisplay xtInitialize T{
+Can't open display: %s
+T}
+invalidGetValues xtGetValues T{
+NULL ArgVal in XtGetValues
+T}
+invalidExtension shellClassPartInitialize T{
+widget class %s has invalid ShellClassExtension record
+T}
+invalidExtension xtMakeGeometryRequest T{
+widget class %s has invalid ShellClassExtension record
+T}
+invalidGeometryManager xtMakeGeometryRequest T{
+XtMakeGeometryRequest - parent has no geometry manager
+T}
+invalidParameter xtAddInput T{
+invalid condition passed to XtAddInput
+T}
+invalidParameter xtAddInput T{
+invalid condition passed to XtAppAddInput
+T}
+invalidParent xtChangeManagedSet T{
+Attempt to manage a child when parent is not Composite
+T}
+invalidParent xtChangeManagedSet T{
+Attempt to unmanage a child when parent is not Composite
+T}
+invalidParent xtCreatePopupShell T{
+XtCreatePopupShell requires non-NULL parent
+T}
+invalidParent xtCreateWidget T{
+XtCreateWidget requires non-NULL parent
+T}
+invalidParent xtMakeGeometryRequest T{
+non-shell has no parent in XtMakeGeometryRequest
+T}
+invalidParent xtMakeGeometryRequest T{
+XtMakeGeometryRequest - parent not composite
+T}
+invalidParent xtManageChildren T{
+Attempt to manage a child when parent is not Composite
+T}
+invalidParent xtUnmanageChildren T{
+Attempt to unmanage a child when parent is not Composite
+T}
+invalidProcedure inheritanceProc T{
+Unresolved inheritance operation
+T}
+invalidProcedure realizeProc T{
+No realize class procedure defined
+T}
+invalidWindow eventHandler T{
+Event with wrong window
+T}
+missingWidget fetchDisplayArg T{
+FetchDisplayArg called without a widget to reference
+T}
+nonWidget xtCreateWidget T{
+attempt to add non-widget child "%s" to parent "%s" which supports only widgets
+T}
+noPerDisplay closeDisplay T{
+Couldn't find per display information
+T}
+noPerDisplay getPerDisplay T{
+Couldn't find per display information
+T}
+noSelectionProperties freeSelectionProperty T{
+internal error: no selection property context for display
+T}
+noWidgetAncestor windowedAncestor T{
+Object "%s" does not have windowed ancestor
+T}
+nullDisplay xtRegisterExtensionSelector T{
+XtRegisterExtensionSelector requires a non-NULL display
+T}
+nullProc insertChild T{
+"%s" parent has NULL insert_child method
+T}
+r2versionMismatch widget T{
+Widget class %s must be re-compiled.
+T}
+R3versionMismatch widget T{
+Widget class %s must be re-compiled.
+T}
+R4orR5versionMismatch widget T{
+Widget class %s must be re-compiled.
+T}
+rangeError xtRegisterExtensionSelector T{
+Attempt to register multiple selectors for one extension event type
+T}
+sessionManagement SmcOpenConnection T{
+Tried to connect to session manager, %s
+T}
+subclassMismatch xtCheckSubclass T{
+Widget class %s found when subclass of %s expected: %s
+T}
+.sp 6p
+_
+.TE
+.ps 11
+.nr PS 11
+.SH
+Warning Messages
+.LP
+.ps 9
+.nr PS 9
+.TS
+lw(1.3i) lw(1.4i) lw(2.9i).
+_
+.sp 6p
+Name Type Default Message
+.sp 6p
+_
+.sp 6p
+ambiguousParent xtChangeManagedSet T{
+Not all children have same parent
+T}
+ambiguousParent xtManageChildren T{
+Not all children have same parent in XtManageChildren
+T}
+ambiguousParent xtUnmanageChildren T{
+Not all children have same parent in XtUnmanageChildren
+T}
+badFormat xtGetSelectionValue T{
+Selection owner returned type INCR property with format != 32
+T}
+badGeometry shellRealize T{
+Shell widget "%s" has an invalid geometry specification: "%s"
+T}
+badValue cvtStringToPixel T{
+Color name "%s" is not defined
+T}
+communicationError select T{
+Select failed; error code %s
+T}
+conversionError string T{
+Cannot convert string "%s" to type %s
+T}
+conversionError stringToVisual T{
+Cannot find Visual of class %s for display %s
+T}
+conversionFailed xtConvertVarToArgList T{
+Type conversion failed
+T}
+conversionFailed xtGetTypedArg T{
+Type conversion (%s to %s) failed for widget '%s'
+T}
+displayError invalidDisplay T{
+Can't find display structure
+T}
+grabError xtAddGrab T{
+XtAddGrab requires exclusive grab if spring_loaded is TRUE
+T}
+grabError xtRemoveGrab T{
+XtRemoveGrab asked to remove a widget not on the list
+T}
+.TE
+.TS
+lw(1.3i) lw(1.4i) lw(2.9i).
+initializationError xtInitialize T{
+Initializing Resource Lists twice
+T}
+insufficientSpace xtGetTypedArg T{
+Insufficient space for converted type '%s' in widget '%s'
+T}
+internalError shell T{
+Shell's window manager interaction is broken
+T}
+invalidAddressMode computeArgs T{
+Conversion arguments for widget '%s' contain an unsupported address mode
+T}
+invalidArgCount getResources T{
+argument count > 0 on NULL argument list
+T}
+invalidCallbackList xtAddCallback T{
+Cannot find callback list in XtAddCallback
+T}
+invalidCallbackList xtAddCallback T{
+Cannot find callback list in XtAddCallbacks
+T}
+invalidCallbackList xtCallCallback T{
+Cannot find callback list in XtCallCallbacks
+T}
+invalidCallbackList xtRemoveAllCallback T{
+Cannot find callback list in XtRemoveAllCallbacks
+T}
+invalidCallbackList xtRemoveCallback T{
+Cannot find callback list in XtRemoveCallbacks
+T}
+invalidChild xtChangeManagedSet T{
+Null child passed to UnmanageChildren
+T}
+invalidChild xtManageChildren T{
+null child passed to ManageChildren
+T}
+invalidChild xtManageChildren T{
+null child passed to XtManageChildren
+T}
+invalidChild xtUnmanageChildren T{
+Null child passed to XtUnmanageChildren
+T}
+invalidChild xtUnmanageChildren T{
+Null child found in argument list to unmanage
+T}
+invalidDepth setValues T{
+Can't change widget depth
+T}
+invalidExtension xtCreateWidget T{
+widget "%s" class %s has invalid CompositeClassExtension record
+T}
+invalidExtension xtCreateWidget T{
+widget class %s has invalid ConstraintClassExtension record
+T}
+invalidGrab ungrabKeyOrButton T{
+Attempt to remove nonexistent passive grab
+T}
+invalidGrabKind xtPopup T{
+grab kind argument has invalid value; XtGrabNone assumed
+T}
+invalidParameters freeTranslations T{
+Freeing XtTranslations requires no extra arguments
+T}
+invalidParameters mergeTranslations T{
+MergeTM to TranslationTable needs no extra arguments
+T}
+invalidParameters xtMenuPopdown T{
+XtMenuPopdown called with num_params != 0 or 1
+T}
+invalidParameters xtMenuPopupAction T{
+MenuPopup wants exactly one argument
+T}
+invalidParent xtCopyFromParent T{
+CopyFromParent must have non-NULL parent
+T}
+invalidPopup xtMenuPopup T{
+Can't find popup widget "%s" in XtMenuPopup
+T}
+invalidPopup xtMenuPopdown T{
+Can't find popup in widget "%s" in XtMenuPopdown
+T}
+invalidPopup unsupportedOperation T{
+Pop-up menu creation is only supported on ButtonPress, KeyPress or EnterNotify events.
+T}
+invalidPopup unsupportedOperation T{
+Pop-up menu creation is only supported on Button, Key or EnterNotify events.
+T}
+invalidProcedure deleteChild T{
+null delete_child procedure for class %s in XtDestroy
+T}
+invalidProcedure inputHandler T{
+XtRemoveInput: Input handler not found
+T}
+invalidProcedure set_values_almost T{
+set_values_almost procedure shouldn't be NULL
+T}
+invalidResourceCount getResources T{
+resource count > 0 on NULL resource list
+T}
+invalidResourceName computeArgs T{
+Cannot find resource name %s as argument to conversion
+T}
+invalidShell xtTranslateCoords T{
+Widget has no shell ancestor
+T}
+invalidSizeOverride xtDependencies T{
+Representation size %d must match superclass's to override %s
+T}
+missingCharsetList cvtStringToFontSet T{
+Missing charsets in String to FontSet conversion
+T}
+noActionProc xtCallActionProc T{
+No action proc named "%s" is registered for widget "%s"
+T}
+noColormap cvtStringToPixel T{
+Cannot allocate colormap entry for "%s"
+T}
+noFont cvtStringToFont T{
+Unable to load any usable ISO8859-1 font
+T}
+noFont cvtStringToFontSet T{
+Unable to load any usable fontset
+T}
+noFont cvtStringToFontStruct T{
+Unable to load any usable ISO8859-1 font
+T}
+.TE
+.TS
+lw(1.3i) lw(1.4i) lw(2.9i).
+notInConvertSelection xtGetSelectionRequest T{
+XtGetSelectionRequest or XtGetSelectionParameters called for widget "%s" outside of ConvertSelection proc
+T}
+notRectObj xtChangeManagedSet T{
+child "%s", class %s is not a RectObj
+T}
+notRectObj xtManageChildren T{
+child "%s", class %s is not a RectObj
+T}
+nullWidget xtConvertVarToArgList T{
+XtVaTypedArg conversion needs non-NULL widget handle
+T}
+r3versionMismatch widget T{
+Shell Widget class %s binary compiled for R3
+T}
+translationError nullTable T{
+Can't remove accelerators from NULL table
+T}
+translationError nullTable T{
+Tried to remove nonexistent accelerators
+T}
+translationError ambiguousActions T{
+Overriding earlier translation manager actions.
+T}
+translationError newActions T{
+New actions are:%s
+T}
+translationError nullTable T{
+table to (un)merge must not be null
+T}
+translationError nullTable T{
+Can't translate event through NULL table
+T}
+translationError oldActions T{
+Previous entry was: %s %s
+T}
+translationError unboundActions T{
+Actions not found: %s
+T}
+translationError xtTranslateInitialize T{
+Initializing Translation manager twice.
+T}
+translationParseError missingComma T{
+ ... possibly due to missing ',' in event sequence.
+T}
+translationParseError nonLatin1 T{
+ ... probably due to non-Latin1 character in quoted string
+T}
+translationParseError parseError T{
+translation table syntax error: %s
+T}
+translationParseError parseString T{
+Missing '"'.
+T}
+translationParseError showLine T{
+ ... found while parsing '%s'
+T}
+typeConversionError noConverter T{
+No type converter registered for '%s' to '%s' conversion.
+T}
+unknownType xtConvertVarToArgList T{
+Unable to find type of resource for conversion
+T}
+unknownType xtGetTypedArg T{
+Unable to find type of resource for conversion
+T}
+versionMismatch widget T{
+Widget class %s version mismatch (recompilation needed):\\n widget %d vs. intrinsics %d.
+T}
+wrongParameters cvtIntOrPixelToXColor T{
+Pixel to color conversion needs screen and colormap arguments
+T}
+wrongParameters cvtIntToBool T{
+Integer to Bool conversion needs no extra arguments
+T}
+wrongParameters cvtIntToBoolean T{
+Integer to Boolean conversion needs no extra arguments
+T}
+wrongParameters cvtIntToFloat T{
+Integer to Float conversion needs no extra arguments
+T}
+wrongParameters cvtIntToFont T{
+Integer to Font conversion needs no extra arguments
+T}
+wrongParameters cvtIntToPixel T{
+Integer to Pixel conversion needs no extra arguments
+T}
+wrongParameters cvtIntToPixmap T{
+Integer to Pixmap conversion needs no extra arguments
+T}
+wrongParameters cvtIntToShort T{
+Integer to Short conversion needs no extra arguments
+T}
+wrongParameters cvtIntToUnsignedChar T{
+Integer to UnsignedChar conversion needs no extra arguments
+T}
+wrongParameters cvtStringToAcceleratorTable T{
+String to AcceleratorTable conversion needs no extra arguments
+T}
+wrongParameters cvtStringToAtom T{
+String to Atom conversion needs Display argument
+T}
+wrongParameters cvtStringToBool T{
+String to Bool conversion needs no extra arguments
+T}
+wrongParameters cvtStringToBoolean T{
+String to Boolean conversion needs no extra arguments
+T}
+wrongParameters cvtStringToCommandArgArray T{
+String to CommandArgArray conversion needs no extra arguments
+T}
+wrongParameters cvtStringToCursor T{
+String to cursor conversion needs display argument
+T}
+wrongParameters cvtStringToDimension T{
+String to Dimension conversion needs no extra arguments
+T}
+wrongParameters cvtStringToDirectoryString T{
+String to DirectoryString conversion needs no extra arguments
+T}
+.TE
+.TS
+lw(1.3i) lw(1.4i) lw(2.9i).
+wrongParameters cvtStringToDisplay T{
+String to Display conversion needs no extra arguments
+T}
+wrongParameters cvtStringToFile T{
+String to File conversion needs no extra arguments
+T}
+wrongParameters cvtStringToFloat T{
+String to Float conversion needs no extra arguments
+T}
+wrongParameters cvtStringToFont T{
+String to font conversion needs display argument
+T}
+wrongParameters cvtStringToFontSet T{
+String to FontSet conversion needs display and locale arguments
+T}
+wrongParameters cvtStringToFontStruct T{
+String to font conversion needs display argument
+T}
+wrongParameters cvtStringToGravity T{
+String to Gravity conversion needs no extra arguments
+T}
+wrongParameters cvtStringToInitialState T{
+String to InitialState conversion needs no extra arguments
+T}
+wrongParameters cvtStringToInt T{
+String to Integer conversion needs no extra arguments
+T}
+wrongParameters cvtStringToPixel T{
+String to pixel conversion needs screen and colormap arguments
+T}
+wrongParameters cvtStringToRestartStyle T{
+String to RestartStyle conversion needs no extra arguments
+T}
+wrongParameters cvtStringToShort T{
+String to Integer conversion needs no extra arguments
+T}
+wrongParameters cvtStringToTranslationTable T{
+String to TranslationTable conversion needs no extra arguments
+T}
+wrongParameters cvtStringToUnsignedChar T{
+String to Integer conversion needs no extra arguments
+T}
+wrongParameters cvtStringToVisual T{
+String to Visual conversion needs screen and depth arguments
+T}
+wrongParameters cvtXColorToPixel T{
+Color to Pixel conversion needs no extra arguments
+T}
+wrongParameters freeCursor T{
+Free Cursor requires display argument
+T}
+wrongParameters freeDirectoryString T{
+Free Directory String requires no extra arguments
+T}
+wrongParameters freeFile T{
+Free File requires no extra arguments
+T}
+wrongParameters freeFont T{
+Free Font needs display argument
+T}
+wrongParameters freeFontSet T{
+FreeFontSet needs display and locale arguments
+T}
+wrongParameters freeFontStruct T{
+Free FontStruct requires display argument
+T}
+wrongParameters freePixel T{
+Freeing a pixel requires screen and colormap arguments
+T}
+.sp 6p
+_
+.TE
+.ps 11
+.nr PS 11
diff --git a/specs/Xt/appE b/specs/Xt/appE
new file mode 100644
index 0000000..1ce7270
--- /dev/null
+++ b/specs/Xt/appE
@@ -0,0 +1,606 @@
+.\" $Xorg: appE,v 1.3 2000/08/17 19:42:48 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix E\fP\s-1
+
+\s+1\fB\fBDefined Strings\fP\s-1
+.sp 2
+.LP
+.XS
+\fBAppendix E \(em Defined Strings\fP
+.XE
+.LP
+The
+.PN StringDefs.h
+header file contains definitions for the following resource name,
+class, and representation type symbolic constants.
+.IN "String Constants" "resource names"
+.LP
+Resource names:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtNaccelerators "accelerators"
+XtNallowHoriz "allowHoriz"
+XtNallowVert "allowVert"
+XtNancestorSensitive "ancestorSensitive"
+XtNbackground "background"
+XtNbackgroundPixmap "backgroundPixmap"
+XtNbitmap "bitmap"
+XtNborder "borderColor"
+XtNborderColor "borderColor"
+XtNborderPixmap "borderPixmap"
+XtNborderWidth "borderWidth"
+XtNcallback "callback"
+XtNchangeHook "changeHook"
+XtNchildren "children"
+XtNcolormap "colormap"
+XtNconfigureHook "configureHook"
+XtNcreateHook "createHook"
+XtNdepth "depth"
+XtNdestroyCallback "destroyCallback"
+XtNdestroyHook "destroyHook"
+XtNeditType "editType"
+XtNfile "file"
+XtNfont "font"
+XtNfontSet "fontSet"
+XtNforceBars "forceBars"
+XtNforeground "foreground"
+XtNfunction "function"
+XtNgeometryHook "geometryHook"
+XtNheight "height"
+XtNhighlight "highlight"
+XtNhSpace "hSpace"
+XtNindex "index"
+XtNinitialResourcesPersistent "initialResourcesPersistent"
+XtNinnerHeight "innerHeight"
+XtNinnerWidth "innerWidth"
+XtNinnerWindow "innerWindow"
+XtNinsertPosition "insertPosition"
+XtNinternalHeight "internalHeight"
+XtNinternalWidth "internalWidth"
+XtNjumpProc "jumpProc"
+XtNjustify "justify"
+XtNknobHeight "knobHeight"
+XtNknobIndent "knobIndent"
+XtNknobPixel "knobPixel"
+XtNknobWidth "knobWidth"
+XtNlabel "label"
+XtNlength "length"
+XtNlowerRight "lowerRight"
+XtNmappedWhenManaged "mappedWhenManaged"
+XtNmenuEntry "menuEntry"
+XtNname "name"
+XtNnotify "notify"
+XtNnumChildren "numChildren"
+XtNnumShells "numShells"
+XtNorientation "orientation"
+XtNparameter "parameter"
+XtNpixmap "pixmap"
+XtNpopupCallback "popupCallback"
+XtNpopdownCallback "popdownCallback"
+XtNresize "resize"
+XtNreverseVideo "reverseVideo"
+XtNscreen "screen"
+XtNscrollProc "scrollProc"
+XtNscrollDCursor "scrollDCursor"
+XtNscrollHCursor "scrollHCursor"
+XtNscrollLCursor "scrollLCursor"
+XtNscrollRCursor "scrollRCursor"
+XtNscrollUCursor "scrollUCursor"
+XtNscrollVCursor "scrollVCursor"
+XtNselection "selection"
+XtNselectionArray "selectionArray"
+XtNsensitive "sensitive"
+XtNsession "session"
+XtNshells "shells"
+XtNshown "shown"
+XtNspace "space"
+XtNstring "string"
+XtNtextOptions "textOptions"
+XtNtextSink "textSink"
+XtNtextSource "textSource"
+XtNthickness "thickness"
+XtNthumb "thumb"
+XtNthumbProc "thumbProc"
+XtNtop "top"
+XtNtranslations "translations"
+XtNunrealizeCallback "unrealizeCallback"
+XtNupdate "update"
+XtNuseBottom "useBottom"
+XtNuseRight "useRight"
+XtNvalue "value"
+XtNvSpace "vSpace"
+XtNwidth "width"
+XtNwindow "window"
+XtNx "x"
+XtNy "y"
+.sp 6p
+_
+.TE
+.sp 6p
+.IN "String Constants" "resource classes"
+.LP
+Resource classes:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtCAccelerators "Accelerators"
+XtCBackground "Background"
+XtCBitmap "Bitmap"
+XtCBoolean "Boolean"
+XtCBorderColor "BorderColor"
+XtCBorderWidth "BorderWidth"
+XtCCallback "Callback"
+XtCColormap "Colormap"
+XtCColor "Color"
+XtCCursor "Cursor"
+XtCDepth "Depth"
+XtCEditType "EditType"
+XtCEventBindings "EventBindings"
+XtCFile "File"
+XtCFont "Font"
+XtCFontSet "FontSet"
+XtCForeground "Foreground"
+XtCFraction "Fraction"
+XtCFunction "Function"
+XtCHeight "Height"
+XtCHSpace "HSpace"
+XtCIndex "Index"
+XtCInitialResourcesPersistent "InitialResourcesPersistent"
+XtCInsertPosition "InsertPosition"
+XtCInterval "Interval"
+XtCJustify "Justify"
+XtCKnobIndent "KnobIndent"
+XtCKnobPixel "KnobPixel"
+XtCLabel "Label"
+XtCLength "Length"
+XtCMappedWhenManaged "MappedWhenManaged"
+XtCMargin "Margin"
+XtCMenuEntry "MenuEntry"
+XtCNotify "Notify"
+XtCOrientation "Orientation"
+XtCParameter "Parameter"
+XtCPixmap "Pixmap"
+XtCPosition "Position"
+XtCReadOnly "ReadOnly"
+XtCResize "Resize"
+XtCReverseVideo "ReverseVideo"
+XtCScreen "Screen"
+XtCScrollProc "ScrollProc"
+XtCScrollDCursor "ScrollDCursor"
+XtCScrollHCursor "ScrollHCursor"
+XtCScrollLCursor "ScrollLCursor"
+XtCScrollRCursor "ScrollRCursor"
+XtCScrollUCursor "ScrollUCursor"
+XtCScrollVCursor "ScrollVCursor"
+XtCSelection "Selection"
+XtCSelectionArray "SelectionArray"
+XtCSensitive "Sensitive"
+XtCSession "Session"
+XtCSpace "Space"
+XtCString "String"
+XtCTextOptions "TextOptions"
+XtCTextPosition "TextPosition"
+XtCTextSink "TextSink"
+XtCTextSource "TextSource"
+XtCThickness "Thickness"
+XtCThumb "Thumb"
+XtCTranslations "Translations"
+XtCValue "Value"
+XtCVSpace "VSpace"
+XtCWidth "Width"
+XtCWindow "Window"
+XtCX "X"
+XtCY "Y"
+.sp 6p
+_
+.TE
+.sp 6p
+.IN "String Constants" "representation types"
+.LP
+Resource representation types:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtRAcceleratorTable "AcceleratorTable"
+XtRAtom "Atom"
+XtRBitmap "Bitmap"
+XtRBool "Bool"
+XtRBoolean "Boolean"
+XtRCallback "Callback"
+XtRCallProc "CallProc"
+XtRCardinal "Cardinal"
+XtRColor "Color"
+XtRColormap "Colormap"
+XtRCommandArgArray "CommandArgArray"
+XtRCursor "Cursor"
+XtRDimension "Dimension"
+XtRDirectoryString "DirectoryString"
+XtRDisplay "Display"
+XtREditMode "EditMode"
+XtREnum "Enum"
+XtREnvironmentArray "EnvironmentArray"
+XtRFile "File"
+XtRFloat "Float"
+XtRFont "Font"
+XtRFontSet "FontSet"
+XtRFontStruct "FontStruct"
+XtRFunction "Function"
+XtRGeometry "Geometry"
+XtRGravity "Gravity"
+XtRImmediate "Immediate"
+XtRInitialState "InitialState"
+XtRInt "Int"
+XtRJustify "Justify"
+XtRLongBoolean XtRBool
+XtRObject "Object"
+XtROrientation "Orientation"
+XtRPixel "Pixel"
+XtRPixmap "Pixmap"
+XtRPointer "Pointer"
+XtRPosition "Position"
+XtRRestartStyle "RestartStyle"
+XtRScreen "Screen"
+XtRShort "Short"
+XtRSmcConn "SmcConn"
+XtRString "String"
+XtRStringArray "StringArray"
+XtRStringTable "StringTable"
+XtRUnsignedChar "UnsignedChar"
+XtRTranslationTable "TranslationTable"
+XtRVisual "Visual"
+XtRWidget "Widget"
+XtRWidgetClass "WidgetClass"
+XtRWidgetList "WidgetList"
+XtRWindow "Window"
+.sp 6p
+_
+.TE
+.sp 6p
+.LP
+Boolean enumeration constants:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtEoff "off"
+XtEfalse "false"
+XtEno "no"
+XtEon "on"
+XtEtrue "true"
+XtEyes "yes"
+.sp 6p
+_
+.TE
+.sp 6p
+.LP
+Orientation enumeration constants:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtEvertical "vertical"
+XtEhorizontal "horizontal"
+.sp 6p
+_
+.TE
+.sp 6p
+.LP
+Text edit enumeration constants:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtEtextRead "read"
+XtEtextAppend "append"
+XtEtextEdit "edit"
+.sp 6p
+_
+.TE
+.sp 6p
+.LP
+Color enumeration constants:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtExtdefaultbackground "xtdefaultbackground"
+XtExtdefaultforeground "xtdefaultforeground"
+.sp 6p
+_
+.TE
+.sp 6p
+.LP
+Font constant:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtExtdefaultfont "xtdefaultfont"
+.sp 6p
+_
+.TE
+.sp 6p
+.LP
+Hooks for External Agents constants:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtHcreate "Xtcreate"
+XtHsetValues "Xtsetvalues"
+XtHmanageChildren "XtmanageChildren"
+XtHunmanageChildren "XtunmanageChildren"
+XtHmanageSet "XtmanageSet"
+XtHunmanageSet "XtunmanageSet"
+XtHrealizeWidget "XtrealizeWidget"
+XtHunrealizeWidget "XtunrealizeWidget"
+XtHaddCallback "XtaddCallback"
+XtHaddCallbacks "XtaddCallbacks"
+XtHremoveCallback "XtremoveCallback"
+XtHremoveCallbacks "XtremoveCallbacks"
+XtHremoveAllCallbacks "XtremoveAllCallbacks"
+XtHaugmentTranslations "XtaugmentTranslations"
+XtHoverrideTranslations "XtoverrideTranslations"
+XtHuninstallTranslations "XtuninstallTranslations"
+XtHsetKeyboardFocus "XtsetKeyboardFocus"
+XtHsetWMColormapWindows "XtsetWMColormapWindows"
+XtHmapWidget "XtmapWidget"
+XtHunmapWidget "XtunmapWidget"
+XtHpopup "Xtpopup"
+XtHpopupSpringLoaded "XtpopupSpringLoaded"
+XtHpopdown "Xtpopdown"
+XtHconfigure "Xtconfigure"
+XtHpreGeometry "XtpreGeometry"
+XtHpostGeometry "XtpostGeometry"
+XtHdestroy "Xtdestroy"
+.sp 6p
+_
+.TE
+.sp 6p
+.LP
+The
+.PN Shell.h
+header file contains definitions for the following resource name,
+class, and representation type symbolic constants.
+.IN "String Constants" "resource names"
+.LP
+Resource names:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtNallowShellResize "allowShellResize"
+XtNargc "argc"
+XtNargv "argv"
+XtNbaseHeight "baseHeight"
+XtNbaseWidth "baseWidth"
+XtNcancelCallback "cancelCallback"
+XtNclientLeader "clientLeader"
+XtNcloneCommand "cloneCommand"
+XtNconnection "connection"
+XtNcreatePopupChildProc "createPopupChildProc"
+XtNcurrentDirectory "currentDirectory"
+XtNdieCallback "dieCallback"
+XtNdiscardCommand "discardCommand"
+XtNenvironment "environment"
+XtNerrorCallback "errorCallback"
+XtNgeometry "geometry"
+XtNheightInc "heightInc"
+XtNiconMask "iconMask"
+XtNiconName "iconName"
+XtNiconNameEncoding "iconNameEncoding"
+XtNiconPixmap "iconPixmap"
+XtNiconWindow "iconWindow"
+XtNiconX "iconX"
+XtNiconY "iconY"
+XtNiconic "iconic"
+XtNinitialState "initialState"
+XtNinput "input"
+XtNinteractCallback "interactCallback"
+XtNjoinSession "joinSession"
+XtNmaxAspectX "maxAspectX"
+XtNmaxAspectY "maxAspectY"
+XtNmaxHeight "maxHeight"
+XtNmaxWidth "maxWidth"
+XtNminAspectX "minAspectX"
+XtNminAspectY "minAspectY"
+XtNminHeight "minHeight"
+XtNminWidth "minWidth"
+XtNoverrideRedirect "overrideRedirect"
+XtNprogramPath "programPath"
+XtNresignCommand "resignCommand"
+XtNrestartCommand "restartCommand"
+XtNrestartStyle "restartStyle"
+XtNsaveCallback "saveCallback"
+XtNsaveCompleteCallback "saveCompleteCallback"
+XtNsaveUnder "saveUnder"
+XtNsessionID "sessionID"
+XtNshutdownCommand "shutdownCommand"
+XtNtitle "title"
+XtNtitleEncoding "titleEncoding"
+XtNtransient "transient"
+XtNtransientFor "transientFor"
+XtNurgency "urgency"
+XtNvisual "visual"
+XtNwaitForWm "waitforwm"
+XtNwaitforwm "waitforwm"
+XtNwidthInc "widthInc"
+XtNwindowGroup "windowGroup"
+XtNwindowRole "windowRole"
+XtNwinGravity "winGravity"
+XtNwmTimeout "wmTimeout"
+.sp 6p
+_
+.TE
+.sp 6p
+.IN "String Constants" "resource classes"
+.LP
+Resource classes:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtCAllowShellResize "allowShellResize"
+XtCArgc "Argc"
+XtCArgv "Argv"
+XtCBaseHeight "BaseHeight"
+XtCBaseWidth "BaseWidth"
+XtCClientLeader "ClientLeader"
+XtCCloneCommand "CloneCommand"
+XtCConnection "Connection"
+XtCCreatePopupChildProc "CreatePopupChildProc"
+XtCCurrentDirectory "CurrentDirectory"
+XtCDiscardCommand "DiscardCommand"
+XtCEnvironment "Environment"
+XtCGeometry "Geometry"
+XtCHeightInc "HeightInc"
+XtCIconMask "IconMask"
+XtCIconName "IconName"
+XtCIconNameEncoding "IconNameEncoding"
+XtCIconPixmap "IconPixmap"
+XtCIconWindow "IconWindow"
+XtCIconX "IconX"
+XtCIconY "IconY"
+XtCIconic "Iconic"
+XtCInitialState "InitialState"
+XtCInput "Input"
+XtCJoinSession "JoinSession"
+XtCMaxAspectX "MaxAspectX"
+XtCMaxAspectY "MaxAspectY"
+XtCMaxHeight "MaxHeight"
+XtCMaxWidth "MaxWidth"
+XtCMinAspectX "MinAspectX"
+XtCMinAspectY "MinAspectY"
+XtCMinHeight "MinHeight"
+XtCMinWidth "MinWidth"
+XtCOverrideRedirect "OverrideRedirect"
+XtCProgramPath "ProgramPath"
+XtCResignCommand "ResignCommand"
+XtCRestartCommand "RestartCommand"
+XtCRestartStyle "RestartStyle"
+XtCSaveUnder "SaveUnder"
+XtCSessionID "SessionID"
+XtCShutdownCommand "ShutdownCommand"
+XtCTitle "Title"
+XtCTitleEncoding "TitleEncoding"
+XtCTransient "Transient"
+XtCTransientFor "TransientFor"
+XtCUrgency "Urgency"
+XtCVisual "Visual"
+XtCWaitForWm "Waitforwm"
+XtCWaitforwm "Waitforwm"
+XtCWidthInc "WidthInc"
+XtCWindowGroup "WindowGroup"
+XtCWindowRole "WindowRole"
+XtCWinGravity "WinGravity"
+XtCWmTimeout "WmTimeout"
+.sp 6p
+_
+.TE
+.sp 6p
+.IN "String Constants" "representation types"
+.LP
+Resource representation types:
+.TS
+lw(2i) lw(2.5i).
+_
+.sp 6p
+Symbol Definition
+.sp 6p
+_
+.sp 6p
+XtRAtom "Atom"
+.sp 6p
+_
+.TE
diff --git a/specs/Xt/appF b/specs/Xt/appF
new file mode 100644
index 0000000..b74cf4a
--- /dev/null
+++ b/specs/Xt/appF
@@ -0,0 +1,125 @@
+.\" $Xorg: appF,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" X Consortium
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from the X Consortium.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1991, 1994
+.\" Digital Equipment Corporation, Maynard, Massachusetts.
+.\"
+.\" Permission to use, copy, modify and distribute this documentation for any
+.\" purpose and without fee is hereby granted, provided that the above copyright
+.\" notice appears in all copies and that both that copyright notice and this
+.\" permission notice appear in supporting documentation, and that the name of
+.\" Digital not be used in in advertising or publicity pertaining
+.\" to distribution of the software without specific, written prior permission.
+.\" Digital makes no representations about the suitability of the
+.\" software described herein for any purpose.
+.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.bp
+\&
+.sp 1
+.ce 3
+\s+1\fBAppendix F\fP\s-1
+
+\s+1\fBResource Configuration Management\fP\s-1
+.sp 2
+.LP
+.XS
+\fBAppendix F \(em Resource Configuration Management\fP
+.XE
+Setting and changing resources in X applications can be difficult for
+both the application programmer and the end user. \fBResource
+Configuration Management (RCM)\fP addresses this problem by changing
+the \fBX Intrinsics\fP to immediately modify a resource for a
+specified widget and each child widget in the hierarchy.
+In this context, immediate means: no sourcing of a resource
+file is required; the application does not need to be restarted for the
+new resource values to take effect; and the change
+occurs immediately.
+.LP
+The main difference between \fBRCM\fP and the \fBEditres\fP
+protocol is that the \fBRCM\fP
+customizing hooks reside in the \fBIntrinsics\fP and thus are linked with
+other toolkits such as Motif and the Athena widgets. However, the
+\fBEditRes\fP protocol requires the application to link with the
+\fBEditRes\fP
+routines in the Xmu library and Xmu is not used by all applications that
+use Motif. Also, the \fBEditRes\fP protocol uses ClientMessage,
+whereas the
+\fBRCM\fP \fBIntrinsics\fP hooks use \fBPropertyNotify\fP events.
+.LP
+X Properties and the \fBPropertyNotify\fP events are used
+to implement \fBRCM\fP and
+allow on-the-fly resource customization. When the X Toolkit is
+initialized, two atoms are interned with the strings
+\fICustom Init\fP and
+\fICustom Data\fP. Both
+.PN _XtCreatePopupShell
+and
+.PN _XtAppCreateShell
+register a \fBPropertyNotify\fP event handler to handle these properties.
+.LP
+A customization tool uses the \fICustom Init\fP property to \fIping\fP an
+application to get the application's toplevel window. When the
+application's property notify event handler is invoked, the handler
+deletes the property. No data is transferred in this property.
+.LP
+A customization tool uses the \fICustom Data\fP property to tell an
+application that it should change a resource's value. The data in
+the property contains the length of the resource name (the number
+of bytes in the resource name), the resource name and the new
+value for the resource. This property's type is \fBXA_STRING\fP and
+the format of the string is:
+.IP 1. 5
+The length of the resource name (the number of bytes in
+the resource name)
+.IP 2. 5
+One space character
+.IP 3. 5
+The resource name
+.IP 4. 5
+One space character
+.IP 5. 5
+The resource value
+.LP
+When setting the application's resource, the event handler calls
+functions to walk the application's widget tree, determining which
+widgets are affected by the resource string, and then applying the value
+with
+.PN XtSetValues.
+As the widget tree is recursively descended, at
+each level in the widget tree a resource part is tested for a match.
+When the entire resource string has been matched, the value is applied
+to the widget or widgets.
+.LP
+Before a value is set on a widget, it is first determined if the last
+part of the resource is a valid resource for that widget. It must also
+add the resource to the application's resource database and then query
+it using specific resource strings that is builds from the widget
+information.
+
+
diff --git a/specs/Xt/intr.idxmac.t b/specs/Xt/intr.idxmac.t
new file mode 100644
index 0000000..9a3572d
--- /dev/null
+++ b/specs/Xt/intr.idxmac.t
@@ -0,0 +1,3 @@
+.eh '\fBX Toolkit Intrinsics\fP''\fBX11 Release \*(Rn\fP'
+.oh '\fBX Toolkit Intrinsics\fP''\fBX11 Release \*(Rn\fP'
+.so index.pageno
diff --git a/specs/Xt/postproc b/specs/Xt/postproc
new file mode 100644
index 0000000..588b1de
--- /dev/null
+++ b/specs/Xt/postproc
@@ -0,0 +1,19 @@
+.\" $Xorg: postproc,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
+.EH ''''
+.OH ''''
+.if o .bp \" blank page to make index and ToC start on odd page
+\&
+.nr PN +1
+.XS
+Index
+.XE
+.EQ
+delim $$
+.EN
+.tm .pn \n(PN
+.nr PN -1
+.\" print Table of Contents
+.bp 3
+.af PN i
+.PX
+
diff --git a/specs/Xt/strings.mit b/specs/Xt/strings.mit
new file mode 100644
index 0000000..8df4a48
--- /dev/null
+++ b/specs/Xt/strings.mit
@@ -0,0 +1,17 @@
+.\" $Xorg: strings.mit,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \(em C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \(em C Language Interface
+.ds xL Xlib \(em C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds xP X Window System Protocol
+.ds Rn 6.4
+.ds Vn 2.2
+.ds oI Must be of class Object or any subclass thereof.
+.ds rI Must be of class RectObj or any subclass thereof.
+.ds cI Must be of class Core or any subclass thereof.
+.ds oC Must be \fBobjectClass\fP or any subclass thereof.
+.ds rC Must be \fBrectObjClass\fP or any subclass thereof.
+.hw XtMake-Geometry-Request XtQuery-Geometry wid-get Composite-Part \
+Rect-Obj-Rec XtIsOverrideShell super-class
diff --git a/specs/i18n/Framework.ms b/specs/i18n/Framework.ms
new file mode 100644
index 0000000..6210cba
--- /dev/null
+++ b/specs/i18n/Framework.ms
@@ -0,0 +1,1565 @@
+.\" $Xorg: Framework.ms,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
+.\" To print this out, type tbl macros.t ThisFile | troff -ms
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.TL
+\s+3\fBX11R6 Sample Implementation Frame Work\fP\s-3
+.sp 2
+.AU
+Katsuhisa Yano
+.AI
+TOSHIBA Corporation
+.AU
+Yoshio Horiuchi
+.AI
+IBM Japan
+.LP
+.bp
+.br
+\&
+.sp 15
+.ps 9
+.nr PS 9
+.LP
+Copyright \(co 1994 by TOSHIBA Corporation
+.br
+Copyright \(co 1994 by IBM Corporation
+.LP
+Permission to use, copy, modify, and distribute this documentation
+for any purpose and without fee is hereby granted, provided
+that the above copyright notice and this permission notice appear
+in all copies.
+TOSHIBA Corporation and IBM Corporation make no representations about
+the suitability for any purpose of the information in this document.
+This documentation is provided as is without express or implied warranty.
+.sp 5
+Copyright \(co 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.ps 11
+.nr PS 11
+.bp 1
+.EH '\fBSample Implementation Frame Work\fP''\fBX11, Release 6.4\fP'
+.OH '\fBSample Implementation Frame Work\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Preface
+.XS \*(SN Preface
+.XE
+.LP
+This document proposes to define the structures, methods and their
+signatures that are expected to be common to all locale dependent
+functions within the Xlib sample implementation. The following
+illustration (Fig.1) is proposed to outline the separating of
+the components within the sample implementation.
+.LP
+.\" figure start
+.in +1c
+\^... 0.237 5.796 5.24 10.14
+\^... 0.000i 4.344i 5.003i 0.000i
+.nr 00 \n(.u
+.nf
+.PS 4.344i 5.003i
+.br
+.ps 11
+\h'1.753i'\v'2.130i'\v'-.13m'\L'-1.000i\(br'\v'.13m'
+.sp -1
+\h'1.753i'\v'1.130i'\l'1.500i'
+.sp -1
+\h'3.253i'\v'1.130i'\v'-.13m'\L'1.000i\(br'\v'.13m'
+.sp -1
+\h'3.253i'\v'2.130i'\l'-1.500i'
+.sp -1
+\h'1.751i'\v'1.628i'\l'1.499i'
+.sp -1
+\h'2.500i'\v'1.128i'\v'-.13m'\L'0.500i\(br'\v'.13m'
+.sp -1
+\h'1.875i'\v'1.344i'\h'-0.0m'\v'0.2m'\s12\fRInput\fP
+.sp -1
+\h'1.875i'\v'1.532i'\h'-0.0m'\v'0.2m'\s12\fRMethod\fP
+.sp -1
+\h'2.625i'\v'1.344i'\h'-0.0m'\v'0.2m'\s12\fROutput\fP
+.sp -1
+\h'2.625i'\v'1.532i'\h'-0.0m'\v'0.2m'\s12\fRMethod\fP
+.sp -1
+\h'1.938i'\v'1.844i'\h'-0.0m'\v'0.2m'\s12\fR<Locl. Serv. API>\fP
+.sp -1
+\h'2.000i'\v'2.032i'\h'-0.0m'\v'0.2m'\s12\fRX Locale Object\fP
+.sp -1
+\h'3.503i'\v'1.630i'\v'-.13m'\L'-0.500i\(br'\v'.13m'
+.sp -1
+\h'3.503i'\v'1.130i'\l'1.500i'
+.sp -1
+\h'5.003i'\v'1.130i'\v'-.13m'\L'0.500i\(br'\v'.13m'
+.sp -1
+\h'5.003i'\v'1.630i'\l'-1.500i'
+.sp -1
+\h'3.625i'\v'1.344i'\h'-0.0m'\v'0.2m'\s12\fRC Library\fP
+.sp -1
+\h'4.250i'\v'1.532i'\h'-0.0m'\v'0.2m'\s12\fRANSI impl.\fP
+.sp -1
+\h'0.003i'\v'1.630i'\v'-.13m'\L'-0.500i\(br'\v'.13m'
+.sp -1
+\h'0.003i'\v'1.130i'\l'1.500i'
+.sp -1
+\h'1.503i'\v'1.130i'\v'-.13m'\L'0.500i\(br'\v'.13m'
+.sp -1
+\h'1.503i'\v'1.630i'\l'-1.500i'
+.sp -1
+\h'0.125i'\v'1.344i'\h'-0.0m'\v'0.2m'\s12\fRLocale Library\fP
+.sp -1
+\h'0.438i'\v'1.507i'\h'-0.0m'\v'0.2m'\s12\fRnon-AnSI impl.\fP
+.sp -1
+\h'3.500i'\v'0.782i'\h'-0.0m'\v'0.2m'\s12\fR<< ANSI/MSE API >>\fP
+.sp -1
+\h'4.250i'\v'0.969i'\h'-0.0m'\v'0.2m'\h'-\w'\s12\fR(X Contrib)\fP'u/2u'\s12\fR(X Contrib)\fP\h'-\w'\s12\fR(X Contrib)\fP'u/2u'
+.sp -1
+\h'0.125i'\v'3.094i'\h'-0.0m'\v'0.2m'\s12\fRXLC_XLOCALE\fP
+.sp -1
+\h'0.125i'\v'3.282i'\h'-0.0m'\v'0.2m'\s12\fR- MB_CUR_MAX\fP
+.sp -1
+\h'0.125i'\v'3.444i'\h'-0.0m'\v'0.2m'\s12\fR- codeset info\fP
+.sp -1
+\h'0.125i'\v'3.607i'\h'-0.0m'\v'0.2m'\s12\fRo char/charset\fP
+.sp -1
+\h'0.125i'\v'3.769i'\h'-0.0m'\v'0.2m'\s12\fRo conv/charset\fP
+.sp -1
+\h'0.003i'\v'3.880i'\v'-.13m'\L'-1.000i\(br'\v'.13m'
+.sp -1
+\h'0.003i'\v'2.880i'\l'1.500i'
+.sp -1
+\h'1.503i'\v'2.880i'\v'-.13m'\L'1.000i\(br'\v'.13m'
+.sp -1
+\h'1.503i'\v'3.880i'\l'-1.500i'
+.sp -1
+\h'1.875i'\v'3.094i'\h'-0.0m'\v'0.2m'\s12\fRXLC_FONTSET\fP
+.sp -1
+\h'1.875i'\v'3.282i'\h'-0.0m'\v'0.2m'\s12\fR- fonset info\fP
+.sp -1
+\h'1.875i'\v'3.444i'\h'-0.0m'\v'0.2m'\s12\fR- charset info\fP
+.sp -1
+\h'1.875i'\v'3.607i'\h'-0.0m'\v'0.2m'\s12\fR- font/charset\fP
+.sp -1
+\h'1.875i'\v'3.769i'\h'-0.0m'\v'0.2m'\s12\fR- XLFD, GL/GR\fP
+.sp -1
+\h'1.753i'\v'3.880i'\v'-.13m'\L'-1.000i\(br'\v'.13m'
+.sp -1
+\h'1.753i'\v'2.880i'\l'1.500i'
+.sp -1
+\h'3.253i'\v'2.880i'\v'-.13m'\L'1.000i\(br'\v'.13m'
+.sp -1
+\h'3.253i'\v'3.880i'\l'-1.500i'
+.sp -1
+\h'3.625i'\v'3.444i'\h'-0.0m'\v'0.2m'\s12\fR- codeset info\fP
+.sp -1
+\h'3.625i'\v'3.607i'\h'-0.0m'\v'0.2m'\s12\fRo char/charset\fP
+.sp -1
+\h'3.625i'\v'3.769i'\h'-0.0m'\v'0.2m'\s12\fRo conv/charset\fP
+.sp -1
+\h'3.625i'\v'3.282i'\h'-0.0m'\v'0.2m'\s12\fR- MB_CUR_MAX\fP
+.sp -1
+\h'3.625i'\v'3.094i'\h'-0.0m'\v'0.2m'\s12\fRlocaledef DB\fP
+.sp -1
+\h'3.503i'\v'3.880i'\v'-.13m'\L'-1.000i\(br'\v'.13m'
+.sp -1
+\h'3.503i'\v'2.880i'\l'1.500i'
+.sp -1
+\h'5.003i'\v'2.880i'\v'-.13m'\L'1.000i\(br'\v'.13m'
+.sp -1
+\h'5.003i'\v'3.880i'\l'-1.500i'
+.sp -1
+\h'0.753i'\v'0.250i'\D'l0.000i -0.250i'
+.sp -1
+\h'0.753i'\l'3.500i'
+.sp -1
+\h'4.253i'\D'l0.000i 0.250i'
+.sp -1
+\h'4.253i'\v'0.250i'\l'-3.500i'
+.sp -1
+\h'2.500i'\v'0.157i'\h'-0.0m'\v'0.2m'\h'-\w'\s12\fRApplication\fP'u/2u'\s12\fRApplication\fP\h'-\w'\s12\fRApplication\fP'u/2u'
+.sp -1
+\v'0.782i'\h'-0.0m'\v'0.2m'\s12\fR<< ANSI/MSE API >>\fP
+.sp -1
+\h'0.751i'\v'0.969i'\h'-0.0m'\v'0.2m'\h'-\w'\s12\fR(X Contrib)\fP'u/2u'\s12\fR(X Contrib)\fP\h'-\w'\s12\fR(X Contrib)\fP'u/2u'
+.sp -1
+\h'2.500i'\v'2.128i'\v'-.13m'\L'0.749i\(br'\v'.13m'
+.sp -1
+\h'2.475i'\v'2.777i'\D'l0.025i 0.100i'
+.sp -1
+\h'2.525i'\v'2.777i'\D'l-0.025i 0.100i'
+.sp -1
+\h'2.500i'\v'2.315i'\D'l-0.250i 0.187i'
+.sp -1
+\h'2.250i'\v'2.502i'\l'-1.124i'
+.sp -1
+\h'1.126i'\v'2.502i'\v'-.13m'\L'0.375i\(br'\v'.13m'
+.sp -1
+\h'1.101i'\v'2.777i'\D'l0.025i 0.100i'
+.sp -1
+\h'1.151i'\v'2.777i'\D'l-0.025i 0.100i'
+.sp -1
+\h'2.500i'\v'2.315i'\D'l0.250i 0.187i'
+.sp -1
+\h'2.750i'\v'2.502i'\l'1.125i'
+.sp -1
+\h'3.875i'\v'2.502i'\v'-.13m'\L'0.375i\(br'\v'.13m'
+.sp -1
+\h'3.850i'\v'2.777i'\D'l0.025i 0.100i'
+.sp -1
+\h'3.900i'\v'2.777i'\D'l-0.025i 0.100i'
+.sp -1
+\h'0.376i'\v'1.628i'\v'-.13m'\L'1.249i\(br'\v'.13m'
+.sp -1
+\h'0.351i'\v'2.777i'\D'l0.025i 0.100i'
+.sp -1
+\h'0.401i'\v'2.777i'\D'l-0.025i 0.100i'
+.sp -1
+\h'4.625i'\v'1.628i'\v'-.13m'\L'1.249i\(br'\v'.13m'
+.sp -1
+\h'4.600i'\v'2.777i'\D'l0.025i 0.100i'
+.sp -1
+\h'4.650i'\v'2.777i'\D'l-0.025i 0.100i'
+.sp -1
+\h'2.125i'\v'0.253i'\v'-.13m'\L'0.375i\(br'\v'.13m'
+.sp -1
+\h'2.100i'\v'0.528i'\D'l0.025i 0.100i'
+.sp -1
+\h'2.150i'\v'0.528i'\D'l-0.025i 0.100i'
+.sp -1
+\h'2.875i'\v'0.253i'\v'-.13m'\L'0.375i\(br'\v'.13m'
+.sp -1
+\h'2.850i'\v'0.528i'\D'l0.025i 0.100i'
+.sp -1
+\h'2.900i'\v'0.528i'\D'l-0.025i 0.100i'
+.sp -1
+\h'1.126i'\v'0.253i'\v'-.13m'\L'0.375i\(br'\v'.13m'
+.sp -1
+\h'1.101i'\v'0.528i'\D'l0.025i 0.100i'
+.sp -1
+\h'1.151i'\v'0.528i'\D'l-0.025i 0.100i'
+.sp -1
+\h'3.875i'\v'0.253i'\v'-.13m'\L'0.375i\(br'\v'.13m'
+.sp -1
+\h'3.850i'\v'0.528i'\D'l0.025i 0.100i'
+.sp -1
+\h'3.900i'\v'0.528i'\D'l-0.025i 0.100i'
+.sp -1
+\v'4.002i'\D'l0.125i 0.125i'
+.sp -1
+\h'0.125i'\v'4.127i'\l'3.000i'
+.sp -1
+\h'3.125i'\v'4.127i'\D'l0.125i -0.125i'
+.sp -1
+\h'3.500i'\v'4.002i'\D'l0.125i 0.125i'
+.sp -1
+\h'3.625i'\v'4.127i'\l'1.250i'
+.sp -1
+\h'4.875i'\v'4.127i'\D'l0.125i -0.125i'
+.sp -1
+\h'1.626i'\v'4.344i'\h'-0.0m'\v'0.2m'\h'-\w'\s12\fRXLocale Source (X Core)\fP'u/2u'\s12\fRXLocale Source (X Core)\fP\h'-\w'\s12\fRXLocale Source (X Core)\fP'u/2u'
+.sp -1
+\h'4.250i'\v'4.344i'\h'-0.0m'\v'0.2m'\h'-\w'\s12\fRSystem LOcale Source\fP'u/2u'\s12\fRSystem LOcale Source\fP\h'-\w'\s12\fRSystem LOcale Source\fP'u/2u'
+.sp -1
+\h'2.500i'\v'0.782i'\h'-0.0m'\v'0.2m'\h'-\w'\s12\fRXLib API\fP'u/2u'\s12\fRXLib API\fP\h'-\w'\s12\fRXLib API\fP'u/2u'
+.sp -1
+\h'2.500i'\v'0.969i'\h'-0.0m'\v'0.2m'\h'-\w'\s12\fR(X Core)\fP'u/2u'\s12\fR(X Core)\fP\h'-\w'\s12\fR(X Core)\fP'u/2u'
+.sp -1
+\h'1.751i'\v'0.782i'\h'-0.0m'\v'0.2m'\s12\fR<<\fP
+.sp -1
+\h'3.063i'\v'0.782i'\h'-0.0m'\v'0.2m'\s12\fR>>\fP
+.sp -1
+.sp 1+4.344i
+.PE
+.if \n(00 .fi
+.in -1c
+.\" figure end
+.LP
+.ce
+.sp 6p
+Fig.1 : Frame Work of Locale Service API Proposal
+.LP
+Generally speaking, the internationalized portion of Xlib (Locale
+Dependent X, LDX) consists of three objects;
+locale (LC) , input method (IM) and output method (OM).
+The LC provides a set of information that depends on user's language
+environment. The IM manages text inputing, and the OM manages text
+drawing. Both IM and OM highly depend on LC data.
+.LP
+In X11R5, there are two sample implementations, Ximp and Xsi, for
+Xlib internationalization. But in both implementations, IM and OM
+actually refer the private extension of LC. It breaks coexistence
+of these two sample implementations. For example, if a user creates
+a new OM for special purpose as a part of Ximp, it will not work with
+Xsi.
+.LP
+As a solution of this problem, we propose to define the standard
+APIs between these three objects, and define the structure that are
+common to these objects.
+.LP
+.NH 1
+Objective
+.XS \*(SN Objective
+.XE
+.LP
+.IP \(bu
+Explain the current X11R6 sample implementation
+.IP \(bu
+Document the common set of locale dependent interfaces
+.IP \(bu
+Provide more flexible pluggable layer
+.LP
+.NH 1
+Locale Object Binding Functions
+.XS \*(SN Locale Object Binding Functions
+.XE
+.LP
+This chapter describes functions related locale object binding for
+implementing the pluggable layer.
+.LP
+A locale loader is an entry point for locale object, which
+instantiates XLCd object and binds locale methods with specified
+locale name. The behavior of loader is implementation dependent.
+And, what kind of loaders are available is also implementation
+dependent.
+.LP
+The loader is called in
+.PN _XOpenLC,
+but caller of
+.PN _XOpenLC
+does not need to care about its inside. For example, if the loader is
+implemented with dynamic load functions, and the dynamic module is
+expected to be unloaded when the corresponding XLCd is freed,
+close methods of XLCdMethods should handle unloading.
+.LP
+.sp
+\fBInitializing a locale loader list\fP
+.LP
+.FD 0
+void _XlcInitLoader()
+.FN
+The
+.PN _XlcInitLoader
+function initializes the locale loader list with vendor specific
+manner. Each loader is registered with calling
+.PN _XlcAddLoader.
+The number of loaders and their order in the loader list is
+implementation dependent.
+.sp
+.LP
+\fBAdd a loader\fP
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef XLCd (*XLCdLoadProc)(\fIname\fP);
+ char \fI*name\fP;
+
+typedef int XlcPosition;
+.De
+.TS
+lw(.5i) lw(2i) lw(2i).
+T{
+#define
+T} T{
+XlcHead
+T} T{
+ 0
+T}
+T{
+#define
+T} T{
+XlcTail
+T} T{
+-1
+T}
+.TE
+.LP
+.FD 0
+Bool _XlcAddLoader(\fIproc, position\fP)
+.br
+ XLCdLoadProc \fIproc\fP;
+.br
+ XlcPosition \fIposition\fP;
+.FN
+.LP
+The
+.PN _XlcAddLoader
+function registers the specified locale loader ``\fIproc\fP'' to the
+internal loader list. The position specifies that the loader
+``\fIproc\fP'' should be placed in the top of the loader list(XlcHead)
+or last(XlcTail).
+.LP
+The object loader is called from the top of the loader list in order,
+when calling time.
+.sp
+.LP
+\fBRemove a loader\fP
+.LP
+.FD 0
+void _XlcRemoveLoader(\fIproc\fP)
+.br
+ XLCdLoadProc \fIproc\fP;
+.FN
+.LP
+The
+.PN _XlcRemoveLoader
+function removes the locale loader specified by ``\fIproc\fP'' from the
+loader list.
+.LP
+Current implementation provides following locale loaders;
+.DS
+.PN _XlcDefaultLoader
+.PN _XlcGenericLoader
+.PN _XlcEucLoader
+.PN _XlcSjisLoader
+.PN _XlcUtfLoader
+.PN _XaixOsDynamicLoad
+.DE
+.LP
+.NH 1
+Locale Method Interface
+.XS \*(SN Locale Method Interface
+.XE
+.LP
+This chapter describes the locale method API, which is a set of
+accessible functions from both IM and OM parts.
+The locale method API provides the functionalities; obtaining locale
+dependent information, handling charset, converting text, etc.
+.LP
+As a result of using these APIs instead of accessing vender private
+extension of the locale object, we can keep locale, IM and OM
+independently each other.
+.LP
+.NH 1
+Locale Method Functions
+.XS \*(SN Locale Method Functions
+.XE
+.LP
+\fBOpen a Locale Method\fP
+.LP
+.FD 0
+XLCd _XOpenLC(\fIname\fP)
+.br
+ char \fI*name\fP;
+.FN
+.LP
+The
+.PN _XOpenLC
+function opens a locale method which corresponds to the
+specified locale name.
+.PN _XOpenLC
+calls a locale object loader, which is registered via
+.PN _XlcAddLoader into the internal loader list. If the called loader
+is valid and successfully opens a locale,
+.PN _XOpenLC
+returns the XLCd. If the loader is invalid or failed to open a locale,
+.PN _XOpenLC
+calls the next loader. If all registered loaders cannot open a locale,
+.PN _XOpenLC
+returns NULL.
+.LP
+.FD 0
+XLCd _XlcCurrentLC()
+.FN
+.LP
+The
+.PN _XlcCurrentLC
+function returns an XLCd that are bound to current locale.
+.sp
+.LP
+\fBClose a Locale Method\fP
+.LP
+.FD 0
+void _XCloseLC(\fIlcd\fP)
+.br
+ XLCd \fIlcd\fP;
+.FN
+.LP
+The
+.PN _XCloseLC
+function close a locale method the specified lcd.
+.sp
+.LP
+\fBObtain Locale Method values\fP
+.LP
+.FD 0
+char * _XGetLCValues(\fIlcd\fP, ...)
+.br
+ XLCd \fIlcd\fP;
+.FN
+.LP
+The
+.PN _XGetLCValues
+function returns NULL if no error occurred; otherwise, it returns the
+name of the first argument that could not be obtained.
+The following values are defined as standard arguments. Other values
+are implementation dependent.
+.LP
+.TS H
+tab(:);
+l l l.
+_
+.sp 6p
+.B
+Name:Type:Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+XlcNCodeset:char*:codeset part of locale name
+XlcNDefaultString:char*:XDefaultString()
+XlcNEncodingName:char*:encoding name
+XlcNLanguage:char*:language part of locale name
+XlcNMbCurMax:int:ANSI C MB_CUR_MAX
+XlcNStateDependentEncoding:Bool:is state-dependent encoding or not
+XlcNTerritory:char*:territory part of locale name
+.sp 6p
+_
+.TE
+.LP
+.NH 1
+Charset functions
+.XS \*(SN
+Charset functions
+.XE
+.LP
+The XlcCharSet is an identifier which represents a subset of characters
+(character set) in the locale object.
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef enum {
+ XlcUnknown, XlcC0, XlcGL, XlcC1, XlcGR, XlcGLGR, XlcOther
+} XlcSide;
+
+typedef struct _XlcCharSetRec *XlcCharSet;
+
+typedef struct {
+ char *name;
+ XPointer value;
+} XlcArg, *XlcArgList;
+
+typedef char* (*XlcGetCSValuesProc)(\fIcharset\fP, \fIargs\fP, \fInum_args\fP);
+ XlcCharSet \fIcharset\fP;
+ XlcArgList \fIargs\fP;
+ int \fInum_args\fP;
+
+typedef struct _XlcCharSetRec {
+ char *name;
+ XrmQuark xrm_name;
+ char *encoding_name;
+ XrmQuark xrm_encoding_name;
+ XlcSide side;
+ int char_size;
+ int set_size;
+ char *ct_sequence;
+ XlcGetCSValuesProc get_values;
+} XlcCharSetRec;
+.De
+.sp
+.LP
+\fBGet an XlcCharSet\fP
+.LP
+.FD 0
+XlcCharSet _XlcGetCharSet(\fIname\fP)
+.br
+ char \fI*name\fP;
+.FN
+.LP
+The
+.PN _XlcGetCharSet
+function gets an XlcCharSet which corresponds to the charset name
+specified by ``\fIname\fP''.
+.PN _XlcGetCharSet
+returns NULL, if no XlcCharSet bound to specified ``\fIname\fP''.
+.LP
+The following character sets are pre-registered.
+.LP
+.TS H
+tab(@);
+l l.
+_
+.sp 6p
+.B
+Name@Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+ISO8859-1:GL@7-bit ASCII graphics (ANSI X3.4-1968),
+@Left half of ISO 8859 sets
+JISX0201.1976-0:GL@Left half of JIS X0201-1976 (reaffirmed 1984),
+@8-Bit Alphanumeric-Katakana Code
+.sp
+ISO8859-1:GR@Right half of ISO 8859-1, Latin alphabet No. 1
+ISO8859-2:GR@Right half of ISO 8859-2, Latin alphabet No. 2
+ISO8859-3:GR@Right half of ISO 8859-3, Latin alphabet No. 3
+ISO8859-4:GR@Right half of ISO 8859-4, Latin alphabet No. 4
+ISO8859-7:GR@Right half of ISO 8859-7, Latin/Greek alphabet
+ISO8859-6:GR@Right half of ISO 8859-6, Latin/Arabic alphabet
+ISO8859-8:GR@Right half of ISO 8859-8, Latin/Hebrew alphabet
+ISO8859-5:GR@Right half of ISO 8859-5, Latin/Cyrillic alphabet
+ISO8859-9:GR@Right half of ISO 8859-9, Latin alphabet No. 5
+JISX0201.1976-0:GR@Right half of JIS X0201-1976 (reaffirmed 1984),
+@8-Bit Alphanumeric-Katakana Code
+.sp
+GB2312.1980-0:GL@GB2312-1980, China (PRC) Hanzi defined as GL
+GB2312.1980-0:GR@GB2312-1980, China (PRC) Hanzi defined as GR
+JISX0208.1983-0:GL@JIS X0208-1983, Japanese Graphic Character Set
+@defined as GL
+JISX0208.1983-0:GR@JIS X0208-1983, Japanese Graphic Character Set
+@defined as GR
+KSC5601.1987-0:GL@KS C5601-1987, Korean Graphic Character Set
+@defined as GL
+KSC5601.1987-0:GR@KS C5601-1987, Korean Graphic Character Set
+@defined as GR
+JISX0212.1990-0:GL@JIS X0212-1990, Japanese Graphic Character Set
+@defined as GL
+JISX0212.1990-0:GR@JIS X0212-1990, Japanese Graphic Character Set
+@defined as GR
+.\" CNS11643.1986-0:GL
+.\" CNS11643.1986-1:GL
+.\" TIS620.2533-1:GR
+.sp 6p
+_
+.TE
+.LP
+.sp
+\fBAdd an XlcCharSet\fP
+.LP
+.FD 0
+Bool _XlcAddCharSet(\fIcharset\fP)
+ XlcCharSet \fIcharset\fP;
+.FN
+.LP
+The
+.PN _XlcAddCharSet
+function registers XlcCharSet specified by ``\fIcharset\fP''.
+.LP
+.sp
+\fBObtain Character Set values\fP
+.LP
+.FD 0
+char * _XlcGetCSValues(\fIcharset\fP, ...)
+.br
+ XlcCharSet \fIcharset\fP;
+.FN
+.LP
+The
+.PN _XlcGetCSValues
+function returns NULL if no error occurred;
+otherwise, it returns the name of the first argument that could not
+be obtained. The following values are defined as standard arguments.
+Other values are implementation dependent.
+.LP
+.TS H
+tab(:);
+l l l.
+_
+.sp 6p
+.B
+Name:Type:Description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+XlcNName:char*:charset name
+XlcNEncodingName:char*:XLFD CharSet Registry and Encoding
+XlcNSide:XlcSide:charset side (GL, GR, ...)
+XlcNCharSize:int:number of octets per character
+XlcNSetSize:int:number of character sets
+XlcNControlSequence:char*:control sequence of Compound Text
+.sp 6p
+_
+.TE
+.LP
+.NH 1
+Converter Functions
+.XS \*(SN Converter Functions
+.XE
+.LP
+We provide a set of the common converter APIs, that are independent
+from both of source and destination text type.
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct _XlcConvRec *XlcConv;
+
+typedef void (*XlcCloseConverterProc)(\fIconv\fP);
+ XlcConv \fIconv\fP;
+
+typedef int (*XlcConvertProc)(\fIconv\fP, \fIfrom\fP, \fIfrom_left\fP, \fIto\fP, \fIto_left\fP, \fIargs\fP, \fInum_args\fP);
+ XlcConv \fIconv\fP;
+ XPointer \fI*from\fP;
+ int \fI*from_left\fP;
+ XPointer \fI*to\fP;
+ int \fI*to_left\fP;
+ XPointer \fI*args\fP;
+ int \fInum_args\fP;
+
+typedef void (*XlcResetConverterProc)(\fIconv\fP);
+ XlcConv \fIconv\fP;
+
+typedef struct _XlcConvMethodsRec {
+ XlcCloseConverterProc close;
+ XlcConvertProc convert;
+ XlcResetConverterProc reset;
+} XlcConvMethodsRec, *XlcConvMethods;
+
+typedef struct _XlcConvRec {
+ XlcConvMethods methods;
+ XPointer state;
+} XlcConvRec;
+.De
+.LP
+.sp
+\fBOpen a converter\fP
+.LP
+.FD 0
+XlcConv _XlcOpenConverter(\fIfrom_lcd\fP, \fIfrom_type\fP, \fIto_lcd\fP, \fIto_type\fP)
+.br
+ XLCd \fIfrom_lcd\fP;
+.br
+ char \fI*from_type\fP;
+.br
+ XLCd \fIto_lcd\fP;
+.br
+ char \fI*to_type\fP;
+.FN
+.LP
+.PN _XlcOpenConverter
+function opens the converter which converts a text from specified
+``\fIfrom_type\fP'' to specified ``\fIto_type\fP'' encoding. If the
+function cannot find proper converter or cannot open a corresponding
+converter, it returns NULL. Otherwise, it returns the conversion
+descriptor.
+.LP
+The following types are pre-defined. Other types are implementation
+dependent.
+.LP
+.TS H
+tab(:);
+l l l l.
+_
+.sp 6p
+.B
+Name:Type:Description:Arguments
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+XlcNMultiByte:char *:multibyte:-
+XlcNWideChar:wchar_t *:wide character:-
+XlcNCompoundText:char *:COMPOUND_TEXT:-
+XlcNString:char *:STRING:-
+XlcNCharSet:char *:per charset:XlcCharSet
+XlcNChar:char *:per character:XlcCharSet
+.sp 6p
+_
+.TE
+.LP
+.sp
+\fBClose a converter\fP
+.LP
+.FD 0
+void _XlcCloseConverter(\fIconv\fP)
+.br
+ XlcConv \fIconv\fP;
+.FN
+.LP
+The
+.PN _XlcCloseConverter
+function closes the specified converter ``\fIconv\fP''.
+.LP
+.sp
+\fBCode conversion\fP
+.LP
+.FD 0
+int _XlcConvert(\fIconv\fP, \fIfrom\fP, \fIfrom_left\fP, \fIto\fP, \fIto_left\fP, \fIargs\fP, \fInum_args\fP)
+.br
+ XlcConv \fIconv\fP;
+.br
+ XPointer \fI*from\fP;
+.br
+ int \fI*from_left\fP;
+.br
+ XPointer \fI*to\fP;
+.br
+ int \fI*to_left\fP;
+.br
+ XPointer \fI*args\fP;
+.br
+ int \fInum_args\fP;
+.FN
+.LP
+The
+.PN _XlcConvert
+function converts a sequence of characters from one type, in the array
+specified by ``\fIfrom\fP'', into a sequence of corresponding characters
+in another type, in the array specified by ``\fIto\fP''. The types are
+those specified in the
+.PN _XlcOpenConverter()
+call that returned the conversion descriptor, ``\fIconv\fP''.
+The arguments ``\fIfrom\fP'', ``\fIfrom_left\fP'', ``\fIto\fP'' and
+``\fIto_left\fP'' have the same specification of XPG4 iconv function.
+.LP
+For state-dependent encodings, the conversion descriptor ``\fIconv\fP''
+is placed into its initial shift state by a call for which ``\fIfrom\fP''
+is a NULL pointer, or for which ``\fIfrom\fP'' points to a null pointer.
+.LP
+The following 2 converters prepared by locale returns appropriate
+charset (XlcCharSet) in an area pointed by args[0].
+.LP
+.TS
+tab(:);
+l l l.
+_
+.sp 6p
+.B
+From:To:Description
+.sp 6p
+_
+.sp 6p
+.R
+XlcNMultiByte:XlcNCharSet:Segmentation (Decomposing)
+XlcNWideChar:XlcNCharSet:Segmentation (Decomposing)
+.sp 6p
+_
+.TE
+.LP
+The conversion, from XlcNMultiByte/XlcNWideChar to XlcNCharSet,
+extracts a segment which has same charset encoding characters.
+More than one segment cannot be converted in a call.
+.LP
+.sp
+\fBReset a converter\fP
+.LP
+.FD 0
+void _XlcResetConverter(\fIconv\fP)
+.br
+ XlcConv \fIconv\fP;
+.FN
+.LP
+The
+.PN _XlcResetConverter
+function reset the specified converter ``\fIconv\fP''.
+.LP
+.sp
+\fBRegister a converter\fP
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef XlcConv (*XlcOpenConverterProc)(\fIfrom_lcd\fP, \fIfrom_type\fP, \fIto_lcd\fP, \fIto_type\fP);
+ XLCd \fIfrom_lcd\fP;
+ char \fI*from_type\fP;
+ XLCd \fIto_lcd\fP;
+ char \fI*to_type\fP;
+.De
+.LP
+.FD 0
+Bool _XlcSetConverter(\fIfrom_lcd\fP, \fIfrom\fP, \fIto_lcd\fP, \fIto\fP, \fIconverter\fP)
+.br
+ XLCd \fIfrom_lcd\fP;
+.br
+ char \fI*from\fP;
+.br
+ XLCd \fIto_lcd\fP;
+.br
+ char \fI*to\fP;
+.br
+ XlcOpenConverterProc \fIconverter\fP;
+.FN
+.LP
+The \fBXlcSetConverter\fP function registers a converter which convert
+from ``\fIfrom_type\fP'' to ``\fIto_type\fP'' into the converter list
+(in the specified XLCd).
+.LP
+.NH 1
+X Locale Database functions
+.XS \*(SN X Locale Database functions
+.XE
+.LP
+X Locale Database contains the subset of user's environment that
+depends on language. The following APIs are provided for accessing
+X Locale Database and other locale relative files.
+.LP
+For more detail about X Locale Database, please refer
+X Locale Database Definition document.
+.LP
+.sp
+\fBGet a resource from database\fP
+.LP
+.FD 0
+void _XlcGetResource(\fIlcd\fP, \fIcategory\fP, \fIclass\fP, \fIvalue\fP, \fIcount\fP)
+.br
+ XLCd \fIlcd\fP;
+.br
+ char \fI*category\fP;
+.br
+ char \fI*class\fP;
+.br
+ char \fI***value\fP;
+.br
+ int \fI*count\fP;
+.FN
+.LP
+The
+.PN _XlcGetResource
+function obtains a locale dependent data which is associated with the
+locale of specified ``\fIlcd\fP''.
+The locale data is provided by system locale or by X Locale Database
+file, and what kind of data is available is implementation dependent.
+.LP
+The specified ``\fIcategory\fP'' and ``\fIclass\fP'' are used for
+finding out the objective locale data.
+.LP
+The returned value is returned in value argument in string list form,
+and the returned count shows the number of strings in the value.
+.LP
+The returned value is owned by locale method, and should not be modified
+or freed by caller.
+.LP
+.sp
+\fBGet a locale relative file name\fP
+.LP
+.FD 0
+char * _XlcFileName(\fIlcd\fP, \fIcategory\fP)
+.br
+ XLCd \fIlcd\fP;
+.br
+ char \fI*category\fP;
+.FN
+.LP
+The
+.PN _XlcFileName
+functions returns a file name which is bound to the specified ``\fIlcd\fP''
+and ``\fIcategory\fP'', as a null-terminated string. If no file name can
+be found, or there is no readable file for the found file name,
+.PN _XlcFileName
+returns NULL. The returned file name should be freed by caller.
+.LP
+The rule for searching a file name is implementation dependent.
+In current implementation,
+.PN _XlcFileName
+uses ``{category}.dir'' file as mapping table, which has pairs of
+strings, a full locale name and a corresponding file name.
+.LP
+.NH 1
+Utility Functions
+.XS \*(SN Utility Functions
+.XE
+.LP
+\fBCompare Latin-1 strings\fP
+.LP
+.FD 0
+int _XlcCompareISOLatin1(\fIstr1\fP, \fIstr2\fP)
+.br
+ char \fI*str1\fP, \fI*str2\fP;
+.FN
+.FD 0
+int _XlcNCompareISOLatin1(\fIstr1\fP, \fIstr2\fP, \fIlen\fP)
+.br
+ char \fI*str1\fP, \fI*str2\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _XlcCompareIsoLatin1
+function to compares two ISO-8859-1 strings. Bytes representing lower
+case letters are converted to upper case before making the comparison.
+The value returned is an integer less than, equal to, or greater than
+zero, depending on whether ``\fIstr1\fP'' is lexicographicly less than,
+equal to, or greater than ``\fIstr2\fP''.
+.LP
+The
+.PN _XlcNCompareIsoLatin1
+function is identical to
+.PN _XlcCompareISOLatin1,
+except that at most ``\fIlen\fP'' bytes are compared.
+.LP
+.sp
+\fBResource Utility\fP
+.LP
+.FD 0
+int XlcNumber(\fIarray\fP)
+ ArrayType \fIarray\fP;
+.FN
+.LP
+Similar to XtNumber.
+.LP
+.FD 0
+void _XlcCopyFromArg(\fIsrc\fP, \fIdst\fP, \fIsize\fP)
+.br
+ char \fI*src\fP;
+.br
+ char \fI*dst\fP;
+.br
+ int \fIsize\fP;
+.FN
+.FD 0
+void _XlcCopyToArg(\fIsrc\fP, \fIdst\fP, \fIsize\fP)
+.br
+ char \fI*src\fP;
+.br
+ char \fI**dst\fP;
+.br
+ int \fIsize\fP;
+.FN
+.LP
+Similar to
+.PN _XtCopyFromArg
+and
+.PN _XtCopyToArg.
+.LP
+.FD 0
+void _XlcCountVaList(\fIvar\fP, \fIcount_ret\fP)
+.br
+ va_list \fIvar\fP;
+.br
+ int \fI*count_ret\fP;
+.FN
+.LP
+Similar to
+.PN _XtCountVaList.
+.LP
+.FD 0
+void _XlcVaToArgList(\fIvar\fP, \fIcount\fP, \fIargs_ret\fP)
+.br
+ va_list \fIvar\fP;
+.br
+ int \fIcount\fP;
+.br
+ XlcArgList \fI*args_ret\fP;
+.FN
+.LP
+Similar to
+.PN _XtVaToArgList.
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct _XlcResource {
+ char *name;
+ XrmQuark xrm_name;
+ int size;
+ int offset;
+ unsigned long mask;
+} XlcResource, *XlcResourceList;
+.De
+.LP
+.TS
+lw(.5i) lw(2i) lw(2i).
+T{
+#define
+T} T{
+XlcCreateMask
+T} T{
+(1L<<0)
+T}
+T{
+#define
+T} T{
+XlcDefaultMask
+T} T{
+(1L<<1)
+T}
+T{
+#define
+T} T{
+XlcGetMask
+T} T{
+(1L<<2)
+T}
+T{
+#define
+T} T{
+XlcSetMask
+T} T{
+(1L<<3)
+T}
+T{
+#define
+T} T{
+XlcIgnoreMask
+T} T{
+(1L<<4)
+T}
+.TE
+.LP
+.FD 0
+void _XlcCompileResourceList(\fIresources\fP, \fInum_resources\fP)
+.br
+ XlcResourceList \fIresources\fP;
+.br
+ int \fInum_resources\fP;
+.FN
+.LP
+Similar to
+.PN _XtCompileResourceList.
+.LP
+.FD 0
+char * _XlcGetValues(\fIbase\fP, \fIresources\fP, \fInum_resources\fP, \fIargs\fP, \fInum_args\fP, \fImask\fP)
+.br
+ XPointer \fIbase\fP;
+.br
+ XlcResourceList \fIresources\fP;
+.br
+ int \fInum_resources\fP;
+.br
+ XlcArgList \fIargs\fP;
+.br
+ int \fInum_args\fP;
+.br
+ unsigned long \fImask\fP;
+.FN
+.LP
+Similar to XtGetSubvalues.
+.LP
+.FD 0
+char * _XlcSetValues(\fIbase\fP, \fIresources\fP, \fInum_resources\fP, \fIargs\fP, \fInum_args\fP, \fImask\fP)
+.br
+ XPointer \fIbase\fP;
+.br
+ XlcResourceList \fIresources\fP;
+.br
+ int \fInum_resources\fP;
+.br
+ XlcArgList \fIargs\fP;
+.br
+ int \fInum_args\fP;
+.br
+ unsigned long \fImask\fP;
+.FN
+.LP
+Similar to XtSetSubvalues.
+.LP
+.sp
+\fBANSI C Compatible Functions\fP
+.LP
+The following are ANSI C/MSE Compatible Functions for non-ANSI C environment.
+.LP
+.FD 0
+int _Xmblen(\fIstr\fP, \fIlen\fP)
+.br
+ char \fI*str\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xmblen
+function returns the number of characters pointed to by ``\fIstr\fP''.
+Only ``\fIlen\fP'' bytes in ``\fIstr\fP'' are used in determining the
+character count returned. ``\fIStr\fP'' may point at characters from
+any valid codeset in the current locale.
+.LP
+The call
+.PN _Xmblen
+is equivalent to
+.RS
+_Xmbtowc(_Xmbtowc((\fIwchar_t*\fP)NULL, \fIstr\fP, \fIlen\fP))
+.RE
+.LP
+.FD 0
+int _Xmbtowc(\fIwstr\fP, \fIstr\fP, \fIlen\fP)
+.br
+ wchar_t \fI*wstr\fP;
+.br
+ char \fI*str\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xmbtowc
+function converts the character(s) pointed to by ``\fIstr\fP''
+to their wide character representation(s) pointed to by ``\fIwstr\fP''.
+``\fILen\fP'' is the number of bytes in ``\fIstr\fP'' to be converted.
+The return value is the number of characters converted.
+.LP
+The call
+.PN _Xmbtowc
+is equivalent to
+.RS
+_Xlcmbtowc((XLCd)NULL, \fIwstr\fP, \fIstr\fP, \fIlen\fP)
+.RE
+.LP
+.FD 0
+int _Xlcmbtowc(\fIlcd\fP, \fIwstr\fP, \fIstr\fP, \fIlen\fP)
+.br
+ XLCd \fIlcd\fP;
+.br
+ wchar_t \fI*wstr\fP;
+.br
+ char \fI*str\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xlcmbtowc
+function is identical to
+.PN _Xmbtowc,
+except that it requires the ``\fIlcd\fP'' argument. If ``\fIlcd\fP''
+is (XLCd) NULL,
+.PN _Xlcmbtowc,
+calls
+.PN _XlcCurrentLC
+to determine the current locale.
+.LP
+.FD 0
+int _Xwctomb(\fIstr\fP, \fIwc\fP)
+.br
+ char \fI*str\fP;
+.br
+ wchar_t \fIwc\fP;
+.FN
+.LP
+The
+.PN _Xwctomb
+function converts a single wide character pointed to by ``\fIwc\fP'' to
+its multibyte representation pointed to by ``\fIstr\fP''.
+On success, the return value is 1.
+.LP
+The call
+.PN _Xwctomb
+is equivalent to
+.RS
+_Xlcwctomb((XLCd)NULL, \fIstr\fP, \fIwstr\fP)
+.RE
+.LP
+.FD 0
+int _Xlcwctomb(\fIlcd\fP, \fIstr\fP, \fIwc\fP)
+.br
+ XLCd \fIlcd\fP;
+.br
+ char \fI*str\fP;
+.br
+ wchar_t \fIwc\fP;
+.FN
+.LP
+The
+.PN _Xlcwctomb
+function is identical to _Xwctomb, except that it requires the
+``\fIlcd\fP'' argument. If ``\fIlcd\fP'' is (XLCd) NULL,
+.PN _Xlcwctomb,
+calls
+.PN _XlcCurrentLC
+to determine the current locale.
+.LP
+.FD 0
+int _Xmbstowcs(\fIwstr\fP, \fIstr\fP, \fIlen\fP)
+.br
+ wchar_t \fI*wstr\fP;
+.br
+ char \fI*str\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xmbstowcs
+function converts the NULL-terminated string pointed to by ``\fIstr\fP''
+to its wide character string representation pointed to by ``\fIwstr\fP''.
+``\fILen\fP'' is the number of characters in ``\fIstr\fP'' to be converted.
+.LP
+The call
+.PN _Xmbstowcs
+is equivalent to
+.RS
+_Xlcmbstowcs((XLCd)NULL, \fIwstr\fP, \fIstr\fP, \fIlen\fP)
+.RE
+.LP
+.FD 0
+int _Xlcmbstowcs(\fIlcd\fP, \fIwstr\fP, \fIstr\fP, \fIlen\fP)
+.br
+ XLCd \fIlcd\fP;
+.br
+ wchar_t \fI*wstr\fP;
+.br
+ char \fI*str\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xlcmbstowcs
+function is identical to _Xmbstowcs, except that it requires the
+``\fIlcd\fP'' argument. If ``\fIlcd\fP'' is (XLCd) NULL,
+.PN _Xlcmbstowcs,
+calls
+.PN _XlcCurrentLC
+to determine the current locale.
+.LP
+.FD 0
+int _Xwcstombs(\fIstr\fP, \fIwstr\fP, \fIlen\fP)
+.br
+ char \fI*str\fP;
+.br
+ wchar_t \fI*wstr\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xwcstombs
+function converts the (wchar_t) NULL terminated wide character string
+pointed to by ``\fIwstr\fP'' to the NULL terminated multibyte string
+pointed to by ``\fIstr\fP''.
+.LP
+The call
+.PN _Xwcstombs
+is equivalent to
+.RS
+_Xlcwcstombs((XLCd)NULL, \fIstr\fP, \fIwstr\fP, \fIlen\fP)
+.RE
+.LP
+.FD 0
+int _Xlcwcstombs(\fIlcd\fP, \fIstr\fP, \fIwstr\fP, \fIlen\fP)
+.br
+ XLCd \fIlcd\fP;
+.br
+ char \fI*str\fP;
+.br
+ wchar_t \fI*wstr\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xlcwcstombs
+function is identical to _Xwcstombs, except that it requires the
+``\fIlcd\fP'' argument. If ``\fIlcd\fP'' is (XLCd) NULL,
+.PN _Xlcwcstombs,
+calls
+.PN _XlcCurrentLC
+to determine the current locale.
+.LP
+.FD 0
+int _Xwcslen(\fIwstr\fP)
+.br
+ wchar_t \fI*wstr\fP;
+.FN
+.LP
+The
+.PN _Xwcslen
+function returns the count of wide characters in the (wchar_t) NULL
+terminated wide character string pointed to by ``\fIwstr\fP''.
+.LP
+.FD 0
+wchar_t * _Xwcscpy(\fIwstr1\fP, \fIwstr2\fP)
+.br
+ wchar_t \fI*wstr1\fP, \fI*wstr2\fP;
+.FN
+.FD 0
+wchar_t * _Xwcsncpy(\fIwstr1\fP, \fIwstr2\fP, \fIlen\fP)
+.br
+ wchar_t \fI*wstr1\fP, \fI*wstr2\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xwcscpy
+function copies the (wchar_t) NULL terminated wide character string
+pointed to by ``\fIwstr2\fP'' to the object pointed at by ``\fIwstr1\fP''.
+``\fIWstr1\fP'' is (wchar_t) NULL terminated. The return value is a
+pointer to ``\fIwstr1\fP''.
+.LP
+The
+.PN _Xwcsncpy
+function is identical to
+.PN _Xwcscpy,
+except that it copies ``\fIlen\fP'' wide characters from the object
+pointed to by ``\fIwstr2\fP'' to the object pointed to ``\fIwstr1\fP''.
+.LP
+.FD 0
+int _Xwcscmp(\fIwstr1\fP, \fIwstr2\fP)
+.br
+ wchar_t \fI*wstr1\fP, \fI*wstr2\fP;
+.FN
+.FD 0
+int _Xwcsncmp(\fIwstr1\fP, \fIwstr2\fP, \fIlen\fP)
+.br
+ wchar_t \fI*wstr1\fP, \fI*wstr2\fP;
+.br
+ int \fIlen\fP;
+.FN
+.LP
+The
+.PN _Xwcscmp
+function compares two (wchar_t) NULL terminated wide character strings.
+The value returned is an integer less than, equal to, or greater than zero,
+depending on whether ``\fIwstr1\fP'' is lexicographicly less then, equal to,
+or greater than ``\fIstr2\fP''.
+.LP
+The
+.PN _Xwcsncmp
+function is identical to
+.PN _XlcCompareISOLatin1,
+except that at most ``\fIlen\fP'' wide characters are compared.
+.sp
+.\" --------------------------------------------------------------------
+.\" .LP
+.\" \fBLocale Method Internal Functions\fP
+.\" .LP
+.\" .FD 0
+.\" XlcCharSet _XlcCreateDefaultCharSet(\fIname\fP, \fIct_sequence\fP)
+.\" .br
+.\" char \fI*name\fP;
+.\" .br
+.\" char \fI*ct_sequence\fP;
+.\" .FN
+.\" .FD 0
+.\" Bool _XlcParseCharSet(\fIcharset\fP)
+.\" .br
+.\" XlcCharSet \fIcharset\fP;
+.\" .FN
+.\" .FD 0
+.\" void _XlcGetLocaleDataBase(\fIlcd\fP, \fIcategory\fP, \fIname\fP, \fIvalue\fP, \fIcount\fP)
+.\" .br
+.\" XLCd \fIlcd\fP;
+.\" .br
+.\" char \fI*category\fP;
+.\" .br
+.\" char \fI*name\fP;
+.\" .br
+.\" char \fI***value\fP;
+.\" .br
+.\" int \fI*count\fP;
+.\" .FN
+.\" .FD 0
+.\" void _XlcDestroyLocaleDataBase(\fIlcd\fP)
+.\" .br
+.\" XLCd \fIlcd\fP;
+.\" .FN
+.\" .FD 0
+.\" XPointer _XlcCreateLocaleDataBase(\fIlcd\fP)
+.\" .br
+.\" XLCd \fIlcd\fP;
+.\" .FN
+.\" .LP
+.\" .sp
+.\" \fBObtain an locale database path\fP
+.\" .LP
+.\" .FD 0
+.\" int _XlcResolveI18NPath(\fIdir\fP)
+.\" .br
+.\" char \fI*dir\fP;
+.\" .FN
+.\" .LP
+.\" The
+.\" .PN _XlcResolveI18NPath
+.\" function returns path name list that is related to X Locale Database.
+.\" The obtained path is stored into the array which is pointed by
+.\" specified ``\fIdir\fP''. The path consists of directory paths which
+.\" are separated with colon.
+.\" If the environment variable XLOCALEDIR is specified, the path
+.\" contains its contents.
+.\" .LP
+.\" The default path of X Locale Database is implementation dependent.
+.\" In current implementation, it's determined in build time.
+.\" .LP
+.\" .PN _XlcResolveI18NPath
+.\" does not check overflow of the array to which the ``\fIdir\fP''
+.\" parameter points. Caller should provide enough buffer to store this
+.\" string.
+.\" .LP
+.\" .sp
+.\" \fBObtain a full locale name\fP
+.\" .LP
+.\" .FD 0
+.\" int _XlcResolveLocaleName(\fIlc_name\fP, \fIfull_name\fP, \fIlanguage\fP, \fIterritory\fP, \fIcodeset\fP)
+.\" .br
+.\" char \fI*lc_name\fP;
+.\" .br
+.\" char \fI*full_name\fP;
+.\" .br
+.\" char \fI*language\fP;
+.\" .br
+.\" char \fI*territory\fP;
+.\" .br
+.\" char \fI*codeset\fP;
+.\" .FN
+.\" .LP
+.\" The
+.\" .PN _XlcResolveLocaleName
+.\" function returns a full locale name.
+.\" The obtained full locale name is stored into the array which is
+.\" pointed by specified ``\fIfull_name\fP''.
+.\" The language, territory and codeset part of the full locale name
+.\" are copied to the return arguments, ``\fIlanguage\fP'',
+.\" ``\fIterritory\fP'' and ``\fIcodeset\fP'', respectively.
+.\" NULL can be specified for these arguments.
+.\" .LP
+.\" The rule for mapping from locale name to full locale name is
+.\" implementation dependent.
+.\" .LP
+.\" .PN _XlcResolveLocaleName
+.\" does not check overflow of the array to which
+.\" ``\fIfull_name\fP'', ``\fIlanguage\fP'', ``\fIterritory\fP'' and
+.\" ``\fIcodeset\fP'' parameter point.
+.\" Caller should provide enough buffer to store those string.
+.\" .LP
+.\" In current implementation,
+.\" .PN _XlcResolveLocaleName
+.\" uses locale.alias file as mapping table, which has pairs of strings,
+.\" a locale name and a full locale name.
+.\" .LP
+.\" .FD 0
+.\" int _XlcResolveDBName(\fIlc_name\fP, \fIfile_name\fP)
+.\" .br
+.\" char \fI*lc_name\fP;
+.\" .br
+.\" char \fI*file_name\fP;
+.\" .FN
+.\" .FD 0
+.\" XLCd _XlcCreateLC(\fIname\fP, \fImethods\fP)
+.\" .br
+.\" char \fI*name\fP;
+.\" .br
+.\" XLCdMethods \fImethods\fP;
+.\" .FN
+.\" .FD 0
+.\" void _XlcDestroyLC(\fIlcd\fP)
+.\" .br
+.\" XLCd \fIlcd\fP;
+.\" .FN
+.\" .LP
+.\"
+
diff --git a/specs/i18n/LocaleDB.ms b/specs/i18n/LocaleDB.ms
new file mode 100644
index 0000000..f83ccc7
--- /dev/null
+++ b/specs/i18n/LocaleDB.ms
@@ -0,0 +1,501 @@
+.\" $Xorg: LocaleDB.ms,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
+.\" To print this out, type tbl macros.t ThisFile | troff -ms
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+\&
+.TL
+\s+3\fBX Locale Database Definition\fP\s-3
+.sp 2
+.AU
+Yoshio Horiuchi
+.AI
+IBM Japan
+.LP
+.bp
+.br
+\&
+.ps 9
+.nr PS 9
+.sp 2
+.LP
+Copyright \(co IBM Corporation 1994
+.LP
+All Rights Reserved
+.LP
+License to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of IBM not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+.LP
+IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
+IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+.sp 5
+Copyright \(co 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.LP
+.bp 1
+.ps 11
+.nr PS 11
+.EH '\fBX Locale Database Definition\fP''\fBX11, Release 6.4\fP'
+.OH '\fBX Locale Database Definition\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+General
+.XS
+\*(SN General
+.XE
+.LP
+An X Locale Database contains the subset of a user's environment that
+depends on language, in X Window System. It is made up from one or more
+categories. Each category consists of some classes and sub-classes.
+.LP
+It is provided as a plain ASCII text file, so a user can change its
+contents easily. It allows a user to customize the behavior of
+internationalized portion of Xlib without changing Xlib itself.
+.LP
+This document describes;
+.RS
+.IP
+Database Format Definition
+.IP
+Contents of Database in sample implementation
+.RE
+.LP
+Since it is hard to define the set of required information for all
+platforms, only the flexible database format is defined.
+The available entries in database are implementation dependent.
+.LP
+.NH 1
+Database Format Definition
+.XS
+\*(SN Database Format Definition
+.XE
+.LP
+The X Locale Database contains one or more category definitions.
+This section describes the format of each category definition.
+.LP
+The category definition consists of one or more class definitions.
+Each class definition has a pair of class name and class value, or
+has several subclasses which are enclosed by the left brace ({) and
+the right brace (}).
+.LP
+Comments can be placed by using the number sign character (#).
+Putting the number sign character on the top of the line indicates
+that the entire line is comment. Also, putting any whitespace character
+followed by the number sign character indicates that a part of the line
+(from the number sign to the end of the line) is comment.
+A line can be continued by placing backslash (\\) character as the
+last character on the line; this continuation character will be
+discarded from the input. Comment lines cannot be continued on
+a subsequent line using an escaped new line character.
+.LP
+X Locale Database only accepts XPCS, the X Portable Character Set.
+The reserved symbols are; the quotation mark("), the number sign (#),
+the semicolon(;), the backslash(\\), the left brace({) and
+the right brace(}).
+.LP
+The format of category definition is;
+.RS
+.TS
+tab(@);
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l l l
+l r l
+l r l
+l l l.
+CategoryDefinition@::=@CategoryHeader CategorySpec CategoryTrailer
+CategoryHeader@::=@CategoryName NL
+CategorySpec@::=@{ ClassSpec }
+CategoryTrailer@::=@"END" Delimiter CategoryName NL
+CategoryName@::=@String
+ClassSpec@::=@ClassName Delimiter ClassValue NL
+ClassName@::=@String
+ClassValue@::=@ValueList | "{" NL { ClassSpec } "}"
+ValueList@::=@Value | Value ";" ValueList
+Value@::=@ValuePiece | ValuePiece Value
+ValuePiece@::=@String | QuotedString | NumericString
+String@::=@Char { Char }
+QuotedString@::=@""" QuotedChar { QuotedChar } """
+NumericString@::=@"\\\\o" OctDigit { OctDigit }
+@|@"\\\\d" DecDigit { DecDigit }
+@|@"\\\\x" HexDigit { HexDigit }
+Char@::=@<XPCS except NL, Space or unescaped reserved symbols>
+QuotedChar@::=@<XPCS except unescaped """>
+OctDigit@::=@<character in the range of "0" - "7">
+DecDigit@::=@<character in the range of "0" - "9">
+HexDigit@::=@<character in the range of "0" - "9", "a" - "f", "A" - "F">
+Delimiter@::=@ Space { Space }
+Space@::=@<space> | <horizontal tab>
+NL@::=@<newline>
+.TE
+.RE
+.LP
+Elements separated by vertical bar (|) are alternatives. Curly
+braces ({...}) indicate zero or more repetitions of the enclosed
+elements. Square brackets ([...]) indicate that the enclosed element
+is optional. Quotes ("...") are used around literal characters.
+.LP
+The backslash, which is not the top character of the NumericString, is
+recognized as an escape character, so that the next one character is
+treated as a literal character. For example, the two-character
+sequence, ``\\"''(the backslash followed by the quotation mark) is
+recognized and replaced with a quotation mark character.
+Any whitespace character, that is not the Delimiter, unquoted and
+unescaped, is ignored.
+.LP
+.NH 1
+Contents of Database
+.XS
+\*(SN Contents of Database
+.XE
+.LP
+The available categories and classes depend on implementation, because
+different platform will require different information set.
+For example, some platform have system locale but some platform don't.
+Furthermore, there might be a difference in functionality even if the
+platform has system locale.
+.LP
+In current sample implementation, categories listed below are available.
+.RS
+.TS
+tab(:);
+l l.
+XLC_FONTSET:XFontSet relative information
+XLC_XLOCALE:Character classification and conversion information
+.TE
+.RE
+.LP
+.NH 1
+XLC_FONTSET Category
+.XS
+\*(SN XLC_FONTSET Category
+.XE
+.LP
+The XLC_FONTSET category defines the XFontSet relative information.
+It contains the CHARSET_REGISTRY-CHARSET_ENCODING name and character
+mapping side (GL, GR, etc), and is used in Output Method (OM).
+.RS
+.TS H
+tab(:);
+lw(1.5i) l l.
+_
+.sp 6p
+.B
+class:super class:description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+fsN::Nth fontset (N=0,1,2, ...)
+.sp
+charset:fsN:list of encoding name
+font:fsN:list of font encoding name
+.sp 6p
+_
+.TE
+.RE
+.LP
+.IP "fsN"
+.br
+Includes an encoding information for Nth charset, where N is
+the index number (0,1,2,...). If there are 4 charsets available
+in current locale, 4 fontsets, fs0, fs1, fs2 and fs3, should be
+defined.
+This class has two subclasses, `charset' and `font'.
+.IP "charset"
+Specifies an encoding information to be used internally in Xlib
+for this fontset. The format of value is;
+.RS
+.TS
+tab(;);
+l l l.
+EncodingInfo;::=;EncodingName [ ":" EncodingSide ]
+EncodingName;::=;CHARSET_REGISTRY-CHARSET_ENCODING
+EncodingSide;::=;"GL" | "GR"
+.TE
+.RE
+For detail definition of CHARSET_REGISTRY-CHARSET_ENCODING, refer
+"X Logical Font Descriptions" document.
+.IP
+example:
+.br
+ ISO8859-1:GL
+.IP "font"
+.br
+Specifies a list of encoding information which is used for searching
+appropriate font for this fontset. The left most entry has highest
+priority.
+.LP
+.NH 1
+XLC_XLOCALE Category
+.XS
+\*(SN XLC_XLOCALE Category
+.XE
+.LP
+The XLC_XLOCALE category defines character classification, conversion
+and other character attributes.
+.RS
+.TS H
+tab(:);
+lw(1.5i) l l.
+_
+.sp 6p
+.B
+class:super class:description
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+encoding_name::codeset name
+mb_cur_max::MB_CUR_MAX
+state_depend_encoding::state dependent or not
+wc_encoding_mask::for parsing wc string
+wc_shift_bits::for conversion between wc and mb
+csN::Nth charset (N=0,1,2,...)
+.sp
+side:csN:mapping side (GL, etc)
+length:csN:length of a character
+mb_encoding:csN:for parsing mb string
+wc_encoding:csN:for parsing wc string
+ct_encoding:csN:list of encoding name for ct
+.sp 6p
+_
+.TE
+.RE
+.LP
+.IP "encoding_name"
+Specifies a codeset name of current locale.
+.IP "mb_cur_max"
+Specifies a maximum allowable number of bytes in a multi-byte character.
+It is corresponding to MB_CUR_MAX of "ISO/IEC 9899:1990 C Language Standard".
+.IP "state_depend_encoding"
+Indicates a current locale is state dependent. The value should be
+specified "True" or "False".
+.IP "wc_encoding_mask"
+Specifies a bit-mask for parsing wide-char string. Each wide character is
+applied bit-and operation with this bit-mask, then is classified into
+the unique charset, by using `wc_encoding'.
+.IP "wc_shift_bits"
+Specifies a number of bit to be shifted for converting from a multi-byte
+character to a wide character, and vice-versa.
+.IP "csN"
+.br
+Includes a character set information for Nth charset, where N is the
+index number (0,1,2,...). If there are 4 charsets available in current
+locale, cs0, cs1, cs2 and cs3 should be defined. This class has five
+subclasses, `side', `length', `mb_encoding' `wc_encoding' and `ct_encoding'.
+.IP "side"
+.br
+Specifies a mapping side of this charset. The format of this value is;
+.RS
+.TS
+tab(@);
+l l l.
+Side@::=@EncodingSide [``:Default'']
+.TE
+.RE
+The suffix ":Default" can be specified. It indicates that a character
+belongs to the specified side is mapped to this charset in initial state.
+.IP "length"
+.br
+Specifies a number of bytes of a multi-byte character of this charset.
+It should not contain the length of any single-shift sequence.
+.IP "mb_encoding"
+Specifies a list of shift sequence for parsing multi-byte string.
+The format of this value is;
+.RS
+.TS
+tab(@);
+l l l
+l r l
+l l l
+l l l
+l l l
+l l l
+c l s
+c l s.
+MBEncoding@::=@ShiftType ShiftSequence
+@|@ShiftType ShiftSequence ";" MBEncoding
+ShiftType@::=@"<SS>" | "<LSL>" | "<LSR>"
+ShiftSequence@::=@SequenceValue | SequenceValue ShiftSequence
+SequenceValue@::=@NumericString
+.sp
+shift types:
+<SS>@Indicates single shift sequence
+<LSL>@Indicates locking shift left sequence
+<LSR>@Indicates locking shift right sequence
+.TE
+.RE
+example:
+.br
+ <LSL> \\x1b \\x28 \\x4a; <LSL> \\x1b \\x28 \\x42
+.LP
+.IP "wc_encoding"
+Specifies an integer value for parsing wide-char string.
+It is used to determine the charset for each wide character, after
+applying bit-and operation using `wc_encoding_mask'.
+This value should be unique in all csN classes.
+.IP "ct_encoding"
+Specifies a list of encoding information that can be used for Compound
+Text.
+.LP
+.NH 1
+Sample of X Locale Database
+.XS
+\*(SN Sample of X Locale Database
+.XE
+.LP
+The following is sample X Locale Database file.
+.LP
+.sp
+.RS
+.nf
+# $Xorg: LocaleDB.ms,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
+# XLocale Database Sample for ja_JP.euc
+#
+
+#
+# XLC_FONTSET category
+#
+XLC_FONTSET
+# fs0 class (7 bit ASCII)
+fs0 {
+ charset ISO8859-1:GL
+ font ISO8859-1:GL; JISX0201.1976-0:GL
+}
+# fs1 class (Kanji)
+fs1 {
+ charset JISX0208.1983-0:GL
+ font JISX0208.1983-0:GL
+}
+# fs2 class (Half Kana)
+fs2 {
+ charset JISX0201.1976-0:GR
+ font JISX0201.1976-0:GR
+}
+# fs3 class (User Defined Character)
+# fs3 {
+# charset JISX0212.1990-0:GL
+# font JISX0212.1990-0:GL
+# }
+END XLC_FONTSET
+
+#
+# XLC_XLOCALE category
+#
+XLC_XLOCALE
+
+encoding_name ja.euc
+mb_cur_max 3
+state_depend_encoding False
+
+wc_encoding_mask \\x00008080
+wc_shift_bits 8
+
+# cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \\x00000000
+ ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
+}
+# cs1 class
+cs1 {
+ side GR:Default
+ length 2
+
+ wc_encoding \\x00008080
+
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+# cs2 class
+cs2 {
+ side GR
+ length 1
+ mb_encoding <SS> \\x8e
+
+ wc_encoding \\x00000080
+
+ ct_encoding JISX0201.1976-0:GR
+}
+
+# cs3 class
+# cs3 {
+# side GL
+# length 2
+# mb_encoding <SS> \\x8f
+# #if HasWChar32
+# wc_encoding \\x20000000
+# #else
+# wc_encoding \\x00008000
+# #endif
+# ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
+# }
+
+END XLC_XLOCALE
+.fi
+.RE
+.LP
+.NH 1
+Reference
+.XS
+\*(SN Reference
+.XE
+.LP
+.XP
+[1] \fIISO/IEC 9899:1990 C Language Standard\fP
+.XP
+[2] \fIX Logical Font Descriptions\fP
+.LP
diff --git a/specs/i18n/Trans.ms b/specs/i18n/Trans.ms
new file mode 100644
index 0000000..40ed2e3
--- /dev/null
+++ b/specs/i18n/Trans.ms
@@ -0,0 +1,1145 @@
+.\" $Xorg: Trans.ms,v 1.3 2000/08/17 19:42:49 cpqbld Exp $
+.\" To print this out, type tbl macros.t This File | troff -ms
+.EH ''''
+.OH ''''
+.EF ''''
+.OF ''''
+.ps 11
+.nr PS 11
+.\" .nr PD 1v
+.\" .nr DD 1v
+\&
+.sp 8
+.TL
+\s+3\fBThe XIM Transport Specification\s-3\fP
+.sp
+.sp
+\fBRevision 0.1\fP
+.sp
+\fBX Version 11, Release 6.4\fP
+.sp 3
+.AU
+Takashi Fujiwara
+.AI
+FUJITSU LIMITED
+.sp 3
+.AB
+.LP
+This specification describes the transport layer interfaces between
+Xlib and IM Server, which makes various channels usable such as X
+protocol or, TCP/IP, DECnet and etc.
+.AE
+.ce 0
+.br
+.LP
+.bp
+\&
+.ps 9
+.nr PS 9
+.sp 8
+.LP
+Copyright \(co 1994 by FUJITSU LIMITED
+.LP
+Permission to use, copy, modify, and distribute this documentation
+for any purpose and without fee is hereby granted, provided
+that the above copyright notice and this permission
+notice appear in all copies.
+Fujitsu makes no representations about the suitability
+for any purpose of the information in this document.
+This documentation is provided as is without express or implied warranty.
+.sp 5
+Copyright \(co 1994 X Consortium
+.LP
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.LP
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.LP
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.LP
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp 3
+\fIX Window System\fP is a trademark of X Consortium, Inc.
+.ps 11
+.nr PS 11
+.bp 1
+.EH '\fBXIM Transport Specification\fP''\fBX11, Release 6.4\fP'
+.OH '\fBXIM Transport Specification\fP''\fBX11, Release 6.4\fP'
+.EF ''\fB % \fP''
+.OF ''\fB % \fP''
+.NH 1
+Introduction
+.XS
+\*(SN Introduction
+.XE
+.LP
+The Xlib XIM implementation is layered into three functions, a protocol
+layer, an interface layer and a transport layer. The purpose of this
+layering is to make the protocol independent of transport implementation.
+Each function of these layers are:
+.RS 3
+.IP "\fIThe protocol layer\fP"
+.br
+implements overall function of XIM and calls the interface layer
+functions when it needs to communicate to IM Server.
+.IP "\fIThe interface layer\fP"
+.br
+separates the implementation of the transport layer from the protocol
+layer, in other words, it provides implementation independent hook for
+the transport layer functions.
+.IP "\fIThe transport layer\fP"
+.br
+handles actual data communication with IM Server. It is done by a set
+of several functions named transporters.
+.RE
+.LP
+This specification describes the interface layer and the transport
+layer, which makes various communication channels usable such as
+X protocol or, TCP/IP, DECnet, STREAM, etc., and provides
+the information needed for adding another new transport layer.
+In addition, sample implementations for the transporter using the
+X connection is described in section 4.
+.NH 1
+Initialization
+.XS
+\*(SN Initialization
+.XE
+.NH 2
+Registering structure to initialize
+.XS
+\*(SN Registering structure to initialize
+.XE
+.LP
+The structure typed as TransportSW contains the list of the transport
+layer the specific implementations supports.
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+typedef struct {
+.br
+ char *transport_name;
+.br
+ Bool (*config);
+} TransportSW;
+.De
+.LP
+.IP "\fItransport_name\fP" 15
+name of transport(*1)
+.FS
+(*1) Refer to "The Input Method Protocol: Appendix B"
+.FE
+.IP "\fIconfig\fP" 15
+initial configuration function
+.LP
+A sample entry for the Xlib supporting transporters is shown below:
+.LP
+.Ds 0
+.TA .5i 2.5i
+.ta .5i 2.5i
+TransportSW _XimTransportRec[] = {
+.sp 3p
+/* char \fI*:
+\ * transport_name\fP, Bool \fI(*config)()\fP
+\ */
+ ``X'', _XimXConf,
+ ``tcp'', _XimTransConf,
+ ``local'', _XimTransConf,
+ ``decnet'', _XimTransConf,
+ ``streams'', _XimTransConf,
+ (char *)NULL, (Bool (*)())NULL,
+};
+.De
+.LP
+.NH 2
+Initialization function
+.XS
+\*(SN Initialization function
+.XE
+.LP
+The following function will be called once when Xlib configures the
+transporter functions.
+.sp 6p
+.FD 0
+Bool (*config)(\fIim\fP, \fItransport_data\fP)
+.br
+ XIM \fIim\fP;
+.br
+ char \fI*transport_data\fP;
+.br
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fItransport_data\fP 1i
+Specifies the data specific to the transporter, in IM Server address. (*1)
+.FS
+(*1) Refer to "The Input Method Protocol: Appendix B"
+.FE
+.sp 6p
+.LP
+This function must setup the transporter function pointers.
+.LP
+The actual \fIconfig\fP function will be chosen by IM Server at the
+pre-connection time, matching by the \fItransport_name\fP specified
+in the \fB_XimTransportRec\fP array; The specific members of XimProto
+structure listed below must be initialized so that point they
+appropriate transporter functions.
+.LP
+If the specified transporter has been configured successfully, this
+function returns True. There is no Alternative Entry for config
+function itself.
+.LP
+The structure XimProto contains the following function pointers:
+.DS
+.TA .5i 2.5i
+.ta .5i 2.5i
+Bool (*connect)(); /* Open connection */
+Bool (*shutdown)(); /* Close connection */
+Bool (*write)(); /* Write data */
+Bool (*read)(); /* Read data */
+Bool (*flush)(); /* Flush data buffer */
+Bool (*register_dispatcher)(); /* Register asynchronous data handler */
+Bool (*call_dispatcher)(); /* Call dispatcher */
+.DE
+These functions are called when Xlib needs to communicate the
+IM Server. These functions must process the appropriate procedure
+described below.
+.LP
+.NH 1
+The interface/transport layer functions
+.XS
+\*(SN The interface/transport layer functions
+.XE
+.LP
+Following functions are used for the transport interface.
+.LP
+.ce
+Table 3-1; The Transport Layer Functions.
+.SM
+.TS
+tab(:) center box;
+cw(4c) | cw(4c) | c
+c | c | c
+l | l | c.
+.B
+Alternative Entry:XimProto member:Section
+(Interface Layer):(Transport Layer):\^
+=
+.R
+\fB_XimConnect\fP:connect:3.1
+_
+\fB_XimShutdown\fP:shutdown:3.2
+_
+\fB_XimWrite\fP:write:3.3
+_
+\fB_XimRead\fP:read:3.4
+_
+\fB_XimFlush\fP:flush:3.5
+_
+\fB_XimRegisterDispatcher\fP:register_dispatcher:3.6
+_
+\fB_XimCallDispatcher\fP:call_dispatcher:3.7
+.TE
+.NL
+.LP
+The Protocol layer calls the above functions using the Alternative
+Entry in the left column. The transport implementation defines
+XimProto member function in the right column. The Alternative Entry is
+provided so as to make easier to implement the Protocol Layer.
+.LP
+.NH 2
+Opening connection
+.XS
+\*(SN Opening connection
+.XE
+.LP
+When \fBXOpenIM\fP is called, the following function is called to connect
+with the IM Server.
+.sp 6p
+.FD 0
+Bool (*connect)(\fIim\fP)
+.br
+ XIM \fIim\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.sp 6p
+.LP
+This function must establishes the connection to the IM Server. If the
+connection is established successfully, this function returns True.
+The Alternative Entry for this function is:
+.sp 6p
+.FD 0
+Bool _XimConnect(\fIim\fP)
+.br
+ XIM \fIim\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.LP
+.NH 2
+Closing connection
+.XS
+\*(SN Closing connection
+.XE
+.LP
+When \fBXCloseIM\fP is called, the following function is called to
+disconnect the connection with the IM Server. The Alternative Entry
+for this function is:
+.sp 6p
+.FD 0
+Bool (*shutdown)(\fIim\fP)
+.br
+ XIM \fIim\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.sp 6p
+.LP
+This function must close connection with the IM Server. If the
+connection is closed successfully, this function returns True. The
+Alternative Entry for this function is:
+.sp 6p
+.FD 0
+Bool _XimShutdown(\fIim\fP)
+.br
+ XIM \fIim\fP;
+.FN
+.IP \fIim\fP
+Specifies XIM structure address.
+.LP
+.NH 2
+Writing data
+.XS
+\*(SN Writing data
+.XE
+.LP
+The following function is called, when Xlib needs to write data to the
+IM Server.
+.sp 6p
+.FD 0
+Bool (*write)(\fIim\fP, \fIlen\fP, \fIdata\fP)
+.br
+ XIM \fIim\fP;
+.br
+ INT16 \fIlen\fP;
+.br
+ XPointer \fIdata\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIlen\fP 1i
+Specifies the length of writing data.
+.IP \fIdata\fP 1i
+Specifies the writing data.
+.sp 6p
+.LP
+This function writes the \fIdata\fP to the IM Server, regardless
+of the contents. The number of bytes is passed to \fIlen\fP. The
+writing data is passed to \fIdata\fP. If data is sent successfully,
+the function returns True. Refer to "The Input Method Protocol" for
+the contents of the writing data. The Alternative Entry for this
+function is:
+.sp 6p
+.FD 0
+Bool _XimWrite(\fIim\fP, \fIlen\fP, \fIdata\fP)
+.br
+ XIM \fIim\fP;
+.br
+ INT16 \fIlen\fP;
+.br
+ XPointer \fIdata\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIlen\fP 1i
+Specifies the length of writing data.
+.IP \fIdata\fP 1i
+Specifies the writing data.
+.LP
+.NH 2
+Reading data
+.XS
+\*(SN Reading data
+.XE
+.LP
+The following function is called when Xlib waits for response from IM
+server synchronously.
+.sp 6p
+.FD 0
+Bool (*read)(\fIim\fP, \fIread_buf\fP, \fIbuf_len\fP, \fIret_len\fP)
+.br
+ XIM \fIim\fP;
+.br
+ XPointer \fIread_buf\fP;
+.br
+ int \fIbuf_len\fP;
+.br
+ int \fI*ret_len\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIread_buf\fP 1i
+Specifies the buffer to store data.
+.IP \fIbuf_len\fP 1i
+Specifies the size of the \fIbuffer\fP
+.IP \fIret_len\fP
+Specifies the length of stored data.
+.sp 6p
+.LP
+This function stores the read data in \fIread_buf\fP, which size is
+specified as \fIbuf_len\fP. The size of data is set to \fIret_len\fP.
+This function return True, if the data is read normally or reading
+data is completed.
+.LP
+The Alternative Entry for this function is:
+.sp 6p
+.FD 0
+Bool _XimRead(\fIim\fP, \fIret_len\fP, \fIbuf\fP, \fIbuf_len\fP, \fIpredicate\fP, \fIpredicate_arg\fP)
+.br
+ XIM \fIim\fP;
+.br
+ INT16 \fI*ret_len\fP;
+.br
+ XPointer \fIbuf\fP;
+.br
+ int \fIbuf_len\fP;
+.br
+ Bool \fI(*predicate)()\fP;
+.br
+ XPointer \fIpredicate_arg\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIret_len\fP 1i
+Specifies the size of the \fIdata\fP buffer.
+.IP \fIbuf\fP 1i
+Specifies the buffer to store data.
+.IP \fIbuf_len\fP 1i
+Specifies the length of \fIbuffer\fP.
+.IP \fIpredicate\fP 1i
+Specifies the predicate for the XIM data.
+.IP \fIpredicate_arg\fP 1i
+Specifies the predicate specific data.
+.sp 6p
+.LP
+The predicate procedure indicates whether the \fIdata\fP is for the
+XIM or not. \fIlen\fP
+This function stores the read data in \fIbuf\fP, which size is specified
+as \fIbuf_len\fP. The size of data is set to \fIret_len\fP.
+If \fIpreedicate()\fP returns True, this function returns True.
+If not, it calls the registered callback function.
+.LP
+The procedure and its arguments are:
+.LP
+.sp 6p
+.FD 0
+Bool (*predicate)(\fIim\fP, \fIlen\fP, \fIdata\fP, \fIpredicate_arg\fP)
+.br
+ XIM \fIim\fP;
+.br
+ INT16 \fIlen\fP;
+.br
+ XPointer \fIdata\fP;
+.br
+ XPointer \fIpredicate_arg\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIlen\fP 1i
+Specifies the size of the \fIdata\fP buffer.
+.IP \fIdata\fP 1i
+Specifies the buffer to store data.
+.IP \fIpredicate_arg\fP 1i
+Specifies the predicate specific data.
+.LP
+.NH 2
+Flushing buffer
+.XS
+\*(SN Flushing buffer
+.XE
+.LP
+The following function is called when Xlib needs to flush the data.
+.sp 6p
+.FD 0
+void (*flush)(\fIim\fP)
+.br
+ XIM \fIim\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.sp 6p
+.LP
+This function must flush the data stored in internal buffer on the
+transport layer. If data transfer is completed, the function returns
+True. The Alternative Entry for this function is:
+.sp 6p
+.FD 0
+void _XimFlush(\fIim\fP)
+.br
+ XIM \fIim\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.LP
+.NH 2
+Registering asynchronous data handler
+.XS
+\*(SN Registering asynchronous data handler
+.XE
+.LP
+Xlib needs to handle asynchronous response from IM Server. This is
+because some of the XIM data occur asynchronously to X events.
+.LP
+Those data will be handled in the \fIFilter\fP, and the \fIFilter\fP
+will call asynchronous data handler in the protocol layer. Then it
+calls dispatchers in the transport layer. The dispatchers are
+implemented by the protocol layer. This function must store the
+information and prepare for later call of the dispatchers using
+\fB_XimCallDispatcher\fP.
+.LP
+When multiple dispatchers are registered, they will be called
+sequentially in order of registration, on arrival of asynchronous
+data. The register_dispatcher is declared as following:
+.sp 6p
+.FD 0
+Bool (*register_dispatcher)(\fIim\fP, \fIdispatcher\fP, \fIcall_data\fP)
+.br
+ XIM \fIim\fP;
+.br
+ Bool \fI(*dispatcher)()\fP;
+.br
+ XPointer \fIcall_data\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIdispatcher\fP 1i
+Specifies the dispatcher function to register.
+.IP \fIcall_data\fP 1i
+Specifies a parameter for the \fIdispatcher\fP.
+.LP
+The dispatcher is a function of the following type:
+.sp 6p
+.FD 0
+Bool (*dispatcher)(\fIim\fP, \fIlen\fP, \fIdata\fP, \fIcall_data\fP)
+.br
+ XIM \fIim\fP;
+.br
+ INT16 \fIlen\fP;
+.br
+ XPointer \fIdata\fP;
+.br
+ XPointer \fIcall_data\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIlen\fP 1i
+Specifies the size of the \fIdata\fP buffer.
+.IP \fIdata\fP 1i
+Specifies the buffer to store data.
+.IP \fIcall_data\fP 1i
+Specifies a parameter passed to the register_dispatcher.
+.sp 6p
+.LP
+The dispatcher is provided by the protocol layer. They are called once
+for every asynchronous data, in order of registration. If the data is
+used, it must return True. otherwise, it must return False.
+.LP
+If the dispatcher function returns True, the Transport Layer assume
+that the data has been processed by the upper layer. The Alternative
+Entry for this function is:
+.sp 6p
+.FD 0
+Bool _XimRegisterDispatcher(\fIim\fP, \fIdispatcher\fP, \fIcall_data\fP)
+.br
+ XIM \fIim\fP;
+.br
+ Bool \fI(*dispatcher)()\fP;
+.br
+ XPointer \fIcall_data\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIdispatcher\fP 1i
+Specifies the dispatcher function to register.
+.IP \fIcall_data\fP 1i
+Specifies a parameter for the \fIdispatcher\fP.
+.LP
+.NH 2
+Calling dispatcher
+.XS
+\*(SN Calling dispatcher
+.XE
+.LP
+The following function is used to call the registered dispatcher
+function, when the asynchronous response from IM Server has arrived.
+.sp 6p
+.FD 0
+Bool (*call_dispatcher)(\fIim\fP, \fIlen\fP, \fIdata\fP)
+.br
+ XIM \fIim\fP;
+.br
+ INT16 \fIlen\fP;
+.br
+ XPointer \fIdata\fP;
+.FN
+.IP \fIim\fP 1i
+Specifies XIM structure address.
+.IP \fIlen\fP 1i
+Specifies the size of \fIdata\fP buffer.
+.IP \fIdata\fP 1i
+Specifies the buffer to store data.
+.LP
+The call_dispatcher must call the dispatcher function, in order of
+their registration. \fIlen\fP and \fIdata\fP are the data passed to
+register_dispatcher.
+.LP
+The return values are checked at each invocation, and if it finds
+True, it immediately return with true for its return value.
+.LP
+It is depend on the upper layer whether the read data is XIM
+Protocol packet unit or not.
+The Alternative Entry for this function is:
+.sp 6p
+.FD 0
+Bool _XimCallDispatcher(\fIim\fP, \fIlen\fP, \fIdata\fP)
+.br
+ XIM \fIim\fP;
+.br
+ INT16 \fIlen\fP;
+.br
+ XPointer \fIcall_data\fP;
+.FN
+.LP
+.bp
+.NH 1
+Sample implementations for the Transport Layer
+.XS
+\*(SN Sample implementations for the Transport Layer
+.XE
+.LP
+Sample implementations for the transporter using the X connection is
+described here.
+.LP
+.NH 2
+X Transport
+.XS
+\*(SN X Transport
+.XE
+.LP
+At the beginning of the X Transport connection for the XIM transport
+mechanism, two different windows must be created either in an Xlib XIM
+or in an IM Server, with which the Xlib and the IM Server exchange the
+XIM transports by using the ClientMessage events and Window Properties.
+In the following, the window created by the Xlib is referred as the
+"client communication window", and on the other hand, the window created
+by the IM Server is referred as the "IMS communication window".
+.LP
+.NH 3
+Connection
+.XS
+\*(SN X Connection
+.XE
+.LP
+In order to establish a connection, a communication window is created.
+A ClientMessage in the following event's format is sent to the owner
+window of XIM_SERVER selection, which the IM Server has created.
+.LP
+Refer to "The Input Method Protocol" for the XIM_SERVER atom.
+.LP
+.ce
+Table 4-1; The ClientMessage sent to the IMS window.
+.TS H
+tab(:);
+l s|l
+l l|l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:IMS Window ID
+Atom:message_type:XInternAtom(display, ``_XIM_XCONNECT'', False)
+int:format:32
+long:data.l[0]:client communication window ID
+long:data.l[1]:client-major-transport-version (*1)
+long:data.l[2]:client-major-transport-version (*1)
+.sp 6p
+_
+.TE
+.LP
+In order to establish the connection (to notify the IM Server communication
+window), the IM Server sends a ClientMessage in the following event's
+format to the client communication window.
+.LP
+.ce
+Table 4-2; The ClientMessage sent by IM Server.
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:client communication window ID
+Atom:message_type:XInternAtom(display, ``_XIM_XCONNECT'', False)
+int:format:32
+long:data.l[0]:IMS communication window ID
+long:data.l[1]:server-major-transport-version (*1)
+long:data.l[2]:server-minor-transport-version (*1)
+long:data.l[3]:dividing size between ClientMessage and Property (*2)
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+major/minor-transport-version
+.RS
+The read/write method is decided by the combination of
+major/minor-transport-version, as follows:
+.LP
+.ce
+Table 4-3; The read/write method and the major/minor-transport-version
+.TS
+center, tab(:);
+| c s | l |
+| c | c | l |.
+_
+.sp 6p
+.B
+Transport-version:read/write
+.sp 6p
+_
+.sp 6p
+major:minor:
+.sp 6p
+_
+.sp 6p
+.R
+0:0:only-CM & Property-with-CM
+:1:only-CM & multi-CM
+:2:only-CM & multi-CM & Property-with-CM
+.sp 6p
+_
+.sp 6p
+1:0:PropertyNotify
+.sp 6p
+_
+.sp 6p
+2:0:only-CM & PropertyNotify
+:1:only-CM & multi-CM & PropertyNotify
+.sp 6p
+_
+.TE
+.LP
+.RS
+.TS
+center, tab(;);
+l n l.
+only-CM;:;data is sent via a ClientMessage
+multi-CM;:;data is sent via multiple ClientMessages
+Property-with-CM;:;T{
+data is written in Property, and its Atom is send via ClientMessage
+T}
+PropertyNotify;:;T{
+data is written in Property, and its Atom is send via PropertyNotify
+T}
+.TE
+.RE
+.LP
+The method to decide major/minor-transport-version is as follows:
+.LP
+.IP (1)
+The client sends 0 as major/minor-transport-version to the IM Server.
+The client must support all methods in Table 4-3.
+The client may send another number as major/minor-transport-version to
+use other method than the above in the future.
+.IP (2)
+The IM Server sends its major/minor-transport-version number to
+the client. The client sends data using the method specified by the
+IM Server.
+.IP (3)
+If major/minor-transport-version number is not available, it is regarded
+as 0.
+.RE
+.LP
+.IP (*2)
+dividing size between ClientMessage and Property
+.RS
+If data is sent via both of multi-CM and Property, specify the dividing
+size between ClientMessage and Property. The data, which is smaller than
+this size, is sent via multi-CM (or only-CM), and the data, which is
+lager than this size, is sent via Property.
+.RE
+.LP
+.NH 3
+read/write
+.XS
+\*(SN read/write
+.XE
+.LP
+The data is transferred via either ClientMessage or Window Property in
+the X Window System.
+.LP
+.NH 4
+Format for the data from the Client to the IM Server
+.XS
+\*(SN Format for the data from the Client to the IM Server
+.XE
+.LP
+.B
+ClientMessage
+.LP
+.RS
+If data is sent via ClientMessage event, the format is as follows:
+.LP
+.ce
+Table 4-4; The ClientMessage event's format (first or middle)
+.TS H
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;IMS communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_MOREDATA'', False)
+int;format;8
+char;data.b[20];(read/write DATA : 20 byte)
+.sp 6p
+_
+.TE
+.LP
+.ce
+Table 4-5; The ClientMessage event's format (only or last)
+.TS H
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;IMS communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int;format;8
+char;data.b[20];(read/write DATA : MAX 20 byte) (*1)
+.sp 6p
+_
+.TE
+.IP (*1)
+If the data is smaller than 20 byte, all data other than available data
+must be 0.
+.RE
+.LP
+.B
+Property
+.LP
+.RS
+In the case of large data, data will be sent via the Window Property
+for the efficiency. There are the following two methods to notify
+Property, and transport-version is decided which method is used.
+.LP
+.IP (1)
+The XChangeProperty function is used to store data in the client
+communication window, and Atom of the stored data is notified to the
+IM Server via ClientMessage event.
+.IP (2)
+The XChangeProperty function is used to store data in the client
+communication window, and Atom of the stored data is notified to the
+IM Server via PropertyNotify event.
+.LP
+The arguments of the XChangeProperty are as follows:
+.LP
+.ce
+Table 4-6; The XChangeProperty event's format
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Argument:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Display:*display:The display to which connects
+Window:window:IMS communication window ID
+Atom:property:read/write property Atom (*1)
+Atom:type:XA_STRING
+int:format:8
+int:mode:PropModeAppend
+u_char:*data:read/write DATA
+int:nelements:length of DATA
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+The read/write property ATOM allocates the following strings by
+\fBXInternAtom\fP.
+.RS
+``_clientXXX''
+.RE
+.LP
+The client changes the property with the mode of PropModeAppend and
+the IM Server will read it with the delete mode i.e. (delete = True).
+.LP
+If Atom is notified via ClientMessage event, the format of the ClientMessage
+is as follows:
+.LP
+.ce
+Table 4-7; The ClientMessage event's format to send Atom of property
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:IMS communication window ID
+Atom:message_type:XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int:format:32
+long:data.l[0]:length of read/write property Atom
+long:data.l[1]:read/write property Atom
+.sp 6p
+_
+.TE
+.RE
+.LP
+.NH 4
+Format for the data from the IM Server to the Client
+.XS
+\*(SN Format for the data from the Client to the Client
+.XE
+.LP
+.B
+ClientMessage
+.LP
+.RS
+The format of the ClientMessage is as follows:
+.LP
+.ce
+Table 4-8; The ClientMessage event's format (first or middle)
+.TS H
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event ;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;client communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_MOREDATA'', False)
+int;format;8
+char;data.b[20];(read/write DATA : 20 byte)
+.sp 6p
+_
+.TE
+.LP
+.ce
+Table 4-9; The ClientMessage event's format (only or last)
+.TS H
+tab(;);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member;Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int;type;ClientMessage
+u_long;serial;Set by the X Window System
+Bool;send_event ;Set by the X Window System
+Display;*display;The display to which connects
+Window;window;client communication window ID
+Atom;message_type;XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int;format;8
+char;data.b[20];(read/write DATA : MAX 20 byte) (*1)
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+If the data size is smaller than 20 bytes, all data other than available
+data must be 0.
+.RE
+.LP
+.B
+Property
+.LP
+.RS
+In the case of large data, data will be sent via the Window Property
+for the efficiency. There are the following two methods to notify
+Property, and transport-version is decided which method is used.
+.LP
+.IP (1)
+The XChangeProperty function is used to store data in the IMS
+communication window, and Atom of the property is sent via the
+ClientMessage event.
+.IP (2)
+The XChangeProperty function is used to store data in the IMS
+communication window, and Atom of the property is sent via
+PropertyNotify event.
+.LP
+The arguments of the XChangeProperty are as follows:
+.LP
+.ce
+Table 4-10; The XChangeProperty event's format
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Argument:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+Display:*display:The display which to connects
+Window:window:client communication window ID
+Atom:property:read/write property Atom (*1)
+Atom:type:XA_STRING
+int:format:8
+int:mode:PropModeAppend
+u_char:*data:read/write DATA
+int:nelements:length of DATA
+.sp 6p
+_
+.TE
+.LP
+.IP (*1)
+The read/write property ATOM allocates some strings, which are not
+allocated by the client, by \fBXInternAtom\fP.
+.LP
+The IM Server changes the property with the mode of PropModeAppend and
+the client reads it with the delete mode, i.e. (delete = True).
+.LP
+If Atom is notified via ClientMessage event, the format of the ClientMessage
+is as follows:
+.LP
+.ce
+Table 4-11; The ClientMessage event's format to send Atom of property
+.TS H
+tab(:);
+l s | l
+l l | l.
+_
+.sp 6p
+.B
+Structure Member:Contents
+.sp 6p
+_
+.sp 6p
+.TH
+.R
+int:type:ClientMessage
+u_long:serial:Set by the X Window System
+Bool:send_event:Set by the X Window System
+Display:*display:The display to which connects
+Window:window:client communication window ID
+Atom:message_type:XInternAtom(display, ``_XIM_PROTOCOL'', False)
+int:format:32
+long:data.l[0]:length of read/write property ATOM
+long:data.l[1]:read/write property ATOM
+.sp 6p
+_
+.TE
+.RE
+.LP
+.NH 3
+Closing Connection
+.XS
+\*(SN Closing Connection
+.XE
+.LP
+If the client disconnect with the IM Server, shutdown function should
+free the communication window properties and etc..
+.LP
+.NH 1
+References
+.XS
+\*(SN References
+.XE
+.LP
+[1] Masahiko Narita and Hideki Hiura, \fI``The Input Method Protocol''\fP
+.LP
+
diff --git a/specs/rstart/fix.awk b/specs/rstart/fix.awk
new file mode 100644
index 0000000..626b797
--- /dev/null
+++ b/specs/rstart/fix.awk
@@ -0,0 +1,23 @@
+#! /bin/awk -f
+# $Xorg: fix.awk,v 1.3 2000/08/17 19:42:50 cpqbld Exp $
+#
+
+BEGIN {
+ ignore = 1;
+}
+
+# following line starts /^L/
+/ / {
+ print;
+ ignore = 1;
+ next;
+}
+
+/^$/ {
+ if(ignore) next;
+}
+
+{
+ ignore = 0;
+ print;
+}
diff --git a/specs/rstart/fix.nawk b/specs/rstart/fix.nawk
new file mode 100644
index 0000000..a7d9600
--- /dev/null
+++ b/specs/rstart/fix.nawk
@@ -0,0 +1,24 @@
+#! /bin/nawk -f
+# $Xorg: fix.nawk,v 1.3 2000/08/17 19:42:50 cpqbld Exp $
+#
+
+BEGIN {
+ ignore = 1;
+}
+
+/FORMFEED\[Page/ {
+ sub("FORMFEED", " ");
+ print;
+ print " ";
+ ignore = 1;
+ next;
+}
+
+$0 == "" {
+ if(ignore) next;
+}
+
+{
+ ignore = 0;
+ print;
+}
diff --git a/specs/rstart/fix.sed b/specs/rstart/fix.sed
new file mode 100644
index 0000000..e5a4867
--- /dev/null
+++ b/specs/rstart/fix.sed
@@ -0,0 +1,12 @@
+#! /bin/sed -f
+#
+# $Xorg: fix.sed,v 1.3 2000/08/17 19:42:50 cpqbld Exp $
+#
+s/o+/./g
+s/|-/+/g
+s/.//g
+/FORMFEED\[Page/{
+s/FORMFEED/ /
+a\
+
+}
diff --git a/specs/rstart/rstart.ms b/specs/rstart/rstart.ms
new file mode 100644
index 0000000..317f797
--- /dev/null
+++ b/specs/rstart/rstart.ms
@@ -0,0 +1,840 @@
+.ds iL Brown
+.ds iI J.
+.ds iO Quarterdeck Office Systems
+.ds iG X Consortium
+.ds iN DRAFT
+.ds iD August 1993
+.so tmac.rfc
+.LG
+.LG
+.ce
+A Flexible Remote Execution Protocol Based on \fBrsh\fP
+.SM
+.SM
+.sp 2
+.fi
+.ne 4
+Status of this Memo
+.sp
+.QP
+This document is being distributed to members of the
+Internet community in order to solicit their reactions
+to the proposals contained in it. This memo does not
+specify an Internet Standard.
+Distribution of this memo is unlimited.
+
+.dH "(filename here)"
+.LP
+.sp
+.ne 4
+Background:
+.sp
+One of the X Window System's main strengths is the ability to display
+and control graphical
+applications remotely. It does not, however, address the issue of how to
+start these applications - the application initiates the connection to the
+server sitting in front of the user, not the other way 'round. Some other,
+non-X, mechanism must be used to start the application.
+
+.ne 4
+Current methods and their problems:
+.IP 1)
+Walk over to the other machine, log in, and run something with its
+display redirected to your workstation. Not very appealing, but simple.
+No security problems associated with whether or not you should be able to
+run something on that machine.
+.IP 2)
+Telnet to the other machine, log in, and run something with its display
+redirected to your workstation. Relatively simple, but doesn't allow for
+starting remote apps using a menu item - requires either human intervention
+or an autologin mechanism with its associated troubles. Security implication
+is that the password is passed \*Qraw\*U over the telnet connection and is
+susceptible to snooping.
+.IP 3)
+Use one of the non-standard Berkeley
+.UX
+\*Qremote command\*U facilities, or their
+Kerberized equivalents - rsh, rexec, krsh. These can provide for the
+no-human-involved startup desired for menus, but have security implications
+which have been adequately documented elsewhere and require tuning to
+achieve \*Qdesirable\*U operation, or indeed operation at all.
+.IP 4)
+Other proprietary schemes.
+.LP
+Well, (1) is obviously not very pleasant. (2) isn't much better, because
+you can't run things off menu items. Neither (1) nor (2) is \*Qfriendly\*U
+to an automatic session-restart system. (4), being proprietary, isn't of
+much interest in a wide context. (Note that in any of these cases once
+you've started an app, an xterm say, you can ask it to start others. This
+is OK for some people, but not very acceptable if you want things picked off
+menus and especially not if you want apps on various machines picked off
+the same menu. It also isn't friendly to automatic session-restart schemes.)
+
+(3) is what this memo discusses.
+
+.ne 4
+Problems:
+.IP \(bu
+Systems and shells vary in what exactly constitutes a \*Qcommand\*U
+and what the syntax is.
+.IP \(bu
+The apps might not be in the \*Qsystem default search path\*U.
+.IP \(bu
+The apps might require additional setup before they can run -
+environment variables, etc. (LD_LIBRARY_PATH with OpenWindows 2 on Suns)
+.IP \(bu
+Resources (TCP connections, processes, etc) get held open on both
+ends to support the (mostly-idle) rsh connection.
+.IP \(bu
+No standard way to pass environment variables - DISPLAY, SESSION_MANAGER,
+etc.
+.LP
+These issues, both in their complexity and in their system-specificity,
+cause continual trouble for less technically aware users and are a nuisance
+even for technical users. In addition, more sophisticated uses of remote
+execution mechanisms (session restart for instance) may require more control
+over the environment than is available through the normal rsh mechanism.
+
+The result is that a great deal of system-dependent manual tuning is required
+to achieve a pleasant result, where the DISPLAY and SESSION_MANAGER
+values (and others
+in the future) are passed transparently, where the app actually gets
+started(!), where unnecessary resources are not held open, etc.
+
+The obvious answer is to define a \*Qbetter\*U remote execution mechanism,
+but that has a host of problems - while rsh and friends have their
+security problems, at least they are reasonably well understood and
+the \*Qtrusted\*U executables have been extensively tested. A new mechanism
+would have to be analysed and tested before it could be trusted.
+
+Better to make effective use of current services, and take advantage
+of such services as may become available in the future. In the future
+some better remote execution protocol may become available. Such a
+protocol may address some of the issues this paper is intended to
+address like passing auxiliary information, but will probably not address
+issues like setting up the environment required to run an X app. Fine,
+adopt it, and adopt conventions like those discussed here to allow its
+convenient use for X applications.
+
+In this spirit this paper does not mandate \*Qthou shalt start X apps
+using rsh\*U, but rather \*QIf you support X, you should arrange that the
+following rsh request will start an X app properly\*U.
+
+Such a solution would be to layer a more flexible protocol on top
+of rsh et al, using rsh's standard in/out mechanism to pass initial
+setup information to a \*Qhelper\*U program on the other end. Since rsh
+(or whatever) has already handled the security aspects of the request,
+the helper need have no particular special privileges and hence adds
+no new security considerations.
+
+\*QWhy rsh?\*U While this paper refers to \*Qrsh\*U all over the place, few
+if any of the concepts are peculiar to rsh. Any form of remote execution
+protocol that handles the security aspects of remote execution and
+provides a bidirectional data stream to the resulting program can be used.
+Rsh, rexec, and krsh are obvious examples, but there is no reason why
+telnet could not be used, when combined with a scripting mechanism to
+do autologin.
+
+\*QBut I don't use X, why do I want this?\*U Again, while this paper
+refers to X all over the place and the impetus for creation of this
+protocol is starting and restarting X applications, the mechanisms
+defined are as independent of X as possible and are applicable to
+non-X start/restart problems.
+
+\*QI don't use POSIX. What do I do?\*U The initial target systems are
+generally POSIX-based or POSIX-like, and so there are some POSIX-specific
+features and lots of POSIX-specific examples, but the protocol is
+designed to be operating-system independent. Such OS independence is,
+in fact, one of the primary goals - to provide an OS-independent
+remote execution mechanism.
+.bp
+.ce
+The Remote Start Protocol \*Qrstart\*U
+
+Goals:
+
+.IP \(bu
+A requester should be able to have a program started in any of a
+number of predefined \*Qcontexts\*U. (For instance, on a dual-universe
+Berkeley
+.UX
+/ System V
+.UX
+system those might be two such contexts.
+On a system with multiple versions of the X Window System installed each
+would be available as a predefined context. A VAX might support VMS
+and Eunice contexts.)
+.IP \(bu
+A requester should be able to override (within security bounds usual
+to the system) any aspect of the environment.
+.IP \(bu
+Neither the requesting program nor the \*Qhelper\*U program on the
+host end should need to have any special privileges.
+.IP \(bu
+Any parameter of the environment that can be controlled should be
+controllable through this mechanism. In particular, on POSIX systems
+environment variables, open files(?), umask, current directory, etc
+should all be controllable.
+.IP \(bu
+The full richness of the host's command argument mechanism should
+be available. In particular, on POSIX this means that arguments may
+contain any character and may be of any length.
+.IP \(bu
+Notwithstanding all of the control afforded the requester, none
+of it should be required - the requester should be able to provide
+simple \*Qcommand lines\*U which will be executed in the desired environment
+much as if they were typed to a conventional command processor.
+.IP \(bu
+A \*QGeneric Command\*U mechanism is provided, where standardized
+commands result in an appropriate response, independent of the host
+system. (This might be considered to be similar to the FTP model,
+where the LIST command will produce a directory listing no matter what
+the underlying system.)
+.LP
+
+Requesting System Requirements:
+
+The requesting system MUST support an \*Qrsh\*U client or a suitable
+replacement. Support of the rsh standard error and control connection
+is desirable but not essential.
+
+Host System Requirements:
+
+The host system MUST support an \*Qrsh\*U server or a suitable replacement.
+Support of the rsh standard error and control connection is desirable but
+not essential. Invocation of the \*Qrstartd\*U program in the default rsh
+environment MUST \*Qwork\*U. On POSIX systems this might require that rstartd
+be installed in one of the directories in the default $PATH and that rstartd
+not need any non-default shared library setup, etc. On other systems it
+might require that the rsh server specially recognize the string \*Qrstartd\*U
+and take appropriate action.
+
+The protocol itself:
+
+The requesting system makes a remote execution request using rsh (or
+other suitable protocol) to execute the program \*Qrstartd\*U. The host
+system responds with any amount of data (to accomodate systems that
+want to natter before starting a program), and then sends a line
+consisting of (exactly):
+.nf
+ rstartd:<space>Ready:<space><welcome/version message>
+.fi
+Failure to receive this line before the connection closes
+indicates that the host system does not support Extended rsh. A
+timeout is probably appropriate in addition.
+
+The requester then sends a series of lines of ASCII specifying the
+program to be run and the environment in which it is to be run. The
+request is terminated by a blank line.
+
+Syntax: rstart data is passed as a series of lines of ASCII, with
+spaces delimiting words in each line, terminated by a blank line.
+A \*Qline\*U is terminated by an ASCII LF. CRs and NULs MUST be ignored,
+to allow for a system transmitting in Internet NVT ASCII. (Yes, rsh
+et al are POSIX-style tools and won't have CRs, but if there's ever an
+Internet standard remote exec mechanism it will almost certainly require
+NVT ASCII, so it seems wise to provide for that possibility from the start.)
+It is explicitly allowed for a system to discard characters other than
+LF outside the range decimal 32-126; characters outside that range MUST
+NOT be used. Words may contain spaces and non-printable characters by
+representing them as octal escape sequences consisting of a backslash
+followed by three octal digits. Note that backslashes themselves MUST
+be passed using this mechanism. Thus the initial parsing sequence
+consists of:
+
+.IP 1)
+Receive data until the first blank line.
+.IP 2)
+Break data into lines at LFs, discarding CRs and NULs.
+.IP 3)
+Break lines into words at spaces.
+.IP 4)
+Translate \\nnn sequences in words into the appropriate characters.
+.IP 5)
+Process each line as appropriate.
+.IP 6)
+Pass (or more likely, allow to be passed) the connection and any data
+after the blank line to the program. (??? Hmm. stdio buffering
+considerations. Byte count instead of blank line?)
+.LP
+The first word of each line is a keyword specifying the interpretation of
+the line. Keywords SHOULD be transmitted as shown in this document,
+but the receiver MUST accept them in any case, even mIxEd.
+
+Unless otherwise specified, only one instance of any given keyword is
+permitted in a given request. CONTEXT MUST be specified first, and
+after that keywords may be given in any order.
+
+After receiving the blank line, the host responds with any number of
+lines of output of the following forms, terminated by a blank line.
+
+rstartd: Ready: <message>
+.IP
+(This isn't one of the \*Qresponse\*U lines, but it's
+included here for completeness.)
+This is rstartd's \*Qhello\*U line, and confirms that the host
+does indeed support rstartd.
+.LP
+
+rstartd: Failure: <message>
+.IP
+An unrecoverable error has occurred which indicates that either
+the requester or the host is fatally misconfigured. This might
+occur if, for instance, a request is malformed or a required
+configuration file is not present.
+.LP
+
+rstartd: Error: <message>
+.IP
+An unrecoverable error has occurred which indicates that the
+request is in error. The most common such error would be that
+the requested program is unavailable.
+.LP
+
+rstartd: Warning: <message>
+.IP
+A recoverable error has occurred. The program will be executed
+but may not behave as desired.
+.LP
+
+rstartd: Success: <message>
+.IP
+No errors were detected. Unfortunately this does not mean that
+no errors will occur, because there are many classes of errors
+that cannot be detected until rstartd actually attempts to pass
+control to the program.
+.LP
+
+rstartd: Debug: <message>
+.IP
+A debug message. Programs (and most humans!) should ignore these.
+.LP
+
+<anything else>
+.IP
+Indicates that something else in the system just HAD to say
+something; should be treated as a Warning.
+.LP
+.bp
+.LG
+Keywords
+.SM
+
+.B CONTEXT
+.I name
+
+Initializes defaults suitable for the specified context. See the section
+on contexts for more information.
+
+CONTEXT must be present, and must be the first line of the request.
+
+.B CMD
+.I "command args args args"
+
+Executes the specified command with the specified arg in the same general
+way as it would have been executed if typed to a the user's command
+interpreter. (If the user's primary interface is not a command language,
+a system default command language should be used.) It is expected that
+the command will have been provided by a user, who will expect \*Qnormal\*U
+command language handling of it. (For POSIX people, consider this as
+roughly equivalent to system().)
+
+Note: No particular parsing or interpretation is guaranteed. The
+interpretation should be unsurprising to an ordinary user of the host
+system. This mechanism is therefore unsuitable for completely automated
+use; EXEC and GENERIC-CMD are provided for that purpose.
+
+Exactly one of CMD, EXEC, or GENERIC-CMD must be present.
+
+.B EXEC
+.I "progname namearg arg arg arg ..."
+
+Executes a program using a low-level execution mechanism which provides
+minimal interpretation; in particular a command processor should not enter
+the picture and no quoting other than that required by this protocol should
+be required. It is expected that this interface will be used by programs
+requesting restart; presumably they know exactly what their desired
+arguments are and a command processor will only confuse the issue.
+(For POSIX people, consider this to be like execlp().)
+
+.I Progname
+is the name of the executable. This will typically be a
+single word but is allowed to be a (system-specific) full filename
+specification; if the latter then the behavior is system-specific but
+normally path searching would be disabled.
+
+.I Namearg
+should be the program name as it should be passed to the program.
+Generally, it should be exactly equal to progname. Hosts which do not
+pass a program's name to it should ignore it.
+
+The
+.I args
+are the arguments to be passed to the program. Hosts which do
+not separate their arguments into words should concatenate the arguments
+back together with spaces between them. (Optionally, they could elect to
+not fully parse the line, and leave in the spaces as originally delivered.)
+
+Note: The interpretation of the command may not be intuitive to
+an ordinary user of the host system; this interface is for precision,
+not intuition.
+
+Exactly one of
+.B CMD ,
+.B EXEC ,
+or
+.B GENERIC-CMD
+must be present.
+
+.B DIR
+.I initial-directory
+
+Specifies (in a system-specific way) the initial default file system
+location for the program. If no
+.B DIR
+line is supplied the program is
+started in a system-specific initial location, presumably the user's
+\*Qhome\*U.
+
+Note: It is expected that this value would come from a source with
+a priori knowlege of the host - either the user or a \*Qrestart\*U request.
+It is not expected that an automated mechanism with no advance knowlege
+would be able to make use of this request.
+
+.B MISC
+.I "registryname name=value"
+
+Passes a value to the program using a system-specific mechanism.
+(Under POSIX and similar systems environment variables should generally
+be used.) The
+.I registryname
+specifies the naming authority, and is intended to prevent conflicts and
+allow for intelligent conversion. The idea is that systems that
+understand a given registry will map these straight into environment
+variables. Systems that don't entirely understand a given registry or
+use a different but convertable mechanism can be picky and convert as
+needed. An appendix lists the names that all systems are strongly
+encouraged to support.
+
+Note: The names in the \*Qsuggested\*U appendix are expected to be supplied
+by requesters with no advance knowlege of the host, only the blind
+assumption that the host will support those \*Qwell-known\*U names with
+their \*Qwell-known\*U semantics. Other names may be used by requesters
+with advance knowlege of the host - restart requests, for example.
+
+Any number of
+.B MISC
+lines may be present.
+
+.B DETACH
+
+This line directs rstartd to attempt to \*Qdetach\*U the resulting process
+from the rsh connection, leaving as little overhead (processes, connections,
+etc) as possible. In POSIX-land, this will probably consist of redirecting
+standard input, output, and error to /dev/null or a log file and then
+executing the program using fork() and exec() and not having the parent
+wait.
+
+It would be nice to have a mechanism for specifying where the output
+should be redirected - log file or perhaps log/display program/server.
+For the moment that's left as a matter of local implementation and
+configuration.
+
+Only one of
+.B DETACH
+and
+.B NODETACH
+may be present.
+
+.B NODETACH
+
+This line directs rstartd to attempt NOT to \*Qdetach\*U. It is intended to
+allow one to override a configuration default to
+.B DETACH .
+
+Only one of
+.B DETACH and
+.B NODETACH
+may be present.
+
+.B AUTH
+.I "authscheme authdata ..."
+
+Specifies authentication data to be used by the specified authentication
+scheme. This keyword may be given multiple times to give data for
+multiple authentication schemes or for a single scheme to use for multiple
+purposes.
+.bp
+System-specific lines begin with
+.B SYSTEMNAME- .
+No system-independent line
+will be defined that includes a \*Q-\*U in its name.
+.B X-
+is reserved for experimental use. (\*QReserved\*U is an interesting word,
+there; anybody can use
+.B X-
+for experiments and nobody can rely on there not being a conflict.)
+.B INTERNAL-
+is reserved for internal use by rstartd.
+
+.B POSIX-UMASK
+.I nnn
+
+Sets the POSIX umask to
+.I nnn
+(octal).
+
+.B MSDOS-DIR
+.I d:path
+
+Sets the current directory on drive
+.I d:
+to
+.I path.
+This differs from
+.B DIR
+in that
+.B DIR
+sets the current working drive and directory and
+.B MSDOS-DIR
+doesn't set the current drive;
+.B MSDOS-DIR
+would be used to set the current directory on drives other than the
+current one.
+
+.B DESQVIEW-MEM
+.I nnn
+
+Requests
+.I nnn
+kilobytes of conventional memory.
+
+.B DESQVIEW-EXPMEM
+.I nnn
+
+Requests
+.I nnn
+kilobytes of expanded memory. (To be more verbose, requests
+that the \*Qmax expanded memory\*U parameter be
+.I nnn .)
+
+.B GENERIC-xxx
+
+The
+.B GENERIC
+system is a hypothetical system that offers various services
+that can be supported on different real systems; it provides a common
+interface for heterogenous systems.
+
+.B GENERIC-CMD
+.I "generic-command-name args ..."
+
+Runs the local equivalent to
+.I generic-command-name .
+See the section on generic commands for more information. Exactly one of
+.B CMD ,
+.B EXEC ,
+or
+.B GENERIC-CMD
+must be present.
+.bp
+.LG
+Generic Commands
+.SM
+
+Unless otherwise noted, generic commands are optional.
+
+.B "GENERIC-CMD Terminal"
+
+Runs a default terminal emulator for the current context. (It's not clear
+what, if anything, this means outside a windowing system context.) In POSIX
+X contexts this probably means xterm.
+
+.B "GENERIC-CMD LoadMonitor"
+
+Runs a default load monitor for the current context. In POSIX X contexts,
+this probably means xload.
+
+.B "GENERIC-CMD ListContexts"
+
+Sends to standard output a list of available contexts, one per line,
+with a comma-separated list of context names followed by a space followed by
+a brief description of the context. If multiple context names invoke the
+same context (as for instance X, X11, and X11R4 might) ListContexts SHOULD
+list the most specific context first.
+
+This command MUST be available in the Default context, and SHOULD be
+available in every context.
+
+.B "GENERIC-CMD ListGenericCommands"
+
+Sends to standard output a list of generic commands available in the
+current context, one per line, with the command name followed by a space
+followed by a brief description of the command.
+
+This command SHOULD be available in every context.
+.bp
+.LG
+Contexts
+.SM
+
+A request can specify what
+.I context
+a program should be run in. A context
+will most likely include a set of default values for all of the controllable
+aspects of the program's execution environment.
+
+Examples of Predefined Context Names
+
+.nf
+None A minimal environment. Under POSIX, no environment variables.
+Default The default environment.
+X The X Window System, any version
+X11 Version 11 of the X Window System, any release
+X11R4 Version 11 of the X Window System, Release 4
+X11R5 Version 11 of the X Window System, Release 5
+OpenWindows Sun's OpenWindows, any version
+OpenWindows2 Version 2 of Sun's OpenWindows
+OpenWindows3 Version 3 of Sun's OpenWindows
+NeWS Some version of Sun's Network Window System.
+.fi
+
+Contexts are allowed (encouraged even) to support multiple names for
+the same environment configuration. For instance: \*QX\*U, \*QX11\*U,
+\*QX11R4\*U might all refer to exactly the same configuration.
+\*QOpenWindows3\*U might well refer to a configuration that is a union
+of \*QX11R4\*U and \*QNeWS\*U.
+.bp
+.LG
+Suggested \*Qrequired\*U MISC commands
+.SM
+
+General
+
+For most of these the \*Qsimple\*U behavior is to simply pass the value
+to the app as an environment variable. This should be appropriate on
+any POSIX systems. Other systems should use whatever mechanism is
+appropriate to the given item; note that different mechanisms may be
+appropriate to different items.
+
+All systems are encouraged to \*Qunderstand\*U all of these names, translating
+them as appropriate to the local environment.
+
+\fBMISC X LANG=\fP\fIlocale identifier\fP
+
+Specifies the locale desired. If POSIX specifies a list of locale
+identifiers then we can use that (and move it to the POSIX registry),
+but if not then we will have to define a list (perhaps based on a good
+de facto standard). Note that if there is no POSIX-standardized list
+of locale names the host SHOULD translate from our list to the local
+list. Note that this is based on the POSIX LANG environment variable,
+but rumor says that POSIX does not specify a list of identifiers;
+since we want a standarized list we must specify a registry and must
+assume \*Qcontrol\*U of the name. If in the future POSIX specifies a
+different list then during a transition period MISC X LANG and
+MISC POSIX LANG would perform similar functions but using different
+names for the locales. [[ It may be that ISO country/language codes
+may supply a suitable registry. -- jb ]]
+
+\fBMISC X DISPLAY=\fP\fIhost\fP\fB:\fP\fIdisplaynum\fP
+
+Specifies the X server the app is to connect to.
+
+\fBMISC X SESSION_MANAGER=tcp/\fP\fIhost\fP\fB:\fP\fIport\fP
+
+Specifies the session manager the app is to connect to.
+
+\fBMISC POSIX TZ=\fP\fItime zone info\fP
+
+Specifies the time zone the user is in, using POSIX standard notation.
+.bp
+.LG
+Specific Notes on use of Extended rsh with the X Window System
+.SM
+
+To start an X program, the requester should specify an X context (\*QX\*U if
+nothing else) and specify the display parameter by saying
+.DS
+\fBMISC X DISPLAY=\fP\fIhost\fP\fB:\fP\fIport.screen\fP
+.DE
+If the program is to join a session the requester should say:
+.DS
+\fBMISC X SESSION_MANAGER=tcp/\fP\fIhost\fP\fB:\fP\fIport\fP
+.DE
+
+An X host MUST understand at least the X context and MUST, regardless
+of whether or not it has environment variables as a system concept,
+interpret \fBMISC X DISPLAY=\fP\fIhost\fP\fB:\fP\fIport\fP and pass it
+to the program in
+whatever way is locally appropriate. An X host supporting session
+management (which all will do by the time this is adopted, right?)
+MUST interpret \fBMISC X SESSION_MANAGER=tcp/\fP\fIhost\fP\fB:\fP\fIport\fP
+similarly.
+
+An X host MUST understand the
+.B X11
+authentication scheme for the
+.B AUTH
+keyword. The data given MUST be in the form given by \*Qxauth list\*U and
+understood by \*Qxauth add\*U. AUTH X11 may be given several times to
+pass multiple kinds of authorization data or data about multiple displays.
+
+Input methods? Extensibility? (Would be nice if new features could
+be incorporated without new rstartd executables, which argues for passing
+most data as environment variables.)
+.bp
+.LG
+Suggestions for Implementation
+.SM
+
+Configurability, extensibility. Nobody is ever happy with the default.
+The host implementation should allow for as much configurability and
+extensibility as possible. In particular, provision should be made for
+administrator- and user- defined contexts, with user defined contexts
+overriding or augmenting the administrator-defined and system-supplied
+contexts. One good implementation scheme would be to have system-wide
+and per-user configuration files which use the same syntax as the protocol.
+ListContexts SHOULD list both system-wide and per-user contexts.
+
+Provision SHOULD be made for administrator- and user- defined generic
+commands, with user-defined commands overriding system-wide ones.
+ListGenericCommands SHOULD list both.
+.bp
+.LG
+Notes on Outstanding specification issues
+.SM
+
+Note: This is not part of the proposal.
+
+Syntax
+.IP
+The syntax is OK so far for machine generation, but is yucky for human
+generation, especially spaces in environment variables in
+config files.
+.LP
+
+Environment variables
+.IP
+it would be nice if one could say things like
+$HOME in values, especially in config files.
+.LP
+
+Error handling
+.IP
+how to reliably mark successfully starting the app.
+Can report syntax errors or lack thereof, but reporting startup or
+execution errors is problematical. (Application execution errors
+are tough no matter what; startup errors are tough because you want
+to report an error if the exec*() fails, but if it succeeds you
+don't have the opportunity to give a success report.) [[Clive gives
+a clever trick for reliably distinguishing success, but I think
+there's a race condition if the app is allowed to use the rsh
+channel for output after it starts. -- jb]]
+.LP
+
+Error handling
+.IP
+how to report post-startup errors and warnings to the
+user. (Can say \*Qnot our problem\*U, but it would be nice if there
+was a standard way to say \*Qgive output to a program that will
+report it back to the user\*U or something like that. Session Manager
+\*Qdeath reason\*U messages might be adequate, but don't cover warnings.)
+.LP
+
+I18n
+.IP
+What character set should messages and requests be in? Can this
+be determined by the locale as specified by
+.B "MISC X LANG" ?
+(Does this require that
+.B "MISC X LANG"
+be one of the first lines?)
+.LP
+
+Protocol
+.IP
+One reviewer suggests an FTP- and SMTP- style protocol with requests
+and responses. Personally I don't think individual responses to
+the lines are required and that the roundtrips involved would
+be wasted. The entire conversation is a single request and can
+be rejected or accepted en toto. The response mechanism does
+not provide for fabulously rich interpretation by an automaton,
+but it does allow for a success / serious failure / routine
+failure / warning distinction.
+.LP
+
+Multiple requests/connection
+.IP
+Some have suggested that you should be able
+to start multiple programs with a single connection, either to
+start multiple apps on login or to allow a \*Qmaster\*U to request
+apps occasionally during the course of a session. As doing so
+would make it less possible (or at least more difficult) to use
+the data channel for communicating with the app after start,
+and as the overhead of starting a new connection isn't all that
+high, I'm not enchanted with the idea. Admittedly, if the overhead
+involved got higher (how fast is a Kerberos authentication?)
+it might become more attractive.
+.LP
+.bp
+Conclusion:
+
+A small protocol could be easily defined which would layer on top of a
+relatively primitive remote execution facility like rsh, rexec, or krsh,
+that would allow flexible application startup in a fairly machine-independent
+way. By mandating appropriate local configuration, X applications could
+be started (or restarted) conveniently, without requiring the requester
+to understand the detailed requirements of the remote system. The
+implementation cost, for both the requester and the \*Qserver\*U, is small.
+Security issues are \*Qnot our problem\*U, since they are all handled by
+existing protocols.
+.sp
+Security Considerations
+.sp
+.QP
+Security is assumed handled by the underlying remote execution mechanism.
+The \*Qhelper\*U program described by this memo runs with the privileges of
+the user and so generally introduces no additional security considerations.
+Systems where security is controlled by controlling what programs
+may be run - where programs are trusted but users are not - may see
+a security impact unless their \*Qhelper\*U is careful about what programs
+it is willing to run.
+.LP
+.sp
+Copyright
+.sp
+.QP
+Copyright
+.if t \(co
+.if n (c)
+1993 Quarterdeck Office Systems
+.sp
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name Quarterdeck Office Systems, Inc. not
+be used in advertising or publicity pertaining to distribution of this
+software without specific, written prior permission.
+
+THIS SOFTWARE IS PROVIDED `AS-IS'. QUARTERDECK OFFICE SYSTEMS, INC.,
+DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
+LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL QUARTERDECK
+OFFICE SYSTEMS, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE,
+DATA, OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND
+REGARDLESS OF WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.LP
+.sp
+.ne 5
+Author's Address:
+.sp
+.IP
+.nf
+Jordan Brown
+Quarterdeck Office Systems
+Santa Monica, CA
+jbrown@qdeck.com
+.LP
diff --git a/specs/rstart/rstartd.txt b/specs/rstart/rstartd.txt
new file mode 100644
index 0000000..554730d
--- /dev/null
+++ b/specs/rstart/rstartd.txt
@@ -0,0 +1,229 @@
+rstartd - a sample implementation of an Remote Start rsh helper
+hjb 02/24/93
+
+Copyright (c) 1993 Quarterdeck Office Systems
+
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name Quarterdeck Office Systems, Inc. not
+be used in advertising or publicity pertaining to distribution of this
+software without specific, written prior permission.
+
+THIS SOFTWARE IS PROVIDED `AS-IS'. QUARTERDECK OFFICE SYSTEMS, INC.,
+DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
+LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL QUARTERDECK
+OFFICE SYSTEMS, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE,
+DATA, OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND
+REGARDLESS OF WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Rstartd is an implementation of an Extended rsh "helper" as defined in
+my "Remote Start protocol" document.
+
+This document describes the peculiarities of rstartd and how it is
+configured.
+
+Rstartd is by design highly configurable. One would like things like
+configuration file locations to be fixed, so that users and administrators
+can find them without searching, but reality is that no two vendors will
+agree on where things should go, and nobody thinks the original location
+is "right". Thus, rstartd allows one to relocate _all_ of its files and
+directories.
+
+Rstartd has a hierarchy of configuration files which are executed in
+order when a request is made. They are:
+
+ global config
+ per-user ("local") config
+ global per-context config
+ per-user ("local") per-context config
+ config from request
+
+As you might guess from the presence of "config from request", all of the
+config files are in the format of an rstart request. Rstartd defines a few
+additional keywords with the INTERNAL- prefix for specifying its configuration.
+
+Normally, a shell script is installed as "rstartd"; this script provides
+the name of the global configuration file to the "real" rstartd using
+its -c option. If rstartd is directly, it defaults to
+/usr/lib/X11/rstart/config.
+
+Rstartd starts by reading and executing the global config file.
+This file will normally specify the locations of the other configuration
+files and any systemwide defaults.
+
+Rstartd will then read the user's local config file, default name
+$HOME/.rstart.
+
+Rstartd will then start interpreting the request.
+
+Presumably one of the first lines in the request will be a CONTEXT line.
+The context name is converted to lower case.
+
+Rstartd will read the global config file for that context, default name
+/usr/lib/X11/rstart/contexts/<name>, if any.
+
+It will then read the user's config file for that context, default name
+$HOME/.rstart.contexts/<name>, if any.
+
+(If neither of these exists, rstartd aborts with a Failure message.)
+
+Rstartd will finish interpreting the request, and execute the program
+specified.
+
+This allows the system administrator and the user a large degree of control
+over the operation of rstartd. The administrator has final say, because
+the global config file doesn't need to specify a per-user config file.
+If it does, however, the user can override anything from the global file,
+and can even completely replace the global context config files.
+
+The config files have a somewhat more flexible format than requests do;
+they are allowed to contain blank lines and lines beginning with "#"
+are comments and ignored. (#s in the middle of lines are data, not comment
+markers.)
+
+Any commands run are provided a few useful pieces of information in
+environment variables. The exact names are configurable, but the supplied
+defaults are:
+
+ $RSTART_CONTEXT the name of the context
+ $RSTART_GLOBAL_CONTEXTS the global contexts directory
+ $RSTART_LOCAL_CONTEXTS the local contexts directory
+ $RSTART_GLOBAL_COMMANDS the global generic commands directory
+ $RSTART_LOCAL_COMMANDS the local generic commands directory
+
+$RSTART_{GLOBAL,LOCAL}_CONTEXTS should contain one special file, @List,
+which contains a list of the contexts in that directory in the format
+specified for ListContexts. The supplied version of ListContexts will
+cat both the global and local copies of @List.
+
+Generic commands are searched for in several places: (defaults)
+
+ per-user per-context directory ($HOME/.rstart.commands/<context>)
+ global per-context directory (/usr/lib/X11/rstart/commands/<context>)
+ per-user all-contexts directory ($HOME/.rstart.commands)
+ global all-contexts directory (/usr/lib/X11/rstart/commands)
+
+(Yes, this means you can't have an all-contexts generic command with the
+same name as a context. It didn't seem like a big deal.)
+
+Each of these directories should have a file called @List that gives
+the names and descriptions of the commands in that directory in the
+format specified for ListGenericCommands.
+
+There are several "special" rstart keywords defined for rstartd configuration.
+Unless otherwise specified, there are no defaults; related features are
+disabled in this case.
+
+INTERNAL-REGISTRIES
+ Gives a space-separated list of "MISC" registries that this system
+ understands. (Registries other than this are accepted but generate
+ a Warning.)
+
+INTERNAL-LOCAL-DEFAULT
+ Gives the name ($HOME relative) of the per-user config file.
+
+INTERNAL-GLOBAL-CONTEXTS
+ Gives the name of the system-wide contexts directory.
+
+INTERNAL-LOCAL-CONTEXTS
+ Gives the name ($HOME relative) of the per-user contexts directory.
+
+INTERNAL-GLOBAL-COMMANDS
+ Gives the name of the system-wide generic commands directory.
+
+INTERNAL-LOCAL-COMMANDS
+ Gives the name ($HOME relative) of the per-user generic commands
+ directory.
+
+INTERNAL-VARIABLE-PREFIX
+ Gives the prefix for the configuration environment variables rstartd
+ passes to its kids.
+
+INTERNAL-AUTH-PROGRAM authscheme program argv[0] argv[1] ...
+ Specifies the program to run to set up authentication for the
+ specified authentication scheme. "program argv[0] ..." gives
+ the program to run and its arguments, in the same form as the
+ EXEC keyword.
+
+INTERNAL-AUTH-INPUT authscheme
+ Specifies the data to be given to the authorization program as
+ its standard input. Each argument is passed as a single line.
+ $n, where n is a number, is replaced by the n'th argument to the
+ "AUTH authscheme arg1 arg2 ..." line.
+
+INTERNAL-PRINT
+ Prints its arguments as a Debug message. Mostly for rstartd
+ debugging, but could be used to debug config files.
+
+
+Various Notes:
+
+rstartd currently limits lines, both from config files and requests, to
+BUFSIZ bytes.
+
+DETACH is implemented by redirecting file descriptors 0,1, and 2 to
+/dev/null and forking before executing the program.
+
+CMD is implemented by invoking $SHELL (default /bin/sh) with "-c" and
+the specified command as arguments.
+
+POSIX-UMASK is implemented in the obvious way.
+
+The X authorization program is run in the same context as the target
+program - same environment variables, path, etc. Long term this might
+be a problem.
+
+In the X context, GENERIC-CMD Terminal runs xterm.
+In the OpenWindows context, GENERIC-CMD Terminal runs cmdtool.
+
+In the X context, GENERIC-CMD LoadMonitor runs xload.
+In the OpenWindows context, GENERIC-CMD LoadMonitor runs perfmeter.
+
+GENERIC-CMD ListContexts lists the contents of @List in both the
+system-wide and per-user contexts directories. It is available in
+all contexts.
+
+GENERIC-CMD ListGenericCommands lists the contents of @List in the
+system-wide and per-user commands directories, including the
+per-context subdirectories for the current context. It is available
+in all contexts.
+
+CONTEXT None is not implemented.
+
+CONTEXT Default is really dull.
+
+For installation ease, the "contexts" directory in the distribution contains
+a file "@Aliases" which lists a context name and aliases for that context.
+This file is used to make symlinks in the contexts and commands directories.
+
+All MISC values are passed unmodified as environment variables.
+
+One can mistreat rstartd in any number of ways, resulting in anything
+from stupid behavior to core dumps. Other than by explicitly running
+programs I don't think it can write or delete any files, but there's
+no guarantee of that. The important thing is that (a) it probably won't
+do anything REALLY stupid and (b) it runs with the user's permissions,
+so it can't do anything catastrophic.
+
+@List files need not be complete; contexts or commands which are dull
+or which need not or should not be advertised need not be listed.
+In particular, per-user @List files should not list things which are in
+the system-wide @List files. In the future, perhaps ListContexts and
+ListGenericCommands will automatically suppress lines from the
+system-wide files when there are per-user replacements for those lines.
+
+Error handling is OK to weak. In particular, no attempt is made to
+properly report errors on the exec itself. (Perversely, exec errors
+could be reliably reported when detaching, but not when passing the
+stdin/out socket to the app.)
+
+If compiled with -DODT1_DISPLAY_HACK, rstartd will work around a bug in
+SCO ODT version 1. (1.1?) (The bug is that the X clients are all compiled
+with a bad library that doesn't know how to look host names up using DNS.
+The fix is to look up a host name in $DISPLAY and substitute an IP address.)
+This is a trivial example of an incompatibility that rstart can hide.
diff --git a/specs/rstart/tmac.rfc b/specs/rstart/tmac.rfc
new file mode 100644
index 0000000..cfc02d7
--- /dev/null
+++ b/specs/rstart/tmac.rfc
@@ -0,0 +1,81 @@
+.\" Troff/nroff macros for RFCs
+.\" Use ".so tmac.rfc" and nroff -ms rfc1234.t | fix.nawk
+.\" or nroff -ms tmac.rfc rfc1234.t | fix.nawk
+.\" or the obvious troff variants.
+.\" Registers (all strings):
+.\" iL Author's Last name
+.\" iN RFC number
+.\" iD Date
+.\" iI Author's Initial
+.\" iO Author's Organization (usually employer)
+.\" iG Author's Group (eg IETF WG)
+.\"---------------------------------------------------------------------------
+.\" Set up page header/footer stuff
+.ds RF [Page %]
+.ds LF \*(iL
+.ds CF
+.ie '\*(iN'DRAFT' .ds LH DRAFT
+.el .ds LH RFC \*(iN
+.ds RH \*(iD
+.ds CH
+.\"---------------------------------------------------------------------------
+.\" Online vs fully-formatted distinctions.
+.ie n \{\
+.\" Set up for online use. While this is compatible with printing, it
+.\" is intended for producing "standard" RFC text files.
+.pl 10.0i
+.po 0
+.ll 7.2i
+.lt 7.2i
+.nr LL 7.2i
+.nr LT 7.2i
+.ad l
+.\" nroff normally does not put out ^Ls. The FORMFEED below is part of a
+.\" hack involving "nroff|fix.nawk" or "nroff|fix.sed|fix.awk" to put
+.\" out pages that look like
+.\" last line of page
+.\" ^L
+.\" first line of new page
+.ds RF FORMFEED\*(RF
+.\}
+.el \{\
+.\" Set up for troff use. Optimized for groff and my LJ-IIIP w/PostScript.
+.pl -.5i
+.\}
+.\"---------------------------------------------------------------------------
+.\" I don't like hyphenation.
+.hy 0
+.\" And stupid -ms tries to turn it back on, so defeat that...
+.de hy
+..
+.de dH
+.if '\*(iN'DRAFT' \{\
+This document is an Internet-Draft. Internet-Drafts are
+working documents of the Internet Engineering Task Force
+(IETF), its areas, and its working groups. Note that other
+groups may also distribute working documents as
+Internet-Drafts.
+
+Internet-Drafts are draft documents valid for a maximum of six
+months. Internet-Drafts may be updated, replaced, or obsoleted
+by other documents at any time. It is not appropriate to use
+Internet-Drafts as reference material or to cite them other
+than as a \*Qworking draft\*U or \*Qwork in progress.\*U
+
+To learn the current status of any Internet-Draft, please check
+the 1id-abstracts.txt listing contained in the Internet-Drafts
+Shadow Directories on ds.internic.net, nic.nordu.net,
+ftp.nisc.sri.com, or munnari.oz.au.
+
+This document is filed under \*Q\\$1\*U.
+.\}
+..
+.\"---------------------------------------------------------------------------
+.\" Put the standard header at the top of the first page. Perhaps
+.\" this should be a macro which you must explicitly call.
+.br
+.tl `\*(iG``\*(iI \*(iL`
+.ie '\*(iN'DRAFT' .tl `INTERNET-DRAFT``\*(iO`
+.el .tl `Request for Comments: \*(iN``\*(iO`
+.tl ```\*(iD`
+.sp 2
diff --git a/specs/xfs/FSlib.doc b/specs/xfs/FSlib.doc
new file mode 100644
index 0000000..8cf5de0
--- /dev/null
+++ b/specs/xfs/FSlib.doc
@@ -0,0 +1,222 @@
+$Xorg: FSlib.doc,v 1.3 2000/08/17 19:42:50 cpqbld Exp $
+
+Protocol requests
+
+These functions make protocol requests corresponding to their names.
+
+Connection Setup
+
+FSServer *
+FSOpenServer(server)
+ char *server;
+
+Creates a connection to the font server specified in the 'server' string.
+
+FSCloseServer(svr)
+ FSServer *svr;
+
+Closes the connection to the font server.
+
+Font Manipulation
+
+Font
+FSOpenXBitmap(svr, hint, fmask, name, originalid)
+ FSServer *svr;
+ fsBitmapFormat hint;
+ fsBitmapFormatMask fmask;
+ char *name;
+ Font *originalid;
+
+Opens the font that matches the given name (which may have '*' and '?'
+as wildcards). The hint contains format information that will probably
+be used in subsequent QueryXBitmaps() requests. The fmask tells which
+bits in the mask are valid. If originalid is non-zero, then the server
+already has the font opened under that ID.
+
+FSCloseFont(svr, fid)
+ FSServer *svr;
+ Font fid;
+
+Closes the font.
+
+char **
+FSListFonts(svr, pattern, maxNames, actualCount)
+ FSServer *svr;
+ char *pattern;
+ int maxNames;
+ int *actualCount;
+
+Returns the full names of the fonts matching pattern. Up to maxNames
+names will be returned. The actual value number be placed in
+actualCount. The return value should be freed with FSFreeFontNames.
+
+FSFreeFontNames(list)
+ char **list
+
+Frees the list of font names returned by FSListFonts.
+
+char **
+FSListWithXInfo(svr, pattern, maxNames, actualCount, info, pprops, offsets,
+ prop_data)
+ FSServer *svr;
+ char *pattern;
+ int maxNames;
+ int *actualCount;
+ fsFontHeader ***info;
+ fsPropInfo ***pprops;
+ fsPropOffset ***offsets;
+ unsigned char ***prop_data;
+
+Returns the full names of the fonts matching pattern. Up to maxNames
+names will be returned. The actual value number be placed in
+actualCount, and each font's header and property information will also
+be returned.
+
+int
+FSQueryXInfo(svr, fid, info, props, offsets, prop_data)
+ FSServer *svr;
+ Font fid;
+ fsFontHeader *info;
+ fsPropInfo *props;
+ fsPropOffset **offsets;
+ unsigned char **prop_data;
+
+Returns the font's header information.
+
+int
+FSQueryXExtents8(svr, fid, range_type, str, str_len, extents)
+ FSServer *svr;
+ Font fid;
+ Bool range_type;
+ unsigned char *str;
+ unsigned long str_len;
+ fsCharInfo **extents;
+
+int
+FSQueryXExtents16(svr, fid, range_type, str, str_len, extents)
+ FSServer *svr;
+ Font fid;
+ Bool range_type;
+ fsChar2b *str;
+ unsigned long str_len;
+ fsCharInfo **extents;
+
+Returns the extents of the given characters. If 'range_type' is set,
+the 'str' is considered a range, otherwise its considered a list of
+characters. A NULL str when range_type is set means that all the
+character extents will be returned.
+
+int
+FSQueryXBitmaps8(svr, fid, format, range_type, str, str_len,, offsets, glyph_data)
+ FSServer *svr;
+ Font fid;
+ fsRange *range;
+ fsBitmapFormat format;
+ Bool range_type;
+ unsigned char *str;
+ unsined long str_len;
+ unsigned long **offsets;
+ unsigned char **glyph_data;
+
+int
+FSQueryXBitmaps16(svr, fid, format, range_type, str, str_len,, offsets, glyph_data)
+ FSServer *svr;
+ Font fid;
+ fsRange *range;
+ fsBitmapFormat format;
+ Bool range_type;
+ fsChar2b *str;
+ unsined long str_len;
+ unsigned long **offsets;
+ unsigned char **glyph_data;
+
+Returns the font's bitmaps in the requested format. The other arguments
+are used as in QueryExtents above.
+
+Extensions
+
+char **
+FSListExtensions(svr, next)
+ FSServer *svr;
+ int *next;
+
+Lists any extension built into the font server.
+
+Bool
+FSQueryExtension(svr, name, major_opcode, first_event, first_error)
+ FSServer *svr;
+ char *name;
+ int *major_opcode;
+ int *first_event;
+ int *first_error;
+
+Returns information on the specified extension.
+
+FSFreeExtensionList(list)
+ char **list;
+
+Frees the list returned by FSListExtensions().
+
+
+Helper functions -- these don't map to protocol requests, but
+can make writing a FS client simpler.
+
+Synchronization
+
+FSSync(svr, discard)
+ FSServer *svr;
+ Bool discard;
+
+Flushes the output queue and waits for a reply from the server,
+which will flush the server's output queue.
+
+int
+(* FSSynchronize(svr, onoff)) ()
+ FSServer *svr;
+ int onoff;
+
+Controls whether the server does every request in synchronous form.
+
+int
+(* FSSetAfterFunction(svr, func)) ()
+ FSServer *svr;
+ int (*func) ();
+
+Sets the function that will be called after every request. This
+is usually NULL or FSSync().
+
+FSFlush(svr)
+ FSServer *svr;
+
+Flushes any queued requests to the font server.
+
+Error Handling
+
+int (* FSSetErrorHandler(handler)) ()
+ int (*handler) ();
+
+Changes the error handler to 'handler'. A NULL value will reset
+it to use the default.
+
+int (* FSSetIOErrorHandler(handler)) ()
+ int (*handler) ();
+
+Changes the I/O error handler to 'handler'. A NULL value will reset
+it to use the default.
+
+Miscellaneous
+
+long
+FSMaxRequestSize(svr)
+ FSServer *svr;
+
+Returns the largest request size in 4 byte quantities) that the
+server can handle.
+
+char *
+FSServerName(server)
+ char *server;
+
+Returns the name that FSlib would use to connect to the server.
+Translates a NULL in the value of $FONT_SERVER.
+
diff --git a/specs/xfs/design.ms b/specs/xfs/design.ms
new file mode 100644
index 0000000..feb3c96
--- /dev/null
+++ b/specs/xfs/design.ms
@@ -0,0 +1,1498 @@
+.\" $Xorg: design.ms,v 1.3 2000/08/17 19:42:51 cpqbld Exp $
+.\" roff -ms
+.de Ip
+.IP \(bu 3
+..
+.de Qp
+.nr PS -2
+.nr VS -2
+.QP
+..
+.\" These macros should select a typewriter font if you have one.
+.de LS
+.KS
+.LD
+.ft CB
+.ta .6i 1.2i 1.8i 2.4i 3i 3.6i 4.2i
+..
+.de LE
+.ft P
+.DE
+.KE
+..
+.de Ls
+.nr PS -2
+.nr VS -3
+.sp
+.LS
+..
+.de Le
+.LE
+.nr PS +2
+.nr VS +3
+.LP
+..
+.TL
+Font server implementation overview
+.AU
+Dave Lemke
+.AI
+Network Computing Devices, Inc.
+Copyright \(co 1991 Network Computing Devices, Inc.
+.NH
+Introduction
+.PP
+The font server uses the same client/server model as X. The basic structure
+is that of the X Consortium X11R5 X server, and those
+who know that code should find the
+.I os
+and
+.I difs
+(device independent font server) layers familiar.
+.nf
+.Ls
+
+ +-----------------+
+ +-----| difs |------+
+ | +-----------------+ |
+ | |
+ +----+ +------------+
+ | os | | renderers |
+ +----+ +------------+
+.Le
+.fi
+\fBDefinitions\fR
+.Ip
+Renderer. Code that knows how to take font data in its raw format and
+convert it to the font server's format.
+.Ip
+Font Path Element (FPE). An instance of a renderer, associated with a
+specific font source, (ie a directory of PCF bitmaps).
+.PP
+The
+.I difs
+layer interprets the requests, and handles the renderer
+independent work. This includes error checking of requests, and the
+top level font database. It also contains various utility functionality
+such as caching and byte swapping.
+.PP
+The
+.I os
+layer sets up the communications channel, reads requests and
+sends the raw data of replies and events. It also handles font server
+configuration issues, controlled by command line arguments and
+a configuration file.
+.PP
+The renderer layer contains all font-specific code,
+and is responsible for rendering a font (which may mean
+just reading a bitmap from disk, or may include scaling of outline
+data), computing a fonts properties and header information.
+.NH
+Startup
+.PP
+At startup, the font server handles any command line arguments,
+initializes any OS-specific data, and then sets up the communications.
+Various internal databases are then initialized (extensions, the font
+catalogue, etc).
+.PP
+The config file, an ordered list of font sources, cache size hints,
+default resolutions, and security information, is then read in. Each
+of these source names could be a directory name, the name of another
+font server, or some other string that a particular renderer can
+recognize.
+.PP
+The default font catalogue is then built up by taking each of the font
+source names and comparing it with the names a renderer recognizes.
+The one that matches this name will become attached to this
+source. A renderer will ``understand'' a name if it can parse the data
+in that directory, or recognize that it is a valid font server address,
+or recognizes a special string. Thus a collection of valid font path
+elements is built up. Each
+.B FPE
+has a set of functions to support opening a font and accessing its
+data.
+.PP
+Font information is accessed via method functions in the
+.B Font.
+When a font is
+first loaded, the header information and properties are
+loaded/computed. The font also initializes its function pointers to do
+the proper work. When specific metrics or bitmaps are required, they
+are access via the font's functions. A disk-based bitmap font will
+probably want to load all data when first accessed. A scaled font or
+FS font may want to do more selective caching. In both cases, the
+renderer can use the utility functions to keep track of this data.
+Changing values of bitmap formats could result in the font having
+multiple copies of data in different formats, which the renderer may
+use the utility functions to manage.
+.NH
+Per client processing
+.PP
+Each entity attaching to the server is a client. Each client has
+its own authorization and resolution information, and its own view
+of the font database. A font open to one client may not be open to
+another, though the font server may have it loaded.
+.PP
+After initialization, new clients can attach to the font server and
+have their requests processed. For each request that is searching for
+a font
+.B (OpenBitmapFont)
+or listing font names
+.B (ListFonts,
+.B ListFontsWithXInfo),
+the pattern is given to each
+.B FPE.
+.PP
+.B OpenBitmapFont
+will take the supplied name and pass it to each
+.B FPE.
+The
+.B FPE
+will return one of three things:
+.I Success,
+and the font object;
+.I BadFont,
+because it doesn't know the font; or
+.I BadFont
+and an alias
+name, when it has an alias for the font. If
+.I Success
+is returned, the
+server goes on to create an ID (or find an existing one) and return a
+reply. If
+.I BadFont
+is returned, it goes on to the next
+.B FPE.
+If it
+reaches the end without finding a font, an error is returned to the
+client. If an alias is returned, the search resets to the first
+.B FPE
+and starts again, using the alias as the new font name. This allows
+aliases to work across different
+.B FPEs,
+without any ordering
+restrictions.
+.PP
+When each
+.B FPE
+receives a font name to open, it searches for the font's
+existence. If it can't find, or can only find an alias, it returns
+.I BadFont
+and any alias. If it finds the font, it checks the
+authorization and license status of the font to that of the client. If
+it passes, it then creates a new font object, and reads and/or computes
+at least the font's header information and properties. (It may also
+want to produce the bitmaps and extents, but that choice is left to the
+renderer.)
+.PP
+When a font's information is accessed, the interpreter routine looks up
+the font ID to find the font object, and then uses the font's access
+functions to get the data. These functions will return the data in
+the format expected by the client.
+
+.NH
+Client shutdown
+.PP
+When a client disconnects, all its references to any fonts it
+still has opened are removed. If no other clients reference these fonts, they
+may be freed, though the server may choose to cache them.
+
+.NH
+Server reset and cleanup
+.PP
+A server may be reset to flush the caches, re-read the configuration file,
+and a new list of
+.B FPEs
+to be built, via an OS-specific outside
+action. In UNIX, this will be handled via signals; in VMS it could be
+handled via an async trap or event flag.
+
+.NH
+Server offloading
+.PP
+In order to deal with numerous clients without major performance
+degradation, the server must be able to clone itself, or provide the
+client with a substitute server via the alternate server mechanism.
+Since both strategies have their uses, both will be supported. For a
+server that has plenty of host memory or CPU, but insufficient sockets,
+cloning may be a good choice. For a host with limited memory,
+assigning an alternate server on a different host may be a good
+choice. The server will make this decision based on configuration
+options.
+
+.NH
+Font server data structures
+.LP
+.IP
+The
+.B Client
+handles per-client information and interpreter status.
+.Ls
+typedef struct _Client {
+ int index;
+ pointer osPrivate;
+ int noClientException;
+ int (**requestVector) ();
+ pointer requestBuffer;
+ int clientGone;
+ int sequence;
+ Bool swapped;
+ long last_request_time;
+ void (*pSwapReplyFunc) ();
+ AuthContextPtr auth;
+ char *catalogues;
+ int num_catalogues;
+ Mask eventmask;
+ fsResolution *resolutions;
+ int num_resolutions;
+} ClientRec, *ClientPtr;
+.Le
+.IP
+The
+.B Font
+contains basic font information, including header information and properties.
+.Ls
+typedef struct _font {
+ int refcount;
+ fsHeader header;
+ fsBitmapFormat format;
+ int (*get_glyphs)();
+ int (*get_metrics)();
+ int (*get_extents)();
+ int (*get_bitmaps)();
+ int (*unload_font)();
+ FontPathElementPtr fpe;
+ int *client_ids;
+ Bool restricted_font;
+} FontRec *FontPtr;
+.Le
+.IP
+The
+.B ClientFont
+is a wrapper on top of
+.B Font,
+handling client specific font information.
+.Ls
+typedef struct _clientfont {
+ FontPtr font;
+ int clientindex;
+} ClientFontRec, *ClientFontRec;
+.Le
+.IP
+The
+.B AuthContext
+contains authorization information.
+.IP
+.Ls
+typedef struct _authcontext {
+ char *authname;
+ char *authdata;
+ FSID acid;
+} AuthContextRec *AuthContextPtr;
+.Le
+
+.NH
+Font Path Element functions
+.PP
+These functions are associated with each renderer, and handle
+all aspects of font access. Font data access is controlled via
+another set of functions described later. These functions are
+intended to support the R5 X server as well as the font server.
+As a result, some design decisions were made to support both
+models. When the
+.I difs
+layer needs to access a font, it uses these functions.
+.IP
+.Ls
+typedef unsigned long Mask;
+.sp
+typedef unsigned char *pointer;
+.sp
+typedef struct _FontPathElement {
+ int name_length;
+ char *name;
+ int type;
+ int refcount;
+ pointer private;
+} FontPathElementRec, *FontPathElementPtr;
+.Le
+.PP
+The FPE's reference count is incremented when it is added to the
+current list of FPEs and when it opens a font. It is decremented
+when it is no longer in the current list and when it closes a font.
+All reference changes are handled by the
+.I difs
+layer. The count is required to support font catalogue changes
+that may occur while the fontserver has fonts open, and keeps FPEs
+from being lost.
+.IP
+.Ls
+.sp
+typedef struct FontNames {
+ int nnames;
+ int size;
+ int *length;
+ char **names;
+} FontNamesRec, *FontNamesPtr;
+.sp
+typedef struct {
+ Bool (*name_check)();
+ int (*init_fpe)();
+ int (*reset_fpe)();
+ int (*free_fpe)();
+ int (*open_font)();
+ int (*close_font)();
+ int (*list_fonts)();
+ int (*start_list_fonts_with_info)();
+ int (*list_next_font_with_info)();
+ int (*wakeup_fpe)();
+ int (*client_died);
+ FontNamesPtr renderer_names;
+} FPEFunctions;
+.sp
+int init_fpe_type(Bool (name_func)(),
+ int (init_func)(), int (free_func)(), int (reset_func),
+ int (open_func)(), int (close_func)(),
+ int (list_func)(),
+ int (start_lfwi_func)(), int (next_lfwi_func)(),
+ int (wakeup_func)(),
+ int (client_died_func)()
+ )
+.Le
+.sp
+.LP
+This is called by the renderer when it is initialized at the beginning
+of time, and sets up
+an FPEFunctions entry for the renderer.
+.LP
+The
+.B FPEFunctions
+have the following parameters:
+.IP
+.Ls
+Bool name_check(char *name);
+.Le
+.LP
+If
+.I name
+is something the renderer recognizes as a valid font
+source name, it return True, otherwise False. ie, if
+.I name
+is a directory name, or is prefixed by the renderer's prefix, and the
+directory contains font data the renderer can interpret, it would return
+True.
+.IP
+.Ls
+int init_fpe(FontPathElementPtr fpe);
+.Le
+.LP
+Does any initialization work for the renderer. The name in
+.I fpe
+will be one whose prefix matches the list returned when the renderer
+was initialized.
+.IP
+.Ls
+int reset_fpe(FontPathElementPtr fpe);
+.Le
+.LP
+Tells
+.I fpe
+to reset any internal state about what fonts it has available.
+This will typically be called because the font server's
+.B FPE
+search list has been changed. The
+.I fpe
+should reset any cached state of available fonts (ie, re-read
+.I fonts.dir) when this function is called.
+.IP
+.Ls
+int free_fpe(FontPathElementPtr fpe);
+.Le
+.LP
+Frees any renderer-specific data and closes any files or sockets.
+.IP
+.Ls
+int open_font(pointer client, FontPathElementPtr fpe, Mask flags,
+ char *fontname, int namelength,
+ fsBitmapFormat format_hint, fsBitmapFormatMask format_mask,
+ XID fontid, FontPtr *ppfont, char **alias);
+.Le
+.LP
+Opens the font.
+The bits marked by
+.I format_mask in the
+.I format_hint
+are used where applicable.
+The resulting FontPtr is returned in
+.I ppfont.
+The
+.I client
+is optional state
+information for use with blocking renderers. If the
+.I fontname
+ resolves to an alias, it is returned in
+.I alias
+with a
+.I FontNameAlias
+error. This tells the
+calling code to start searching again, using
+.I alias
+as the font name.
+The renderer is expected to fill in any information
+specified by the
+.I flags.
+.IP
+Possible flags values are:
+.Ls
+#define FontLoadInfo 0x0001 /* font header info */
+#define FontLoadProps 0x0002 /* font properties */
+#define FontLoadMetrics 0x0004 /* font extents */
+#define FontLoadBitmaps 0x0008 /* glyph bitmaps */
+#define FontLoadAll 0x000f
+#define FontOpenSync 0x0010 /* force synchronous loading */
+.Le
+.LP
+Once a font has been opened, the server may place it and the pattern
+it matched into a name cache, to avoid lengthy searching if the font
+is reopened. If the renderer does not wish the font to be in this
+cache (for licensing reasons), it should set the font's
+.I restricted_access
+flag.
+.IP
+.Ls
+int close_font(FontPtr pfont);
+.Le
+.LP
+Frees up all the data associated with the font.
+.IP
+.Ls
+int list_fonts(pointer client, FontPathElementPtr fpe,
+ char *pattern, int pattern_length, int maxnames,
+ FontNamesPtr *paths);
+.Le
+.LP
+Returns in
+.I paths
+up to
+.I maxnames
+font names the fpe recognizes as matching the given pattern.
+.IP
+.Ls
+int start_list_fonts_with_info(pointer client,
+ FontPathElementPtr fpe, char *pattern, int pattern_length,
+ int maxnames, pointer fpe_data);
+.Le
+.LP
+Initiates a
+.B ListFontsWithXInfo.
+Typically, a disk-based renderer
+will do the equivalent of ListFonts to gather all the font names
+matching the pattern. A font server renderer will send the request.
+.I fpe_data
+provides a handle for any FPE-private data that needs
+to be passed in later via
+.B list_next_font_with_info(),
+eg, the list of font names for a disk-based renderer.
+.IP
+.Ls
+int list_next_font_with_info(pointer client, FontPathElementPtr fpe,
+ char **name, int *namelen, FontInfoPtr &pinfo,
+ int &num_fonts, pointer fpe_data);
+.Le
+.LP
+Returns the next font's information. The renderer should keep any state
+it requires in the
+.I fpe_data
+field.
+.I num_fonts
+contains the number
+of replies remaining.
+.LP
+These two routines are split for because of the way both disk-based
+renderers and font server renderers handle this request.
+The first function initiates the action, the second is used to gather
+the results. For a
+disk-based renderer, a list of font names matching the pattern is first
+built up when
+.B start_list_fonts_with_info()
+is called, and the results are gathered with each call to
+.B list_next_font_with_info.
+In a font server renderer, the first function sends the
+.B ListFontsWithXInfo
+request, and
+the second processes the replies.
+.IP
+.Ls
+int wakeup_fpe(FontPathElementPtr fpe, unsigned long *mask)
+.Le
+.LP
+Optional function which can be used for blocking renderers. Typical
+usage is for a font server renderer, where it is called when a reply is
+received, allowing the data to be read and the client to be signaled
+and unblocked.
+.IP
+.Ls
+int client_died(pointer client, FontPathElementPtr fpe)
+.Le
+.LP
+This function is called when a client dies in the middle of a blocked
+request, allowing the renderer to clean up.
+
+.NH
+Font specific functions
+.LP
+These functions are contained in each
+.B Font.
+For many renderers, every font will
+use the same functions, but some renderers may wish to use different interfaces
+for different fonts.
+.IP
+.Ls
+typedef struct {
+ INT16 left B16,
+ right B16;
+ INT16 width B16;
+ INT16 ascent B16,
+ descent B16;
+ CARD16 attributes B16;
+} fsCharInfo;
+
+typedef struct {
+ CARD8 low,
+ high;
+} fsChar2b;
+
+typedef struct {
+ fsChar2b min_char,
+ max_char;
+} fsRange;
+
+int get_extents(pointer client,
+ FontPtr pfont, Mask flags, int num_ranges, fsRange *ranges,
+ int *num_extents, fsCharInfo **extents);
+.Le
+.LP
+Possible flags:
+.IP
+.Ls
+LoadAll /* ignore the ranges and get everything */
+FinishRange /* magic for range completion as specified by protocol */
+.Le
+.LP
+Builds up the requested array of extents. The extent data (which
+the renderer allocates) is returned, as well as the number of extents.
+.I closure
+contains any blocking state information.
+.IP
+.Ls
+int get_bitmaps(pointer client,
+ FontPtr pfont, fsBitmapFormat format, Mask flags,
+ int num_ranges, fsRange *ranges,
+ unsigned long *size, unsigned long *num_glyphs,
+ unsigned long **offsets, pointer *glyph_data);
+.Le
+.LP
+Possible flags:
+.IP
+.Ls
+LoadAll
+FinishRange /* magic for range completion as specified by protocol */
+.Le
+.LP
+Builds up the requested array of bitmaps. The glyph and offset data
+(which the renderer allocates) is returned, as well as the number of
+glyphs. The
+.I closure
+contains any blocking state information. This function will build up the
+bitmap data in the format specified by
+.I format
+so that the interpreter can return it without any additional
+modification. This should minimize data massaging, since outline
+renderers will hopefully be able to produce the bitmaps in the proper
+format.
+.IP
+.Ls
+void unload_font(FontPtr pfont)
+.Le
+.LP
+The render will free any allocated data. Note that the
+.B FPE
+function
+.B close_font()
+will also be called, and should handle any
+.B FPE
+data allocated for the font.
+.IP
+.Ls
+int get_glyphs()
+int get_metrics()
+.Le
+.LP
+These two functions are used by the X server for loading glyphs and
+metrics. They expect the results in a considerably different
+form. The
+.I get_bitmaps()
+and
+.I get_extents()
+routines both allow for better cache control by the renderer.
+
+.NH
+Font directories and aliases
+.PP
+Existing bitmap renderers already have their own concept of font
+organization. In the X sample server, the files
+.B fonts.dir
+and
+.B fonts.alias
+are used to list the known fonts.
+.B fonts.dir
+maps file names to font names, while
+.B fonts.alias
+maps font names to other font names.
+.PP
+These concepts will also be needed by other forms of fonts
+which the sample X server does not currently use, but the font server
+will, like Bitstream outlines.
+
+.NH
+Handling scalable fonts
+.PP
+For those renderers that support scalable fonts, several issues
+must be addressed:
+.br
+.Ip
+Name Parsing. An XLFD name must be parsed to determine the requested
+resolutions and/or sizes.
+.Ip
+Property scaling. Many of the standard font properties have values
+that depend on scaling (eg,
+.I RESOLUTION_X.
+.I POINT_SIZE)
+.Ip
+Default values. If resolution information is wildcarded, the proper
+default resolution should be supplied.
+.LP
+Name Parsing
+.PP
+The font name pattern supplied to
+.B OpenBitmapFont
+or
+.B ListFonts
+may require some parsing to be recognized as a scalable font known
+to the renderer. The
+.B PIXEL_SIZE,
+.B POINT_SIZE,
+.B RESOLUTION_X,
+.B RESOLUTION_Y
+and
+.B AVERAGE_WIDTH
+all need to determined from the font name pattern. The master font
+must then be found, and scaled appropriately. Any unspecified values
+that cannot be determined should be replaced by the proper defaults.
+For size fields, this is whatever the configuration specifies. For
+resolution fields, these should be taken from the client's resolution
+list, if set, or from the server's configuration.
+.LP
+Property scaling
+.PP
+Part of scaling a font is scaling its properties. Many scalable fonts
+will have a very large number of scalable properties. One way
+to deal with these is for the ``master'' outline to keep track of the
+property names, and supply new values for each instance of the font.
+If the property names are stored as Atoms, memory usage is kept to
+a minimum.
+.LP
+Using defaults
+.PP
+Using default values as substitutions for missing values was covered above.
+These defaults will also be useful in handling
+.B ListFonts
+requests. Returning a scalable font with an instance using the
+default values will provide the most user-friendly environment.
+
+.NH
+Access control
+.PP
+The font server will also support large grain security. It will have
+both a limit of the number of users, and on the hosts which it will
+support.
+.PP
+Limiting the number of users is as much a server loading issue as
+a security issue. The limitation will be typically be set via
+configuration options or OS limitations. To change it, use:
+.IP
+.Ls
+void AccessSetConnectionLimit(int limit)
+.Le
+.LP
+A
+.I limit
+of 0 will set it to a compiled constant based on OS resources
+(eg, number of file descriptors).
+.PP
+Client-host based access control can be used to supplement licensing,
+and support font server load balancing by restricting access.
+As with licensing, this is OS-specific code.
+To manipulate these functions, use:
+.IP
+.Ls
+typedef struct _host_address {
+ int type;
+ pointer address;
+ struct _host_address *next;
+} HostAddress;
+.sp
+typedef HostAddress *HostList;
+.sp
+int AddHost(HostList list, HostAddress *address)
+int RemoveHost(HostList list, HostAddress *address)
+Bool ValidHost(HostList list, HostAddress *address)
+.Le
+.LP
+.B AddHost()
+adds a host to the
+.I list.
+.B RemoveHost()
+removes it, and
+.B ValidHost()
+checks to see if its on the
+.I list.
+In all functions, the
+.I address
+has will ignore any value in the
+.I next
+field.
+.PP
+Network addresses are used here to avoid issues with host name aliases.
+The caller fills in the desired type, and an address of that form is
+returned. This is highly OS-specific, but values for the
+.I type
+and
+.I address
+fields could include:
+.IP
+.Ls
+#define HOST_AF_INET 1
+struct in_addr *address;
+.sp
+#define HOST_AF_DECnet 2
+struct dn_addr *address;
+.Le
+.LP
+The server will use a global host list, but having the list
+as an argument will allow licensing schemes to have their
+own host lists.
+
+.NH
+Licensing
+.PP
+Licensing is a tricky issue, which each renderer will support in a
+different way. The sample font server will attempt to provide some
+guidelines, and present a possible implementation of some simple
+licensing schemes.
+.LP
+\fBHost Address licensing\fR
+.LP
+This is simplistic licensing based on the client's host. With
+this form of licensing, a font may be accessible to some host but not
+others. To get the current client's host, the following is used:
+.IP
+.Ls
+void GetHostAddress(HostAddress *address);
+.Le
+.LP
+A renderer can also use the host access functions to keep a list
+of the licensed hosts, and
+.B ValidHost()
+to check a client.
+.LP
+\fBSimultaneous use license\fR
+.PP
+This licensing allows for a limited number of copies of the font to
+be open at once. Since this should be a simple per-font counter,
+no support should be required outside of the renderer.
+
+.NH
+DIFS contents
+.PP
+This contains the protocol dispatcher, interpreter and reply encoding
+routines.
+.PP
+The interpreter is table driven off the request code. The dispatcher
+gets a request from the os layer from
+.B WaitForSomething(),
+and uses
+the request code to determine which function to call. eg, a
+.I CloseFont
+request would call
+.B ProcCloseFont().
+.PP
+Each request's routine handles any applicable error checking, and then
+does as much work as it can. For font related requests, this means
+converting the request to the proper arguments for the renderers.
+.PP
+If any replies are generated, the reply data is gathered into the
+bytestream format, and sent via
+.I os
+write functions to the client.
+.PP
+If the byte order of the client and server differ, the above is
+modified by having the dispatcher call an intermediate function which
+re-orders the request to the proper byte order. Replies go through
+similar swapping.
+.LP
+\fBClient blocking\fR
+.PP
+To minimize delay caused by font server request, clients can
+be blocked while they wait for data to be produced. This is primarily
+intended for
+.B FPEs
+using a remote font server,
+but can be used anywhere where the font server can pause to handle
+other client requests while data needed to satisfy another is produced
+(possibly via multiple processes).
+.IP
+.Ls
+Bool ClientSleep(ClientPtr client, Bool (*function)(), pointer closure)
+.Le
+.LP
+Puts a client to 'sleep'. This means the client will no longer be
+considered while the server is dispatching requests.
+.I function
+will be called when the client is signaled, with the
+.I client
+and
+.I closure
+as its arguments.
+.Ls
+Bool ClientSignal(ClientPtr client)
+.Le
+.LP
+This should be called when the client is ready to do more work.
+At this point, the function given to
+.B ClientSleep()
+will be called.
+.Ls
+void ClientWakeup(ClientPtr client)
+.Le
+.LP
+Puts the client back to its normal state processing requests.
+.Ls
+Bool ClientIsAsleep(ClientPtr client)
+.Le
+.LP
+Can be used to check if a client is asleep. This is useful for handling
+client termination, so that any requests the client is waiting upon can be
+properply cleaned up.
+.LP
+\fBSample Usage\fR
+.PP
+For handling a font server renderer request for
+.B OpenBitmapFont
+the renderer will send the request to the remote font server, and
+the call
+.B ClientSleep().
+The font server will then continue processing requests from other clients,
+while the one making the request is blocked.
+When the reply returns, the renderer will notice when its
+.B wakeup_fpe()
+function is called. At this point the font server renderer will
+read and process the reply.
+.B ClientSignal()
+will be called, and the
+.I closure
+function will be called. It will request the data from the renderer,
+completing the request, and call
+.B ClientWakeup()
+to return the client to normal status.
+.sp
+.PP
+This layer also contains the resource database, which associates fonts
+with IDs, extension interface functions and the server initialization
+and reset control.
+.NH
+OS contents
+.PP
+This layer contains OS specific routines for configuration, command
+line parsing, client/server communications, and various OS-dependent
+utilities such as memory management and error handling.
+.PP
+.B ReadRequestFromClient()
+returns a full request to the dispatcher.
+.B WaitForSomething()
+is where the server spends its idle time, waiting
+for any action from a client or processing any work left from a blocked
+client.
+.PP
+When a client attempts to connect, the server will call
+.IP
+.Ls
+int CheckClientAuthorization(ClientPtr client, AuthPtr client_auth,
+ int *accept, int *index, int *size, char **authdata)
+.Le
+.LP
+to see if the server is set to allow the client to connect. It may
+use licensing or configuration information to determine if the client
+can connect.
+.PP
+When then connection is established, the server will use the
+.IP
+.Ls
+typedef struct _alt_server {
+ char subset;
+ char namelen;
+ char *name;
+} AlternateServerRec, *AlternateServerPtr;
+.sp
+int ListAlternateServers(AlternateServerPtr *servers)
+.Le
+.LP
+to return any alternate server information it may have.
+.LP
+When the client limit is reached, the font server may attempt to
+copy itself, by calling
+.IP
+.Ls
+int CloneMyself()
+.Le
+.LP
+This function will (if the configuartion options allow) start a new
+font server process. This is done in such a way that no pending
+connections should be lost, and that the original server will accept
+no new connections. Once the original server has no more clients, it will
+exit.
+
+Catalogue manipulation
+.PP
+Catalogues are configuration dependent, and hence sent by OS-dependent
+methods. In order for the
+.I difs
+layer to get them, it uses
+.IP
+.Ls
+int ListCatalogues(char *pattern, int pattern_length,
+ int maxnames, char **catalogues, int *len)
+.Le
+.LP
+which returns the list of all catalogues it supports which match the pattern.
+This function
+will be used by the catalogue manipulation requests, as well as by renderers
+when they give their
+.B ListFonts
+results.
+.LP
+.Ls
+int ValidateCatalogues(int number, char *catalogues)
+.Le
+.LP
+Can be used to validate a list of catalogues, returning True if the
+list is acceptable.
+
+.NH
+Utility functions
+.LP
+Client data functions
+.PP
+These provide access to the current client's resolution and
+authorization data. This form of interface is supplied rather than
+passing it to all renderers in the
+.B FPE
+functions because the data may
+be complex and/or uninteresting to all renderers.
+.IP
+.Ls
+AuthContextPtr GetClientAuthorization()
+.Le
+.LP
+Returns the authorization data for the current client.
+.IP
+.Ls
+fsResolution *GetClientResolutions(int *num_resolutions)
+.Le
+.LP
+Returns the list of resolutions that the current client has set.
+.sp 2
+.LP
+\fBCaching functions\fR
+.PP
+These are functions that simplify caching of renderer data. These are
+for use by
+renderers that take significant resources to produce data. The data
+must be re-creatable -- the cache is not meant for general storage.
+The data may also be moved by the cache, so it should only be accessed
+by CacheID.
+.IP
+.Ls
+typedef void (*CacheFree)();
+typedef unsigned long CacheID;
+typedef unsigned long Cache;
+.sp 2
+Cache CacheInit(int renderer_id)
+.Le
+.LP
+Initializes a cache object for the renderer. the returned ID should be
+passed to
+.B CacheStoreMemory()
+when adding an object to the cache.
+.IP
+.Ls
+void CacheStats(Cache cid, unsigned long *num_entries,
+ unsigned long *max_storage, unsigned long *current_storage,
+ unsigned long *num_lookups, unsigned long *hit_ratio)
+.Le
+.LP
+Returns statistics on the cache. Useful if the renderer wants some
+hints about whether to place an object in the cache. If the cache is
+nearly full, and the priority low, it may want to take different
+action.
+.IP
+.Ls
+CacheID CacheStoreMemory(Cache cacheid, pointer data, unsigned long size,
+ CacheFree free_func)
+.Le
+.LP
+The renderer hands the cache some chunk of contiguous memory, which the
+cache timestamps and stores. When it needs to remove them, it calls
+the
+.I free_func,
+which must take responsibility for properly freeing the data.
+.I size
+is primarily a hint to the cache, so that cache limits can be properly
+calculated. A return value of zero means the store failed, probably
+because the given size was over the cache limit. If the given data is
+too large for the current cache, it will attempt to free old data to
+make room. The returned ID is a unique value that refers both to the
+object and the cache in which it was placed.
+.IP
+.Ls
+pointer CacheFetchMemory(CacheID cid, Bool update)
+.Le
+.LP
+Returns the memory attached to the id. If
+.I update
+is set, the timestamp is updated. (some accesses may wish to be 'silent',
+which allows some control over the freeing scheduling.) If the cid is invalid,
+.I NULL
+is returned.
+.IP
+.Ls
+int CacheFreeMemory(CacheID cid, Bool notify)
+.Le
+.LP
+Allows the cache to flush the data. If
+.I notify
+is set, the CacheFree
+function passed in when the data was cached will also be called.
+.IP
+.Ls
+void MemoryFreed(CacheID cid, pointer data, int reason)
+.Le
+.LP
+Callback function from the cache to the renderer notifying it that its
+data has been flushed. This function then has the responsibility to
+free that data.
+.I reason
+may be one of:
+.IP
+.Ls
+CacheReset /* all cache freed because of server reset */
+CacheEntryFreed /* explicit request via free_memory() */
+CacheEntryOld /* cache hit limit, and memory being freed because its old */
+.Le
+.LP
+and is supplied so that the renderer may choose how to deal with the
+free request. (It will probably be ignored by most, but some may want to
+keep the memory around by bypassing the cache, or re-inserting it.)
+Note that the cache will consider the data gone, so it
+.B must
+be re-inserted to keep it alive.
+.IP
+.Ls
+void CacheSimpleFree(CacheID cid, pointer data, int reason)
+.Le
+.LP
+Just calls
+.B free()
+on the data. Simple CacheFree defined here to
+prevent it being redefined in each renderer.
+.PP
+Typical usage of the cache is for the renderer to store a CacheID
+rather than a pointer to the cacheable data. The renderer is
+responsible for both allocating and freeing the data, as well as
+keeping track of just what it is. When the renderer needs the cached
+data, it will request it from the cache. If it fails, it must rebuild
+it.
+.PP
+A possible configuration parameter is the size of the cache. when the
+cache is filled (with the calculation based on the given size), it
+sweeps the cache and frees old data. The amount of memory actually
+freed may wish to be tunable: some systems may want to keep the cache
+as full as possible, others may want to free some percentage such that
+sweeps occur less frequently.
+.PP
+Cache statistics may want to be available for administrators. They
+could be dumped to a file when a signal is received. (SNMP seems like
+a perfect match, but apparently the technology isn't there yet.
+.PP
+Cached data could also be compressed, if the memory/CPU tradeoffs
+make it worthwhile.
+.PP
+ISSUE: Is a time-based freeing schedule sufficient? Should priorities
+or size also be taken into account? [ No. Anything that the renderer
+thinks should have a higher priority should probably not be placed into
+the cache. ]
+.sp 2
+.LP
+\fBByte swapping\fR
+.LP
+Functions for swapping a 4-byte quantity, a 2-byte quantity and inverting
+a byte.
+.IP
+.Ls
+void BitOrderInvert(pointer buffer, unsigned long num_bytes)
+void TwoByteSwap(pointer buffer, unsigned long num_shorts)
+void FourByteSwap(pointer buffer, unsigned long num_longs)
+.Le
+.LP
+\fBBitmap padding\fR
+.LP
+Functions taking a desired extents and a bitmap that will return the
+bitmap properly padded.
+.Ls
+int RepadBitmap(pointer src, pointer dst, fsFormat src_format,
+ fsFormat dst_format, int width, int height)
+.Le
+.LP
+Takes a bitmap in
+.I src_format
+and converts it to one in
+.I dst_format.
+.LP
+\fBAtoms\fR
+.PP
+Existing bitmap-based renderers use atoms to store strings for property
+information. Rather than duplicate this code in each renderer, it
+lives in the
+.I util
+directory.
+.PP
+Atoms will be especially useful for property information, to prevent
+many copies of the same strings from being saved. Using atoms for
+comparison when modifying properties after scaling is also more
+efficient. Since
+.I atoms
+will will exist until the server is reset, they may want to be used
+sparingly for property values to avoid extraneous string data.
+.IP
+.Ls
+typedef unsigned long Atom;
+.sp
+Atom MakeAtom(char *string, unsigned int length, Bool create)
+.Le
+.LP
+Returns the atom associated with
+.I string.
+If
+.I create
+is true, a new atom will be created.
+.IP
+.Ls
+char *NameForAtom(Atom atom)
+.Le
+.LP
+Returns the string associated with
+.I atom.
+
+.NH
+Server request details
+.PP
+This section describes in-depth the action of each protocol request.
+In all cases, the request is first error checked for simple length
+or value errors, with the server
+immediately returning an error if one is encountered.
+.NH 2
+Connection
+.PP
+When a new client attempts to connect, the server first checks
+its initial authorization information to see if the server is willing
+to talk to it. This will be handled in some OS-specific form
+using
+.B CheckClientAuthorization().
+If it passes
+this test, and the server has sufficient to resources to talk to it, the
+server sends accepts the connection and returns its connection block.
+If the connection fails, the server returns the proper status and
+a list of any alternate servers it may know of (gathered from
+.B ListAlternateServers().)
+.NH 2
+ListExtension
+.PP
+Returns the list of extensions the server knows about.
+Any extensions will be initialized when the server is first started.
+.NH 2
+QueryExtension
+.PP
+Returns the information about the requested extension, which was set
+when the extension was initialized.
+.NH 2
+ListCatalogues
+.PP
+Returns the catalogues the server recognizes (the results of
+.B ListCatalogues().)
+.NH 2
+SetCatalogues
+.PP
+Sets the requesting client's catalogues after verifying them with the
+supported catalogues.
+.NH 2
+GetCatalogues
+.PP
+Returns the requesting client's catalogues.
+.NH 2
+CreateAC
+.PP
+Creates a new authorization context and fills it in. The list of
+authorization protocols is then checked by the server with
+.B CheckClientAuthorization().
+If any are accepted,
+the
+.B AC
+is placed in the resource database and
+.I Success
+is returned with the name of the accepted protocol. If more than one is
+accepted,
+.I Continue
+is returned with each of the accepted protocols, until the last one
+which has status
+.I Success
+Otherwise
+.I Denied
+is returned.
+.NH 2
+FreeAC
+.PP
+Looks up the
+.B AC
+in the resource database, and frees it if it finds it. Otherwise an
+.I Access
+error is returned.
+.NH 2
+SetAuthorization
+.PP
+Looks up the
+.B AC
+in the resource database, and set the client's AuthContextPtr
+to its value if it is found. Otherwise it sends an
+.I Access
+error.
+.NH 2
+SetResolution
+.PP
+Sets the requesting client's resolution list to the supplied list.
+.NH 2
+GetResolution
+.PP
+Returns the requesting client's list of resolutions.
+.NH 2
+ListFonts
+.PP
+Iterates over each open FPE, calling the FPE's
+.B list_fonts()
+routine passing it the pattern.
+When all FPE's have been processed, the list that has been built up
+is returned. Note that the same
+.B FontNamesPtr
+is sent to each FPE in turn, so that one list is built up.
+An FPE may restrict the fonts it returns based on the client's
+catalogue.
+.NH 2
+ListFontsWithXInfo
+.PP
+Iterates over each FPE, calling its
+.B start_list_fonts_with_info()
+function to prime the FPE's renderer. It then calls the FPE's
+.B list_next_font_with_info(),
+sending each font's data to the client until no more fonts remain.
+When all FPEs have been processed, the final reply with a zero-length
+name is then sent to mark the end of the replies.
+An FPE may restrict the fonts it returns based
+on the client's catalogue.
+Note: an issue
+exists with font aliases which may require this to change, since an FPE
+may contain an alias pointing to another FPE, and cannot therefore
+return the font's info.
+.NH 2
+OpenBitmapFont
+.PP
+The pattern is first searched for in the font server's name cache.
+If it doesn't find it, the server iterates over each FPE, calling its
+.B open_font
+function with the supplied pattern. This will return one of the following
+values:
+.Ip
+an
+.B Access
+error, which means the renderer has the font but the client does not
+have access to it because of some form of licensing restriction
+.Ip
+a
+.B Font
+error and a NULL
+.I alias
+parameter, which will cause the next FPE to be tried
+.Ip
+a
+.B Font
+error but a non-NULL
+.I alias,
+which will cause the search to start over with the first FPE using
+.I alias
+as the new font pattern
+.Ip
+.B Success,
+in which case a valid font has been found.
+.PP
+If the end of the FPE list is reached without having found the font,
+an error is returned to the client. If an
+.B Access
+error was encountered, it is returned, otherwise a
+.B Font
+error is returned.
+If a valid font is found, its reference count will be incremented and
+it will be checked to see if the client has
+already opened it before. If so, the previous ID will be returned.
+Otherwise the font will be placed in the resource database.
+.PP
+The renderer will fill in the font's header and property information,
+and may also choose to load or create the font's metrics or glyphs.
+If the glyphs are built, they will use any supplied \fIformat hint\fR.
+.PP
+Whenever a new font is successfuly opened, the font and its name pattern
+will be placed in a name cache. This cache exists to minimize the amount
+of work spent searching for a font. It will be flushed when the
+font catalogue is modified. Client's with private font catalogues
+will require private name caches.
+.NH 2
+QueryXInfo
+.PP
+The
+.I fontid
+is looked up in the resource database, and the font's header and
+property info is returned.
+.NH 2
+QueryXExtents8 QueryXExtents16
+.PP
+The
+.I fontid
+is looked up in the resource database. The supplied list of
+characters (interpreted according to request type) is then translated
+into a list of ranges. The font's
+.B get_extents()
+function is then called. It builds the requested list of extents,
+and returns them along with the number of extents.
+The results are properly swapped and sent to the client.
+.NH 2
+QueryXBitmaps8 QueryXBitmaps16
+.PP
+The
+.I fontid
+is looked up in the resource database. The supplied list of
+characters (interpreted according to request type) is then translated
+into a list of ranges. The font's
+.B get_bitmaps()
+function is called, and the renderer will build up the requested
+bitmaps, using the specified
+.I format,
+and returns the bitmaps, the number of glyphs and the offsets.
+The offsets are properly swapped and the offsets and bitmaps are
+sent to the clients.
+.NH 2
+CloseFont
+.PP
+The font's reference count is decremented. If this was the last reference,
+the font's
+.B unload_font()
+function is called to free the renderer's data, and the font's
+FPE
+.B close_font()
+function is called to free up any FPE specific data.
+
+.NH
+Configuration
+.PP
+The configuration mechanism is a simple keyword-value pair, separated
+by an '='.
+.LP
+Configuration types:
+.ta .6i 2.1i
+.nf
+.sp
+ cardinal non-negative number
+.sp
+ boolean "[Yy]es", "[Yy]" "on", "1", "[Nn]o", "[Nn]", "off", "0"
+.sp
+ resolution \fIcardinal,cardinal\fR
+.sp
+ list of foo 1 or more of foo, separated by commas
+.sp
+.fi
+.LP
+Here is an incomplete list of the supported keywords:
+.sp
+.ta .6i 1.5i
+.nf
+# in the first column, a comment character
+.\".sp
+.\"cache-size (cardinal)
+.\" Size in bytes of the FS cache.
+.sp
+catalogue (list of string)
+ Ordered list of font path element names.
+.sp
+alternate-servers (list of string)
+ List of alternate servers for this FS.
+.sp
+client-limit (cardinal)
+ Number of clients this FS will support before refusing
+ service.
+.sp
+clone-self (boolean)
+ Whether this FS should attempt to clone itself or
+ use delegates when it reachs the client-limit.
+.sp
+default-point-size (cardinal)
+ The default pointsize (in decipoints) for fonts that
+ don't specify.
+.sp
+default-resolutions (list of resolutions)
+ Resolutions the server supports by default.
+ This information may be used as a hint for pre-rendering.
+.sp
+error-file (string)
+ Filename of the error file. All warnings and errors
+ will be logged here.
+.sp
+port (cardinal)
+ The TCP port on which the server will listen for connections.
+.sp
+use-syslog (boolean)
+ Whether syslog(3) is to be used for errors.
+.\".sp
+.\"trusted-clients (list of string)
+.\" Those clients the fontserver will talk to. Others
+.\" will be refused for the initial connection. An empty
+.\" list means the server will talk to any client.
+.fi
+.IP
+Each renderer may also want private configuration options. The names
+should be prefixed by the renderer name, ie
+.I pcf-,
+.I atm-.
+.LP
+Examples:
+.sp
+# allow a ~a megabyte of memory to be reserved for cache data
+.br
+cache-size = 1000000
+.sp
+catalogue = pcf:/usr/lib/X11/fonts/misc,speedo:/usr/lib/fonts/speedo
diff --git a/specs/xtrans/Xtrans.mm b/specs/xtrans/Xtrans.mm
new file mode 100644
index 0000000..42fdfd6
--- /dev/null
+++ b/specs/xtrans/Xtrans.mm
@@ -0,0 +1,774 @@
+'\".nr Ej 1
+.PH "'''"
+.ce
+\fBX Transport Interface\fR
+.sp
+Copyright (c) 1993, 1994 NCR Corporation - Dayton, Ohio, USA
+.sp
+All Rights Reserved
+.sp
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name NCR not be used in advertising
+or publicity pertaining to distribution of the software without specific,
+written prior permission. NCR makes no representations about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+.sp
+NCR DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.sp
+Copyright 1993, 1994 X Consortium
+.sp
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the ``Software''), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+.sp
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+.sp
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.sp
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+.sp
+X Window System is a trademark of X Consortium, Inc.
+.sp
+Designed by Stuart Anderson (NCR) with help from Ralph Mor (X Consortium)
+.sp
+.ce
+\fIDraft Version 0.6\fR
+.sp
+NOTE: This documentation does not completely match the implementation in R6
+(as a result of some late changes made in the code). Specifically, support
+was added for font server cloning, and conditional compliation was introduced
+for client vs. server code.
+.bp
+.H 1 "Purposes and Goals"
+.P
+The X Transport Interface is intended to combine all system and transport
+specific code into a single place in the source tree. This API should be used
+by all libraries, clients and servers of the X Window System. Use of this API
+should allow the addition of new types of transports and support for new
+platforms without making any changes to the source except in the X Transport
+Interface code.
+.P
+This interface should solve the problem of multiple #ifdef TRANSPORT and
+#ifdef PLATFORM statements scattered throughout the source tree.
+.P
+This interface should provide enough functionality to support all types of
+protocols, including connection oriented protocols such as X11 and FS, and
+connection-less oriented protocols such as XDMCP.
+.H 1 "Overview of the interface"
+.P
+The interface provides an API for use by applications. The functions in this
+API perform work that is common to all transports and systems, such as
+parsing an address into a host and port number. The functions in this API
+call transport specific functions that are contained in a table whose
+contents are defined at compile time. This table contains an entry for each
+type of transport. Each entry is a record containing mostly pointers to
+function that implements the interface for the given transport.
+.P
+This API does not provide an abstraction for select() or poll().
+These function are themselves transport independent, so an additional interface
+is not needed for these functions. It is also unclear how such an interface
+would affect performance.
+.H 1 "Definition of Address Specification Format"
+.P
+Addresses are specified in the following syntax,
+.sp
+\fIprotocol/host:port\fR
+.sp
+where \fIprotocol\fR specifies a protocol family or an alias for a protocol
+family. A definition of common protocol families is given in a later section.
+.P
+The \fIhost\fR part specifies the name of a host or other transport dependent
+entity that could be interpreted as a Network Service Access Point (NSAP).
+.P
+The \fIport\fR part specifies the name of a Transport Service Access Point
+(TSAP). The format of the TSAP is defined by the underlying transport
+implementation, but it is represented using a string format when it is part
+of an address.
+.H 1 "Internal Data Structures"
+.P
+There are two major data structures associated with the transport independent
+portion of this interface. Additional data structures may be used internally
+by each transport.
+.H 2 "Xtransport"
+.P
+Each transport supported has an entry in the transport table.
+The transport table is an array of \fIXtransport\fR records. Each record
+contains all the entry points for a single transport. This record is defined as:
+.DS
+.nf
+typedef struct _Xtransport {
+
+ char *TransName;
+ int flags;
+
+ XtransConnInfo (*OpenCOTSClient)(
+ struct _Xtransport *, /* transport */
+ char *, /* protocol */
+ char *, /* host */
+ char * /* port */
+ );
+
+ XtransConnInfo (*OpenCOTSServer)(
+ struct _Xtransport *, /* transport */
+ char *, /* protocol */
+ char *, /* host */
+ char * /* port */
+ );
+
+ XtransConnInfo (*OpenCLTSClient)(
+ struct _Xtransport *, /* transport */
+ char *, /* protocol */
+ char *, /* host */
+ char * /* port */
+ );
+
+ XtransConnInfo (*OpenCLTSServer)(
+ struct _Xtransport *, /* transport */
+ char *, /* protocol */
+ char *, /* host */
+ char * /* port */
+ );
+
+ int (*SetOption)(
+ XtransConnInfo, /* connection */
+ int, /* option */
+ int /* arg */
+ );
+
+ int (*CreateListener)(
+ XtransConnInfo, /* connection */
+ char * /* port */
+ );
+
+ int (*ResetListener)(
+ XtransConnInfo /* connection */
+ );
+
+ XtransConnInfo (*Accept)(
+ XtransConnInfo /* connection */
+ );
+
+ int (*Connect)(
+ XtransConnInfo, /* connection */
+ char *, /* host */
+ char * /* port */
+ );
+
+ int (*BytesReadable)(
+ XtransConnInfo, /* connection */
+ BytesReadable_t * /* pend */
+ );
+
+ int (*Read)(
+ XtransConnInfo, /* connection */
+ char *, /* buf */
+ int /* size */
+ );
+
+ int (*Write)(
+ XtransConnInfo, /* connection */
+ char *, /* buf */
+ int /* size */
+ );
+
+ int (*Readv)(
+ XtransConnInfo, /* connection */
+ struct iovec *, /* buf */
+ int /* size */
+ );
+
+ int (*Writev)(
+ XtransConnInfo, /* connection */
+ struct iovec *, /* buf */
+ int /* size */
+ );
+
+ int (*Disconnect)(
+ XtransConnInfo /* connection */
+ );
+
+ int (*Close)(
+ XtransConnInfo /* connection */
+ );
+
+} Xtransport;
+
+.fi
+.DE
+.P
+The \fIflags\fR field can contain an OR of the following masks:
+.sp
+\fITRANS_ALIAS\fR: indicates that this record is providing an alias,
+and should not be used to create a listner.
+.sp
+\fITRANS_LOCAL\fR: indicates that this is a LOCALCONN transport.
+
+.H 2 "XtransConnInfo"
+.P
+Each connection will have an opaque \fIXtransConnInfo\fR transport connection
+object allocated for it. This record contains information specific to the
+connection. The record is defined
+as:
+.DS
+.nf
+typedef struct _XtransConnInfo *XtransConnInfo;
+
+struct _XtransConnInfo {
+ struct _Xtransport *transptr;
+ char *priv;
+ int flags;
+ int fd;
+ int family;
+ char *addr;
+ int addrlen;
+ char *peeraddr;
+ int peeraddrlen;
+};
+.fi
+.DE
+.H 1 "Exposed Transport Independent API"
+.P
+This API is included in each library and server that uses it. The API
+may be used by the library, but it is not added to the public API for that
+library. This interface is simply an implementation
+facilitator. This API contains a low level set of core primitives, and a few
+utility functions that are built on top of the primitives. The utility
+functions exist to provide a more familiar interface that can be used to
+port existing code.
+.P
+A macro is defined in Xtrans.h for TRANS(func) that creates a unique function
+name depending on where the code is compiled. For example, when built for Xlib,
+TRANS(OpenCOTSClient) becomes _X11TransOpenCOTSClient.
+.P
+All failures are considered fatal, and the connection should be closed and
+re-established if desired. In most cases, however, the value of errno will
+be available for debugging purposes.
+.H 2 "Core Interface API"
+.BL
+.LI
+XtransConnInfo
+TRANS(OpenCOTSClient)(char *address)
+.P
+This function creates a Connection-Oriented Transport that is suitable for
+use by a client.
+The parameter \fIaddress\fR contains the full address of the
+server to which this endpoint will be connected.
+This functions returns an opaque transport connection object on success,
+or NULL on failure.
+.LI
+XtransConnInfo
+TRANS(OpenCOTSServer)(char *address)
+.P
+This function creates a Connection-Oriented Transport that is suitable for
+use by a server.
+The parameter \fIaddress\fR contains the full address to which this
+server will be bound.
+This functions returns an opaque transport connection object on success,
+or NULL on failure.
+.LI
+XtransConnInfo
+TRANS(OpenCLTSClient)(char *address)
+.P
+This function creates a Connection-Less Transport that is suitable for
+use by a client.
+The parameter \fIaddress\fR contains the full address of the
+server to which this endpoint will be connected.
+This functions returns an opaque transport connection object on success,
+or NULL on failure.
+.LI
+XtransConnInfo
+TRANS(OpenCLTSServer)(char *address)
+.P
+This function creates a Connection-Less Transport that is suitable for
+use by a server.
+The parameter \fIaddress\fR contains the full address to which this
+server will be bound.
+This functions returns an opaque transport connection object on success,
+or NULL on failure.
+.LI
+int TRANS(SetOption)(XtransConnInfo connection, int option, int arg)
+.P
+This function sets transport options, similar to the way setsockopt() and
+ioctl() work.
+The parameter \fIconnection\fR is an endpoint that was obtained from
+_XTransOpen*() functions.
+The parameter \fIoption\fR contains the option that will be set. The actual
+values for \fIoption\fR are defined in a later section.
+The parameter \fIarg\fR can be used to pass in an additional value that may
+be required by some options.
+This function return 0 on success and -1 on failure.
+.P
+Note: Based on current usage, the complimentary function TRANS(GetOption)()
+is not necessary.
+.LI
+int TRANS(CreateListener)(XtransConnInfo connection, char *port)
+.P
+This function sets up the server endpoint for listening.
+The parameter \fIconnection\fR is an endpoint that was obtained from
+TRANS(OpenCOTSServer)() or TRANS(OpenCLTSServer)().
+The parameter \fIport\fR specifies the port to which this endpoint
+should be bound for listening.
+If \fIport\fR is NULL, then the transport may attempt to allocate any
+available TSAP for this connection. If the transport cannot support this,
+then this function will return a failure.
+This function return 0 on success and -1 on failure.
+.LI
+int TRANS(ResetListener)(XtransConnInfo connection)
+.P
+When a server is restarted, certain listen ports may need to be reset.
+For example, unix domain needs to check that the file used for communication
+has not been deleted. If it has, it must be recreated.
+The parameter \fIconnection\fR is an opened and bound endpoint that was
+obtained from TRANS(OpenCOTSServer)() and passed to TRANS(CreateListener)().
+This function will return one of the following values: TRANS_RESET_NOOP,
+TRANS_RESET_NEW_FD, or TRANS_RESET_FAILURE.
+.LI
+XtransConnInfo
+TRANS(Accept)(XtransConnInfo connection)
+.P
+Once a connection indication is received, this function can be called to
+accept the connection.
+The parameter \fIconnection\fR is an opened and bound endpoint that was
+obtained from TRANS(OpenCOTSServer)() and passed to TRANS(CreateListener)().
+This function will return a new opaque transport connection object upon
+success, NULL otherwise.
+.LI
+int TRANS(Connect)(XtransConnInfo connection, char *address)
+.P
+This function creates a connection to a server.
+The parameter \fIconnection\fR is an endpoint that was obtained from
+TRANS(OpenCOTSClient)().
+The parameters \fIaddress\fR specify the TSAP to which this
+endpoint should connect. If the protocol is included in the address, it will
+be ignored.
+This function return 0 on success and -1 on failure.
+.LI
+int TRANS(BytesReadable)(XtransConnInfo connection, BytesReadable_t *pend);
+.P
+This function provides the same functionality as the BytesReadable macro.
+.LI
+int TRANS(Read)(XtransConnInfo connection, char *buf, int size)
+.P
+This function will return the number of bytes requested on a COTS connection,
+and will return the minimum of the number bytes requested or the size of
+the incoming packet on a CLTS connection.
+.LI
+int TRANS(Write)(XtransConnInfo connection, char *buf, int size)
+.P
+This function will write the requested number of bytes on a COTS connection, and
+will send a packet of the requested size on a CLTS connection.
+.LI
+int TRANS(Readv)(XtransConnInfo connection, struct iovec *buf, int size)
+.P
+Similar to TRANS(Read)().
+.LI
+int TRANS(Writev)(XtransConnInfo connection, struct iovec *buf, int size)
+.P
+Similar to TRANS(Write)().
+.LI
+int TRANS(Disconnect)(XtransConnInfo connection)
+.P
+This function is used when an orderly disconnect is desired. This function
+breaks the connection on the transport. It is similar to the
+socket function shutdown().
+.LI
+int TRANS(Close)(XtransConnInfo connection)
+.P
+This function closes the transport, unbinds it, and frees all resources that
+was associated with the transport. If a TRANS(Disconnect) call was not made
+on the connection, a disorderly disconnect may occur.
+.LI
+int TRANS(IsLocal)(XtransConnInfo connection)
+.P
+Returns TRUE if it is a local transport.
+.LI
+int TRANS(GetMyAddr)(XtransConnInfo connection,
+.br
+ int *familyp, int *addrlenp, Xtransaddr **addrp)
+.P
+This function is similar to getsockname(). This function will allocate space
+for the address, so it must be freed by the caller. Not all transports will
+have a valid address until a connection is established. This function should
+not be used until the connection is established with Connect() or Accept().
+.LI
+int TRANS(GetPeerAddr)(XtransConnInfo connection,
+.br
+ int *familyp, int *addrlenp, Xtransaddr **addrp)
+.P
+This function is similar to getpeername(). This function will allocate space
+for the address, so it must be freed by the caller. Not all transports will
+have a valid address until a connection is established. This function should
+not be used until the connection is established with Connect() or Accept().
+.LI
+int TRANS(GetConnectionNumber)(XtransConnInfo connection)
+.P
+Returns the file descriptor associated with this transport.
+.LI
+int TRANS(MakeAllCOTSServerListeners)(
+.br
+ char *port, int *partial_ret, int *count_ret, XtransConnInfo **connections_ret)
+.P
+This function should be used by most servers. It will try to establish a COTS
+server endpoint for each transport listed in the transport table.
+\fIpartial_ret\fR will be set to True if only a partial network could be
+created. \fIcount_ret\fR is the number of transports returns, and
+\fIconnections_ret\fR is the list of transports.
+.LI
+int TRANS(MakeAllCLTSServerListeners)(
+.br
+ char *port, int *partial_ret, int *count_ret, XtransConnInfo **connections_ret)
+.P
+This function should be used by most servers. It will try to establish a CLTS
+server endpoint for each transport listed in the transport table.
+\fIpartial_ret\fR will be set to True if only a partial network could be
+created. \fIcount_ret\fR is the number of transports returns, and
+\fIconnections_ret\fR is the list of transports.
+.LE
+.H 2 "Utility API"
+.P
+This section describes a few useful functions that have been implemented on top
+of the Core Interface API. These functions are being provided as a convenience.
+.BL
+.LI
+int TRANS(ConvertAddress)(int *familyp, int *addrlenp, Xtransaddr *addrp)
+.P
+This function converts a sockaddr based address to an
+X authorization based address (ie AF_INET, AF_UNIX to the
+X protocol definition (ie FamilyInternet, FamilyLocal)).
+
+.LE
+.H 1 "Transport Option Definition"
+.P
+The following options are defined for the TRANS(SetOption)() function. If an
+OS or transport does not support any of these options, then it will silently
+ignore the option.
+.BL
+.LI
+TRANS_NONBLOCKING
+.P
+This option controls the blocking mode of the connection. If the argument
+is set to 1, then the connection will be set to blocking. If the argument
+is set to 0, then the connection will be set to non-blocking.
+.LI
+TRANS_CLOSEONEXEC
+.P
+This option determines what will happen to the connection when an exec
+is encountered. If the argument is set to 1, then the connection will be
+closed when an exec occurs. If the argument is set to 0, then the connection
+will not be closed when an exec occurs.
+.LE
+.H 1 "Hidden Transport Dependent API"
+.P
+The hidden transport dependent functions are placed in the Xtransport record.
+These function are similar to the Exposed Transport Independent API, but some
+of the parameters and return values are slightly different.
+Stuff like the #ifdef SUNSYSV should be handled inside these functions.
+.BL
+.LI
+XtransConnInfo *OpenCOTSClient (
+.br
+ struct _Xtransport *thistrans, char *protocol, char *host, char *port)
+.P
+This function creates a Connection-Oriented Transport. The parameter
+\fIthistrans\fR points to an Xtransport entry in the transport table. The
+parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings
+containing the corresponding parts of the address that was passed into
+TRANS(OpenCOTSClient)().
+.P
+This function must allocate and initialize the contents of the XtransConnInfo
+structure that is returned by this function. This function will open the
+transport, and bind it into the transport namespace if applicable. The
+local address portion of the XtransConnInfo structure will also be filled
+in by this function.
+.LI
+XtransConnInfo *OpenCOTSServer (
+.br
+ struct _Xtransport *thistrans, char *protocol, char *host, char *port)
+.P
+This function creates a Connection-Oriented Transport. The parameter
+\fIthistrans\fR points to an Xtransport entry in the transport table. The
+parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings
+containing the corresponding parts of the address that was passed into
+TRANS(OpenCOTSClient)().
+.P
+This function must allocate and initialize the contents of the XtransConnInfo
+structure that is returned by this function. This function will open the
+transport.
+.LI
+XtransConnInfo *OpenCLTSClient (
+.br
+ struct _Xtransport *thistrans, char *protocol, char *host, char *port)
+.P
+This function creates a Connection-Less Transport. The parameter
+\fIthistrans\fR points to an Xtransport entry in the transport table. The
+parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings
+containing the corresponding parts of the address that was passed into
+TRANS(OpenCOTSClient)().
+.P
+This function must allocate and initialize the contents of the XtransConnInfo
+structure that is returned by this function. This function will open the
+transport, and bind it into the transport namespace if applicable. The
+local address portion of the XtransConnInfo structure will also be filled
+in by this function.
+.LI
+XtransConnInfo *OpenCLTSServer (
+.br
+ struct _Xtransport *thistrans, char *protocol, char *host, char *port)
+.P
+This function creates a Connection-Less Transport. The parameter
+\fIthistrans\fR points to an Xtransport entry in the transport table. The
+parameters \fIprotocol\fR, \fIhost\fR, and \fIport\fR point to strings
+containing the corresponding parts of the address that was passed into
+TRANS(OpenCOTSClient)().
+.P
+This function must allocate and initialize the contents of the XtransConnInfo
+structure that is returned by this function. This function will open the
+transport.
+.LI
+int SetOption (struct _Xtransport *thistrans, int option, int arg)
+.P
+This function provides a transport dependent way of implementing the options
+defined by the X Transport Interface. In the current prototype, this function
+is not being used, because all of the option defined so far, are transport
+independent. This function will have to be used if a radically different
+transport type is added, or a transport dependent option is defined.
+.LI
+int CreateListener (struct _Xtransport *thistrans, char *port )
+.P
+This function takes a transport endpoint opened for a server, and sets it
+up to listen for incoming connection requests. The parameter \fIport\fR
+should contain the port portion of the address that was passed to the Open
+function.
+.P
+This function will bind the transport into the transport name space if
+applicable, and fill in the local address portion of the XtransConnInfo
+structure. The transport endpoint will then be set to listen for
+incoming connection requests.
+.LI
+int ResetListener (struct _Xtransport *thistrans)
+.P
+This function resets the transport for listening.
+.LI
+XtransConnInfo Accept(struct _Xtransport *thistrans)
+.P
+This function creates a new transport endpoint as a result of an incoming
+connection request. The parameter \fIthistrans\fR is the endpoint that was opened
+for listening by the server. The new endpoint is opened and bound into the
+transport's namespace. A XtransConnInfo structure describing the new endpoint
+is returned from this function
+.LI
+int Connect(struct _Xtransport *thistrans, char *host, char *port )
+.P
+This function establishes a connection to a server. The parameters \fIhost\fR
+and \fIport\fR describe the server to which the connection should be
+established. The connection will be established so that Read() and Write()
+call can be made.
+.LI
+int BytesReadable(struct _Xtransport *thistrans, BytesReadable_t *pend )
+.P
+This function replaces the BytesReadable() macro. This allows each transport
+to have it's own mechanism for determining how much data is ready to be read.
+.LI
+int Read(struct _Xtransport *thistrans, char *buf, int size )
+.P
+This function reads \fIsize\fR bytes into \fIbuf\fR from the connection.
+.LI
+int Write(struct _Xtransport *thistrans, char *buf, int size )
+.P
+This function writes \fIsize\fR bytes from \fIbuf\fR to the connection.
+.LI
+int Readv(struct _Xtransport *thistrans, struct iovec *buf, int size )
+.P
+This function performs a readv() on the connection.
+.LI
+int Writev(struct _Xtransport *thistrans, struct iovec *buf, int size )
+.P
+This function performs a writev() on the connection.
+.LI
+int Disconnect(struct _Xtransport *thistrans)
+.P
+This function initiates an orderly shutdown of a connection. If a transport
+does not distinguish between orderly and disorderly disconnects, then a
+call to this function will have no affect.
+.LI
+int Close(struct _Xtransport *thistrans)
+.P
+This function will break the connection, and close the endpoint.
+.LE
+.H 1 "Configuration"
+.P
+The implementation of each transport can be platform specific. It is expected
+that existing connection types such as TCPCONN, UNIXCONN, LOCALCONN and
+STREAMSCONN will be replaced with flags for each possible transport type.
+.P
+Below are the flags that can be set in \fIConnectionFlags\fR in the vendor.cf
+or site.def config files.
+.TS
+center;
+l l .
+TCPCONN Enables the INET Domain Socket based transport
+UNIXCONN Enables the UNIX Domain Sokcet based transport
+STREAMSCONN Enables the TLI based transports
+LOCALCONN Enables the SYSV Local connection transports
+DNETCONN Enables the DECnet transports
+.TE
+.H 1 "Transport Specific Definitions"
+.TS
+center box;
+lb | cb sb sb
+lb | cb | cb | cb
+lb | cb | cb | cb
+l | l | l | l.
+Protocol Address Component
+ _ _ _
+Family protocol host port
+=
+Internet T{
+inet
+.br
+tcp
+.br
+udp
+T} name of an internet addressable host T{
+string containing the name of a service or a valid port number.
+.br
+Example: "xserver0", "7100"
+T}
+_
+DECnet decnet name of a DECnet addressable host T{
+string containing the complete name of the object.
+.br
+Example: "X$X0"
+T}
+_
+NETware ipx name of a NETware addressable host T{
+Not sure of the specifics yet.
+T}
+_
+OSI osi name of an OSI addressable host T{
+Not sure of the specifics yet.
+T}
+_
+Local T{
+local
+.br
+pts
+.br
+named
+.br
+sco
+.br
+isc
+T} (ignored) T{
+String containing the port name, ie "xserver0", "fontserver0".
+T}
+.TE
+.H 1 "Implementation Notes"
+.P
+This section refers to the prototype implementation that is being developed
+concurrently with this document. This prototype has been able to flush out
+many details and problems as the specification was being developed.
+.P
+All of the source code for this interface is located in xc/lib/xtrans.
+.P
+All functions names in the source are of the format TRANS(func)(). The TRANS()
+macro is defined as
+.DS
+.sp
+#if (__STDC__ && !defined(UNIXCPP)) || defined(ANSICPP)
+#define TRANS(func) _PROTOCOLTrans##func
+#else
+#define TRANS(func) _PROTOCOLTrans/**/func
+#endif
+.sp
+.DE
+PROTOCOL will be uniquely defined in each directory where this code
+is compiled. PROTOCOL will be defined to be the name of the protocol that is
+implemented by the library or server, such as X11, FS, and ICE.
+.P
+All libraries and servers that use the X Transport Interface should have a new
+file called transport.c. This file will include the transports based
+on the configuration flags \fIConnectionFlags\fR. Below is an example
+transport.c.
+.DS
+.nf
+#include "Xtransint.h"
+
+#ifdef DNETCONN
+#include "Xtransdnet.c"
+#endif
+#ifdef LOCALCONN
+#include "Xtranslocal.c"
+#endif
+#ifdef TCPCONN
+#include "Xtranssock.c"
+#endif
+#ifdef STREAMSCONN
+#include "Xtranstli.c"
+#endif
+#include "Xtrans.c"
+#include "Xtransutil.c"
+.fi
+.DE
+.P
+The source files for this interface are listed below.
+.DS
+.TS
+center;
+l l.
+Xtrans.h T{
+Function prototypes and defines for
+the Transport Independent API.
+T}
+Xtransint.h T{
+Used by the interface implementation only.
+Contains the internal data structures.
+T}
+Xtranssock.c T{
+Socket implementation of the Transport Dependent API.
+T}
+Xtranstli.c T{
+TLI implementation of the Transport Dependent API.
+T}
+Xtransdnet.c T{
+DECnet implementation of the Transport Dependent API.
+T}
+Xtranslocal.c T{
+Implementation of the Transport Dependent API for
+SYSV Local connections.
+T}
+Xtrans.c T{
+Exposed Transport Independent API Functions.
+T}
+Xtransutil.c T{
+Collection of Utility functions that use the
+X Transport Interface.
+T}
+.TE
+.DE
+.P
+The file \fIXtransint.h\fR contains much of the transport related code that
+previously in Xlibint.h and Xlibnet.h. This will make the definitions
+available for all transport users. This should also obsolete the equivilent
+code in other libraries.
diff --git a/util/block.awk b/util/block.awk
new file mode 100644
index 0000000..0dd75f3
--- /dev/null
+++ b/util/block.awk
@@ -0,0 +1,22 @@
+BEGIN {
+ firstchar = "@";
+ a["a"] = "A"; a["b"] = "B"; a["c"] = "C";
+ a["d"] = "D"; a["e"] = "E"; a["f"] = "F";
+ a["g"] = "G"; a["h"] = "H"; a["i"] = "I";
+ a["j"] = "J"; a["k"] = "K"; a["l"] = "L";
+ a["m"] = "M"; a["n"] = "N"; a["o"] = "O";
+ a["p"] = "P"; a["q"] = "Q"; a["r"] = "R";
+ a["s"] = "S"; a["t"] = "T"; a["u"] = "U";
+ a["v"] = "V"; a["w"] = "W"; a["x"] = "X";
+ a["y"] = "Y"; a["z"] = "Z";
+}
+
+{
+ c = substr($2,2,1);
+ if (c >= "a" && c <= "z")
+ c = a[c];
+ if (c != firstchar)
+ printf(".LB %s\n", c);
+ firstchar = c;
+ print;
+}
diff --git a/util/fixindex.awk b/util/fixindex.awk
new file mode 100644
index 0000000..e8849f3
--- /dev/null
+++ b/util/fixindex.awk
@@ -0,0 +1,73 @@
+BEGIN {
+ FS = ":";
+ BD = "\\s+1\\fB";
+ ED = "\\fP\\s-1";
+}
+
+NR == 1 {
+ if ($3 != "")
+ printf(".Ib \"%s\"\n", $2);
+ major = $2;
+ minor = $3;
+ if ($4 == "@DEF@") {
+ pagelist = BD $1 ED;
+ }
+ else {
+ pagelist = $1;
+ }
+ pageno = $1;
+ oldpageno = $1;
+ oldpagelist = "";
+}
+
+NR != 1 {
+ if ($2 == major && $3 == minor) # neither has changed
+ {
+ if ($1 != pageno) { # new page number, append
+ oldpageno = $1;
+ oldpagelist = pagelist;
+ if ($4 == "@DEF@") {
+ pagelist = pagelist ", " BD $1 ED;
+ }
+ else {
+ pagelist = pagelist ", " $1;
+ }
+ }
+ else { # old page, but check for def
+ if ($4 == "@DEF@") {
+ if (pageno == oldpageno) {
+ if (oldpagelist != "")
+ oldpagelist = oldpagelist ", "
+ }
+ pagelist = oldpagelist BD $1 ED;
+ }
+ }
+ }
+ else # one has changed
+ {
+ if (minor != "") # dump full record
+ printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
+ else
+ printf(".I> \"%s\" \"%s\"\n", major, pagelist);
+ if ($4 == "@DEF@") { # restart pagelist
+ pagelist = BD $1 ED;
+ }
+ else {
+ pagelist = $1;
+ }
+ oldpagelist = "";
+ oldpageno = $1;
+ if ($2 != major && $3 != "") # major has changed, minor not null
+ printf(".Ib \"%s\"\n", $2);
+ }
+ major = $2;
+ minor = $3;
+ pageno = $1;
+}
+
+END {
+ if (minor != "") # dump full record
+ printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
+ else
+ printf(".I> \"%s\" \"%s\"\n", major, pagelist);
+}
diff --git a/util/indexmacros.t b/util/indexmacros.t
new file mode 100644
index 0000000..4660f18
--- /dev/null
+++ b/util/indexmacros.t
@@ -0,0 +1,42 @@
+. \" Macros for the index
+.de Ib \" blank major entry
+.br
+.ne 2v
+\\$1:
+..
+.de I> \" major entry
+.br
+\\$1, \\$2
+..
+.de I< \" minor entry
+.br
+ \\$2, \\$3
+..
+.de LB \" new letter starts here
+.di DT \" start diverted text
+.sp
+.sz +2
+.b
+\\$1
+.r
+.sz -2
+.sp
+.di \" end diverted text
+.ne \\n(dnu+1v \" get enough space for it
+.DT \" output it
+..
+.\" set up various parameters for the right evironment.
+.\" Your taste may be different.
+.ef ''\fB % \fP''
+.of ''\fB % \fP''
+.++ A
+.po 1.0i \" physical offset
+.ta 5iR \" right alignment tab
+.lp \" initialize -me
+.ce
+.sz 18
+Index
+.sp 1
+.sz 10
+.2c \" 2 column mode
+.sp 3
diff --git a/util/macros.t b/util/macros.t
new file mode 100644
index 0000000..cbc599b
--- /dev/null
+++ b/util/macros.t
@@ -0,0 +1,226 @@
+.\" $Xorg: macros.t,v 1.3 2000/08/17 19:42:51 cpqbld Exp $
+.\" macros.t -- macros for X Consortium documents
+.\" Revised and commented by smarks 93.12.20.
+.\"
+.\" global setup: set ragged right, assign string variables
+.\"
+.na
+.ie n \{\
+.ds Q \&"
+.ds U \&"
+.ds - \%--
+.\}
+.el \{\
+.ds Q `\h'-\w'\^'u'`
+.ds U '\h'-\w'\^'u''
+.ds - \(em
+.\}
+.\"
+.\" --- Ds --- displayed text (like .DS) with no keep
+.\" .Ds is obsolete. Change to something from this table:
+.\" for this use instead
+.\" .Ds .ID
+.\" .Ds n .LD (where "n" is a number)
+.\" (Numbers don't work in these macros, so ".Ds 5"
+.\" comes out the same as ".Ds 0".)
+.\"
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.if \\n(VS>=40 .vs \\n(VSu
+.if \\n(VS<=39 .vs \\n(VSp
+..
+.de D
+.ID \\$1
+..
+.de 0D
+.LD
+..
+.\" backward compatibility for the Xt spec
+.de 5D
+.LD
+..
+.\"
+.\" --- De --- obsolete: use .DE instead
+.\"
+.de De
+.DE
+..
+.\"
+.\" --- FD ---
+.\"
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.\"
+.\" --- FN ---
+.\"
+.de FN
+.fi
+.KE
+.LP
+..
+.\"
+.\" --- IN --- send an index entry to the stderr
+.\"
+.de IN
+.tm \\n%:\\$1:\\$2:\\$3
+..
+.\"
+.\" --- C{ ---
+.\"
+.de C{
+.KS
+.nf
+.D
+.\"
+.\" choose appropriate monospace font
+.\" the imagen conditional, 480,
+.\" may be changed to L if LB is too
+.\" heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.\"
+.\" --- C} ---
+.\"
+.de C}
+.DE
+.R
+..
+.\"
+.\" --- Pn --- like PN, but use $2; $1 and $3 abut
+.\"
+.de Pn
+.IN \\$2
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.\"
+.\" --- PN --- put $1 in boldface and add index entry; $2 abuts
+.\"
+.de PN
+.IN \\$1
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.\"
+.\" --- hI --- add index entry for $1 as header file
+.\"
+.de hI
+.IN <\\$1>
+.IN Files <\\$1>
+.IN Headers <\\$1>
+..
+.\"
+.\" --- hN --- put $1 in boldface as header and add index entry; $2 abuts
+.\"
+.de hN
+.hI \\$1
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.\"
+.\" --- NT ---
+.\"
+.de NT
+.br
+.ne 7
+.ds NO Note
+.if \\n(.$ .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.\" .QS/.QE macros don't exist in older versions of -ms
+.ie \\n(GS .QS
+.el \{\
+. in +5n
+. ll -5n
+.\}
+.R
+..
+.\"
+.\" --- NE --- Note End (doug kraft 3/85)
+.\"
+.de NE
+.ce 0
+.ie \\n(GS .QE
+.el \{\
+. in -5n
+. ll +5n
+.\}
+.ie n .sp
+.el .sp 10p
+..
+.\"
+.\" --- nH --- numbered header (like NH) but with automatic TOC entry
+.\" usage: .nH level "section title, preferable in quotes"
+.\"
+.de nH
+.NH \\$1
+\\$2
+.XS
+\\*(SN \\$2
+.XE
+..
+.\"
+.\" --- sM --- put start-marker in margin
+.\"
+.de sM
+.KS
+.sp 1
+\\h'-0.5i'\\L'-1v'\\v'1p'\\l'1v'\\v'1v-1p'
+.sp -1
+..
+.\"
+.\" --- eM --- put end-marker in margin
+.\"
+.de eM
+.sp -1
+\\h'-0.5i'\\L'-1v'\\v'1v+1p'\\l'1v'\\v'-1p'
+.sp 1
+.KE
+..
+.\"
+.\" --- YZ --- finish up; $1 is the starting page number of the TOC
+.\"
+.de YZ
+. \" Force there to be an even number of pages, so the table of
+. \" contents doesn't end up on the back of the last page in
+. \" the case of duplex printing.
+.if o .bp
+. \" Emit a .pn directive with one plus the last page number.
+ \" This will be the number of the first page of the index.
+.nr YZ \\n%+1
+.tm .pn \\n(YZ
+. \" Issue the table of contents, setting roman numerals,
+. \" and redefining the footer to use them.
+.bp \\$1
+.af PN i
+.EF ''\\\\\\\\n(PN''
+.OF ''\\\\\\\\n(PN''
+. \" Why all the backslashes? This string is evaluated
+. \" three times: 1) during the definition of this macro,
+. \" 2) when the .EF and .OF macros are expanded, and 3)
+. \" when the bottom-of-page trap is invoked. Thus,
+. \" eight backslashes are reduced to one in the final output.
+.PX
+..